2

I've just upgraded to MikTeX 2.9, and find that biblatex under the natbib=true and style=authoryear options now interprets the \citet{} command to place a comma between authors' names and the bracketed year.

This was not the case under my previous MikTeX.

Here's a MWE:

\documentclass{article}
\usepackage[natbib=true,style=authoryear,backend=bibtex]{biblatex} 

\addbibresource{bib.bib}

\begin{document}
From the outset, \citet{mar-84} gives the end away.

\printbibliography
\end{document}

where the contents of 'bib.bib' include

@BOOK{mar-84,
  author = {Gabriel Garcia Marquez},
  title = {Cien a\~{n}os de soledad},
  year = 1984,
  publisher = {Catedra}
}

I'd be grateful to hear of solutions or workarounds.

1

This is a temporary bug in biblatex 3.3, it has already been addressed in biblatex 3.4, see issue #373 at the biblatex bug tracker. Indeed, the old system has been replaced by something far fancier. Said system had a slight problem with certain styles that was only fixed in version 3.5, see Unwanted comma between author and year using citet command.

biblatex 3.4 and 3.5 have been released now (indeed the current version is 3.7). Simply update biblatex and Biber to their recent versions.


If you want to fix the problem in biblatex 3.3, you need to redefine the textcite bibmacro. The exact code needed depends on the style, the rule of thumb is that you have to replace all occurrences of \nonameyeardelim\bibopenparen and \nameyeardelim\bibopenparen by \addspace\bibopenparen and \addspace\bibopenparen, respectively, in the textcite bibmacro.

For authoryear you need

\renewbibmacro*{textcite}{%
  \ifnameundef{labelname}
    {\iffieldundef{shorthand}
       {\usebibmacro{cite:label}%
        \setunit{%
          \global\booltrue{cbx:parens}%
          \addspace\bibopenparen}%
        \ifnumequal{\value{citecount}}{1}
          {\usebibmacro{prenote}}
          {}%
        \usebibmacro{cite:labelyear+extrayear}}
       {\usebibmacro{cite:shorthand}}}
    {\printnames{labelname}%
     \setunit{%
       \global\booltrue{cbx:parens}%
       \addspace\bibopenparen}%
     \ifnumequal{\value{citecount}}{1}
       {\usebibmacro{prenote}}
       {}%
     \usebibmacro{citeyear}}}
  • If you only use \citet or don't like the comma between the name and year anyway, you could also use \renewcommand*{\nameyeardelim}{\addspace} – moewe Apr 22 '16 at 14:53

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.