
この質問はPlain TeXに関するものであることに注意してください。ないLaTeX。次の例を考えてみましょう。
\pdfpagewidth 8.5 in
\pdfpageheight 11 in
foobar
\bye
ではpdftex
、これは問題なく動作します。ただし、これを実行しようとすると、次の厄介なエラーが発生しますtex
。
! Undefined control sequence.
l.1 \pdfpagewidth
8.5 in
tex
ではなく で実行されている場合に、これらの 2 行が実行されないようにドキュメントを作成することは可能ですかpdftex
?
答え1
実行可能ファイルtex
は「オリジナルの Knuth TeX」を実行しますが、 はプリミティブ\pdfpagewidth
ですpdftex
。
いつもの
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname pdfpagewidth\endcsname\relax
\else
\pdfpagewidth 8.5 truein
\pdfpageheight 11 truein
\fi
それで十分です。その後は、\pdfpagewidth
最初\pdfpageheight
から定義されていなければ定義されません。
Plain TeXでも使用できるLaTeXパッケージがいくつかあることに注意してください。Knuth ifetex
TeXの特徴はe-TeX拡張機能を持たないことです。そのため、次のようにすることができます。
\input ifetex.sty
そして、やります
\ifetex
<code for non Knuth TeX>
\else
<code for Knuth TeX>
\fi
PDFとDVI出力を区別する<code for non Knuth TeX>
には、
\input ifpdf.sty
および提供された条件文。および\ifpdf
もあります。これらはすべて を使用して Plain に読み込むことができます。ifxetex.sty
ifluatex.sty
\input if<...>.sty
「オールインワン」パッケージもありますが、その実装は、、およびiftex.sty
に関して非常に基本的なものです。e -TeX 拡張機能をチェックする方法は提供されていません。ifpdf
ifxetex
ifluatex