
在縮寫詞包中,帶有星號的命令 \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}