Convertir cadenas en recuentos

Convertir cadenas en recuentos

Estoy leyendo un número (como texto) del archivo auxiliar y quiero hacer una prueba numérica ( \ifnum) en él. Puedo hacerlo usando \setcountery \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 \relaxpara forzar la expresión hasta su finalización.

Respuesta1

Como indiqué en mi comentario, puedes prescindir de los contadores. Solo usa el \defcomo 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}

ingrese la descripción de la imagen aquí


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}

información relacionada