\documentclass{scrartcl}
\begin{document}
\newcommand{\myvalue}{0}
\newcommand{\setmyvalue}[1]{\renewcommand{\myvalue}{#1}}
\begin{enumerate}
\item First Point. \setmyvalue{1}
\end{enumerate}
Value: \myvalue
\end{document}
返回值 0,而不是预期值 1。这是为什么?我该如何修正代码?
答案1
通常,命令定义只限于其所处的环境。就您而言,重新定义 ( \renewcommand
) 不会影响 的全局视图\myvalue
。为此,您需要使用类似
\newcommand{\setmyvalue}{\gdef\myvalue}
这将使全球重新def
开始\myvalue
g
。
\myvalue
将其改为类似于计数器可能更加可行:
\documentclass{scrartcl}
\begin{document}
\newcounter{myvalue}% Default of myvalue is 0
\newcommand{\setmyvalue}{\setcounter{myvalue}}
\begin{enumerate}
\item First Point. \setmyvalue{1}
\end{enumerate}
Value: \themyvalue
\end{document}