Я перехожу на новую конфигурацию компьютера, и когда я установил JabRef 3.8.2, я обнаружил, что он не может прочитать файлы .bib, созданные JabRef 3.0. Появляется только 991 из 3140 записей, и появляется сообщение об ошибке (см. конец этого сообщения).
Я посмотрел на предположительно плохие строки в текстовом редакторе, и я действительно не вижу никаких пропущенных запятых. Но это то, что вы могли бы ожидать, потому что я никогда не редактирую файл .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}ринципы {английского {S}ресса}, Автор = {Бурцио, Л.}, Издатель = {Издательство Кембриджского университета}, Год = {1994}, Адрес = {Кембридж, Великобритания}, Ключевые слова = {фонология, ударение, }, Lccn = {Запрошенный заем напрямую 8 мая 2008 г., 7 ноября 2008 г.}, Владелец = {Слово}, Временная метка = {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
Кто-то решил мою проблему!
https://github.com/JabRef/jabref/issues/2799#issuecomment-297441786
решение3
Обратите внимание, что аналогичная проблема может возникнуть, если вы попытаетесь написать польскую букву «L с чертой» неправильно.
Пример: Если вы включите имя автора «Tałanda, A.» Ta{\{l}}anda, A.
в строку 5000 вашего файла bibtex, JabRef сообщит о следующей ошибке:
1. Error occurred when parsing entry: 'Error in line 5000: Expected = but received a'. Skipped entry.
Чтобы избежать этой ошибки, необходимо написать «L со штрихом» следующим образом (без заключения «L» в фигурные скобки):
Ta{\l}anda, A.
Я просто оставлю это здесь на случай, если кто-то еще столкнется с такой проблемой.