色々テスト中だとは思うのですが,2f800c3 では LuaLaTeX がうまく動かなくなっています.
\documentclass{ltjarticle} \begin{document} \end{document}で
... (/home/kmaeda/texmf/tex/luatex/luatexja/src/ltjsize10.clo3 tate nil 3 tate nil ) (/home/kmaeda/texmf/tex/luatex/luatexja/src/jfm-min.lua)error: ...e/kmaeda/texmf/tex/luatex/luatexja/src/ltj-direction.lua:495: attempt to index field '?' (a nil value) . <to be read again> \ltj@@reset@badness l.805 \onecolumn ?となります.一方
\documentclass{article} \usepackage{luatexja} \begin{document} \end{document}だと
... (/home/kmaeda/texmf/tex/luatex/luatexja/src/ltj-base.sty) ! Package luatexja Error: Use `\yoko' at top of list. See the luatexja package documentation for explanation. Type H <return> for immediate help. \yoko ....direction.set_list_direction(4, 'yoko')} l.544 \yoko ?と出ます.
kmaeda への返信
色々テスト中だとは思うのですが,2f800c3 では LuaLaTeX がうまく動かなくなっています. {{{ \documentclass{ltjarticle} \begin{document} \end{document} }}}
こっちは 69ea4d0 で直ったと思います.
一方 {{{ \documentclass{article} \usepackage{luatexja} \begin{document} \end{document} }}}
こっちはまだです.
kmaeda への返信
一方
\documentclass{article} \usepackage{luatexja} \begin{document} \end{document}だと... (/home/kmaeda/texmf/tex/luatex/luatexja/src/ltj-base.sty) ! Package luatexja Error: Use `\yoko' at top of list. See the luatexja package documentation for explanation. Type H <return> for immediate help. \yoko ....direction.set_list_direction(4, 'yoko')} l.544 \yoko ?と出ます.
article.cls の内部で実行される \clearpage の定義を見ると
\def\clearpage{% \ifvmode \ifnum \@dbltopnum =\m@ne \ifdim \pagetotal <\topskip \hbox{}% \fi \fi \fi \newpage \write\m@ne{}% \vbox{}% \penalty -\@Mi }となっています.\write があるおかげで article.cls 読み込み終了時の「ページの中身」tex.lists.page_head は空ではなく,それによって Use `\yoko' at top of list. というエラーが発生した,というわけです.
0557243 で直ったと思います.
ありがとうございます.今度は
\documentclass{article} \usepackage{luatexja} \begin{document} あ \end{document}で
... (I search kanjifont definition file) ABD: EverySelectfont initializing macroserror: ...e/kmaeda/texmf/tex/luatex/luatexja/src/ltj-direction.lua:590: attempt to perform arithmetic on a nil value . <to be read again> \ltj@@reset@badness l.5 \end{document} ?となります. また,
\documentclass{ltjarticle} \begin{document} あ \end{document}で
... [1{/usr/local/texlive/2014/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] ! Extra \fi. <output> ...w \if@fcolmade \fi {\@opcol \@startcolumn }\fi \ifnum \outputpenalty >-\@... l.4 \end{document} ?となって,
\documentclass{ltjtarticle} \begin{document} \end{document}で
... (I search kanjifont definition file) ABD: EverySelectfont initializing macros ! Package luatexja Error: Use `\tate' at top of list. See the luatexja package documentation for explanation. Type H <return> for immediate help. \tate ....direction.set_list_direction(3, 'tate')} l.2 \begin{document} ?となります.
こちらこそ,ありがとうございます.
kmaeda への返信
ありがとうございます.今度は
\documentclass{article} \usepackage{luatexja} \begin{document} あ \end{document}でattempt to perform arithmetic on a nil value
かわりに,次の ! Extra \fi が出ました.
また,
\documentclass{ltjarticle} \begin{document} あ \end{document}で! Extra \fi.
前から確認しています.\ifydir 等の定義が
\protected\def\ifydir{\directlua{luatexja.direction.dir_conditional(4)}} % この中で tex.sprint('\\iftrue') しているとなっていることによるものだと思います.TeX by Topic などを読んで調べてみます.
となって,
\documentclass{ltjtarticle} \begin{document} \end{document}で... (I search kanjifont definition file) ABD: EverySelectfont initializing macros ! Package luatexja Error: Use `\tate' at top of list. See the luatexja package documentation for explanation. Type H <return> for immediate help. \tate ....direction.set_list_direction(3, 'tate')} l.2 \begin{document} ?となります.
さっきコメントした \clearpage 関連によるもので, \AtBeginDocument で組方向を設定するのは遅すぎることによります.
どうも,pTeX では,トップレベルでの組方向切り替えについてバグがあるようです. 次のソースがエラーを出さずに通ってしまいます.
%#!platex \documentclass{jsarticle} \begin{document} あ \tate あいう \end{document}(後で TeX forum に投げてみます)
こういうことでしょうか.
\input luatexja.sty \iftrue\ifydir\fi\fi % OK \iffalse\ifydir\fi\fi % NG \bye\ifydir はエンドユーザも使いそうなものなので,ちょっとまずいですね. luatexja.direction.set_list_direction() の最後のあたりで \ifydir などに \iftrue や \iffalse を \let してしまうのがいいのかな.
kmaeda への返信
こういうことでしょうか. {{{ \input luatexja.sty \iftrue\ifydir\fi\fi % OK \iffalse\ifydir\fi\fi % NG \bye }}} \ifydir はエンドユーザも使いそうなものなので,ちょっとまずいですね. luatexja.direction.set_list_direction() の最後のあたりで \ifydir などに \iftrue や \iffalse を \let してしまうのがいいのかな.
例えば
\hbox{\tate % \hbox{\yoko {\dtou (A)} (B) } (C) }というコードにおいて,(A), (B) では \ifddir が真,(C) では \ifydir が真,となる必要があります. \yoko, \tate, \dtou で \ifydir 等に \let してしまうのはこの仕様を満たすためには無理か……と思っていましたが,
という案が浮かんだので,ちょっと確かめてみます.
なお,同様の困った状況は \ifybox<number> についても当てはまります.
#33986 のコメントに書きましたが,\ifydir, \iftdir, \ifddir を無理矢理実装するのは危なそうな気がするので, 今はやめておきます(完了にします).
「チケットの詳細」と同じ働きをするソースは次のようになります.
%#!luatex \input luatexja.sty \def\R{% \ifcase\ltjgetparameter{direction}\or D\or\or T\or Y\fi } \hbox{\tate{\dtou\R1}\R2}\end
少なくとも commit f97d8da において,
を実行すると,「D1T2」という出力が得られます. 本来は pTeX のように「D1D2」のようになるのが自然なはずです.「現在のリストの組方向」が count register で管理されているという 現在の実装が原因なのは明らかなので,別の方法をなにか考えてみます(再設計するかも).