假设我有一个打印 TeX 宏的 Lua 函数:如何在使用 LuaLaTeX 编译期间执行这些宏?
在下面的例子中,我定义了一个 LaTeX 宏,它应该通过多次调用打印一个表格(包含环境tabular
和实际主体)tex.print
:
% compile with LuaLaTeX
\documentclass{article}
\usepackage{array}
\newcommand{\mytable}{%
\directlua{
tex.print("\\begin{tabular}{lll}")
tex.print("1 & a & Test A \\\\")
tex.print("2 & b & Test B \\\\")
tex.print("\\end{tabular}")
}
}
\begin{document}
\mytable
\end{document}
但是,这不管用。这能行得通吗?或者这根本不是解决办法?
笔记:实际上,我在一个文件中定义一个 Lua 函数myfunc.lua
,然后我加载它\directlua{dofile("myfunc.lua")}
,然后将它“传递”给 LaTeX 宏。
相关问题:
答案1
如果使用原始形式,你需要记住,\write
发送时会扩展类似的宏到lua 所以你需要
\documentclass{article}
\usepackage{array}
\newcommand{\mytable}{%
\directlua{
tex.print("\string\\begin{tabular}{lll}")
tex.print("1 & a & Test A \string\\\string\\")
tex.print("2 & b & Test B \string\\\string\\")
tex.print("\string\\end{tabular}")
}
}
\begin{document}
\mytable
\end{document}