长 URL 中是否有换行符?Breakurl 不会中断它

长 URL 中是否有换行符?Breakurl 不会中断它

这个网站上有几个问题(例如这里这里) 人们在制作可点击 URL 时,为解决水平盒子溢出问题而苦恼。我读过并尝试过那里的答案,但似乎都不适合我,所以我想问一个新问题。

这是我的问题的一个简单例子:

\documentclass[english]{amsart}
\usepackage[bookmarksopen,bookmarksdepth=2,breaklinks=true]{hyperref}
\usepackage[anythingbreaks]{breakurl}
\begin{document}
Here's a longish sentence so I can just keep track of where the
end of the page is as far as normal line breaks are concerned.

However, Blah de blah de blah de blah
blah ~\href{https://blahblaaaaaaaaaaaaaaa.aaaaaaaaa.com/xxxx/xx/xx/blaaah-bl-blaaaah-bla/}{https://blahblaaaaaaaaaaaaaaa.aaaaaaaaa.com/xxxx/xx/xx/blaaah-bl-blaaaah-bla/} an argument which shows that\ldots
\end{document}

我在写的一篇论文中有一个句子的语法/长度与此非常相似(包括 URL,其长度与我引用的 URL 相同,并且斜线、连字符、句号都位于同一位置)。当我运行上述代码时,pdflatex我得到了一个溢出的水平盒子,并且如下:

在此处输入图片描述

我不在乎该 URL 在哪里中断,但我不愿意亲自中断它,因为这篇论文已被期刊接受,如果我以临时的方式修复它,他们可能会玩弄边距等并最终再次中断某些内容。

我曾以为breakurl,尤其是其相对较新的anythingbreaks选项,会将 URL 拆分以使其适合页面。如您所见,它并没有这样做。

以下是我尝试过的方法:

  • \usepackage[hyphens]{url}在各处添加。

  • 发现这breakurl只会破坏其中一个 URL 之后的 URL :/.?#&_,;!(但 URL 中有一个 . (第一个),其后是破坏 URL 的最佳位置)

  • 使用\sloppy(未改变任何内容)

  • \def\UrlBreaks{\do\/\do-\do.}(未改变任何内容)

我想在这种情况下我想要的是中断,但blahblaaaaaaaaaaaaaaa.我不明白为什么我无法说服 URL 在此处中断。有人可以帮忙吗?

更糟糕的是,当我的合著者将论文上传到 ArXiv 时,ArXiv 因 TeX 而阻塞,可能是因为它没有最新的,breakurl所以阻塞了[anythingbreaks],也可能是因为它抱怨与 的选项冲突hyperref。不过,一旦我破解了这个 URL,这个问题可能会消失。

答案1

编辑2:

根据 hyperref-manual,驱动程序会自动设置断链。尝试手动覆盖会导致 QO 遇到的行为。

如果你没有在

\href{long URL goes here}{here goes a masking label}

那么您可以简单地使用(使用\usepackage{hyperref}\usepackage[hyphens]{url}

\url{long URL}

从而获得正确排版的 URL。

代码如下。结果见1

\documentclass[english]{amsart}
\usepackage[
bookmarksopen,
bookmarksdepth=2,
breaklinks=true
]{hyperref}

\begin{document}
Here's a longish sentence so I can just keep track of where the
end of the page is as far as normal line breaks are concerned.

However, Blah de blah de blah de blah
blah ~\url{https://blahblaaaaaaaaaaaaaaa.aaaaaaaaa.com/xxxx/xx/xx/blaaah-bl-blaaaah-bla/} an argument which shows that\ldots
\end{document}

上述代码的结果

编辑:

相同的代码,但有一些改进。结果见2

\documentclass[english]{amsart}
\usepackage{xcolor}
\usepackage[
bookmarksopen,
bookmarksdepth=2,
%breaklinks=true
colorlinks=true,
urlcolor=blue]{hyperref}

\begin{document}

%using \url{URL}
However, Blah de blah de blah de blah
blah \url{https://blahblaaaaaaaaaaaaaaa.aaaaaaaaa.com/xxxx/xx/xx/blaaah-bl-blaaaah-bla/} an argument which shows that\ldots

%using \href{URL}{text}
\href{https://blahblaaaaaaaaaaaaaaa.aaaaaaaaa.com/xxxx/xx/xx/blaaah-bl-blaaaah-bla/}{here is link to web}

\end{document}

改进代码的结果

答案2

我正在使用 LuaTex,它把带下划线的 URL 扩展到页面边界之外,其余链接上方的线条看起来很糟糕。它们确实是\url语句而不是\href语句。注意:我确实读过手册!虽然它说它经常可以检测到驱动程序,但并不总是可以。我指定

\usepackage[unicode=true,luatex]{hyperref}

并且它开始自动阻止 URL 跨越页面边界。如果您遇到此类问题,请尝试指定您的驱动程序。

相关内容