インライン数式内の改行

インライン数式内の改行

- O. T. の投稿
返信数: 5
Windows10, TeXLive2020でlualatexで処理をしています。
jlreqドキュメントクラスを使い始めたのですが,インライン数式が改行されずに前後の行の文字間のスペースが広すぎる,ということがよく起こります。
インライン数式を沢山入れた文章を作り,ltjsarticleと比較してみると,かなり改行が抑制されているように見えますが,これを調整する手段がありましたら教えていただけないでしょうか。
\allowbreak を手で入れて,というのは行っていますが,頻繁に必要になるので他の手段が知りたいです。
よろしくお願いします。
O. T. への返信

Re: インライン数式内の改行

- 和田 勇 の投稿
細かなことまで把握できていないのですが、cls ファイルを見ながら検討してみました。

質問は「和字、単語などの空き」に関して、jlreq を ltjsarticle に近づける方法と想定してます。


kanjiskip xkaniskip を jlreq.cls と ltjsarticle.cls を検索・比較した限りデフォルトでは、確かに jlreq の方が広いのですが、jlreq.cls をみると、ほぼ同等にするオプションの様に思える narrow_kanjiskip がある様です。試したのですが、ちょっと長めの数式があると多少はずれはしますが、大抵の行は一致してました。

なお texdoc jlreq-ja でマニュアルを見ると 四ページ目に 「和文間の空白」の扱いとして \jlreqkanjiskip の再定義の例が載っていますので参考に試してください。

PS

当初、様々なケースで再現を試みたのですが、なかなか多めのグルーが自動挿入されるものができませんでした。

可能であれば、プリアンブルと空きすぎる例の本文があると検討しやすいのではと思ってます。
和田 勇 への返信

Re: インライン数式内の改行

- 本田 知亮 の投稿
jlreq.cls(helperも含む)で
penaltyを検索してみましたけど,
特に何もないと思います.

数式の分割は
\binoppenaltyと\relpenaltyが制御してるので,
\the\binoppenaltyと\the\relpenaltyで
値がどうなっているのかチェックするのはどうでしょう.

LaTeXでのデフォルトはそれぞれ700と500です.
こうでなかったら,どこかで変わってるのでしょう.

10000で分割禁止,-10000で分割なので,
適当に小さくしてみて
試すといいのかもしれません.
\binoppenalty=0\relax
\relpenalty=0\relax
とか

ただ行分割はある意味での「綱引き」の結果なので,
程度の差はあるでしょうが
妥協や手動は避けられないとは思います.

和田 勇 への返信

Re: インライン数式内の改行

- O. T. の投稿
narrow_kanjiskip のオプションで解決しました。ありがとうございました。

数式の改行の抑制ではなく,和文の空白の問題なんですね。
確かに \binoppenalty \relpenaltyともLaTeXのデフォルトのままでした。

マニュアルには,デフォルトでは1/4文字分まで許容,と書いてありましたが,
コンパクトなノートを書くために長い数式を詰め込んだせいか,
もっと広くなるケースがかなりありました。






O. T. への返信

Re: インライン数式内の改行

- 帯田 木偶太 の投稿
クラシックな TeX を念頭に置いてのことになりますが‥‥
※  つまり、XeTeX や LuaTeX では、以下の内容は全く的外れかも
    しれない、ということですが…

行分割は、グルーの伸縮具合、ペナルティ、その他の要素の総合的な
評価(これが要するに「綱引き」)によって判断されるので、
》 数式の改行の抑制ではなく,和文の空白の問題
というのは語弊があるかと思います。\binoppenalry や \relpenalty が
デフォルトのままでも、和字間グルーが伸びやすくなれば、数式中の
行分割は抑制傾向になると推察します。narrow_kanjiskip というのを
使わないままで、実際に \binoppenalty や \relpenalty に極端な
値を代入して様子を見てみるとどうでしょう?

また、グルーは、ほんの少しでも伸張度があるなら、状況的に必要な
ところでは、いくらでも(\maxdimen が限界かもしれません)伸びることが
あり得ます。本当に 1/4 文字分以上に伸びないグルーというのは、
自然な長さが 1/4 文字分で、伸張度が全くないグルーにせざるを得ない
はずです。

ところで、もとの質問にはログが掲げられていませんが、Underfull \hbox の
警告は出ていなかったのでしょうか。一見して伸びすぎと思えるほど
和字間が伸びているのに警告が出ていないのなら、\hbadness が(一般的な
文書作成に使うものとしては)大きすぎるのでしょう。
帯田 木偶太 への返信

Re: インライン数式内の改行

- O. T. の投稿
元々 jlreq と ltjsarticle の比較という話で,penalty はデフォルトのままでしたので,和文の空白の「違い」が大きいということになるでしょうか。
また,LuaLaTeXを使っていましたが,pLaTeXでも結果は変わりませんでした。
警告については,Underfull 等は出ていません。

\jlreqkanjiskip はデフォルトが
{0pt plus 0.25\jlreq@zw minus 0pt}
narrow_kanjiskip オプションだと,マニュアルの例
{0pt plus .1\zw minus .01\zw}
と同じになるのだと思いますが,
jsarticleに慣れているためかデフォルトだと伸びすぎなので,今のところ
{0pt plus 0.15\jlreq@zw minus 0pt}
くらいが良さそうです。