Re: マクロでの行頭・行末判定方法

名前: ZR
日時: 2011-01-12 00:19:37
IPアドレス: 119.104.58.*

>>55546 >試しに、単純に \hbox{} で囲んでみたら、エラーは出なくなりましたが >どれも行中と判定される様です。 pTeX では和文文字の前後で改行可能で、この時の penalty は 0 です (この penalty の値は \pre/postbreakpenalty で設定可能)。 \discretionary を使って行分割すると \(ex)hyphenpenalty が課せられる ので、結局、\discretionary の直前に \nobreak を入れておかないと \discretionary での行分割が起こらない(必ず 3 番目の引数が 使われる)ことになります。 以下の例で、2 番目の段落では \discretionary での行分割が行われます。 %<sample.tex>----------- \documentclass[a4paper,10pt]{tarticle} \setlength{\textwidth}{10zw} \setlength{\parindent}{0pt} \begin{document} \def\putdisc{% \nobreak \discretionary{\hbox{前}}{\hbox{後}}{\hbox{私}}% } あああああああああ\putdisc は ああああああああああ\putdisc は あああああああああああ\putdisc は \end{document} %<EOF>--------------- 2 番目の段落では \putdisc の前の自然長が 10zw(= 行長)なので、 \discretionary を使って行分割するのが丁度いいことになりそうです。 しかし、それを行うと「\hbox{前}」が 1 行目に現れることになるので 結局 1 行目(の自然長)は 11zw になってしまいます。それでもこの 段落の場合は他にもっとよい選択肢がないので、オーバーフルの 警告つきでこの分割が行われるという結果になります。

この書き込みへの返事:

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