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-authoryear
von biblatex-ext
mit introcite=label
.
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 \printdateextra
durch \printdate
im data+extradate
Makro:
\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}
Antwort2
Der Code für den Datumsdruck variiert je nach gewählter mergedate
Einstellung. Die Voreinstellung ist , mergedate=true
was 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}
Die andere Antworthabe den Code für mergedate=maximum
als Grundlage verwendet und auch und neu definiert bbx:ifmergeddate
, issue+date
obwohl das nicht nötig war. Im Code hier haben wir auch die extradate
Info entfernt, wenn sie \iflabeldateisdate
falsch ist.
Eine weitere Option mit unterschiedlichem Ergebnis wäre die Kombination von authoryear
Zitaten mit einer authortitle
Bibliografie.
\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}