使用 hyperref 和 latex-dvips-ps2pdf 时长词汇表条目将换行

使用 hyperref 和 latex-dvips-ps2pdf 时长词汇表条目将换行

我正在使用带有 hyperref 的 glossaries-extra 包。我发现问题发生在我有一个很长的(或不幸放置的)首字母缩略词形式时。如果我没有使用breaklinks=truehyperref,我会得到一个 badbox。如果我使用开关,breaklinks=true那么可点击的链接最终会被挤压在行之间。

\documentclass[]{memoir}

% V1 Causes a bad box
%\usepackage[]{hyperref}

% V2 Link box does not cover link
\usepackage[breaklinks=true]{hyperref}

\usepackage[acronyms,toc,symbols]{glossaries-extra}
\setabbreviationstyle[acronym]{long-short}
\newacronym{lng}{LONG}{This is a long form of an acronym which is very very very very very very very very long}

\begin{document}
Here is a long acronym: \gls{epc}
\end{document}

未使用 breaklinks=true (V1) 的输出显示 badbox: 不使用 breaklinks=true 的输出

使用 breaklinks=true (V2) 可以看到链接区域被挤压在行之间: 使用 breaklinks=true 的输出

理想情况下,我希望链接能够正常工作,但我对任何整洁的解决方案都非常满意。

信息

  • 我正在使用 Ghostscript V9.23 旧的 Ghostscript 被牵连这个问题
  • 我的工具链是atex-dvips-ps2pdf。我想保留它,因为它有助于包含 .eps 图形。

答案1

这是建议的解决方案@leandriis在评论中(非常感谢)。

只需加载hypdvips只需在序言中hyperref。还有 cleverref如果您正在使用它。

这是一个固定的 MWE:

\documentclass[]{memoir}

% Causes a bad box - now fixed!
\usepackage[]{hyperref}

\usepackage[acronyms,toc,symbols]{glossaries-extra}
\setabbreviationstyle[acronym]{long-short}
\newacronym{lng}{LONG}{This is a long form of an acronym which is very very very very very very very very long}

% If you are using cleverref, load this before hypdvips
%\usepackage{cleverref}

% Added package to solve the problem
\usepackage[]{hypdvips}

\begin{document}
Here is a long acronym: \gls{lng}
\end{document}

请注意,链接框仅能在支持 PDF 1.6 或更高版本的 PDF 查看器中正确显示。(感谢@Heiko Oberdiek为了这)

以下是在不支持 PDF 1.6 的 PDF 查看器中的解决方案:

解决方案未正确显示

以下是完整的解决方案,在 Acrobat Reader 中查看相同的输出:

问题彻底解决

此解决方案允许您继续使用latex-dvips-ps2pdf工具链。

答案2

由于您使用的是long-short缩写样式(而不是long-short-desc附带说明的样式),因此首次使用时使用超链接没有任何好处,因为首字母缩略词列表中没有额外信息(位置列表除外)。因此,另一种方法是首次使用时仅针对类别禁用超链接acronym

\documentclass[]{memoir}

\usepackage{hyperref}

\usepackage[acronyms,symbols]{glossaries-extra}

\makeglossaries

% no hyperlink on first use for entries with category=acronym
\glssetcategoryattribute{acronym}{nohyperfirst}{true}

\setabbreviationstyle[acronym]{long-short}
\newacronym{lng}{LONG}{This is a long form of an acronym which is very very very very very very very very long}

% for comparison:
\glsxtrnewsymbol[description={Archemedes' constant}]{pi}{\ensuremath{\pi}}

\newglossaryentry{sample}{name={sample},description={an example}}

\begin{document}
A \gls{sample} term for comparison.

Here is a long acronym: \gls{lng}.

Here's the next use: \gls{lng}.

And a symbol \gls{pi} for comparison.

\printglossaries
\end{document}

这不会影响sample一般术语(具有category=general)或pi符号(具有category=symbol):

比较的示例术语。这是一个长首字母缩略词:这是一个首字母缩略词的长形式,非常非常非常非常非常非常非常长(LONG)。这是下一个用法:LONG。以及用于比较的符号 π。

此设置不影响\glsxtrfull\glsxtrlong,但在这种情况下您可以使用星号形式\glsxtrfull*{lng}\glsxtrlong*{lng}来隐藏超链接。

相关内容