aux ファイルから数値 (テキストとして) を読み取り、\ifnum
それに対して数値テスト ( ) を実行したいと考えています。\setcounter
とを使用して実行できます\value
が、質の悪いテストを実行するためだけにカウンターを作成したくはありません。もっと簡単な方法はありますか?
pgfmath の使用は、想像を絶するほど簡単ではありません。
\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}
振り返ってみると、私の間違いは明らかです。
\test=1
行末では、数字の追加と「1」のカウントへの変換の両方が終了します。しかし、
\test=\temp
マクロ名の終了には行末が消費されます。この最後の展開は実際には
\test=1 Boo!
これは合法だが遅すぎる。最も簡単な解決策は
\test=\temp\relax
\relax
式を強制的に完了させるために使用します。
答え1
コメントで述べたように、カウンターは不要です。 を引数として使用します。より複雑な計算が必要な場合は、 2 番目の例のように を\def
使用できます。\numexpr
\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}
トークンとカウンターを混ぜることの難しさについての OP のコメントに応えて、その組み合わせで機能する次の MWE を投稿します。
\documentclass{article}
\newcounter{mycount}
\setcounter{mycount}{0}
\begin{document}
\def\temp{1}
\ifnum\value{mycount}>\temp Yea!
\else Boo!
\fi
\end{document}