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