JabRef 无法读取 JabRef 3.0 创建的 .bib 文件

JabRef 无法读取 JabRef 3.0 创建的 .bib 文件

我正在迁移到新的计算机设置,当我安装 JabRef 3.8.2 时,我发现它无法读取 JabRef 3.0 创建的 .bib 文件。3140 个条目中只有 991 个出现,并且有一条错误消息(请参阅本文结尾)。

我在文本编辑器中查看了那些可能出错的行,但确实没有发现任何缺失的逗号。但这正是您所期望的,因为我从未手动编辑过 .bib 文件,它是由 JabRef 生成的。

有办法解决这个问题吗?我正在从打字疼痛中恢复过来,所以我将首先尝试不太需要打字的方法。

错误信息如下:

1. 解析条目时发生错误:‘第 4815 行或以上出现错误:空文本标记。
这可能是由于两个字段之间缺少逗号造成的。'。跳过的条目。
2. 解析条目时发生错误:‘第 6304 行或以上出现错误:空文本标记。
这可能是由于两个字段之间缺少逗号造成的。'。跳过的条目。
3. 解析条目时发生错误:‘第 6393 行或以上出现错误:空文本标记。
这可能是由于两个字段之间缺少逗号造成的。'。跳过的条目。
4. 解析条目时发生错误:‘第 6904 行或以上出现错误:空文本标记。
这可能是由于两个字段之间缺少逗号造成的。'。跳过的条目。
5. 解析条目时发生错误:‘第 8560 行或以上出现错误:空文本标记。
这可能是由于两个字段之间缺少逗号造成的。'。跳过的条目。
6. 解析条目时发生错误:‘第 9697 行或以上出现错误:空文本标记。
这可能是由于两个字段之间缺少逗号造成的。'。跳过的条目。
7. 解析条目时发生错误:“第 13249 行或以上错误:空文本标记。
这可能是由于两个字段之间缺少逗号造成的。'。跳过的条目。
8. 解析条目时发生错误:‘第 13646 行或以上出现错误:空文本标记。
这可能是由于两个字段之间缺少逗号造成的。'。跳过的条目。
9. 解析条目时发生错误:‘第 14067 行或以上错误:空文本标记。
这可能是由于两个字段之间缺少逗号造成的。'。跳过的条目。
10. 解析条目时发生错误:‘第 15177 行或以上出现错误:空文本标记。
这可能是由于两个字段之间缺少逗号造成的。'。跳过的条目。
11. 解析条目时发生错误:‘第 15530 行或以上出现错误:空文本标记。
这可能是由于两个字段之间缺少逗号造成的。'。跳过的条目。
12. 解析条目时发生错误:‘第 16010 行或以上错误:空文本标记。
这可能是由于两个字段之间缺少逗号造成的。'。跳过的条目。
13. 解析条目时出错:“第 51479 行出现错误:字符串中间出现 EOF”。跳过条目。

要求提供更多信息

这是我的完整 .bib 文件的链接

这是产生错误的第一个条目:

@Book{burzio.1994,
  标题 = {{P}rinciples of {E}nglish {S}tress},
  作者 = {Burzio, L.},
  出版商 = {剑桥大学出版社},
  年份 = {1994},
  地址 = {英国剑桥},
  关键词 = {音系学,重音,},
  Lccn = {请求直接借阅 2008 年 5 月 8 日、2008 年 11 月 7 日。},
  所有者 = {Word},
  时间戳 = {2009.07.31}
}

答案1

因为我是解决你问题的人在你上面链接的 JabRef 问题追踪器上,我将直接将我在 github 上的解答答案添加到此站点。这会使 tex.stackechange 更加独立。

我查看了您的文件,发现其中至少有一个条目有错误,我猜想其余的问题也是类似的。以下是有问题的条目:

@Article{burrows.2007,
  Title                    = {{A}ll the way through: {T}esting for authorship in different frequency strata.\},
  Author                   = {Burrows, John.},
  Journal                  = {Literary and Linguistic Computing},
  Volume                   = {22},
  Year                     = {2007},
  Number                   = {1},
  Abstract                 = {Not very readable. Basic premise is that the most and least frequent
    words aren't so good as a guage, but maybe the middling frequency
    words will work as an indication of an author's style. I suppose
    the word 'stipulate' might never appear in my academic writing, but
    it would in Robert A. Heinlein's. That idea is useful, but I didn't
    understand the mechanics of his specific tests for them.},
  Endnotereftype           = {Journal Article},
  Keywords                 = {computational, stylometry},
  Owner                    = {EN},
  Shorttitle               = {All the way through: Testing for authorship in different frequency strata.},
  Timestamp                = {2009.08.06}
}

问题出在以 结尾的 title 字段中\}。反斜杠转义了花括号,导致 JabRef 在解析过程中忽略它并导致错误。如果删除反斜杠,条目将正常加载。

据我所知,JabRef 拒绝此条目是正确的。我不知道 JabRef 3.0 为什么要以这种方式序列化它,但我猜这是一个错误(不应该再发生了)。

我建议您在文本编辑器中检查文件,搜索\}并删除反斜杠。正如您在 github 上提到的,这解决了您的问题。

答案2

答案3

请注意,当您尝试以错误的方式书写波兰语“带笔划的 L”时,也会出现类似的问题。

例如:如果您在 bibtex 文件的第 5000 行中包含作者姓名“Tałanda, A.” Ta{\{l}}anda, A.,JabRef 将报告以下错误:

1. Error occurred when parsing entry: 'Error in line 5000: Expected = but received a'. Skipped entry.

为了避免此错误,您必须按如下方式编写“带笔划的 L”(不将“L”括在括号中): Ta{\l}anda, A.

我把它留在这里只是为了防止其他人遇到这个问题。

相关内容