0

As it happens, I have a .bib database that contains more than one work by the same author. As usual, a letter is added to the second work to distinguish between the references. (The first work is to be referred to by year alone.)

MWE:

\documentclass{scrreprt}

\usepackage[shorthands=off,main=ngerman,english]{babel}
\usepackage[german=guillemets]{csquotes} 

\begin{filecontents}{\jobname.bib}

@article{Preissmann.2013,
  title = {Mädchen und Frauen mit Autismus-Spektrum-Störung},
  author = {Preissmann, Christine},
  date = {2013},
  journaltitle = {Psychopraxis},
  volume = {16},
  number = {4},
  pages = {17--19},
  langid = {german}
}

@book{Preissmann.2013a,
  title = {Überraschend anders. Mädchen \& Frauen mit Asperger},
  author = {Preissmann, Christine},
  date = {2013},
  publisher = {Trias},
  langid = {german}
}

\end{filecontents}

\usepackage[bibstyle=verbose, citestyle=authoryear-icomp, language=auto, autolang=other, 
dashed=true, maxcitenames=2, sorting=nyt, alldates=year]{biblatex}

\addbibresource{\jobname.bib}

% prevent pagebreak before bibliography by pretending to be a section:
\defbibheading{secbib}[\bibname]{\section*{#1}\markboth{#1}{#1}} 

\begin{document}
\begin{verbatim} 
As shown in \textcite{Preissmann.2013} and \textcite{Preissmann.2013a}.
 \end{verbatim}

As shown in \textcite{Preissmann.2013} and \textcite{Preissmann.2013a}.

\printbibliography[heading=secbib]
\end{document}

As you can see, although the bibkeys are Preissmann.2013 and Preissmann.2013a the are referenced as Preissmann.2013a and Preissmann.2013b in the compiled PDF.

How can I make sure that, a) the original keys are used (i.e. 2013 and 2013a, not 2013a and 2013b), and b) that the letter is added to the year in the bibliography? I want it to read (boldface as bonus, I'd settle for the added letter for the second item):

  1. Preissmann, Christine. »Mädchen und Frauen mit Autismus-Spektrum-Störung«. In: Psychopraxis 16.4 (2013), S. 17–19.
  2. Überraschend anders. Mädchen & Frauen mit Asperger. Trias, 2013a.

enter image description here

3
  • 3
    you are using the wrong bib style. If your citations are authoryear, then the bib should be authoryear too so that the correct label name is created. And while it is possible to force special labels: The main point of using a system like biblatex is to relieve you from having to worry about a consistent citing. Don't introduce potential errors and inconsistencies by inventing special rules and adding manual keys everywhere. Jul 26, 2021 at 13:51
  • Changing to bibstyle=authoryear gives me Preissmann, Christine (2013a) and — (2013b) which unfortunately is not quite what I want: Not only does it still rewrite my keys from YYYY and YYYYa to YYYYa and YYYYb, it also places the year in parentheses right after the author name, when I want it at the end, after the location / publisher (in case of a book).
    – Ingmar
    Jul 26, 2021 at 13:59
  • 1
    keys are irrelevant for the citation. You could name your citation blub1 and blub2. And if you use years in the citation then you should use a bibstyle which has the year at the begin so that your reader have a chance to find the bib entry. If you want the year in the bibliography at the end use a numeric or alphabetic cite style. citation and bibliography style are not independent, they belong together. Jul 26, 2021 at 14:06

1 Answer 1

1

There are several things going on here.

Firstly, bibstyle=verbose, is essentially equivalent to bibstyle=authortitle,. This explains why you don't get to see any disambiguation letters in the bibliography: They are simply not necessary with an author-title style.

You should be using

style=authoryear-icomp,

instead of bibstyle=verbose, citestyle=authoryear-icomp, to get a bibliography style that matches your citation style. (You can then also drop the sorting=nyt, because author-year styles automatically set this sorting scheme.)

An author-year style also moves the year from the back (or the middle) of the entry to the front. This is important because it makes it easier for your readers to scan your entries and actually find entries from their citation label.

\documentclass{scrreprt}
\usepackage[shorthands=off,main=ngerman,english]{babel}
\usepackage[german=guillemets]{csquotes} 
\usepackage[
  style=authoryear-icomp,
  maxcitenames=2,
  alldates=year,
  dashed=true,
  language=auto, autolang=other,
]{biblatex}


\begin{filecontents}{\jobname.bib}
@article{Preissmann.2013,
  title        = {Mädchen und Frauen mit Autismus-Spektrum-Störung},
  author       = {Preissmann, Christine},
  date         = {2013},
  journaltitle = {Psychopraxis},
  volume       = {16},
  number       = {4},
  pages        = {17--19},
  langid       = {german},
}
@book{Preissmann.2013a,
  title     = {Überraschend anders. Mädchen \& Frauen mit Asperger},
  author    = {Preissmann, Christine},
  date      = {2013},
  publisher = {Trias},
  langid    = {german},
}
\end{filecontents}
\addbibresource{\jobname.bib}

% prevent pagebreak before bibliography by pretending to be a section:
\defbibheading{secbib}[\bibname]{\section*{#1}\markboth{#1}{#1}} 

\begin{document}
\begin{verbatim} 
As shown in \textcite{Preissmann.2013} and \textcite{Preissmann.2013a}.
\end{verbatim}

As shown in \textcite{Preissmann.2013} and \textcite{Preissmann.2013a}.

\printbibliography[heading=secbib]
\end{document}

Preissmann, Christine (2013a). »Mädchen und Frauen mit Autismus-Spektrum-Störung«. In: Psychopraxis 16.4, S. 17–19.
— (2013b). Überraschend anders. Mädchen & Frauen mit Asperger. Trias.

It so happens that here Preissmann.2013 is 2013b and Preissmann.2013a comes out as 2013a. This is not surprising if you know how biblatex assigns the extradate letters. biblatex first sorts all entries and then assigns the letters in sort order. The sorting scheme used here is nyt, so name, year, title. Name and year and the same, so the title decides the order. Preissmann.2013a's Mädchen sorts before Preissmann.2013's Überraschend, so that is what we get.

The entry keys Preissmann.2013 and Preissmann.2013a are supposed to be (arbitrary) purely internal labels. They do not influence the output and do generally not influence sorting. You could just as well have used zzz and aaa as keys and would have gotten the same output. In particular using 2013a in an entry key gives absolutely no guarantee that there should be an "a" in the output. (Traditionally disambiguation letters are only added if they are needed to, well ... disambiguate, so if in one of your documents the only work by Preissmann you cite is Preissmann.2013a why should it come out as 2013a, when 2013 is perfectly fine already?)

Sorting should only use data available in the .bib entry or context sensitive data from the document. So the question becomes: Why do you want the two works to appear in a specific order? And then the next question becomes: How can we make biblatex apply this order.

Some people, for example, do not care so much about the title determining the final sorting position in the bibliography, but are much more concerned about 2013a appearing before 2013b in the in-text citations (so that the disambiguation letter is increasing for new citations). That can be achieved by defining a sorting scheme that takes into account cite order instead of title.

It is not impossible to combine this with an author-title bibliography style, where the year comes at the end (in bold), but I feel that this yields are far less desirable and usable outcome

\documentclass{scrreprt}
\usepackage[shorthands=off,main=ngerman,english]{babel}
\usepackage[german=guillemets]{csquotes} 
\usepackage[
  citestyle=authoryear-icomp,
  bibstyle=authortitle,
  maxcitenames=2,
  alldates=year,
  dashed=true,
  language=auto, autolang=other,
]{biblatex}

\DeclareFieldFormat{date}{\mkbibbold{#1}}
\renewbibmacro*{date}{\printdateextra}

\DeclareSortingTemplate{nyc}{
  \sort{
    \field{presort}
  }
  \sort[final]{
    \field{sortkey}
  }
  \sort{
    \field{sortname}
    \field{author}
    \field{editor}
    \field{translator}
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{sortyear}
    \field{year}
  }
  \sort{
    \sort{\citeorder}
  }
  \sort{
    \field{volume}
    \literal{0}
  }
}
\ExecuteBibliographyOptions{sorting=nyc}

\begin{filecontents}{\jobname.bib}
@article{Preissmann.2013,
  title        = {Mädchen und Frauen mit Autismus-Spektrum-Störung},
  author       = {Preissmann, Christine},
  date         = {2013},
  journaltitle = {Psychopraxis},
  volume       = {16},
  number       = {4},
  pages        = {17--19},
  langid       = {german},
}
@book{Preissmann.2013a,
  title     = {Überraschend anders. Mädchen \& Frauen mit Asperger},
  author    = {Preissmann, Christine},
  date      = {2013},
  publisher = {Trias},
  langid    = {german},
}
\end{filecontents}
\addbibresource{\jobname.bib}

% prevent pagebreak before bibliography by pretending to be a section:
\defbibheading{secbib}[\bibname]{\section*{#1}\markboth{#1}{#1}} 

\begin{document}
\begin{verbatim} 
As shown in \textcite{Preissmann.2013} and \textcite{Preissmann.2013a}.
\end{verbatim}

As shown in \textcite{Preissmann.2013} and \textcite{Preissmann.2013a}.

\printbibliography[heading=secbib]
\end{document}

Preissmann, Christine. »Mädchen und Frauen mit Autismus-Spektrum-Störung«. In: Psychopraxis 16.4 (2013a), S. 17–19.
— Überraschend anders. Mädchen & Frauen mit Asperger. Trias, 2013b.

3
  • I very much appreciate your long and thoughtful reply. All your comments are duly noted (Ulrike’s, too, by the way), but the Style Guide I am trying to follow is non-standard in more ways than one … I will have a go at your code tomorrow, but have actually made progress in the meantime: using \renewbibmacro*{date}{\printtext{\bfseries\printfield{labelyear}\printfield{extradate}}} seems to return the result I was looking for. Am I missing anything serious here?
    – Ingmar
    Jul 26, 2021 at 18:58
  • 1
    @Ingmar You may want to have a look at my second code block. It should do something similar, but more idiomatically. The question is if the style guide explains why the letters are arranged in the order they are arranged. If it can do that and that can be explained by the entry data or document-context-dependent data, it is likely that this can be replicated with biblatex (see also the second code example, which implements sorting based on cite order).
    – moewe
    Jul 26, 2021 at 19:03
  • Your code has been very helpful and taken me much more than 90% there … I have accepted your answer.
    – Ingmar
    Jul 28, 2021 at 5:18

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .