
Я работаю над преамбулой документа, которая позволяет мне компилировать документ с pdlatex
и с xelatex
. Я обнаружил, что \ifetex
условие проверки того, проходит ли документ через e-tex, всегда истинно, независимо от используемого мной движка.
Ниже приведен минимальный пример. eTeX used ...
Часть есть во всех результирующих документах, независимо от используемого мной движка: pdflatex
, x elatex
, и latex
. Часть "PDF used..." есть только в документе, который прошел через 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>
поскольку они не являются частью оригинального замысла Кнута и tex
всегда ссылаются на него.
Вполне возможно создать формат без расширений или использовать более старую систему TeX, которая либо требует их явного запроса ( elatex
,и т. д.) или не имеет их вообще (например, некоторые фирменные системы).
Сами расширения по-прежнему поддерживаются как патч для TeX Кнута, поэтому у них есть версия, независимая от движка (pdfTeX,и т. д.) в использовании. Все системы, которые включают примитивы e-TeX, включают строку версии для расширений e-TeX. Таким образом, этот примитив является хорошим тестом на доступность расширений. (Примечание: с LuaTeX можно включить расширения без \eTeXversion
, но на практике это крайне маловероятно и не стоит об этом беспокоиться.)
решение2
Хорошо, решение простое.
\usepackage{ifetex} -> \usepackage{if**x**etex}
\ifetex -> \ifxetex
Извините за путаницу :-)