
Estoy trabajando en un preámbulo de documento que me permite compilar un documento con pdlatex
y con xelatex
. Descubrí que la \ifetex
condición para comprobar si el documento pasa por e-tex siempre es cierta, independientemente del motor que utilice.
A continuación se muestra un ejemplo mínimo. La eTeX used ...
pieza está en todos los documentos de resultados independientemente del motor que uso: pdflatex
, x elatex
y latex
. La parte "PDF usado..." solo está en el documento que se publicó en pdflatex
.
¿Algunas ideas? ¿Hay un error general en mis pensamientos?
La documentación de \ifetex
dice que simplemente prueba el \eTeXversion
. ¿Quién establece esto?
Estoy en una instalación de Fedora 19 y también lo probé en un Fedora 20 sin el material etex instalado: el mismo comportamiento. ¿Alguien puede probar esto en una instalación diferente, es decir, si el comportamiento es el mismo?
¿Existe una "mejor práctica" para realizar la selección del motor en el preámbulo de un documento si quiero (necesito) poder ejecutar el documento a través de cualquiera de los motores principales? Entonces me refiero a construir una cadena 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}
Respuesta1
Las extensiones e-TeX se finalizaron en 1999 y están disponibles en los motores comunes: pdfTeX, LuaTeX y XeTeX. Con un sistema TeX reciente (digamos cualquier lanzado en los últimos 5 a 8 años), las extensiones están habilitadas en los archivos de formato LaTeX como estándar. El único caso "común" en el que las extensiones no están habilitadas es cuando se utiliza TeX "clásico":
tex <filename>
ya que no son parte del diseño original de Knuth y tex
siempre lo invoca.
Es muy posible crear un formato sin las extensiones o ejecutarlo en un sistema TeX más antiguo que requiera que se soliciten explícitamente ( elatex
,etc.) o no los tiene (algunos sistemas propietarios, por ejemplo).
Las extensiones en sí todavía se mantienen como un parche contra TeX de Knuth, por lo que tienen una versión independiente del motor (pdfTeX,etc.) en uso. Todos los sistemas que habilitan las primitivas de e-TeX incluyen la cadena de versión para las extensiones de e-TeX. Por tanto, esta primitiva es una buena prueba para saber si las extensiones están disponibles. (Nota: con LuaTeX es posible habilitar las extensiones sin \eTeXversion
, pero es extremadamente improbable en la práctica y no vale la pena preocuparse).
Respuesta2
Bien, la solución es simple.
\usepackage{ifetex} -> \usepackage{if**x**etex}
\ifetex -> \ifxetex
Perdón por la confusion :-)