Латексная новая этикетка

У меня есть следующее newenvironment команда:

\newcounter{algoctr}[chapter] \setcounter{algoctr}{0}
\newenvironment{algo}[1] {
\refstepcounter{algoctr}\vspace{0.2cm}\noindent{\bf Algorithm
\arabic{chapter}.\arabic{algoctr}: #1}}{\par}

и я использую это таким образом

\begin{algo}{blabbing a blah}
 blah
 blah
\label{eq:blabbing}
\end{algo}

Однако каждый раз, когда я ссылаюсь на метку (\ref{eq:blabbing}), я получаю "1" вместо "1.1".

Может ли кто-нибудь любезно сообщить мне, что я делаю не так?

Спасибо

2 ответа

Решение

Вы почти у цели, вам просто нужно переопределить \thealgoctr а также что-то вроде:

\renewcommand\thealgoctr{\arabic{chapter}.\arabic{algoctr}}

(Не проверено.) А затем используйте \thealgoctr в вашей среде, а не явно ссылаясь на счетчики.

Я не знаю о вашем счетчике, но я могу порекомендовать другую возможность, в которой это работает:

\usepackage{amsthm}

\newtheoremstyle{algostyle}
  {0.2cm}{0cm}%                                 margin top and bottom
  {\rmfamily}%                                  text layout
  {0cm}%                                        indention of header
  {\bfseries}{ }%                               header font and text after
  {0cm}%                                        space after header
  {\thmname{#1}\thmnumber{ #2}:\thmnote{ #3}}%  header

\theoremstyle{algostyle}
\newtheorem{algo}{Algorithm}[chapter]

\begin{algo}[blabbing a blah]%  brackets instead of curly braces for note
 blah
 blah
\label{eq:blabbing}
\end{algo}
Другие вопросы по тегам