如何使用 LaTeX 插入 JabRef 的参考文献

1. Bib文件的创建

1.1 导入文献 BibTeX 源代码

很多文献都拥有自己的 BibTeX 文献信息, 获取文献的 BibTeX 文件主要途径有如下方式

  1. Google学术
  2. 百度学术
  3. 专业文献数据库
  4. 杂志的官网
  5. 其他数据库,如Zotero

下面我们以 Google学术 为例,看看如何添加文献的 BibTeX 文献信息.

第一步: 首先登陆Google 学术搜索, 注意要在设置 (setting) 中勾选上 Show links to import citations in BibTeX 这个选项,然后点击 下图


Google BibTeX

中的 BibTeX 选项, 在跳转的页面中复制如下信息

@book{knapp2013lie,
  title={Lie groups beyond an introduction},
  author={Knapp, Anthony W},
  volume={140},
  year={2013},
  publisher={Springer Science \& Business Media}
}

第二步: 新建一个 .bib 文件!


新建bib文件

然后点击 BibTeX 选项,在下拉菜单中选择 New entry 在弹出的对话框中选择 Book 选项,


选择文献类型

然后再在下方选择 {}BibTeX source 选项, 将刚才复制的内容粘贴到 {}BibTeX source 选项中即可.

注意:其他搜索引擎的用法大体上差别不大,有些杂志还可以直接导出bib文件,这对于创建Bib文件都是相当方便的.

比如下面的杂志

给新的文献数据库增加文献,一般直接导入文献BibTeX源代码。比如在IEEE上,按下面的操作,从而可以得到BibTeX源代码。

从数据库中导出bib文件

1.2 手动创建文献条目信息

当然,如果还有些文献还没有相应的BibTeX 文献信息(比如你自己写的正在发表中的论文),或者你找不到相应的BibTeX 文献信息,那么你就可以手动添加,虽然麻烦些,但是也添加一次可以达到一劳永逸的效果,其实也是相当好的事情了.

根据你需要引用的文献的信息填写 Optional fields就可以了.

手动添加文献信息

2. 引用JabRef的文献条目

2.1 文献条目的交叉引用

参考文献的引用过程中, BibTeX 文献信息中的Bibtexkey 是相当重要的,你可以自己设置 JabRef 的定义规则,不过这里相当复杂些,我们省去, 下图是我建立好的 bib 文件

引用文献

接着打开LaTeX编辑器,在正文区最后添加代码 \bibliography{ bib文件名 },在样做的目标是在你写作的文献后面添加参考文献列表.

注意,bib 文件中只有引用的文献才会在参考文献列表中被列举出来,如果要将没有引用的文献也在参考文献中列表列举出来, 可以在生成参考文献列表的前面添加如下设置.

\nocite{1} %只加入到参考文献列表中,不在文中引用(显示[id])
\nocite{*} %显示所有文献

在正文中的引用比较简单,只需要在该引用之处添加 \cite{Bibtexkey} 即可.

比如我将刚才的Bib文件夹命名成了Lie_Alg.bib,而刚才的文献条目的Bibtexkey 为knapp2013lie, 因此我们只需要在LaTeX源文件中加入 \bibliography{Lie_Alg}, 并在交叉引用处加上 \cite{knapp2013lie} 就可以了.

具体的引用效果看下面的代码示意就能看出来.

\documentclass[12pt]{report}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amsthm}
\usepackage{listings}%LaTeX/Source Code Listings
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\theoremstyle{plain}
\newtheorem{lemma}{Lemma}
\newtheorem{theorem}{Theorem}
%\newtheorem{prop}{Proposition}
%\newtheorem{remark}{Remark}
%\newtheorem{cor}{Corollary}
%\newtheorem{subgroup}{Subgroup}
\newtheorem{definition}{Definition}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\title{VOA and Lie Algebras}
\author{MATHTH}
\date{\today}
\maketitle

\section{Definitions}

VOA and Lie Algebras are very important\cite{kac1998vertex} VOA and Lie Algebras are very important \cite{knapp2013lie} 

\nocite{1} %只加入到参考文献列表中,不在文中引用(显示[id])
\nocite{*} %显示所有文献
\bibliographystyle{plain}
\bibliography{Lie_Alg}

其实在此只是简单的复制粘贴就可以完成了,不过对参考文献的交叉引用还有更快的办法, JabRef 对于一些编辑器有更好的支持, 比如 Emacs ,Lyx, Texmake, TeXstudio,Vim,WinEdt, 本人测试过在WinEdt 下进行简单的设置后,只需要点点鼠标就能实现参考问题在正文中的交叉引用, 只不过由于WinEdt 不是开源的,过试用期后需要付费被我抛弃了而已, 当然对于我而言,我更关心是如果将 JabRef 的文献快速推送到 TeXworks 中或者Vim中,很遗憾的是如何使 JabRef 将文献快速推送到Vim的配置我还不会,如果读者赐教,我将不甚感激.

2.2 文献排版格式的设置

其实这个我们称为格式,其实称为样式或者风格更合适,因为其英文说法就是 bibliography style,不管它叫什么, LeTeX 控制参考文献的格式是由 bst 文件控制的,LaTeX 的发行版一般都自带很多的样式, 这个你可以查找你的LaTeX 安装路径下的文件,如果里面不包含你需要的 bst 文件,那么通常用两种方法来解决

  1. 你自己安装其语法自己写一个放在相应的文件下.

  2. 下载一个你需要的bst 文件放在相应的文件夹下.

    在投稿的过程中,一般期刊都会给出模板,里面包含了 bst 文件,一般不用用户自己来制作。

下面是常见的一些bst文件名称

  1. plain:按字母的顺序排列,比较次序为作者、年度和标题;
  2. unsrt:样式同plain,只是按照引用的先后排序;
  3. alpha:用作者名首字母+年份后两位作标号,以字母顺序排序;
  4. abbrv:类似plain,将月份全拼改为缩写,更显紧凑;
  5. ieeetr:国际电气电子工程师协会期刊样式;
  6. acm:美国计算机学会期刊样式;
  7. siam:美国工业和应用数学学会期刊样式;
  8. palike: 美国心理学学会期刊样式

当然,如果你还想改变一些引用的样式,那么你可以使用 natbib 宏包来调整引用样式 (citation style) ,不过坦诚来讲,这很无聊,不应该将大量的精力浪费在这,这些工作应该是出版商的事情.

citation style 用来设置正文中的标号样式。

natbib引用命令

常用的natbib命令有\citet(textual cite)\citep(parenthetical cite)\cite相当于\citet,但是最好不要用,因为通常用于定义其他格式的引用。
引用效果如下

\citet{KEY}
Bester et al. (1998)
\citep{KEY}
(Bester et al. 1998)1234
\citep{KEY1, KEY2, KEY3, KEY4, ...}
(Bester et al. 1998; Garibaldi et al. 1997, 1998a,b; ...)12
\citep[hereafter B98]{KEY}
(Bester et al. 1998, hereafter B98)
\citep[e.g.,][]{KEY}
(e.g., Bester et al. 1998)
\citep[see][p. 68]{KEY}
(see Bester et al. 1998, p. 68)
1234567

使用*可以获得全部的作者名称

\citet*{KEY}
Bester, Winters, & Alexander (1998)12
\citeauthor{KEY}
Bester et al.
\citeyear{KEY}
1998
\citeyearpar{KEY}
(1998)123456

\citetext可以用于强制在引用周围放置文字

natbib的选项

round---(默认) 圆括号
square---方括号
curly---卷括号
angle---尖括号
colon---(默认)用冒号分隔开多个引用
comma---用逗号分隔开多个引用
authoryear---(默认)引用作者和年代
numbers---引用编号
super---上标编号
sort---将多个引用按照参考文献列表中的顺序排列
longnamesfirst ---任何参考文献的第一条引用都是全作者列表,接下来的是缩写列表1234567891011

示例代码

\documentclass[11pt]{report} 
..... 
\usepackage[comma,authoryear]{natbib} 
.... 
\begin{document}
...
\citet{KEY}
...
\citep{KEY}
...
\bibliographystyle{ieeetr}
%or: plain,unsrt,alpha,abbrv,acm,apalike,...
\bibliography{abbr_long,pubext} 
...
\end{document} 

4. 编译

Tex文件写好后编译需要四步:

  1. 用LaTeX编译:找到 .tex文件中引用的 .bib文件及风格,并生成一个 .aux 的文件;
  2. 用BibTeX编译:通过 .aux文件确定从哪个 .bib文件中引用文献,以及引用的格式和排序,并写入 .bbl文件;
  3. 用LaTeX编译:找到并读取 .bbl文件,将交叉引用数据写入.aux文件,这时会写入参考文献,但引用编号可能不正确;
  4. 用LaTeX编译:根据交叉数据确定文献编号,此时文献将正常显示。

因此,要生成参考文献需要多次编译也就是自然的事情,当然,这是当时计算机的内存小,不能一步到位而设计分步骤完成思想的结果.

综合起来,编译流程大致如下

XeLaTeX -> BibTeX -> XeLaTeX -> XeLaTeX

你可能感兴趣的:(如何使用 LaTeX 插入 JabRef 的参考文献)