Windows 下 biber 2.15 存在大型 bib 文件的错误

Windows 下 biber 2.15 存在大型 bib 文件的错误

我刚刚更新了我的 MikTeX 发行版,现在运行的是biber2.15 和biblatex3.15a。突然间,我遇到了问题。我有一个包含 1888 个条目的 bib 文件,现在尝试使用该文件似乎会中断biblatex,尽管它在早期版本上运行良好。我不知道问题是否出在biber或 上biblatex,但请尝试以下操作:

我从原始文件创建了两个 bib 文件,可供这里这里。使用以下 MWE 它可以正常工作并且两个引用都得到解决:

\documentclass{article}
\usepackage[french, german, UKenglish]{babel}
\usepackage[backend=biber, style=authoryear]{biblatex}
\addbibresource{Test.bib}
\addbibresource{Test2.bib}

\begin{document}
Let's test: \textcite{Arnold2002}, \textcite{Setty1973}

\printbibliography
\end{document}

但是,当我将两个 bib 文件合并为一个并尝试编译时,没有一个引用被解析。由于在将数据库分成两个时它工作正常,除了 bib 文件中的文件大小/条目数有限制之外,我看不出这种行为还有其他原因biberbiblatex请注意,不是实际引用的条目数量(就像在 中一样bibtex),而是数据库中条目的绝对数量。还是我忽略了什么?任何帮助都将不胜感激。

编辑1:

这是.blg文件。确实,有一个错误消息“[1095]”,但我无法理解它的含义:

[0] Config.pm:312> INFO - This is Biber 2.15 (beta)
[0] Config.pm:315> INFO - Logfile is 'DatabaseTest.blg'
[311] biber-MSWIN64:330> INFO - === 
[385] Biber.pm:415> INFO - Reading 'DatabaseTest.bcf'
[882] Biber.pm:952> INFO - Found 2 citekeys in bib section 0
[998] Biber.pm:4334> INFO - Processing section 0
[1068] Biber.pm:4523> INFO - Looking for bibtex format file 'TestFull.bib' for section 0
[1095] Utils.pm:411> ERROR - Data file 'TestFull.bib' cannot be read in encoding 'utf8': Wide character at C:\Users\Manue\AppData\Local\Temp\par-4d616e7565\cache-b32225defac3568d1e921af5a7245ca571b236aa\inc\lib/Win32/Unicode/File.pm line 163.
[1095] Biber.pm:132> INFO - ERRORS: 1

编辑2:

我现在确定了限制长度。可用的文件这里包含我所能处理的条目数。它包含 1477 个条目、25026 行和 1,048,339 字节。这个文件可以正常工作,但是只要我再添加一个模拟条目,例如

@Article{Test3,
  author       = {Author, A. and Author B. and Author, C.},
  date         = {2020},
  journaltitle = {A Journal},
  title        = {A nice title of a certain topic which I cannot even imagine},
  issue        = {3},
  pages        = {1--18},
  volume       = {12}
}

我得到了与上述相同的错误。这似乎是正常工作的长度限制biblatex

编辑3:

这里是完整文件,不能直接从 JabRef(.bib)运行,无需任何更改。并且这里与使用 Cygwin 导出的十六进制转储文件相同。

答案1

根据 Ulrike Fischer 的最新试验,现在可以肯定这是新版本 biber 中的一个错误,它会在特定的 bib 文件大小下崩溃:

https://github.com/plk/biber/issues/332

编辑:

目前,有两种可能的解决方法

  1. 将您的文件拆分bib为多个文件,每个文件大小小于 1MB
  2. 使用 biber 的当前开发版本 2.16,可在源码,该错误已修复。

编辑2:

biber 2.16 于 2021 年 4 月发布。现在应该支持最大 100MB 的 bib 文件。如果您在系统上遇到此问题,请确保使用 biber 2.16 或更高版本。

答案2

我暂时无法发表评论,因此作为答案:这听起来像是操作系统特有的问题。我在 Linux 上测试过,没有问题。github 问题跟踪器上最近报告了一个问题(https://github.com/plk/biber/issues/332) 与您的问题类似,可能与 EOL 标记有关。您可以检查问题跟踪器中的解决方案是否适合您吗?特别是,那里的用户报告说,转换为仅 LF 的 EOL 标记解决了该问题。

答案3

我跟着基本上确保我的 EOL 是 LF 而不是 CRLF,这解决了我的问题并确保我的文件被编码为 UTF-8。

答案4

我有一个包含 4500 多个条目的 bib 文件,在 Windows 10 下可以完美地与 TexLive2019 和 TexStudio 3.0.1 配合使用。当我换到另一台 Windows 10 电脑时,我下载了 TexLive2020 和 TexStudio 3.0.1。尝试编译我的文档时,我立即收到此错误。两台机器上运行的是同一个 bib 文件,因为我是从 Google Drive 下载的。所以这肯定是一个错误,而不是文件编码问题。

编辑:我使用 Notepad++ 和 JABREF 将文件拆分为三个 .bib 文件,然后在 TexStudio 中对每个部分使用 \addbibresource{}。(我无法让它在单个添加命令中识别三个文件名,文件之间没有空格和逗号。)现在它可以正常运行。

相关内容