![使用 hyperref 和 latex-dvips-ps2pdf 时长词汇表条目将换行](https://linux22.com/image/377013/%E4%BD%BF%E7%94%A8%20hyperref%20%E5%92%8C%20latex-dvips-ps2pdf%20%E6%97%B6%E9%95%BF%E8%AF%8D%E6%B1%87%E8%A1%A8%E6%9D%A1%E7%9B%AE%E5%B0%86%E6%8D%A2%E8%A1%8C.png)
我正在使用带有 hyperref 的 glossaries-extra 包。我发现问题发生在我有一个很长的(或不幸放置的)首字母缩略词形式时。如果我没有使用breaklinks=true
hyperref,我会得到一个 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 (V2) 可以看到链接区域被挤压在行之间:
理想情况下,我希望链接能够正常工作,但我对任何整洁的解决方案都非常满意。
信息
- 我正在使用 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
):
此设置不影响\glsxtrfull
或\glsxtrlong
,但在这种情况下您可以使用星号形式\glsxtrfull*{lng}
或\glsxtrlong*{lng}
来隐藏超链接。