12

Using biblatex with alphabetic style, how could I insert a line break (\\ or \linebreak) before the URL output (with the aim to have less linebreaks within URL)? (I use url and hyperref)

8
\documentclass{scrartcl}
\usepackage{xcolor}
\usepackage[style=authoryear,backend=biber,]{biblatex}
\usepackage[colorlinks=true,urlcolor=red!50!black]{hyperref}
\addbibresource{biblatex-examples.bib}
\DeclareFieldFormat{formaturl}{\newline #1}
\newbibmacro*{url+urldate}{%
\printtext[formaturl]{%
  \printfield{url}}%
  \iffieldundef{urlyear}
    {}
    {\setunit*{\addspace}%
     \printtext[urldate]{\printurldate}}}

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

With DeclaredFieldFormat you can format the whole string of url and urldate. In this case I insert a \newline in front of the ouput.

EDIT:

added printtext

enter image description here

  • thanks, it adds a line.. but it changes the text style, before it was kind of verbatim and now it's like the rest of the text.. How come? – Johannes L Sep 9 '11 at 12:31
  • @JohannesL: Now it works ;-) – Marco Daniel Sep 9 '11 at 12:48
  • I also found a version were it works (in my output, the URL wasn't colored anyway) – Johannes L Sep 9 '11 at 12:50
  • @JohannesL: I used colorlinks=true to demonstrate a link. The boxes around a link are not printed. – Marco Daniel Sep 9 '11 at 12:51
  • If url is not specified for an entry, this adds a new line and a period (the end marker of the url field?). Adding a surrounding \iffieldundef{url}{}{...} fixes this. – Raphael Apr 23 '15 at 16:44
2

I found the following package useful for line breaking an URL. At the preamble, just put \usepackage{breakurl} somewhere after \usepackage{hyperref}. The \burl command is defined and, by default, the package also turns the \url command into a synonym of \burl.

  • This allows breaks within the url, it does not make the url start on a new line as requested. – Andrew Swann Apr 14 '16 at 8:50
0

I think the cleanest solution is to just redefine the corresponding field format. I would replace the \space after "URL" with a \nobreakspace instead of explicitly adding a line break. This allows TeX to decide if a line break is the best solution. (I recommend setting the bibliography \raggedright in order to give TeX some more wiggle room here.)

\DeclareFieldFormat{url}{\mkbibacro{URL}\addcolon\nobreakspace\url{#1}}

If you really want the explicit \newline, you can of course do that as well. I would still keep the \nobreakspace in order to avoid "URL" being on a line by itself.

\DeclareFieldFormat{url}{\newline\mkbibacro{URL}\addcolon\nobreakspace\url{#1}}
0

This was posted by OP as an edit to the question, but it's clearly an answer.

Slightly enhancing @Marco's original answer:

If it should be totally like in the original but with a line break, use

\DeclareFieldFormat{url}{\newline\mkbibacro{URL}\addcolon\space\url{#1}}
\newbibmacro*{url+urldate}{%
 \printfield[url]{url}%   
 \iffieldundef{urlyear}     
 {}     
 {\setunit*{\addspace}%      
 \printtext[urldate]{\printurldate}}}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.