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