
Ich arbeite an einer Dokumentpräambel, die es mir ermöglicht, ein Dokument mit pdlatex
und mit zu kompilieren xelatex
. Ich habe festgestellt, dass die \ifetex
Bedingung 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 elatex
und 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 \ifetex
steht, 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 tex
diesen 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 :-)