摘要
本课结束本课程的第六单元,即参考文献与索引单元。它重建从文献条目通往术语表的原理与机制之链,在每一环指出用到哪条原理、它在哪一课中确立;把已取得的成果放回课程计划中去衡量,并指明哪些只是略作预告的问题留给下一单元;在结业测验中重复入门测验的各项技能;最后给出六道挑战题,难度高于各课的习题,要求综合几课的内容:把一篇论文从一种引用样式改为另一种,诊断一份能够编译而毫无警告、却有四处缺陷的参考文献表,预测一篇关于柏拉图的论文的脚注,编写一份与参考文献一致的人名索引,重建一篇学位论文的编译流程,以及准备一个同时适用于 bibtex 和 biber 的数据库。
学习目标
- 重建本单元各机制的次序,指出每一机制所依据的原理。
- 解释为什么文献数据库、引用或索引中的缺陷几乎总能毫无警告地通过编译,以及应在哪里寻找它们的痕迹:在输出中、在 biber 的输出信息中、在 makeindex 的报告中或在日志中。
- 区分本单元已经确立的内容与只是预告、留待下一单元展开的内容。
- 预测一个数据库、一种样式以及一系列引用、索引条目和缩略语会印出什么,并修改源文件,使它印出想要的结果。
- 为编译一份带参考文献、索引和术语表的文档所涉及的程序排出次序,并知道其中哪些会自行运行。
本单元的收获
本单元的目标是:一项工作的文献从数据库中引用,使引文和参考文献表按各学科的样式自动排出;文档具备便于查阅的索引和术语表。这一目标的实现,依靠的是导言宣布为前几个单元已知的内容:编译的多遍运行,即引擎在一次编译中写下下一次要读的东西;逻辑标记,它说明每样东西是什么,而把它的样子交给在别处作出的决定;以及第二单元的注释和引号。因此,走过的路可以读作一条分为四段的链。
文献数据库
关于文献数据库的一课把作品的数据与引用它的样式分开,并把逻辑标记的原理用于参考文献:.bib 文件说明每部作品是什么,样式决定怎样写出它。这一课描述了条目、条目类型、引用键(必须唯一且易于推知)和字段;说明 biber 既懂 biblatex 的字段名,也懂经典字段名,而 bibtex 只懂经典字段名;确立了 biber 划分人名的机械规则:人与人之间用 and,姓与名之间用逗号,小写的前缀,以及机构名称外的双层花括号,这些地方的错误只在输出中才看得出来;用花括号保护经典样式会改动的大写字母;解释了为什么 bibtex 把带变音符号的拉丁字母排在 z 之后,而 biber 按语言排序;介绍了从 Zotero 导出;并教人到 biber 的输出信息中而不是文档的日志中寻找数据库的错误。
用 biblatex 引用文献
关于用 biblatex 引用文献的一课以 backend=biber 载入宏包,用 \addbibresource 连同扩展名载入数据库,并载入 biblatex 要求与 babel 同用的 csquotes。它讲清了流程:引擎把引用键记入 .bcf,biber 查找它们并写出 .bbl,下一遍再把它排出;没有 biber,引文就停留为粗体的键,而 Texmaker 的参考文献按钮默认运行的是 bibtex。它按引用命令在句中的作用来选择命令:叙述式引用用 \textcite,括注式引用用 \parencite,由样式决定的引用用 \autocite,并可带前注和后注;比较了著者-出版年、顺序编码、压缩的顺序编码和字母编码几种样式,其中的编号遵循参考文献表的顺序,而不是引用的顺序,除非设置 sorting=none;并编排了带标题、标题层级和筛选条件的参考文献表。
人文学科中的引用
关于人文学科中的引用的一课把脚注引用的经济原则自动化:第一次引用完整,此后简略,拉丁文缩写 ibid.、op. cit. 和 loc. cit. 由样式计算,因此移动引文时它们不会变得不实。它介绍了 verbose 系列;用 \DeclareAutoCiteCommand 把注码放在标点之前,与本课程的例子一致,同时指出 biblatex 从不移动全角标点;在后注中按标准编码引用古典文献,后注不是数字时 biblatex 不加“p.”,看似数字时用 \nopp;介绍了 shorthand 的缩写及其列表;通过关联条目记录译本及其原著,因为标准样式不印 origdate;并用关键词把原始文献与研究文献分开。
索引与术语表
关于索引与术语表的一课把同样的流程转到另一个程序:引擎把条目写入 .idx,makeindex 把它们排序写入 .ind,imakeidx 会自行运行它,除非使用 nonewpage 或 noautomatic。它讲了用 ! 写子条目,用 @ 写排序键,用 | 写交叉引用和格式,以及页码范围;说明 makeindex 比较的是字节,按码位而不是拼音排列汉字,所以每个汉字条目都需要拼音键,而 upmendex 能按拼音排序;维护了几份有名字的索引;并用 glossaries 编排术语和缩略语,缩略语在第一次出现时展开,在两遍编译之间运行 makeglossaries,中文术语还要用 sort=def。
下图把四段汇成一条链。中间一列的每个节点是一种机制或一条规则,按彼此依赖的顺序编号,并用弧线连到它所用到的前面的环节;四周浮动的是支撑,即这条链一再求助的原理,每个支撑用实线连到依靠它的环节,用虚线连到确立它的环节,在前几个单元中确立的支撑则画成圆环。点击一个支撑,会突出显示所有用到它的环节;每个环节都链接到讲解它的那一课。
链的支柱
- A多遍编译. 引擎把一遍中算出的东西记在辅助文件里,在下一遍中使用。在第一单元确立,在第三单元细化。 本单元中不加证明而采用。
- B是什么,而不是看起来怎样. 逻辑标记说明每个元素是什么,而把它的样子交给在别处作出的决定。在第二单元确立。 本单元中不加证明而采用。
- C只决定一次. 在一个地方决定的东西(一种样式、导言区的一个选项、一个自定义命令、一个条目),在那里一改,全文随之改变;手工复制的东西则会变得不一致。在前几个单元确立。 本单元中不加证明而采用。
- Dbabel 提供的词语. babel 的语言决定文档自行写出的词语:标题、连词、缩写和标签。不加载 babel 时,biblatex 用英文模块。在第二单元确立。 本单元中不加证明而采用。
- E合法的东西不报警. 引擎及其程序只对无法处理的东西发出警告;一份合法却没有表达作者本意的源文件会毫无警告地通过编译,缺陷只在输出中看得出来。在上一单元确立。 本单元中不加证明而采用。
- F按字节排序还是按字母排序. bibtex 和 makeindex 比较字符的编码:bibtex 把带变音符号的拉丁字母排在 z 之后,makeindex 按码位而不是拼音排列汉字;biber 和 upmendex 按语言的规则排序。 确立于: 3. 字段、花括号与变音符号.
- G标记、排序、排版. 作者在正文中标出要引用或要编入索引的内容;外部程序在引擎的两遍之间排序;下一遍把结果排出。 确立于: 6. 带 biber 的流程.
第 1 段 文献数据库
- 写出类型、键和字段都正确的条目。
- 写出能被正确划分的人名。
- 为 biber 或 bibtex 准备数据库。
- 根据 biber 的输出信息诊断数据库。
数据与样式. 每部作品在
.bib条目中只描述一次,带有类型、一个不会印出的唯一键和各个字段;样式决定形式,参考文献表恰好包含被引用的作品。依据: B (是什么,而不是看起来怎样), C (只决定一次). 证明于: 文献数据库.
人名.
and分隔人,逗号分隔姓与名;没有逗号时,最后一个词是姓;开头的小写词是前缀;双层花括号阻止机构名称被拆分。任何错误都不会引发警告。字段、花括号与变音符号. biber 懂
journal、address和year,也懂它们的新名称;bibtex 只懂经典名称,用新名称时会丢掉期刊和年份;花括号保护大写字母;bibtex 把带变音符号的字母排在 z 之后,biber 按语言排序。诊断数据库. 缺一个逗号会让 biber 停下并使整个列表为空;重复的键会被忽略并给出警告;未转义的
&会在排版参考文献表的那一行引发 LuaLaTeX 错误。使用: 2. 人名, 3. 字段、花括号与变音符号. 依据: E (合法的东西不报警). 证明于: 文献数据库.
第 2 段 用 biblatex 引用文献
- 与 biber 和 csquotes 一起载入 biblatex。
- 手动、用 latexmk 或用 Texmaker 完成带 biber 的编译流程。
- 按句子选择引用命令。
- 预测每种样式印出什么,并用筛选条件编排参考文献表。
载入 biblatex. 选项中写
backend=biber和style;\addbibresource带上文件扩展名;csquotes 放在 babel 之后,biblatex 会以警告建议使用它。使用: 1. 数据与样式. 依据: D (babel 提供的词语). 证明于: 用 BibLaTeX 引用文献.
带 biber 的流程. 引擎把键写入
.bcf,biber 写出.bbl,引擎再把它排出;在此之前,引文是粗体的键;latexmk 会自行运行 biber,而 Texmaker 的按钮如不更改则运行 bibtex。使用: 5. 载入 biblatex. 依据: A (多遍编译), G (标记、排序、排版). 证明于: 用 BibLaTeX 引用文献.
按句子引用. 作者是句子成分时用
\textcite,插入语用\parencite,由样式决定的引用用\autocite;数字后注会自动得到“p.”,而\citeauthor不指向参考文献表。使用: 6. 带 biber 的流程. 依据: D (babel 提供的词语), C (只决定一次). 证明于: 用 BibLaTeX 引用文献.
样式决定. authoryear、numeric、numeric-comp 和 alphabetic 用一个选项就改变全部引文和参考文献表;编号遵循表的顺序,默认按字母顺序,
sorting=none则使编号按引用顺序排列。使用: 7. 按句子引用, 2. 人名. 依据: B (是什么,而不是看起来怎样), C (只决定一次). 证明于: 用 BibLaTeX 引用文献.
参考文献表及其筛选.
\printbibliography规定标题和标题层级;keyword和notkeyword拆分列表而不丢失作品;\nocite加入未引用的作品;没有作品的列表不会印出,并给出警告“Empty bibliography”。使用: 8. 样式决定. 依据: E (合法的东西不报警). 证明于: 用 BibLaTeX 引用文献.
第 3 段 人文学科中的引用
- 选择一种脚注样式并预测它的缩写。
- 按本课程例子的做法把注码放在标点之前。
- 按标准编码引用古典文献。
- 记录译本,并区分原始文献与研究文献。
先完整,后简略. verbose 系列在第一次引用时给出完整出处,之后给出简略出处;verbose-ibid 在同一页重复前一条脚注时写“Ibid.”;传统方案还加上 op. cit. 和 loc. cit.。
注码与标点. 在脚注模式下,
\autocite把西文标点移到注码之前;带[r]的\DeclareAutoCiteCommand让标点留在注码之后,\autocite前的空格对两种体系都适用。全角标点 biblatex 从不移动。使用: 10. 先完整,后简略, 7. 按句子引用. 依据: D (babel 提供的词语). 证明于: 人文学科中的引用.
标准编码. 不是数字的后注,如
514a或980a21,印出时不加“p.”;看似数字的后注需要\nopp;shorthand给出缩写,它优先于 ibid.,\printbiblist{shorthand}印出缩写表。使用: 7. 按句子引用, 10. 先完整,后简略. 依据: E (合法的东西不报警). 证明于: 人文学科中的引用.
译本与原始文献.
translator和origlanguage写出译者和原文语言;标准样式不印origdate,原著要声明为关联条目;keywords把原始文献与研究文献分开。使用: 12. 标准编码, 9. 参考文献表及其筛选. 依据: E (合法的东西不报警). 证明于: 人文学科中的引用.
第 4 段 索引与术语表
- 标记条目,用 makeindex 编译索引。
- 正确排列汉字条目,写出交叉引用和页码范围。
- 每个条目保持唯一的形式,并维护几份索引。
- 定义术语和缩略语,预见每一次出现。
用 imakeidx 编索引.
\index写入.idx,makeindex 排序写入.ind,\printindex把它排出;imakeidx 会自行运行 makeindex,除非使用nonewpage或noautomatic。使用: 6. 带 biber 的流程. 依据: A (多遍编译), G (标记、排序、排版). 证明于: 索引与术语表.
子条目、排序键与交叉引用.
!分隔层级,@把排序键与印出的形式分开,|see不带页码地指向别处,|(开始一个页码范围;没有排序键,汉字条目按码位排列,而不按拼音。使用: 14. 用 imakeidx 编索引. 依据: F (按字节排序还是按字母排序), E (合法的东西不报警). 证明于: 索引与术语表.
一种形式,多份索引. makeindex 逐字符比较,一个术语的两种写法就是两个条目;用自定义命令贯彻的约定可以避免这一点;
name开设单独的索引,写错的索引名会丢失条目。使用: 15. 子条目、排序键与交叉引用, 2. 人名. 依据: C (只决定一次). 证明于: 索引与术语表.
术语表与缩略语. glossaries 只定义每个术语一次,
\gls在第一次出现时展开缩略语;makeglossaries 在两遍之间排序;以汉字开头的术语需要sort=def或sort,否则引擎会停下。使用: 15. 子条目、排序键与交叉引用. 依据: G (标记、排序、排版), F (按字节排序还是按字母排序). 证明于: 索引与术语表.
走向其他文档. 这条链停在学术工作完整之处:正文、结构、公式、表格、插图、文献和索引,每一样都由它的声明计算出来。下一单元把同一个数据库和同样的机制带到演示文稿、海报和协作中去。
正在加载内容…
已完成
登录账户以保存您的进度