ifetex は常に真

ifetex は常に真

pdlatex私は、 および を使用してドキュメントをコンパイルできるドキュメント プリアンブルに取り組んでいますxelatex\ifetexドキュメントが e-tex を通過しているかどうかを確認する条件は、使用するエンジンに関係なく常に true であることがわかりました。

以下は最小限の例です。eTeX used ...部分は、使用するエンジンとは関係なく、すべての結果ドキュメントに存在します: pdflatex、 x elatex、およびlatex。「PDF used...」部分は、 を実行したドキュメントにのみ存在しますpdflatex

何かアイデアはありますか? 私の考えに全般的な間違いがあるのでしょうか?

のドキュメント\ifetexには、 を単にテストすると書かれています\eTeXversion。誰がこれを設定するのでしょうか?

私は Fedora 19 をインストールしていますが、etex 関連のものをまったくインストールしていない Fedora 20 でも試してみましたが、動作は同じでした。別のインストールでこれをテストして、動作が同じかどうか確認できる人はいますか?

ドキュメントを主要なエンジンのいずれかで実行できるようにしたい(必要がある)場合、ドキュメントのプリアンブルでエンジンの選択を行う「ベストプラクティス」はありますか? つまり、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}

答え1

e-TeX 拡張機能は 1999 年に完成し、pdfTeX、LuaTeX、XeTeX などの一般的なエンジンで利用できます。最近の TeX システム (過去 5 ~ 8 年以内にリリースされたもの) では、拡張機能は LaTeX 形式のファイルで標準で有効になっています。拡張機能が有効になっていない唯一の「一般的な」ケースは、「従来の」TeX を使用する場合です。

tex <filename>

これらは Knuth のオリジナル設計の一部ではなく、tex常にそれを呼び出すためです。

拡張子なしでフォーマットを構築することも、拡張子を明示的に要求する必要がある古いTeXシステムを実行することも十分に可能です(elatex) またはまったく存在しない (たとえば、一部の独自システム) 場合があります。

拡張機能自体はKnuthのTeXに対するパッチとしてまだ維持されているため、エンジンから独立したバージョンがあります(pdfTeX、) が使用されていることを確認してください。e-TeX プリミティブを有効にするすべてのシステムには、e-TeX 拡張機能のバージョン文字列が含まれています。したがって、このプリミティブは拡張機能が利用可能かどうかを確認するための優れたテストです。(注: LuaTeX では を使用せずに拡張機能を有効にすることは可能です\eTeXversionが、実際にはほとんど発生しないため、心配する必要はありません。)

答え2

はい、解決策は簡単です。

\usepackage{ifetex} -> \usepackage{if**x**etex}

\ifetex -> \ifxetex

混乱させて申し訳ありません :-)

関連情報