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}
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}
  • Ivan, you've sorted me out again! Thanks :) – Sam OT Jan 13 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 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 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 at 17:17
  • You certainly can, Ivan. Just drop a note at the end of your proof to acknowledge improvement due to moewe. – Sam OT Jan 13 at 17:47

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.