LuaTeX-ja での縦組み
こんにちは.いつもご苦労様です.
何も頭を使わずに LaTeX 対応のクラスファイルを試してみました (kmaeda_tarticle). 例のごとく,コメントアウトなどしただけです. ltjtarticle がとりあえず動いたのですが,ページ番号の位置がおかしかったり,色々問題ありそうです.
そのままだと twocolumn とかはだめみたい.
表組 (\halign, \valign) が動かなくなっています. \tbaselineshift に相当する部分もまだです.
commit a6c37db でなんとかしたつもりです.横組のみの文章でも,速度低下が著しい(以前の 2 倍程度の時間がかかる?)のは改善しないといけません.
何も頭を使わずに LaTeX 対応のクラスファイルを試してみました (kmaeda_tarticle). 例のごとく,コメントアウトなどしただけです. ltjtarticle がとりあえず動いたのですが,ページ番号の位置がおかしかったり,色々問題ありそうです.
テストありがとうございます.ページ番号の位置がおかしいのは,フッタを格納するボックスが 606 pt (=\textwidth) で作られているからのようです. 現状では,縦組ボックスの \wd は,呼び出された箇所が横組でも縦組でも「物理的な上下方向の高さ」を返すことが関係しているのでしょう.
どうでもいいですが,自己レスで,
コメントアウトなどしただけ
「コメントアウト外すなどしただけ」の間違いです.なんだかいつも用法を間違ってしまいます.
表組は,横組みの tabular 環境で落ちなくなったのを確認しました. 昨晩追加した分はやっつけなので,時間があるときに LaTeX 関連をもっと色々テストしてみます.
少し試していたのですが,ページ番号の位置が直っているし,twocolumn も動くようになっていますね.対応早いなあ.
あとは数式モード絡みですかね.equation 環境で式番号の向きが pLaTeX とは異なるみたいです.ただ,これはどちらの仕様がよいのでしょう.
一度でも数式モードに入ると,次のページから横組みになったり,おかしなことが起こるようです.
\documentclass{ltjtarticle} \begin{document} あああああああ\clearpage あ$a$ああああああ\clearpage あああああああ\clearpage あああああああ \end{document}
少し試していたのですが,ページ番号の位置が直っているし,twocolumn も動くようになっていますね.対応早いなあ.
あれ,特に直そうとした覚えないんですが…….非常に不安.
組方向の情報は,
の 3 つで分担して持っていますが,
どれがどう干渉するかこちらでも把握しきれなくなってきているので,
書き直すつもりです.
# 特に,LuaTeX-ja のスタックシステムで組方向は管理しないほうがいいかも.
あれ,特に直そうとした覚えないんですが…….非常に不安.
そうなんですか.ページ番号の位置は
ad5ab42... Use everysel package for patching \selectfont.
で直ったみたいです.twocolumn はおそらく
5a6c51e... \{h,v}align should work now (nore test needed)
でしょう.
その他,思いついたこと.
geometry パッケージが動くことは動くのですが,望みの結果にはならないみたいです. pLaTeX だと動作しなかったのですが,LuaTeX-ja だと対応可能?
単純に \textheight と \textwidth の値が入れ替わっているだけのようです:
%#!luajitlatex \documentclass[twocolumn]{ltjtarticle} \typeout{BEFORE GEOMETRY: : \the\paperwidth, \the\paperheight, \the\textwidth, \the\textheight} \usepackage[margin=50pt]{geometry} \typeout{AFTER GEOMETRY: \the\paperwidth, \the\paperheight, \the\textwidth, \the\textheight} %\dimen0=\textheight \textheight=\textwidth \textwidth=\dimen0 \begin{document} \end{document}
fontspec どうしよう.
命令どうしましょうかね.「\jfontspec などで横・縦一度に変える」もありですが,
\setmaintfont とか \newtfontfamily とか,
縦組用和文フォント命令を作ったほうが柔軟性がある気がします.
# そういえば,ZR さんの ZXjatype では命令名称が \setjamainfont のようになっていますね.別名を定義したほうがいいかなあ.
# \tfont で定義された縦組用和文フォントでは,luaotfload 由来のグリフ置換が入る前に +vert 相当の置換が自動で入ります.
現状では,縦組ボックスの \wd は,呼び出された箇所が横組でも縦組でも 「物理的な上下方向の高さ」を返すことが関係しているのでしょう.
pTeX のような「現在の組方向に応じた寸法」を実現する \ltjgetwd, \ltjsetwd 他を作りました.
\the\ltjgetwd42, \dimexpr5\ltjgetht64-27pt\relax \ltjsetdp73=58.93ptのような書き方ができると思います.
insert, adjust など色々チェックすべきことはありますが,なかなか手が回りません. とりあえず,横組下の \vcenter{\tate ... } が「縦組を 90度回転」という 状況になっているのを見つけたので,なんとかしないと.
pTeX における縦組についての基本的な資料として,以下を挙げておきます.
pTeX のような「現在の組方向に応じた寸法」を実現する \ltjgetwd, \ltjsetwd 他を作りました.
たびたびすみません.取得側では \ltj@grab@num を使っているので,
\ltjgetwd\count0 のような呼び出しができないことを思い出しました.
普通のように \ltjgetwd{\count0} と「括弧つき」にする以外に良い方法はないでしょうか?
# \ltjsetwd 側は \afterassignment で実装しているので,こんなことは起こらないはず.
\ifybox なども現在考えていますが,同じような状況になりそうです.
遅くなりましたが,縦組みクラスで geometry 読み込み後に \textheight と \textwidth を入れ替えるようにしました (a920461).filehook を使っています.
ところで,db94e60 で縦組みクラスを使うと,ページをまたぐ毎に次のエラーが出るようになりました.
! Package luatexja Error: Incompatible direction list can't be unboxed. See the luatexja package documentation for explanation. Type H <return> for immediate help. \ltj@@unvbox ...on.check_dir(\the \ltj@tempcnta )} \ltj@@orig@unvbox \ltj@tem... l.4 \end{document}
ところで,db94e60 で縦組みクラスを使うと,ページをまたぐ毎に次のエラーが出るようになりました.
! Package luatexja Error: Incompatible direction list can't be unboxed.
確認しました.\vsplit の処理で,組方向が引き継がれていないことが原因なので,解決方法を考えてみます.
h7k への返信
ところで,db94e60 で縦組みクラスを使うと,ページをまたぐ毎に次のエラーが出るようになりました.
! Package luatexja Error: Incompatible direction list can't be unboxed.確認しました.\vsplit の処理で,組方向が引き継がれていないことが原因なので,解決方法を考えてみます.
2ffb594 で直したつもりです.
h7k への返信
2ffb594 で直したつもりです.
私の環境だとまだエラーが出ます.今度はページをまたがなくてもエラーになります.
\documentclass{ltjtarticle} \begin{document} あ \end{document}
で
《縦組モード》 [1{/usr/local/texlive/2014/texmf-var/fonts/map/pdftex/updm ap/pdftex.map}] ! Package luatexja Error: Incompatible direction list can't be unboxed. See the luatexja package documentation for explanation. Type H <return> for immediate help. \ltj@@unvbox ...on.check_dir(\the \ltj@tempcnta )} \ltj@@orig@unvbox \ltj@tem... l.4 \end{document} ? (./test.aux) ! Package luatexja Error: Incompatible direction list can't be unboxed. See the luatexja package documentation for explanation. Type H <return> for immediate help. \ltj@@unvbox ...on.check_dir(\the \ltj@tempcnta )} \ltj@@orig@unvbox \ltj@tem... l.4 \end{document} ?複数ページを出力させると,どうもページ1つ毎にエラーが出て,最後に .aux を読んだ後にもう1つエラーが出るようです.
複数ページを出力させると,どうもページ1つ毎にエラーが出て,
ページ分割の過程で組方向が引き継がれていなかったようです(\vsplit と同じ原因).
commit babfe8c ではどうでしょうか.
# 最近どうも私の不注意が多いなあ,しっかりしないと…….
また,
(tate direction) \global\setbox0=\hbox{}\leavevmode\unhbox0でも "Incompatible direction list can't be unboxed." というエラーが出ます. 中身が空リストのボックスは hpack_filter, vpack_filter の処理にかからないことによるものですが, どうしよう.
ページ分割の過程で組方向が引き継がれていなかったようです(\vsplit と同じ原因). commit babfe8c ではどうでしょうか.
今度はエラーが出なくなりました.
# 最近どうも私の不注意が多いなあ,しっかりしないと…….
あまりお気になさらずに.もうほとんどコミットできなくなってきていますが,普段から色々テストしてバグ報告するようにしたいと思っています.
縦組み用の fontspec を試していたのですが,例えば \mcdefault で指定された「フォント」に JY3 と JT3 の情報を同時に持たせるにはどうすればいいのかな, というところで止まっています.私が NFSS2 をわかっていないのが問題なのですが,それはさておきどう実装するのが一番いいのかな. JY3 の定義をしたあとに,\fontspec_select:nn 内の \fontspec_set_upright: とかだけ JT3 用に別にやるのかな,などと考えています. それができたとして,次に JY3 と JT3 を別々に定義するのはどうするのだろう.
縦組み用の fontspec
縦組み関係は話題が多くなりそうなので,別チケット (#33932) を作りました.
TeX Live 2015 pretest が始まりましたが,
8may: complete code freeze for final build. 15may: final updates from CTAN, final doc tweaks.とのことなので,4/18--20 のどこかで縦組対応版(現 kitagawa-test ブランチ)をリリースしたいと思います.
今の kitagawa_test ブランチでは,ログに
... (/home/kmaeda/texmf/tex/luatex/luatexja/src/ltj-math.lua) (/home/kmaeda/texmf/tex/luatex/luatexja/src/ltj-tangle.lua)table: 0x1c06be0 (/home/kmaeda/texmf/tex/luatex/luatexja/src/ltj-base.sty) ...とゴミが入るようです.おそらくデバッグのために入れたコードが残っているのではないかと思います. luatexja-core.sty の186行目です.
\directlua{% local bs = string.char(92) if luatexja.token then tex.sprint(bs .. 'ltj@token@avail@scantrue') end print (luatexja.token) }
20150420.0 をリリースしたので,完了とします.
SourceForge.JP が OSDN に名称変更したようですので,それに合わせてドキュメント等を変更してみました.
SourceForge.JP が OSDN に名称変更したようですので,それに合わせてドキュメント等を変更してみました.
ありがとうございます.20150513.0 として出しました.
kitagawa_tfont ブランチで作業していた縦組も,ある程度は形になってきたかなあと思います.pTeX と違う点としては,
遅くとも 8月中にはリリースしたい……のですが,難点として,
(以上,2014/7/28, 8/12 追記.下↓は古い記述)
連休中から,縦組の実装を(kitagawa_tfont ブランチで)考え始めています. test51-vtest.tex がサンプルです.
現在,以下のようなコードを書いています:
LaTeX や fontspec 用のコードは未着手です.また,表組 (\halign, \valign) が動かなくなっています. \tbaselineshift に相当する部分もまだです.