默认情况下,BibLaTeX 会在 URL 中的连字符处断行:
\documentclass{article}
\begin{filecontents}{main.bib}
@online{entry,
title = {Title},
subtitle = {Subtitle},
author = {Doe, John},
url = {http://some-quite-long-url-that-contains-hyphens},
}
\end{filecontents}
\usepackage{biblatex}
\addbibresource{main.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
这很容易引起混淆:连字符是作为连字符连接的一部分添加的,还是 URL 中有意义的部分?因此,我想禁止在连字符处对 URL 进行连字符连接。
BibLaTeX 使用该url
包,默认情况下它不会在连字符处破坏 URL,并且我在 BibLaTeX 文档中没有看到有关此行为的提及。
答案1
biblatex
有自己的 URL 设置\biburlsetup
(第 3.16 版第 285-324 行biblatex.def
)。默认\biburlsetup
包含\def\UrlBigBreaks{\do\:\do\-}%
,因此明确允许在连字符处换行。我们可以通过\UrlBigBreaks
在 中更改 来撤消该操作\appto\biburlsetup
。
\documentclass{article}
\usepackage{biblatex}
\appto\biburlsetup{%
\def\UrlBigBreaks{\do\:}}
\begin{filecontents}{\jobname.bib}
@online{entry,
title = {Title},
subtitle = {Subtitle},
author = {Doe, John},
url = {http://some-quite-long-url-that-contains-hyphens},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
当然,不允许在连字符处断开 URL 会使许多“现代”URL 极难断开。如果 URL 的排版字体与正文不同,大多数读者可能会被警告 URL 中出现的任何连字符都是真实的,而不是由连字符引起的。
答案2
您可以添加\do\-
到\UrlNoBreaks
:
\def\UrlNoBreaks{\do\-\do\(\do\[\do\{\do\<}%
但是正如你从下面的例子中看到的那样,这样 url 就无法中断,而且结果很难看:
平均能量损失
\documentclass{article}
\begin{filecontents}[overwrite]{main.bib}
@online{entry,
title = {Title},
subtitle = {Subtitle},
author = {Doe, John},
url = {http://some-quite-long-url-that-contains-hyphens},
}
\end{filecontents}
\usepackage{lipsum}
\usepackage{biblatex}
\addbibresource{main.bib}
\def\UrlNoBreaks{\do\-\do\(\do\[\do\{\do\<}%
\begin{document}
\lipsum[11]
\nocite{*}
\printbibliography
\end{document}