Estou lendo um número (como texto) do arquivo aux e quero fazer um teste numérico ( \ifnum
) nele. Posso fazer isso usando \setcounter
and \value
, mas realmente não quero criar um contador apenas para fazer um teste ruim. Existe uma maneira mais simples?
Usar o pgfmath não é nem um pouco mais simples.
\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}
Em retrospecto, meu erro é óbvio. Numa expressão como
\test=1
o fim da linha encerra a adição de dígitos e a conversão de "1" em uma contagem. Mas com
\test=\temp
o fim de linha é consumido encerrando o nome da macro. Eu suspeito que a expansão final disso seja na verdade
\test=1 Boo!
o que é legal, mas é tarde demais. A solução mais simples
\test=\temp\relax
usa \relax
para forçar a conclusão da expressão.
Responder1
Como indiquei no meu comentário, você pode dispensar os contadores. Basta usar o \def
como argumento. Se precisar de um cálculo mais complexo, você pode usar \numexpr
, como no meu segundo exemplo.
\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}
Para acompanhar o comentário do OP sobre a dificuldade de misturar tokens e contadores, postarei este MWE que funciona com essa mistura:
\documentclass{article}
\newcounter{mycount}
\setcounter{mycount}{0}
\begin{document}
\def\temp{1}
\ifnum\value{mycount}>\temp Yea!
\else Boo!
\fi
\end{document}