使用 Biblatex 手动换行 URL

使用 Biblatex 手动换行 URL

首先我要说的是,我对 LaTeX 没有太多经验。

我正在使用 BibLaTeX 和 Biber。

我的问题:我有一个(对齐的)参考书目,其中包含长 URL,其中包含长单词。BibLaTeX 在带有斜线的地方换行。但我想在下一个单词中换行。

在最小的例子中:我想在 Markt-beobachtung 处进行换行。

目的是使第二行中的字母、单词和斜线之间的空格不要太大。并且第二行不以 开头//

我现在已经尝试做了 3 个小时,所以我非常感谢您的帮助。

这是.tex文件。

\documentclass[oneside]{scrbook}
\usepackage[backend=biber,style=alphabetic]{biblatex}
\usepackage[ngerman]{babel}
\bibliography{test_bib.bib}

\begin{document}
\cite{bundesnetzagentur}
\printbibliography
\end{document}

这就是test_bib.bib

@ONLINE{bundesnetzagentur,
author = {Bundesnetzagentur},
title = {Teilnehmerentwicklung im Mobilfunk},
year = {2012},
url = {http://www.bundesnetzagentur.de/DE/Sachgebiete/Telekommunikation/Marktbeobachtung/Mobilfunkteilnehmer/Mobilfunkteilnehmer_node.html },
hyphenation=ngerman
}

答案1

软件包biblatex加载包url。允许换行的字符列表由\UrlBreaks和给出,每个字符的\UrlBigBreaks格式为。有关更多信息,请阅读文档。\do\cc

默认设置\UrlBreaks

\def\UrlBreaks{\do\.\do\@\do\\\do\/\do\!\do\_\do\|\do\;\do\>\do\]%
  \do\)\do\,\do\?\do\'\do+\do\=\do\#}%
\def\UrlBigBreaks{\do\:\do@url@hyp}%

为了允许更多断点,您可以添加

\g@addto@macro{\UrlBreaks}{\UrlOrds}

对于普通符号,你可以这样做

\g@addto@macro{\UrlBreaks}{%
  \do\/\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%
  \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}

字母后的断点。

以同样的方式,您可以设置命令\UrlNoBreaks来定义不允许换行的符号/字母。默认设置为:

\def\UrlNoBreaks{\do\(\do\[\do\{\do\<}%

使用特殊符号的命令@。因此您需要\makeatletter/\makeatother。请参考问题以及\makeatletter\makeatother做什么?了解更多信息。

答案2

这不是很好,但如果你想手动完成,那么你可以手动完成:

@online{bundesnetzagentur,
author = {Bundesnetzagentur},
title = {Teilnehmerentwicklung im Mobilfunk},
year = "2012",
addendum = "\texttt{\href{http://www.bundesnetzagentur.de/DE/Sachgebiete/Telekommunikation/Marktbeobachtung/Mobilfunkteilnehmer/Mobilfunkteilnehmer_node.html}{http://www.bundesnetzagentur.de/DE/Sachgebiete/Telekommunikation/Markt\\beobachtung/Mobilfunkteilnehmer/Mobilfunkteilnehmer\_node.html}}",
hyphenation=ngerman
}

注意:

  1. 它需要hyperref在文档的前言部分加载包。
  2. 正文中的 部分需要替换为 ,href以避免错误。_\_

如果您不一定想要超链接,您可以删除\href大括号中的第一个组,然后您就不需要加载该hyperref包。

对 doi 地址也可以做类似的事情,例如:

addendum = "doi:\href{https://doi.org/10.1023/B:MOON.0000031922.78588.6d}{10.1023/B:MOON.0000031922.785\\88.6d}"

相关内容