
약어 패키지에서 별표 표시된 명령 \ac* 및 \acp*는 "printonlyused" 옵션을 사용하여 약어 목록에서 약어를 생략합니다. 내 문제는 이렇게 삽입된 두문자어가 여전히 pdflatex로 생성된 PDF의 하이퍼참조 링크라는 것입니다. 별표 표시된 명령과 함께 삽입되어 약어 테이블에 없는 경우 링크 없는 약어를 갖고 싶습니다. 어떻게 해야 할까요?
아래 예에서 pdflatex는 1페이지에 더미 페이지, 2페이지에 약어 표, 3페이지에 사용된 2개의 약어 등 3개의 페이지를 생성합니다. 첫 번째 약어는 약어 표에 올바르게 연결됩니다. 그러나 별표 표시된 명령도 하이퍼참조입니다. 내 시험에서 별표 표시된 모든 명령은 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}