名前: 北見 けん 日時: 2001-11-08 11:50:59 IPアドレス: 202.25.71.*
>>3474 > | ## 自主ゼミ参加者募集中(なんちて) >これに参加したいです.是非. 自主ゼミ発言元なので、出てきました。 難しそうだなぁと思ってあまり見ていなかったんですが、 呼び掛け人なので見直しました。(^^) これでどうですか。 せっかく作ったボックスを使いまわすといいみたいです。 野村さんのやりかたでは、行の長さを計るのに、 始めに \hbox に入れていますね(行分割がおこりません)。 で、その後に、実際に組版させている(行分割がおこり得ます)。 行分割のところでは、グルーが挿入されたり取り除かれたりするので、 行の長さを計ったりするときには、組版と同じ動作をさせる必要があります。 #ここまでやらなくても概ねうまくいきますが。 始めに \hbox に入れて長さを計るのはうまくいかない場合もあるかと思います。 #蛇足ですが、\hbox の中(限定水平モード=行分割されない水平モード) #では、\interlinepenalty の設定や \@@par は意味がありませんね。 以下、私の案です。 \begingroup #6{% \setbox\@tempboxa=\vbox{% \hskip #3\relax\@svsec \interlinepenalty \@M #8\@@par \setbox\@tempboxa=\lastbox% 最後の行を取り出す \setbox\@tempboxa=\hbox{\unhbox\@tempboxa\unskip}% % 行末を埋めるグルーを取り除く % 最後の行の行末には \parfillskip だけですよね?(不安) \@tempdima=\linewidth \advance\@tempdima by -\wd\@tempboxa % \@tempdima にグラデーションの長さを入れる \hbox{\box\@tempboxa\Gradation{\strip@pt\@tempdima}}% % 最後の行にグラデーションを付け足して戻す }% \unvbox\@tempboxa% 上の全てを出力 }% \endgroup
この書き込みへの返事: