![使用 biblatex 进行 URL 换行](https://linux22.com/image/238752/%E4%BD%BF%E7%94%A8%20biblatex%20%E8%BF%9B%E8%A1%8C%20URL%20%E6%8D%A2%E8%A1%8C.png)
如何允许长 URL 在任何时候换行。这是在参考书目中,而不是正文中。我试图节省空间,所以不想添加额外的空格,例如让它只在斜线处换行,就像默认情况下那样。我正在使用biblatex
+ biber
。
答案1
答案问题linkedin domwass 的评论中提到了包url
。此包已由加载。它是使用中定义的biblatex
命令进行配置的。\biburlsetup
biblatex.def
\UrlBreaks
URL 在、\UrlBigBreaks
和中指定的字符集处断开\UrlSpecials
。\UrlBigBreaks
这将防止在重复字符之间发生断开(例如,下面代码中的--
和)。处理文档字体中可能不存在的字符处的断开。::
\UrlSpecials
升级到最新版本biblatex
应该可以解决您的问题,因为\biburlsetup
在版本中进行了扩展,允许在许多不同的字符处设置断点。作为参考,以下是来自版本1.4c
的定义:\biburlsetup
1.7
\newcounter{biburlnumpenalty}
\newcounter{biburlucpenalty}
\newcounter{biburllcpenalty}
\newcommand*{\biburlsetup}{%
\Urlmuskip=0mu plus 3mu\relax
\mathchardef\UrlBigBreakPenalty=100\relax
\mathchardef\UrlBreakPenalty=200\relax
\def\UrlBigBreaks{\do\:\do\-}%
\def\UrlBreaks{%
\do\.\do\@\do\/\do\\\do\!\do\_\do\|\do\;\do\>\do\]\do\)\do\}%
\do\,\do\?\do\'\do\+\do\=\do\#\do\$\do\&\do\*\do\^\do\"}%
\ifnumgreater{\value{biburlnumpenalty}}{0}
{\def\do##1{\appto\UrlSpecials{\do##1{\mathchar`##1 \penalty\value{biburlnumpenalty}}}}%
\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9\do\0}
{}%
\ifnumgreater{\value{biburlucpenalty}}{0}
{\def\do##1{\appto\UrlSpecials{\do##1{\mathchar`##1 \penalty\value{biburlucpenalty}}}}%
\do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J
\do\K\do\L\do\M\do\N\do\O\do\P\do\Q\do\R\do\S\do\T
\do\U\do\V\do\W\do\X\do\Y\do\Z}
{}%
\ifnumgreater{\value{biburllcpenalty}}{0}
{\def\do##1{\appto\UrlSpecials{\do##1{\mathchar`##1 \penalty\value{biburllcpenalty}}}}%
\do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j
\do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t
\do\u\do\v\do\w\do\x\do\y\do\z}
{}%
\let\do=\noexpand}
1.4c
与的版本不同1.6
,此新定义默认不再允许在数字、大写字母和小写字母处设置断点。可以通过将惩罚计数器设置为0
和之间的值10000
(不包括)来允许在这些字符处设置断点。例如:
\setcounter{biburlnumpenalty}{100}
\setcounter{biburlucpenalty}{100}
\setcounter{biburllcpenalty}{100}
\defcounter
可以使用包中的命令etoolbox
(也由 加载)在本地重置惩罚biblatex
。例如:
\defcounter{biburlnumpenalty}{3000}
\defcounter{biburlucpenalty}{6000}
\defcounter{biburllcpenalty}{9000}
要将此新设置与旧版本一起使用biblatex
,只需将定义代码\biburlsetup
及其惩罚计数器放在序言中,然后替换\newcommand
为\renewcommand
。
答案2
即使是网站参考,我的 Zotero 也不会url = ...
为 .bib 文件导出一行,而只是howpublished = {https://...}
。这导致参考书目中的某些 URL(我不得不使用 multibib,而不是 bibtex)导致水平框过满,并且 URL 会不带换行符地从文档中弹出。显然,幕后没有 \url,但(我认为?)存在来自 hyperref 包的 \href,它具有不同的行为。
在我尝试的众多选项中,我最终手动将 替换howpublished = {https://...}
为howpublished = {\url{https://...}}
来修复断开的链接。这样 URL 看起来可能很难看,但可以使用 来\urlstyle{rm}
修复\usepackage[hyphens]{url}
。