4

Biblatex is able to check whether a name appears in different fields and is able to adapt the reference showed. For instance, if translation and annotations are made by the same person, biblatex creates a reference which unifies both data with a string such as Trans. and annot. by [person X]. If I am not wrong this is achieved inside the bibmacro translator+othersstrg (defined in biblatex.def) using the macro ifnamesequal which checks for two names being equal.

Unfortunately in case of equal fields annotator and introduction no check is made. How could I achieve that biblatex does not show the name Michel García twice in the following MWE? I.e. How to force biblatex to check for these two fields being equal?

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage[style=verbose-trad2]{biblatex}
\addbibresource{stack.bib}
\begin{document}
\cite{repertorio1972}

\printbibliography
\end{document}

And this is the bibliographical entry:

@Book{repertorio1972,
title =        {Repertorio de príncipes de España},
year =         1972,
annotator =    {García, Michel},
introduction = {García, Michel},
publisher =    {CSIC},
location =     {Jaén}
}
4
  • Note that if you add this person as either an editor or a translator too, then the relevant collapsing does occur. Aug 3, 2013 at 15:53
  • @AndrewSwann: thanks. You're right. But if I load \usepackage[spanish]{babel} the output is different as in English. The editor is put before the title and then the name is set twice.
    – rogorido
    Aug 3, 2013 at 16:38
  • That is also the english behaviour if the same person is the author instead. I haven't yet been able to deduce how biblatex works with this. The release notes, refer to biblatex.def and the lbx files, and note that it is not easy to explain how the mechanism works! Aug 3, 2013 at 16:41
  • @AndrewSwann: yes, I am also trying to understand how biblatex works with all these drivers, macros, and so on. It is very rich and powerful.
    – rogorido
    Aug 3, 2013 at 16:56

1 Answer 1

3

These checks are indeed done via bibliography macros. Combined strings are defined in the localization modules (lbx files). The default definitions are demonstrative rather than exhaustive; they don't account for all types of overlap in authors of annotations, introductions, commentaries, forewards and afterwords. However you can modify the relevant macros from biblatex.def to achieve the output you want. For example:

\NewBibliographyString{withannotatorin}
\DefineBibliographyStrings{english}{%
  withannotatorin = {with annots\adddot and intro\adddot}}

\newbibmacro*{withannotatorin}{%
  \ifboolexpr{ test {\ifnameundef{annotator}} or test {\ifnameundef{introduction}}
    or not test {\ifnamesequal{annotator}{introduction}} }
    {}
    {\bibstring{withannotatorin}%
     \setunit{\addspace}%
     \printnames[withannotator]{annotator}%
     \clearname{annotator}%
     \clearname{introduction}}}

\renewbibmacro*{withothers}{%
  \usebibmacro{withcommentator}%
  \clearname{commentator}%
  \newunit
  \usebibmacro{withannotatorin}%
  \usebibmacro{withannotator}%
  \clearname{annotator}%
  \newunit
  \usebibmacro{withintroduction}%
  \clearname{introduction}%
  \newunit
  \usebibmacro{withforeword}%
  \clearname{foreword}%
  \newunit
  \usebibmacro{withafterword}%
  \clearname{afterword}}
1
  • thanks a lot. This is working. I think I will analyze thoroughly the file biblatex.def in the next days.
    – rogorido
    Aug 3, 2013 at 16:54

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.