目录、交叉引用、参考文献中的多次编译问题

参考文献 2019-09-23 14:21  浏览 :9444
经常会碰到在使用LaTeX排版时,出现没有目录、“图??”、“表??”、参考文献引用和著录不正确的问题。这类问题,多数是因为没有正常执行多次编译而造成的。在此,以xelatex引擎为例进行说明。 ###目录和图表 在使用`\\tableofcontents`命令排版目录,`\\ref`、`\\cref`等命令排版图表交叉引用时,至少需要对.tex文件进行**两次**编译,如(可以略去扩展名): ``` xelatex demo xelatex demo ``` 其编译过程如下图所示: ![目录排版流程](https://wenda.latexstudio.net/data/attach/190923/o3m1RYbx.png "目录排版流程") ![交叉引用排版流程](https://wenda.latexstudio.net/data/attach/190923/wKBwMs5M.png "交叉引用排版流程") ###用"bibtex"排版参考文献 在使用 `bibtex`排版参考文献时,需要: 1. 首先使用xelatex等命令编译LaTeX源代码demo.tex,生成demo.aux文件; 2. 接下来用 bibtex 命令处理 demo.aux 辅助文件记录的参考文献格式、引用条目等信息。bibtex 命令处理完毕后会生成 demo.bbl 文件,其内容就是一个thebibliography环境; 3. 再使用xelatex等命令把源代码demo.tex编译**两遍**,读入参考文献并正确生成引用和著录表。 整个过程使用的命令如下(可以略去扩展名): ``` xelatex demo bibtex demo xelatex demo xelatex demo ``` 其编译过程如下图所示: ![BiBTeX编译参考文献](https://wenda.latexstudio.net/data/attach/190923/pWQcUBEw.png "BiBTeX编译参考文献") ###用"biblatex"排版参考文献 在使用 `biblatex`排版参考文献时,需要: 1. 首先使用xelatex等命令编译LaTeX源代码demo.tex,生成demo.aux文件和demo.bcf文件; 2. 接下来用 biber 命令处理 demo.bcf文件记录的参考文献格式、引用条目等信息。biber 命令处理完毕后会生成 demo.bbl 文件,biblatex 识别并利用其中的信息输出引用标签和文献表; 3. 再使用xelatex等命令将源代码demo.tex编译**一遍**,读入demo.bbl文件,结合第1步编译生成的demo.aux文件生成正确引用和著录表。 4. 如需要后向超链接,则除了为biblatex宏包设置 backref选项外,还需**第4遍** xelatex 编译。 整个过程使用的命令如下(可以略去扩展名): ``` xelatex demo biber demo xelatex demo xelatex demo ``` ![biblatex编译参考文献](https://wenda.latexstudio.net/data/attach/190923/AmkSIv8e.png "biblatex编译参考文献") ###用"latexmk"命令完成所有工作 为了简化目录、交叉引用、参考文献等编译过程的自动化操作,LaTeX发行版提供了`latexmk`命令,以实现一次性完成所有的编译过程,如: ``` latexmk -xelatex demo.tex ``` ###说明 由以上分析可以看出,在LaTeX的编译过程中,会生成`*.aux`、`*.bcf`、`*.bbl`、`*.log`等辅助文件和日志文件,当这些文件没有发生改变时,这些文件则不需要再次编译,因此,一般不要随便删除这些文件。当然,如果需要从头开始完成编译或编译存在错误,造成无法再次编译时,则可以删除这些辅助文件。 *注意:以上操作都是在命令行实现操作的,若使用IDE,请参考相应手册对IDE进行合理配置,以实现对应操作。* ###编译log(日志)提示信息 通常,当没有达到预定编译次数时,在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(日志)文件**,是非常有必要的。
发布评论
登录后方可评论!点击登录
全部评论 (3)
U12896
1楼 · 2020-07-30 00:10

图做的漂亮!