我有一些 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 打印和直接在 .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