使用Bibtex和hyperref包中的url换行问题

23
这个条目为什么在我的参考文献中显示不正确?
@misc{ann,
    abstract = {ANN是最近邻搜索的一种实现。},
    author = {David M. Mount和Sunil Arya},
    howpublished = {\url{http://www.cs.umd.edu/~mount/ANN/}},
    keywords = {knn},
    posted-at = {2010-04-08 00:05:04},
    priority = {2},
    title = {ANN.},
    url = "http://www.cs.umd.edu/~mount/ANN/",
    year = {2008}
}
@misc{Nilsson96introductionto,       author = {Nilsson,Nils J.},     citeulike-article-id = {6995464},     howpublished = {\url{http://robotics.stanford.edu/people/nilsson/mlbook.html}},     keywords = {*file-import-10-04-11},     posted-at = {2010-04-11 06:52:28},     priority = {2},     title = {机器学习简介:建议教材的早期草案。},     year = {1996} }

alt text


编辑:

我正在使用

\usepackage{hyperref}
不。
\usepackage{url}

当使用url包和hyperref包同时使用时,会出现错误。那么这两个包不能一起使用吗?

我想在pdf文件中使用超链接,因此想使用hyperref包代替url包。我进行了一些搜索,并尝试了一些方法。

\usepackage[hyperindex,breaklinks]{hyperref}

但是仍然没有换行,就像以前一样。我该怎么做?


编辑:

当使用url和hyperref一起时, 如果只是

\usepackage{hyperref}  
\usepackage{url}

使用 LaTeX 编译正常,但链接仍是超链接且没有换行。如果我不使用 hyperref 宏包,则链接会自动换行,但我会失去超链接功能。由于 \url 命令可以在 hyperref 和 url 宏包中使用,我该如何指定使用哪个宏包中的 \url 命令呢?

如果是:

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

使用latex命令编译时会报告与url冲突的问题:

!LaTex错误:选项包url存在冲突。

我想知道该怎么办?

12个回答

22

你应该按照以下顺序使用它们:

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

当您反向使用它们时,会出现此错误。

! LaTex Error: Option clash for package url.

由于hyperref包在内部以没有hypens选项的方式加载url包,然后您想用该选项加载它,因此会发生冲突。

将顺序改变就可以实现您想要的效果,并且不会出现这个错误(由于已经加载了该包,所以hyperref不会再次使用不同选项加载它)

编辑:这是使用pdftex进行的测试,我没有使用其他工具进行测试。

编辑2:

或者如PatrickT在评论中提到的那样:\PassOptionsToPackage{hyphens}{url}如果您正在使用已加载该包的类,例如beamer。


这对我有用!(在hyperref之前包括url,并且不需要使用breakurl)。 - larsr
1
如果您正在使用已经加载该包的类(例如beamer),请使用\PassOptionsToPackage{hyphens}{url} - PatrickT

14

我刚刚遇到了几乎相同的问题,然后发现它可以通过放置以下内容来解决

\PassOptionsToPackage{hyphens}{url}
在这之前
\usepackage[...]{hyperref}

这需要使用beamer类,该类已经加载了hyperref和url包。 - PatrickT

11

如果你指的是太宽的空格,那是因为URL似乎不允许换行。为什么会出现这种情况是另一个问题,答案取决于你的前导(你使用的包等)。原则上,如果正确使用,url包应该允许换行。

编辑 这个问题(及其解决方法)在这里进行描述(由于该网站暂时关闭,因此将您发送到Google缓存)。底线:使用breakurl包、PDFLaTeX或两者都使用。


1
谢谢,AVB!我想在PDF文件中使用超链接,所以我仍然想使用hyperref包,而不是url包。我搜索了一下,尝试了\usepackage[hyperindex,breaklinks]{hyperref},但仍然没有换行,就像之前一样。我该怎么做? - Tim

6
奇怪的是,我加载了url包(没有选项),如果需要,就会在斜杠/处进行断字。 无论如何,这里有一个简单的解决方法:
howpublished = {\url{http://www.cs.umd.edu/}\url{~mount/ANN/}},

手动操作,但它必须将URL拆分成是或否。

这个方法也可以在两个URL之间加上空格来实现,就像这样 howpublished = {url\{...} \url{...}} - mneumann
手动修复是唯一对我有效的方法。如果您希望 URL 在新行上开始,也可以添加手动换行符,例如“\newline\url{}``”。 - PatrickT

4
如果 url 包无法帮助,请尝试以下方法:
\usepackage{xurl}
\usepackage{hyperref}

xurlurl的扩展版本,允许在url的任何位置进行换行。在调用hyperref之前调用xurl

来源:hyperref的breaklinks选项有什么作用吗?


4

对于我来说,只有这个方法有效:

\usepackage[hyphens]{url}
\usepackage{hyperref}
...
\usepackage{biblatex}
\setcounter{biburlnumpenalty}{100}
\setcounter{biburlucpenalty}{100}
\setcounter{biburllcpenalty}{100}

来源: https://tex.stackexchange.com/questions/22854/url-line-breaks-with-biblatex

该网页提供了关于如何使用biblatex实现url自动换行的问题解决方案,其中最常见的方法是使用hyperref宏包中的breakurl选项来强制在url字符串中加入断点。此外,还有一些其他的解决方案被讨论和比较,例如手动插入断点或使用xurl宏包。


3

通常情况下,URL会用连字符连接,但在您的参考文献中似乎没有这样做。当URL无法放在一行时,它们会移到下一行,并且它们之前的文本会被拉伸以填充前面的行。由于只有一个断行位置,因此先前的文本很难完整地适应多行,因此您会得到所有额外的空间。

编辑:当您更改参考文献条目时,恰好以使文本完美适应。这只是一个巧合,您并没有解决问题。

我怀疑将

\usepackage{url}

在您的导言中加入这段代码可以解决此问题。

谢谢,ptomato!我想在PDF文件中使用超链接,所以我仍然想使用hyperref包而不是url包。我搜索了一下,并尝试了\usepackage[hyperindex,breaklinks]{hyperref},但仍然没有像以前那样的换行。我该怎么做? - Tim
同时使用它们。没有任何阻止你同时使用url和hyperref。 - Rob Hyndman
同时使用它们仍然无法工作或报告与url包冲突。 - Tim

2
我添加了这个包:
\usepackage[hyphens]{url}

而且在我的BibTeX中使用了:

howpublished = {**\url{**http://www.......**}**}

并且它可以正常工作。


0
这个简单的解决方案对我很有效:
\usepackage{hyperref} \usepackage{breakurl}
现在URL链接已经完美了。

0
即使对于网站参考文献,我的Zotero在.bib文件中没有导出url = ...行,只有howpublished = {https://...}。这导致参考文献中的一些URL(我使用的是multibib而不是bibtex)导致超宽的hboxes,并且URLs在文档中没有换行而直接溢出。
显然,在底层,没有\url命令,而是(我认为是?)来自hyperref包的\href命令,其行为不同。
在我尝试了很多选项之后,我最终手动将howpublished = {https://...}替换为howpublished = {\url{https://...}}以修复错误的链接。这样URL可能看起来不太好看,但可以在\usepackage[hyphens]{url}之后使用\urlstyle{rm}来修复。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接