因此,我在 TikZ 图像中定义了几个变量(特别是某个点的 x 值和 y 值),并且我希望能够通过为每个变量添加一些值来重新定义它们。但我遇到了两个问题:
LaTeX 不想对变量进行数学运算。因此
\def \a{1+1}
实际上将 \a 设置为“1+1”而不是 2。重新定义变量本身会导致 LaTeX 陷入(我认为是)递归错误。
\def \a{\a + 1}
导致错误“TeX 容量超出,抱歉 [输入堆栈大小=5000]。”
我理想情况下想这样做:
\def \a{0}
% lots of code here
\def \a{\a + 2}
% after this line, I want \a to equal 2, not "0 + 2"
有没有办法用 pgf 或其他东西来获得这个结果?
答案1
您可以使用以下方式执行基本数值表达式\numexpr<expr>
:
\documentclass{article}
\begin{document}
\def\aaa{0}
\aaa
% lots of code here
\edef\aaa{\number\numexpr\aaa + 2}
\aaa
% after this line, I want \a to equal 2, not "0 + 2"
\end{document}
以上输出0
和2
。
更好的方法是使用xfp
;可以通过 进行基本整数计算\inteval
,否则您可以使用\fpeval
:
\documentclass{article}
\usepackage{xfp}
\begin{document}
\def\aaa{0}
\aaa
% lots of code here
\edef\aaa{\inteval{\aaa + 2}}
\aaa
% after this line, I want \a to equal 2, not "0 + 2"
\end{document}