LaTeX 如何用 .bib 插入参考文献:从入门到入土(含完整示例)

1. 基本概念速览

  • .bib 文件:参考文献数据库(纯文本),由一条条 @article{...}@book{...} 等构成。
  • 引用命令:在正文中用 \cite{键}\citep{键}\citet{键} 等调用。
  • 样式:决定文末参考文献列表的格式(作者名、期刊名、年份等的排版)。
  • 编译链
    • BibTeX 路线:pdflatex → bibtex → pdflatex → pdflatex
    • biblatex 路线:pdflatex → biber → pdflatex → pdflatex

2. 路线 A:BibTeX(经典稳定,投稿友好)

2.1 目录与文件结构

project/
├─ main.tex % 主文档
├─ refs.bib % 你的文献库
└─ aasjournal.bst %(示例)期刊样式文件;也可用 natbib + plainnat 等

注:很多期刊会提供 .bst(样式)与 .cls(文档类),放在同目录或 TEX 路径可见处即可。

2.2 .bib 文件示例(refs.bib)

@article{Willott1999,
author = {Willott, C. J. and others},
title = {The radio luminosity function...},
journal = {MNRAS},
year = {1999},
volume = {309},
pages = {1017--1033},
doi = {10.1046/j.1365-8711.1999.02900.x},
url = {https://doi.org/10.1046/j.1365-8711.1999.02900.x}
}

@book{Lamport1994,
author = {Lamport, Leslie},
title = {LaTeX: A Document Preparation System},
publisher = {Addison-Wesley},
year = {1994},
edition = {2}
}

技巧:从 Google Scholar、ADS、Zotero、Mendeley 可直接导出 BibTeX。导入时注意清理字段(如多余的 html 标记)。

2.3 natbib + BibTeX 最小示例(main.tex)

\documentclass[11pt]{article}
\usepackage[utf8]{inputenc} % 现代发行版可省略
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{natbib}
\bibliographystyle{plainnat} % 也可换成期刊给的 .bst,如 aasjournal
\usepackage[colorlinks=true,linkcolor=blue,citecolor=blue]{hyperref}

\title{BibTeX 入门示例}
\author{Your Name}
\date{\today}

\begin{document}
\maketitle

正文中可以这样引用:\citet{Willott1999} 指出……;
或括号引用:星系射电功率与环境有关(\citealp{Willott1999})。
再引一本书 \citep{Lamport1994}。

% 生成参考文献列表
\bibliography{refs} % 对应 refs.bib

\end{document}

2.4 常用 natbib 引用命令

  • \citet{键}:作者名在句中(Author (Year))
  • \citep{键}:括号引用((Author, Year))
  • \citealp{键}:无括号外壳的引用(Author, Year)
  • \citeyear{键}:只年份
  • \citeauthor{键}:只作者

选择不同的 \bibliographystyle{...}(如 plainnatunsrtnatapalike、期刊 .bst)会改变最终格式。

2.5 编译步骤(本地 TeX Live/MiKTeX)

pdflatex main
bibtex main
pdflatex main
pdflatex main

Overleaf:菜单选择 Compiler 为 pdfLaTeX,点击 Recompile;首次需要让 Overleaf 触发 bibtex,一般自动完成。


3. 路线 B:biblatex + biber(功能强、中文友好、Web 字段丰富)

3.1 .bib 文件可与上文相同(refs.bib)

3.2 最小示例(main.tex)

\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

% 关键:加载 biblatex,后端用 biber
\usepackage[backend=biber,style=authoryear,sorting=nyt,maxbibnames=99]{biblatex}
\addbibresource{refs.bib}

\usepackage[colorlinks=true,linkcolor=blue,citecolor=blue]{hyperref}

\title{biblatex + biber 入门示例}
\author{Your Name}
\date{\today}

\begin{document}
\maketitle

句中引用:\textcite{Willott1999};括号引用:\parencite{Lamport1994}。
也可以一次引用多篇 \parencite{Willott1999,Lamport1994}。

% 生成参考文献列表
\printbibliography

\end{document}

3.3 常用 biblatex 引用命令

  • \parencite{键}:括号引用
  • \textcite{键}:作者名融入正文
  • \footcite{键}:脚注引用
  • \citeauthor{键}\citeyear{键} 同理可用

3.4 编译步骤

pdflatex main
biber main
pdflatex main
pdflatex main

Overleaf:菜单设置 Biber 为后端(Project → Settings → Compiler:pdfLaTeX;Biber enabled)。首次编译后 Overleaf 会自动运行 biber。


4. 选择哪条路线?

  • 投稿/跟随期刊模版:通常用 BibTeX + 期刊 .bst;很多天文、物理期刊(AAS、MNRAS、A&A)传统上就是这个。
  • 个人论文/讲义/中文环境更友好:推荐 biblatex + biber(可玩性强,字段更全,分组/过滤更灵活)。
  • 已有大量老项目:继续用 BibTeX 也很好,稳定可靠。

5. 处理中文与编码

  • 现代 TeX Live 下,建议用 xelatexlualatex 编译,并配合 biblatex + biber
\documentclass{article}
\usepackage{fontspec}
\usepackage[backend=biber,style=authoryear]{biblatex}
\addbibresource{refs.bib}
\setmainfont{Times New Roman} % 或任意系统字体
\begin{document}
中文测试:\textcite{Lamport1994}。
\printbibliography
\end{document}
  • BibTeX 处理中文较麻烦,需要 gbt7714 等样式或将中文转拼音排序;若需国标格式,可用 \usepackage[backend=biber,style=gb7714-2015]{biblatex}(需安装 biblatex-gb7714-2015 套件)。

6. 常见条目类型与字段(速查)

  • @articleauthor, title, journal, year, volume, number, pages, doi, url
  • @bookauthor/editor, title, publisher, year, edition
  • @inproceedingsauthor, title, booktitle, year, pages
  • @misc:万金油;可放 howpublished, note, url, doi, eprint(arXiv)
  • @phdthesis / @mastersthesisauthor, title, school, year

arXiv:可用 eprint={arXiv:XXXX.XXXXX}, archivePrefix={arXiv}, primaryClass={astro-ph.GA} 等字段(biblatex 对 eprint 支持更好)。


7. 批量管理文献的实用建议

  • Zotero / Mendeley 管库 → 导出 .bib 到项目目录。
  • 给文献稳定的 citation key(如 AuthorYearTitleKey),避免与同名同年冲突(必要时加 a,b,c)。
  • 定期清理 .bib:去掉无用字段(abstractfileurldate 等,按需)。

8. 常见报错与排查

  1. “Citation xxx undefined”
    • 键不存在/拼写错误;或忘记在 .tex\bibliography{refs} / \addbibresource{refs.bib}
    • 没有按正确顺序多次编译(见第 2.5/3.4 步骤)。
  2. 参考文献不显示/老版本
    • 忘了运行 bibtex/biber;或 .aux/.bbl/.bcf 等中间文件残留导致。
    • 解决:删中间文件重新编译,或按顺序完整跑一遍。
  3. biber not found / biblatex 报错
    • 本地没装 biber 或 PATH 未配置;Overleaf 需在设置里启用 biber。
  4. 中文乱码/问号
    • xelatex/lualatex + biblatex + biber;或检查 .bib 的 UTF-8 编码。
  5. 样式不合期刊要求
    • 使用期刊提供的 .bst(BibTeX)或官方文档推荐的 biblatex 样式。
    • 某些期刊仅接受 BibTeX 格式的 .bbl,按其要求生成即可。

9. 进阶:同一文献多次引用、附加页码、前后缀

  • natbib
    • \citep[见][p.~12]{Willott1999} → (见 Willott et al., 1999, p. 12)
    • \citep[例如][]{Willott1999}\citet[第2节]{Willott1999}
  • biblatex
    • \parencite[见][12]{Willott1999}
    • \parencite[例如][]{Willott1999}
    • \textcite[§2]{Willott1999}

10. 在博客中展示

  • 用 Markdown 代码块粘贴 .tex.bib 示例(与本文相同做法)。
  • 若博客支持渲染公式(KaTeX/MathJax),依然建议给出 可复制的源码,方便读者本地测试。
  • 可附一张编译流程图或命令行片段(见上文编译命令)。

11. 完整可运行示例(两套各给一份)

11.1 BibTeX + natbib 版

main.tex

\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{natbib}
\bibliographystyle{plainnat}
\usepackage[colorlinks=true,linkcolor=blue,citecolor=blue]{hyperref}
\title{BibTeX + natbib 示例}
\author{Your Name}
\date{\today}
\begin{document}
\maketitle

\citet{Willott1999} 所示,相关关系……(\citealp{Lamport1994})。
多条同时引用:\citep{Willott1999,Lamport1994}。

\bibliography{refs}
\end{document}

refs.bib

@article{Willott1999,
author = {Willott, C. J. and Rawlings, S. and Blundell, K. M. and Lacy, M.},
title = {The emission line-radio correlation...},
journal = {MNRAS},
year = {1999},
volume = {309},
pages = {1017--1033},
doi = {10.1046/j.1365-8711.1999.02900.x}
}

@book{Lamport1994,
author = {Lamport, Leslie},
title = {LaTeX: A Document Preparation System},
publisher = {Addison-Wesley},
year = {1994},
edition = {2}
}

编译

pdflatex main
bibtex main
pdflatex main
pdflatex main

11.2 biblatex + biber 版

main.tex

\documentclass[11pt]{article}
\usepackage{fontspec} % 若仅英文可不用
\usepackage[backend=biber,style=authoryear,sorting=nyt]{biblatex}
\addbibresource{refs.bib}
\usepackage[colorlinks=true,linkcolor=blue,citecolor=blue]{hyperref}
\title{biblatex + biber 示例}
\author{Your Name}
\date{\today}
\begin{document}
\maketitle

句中:\textcite{Willott1999};括号:\parencite{Lamport1994};
多条:\parencite{Willott1999,Lamport1994}。
带页码:\parencite[12]{Lamport1994}。

\printbibliography
\end{document}

refs.bib(同上)

编译

pdflatex main
biber main
pdflatex main
pdflatex main

12. FAQ 快速解惑

  • Q:期刊要求提供 .bbl,怎么弄?
    A:走 BibTeX 流程,编译后生成的 main.bbl 即可提交。biblatex 路线有时不被传统流程接受。

  • Q:同一作者同一年多篇 [2019a, 2019b] 如何自动添加 a/b?
    A:natbibbiblatex 都会自动区分;关键在于条目的 year 与作者相同,系统会追加字母。

  • Q:如何显示 DOI/URL?
    A:biblatex 默认更友好;BibTeX 需样式支持(如 plainurlapalike 的改款、或期刊 .bst)。
    biblatex 下,可 \usepackage[doi=true,url=true]{biblatex}(或样式本身已开启)。

  • Q:我需要 GB/T 7714 国标格式?
    A:推荐 biblatex-gb7714-2015

    \usepackage[backend=biber,style=gb7714-2015]{biblatex}

13. 一键排错清单(贴墙用)

  1. 检查 citation key 是否一致(\cite{键}.bib 中的 @...{键, ...})。
  2. 跑对 编译顺序(BibTeX vs biber)。
  3. 删中间文件(.aux .bbl .bcf .blg .run.xml 等)后重编。
  4. 确认 Overleaf/本地 后端设置(biber 是否开启)。
  5. 确认 编码 为 UTF-8;中文建议用 xelatex + biblatex