-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
\prebreakpenalty の合算と JFM グルー,\lastpenalty #67
Comments
取り急ぎ,[疑問1] テストソースの jlreq の場合ですが,
となるので,
という現状の pTeX の仕様で説明はできます. |
すみません,[疑問1] の内容が不明瞭でした。少しわかりやすい表現に直します。 「\prebreakpenalty は,直前にペナルティがあれば合算されて一つのペナルティになる」はずなのに,jlreq.tfm だと \relax によって阻害されるのは何故だろうか という意図でした。 |
ptex-base.ch を読み直して,[疑問1] の理由までは判りました。 https://github.com/texjporg/tex-jp-build/blob/master/source/texk/web2c/ptexdir/ptex-base.ch#L6573
https://github.com/texjporg/tex-jp-build/blob/master/source/texk/web2c/ptexdir/ptex-base.ch#L6591
ただ,どうもしっくりこない挙動です。 |
あ,そもそもなぜ今回の [疑問1] [疑問2] が発生したかというと, texjporg/platex に置いてある tests/footnote.tex を jarticle → jlreq に変えると「\footnotetext が始め括弧類直後に置かれた場合への対策」が効かないことに気づいたからです。「JFM グルーが挟まると \lastpenalty がゼロになるし,\unpenalty もできない」という今の pTeX の挙動によって,この対策が効いていないことがわかると思います。 %\documentclass[twocolumn]{jarticle}
%\textwidth42zw
%\columnsep2zw
%\parindent0zw
\documentclass[twocolumn,line_length=20zw,column_gap=2zw]{jlreq}
\parindent0zw
\begin{document}
41あああああああああああああああああ(\footnotetext[1]{いいいいい}うううううううう\par
410ああああああああああああああああ(\relax\removejfmglue\footnotetext[1]{いいいいい}うううううううう\par
411あああああああああああああああああ(\footnotetext[1]{いいいいい}うううううううう\par
412あああああああああああああああ(\footnotetext[1]{いいいいい}うううううううう\par
\end{document} |
「\postbreakpenalty が設定されている文字(始め括弧類など)の後ろに JFM グルーの設定がある」という状況下(jlreq クラスの jlreq.tfm など)での禁則ペナルティの挙動についての疑問です。
(\postbreakpenalty + 後ろにグルー な文字)
→(\prebreakpenalty な文字)
の並びでは合算が起きる(☆)が,この間に\relax
などが挟まると合算されなくなる。(\postbreakpenalty + 後ろにグルー な文字)
の直後の \lastpenalty を取得してみると必ずゼロになる。これらの挙動が私には不自然に思えます。(この “状況” 自体がアスキー pTeX にとって想定外?)何か良い改善案はあるでしょうか?
[疑問1] については,下記のソースで再現します。
(
の後禁則 10000 と)
の前禁則 10000 が合算され,20000 のペナルティになる。これは間に\relax
が挟まっても変わらない。\relax
を挟んだ時だけ合算が起きなくなる。[疑問2] については,これに続けて下記のソースを付けると再現できます。
The text was updated successfully, but these errors were encountered: