TeX参考文献中文版.pdf

上传人:暗伤 文档编号:4284327 上传时间:2021-08-01 格式:PDF 页数:53 大小:447.31KB
返回 下载 相关 举报
TeX参考文献中文版.pdf_第1页
第1页 / 共53页
TeX参考文献中文版.pdf_第2页
第2页 / 共53页
点击查看更多>>
资源描述

《TeX参考文献中文版.pdf》由会员分享,可在线阅读,更多相关《TeX参考文献中文版.pdf(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、驯服猛兽 关于 BibTEX 的前生今世 英文名: Tame the BeaST (The B to X of BibTEX) 原作者: Nicolas Markey markeylsv.ens-cachan.fr 译作者: LaughCry 版本号: 1.3 October 16, 2005 这本共 53 页的小册子旨在清晰而又详尽地向读者介绍关于 BibTEX 的功能与原 理. 之所以写这么个教程, 是因为 BibTEX 手册 (实际上主要是其作者撰写的两个 文档 Pat88a, Pat88b) 以及几本 L ATEX 书籍 Lam97, GMS93, MGB+04, . 中 介绍 Bib

2、TEX 的章节大多过于简略, 不能完整地说明其功能与机理. 本手册英文名称中的三个大写字母 “BST” 表示 BibTEX 文献样式文件的标准扩 展名, “从 B 到 X” 表示我希望本手册尽可能完整全面 (目标是 “从 A 到 Z”). 欢迎 就关于 TEX 方面的技术以及本文档的错误给我发送电子邮件. Contents 1L ATEX 中基本的参考文献表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 2如何使用 BibTEX?. . . . . . . . . . . . . . . . . . . . .

3、 . . . . . . . . . . . . . . . . . . . .11 3.bib 文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 4参考文献表样式 (.bst) 文件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31 5BibTEX 的其它用途. . . . . . . . . . . . . . . . . . . . . . . . . . .

4、. . . . . . . . . . . . .47 1 Part 1 L AT EX 中基本的参考文献表 中基本的参考文献表 Table of Contents 1thebibliography 环境3 2bibitem 命令5 3cite 命令6 4更多小技巧7 4.1DeclareRobustCommand 命令是什么? . . . . . . . . . . . . . . . . . . . . . . . . . . .7 4.2修改参考文献表的标题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5、. .8 4.3在第一条参考文献表之前增加一些文本内容 . . . . . . . . . . . . . . . . . . . . . . . .8 4.4重新定义 bibitem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 4.5将方括号换成圆括号. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 4.6更多技巧 . . . . . . . . . . . . . . . . . . . .

6、 . . . . . . . . . . . . . . . . . . . . . . .9 4.7内部引用标签可以使用 $ 符号吗?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 在 L ATEX 中, BibTEX 和其它各式各样的文献类命令一样, 通常被人们认为是比较复杂深奥的内容. 许多人在使用时, 大多是通过复制/粘贴经典的源代码, 然后加以修改完成自己的要求, 但对这些命令背 后的原理并不清楚. 其实, 在 L ATEX 中, 参考文献表仅仅是一个文档中引用到的文献的普通列表而已. 假如我们在对 thebi

7、bliography 环境完全不熟悉的情况下手工创建参考文献表的话, 那应该这样书写: 这是文档的正文内容, 其中提及了 refdoc1 与 refdoc2. section*References beginenumerate renewcommandlabelenumitheenumi% numbers are surronded with brackets item labeldoc1 Michel Goossens, Franck Mittelbach and Alexander Samarin, emphThe LaTeX Companion, Addison Wesley, 1993

8、. item labeldoc2 Leslie Lamport, emphLaTeX: A Document Preparation System, Addison Wesley, 1997. endenumerate 上述文档经过编译后, 生成的效果为 2 这是文档的正文内容, 其中提及了 1 与 2. References 1 Michel Goossens, Franck Mittelbach and Alexander Samarin, The L ATEX Companion, Addison Wesley, 1993. 2 Leslie Lamport, L ATEX: A Doc

9、ument Preparation System, Addison Wesley, 1997. 这个效果与使用 thebibliography 环境完全类似 (该环境以一个 list 环境开始, 效果类似 于 enumerate), 而 bibitem 则对应于 item 命令. 二者最大差别之处在于 bibitem 允许使用 比 item 和 label 更一般性的交叉引用 (例如, 我们可以这样引用:GMS93). 本部分内容正是围绕 “如何在不使用 BibTEX 的情况下书写参考文献表” 展开的, 虽然这并不是这 本手册的主要目的, 但它对于深入理解其前后机理非常重要. 1thebibl

10、iography 环境 首先应当注意, L ATEX 本身并没有定义 thebibliography 环境 (当然 TEX 也没有定义它1, 它是在 文档类文件中定义的 (例如, article.cls 或 book.cls 等). 正如先前所述, 它首先新建一个章节 (根据文档 类的不同, 章节可能是 section 或 chapter), 然后在其中定义一个 list 类环境2, 不过为了避免在 缩进方面产生问题, 这个列表还是精细地调整. 举例来说, 如果我们在先前例子中改用 “字母与数字” 式的标签, 那么会得到以下不正常的排版效果 References GMS93 Michel Go

11、ossens, Franck Mittelbach, and Alexander Samarin, The L ATEX Companion, Addison Wesley, 1993. Lam97 Leslie Lamport, L ATEX: A Document Preparation System, Addison Wesley, 1997. 为了避免出现这种不适当的缩进问题, thebibliography 提供了一个强制参数, 它通常应取为列 表中最长的标签, 目的是以此为标准建立合理空白间距. 下面我们以文档类 article.cls 为例, 来看一下 thebibliograp

12、hy 环境的精确定义: 1newenvironmentthebibliography1 2section*refname 3mkbothMakeUppercaserefnameMakeUppercaserefname% 正如我们先前预料的那样, thebibliography 首先新建了一个节(或章)3. 该环境同时修改了页眉4. 1BibTEX 也可以配合 TEX 使用, 方法是要包含 (input)btxmac.tex 宏包. 2这也就解释了为什么 thebibliography 环境需要在文档类文件中定义, 而其它与文献有关的一般命令则都是在标准 的 LATEX 格式中定义的 3事实上,

13、 由于它采用了一个 section* 命令, 所以它不会出现在目录表中. 如果希望它出现在目录表中, 则可以使 用 tocbibind.sty 宏包. 其它的解决办法通常会造成页码错乱. 4标准的 apalike.sty 宏包会根据文档类的不同, 将新页眉硬编码地定义为 “REFERENCES” 或 “BIBLIOGRAPHY”. 另一 3 4listbiblabelarabiccenumiv% 5settowidthlabelwidthbiblabel#1% 这也是我们预料中的内容: 先创建一个新的 list 环境5, 它有两个强制参数: 第一个强制参数 (biblabel.) 用于指定标签

14、格式, 这里是通过 biblabel6命令与 enumiv 计数器的配合来实现的, 因此会得到 1, 2, . 这样的标签输出. 由于 bibitem 是一种特殊 的 item, 因此也允许通过使用可选参数来改变这里所定义的缺省标签的格式. 第二个参数 (从上面的第 5 行到下文的第 11 行之间) 是在该环境开始时要运行的一条或多条命 令, 通常是一些设置 list 环境中各种长度与参数取值的命令. 这里也是为了实现合理缩进而需 要我们提供最长标签的地方 (“最长标签” 是 thebibliography 环境的强制参数). 人们经常会 书写 beginthebibliography99 这

15、样的语句, 但要注意这种写法仅在被引文献数目在 10 到 99 时才是恰当的 (当然, 这里假定所有数字符号具有相同的宽度, 例如: 在使用 cmr 类字体时 就是这种情况). thebibliography 环境定义的其余部分还包括了列表边界的确定以及计数器 enumiv 的使用: 6leftmarginlabelwidth 7advanceleftmarginlabelsep 8openbibcode 9usecounterenumiv% 10letpenumivempty 11renewcommandtheenumivarabiccenumiv% 使用 openbibcode 可以允许我

16、们根据需要修改一些参数的取值, 它的缺省定义为空. 传统的样式文 件会提供一个 openbib 选项, 该选项会使用这条命令对某些参数进行重新设置. 第 9 到 11 行的代码 重置了列表计数器的值. 最后, 定义了在参考文献列表排版中所使用的一些间距与分段处理参数: 12sloppy 13clubpenalty4000 14clubpenalty clubpenalty 15widowpenalty4000% 16sfcode.m 以上就是该环境前置内容的所有内容. 而 thebibliography 环境的后置内容则更简单: 如果文献 列表为空, 则回显一条警告消息, 最后关闭 list

17、环境: 17defnoitemerr 18latexwarningEmpty thebibliography environment% 19endlist 个同名宏包则将新页眉硬编码为 refname 或 bibname. 因此如果你在实践中遇到关于页眉定义方面的问题, 不妨考虑通过检 查一下宏包的源码以确定问题所在. 5list 命令等价于 beginlist, 为了封闭环境, 它需要有一个相匹配的 endlist 命令. 6biblabel 命 令 是 在LATEX中 定 义 的,它 的 输 出 是 在 其 参 数 串 两 侧 加 上 方 括 号.其 精 确 定 义 为: defbibla

18、bel#1#1. 4 2bibitem 命令 在前述 list 环境的内部, 通常需要插入一些 item 命令. 这是一种特殊的 item 命令, 因为它 需要能够正确描述每一条参考文献项的特性, 这种特殊的 item 命令被命名为 bibitem, 它有两重 角色: 一是在列表中写入一项新条目, 二是定义用以引用本条目的交叉引用标签, 该标签的缺省定义 是 biblabelarabiccenumiv, 效果类似于 1 这样, 但也可以通过使用可选参数将其修改成 为类似于 GMS94 这样的样式, 这一点跟 item 命令的方式完全相同. bibitem 命令的精确定义为: 1defbibit

19、emifnextcharlbibitembibitem 可见, 当使用可选参数时, bibitem 调用 lbibitem, 否则它调用 bibitem. 这两个辅助性的命令 定义如下: 1deflbibitem#1#2itembiblabel#1hfilliffilesw 2letprotectnoexpand 3immediate 4writeauxoutstringbibcite#2#1fiignorespaces 为了弄清楚它的工作原理, 我们举个例子说明: 假如我们写了 bibitemGMS94companion, 那么该 命令首先创建一个具有相同可选参数的列表项, 通过使用 bib

20、label 命令, 该列表项两侧会用中括 号包围, 同时 hfill 命令又将它在行中居左对齐. 然后, 又往辅助文件 .aux7中写入一条带两个参数 的 bibcite 命令. bibcite 较为简单, 定义如下: 1defbibcitenewlbel b newlbel 命令需要三个参数 #1, #2 和 #3, 它定义了一条名称为 #1#2 的新命令 (当然这里 的 #1 和 #2 会用它们相应的取值代替), 该新命令的取值为第三个参数 #3. 这种行为与在文档中定义了一个交叉引用 (通过使用 label 命令) 时的情形类似: 当 .aux 文件 被 L ATEX (namely a

21、t the begindocument and enddocument) 读入时, 就会执行这些 newlbel 命令, 从而定义一条 bcompanion 命令, 在本例子中该命令就包含着文本内容: GMS93. 如果没有使用可选参数, 情形也非常类似: 1defbibitem#1itemiffilesw immediatewriteauxout 2stringbibcite#1thevaluelistctrfiignorespaces 新建一个列表项 item, bibcite 命令被写入到 .aux 文件中. 这里唯一的新东西是指向 enumiv 的列 表计数器 listctr, 当在

22、thebibliography 定义中的 usecounter 请求时, 该计数器的值就会被取 用. 所有出现在 bibitem (及其参数) 之后的内容都将输出到文档中最近创建的那个列表项中去, 直到 出现下一条 bibitem 命令或到达 thebibliography 环境的末尾为止8. 我们通过一个小的文献列表的例子作为总结 (在本例中共有两条文献项, 这两条正是正文中出现的 那两条): beginthebibliographyGMS93% 最长的标签是 GMS93 7更准确地说, 是用 auxout 命令所指向的文件, 不过通常情况下, 它就是 .aux 文件 8有些宏包重新定义了

23、bibitem 命令, 从而可能不再符合这种规则, 关于这方面的内容请参看第 4.4 节. 5 bibitemGMS93companion Michel Goossens, Franck Mittelbach and Alexander Samarin, emphThe LaTeX Companion, Addison Wesley, 1993. bibitemLam97lamport Leslie Lamport, emphLaTeX: A Document Preparation System, Addison Wesley, 1997. endthebibliography 这是编译后的

24、结果: References GMS93 Michel Goossens, Franck Mittelbach and Alexander Samarin, The L ATEX Companion, Ad- dison Wesley, 1993. Lam97 Leslie Lamport, L ATEX: A Document Preparation System, Addison Wesley, 1997. 3cite 命令 如果把参考文献表当作是具有交叉引用的列表, 那么 cite 命令就等价于其中的 ref 命令. 它 有一个强制参数, 在文献项被引用时用作内部标签. 它还有一个可选参

25、数, 可用于对文献进行补充 注解, 例如对 BibTEX 引用时, 一种较好的写法是 GMS93, 第 13 章, 它是通过录入 cite第 13 章companion 来实现的. 这里给出它的详细定义9: 1DeclareRobustCommandcite% 2ifnextchar tempswatruecitextempswafalsecitex 如果带有可选参数, 则布尔变量 tempswa 的值为 true(即记住此时带可选参数的状态和事实), 然后 开始调用 citex 命令. 否则, 若没有使用可选参数的话, tempswa 的值为 false, 然后用一个空可选 参数调用 cit

26、ex 命令. 在开始详细解释 citex 命令之前, 我们首先快速浏览一下 citex 命令中要使用的 cite 命 令, 这将有助于我们更好地理解 tempswa 的使用方法: 1defcite#1#2#1iftempswa , #2fi 这是用于将文献输出到文档中的命令. 其第二个参数仅当 tempswa 值为 true 时才会使用, 它与第一 个参数一道被放进中括号中, 并最终输出到文档中. 于是, citex 命令开始充当 cite 与 cite 之间桥梁的角色: 1defcitex#1#2% 2letciteaempty 3citeforciteb:=#2do 这里调用了 cite,

27、 当有数条文献被引用时, 该命令的第一个参数需要用 for 命令计算得到. 9关于 DeclareRobustCommand 命令的细节参看第 7 页. 如果你对该命令完全陌生的话, 可以暂时将它看作是一 个 newcommand 命令. 6 4citeadefcitea,penaltym % 从 for 循环中的第二项开始, 加入一个逗号和一个换行罚分, 以保证不会在文献引用项之间换行, 缺 省行为是在所有文献引用项之间都不会换行. 5edefcitebexpandafterfirstofonecitebempty% 这里重新定义了循环内部变量 citeb. 整个 for 命令顺次地将 ci

28、teb 的值设定为所有被引用 值. 这里重新定义 citeb 只是为了去除额外的空白符. 这种处理看起来怪怪的, 不过很有效. 6iffileswimmediatewriteauxoutstringcitationcitebfi 这里在 .aux 文件中写入一条 citation 命令, 以表明 citeb 已经在文档中被引用了. 其实这种处 理在这里并不那么有用, 但在使用 BibTEX 生成参考文献表时将非常关键 (参看第 5 节). 7ifundefinedbcitebmboxresetfontbfseries ?% 8Grefundefinedtrue 9latexwarning 10

29、Citation citeb on page thepage space undefined% 这段代码用来处理所引文献不存在时的情形, 此时被引文献会用一个加粗的问号来代替, 同时一条警告 消息将回显到 .log 文件中. 11citeofmtcsname bcitebendcsname#1 如果被引文献存在, 则现在使用 b. 命令将其写入, 注意到这些 b. 命令是在读取 .aux 文件 时创建的 (参看第 5 页). citeofmt 命令其实等价于 hbox10. 在对所有待引用的文献完成循环处 理后, 结果传给 cite 命令, 同时还附带一个可选的第二参数, 即这里的 #1. 由

30、上面描述可知, 这些处理关系似乎有点复杂, 不过不要紧, 使用起来还是挺简单的: 为了得 到 GMS93, Lam97, 你只需要键入 citecompanion, lamport 即可, 同时还会在文档中生成前一 节末尾那样的参考文献表. 4更多小技巧 4.1DeclareRobustCommand 命令是什么? 如果一条命令有一个可选参数, 例如 cite, 则称该命令是脆弱的 (fragile): 粗略地说, 这些命令 不能直接用在其它命令的参数中 (例如, 在 section 中不能使用 cite 命令). 一种解决办法是在脆 弱命令之前写一个 protect, 不过这种写法常会令生手

31、们迷惑不解. 另一种解决办法是将该命令声明 为 “健壮的 (robust)”, 即在定义时使用 DeclareRobustCommand 而不是 newcommand. 10在较早版本 (早于 2003 年) 的 LATEX 中, citex 命令是用 hbox 来定义的. 7 4.2修改参考文献表的标题 从 thebibliography 环境的定义可知这种需求很容易实现: 只要重新定义 refname, 将其缺 省值从 References 修改为所需内容. 不过这种方法只适用于文档类 report.cls, 而文档类 book.cls 和 article.cls 则使用 bibname,

32、 其缺省值为 Bibliography. 例如, 在使用文档类 report.cls 时, 可以这样修改: renewcommandrefname参考书目 而在使用文档类 book.cls 或 article.cls 时, 则应为: renewcommandbibname参考书目 如前文所述, 在处理页眉时, apalike.sty 不使用 refname, 而是将文献列表标题名进行了硬编码. 4.3在第一条参考文献表之前增加一些文本内容 仅仅将所需文本放置到 thebibliography 环境起始处的后面是行不通的, 将会发生一个错误, 这 是因为在 list 环境中是需要有 item 命

33、令的. 于是, 我们索性放一个真正的 item, 然后增加一些负 的水平距离, 以便达到恰当的左边距值, 并将我们的文本包装在一个 minipage 环境中 (这是为了避免 由于使用列表而带来的缩进): beginthebibliographyGMS93 item hskip-leftmargin beginminipagetextwidth Here are some useful references about LaTeX. They are available in every worthy bookshop. Many other good documentations might

34、be found on the web (the FAQ of textsfcomp.text.tex for instance). endminipage bigskip bibitemGMS93companion Michel Goossens, Franck Mittelbach and Alexander Samarin, emphThe LaTeX Companion, Addison Wesley, 1993. bibitemLam97lamport Leslie Lamport, emphLaTeX: A Document Preparation System, Addison

35、Wesley, 1997. endthebibliography 其效果为: 8 References Here are some useful references about L ATEX. They are available in every worthy bookshop. Many other good documentations might be found on the web (the FAQ of comp.text.tex for instance). GMS93 Michel Goossens, Franck Mittelbach and Alexander Sama

36、rin, The L ATEX Companion, Ad- dison Wesley, 1993. Lam97 Leslie Lamport, L ATEX: A Document Preparation System, Addison Wesley, 1997. 4.4重新定义 bibitem 有些样式文件中需要重新定义 bibitem 命令 (或者更直接地, 修改 bibitem 与 lbibitem), 以便每个条目项以一个 par 命令 (或一个空白行) 结束. backref.sty 就是一个这样的例子. 还有一些样 式文件则将 bibitem 命令的可选参数转换成了强制参数, 例

37、如 apalike.sty 即是如此. 了解这些或许可 以在调试时避免花费过多时间. 4.5将方括号换成圆括号 如前文所述, biblabel 负责为参考文献列表中的文献项标签两侧添加中括号, 因此通过重新定 义该命令就很容易得到圆括号的形式: makeatletter % is now a letter defbibleftdelim( defbibrightdelim) defbiblabel#1bibleftdelim #1bibrightdelim makeatother % is a symbol 这里使用了一点小技巧, 以后再需要改变文献项标签两侧的内容时, 只要重新定义 bibl

38、eftdelim 和 bibrightdelim 即可. 不过要注意, 这并不改变 cite 的行为, 它仍然在被引文献标签两侧添加中括号. 因此为改变该 行为, 需要重新定义 cite: makeatletter defcite#1#2bibleftdelim#1iftempswatrue , #2fibibrightdelim makeatother 4.6更多技巧 有许多宏包可以修改参考文献表格式和引用格式, 例如: 宏包 cite.sty 修改了 cite 命令的效果: 不仅将方括号换成了圆括号, 而且会对同时多个引文序列进行压缩与排序; 又如宏包 overcite.sty 还允 许将

39、引文放到上标的位置去. 宏包 splitbib.sty 修改了参考文献列表的输出格式: 它允许将参考文献表分割成多个分类, 并且对 列表进行重新排序. 更多细节参看 Mar05 的文档. 9 4.7内部引用标签可以使用 $ 符号吗? 回答大概是 “不能”, 但我并不确切地知道哪些字符能哪些字符不能用, 不过显然字母与数字是合 法的, 这通常就足够了. 此外, 逗号, 尖括号以及反斜杠符是禁用的, 除此之外的其它字符, 我就不能确 定了, 通常采用尝试的办法来确定. 结论 至此, 我们已经知道如何写参考文献表了, 似乎可以结束本手册了. 不过手工编排每一条文献既费 时又易错, 而且在撰写多篇相关

40、的文章时, 经常会引用同一批文献, 但可能采用不同的文献书写样式. 假设能将大量文献整理成一个数据库的形式, 则每次从中选择一部分, 并用 L ATEX 对其格式化及排版, 那将可以大大地简化工作. 这样的假设是存在的, 将在后文加以描述. 10 Part 2 如何使用如何使用 BibTEX? Table of Contents 5BibTEX 的工作机理11 6一些参考文献样式13 6.1传统的文献样式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 6.2部分其它文献样式 .

41、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 6.2.1apalike.bst 样式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 6.2.2natbib.sty 宏包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 6.2.3jurabib.sty 宏包. . . . . . . . .

42、 . . . . . . . . . . . . . . . . . . . . . . . . . . 17 6.2.4custom-bib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 7问题与解答18 7.1如何得到多个参考文献表?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 7.2如何使参考文献表离引用处更近些?. . . . . . . . . . . . . . . . . . .

43、 . . . . . . . . . 18 7.3如何在参考文献表中增加未被引用的文献? . . . . . . . . . . . . . . . . . . . . . . . . . 19 5BibTEX 的工作机理 如前所述, 可将 BibTEX 视为一个数据库管理程序: 它从数据库中提取某些项, 对其进行排序, 并 以 thebibliography 环境将结果导出, 以供 L ATEX 处理. 这种描述有点乐观和粗略, 现实情况则要更复杂些: 为了告诉 BibTEX 哪些条目需要导出, 需要首 先对你的文档运行一次 L ATEX; 一旦 BibTEX 完成任务, 需要再次运行 LA

44、TEX 以便将生成的参考文献表 内容一并考虑在内. 具体来说: 首先, 需要对文档运行 L ATEX. 由于这是第一遍的编译, 没有任何文献引用信息可供利用, 因此参 考文献表是空的. 每当 L ATEX 遇到文档中的一个文献引用项时, 它将引用的键 (key, 即引用标签) 写入到 .aux 文件中11. 在编译期间, L ATEX 也会在 .aux 文件中表明使用了哪个数据库, 以及使 用了哪种参考文献样式来排版参考文献表的格式. 其次, 执行 BibTEX: 该命令的参数为 .aux 文件, 该文件中包含着用于导出文献条目的所有相关 信息: 样式文件 (.bst 文件) 用来指导文献表的

45、排版, 数据库文件 (.bib 文件) 指明了所引文献 项的来源. 利用这些信息, BibTEX 就能有效地从数据库中导出所引文献项, 并按照指定排版样式 输出到一个 .bbl 文件中, 操作过程中的日志信息记入 .blg 文件. 11这正是由 cite 命令中的 citation 命令所完成的 (参看第 7 页). 11 第三步, 重新执行一次 L ATEX. 此时, 上一步生成 .bbl 文件就会被包含进来, 其中每条文献项中 的 bibitem 命令就会被执行. 在这一步中, 会根据需要将交叉引用信息写入到 .aux 中去. 不过, 由于这一步中交叉引用项并未正确地定义好, 因此生成的文

46、档中参考文献表仍然是空的. 最后, 第三次运行 L ATEX: 这一次编译开始时就会读入 .aux 文件, LATEX 将会将所引文献存储下 来, 并在参考文献表中正确地排版列出所引文献. 由此可见, 在最佳情形下, 我们需要对文档 L ATEX 编译 3 遍, 运行 BibTEX 一遍. 有时, 仅这几遍 仍然不够, 例如: 当一条文献项条目的内容中又包含了对另一条文献项条目的引用时, 就需要再增加一 遍 BibTEX 和 L ATEX. 总而言之, 编译过程的总模式可以归纳成如下的正则表达式: L ATEX (BibTEX LATEX)+LATEX. 至于其它过程就完全与第 1 部分相同,

47、 这是因为 BibTEX 通常就是创建一个完整的 thebibliography 环境而已, 在该环境中, 包含了所有文档中所引用的文献项的 bibitem. 不过, 也有两条 L ATEX 命令是 新的, 它们分别用于定义文献样式文件和文献数据库文件: bibliographystyle 命令用于声明 BibTEX 所用的文献样式文件. 其定义为: 1defbibliographystyle#1% 2ifxbegindocumenthookundefinedelse 3expandafterAtBeginDocument 4fi 5iffilesw 6immediatewriteauxout

48、stringbibstyle#1% 7fi 该命令简单地往 .aux 文件中写入一条 bibstyle 命令, 其参数是文献样式文件的名称. bibstyle 命令本身带有一个参数, 不过该命令没什么任务. 事实上, 只有 BibTEX 才需要文献 样式文件名, L ATEX 并不需要它. bibliography 命令用于定义所使用的文献数据库. 与前一条命令相反, bibliography 命令的 参数可以一个逗号分隔的文献数据库文件名列表, 这里所说的 “逗号分隔”, 不允许有空白符和换 行符. 除此之外, 这条命令的行为与前一条命令的行为方式非常相似: 它也将其参数作为另一条 名为 b

49、ibdata 的命令 (该命令会由 BibTEX 读取, 但对 L ATEX 无什么意义) 的参数写入到 .aux 文件中. 最后, bibliography 命令将 .bbl 文件包含进来用于输出参考文献表. 以下是该命令的 精确定义: 1defbibliography#1% 2iffilesw 3immediatewriteauxoutstringbibdata#1% 4fi 5inputjobname.bbl 这里正如你所猜测到的, jobname 返回当前正被编译的文档的文件名. 12 最后再明确一点: .aux 文件中也包含着需要导出的条目的键 (key) 列表, 这是通过 citation 命令来实现的, 该命令则是通过 cite 命令回显到 .aux 文件中的. citation 命令同 bibstyle 与 bibdata 这两条命令完全一样, 呵, 那就是什么也不干. 6一些参考文献样式 由于每个出版机构都有自己独特的需求与喜好, 因此存在量大量不同的文献样式. 本节将举一些典 型文献样式文件的例子. 6.1传统的文献样式 以下四种文献格式由 Oren Patashnik 原创, 哦, 忘记交待了, 他也是 BibTEX 的作者. 这四种样 式分别是 plain.bst, alpha.bst,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁