ConTeXt 对参考文献的处理——整容篇

LiYanrui posted @ Dec 18, 2009 05:57:00 PM in Dream of TeX with tags tex ConTeXt 参考文献 , 7988 阅读

标题党!!!

上一回书说到 ConTeXt 处理参考文献时,给出的是“原生态”的排版效果,这主要是因为 ConTeXt 的参考文献模块默认给出的是适合西文排版的参考文献格式。中文用户,还需要先扮演一下整容师,对参考文献排版样式整顿一下。

“原生态”的参考文献列表样式

这次我们换一个例子。先是这样一份 test.tex 文件:

\usemodule[zhfonts]
\usezhfonts[rm,11pt]

\setupbibtex[database=ref]

\starttext

\chapter{神奇的数字}

有一个神奇的数字,隐含在文献\cite[神数]中。

\completepublications
\stoptext

然后是这样一份 ref.bib 文件:

@article{神数,
         author  = "公仆甲,公仆乙,还有公仆丙",
         title   = "幽默的**局",
         journal = "天-朝-杂-志-社",
         volume  = "8",
         number  = "7",
         pages   = "53-100",
         year    = "2009",
}

编译 ConTeXt 文稿后,可得到下图所示的参考文献列表的排版结果:

实际上,大部分中文期刊所使用的参考文献列表样式应当是这样的:

下面就说说应该如何实现上面图中所示的参考文献列表的排版格式。

自定义参考文献样式文件

ConTeXt 的参考文献处理模块允许用户对参考文献的引用以及列表信息的排版样式进行自定义,同时它也提供了以下样式文件:

bibl-ams.tex     bibl-apa-fr.tex  bibl-aps.tex     bibl-num.tex
bibl-apa-de.tex  bibl-apa.tex     bibl-num-fr.tex  bibl-ssa.tex

可惜,这些官方提供的样式文件没有一种对我们是有用的。我们必须要自己进行一番定义。

自定义的参考文献样式文件的在命名上,应当要符合规范,即前缀应为 "bibl-",然后才是样式文件名,例如我现在要自定义一份样式文件,文件名设为 bibl-blablabla.tex,要加载该样式文件,可在 ConTeXt 文稿的导言区使用以下语句:

\setuppublications[alternative=blablabla]

自定义的参考文献样式文件存放的位置可以与 \jobname.tex 位于同一目录,也可以放在 "dirname `luatools bibl-apa.tex`" 目录,还可以放在$TEXMFLOCAL/tex/context/bib 目录。

设置参考文献列表序号

在 bibl-blablabla.tex 文件中添加:

\def\withbrackets#1{[#1]~}
\setuppublications[numbering=yes,numbercommand=\withbrackets,autohang=yes]

就可以得到参考文献列表 [n] 序号样式。

设置参考文献列表公共样式

在 bibl-blablabla.tex 文件中添加:

\setuppublicationlist
   [artauthor=\normalauthor,
    editor=\normalauthor,
    author=\normalauthor,
    namesep={,},
    lastnamesep={ and },
    finalnamesep={ and },
    firstnamesep={ },
    juniorsep={ },
    vonsep={ },
    surnamesep={ }]

这段代码是设定参考文献条目中的有关作者姓名的一些格式以及空白间距,主要是针对西文文献的,对于中文文献无效。

设置论文文献样式

在 bibl-blablabla.tex 文件中添加:

\setuppublicationlayout[article]{%
   \insertartauthors{}{\unskip.}{}%
   \insertarttitle{\bgroup }{\egroup.}{}%
   \insertjournal{\bgroup }{\egroup}{}%
   \insertpubyear{,}{}{}%
   \insertvolume{,}{}{}%
   \insertissue{(}{)}{}%
   \insertpages{:}{.}{}%
}

这段代码指定了如何在参考文献条目中插入各项信息的前缀、后缀和默认替换信息等规则。以插入文献年份的 \insertpubyear{,}{}{} 为例,第一个花括号中的“,”字符,表示在文献年份之前放置该符号;第二个花括号为空,表示文献年份之后不需要放置任何信息;第三个花括号也为空,表示当 文献数据中没有提供文献年份时,不需要做任何替换。

设置文献引用样式

最后,在 ConTeXt 文稿正文中引用文献时,默认的引用显示样式也不大符合常见的中文引用格式。比方说,在正文中的字串:

有一个神奇的数字,隐含在文献\cite[神数]中。

我希望它的排版结果为:

有一个神奇的数字,隐含在文献[1]中。

如果我同时引用两篇文献,例如:

有一个神奇的数字,隐含在文献\cite[神数, 神神数]中。

我希望它的排版结果为:

有一个神奇的数字,隐含在文献[1, 2]中。

当我引用三篇或更多篇的文献,并且他们在参考文献列表中的序号是紧邻的,例如:

有一个神奇的数字,隐含在文献\cite[神数, 神神数, 神神数]中。

我希望它的排版结果为:

有一个神奇的数字,隐含在文献[1-3]中。

为了满足以上这些要求,需要在 bibl-blablabla.tex 文件中添加:

\setupcite
    [num]
    [andtext={, },
     otherstext={等.},
     pubsep={, },
     lastpubsep={, },
     compress=no,
     inbetween={ },
     left={[},
     right={]}]

总结

现在对 ConTeXt 的参考文献处理中的一些细节还是有些晕,不过对照着 http://modules.contextgarden.net/bibman 中“言简意赅”的记载,结合一些比较折腾的尝试,应该会逐渐明朗起来。真正让我感觉晕眩的,其实是 LaTeX 的文献处理。

views63 说:
2009年12月19日 02:28

按照上面的步骤操作生成的参考文献却是 withbrackets1 公仆甲, 公仆乙, 还有公仆丙. 幽默的**局. 天-朝-杂-志-社,2009,8(7):53-100.

numbercommand=withbrackets 好像有问题

Avatar_small
views63 说:
2009年12月19日 02:34

解决了,改成 numbercommand=\withbrackets

views63 说:
2009年12月19日 22:06

要怎么实现第二图的那种样式,从 ctxnotes 看你是用
\title{参考文献}
\placepublications[criterium=all]
想把这个在 bibl-*.tex 设置,没成功。如果只是修改
\setupheadtext[en][pubs={\bfc 参考文献}]
参考文献前面有章节号无法去除。


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter