5

I'm using biblatex+biber and want to achieve that after the authors are printed a new line should begin, then the title should be printed and again a new line should start, where the rest is printed as usual. This solution comes close to my problem, however I use the default style and the title is still not on a separate line.

Here is an example

Author1, Author2, and Author3. Title. In: Proceedings. Ed. John Doe. World. 2017

and how it should look like

Author1, Author2, and Author3.
Title.
In: Proceedings. Ed. John Doe. World. 2017

Below is a minimal working example:

\documentclass{scrartcl}

\usepackage{biblatex}
\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
@inproceedings{inProc,
  author    = {Author11 and Author12 and Author13},
  editor    = {Editor1},
  title     = {Title1},
  booktitle = {Booktitle1},
  year      = {2017},
  pages     = {50--67},
  publisher = {Publisher1}
}
@article{article,
  author  = {Author21 and Author22},
  title   = {Title2},
  journal = {Journal2},
  year    = {2007},
  volume  = {29},
  number  = {5},
  pages   = {29:1--29:27}
}
@book{book,
  author    = {Author31},
  title     = {Title3},
  year      = {1970},
  publisher = {Publisher3}
}
@incollection{inCollection,
   author    = {Author4},
   title     = {Title4},
   booktitle = {Booktitle4},
   pages     = {843--993},
   editor    = {Editor4},
   chapter   = {15},
   volume    = {B},
   series    = {Series4},
   publisher = {Publisher4},
   year      = {1990}
}
@techreport{techreport,
  author      = {Author5},
  institution = {Institution5},
  number      = {Number5},
  pages       = {Pages5},
  title       = {Title5},
  year        = {5}
}
@phdthesis{phdthesis,
  author    = {Author6},
  title     = {Title6},
  school    = {School6},
  month     = {Month6},
  publisher = {Publisher6},
  address   = {Address6},
  year      = {6}
}
\end{filecontents*}

\addbibresource{\jobname.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

2 Answers 2

7

The first step is

\DeclareDelimFormat[bib]{nametitledelim}{\newline\bibsentence}

to get a new line after the names.

Then you need something to jump to a new line after the title. Unfortunately, there is no standard delimiter to redefine here. The easiest way that worked for all entry types was the following

\usepackage{xpatch}
\makeatletter
\def\do#1{
  \ifcsdef{blx@bbx@#1}
    {\xpatchbibdriver{#1}
       {\printlist{language}%
        \newunit\newblock}
       {\printlist{language}%
        \printunit{\newline\bibsentence}}
       {}{}}
    {}} 
\abx@doentrytypes
\makeatother

This adds a newline after the language, which in all standard drivers comes right after the title. We use the xpatch package to change the bibliography drivers and apply the change to all drivers with a loop (\abx@doentrytypes is an internal macro that loops over all).

MWE

\documentclass{scrartcl}

\usepackage{biblatex}
\usepackage{filecontents}

\DeclareDelimFormat[bib]{nametitledelim}{\newline\bibsentence}

\usepackage{xpatch}
\makeatletter
\def\do#1{
  \ifcsdef{blx@bbx@#1}
    {\xpatchbibdriver{#1}
       {\printlist{language}%
        \newunit\newblock}
       {\printlist{language}%
        \printunit{\newline\bibsentence}}
       {}{}}
    {}} 
\abx@doentrytypes
\makeatother

\begin{filecontents*}{\jobname.bib}
@inproceedings{inProc,
  author    = {Author11 and Author12 and Author13},
  editor    = {Editor1},
  title     = {Title1},
  booktitle = {Booktitle1},
  year      = {2017},
  pages     = {50--67},
  publisher = {Publisher1}
}
@article{article,
  author  = {Author21 and Author22},
  title   = {Title2},
  journal = {Journal2},
  year    = {2007},
  volume  = {29},
  number  = {5},
  pages   = {29:1--29:27}
}
@book{book,
  author    = {Author31},
  title     = {Title3},
  year      = {1970},
  publisher = {Publisher3}
}
@incollection{inCollection,
   author    = {Author4},
   title     = {Title4},
   booktitle = {Booktitle4},
   pages     = {843--993},
   editor    = {Editor4},
   chapter   = {15},
   volume    = {B},
   series    = {Series4},
   publisher = {Publisher4},
   year      = {1990}
}
@techreport{techreport,
  author      = {Author5},
  institution = {Institution5},
  number      = {Number5},
  pages       = {Pages5},
  title       = {Title5},
  year        = {5}
}
@phdthesis{phdthesis,
  author    = {Author6},
  title     = {Title6},
  school    = {School6},
  month     = {6},
  publisher = {Publisher6},
  address   = {Address6},
  year      = {6}
}
\end{filecontents*}
\addbibresource{\jobname.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

example output


An alternative solution to a loose bibliography like this with block=par is discussed in Bibliography style for BibLaTeX similar to BibTeX+Beamer.

1
  • That works perfectly fine. Thank you for your help!
    – Max Maier
    Feb 6, 2017 at 6:45
3

The following solution will only give the desired result, if all the entries have the "In:", e.g. for articles without a journal, there won't be a new line.

\documentclass{article}
\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
@article{Neu93,
  author = {John von Neumann},
  title = {First Draft of a Report on the EDVAC},
  journaltitle = {IEEE Ann. Hist. Comput. },
  date = {1993},
  volume = {15},
  number = {4},
  pages = {27--75},
}
\end{filecontents*}
\usepackage{biblatex}

\renewcommand*{\labelnamepunct}{\newunitpunct\par}
\renewbibmacro{in:}{\newline In:}


\addbibresource{\jobname.bib}

\begin{document}

\nocite{*}

\printbibliography

\end{document} 

enter image description here

2

You must log in to answer this question.

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