||
Zotero 对于写论文而言真是个好东西,它不仅支持鼠标一次点击就可以从网页上下载全部文献的信息,而且还是免费的!我目前使用的体会是:Zotero 在数据层非常出色,但是在表现层还不够完善。如果用网页的语言,Zotero 这样的软件其实是用 XML 数据转换 XSLT,而其 XSLT 部分还不尽完善。官方提供各种杂志的引文格式下载:
但有些格式文件跟杂志要求并不匹配,比如 Physical Review B 的格式文件,会把作者写成:
J.J. Thomson
的格式,而杂志要求是
J. J. Thomson
的格式,中间要有空格。
解决方法是:自己写 Zotero 的 Style (*.csl)文件。但也不用从头来,可以下载一个母版。比如 Journal of the Electrochemical Society 的格式文件写得就不错:
http://www.zotero.org/styles/journal-of-the-electrochemical-society
作者是 Julian Onions 和 Sebastian Karcher。
然而,Journal of the Electrochemical Society 和 Physical Review B 的引文格式有所不同,怎样修改呢?主要在相应 csl 文件中查找以下结构并做修改(下面显示的是修改后的):
<layout suffix=".">
<text variable="citation-number" suffix=". "/>
<text macro="author" suffix=","/>
<choose>
<if type="thesis">
... ...
</if>
<else-if type="book" match="any">
... ...
</else-if>
<else-if type="chapter paper-conference" match="any">
... ...
</else-if>
<else>
<group prefix=" " delimiter=" ">
<text form="short" variable="container-title" font-style="italic"/>
<text variable="volume" font-weight="bold"/>
</group>
<group prefix=", " delimiter=" ">
<text variable="page-first" form="short"/>
</group>
<text macro="issued" prefix=" (" suffix=")"/>
</else>
</choose>
</layout>
语法是 XML 格式的。这里假定读者了解一点 XML。具体解释如下:
<layout suffix="."> 是指整个参考文献写完以后要有一个句号。很明显, suffix 是后缀的意思。
<text variable="citation-number" suffix=". "/> 首先要写这是第几个参考文献,比如“1.”或者“2.”。编号后面有后缀:一个句号。下面的内容是按照先后次序,从左到右显示。
<text macro="author" suffix=","/> 这个作者格式比较复杂,所以事先定义了一个宏(macro)。关于作者格式之后再说,这里只是注意到全部作者写完之后,接一个逗号。很容易理解,这部分不宜定义在宏中,因为有些杂志作者列表之后接的可能是句号。
<choose> 根据文献到底是学位论文,书籍,会议论文还是期刊论文进行选择。我们以期刊论文为例。因为前面所有选项都没有期刊论文,所以最后的
<else> ... </else> 段是关键
第一部分:期刊与卷号
<group prefix=" " delimiter=" ">
<text form="short" variable="container-title" font-style="italic"/>
<text variable="volume" font-weight="bold"/>
</group>
首先是期刊名字,“container-title”。按照 Physical Review B 的要求,选择了期刊缩写以及斜体。
然后是卷号(Volume),按照 Physical Review B 的要求,采用粗体显示。
要注意的是 <group prefix=" " delimiter=" "> 这一行。顾名思义,prefix 就是前缀,说明作者列表之后除了逗号以外,还要加一个空格。而 delimiter=" " 说明期刊名字与卷号之间只是一个空格。在这一点上,Journal of the Electrochemical Society 则是:
<group prefix=" " delimiter=", ">
说明在这个杂志的引文中,期刊名字与卷号之间要有一个逗号分隔。
第二部分:页码
<group prefix=", " delimiter=" ">
<text variable="page-first" form="short"/>
</group>
这个是从网上查到的技巧,<text variable="page-first" form="short"/> 要求只显示第一页的页码,正如 Physical Review B 所要求的。相反,Journal of the Electrochemical Society 则要求注明页码范围,所以在那个杂志的 csl 文件中这部分是:
<text variable="page"/>
第三部分:日期
<text macro="issued" prefix=" (" suffix=")"/>
前缀,后缀的格式明显是指用圆括号把日期括起来。另外前面的括号之前要加一个空格。年份的格式也是写了一个宏,但是很简单(如下),只包括年份。
<macro name="issued">
<date variable="issued" delimiter=" ">
<date-part name="year"/>
</date>
</macro>
作者部分的宏怎么写呢?原 Journal of the Electrochemical Society 的格式是这样写的:
<macro name="author">
<names variable="author">
<name sort-separator=", " initialize-with=". " and="text" delimiter=", "/>
<label form="short" prefix=", " suffix="." text-case="capitalize-first" strip-periods="true"/>
<substitute>
<names variable="editor"/>
</substitute>
</names>
</macro>
其格式与 Physical Review B 是一样的。这里关键部分是
<name sort-separator=", " initialize-with=". " and="text" delimiter=", "/>
这一行。其中 initialize-with=". " 是指名字(Given name)缩写之间的间隔符号,这里采用一个点号外加一个空格,可以导致“J. J. Thomson”的效果。如果改用 initialize-with=".",去掉空格,则是“J.J. Thomson”的效果。此外 delimiter=", " 这个也比较重要,是指多个作者之间如何分隔。这里采用逗号外加空格。如果改为 delimiter="; " 就是指分号外加空格。
<label form="short" prefix=", " suffix="." text-case="capitalize-first" strip-periods="true"/>
这一行可能是定义名字如何缩写的,但去掉它以后显示效果也没见什么区别。
最后要提一点的是:应该把 <info> ... </info> 里面的 title 属性修改为新的杂志名称,比如你并不希望自己写的 Physical Review B 格式在 Word 里面被称为“Journal of the Electrochemical Society”,所以应该改为:
<title>Physical Review B</title>
把写好的 Physical Review B 格式导入 Zotero,参考文献显示完好,例如:
W. Kohn and L. J. Sham, Phys. Rev. 140, A1133 (1965).
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-25 15:13
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社