13

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)

4 Answers 4

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

6
  • 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
    Commented Sep 9, 2011 at 12:31
  • @JohannesL: Now it works ;-) Commented Sep 9, 2011 at 12:48
  • I also found a version were it works (in my output, the URL wasn't colored anyway)
    – Johannes L
    Commented Sep 9, 2011 at 12:50
  • @JohannesL: I used colorlinks=true to demonstrate a link. The boxes around a link are not printed. Commented Sep 9, 2011 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
    Commented Apr 23, 2015 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.

1
  • 1
    This allows breaks within the url, it does not make the url start on a new line as requested. Commented Apr 14, 2016 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}}}

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .