22
33> BibTeX是一套用于管理文献、产生文献目录的格式。 使用上通常与LaTeX一起使用。(摘自[ WikiPedia] ( https://zh.wikipedia.org/zh-cn/BibTeX ) )
44
5+ ## 0. 内容与格式的分离
6+
7+ 在 Word 中,你手动写下“[ 1] 王小明. 论文标题...”,一旦要调整格式(比如要把作者变斜体,或者按年份排序),你需要手动修改几十处。而LaTeX的逻辑是数据库思维:
8+
9+ 1 . ** ` .bib ` 文件(数据库):** 只管存储数据(作者是谁、哪年发的),不关心长什么样。
10+ 2 . ** ` .tex ` 文件(逻辑):** 只管引用数据(这里引用了这篇文章),不关心具体内容。
11+ 3 . ** 样式命令(渲染):** 决定最终长什么样(是 ` [1] ` 还是 ` (Wang, 2025) ` )。
12+
513有了BibTeX,我们可以方便的在一个文件中收集需要的文献,并在LaTeX文件中引用它。
614
7- ## 创建包含参考文献条目 ` .bib ` 文件
15+ ## 1. 创建包含参考文献条目 ` .bib ` 文件
816
9- 首先,创建一个文件后缀为 ` .bib ` 的文件,包含参考文献条目 。每个参考文献条目都需要遵循BibTeX格式,通常包括如作者、标题、出版年份等信息。
17+ 首先,我们需要创建一个后缀为 ` .bib ` 的文件(例如 ` references.bib ` ),并在其中添加参考文献条目 。每个参考文献条目都需要遵循BibTeX格式,通常包括如作者、标题、出版年份等信息。
1018
11- 例如,在与` .tex ` 相同目录下创建一个 ` references.bib ` 文件,示例内容如下:
19+ 一个bib文件中可以包含多个条目,下面我们来看一下一个典型的参考文献条目格式是怎么样的:
20+
21+ ``` bibtex
22+ @book{latexguide,
23+ author = {Leslie Lamport},
24+ title = {LaTeX: A Document Preparation System},
25+ publisher = {Addison-Wesley},
26+ year = {2077},
27+ edition = {2nd}
28+ }
29+ ```
30+
31+ 让我们逐字段介绍一下这个格式:
32+
33+ ```
34+ 文档类型 (Entry Type)
35+ 固定语法: book, article...
36+ │
37+ │ 引用标签 (Citation Key)
38+ │ 自定义ID: 在正文中引用
39+ │ │
40+ ┌─┴──┐ ┌─┴──────────┐
41+ @│book│{│ latexguide │,
42+ └────┘ └────────────┘
43+ 字段名 (Field Name)
44+ 固定关键字: author, title...
45+ │
46+ │ 字段内容 (Field Value)
47+ │ 具体的文献信息
48+ ┌─┴────┐ ┌─┴─────────────┐
49+ │author│ = {│Leslie Lamport │}, ◄────── 注意:字段结束必须加英文逗号
50+ └──────┘ └───────────────┘
51+ title = {LaTeX: A Document Preparation System},
52+ publisher = {Addiso.-Wesley},
53+ year = {2077},
54+ edition = {2nd}
55+ ...
56+ ◄────── 可以添加更多字段
57+ ...
58+ }
59+ ```
60+
61+ 例如,我们在与` .tex ` 文件相同的目录下创建一个 ` references.bib ` 文件,包含两个条目的示例内容如下:
1262
1363``` bibtex
1464@book{latexguide,
1969 edition = {2nd},
2070}
2171
22- @misc{citename,
72+ @misc{citename,
2373 author = {chenyu76},
2474 title = {Add citation in LaTeX},
2575 year = {2025}
2676}
27-
28- ……
29- 可以添加更多条目,
30- 只有在正文中使用\cite命令的条目
31- 才会出现在最后编译好的文档中
3277```
3378
34- 每个@开头是一个条目,条目内部填入作者、标题等信息;这个示例中第一个条目中book是文档类型, 此外还有article, inproceedings, misc等;` latexguide ` 是引用时使用的名称,可以在之后使用类似的格式添加更多内容。推荐直接在[ Google Scholar] ( https://scholar.google.com/ ) 或其他文献网站上复制,不要手写;也可以让ai生成,但注意核对信息。
79+ 可以在一个文件中添加任意多的条目,默认情况下,只有在正文中使用` \cite ` 命令引用的条目,才会出现在最后编译好的文档中。
80+
81+ 每个` @ ` 开头是一个条目,条目内部填入作者、标题等信息;这个示例中第一个条目中book是文档类型, 此外还有article, inproceedings, misc等,如它们的名称所暗示的,它们分别代表书籍、文章等格式;` latexguide ` 是引用时使用的名称,可以在之后使用类似的格式添加更多内容。对于正经期刊上发表的论文,其对应的bib条目一般可以直接在[ Google Scholar] ( https://scholar.google.com/ ) 或其他文献网站上复制获得,不推荐手写;或者你非常懒得话,也可以让ai生成,但务必注意核对信息。
3582
3683![ Google Scholar 示例] ( ./assets/google_scholar.png )
3784
38- ## 引用参考文献
39- 在 LaTeX 文件中,使用 ` \cite{} ` 命令引用参考文献。例如:
85+ ## 2. 引用参考文献
86+
87+ 在LaTeX文件中,使用 ` \cite{} ` 命令引用参考文献。例如:
4088
4189``` latex
4290This is a reference to the LaTeX guide \cite{latexguide}.
4391```
4492
45- 这里的` latexguide ` 是上面的例子中定义的名称 。
93+ 这里的` latexguide ` 是上面的例子中定义的引用标签 。
4694
47- ## 插入参考文献列表
95+ ## 3. 插入参考文献列表
4896
49- 在文档任意位置插入使用的参考文献列表。只有使用了` \cite{} ` 命令插入的文献才会出现。
97+ 在文档任意位置插入使用的参考文献列表(通常是文末, ` \end{document} ` 前) 。只有使用了` \cite{} ` 命令插入的文献才会出现。
5098
5199使用 ` \bibliographystyle{} ` 命令指定参考文献的格式,并使用 ` \bibliography{} ` 命令指定 ` .bib ` 文件的路径。在编译好的文档中,参考文献列表会出现在` \bibliography{} ` 命令调用处。
52100
@@ -55,6 +103,20 @@ This is a reference to the LaTeX guide \cite{latexguide}.
55103\bibliography{references.bib} % 引用.bib文件
56104```
57105
106+ > [ !IMPORTANT]
107+ > 在这个示例中,我们之前创建的` references.bib ` 与` .tex ` 文件位于同一目录,所以可以直接使用` \bibliography{references.bib} ` 引用bib文件。但是如果bib文件与tex文件不在同一个目录下,就需要在` { } ` 内填写其位置。
108+
109+ ### 常用样式一览
110+
111+ 修改 ` \bibliographystyle{...} ` 中的参数,可以瞬间改变所有文献的格式:
112+
113+ | 样式代码 | 排序方式 | 显示效果 (正文 / 列表) |
114+ | -------- | ---------------------- | -------------------------------- |
115+ | ` plain ` | 按作者姓名首字母排序 | ` [1] ` / ` [1] Lamport... ` |
116+ | ` unsrt ` | 按在文中出现的先后排序 | ` [1] ` / ` [1] Lamport... ` |
117+ | ` alpha ` | 字母+年份排序 | ` [Lam77] ` / ` [Lam77] Lamport... ` |
118+ | ` abbrv ` | 类似 plain,但简写名字 | ` [1] ` / ` [1] L. Lamport... ` |
119+
58120### Tips
59121
601221 . 如果在beamer中使用,可以添加 allowframebreaks 参数使文献列表自动换页
@@ -65,18 +127,29 @@ This is a reference to the LaTeX guide \cite{latexguide}.
65127 \bibliography{references}
66128\end{frame}
67129```
130+
68131文献列表编号(而不是图标)
132+
69133```
70134\setbeamertemplate{bibliography item}{\insertbiblabel}
71135```
136+
721372 . 可以通过使用` hyperref ` 宏包使引用标签可点击
73138
74139``` latex
75140\usepackage{hyperref}
141+ % 可以使用`[hidelinks]`选项隐藏pdf中的红色框框
142+ %\usepackage[hidelinks]{hyperref}
76143```
77144
78- ## 完整示例
145+ 3 . 多个作者怎么写?
146+ - 不要用逗号分隔作者!必须用 ` and ` 连接。
147+ - 错误:` author = {San Zhang, Si Li} `
148+ - 正确:` author = {San Zhang and Si Li} ` (BibTeX 会自动处理成 "S. Zhang, S. Li" 等格式)。
149+ 4 . 参考文献列表里只有一部分文献?
150+ - BibTeX 默认只显示被引用的文献。如果你想显示数据库里的所有文献(包括没引用的),请在 ` \bibliography ` 前加上 ` \nocite{*} ` 。
79151
152+ ## 4. 完整示例
80153
81154``` latex
82155\documentclass{article}
@@ -93,44 +166,29 @@ This is a reference to the LaTeX guide \cite{latexguide}.
93166
94167你可以在[ 这里] ( ./Add-citation-in-LaTeX.zip ) 下载这个示例。
95168
96- ## 编译流程
169+ ## 5. 编译流程
170+
171+ 在 LaTeX 中正确处理参考文献通常需要编译 4 次。如果你使用 Overleaf,它会自动处理;但在本地使用命令行或编辑器时,了解原理很重要。
97172
98- 在 LaTeX 中正确处理参考文献需要多次编译。如果你使用overleaf等在线平台,他们应该会自动帮你处理好编译流程,不用操心,否则:
173+ ### 为什么需要这么多次?
99174
100- ### 如果没有编译过:
175+ LaTeX 处理参考文献不是一次性完成的,它需要一个“信使”—— ** .aux (辅助) 文件 ** 。
101176
102- (如果使用XeLaTeX)
177+ 1 . ** ` xelatex ` (第1遍 - 抄录)** :LaTeX 读一遍正文,看到 ` \cite{latexguide} ` ,它在 ` .aux ` 小本本上记下:“这里引用了 ` latexguide ` ”。此时文档中显示为 ` [?] ` 。
178+ 2 . ** ` bibtex ` (第2遍 - 搬运)** :BibTeX 程序读取 ` .aux ` ,去 ` .bib ` 数据库里找对应条目,按样式整理好,生成 ` .bbl ` 文件(真正的列表代码)。
179+ 3 . ** ` xelatex ` (第3遍 - 插入)** :LaTeX 读取 ` .bbl ` 文件,把参考文献列表排版到文末。
180+ 4 . ** ` xelatex ` (第4遍 - 链接)** :LaTeX 终于确认了每一篇文献的最终编号(如 [ 1] ),将正文中的 ` [?] ` 替换为正确的 ` [1] ` 。
103181
104- 1 . 使用 ` xelatex ` 编译 LaTeX 文件,生成需要的文献列表(.aux 文件)
105- 2 . 使用 ` bibtex ` 编译参考文献。
106- 3 . 再次使用 ` xelatex ` 编译两次,第一次会生成参考文献,第二次确保参考文献引用和引用列表正确生成。
182+ ** 命令行操作示例:**
107183
108- 如果使用命令行:
109184``` bash
110185xelatex yourfile.tex
111- bibtex yourfile.aux
186+ bibtex yourfile.aux # 注意这里是对 .aux 文件运行 bibtex
112187xelatex yourfile.tex
113188xelatex yourfile.tex
114189```
115190
116- ### 如果编译过了
117-
118- 只需要在参考文献有更新时运行
119-
120- ``` bash
121- bibtex yourfile.aux
122- ```
123- 即可
124-
125- ## 参考文献样式
126-
127- LaTeX 支持多种参考文献样式(如 ` plain ` , ` unsrt ` , ` alpha ` , ` ieeetr ` 等):
128-
129- 在完整示例中修改
130-
131- ```
132- \bibliographystyle{plain} % 修改这里的plain
133- ```
134- 可以根据需要选择不同的样式。
191+ > [ !TIP]
192+ > 如果你只修改了正文文字,只需运行一遍 xelatex;只有当你** 新增/删除引用** 或** 修改了 bib 文件** 时,才需要完整跑这一套流程。
135193
1361942025/02/20
0 commit comments