Natbib: múltiples citas con números de página entre corchetes

Natbib: múltiples citas con números de página entre corchetes

Estoy usando natbib con estilo de bibliografía "apalike". Puedo citar dos artículos diferentes entre corchetes; por ejemplo

\citep{adams03,collier09}

me da

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

También puedo dar números de página de una fuente a la vez; por ejemplo

\citep[p.3]{adams03}

me da

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

Mi pregunta:¿Qué pasa si tengo números de página para ambas fuentes? ¿Existe una forma estándar de producir un resultado como

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

No estoy muy interesado en editar los archivos bibstyle yo mismo si hay una manera más fácil.

¡Cualquier ayuda es muy apreciada!


Un ejemplo mínimo:

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

Respuesta1

Se puede automatizar, pero lo básico es así:

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

ingrese la descripción de la imagen aquí

Una versión mejor, con una sintaxis ligeramente diferente a la de \citep, pero más fácil de administrar para múltiples citas:

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

Las diferentes claves están separadas por un punto y coma, una nota posterior está separada de la clave por una coma (si hay una coma en la nota posterior, colóquela entre llaves). De hecho, puedes usarlo para una sola cita, como

\multicitep{adams03, p.~3}

ingrese la descripción de la imagen aquí

Respuesta2

Considere también la sintaxis \citealp descrita en http://merkel.texture.rocks/Latex/natbib.php

Aún necesitas traer tus propios paréntesis y punto y coma, pero la sintaxis es un poco más compacta que la anterior (código modificado a continuación):

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

Respuesta3

Aquí hay una solución alternativa:

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

da

(ref1, pág. 1; ref2, pág. 2)

En tu caso:

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

da lo que quieres.

Respuesta4

Puede encontrar más sugerencias para una solución alternativa aquí:http://www.latex-community.org/forum/viewtopic.php?f=31&t=2840

información relacionada