我需要创建一个包含两部分的文档,每部分都有自己的参考书目,我可以使用多围兜。但是,这两部分的内容应该从现有文件中读取,而不改变这些文件。有没有办法重新定义引用命令,以便可以按原样包含文件(而不将所有内容替换为\citep
等等\citepfirst
)?
这是一个 MWE:我希望能够在每个部分中继续使用citep
, citealp
,citet
但在该部分之前重新定义命令以进入单独的参考部分。
\RequirePackage{filecontents}
\begin{filecontents}{myrefs.bib}
@Book{Knuth:1990,
author = {Knuth, Donald E.},
title = {The {\TeX}book},
year = {1990},
isbn = {0-201-13447-0},
publisher = {Addison\,\textendash\,Wesley},
}
@Book{Lamport:94,
author = {Lamport, Leslie},
title = {{\LaTeX}: A Document Preparation System},
year = {1994},
isbn = {0-021-52983-1},
publisher = {Addison\,\textendash\,Wesley},
}
\end{filecontents}
\documentclass{article}
\usepackage[round]{natbib}
\usepackage{multibib}
\newcites{first}{First refs}
% store the original cite commands
\let\citeporig\citep
\let\citealporig\citealp
\let\citetorig\citet
\begin{document}
\section{First section}
% let all the cite commands use the first bibliography
\let\citep\citepfirst
\let\citealp\citealpfirst
\let\citet\citetfirst
Refer to Lamport \citep[e.g.][]{Lamport:94}.
\bibliographystylefirst{plainnat}
\bibliographyfirst{myrefs}
\section{Second section}
% redefine the commands to use the second bibliography
\let\citep\citeporig
\let\citealp\citealporig
\let\citet\citetorig
The ultimate reference~\cite{Knuth:1990}
\bibliographystyle{plainnat}
\bibliography{myrefs}
\end{document}