如何在枚举环境中更改命令的值?

如何在枚举环境中更改命令的值?
\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}

相关内容