仅引用 .bbl 文件中的相关文章

仅引用 .bbl 文件中的相关文章

我有一个.bbl包含大量条目的文件(我没有.bib生成它的相关文件)。是否可以告诉 LaTeX 仅包含.bbl文本中引用的文件中引用的参考/引文,而不是所有内容(如果您“输入”文件就会发生这种情况.bbl)?

MWE 如下:

\documentclass[a4paper]{article}

\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage[colorinlistoftodos]{todonotes}

\title{Your Paper}

\author{You}

\date{\today}

\begin{document}
\maketitle

\begin{abstract}
Your abstract.
\end{abstract}

\input{test.bbl}

\end{document}

答案1

如果你的.bbl文件格式正确,那就是

  1. 你只有\bibitem{<tag>}

  2. 条目中没有空行

  3. 每个条目(包括最后一个)后面都有一个空行

那么您可以使用一个技巧,涉及使用\citation通常定义为不执行任何操作的操作。

文件spokus-old.bbl

\begin{thebibliography}{1}

\bibitem{Barker1998}
Chris Barker.
\newblock Partitives, double genitives and anti-uniqueness.
\newblock \emph{Natural Language \& Linguistic Theory}, 16:\penalty0 679--717,
  1998.

\bibitem{Berwick1985}
Robert~C. Berwick.
\newblock \emph{Acquisition of syntactic knowledge}.
\newblock MIT Press, Cambridge, MA, 1985.

\bibitem{Carlson1977}
Gregory~N. Carlson.
\newblock \emph{Reference to Kinds in {E}nglish}.
\newblock PhD thesis, University of Massachusetts, Amherst, 1977.

\bibitem{Carlson1995}
Gregory~N. Carlson and Francis~Jeffrey Pelletier, editors.
\newblock \emph{The Generic Book}.
\newblock Chicago University Press, Chicago, 1995.

\end{thebibliography}

文件spokus.tex

\documentclass{article}

\makeatletter
\let\original@bibitem\bibitem
\def\bibitem#1#2\par{%
  \@ifundefined{cited@#1}{}{\original@bibitem{#1}#2\par}%
}
\renewcommand\citation[1]{\global\@namedef{cited@#1}{}}
\makeatother


\begin{document}

\cite{Barker1998}

\cite{Carlson1977}

\input{spokus-old.bbl}

\end{document}

输出

在此处输入图片描述

解释

每个\cite命令都会在辅助文件中写入一条注释,格式如下

\citation{<tag>}

这种注释通常只用于 BibTeX,因此它被定义为吞噬其参数。我们可以重新定义它来标记标签为已使用,这就是

\renewcommand\citation[1]{\global\@namedef{cited@#1}{}}

重新定义该\bibitem命令以吸收整个条目,然后查看是否\cited@<tag>定义;如果是,则输出该条目,否则不执行任何操作。

相关内容