Ist es möglich, in Plain TeX Anweisungen basierend auf der Übersetzungs-Engine bedingt auszuführen?

Ist es möglich, in Plain TeX Anweisungen basierend auf der Übersetzungs-Engine bedingt auszuführen?

Beachten Sie, dass es sich bei dieser Frage um Plain TeX handelt.nichtLaTeX. Betrachten Sie das folgende Beispiel.

\pdfpagewidth 8.5 in
\pdfpageheight 11 in

foobar
\bye

Unter pdftexfunktioniert das einwandfrei. Allerdings wird beim Versuch, texes auszuführen, der folgende schwerwiegende Fehler ausgegeben.

! Undefined control sequence.
l.1 \pdfpagewidth
                  8.5 in

Ist es möglich, mein Dokument so zu schreiben, dass diese beiden Zeilen nicht ausgeführt werden, wenn es unter texstatt ausgeführt wird pdftex?

Antwort1

Die texausführbare Datei führt das „Original-Knuth-TeX“ aus, wobei es \pdfpagewidthsich um ein pdftexprimitives Programm handelt.

Das Übliche

\begingroup\expandafter\expandafter\expandafter\endgroup
  \expandafter\ifx\csname pdfpagewidth\endcsname\relax
  \else
    \pdfpagewidth 8.5 truein
    \pdfpageheight 11 truein
  \fi

wird reichen. Danach \pdfpagewidthund \pdfpageheightwerden nicht definiert, wenn sie nicht von Anfang an definiert wurden.

Beachten Sie, dass es einige LaTeX-Pakete gibt, die auch mit Plain TeX verwendet werden können. Von diesen könnten Sie Folgendes in Betracht ziehen ifetex, da eine Besonderheit von Knuth TeX darin besteht, dass es keine e-TeX-Erweiterungen gibt. Sie könnten also Folgendes tun:

\input ifetex.sty

und TU

\ifetex
  <code for non Knuth TeX>
\else
  <code for Knuth TeX>
\fi

Die <code for non Knuth TeX>Unterscheidung von PDF- und DVI-Ausgabe erfolgt durch die Verwendung

\input ifpdf.sty

und die bereitgestellte \ifpdfBedingung. Es gibt auch ifxetex.styund ifluatex.sty; alle können im Plain-Format mit geladen werden \input if<...>.sty.

Es gibt auch das „All-in-One“-Paket iftex.sty, dessen Implementierung jedoch in Bezug auf ifpdf, ifxetexund sehr einfach ist ifluatex. Es bietet keine Möglichkeit zum Überprüfen von e-TeX-Erweiterungen.

verwandte Informationen