Cleveref 和 nameinlink – 某些环境/名称存在问题

Cleveref 和 nameinlink – 某些环境/名称存在问题

cleveref我对下面这段代码中举例说明的有一个问题。

\documentclass[12pt]{article}

\usepackage{amsmath}%
\usepackage{amsthm}%

\theoremstyle{plain}
%
\newtheorem{theorem}{Theorem}
\newtheorem{definition}{Definition}
\newtheorem{conjecture}{Conjecture}


\theoremstyle{definition}
%
\newtheorem{condition}[theorem]{Condition}
\newtheorem{problem}{Problem}


\usepackage{hyperref}
\usepackage[noabbrev,nameinlink]{cleveref}
%
\hypersetup{colorlinks=true}
%
\newcommand{\MathRef}[2][blue]{%
\hypersetup{linkcolor=#1}%
\Cref{#2}%
\hypersetup{linkcolor=blue}%
}


\begin{document}

\begin{definition}[Bla]
\label{bla}
Bla
\end{definition}

\MathRef{bla}

\begin{problem}[Blabla]
\label{blabla}
Blabla
\end{problem}

\MathRef{blabla}

\begin{condition}[Blabla]
\label{blablabla}
Blabla
\end{condition}

\MathRef{blablabla}

\begin{conjecture}[Bla]
\label{bla1}
Bla
\end{conjecture}

\MathRef{bla1}

\end{document}

可以看出,该命令MathRef仅在第一种情况下有效,而在其他情况下,由于(我猜)不同的原因,它不起作用。它似乎cleveref错过了其中一些环境的名称。

问题是什么?
如何解决?

任何反馈都将受到高度赞赏。

答案1

定义theorem出现得太早,即在cleveref加载之前,因此cleveref没有“抓地力”来提供正确的\crefname等等。

推动定义加载中cleveref

原因、为什么theorem以及definition开箱即用是因为它cleveref已经内置了对这些定理名称(更好的计数器)的支持。

\documentclass[12pt]{article}

\usepackage{amsmath}%
\usepackage{amsthm}%


\usepackage{hyperref}
\usepackage[noabbrev,nameinlink]{cleveref}


\theoremstyle{plain}
%
\newtheorem{theorem}{Theorem}
\newtheorem{definition}{Definition}
\newtheorem{conjecture}{Conjecture}


\theoremstyle{definition}
%
\newtheorem{condition}[theorem]{Condition}
\newtheorem{problem}{Problem}


%
\hypersetup{colorlinks=true}
%
\newcommand{\MathRef}[2][blue]{%
  \hypersetup{linkcolor=#1}%
  \Cref{#2}%
  \hypersetup{linkcolor=blue}%
}


\begin{document}

\begin{definition}[Bla]
\label{bla}
Bla
\end{definition}

\MathRef{bla}

\begin{problem}[Blabla]
\label{blabla}
Blabla
\end{problem}

\MathRef{blabla}

\begin{condition}[Blabla]
\label{blablabla}
Blabla
\end{condition}

\MathRef{blablabla}

\begin{conjecture}[Bla]
\label{bla1}
Bla
\end{conjecture}

\MathRef{bla1}

\end{document}

在此处输入图片描述

相关内容