9. 数学公式中的符号
本文中的表格列出了 AMS-LATEX 软件包提供的各种数学符号,包括访问每个符号的命令。它们还包含由 Allan Jeffrey 和 Jeremy Gibbons 设计的 St Mary Road 字体中的补充符号。该软件包扩展了 Computer Modern 和 AMS 符号字体集,通常应在 amssymb
之外加载,但始终在其之后加载。它为函数式编程、过程代数、领域理论、线性逻辑等领域提供了额外的符号。
表格指示了使用每个符号命令需要加载哪些额外的软件包。命令名称为黑色的符号在标准 LaTeX 中可用。命令名称为蓝色的符号需要加载 amsmath
、amssymb
或 stmaryrd
。如有必要,将通过标记进行进一步分类:当表格还包含来自其他软件包的符号时,(StM) 表示来自 stmaryrd
的符号; (kernel) 标记在标准 LaTeX 中可用但只能通过组合两个或多个字形而获得的符号,而在指定的包中存在单个字形;(var) 标记在
数学字母表标识符 范围内使用时外观会发生变化的“字母符号”(类型为 \mathalpha
)。
9.1. 乳胶数学符号课
数学符号的主要分类与它们在技术使用中的含义有关。在数学排版中,此分类定义了公式布局。特别是,Tex的数学格式化器根据其数学类调整了每个符号两侧的水平空间。此分类还使一些更细微的区别在于重音和简单符号之间,并将“关系 *符号”的巨大列表分为几个表。
数学的设置将每个符号归入以下类别之一:普通 (Ord)、运算符 (Op)、二元 (Bin)、关系 (Rel)、开运算 (Open)、闭运算 (Close) 或 标点符号 (Punct)。可以使用命令 \mathord
、\mathop
、\mathbin
、\mathrel
、\mathopen
、\mathopen
和 \mathpunct
明确更改符号的类别。在下一个示例中,\#
和 \top
(默认均为 Ord)被更改为 Rel 和 Op。
1\usepackage[fleqn]{amsmath}
2\[ a \# \top _x^\alpha x^\alpha_b \]
3\[ a \mathrel{\#} \mathop{\top}_x^\alpha x^\alpha_b \]
除了上述类别之外,某些子公式(最重要的是分数以及由 \left
和 \right
生成的分数)形成一个名为 Inner 的类,可通过 \mathinner
命令明确使用。
表中,“0”表示“无空格”,“1”表示
\thinmuspace
,“2”表示\medmuskip
,“3”表示\thickmuskip
,“*”表示“不可能”。粗体表示在数学脚本样式中不添加相应的空格。
TEX仅通过在公式中识别每个对象的类,然后在上一对中的每对相邻对象之间添加空间来处理公式中的间距。该表被硬编码为Tex的数学排版例程,因此无法通过宏软件包更改。
只要没有之前, *二进制 *符号就会变成 *普通 *符号,其后是与二进制操作兼容的自然符号。这就是为什么表中的某些条目被标记为不可能的原因。例如,$ +x $
给出 +x(一个unary plus),而不是 +x。后者可以由$ {}+x $
产生。
考虑以下公式(更改默认值以更清楚地显示添加的空间):
1thinmuskip=10mu \medmuskip=17mu \thickmuskip=30mu
2% -------------------------------------------------------------------------------
3\[
4a - b = -\max \{ x , y \}
5\]
Tex将对象识别为ORD,BIN,ORD等,然后插入以下空间:
1 A - b = - \max \{ x , y \}
2Ord \: Bin \: Ord \; Rel \; Ord \, Op Open Ord Punct \, Ord Close
“ \ max”前面的减去变成了 *普通 *,因为 *二进制 *无法遵循 *关系 *。
在“\left...\right
”结构中,由该结构分隔的整个子公式将变成一个属于“Inner”类的单个对象。相比之下,“\Bigl
”和“\Bigr
”等命令分别生成属于“Opening”和“Closing”类的单个符号。它们之间的区别如上图的间距表所示。虽然它们可能产生垂直方向大小相等的分隔符,但根据公式中相邻对象的不同,可能会出现间距差异。例如,Ordinary 后跟 Opening 时没有空格,而 Ordinary 后跟 Inner 时则由一个较窄的空格分隔。“\left...\right
”结构中子公式内的空格按预期生成,以 Opening 符号开头,以 Closing 符号结尾。
1\thinmuskip=10mu \medmuskip=17mu \thickmuskip=30mu
2% -------------------------------------------------------------------------------
3\[ a \Bigl( \sum x \Bigr) \neq a \left( \sum x \right) \]
总而言之,最好检查一个符号是否属于所需类别,而不仅仅是在随后的表中查找它。
9.2. 字母,数字和其他 *普通 *符号
未重新的ASCII拉丁字母和阿拉伯数字数字都称为“字母符号”。他们输入的字体可以有所不同。在数学公式中,拉丁字母的默认字体是斜体的,而对于阿拉伯数字,它是直立的/罗马的。字母顺序的符号都是班级 *普通 *。
与拉丁字母不同,数学希腊字母不再与用于排版正常希腊文本的字形密切相关。由于奇怪的18世纪的偶然性,在欧洲的主要数学排版传统中,数学公式中小写字母的默认字体是斜体是斜体的,而对于大写的希腊字母,它是直立的/罗马。 (例如,在物理和化学中,印刷传统略有不同。)
下表的第一行中的资本希腊字母也是字母符号,其字体各不相同,默认值为正直/罗马。有资本希腊字母,每个字母的外观与某些拉丁字母相同(例如 *a *an *and *alpha *, *b *and *beta *, *k *and *kappa *, *o *o *and *omicron *)。这些字母不存在于表中。出于同样的原因,没有小写的Omicron。在实践中,看起来像拉丁字母的希腊字母在数学公式中不使用。
蓝色符号需要
amssymb
包。(var) 表示变量字母符号。
下表列出了其他字母形的符号 *普通 *。前四个是希伯来语字母。
蓝色符号需要“amssymb”包。
下表列出了 *普通 *类中的其余符号,包括一些常见的标点符号。这些行为像字母和数字一样,因此它们在周围永远不会有任何额外的空间。
蓝色符号需要
amssymb
包,或者如果标有 (StM),则需要stmaryrd
包。
请注意,感叹号、句号和问号在公式中不被视为标点符号。
同义词:逻辑否定 -
\lnot
、\neg
;|
-\vert
、|
;||
-\Vert
、\|
。
一个常见的错误是将这些符号直接用作 *二进制 * operation或 *关系 *符号,而无需使用该类型的正确定义的数学符号命令。因此,如果您使用’\#,
\ square’或`\&‘之类的命令,请仔细检查您获得正确的符号间空间,或者更好地定义自己的符号命令。
1\usepackage[fleqn]{amsmath} \usepackage{amssymb}
2\DeclareMathSymbol\bneg {\mathbin}{symbols}{"3A}
3\DeclareMathSymbol\rsquare{\mathrel}{AMSa}{"03}
4% -------------------------------------------------------------------------------
5\[ a \neg b \qquad x \square y + z \]
6\[ a \mathbin{\neg} b \qquad x \mathrel{\square} y + z \]
7\[ a \bneg b \qquad x \rsquare y + z \]
\declaremathsymbol
命令用于声明您自己的符号名称。
1\DeclareMathSymbol{cmd}{type}{symbol-font}{slot}
第一个参数是您选择的命令名称。第二个参数是与符号类对应的命令之一。第三个参数标识应从中获取符号的符号字体。第四个参数给出符号在字体编码中的位置,可以是十进制、八进制或十六进制值。通过查看文件amssymb.sty
或fontmath.ltx
(针对核心符号)中的定义,可以最轻松地找到参数的正确值。例如,我们查找了\neq
和\square
,并在每种情况下替换了\mathord
,最后为生成的符号赋予了新名称。
9.3. 数学口音
下表列出了公式中可用的重音命令。其中大多数是在标准Tex中定义的。有关可扩展口音的信息,请参见 此处。当您在符号中添加数学重音时,结果是类 *普通 *的符号。
蓝色重音符号需要
amsmath
软件包。
最后两个重音符号有多种宽度可供选择,系统会自动使用最合适的宽度。
1\usepackage{amstext}
2% -------------------------------------------------------------------------------
3\[ a = b \text{ but } a \tilde{=} b
4\text{ which is not } a \mathrel{\tilde{=}} b \]
在“关系”符号上放置符号的其他方法请参见
此处。在数学公式中为“i”或“j”添加重音符号时,最好使用无点变体\imath
和\jmath
。
9.4. 二进制操作员符号
可以从中选择的类 *二进制 *的100多个符号。其中大多数在下表中列出。其中一些也可作为 *关系 *符号可用,尽管以不同的名称。
蓝色符号需要
amssymb
包,或者如果标记为 (StM),则需要stmaryrd
包。
左三角形和右三角形也可用作 关系 符号。
stmaryrd
包令人困惑地将 二元 符号\bigtriangleup
和\bigtriangledown
更改为 运算符,而 二元 运算符形式仅保留同义词\varbigtriangleup
和\varbigtriangledown
。
amssymb
软件包提供了几个盒子符号,可用作 *二进制 *操作员; ``stmaryrd’‘添加了更多。请参阅下表。
所有符号都需要
amssymb
包,或者如果用 (StM) 标记,则需要stmaryrd
包。
您可以使用选项heavycircles
加载stmaryrd
包。这样,下一个表中每个以\var
开头的圆形符号命令都会与不带var
的相应命令交换其定义;例如,符号\varodot
变为\odot
,反之亦然。
蓝色符号需要
amssymb
包,或者如果标有 (StM),则需要stmaryrd
包。
stmaryrd
包的heavycircles
选项会影响所有以\var
开头的命令及其常规变体。
9.5. 关系符号
二进制 *关系 *符号的类别甚至大于 *二进制 *运算符的符号。下表列出了平等和顺序的符号。通过使用`\ not’命令将斜杠通过任何 *关系 *符号放在任何 *关系 *符号中。否定的符号代表关系的补充(或否定)。
蓝色符号需要
amssymb
包,或者如果标记为 (StM),则需要stmaryrd
包。
1$ u \not< v$ or $a \not\in \mathbf{A} $
这种否定 *关系 *符号的通用方法并不总是给出良好的结果,尤其是在较大的符号中,因为斜线始终具有相同的大小,位置和斜率。由于这个事实,也可以使用一些专门设计的“否定符号”。请参阅下表中的列表。
蓝色符号需要
amssymb
包。
如果有选择,通常最好使用专门设计的字形。要查看原因,请在下一个示例中比较符号。
1\usepackage{amssymb}
2% -------------------------------------------------------------------------------
3$ \not\leq \ \not\succeq \ \not\sim $ \par
4$ \nleq \ \nsucceq \ \nsim $
下表列出了集合和包含的 *关系 *符号。
蓝色符号需要
amssymb
包,或者如果用 (StM) 标记,则需要stmaryrd
包。
现在,对集合和包含的 *关系 *符号的否定。
蓝色符号需要
amssymb
包。
下表列出了箭头形 *关系 *符号。描述了一些产生复合 *关系 *符号的可扩展箭头构造 此处。
蓝色符号需要
amssymb
包,或者如果用 (StM) 标记,则需要stmaryrd
包。
这是否定的箭头 *关系 *符号。
蓝色符号需要
amssymb
包。
还有其他元素(除了``'‘不用于否定一般 *关系 *符号),这些元素是专门设计的,这些元素是为否定或扩展类似箭头的符号而设计的。请参阅下表。
蓝色符号需要
stmaryrd
包。
这些符号用于组合,主要与箭头一起使用;例如
\longarrownot\longleftarrow
。
使用
\joinrel
将关系符号“粘合”在一起,例如\lhook\joinrel\longrightarrow
。
这些符号的尺寸使其不适合用于其他用途。
1\usepackage{stmaryrd}
2% -------------------------------------------------------------------------------
3$\Longarrownot\longleftrightarrow \qquad \arrownot \hookleftarrow$
最后,下面是其他其他 *关系 *符号。
蓝色的 关系 符号需要
amssymb
包。
\therefore
是一个 关系 符号,因此其间距在常见用途中可能与预期不同。