处理 LuaLaTeX 中的花括号

处理 LuaLaTeX 中的花括号

我正在尝试使用 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}

相关内容