Plain TeX 내에서 번역 엔진을 기반으로 조건부로 명령문을 실행할 수 있습니까?

Plain TeX 내에서 번역 엔진을 기반으로 조건부로 명령문을 실행할 수 있습니까?

이 질문은 Plain TeX에 관한 것입니다.~ 아니다유액. 다음 예를 고려하십시오.

\pdfpagewidth 8.5 in
\pdfpageheight 11 in

foobar
\bye

아래에서는 pdftex정상적으로 작동합니다. 그러나 실행하려고 하면 다음과 같은 불쾌한 오류가 발생합니다 tex.

! Undefined control sequence.
l.1 \pdfpagewidth
                  8.5 in

tex가 아닌 아래에서 실행되는 경우 이 두 줄을 실행하지 않도록 내 문서를 작성할 수 있습니까 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 TeX의 독특한 특징은 e-TeX 확장 기능 이 ifetex없다는 점입니다. 그래서 당신은 할 수 있습니다

\input ifetex.sty

그리고 할

\ifetex
  <code for non Knuth TeX>
\else
  <code for Knuth TeX>
\fi

<code for non Knuth TeX>다음을 사용하여 PDF 및 DVI 출력과 구별할 수 있습니다 .

\input ifpdf.sty

그리고 제공된 \ifpdf조건부. 또한 ifxetex.styifluatex.sty; 이들 모두는 \input if<...>.sty.

"올인원" 패키지도 있지만 그 구현은 , 및 iftex.sty와 관련하여 매우 기본적입니다 . e-TeX 확장을 확인하는 방법은 제공하지 않습니다.ifpdfifxetexifluatex

관련 정보