我正在尝试使用 Lua 代码片段生成带有粗体文本的表格。这是一个简单示例。
\documentclass{article}
\usepackage{luacode}
\begin{document}
\begin{table}[h]
\centering
\begin{tabular}{l|l}
\begin{luacode}
array = {1, 2, 3}
for value in next, array do
tex.sprint("\\textbf{", value, "} ", "& ", value*2, "\\\\")
tex.print(" ")
end
\end{luacode}
\end{tabular}
\end{table}
\end{document}
但是 LuaLatex 编译失败,出现以下错误:
! Extra }, or forgotten \endgroup.
<template> \unskip \hfil }
\hskip \tabcolsep \hskip -.5\arrayrulewidth \vrule width\arrayru
l.14 \end{luacode}
我是 LuaLatex 的新手,所以我不太清楚这里发生了什么。一种可能性是,&
或\
首先由 TeX 编译器而不是 Lua 编译器解析。有什么方法可以避免这种情况发生,并让 Lua 将字符串片段原封不动地插入 TeX 源代码中?
答案1
您不能在一个单元中启动环境并在另一个单元中结束环境,因此(通常情况下)\begin{luacode}
在这里没有帮助。但是您的 Lua 代码运行良好:
\documentclass{article}
\begin{document}
\begin{table}[ht]
\centering
\begin{tabular}{l|l}
\directlua{
array = {1, 2, 3}
for value in next, array do
tex.sprint("\string\\textbf{", value, "} ", "& ", value*2, "\string\\\string\\")
tex.print(" ")
end
}
\end{tabular}
\end{table}
\end{document}