LaTeX源文件为什么要多次编译

发布于 2021-04-13 17:45:43

当我们在使用LaTeX进行论文排版时,由于.tex源文件编译的次数不够常会出现各种报错,现在我们来分析目录、交叉引用、参考文献编译过程以及报错的原因有哪些。

针对“图??”、“表??”、以及参考文献的引用“[??]”,这类的问题常常是由于对源文件的编译次数不够造成的。

目录图表编译过程

当源文档里有使用\tableofcontents命令构建目录,\ref\eqref\cref命令排版图表公式交叉引用时,需要对.tex源文件编译两次以上 。编译步骤如下:

image.png

image.png

xelatex demo
xelatex demo

bibtex排版参考文献

当采用bibtex排版参考文献时,需要编译四次进行下述步骤:

Step1: 第一次编译,采用xelatex等命令编译.tex源文件生成.aux 辅助文件;

Step2: 第二次编译 ,采用bibtex命令处理.aux辅助文件记录的参考文献格式、引用条目,同时,在与.tex文件在同一文件级下的.bib文献数据库以及.bst文献样式经处理生成.bbl文献列表,内容为thebibliography环境;

Step3: 第三次编译,xelatex再次编译读入.bbl文献列表生成无引用的PDF;

Step4: 第四次编译,xelatex读入.aux辅助文件生成最终的PDF。

image.png

xelatex demo
bibtex  demo
xelatex demo
xelatex demo

biblatex排版参考文献

当使用biblatex排版参考文献时,编译四次步骤如下:

Step1: xelatex等命令编译.tex源文件生成.aux辅助文件和.bcf引用文件;

Step2: biber命令处理.bcf引用文件记录的参考文件格式、引用条目等信息,生成.bbl 文献列表,biblatex宏包识别利用其中的信息输出引用标签和文献表;

Step3:xelatex等命令将.tex源文件再编译一遍,读入.bbl文献列表,结合.aux辅助文件生成正确引用和著录表;

Step4:若需要反向超链接,则需要在biblatex宏包设置选项backref,再使用xelatex编译,生成带文献反向超链接PDF。
image.png

xelatex demo
biber demo
xelatex demo
xelatex demo

分析得到出现“图??”等错误时,是因为停留在Step3阶段,此时的PDF为无引用的PDF。

报错情况

当运行LaTeX出现下面报错:

I found no bibdata command---while reading file *.aux

I found no bibstyle command---while reading file *.aux

I found no citation commands---while reading file *.aux

当出现这个报错时,说明编译的步骤停留在Step2。如果文章没有明显错误,检查.tex源文件同级文件夹下是否有.bib文献数据库以及.bst文献样式。

若无.bib和.bst文件,.bst文献样式需要根据不同的要求去官网下载。

若有.bib 和.bst文件,查看.bbl文献列表是否成功生成,使用bibtex重新编译.bib文件。

若仍出现报错,查看\bibliography{}语句是否编译,检查顺序是否正确:

\documentclass{article}
\bibliographystyle{plain} % .bst文件样式
\begin{document}
\bibliography{***} % .bib文件名
\end{document}

顺序大致以上述方式呈现。

0 条评论

发布
问题