Ticket #36489

縦組時の \(pdf)lastxpos

Open Date: 2016-07-28 21:05 Last Update: 2016-07-29 00:17

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

Details

あべのりさんの にっき♪

\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 には引き継がれないようです.

Ticket History (2/2 Histories)

2016-07-28 21:05 Updated by: h7k
  • New Ticket "縦組時の \(pdf)lastxpos" created
2016-07-29 00:17 Updated by: abenori
Comment

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

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

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