使用 thmtools 为定理编号添加星号:如何在使用 hyperref 时不添加链接

使用 thmtools 为定理编号添加星号:如何在使用 hyperref 时不添加链接

这个答案给出了一种向方程编号添加星号(或任何其他符号)的好方法。

该方法非常有效。不幸的是,如果使用 hyperref 包,带有星号的新数字将出现不需要的超链接。

这是一个可行的示例(取自上面链接的答案),说明了我的意思:

\documentclass{article}
\usepackage{hyperref}
\usepackage{amsthm}
\usepackage{thmtools}

\declaretheoremstyle[
  spaceabove=6pt, 
  spacebelow=6pt,
  headfont=\bfseries,
  notefont=\mdseries, notebraces={(}{)},
  bodyfont=\itshape,
]{mystyle}

\let\variant\relax

\declaretheorem[style=mystyle]{theorem}

\declaretheorem[
  name={Theorem~\variant{$^\ast$}},
  style=mystyle,
  numbered=no,
]{theorem*}

\newenvironment{rtheorem}[1]
  {\newcommand\variant{\ref{#1}}\begin{theorem*}}
  {\end{theorem*}}

\begin{document}

\begin{theorem}[Euler's identity]
\label{thm:euler}
$e^{i\pi} + 1 = 0$
\end{theorem}

\begin{rtheorem}{thm:euler}[Euler's identity revisited]
$e^{i\pi} = -1$
\end{rtheorem}

\end{document}

在此处输入图片描述

如何删除已修改参考文献上的超链接?

答案1

来自 hyperref 手册:

在此处输入图片描述

因此,如果您想引用具有正确计数器的某些内容,但又不希望将其作为超链接,请使用\ref*而不是\ref。因此,您必须定义:

\newenvironment{rtheorem}[1]
  {\newcommand\variant{\ref*{#1}}\begin{theorem*}}
  {\end{theorem*}}

完整代码如下:

\documentclass{article}
\usepackage{hyperref}
\usepackage{amsthm}
\usepackage{thmtools}

\declaretheoremstyle[
  spaceabove=6pt,
  spacebelow=6pt,
  headfont=\bfseries,
  notefont=\mdseries, notebraces={(}{)},
  bodyfont=\itshape,
]{mystyle}

\let\variant\relax

\declaretheorem[style=mystyle]{theorem}

\declaretheorem[
  name={Theorem~\variant{$^\ast$}},
  style=mystyle,
  numbered=no,
]{theorem*}

\newenvironment{rtheorem}[1]
  {\newcommand\variant{\ref*{#1}}\begin{theorem*}}
  {\end{theorem*}}

\begin{document}

\begin{theorem}[Euler's identity]
\label{thm:euler}
$e^{i\pi} + 1 = 0$
\end{theorem}

\begin{rtheorem}{thm:euler}[Euler's identity revisited]
$e^{i\pi} = -1$
\end{rtheorem}

\end{document}

在此处输入图片描述

相关内容