Ticket #37467

lltjext読み込み時&縦書きの組方向指定なしtabular

Open Date: 2017-08-27 20:55 Last Update: 2017-09-04 21:22

Reporter:
Owner:
Type:
Status:
Closed
Component:
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
None
File:
None

Details

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とされたようです.

Ticket History (3/11 Histories)

2017-08-27 20:55 Updated by: abenori
  • New Ticket "lltjext読み込み時&縦書きの組方向指定なしtabular" created
2017-08-27 21:41 Updated by: h7k
Comment

8026750 で <Z> に直しました.なんで小文字化したのだろう…….

そろそろ新バージョンのリリースをしようと思っています(9/4 を目標).20170730.0 からの変更点は以下のとおりです.

  • いつものように,platex 2017/07/29+1 への追随
  • #37424(luatexja-fontspec で \labelitemiii が消える)修正.それに伴い etoolbox を動作要件に.#37427 参照.
  • luatexja-preset で新規プリセットを可能に (\ltjnewpreset, \ltjapplypreset)

#37419(縦書き時の矢印の向き)と #37458(lltjp-geometry と pTeX 横クラス)についてはどうするかまだ決めていません.

2017-08-27 22:13 Updated by: abenori
Comment

ありがとうございます.(勝手に直そうと思ったらわざわざ変えていたので不思議になってしまった…….)

あまり関係ないのですが,ちょっと聞かせてください.次のソースを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でも縦書きになります.

2017-08-28 07:02 Updated by: h7k
  • Component Update from (None) to 縦組
  • Owner Update from (None) to h7k
Comment

次のソースを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
      (略)
です.なんとかできないかなあ.

2017-08-28 14:08 Updated by: abenori
Comment

ありがとうございます.納得しました.数式入った瞬間utodになって\tateされるとそっからはずっとtate,ってのは難しいんですかね?

2017-08-28 17:38 Updated by: h7k
Comment

数式入った瞬間utodになって\tateされるとそっからはずっとtate

とりあえず cab73095 で書いてみましたが,数式モードのリスト中に whatsit を置く(LuaTeX-ja では,リストの組方向を保持するのに whatsit を使っている)ことで副作用がないか不安です.

2017-08-28 21:16 Updated by: h7k
Comment

数式入った瞬間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 あ
(略)

2017-08-29 09:20 Updated by: h7k
Comment

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が存在することによるようです.

2017-08-29 11:02 Updated by: abenori
Comment

別の言葉で言えば,pTeX で $\tate ...$ ができるのは抜け穴のように感じています.

なるほど,言われてみると違和感を感じても来ました.

2017-08-29 17:05 Updated by: zrbabbler
Comment

文中数式はいずれ水平リストに変換されてしまうことを考えると

これって、「いずれ水平リストに変換されて 周りの水平リストに吸収されてしまう 」ということですか?

だとすると、 $\tate ...$ は「アリエナイ」ような……。

この構成を利用している例が現状で存在する、という話なんでしょうか?

2017-09-04 21:22 Updated by: h7k
  • Status Update from Open to Closed
  • Ticket Close date is changed to 2017-09-04 21:22
Comment

20170904.0 を出したので,完了とします.数式モード中で $\tate ...$ のように組方向を変更することは禁止していますが,pTeX 側がどうなるか (tex-jp-build/#21) によってはまた仕様変更するかも.

Attachment File List

No attachments

Edit

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