1

I'm using MikTeX 2.9. When processing the following:

\documentclass{article}
\usepackage{hyperref}
\usepackage[hyperref]{ntheorem}
\usepackage{aliascnt}

\newtheorem{lemma}{Lemma}
\newaliascnt{definition}{lemma}
\newtheorem{definition}[definition]{Definition}
\aliascntresetthe{definition}

\begin{document}

\begin{definition}
\label{def:first}
This is my definition.
\end{definition}

\begin{definition}[Alternative to \autoref{def:first}]
This is my second definition.
\end{definition}

\end{document}

I get:

! TeX capacity exceeded, sorry [grouping levels=255].
\HyRef@autoref #1#2->\begingroup 
                                 \Hy@safe@activestrue \expandafter \HyRef@au...
l.31 ...ition}[Alternative to \autoref{def:first}]

If I remove the autoref, all is well. This doesn't happen to me with amsthm instead of ntheorem. Am I doing something wrong? Is it an ntheorem bug? an aliascnt bug?

einpoklum
  • 12,311

2 Answers2

1

This seems to work; the problem seems to be in the counter's name

\documentclass{article}
\usepackage[hyperref]{ntheorem}
\usepackage{aliascnt}
\usepackage{hyperref}
\newcommand\definautorefname{Definition}

\newtheorem{lemma}{Lemma}
\newaliascnt{defin}{lemma}
\newtheorem{definition}[defin]{Definition}

\begin{document}

\begin{definition}
\label{def:first}
This is my definition.
\end{definition}

\begin{definition}[Alternative to \autoref{def:first}]
This is my second definition.
\end{definition}

\end{document}
egreg
  • 1,121,712
0

Well, at least I can have nice macro for this:

\makeatletter
\def\newaliasedtheorem#1[#2]#3{%
  \newaliascnt{#1@alt}{#2}
  \newtheorem{#1}[#1@alt]{#3}
  \expandafter\newcommand\csname #1@altname\endcsname{#3}
}
\makeatother

Use it instead of \newtheorem, i.e. rather than:

\newtheorem{mynewenv}[existingcounter]{MyNewEnvName}

do

\newaliasedtheorem{mynewenv}[existingcounter]{MyNewEnvName}
einpoklum
  • 12,311