3

I have a book and two of its translation in my bibliography list. Each book has a note that cites the other translation. For that, I use a \parencite command in the note field.

If I use the authoryear-icomp style a spurious ; appears in the notes; as shown in the image. With the authoryear style this is not happenning.

enter image description here

What should I do to remove the unwanted ;?

\documentclass{article}

% \usepackage[style=authoryear]{biblatex}
\usepackage[style=authoryear-icomp]{biblatex}


\usepackage{filecontents}
\addbibresource{biblio.bib}


\begin{filecontents}{biblio.bib}
@book {b11,
     MRKEY = {MR0113788},
    AUTHOR = {Bourbaki, Nicolas},
     TITLE = {Éléments d'histoire des mathématiques},
    SERIES = {Histoire de la Pensée, IV},
 PUBLISHER = {Hermann, Paris},
      YEAR = {1960},
     PAGES = {277},
   MRCLASS = {01.00},
  MRNUMBER = {0113788},
MRREVIEWER = {C. J. Scriba},
      note = {Também disponivel em Inglês em \parencite{b11en} e Espanhol em \parencite{b11es}},
}
%%%%
@book {b11en,
    AUTHOR = {Bourbaki, Nicolas},
     title = {Elements of the History of Mathematics},
      isbn = {9783540647676},
      lccn = {98039221},
       url = {http://dx.doi.org/10.1007/978-3-642-61693-8},
      year = {1998},
     PAGES = {301},
 publisher = {Springer-Verlag},
   address = {Berlin Heidelberg},
      note = {Traduzido por J. Meldrum do original em Francês \parencite{b11}, também disponivel em Espanhol em \parencite{b11es}},
}
%%%%

@book {b11es,
    AUTHOR = {Bourbaki, Nicolas},
     title = {Elementos de historia de las mathemáticas},
      isbn = {84-206-2018-1},
      year = {1972},
     PAGES = {401},
 publisher = {Alianza Editorial},
   address = {Madrid},
      note = {Traduzido por Jesús Hernández do original em Francês \parencite{b11}, também disponivel em Inglês em \parencite{b11en}},
}
%%%%
\end{filecontents}


\begin{document}
\pagestyle{empty}
\parencite{b11}
\nocite{*}

\printbibliography{}
\end{document}
4

biblatex's punctuation tracker is confused by this sort of 'nesting'. You only see this with authoryear-icomp, because that style has to rely more on the tracker than authoryear.

In particular authoryear-icomp's \cite commands usually leave the punctuation buffer non-empty to handle \multicitedelim and \compcitedelim properly (see also my answer to biblatex: \DeclareCiteCommand adds semicolon between \printfield and \printnames, but only sometimes). This is not a problem in the usual context because \cite clears the punctuation buffer before it does its work. If \cite is called in a bibliography context, however, it does not clear the buffer to avoid messing with the surrounding punctuation.

With

\makeatletter
\protected\def\blx@citecmdinit{%
  \blx@leavevmode@cite
  \blx@initunit}
\makeatother

you can slightly alter the behaviour of \cite commands in the bibliography so that they don't believe they printed something already.

If you want to be more careful, define a special command to prefix the offending \parencites

\makeatletter
\newcommand*{\mkbibcitesafe}{\blx@initunit}
\makeatother

and use that in the note

note = {Traduzido por Jesús Hernández do original em Francês \parencite{b11},
        também disponivel em Inglês em \makebibcitesafe\parencite{b11en}},

You may want to have a look at the related functionality that biblatex offers to link several bibliography entries. This is usually preferable to using \cite commands in .bib fields, where things could go wrong (as demonstrated here).

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.