在 LaTeX 代码中直接输入 lua 打印的宏时,其行为会有所不同

在 LaTeX 代码中直接输入 lua 打印的宏时,其行为会有所不同

我有一些 lua 代码应该准备一个类似于此的 tikz 节点矩阵回答在遇到了很多与空格有关的问题之后,我终于得到了一些输出,但它并不像预期的那样。

我将其缩小到这个示例代码,它应该导致相同的矩阵显示两次:

主文本

\documentclass[preview]{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}
\directlua{require('main')
print_matrix()}
\begin{tikzpicture}[mycell/.style={draw, minimum size=1cm}, dot/.style={mycell,fill=blue!20}]
\matrix (m) [matrix of nodes, row sep=-\pgflinewidth, column sep=-\pgflinewidth, nodes={mycell}, nodes in empty cells] {0&1&2\\
|[dot]|3&|[dot]|4&|[dot]|5\\
6&7&8\\
|[dot]|9&|[dot]|10&11\\};
\end{tikzpicture}
\end{document}

主lua

function print_matrix()
        tex.print([[\begin{tikzpicture}[mycell/.style={draw, minimum size=1cm}, dot/.style={mycell,fill=blue!20}]
\matrix (m) [matrix of nodes, row sep=-\pgflinewidth, column sep=-\pgflinewidth, nodes={mycell}, nodes in empty cells] {0&1&2\\
|[dot]|3&|[dot]|4&|[dot]|5\\
6&7&8\\
|[dot]|9&|[dot]|10&11\\};
\end{tikzpicture}]])
end

main.tex 调用 main.lua,后者应打印与调用后相同的代码。

但是,当我通过 lualatex 运行它时,我得到以下输出: 左侧站点:lua 输出;右侧:预期输出(来自直接 LaTeX 代码)

我不明白为什么从 lua 打印和直接在 .tex 文档中输入时,相同的代码处理方式不同。最后我的问题归结为:

我要怎么做才能让 lua 中的 LaTeX 代码的行为与直接输入 .tex 文档时的行为完全一样?

答案1

所以我最终适应了这个答案。我刚刚在 Lua 中添加了一个用于打印到 latex 的自定义函数:

function texsprint(text)
        for line in unicode.utf8.gmatch(text, "[^\r\n]+") do
                tex.sprint(line)
        end
end

相关内容