
Tenga en cuenta que esta pregunta es sobre Plain TeX,noLátex. Considere el siguiente ejemplo.
\pdfpagewidth 8.5 in
\pdfpageheight 11 in
foobar
\bye
En pdftex
, esto funcionará bien. Sin embargo, esto arrojará el siguiente error desagradable si intento ejecutarlo tex
.
! Undefined control sequence.
l.1 \pdfpagewidth
8.5 in
¿Es posible escribir mi documento de modo que no ejecute esas dos líneas si se ejecuta en tex
lugar de pdftex
?
Respuesta1
El tex
ejecutable ejecuta el “Knuth TeX original”, mientras que \pdfpagewidth
es un pdftex
primitivo.
Lo normal
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname pdfpagewidth\endcsname\relax
\else
\pdfpagewidth 8.5 truein
\pdfpageheight 11 truein
\fi
servirá. Después de él, \pdfpagewidth
y \pdfpageheight
no se definirán si no fueran para empezar.
Tenga en cuenta que existen algunos paquetes de LaTeX que también se pueden utilizar con Plain TeX. De estos podrías considerar ifetex
, porque una característica distintiva de Knuth TeX es no tener extensiones e-TeX. Entonces podrías hacer
\input ifetex.sty
y hacer
\ifetex
<code for non Knuth TeX>
\else
<code for Knuth TeX>
\fi
Puede <code for non Knuth TeX>
distinguirse de la salida PDF y DVI mediante el uso
\input ifpdf.sty
y el \ifpdf
condicional proporcionado. También hay ifxetex.sty
y ifluatex.sty
; todos ellos se pueden cargar en Plain con \input if<...>.sty
.
También existe el paquete “todo en uno” iftex.sty
, pero su implementación es realmente básica con respecto a ifpdf
, ifxetex
y ifluatex
. No proporciona ninguna forma de comprobar las extensiones de e-TeX.