使用 LuaLaTeX 进行编译时,在 lua 函数中添加参数时,表格环境中的对齐方式会发生变化

使用 LuaLaTeX 进行编译时,在 lua 函数中添加参数时,表格环境中的对齐方式会发生变化

以下代码可以运行并给出具有预期对齐的预期输出。

\documentclass{article}
\usepackage{luacode}
\begin{luacode}
function myfunc()
  str2=[[$1$ & $2$ & $3$ & $4$ & $5$  \\  $1$ & $2$ & $3$ & $4$ & $5$ \\  $1$ & $2$ & $3$ & $4$ & $5$ ]]
return (str2)
end
\end{luacode}
\newcommand\luaTest{\directlua{tex.sprint(myfunc())}}

\begin{document}
\begin{tabular}{|r|r|r|r|r|}
\luaTest
\end{tabular} 
\end{document}

但是,以下代码不起作用。最后一列中最后一个条目(即条目 5)的对齐方式发生了变化。它稍微向左移动。请参阅附图。在此代码中,没有向函数添加参数的作用。但是,我在处理其他一些函数带有一些参数的代码时遇到了同样的问题在此处输入图片描述。为什么会出现这种情况?如何解决?

\documentclass{article}
\usepackage{luacode}
\begin{luacode}
function myfunc(n)
  str2=[[$1$ & $2$ & $3$ & $4$ & $5$  \\  $1$ & $2$ & $3$ & $4$ & $5$ \\  $1$ & $2$ & $3$ & $4$ & $5$ ]]
return (str2)
end
\end{luacode}
\newcommand\luaTest[1]{\directlua{tex.sprint(myfunc(#1))}}

\begin{document}
\begin{tabular}{|r|r|r|r|r|}
\luaTest{9} 
\end{tabular} 
\end{document}

答案1

删除luacode定义中最后一个条目后的空格:

\documentclass{article}
\usepackage{luacode}
\begin{luacode}
function myfunc(n)
  str2=[[$1$ & $2$ & $3$ & $4$ & $5$ \\  
         $1$ & $2$ & $3$ & $4$ & $5$ \\  
         $1$ & $2$ & $3$ & $4$ & $5$]]   % <---
return (str2)
end
\end{luacode}
\newcommand\luaTest[1]{\directlua{tex.sprint(myfunc(#1))}}

\begin{document}
\begin{tabular}{|r|r|r|r|r|}
\luaTest{9}
\end{tabular}
\end{document}

在此处输入图片描述

或者写成

\begin{luacode}
function myfunc(n)
  str2=[[$1$ & $2$ & $3$ & $4$ & $5$ \\  
         $1$ & $2$ & $3$ & $4$ & $5$ \\  
         $1$ & $2$ & $3$ & $4$ & $5$%    % <---
       ]]
return (str2)
end
\end{luacode}

答案2

行尾\luaTest{9}被解释为空格,因此您进入5最后一个单元格。这会正确右对齐,但由于空格不可见,因此看起来没有对齐。\luaTest{9}%通过注释换行符/空格来避免这种情况。

如果没有参数,则不会出现此问题,因为 TeX 会忽略控制序列后面的空格(如\luaTest

相关内容