我在用这个答案创建具有自定义编号的命题。这样我就可以手动输入命题名称/编号。实际上,我这样做的目的是创建具有标准编号的命题的“版本 b”:
\usepackage{amsthm}
\usepackage{hyperref}
...
\newtheorem{innercustomthm}{Proposition}
\newenvironment{customthm}[1]
{\renewcommand\theinnercustomthm{#1}\innercustomthm}
{\endinnercustomthm}
\begin{document}
\begin{proposition}\label{prop:onlyifdirection}
First version of the proposition.
\end{proposition}
\begin{customthm}{\ref{prop:onlyifdirection}b}\label{prop:onlyifconstructive}
Second version of the proposition.\qed
\end{customthm}
\end{document}
看起来很棒。原始提案是 4.2,第二个版本是 4.2b。我的问题是关于它如何与包交互hyperref
。现在,当我用
\ref{prop:onlyifconstructive}
如果我点击“b”,它会链接到第二个版本,但如果我点击“4.2”,它会跳过并链接到第一个版本。我希望实现相同的视觉/打印结果,但每次我调用
\ref{prop:onlyifconstructive}
该hyperref
链接仅指向该提案的第二个版本。
现在,我当然可以通过硬编码“4.2”而不是输入\ref{prop:onlyifdirection}
第二个版本的标签来实现这一点。但理想情况下,应该有一种方法可以做到这一点,即使编号发生变化也不必手动更改。
这是怎么做到的?
答案1
具体到您的应用程序,您可以\ref*
在重新定义计数器显示时使用不包括参考超链接的功能:
\documentclass{article}
\usepackage{amsthm}
\usepackage{hyperref}
\newtheorem{proposition}{Proposition}
\newtheorem{innercustomthm}{Proposition}
\newenvironment{customthm}[1]
{\renewcommand\theinnercustomthm{#1}\innercustomthm}
{\endinnercustomthm}
\begin{document}
\begin{proposition}\label{prop:onlyifdirection}
First version of the proposition.
\end{proposition}
\begin{customthm}{\ref*{prop:onlyifdirection}b}\label{prop:onlyifconstructive}
Second version of the proposition.
\end{customthm}
See Propositions~\ref{prop:onlyifdirection} and~\ref{prop:onlyifconstructive}.
\end{document}