Tíquete #33761

LuaTeX-ja での縦組み

: 2014-05-06 22:47 Última Atualização: 2015-05-13 20:16

Relator:
Dono:
(Nenhum)
Estado:
Fechado
Componente:
Marcos:
(Nenhum)
Prioridade:
7
Gravidade:
5 - Medium
Resolução:
Nenhum
Arquivo:
Nenhum

Details

kitagawa_tfont ブランチで作業していた縦組も,ある程度は形になってきたかなあと思います.pTeX と違う点としては,

  • 「縦数式ディレクション」に直に変更する \utod を追加(チケット #34023
  • \ifydir 等の条件判断文は実装不能と判断. 代わりに \ltjgetparameter{direction} で組方向を数字として取得できる.
  • \wd, \ht, \dp は組方向には対応せず.\ltjgetwd{42} \ltjsetwd42=4pt を利用すること.
  • plext.sty の LuaLaTeX-ja 対応版として lltjext.sty を用意.
    • <y> 等の組方向指定に,<d> (\dtou), <u> (\utod) を追加
    • plext.sty の垂直位置 [t], [b], [c] での挙動に不自然?なところがあった(test/test54[a]-res.pdf 参照,赤が pLaTeX). とりあえず今は \vtop, \vbox, \vcenter を直に使うようにしているが,どうすればよいか悩む.

遅くとも 8月中にはリリースしたい……のですが,難点として,

  • 現在の実装では,LuaTeX rev 5023 以降を仮定しています(参考:チケット #33940). TeX Live 2014 中の LuaTeX では動作しないと思われるので,安直に CTAN に上げるのは危険と思います.
    • W32TeX の luatex-dev-w32 なら動くと思います.
  • yoffset 問題はまだ直していません.横組ではあまり気になりませんでしたが,縦組では目立ってきます.
  • fontspec 対応はチケット #33932 へ.(→何とかしたつもり 2014/8/12 追記)

(以上,2014/7/28, 8/12 追記.下↓は古い記述)


連休中から,縦組の実装を(kitagawa_tfont ブランチで)考え始めています. test51-vtest.tex がサンプルです.

現在,以下のようなコードを書いています:

  • LuaTeX 本体にある組方向 RTT は使わず,「横組で組んだものを 90 度回転」させる方式.
  • 組方向の変更は pTeX と同じように \yoko, \tate を利用.縦組用フォントも pTeX と同様に \tfont で定義する.
  • ボックスレジスタには「組まれた時の」方向で入っている.\ht0 等は縦組下でも横組下でも同一の値を返す.

LaTeX や fontspec 用のコードは未着手です.また,表組 (\halign, \valign) が動かなくなっています. \tbaselineshift に相当する部分もまだです.

Ticket History (3/26 Histories)

2014-05-06 22:47 Updated by: h7k
  • New Ticket "LuaTeX-ja での縦組み" created
2014-05-07 21:41 Updated by: kmaeda
Comentário

こんにちは.いつもご苦労様です.

何も頭を使わずに LaTeX 対応のクラスファイルを試してみました (kmaeda_tarticle). 例のごとく,コメントアウトなどしただけです. ltjtarticle がとりあえず動いたのですが,ページ番号の位置がおかしかったり,色々問題ありそうです.

そのままだと twocolumn とかはだめみたい.

2014-05-08 10:08 Updated by: h7k
Comentário

表組 (\halign, \valign) が動かなくなっています. \tbaselineshift に相当する部分もまだです.

commit a6c37db でなんとかしたつもりです.横組のみの文章でも,速度低下が著しい(以前の 2 倍程度の時間がかかる?)のは改善しないといけません.

何も頭を使わずに LaTeX 対応のクラスファイルを試してみました (kmaeda_tarticle). 例のごとく,コメントアウトなどしただけです. ltjtarticle がとりあえず動いたのですが,ページ番号の位置がおかしかったり,色々問題ありそうです.

テストありがとうございます.ページ番号の位置がおかしいのは,フッタを格納するボックスが 606 pt (=\textwidth) で作られているからのようです. 現状では,縦組ボックスの \wd は,呼び出された箇所が横組でも縦組でも「物理的な上下方向の高さ」を返すことが関係しているのでしょう.

2014-05-08 10:18 Updated by: kmaeda
Comentário

どうでもいいですが,自己レスで,

コメントアウトなどしただけ

「コメントアウト外すなどしただけ」の間違いです.なんだかいつも用法を間違ってしまいます.

表組は,横組みの tabular 環境で落ちなくなったのを確認しました. 昨晩追加した分はやっつけなので,時間があるときに LaTeX 関連をもっと色々テストしてみます.

2014-05-08 22:31 Updated by: kmaeda
Comentário

少し試していたのですが,ページ番号の位置が直っているし,twocolumn も動くようになっていますね.対応早いなあ.

あとは数式モード絡みですかね.equation 環境で式番号の向きが pLaTeX とは異なるみたいです.ただ,これはどちらの仕様がよいのでしょう.

一度でも数式モードに入ると,次のページから横組みになったり,おかしなことが起こるようです.

\documentclass{ltjtarticle}
\begin{document}
あああああああ\clearpage あ$a$ああああああ\clearpage あああああああ\clearpage あああああああ
\end{document}

2014-05-08 22:59 Updated by: h7k
Comentário

少し試していたのですが,ページ番号の位置が直っているし,twocolumn も動くようになっていますね.対応早いなあ.

あれ,特に直そうとした覚えないんですが…….非常に不安.

組方向の情報は,

  • LuaTeX-ja のスタックシステム
  • list 先頭に追加される whatsit (初回の hpack, vpack 時に追加される→ attr に移行したら削除)
  • attribute \ltj@dir

の 3 つで分担して持っていますが, どれがどう干渉するかこちらでも把握しきれなくなってきているので, 書き直すつもりです.
# 特に,LuaTeX-ja のスタックシステムで組方向は管理しないほうがいいかも.

2014-05-08 23:27 Updated by: kmaeda
Comentário

あれ,特に直そうとした覚えないんですが…….非常に不安.

そうなんですか.ページ番号の位置は

ad5ab42... Use everysel package for patching \selectfont.

で直ったみたいです.twocolumn はおそらく

5a6c51e... \{h,v}align should work now (nore test needed)

でしょう.

その他,思いついたこと.

  • geometry パッケージが動くことは動くのですが,望みの結果にはならないみたいです.pLaTeX だと動作しなかったのですが,LuaTeX-ja だと対応可能?
  • fontspec どうしよう.本家では TODO! の Vertical typesetting という項目があるんですよね.
2014-05-11 11:32 Updated by: h7k
Comentário

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 相当の置換が自動で入ります.

2014-05-18 14:25 Updated by: h7k
Comentário

現状では,縦組ボックスの \wd は,呼び出された箇所が横組でも縦組でも 「物理的な上下方向の高さ」を返すことが関係しているのでしょう.

pTeX のような「現在の組方向に応じた寸法」を実現する \ltjgetwd, \ltjsetwd 他を作りました.

\the\ltjgetwd42, \dimexpr5\ltjgetht64-27pt\relax
\ltjsetdp73=58.93pt
のような書き方ができると思います.

insert, adjust など色々チェックすべきことはありますが,なかなか手が回りません. とりあえず,横組下の \vcenter{\tate ... } が「縦組を 90度回転」という 状況になっているのを見つけたので,なんとかしないと.


pTeX における縦組についての基本的な資料として,以下を挙げておきます.

  • 濱野尚人,田村明史,倉沢良一,「TeXの出版への応用 — 縦組み機能の組み込み —」(texmf-dist/doc/ptex-base/ptexdoc.pdf)
  • Hisato Hamano, Vertical typesetting with TeX, TUGboat 11 (3), 346--352, 1990. http://www.tug.org/TUGboat/Articles/tb11-3/tb29hamano.pdf
2014-05-18 21:07 Updated by: h7k
Comentário

pTeX のような「現在の組方向に応じた寸法」を実現する \ltjgetwd, \ltjsetwd 他を作りました.

たびたびすみません.取得側では \ltj@grab@num を使っているので, \ltjgetwd\count0 のような呼び出しができないことを思い出しました. 普通のように \ltjgetwd{\count0} と「括弧つき」にする以外に良い方法はないでしょうか?
# \ltjsetwd 側は \afterassignment で実装しているので,こんなことは起こらないはず.

\ifybox なども現在考えていますが,同じような状況になりそうです.

2014-06-08 05:36 Updated by: kmaeda
Comentário

遅くなりましたが,縦組みクラスで 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}

2014-06-08 09:37 Updated by: h7k
Comentário

ところで,db94e60 で縦組みクラスを使うと,ページをまたぐ毎に次のエラーが出るようになりました.
! Package luatexja Error: Incompatible direction list can't be unboxed.

確認しました.\vsplit の処理で,組方向が引き継がれていないことが原因なので,解決方法を考えてみます.

2014-06-09 10:42 Updated by: h7k
Comentário

h7k への返信

ところで,db94e60 で縦組みクラスを使うと,ページをまたぐ毎に次のエラーが出るようになりました.
! Package luatexja Error: Incompatible direction list can't be unboxed.

確認しました.\vsplit の処理で,組方向が引き継がれていないことが原因なので,解決方法を考えてみます.

2ffb594 で直したつもりです.

2014-06-09 18:55 Updated by: kmaeda
Comentário

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つエラーが出るようです.

2014-06-11 08:14 Updated by: h7k
Comentário

複数ページを出力させると,どうもページ1つ毎にエラーが出て,

ページ分割の過程で組方向が引き継がれていなかったようです(\vsplit と同じ原因). commit babfe8c ではどうでしょうか.
# 最近どうも私の不注意が多いなあ,しっかりしないと…….

また,

(tate direction)
\global\setbox0=\hbox{}\leavevmode\unhbox0
でも "Incompatible direction list can't be unboxed." というエラーが出ます. 中身が空リストのボックスは hpack_filter, vpack_filter の処理にかからないことによるものですが, どうしよう.

2014-06-11 10:02 Updated by: kmaeda
Comentário

ページ分割の過程で組方向が引き継がれていなかったようです(\vsplit と同じ原因). commit babfe8c ではどうでしょうか.

今度はエラーが出なくなりました.

# 最近どうも私の不注意が多いなあ,しっかりしないと…….

あまりお気になさらずに.もうほとんどコミットできなくなってきていますが,普段から色々テストしてバグ報告するようにしたいと思っています.

縦組み用の fontspec を試していたのですが,例えば \mcdefault で指定された「フォント」に JY3 と JT3 の情報を同時に持たせるにはどうすればいいのかな, というところで止まっています.私が NFSS2 をわかっていないのが問題なのですが,それはさておきどう実装するのが一番いいのかな. JY3 の定義をしたあとに,\fontspec_select:nn 内の \fontspec_set_upright: とかだけ JT3 用に別にやるのかな,などと考えています. それができたとして,次に JY3 と JT3 を別々に定義するのはどうするのだろう.

2014-06-11 10:18 Updated by: h7k
Comentário

縦組み用の fontspec

縦組み関係は話題が多くなりそうなので,別チケット (#33932) を作りました.

2014-07-28 10:37 Updated by: h7k
  • Details Updated
  • Componente Update from (Nenhum) to 縦組
2014-08-12 12:07 Updated by: h7k
  • Details Updated
  • Prioridade Update from 5 - Medium to 7
2015-04-14 18:12 Updated by: h7k
Comentário

TeX Live 2015 pretest が始まりましたが,

8may: complete code freeze for final build.
15may: final updates from CTAN, final doc tweaks.
とのことなので,4/18--20 のどこかで縦組対応版(現 kitagawa-test ブランチ)をリリースしたいと思います.

2015-04-15 17:29 Updated by: kmaeda
Comentário

今の 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)
}

2015-04-15 20:11 Updated by: h7k
Comentário

kmaeda への返信

今の kitagawa_test ブランチでは,ログに ... とゴミが入るようです.

50539ed で直しました.

2015-04-20 10:41 Updated by: h7k
  • Estado Update from Aberto to Fechado
  • Ticket Close date is changed to 2015-04-20 10:41
Comentário

20150420.0 をリリースしたので,完了とします.

2015-05-11 14:11 Updated by: h7k
  • Estado Update from Fechado to Aberto
Comentário

チケット #35093(および重複ですが #35103)があったので,

15may: final updates from CTAN, final doc tweaks. 
に間に合うように数日中にリリースしようと思います.

2015-05-11 23:17 Updated by: kmaeda
Comentário

SourceForge.JP が OSDN に名称変更したようですので,それに合わせてドキュメント等を変更してみました.

2015-05-13 20:16 Updated by: h7k
  • Ticket Close date is changed to 2015-05-13 20:16
  • Estado Update from Aberto to Fechado
Comentário

SourceForge.JP が OSDN に名称変更したようですので,それに合わせてドキュメント等を変更してみました.

ありがとうございます.20150513.0 として出しました.

Attachment File List

No attachments

Editar

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login