摘要
本课开启课程的第二单元,这一单元专讲文本。本课说明这一单元的用处:从一份能够编译的文档,走到一篇以学术写作所要求的细心排版的文字,无论用的是哪种语言、哪种文字;介绍本单元的四节课以及贯穿它们的线索,从段落、空格与符号,一直到注释、引文与诗句;说明本单元假定已从上一单元掌握的内容;回顾本单元教人遵守的排版惯例从何而来;提出本单元要解决的问题,即按照打字机习惯敲出来的文字编译时没有错误,却排得很差;并说明这些惯例对理科和人文学科同样有用。
学习目标
- 描述本单元内容的顺序,并说明每一节课为下一节课提供了什么。
- 认出本单元假定已从上一单元掌握的内容,必要时加以复习。
- 举例说明,为什么一篇编译时没有错误的文字可能排得很差。
- 在不同学科中认出本单元所教的文本排版惯例。
入门测验
在学习本单元之前,先测一测自己的起点是有益的。这项测验是自我测评:不计分,唯一的目的是为学习指引方向。前两道题复习本单元假定已从上一单元掌握的内容;后面八道题按顺序每两道对应本单元的一节课。从未留意过这些细节的人不必指望答对:每个答案,无论对错,都会解释要点,并指出讲解这一要点的那节课。同样的技能会在单元末尾的总结课中再次测量。
开始本单元之前,先测一测你的起点。这是一次简短的自我测评:不计分,结果只保存在你的浏览器中。
第 1 题来自前面的单元在文档正文中照原样写下
安装 \TeX Live 2025。这一行,会印出什么?控制词后面的空格到不了正文:引擎在读取命令名称时就把它吃掉了。命令在空格处正常结束,并不报错;问题在于它吃掉了空格,所以这个疏忽不易察觉。反斜线不会印出:它开始一个命令,而\TeX是一个已知命令,印出的是标志。\TeX是一个控制词:它的名称在第一个不是字母的字符处结束,后面的空格作为名称结束的信号被吃掉。应写作\TeX{} Live或\TeX\ Live。复习: 文档的结构剖析
第 2 题来自前面的单元一份报告的正文中照原样写着文件名
data_2024.csv。编译时会怎样?下划线是十个保留字符之一:照原样写出时不会被印出。那是百分号的作用,它开始一条注释;下划线会引起错误。引擎不会用一个保留字符替换另一个:它按字符的功能来解释,而这里的功能只存在于公式之中。下划线在公式中用来写下标;在正文中,引擎认为漏写了公式的开头。应写作\_;讲文档结构的单元还会介绍书写文件名的更方便的办法。复习: 文档的结构剖析
第 3 题为了分隔一篇论文的段落,作者在每段末尾写
\\,然后在下一行接着写,不留空行。他得到什么?两者并不等价:空行结束段落,\\只是在段落内部断开一行。差别就体现在缺失的缩进上。\\在段落内部是合法的命令;引擎接受它,所以这个疏忽不易察觉。\\既不增加竖直间距,也不开始新段落;它只是强制断行。\\在段落内部断行;新段落要用空行开始,这时文档类才给它应有的缩进和间距。如果每一段文字的最后一行还很短,日志通常会给出“Underfull”警告。复习: 段落、空格与符号
第 4 题一篇用 LuaLaTeX 和 fontspec 撰写的论文,在西文部分遵循用短破折号连接范围两端的编辑惯例,短破折号比连字符长。在源代码中,页码范围 12 到 15 怎样写?
连字符是最短的符号;有些惯例在范围中也接受它,但这篇论文所遵循的惯例要求短破折号。三个连字符排成长破折号,这是最长的符号,在英文中标示插入语,不用于范围。在 LaTeX 中,波浪号~是一个不能断行的空格;数字之间会出现空格,而不是符号。中文的浪纹线是全角字符~,要直接输入。用 fontspec 载入的正文字体中,两个相连的连字符会变成短破折号;也可以直接输入这个 Unicode 字符。中文正文中的数值范围则按国家标准用浪纹线(12~15)。重要的是选定一种惯例并贯彻始终。复习: 段落、空格与符号
第 5 题在一篇中文论文中,段落中间出现一个简短的拉丁语短语。如果 babel 已经把拉丁语声明为次要语言,应当怎样标记它?
\selectlanguage是一个声明,它改变的是后面所有内容的语言,而不只是这个短语;它适用于长段落,而且之后还得切换回中文。斜体是形式上的决定;它不告诉引擎这个短语是什么语言,这些单词仍按主语言的规则处理。babel 不会猜测语言:它应用声明的语言,不加标记的短语就被当作中文。\foreignlanguage带参数,作用只限于参数之内:拉丁语单词按拉丁语的规则断词,段落的其余部分不受影响。复习: 语言与字体
第 6 题导言区中有一行
\babelfont[ancientgreek]{rm}{GFS Didot}。这一行起什么作用?那是\setmainfont{GFS Didot}的作用,或者不带语言的\babelfont{rm}{GFS Didot}的作用;方括号把更换限制在古希腊语之内。babel 什么也不翻译:它对每段文字应用为其声明的语言的惯例,加上这一行,还应用一种字体。源代码中的一行不会安装任何东西;字体必须已经在发行版或系统中,如果没有,编译时会指出。\babelfont带上方括号中的语言时,babel 每次进入该语言都会换用这种字体,例如在\foreignlanguage{ancientgreek}{…}之内。这样,一种没有希腊字母的主字体就能与另一种有希腊字母的字体并存。复习: 语言与字体
第 7 题在一段已经排成斜体的西文文字中(例如一部英文著作的标题),用
\emph强调其中一个词。这个词看起来是什么样子?用\textit才会这样,它总是排成斜体;\emph则随上下文而交替。\emph不使用粗体;它根据周围的文字在斜体和直立体之间交替。根本没有错误:嵌套的强调是合法的,它的样子由文档类决定。\emph标示的是强调,而不是斜体:在直立的文字中它排成斜体,在斜体的文字中它回到直立体。所以它说明的是这个词是什么,而不是它看起来怎样。复习: 有意义的格式
第 8 题一位作者在段落中间写下
之前\large{大}之后。,以为只有“大”字会改变字号。结果如何?带参数的命令才会这样,例如\textbf{…};改变字号的命令都是声明。没有错误:花括号被当作一个普通编组来读,这个疏忽不易察觉。编组取消的是在它内部所作的声明,而不是之前的声明;这里的声明在编组之外。\large后面的花括号不是它的参数,而是声明之后出现的一个编组;字号的改变在编组之外就已经发生了。应写作{\large 大},更好的做法是用一个说明这个词是什么的命令。复习: 有意义的格式
第 9 题一段三个段落长的原文引文要与正文分开排版。应当用 LaTeX 的哪个环境?
quote不让段落首行缩进,所以在多段引文中各段不易区分;它是为简短的引文设计的。居中不等于引用:center让每一行居中,并不像引文那样内缩边距。三段长的引文放不进一个段落;长引文要与正文分开排版,不加引号。基本文档类提供两个环境:quote用于一段简短的引文或一系列简短的引文,段落不缩进;quotation用于多段的引文,各段保留首行缩进。复习: 注释、引文与诗句
第 10 题在排版诗歌的
verse环境中,诗行和诗节怎样分开?空行开始一个段落,而在verse中段落就是诗节:每行诗都会变成只有一行的诗节。源代码中的换行相当于一个空格:诗行会连成一整行。\newline与\\一样只是断行,没有分隔诗节的间距;分隔诗节的是空行。在verse中,一行诗就是一个段落中的一行,诗节就是段落:\\分开诗行,空行开始下一个诗节,并带有诗节间距。复习: 注释、引文与诗句
正在加载内容…
已完成
登录账户以保存您的进度