说我有
\begin{theorem}\label{thm:Fermat}
This is a theorem about Fermat.
\end{theorem}
输出为定理 5.2。 这是关于费马的一个定理。
现在我想通过 来引用它\ref{thm:Fermat}
,但是它只返回5.2
而不是Theorem 5.2
。我该怎么做才能让它返回Theorem 5.2
?
我找到了ntheorem
带有的包\thref
,但使用 ntheorem 包,我的 theorem-sytles 似乎不再起作用(即我必须重写所有函数)。我能以某种方式规避这个问题吗?但也许有一个更简单的解决方案?如果能提供一个可能很小的例子,我将不胜感激。
答案1
我会用cleveref
为此,您可以使用常规\label
命令并非常轻松地使用和朋友自定义参考的外观\crefname
。
您可能希望在句子开头或句子中间引用定理时以不同的方式出现参考 -cleveref
这很容易实现。
以下是完整的 MWE
% arara: pdflatex
% !arara: indent: {overwrite: on}
\documentclass{article}
\usepackage{amsthm}
\usepackage{hyperref}
\usepackage{cleveref}
\newtheorem{theorem}{Theorem}
% each of the following has two versions
% \crefname{environmentname}{singular}{plural}, to be used mid-sentence
% \Crefname{environmentname}{singular}{plural}, to be used at the beginning of a sentence
\crefname{theorem}{theorem}{theorems}
\Crefname{theorem}{Theorem}{Theorems}
\begin{document}
\begin{theorem}\label{thm:Fermat}
This is a theorem about Fermat.
\end{theorem}
\begin{itemize}
\item \Cref{thm:Fermat} is very good.
\item And also \cref{thm:Fermat} is very good.
\end{itemize}
\end{document}
答案2
如果你只需要定理引用(不需要图表、列表等),你可以使用theoremref
包。CTAN 上的最新版本已经兼容hyperref
。
\documentclass{article}
\usepackage{amsthm, theoremref, hyperref}
\newtheorem{theorem}{Theorem}
\begin{document}
\begin{theorem}\thlabel{thm:Fermat}
This is a theorem about Fermat.
\end{theorem}
\thref{thm:Fermat} is very good.
\end{document}
另一个选项是\autoref
来自 的命令hyperref
。有关更灵活的解决方案,请参阅交叉引用包:使用哪一个,哪些有冲突?。