LuaTeX:如何处理打印 TeX 宏的 Lua 函数

LuaTeX:如何处理打印 TeX 宏的 Lua 函数

假设我有一个打印 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. 如何在 LuaTeX 中执行“printline”
  2. 如何在 luatex 中操作多行字符串?
  3. luatex 并启动处理换行符的 TeX 宏

答案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}

相关内容