如何重新定义 multibib 中的引用命令以包含使用 natbib 命令的文件

如何重新定义 multibib 中的引用命令以包含使用 natbib 命令的文件

我需要创建一个包含两部分的文档,每部分都有自己的参考书目,我可以使用多围兜。但是,这两部分的内容应该从现有文件中读取,而不改变这些文件。有没有办法重新定义引用命令,以便可以按原样包含文件(而不将所有内容替换为\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}

相关内容