如何在 lualatex 中获取盒子尺寸

如何在 lualatex 中获取盒子尺寸

我是 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

相关内容