经常会碰到在使用 LaTeX 排版时,出现没有目录、“图??”、“表??”、参考文献引用和著录不正确的问题。这类问题,多数是因为没有正常执行多次编译而造成的。在此,以 xelatex 引擎为例进行说明。 目录和图表在使用\tableofcontents
命令排版目录,\ref
、\cref
等命令排版图表交叉引用时,至少需要对 .tex 文件进行两次编译,如(可以略去扩展名):
xelatex demo
xelatex demo
其编译过程如下图所示:
在使用 bibtex 排版参考文献时,需要:
再使用 xelatex 等命令把源代码 demo.tex 编译两遍,读入参考文献并正确生成引用和著录表。 整个过程使用的命令如下(可以略去扩展名):
xelatex demo
bibtex demo
xelatex demo
xelatex demo
其编译过程如下图所示:
在使用 biblatex 排版参考文献时,需要:
再使用 xelatex 等命令将源代码 demo.tex 编译一遍,读入 demo.bbl 文件,结合第1步编译生成的 demo.aux 文件生成正确引用和著录表。
如需要后向超链接,则除了为 biblatex 宏包设置 backref 选项外,还需第4遍 xelatex 编译。 整个过程使用的命令如下(可以略去扩展名):
xelatex demo
biber demo
xelatex demo
xelatex demo
为了简化目录、交叉引用、参考文献等编译过程的自动化操作,LaTeX 发行版提供了 latexm k命令,以实现一次性完成所有的编译过程,如:
latexmk -xelatex demo.tex
说明:由以上分析可以看出,在 LaTeX 的编译过程中,会生成*.aux
、*.bcf
、*.bbl
、*.log
等辅助文件和日志文件,当这些文件没有发生改变时,这些文件则不需要再次编译,因此,一般不要随便删除这些文件。当然,如果需要从头开始完成编译或编译存在错误,造成无法再次编译时,则可以删除这些辅助文件。
注意:以上操作都是在命令行实现操作的,若使用IDE,请参考相应手册对IDE进行合理配置,以实现对应操作。
通常,当没有达到预定编译次数时,在log(日志)中,会有对应的提示,如:
LaTeX Warning: There were undefined references.
LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
或
you should run BiBTex to get citation right.
Package natbib Warning: There were undefined citations.
或
you should run LaTeX again to get reference right.
或
you should run Biber to get citation right.
因此,认真读编译过程中生成的log(日志)文件,是非常有必要的。