我正在尝试定义一个使用algorithm
来自 的环境的新环境algorithm2e
。我想为这个新环境使用单独的标题计数器。截至目前,这就是我所拥有的,但我不知道如何使用计数器\def
或\renewcommand
标题变量hdps
?
\newcounter{hdps}
\newenvironment{asm}{%
\stepcounter{hdps}%
\renewcommand*{\algorithmcfname}{ASM Spec.}%
\begin{algorithm}}
{%
\def\thealgocf{}%
\end{algorithm}}
非常感谢您的帮助。
答案1
你可以使用这样的方法:
\newcounter{hdps}
\newenvironment{asm}
{\refstepcounter{hdps}%
\renewcommand*{\algorithmcfname}{ASM Spec.}%
\begin{algorithm}\renewcommand\thealgocf{\arabic{hdps}}}
{\end{algorithm}\addtocounter{algocf}{-1}}
编辑:当然,只有在和环境\caption
中一致使用,这种方法才会按预期发挥作用。algorithm
asm
答案2
在环境中使用环境有时会出现问题。请参阅相关文章根据其他环境来定义环境:正确的方法是什么?。从这个意义上讲,我建议使用环境提供的计数器,而不是定义新环境并使用单独的计数器algorithm
:algocf
,并修改算法名称(从Algorithm
到ASM Spec.
)和计数器样式(如果需要)。例如,
\renewcommand*{\algorithmcfname}{ASM Spec.}% Algorithm name
\usepackage{dcounter}% http://ctan.org/pkg/dcounter
\countstyle{<section>}%
\DeclareDynamicCounter{algocf}% <- algocf will be 'dynamic' within <section>
algocf
将在 内重置计数器<section>
(可以是您指定的任何部分单位,例如chapter
、section
或 、subsection
或 或subsubsection
)。这还将计数器的表示形式重新定义为\the<section>.\arabic{algocf}
。
Algorithm
当然,如果您想要两种不同风格的算法(比如命名和ASM Spec.
),这将不起作用。