Natbib: 한 괄호 안에 페이지 번호가 포함된 여러 인용

Natbib: 한 괄호 안에 페이지 번호가 포함된 여러 인용

저는 참고문헌 스타일이 "apalike"인 natbib을 사용하고 있습니다. 나는 하나의 괄호 안에 두 개의 서로 다른 논문을 인용할 수 있습니다. 예를 들어

\citep{adams03,collier09}

나에게 준다

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

또한 한 번에 하나의 출처에 대한 페이지 번호를 제공할 수도 있습니다. 예를 들어

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

준다

(참조 1, 1페이지; 참조 2, 2페이지)

귀하의 경우:

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

당신이 원하는 것을 제공합니다.

답변4

해결 방법에 대한 추가 제안은 여기에서 찾을 수 있습니다.http://www.latex-community.org/forum/viewtopic.php?f=31&t=2840

관련 정보