
Estou trabalhando em um preâmbulo de documento que me permite compilar um documento com pdlatex
e com xelatex
. Descobri que a \ifetex
condição para verificar se o documento está passando pelo e-tex é sempre verdadeira, independente do motor que utilizo.
Abaixo está um exemplo mínimo. A eTeX used ...
parte está em todos os documentos de resultados independentes do mecanismo que eu uso: pdflatex
, x elatex
e latex
. A parte "PDF usado..." está apenas no documento que passou pelo pdflatex
.
Alguma ideia? Existe um erro geral em meus pensamentos?
A documentação do \ifetex
diz que simplesmente testa o \eTeXversion
. Quem define isso?
Estou em uma instalação do Fedora 19 e também tentei em um Fedora 20 sem o material etex instalado - mesmo comportamento. Alguém pode testar isso em uma instalação diferente, ou seja, se o comportamento é o mesmo?
Existe uma 'prática recomendada' para fazer a seleção do mecanismo no preâmbulo de um documento se eu quiser (precisar) poder executar o documento por meio de qualquer um dos mecanismos principais? Então, pretendo construir uma cadeia 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}
Responder1
As extensões do e-TeX foram finalizadas em 1999 e estão disponíveis nos motores comuns: pdfTeX, LuaTeX e XeTeX. Com um sistema TeX recente (digamos qualquer coisa lançada nos últimos 5 a 8 anos), as extensões são habilitadas nos arquivos no formato LaTeX como padrão. O único caso 'comum' em que as extensões não estão habilitadas é ao usar o TeX 'clássico':
tex <filename>
já que não fazem parte do projeto original de Knuth e tex
sempre invocam isso.
É bem possível construir um formato sem as extensões ou executá-lo em um sistema TeX mais antigo que exija que elas sejam solicitadas explicitamente ( elatex
,etc.) ou não os possui (alguns sistemas proprietários, por exemplo).
As extensões em si ainda são mantidas como um patch contra o TeX de Knuth, então elas têm uma versão independente do motor (pdfTeX,etc.) em uso. Todos os sistemas que habilitam as primitivas do e-TeX incluem a string de versão para as extensões do e-TeX. Portanto, esta primitiva é um bom teste para a disponibilidade de extensões. (Nota: com LuaTeX é possível habilitar as extensões sem \eTeXversion
, mas é extremamente improvável na prática e não vale a pena se preocupar.)
Responder2
Ok, a solução é simples.
\usepackage{ifetex} -> \usepackage{if**x**etex}
\ifetex -> \ifxetex
Desculpe pela confusão :-)