縦組時の \(pdf)lastxpos
あべのりさんの にっき♪に
\pdflastxposの動きが違うから.
と触れられていますが,LuaTeX-ja で縦組を使うと \lastxpos, \lastypos の値が意図しないものになります.
次のソースで調べてみました.
\documentclass{minimal} \usepackage{luatexja} \usepackage[papersize={200pt,300pt},margin=0mm]{geometry} \tracingonline1 \def\rec{% \savepos \write256{(\the\lastxpos, \the\lastypos)}} \begin{document} \parindent10pt \leavevmode\vrule width 50pt height 1pt\hbox to 1pt{\tate \rec\vrule width 10pt height 1pt\rec \raise15pt\hbox{\rec \vrule height 10pta} }\rec b \end{document}
[1 (3866624, 54725630) (4521984, 54725630) (4521984, 55708670) {/home/h7k/.texlive2016/texmf-var/fonts/map/pdftex/updmap/pdftex.map} (5570560, 54725630) ] (./a.aux))
また,1つ目の \rec(内側の \hbox の参照点の位置)の \lastxpos の値を見ても 3866624sp = 59pt となっており,正しい 10pt (\parindent) + 50pt = 60pt とは ちょうど \hbox の幅 (1pt) だけずれてしまっています.
LuaTeX-ja では,縦組ボックスを横組中に配置するときに pdf_setmatrix whatsit を使って ボックスを回転させていますが,この情報が \lastxpos, \lastypos には引き継がれないようです.
yが行送りという仕様なのだと誤解していました.\oddsidemarginをいじると「正しく」\lastxposの方が変化しますね.
あべのりさんの にっき♪に
と触れられていますが,LuaTeX-ja で縦組を使うと \lastxpos, \lastypos の値が意図しないものになります.
次のソースで調べてみました.
実行すると, という出力結果になります. 1つ目の \rec と 2つ目の \rec の間では字送り方向(=下)に 10pt=655360sp, 2つ目の \rec と 3つ目の \rec の間では行送り方向(=左)に -15pt=-983040sp 移動しているのに対して,\lastxpos, \lastypos の値を見ると それぞれ「右に10pt」「上に15pt」という移動量になってしまっています.また,1つ目の \rec(内側の \hbox の参照点の位置)の \lastxpos の値を見ても 3866624sp = 59pt となっており,正しい 10pt (\parindent) + 50pt = 60pt とは ちょうど \hbox の幅 (1pt) だけずれてしまっています.
LuaTeX-ja では,縦組ボックスを横組中に配置するときに pdf_setmatrix whatsit を使って ボックスを回転させていますが,この情報が \lastxpos, \lastypos には引き継がれないようです.