不要手动输入交叉引用名称

不要手动输入交叉引用名称
\documentclass{article}

\newtheorem{theorem}{Theorem}[section]

\begin{document}

\begin{theorem}
    \label{thm}
    blahblah
\end{theorem}

Theorem~\ref{thm} states blahblah.

\end{document}

这里的问题是我必须手动输入Theorem~。几乎总是我必须输入一些名称(定理、引理、图形等),而 LaTeX 可以在定义点自行生成这些名称。有没有办法让 latexTheorem~自行写入(和其他内容)?

\smartref{thm} states blahblah.

我不想

\newcommand{\thmref}[1]{Theorem~\ref{#1}}

,因为我必须为其他类型定义类似的宏。

我很可能错过了一些显而易见的东西,但我在谷歌搜索中没有成功。

答案1

您有两个主要选项:(\cref由包提供cleveref)和\autoref(由hyperref包提供)。

另外:如果您不想将交叉引用变成指向其链接对象的超链接,只需写入\Cref*{...}and\autoref*{...}而不是\Cref{...}and \autoref{...}

在此处输入图片描述

\documentclass{article}
% 1. load 'hyperref' after `amsthm` but before 'cleveref' 
% 2. execute all `\newtheorem` statements *after* loading `cleveref`
\usepackage{amsthm} % or: \usepackage{ntheorem}
\usepackage[colorlinks,allcolors=blue]{hyperref}
\usepackage[nameinlink,noabbrev]{cleveref}
\newtheorem{theorem}{Theorem}[section]

\begin{document}
\setcounter{section}{2} % just for this example

\begin{theorem}\label{thm:bla} blah blah \end{theorem}

\Cref{thm:bla} states that \dots

As shown in \autoref{thm:bla}, \dots
\end{document}

相关内容