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}
GB/T 7714 顺序编码制在 JointTex 中打开

示例里的 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}
GB/T 7714 著者-出版年制在 JointTex 中打开

中文文献为什么排序不对

用著者-出版年制时,常见的问题是中文文献的顺序既不是拼音顺序,也不是笔画顺序。原因在 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 未定义,也都是版本太旧。两种办法:

  1. 升级 TeX 发行版,或在在线编辑器里选择更新的 TeX Live 版本;
  2. 暂时改回旧名字 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}
biblatex 国标参考文献在 JointTex 中打开
  • 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 编译后直接看到参考文献表;遇到其他报错可以对照常见编译报错解读。

JointTex

Browser compatibility

JointTex could not start

The application did not finish loading. Check your connection, then try again.

Supported versions

  • Chrome and Edge 88 or later
  • Firefox 84 or later
  • Safari and iOS Safari 14 or later
Reload