我如何以编程方式编写 biblatex 文件,其中包含给定 .tex 文件中的所有参考文献?

我如何以编程方式编写 biblatex 文件,其中包含给定 .tex 文件中的所有参考文献?

如果这是重复的,请见谅。搜索“提取 bibtex”或“导出 bibtex”只会给我有关从其他格式(如 zotero)获取 bibtex 的结果。


我有一个巨大的 biblatex 文件,里面保存着我所有的书目信息。我把我所有的 tex 作品(论文、报告、整理的笔记等)都放在版本控制下,并将大部分内容推送到个人 git forge。我喜欢这样做的部分原因是我的研究和写作过程是透明的(我想是“开源写作”吧?),如果他们愿意,任何人都可以下载源代码并以更大的字体编译我的论文,或者只提取一个章节,或者其他什么。通过程序生成的 TLP 版本就是此类事物的一个很好的例子。

为了使其正常工作,编译文件所需的所有数据都需要存在于存储库中。显然,文本和格式都在那里,但由于我有一个整体的、本地存储的 bib 文件,因此没有用于解析引文的参考数据。我可以将文件复制/硬链接到存储库中,但这会引入一个包含大量不必要数据的大文件。在硬链接的情况下(对于这种情况更可取),添加新内容会使存储库看起来好像有变化,即使新条目与存储库包含的论文无关(引用)。

所以我想要的是能够将给定 .tex 文件中每个引文的所有数据转储到一个文件中。然后我可以在序言中添加注释行和说明,说明该文件包含所有数据。大概这将是编译链的一部分——latexmk 的一部分,还是序言中的某些 bibtex 处理?显然,我还想确保生成的文件在运行之间尽可能相似,只有新的引用是唯一的区别,所以它可能应该以某种方式排序。

我可能不是第一个想到这种事情的人,所以我确信一定有一个很好的解决方案。提前谢谢。

答案1

您可以使用 biber 来提取引文。例如使用以下 main.tex

\documentclass{article}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}

\begin{document}
\cite{doody}

\end{document}

然后

 pdflatex main
 biber --output-format=bibtex main

您将获得main_biber.bib以下内容:

@ARTICLE{doody,
  AUTHOR = {Doody, Terrence},
  ANNOTATION = {An \texttt{article} entry cited as an excerpt from a \texttt{collection} entry. Note the format of the \texttt{related} and \texttt{relatedstring} fields},
  DATE = {1974},
  JOURNALTITLE = {The Journal of Narrative Technique},
  LANGID = {english},
  LANGIDOPTS = {variant=american},
  NUMBER = {3},
  PAGES = {212--225},
  RELATED = {1e63d4bbc14872275675171be2dfa906},
  RELATEDSTRING = {\autocap{e}xcerpt in},
  TITLE = {Hemingway's Style and {Jake's} Narration},
  VOLUME = {4},
}

@COLLECTION{1e63d4bbc14872275675171be2dfa906,
  OPTIONS = {uniquename=false,skiplab=1,uniquelist=false,skipbiblist=1,skipbib=1},
  EDITOR = {Matuz, Roger},
  LOCATION = {Detroit},
  PUBLISHER = {Gale},
  ANNOTATION = {A \texttt{collection} entry providing the excerpt information for the \texttt{doody} entry. Note the format of the \texttt{pages} field},
  DATE = {1990},
  LANGID = {english},
  LANGIDOPTS = {variant=american},
  PAGES = {204--208},
  TITLE = {Contemporary Literary Criticism},
  VOLUME = {61},
}

正如您所看到的,它还解析了相关的密钥。

相关内容