我在 Windows 上的 MiKTeX 下使用 biblatex 和 biber。我的.bib
目录中有许多文件(例如$localtexmf/bibtex/bib
),我想\addbibresource
一次性全部处理它们。是否有内置选项可以biber
执行此操作?
答案1
请尝试biber
SourceForge 上 DEV 文件夹中的 2.13。您现在可以使用 BSD 样式通配符,例如\addbibresource
:
\addbibresource{bibfile*.bib}
\addbibresource{bibfile?.bib}
\addbibresource(bibfile{1,2}.bib}
答案2
TeX 无法原生查询目录内容。因此,.bib
除非使用 shell escape 或 LuaTeX,否则您无法从 TeX 中获取目录中的文件列表并循环遍历它们。
使用 shell escape,你可以ls
在目录上运行或类似操作,然后解析返回的列表,使用 LuaTeX,你可以使用 Lua 访问文件系统,请参阅如何迭代文件夹中文件的名称。然后您可以循环遍历该列表并应用\addbibresource
到每个项目。
Biber 可能可以查询文件夹的内容,但目前没有面向用户界面允许您这样做。
我认为.bib
文件的数量和名称是相当稳定的,因此您可以编制这些文件的列表,\addbibresource
并\input
在所有文档中列出该列表。
答案3
我使用外部(PowerShell)脚本将bib
文件夹中的所有文件合并为一个。
$bibfile = "C:\localtexmf\bibtex\bib\_all.bib"
$bibtemp = "C:\localtexmf\bibtex\bib\_tmp.bib"
rm $bibfile -ErrorAction Ignore
cat "C:\localtexmf\bibtex\bib\*.bib" | sc $bibtemp
Get-Content $bibtemp | Out-File -Encoding UTF8 $bibfile
rm $bibtemp -ErrorAction Ignore
它非常方便,您甚至可以将其添加为您的第一个任务biber.bat
,这样您甚至不必考虑它。