在其他命令中保存命令结果

在其他命令中保存命令结果

我正在通过命令获取一个值。现在我正在临时更改一个已保存的变量,这会更改命令输出。完成一些代码后,如果临时代码之前的值为 1,我想重置存储的值。

我的示例可以简化为:

\newcommand{\storedvalue}{1}
\newcommand{\getstoredvalue}{\storedvalue}
\newcommand{\resetstoredvalue}{Resetting}

Some text

\let\oldvalue\protect\getstoredvalue
\renewcommand{\storedvalue}{0}

Some text which needs the stored value to be changed

\ifnum\numexpr\oldvalue>0%
    \resetstoredvalue{}%
\fi%

当然\getstoredvalue\resetstoredvalue要复杂得多。

我尝试使用\protect。这将返回正确的值,而不是命令。但我得到了Missing number, treated as zero-clause if

我认为这是一个相当简单的问题。但我没有通过谷歌搜索找到解决方案。这也可能是因为我搜索了错误的搜索词。

我希望有人可以帮助我或者发布一个我可以自己找到解决方案的网站。

答案1

你必须使用\edef\oldvalue

\let\oldvalue\storedvalue

因为\let\oldvalue\getoldvalue会复制\getoldvalue,而不是其扩展。

\documentclass{article}

\begin{document}

\newcommand{\storedvalue}{1}
\newcommand{\getstoredvalue}{\storedvalue}
\newcommand{\resetstoredvalue}{Resetting}

Some text

\edef\oldvalue{\getstoredvalue} % or \let\oldvalue\storedvalue
\renewcommand{\storedvalue}{0}

Some text which needs the stored value to be changed

\ifnum\oldvalue>0
    \resetstoredvalue{}%
\fi

\end{document}

请注意,上下文%之后不应出现“no” 。0\ifnum

在此处输入图片描述

相关内容