8026750 で <Z> に直しました.なんで小文字化したのだろう…….
そろそろ新バージョンのリリースをしようと思っています(9/4 を目標).20170730.0 からの変更点は以下のとおりです.
#37419(縦書き時の矢印の向き)と #37458(lltjp-geometry と pTeX 横クラス)についてはどうするかまだ決めていません.
ありがとうございます.(勝手に直そうと思ったらわざわざ変えていたので不思議になってしまった…….)
あまり関係ないのですが,ちょっと聞かせてください.次のソースをplatexで処理すると「テスト」が縦書きになるのですが,luatexjaの読み込みを加えてlualatexで処理するとutodになります.違いはなんなんでしょう?
\documentclass[landscape]{article}
% \usepackage{luatexja}
\usepackage{bxpapersize}
\makeatletter
\let\orig@array=\@array
\def\@array{\tate\orig@array}
\makeatother
\begin{document}
\tate
\begin{tabular}{c}
テスト
\end{tabular}
\end{document}
ちなみに\@arrayの定義を
\def\@array[#1]#2{%
\if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi
\bgroup
\tate
\setbox\@arstrutbox\hbox{%
(後はオリジナルの@arrayと同じ)
とするとLuaTeX-jaでも縦書きになります.次のソースをplatexで処理すると「テスト」が縦書きになるのですが,luatexjaの読み込みを加えてlualatexで処理するとutodになります
問題の部分だけ抜き出すと次のようになります:
\documentclass[landscape]{article}
\ifdefined\directlua\usepackage{luatexja}\fi
\begin{document}
\hbox{\tate$\tate \vbox{あいう}$}
\end{document}
ここで,数式モードに入った直後に \tate を実行していますが,LuaTeX-ja では「ボックス開始時,tate であり,かつその一つ上位のリストが数式モードであればボックスは utod になる」という挙動(*)を示すため,その中の \vbox は utod になってしまいます.
一方,\hbox{\tate$\vbox{\tate あいう}$} とすると,中の \vbox は当然 tate です.
(*)の該当コードは ltj-direction.lua の
function luatexja.direction.set_list_direction_hook(v)
local lv = tex_nest.ptr -- must be >= 1
if not v then
v = get_dir_count()
if abs(tex_nest[lv-1].mode) == ltjs.mmode and v == dir_tate then
v = dir_utod
end
(略)
です.なんとかできないかなあ.
ありがとうございます.納得しました.数式入った瞬間utodになって\tateされるとそっからはずっとtate,ってのは難しいんですかね?
数式入った瞬間utodになって\tateされるとそっからはずっとtate
とりあえず cab73095 で書いてみましたが,数式モードのリスト中に whatsit を置く(LuaTeX-ja では,リストの組方向を保持するのに whatsit を使っている)ことで副作用がないか不安です.
数式入った瞬間utodになって\tateされるとそっからはずっとtate
コミットはしたものの,どうもモヤモヤ.
pTeX でも LuaTeX-ja でも,「組方向はリスト・ボックスごとに定まる」という方針なのですが,文中数式はいずれ水平リストに変換されてしまうことを考えると,数式モードで組方向が設定できるのは不自然な気がしています. 別の言葉で言えば,pTeX で $\tate ...$ ができるのは抜け穴のように感じています.ここまでサポートする必要あるのかなあ.
参考として,以下のソースを e-pTeX で処理させると,内側の \hbox が「縦組の90度回転」の状態になります:
\ifdefined\directlua
\input luatexja.sty
\fi
\tentmin
あいうabc$\tate xyz\hbox{あいうabc}xyz$
\bye
ノードで言うと次のようになります.「数式の組方向」とその中の \hbox の組方向がともに縦であることによるのでしょうか,通常なら異方向のボックスを組むときに使われる dir_node が作られていないようです.
\hbox(7.77588+4.58221)x469.75499, glue set 322.11545fil (略) .\tenrm c .\mathon (略) .\kern0.4398 .\glue(\xkanjiskip) 2.40553 plus 1.0 minus 1.0 .\hbox(6.94444+4.58221)x46.54984, tate direction ..\tentmin あ (略)
h7k への返信
数式入った瞬間utodになって\tateされるとそっからはずっとtate
コミットはしたものの,どうもモヤモヤ. pTeX でも LuaTeX-ja でも,「組方向はリスト・ボックスごとに定まる」という方針なのですが,文中数式はいずれ水平リストに変換されてしまうことを考えると,数式モードで組方向が設定できるのは不自然な気がしています. 別の言葉で言えば,pTeX で $\tate ...$ ができるのは抜け穴のように感じています.ここまでサポートする必要あるのかなあ.
マニュアルが ! Improper \halign inside $$'s というエラーをだして組版できなくなりました. そのため,commt cab73095 は revert しました.
上記のエラーは tex.web で
@ When \.{\\halign} is used as a displayed formula, there should be
no other pieces of mlists present.
@<Check for improper alignment in displayed math@>=
if (mode=mmode)and((tail<>head)or(incompleat_noad<>null)) then
begin print_err("Improper "); print_esc("halign"); print(" inside $$'s");
@.Improper \\halign...@>
(略)
と定義されており,どうやら組方向格納用 whatsitが存在することによるようです.
別の言葉で言えば,pTeX で $\tate ...$ ができるのは抜け穴のように感じています.
なるほど,言われてみると違和感を感じても来ました.
文中数式はいずれ水平リストに変換されてしまうことを考えると
これって、「いずれ水平リストに変換されて 周りの水平リストに吸収されてしまう 」ということですか?
だとすると、 $\tate ...$ は「アリエナイ」ような……。
この構成を利用している例が現状で存在する、という話なんでしょうか?
20170904.0 を出したので,完了とします.数式モード中で $\tate ...$ のように組方向を変更することは禁止していますが,pTeX 側がどうなるか (tex-jp-build/#21) によってはまた仕様変更するかも.
lljtextを読み込んでtabularを組方向指定なしで使うと,zオプションと同様になるようですが,これ意図してます?
\documentclass{ltjtarticle}% lltjextが読み込まれる \begin{document} \begin{tabular}{c} テスト \end{tabular} \end{document}で「テスト」がutodになります.この影響で,ltjtarticleを使っていると \maketitle内で著者名が寝てしまいます.ちなみにplextだと縦書きになります.Zという組方向オプションを渡している扱いにしているようです.lltjextも以前は同じだったようですが,今年の5/11の669795aでZ→zとされたようです.