Latex编译过程中总是会碰到各种各样的报错,故整理成文档,方便查阅。
-
Latex参考文献[?]
这种情况,我专门写了给博客,参考:Latex 编译时出现问号[?]的几种情况及解决办法_Pycharm比VScode更好用的博客-CSDN博客_latex参考文献显示问号
-
特殊字符没有转义
这类错误可能比较常见,文中或者参考文献中含特殊符号或者作者名里含特殊语言(俄文之类的),如下图:
例如,下面的“&”,要加 \ 转义一下
@book{RN265,
author = {XXX,XXX,XXX},
title = {XXXXXX},
publisher = {Springer Science \& Business Media},
ISBN = {XXX},
year = {XXX},
type = {XXX}
}
其他特殊符号,请自行查询并转义。
-
导入不必要的包
投elsevier的期刊,如果是latex,需要用到elsarticle.cls,碰到错误paragraph ended before \@citex was complete。
解决办法:去掉或注释usepackage{cite},即可。
-
参考文献重复
编译器会显示“repeated ref entry”之类的报错信息,说明在ref.bib文件里有重复的参考文献条目,请自行检查参考文献是否重复。
-
Paragraph ended before XXX was complete.
出现这种报错,肯定是跟XXX相关的参数或者{}的输入错误,有时候漏掉或者多一个“}”,将“{”错输成“}”都会导致这种错误,逐个检查XXX相关的写法即可。
-
Error: Command XXX already defined.
出现这种情况,说明报错处显示的命令行,或者导入的包已经被定义过了,可能的重复导入(检查有没有重复导入包),也可能是模板自带,而你自己又重新导入了一遍。删掉多余导入的包,或者改用模板自带的命令。
例如:LaTeX Error: Command \thead already defined. 编译器显示 makecell 包已经在当前编译环境下被定义了(可能是模板自带的),这时候需要注释掉\usepackage{makecell}这行命令,相应的在文中删掉\makecell{XXX\\XXX}这种写法,换行可以采用其他方法(如直接用 \newline,见另一篇博客)。
-
Bibtex: You can't pop an empty literal stack for entry XXX
这种情况一般出现在期刊论文里,期刊对自己的参考文献都有特殊的格式要求,可以看看报错的XXX是对应着哪篇文献。这种错误是说明对应类型的参考文献条目缺少了相应的域(如moth,journal,year等域的缺失)。查一下.cls文件(论文的格式文件,里面会加载各种格式的要求,也包括参考文献格式的文件,即.bst文件),.bst是文章对应的参考文献格式文件,在.bst文件里,找到对应类型的文献的Function修改,例如URL域缺失了一些域,在.bst文件里找到misc类型对应的报错检测函数如下,自己修改与之对应的Function:
FUNCTION {misc}
{ output.bibitem
format.authors "author" output.check
format.editors "author and editor" output.check
format.title "title" output.check
type missing$
{ skip$ }
% { format.type "type" output.check }
{ "type" output.check }
%%{ inbrackets type output }
if$
new.block
format.publisher.address output
format.date "year" output.check
new.block
format.note output
new.block
howpublished new.block.checka
howpublished "howpublished" bibinfo.check output
% output.web.refs % urlbst
fin.entry
empty.misc.check
}
将对应FUNCTION里的缺失检测的语句注释掉就可以了,如下所示,注释了type missing$,然后就不会报错了。
FUNCTION {misc}
{ output.bibitem
%format.authors "author" output.check
%format.editors "author and editor" output.check
format.title "title" output.check
%type missing$
% { skip$ }
% { format.type "type" output.check }
% { "type" output.check }
%%{ inbrackets type output }
%if$
%new.block
%format.publisher.address output
format.date "year" output.check
new.block
format.note output
new.block
howpublished new.block.checka
howpublished "howpublished" bibinfo.check output
% output.web.refs % urlbst
fin.entry
%empty.misc.check
}
类似的,如果其他类型的文献(journal,inproceedings,article,book)对应的FUNCTION里有域的缺失,注释掉检测语句就不会报错了,或者补上缺失的域(如year,author)。
Undefined control sequence.
报错原因:缺乏对应的宏包。例如画三段式表格时,需要用\toprule、\midrule、\bottomrule在宏包\usepackage{booktabs}中,没导入该宏包就会报错。
不定期更新...
整理不易,三连支持一下