ifetex 始终为真

ifetex 始终为真

pdlatex我正在编写一个文档序言,它允许我使用和编译文档xelatex。我发现\ifetex检查文档是否正在通过 e-tex 的条件始终为真,与我使用的引擎无关。

下面是一个最小示例。该eTeX used ...部分存在于我使用的引擎之外的所有结果文档中:pdflatex、xelatexlatex。“PDF 使用...”部分仅存在于运行的文档中pdflatex

有什么想法吗?我的想法是否存在一般性错误?

的文档\ifetex说它只是测试\eTeXversion。谁设置的?

我在 Fedora 19 上安装,也尝试在 Fedora 20 上安装,但根本没有安装 etex 东西——结果相同。有人可以在不同的安装上测试一下吗,即结果是否相同?

如果我希望(需要)能够通过任何主要引擎运行文档,那么在文档序言中进行引擎选择是否有“最佳实践”?因此,我的意思是构建一个 if(pdf)-elsif(etex)-elsif(latex)-fi 链。

\documentclass{article}

\usepackage{ifpdf}
\usepackage{ifetex}

\begin{document}

Hello World

\ifpdf
    PDF used
\fi

\ifetex
    eTeX used; version is \the\eTeXversion \the\eTeXversion
\fi

\end{document}

答案1

e-TeX 扩展于 1999 年完成,可在常用引擎中使用:pdfTeX、LuaTeX 和 XeTeX。使用较新的 TeX 系统(比如说最近 5-8 年发布的任何系统),扩展在 LaTeX 格式文件中作为标准启用。唯一不启用扩展的“常见”情况是使用“经典”TeX 时:

tex <filename>

因为它们不是 Knuth 原始设计的一部分并且tex总是调用这一点。

完全可以构建一个没有扩展的格式,或者运行一个较旧的 TeX 系统,该系统要么需要明确要求它们(elatexETC。) 或者根本没有它们(例如某些专有系统)。

扩展本身仍然作为 Knuth TeX 的补丁进行维护,因此它们有一个独立于引擎的版本(pdfTeX,ETC。) 正在使用中。所有启用 e-TeX 原语的系统都包含 e-TeX 扩展的版本字符串。因此,此原语是测试扩展是否可用的良好方法。(注意:使用 LuaTeX 可以不使用 来启用扩展\eTeXversion,但实际上这种可能性极小,因此并不值得担心。)

答案2

好吧,解决办法很简单。

\usepackage{ifetex} -> \usepackage{if**x**etex}

\ifetex -> \ifxetex

对困惑感到抱歉 :-)

相关内容