Smith (2010a, 2010b) statt Smith (2010a, b) bei Inline-Zitaten

Smith (2010a, 2010b) statt Smith (2010a, b) bei Inline-Zitaten

Ich verwende zum Schreiben das Natbib-Paket.

Smith hat beispielsweise zwei Arbeiten, die beide 2010 veröffentlicht wurden. Ich habe sie in meiner .bib-Datei als Sm1 und sm2 gekennzeichnet. Wenn ich die Arbeiten jetzt mit \citet{Sm1,Sm2} zitiere, wird Smith (2010a, b) angezeigt. Ich möchte aber, dass es Smith (2010a, 2010b) ist. Kann mir jemand helfen?

Antwort1

Ich würde einen Patch verwenden \NAT@citex, um die Jahresabfrage zu vermeiden, sodass Sie das Jahr nicht im Voraus kennen müssen. Es funktioniert einfach in jedem Fall.

\begin{filecontents*}{\jobname.bib}
@article{sma,
 author={Smith, J.},
 title={A},
 journal={B},
 year={2014},
}
@article{smb,
 author={Smith, J.},
 title={C},
 journal={D},
 year={2014},
}
\end{filecontents*}
\documentclass{article}
\usepackage[authoryear,round]{natbib}
\usepackage{xpatch}

% patch \NAT@citex to always use the year
\makeatletter
\xpatchcmd{\NAT@citex}
  {\ifx\NAT@last@yr\NAT@year}
  {\iffalse}
  {}{}
\xpatchcmd{\NAT@citex}
  {\ifx\NAT@last@yr\NAT@year}
  {\iffalse}
  {}{}
\makeatother

\begin{document}
\citep{sma,smb}

\citet{sma,smb}

\bibliographystyle{plainnat}
\bibliography{\jobname}
\end{document}

Wie üblich filecontents*dient die Umgebung nur dazu, das Beispiel in sich geschlossen zu machen.

Bildbeschreibung hier eingeben

Erklärung. Der \NAT@citexBefehl ist der Hauptteil des Prozesses; an zwei Stellen

\ifx\NAT@last@yr\NAT@year
  <something if the current citation has the same year as the preceding one>
\else
  <otherwise>
\fi

Mit dem Patch ändern wir die Bedingung (erste Zeile) in \iffalse, sodass dem „wahren“ Zweig nie gefolgt wird.

Antwort2

Angenommen, die Schlüssel der beiden Einträge sind sm1und sm2, können Sie Ihr Ziel erreichen, indem Sie schreiben

\citeauthor{sm1} (\citeyear{sm1}, \citeyear{sm2})

Anmerkung: Das natbibPaket bietet die Optionen sort, compress, und sort&compress, aber diese scheinen hauptsächlich auf numerische Zitationshinweise ausgerichtet zu sein. Für Zitationshinweise im Autor-Jahr-Stil scheint das Paket keine Optionen wie nosortoder bereitzustellen nocompress– daher die Notwendigkeit des oben angegebenen, umständlich aussehenden Codes.

verwandte Informationen