독일어로 "und"가 포함된 인용 목록 인쇄

독일어로 "und"가 포함된 인용 목록 인쇄

일반적인 pdflatex-bibtex 루프를 실행합니다.

\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}

출력을 산출합니다

Wir Schauten [Cam84, Cam91, Mos03].

그 다음에는 문헌 목록이 나옵니다. 어떻게 얻을 수 있습니까?

Wir Schauten [Cam84, Cam91 및 Mos03].

\cite{TheTerminator, TerminatorTwo}, and \cite{TerminatorThree}작업 흐름을 변경하지 않고 자동으로(즉, 와 같은 것을 작성하지 않고 ), 즉 여전히 pdflatex, babel, babelbib, bibtex를 사용하고 있습니까? 스타일 파일을 패치하고(@moewe!!!에 감사드립니다) 매크로를 작성할 수 있습니다.

답변1

이 구현의 일반적인 아이디어는 다음에서 크게 영감을 받았습니다.후안 A. 나바로'에스답변에게 Natbib: \citet 기반 인용 목록의 마지막 쉼표를 "and"로 바꾸는 방법은 무엇입니까?.

LaTeX는 목록을 처리할 때 \cite목록을 반복하고 \@for각 항목에 대해 동일한 단계를 적용합니다. 내가 아는 한, 아직 마지막 항목에 있다는 것을 알 수 있는 간단한 방법이 없으므로 마지막 인용 앞에 다른 구분 기호를 삽입하려면 약간의 속임수가 필요합니다.

여기서의 아이디어는 기본적으로 루프 뒤에 처리 단계를 추가하는 대신 루프를 한 단계 "지연"하는 것입니다. 이렇게 하면 마지막 처리 단계가 어디에서 발생하는지 알 수 있습니다.

\@citexLaTeX 커널의 표준 정의이며 \@citexi루프 작업을 수행하는 비트입니다.

\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].

참고문헌 스타일은 답변과 전혀 관련이 없기 때문에 어떻게 태어났고 어디서 얻을 수 있는지 babalpha-fl에 대한 이야기를 따르지 않은 사람들이 예제에 더 쉽게 접근할 수 있도록 다시 변경했습니다.babalpha-fl-gs-sort

관련 정보