薛堪豪的个人博客分享 http://blog.sciencenet.cn/u/bfax 兴趣:凝聚态物理,电化学

博文

Zotero 自定义文献格式

已有 24630 次阅读 2014-2-18 19:13 |个人分类:物理|系统分类:科研笔记

Zotero 对于写论文而言真是个好东西,它不仅支持鼠标一次点击就可以从网页上下载全部文献的信息,而且还是免费的!我目前使用的体会是:Zotero 在数据层非常出色,但是在表现层还不够完善。如果用网页的语言,Zotero 这样的软件其实是用 XML 数据转换 XSLT,而其 XSLT 部分还不尽完善。官方提供各种杂志的引文格式下载:

http://www.zotero.org/styles

但有些格式文件跟杂志要求并不匹配,比如 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).



https://blog.sciencenet.cn/blog-365047-768674.html

上一篇:法国地理,行政区划和城市快速入门【上】
下一篇:ASP.NET 4.0 版本一个务实的改进
收藏 IP: 194.57.109.*| 热度|

0

评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-25 15:13

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部