ifetex immer wahr

ifetex immer wahr

Ich arbeite an einer Dokumentpräambel, die es mir ermöglicht, ein Dokument mit pdlatexund mit zu kompilieren xelatex. Ich habe festgestellt, dass die \ifetexBedingung zur Überprüfung, ob das Dokument durch E-Tex geht, immer erfüllt ist, unabhängig von der von mir verwendeten Engine.

Unten sehen Sie ein Minimalbeispiel. Der eTeX used ...Teil befindet sich in allen Ergebnisdokumenten, unabhängig von der Engine, die ich verwende: pdflatex, x elatexund latex. Der Teil „Verwendetes PDF …“ befindet sich nur in dem Dokument, das durch lief pdflatex.

Irgendwelche Ideen? Liegt in meinen Gedanken ein allgemeiner Fehler vor?

In der Dokumentation von \ifetexsteht, dass es lediglich auf das prüft \eTeXversion. Wer legt das fest?

Ich verwende eine Fedora 19-Installation und habe es auch auf Fedora 20 ohne die installierten etex-Sachen probiert – dasselbe Verhalten. Kann das jemand auf einer anderen Installation testen, also ob das Verhalten dasselbe ist?

Gibt es eine bewährte Methode, um die Engine-Auswahl in einer Dokumentpräambel vorzunehmen, wenn ich das Dokument durch eine der Haupt-Engines laufen lassen möchte (muss)? Ich meine also, eine if(pdf)-elsif(etex)-elsif(latex)-fi-Kette zu konstruieren.

\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}

Antwort1

Die e-TeX-Erweiterungen wurden 1999 fertiggestellt und sind in den gängigen Engines verfügbar: pdfTeX, LuaTeX und XeTeX. Bei einem relativ neuen TeX-System (also bei allem, was in den letzten 5-8 Jahren veröffentlicht wurde) sind die Erweiterungen standardmäßig in den LaTeX-Formatdateien aktiviert. Der einzige „übliche“ Fall, in dem die Erweiterungen nicht aktiviert sind, ist die Verwendung von „klassischem“ TeX:

tex <filename>

da sie nicht Teil von Knuths ursprünglichem Entwurf sind und texdiesen immer hervorrufen.

Es ist durchaus möglich, ein Format ohne die Erweiterungen zu erstellen oder auf ein älteres TeX-System zu stoßen, das entweder eine explizite Anforderung der Erweiterungen erfordert ( elatex,usw.) oder verfügt überhaupt nicht darüber (beispielsweise einige proprietäre Systeme).

Die Erweiterungen selbst werden weiterhin als Patch gegen Knuths TeX gepflegt, so dass sie eine von der Engine unabhängige Version haben (pdfTeX,usw.) verwendet. Alle Systeme, die die e-TeX-Grundelemente aktivieren, enthalten die Versionszeichenfolge für die e-TeX-Erweiterungen. Daher ist dieses Grundelement ein guter Test dafür, ob die Erweiterungen verfügbar sind. (Hinweis: Bei LuaTeX ist es möglich, die Erweiterungen ohne zu aktivieren \eTeXversion, aber in der Praxis äußerst unwahrscheinlich und es lohnt sich nicht wirklich, sich darüber Gedanken zu machen.)

Antwort2

Ok, die Lösung ist einfach.

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

\ifetex -> \ifxetex

Entschuldigen Sie die Verwirrung :-)

verwandte Informationen