チケット #36489

縦組時の \(pdf)lastxpos

登録: 2016-07-28 21:05 最終更新: 2016-07-29 00:17

報告者:
担当者:
(未割り当て)
チケットの種類:
状況:
オープン
コンポーネント:
(未割り当て)
マイルストーン:
(未割り当て)
優先度:
5 - 中
重要度:
5 - 中
解決法:
なし
ファイル:
なし

詳細

あべのりさんの にっき♪

\pdflastxposの動きが違うから.

と触れられていますが,LuaTeX-ja で縦組を使うと \lastxpos, \lastypos の値が意図しないものになります.


次のソースで調べてみました.

  1. \documentclass{minimal}
  2. \usepackage{luatexja}
  3. \usepackage[papersize={200pt,300pt},margin=0mm]{geometry}
  4. \tracingonline1
  5. \def\rec{%
  6. \savepos
  7. \write256{(\the\lastxpos, \the\lastypos)}}
  8. \begin{document}
  9. \parindent10pt
  10. \leavevmode\vrule width 50pt height 1pt\hbox to 1pt{\tate
  11. \rec\vrule width 10pt height 1pt\rec
  12. \raise15pt\hbox{\rec \vrule height 10pta}
  13. }\rec b
  14. \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 と 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 には引き継がれないようです.

チケットの履歴 (2 件中 2 件表示)

2016-07-28 21:05 更新者: h7k
  • 新しいチケット "縦組時の \(pdf)lastxpos" が作成されました
2016-07-29 00:17 更新者: abenori
コメント

yが行送りという仕様なのだと誤解していました.\oddsidemarginをいじると「正しく」\lastxposの方が変化しますね.

# 縦方向の測定なのに\oddsidemarginを使うという馬鹿なコードを書いている時点で気づくべきだった……

添付ファイルリスト

添付ファイルはありません

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする