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

博文

Word 和 Latex 同时使用 Zotero 管理参考文献

已有 11254 次阅读 2014-12-3 00:56 |个人分类:物理|系统分类:论文交流

与他人合作论文难免遇到软件不统一的情况。一种可能性是:三人合作,其中两人喜欢用 Latex,但第三人只会用 Word。为了大家都可以修改,就只好迁就第三人,而使用 Word。还有一种可能性是:大家都愿意使用 Latex,但却看上了 Word 的修改功能。流程是:大家先用 Word 交换修改意见,最后投稿时再改写为 Latex。

为什么还要改写为 Latex 呢? 首先对于基础科学而言,一般 Latex 比 Word 好用,公式也更好看一些。其次,一些学术期刊比如 Physical Review B,对于 Latex 的稿子可以申请免版面费。

用 Word 写论文,就可以使用 Zotero 管理参考文献,非常方便!怎样把 Zotero 在 Word 里的生成的参考文献转到 Latex 里呢?虽然有一个商业软件可以把 docx 格式的 Word 文档转为 Lyx,但这样做无疑有两大问题。首先,那个软件要付费才能用。其次,并非每个人都喜欢 Lyx。一些 Miktex 和 PCTex 用户更喜欢清纯,原始的 Latex 环境。

可以设想一种看上去“很笨”的解决方案,以投稿 Physical Review B 为例。假定论文已在 Word 中写好,其参考文献是用 Zotero 自动插入的。现在我希望通过复制粘贴的方式从 Word 拷贝到 Latex 文档中。具体上标,下标那些格式我们这里先不管,主要解决参考文献问题。


(1) 修改 Physical Review B 在 Zotero 中的格式 (*.csl) 文件。我写成:


<?xml version="1.0" encoding="utf-8"?>

<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="sort-only" default-locale="en-US">

 <info>

   <title>Physical Review B</title>  

   <id>PRB</id>        

   <updated>2014-12-02T00:16:55+00:00</updated>    

 </info>

 <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"/>    

   </names>

 </macro>

 <macro name="pages">

   <text variable="page-first" form="short"/>

 </macro>

 <macro name="issued">

   <date variable="issued" delimiter=" ">

     <date-part name="year"/>

   </date>

 </macro>

 <citation>

   <sort>

     <key variable="citation-number"/>

   </sort>

   <layout vertical-align="sup" delimiter="," prefix="cite{" suffix="}">

     <text variable="citation-number"/>

   </layout>

 </citation>

 <bibliography hanging-indent="false" et-al-min="20" et-al-use-first="20">

   <layout suffix=".">

     <text variable="citation-number" prefix="bibitem{" suffix="} "/>

     <text macro="author" suffix=","/>    

     <group prefix=" " delimiter=" ">

       <text form="short" variable="container-title" font-style="italic"/>

       <text variable="volume" font-weight="bold" prefix="textbf{" suffix="}"/>

     </group>

     <group prefix=", " delimiter=" ">

       <text variable="page-first" form="short"/>

       <text macro="issued" prefix=" (" suffix=")"/>

     </group>    

   </layout>

 </bibliography>

</style>


关于 csl 格式的解读,请参见我之前的小文:Zotero 自定义文献格式。这里只是特别做了几处修改。首先是正文的引用格式

<citation>

   <sort>

     <key variable="citation-number"/>

   </sort>

   <layout vertical-align="sup" delimiter="," prefix="cite{" suffix="}">

     <text variable="citation-number"/>

   </layout>

 </citation>

原本 <citation collapse="citation-number"> 被改为 <citation>,也就是说引文 [1-3] 要强制写为 [1,2,3]。这是为了生成正确的 Latex 引用格式,一会就会明白。<layout> 一行加上了 prefix="cite{" 和 suffix="}",就可以生成 Latex 代码。Word 里将来要引用文献的时候,效果如下:



另外一个修改是有关文末参考文献的具体条目:

<bibliography hanging-indent="false" et-al-min="20" et-al-use-first="20">

   <layout suffix=".">

     <text variable="citation-number" prefix="bibitem{" suffix="} "/>

     <text macro="author" suffix=","/>    

         <group prefix=" " delimiter=" ">

           <text form="short" variable="container-title" font-style="italic"/>

           <text variable="volume" font-weight="bold" prefix="textbf{" suffix="}"/>

         </group>

         <group prefix=", " delimiter=" ">

         <text variable="page-first" form="short"/>

 <text macro="issued" prefix=" (" suffix=")"/>

         </group>    

   </layout>

 </bibliography>

其中

     <text variable="citation-number" prefix="bibitem{" suffix="} "/>

     <text variable="volume" font-weight="bold" prefix="textbf{" suffix="}"/>

这两项加入了所需的 Latex 代码。

将来 Word 中参考文献的显示效果为:


以上格式文件保存为 PRB.csl.


(2) 双击 PRB.csl 导入 Zotero 中,覆盖掉原有的。


(3) 关闭 Zotero 再重新运行。在 Word 中刷新参考文献。


(4) 此时 Word 的参考文献已经是 Latex 格式的了。复制粘贴全文到 Latex 文档中。


这种解决方案并不能处理 Word 中的其他格式。就要求全手动修改其他部分为 Latex。由于手动改,虽然费时但较为保险。

最后想到两个问题的解决方案。

(i) 若合作者不喜欢看到这些 Latex 怎么办?

答:先备份好原来 Physical Review B 的 csl 格式文件。当不想要 Latex 代码时,用原来的 csl 刷新文档即可。

(ii) 上面的参考文献都有阿拉伯数字命名,万一以后要在中间插入其他文献,文献编号岂不是要乱了?

答:我们是基于 Word 进行编辑的。当插入其他参考文献的时候,Zotero 会自动更新全部文献编号。只不过最后定稿时再复制粘贴到 Latex 文档即可。



https://wap.sciencenet.cn/blog-365047-848034.html

上一篇:Siesta 计算载流子有效质量
下一篇:VESTA 晶体结构矢量图栅格化
收藏 IP: 194.57.107.*| 热度|

1 李升伟

该博文允许注册用户评论 请点击登录 评论 (2 个评论)

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

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

GMT+8, 2024-3-28 16:20

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部