我编写了一个 Lua 函数,用于将 TXT 文件中的数据转储到我的 LaTeX 文档中。我现在遇到的问题是 TXT 文件中的数据被视为 LaTeX 代码,因此我需要使用反斜杠等转义特殊字符。有没有办法将 TXT 文件中的数据视为“纯文本”,而无需任何 LaTeX 格式?
我的直觉是:
- 有一个用于此的 LaTeX 宏。有点像
verbatim
,但不以打字机字体显示我的文本。 - 有现成的 LuaTeX 宏或函数可以实现这一点。基本上与
\luaescapestring
- 我必须手写一个特殊字符转义函数。
来源test.tex
:
\documentclass{article}
\directlua{dofile("test.lua")}
\begin{document}
\directlua{test("test.txt")}
\end{document}
来源test.lua
:
function test(filename)
local file = io.open(filename)
local s = file:read("*a")
tex.print(s)
file:close()
end
我当前的test.txt
使用 LaTeX 格式:
Hello \$\#\%!
我想要的test.txt
是纯文本,可能包含任何特殊字符:
Hello $#%!
答案1
用于tex.print(-2,s)
获取所需的输出。
背景:该函数tex.print()
接受不同数量的参数。在最简单的变体中,它接受应输出的字符串。它还接受“catcode 表”作为第一个参数(一个数字)。有预定义的 catcode 表,并且 -2 是一个 catcode 表,其中所有特殊字符都不再是特殊字符。因此tex.print(-2,"#")
不会插入“catcode 为 6 的 #”,而是“catcode 为 12 的 #”。众所周知,12 是无害的“其他字符”的 catcode。