1

I've been trying to create my own bibilography-style for some time now. In principle I managed it with a custom .bst-file, but it feels like a pain in the *** if you want to make a change or add new entry-types for example. For this reason I wanted to switch to Biblatex. The style that comes closest to the one I'd like to have is authoryear-comp. But there are some things I'd like to have different.

  1. I would like to have the date at the end of a bibliography entry.
  2. If there are multiple authors, the authors should still be listed with surname, first name and always be separated by a semicolon.

The bibilography in the example should look like this:

Boltzmann, Ludwig; Schrödinger, Erwin und Heisenberg, Werner: "This is a long title of article B". In: Some Science Journal. 1970

Einstein, Albert: "This is a long title of pdhThesis A". Diss. Example School, p.42-125. 1950

Here is my current code. For compatibility with my old natbib \citep{}-citations I use the natbib-key of biblatex.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{lmodern}
\usepackage{filecontents}


\begin{filecontents*}{\jobname.bib}
@article{articleA,
title={This is a long title of article A},
author={Albert Einstein},
journal={Some scienece journal},
volume={1},
number={4},
pages={42--125},
year=1950,
publisher={Hellsevier}
}

@article{articleB,
title={This is a long title of article B},
author={Ludwig Boltzmann and Erwin Schrödinger and Werner Heisenberg},
journal={Another science journal},
volume={42},
number={1},
pages={43--49},
year=1970,
publisher={Hellsevier}
}
\end{filecontents*}

\usepackage[
    backend = biber,
    style = authoryear-comp,
    maxcitenames = 3,
    maxbibnames = 5,
    sorting = nyt,
    natbib
]{biblatex}

\selectlanguage{ngerman}
\addbibresource{\jobname.bib}

\begin{document}
This is a test for citation \citep{articleA}. And here is another test \citep{articleB}.
\printbibliography
\end{document}

Which produes

enter image description here

  • 1
    You can probably get away with very little for these. Use citestyle = authoryear-comp, and bibstyle = authortitle, for the first requirement and \DeclareNameAlias{sortname}{family-given} for the second. – gusbrs Oct 30 '18 at 12:42
  • 1
    Ah, and \DeclareDelimFormat{multinamedelim}{\addsemicolon\space} for the third. – gusbrs Oct 30 '18 at 12:51
1

You could achieve these results with very little fiddling, using biblatex's customization interface.

As to your requirement of having the date to the end of the entry in the bibliography, you could combine a different bibstyle to your chosen citation style in biblatex's options. bibstyle=authortitle is not incompatible with authoryear (and variants) citation style. But notice that the differences between the two bibstyles are meant to make it easier to find an entry in the bibliography when cited with authoryear (the year gets close to the author, towards the beginning of the entry).

In case you do choose to use bibstyle=authortitle, you should also set the date to include the dateextra part (as well remembered by @moewe, in the comments), with:

\renewbibmacro*{date}{\printdateextra}

For the desired changes in name lists, you can use:

\DeclareNameAlias{sortname}{family-given}
\DeclareDelimFormat{multinamedelim}{\addsemicolon\space}

In full:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{lmodern}
\usepackage{filecontents}


\begin{filecontents*}{\jobname.bib}
@article{articleA,
title={This is a long title of article A},
author={Albert Einstein},
journal={Some scienece journal},
volume={1},
number={4},
pages={42--125},
year=1950,
publisher={Hellsevier}
}

@article{articleB,
title={This is a long title of article B},
author={Ludwig Boltzmann and Erwin Schrödinger and Werner Heisenberg},
journal={Another science journal},
volume={42},
number={1},
pages={43--49},
year=1970,
publisher={Hellsevier}
}
\end{filecontents*}

\usepackage[
    backend = biber,
    citestyle = authoryear-comp,
    bibstyle = authortitle,
    maxcitenames = 3,
    maxbibnames = 5,
    sorting = nyt,
    natbib
]{biblatex}

\renewbibmacro*{date}{\printdateextra}
\DeclareNameAlias{sortname}{family-given}
\DeclareDelimFormat{multinamedelim}{\addsemicolon\space}

\addbibresource{\jobname.bib}

\begin{document}
This is a test for citation \citep{articleA}. And here is another test \citep{articleB}.
\printbibliography
\end{document}

enter image description here

  • 1
    I suggest something like \renewbibmacro*{date}{\printdateextra} in addition in case there are several works by the same author from the same year. And I strongly agree that it would be better to have the year closer to the beginning of the entry (as in the authoryear bibliography styles) not least because that lets you handle dates with a finer precision than year more naturally. – moewe Oct 30 '18 at 13:31
  • 1
    The \selectlanguage{ngerman} should not be needed, I think (it was in the original MWE, but you should be able to simply drop it). – moewe Oct 30 '18 at 13:32
  • @moewe, Uff! I forgot dateextra, that must mean I'm rusty. Thanks! It's duly corrected. – gusbrs Oct 30 '18 at 13:40

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.