`acronym` 包:将首字母缩略词的使用链接到首字母缩略词列表,而无需将列表条目链接到首字母缩略词的首次使用

`acronym` 包:将首字母缩略词的使用链接到首字母缩略词列表,而无需将列表条目链接到首字母缩略词的首次使用

问题

我正在使用acronym包裹。我希望将\ac\Ac\iac等的用法链接到我的首字母缩略词列表(使用环境创建)中的相应条目acronym,但我确实不是希望列表中的首字母缩略词成为其首次使用的超链接。我该怎么做?

平均能量损失

\documentclass{minimal}
\usepackage{hyperref}
\usepackage{acronym}

\begin{document}

The \ac{QBF} jumps over \iac{LD}. The \ac{LD} jumps over \iac{QBF}.

\begin{acronym}
    \acro{QBF}{quick brown fox}
    \acro{LD}{lazy dog} \acrodefindefinite{LD}{an}{a}
\end{acronym}

\end{document}

期望输出

请注意“所需输出”部分中的超链接实际上没有去任何地方。它们旨在演示超链接在输出文档中出现的位置。

描述:在文档文本中,所有缩写词的使用都链接到缩写词列表中的相应条目。在缩写词列表中(环境内acronym),条目不是超链接。

敏捷的棕色狐狸(准直阵线)跳过一只懒狗(LD)。 这LD跳过一个准直阵线

准直阵线敏捷的棕色狐狸
LD懒狗

实际产量

请注意“实际输出”部分中的超链接实际上没有去任何地方。它们旨在演示超链接在输出文档中出现的位置。

描述:在文档文本中,所有缩写词的使用都链接到缩写词列表中的相应条目。在缩写词列表中(在环境内acronym),每个条目都链接回文档中其各自缩写词的首次使用。

敏捷的棕色狐狸(准直阵线)跳过一只懒狗(LD)。 这LD跳过一个准直阵线

准直阵线敏捷的棕色狐狸
LD懒狗

我尝试过

根据第 4.2 节软件包acronym文档,其中讨论了包的实现,我希望这可以解决问题,但它没有起作用。

\documentclass{minimal}
\usepackage{hyperref}
\usepackage{acronym}

\begin{document}

The \ac{QBF} jumps over \iac{LD}. The \ac{LD} jumps over \iac{QBF}.

{\makeatletter\AC@nohyperlinkstrue\makeatother
    \begin{acronym}
        \acro{QBF}{quick brown fox}
        \acro{LD}{lazy dog} \acrodefindefinite{LD}{an}{a}
    \end{acronym}
}

\end{document}

答案1

首先\acrodefindefinite三个强制性论点,例如\acrodefindefinite{LD}{an}{a}。由于您只使用了两个参数,因此您的示例会导致错误。请参阅手册以了解有关如何使用它的更多信息。

为了避免从首字母缩略词列表链接到首字母缩略词的使用,您可以本地重新定义\AC@hyperref 里面环境。为此,请添加

\makeatletter
\def\AC@hyperref[#1]#2{#2}
\makeatother

或者使用\begin{acronym}通用的 LaTeX 钩子机制(lthooks-doc.pdf有关更多信息,请参阅):

\documentclass{article}
\usepackage{hyperref}
\usepackage{acronym}

\makeatletter
\AddToHook{env/acronym/begin}{\def\AC@hyperref[#1]#2{#2}}
\makeatother

\begin{document}

The \ac{QBF} jumps over \iac{LD}. The \ac{LD} jumps over \iac{QBF}.

\section*{List of acronyms}
\begin{acronym}
  \acro{QBF}{quick brown fox}
  \acro{LD}{lazy dog}
\end{acronym}

\end{document}

链接到缩略词列表,但不链接到缩略词的用法

相关内容