刪除縮寫加星號指令的 hyperref

刪除縮寫加星號指令的 hyperref

在縮寫詞包中,帶有星號的命令 \ac* 和 \acp* 透過選項「printonlyused」省略了縮寫詞列表中的縮寫詞。我的問題是,像這樣插入的首字母縮寫仍然是使用 pdflatex 創建的 PDF 中的 hyperref 連結。我希望有無連結的首字母縮略詞,如果它們與帶有星號的命令一起插入,因此不在首字母縮略詞表中。我該怎麼做?

在下面的範例中,pdflatex 建立三個頁面,虛擬頁面 1、第 2 頁上的縮寫詞表和第 3 頁上使用的兩個縮寫詞。然而,加星號的命令也是一個超級引用。在我的試驗中,所有帶有星號的命令都會產生指向第 1 頁的 hyperref 鏈接,這與縮寫詞完全無關。

\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}

在此輸入影像描述

相關內容