我正在写一篇论文,我需要引用一位数学家的定理,我们称他为天才。这个定理已经有了一个众所周知的名字,比如天才的特殊定理。我想在我的论文中多次引用这个定理,但我很难做到这一点,因为定理计数器会随处弹出。这是我的工作示例:
\documentclass{amsart}
\usepackage{hyperref}
\newtheorem{Thm}{Theorem}
\newtheorem{Genius}{Genius' Special Theorem}
\newcommand{\Thmautorefname}{Theorem}
\newcommand{\Geniusautorefname}{Genius' theorem}
% ----------
\begin{document}
Let us begin with the following theorem.
\begin{Thm}
Blah, blah, blah.
\end{Thm}
Now, we have the following theorem discovered by Genius.
\begin{Genius} \label{Genius}
Ha, ha, ha.
\end{Genius}
More text here.
According to \autoref{Genius}, we get...
\end{document}
当我预览 PDF 文档时,我看到
根据天才定理 1,我们得到...
然而,我想要的是
根据天才定理,我们得到...
因为这是我在论文中唯一要用到的 Genius 定理。我尝试使用 来解决这个问题\newtheorem*{Genius}{Genius' Special Theorem}
,但结果却
根据定理1,我们得到......
不知何故,星号导致\autoref
忽略该命令Genius
并导致其锁定该命令Thm
。
有人能解决这个问题吗?非常感谢!
答案1
的目的\autoref
是将计数器的名称(或任何代替计数器名称的名称)添加到数字中。对于你的情况,你只需要\ref
:
\documentclass{amsart}
\usepackage{hyperref}
\newtheorem{Thm}{Theorem}
\newtheorem*{innerGenius}{Genius' Special Theorem}
\makeatletter
\newenvironment{Genius}
{\innerGenius\phantomsection\def\@currentlabel{Genius' Theorem}}
{\endinnerGenius}
\makeatother
\newcommand{\Thmautorefname}{Theorem}
% ----------
\begin{document}
Let us begin with the following theorem.
\begin{Thm}
Blah, blah, blah.
\end{Thm}
Now, we have the following theorem discovered by Genius.
\begin{Genius} \label{Genius}
Ha, ha, ha.
\end{Genius}
More text here.
According to \ref{Genius}, we get...
\end{document}
请注意,\newtheorem*
需要amsthm
由 自动加载amsart
,因此您应该将 其他类一起添加\usepackage{amsthm}
。
请注意,仅使用\newtheorem*
不会创建引用。因此,通过手动设置\label
在环境中创建引用,还添加用于创建锚点。Genius
\@currentlabel
\phantomsection