\ref 在自定义环境中给出 \label 的错误数字

\ref 在自定义环境中给出 \label 的错误数字

我已经定义了一个自定义环境(使用托克洛夫特包裹,感谢 Juan) 看起来像:

\newcommand{\listscriptname}{List of Scripts}
\newlistof[chapter]{script}{spt}{\listscriptname}
\def\thescript{\thechapter-\arabic{script}}
\newenvironment{script}[2][]
  { \vspace{3mm}\hspace{3mm}
    \colorbox{orange}{\refstepcounter{script}
    \textbf{Script~\thescript #1:code/#2.groovy}}
    \addcontentsline{spt}{script}
       {\protect\numberline{\thescript}#1~~code/#2.groovy}
  }
  {}

我的用法如下:

\begin{script}{FooBar}
\label{script:FooBar}
BitStream.
\end{script}

并使用以下命令引用它:

Script~\ref{script:FooBar}.

但是我得到的不是脚本环境编号,而是节的编号。

我做错了什么(我确实尝试了几种变化......)?

答案1

移出:\refstepcounter\colorbox

\newenvironment{script}[2][]
  {\vspace{3mm}\hspace{3mm}%
    \refstepcounter{script}%
    \colorbox{orange}{%
    \textbf{Script~\thescript foo#1bar:code/#2.groovy}}
    \addcontentsline{spt}{script}
       {\protect\numberline{\thescript}#1~~code/#2.groovy}
  }
  {}

相关内容