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 つのフィールド間のコンマが欠落していることが原因である可能性があります。エントリがスキップされました。
2. エントリの解析中にエラーが発生しました: 6304 行目以上のエラー: テキスト トークンが空です。
これは、2 つのフィールド間のコンマが欠落していることが原因である可能性があります。エントリがスキップされました。
3. エントリの解析中にエラーが発生しました: 6393 行目以上のエラー: テキスト トークンが空です。
これは、2 つのフィールド間のコンマが欠落していることが原因である可能性があります。エントリがスキップされました。
4. エントリの解析中にエラーが発生しました: '行 6904 以上にエラーがあります: テキスト トークンが空です。
これは、2 つのフィールド間のコンマが欠落していることが原因である可能性があります。エントリがスキップされました。
5. エントリの解析中にエラーが発生しました: '行 8560 以上にエラーがあります: テキスト トークンが空です。
これは、2 つのフィールド間のコンマが欠落していることが原因である可能性があります。エントリがスキップされました。
6. エントリの解析中にエラーが発生しました: '9697 行目以上のエラー: テキスト トークンが空です。
これは、2 つのフィールド間のコンマが欠落していることが原因である可能性があります。エントリがスキップされました。
7. エントリの解析中にエラーが発生しました: '行 13249 以上にエラーがあります: テキスト トークンが空です。
これは、2 つのフィールド間のコンマが欠落していることが原因である可能性があります。エントリがスキップされました。
8. エントリの解析中にエラーが発生しました: '行 13646 以上にエラーがあります: テキスト トークンが空です。
これは、2 つのフィールド間のコンマが欠落していることが原因である可能性があります。エントリがスキップされました。
9. エントリの解析中にエラーが発生しました: '行 14067 以上にエラーがあります: テキスト トークンが空です。
これは、2 つのフィールド間のコンマが欠落していることが原因である可能性があります。エントリがスキップされました。
10. エントリの解析中にエラーが発生しました: '行 15177 以上にエラーがあります: テキスト トークンが空です。
これは、2 つのフィールド間のコンマが欠落していることが原因である可能性があります。エントリがスキップされました。
11. エントリの解析中にエラーが発生しました: '行 15530 以上にエラーがあります: テキスト トークンが空です。
これは、2 つのフィールド間のコンマが欠落していることが原因である可能性があります。エントリがスキップされました。
12. エントリの解析中にエラーが発生しました: '行 16010 以上にエラーがあります: テキスト トークンが空です。
これは、2 つのフィールド間のコンマが欠落していることが原因である可能性があります。エントリがスキップされました。
13. エントリの解析中にエラーが発生しました: 「行 51479 にエラーがあります: 文字列の途中に EOF があります」。エントリはスキップされました。

追加情報の要求

ここは完全な.bibファイルへのリンク

エラーが発生した最初のエントリは次のとおりです。

@Book{burzio.1994,
  タイトル = {{英語ストレスの原則}、
  著者 = {Burzio, L.},
  出版社 = {ケンブリッジ大学出版局},
  年 = {1994},
  住所 = {ケンブリッジ、イギリス},
  キーワード = {音韻論、強勢、},
  Lccn = {2008 年 5 月 8 日、2008 年 11 月 7 日に直接借用をリクエストしました。},
  所有者 = {単語},
  タイムスタンプ = {2009.07.31}
}

答え1

私はあなたの問題を解決した人なので上記にリンクしたJabRefの問題追跡システムで、github から解決した答えをこのサイトに直接追加します。これにより、tex.stackechange がもう少し自己完結的になります。

あなたのファイルを調べたところ、少なくとも 1 つのエントリにエラーが見つかりました。残りの問題も同様の性質のものであると思われます。問題のあるエントリは次のとおりです。

@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

誰かが私の問題を解決してくれました!

https://github.com/JabRef/jabref/issues/2799#issuecomment-297441786

答え3

ポーランド語の「L with stroke」を間違った方法で書こうとすると、同様の問題が発生する可能性があることに注意してください。

例: 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 with strike」を次のように記述する必要があります (「L」を中括弧で囲みません)。 Ta{\l}anda, A.

他の誰かがこの問題に遭遇した場合に備えて、ここに残しておきます。

関連情報