[Tex/LaTex] Manually URL linebreak with Biblatex

biblatexline-breakingurls

First I should say that I don't have much experience with LaTeX.

I'm using BibLaTeX and Biber.

My Problem: I have a (justified) bibliography with long URL's containing long words. BibLaTeX makes a linebreak at a place with a slash. But I want to make that linebreak in the following word.

In the minimal example: I want to do the linebreak at: Markt-beobachtung.

The aim is that in the second line there aren't that big spaces between the letters, words, slashes. And that the second line doesn't start with //.

I'm trying to do this for 3 hours now, so I really appreciate your help.

Here is the .tex file.

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

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

And that's the 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
}

Best Answer

The package biblatex loads the package url. The list of characters that allow line-breaks is given by \UrlBreaks and \UrlBigBreaks, which have the format \do\c for each character c. For more information read the documentation.

The default setting of \UrlBreaks is

\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}%

To allow more break points you can add

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

for ordinary symbols and you can do

\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}

for breakpoints after letters.

In the same way you can setup the command \UrlNoBreaks to define symbols/letters where no linebreaks are allowed. The default setting is:

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

The commands using the special symbol @. So you need \makeatletter/\makeatother. Please refer the question What do \makeatletter and \makeatother do? for more information.