我无法在 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 没有任何可以解释为数字的东西,因此它给出了错误。