\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}