Aux 파일에서 숫자(텍스트)를 읽고 있는데 숫자 테스트( )를 수행하고 싶습니다 \ifnum
. \setcounter
and 를 사용하여 할 수 있지만 \value
형편없는 테스트를 수행하기 위해 카운터를 만들고 싶지는 않습니다. 더 간단한 방법이 있나요?
pgfmath를 사용하는 것은 상상 이상으로 간단하지 않습니다.
\documentclass{article}
\newcount\test
\newcounter{test}
\begin{document}
\def\temp{1}
\setcounter{test}{\temp}
\ifnum\value{test}>0 Yea!
\else Boo!
\fi
\test=\temp
\ifnum\test>0 Yea!
\else Boo!
\fi
\end{document}
돌이켜보면 나의 실수는 명백하다. 와 같은 표현으로는
\test=1
줄 끝에서는 숫자 추가와 "1"을 카운트로 변환하는 작업이 모두 종료됩니다. 하지만 함께
\test=\temp
줄 끝은 매크로 이름을 종료하는 데 사용됩니다. 나는 이것의 최종 확장이 실제로
\test=1 Boo!
합법적이지만 너무 늦었습니다. 가장 간단한 솔루션
\test=\temp\relax
\relax
표현식을 강제로 완료하는 데 사용됩니다 .
답변1
내 의견에 언급했듯이 카운터를 사용하지 않아도 됩니다. 그냥 \def
인수로 사용하십시오. 더 복잡한 계산이 필요한 경우 \numexpr
두 번째 예와 같이 를 사용할 수 있습니다.
\documentclass{article}
\begin{document}
\def\temp{1}
\def\X{2}
\ifnum\temp>0 Yea!
\else Boo!
\fi
\ifnum\numexpr\temp-\X\relax>0 Yea!
\else Boo!
\fi
\end{document}
토큰과 카운터 혼합의 어려움에 대한 OP의 의견에 후속 조치를 취하기 위해 해당 혼합과 함께 작동하는 이 MWE를 게시하겠습니다.
\documentclass{article}
\newcounter{mycount}
\setcounter{mycount}{0}
\begin{document}
\def\temp{1}
\ifnum\value{mycount}>\temp Yea!
\else Boo!
\fi
\end{document}