
Im Akronympaket lassen die mit Sternchen versehenen Befehle \ac* und \acp* das Akronym mit der Option „printonlyused“ aus der Liste der Akronyme weg. Mein Problem ist, dass auf diese Weise eingefügte Akronyme in mit pdflatex erstellten PDFs immer noch Hyperref-Links sind. Ich hätte gerne linkfreie Akronyme, wenn sie mit den mit Sternchen versehenen Befehlen eingefügt werden und somit nicht in der Akronymtabelle stehen. Wie mache ich das?
Im folgenden Beispiel erstellt pdflatex drei Seiten, eine Dummy-Seite 1, die Akronymtabelle auf Seite 2 und zwei auf Seite 3 verwendete Akronyme. Das erste Akronym verweist korrekt auf die Akronymtabelle. Der mit Sternchen markierte Befehl ist jedoch auch ein Hyperref. In meinen Versuchen erzeugten alle mit Sternchen markierten Befehle Hyperref-Links zu Seite 1, was überhaupt nichts mit Akronymen zu tun hat.
\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}
Antwort1
Für mit Sternchen markierte Versionen seiner Befehle acronym
ruft auf \AC@starredtrue
. Wir können dies verwenden, um neu zu definieren, \AC@hyperlink
dass nur dann ein Hyperlink erstellt wird, wenn eine nicht mit Sternchen markierte Version verwendet wird. Ohne hyperref
\AC@hyperlink
ist im Wesentlichen dasselbe wie \@secondoftwo
und mit hyperref
ist es \let
am \hyperlink
Anfang des Dokuments. Dies bedeutet, dass die Neudefinition mit dem Hook erfolgen sollte \AtBeginDocument
.
Die folgende Definition ermöglicht \AC@hyperlink
die Verwendung \@secondoftwo
in mit Sternchen versehenen und \hyperlink
in nicht mit Sternchen versehenen Versionen.
\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}