删除首字母缩略词带星号的命令的超链接

删除首字母缩略词带星号的命令的超链接

在首字母缩略词包中,带星号的命令 \ac* 和 \acp* 使用选项“printonlyused”从首字母缩略词列表中省略首字母缩略词。我的问题是,像这样插入的首字母缩略词在使用 pdflatex 创建的 PDF 中仍然是超链接。如果首字母缩略词与带星号的命令一起插入,因此不在首字母缩略词表中,我希望有无链接的首字母缩略词。我该怎么做?

在下面的示例中,pdflatex 创建了三个页面,一个虚拟页面 1、页面 2 上的首字母缩略词表和页面 3 上使用的两个首字母缩略词。第一个首字母缩略词正确链接到首字母缩略词表。但是,带星号的命令也是一个超链接。在我的试验中,所有带星号的命令都生成指向页面 1 的超链接,这与首字母缩略词完全无关。

\documentclass{article}

\PassOptionsToPackage{printonlyused}{acronym}
\usepackage{acronym}
\usepackage{hyperref}

\begin{document}
the initial page

\newpage
the acronym page

\begin{acronym}
  \acro{AAA}{Aaa Abb Acc}
  \acro{TMN}{This Means Nothing}
\end{acronym}

\newpage
\ac{AAA}
\ac*{TMN}

\end{document}

答案1

对于其命令的星号版本,acronym调用\AC@starredtrue。我们可以使用它来重新定义,\AC@hyperlink以便在使用非星号版本时仅生成超链接。不带hyperref \AC@hyperlink本质上与带相同,\@secondoftwo带则hyperref\let文档\hyperlink开头。这意味着应该使用钩子进行重新定义\AtBeginDocument

以下定义可\AC@hyperlink用于\@secondoftwo带星号的版本和\hyperlink不带星号的版本。

\documentclass{article}

\usepackage[printonlyused]{acronym}
\usepackage{hyperref}

\makeatletter
\AtBeginDocument{%
  \renewcommand*\AC@hyperlink{%
    \ifAC@starred
      \expandafter\@secondoftwo
    \else
      \expandafter\hyperlink
    \fi
  }%
}
\makeatother

\begin{document}
the initial page

\newpage
the acronym page

\begin{acronym}
  \acro{AAA}{Aaa Abb Acc}
  \acro{TMN}{This Means Nothing}
\end{acronym}

\newpage
\ac{AAA}
\ac*{TMN}

\end{document}

在此处输入图片描述

相关内容