博舍

Latex 自定义参考文献格式(配置 bst) 论文如何自动生成文献参考文献格式模板图片

Latex 自定义参考文献格式(配置 bst)

这几天在Latex写作过程中遇到了一点困难,源自于“论文必须和期刊最终排版一模一样”的需求。按道理讲,我们在提交手稿时只需要照着期刊给定的模板写即可,但有些出版社在初稿提交和终稿出版时会给出不同的模板,这种情况下,论文很难完成一模一样的表现形式。为了克服这一困难,就不得不从Latex底层库开始摸索,这篇博客就从参考文献格式将起,我们通过个性化配置bst文件来控制参考文献格式。

1.一个简单的例子

在我们使用Latex撰写论文的过程中,往往是通过bib文件来管理我们的文献。当我们需要在正文中引用某篇文献时,会尝试使用cite或者citep来引用它。一个简单的例子如下所示,

STEP-1:首先在bib文件中贴上我们需要的论文格式(可以在谷歌学术或者dblp上下载)。

@inproceedings{Ren2018Automated,author={ZhileiRenandHeJiangandJifengXuanandZijiangYang},title={Automatedlocalizationforunreproduciblebuilds},booktitle={Proceedingsofthe40thInternationalConferenceonSoftwareEngineering,{ICSE}2018,Gothenburg,Sweden,May27-June03,2018},pages={71--81},year={2018},url={https://doi.org/10.1145/3180155.3180224},doi={10.1145/3180155.3180224},timestamp={Mon,26Nov201812:14:46+0100},}

【注意】这里的@inproceedings标记的是会议论文,期刊,书籍等其他的元素要标记为@article和@book等,详情请参见博客《BibTeXStyleExamples》。

STEP-2:在tex文件中引入我们的bib文件,一般在正文的最末尾,也就是end{document}之前。

ibliography{references}ibliographystyle{ieeetr}

【注意】第一行的ibliography{}指定了bib文件,第二行ibliographystyle{}指定了文献引用格式,如ieeetr是IEEE的文献引用格式。具体的格式可以在我们安装的CTEX目录下可以找到,其中有几个基本的引用格式,如打开下面的路径,可以找到7个最常见的格式,具体的格式介绍请参考文档《Bibtexbibliographystyles》。

>cdC:/CTEX/MiKTeX/bibtex/bst/base/

STEP-3:在正文中使用cite{Ren2018Automated}来引用,只有引用了这篇文献,在Reference中才会出现这篇文献。如下图所示,前面的39表示文献的号码。

2.控制参考文献格式

论文模板中包含多个文件,但是最核心的只有cls和tex文件。如IEEE的模板中,只有IEEEtran.cls和conference_041818.tex这两个文件起关键作用,前者规定了论文格式类库,即documentclass{}中规定的东西;后者给出了我们写论文的文档。

这里有一个细节我们容易忽略,那就是引用文献的格式。之前的cls文件只能规定我们正文应该长什么样(如图标,标题,单双栏等),但是控制不了我们的参考文献长什么样。如果要更进一步需要控制参考文献的格式,就需要手动配置bst文件了。这里给出另外一篇介绍bst文件的博客《Latex自定义bst文件》,个人觉得也还不错,以下我同样分三步来介绍bst文件的格式配置。

STEP-1:找到makebst文件。makebst文件位于我们的CTEX的目录下custom-bib文件夹里,比较难找。

>cdC:/CTEX/MiKTeX/tex/latex/custom-bib/

STEP-2:命令行执行命令。键盘输入Win+R,然后键入cmd进入到命令行界面。此时输入命令进入交互界面,

>latexmakebst

在此界面中,只需要输入yes或者no来依次完成各种格式设置,如参考文献编号,作者姓名缩写,标题大小写格式,句号冒号的使用等。【注意】这一交互的过程会比较漫长,大概需要我们手动回答yes和no多达60-70次。我暂时也没想到其他比较好的方法。

STEP-3:回答问题yes和no。这一阶段程序会不断的抛出问题,我们只需要根据需求选择其中的某个选项即可,以下有选择性的介绍几个格式设置,

是否需要在bst文件中增加描述信息?我们选择输入yes。Itmakesupadocstripbatchjobtoproduceacustomized.bstfileforrunningwithBibTeXDoyouwantadescriptionoftheusage?(NO)yn=此程序会以交互式的方式来对格式进行设定。在每个问题后都有几个选项,*表示默认选项,直接回车Enter也会选择默认选项。此处需要我们输入MASTER文件,我们直接回车,选择默认选项。Intheinteractivedialoguethatfollows,youwillbepresentedwithaseriesofmenus.Ineachcase,oneansweristhedefault,markedas(*),andamerecarriage-returnissufficienttoselectit.(Ifthereisno*choice,thenthedefaultisthelastchoice.)Fortheotherchoices,aletterisindicatedinbracketsforselectingthatoption.Ifyouselectaletternotinthelist,defaultistaken.Thefinaloutputisafilecontainingabatchjobwhichmaybe(La)TeXedtoproducethedesiredBibTeXbibliographystylefile.Thebatchjobmaybeeditedtomakeminorchanges,ratherthanrunningthisprogramonceagain.EnterthenameoftheMASTERfile(default=merlin.mbs)mfile=此处我们要输入bst文件的名字,如yongfeng0119.bst。NameofthefinalOUTPUT.bstfile?(defaultextension=bst)ofile=文献引用风格,默认选项表示采用数字标识,其余的a表示用“作者-年”来表示,b表示“作者年代”来表示,等。我们选择默认选项。

LaTeX生成参考文献列表

LaTeX生成参考文献列表手动书写参考文献列表使用BibTeX自动生成参考文献列表引用参考文献的一个小技巧LaTeX生成参考文献列表主要有两种:第一种是使用LaTeX提供的比较原始的参考文献生成以及引用命令来手动书写参考文献;第二种是使用BibTeX自动生成参考文献列表。下面分别对两种方法进行详细介绍。手动书写参考文献列表

手动书写参考文献是在thebibliography环境中生成参考文献,生成参考文献的代码如下。

egin{thebibliography}{widestlabel}ibitem[itemnumber]{citation}end{thebibliography}

其中widestlabel用来设置参考文献序号的宽度,itemnumber自定义参考文献的序号一般是省略的,该命令会按照顺序自动生成参考文献序号,citation为区分参考文献的标签(类似变量名),使用cite{citation}命令引用参考文献时填入其中。下面给出一段生成参考文献的代码以及生成的PDF。

egin{thebibliography}{}ibitem{Ref1}Author,Articletitle,Journal,Volume,pagenumbers(year)ibitem{Ref2}Author,Booktitle,pagenumbers.Publisher,place(year)end{thebibliography}

生成的PDF效果如下:PS:手工制作的参考文献列表不需要在正文中引用即可列出,同下述要介绍的使用BibTeX方法生成参考文献列表的方法不同。

注意!!!:在article文档类的节标题默认为“Reference”,在report/book文档类的节标题默认为“Bibliography”。若要修改默认节标题可以用以下命令。

enewcommand{ efname}{centerline{section-name}}

其中section-name可自行设置,若不填该参数,则取消显示节标题;若section-name不为空,则节标题即为所填的值。

使用BibTeX自动生成参考文献列表

使用BibTeX生成参考文献需要扩展名为.bib的数据库文件作为支撑,该文件包含若干文献条目,条目格式如下。

@{,={valueone},={valuetwo},......={valuen},}

其中type字段为文献类型,包括article、book、inbook、incollection、report、booklet、collect、conference、manual等,部分类别的字段要求介绍见下表。

条目必备字段可选字段articleauthor,title,journal,yearvolume,number,pages,doibookauthor/editor,title,publisher,yearvolume/number,series,addressincollectionauthor,title,booktitle,publisher,yeareditor,volume/number,chapter,pages,addressinbookauthor/editor,title,chapter/pages,publisher,yearvolume/number,series,address

各个期刊对于参考文献的格式要求各不相同,包括作者、标题、年份、期、卷、页码以及字体样式,前后顺序。BibTeX提供了命令来设置参考文献的样式,BibTeX提供了几种预定义样式,同时投稿期刊时,一般期刊会提供LaTeX工程模板,会提供指定的参考文献样式,扩展名.bst的文件即为参考文献样式文件。通常使用ibliographystyle{bst-name}命令来指定参考文献样式,bst-name为样式文件的名称,不包括扩展名。

使用BibTeX生成参考文献的步骤如下:1)首先从百度学术/Google学术/ReserachGate/IEEEXplore/等网站下载/复制以BibTeX格式提供的参考文献。下载的格式应类似下述代码。

@article{2,title={ABigData-as-a-ServiceFramework:State-of-the-artandPerspectives},author={Wang,XiaokangandYang,LaurenceT.andLiu,HuazhongandDeen,M.Jamal},journal={IEEETransactionsonBigData},volume={PP},number={99},pages={1-1},year={2017},}

2)将下载或者复制的BibTeX格式提供的参考文献统一整理到一个文本中,修改扩展名为.bib,并将该文件放到tex工程目录下3)使用ibliographystyle{bst-name}命令设置参考文献样式,若期刊未指定样式,bst-name可选plain,unsrt,abbrv,alpha等。4)在文章中使用cite{citation-name}来引用参考文献,其中citation-name为.bib文件中每个部分的第一行5)指定参考文献列表的插入位置,使用ibliography{bib-name}插入参考文献列表,bib-name指的是样式文件的文件名称,不包括扩展名,例如reference.bib,此处bib-name只能填reference6)推荐使用XeLaTeX编译器完成编译,编译过程如下:a)首先执行一次XeLaTeX编译命令b)接着执行一次BibTeX编译命令c)然后再执行一次XeLaTeX编译命令d)最后再执行一次XeLaTeX编译命令至此便可生成参考文献列表PS:使用该方法生成参考文献列表时容易遇到一个错误,当修改.bib文件时,或者BibTeX编译命令执行完之后,控制窗口报下述错误。可采用下述方法解决

Runawayargument?!Fileendedwhilescanninguseof@newl@bel.parl.8egin{document}?

解决方案:删除工程目录下生成的扩展名为.aux及.bbl的文件,重新执行上述编译命令即可。

引用参考文献的一个小技巧

当要在同一位置引用两篇以上的参考文献时,可以考虑将参考文献标注合并。即将{1,2,3,4,5}显示为[1-5]。实现这种效果,只需要导入一个natbib宏包即可实现。具体实现如下:

usepackage[numbers,sort&compress]{natbib}

LaTex 自动生成IEEE格式的参考文献

因为IEEE要求的参考文献格式跟平时用到的有所不同,研究了一阵子才知道怎么弄,记录一下,怕忘了。

首先下一个IEEE的论文模板,进入官网后,点击下载ieeeconf.zip,解压后里面的就是latex的模板,没找到的可以点击这里下载。

有了模板之后,添加IEEE的参考文献引用需要用到BibTex的引用格式,在百度学术或谷歌学术,搜索文章后,点引用,下面会有BibTex的引用格式,如下图:点击左下角那个BibTex,就会显示如下一段描述:

@article{Wolfram2010Vox,title={VoxPopuli:ThePublicSearchingoftheWeb},author={Wolfram,DietmarandSpink,AmandaandJansen,BernardJandSaracevic,Tefko},journal={JournaloftheAssociationforInformationScience&Technology},volume={52},number={12},pages={1073-1074},year={2010},}然后创建一个名为mylib.bib文件,把上面那描述复制进去之后打开我们下载好的模板,拉到最下面,把原来的代码改成如下形式:%egin{thebibliography}{99}ibliographystyle{IEEEtran}ibliography{IEEEabrv,mylib}%end{thebibliography}

就是把原来的egin{thebibliography}{99}和end{thebibliography}注释掉,加上

ibliographystyle{IEEEtran}ibliography{IEEEabrv,mylib}

这两句,第二句里的mylib就是刚刚我们创建的mylib.bib文件的文件名,然后我们就可以调用里面的BitTeX格式的参考文献了,具体引用方法如下:在需要引用的地方加上:

cite{Wolfram2010Vox}

==说明一下:==在cite{}花括号里面的是我们在mylib.bib文件中添加的参考文献第一行的内容,如:@article{Wolfram2010Vox,只要copy花括号内的内容即可引用对应的文献。用一个例子说明:

Thisisatestoperation,citeaarticlecite{Wolfram2010Vox}%egin{thebibliography}{99}ibliographystyle{IEEEtran}ibliography{IEEEabrv,mylib}%end{thebibliography}以上这些准备工作做好后,还有一个很关键的操作,就是编译的方法,不然依然不成功:

编译:PDFLaTex——>BibTex——>PDFLaTex——>PDFLaTex

用PDFLaTeX编译你的.tex文件,这是生成一个.aux的文件,这告诉BibTeX将使用那些应用;用BibTeX编译.bib文件;再次用PDFLaTeX编译你的.tex文件,这个时候在文档中已经包含了参考文献,但此时引用的编号可能不正确;最后用PDFLaTeX编译你的.tex文件,如果一切顺利的话,这是所有东西都已正常了。

按上述操作后,就可以看到想要的引用效果了,参考文献部分是自动生成的,只需添加引用即可,特别方便,之前还需要自己添加参考文献。最后效果如图:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇