我有一些foo.lua
代码,从 luatex 或 texlua 加载时需要稍微有不同的行为。这是我的示例文档。
%!TeX Program=LuaLaTeX
\documentclass{article}
\RequirePackage{luacode}
\begin{document}
\begin{luacode}
require("foo.lua")
\end{luacode}
\end{document}
这是foo.lua
if is_luatex then
tex.sprint("Hello LuaTeX World!")
else
print("Hello TeXLua World!")
end
如何定义is_luatex
?我的第一个想法是解析,arg[0]
但我确实需要一个非常强大的解决方案,涵盖最广泛的情况(99.999%)。
答案1
答案2
目前没有记录在案的直接标志来区分 LuaTeX 和 TeXLua,但我们可以利用 LuaTeX 定义命令序列而 TeXLua 没有定义的事实。定义的命令序列数量可通过以下方式获得status.cs_count
:
local is_luatex = status.cs_count > 0
if is_luatex then
tex.sprint("Hello LuaTeX World!")
else
print("Hello TeXLua World!")
end