Natbib: 1 つの括弧内にページ番号を含む複数の引用

Natbib: 1 つの括弧内にページ番号を含む複数の引用

私はnatbibを参考文献スタイル「apalike」で使用しています。1つの括弧で2つの異なる論文を引用することができます。例えば

\citep{adams03,collier09}

私に与える

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

一度に1つのソースのページ番号を付けることもできます。たとえば、

\citep[p.3]{adams03}

私に与える

(Adams and Fournier, 2003, p.3)

私の質問:両方のソースにページ番号がある場合はどうなりますか?次のような出力を生成する標準的な方法はありますか?

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

もっと簡単な方法があるなら、bibstyle ファイルを自分で編集することにあまり乗り気ではありません。

どのような助けでも大歓迎です!


最小限の例:

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

答え1

自動化も可能ですが、基本は次のようになります。

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

ここに画像の説明を入力してください

より優れたバージョンです。構文は と若干異なります\citepが、複数の引用の管理が簡単です。

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

異なるキーはセミコロンで区切られ、ポストノートはキーとカンマで区切られます(ポストノートにカンマがある場合は、中括弧で囲みます)。これは、次のように単一の引用にも使用できます。

\multicitep{adams03, p.~3}

ここに画像の説明を入力してください

答え2

また、\citealp構文についても検討してください。 http://merkel.texture.rocks/ラテックス/natbib.php

括弧とセミコロンは引き続き自分で用意する必要がありますが、構文は上記よりも少し簡潔になります (以下は変更されたコードです)。

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

答え3

代替の解決策は次のとおりです。

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

与える

(ref1、p. 1; ref2、p. 2)

あなたの場合:

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

あなたが望むものを与えます。

答え4

回避策のさらなる提案は、以下を参照してください。http://www.latex-community.org/forum/viewtopic.php?f=31&t=2840

関連情報