我是 lualatex 的新手,它看起来很棒。我想知道从 lualatex 内部访问盒子尺寸的最简单方法是什么。我打算在比这更复杂的情况下使用它(作为 lua 块的一部分),所以我不是在寻找 latex 中的黑客来将尺寸提供给 lua 块。我知道 \directlua 的局限性。这是应该使用节点库完成的事情吗?怎么做?
\documentclass{minimal}
\usepackage{luacode}
\newcommand{\measureme}[1]{%
\directlua{-- what should go here to get the size of the box?}%
}
\begin{document}
The size is \measureme{this box}.
\end{document}
答案1
\documentclass{article}
\makeatletter
\let\pc\@percentchar
\makeatother
\newbox\zzz
\newcommand{\measureme}[1]{%
\sbox\zzz{#1}%
\typeout{from TeX ht:\the\ht\zzz,
dp:\the\dp\zzz,
wd:\the\wd\zzz}%
\directlua{
local n = tex.getbox('zzz')
print(string.format("from Lua ht:\pc fpt, dp:\pc fpt, wd:\pc fpt",
n.height/65536,
n.depth/65536,
n.width/65536 ))
}}
\begin{document}
The size is \measureme{this box}.
\end{document}
演示了从 tex 和 Lua 访问框尺寸,它记录:
from TeX ht:6.94444pt, dp:0.0pt, wd:35.33342pt
from Lua ht:6.944443pt, dp:0.000000pt, wd:35.333420pt