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

发布于 2021-03-26 14:24:25

经常会碰到在使用 LaTeX 排版时,出现没有目录、“图??”、“表??”、参考文献引用和著录不正确的问题。这类问题,多数是因为没有正常执行多次编译而造成的。在此,以 xelatex 引擎为例进行说明。 目录和图表在使用\tableofcontents命令排版目录,\ref\cref等命令排版图表交叉引用时,至少需要对 .tex 文件进行两次编译,如(可以略去扩展名):

xelatex demo
xelatex demo

其编译过程如下图所示:

image.png

用"bibtex"排版参考文献

在使用 bibtex 排版参考文献时,需要:

  • 首先使用 xelatex 等命令编译 LaTeX 源代码 demo.tex,生成 demo.aux 文件;
  • 接下来用 bibtex 命令处理 demo.aux 辅助文件记录的参考文献格式、引用条目等信息。bibtex 命令处理完毕后会生成 demo.bbl 文件,其内容就是一个 thebibliography 环境;
  • 再使用 xelatex 等命令把源代码 demo.tex 编译两遍,读入参考文献并正确生成引用和著录表。 整个过程使用的命令如下(可以略去扩展名):

    xelatex demo
    bibtex demo
    xelatex demo
    xelatex demo

    其编译过程如下图所示:

    image.png

用"bibtex"排版参考文献

在使用 biblatex 排版参考文献时,需要:

  • 首先使用 xelatex 等命令编译 LaTeX 源代码 demo.tex,生成 demo.aux 文件和 demo.bcf 文件;
  • 接下来用 biber 命令处理 demo.bcf 文件记录的参考文献格式、引用条目等信息。biber 命令处理完毕后会生成 demo.bbl 文件,biblatex 识别并利用其中的信息输出引用标签和文献表;
  • 再使用 xelatex 等命令将源代码 demo.tex 编译一遍,读入 demo.bbl 文件,结合第1步编译生成的 demo.aux 文件生成正确引用和著录表。

    如需要后向超链接,则除了为 biblatex 宏包设置 backref 选项外,还需第4遍 xelatex 编译。 整个过程使用的命令如下(可以略去扩展名):

    xelatex demo
    biber demo
    xelatex demo
    xelatex demo

    image.png

用"latexmk"命令完成所有工作

为了简化目录、交叉引用、参考文献等编译过程的自动化操作,LaTeX 发行版提供了 latexm k命令,以实现一次性完成所有的编译过程,如:

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(日志)文件,是非常有必要的。

0 条评论

发布
问题