ifetex sempre verdadeiro

ifetex sempre verdadeiro

Estou trabalhando em um preâmbulo de documento que me permite compilar um documento com pdlatexe com xelatex. Descobri que a \ifetexcondiçã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 elatexe 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 \ifetexdiz 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 texsempre 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 :-)

informação relacionada