새 컴퓨터 설정으로 마이그레이션 중인데 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'. 항목을 건너뛰었습니다.
추가 정보가 요청됨
오류가 발생한 첫 번째 항목은 다음과 같습니다.
@Book{burzio.1994, 제목 = {{P}{E}English {S}tress}의 원리, 저자 = {Burzio, L.}, 출판사 = {Cambridge University Press}, 연도 = {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}
}
문제는 로 끝나는 제목 필드에 있습니다 \}
. 백슬래시는 중괄호를 이스케이프하므로 JabRef가 구문 분석 중에 백슬래시를 무시하고 오류가 발생합니다. 백슬래시를 제거하면 항목이 제대로 로드됩니다.
내가 아는 한, JabRef는 이 항목을 거부하는 것이 맞습니다. JabRef 3.0이 이런 방식으로 직렬화한 이유는 알 수 없지만 이것이 버그였던 것 같습니다(더 이상 발생해서는 안 됩니다).
제가 추천하는 것은 텍스트 편집기에서 파일을 검사하고 \}
백슬래시가 있는지 검색한 후 삭제하는 것입니다. github에서 언급했듯이 문제가 해결되었습니다.
답변2
누군가 내 문제를 해결했습니다!
https://github.com/JabRef/jabref/issues/2799#issuecomment-297441786
답변3
폴란드어 "획이 있는 L"을 잘못된 방식으로 쓰려고 하면 비슷한 문제가 발생할 수 있습니다.
예: 저자 이름 "Tałanda, A."를 포함하는 경우 bibtex 파일의 5000행에서 와 같이 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.
다른 사람이 이 문제에 직면할 경우를 대비해 여기에 남겨둡니다.