我可以使用 \def 重新定义变量本身吗?

我可以使用 \def 重新定义变量本身吗?

因此,我在 TikZ 图像中定义了几个变量(特别是某个点的 x 值和 y 值),并且我希望能够通过为每个变量添加一些值来重新定义它们。但我遇到了两个问题:

  1. LaTeX 不想对变量进行数学运算。因此\def \a{1+1}实际上将 \a 设置为“1+1”而不是 2。

  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}

以上输出02

更好的方法是使用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}

相关内容