LaTeX 参考文献怎么按 GB/T 7714—2025 排版
用 gbt7714 宏包让 LaTeX 参考文献符合 GB/T 7714—2025 国家标准:顺序编码制与著者-出版年制的写法,中文文献按拼音排序,从 2015 版切换到 2025 版,旧版宏包找不到样式文件的报错,以及 biblatex 的另一条路线。
最后核对:2026-10-24国内的学位论文和中文期刊大多要求参考文献符合国家标准 GB/T 7714《信息与文献 参考文献著录规则》。这个标准的 2025 版于 2025 年 12 月 2 日发布,2026 年 7 月 1 日起实施,全部代替 2015 版。在 LaTeX 里,最常用的实现是 gbt7714 宏包(BibTeX 路线);另一条路线是 biblatex-gb7714-2015(biblatex 路线)。本文以 gbt7714 为主,示例都可以直接打开编译。
最短的写法是什么
三步:在导言区调用宏包,用 \bibliographystyle 选择样式,在文末用 \bibliography 读入 .bib 文件。
% !TEX program = xelatex
% title: GB/T 7714 顺序编码制
\documentclass{ctexart}
% 1. 调用 gbt7714 宏包;sort 让同一处的多个序号从小到大排列
\usepackage[sort]{gbt7714}
% 2. 选择样式:顺序编码制。不带年份的名字对应宏包认定的现行国标
% (v3.0.0 起为 2025 版);要固定版本,写 gbt7714-2025-numeric
% 或 gbt7714-2015-numeric(这两个名字需要 v2.2.0 及以上)
\bibliographystyle{gbt7714-numeric}
\begin{document}
\section{引用示例}
% \cite 默认得到上标序号,如“文献[1]”的上标形式
诗格类文献的整理见张伯伟的汇编\cite{zhang2002}。
热解动力学方面已有系统研究\cite{liu2000,wang2022}。
% \citet 输出“著者 + 序号”,适合把作者写进句子
\citet{dunbar2013}讨论了核糖体天然产物的生物合成。
% 需要把序号排在正文中、不用上标时,用 \parencite(v2.2.0 新增)
详见文献\parencite{wang2022}第 87 页。
% 引用页码写在可选参数里,显示在序号后面
书中第 288 页有专门讨论\cite[288]{zhang2002}。
% 3. 生成参考文献表,参数是 .bib 文件名(不写扩展名)
\bibliography{refs}
\end{document}
示例里的 refs.bib 是普通的 BibTeX 数据库,条目取自国标正文的示例文献。gbt7714 要求 .bib 文件使用 UTF-8 编码。
几点说明:
- 中文文档用
ctexart等 ctex 文档类,并用 XeLaTeX 编译,原因见中文排版与字体。 - 编译顺序是 XeLaTeX → BibTeX → XeLaTeX → XeLaTeX。用
latexmk的编辑器会自动完成;手动编译时少跑一步,正文里就会出现问号或[?]。 \cite在顺序编码制下默认输出上标序号,\cite[288]{key}把引用页码放在方括号外,这是国标对"多次引用同一文献"的规定。- 同一处引用多篇文献时,序号默认按
\cite里的书写顺序排列(国标允许这样)。想从小到大排列,在调用宏包时加sort选项,例如\usepackage[sort]{gbt7714}。连续的序号会自动压成[2-3]这样的范围。
顺序编码制和著者-出版年制怎么选
国标规定了两种标注体系,对应两个样式:
| 体系 | 样式名 | 正文效果 | 文末排序 |
|---|---|---|---|
| 顺序编码制 | gbt7714-numeric | 上标 [1]、[2-3] | 按首次引用的顺序 |
| 著者-出版年制 | gbt7714-authoryear | (张伯伟,2002) | 按著者姓名字顺 |
理工科学位论文多用顺序编码制,人文社科常用著者-出版年制,以学校或期刊的要求为准。gbt7714 内部基于 natbib,所以 \citet、\citep、\citeauthor、\citeyearpar 等命令都可以用:
\citet{key}:著者作为句子成分,如"张伯伟(2002)认为"。\citep{key}:整个引注放在括号里,如"(张伯伟,2002)"。\citep[288]{key}:带引用页码。
% !TEX program = xelatex
% title: GB/T 7714 著者-出版年制
\documentclass{ctexart}
\usepackage{gbt7714}
% 著者-出版年制:正文里是“(著者,年份)”,文末按著者排序
\bibliographystyle{gbt7714-authoryear}
% \gbtsetup 调整格式细节(v2.2.0 起提供),学校要求和国标不同时用它。
% 例如:引注的括号和逗号用半角,参考文献表最多列 3 位著者
\gbtsetup{
citepunct = half,
maxbibnames = 3,
}
\begin{document}
\section{引用示例}
% \citep:整个引注放在括号里
诗格类文献已有系统汇编\citep{zhang2002}。
% \citet:著者作为句子成分,年份放在括号里
\citet{liu2000}研究了生物质材料的热解失重动力学,
\citet{wang2022}讨论了土壤湿度反演。
% 同一处引用多篇;可选参数是引用页码
已有的相关工作\citep{dunbar2013,wang2022}可供参考。
原书的论述见\citep[288]{zhang2002}。
\bibliography{refs}
\end{document}
中文文献为什么排序不对
用著者-出版年制时,常见的问题是中文文献的顺序既不是拼音顺序,也不是笔画顺序。原因在 BibTeX 本身:它不能按 Unicode 给汉字排序。gbt7714 的文档给出的办法是在每条中文文献里加一个 key 字段,手工写上著者姓名的拼音:
@book{zhang2002,
author = {张伯伟},
key = {zhang1 bo2 wei3},
...
}
拼音后的数字表示声调,用来区分同音字。上面的示例已经这样写好了:删掉 key 字段再编译,"张伯伟"会排到"王琦"前面;加上之后是"刘、王、张"的正确顺序。
如果文中中文文献很多、逐条写拼音太麻烦,gbt7714 的文档推荐改用 biblatex 路线,见本文最后一节。
怎么从 2015 版切换到 2025 版
先确认自己的 gbt7714 是哪个版本,因为样式名在 2026 年变过两次:
- v2.2.0(2026-05-03):新增 2025 版样式
gbt7714-2025-numeric和gbt7714-2025-authoryear;样式名的后缀从-numerical、-author-year改成-numeric、-authoryear。旧名字仍然能用,但会警告"已过时"。 - v3.0.0(2026-07-01):不带年份的
gbt7714-numeric、gbt7714-authoryear默认改为 2025 版。 - v3.1.0(2026-09-15):增加 1987 版样式;著者-出版年制的引注括号默认改为全角。
所以在 v3 中:
- 写
\bibliographystyle{gbt7714-numeric},得到的就是 2025 版; - 学校仍要求 2015 版时,写
\bibliographystyle{gbt7714-2015-numeric}(著者-出版年制是gbt7714-2015-authoryear); - 想把版本写死、不随宏包升级而变化,就写带年份的名字,例如
gbt7714-2025-numeric。
两版在输出上的差别举两例(用同一份 .bib 编译对比):2015 版西文和拼音著者的姓全部大写,如"DUNBAR K L",2025 版不再要求,写作"Dunbar K L";2025 版对汉语拼音姓名默认著录全称,不再缩写成首字母。2025 版还新增了"预印本(PP)"和"数据集(DS)"等文献类型,gbt7714 用 @preprint、@dataset 条目对应它们。
报错:I couldn't open style file gbt7714-numeric.bst
这说明你用的 gbt7714 早于 v2.2.0,那时还没有 -numeric 这个名字。同理,\parencite 报 Undefined control sequence、\gbtsetup 未定义,也都是版本太旧。两种办法:
- 升级 TeX 发行版,或在在线编辑器里选择更新的 TeX Live 版本;
- 暂时改回旧名字
gbt7714-numerical或gbt7714-author-year,这时得到的是 2015 版格式。
反过来,旧模板里写的 gbt7714-numerical 在新版宏包下仍能编译,只是日志里有一条"已过时"的警告;而且在 v3 中它对应的是现行的 2025 版,不再是 2015 版。如果模板里还有 \usepackage[super]{gbt7714} 或 \usepackage[authoryear]{gbt7714} 这样的 v1 选项,v3.1.0 已经把它们删除,改用 \bibliographystyle 选择样式即可。
学校要求和国标不一样怎么办
很多学校在国标基础上做了改动,比如引注用半角括号、著者只列前三位。v2.2.0 起,gbt7714 提供 \gbtsetup 命令调整这些细节,写在导言区:
\gbtsetup{
citepunct = half, % 著者-出版年制引注用半角括号和逗号
maxbibnames = 3, % 参考文献表最多列出 3 位著者
}
常用的还有 bibpunct(参考文献表的标点)、uppercasefamily(姓是否大写)、initializepinyin(拼音姓名是否缩写)、doi、url、urldate(是否著录 DOI、网址和引用日期)等。完整列表见宏包文档。BibTeX 本身不能接收参数,宏包的做法是在编译时生成一个带 -BSTcontrol 后缀的 .bib 文件,把这些选项写进去,所以看到这个多出来的文件不用奇怪。
有些学校模板已经配好了参考文献样式,thuthesis、ustcthesis 等模板自带各自的 .bst 文件(gbt7714 的 GitHub 仓库 variants 目录里也有,但不随 TeX Live 发布)。用模板时先看模板文档,按模板给出的方式切换顺序编码制或著者-出版年制。
其他常见问题
- 学位论文识别不了:硕士、博士论文用
@mastersthesis、@phdthesis;@thesis类型是 v2.1.9 才加入的,更早的版本不支持。 - 中英文判断错了:样式根据题名自动判断语言,判断不准时在条目里写
langid = {chinese}或langid = {english}。 - 从 Zotero 导出:
gbt7714文档建议安装 Better BibTeX 插件,导出为 Better BibLaTeX 格式,它的字段比标准 BibTeX 更全。 - 带重音的西文字母:
gbt7714的 BibTeX 样式不能直接处理 é 这类字符,要写成{\'e}。
biblatex 路线:biblatex-gb7714-2015
如果更习惯 biblatex,或者需要中文文献自动按拼音排序,可以用 biblatex-gb7714-2015 宏包。它同样实现了 1987、2005、2015、2025 各版国标,后端必须是 biber:
% !TEX program = xelatex
% title: biblatex 国标参考文献
\documentclass{ctexart}
% biblatex 路线:样式由 biblatex-gb7714-2015 宏包提供,后端必须是 biber
% style=gb7714-2015 顺序编码制
% style=gb7714-2015ay 著者-出版年制
% 宏包较新的版本还提供 gb7714-2025 / gb7714-2025ay
\usepackage[backend=biber, style=gb7714-2015]{biblatex}
% .bib 文件写扩展名,放在导言区
\addbibresource{refs.bib}
\begin{document}
\section{引用示例}
诗格类文献的整理见张伯伟的汇编\cite{zhang2002}。
热解动力学方面已有系统研究\cite{liu2000,wang2022}。
\textcite{dunbar2013}讨论了核糖体天然产物的生物合成。
% 参考文献表在这里输出,不再需要 \bibliographystyle 和 \bibliography
\printbibliography
\end{document}
style=gb7714-2015是顺序编码制,style=gb7714-2015ay是著者-出版年制;宏包较新的版本另有gb7714-2025和gb7714-2025ay。- 著者-出版年制里,中文按拼音排序可以加选项
sortlocale=zh__pinyin,按笔画排序把它换成zh__stroke,不用手写key。 - 编译时要运行 biber 而不是 bibtex。如果正文里显示的是粗体的引用 key、参考文献表是空的,多半是没有运行 biber。
两条路线不能混用:用了 biblatex 就不要再写 \bibliographystyle 和 \bibliography,用了 gbt7714 就不要加载 biblatex。
本文的示例都可以在 JointTex 中一键打开为新项目,用 XeLaTeX 编译后直接看到参考文献表;遇到其他报错可以对照常见编译报错解读。
