,使得natbib 可
%% 以处理中文。注意如果使用了此文件,运行 fixbbl 时加上 -cjk 选项,以便生
%% 成可阅读的中文 bbl 文件,详情请访问 hooklee 主页,http://www.hooklee.com/。
\AtBeginDocument{%
\if@filesw
\immediate\write\@mainaux{%
\string\begin{CJK}{GBK}{song}}%
\immediate\write\@mainaux{%
\string\makeatletter}%
\fi}
\AtEndDocument{%
\if@filesw
\immediate\write\@mainaux{%
\string\end{CJK}}%
\fi}
% Enable Chinese in preamble (code from beamer)
\makeatletter
\def\beamer@activecjk{
% Activate all >128 characters.
\count@=127
\@whilenum\count@<255 \do{%
\advance\count@ by 1
\lccode`\~=\count@
\catcode\count@=\active
\lowercase{\def~{\kern1ex}}
}
}
\beamer@activecjk
\makeatother
也可以直接使用 hooklee 编写的 fixbbl 工具,具体用法请参考 hooklee 主页
。
文献引用风格文件 bst
对中英文文献采用不同的风格是处理中英文参考文献的关键。这里采用薛瑞尼维
护的 thuthesis 的处理方法,即在 bib 文件中为中文参考文献增加 lang 字段
,通过这一字段区分中英文文献。依照这一思路,读者可以调整和修改 natbib
自带的 plain.bst, unsrt.bst 等风格文件。下面是一个小小的例子:
FUNCTION {bbl.and}
{ lang empty$
{"and"}
{"和"}
if$
}
这样修改可以告诉 BibTeX 在生成 bbl 文件时,中文文献多个作者之间的 and
改用中文“和”。
下面是经过初步修改的 bst 文件,未经充分测试,供参考。
authordatenat.bst v0.1 2006-11-06 20:11
辅助处理程序
中文文献的排序问题经过上述三步修改工作,基本上应该可以正常处理中文
参考文献了,但是有可能还会出现排序问题,即中文参考文献未按作者姓氏拼音
顺序排序。这一功能可以借助 hooklee 开发的 fixbbl 工具实现。Win 版本的
fixbbl 可以直接到 hooklee 主页下载使用。下面是可以在 Linux 系统下使用
的 fixbbl 程序(或者从 hooklee 主页下载源码,自己编译)。
fixbbl.tgz v0.3 by hooklee
中文参考文献的处理(数字上标式)
以下是导言区的相关代码。注意:如果同时使用了 hyperref 宏包,需要在
natbib 和 hyperref 两个宏包之后使用 hypernat 宏包,以解决数字上标的连
写问题。
\usepackage[numbers,sort&compress]{natbib}
\renewcommand{\citet}[1]{\textsuperscript{\cite{#1}}}
\renewcommand{\citep}[1]{\textsuperscript{\cite{#1}}}
\addtolength{\bibsep}{-0.5 em} % 缩小参考文献间的垂直间距
\setlength{\bibhang}{2em}
%\newcommand{\bibnumfont}[1]{\textit{#1}}
\newcommand{\bibfont}{\normalfont}% 不宜使用中文字号,因为中文字号定义中包含了多余的行距
%\renewcommand\bibnumfmt[1]{#1} %去掉文末文献列表的[](数字或上标模式)
文中文献的引用方式:
命令
适用情况
citet
上标形式
citep
上标形式(同上)
cite
正文形式
对中文的处理,与作者年代式相同。
关于文中文献条目问题
应用的领域
各章保持自己的参考文献列表;
在文中直接列出文献条目,如用于表格下方的资料来源。
所有引用到的参考文献不以文末文献列表的形式出现,而是在每页脚注中出
现。
使用 natbib 所带的 bibentry 宏包
该宏包提供 \bibentry 命令,用于在正文中插入对应的参考文献条目。主要用
法有两种:
不再出现参考文献列表此时需要在使用 \bibentry 命令之前声明参考文献数
据库文件,形式为 \nobibliography{bibfile} 。注意:文献条目最末尾的标点
符号会自动去掉,以便作者在其后添加其他文字。仍然出现参考文献列表此时需要将上面的数据库文件声明命令改为
\nobibliography* ,然后在文末使用通常的 \bibliography{bibfile} 命令声明
数据库文件,两者需要使用同一个数据库文件,最好只有一个。这样的话,文档
中就可以混合使用 \bibentry 和 \citet 等命令了。
使用 chapterbib 和 natbib 宏包
使用这两个宏包可以实现每章内容末尾出现自己的参考文献列表。但需要注意以
下几点:
natbib 在使用时需要加上 sectionbib 选项,并在其后载入 chapterbib 宏
包。
每章内容均需要放在单独 tex 文档中,使用 \include 命令组合到主文档中
。
编译时需要使用 bibtex 分别对每章加以处理,即 bibtex file1, bibtex
file2 等。
其他步骤与通常编译 LaTeX 文档相同。
使用 footbib 宏包
使用该宏包可以将引用到的参考文献条目直接放到引用所在页的脚注中,并且如
果前后所引文献相同,该宏包还可以自动加上 ibid。