如何让 \ref 写出“定理 5”或“引理 5”而不是仅仅写出“5”?

如何让 \ref 写出“定理 5”或“引理 5”而不是仅仅写出“5”?

我有时会将某些内容从“ \begin{theorem}”更改为“ \begin{lemma}”(我有自己的命令:\newtheorem{theorem}{Theorem}\newtheorem{lemma}{Lemma})。

但是如果我只是写\ref{theorem1},那么我必须在它前面手动写上“定理”,如果我将定理1变成引理,它不会改变。

我怎样才能让它自动写出“定理 1”呢?

答案1

(发布此答案是为了让问题可以被认为已经收到答案)

你应该熟悉聪明人包及其用户命令\cref\crefrange\cref宏(及其句首变体)可以采用多个参数,这些参数将是放置在文档其他位置的指令\Cref的参数\label。参数列表不需要排序,并且列表可以包含与、、、、、equation等对象关联的标签。theoremsectionfiguretable

theorem下面是一个可编译的示例,它创建了和环境的每一个实例lemma。请注意,它cleveref足够聪明,可以区分这两个环境,即使它们共享一个公共计数器。碰巧的是,cleveref“知道”这两个环境的名称(即“定理”和“引理”);如果您的文档以未知类型的编号环境为特色cleveref,则需要使用\crefname说明来补填缺失的名称信息。例如,如果您有一个名为的对象map(具有一个也称为的相关计数器变量map),则\crefname{map}{map}{maps}告知cleveref应如何在交叉引用中显示对象的单数和复数形式。

在此处输入图片描述

\documentclass{article}
\usepackage{amsthm} % or: \usepackage{ntheorem}
\usepackage[colorlinks,allcolors=blue]{hyperref} % optional
\usepackage[noabbrev,capitalize,nameinlink]{cleveref}
\newtheorem{theorem}{Theorem}
\newtheorem{lemma}[theorem]{Lemma}

\begin{document}
\begin{theorem} \label{thm:major} \dots \end{theorem}
\begin{lemma}   \label{thm:minor} \dots \end{lemma}
\noindent
Cross-references to \cref{thm:major,thm:minor}.
\end{document} 

相关内容