cleveref 和 amsthm——错误的环境名称

cleveref 和 amsthm——错误的环境名称

我有theorem一些环境,它们具有相同的定理样式,我通过 定义它们amsthm。我希望它们都共享相同的计数器。这样,遵循定理 1.2.6 的引理将具有编号 1.2.7。我想使用cleveref来引用这些环境。我使用 documentclass memoir

[theorem]但是,输出没有正确引用环境名称。这与我在定义中使用可选值有关吗\newtheorem{lemma}

平均能量损失

\documentclass{memoir}
\usepackage{amsthm}

% Defining a theorem style that has bold head and italic body
\newtheoremstyle{italic}{5pt}{5pt}{\itshape}{}{}{}{.5em}
{\bfseries{\thmname{#1}~\thmnumber{#2}.}\thmnote{~\textnormal{(#3)}}}

\theoremstyle{italic}
\newtheorem{theorem}{Theorem}[section]
\newtheorem{lemma}[theorem]{Lemma}

\usepackage[capitalise]{cleveref}

\begin{document}

\begin{theorem}\label{thm1}
This is a theorem.
\end{theorem}

\begin{lemma}\label{lem1}
This is a lemma.
\end{lemma}

\cref{thm1} \cref{lem1}

\end{document}

输出

输出

期望输出

期望输出

答案1

你只需要将类似定理的环境的定义移动到包裹的装载cleveref

示例输出

\documentclass{memoir}

\usepackage{amsthm}

\usepackage[capitalise]{cleveref}

% Defining a theorem style that has bold head and italic body
\newtheoremstyle{italic}{5pt}{5pt}{\itshape}{}{}{}{.5em}
{\bfseries{\thmname{#1}~\thmnumber{#2}.}\thmnote{~\textnormal{(#3)}}}

\theoremstyle{italic}
\newtheorem{theorem}{Theorem}[section]
\newtheorem{lemma}[theorem]{Lemma}

\begin{document}

\begin{theorem}\label{thm1}
This is a theorem.
\end{theorem}

\begin{lemma}\label{lem1}
This is a lemma.
\end{lemma}

\cref{thm1} \cref{lem1}

\end{document}

请参阅第 14.1 节“非 bug”cleveref手动的

像往常一样,请记住应该cleveref将 加载为前言中的最后一个包,请参阅手册中的第 13 节与其他包的交互。特别是,在此示例中,它必须晚于 的加载amsthm

相关内容