检测使用哪种 TeX 引擎

检测使用哪种 TeX 引擎

如何在 TeX 文件中检测哪个引擎 ( pdftex/ xetex/ luatex) 用于编译文件?是否有提供此功能的 LaTeX 包?

答案1

就在这里 -iftex.还有ifxetexifluatex包。

这些包内部依赖于检查引擎特定的原语是否存在,例如\XeTeXversion

答案2

软件包 ifxetex、ifluatex、ifpdf。您还可以查看 hyperref 等,以检查它如何检测应使用哪个驱动程序。

答案3

我正在使用以下代码:

%% ================================================================== 
%% 
%% Macros specific for latex / pdflatex / xetex compilers 
%% 
\usepackage{ifpdf,ifxetex,ifluatex} 
\ifpdf
    \typeout{^^J *** PDF mode *** } 
\else
    \typeout{^^J *** DVI mode ***} 
\fi 
\ifluatex
    \typeout{ *** LuaLaTeX *** ^^J}
    % patch \typein
    % see http://tex.stackexchange.com/questions/12435/incompatibilities-between-lualatex-and-typein
    \makeatletter
    \def\@xtypein[#1]#2{%
        \typeout{#2}%
        \@tempcnta\endlinechar
        \endlinechar\m@ne
        \read\@inputcheck to#1%
        \endlinechar\@tempcnta
        \@typein}
    \makeatother 
    % LuaLaTeX specific code
\else\ifxetex
    \typeout{ *** XeLaTeX *** ^^J} 
    % XeLaTeX specific code
\else
    \typeout{ *** LaTeX *** ^^J} 
\fi\fi 
\typein{} % pause to watch result
%% =====================================================================

LuaLaTeX 可以在 DVI 和 PDF 模式下运行。

答案4

在足够新的版本中,expl3 内置于 LaTeX 格式中,因此\sys_if_engine_pdftex:TF默认情况下可以使用诸如等命令:

interface3.pdf 片段

\ifTUTeX然而,据我所知,没有等效的方法可以检查引擎是否支持 Unicode 标记。

相关内容