横で組まれた \strutbix の \ht などが変になる
横と縦ではベースラインからどれだけ文字が行送り方向に飛び出すか,が変わります. むしろそちらがメインの理由なのでは,と個人的には思っています.
a5825c7 で \strutbox パッチを入れてみたつもりです. platex のテストケース 6 点も処理してみたのですが, strutbox_05empheq.tex はそもそも LuaTeX-ja ではタイプセットできていないです.
strutbox_05empheq.tex はそもそも LuaTeX-ja ではタイプセットできていないです.
縦組でも lltjext を読ませないようにするとエラーなく通り、横組でも lltjext を読ませると ! Missing \endgroup inserted. エラーになります。どうやら lltjext が \parbox を拡張していることと empheq が衝突していそうですが、それ以上はまだわかっていません。
lltjext と plext の違いを調べたところ \fork@parbox@option に問題があることに気づきました。
という定義がなされますが、もともと数式モード内にいる状態で \parbox が呼ばれる empheq の場合に問題が起きている、ということのようです。plext のほうは条件分岐が入っていて
のようになっていますから、これはエラーが出ないようです。
\fork@parbox@option
ようやくそれに気づいたので,737cd15 で入れました.
数式モード時の \@end@parbox
元々数式モード内にいる状態なのですから,\def\@end@parbox{\m@th} は不要 (\relax を let するだけで良い)のではないでしょうか?
\relax を let するだけで良い
確かにそうですね。 737cd15 で ok になりました。
オフトピですが ltjsclasses の「reportとbookクラスの場合に|\cleardoublepage|を再定義します」の docstrip が <!article> ですが,ここは <book|report> じゃないかと思います.ltjskiyou と ltjspf には open… はないのでエラーになると思います.
あと 2 箇所ほど ????/??/?? が残っていますがこれは 2017/02/24 ですね.
|\cleardoublepage|を再定義
4819e9f で修正しました.
現状の lltjext では、周囲が縦組で <y> オプションのときに、「\box@dir を適用する前の時点」で \@tempcnta=\strutbox が実行されています。これは \strutbox パッチ適用下では \tstrutbox に展開されるため、正しくないようです。
簡単には 4 箇所登場する \@tempcnta=\strutbox を \@tempcnta=\ystrutbox に置き換えればよいと思います。
# これは私自身 pLaTeX 向けの \strutbox パッチを書きながら最も危惧した点でした。(しかも platexrelease で巻き戻した場合も考慮しないといけず、なおさらでした。)が、(1) 元々 plext.sty (platex) は大丈夫な実装になっていたこと、および (2) plextarray.sty (platex-tools) も両対応な実装にしたこと、さらに (3) その他の日本製パッケージで \strutbox を稼働するものが皆無だったこと …から、カーネルへの導入に踏み切ったという経緯があります。
# ちなみに stfloats.sty は「新しい LaTeX2e 2017-05-01」の ISO 書式日付に非対応でした。(内部の \if@before@latex@release あたり。)したがって、単に \documentclass{ltjsarticle} とするだけで Runaway argument? してしまいます。これは stfloats の Issue なのか、LaTeX2e のアグレッシブな変更がまずいのか…?
\@tempcnta=\strutbox を \@tempcnta=\ystrutbox に置き換えればよいと思います。
ありがとうございます.単純な考慮漏れでしたので,直しました.
stfloats.sty については,せっかく ltj-latex.sty 中で \RequirePackage{filehook} されているので,
上に書いてくださった処理を lltjp-stfloats.sty の中に(復帰処理付きで)仕込むという対処療法があるかと思います.
# まだ調べていません.
stfloats.sty は「新しい LaTeX2e 2017-05-01」の ISO 書式日付に非対応
やっぱり,lltjp-stfloats.sty の中に日本語対応以外のことを書くのは収集がつかなくなりそうな気がします. そのため,これについては上流で何とかしてもらうのが良いと思います.
やっぱり,lltjp-stfloats.sty の中に日本語対応以外のことを書くのは収集がつかなくなりそうな気がします.
私もそう思います。とりあえず sttools の開発者に(Cc: LaTeX team としつつ)お願いしてみます。
d9a08ce (use \zstrutbox in \utod mode) のコミットで \strut の定義にひとつ \fi が足りないみたいです。
ほんとだ,なおしました.
20170401.0 を出しました(\strutbox, \strut は \utod でも \tstrutbox を使うように戻しました). 何かあれば再オープンしてください.
pLaTeX 用に作成した \strutbox パッチ関連のテストケース 6 点を LuaTeX-ja でも試していたのですが、やはりうまくいっていないケースがあるようです(例えば align の数式番号とか array の arraystretch とか)。ただ、なぜうまくいっていないのかがよく理解できません。
pTeX の \wd や \ht などは「現在の組方向に対する寸法」を返す仕様なので、横で組まれた \strutbix の \ht などが変になる、というのが pLaTeX の \strutbox パッチを必要とする理由だと思っていました。LuaTeX-ja はこの仕様が異なるのですが、いくつかうまくいかない(それも全てではない)ので少し混乱しています。