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,
  標題={E}nglish {S}tress}的{{P}原理,
  作者 = {Burzio, L.},
  出版商={劍橋大學出版社},
  年份 = {1994},
  地址 = {英國劍橋},
  關鍵字 = {音系、重音、},
  Lccn = {2008 年 5 月 8 日、2008 年 11 月 7 日請求直接借用。
  所有者 = {單字},
  時間戳 = {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}
}

問題出在以 結尾的標題欄位\}。反斜線轉義大括號,這會導致 JabRef 在解析過程中忽略它並導致錯誤。如果刪除反斜杠,則該條目可以正常載入。

據我所知,JabRef 拒絕該條目是正確的。為什麼 JabRef 3.0 以這種方式序列化它,我不知道,但我猜這是一個錯誤(不應該再發生了)。

我建議您在文字編輯器中檢查文件,搜尋出現的反斜線\}並刪除反斜線。正如您在 github 上提到的,這解決了您的問題。

答案2

答案3

請注意,當您嘗試以錯誤的方式書寫波蘭語「帶筆劃的 L」時,可能會出現類似的問題。

例如:如果您包含作者姓名“Tałanda, A.”如Ta{\{l}}anda, A.bibtex 檔案的第 5000 行所示,JabRef 將報告以下錯誤:

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

為避免此錯誤,您必須以以下方式編寫「帶筆畫的 L」(「L」不用大括號括起來): Ta{\l}anda, A.

我只是將其留在這裡,以防其他人遇到此問題。

相關內容