Удаление гиперссылки для отмеченных звездочкой команд

Удаление гиперссылки для отмеченных звездочкой команд

В пакете акронимов команды \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}

введите описание изображения здесь

Связанный контент