Re: 段落中の虫食い部分の枠線(解決)

名前: Nobi
日時: 2010-05-25 14:43:19
IPアドレス: 114.48.57.*

>>53425 いつもこのQ&Aからは様々なアイデアをいただき本当にありがたく思っています。 以前の「段落中の虫食い部分の枠線」というトピックに関連してですが, lineno パッケージ使用時に,虫食い部分が開始される行と同一行に \linelabel があると,それまでの行の幅を取得する処理に失敗するようです。 \linelabel を振る際の命令にある, \def\@LN@postlabel#1{\g@addto@macro\@LN@labellist{#1\@lt}% \vadjust{\penalty-\@Mllbcodepen}} の中の \vadjust{\penalty-\@Mllbcodepen} の部分に原因があるようで,このせいで \lastbox の内容が変わってしまうようです。 \vadjust{\penalty-\@Mllbcodepen} をいろいろいじったりしてみたのですが,うまく調整できません。 \linelabel を振りつつ,その行の幅を取得するというのは難しいでしょうか。 何かアイデアをお持ちの方がいらっしゃいましたらご教示いただけると幸いです。 以下サンプルソース \documentclass{jarticle} \usepackage{calc,lineno} \newdimen\PreSize \makeatletter %%% 次の \MakeLineNo に対する変更は, %%% Package: lineno 2005/11/02 line numbers on paragraphs v4.41 %%% に基づく. \def\MakeLineNo{% \@LN@maybe@normalLineNumber \boxmaxdepth\maxdimen\setbox\z@\vbox{\unvbox\@cclv}% %%% added part \setbox\tw@\vbox{\unvcopy\z@ \setbox\tw@\lastbox \ifhbox\tw@ \setbox\tw@\hbox{\unhbox\tw@\unskip\unskip}% \fi \global\PreSize\wd\tw@}% %%% end of added part \@tempdima\dp\z@ \unvbox\z@ \sbox\@tempboxa{\hb@xt@\z@{\makeLineNumber}}% \stepLineNumber \ht\@tempboxa\z@ \@LN@depthbox \@LN@do@vadjusts \count@\lastpenalty \ifnum\outputpenalty=-\linenopenaltypar \ifnum\count@=\z@ \else \xdef\@LN@parpgbrk{% \penalty\the\count@ \global\let\noexpand\@LN@parpgbrk \noexpand\@LN@screenoff@pen}% \fi \else \@tempcnta\outputpenalty \advance\@tempcnta -\linenopenalty \penalty \ifnum\count@<\@tempcnta \@tempcnta \else \count@ \fi \fi} \makeatother \newcommand{\穴開始}{% \par \nobreak \vskip-\baselineskip \vskip-\parskip \addtocounter{linenumber}{-1}% \noindent \advance\PreSize by 1zw \smash{\rule[-4pt]{\PreSize}{.6pt}}\kern-.6pt \rule[-4pt]{.6pt}{14pt}% \leaders \hrule height 10pt depth-9.4pt\hfill \rule[-4pt]{.6pt}{14pt}\par} \newcommand{\穴途中行}[1][]{\noindent\smash{\rule[-4pt]{.6pt}{\baselineskip}}\hfill#1\hfill\smash{\rule[-4pt]{.6pt}{\baselineskip}}\par} \newcommand{\穴終了}[1]{\noindent\smash{\rule[-4pt]{.6pt}{\baselineskip}}\kern-.6pt\smash{\rule[-4pt]{#1}{.6pt}}\smash{\rule[-4pt]{.6pt}{\baselineskip}}% \smash{\kern-.6pt\rlap{\rule[\baselineskip-4pt]{\linewidth - #1}{.6pt}}}\hspace{1zw}} \begin{document} \linenumbers 正しく穴が開く あいうえおかきくけこあいうえおかきくけこ あいうえおかきくけこあいうえおかきくけこ あいうえおかきくけこあいうえおかきくけこ\穴開始 \穴途中行 \穴途中行[ここを埋めましょう] \穴途中行 \穴終了{20zw}あいうえおかきくけこあいうえおかきくけこ あいうえおかきくけこあいうえおかきくけこ あいうえおかきくけこあいうえおかきくけこ 穴開始と同一行に linelabel があると穴がずれる あいうえおかきくけこあいうえおかきくけこ あいうえおかきくけこあいうえおかきくけこ あいうえおかきくけこあいうえお\linelabel{ほげ}かきくけこ\穴開始 \穴途中行 \穴途中行[ここを埋めましょう] \穴途中行 \穴終了{20zw}あいうえおかきくけこあいうえおかきくけこ あいうえおかきくけこあいうえおかきくけこ あいうえおかきくけこあいうえおかきくけこ \end{document}

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます。適宜改行を入れてください)