ifetex всегда правда

ifetex всегда правда

Я работаю над преамбулой документа, которая позволяет мне компилировать документ с 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

Извините за путаницу :-)

Связанный контент