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 \setcounter
und 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 \def
als 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}
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}