pdlatex
我正在编写一个文档序言,它允许我使用和编译文档xelatex
。我发现\ifetex
检查文档是否正在通过 e-tex 的条件始终为真,与我使用的引擎无关。
下面是一个最小示例。该eTeX used ...
部分存在于我使用的引擎之外的所有结果文档中:pdflatex
、xelatex
和latex
。“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 系统,该系统要么需要明确要求它们(elatex
,ETC。) 或者根本没有它们(例如某些专有系统)。
扩展本身仍然作为 Knuth TeX 的补丁进行维护,因此它们有一个独立于引擎的版本(pdfTeX,ETC。) 正在使用中。所有启用 e-TeX 原语的系统都包含 e-TeX 扩展的版本字符串。因此,此原语是测试扩展是否可用的良好方法。(注意:使用 LuaTeX 可以不使用 来启用扩展\eTeXversion
,但实际上这种可能性极小,因此并不值得担心。)
答案2
好吧,解决办法很简单。
\usepackage{ifetex} -> \usepackage{if**x**etex}
\ifetex -> \ifxetex
对困惑感到抱歉 :-)