我花了很长时间寻找解决编译问题的方法。直到昨天,文档运行良好。添加一些新引用后,编译停止正常工作。不过,我只使用 latex 几个月,所以这个错误可能很容易修复。
我的 blg 文件中的错误代码是:
[836] Utils.pm:209> ERROR - BibTeX subsystem:
C:\Users\andre\AppData\Local\Temp\yb9w7ETEpQ\thesisbiblo.bib_16800.utf8,
line 1375, syntax error: found ",", expected one of: number, name (entry
type, key, field, or macro name), end of entry ("}" or ")") or quoted string
({...} or "...").
我有 biber 2.11 和 miktex 2.9,并且认为它可能是缓存文件,如先前有关 2.11 版本的线程所建议的那样,但它也无法删除它。
谢谢
我的“主要”文档如下所示:
\documentclass[man,12pt,a4paper,babel,english]{apa6}
\usepackage{babel,duomasterforside}
\usepackage[utf8]{inputenc}
\usepackage[hidelinks]{hyperref}
% Math syntax
\usepackage{siunitx}
\usepackage{upgreek}
\usepackage{gensymb}
\usepackage{amsmath}
\usepackage{mathtools}
\DeclarePairedDelimiter{\abs}{\lvert}{\rvert}
% Figures
\usepackage{graphicx}
\graphicspath{{Figures/}}
\usepackage{float}
\usepackage{subcaption}
% Biblography and citing
\usepackage[style=apa,backend=biber,sortcites=true,sorting=nyt,autocite=inline,uniquename=false]{biblatex}
\addbibresource{thesisbiblo.bib}
% Frontpage
\usepackage{pdfpages}
\begin{document}
% Frontpage
\includepdf[pages=1-]{titlepage.pdf}
% Abstract
\input{Abstract}
\newpage
% Table of contents
\tableofcontents
\newpage
% Document
\input{Introduction.theory}
\newpage
\input{Methods}
\newpage
\input{Results}
\newpage
\input{Discussion}
\newpage
\input{Conclusion}
\newpage
% References
\printbibliography
\end{document}
答案1
缺少 的条目可能会产生此类错误entrykey
。
Biber 将抛出以下形式的错误
syntax error: found ",", expected one of: number, name (entry type, key, field,
or macro name), end of entry ("}" or ")") or quoted string
如果您将密钥留空。不幸的是,这个错误非常严重,Biber 将无法正确处理(其余的)文件。这意味着一个没有密钥的条目可能会导致您的整个.bib
文件无法使用。
在这种情况下,您还应该收到类似以下警告
WARN - Invalid or undefined BibTeX entry key in file 'C:\Users\<User>\AppData\Local\Temp\bGm7haxaPA\skjshjshs.bib_16176.utf8', skipping ...
这些信息的顺序稍微不寻常是有技术原因的,请参阅https://github.com/plk/biblatex/issues/818。
BibTeX 稍微宽容一些,允许您使用一个空的条目键(您不能有两个带有空键的条目,毕竟键必须是唯一的)。但带有空键的条目无法被引用,即使biblatex
使用\nocite{*}
因此,我强烈建议.bib
文件中的所有条目都有一个非空的,有效的输入键。
因为我认为警告用户不要将密钥留空是有意义的,所以我向 JabRef 提出了一个问题https://github.com/JabRef/jabref/issues/4440。