从 bib 文件中提取输入键并为每个输入键创建一个文件

从 bib 文件中提取输入键并为每个输入键创建一个文件

在提到的想法中如何在 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-bibtexparserhttps://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将直接跳过不存在的文件,这意味着存在空文件是没有意义的。

相关内容