我想制作一个类似这样的引文:
(哺乳动物:Ginsberg 和 Huck 1989;鸟类:Griffith 等人 2002;鱼类:Avise 等人 2002)
如果我有一个参考我知道我可以这样做:
\citep[mammals:][]{Ginsburg1989}
有没有办法为每个参考添加附加信息?
答案1
我可以提出一个\multicitep
命令:
\begin{filecontents*}{\jobname.bib}
@article{ginsburg1989,
author={Ginsburg, X. and Huck, Y.},
title={Title},
journal={Journal},
year=1989,
}
@article{griffith2002,
author={Griffith, X. and Abc, Y. and Def, Z.},
title={Title},
journal={Journal},
year=2002,
}
@article{avise2002,
author={Avise, X. and Abc, Y. and Def, Z.},
title={Title},
journal={Journal},
year=2002,
}
\end{filecontents*}
\documentclass{article}
\usepackage[authoryear]{natbib}
\usepackage{xparse}
\ExplSyntaxOn
\seq_new:N \l__lara_ccitep_seq
\NewDocumentCommand{\multicitep}{m}
{
\seq_clear:N \l__lara_ccitep_seq
(
\clist_map_inline:nn { #1 }
{
\seq_put_right:Nn \l__lara_ccitep_seq { \citenop ##1 }
}
\seq_use:Nn \l__lara_ccitep_seq { ;~ }
)
}
\NewDocumentCommand{\citenop}{om}
{
\IfValueT{#1}{#1~}
\citeauthor{#2},\nobreakspace\citeyear{#2}
}
\ExplSyntaxOff
\begin{document}
\multicitep{[mammals:]{ginsburg1989},[birds:]{griffith2002},[fish:]{avise2002}}
\bibliographystyle{plainnat}
\bibliography{\jobname}
\end{document}
该filecontents*
环境仅用于使示例自成一体。请使用您自己的数据库。