更新变量

更新变量

我使用 定义一个变量\def\x{0}。如何通过加 1 来更新此变量?

\def\x{\x+1}不起作用(它只是陷入无限循环)

或者我可以通过其他方式定义变量来实现这一点吗?

答案1

最好使用 TeX 的寄存器来管理整数变量。你可以说

\newcount\x

然后在需要数字的所有情况下使用它。推进计数器是通过

\advance\x by 1

或任何其他整数。为了打印此计数器的值,您必须说\number\x

但是,这取决于你想用这些“变量”做什么。另一种方法可能是

\def\newvariable#1{\gdef#1{0}}
\def\addtovariable#1#2{\xdef#1{\number\numexpr#1+#2\relax}}
\def\incrvariable#1{\addtovariable#1{1}}

以便

\newvariable\x

将定义\x为扩展为 0;

\incrvariable\x

它会扩展为 1;接下来

\addtovariable\x{41}

它将扩大到 42。我并不推荐这种方式。

答案2

没有 PSTricks。

在此处输入图片描述

\documentclass[preview,border=12pt,varwidth]{standalone}
\usepackage[nomessages]{fp}
% #1: (optional) the number of digits after decimal point, the default is zero to make an integer
% #2: (mandatory) the name of variable to create
% #3: (mandatory) mathematics expression in infix form
\newcommand\const[3][0]{%
    \edef\temporary{round(#3}%
    \expandafter\FPeval\csname#2\expandafter\endcsname
        \expandafter{\temporary:#1)}%
}

\const{x}{10}
\const{y}{x^2}

\begin{document}
\x% print 10

\const{x}{x+20}% add 20 to x

\x% print 30

\y% print 100, not 900!
\end{document}

应用(寻找 cos(x) 的不动点)

在此处输入图片描述

\documentclass[preview,border=12pt,varwidth]{standalone}
\usepackage[nomessages]{fp}
% #1: (optional) the number of digits after decimal point, the default is zero to make an integer
% #2: (mandatory) the name of variable to create
% #3: (mandatory) mathematics expression in infix form
\newcommand\const[3][0]{%
    \edef\temporary{round(#3}%
    \expandafter\FPeval\csname#2\expandafter\endcsname
        \expandafter{\temporary:#1)}\ignorespaces
}

\def\f(#1){cos(#1)}

\const[5]{x}{0}

\begin{document}
\newcount\i
\i=1
\loop
    \unless\ifnum\i>35
        \advance \i by 1
        \const[5]{x}{\f(x)}
        \x
        \par
\repeat
\end{document}

相关内容