假设一个 TeX 文档 ( \documentclass{article}
) 有两个位于不同页面上的独立参考书目,由 处理natbib
。
第一个参考书目(My_Large_Bibliography.bib
)的名称如下:
\section*{Appendix 1: List of References}
\begingroup
\renewcommand{\section}[2]{}
\bibliographystyle{apalike-refs}
\bibliography{My_Large_Bibliography.bib}
\endgroup
\clearpage
\section*{Appendix 2: Some Text}
Hey y'all! See my amazing publications of 2021 \citep[e.g.,][]{Shared_publication}.
% Do some magical citation reset here.
第二个书目(My_Top10_Articles.bbl
)是预先编译好的,具有不同的书目样式,调用方式如下:
\section*{Appendix 3: Curriculum Vitae}
\subsection*{Top-10 Publications}
\begingroup
\renewcommand{\section}[2]{}
\input{My_Top10_Articles.bbl}
\endgroup
中的几条参考书目条目My_Large_Bibliography.bib
也存在于 中My_Top10_Articles.bbl
。当我在附录 2 中引用其中一条参考文献时(即前如果要引用第二份参考书目(甚至调用了第二份参考书目),则行内引用的格式要按照第二份参考书目来格式化(而且,还很混乱)。
有没有办法防止参考书目与内联引用混淆?例如,有没有办法重置或清除附录 2 末尾加载的参考书目?
答案1
建议创建两个单独的参考书目而不预编译文件.bbl
,例如使用multibib
带有natbib
,例如,natbib,多个参考书目或chapterbib
natbib
下面这样Sectionbib、natbib 和单独书目。
但是,如果您实际上不想引用第二个参考书目中的任何内容,并且想要继续使用预编译文件.bbl
,那么重新定义参考书目特定命令以使其表现得像普通段落或列表可能会取得一些成功。这将删除重复的引用键,并防止后续参考书目干扰主文档中引用的显示。
具体来说,对于作者年份样式,这意味着禁用\begin{bibliography}
和,\end{bibliography}
并将 重新定义\bibitem
为带有悬挂缩进和少量 parskip 的段落。对于数字样式,您可以将环境重新定义bibliography
为 和enumerate
,使用包将条目格式化为\bibitem
。具体细节取决于您使用的书目样式,但示例如下:\item
enumitem
[n]
\begin{filecontents}{mainreferences.bib}
@article{myarticle,
author = {John Doe},
title = {Shared publication which has a very long title so it wraps to the next line to check if indentation works},
journal = {Shared Journal},
year = {2021}
}
\end{filecontents}
\begin{filecontents}{precompiled.bbl}
\begin{thebibliography}{1}
\providecommand{\natexlab}[1]{#1}
\providecommand{\url}[1]{\texttt{#1}}
\expandafter\ifx\csname urlstyle\endcsname\relax
\providecommand{\doi}[1]{doi: #1}\else
\providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi
\bibitem[Doe(2021)]{myarticle}
John Doe.
\newblock Shared publication which has a very long title so it wraps to the next line to check if indentation works.
\newblock \emph{Shared Journal}, 2021.
\end{thebibliography}
\end{filecontents}
\documentclass{article}
\usepackage[authoryear]{natbib}
\usepackage{enumitem}
\begin{document}
\noindent My article: \cite{myarticle}
\bibliographystyle{plainnat}
\bibliography{mainreferences}
\section*{Second bibliography}
\parskip=6pt
\renewcommand{\bibitem}[2][]{\par\noindent\hangindent1Em}
\def\thebibliography#1{\relax}
\def\endthebibliography{\relax}
\input{precompiled.bbl}
\section*{Second bibliography with numeric style}
\setlist[enumerate,1]{label={[\arabic*]},leftmargin=*}
\renewcommand{\bibitem}[2][]{\item}
\def\thebibliography#1{\enumerate}
\def\endthebibliography{\endenumerate}
\input{precompiled.bbl}
\end{document}
结果:
请注意,使用此方法可能无法轻松重新创建预编译书目的精确格式。在这种情况下,建议创建“官方”多个书目,如上面链接的问题所示。