문자열을 개수로 변환

문자열을 개수로 변환

Aux 파일에서 숫자(텍스트)를 읽고 있는데 숫자 테스트( )를 수행하고 싶습니다 \ifnum. \setcounterand 를 사용하여 할 수 있지만 \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}

관련 정보