
파일의 줄을 조판하려고 합니다:
\openin0=MyFile
\loop
\read0to\linein
\linein
\ifeof0 % Fails here
\repeat
분명히, 나는 테스트하고 싶다~ 아니다\ifeof, 하지만 TeXBook의 Ch 20에는 부울 부정 연산자가 표시되지 않습니다. 일반 TeX으로 이 작업을 수행할 수 있나요?
답변1
일반 TeX가 무엇을 의미하는지에 따라 약간 다릅니다.
cmhughes가 방금 주석에서 언급했듯이 e-TeX unless
명령을 사용하여 표현식을 부정하거나 LaTeX 정의를 복사하여 \loop
다음을 수행할 수 있습니다.
\openin0=MyFile
\loop
\read0to\linein
\linein
\ifeof0 % Fails here
\else
\repeat
확장되지 않은 TeX로 작업할 수 있도록 말이죠.
평원 \loop
은
\def\loop#1\repeat{\def\body{#1}\iterate}
\def\iterate{\body \let\next\iterate \else\let\next\relax\fi \next}
\let\repeat=\fi
LaTeX는 다음 정의를 사용하므로 \else
작동합니다.
\def\loop#1\repeat{\def\iterate{#1\relax\expandafter\iterate\fi}%
\iterate \let\iterate\relax}
\let\repeat\fi
답변2
이론을 좋아한다면 David Kastrup의 \ifnot
매크로는 다음과 같습니다.
\def\ifnot#1{#1\else\expandafter\expandafter\fi\iffalse\iftrue\fi}
이것은 다음과 같이 사용될 수 있습니다.
\loop ... \ifnot{\ifeof\stream} ... \repeat