检查 LuaTeX 是否正在运行

检查 LuaTeX 是否正在运行

我想检查我的 tex 文档是否用 LuaTeX(或任何其他 Lua TeX 编译器)编译。

TeXbook 中的简单方法是检查\directlua\@empty,例如

\ifx\directlua\@empty{\errmessage{...}}\fi

如果我运行luatex,一切都很好。如果我运行tex,编译会失败,并显示\errmessage-- 很好。但如果我运行latex,不会出现我的错误,但编译会因为未定义的\directlua环境而失败。哪个\ifx语句适用于所有 TeX 方言?为什么不适用于普通 TeX 的那个,即上面的那个?提前致谢 :)

更新

解决这个问题很简单,但我不知道它是否会在将来造成任何问题。

\ifx\directlua\pgf@gd@undefined@donotuse{%
  \errmessage{an error}\fi

与 TeX 和 LaTeX 配合良好。有没有更优雅且不需要任何额外软件包的方法?否则我会将此作为答案发布。

答案1

\@empty是在 LaTeX 中定义的,所以你的测试失败了。你为什么不使用ifluatex.sty?它也可以与 plainTeX 一起使用,

答案2

这是一个更直接的答案,使用国际纺织展览会(参见第 3 节):

\usepackage{iftex}
\ifLuaTeX
% ⟨material for LuaTEX⟩
\else
% ⟨material not for LuaTEX⟩
\fi

答案3

怎么样iftex? 它在普通情况下运行良好,并为您提供一些其他有用的宏。

它也包含在 TeXLive 中。

答案4

关于什么

\ifcsname directlua\endcsname
  Yes, I am running LuaTeX
 \else
 Oh no, I give up
\fi

我猜现在每个人都在使用 etex \ifcsname... 肯定有一个缺点。但是是哪个呢?

相关内容