0

I use biblatex+biber with some custom orderings. In particular, I desire a very abbreviated bibliography style for my current document as it's very page limited---a grant proposal, basically. I have been able to set up the fields that I want and in the order that I want. But I don't know how to do two things.

  1. Remove initials: Instead of Anonymous Person being displayed as A. Person, I would like it to be simply Person.
  2. Remove the and conjunction. I'd like Smith and Thomas to be Smith, Thomas.

I am using giveninits=true as an optional argument which causes Anonymous to be reduced to A.. I'm guessing that some adjustment to this is required to solve 1.. An extremely hacky \renewcommand{\mkbibnamegiven}[1]{} removes the initials, however it does replace them with a single whitespace. I guess I can probably remove one piece of whitespace with further hacking. This doesn't seem like the correct way to solve 2., though.

I have looked on SE and through our friend the biblatex documentation, but to no avail. It seems like something like

\renewbibmacro{author}{%
    \usebibmacro{name:family}
}

should work. But it doesn't not. I get "Error: Bibliography macro '\isdot' undefined" and no names are printed.


I include as minimal a MWE as I dare---I don't want to risk removing more custom commands which may be having an effect.

\documentclass[]{article}

\usepackage[doi=false,isbn=false,url=false,
    hyperref=auto,
    sorting=nyt,
    maxnames=10,
    maxcitenames=4,
    backend=biber,
    texencoding=auto,
    giveninits=true,
    block=space,
    style = numeric,
    %   style = alphabetic,
    %   style = authoryear-comp,
    %   citestyle = authoryear-comp
]{biblatex}

\DeclareNameAlias{sortname}{labelname}
\DeclareDelimFormat{finalnamedelim}{\addcomma\space}    % works on biblatex 3.7
%\DeclareDelimAlias{finalnamedelim}{multinamedelim}     % doesn't work on 3.7

\DeclareFieldFormat
    [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
{title}{{#1\isdot}}

\DeclareFieldFormat
    [article,book,inbook,incollection,inproceedings,patent,thesis,unpublished, online]
    {date}{\mkbibparens{#1}}
\DeclareFieldFormat
    [article,book,inbook,incollection,inproceedings,patent,thesis,unpublished]
    {volume}{\mkbibbold{#1}}
\DeclareFieldFormat
%   [article,book,inbook,incollection,inproceedings,patent,thesis,unpublished]
    {pages}{\mkbibparens{#1}}


\DeclareBibliographyDriver{article}{%
    \usebibmacro{bibindex}%
    \usebibmacro{begentry}%
    \usebibmacro{author}%
    \setunit{\addspace}%
    \usebibmacro{date}%
    \newunit\newblock
    \usebibmacro{title}%
    \usebibmacro{finentry}%
}


\usepackage{filecontents}
\begin{filecontents}{foo.bib}
    @article{paper,
        author  = {Me, Andrew and Myself, Bethany and I, Charlie},
        title   = {BREAKTHROUGH MATHS},
        year    = {2025}
    }
\end{filecontents}
\addbibresource{foo.bib}



\begin{document}

Citation: \cite{paper}

\printbibliography

\end{document}

1 Answer 1

2

To remove the initials (for standard styles):

\DeclareNameAlias{sortname}{labelname}

To remove "and" between authors:

\DeclareDelimFormat{finalnamedelim}{\addcomma\space}

A better solution, thanks to @moewe (see comments below):

\DeclareDelimAlias{finalnamedelim}{multinamedelim}

Here is a minimal working example:

\documentclass{article}
\usepackage[style=authoryear]{biblatex} 
\addbibresource{biblatex-examples.bib}

\DeclareNameAlias{sortname}{labelname}
\DeclareDelimAlias{finalnamedelim}{multinamedelim}%thanks to @moewe
%\DeclareDelimFormat{finalnamedelim}{\addcomma\space}

\begin{document}  
\nocite{*}
  \printbibliography[title=Collections,type=collection]
  \printbibliography[title=Books,type=book]
  \printbibliography[title=Articles,type=article]
  \printbibliography[title=Articles,type=article]
  \printbibliography[title=Incollections,type=incollection]
\end{document}
17
  • Ivan, you've sorted me out again! Thanks :)
    – Sam OT
    Jan 13, 2021 at 16:17
  • 1
    Instead of \DeclareDelimFormat{finalnamedelim}{\addcomma\space} I'd prefer \DeclareDelimAlias{finalnamedelim}{multinamedelim}, because that makes for a more consistent look if I later want to change multinamedelim.
    – moewe
    Jan 13, 2021 at 16:45
  • 1
    \DeclareNameAlias{sortname}{labelname} will add given name initials or full given names if family names alone are not unique and thus ambiguous, which I consider a good idea, but that might not be desired. In that case disabling the uniquename feature or defining a real name format that only prints the family name would be the way to go.
    – moewe
    Jan 13, 2021 at 16:47
  • @moewe Can I modify the answer taking into account your comment about finalnamedelim? it's definitely a better solution than mine.
    – Ivan
    Jan 13, 2021 at 17:17
  • 1
    \DeclareNameAlias[bib]{sortname}{labelname} and \DeclareDelimAlias[bib]{finalnamedelim}{multinamedelim}
    – Ivan
    Jan 19, 2021 at 12:56

You must log in to answer this question.

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