编译包含交叉引用的 LaTeX 文件需要编译四次(pdflatex + bibtex + pdflatex * 2),一直对这四次编译都干了什么事很好奇。这次就来看一下每一步具体都干了些什么。

源文件

main.tex

\documentclass{article}
\begin{document} Here is a citation \cite{example}. \bibliographystyle{plain}
\bibliography{references} \end{document}

references.bib

@article{example,
author = {Author Name},
title = {Title of the Paper},
journal = {Journal Name},
volume = {XX},
number = {YY},
pages = {ZZ--ZZ},
year = {Year},
}

1. pdflatex

命令:

$ pdflatex main.tex
This is pdfTeX, Version 3.141592653-2.6-1.40.26 (TeX Live 2024) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
(./main.tex
LaTeX2e <2023-11-01> patch level 1
L3 programming layer <2024-02-20>
(/usr/local/texlive/2024/texmf-dist/tex/latex/base/article.cls
Document Class: article 2023/05/17 v1.4n Standard LaTeX document class
(/usr/local/texlive/2024/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2024/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def)
No file main.aux. LaTeX Warning: Citation `example' on page 1 undefined on input line 4. No file main.bbl.
[1{/usr/local/texlive/2024/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./main.aux) LaTeX Warning: There were undefined references. )</usr/local/texlive/2024/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb
></usr/local/texlive/2024/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb>
Output written on main.pdf (1 page, 23198 bytes).
Transcript written on main.log.

输出:

main.aux

\relax
\citation{example}
\bibstyle{plain}
\bibdata{references}
\gdef \@abspage@last{1}

main.log(日志文件,略)

main.pdf

可以看到目前只有交叉引用的占位符。

2. bibtex

命令:

$ bibtex main.aux
This is BibTeX, Version 0.99d (TeX Live 2024)
The top-level auxiliary file: main.aux
The style file: plain.bst
Database file #1: references.bib

输出:

main.bbl

\begin{thebibliography}{1}

\bibitem{example}
Author Name.
\newblock Title of the paper.
\newblock {\em Journal Name}, XX(YY):ZZ--ZZ, Year. \end{thebibliography}

.bbl 文件包含的实际上是 LaTeX 代码,我们可以直接将 .bbl 文件的内容插入到 main.tex 中去。只要用 .bbl 文件的内容替换 \bibliography{} 命令即可。

main.blg(日志文件,略)

3. pdflatex

命令:

$ pdflatex main.tex
This is pdfTeX, Version 3.141592653-2.6-1.40.26 (TeX Live 2024) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
(./main.tex
LaTeX2e <2023-11-01> patch level 1
L3 programming layer <2024-02-20>
(/usr/local/texlive/2024/texmf-dist/tex/latex/base/article.cls
Document Class: article 2023/05/17 v1.4n Standard LaTeX document class
(/usr/local/texlive/2024/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2024/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def)
(./main.aux) LaTeX Warning: Citation `example' on page 1 undefined on input line 4. (./main.bbl) [1{/usr/local/texlive/2024/texmf-var/fonts/map/pdftex/updmap/pdfte
x.map}] (./main.aux) LaTeX Warning: There were undefined references. LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. )</usr/local/texlive/2024/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb
></usr/local/texlive/2024/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb>
</usr/local/texlive/2024/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></
usr/local/texlive/2024/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb>
Output written on main.pdf (1 page, 46310 bytes).
Transcript written on main.log.

输出:

main.aux

\relax
\citation{example}
\bibstyle{plain}
\bibdata{references}
\bibcite{example}{1}
\gdef \@abspage@last{1}

可以看到这次 .aux 文件多了一条 \bibcite{example}{1} 命令。

main.log(日志文件,略)

main.pdf

可以看到现在打印了参考文献列表,但是还没有引用到参考文献序号。

4. pdflatex

命令:

$ pdflatex main.tex
This is pdfTeX, Version 3.141592653-2.6-1.40.26 (TeX Live 2024) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
(./main.tex
LaTeX2e <2023-11-01> patch level 1
L3 programming layer <2024-02-20>
(/usr/local/texlive/2024/texmf-dist/tex/latex/base/article.cls
Document Class: article 2023/05/17 v1.4n Standard LaTeX document class
(/usr/local/texlive/2024/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2024/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def)
(./main.aux) (./main.bbl) [1{/usr/local/texlive/2024/texmf-var/fonts/map/pdftex
/updmap/pdftex.map}] (./main.aux) )</usr/local/texlive/2024/texmf-dist/fonts/ty
pe1/public/amsfonts/cm/cmbx12.pfb></usr/local/texlive/2024/texmf-dist/fonts/typ
e1/public/amsfonts/cm/cmr10.pfb></usr/local/texlive/2024/texmf-dist/fonts/type1
/public/amsfonts/cm/cmti10.pfb>
Output written on main.pdf (1 page, 36642 bytes).
Transcript written on main.log.

输出:

main.log(日志文件,略)

main.pdf

可以看到交叉引用已经生成完整。

LaTeX 交叉引用的四次编译的更多相关文章

  1. LaTeX 交叉引用系统简介

    目录 摘要 1. 简介 2. 指定标签或标记符 3. 标签的位置 4. 引用的生成和更新 5. 引用相关的警告信息 6. 扩展引用功能的宏包 6.1 varioref宏包 6.2 cleveref宏包 ...

  2. TeXstudio+TexLive交叉引用

    LaTeX 交叉引用系统简介 https://www.cnblogs.com/wenbosheng/p/9537774.html 一般来说需要两次运行排版命令才能生成引用编号.背后的原理是这样的,第一 ...

  3. C++类的交叉引用

    对于C++中,两个类中相互引用对方,当然只能是在指针的基础上,于是我们知道.也就是说在A类的有一个指针引用B类的成员函数或成员对象,而B类中又有一个指针来访问A中的成员函数或对象.这就是C++中类的交 ...

  4. 第五周 Word注释与交叉引用

    第五周 Word注释与交叉引用 教学时间 2013-3-26 教学课时 2 教案序号 4 教学目标 1.掌握脚注.尾注.题注的概念和应用 2.掌握交叉引用的操作方法 教学过程: 复习提问 1.如何利用 ...

  5. word正文中怎么引用章节编号、怎么引用图片表格编号、交叉引用

    摘自:https://blog.csdn.net/m0_37549050/article/details/88823135 在写文档的时候,可能会出现需要在文档中引用其它段落的编号.比如文档分了章节, ...

  6. 20140404 OpencvGPU模块 参考文献交叉引用:引用->题注 加入3.1,3.2,3.2编号

    1.参考文献交叉引用:引用->题注 2.加入3.1,3.2,3.2编号:开始->段落 3.OpencvGPU模块,编译opencv.sln时记得在库目录中添加D:\opencv\build ...

  7. 【Word】自动化参考文献-交叉引用

    第一步:设置参考文献标号 开始-定义新编号格式中,定义参考文献式的方框编号: 这里注意不要把他原来的数字去掉 第二步:选择交叉引用 插入-交叉引用: 第三步:更新标号 如果更新标号,使用右键-更新域. ...

  8. Word2013对公式处理:样式、自动编号、交叉引用

    因快写毕业论文,专门研究了一下Word2013对公式的处理,有一点小心得,记在这里. 文章中公式展示的预期效果是:公式居中,尾端有编号,同时在文章中可以实现引用.实现该效果有很多方法,这里就说一种,其 ...

  9. Delphi函数翻译成VC要注意句柄指针传递(传递Handle的时候,必须加上一个指针引用,才能消除编译错误)

    Delphi里做了魔法变化,每个变量名称本身就是指针,因为不怎么需要指针语法.我也不知道是不是因为这个原因引起的Delphi与VC对句柄的不同处理. 这是Delphi的强行关机函数,好用,调用方式:W ...

  10. WPS2012交叉引用技巧,word比wps这点强更新參考文献

                WPS2012交叉引用技巧,word比wps这点强更新參考文献 到时生成仅仅有有一条线,好像WPS不能够,word能够,假设谁知道能够补充.^_^ 1.写论文,參考文献的改动非 ...

随机推荐

  1. mermaid语法画图

    mermaid 脚本语言 graph TB 从上到下 graph BT 从下到上 graph RL 从右到左 graph LR 从左到右 graph LR; A001-->B001; graph ...

  2. SpringBoot实现RequestBodyAdvice和ResponseBodyAdvice接口

    Spring Boot 提供了一种机制,允许开发者在请求体(RequestBody)和响应体(ResponseBody)被处理之前和之后执行自定义逻辑.这通过 RequestBodyAdvice 和 ...

  3. SpringBoot集成Nacos配置中心和服务注册

    安装Nacos https://blog.csdn.net/Soldoros_/article/details/118943062 引入nacos依赖包 <!-- Spring Boot 启动父 ...

  4. Java Objects工具类重点方法使用

    Objects工具类 jdk 1.7引进的工具类,都是静态调用的方法,jdk 1.8新增了部分方法 重点方法 equals 用于字符串和包装对象的比较,先比较内存地址,再比较值 deepEquals ...

  5. 重磅来袭!MoneyPrinterPlus一键发布短视频到视频号,抖音,快手,小红书上线了

    MoneyPrinterPlus开源有一段时间了,已经实现了批量短视频混剪,一键生成短视频等功能. 有些小伙伴说了,我批量生成的短视频能不能一键上传到视频号,抖音,快手,小红书这些视频平台呢?答案是必 ...

  6. django python 循环一个月的每一天

    from datetime import datetime, timedelta def get_dates_in_month(year, month): start_date = datetime( ...

  7. Odoo 增加web后端的响应能力

    实践环境 Odoo 14.0-20221212 (Community Edition) web_responsive-14.0.1.2.1.zip https://apps.odoo.com/apps ...

  8. 踩坑记录:windows11下使用 VS2022 和 PCL1.14.1 配置点云开发环境

    闲话不多说,具体在windows下下载PCL与解压pcl可以看https://www.yuque.com/huangzhongqing/pcl/这位大佬的文章,那我就具体说一下踩过点坑: 踩坑点1: ...

  9. exp解析

    1 #pragma once 2 #include <string> 3 #include <functional> 4 #include <type_traits> ...

  10. Bond4配置

    Bongding聚合链路工作模式 > bond聚合链路模式共7种:0-6Mode > bond 0 负载均衡 轮询方式往每条链路发送报文,增加带宽和容错能力.容易出现数据包无序到达的问题, ...