biblatex 生成的引文可以在其他文档中引用吗?

biblatex 生成的引文可以在其他文档中引用吗?

我创建了一份简历,并使用该biblatex软件包创建了多个书目列表,其中包含我发表的出版物,这些出版物被分类为“文章”、“论文集”等。现在我想创建另一份文件(一份申请),在其中引用其中一些文章。如何在不从简历中硬编码参考编号的情况下做到这一点?

我知道这个包xcite(它与 xr 包类似),但我无法让它工作(可能是因为这个biblatex包的使用似乎创建了一个非标准.aux文件)。

下面是我想要实现的一个小的工作示例:

在 CV.tex 中:

\begin{filecontents}{CV_bib.bib}
@article{Einstein1935,
AUTHOR    = {Albert Einstein},
TITLE     = {Can quantum-mechanical description of physical reality be considered complete?},
JOURNAL = {Physical review},
YEAR      = {1935}
}
@unpublished{Einstein1913,
AUTHOR    = {Albert Einstein and Michele Besso},
TITLE     = {Motion of the perihelion of Mercury},
YEAR = {1913}
}
\end{filecontents}

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber,style=numeric-comp,defernumbers]{biblatex}
\addbibresource{CV_bib.bib}

\begin{document}
Some citations: \cite{Einstein1935}, \cite{Einstein1913}.

\textbf{Submitted for review}
\printbibliography[type=unpublished, heading=none]
\textbf{Journal Publications}
\printbibliography[type=article, heading=none]
\end{document}

在 application.tex 中:

\documentclass[11pt]{article}
\usepackage{xcite}
\externalcitedocument{CV}

\title{Application}
\date{}

\begin{document}
\maketitle

As you can see in \cite{Einstein1913} we did....

\end{document}    

正如您所看到的,我只想获取正确的引用编号而不打印参考书目。

答案1

我看到的唯一办法就是对参考书目条目进行分组。交叉点应该是第一组,在其他任何内容之前独立编号。您可以将它们放在 3 个不同的 bib 文件中(每个文件一个,两个文件一个)。

如果您不对条目进行分组,编号可能会有所不同。即使您可以以某种方式引用编号,也很容易出现这种情况:四个参考书目条目,编号为 [1]、[2]、[4]、[9]。

如果将文档包含在同一个文件中,则可以避免上述问题,但这可能会导致其他问题......

答案2

我编写了这个 Python 脚本来生成一个.aux用于 xcite 和 Biblatex 的假文件。这是一个非常粗糙的尝试,但它在我需要的情况下很有用。按以下列出的 Python 脚本运行python gen_dummy_bib.py CV.bbl CV_fake.auxgen_dummy_bib.py

import sys
import re

replace_count = 1
infile = open(str(sys.argv[1]), 'r')
outfile = open(str(sys.argv[2]), 'w')

for line in infile:
    if '\\entry' in line:
        outfile.write(re.findall('\\\\entry\{[^{]+', line)[0].replace('entry', 'bibcite') + '{' + str(replace_count) + '}\n')
        replace_count += 1

infile.close()
outfile.close()

它非常简单,会遍历指定的.bbl文件,假设\entry文件中的命令按照它们在文档中的编号顺序出现。然后\bibcite根据它们在输出文件中的出现次数将它们转换为相应的命令.aux

我也将此脚本发布为 GitHub要旨

相关内容