这个网站上有几个问题(例如这里和这里) 人们在制作可点击 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 跨越页面边界。如果您遇到此类问题,请尝试指定您的驱动程序。