15

I'm currently usin biblatex with the following settings:

\usepackage[firstinits=true, sorting=nyt, maxbibnames=99]{biblatex}

%Document stuff...

\printbibliography

The resulting bibliography is good looking, but I'm missing two details:

  • Authors are written with the first name first (although they seem to be sorted on the last name). What I want is last names first.
  • The year is put together with the journal/publisher. I want it after the authors.

For example. What I get is

J. J. Monaghan. “Smoothed particle hydrodynamics”. In: Reports on Progress in Physics 68.8 (2005), pp. 1703–1759. issn: 0034-4885. doi: 10.1088/0034-4885/68/8/R01.

What I want is

Monaghan, J. J. (2005) “Smoothed particle hydrodynamics”. In: Reports on Progress in Physics 68.8, pp. 1703–1759. issn: 0034-4885. doi: 10.1088/0034-4885/68/8/R01.

Is it possible to do this with some settings or do I have to modify the style file?

Thorsten
  • 12,872
Paul
  • 1,749

1 Answers1

16

One possibility would be to simply switch to style=authoryear. However, this will not only change the position of the year, but also remove the label number of bibliography entries (and change the formatting of citations). Workaround: Declare bibstyle=authoryear and add the bibliography environment definitions of the numeric bibstyle.

To change the order of names, use \DeclareNameAlias. See this question for details.

\documentclass{article}

\usepackage[bibstyle=authoryear,firstinits=true,maxbibnames=99]{biblatex}

\DeclareFieldFormat{bibentrysetcount}{\mkbibparens{\mknumalph{#1}}}
\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{#1}}

\defbibenvironment{bibliography}
  {\list
     {\printtext[labelnumberwidth]{%
    \printfield{prefixnumber}%
    \printfield{labelnumber}}}
     {\setlength{\labelwidth}{\labelnumberwidth}%
      \setlength{\leftmargin}{\labelwidth}%
      \setlength{\labelsep}{\biblabelsep}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}}%
      \renewcommand*{\makelabel}[1]{\hss##1}}
  {\endlist}
  {\item}

\DeclareNameAlias{sortname}{last-first}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@misc{A01,
  author = {Author, A. and Buthor, B.},
  year = {2001},
  title = {Alpha},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}

Some text \autocite{A01}.

\printbibliography

\end{document}

EDIT: Removed package option sorting=nyt because this is the default for bibstyle=authoryear.

enter image description here

lockstep
  • 250,273