以下代码可以运行并给出具有预期对齐的预期输出。
\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
)