问题描述
大家在写技术文档、论文、项目书的时候,会引用很多文献,使用Latex可以实现对文献引用的统一自动管理,可以自动生成文献列表,不需要手工罗列,可以自动实现引用的更新和链接,不需要手工管理。但在撰写Latex文档时,默认的引用方式和生成的文献列表可能不满足我们的需求,本文介绍如何使用功能强大的natbib包进行文献引用管理,并针对常见几种常见需求,给出一些基于natbib的解决方法。
解决方法
在latex文档中如何使用natbib包
直接结合代码示例为大家说明,代码及注释如下:
\documentclass[12pt]{article} %文档头
\usepackage[UTF8]{ctex} % 显示中文
\usepackage[authoryear,sort&compress,round]{natbib} % 导入natbib包,使用author-year格式,圆括号,对多个引用按照在reference list中的顺序进行排序,compress表示压缩多个数字引用,如(3-8, 15),这里使用author-year,compress选项是不发挥作用的
\usepackage{hyperref} % 导入超链接包,在文中文献引用处点击可实现跳转
\newcommand{\citen}[1]{[\citenum{#1}]} % 定义一个新命令,在方括号中显示文献编号,如[3]
\begin{document} % 开始文档
\section{国内外研究现状} % 第一部分
关于人类视觉注意的理论假设人类视觉系统只详细地处理图像的某个局部,而不是整幅图像。
\cite{80cogSc/Treisman_featureIntegration},\cite{85HN/KochVisualAttention}的早期工作,以及\citeauthor{98pami/Itti}~\citen{98pami/Itti}和\citeauthor{04nature/Wolfe_attributesVisual}~\citen{04nature/Wolfe_attributesVisual}等人的视觉注意理论提议将视觉注意机制分为两个阶段:
快速的、下意识的、自底向上的、数据驱动的显著性提取;
以及慢速的、任务依赖的、自顶向下的、目标驱动的显著性提取。
\citeauthor{98pami/Itti}的工作是在\citeyear{98pami/Itti}年完成的。文献\citen{04nature/Wolfe_attributesVisual}的工作是关于视觉注意理论的。
{
\setcitestyle{numbers} % 为参考文献列表加数字编号
\bibliographystyle{myplainnat} % 对reference list的plainnat格式进行了修改,将作者的名字按照姓氏在前、名字在后的格式显式
\nocite{*} % 显示bib文件中的全部参考文献,无论文中是否引用,如果只想显示文中引用到的文献,那就删去或者注释掉这行代码
\bibliography{Cmm.bib} % 参考文献bib文件名称
}
\end{document}
结果如下截图:
注意要点
- 上图显示的PDF文档中,正文中每一处文献引用(姓名、年份、数字编号)都是基于\cite命令实现的,均不需要手动输入,既节省了大量查找时间也避免了手工输入的错误。
- 参考文献列表带编号,便于查找,并且,参考文献按照作者姓氏首字母从A到Z排序,便于查找。
- 需要注意上述代码中的
\bibliographystyle{myplainnat}
,这里对textlive自带的文献列表格式文件plainnat.bst
进行了修改(不要直接修改,复制一份进行修改),只修改了一行代码,即{ s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
改为{ s nameptr "{vv~}{ll}{, f.}{, jj}" format.name$ 't :=
,使得在文献列表中,作者的名字按照姓氏在前、名字在后的样式显示,将修改好的文件另存为myplainnat.bst
,放在当前latex项目的文件夹中(与.tex
文件位于同一文件夹)。如果你对reference list的显示样式有其他自定义需求,那么可以基于textlive已有的一些样式文件进行自定义修改或者使用textlive命令一步步地定义一个全新的样式文件。 - 上面的源代码,使用最少的代码量为大家展示了latex中使用
natbib
包进行文献应用和展示的小技巧,一定注意,下面这几行代码一定要有,并且顺序不要乱。\usepackage[authoryear,sort&compress,round]{natbib} \usepackage{hyperref} \setcitestyle{numbers} \bibliographystyle{myplainnat} \nocite{*} \bibliography{Cmm.bib}
本博文代码下载
下载链接(密码:73i7)
如果你的问题没解决
再仔细读一读上面的代码注释和注意要点应该可以启发你解决自己遇到的相关问题,即使没有提供直接答案,也可能会给你一些解决问题或者搜索答案的思路。