在提到的想法中如何在 biblatex 中嵌入评论?应该为 bib 文件中的每个条目键创建一个文件。这些文件将被命名以引用每个条目键,名称将类似于
bibannotation-entrykey1.tex
bibannotation-entrykey2.tex
bibannotation-entrykey3.tex
如果 bib 文件包含许多条目,那么自动化可能会很有趣。怎么做?我检查了一下biber --help
,但似乎没有用于此目的的东西。
答案1
Biber 当然不会自动为您创建这些文件。最好的选择可能是使用其他编程语言,例如 Python 或 Perl,并带有可以读取.bib
文件的库 (https://github.com/sciunto-org/python-bibtexparser,https://pypi.org/project/biblib/,https://metacpan.org/pod/Text::BibTeX,...)。
例如以下 Perl 脚本
#!/usr/bin/perl
use strict;
use warnings;
use Text::BibTeX;
my ($bibfilename) = @ARGV;
unless (defined $bibfilename) {
die "Please provide a file name";
}
if (-f $bibfilename) {
print "Processing ${bibfilename}...\n";
} else {
die "File ${bibfilename} not found";
}
my $bibfile = Text::BibTeX::File->new($bibfilename);
my $entry;
while ($entry = Text::BibTeX::Entry->new($bibfile))
{
next unless $entry->parse_ok;
next unless $entry->metatype eq BTE_REGULAR;
my $key = $entry->key;
my $file = "bibannotation-${key}.tex";
unless (-e $file) {
open TMPFILE, '>', $file and close TMPFILE
or die "File error with $file: $!";
}
}
另存为bibannotations.pl
并运行时
perl bibannotations.pl <mybibfile.bib>
将为文件bibannotation-<entrykey>.tex
中的所有条目生成形式为 的空文件。.bib
<mybibfile.bib>
从技术上讲,您甚至不需要不同的编程语言,您可以让 TeX 来解决这个问题。只需.bib
在以下文件中加载所有相关文件,然后使用 LaTeX、Biber、LaTeX 进行编译即可。
\documentclass{article}
\usepackage[style=authoryear, backend=biber]{biblatex}
\nocite{*}
\newwrite\filehandle
\AtDataInput{%
\IfFileExists{bibannotation-\thefield{entrykey}.tex}
{}
{\immediate\openout\filehandle=bibannotation-\thefield{entrykey}.tex
\immediate\closeout\filehandle}%
}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{appleby,
author = {Humphrey Appleby},
title = {On the Importance of the Civil Service},
date = {1980},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Lorem ipsum
\end{document}
然而,我认为自动创建这些文件没有什么意义。毕竟,你无论如何都必须手动提供这些文件的内容。至少对于loadfiles
在如何在 biblatex 中嵌入评论? biblatex
将直接跳过不存在的文件,这意味着存在空文件是没有意义的。