购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 符号

在简单了解了LATEX支持的语言文字之后,我们就要开始学习常用的字符了,这些字符将会经常出现在LATEX文本中,是文档写作不可或缺的一部分。读者在本节会看到很多奇奇怪怪的字符以及文档写作不可避免的标点符号,正因为这些特殊符号的特殊性,读者在文档写作中需要格外注意。

本节主要包含一般字符、特殊字符和空格,一般字符我们经常看到(不单独介绍),特殊字符可以查阅,空格需要重点关注。逐个字符打印以及着重号、省略号等内容,涉及很多宏包以及相应的命令,读者在需要的时候查阅即可。而空格是不可忽视的重点,不管是中文写作还是英文写作,都少不了空格(常作为分隔符)。LATEX 在中英文文档中对空格的处理不一样,这导致字符间距不同,所以不要轻易多给空格。

2.2.1 特殊符号

在LATEX中,内置了一些特殊符号,这些符号是不能直接打印的,例如~#$%&^{}_\。它们有着特殊的作用:$为数学模式的标志,%为注释符号,^为数学公式的上标,_为数学公式的下标,&可用于数学公式的对齐,{}为分组,\是宏命令的开始标志,#用于宏定义,~为带子。

如果要打印这些字符,有两种方式:一是用\verb命令(或其他可直接打印字符的命令、环境),二是将其作为转义字符处理。将其作为转义字符处理的时候,大部分时候是在前面添加反斜线\,如表2.4所示。

表2.4 在LaTex中打印特殊符号

在 alltt宏包提供的 alltt环境中,能够逐个字符地打印,所以即使对于特殊字符,也能逐个打印,而不会被LATEX解析为特殊字符。

上述LATEX命令打印效果如下:

这些特殊字符:#$%^&~_

在alltt宏包的alltt环境中打印特殊字符不需要转义,但是该环境默认只能打印单行文本,文本过长则会超出页面。

类似地,用\verb命令也可以打印这些特殊符号,例如\verb=~#$%&^{}_\=,即打印~#$%&^{}_\。如果将~#$%&^{}_\作为源码看待,还可以用\lstinline命令打印。

读者需要注意的是,~#$%&^{}_\等符号之所以被列为特殊符号,是因为它们在LATEX系统中已经被赋予了特殊的功能含义。后面我们介绍到的很多字符也不同于一般字符,是因为它们不能直接输入,只能通过一些命令或者在特定的编码集中输入,但两者本质上不同。

2.2.2 标点符号

标点符号是语句的分隔符,任何一个国家的语言都有标点符号。我们以中文和英文两种语言为例,在英文环境中可以直接输入的标点符号有,.;:!?`'()[]-/*@,其中,.;:!?等符号用于分隔语句,后面应该跟随一个空格。在中文环境中可以直接输入的标点符号有,。;:!?‘’“”()【】,后面不需要再添加空格。

在中英文标点符号中,最有特色的是单引号,特别是在中英文混排的文档中,应格外注意这个问题。在中文文档中,要插入英文的单引号,直接用''恐怕只能打印两个右单引号,想要打印左单引号还需要`符号(该键一般位于电脑键盘的左上角)。

中英文文档对单引号的处理方式不同。

上述LATEX命令打印效果如下:

This is'left single quotation mark'.

这是‘左单引号’。

本书是中文排版的,在插入英文的单引号时,需要使用`符号打印左单引号。

在中文文档(ctex)中,要打印单引号',直接打印可能也不能如愿,也可以使用\verb命令,如\verb|'|。类似地,在 lstlisting 环境下,即在插入源代码的时候,要保留英文的单引号,则需要\lstset{upquote}命令。

在伪代码lstlisting环境下打印英文单引号。

上述LATEX命令打印效果如下:

If you want this type of quoting with listings simply use the keyword upquote.So the quoting is'or".

符号(-)在英文中可以作为连字符,在中文中可以作为破折号,例如:en-dash——破折号。此外,中文的破折号可以是两个或者三个短横线(-),也可以是半角的破折号(——,Shift+-键)。

中文的省略号用六个小点(……)表示,英文的省略号常用三个小点表示,可用\ldots、\dots等命令产生,如...由\ldots打印。一般\ldots等命令后面添加空格、逗号、句号。

一般在标点符号的应用中不会出现什么问题,出现问题最多的就是单引号的应用。需要注意的是,每种语言的标点符号的左右间距略有差别,以标点符号作为一行结束时,是否存在压缩也有所不同。

2.2.3 抄录

LATEX文本中的命令不一定全部需要用LATEX翻译,我们已经见过\verb命令,它能够将字符按照原样打印,例如打印特殊字符。\verb命令的基本格式为\verb<char>text<char>,其中 char 表示符号(不是字母),text 前后用一对符号包围,text 原样打印。例如打印特殊符号&:\verb=&=。

如果是\verb*带星号,即表示打印text中的空格,如\verb*"\LaTeX&\TeX",即\LaTeX␣&␣\TeX,其中空格用␣表示。

不管是\verb还是\verb*,都只适合打印小段文本,对于大段文本,更适合用verbatim环境。类似地,verbatim*环境可见空格。

verbatim环境打印程序段。

上述LATEX命令打印效果如下:

#include <stdio.h>//包含头文件

//main函数开始

int main (){

int a=1,b=2;//定义两个int类型的变量

printf("a+b=%d\n",a+b);//输出a+b的和

return 0;

}//main函数结束

除LATEX原生的verbatim环境外,还有verbatim宏包也提供verbatim环境,shortvrb宏包提供\verb 的简写形式,fancyvrb 宏包扩展 verbatim 环境。fancyvrb 宏包提供的Verbatim环境,与verbatim环境(两个环境的首字母一个大写,一个小写)有着相似的功能,但其功能更强大。

在Verbatim环境中,打印数学公式的LATEX文档。

上述LATEX命令打印效果如下:

公式1:\sum_{i=1}^n

公式2:\sum_{i=1}^n

从案例中可知,Verbatim环境中的文本并没有换行,打印的时候却是两行,也就是按照LATEX文本的原样打印(与lstlisting环境类似)。LATEX文本中的数学公式\sum_{i=1}^n没有被解析为 ,而是按照原样打印。需要注意的是,每一行的文本不能太长,否则会超出页面范围,因为不会自动换行。

2.2.4 着重号

对于某些需要突出显示的文本,有时候需要给予不同程度的凸显,例如利用文字加粗、下画线、着重号等方式,使之与其他文本在表现形式上存在明显的不同。LATEX 中添加着重号有多种方式,可以借助不同的宏包实现,每种宏包有着各自的特点和使用规则,这里介绍几种比较常用的宏包及其实现方式。

在 CJK 系列宏包 中,提供了\CJKunderdot{text} 命令,用于打印着重号(文字下面添加小黑点)。该命令有一个参数,即需要添加着重号的文本。

李白的《静夜思》中,“ 床前明月光 ,疑似地上霜。”中的“ ”,指的并不是现代意义中的床,而是指代井上的围栏。这里的着重号就是用\CJKunderdot命令打印的。

用粗体也可以让文本有一定的凸显效果,\textbf{text} 命令可以让文字变成粗体,起到加深的作用。该命令有一个参数,即需要加粗的文本。

用\textbf命令加粗文字,如 床前明月光, 疑似地上霜。\textbf可以与\CJKunderdot等其他命令嵌套,如 床前明月光 ,疑似地上霜。

xeCJK 宏包包含了 xeCJKfntef,而 xeCJKfntef 宏包基于 ulem 宏包。LATEX 本身喜欢用\emph、\em等命令打印斜体文本做标记,ulem宏包对\emph命令进行重定义,舍弃了原来的斜体效果,对文本添加下画线。ulem宏包中定义的命令如表2.5所示,这些命令都带有一个参数,就是需要添加着重号的文本。

表2.5 ulem宏包中定义的命令

与ulem宏包类似,soul宏包也可以提供下画线支持,且可以对单词样式进行修改:增加字母距离、添加背景颜色、全部大写等,以突出强调效果,soul宏包中定义的命令如表2.6所示,这些命令也有一个参数,即作用的文本。

表2.6 soul宏包中定义的命令

值得注意的是,如果加载了color 宏包,则表2.6中的\hl默认的颜色为黄色,否则为浅灰色。\caps命令可以将小写字母自动转换为大写字母,\so命令增加了字母的间距。

2.2.5 空格

空格在文中并不显示,只是有一定的留白距离。在中文文档中,中文字符后面的空格并不打印,英文字符之间的空格只打印一个(即使有很多个空格)。

中文与英文对空格的处理方式。

上述LATEX命令打印效果如下:

I love you.我爱你。

从打印的结果可知,即使开头的位置有很多空格,或者在句中有很多空格,空格都不会被打印。在英文语句中,字符之间只会打印一个空格作为分隔符。换行相当于空格,所以在“我”的前面有一个空格。

宏定义中可能需要添加空格,如定义某个英文缩写,可以在定义中添加\⊔(空格)或者{}。xspace宏包也提供了类似的支持,在宏定义末尾添加\xspace命令也可以打印空格。

定义一个常用的缩写\USA,在LATEX文中引用,即使用\USA命令打印。

上述LATEX命令打印效果如下:

The abbreviation of United States of Americais USA

在打印结果中,“America”与“is”之间没有空格,可以在宏定义中添加\⊔(空格)或者{}增加空格。

在导言区添加xspace宏包,并在宏定义的末尾添加\xspace命令,可智能打印空格。

上述LATEX命令打印效果如下:

The abbreviation of United States of America is USA.

需要注意的是,\xspace命令即打印空格,宏定义中,“America”与\xspace命令之间没有空格。

另外,介绍几个打印空格的命令,这些命令可以显式地打印空格:\qquad、\quad。

用\qquad、\quad打印空格,但两者的间距不同。

上述LATEX命令打印效果如下:

(x-1) 2 =0(x+1) 2 =0(x-1) 2 =0(x+1) 2 =0

很显然,\qquad命令打印的空格间距比\quad命令打印的空格间距更大(两个字长)。\qquad 和\quad 命令的使用频率很高,不仅可以应用于数学公式,也可以在文本环境中使用。

还有一种称为“幻影”的空格,用\phantom{code}命令,打印一个与code大小相同的空格。

用\phantom命令打印“幻影空格”。

上述LATEX命令打印效果如下:

这是幻影空格。

类似地,还有\hphantom{text}和\vphantom{text}命令,分别表示水平方向和垂直方向的幻影。

以上介绍的案例都是在水平方向上打印的空格,后面会介绍两个常用的命令:\hspace命令和\vspace命令,分别在水平方向和垂直方向上产生指定距离的间距(严格来说不是空格)。 Q9x1s5hI6lkcluo3tRHk+gro20FLYY+LXQN19FhTL553Rvb5Z49aC2Ivv0fXiKUz

点击中间区域
呼出菜单
上一章
目录
下一章
×