LuaTeX:\luaexec 导致“缺少数字,视为零”。

LuaTeX:\luaexec 导致“缺少数字,视为零”。

我无法在 LuaTeX 中处理 Lua <--> LaTeX 交互。每次 luacode 应该输出非字符串标记时,我都会收到类型错误。

例如在这种情况下:

\documentclass{report}
\usepackage[export]{adjustbox}
\usepackage{fontspec}
\usepackage{luacode}

\begin{luacode*}
function params()
    tex.print(0.12)
end
\end{luacode*}

\begin{document}

{\adjustbox{trim={\luaexec{params()}\width} {.2\height} {0.1\width} {.15\height},clip}
      {\includegraphics[keepaspectratio,width=5cm]{pic.jpg}}}
\end{document}

我会得到:“缺失数字,视为零。”

答案1

这是一个扩展问题:\luacode不可扩展。trim关键是 TeX 维度分配:这里给出的内容需要由 TeX 分配为长度,这意味着使用的任何代码都必须是可扩展的。但是,如果您跟踪\luacode它的定义,它包含一个\begingroup(和其他东西),这会停止扩展。这个不可扩展的代码用于使\luacode宏工作,但这意味着您无法以您想要的方式构造输入。正如在评论,这里可以使用“raw” \directlua:原始内容是可扩展的,因此可以为 TeX 提供所需的内容(此处0.12\textwidth)。

为了解释错误本身,发生的事情是 TeX 找到了\begingroup但正在寻找数字。不可扩展的标记终止了数字搜索,但 TeX 没有任何可以解释为数字的东西,因此它给出了错误。

相关内容