现在的位置: 首页 > 综合 > 正文

latex+bibtex+jabref

2018年05月13日 ⁄ 综合 ⁄ 共 8294字 ⁄ 字号 评论关闭

转自     http://blog.sina.com.cn/s/blog_53a8a4710100k6eh.html

 

前言:

能寫的太多了,从方法论到具体细节其实很多都可以说上几句。
簡直不可能一次全部介绍完,所以这里我尽量简洁地给出一些keyword来记录点点滴滴。

工具篇:

latex+bibtex+jabref等一系列工具。在office我主要用CTeX套装,而在Linux环境下我用texlive。CTeX的好处
是,在windows下使用非常方便,安装好即可使用。另外配套的WinEdt工具已经做好了TeX、LaTeX、PDFLaTeX几种工具,非常方便编
译与运行PDF
viewer。

bibtex与jabref主要是用来管理文献,我想这里需要另外一篇文章来介绍,不过搜索后发觉这篇文章几经介绍得不错了:

《bibtex现学现卖》:http://derecks.blog.sohu.com/118984444.html

另外,我希望能找到一篇总结bibtex里面各个entry作用,如article,conference,inproceedings(会议录)

等的区别;
以及reference里面排版惯例的介绍。(后来知道conference=inproceedings)
在文档 《How to Use the IEEEtran BibTeX Style》里有一点介绍,我想已经足够日常使用了。
我在附注2总结了一些重要的points。

最后, 则是利用aspell等工具,来检查你的拼写错误、语法建议等。here

有一篇非常不错的文章。

格式篇:

因为我提交的paper主要是IEEE的,所以一般会按照它的格式进行编写。
IEEE的不同会议一般提供了LaTeX的模板(style file),其实就是双栏以及一些字体等细节方面的格式设置。
它是这样使用的:

(1) 如果是sty文件,则当成一个package使用,下面是最近的ASP-DAC‘10
会议提供的aspdac2e.sty的使用方法:
/documentclass[twocolumn,letterpaper]{article}

/usepackage[letter]{aspdac2e}

(2) 如果是cls文件,则直接使用为文档类,如下:
/documentclass[conference]{IEEETrans}

总是,效果大致是相同的。

在一开头就使用预定的格式写作论文,好处是paper被接收后,要准备camera ready
version时不会改得这么痛苦,
我第一次交时就改格式改了好久,当时碰到了三个问题:

  • 包含了超链接——IEEE不允许使用
  • 包含了书签——也不允许
  • 没有内嵌所有字体——这个是最重要的,因为考虑到不同系统的PDF viewer不一定提供了你使用的字体。
在提交paper时,必须通过一个叫做IEEE PDF
eXpress



的工具的检查才能使用。这个工具提供了检测、转换等一系列服务,以生成合适格式的论文。

我还没研究透,以后可以另外写一篇总结。

当然,在论文初始提交阶段,也许可以不用那么严格。比如,一般会议要求不超过8页,那么可以先自行设置页宽等参数来放更多内容。
但是以后交final version时,势必要改。所以为了避免重复劳动,最好一开头就严格使用一定的标准

特别是对于bibtex的item,每个entry最好都严格按照格式输入好,不然后面改起来很辛苦,经验之谈啊。

写作篇:

当一切格式均已制定好,所有工具准备就绪时,以后再写paper就方便多了。
当然,一开始总是生疏的,总要摸索多几次才能调整出自己最顺手的工作环境。
一般来说,我个人的风格是先做好实验再撰写文章,这样写起来比较得心应手,文思泉涌。
其实写这种文章都有一定的套路可循,无非是那几大环节,我这里稍微写一下经验:
- title : 我没什么很多的经验,个人觉得一个formal又不哗众取宠,不太长又不太短的title适合我风格
- abstract : 很考验一个人的总结水平。基本上是整片文章的缩影。
- introduction : 很考验一个人的写作能力, 写得好的intro会让审稿人迅速把握中心思想, 不会看得烦.
- literature review : 介绍前人工作, 似乎不宜写得太长, 否则会占去太多篇幅,
有reviewer喜欢用这个来说你的contribution少
- methodology : 主要介绍自己的contribution, 我喜欢先在这里或之前的section里总结一下,
让人明了你究竟做了什么.
  然后再展开来描述你的工作的各个细节. 这里可以分几个不同的section来写,
一般我会用单独的一个secion来分析问题. 然后1-2个section来说明算法/方法.
- experimental result : 也是很重要的一个环节,用图表来证明自己方法的效率以及比起前人工作的优越性
- conclusion : 基本上就是再说一次,我喜欢加上future work

写好后,就是跟老板的互动反馈意见了。虽然很简单,但是我很喜欢这种style。
基本上论文都是我自己写的,所以很考验人的写作能力,虽然辛苦,但是也算是一种学习过程。
然后通过老板的反馈意见修改文章时,也会发现自己的不足,就这样修改个3-5次,基本上就得到了能投的文章。
当然我还希望有peer review,可惜实验室没人有空帮我看 :(

附注1:搭建一個合适的jabref+bibtex工作环境

之前我的方法很山寨:一个paper开一个文件夹,里面放tex的src以及bibtex的.bib文件。
这样的话,不同的paper往往会使用同一个bib,管理起来很不方便(比如A paper里面的bib改了,其他也需要更新)。
现在的解决方法是:
专门用一个文件夹来装paper + .bib,要完成这个任务具体需要三个步骤:
1. 假设这个文件夹叫做allpapers,则建立一个allpapers/bibtex 文件夾,把.bib放里面
2.
设置jabref论文的搜索路径,比如我简单起见,把所有paper都塞到bibtex文件夹里,则jabref搜索路径设为当前文件夹"."即可。

3. 设置tex发行版的搜索路径(search
path),比如CTeX可以设置miktex的option,在root里面加上allpapers文件夹。
(发觉miktex搜索的路径貌似只能是allpapers/bibtex,而不是allpapers本身....所以之前把.bib放在bibtex文件夾里)

设置好后,用
initexmf
-vu


更新数据库,用
findtexmf
xxx.bib


测试是否能正确搜索到,如果可以则会打印出文件的路径。

这么下来,论文里面要引用这个.bib只需简单地用
/bibliography{xxx}

即可。
pdflatex、bibtex会在指定的目录下面搜索对应的bib文件,再也不用一个文件夹放一个bib了!

* 更理想的管理方法是,能把paper稍微分类,这样也许可以通过指定jabref的搜索路径为上一层目录解决。
比如allpapers/{bibtex, PL, CAD, OS}这种目录结构,管理起来会方便很多。

参考:
- http://www.haptonstahl.org/latex/work_bibtex.php


-

http://www.fceia.unr.edu.ar/lcc/cdrom/Instalaciones/LaTex/MiKTex/doc/ch08.html

这里有一篇很好的

jabref
使用指南。
附注2:关于IEEETran BibTeX style以及参考文献引用规范

IEEETran BibTeX style file是用于生成符合IEEE规范的参考文献列表的BibTeX样式文件。
有很多种不同的样式,最常用的应该是IEEEtran.bst这个文件。
要使用它非常简单,只需在对应tex
distro的<texmf/bibtex/bst文件里放好对应bst文件,
然后在tex src里面加入这句即可:
/biblilographystyle{IEEEtran}
/bibliography{IEEEabrv, mybibfile}

其中的IEEEabrv是一些会忆名字的缩写,以方便你后面快速引用,mybibfile是你的bibtex文件。
下面介绍一些重要的entry
type(article,conference/inproceedings,book)以及一些注意事项。

1. journal article (@article)
由于example已经在document里面详细给出,这里不再赘述。
IEEE
鼓励在author里详细给出作者的名字,生成最后的reference时,bibtex会根据bst文件自动缩写姓名首字母等。
并且可以在超过一定数量的作者时,自动缩写成`et al.'
在title里面,大括号用于保持单词的大小写状态,因为bibtex会根据bst文件自动更改title里面的一些大小写。
journal的输入是一个缩写string,这样可以很方便地根据要求,在full
name(IEEEfull.bib)与abbreviations之间更换。
月份的输入是三个字母的输入,这样可以使bibtex识别并自动格式化日期。

2. conference proceedings
@conference与@inproceedings是一样的,没有区别。
要注意的是,对于这种entry,IEEE把page number,volume number等放到日期的后面。

3. book
这个……没什么好说的。

4. electronic(IEEEtran.bst extension)
这是ieee bst里面的拓展。用于引用一些电子资源。
其中可以使用url域(其实是所有entry type都可以使用的)
bibtex会生成一个[online]. Available: + url的字符串以提供下载。

5. 未出版、待出版文章
使用@misc 这个类型,里面加上
note = "to be published"
来说明。
或者是在@article的year field里写上"submitted for publication"。

6. 控制开关
(具体做法请参考原文档

。)我喜欢把CTLdash_repeated_names设为no

否则如果一个reference item后续的item作者相同,则会省略为一条横线。
估计很多人看不惯,但却是IEEE推荐的格式。
不过,在bib里面添加了
@IEEEtranBSTCTL{BSTcontrol,
  CTLdash_repeated_names 
=  "no",
}
这个entry后,每次打开jabref会有warning,有点烦。

------------------------------------------------------------------

关于文献类型: (摘自TeXGuru的Latex2e用户手册)
@article条目为期刊或杂志上的一篇文章。
不可少域author, title, journal, year.
可省略域volume, number, pages, month, note.

@article{name,
author = {a and b},
title = {title},
journal = {journal name},
volume = {42},
number = {1},
year = {2008},
issn = {0110-0101},
pages = {1--8},
doi = {http://doi.xxx.org},
publisher = {ACM},
address = {New York, NY, USA},
};

@book条目为有确定出版社的书籍。
不可少域author或editor, title, publisher, year.
可省略域volume或number, series, address, edition, month, note.

@booklet条目为印制的有封皮的作品,但没有出版社或赞助机构的名称。
不可少域title.
可省略域author, howpublished, address, month, year, note.

@conference与下面的@inproceedings相同。

@inbook条目为一本书的一部分(章,节或某些页)。
不可少域author或editor, title, chapter和/或pages, publisher,year.
可省略域volume或number, series, type, address, edition, month,note.

@incollection条目为一本书中有自己题目的一部分。
不可少域author, title, booktitle, publisher, year.
可省略域editor, volume或number,series, type, chapter, pages,address, edition, month, note.

@inproceedings条目为会议论文集中的一篇文章。
不可少域author, title, booktitle, year.
可省略域editor, volume或number, series, pages, address, month,
organization, publisher, note.

@InProceedings{b07name,
author = {a and b},
title = {title},
booktitle = {Proceedings of the conference},
address = {Sydney, Australia},
month = Nov,
year = 2008,
pages = {1-2},
affiliation = {Uni-name, Country},
URL = {http://url/}
};

@manual条目为科技文档。
不可少域title.
可省略域author, organization, address, edition, month, year, note.

@mastersthesis条目为硕士论文。
不可少域author, title, school, year.
可省略域type, address, month, note.

@misc条目为不属于其它任何类型的作品。
不可少域没有。
可省略域author, title, howpublished, month, year, note.

@misc{name,
author = "a",
title = "title",
howpublished = "Website",
year = {2008},
note = {/url{https://www.mysite.org}}
};

@phdthesis条目为博士论文。
不可少域author, title, school, year.
可省略域type, address, month, note.

@proceedings条目为会议论文集。
不可少域title, year.
可省略域editor,volume或number, series, address, month,
organization, publisher, note.

@techreport条目为学校或其它研究机构印制的报告。
不可少域author, title, institution, year.
可省略域type, number, address, month, note.

@techreport{name,
author = {a and b}
title = {title},
institution = {institution rpt no.}
year = {2008}
};

@unpublished条目为有作者和标题的还未出版的作品。
不可少域author, title, note.
可省略域month, year.
在每项条目中还可以有可省略域key和crossref.
--------------------------------------------------------------------------

附注3:
ACM要求直接给出所有bibitem,而不是使用bibtex

很简单,只需使用上述流程正常生成文件后,在得到的bbl文件里复制即可。因为bibtex的原理也是用latex来预处理bib文件得到最终的tex代码,然后再包含进tex文件重新编译的。参考自这里


4月22日

Apr-22 2010: LaTeX 排版心得续(转自http://xiaoiveney.spaces.live.com/blog/cns!C5C46C7E99A3CD13!917.entry)

又写了一篇paper,继续写心得攒RP,希望能中吧~

----
- 使用

/documentclass[conference]{IEEEtran}

来直接套用IEEEtran的模板,ACM也有自己的模板(sigalt等) 
- 现在做figure一般会pdf, eps各生成一份。pdfTeX的作用是最终submit的时候用pdfTeX直接生成pdf,eps的作用是平时写的过程中可以生成dvi,然后用forward-search。
关于如何从pdf转到eps,参见以前写的一篇文章
- 对表格写脚注,不能直接使用footnote,而必须把表格放在minipage里。
但是minipage里面的footnote的counter与平时的footnote的counter是分开的。因此,必须小心使用,这里
有一个example。
另外参考mpfnmark这个宏包,可以设置mpfootnotemark
不过这里有一个没有解决的小问题,在minipage环境里面,使用footnotemark时,
如果对应的footnote counter没有被使用过,则footnotemark无效,非常奇怪。
不过也可能是我还没搞清楚究竟是mpfootnote还是footnote的问题。暂时没有深究了,因为后面用了一些其他的方法来做footnote.

- 如何在表格里使用平行的脚注。
为了节省位置,我想到了这个方法,因为一个脚注一行太浪费空间了,也很难看,特别是two column的table。如下:
        col 1    col 2
row 1   11 *      12+
row 2   21        22

* footnote one    + footnote two
如果是直接使用footnote,则+会跑到*的下面。
于是可以使用一个模拟的方法来做脚注,即把脚注内容直接写到表格里面。
为了美观,一般在实际表格数据的最后一行添加一个没有边框的空表格行,另开一行,再写几个multicolumn的表格来装脚注文字。
而对应的要标mark的地方纯粹是用footnotemark标注一下而已。
- 经过比较,发觉algorithm2e生成的算法是最好看的,也是书写起来最方便的。
- 使用/addtolength命令,对一些距离做操纵,具体参考上一篇文章
里面的参考文献。
- 两栏的table以及figure,都是使用带*的版本,如figure是/begin{figure*}
- 使用/twocolumn[...]来模拟title,不使用maketitle,则可以省下title上下的一些空白空间。其实也是可以设置的,不过这个方法hack起来的确快。

抱歉!评论已关闭.