Estoy leyendo un número (como texto) del archivo auxiliar y quiero hacer una prueba numérica ( \ifnum
) en él. Puedo hacerlo usando \setcounter
y \value
, pero realmente no quiero crear un contador solo para hacer una pésima prueba. ¿Hay alguna forma más simple?
Usar pgfmath no es ni mucho menos más sencillo.
\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}
En retrospectiva, mi error es obvio. En una expresión como
\test=1
el final de línea termina tanto en la adición de dígitos como en la conversión de "1" a un recuento. Pero con
\test=\temp
el final de línea se consume al terminar el nombre de la macro. Sospecho que la expansión final de esto es en realidad
\test=1 Boo!
lo cual es legal pero demasiado tarde. La solución más sencilla
\test=\temp\relax
utiliza \relax
para forzar la expresión hasta su finalización.
Respuesta1
Como indiqué en mi comentario, puedes prescindir de los contadores. Solo usa el \def
como argumento. Si necesita un cálculo más complejo, puede utilizar \numexpr
, como en mi segundo ejemplo.
\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 continuar con el comentario del OP sobre la dificultad de mezclar tokens y contadores, publicaré este MWE que funciona con esa combinación:
\documentclass{article}
\newcounter{mycount}
\setcounter{mycount}{0}
\begin{document}
\def\temp{1}
\ifnum\value{mycount}>\temp Yea!
\else Boo!
\fi
\end{document}