Hyperref + \url:带破折号的长 URL 不会中断

Hyperref + \url:带破折号的长 URL 不会中断

我发现 PdfLaTeX 的行为相当奇怪。在这个例子中

\documentclass{article}
\usepackage[breaklinks]{hyperref}
\begin{document}
\url{http://www.emarketer.com/blog/index.php/quick-stat-smartphone-users-account-38-mobile-phone-users/}
\end{document}

PdfLaTeX 不会破坏 URL 并创建过长的行。但是,如果我将 \url 替换为 \href,如下所示:

\documentclass{article}
\usepackage{hyperref}
\begin{document}
\href{http://www.emarketer.com/blog/index.php/quick-stat-smartphone-users-account-38-mobile-phone-users/}{http://www.emarketer.com/blog/index.php/quick-stat-smartphone-users-account-38-mobile-phone-users/}
\end{document}

我得到了断线,但链接的字体当然不再正确(正常字体而不是文本字体)。为什么 URL 不在破折号处断线?我该怎么做才能得到排版良好的断线链接?

答案1

url使用以下选项明确加载包hyphens

\usepackage[hyphens]{url}
\usepackage{hyperref}

默认情况下,该url包不将连字符视为合法的断点。

答案2

当 PDFLaTeX 抱怨“包 url 的选项冲突”时,mhp 的上述回答可能无法提供解决方案。

造成这种情况的原因可能是 hyperref 包也加载了该包。如果 hyperref 在 url 包之前加载,则会出现此错误,因为 url 包随后会使用不同的选项加载两次:一次没有选项,一次有hyphens选项(这总是会导致冲突)。

如果必须在 hyperref 之后加载 url,可以先hyphens用以下PassOptionsToPackage命令指定选项:

\PassOptionsToPackage{hyphens}{url}
\usepackage{hyperref}
\usepackage{url}

请注意,在加载 url 包时不需要再次提供连字符选项(或者根本不需要明确加载 url)。

我注意到 biblatex 包显然也与 url 冲突。因此,biblatex 和 hyperref 也一样:在它之前加载 url 或使用PassOptionsToPackage

致 moewe 和 Heilo;我知道,我很抱歉,我本来会的,但正如你所说,在我拥有一定的“声誉”之前,我不能发表评论。所以我会编辑我的“答案”,把它变成一个真正的答案。也许我现在应该积累足够的声誉 ;-)

奇怪的是,我的另一篇帖子被删除了,但它仍然建议我编辑那篇帖子,而不是创建新帖子!(它仍然可见,是红色的!)

答案3

该软件包[hyphens]的选项url似乎并不总是有效。但现在,有一个xurl软件包可以满足您的要求。

似乎您可以在任何地方加载它,但它与有相互作用biblatex

这个帖子了解更多信息。

相关内容