[Tex/LaTex] biblatex (authoryear-ibid): all names last-first & name separator

biblatex

So I have some rough fulfillment of a thesis' formal requirements already. The status quo is attached in full in the MWE. It essentially consists of tidbits I asked for on this very site.

Some source-unrelated things that need fixing:

  • the comma behind the author in the references should be omitted.

  • the order of the names should be last-first for all names, but it does not work in the references and in the bibliography, the order only works for the first name.

  • the names in the references are not separated by / (it's currently and).

Since I got the last visit bit for the urlseen-key to work myself (which is huge in relation to my knowledge of biblatex), I think only source-related left is some stuff for InCollection / InProceedings sources (these publications should all be formatted according to this one style definition).

The order of the following elements should be (elements not mentioned should stay as they currently are):

  1. article title

  2. "in:"

  3. name(s) of editor (editors), by the scheme last-first with the first name(s) in initials

  4. "(editor)" or "(editors)"

  5. proceedingstitle/collectiontitle/maintitle

  6. no. of proceedingstitle, if there is any

  7. edition of proceedingstitle, if higher than 1

  8. location of publisher

  9. pages

This is the status quo:

Brandt, A. von/E. Hoffmann (1987):
Die nordischen Länder von der Mitte des 11. Jahrhunderts bis 1448, in: Europa im Hoch und
Spätmittelalter, Seibt, F./Smith, J. (editors), 4th ed., Handbuch der europäischen
Geschichte, no. 2, Klett-Cotta, Stuttgart, pp. 884–917.

An example of what it should be like:

Brandt, A. von/Hoffmann, E. (1987):
Die nordischen Länder von der Mitte des 11. Jahrhunderts bis 1448, in: Europa im Hoch und
Spätmittelalter, in: Seibt, F./Smith, J. (editors): Handbuch der europäischen
Geschichte, no. 2, 4th ed., Klett-Cotta, Stuttgart, pp. 884–917.

MWE

\documentclass[
12pt,
a4paper
]
{scrreprt}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{lmodern}
\renewcommand{\familydefault}{\sfdefault}


\usepackage[
language=auto,
style=authoryear-ibid,
backend=bibtex,
hyperref=true,
isbn=false,
doi=false,
citereset=chapter,
maxcitenames=3,
dashed=false,
sorting=nyt,
firstinits=true,
ibidtracker=true,
maxbibnames=99
]{biblatex}
\usepackage{xpatch}

%% comma after every item for bibiliography entries
\renewcommand*{\newunitpunct}{\addcomma\space}

%%  parentheses around year in references
\renewbibmacro*{cite:labelyear+extrayear}{%
\iffieldundef{labelyear}
{}
{%
\printtext[bibhyperref]{%
\printtext[parens]{%
\printfield{labelyear}%
\printfield{extrayear}}}}}

%% correct order of publisher and location
\renewbibmacro*{publisher+location+date}{%
\newunit
\printlist{publisher}%
\newunit
\printlist{location}%
\newunit}

%%  right order of words 'volume' und 'issue' with comma in front
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\renewbibmacro*{journal+issuetitle}{%
  \usebibmacro{journal}%
  \setunit*{\addspace}%
  \iffieldundef{series}
    {}
    {\newunit
     \printfield{series}%
     \setunit{\addspace}}%
  \usebibmacro{volume+number+eid}
  \setunit{\addcomma\space}% THIS LINE CHANGED to add comma
  \usebibmacro{issue+date}%
  \setunit{\addcolon\space}%
  \usebibmacro{issue}%
  \newunit}

%taken from standard.bbx
\renewbibmacro*{issue+date}{%
  \printtext{%   REMOVED parenthesis here
    \iffieldundef{issue}
      {\usebibmacro{date}}
      {\printfield{issue}%
       \setunit*{\addspace}%
       \usebibmacro{date}}}%
  \newunit}

%% bold bibliography "label" followed by colon and linebreak
\renewbibmacro*{begentry}{\mkbibbold\bgroup}
\xapptobibmacro{date+extrayear}{\addcolon\egroup}{}{}
\renewcommand*{\labelnamepunct}{\par\nobreak}

%% linebreak before URLs and colon before date of last visit
\xpretobibmacro{url+urldate}{\setunit{\newunitpunct\par\nobreak}}{}{}
\DefineBibliographyStrings{english}{%
urlseen = {last visit\addcolon}
}

%% colon before date of last visit
\DeclareFieldFormat{urldate}{\mkbibparens{\bibstring{urlseen}\addcolon\space#1}}

%% no indent
\setlength{\bibhang}{0pt} 

%% one empty line between to bib-entries
\setlength{\bibitemsep}{\baselineskip} %% \baselineskip gibt hier an, dass Zeilenabstand unterhalb des Absatzes der dokumentweite Abstand ist

%% ``(editor)'' or ``(editors)''

\renewbibmacro*{byeditor+others}{%
  \ifnameundef{editor}
    {}
    {\printnames[byeditor]{editor}%
     \setunit{\addspace}%
     \usebibmacro{byeditor+othersstrg}%
     \clearname{editor}%
     \newunit}%
  \usebibmacro{byeditorx}%
  \usebibmacro{bytranslator+others}}
\xpatchbibmacro{byeditor+othersstrg}{\printtext}{\printtext[parens]}{}{}

%%  ``(editor)'' or ``(editors)'' instead of ``(ed. by)''
\DefineBibliographyStrings{english}{%
byeditor = {editor},%
byeditor = {editors},%
issue  = {\lowercase{i}ss\adddot},%
}

%% all titles in references in normal formatting
\DeclareFieldFormat*{citetitle}{#1\isdot} 

%% annul format of any title whatsoever in bibliography and add comma+space
\DeclareFieldFormat*{title}{#1\addcomma\addspace} 

%% Format von Titeln als ganz normal!
\DeclareFieldFormat*{booktitle}{#1\addcomma\addspace}
\DeclareFieldFormat*{journaltitle}{#1\addcomma\addspace}
\DeclareFieldFormat*{issuetitle}{#1\addcomma\addspace}
\DeclareFieldFormat*{maintitle}{#1\addcomma\addspace}
\DeclareFieldFormat*{proceedingstitle}{#1\addcomma\addspace}
\DeclareFieldFormat*{collectiontitle}{#1\addcomma\addspace}
%new
\DeclareFieldFormat*{volume}{\bibstring{volume}~#1\space}
\DeclareFieldFormat*{issue}{\bibstring{issue}~#1}
\DeclareFieldFormat*{number}{\bibstring{number}~#1} %comment to leave number as before
\DeclareFieldFormat*{series}{{#1}\addcomma\space} %comment to leave number as before

%% Names: Lastname, Firstname
\DeclareNameAlias{default}{last-first}

\AtBeginBibliography{%
    %% only slash signs between authors
    \renewcommand{\multinamedelim}{\addslash}
    \renewcommand{\finalnamedelim}{\addslash}
    %% only slash signs between multiple locations
    \renewcommand{\multilistdelim}{\addslash}
    \renewcommand{\finallistdelim}{\addslash}
}

\begin{filecontents*}{lit.bib}
@InCollection{brandt,
  options     = {useprefix=false},
  hyphenation     = {german},
  author      = {von Brandt, Ahasver and Hoffmann, Erich},
  editor      = {Seibt, Ferdinand and Smith, John},
  title       = {Die nordischen L{\"a}nder von der Mitte des 11.~Jahrhunderts bis 1448},
  booktitle   = {Europa im Hoch- und Sp{\"a}tmittelalter},
  series      = {Handbuch der europ{\"a}ischen Geschichte},
  number      = {2},
    edition = {4},
  publisher   = {Klett-Cotta},
  location    = {Stuttgart},
  date        = {1987},
  pages       = {884--917}
}
\end{filecontents*}
\addbibresource{lit.bib}

\begin{document}
\chapter{References}
\begin{itemize}
    \item Something for the one \verb+InCollection+.\footcite[See][p. 5--11]{brandt}
    %\item For the \verb+book+-type.\footcite[See][p. 2]{cicero}
    %\item For the source type \verb+online+.\footcite[See][]{itzhaki}
    %\item For the \verb+article+: Some word.\footcite[See][p. 70]{gillies}
\end{itemize}

\printbibliography
\end{document}

Best Answer

For the name list format add to your preamble:

\DeclareNameAlias{sortname}{last-first}

The bibliography drivers issue \printfield{edition} directly. An easy way to defer printing until after the series/number fields is to clear edition and restore it later. The following code demonstrates this approach. It can also be added to your preamble.

\AtEveryBibitem{%
  \iffieldequalstr{edition}{1}
    {\clearfield{edition}}
    {\savefield*{edition}{\savededition}%
     \clearfield{edition}}}

\renewbibmacro*{series+number}{%
  \restorefield{edition}{\savededition}
  \printfield{series}%
  \setunit*{\addspace}%
  \printfield{number}%
  \setunit{\addcomma\space}%
  \printfield{edition}%
  \newunit}

If you only want to defer printing for @incollection and @inproceedings entry types use this hook instead:

\AtEveryBibitem{%
  \iffieldequalstr{edition}{1}
    {\clearfield{edition}}
    {\ifboolexpr{ test {\ifentrytype{proceedings}} or test {\ifentrytype{incollection}} }
       {\savefield*{edition}{\savededition}%
        \clearfield{edition}}
       {}}}