Konvertieren von Zeichenfolgen in Zählwerte

Konvertieren von Zeichenfolgen in Zählwerte

Ich lese eine Zahl (als Text) aus der AUX-Datei ein und möchte einen numerischen Test ( \ifnum) damit durchführen. Ich kann dies mit \setcounterund tun \value, aber ich möchte wirklich keinen Zähler erstellen, nur um einen lausigen Test durchzuführen. Gibt es einen einfacheren Weg?

Die Verwendung von pgfmath ist keineswegs einfacher.

\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}

Im Nachhinein ist mein Fehler offensichtlich. In einem Ausdruck wie

\test=1

das Zeilenende beendet sowohl das Addieren von Ziffern als auch die Konvertierung von "1" in eine Zählung. Aber mit

\test=\temp

das Zeilenende wird verbraucht, um den Makronamen zu beenden. Ich vermute, dass die letzte Erweiterung davon tatsächlich

\test=1 Boo!

Das ist zwar legal, aber zu spät. Die einfachste Lösung

\test=\temp\relax

wird verwendet \relax, um die Vervollständigung des Ausdrucks zu erzwingen.

Antwort1

Wie ich in meinem Kommentar angedeutet habe, können Sie auf die Zähler verzichten. Verwenden Sie einfach das \defals Argument. Wenn Sie eine komplexere Berechnung benötigen, können Sie verwenden \numexpr, wie in meinem 2. Beispiel.

\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}

Bildbeschreibung hier eingeben


Um auf den Kommentar des OP zur Schwierigkeit beim Mischen von Token und Zählern einzugehen, werde ich dieses MWE veröffentlichen, das mit dieser Mischung funktioniert:

\documentclass{article}
\newcounter{mycount}
\setcounter{mycount}{0}
\begin{document}
\def\temp{1}
\ifnum\value{mycount}>\temp Yea!
\else Boo!
\fi
\end{document}

verwandte Informationen