如何允许 latex-dvips-ps2pdf 编译的 PDF 中的长超链接换行?

如何允许 latex-dvips-ps2pdf 编译的 PDF 中的长超链接换行?

我正在使用将选项传递给 的latex-dvips-ps2pdf步骤。以下代码片段-Ppdfdvips

\documentclass{article}

\usepackage[colorlinks]{hyperref}
\usepackage{breakurl}
\hypersetup{pdfborder={0 0 100}}

\def\emailA{\url{[email protected]}\ }
\def\emailB{\url{[email protected]}\ }
\begin{document}
\emailA or \emailB or \emailB or \emailA or 
\emailA or \emailB or \emailB or \emailA or 
\emailA or \emailB or \emailB or \emailA or 
\emailA or \emailB or \emailB or \emailA or 
\emailA or \emailB or \emailB or \emailA or 
\emailA or \emailB or \emailB or \emailA or 
\emailA or \emailB or \emailB or \emailA or 
\end{document}

产生如下输出。

在此处输入图片描述

有什么技巧可以解决这个问题吗?

答案1

即使借助该breakurl包,您的示例仍会产生溢出框。这是因为breakurl只会在以下符号之一之后:/.?#&_,;!且在出现任何符号之前中断 URL %

为了解决这个问题,您有两种选择:使用\sloppy(这会使间距看起来非常糟糕)或在适当的位置手动插入一些空格,以帮助包找到适合 URL 的断点。

在以下示例中,我展示了示例的简化版本,其中包含三种变体:第一个示例显示了使用 获得的默认输出breakurl;在第二个示例中,我手动插入了一些\hspaces,在第三个示例中,我使用了\sloppy。由您来决定最后两种方法中的哪一种看起来不那么丑陋并且更实用。

我以前draft能更清楚地看到溢出的框。代码必须通过 latex 进行编译。

\documentclass[draft,10pt]{article}

\usepackage[colorlinks]{hyperref}
\usepackage{breakurl}
\hypersetup{pdfborder={0 0 100}}

\def\emailA{\url{[email protected]}\ }
\def\emailB{\url{[email protected]}\ }
\begin{document}

The example:

\emailA or \emailB or \emailB or \emailA or
\emailA or \emailB or \emailB or \emailA or 
\emailA or \emailB or \emailB

\vspace{1cm}

The example with \verb+\hspace+s manually inserted: 

\hspace*{-4pt}\emailA or \emailB or \emailB or \emailA\hspace{3pt} or\hspace{4pt} 
\emailA or \emailB or \emailB or \emailA or 
\emailA or \emailB\hspace{3pt} or\hspace{3pt} \emailB

\vspace{1cm}

The example with \verb+\sloppy+: 

\begingroup
\sloppy
\emailA or \emailB or \emailB or \emailA or
\emailA or \emailB or \emailB or \emailA or 
\emailA or \emailB or \emailB\par
\endgroup

\end{document}

答案2

尝试这个。

\documentclass{article}
\usepackage[breaklinks=true]{hyperref}
\begin{document}
If you have any questions, please don't hesitate to contact me
at \url{mailto:[email protected]}.
\end{document}

使用\href,您需要\nolinkurl在第二个参数中使用。

\href{mailto:[email protected]}{\nolinkurl{[email protected]}}

答案3

我终于找到了一个解决方案,这可能会引起所有在 LaTeX 中显示长 URL 时遇到问题的人的兴趣:我与 Vilar(-package 的维护者breakurl)进行了一些交谈,他能够按照我建议的方式扩展他的软件包的破坏可能性。

因此,最新版本中的新选项anythingbreaks使链接看起来很好,因为它们保持在文本边框的范围内。


你自己看:

完全没有:

没有


标准行为:

中断网址


任何中断:

选择任何中断

另请在此处查看我的问题:Biblatex:DVI 模式下 URL 破解不起作用

答案4

看看breakurl包——文档的第 1 页包含了您问题的答案。

相关内容