autoryear-ext mit introcite=label: Extradate-Buchstabe aus Bibliographieeintrag entfernen, aber nicht aus Label

autoryear-ext mit introcite=label: Extradate-Buchstabe aus Bibliographieeintrag entfernen, aber nicht aus Label

Ich werde gebeten, eine Bibliographie im Autor-Jahr-Stil zu erstellen, wobei nur der erste Autor als Label angegeben wird. Bei einem anspruchsvollen Label wird an das Jahr ein Buchstabe angehängt. Dies kann leicht mit dem folgenden Code (entnommen ausErstellen einer Bibliographie mit fester Einrückung und Autor-Jahr-Beschriftungen mit Biblatex und Biber):

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage[style=ext-authoryear, backend=biber, maxcitenames=1, uniquename=false, uniquelist=false, introcite=label, dashed=false]{biblatex}
\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
  @book{Shepard2001a,
  author = {Shepard, Frank and Fisher, John},
  year = {2001},
  title = {Livestock management},
}
@book{Shepard2001b,
  author = {Shepard, Frank and Farmer, Boris},
  year = {2001},
  title = {On food supplies},
}
\end{filecontents*}
\addbibresource{\jobname.bib} % if you’re using biblatex\addbibresource{biblatex-examples.bib}

\setlength{\bibitemsep}{0.5\baselineskip plus 0.5\baselineskip}
\setlength{\introcitewidth}{6em}

\begin{document}
  \cite{Shepard2001a, Shepard2001b}
  \printbibliography
\end{document}

Wie Sie sehen, verwende ich ext-authoryearvon biblatex-extmit introcite=label.

Das Ergebnis sieht so aus: Bildbeschreibung hier eingeben

Das ist gut, außer dass im Literaturverzeichniseintrag der Buchstabe, der an die Jahreszahl angehängt ist, entfernt werden sollte. Ich habe den „anstößigen“ Buchstaben mit einer roten Linie markiert. Das heißt: Ich brauche den Buchstaben in der Beschriftung, aber nicht im Literaturverzeichniseintrag selbst. Ein Eintrag für das MWE sollte so aussehen:

Shepard et al. 2001a
   Shepard, Frank and Boris Farmer (2001), ...

Ich konnte nicht herausfinden, wo ich das ändern kann.

Antwort1

Ersetzen \printdateextradurch \printdateim data+extradateMakro:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage[style=ext-authoryear, backend=biber, maxcitenames=1, uniquename=false, uniquelist=false, introcite=label, dashed=false]{biblatex}
\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
  @book{Shepard2001a,
  author = {Shepard, Frank and Fisher, John},
  year = {2001},
  title = {Livestock management},
}
@book{Shepard2001b,
  author = {Shepard, Frank and Farmer, Boris},
  year = {2001},
  title = {On food supplies},
}
\end{filecontents*}
\addbibresource{\jobname.bib} % if you’re using biblatex\addbibresource{biblatex-examples.bib}

\setlength{\bibitemsep}{0.5\baselineskip plus 0.5\baselineskip}
\setlength{\introcitewidth}{6em}

\makeatletter
  \renewbibmacro*{date+extradate}{%
    \iffieldundef{labelyear}
      {}
      {\printtext[\blx@delimcontext labeldate]{%
         \iflabeldateisdate
           {\printfield{issue}%
            \setunit*{\addspace}%
            \printdate}
           {\printlabeldateextra}}}}%
  \renewbibmacro*{bbx:ifmergeddate}{\iflabeldateisdate}%
  \renewbibmacro*{issue+date}{%
    \usebibmacro{bbx:ifmergeddate}
      {}
      {\printtext[issuedate]{%
         \printfield{issue}%
         \setunit*{\addspace}%
         \printdate}}}
\makeatother

\begin{document}
  \cite{Shepard2001a, Shepard2001b}
  \printbibliography
\end{document}

Bildbeschreibung hier eingeben

Antwort2

Der Code für den Datumsdruck variiert je nach gewählter mergedateEinstellung. Die Voreinstellung ist , mergedate=truewas gleichbedeutend ist mit mergedate=compact, wobei die Änderungen wie folgt eingegrenzt werden können.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage[style=ext-authoryear, backend=biber,
  maxcitenames=1, uniquename=false, uniquelist=false,
  introcite=label, dashed=false]{biblatex}

\setlength{\bibitemsep}{0.5\baselineskip plus 0.5\baselineskip}
\setlength{\introcitewidth}{6em}

\makeatletter
\renewbibmacro*{date+extradate}{%
  \iffieldundef{labelyear}
    {}
    {\printtext[\blx@delimcontext labeldate]{%
       \iflabeldateisdate
         {\printdate}
         {\printlabeldate}}}}
\makeatother


\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
  @book{Shepard2001a,
  author = {Shepard, Frank and Fisher, John},
  year   = {2001},
  title  = {Livestock management},
}
@book{Shepard2001b,
  author = {Shepard, Frank and Farmer, Boris},
  year   = {2001},
  title  = {On food supplies},
}
\end{filecontents*}
\addbibresource{\jobname.bib}

\begin{document}
  \cite{Shepard2001a, Shepard2001b}
  \printbibliography
\end{document}

Shepard et al. 2001a/Shepard, Frank und Boris Farmer (2001). Zur Nahrungsmittelversorgung.//Shepard et al. 2001b/Shepard, Frank und John Fisher (2001). Viehhaltung.

Die andere Antworthabe den Code für mergedate=maximumals Grundlage verwendet und auch und neu definiert bbx:ifmergeddate, issue+dateobwohl das nicht nötig war. Im Code hier haben wir auch die extradateInfo entfernt, wenn sie \iflabeldateisdatefalsch ist.


Eine weitere Option mit unterschiedlichem Ergebnis wäre die Kombination von authoryearZitaten mit einer authortitleBibliografie.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage[backend=biber, bibstyle=ext-authortitle, citestyle=ext-authoryear,
  sorting=nyt,
  maxcitenames=1, uniquename=false, uniquelist=false,
  introcite=label, dashed=false]{biblatex}

\setlength{\bibitemsep}{0.5\baselineskip plus 0.5\baselineskip}
\setlength{\introcitewidth}{6em}

\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
  @book{Shepard2001a,
  author = {Shepard, Frank and Fisher, John},
  year   = {2001},
  title  = {Livestock management},
}
@book{Shepard2001b,
  author = {Shepard, Frank and Farmer, Boris},
  year   = {2001},
  title  = {On food supplies},
}
\end{filecontents*}
\addbibresource{\jobname.bib}

\begin{document}
  \cite{Shepard2001a, Shepard2001b}
  \printbibliography
\end{document}

Shepard et al. 2001a/Shepard, Frank und Boris Farmer. Zur Nahrungsmittelversorgung. 2001.//Shepard et al. 2001b/Shepard, Frank und John Fisher. Viehhaltung. 2001.

verwandte Informationen