
В пакете акронимов команды \ac* и \acp*, отмеченные звездочкой, исключают акроним из списка акронимов с опцией "printonlyused". Моя проблема в том, что вставленные таким образом акронимы все равно являются гиперссылками в PDF-файлах, созданных с помощью pdflatex. Я хотел бы иметь акронимы без ссылок, если они вставлены с помощью команд, отмеченных звездочкой, и, таким образом, не находятся в таблице акронимов. Как это сделать?
В примере ниже pdflatex создает три страницы: фиктивную страницу 1, таблицу сокращений на странице 2 и две аббревиатуры, используемые на странице 3. Первая аббревиатура правильно ссылается на таблицу сокращений. Однако команда starred также является hyperref. В моих испытаниях все команды starred создавали гиперссылки на страницу 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}