Natbib: Mehrere Zitate mit Seitenzahlen in einer Klammer

Natbib: Mehrere Zitate mit Seitenzahlen in einer Klammer

Ich verwende natbib mit dem Bibliographiestil „apalike“. Ich kann zwei verschiedene Arbeiten in einer Klammer zitieren; zum Beispiel

\citep{adams03,collier09}

gibt mir

(Adams and Fournier, 2003; Collier et al., 1990).

Ich kann auch Seitenzahlen für jeweils eine Quelle angeben, zum Beispiel

\citep[p.3]{adams03}

gibt mir

(Adams and Fournier, 2003, p.3).

Meine Frage:Was ist, wenn ich Seitenzahlen für beide Quellen habe? Gibt es eine Standardmethode, um eine Ausgabe wie diese zu erstellen?

(Adams and Fournier, 2003, p.3; Collier et al., 1990, p.5)?

Ich bin nicht besonders daran interessiert, die Bibstyle-Dateien selbst zu bearbeiten, wenn es einen einfacheren Weg gibt.

Jede Hilfe wird sehr geschätzt!


Ein Minimalbeispiel:

\documentclass{article}

\usepackage[american]{babel}
\usepackage[utf8]{inputenc}
\usepackage{natbib}

\begin{document}

\citep{adams03,collier09}

\citep[p.3]{adams03}

I would like to have something like (Adams and Fournier, 2003, p.3; Collier et al., 1990, p.5).

\bibliography{bibliography}{}
\bibliographystyle{apalike}

\end{document}

Antwort1

Es kann automatisiert werden, aber im Wesentlichen sieht es so aus:

\begin{filecontents*}{\jobname.bib}
@article{adams03,
 author={A. Adams and F. Fournier},
 title={?},
 journal={?},
 year=2003,
}
\@article{collier09,
 author={C. Collier and S. Someone and T. Tomeone and V. Vomeone},
 title={?},
 journal={?},
 year=2009,
}
\end{filecontents*}
\documentclass{article}

\usepackage[american]{babel}
\usepackage[utf8]{inputenc}
\usepackage{natbib}

\begin{document}

\citep{adams03,collier09}

\citep[p.~3]{adams03}

(\citeauthor{adams03}, \citeyear{adams03}, p.~3; \citeauthor{collier09}, \citeyear{collier09}, p.~5).


\bibliography{\jobname}
\bibliographystyle{apalike}

\end{document}

Bildbeschreibung hier eingeben

Eine bessere Version mit einer leicht anderen Syntax als \citep, die aber für mehrere Zitate einfacher zu handhaben ist:

\begin{filecontents*}{\jobname.bib}
@article{adams03,
 author={A. Adams and F. Fournier},
 title={?},
 journal={?},
 year=2003,
}
\@article{collier09,
 author={C. Collier and S. Someone and T. Tomeone and V. Vomeone},
 title={?},
 journal={?},
 year=2009,
}
\end{filecontents*}
\documentclass{article}

\usepackage[american]{babel}
\usepackage[utf8]{inputenc}
\usepackage{natbib}

\usepackage{xparse}
\ExplSyntaxOn

\makeatletter
\NewDocumentCommand{\multicitep}{m}
 {
  \NAT@open
  \mjb_multicitep:n { #1 }
  \NAT@close
 }
\makeatother

\seq_new:N \l_mjb_multicite_in_seq
\seq_new:N \l_mjb_multicite_out_seq
\seq_new:N \l_mjb_cite_seq

\cs_new_protected:Npn \mjb_multicitep:n #1
 {
  \seq_set_split:Nnn \l_mjb_multicite_in_seq { ; } { #1 }
  \seq_clear:N \l_mjb_multicite_out_seq
  \seq_map_inline:Nn \l_mjb_multicite_in_seq
   {
    \mjb_cite_process:n { ##1 }
   }
  \seq_use:Nn \l_mjb_multicite_out_seq { ;~ }
 }

\cs_new_protected:Npn \mjb_cite_process:n #1
 {
  \seq_set_split:Nnn \l_mjb_cite_seq { , } { #1 }
  \int_compare:nTF { \seq_count:N \l_mjb_cite_seq == 1 }
   {
    \seq_put_right:Nn \l_mjb_multicite_out_seq
     { \citeauthor{#1},~\citeyear{#1} }
   }
   {
    \seq_put_right:Nx \l_mjb_multicite_out_seq
     {
      \exp_not:N \citeauthor{\seq_item:Nn \l_mjb_cite_seq { 1 }},~
      \exp_not:N \citeyear{\seq_item:Nn \l_mjb_cite_seq { 1 }},~
      \seq_item:Nn \l_mjb_cite_seq { 2 }
     }
   }
 }
\ExplSyntaxOff

\begin{document}

\citep{adams03,collier09}

\citep[p.~3]{adams03}

\multicitep{adams03, p.~3; collier09, p.~5}.

\multicitep{adams03, p.~3; collier09, p.~5}.

\multicitep{adams03; collier09, p.~5}.

\multicitep{adams03; collier09, p.~5}.


\bibliography{\jobname}
\bibliographystyle{apalike}

\end{document}

Verschiedene Schlüssel werden durch ein Semikolon getrennt, eine Postnote wird durch ein Komma vom Schlüssel getrennt (wenn in der Postnote ein Komma steht, setzen Sie es in Klammern). Sie können es tatsächlich für eine einzelne Zitierung verwenden, wie

\multicitep{adams03, p.~3}

Bildbeschreibung hier eingeben

Antwort2

Beachten Sie auch die \citealp-Syntax, die unter http://merkel.texture.rocks/Latex/natbib.php

Sie müssen zwar immer noch Ihre eigenen Klammern und Semikolons verwenden, aber die Syntax ist etwas kompakter als oben (geänderter Code unten):

\begin{filecontents*}{\jobname.bib}
@article{adams03,
 author={A. Adams and F. Fournier},
 title={?},
 journal={?},
 year=2003,
}
\@article{collier09,
 author={C. Collier and S. Someone and T. Tomeone and V. Vomeone},
 title={?},
 journal={?},
 year=2009,
}
\end{filecontents*}
\documentclass{article}

\usepackage{natbib}
\begin{document}

\citep{adams03,collier09}

\citep[p.~3]{adams03}

(\citeauthor{adams03}, \citeyear{adams03}, p.~3; \citeauthor{collier09}, \citeyear{collier09}, p.~5).

(\citealp[p.~3]{adams03}; \citealp[p.~5]{collier09}).

\bibliography{\jobname}
\bibliographystyle{apalike}

\end{document}

Antwort3

Hier ist eine alternative Lösung:

\citetext{\citealp[p.~1]{ref1}; \citealp[p.~2]{ref2}}

gibt

(Ref. 1, S. 1; Ref. 2, S. 2)

In Ihrem Fall:

\citetext{\citealp[p.~3]{adams03}; \citealp[p.~5]{collier09}}

gibt, was Sie wollen.

Antwort4

Weitere Vorschläge zur Problemumgehung finden Sie hier:http://www.latex-community.org/forum/viewtopic.php?f=31&t=2840

verwandte Informationen