Liste der Zitate mit „und“ auf Deutsch drucken

Liste der Zitate mit „und“ auf Deutsch drucken

Ausführen der üblichen pdflatex-bibtex-Schleife auf

\documentclass{article}
\usepackage[american,ngerman]{babel}%%% The book is in German.
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
  @misc{TheTerminator,
    author={James Cameron},
    title={The {Terminator}},
    year=1984,
    language={american}
  }
  @misc{TerminatorTwo,
    author={James Cameron},
    title={Terminator 2: Judgement Day},
    year=1991,
    language={american}
  }
  @misc{TerminatorThree,
    author={Jonathan Mostow},
    title={Terminator 3: Rise of the Machines},
    year=2003,
    language={american}
  }
\end{filecontents}
\usepackage{babelbib} % Multilingual bibliographies
\begin{document}
Wir schauten \cite{TheTerminator,TerminatorTwo,TerminatorThree}.
\bibliographystyle{babalpha-fl-gs-sort}%%% Avoid problematic abbreviations such as SS and SA, see https://tex.stackexchange.com/a/441877/165772. Also disabmiguate "Ber89"; see https://tex.stackexchange.com/a/472956/165772.
\bibliography{\jobname}
\end{document}

ergibt die Ausgabe

Wir schauen [Cam84, Cam91, Mos03].

gefolgt von der Literaturliste. Wie kann man

Wir schauen [Cam84, Cam91 und Mos03].

automatisch (also nicht durch Schreiben von etwas wie \cite{TheTerminator, TerminatorTwo}, and \cite{TerminatorThree}), ohne den Arbeitsablauf zu ändern, also weiterhin pdflatex, babel, babelbib, bibtex zu verwenden? Wir dürfen die Stildatei patchen (danke an @moewe!!!) und Makros schreiben.

Antwort1

Die Grundidee dieser Implementierung ist stark inspiriert vonJuan A. Navarro'SAntwortZu Natbib: Wie ersetzt man das letzte Komma in einer \citet-basierten Zitationsliste durch „und“?.

Wenn LaTeX die \citeListe verarbeitet, durchläuft es sie einfach \@forund wendet für jedes Element dieselben Schritte an. Soweit ich weiß, gibt es keine einfache Möglichkeit, festzustellen, dass Sie bereits beim letzten Element sind, und daher ist ein kleiner Trick erforderlich, um vor dem letzten Zitat ein anderes Trennzeichen einzufügen.

Die Idee besteht hier im Wesentlichen darin, die Schleife um einen Schritt zu „verzögern“, was jedoch bedeutet, dass nach der Schleife ein zusätzlicher Verarbeitungsschritt hinzugefügt wird. Auf diese Weise wissen wir, wo der letzte Verarbeitungsschritt stattfindet.

\@citexist die Standarddefinition des LaTeX-Kernels und \@citexiist das Bit, das die Schleifenaktion ausführt.

\documentclass{article}
\usepackage[american,ngerman]{babel}
\usepackage{babelbib}

\makeatletter
\newcommand*{\@citexi}[1]{%
  \if@filesw\immediate\write\@auxout{\string\citation{#1}}\fi
  \@ifundefined{b@#1}
    {\hbox{\reset@font\bfseries ?}%
     \G@refundefinedtrue
     \@latex@warning
       {Citation `#1' on page \thepage \space undefined}}%
    {\@cite@ofmt{\csname b@#1\endcsname}}}

\def\@citex[#1]#2{\leavevmode
  \let\@last@citeb\relax
  \let\@citea\@empty
  \@cite
    {\@for\@citeb:=#2\do
       {\ifx\@last@citeb\relax\else
          \@citea\def\@citea{,\penalty\@m\ }%
          \@citexi{\@last@citeb}%
        \fi
        \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
        \let\@last@citeb\@citeb}%
     \ifx\@last@citeb\relax\else
       \ifx\@citea\@empty\else
         \ \btxandcomma{}\btxandshort{}\ %
       \fi
       \@citexi{\@last@citeb}%
     \fi}
    {#1}}
\makeatother

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
  @misc{TheTerminator,
    author={James Cameron and Anne Elk},
    title={The {Terminator}},
    year=1984,
    language={american}
  }
  @misc{TerminatorTwo,
    author={James Cameron},
    title={Terminator 2: Judgement Day},
    year=1991,
    language={american}
  }
  @misc{TerminatorThree,
    author={Jonathan Mostow and Anne Elk and Emma Sigfridsson},
    title={Terminator 3: Rise of the Machines},
    year=2003,
    language={american}
  }
\end{filecontents}

\begin{document}
Wir schauten \cite{TheTerminator,TerminatorTwo,TerminatorThree}.

Wir schauten \cite{TheTerminator,TerminatorTwo}.

Wir schauten \cite{TheTerminator}.

\bibliographystyle{babalpha-fl}
\bibliography{\jobname}
\end{document}

Wir schauten [CE84, Cam91 und MES03].//Wir schauten [CE84 und Cam91].//Wir schauten [CE84].

Da der Bibliografiestil für die Antwort völlig irrelevant ist, habe ich ihn wieder geändert, babalpha-flum das Beispiel für diejenigen leichter zugänglich zu machen, die die Geschichte, wie babalpha-fl-gs-sortes entstanden ist und wo man es bekommen kann, nicht verfolgt haben.

verwandte Informationen