带有 enumitem 2 的 Numberwithin

带有 enumitem 2 的 Numberwithin

下列的主题1主题2,我已经实现了 Mico 的答案。现在,我也想引用此枚举下的方程式。例如,

\documentclass{article}
\usepackage{amsmath}
\usepackage{hyperref}
\usepackage{enumitem,cleveref}

\newlist{myenum}{enumerate}{3}
\setlist[myenum,1]{label=\textbf{\arabic*.},
                   ref  =\arabic*}
\setlist[myenum,2]{label=\textbf{(\alph*)},
                   ref  =\themyenumi.(\alph*)}
\setlist[myenum,3]{label=\bfseries(\roman*),
                   ref  =\themyenumii.(\roman*)}

\numberwithin{equation}{myenumi}

\begin{document}

\begin{myenum}
\item 
   \begin{equation}\label{eq:euler}
      e^{i\pi}+1 = 0
   \end{equation}
\end{myenum}

As shown in \cref{eq:euler}.

\end{document}

但是,这些行让我遇到了这个错误:“缺少 \endcsname 插入。\begin{equation}”。您知道为什么会发生这种情况吗?或者如何解决?谢谢。

编辑:我发现在包含该\usepackage{hyperref}行时会发生这种情况。

答案1

我怀疑您遇到了enumitemhyperref包之间的不兼容问题。恐怕我无法提供完整的修复。我只能建议您不要使用该包,enumitem而是修改低级宏\theenumi、、、、、等。\labelenumi\theenumii\labelenumii\p@enumii

\documentclass{article}
\usepackage{amsmath}
\usepackage{hyperref}
\usepackage{cleveref}

\renewcommand{\theenumi}{\arabic{enumi}}
\renewcommand{\theenumii}{(\alph{enumii})}
\renewcommand{\theenumiii}{(\roman{enumiii})}
\renewcommand{\labelenumi}{\textbf{\theenumi.}}
\renewcommand{\labelenumii}{\textbf{\theenumii}}
\renewcommand{\labelenumiii}{\textbf{\theenumiii}}
\makeatletter
\renewcommand\p@enumii{\theenumi} % "prefixes" for use in cross-references
\renewcommand\p@enumiii{\theenumi\theenumii}
\makeatother

\numberwithin{equation}{enumi}

\begin{document}

\begin{enumerate}
\item 
   \begin{equation}\label{eq:euler}
      e^{i\pi}+1 = 0
   \end{equation}
\end{enumerate}

As shown in \cref{eq:euler}, \dots
\end{document}

相关内容