LaTeX文档分章节引入参考文献
在使用LaTeX编辑文档时,可以方便地插入参考文献,推荐使用bibtex插件,我在文章
LaTeX
插入参考文献中详细介绍了这种方法。最近阅读一些书籍时,注意到有些书籍在每章或每节的末尾插入了参考文献,这对于编写大型教学资料非常有帮助。本文将介绍如何在章节末尾插入参考文献。
bib 文献库
在编写资料时,可以根据文献的分类分别建立不同的文献库,例如编写一本物理资料时,可以分别建立li.bib、dian.bib、re.bib等文件。例如:
li.bib文件的内容如下
1 | @book{zhou2009, |
文献的引用
在正文需要引用的地方使用\cite{键名}。
例如推荐刘川的书时写:
1 | 推荐刘川的《理论力学》\cite{liu2019}作为入门教材。 |
文档末列出被引用过的文献
使用传统的 BibTeX 方式
在文档末尾(\end{document})加入两行:
1 | \bibliographystyle{plain} % 或unsrt, ieeetr 等样式 |
其中plain是基础样式,按作者字母排序、数字标号。如果你希望参考文献按引用先后顺序排列,把样式换成unsrt即可。
使用现代的 BibLaTeX 方式
只需要在导言为每个文献库单独调用一次\addbibresource命令,即
1 | \usepackage[backend=biber, style=numeric]{biblatex} |
在正文中的任何位置都可以使用命令\printbibliography插入引用过的条目,biblatex默认只打印在正文中被\cite系列命令引用过的条目。如果某个文献在.bib文件中但未被引用,它不会出现在目录中。
\printbibliography支持在方括号[]内添加参数,以控制目录的标题、内容和格式。具体定制选项如下:
自定义标题,可以使用
title选项修改:1
2
3\printbibliography[title={参考文献}]
% 或英文标题
\printbibliography[title={Reference list}] %[reference:2]将目录添加到目录,如果希望“参考文献”作为一个章节出现在目录中,使用
heading=bibinto:1
\printbibliography[heading=bibintoc, title={参考文献}] %[reference:3]
按类型或关键词过滤条目,可以生成分类文献列表。
1
2
3
4
5
6
7
8% 只列出文章(@article)类型的文献
\printbibliography[type=article, title={期刊论文}] %[reference:4]
% 只列出在 .bib 文件中标记了 keyword={primary} 的文献
\printbibliography[keyword=primary, title={核心文献}] %[reference:5]
% 排除某一类文献,例如排除网络来源(@online)
\printbibliography[nottype=online, title={非网络文献}] %[reference:6]
每节末列出参考文献
列出正文中引用过的条目
- 方式一:全局加载,按节引用(最简单)
1 | \usepackage[backend=biber, style=numeric]{biblatex} |
- 方式二:为
refsection指定专属bib(更严格, 推荐使用)
如果你希望“力学这一节只能引用 li.bib
里的书,电学只能引用 dian.bib 里的书”,可以给
refsection 环境加上可选参数,直接指定该节使用的文献源:
1 | \begin{refsection}[li.bib] |
这个写法在 biblatex
文档和多个教程中被明确支持。它的优点是各节文献源完全隔离,不会互相污染;缺点是如果某一节需要同时引用两个库里的书,写起来会稍麻烦(需要把两个库都列进去,或改回方式一)。
列出所有文献库中的文献
使用\nocite{*}
放在refsection环境内部,将它的作用范围被限制在当前节,意思是将所有文献库中的文献都标记为引用过,虽然没有引用过。写法如下:
1 | \usepackage[backend=biber, style=numeric]{biblatex} |
每章末列出参考文献
导言区设置
1 | \usepackage[backend=biber, style=numeric]{biblatex} |
正文写法
1 | \begin{refsection} |
编译
传统 bibtex
1 | xelatex foo.tex |
现代 biblatex
先安装biber命令,在
ArchLinux中执行命令:
1 | sudo pacman -S biber |
编译流程
1 | xelatex foo.tex |