0

I have a problem with the bibliography for my project.

I have the following preamble:

\usepackage[backend=biber, style=authoryear,
  bibencoding=utf8]{biblatex}
\setlength\bibitemsep{0.5\baselineskip}
\addbibresource{Bibtex/mybib.bib}
\DeclareNameAlias{sortname}{last-first}
\DeclareNameAlias{default}{last-first}

However, this produces (Author(s), n.d.) in the citation call-out whenever there is no "year" typed in the bib entry. How can I remove this whenever a year is not available.

5
  • 1
    Welcome to TeX.SE. Specifying the option style=authoryear raises the expectation, at least implicitly, that each bib entry will have a non-empty date or year field. If your bibliography has entries without date or year fields, you may want to re-think the wisdom of specifying the option style=authoryear.
    – Mico
    Dec 18 '17 at 15:35
  • Thank you. What do you propose I use instead if I want to have the author and year still displayed? Dec 18 '17 at 15:36
  • 2
    The fundamental issue is: How (and why) is biblatex supposed to display the year of the publication if no year-related information is provided? The best (and only!) thing biblatex can do under such circumstances is to display n.d., which is short for "no date". A general observation: If there truly is no year-related information for some publication, it's better to say so explicitly than it is to create some ambiguity as to what the publication date may be.
    – Mico
    Dec 18 '17 at 15:57
  • Aside: If you want to create a citation call-out that shows just the author(s) of the publication, you could use the command citeauthor. This works irrespective of whether or not the year-related information is available.
    – Mico
    Dec 18 '17 at 15:59
  • I already knew that but thank you. My question was, however: Is there a way to make a LaTeX command that changes this style to another that only displays the Author whenever the year is not obtainable? Dec 18 '17 at 16:00
2
\renewbibmacro*{cite}{%
  \iffieldundef{shorthand}
    {\ifnameundef{labelname}
       {\usebibmacro{cite:label}%
        \setunit{\printdelim{nonameyeardelim}}}
       {\printnames{labelname}%
        \setunit{\printdelim{nameyeardelim}}}%
     \iffieldequalstr{labelyear}{nodate}
       {\printfield{extradate}}
       {\usebibmacro{cite:labeldate+extradate}}}
    {\usebibmacro{cite:shorthand}}}

Will not show the 'n.d.' in case no year is given, it will instead show nothing if the citation is the only work by the author or a letter if there are several works by that author. If you want the title to disambiguate several works by the same author, replace \printfield{extradate} with \iffieldundef{extradate}{}{\printfield[citetitle]{labeltitle}}.

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.