summaryrefslogtreecommitdiff
path: root/info/lshort/chinese/src/chap/chap.04.math.tex
blob: 75212c440a519c114b43d6cf06a0cb547fcd36d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
\chapter{排版数学公式}\label{chap:math}
\addtocontents{los}{\protect\addvspace{10pt}}

\begin{intro}
准备好了!本章将见识到 \LaTeX{} 闻名的强项——排版数学公式。当然你得注意了,本章的内容只是一点皮毛,
虽然对大多数人来说已经够用了,但是如果不能解决你的问题的话也不要大惊小怪,求助于搜索引擎或者有经验的人不失为一个好办法。
\end{intro}
\DeclareRobustCommand*\amscmd[1]{\textcolor{blue}{\cmd{#1}}}
\DeclareRobustCommand*\amsenv[1]{\textcolor{blue}{\env{#1}}}

\section{\hologo{AmS} 宏集}\label{sec:ams-bundle}

\pkgindex{amsmath,amsfonts,amssymb,amsthm}
在介绍数学公式排版之前,简单介绍一下 \hologo{AmS} 宏集。\hologo{AmS} 宏集合是美国数学学会(American Mathematical Society)提供的对
\LaTeX{} 原生的数学公式排版的扩展,其核心是 \pkg{amsmath} 宏包,对多行公式的排版提供了有力的支持。
此外,\pkg{amsfonts} 宏包以及基于它的 \pkg{amssymb} 宏包提供了丰富的数学符号;\pkg{amsthm} 宏包扩展了 \LaTeX{} 定理证明格式。

本章介绍的许多命令和环境依赖于 \pkg{amsmath} 宏包,这些命令和环境将以\textcolor{blue}{蓝色}示意。以下示例都假定了导言区中写有
\begin{verbatim}
\usepackage{amsmath}
\end{verbatim}

\section{公式排版基础}\label{sec:math-basics}

\subsection{行内和行间公式}\label{subsec:math-inline-display}

数学公式有两种排版方式:其一是与文字混排,称为\textbf{行内公式};其二是单独列为一行排版,称为\textbf{行间公式}。

\pinyinindex{hangneigongshi}{行内公式}
\index{^^d@\texttt\$ (\textit{数学模式})}
行内公式由一对 \texttt\$ 符号包裹:
\begin{example}
The Pythagorean theorem is
$a^2 + b^2 = c^2$.
\end{example}

\envindex{equation}
\cmdindex{label,ref,nonumber}
\cmdindex[amsmath]{eqref,tag,notag}
单独成行的\textbf{行间公式}在 \LaTeX{} 里由 \env{equation} 环境包裹。
\env{equation} 环境为公式自动生成一个编号,这个编号可以用 \cmd{label} 和 \cmd{ref} 生成交叉引用,
\pkg{amsmath} 的 \amscmd{eqref} 命令甚至为引用自动加上圆括号;还可以用 \amscmd{tag} 命令手动修改公式的编号,
或者用 \amscmd{notag} 命令取消为公式编号(与之基本等效的命令是 \cmd{nonumber})。

\begin{example}
The Pythagorean theorem is:
\begin{equation}
a^2 + b^2 = c^2 \label{pythagorean}
\end{equation}
Equation \eqref{pythagorean} is
called `Gougu theorem' in Chinese.
\end{example}

\begin{example}
It's wrong to say
\begin{equation}
1 + 1 = 3 \tag{dumb}
\end{equation}
or
\begin{equation}
1 + 1 = 4 \notag
\end{equation}
\end{example}

\cmdindex{[,]}
\envindex{displaymath}
\envindex[amsmath]{equation*}
如果需要直接使用不带编号的行间公式,则将公式用命令 \cmd{[} 和 \cmd{]} 包裹%
\footnote{\TeX{} 原生排版行间公式的方法是用一对 \texttt{\$\$} 符号包裹,不过无法通过指定 \texttt{fleqn} 选项控制左对齐,
与上下文之间的间距也不好调整,故不太推荐使用。},
与之等效的是 \env{displaymath} 环境。有的人更喜欢 \amsenv{equation*} 环境,体现了带星号和不带星号的环境之间的区别。

\begin{example}
\begin{equation*}
a^2 + b^2 = c^2
\end{equation*}
For short:
\[ a^2 + b^2 = c^2 \]
Or if you like the long one:
\begin{displaymath}
a^2 + b^2 = c^2
\end{displaymath}
\end{example}

我们通过一个例子展示行内公式和行间公式的对比。为了与文字相适应,行内公式在排版大的公式元素(分式、巨算符等)时显得很“局促”:

\begin{example}
In text:
$\lim_{n \to \infty}
\sum_{k=1}^n \frac{1}{k^2}
= \frac{\pi^2}{6}$.

In display:
\[
\lim_{n \to \infty}
\sum_{k=1}^n \frac{1}{k^2}
= \frac{\pi^2}{6}
\]
\end{example}

行间公式的对齐、编号位置等性质由文档类选项控制,文档类的 \texttt{fleqn} 选项令行间公式左对齐;
\texttt{leqno} 选项令编号放在公式左边。

\subsection{数学模式}\label{subsec:math-mode}

\pinyinindex{shuxuemoshi}{数学模式}
\cmdindex[amsmath]{text}
当用户使用 \texttt\$ 开启行内公式输入,或是使用 \cmd{[} 命令、\env{equation} 环境时,\LaTeX{} 就进入了\textbf{数学模式}。
数学模式相比于文本模式有以下特点:
\begin{enumerate}
  \item 数学模式中输入的空格被忽略。数学符号的间距默认由符号的性质(关系符号、运算符等)决定。
  需要人为引入间距时,使用 \cmd{quad} 和 \cmd{qquad} 等命令。详见 \ref{sec:math-space} 节。
  \item \textbf{不允许有空行(分段)}。行间公式中也无法用 \crcmd{} 命令手动换行。排版多行公式需要用到
  \ref{sec:multi-eqns} 节介绍的各种环境。
  \item 所有的字母被当作数学公式中的变量处理,字母间距与文本模式不一致,也无法生成单词之间的空格。
  如果想在数学公式中输入正体的文本,简单情况下可用 \ref{subsec:math-alpha} 小节中提供的 \cmd{mathrm} 命令。
  或者用 \pkg{amsmath} 提供的 \amscmd{text} 命令%
  \footnote{\amscmd{text} 命令仅适合在公式中穿插少量文字。如果你的情况正好相反,需要在许多文字中穿插使用公式,
  则应该像正常的行内公式那样用,而不是滥用 \amscmd{text} 命令。}。
\end{enumerate}
\begin{example}
$x^{2} \geq 0 \qquad
\text{for \textbf{all} }
x\in\mathbb{R}$
\end{example}

\section{数学符号}\label{sec:math-symbols}

\def\msym#1{$\csname #1\endcsname$ (\cmd{#1})}

\pkgindex{amssymb}
本节我们将接触到形形色色的数学符号,它们是 \LaTeX{} 卓越的数学公式排版能力的基础。\LaTeX{} 默认提供了常用的数学符号,
\pkg{amssymb} 宏包提供了一些次常用的符号。大多数常用的数学符号都能在本章末尾的 \ref{sec:math-tables} 节列出的各个表格里查到。
更多符号可查阅参考文献\cite{symbols}。

\subsection{一般符号}\label{subsec:math-general}

\pinyinindex{xilazimu}{希腊字母 (数学符号)}
\msymindex{infty}
希腊字母符号的名称就是其英文名称,如 \msym{alpha}、\msym{beta} 等等。
大写的希腊字母为首字母大写的命令,如 \msym{Gamma}、\msym{Delta} 等等。
无穷大符号为 \msym{infty}。更多符号命令可参考表 \ref{tbl:math-greek} 和 \ref{tbl:math-misc} 等。

\msymindex{dots,ldots,cdots}
省略号有 \msym{dots} 和 \msym{cdots} 两种形式。它们有各自合适的用途:
\begin{example}
$a_1, a_2, \dots, a_n$ \\
$a_1 + a_2 + \cdots + a_n$
\end{example}

\cmd{ldots} 和 \cmd{dots} 是完全等效的,它们既能用在公式中,也用来在文本里作为省略号(详见 \ref{subsec:punct} 小节)。
除此之外,在矩阵中可能会用到竖排的 \msym{vdots} 和斜排的 \msym{ddots}。

\subsection{指数、上下标和导数}\label{subsec:math-scripts}

\index{^@\texttt\textasciicircum\ (\textit{数学上标})}
\index{_@\texttt\textunderscore\ (\textit{数学下标})}
在 \LaTeX{} 中用 \texttt\textasciicircum 和 \texttt\textunderscore 标明上下标。
注意上下标的内容(子公式)一般需要\textbf{用花括号包裹},否则上下标只对后面的一个符号起作用。
\begin{example}
$p^3_{ij} \qquad
m_\mathrm{Knuth}\qquad
\sum_{k=1}^3 k $\\[5pt]
$a^x+y \neq a^{x+y}\qquad
e^{x^2} \neq {e^x}^2$
\end{example}

\pinyinindex{daoshu}{导数符号\texttt' ($a'$)}
导数符号\texttt'(${}'$)是一类特殊的上标,可以适当连用表示多阶导数,也可以在其后连用上标:
\begin{example}
$f(x) = x^2 \quad f'(x)
= 2x \quad f''^{2}(x) = 4$
\end{example}

\subsection{分式和根式}\label{subsec:frac-sqrt}

\mathindex{frac}
\cmdindex[amsmath]{dfrac,tfrac}
分式使用 \cmd{frac}\marg*{分子}\marg*{分母} 来书写。分式的大小在行间公式中是正常大小,而在行内被极度压缩。
\pkg{amsmath} 提供了方便的命令 \amscmd{dfrac} 和 \amscmd{tfrac},令用户能够在行内使用正常大小的分式,或是反过来。
\begin{example}
In display style:
\[
3/8 \qquad \frac{3}{8}
\qquad \tfrac{3}{8}
\]
In text style:
$1\frac{1}{2}$~hours \qquad
$1\dfrac{1}{2}$~hours
\end{example}

\mathindex{sqrt}
一般的根式使用 \cmd{sqrt}\marg*{...};表示 $n$ 次方根时写成 \cmd{sqrt}\oarg*{\textit{n}}\marg*{...}。
\begin{example}
$\sqrt{x} \Leftrightarrow x^{1/2}
\quad \sqrt[3]{2}
\quad \sqrt{x^{2} + \sqrt{y}}$
\end{example}

\cmdindex[amsmath]{binom}
特殊的分式形式,如二项式结构,由 \pkg{amsmath} 宏包的 \amscmd{binom} 命令生成:
\begin{example}
Pascal's rule is
\[
\binom{n}{k} =\binom{n-1}{k}
+ \binom{n-1}{k-1}
\]
\end{example}

\subsection{关系符}\label{subsec:math-rel}

\msymindex{ne,ge,le,approx,equiv,propto,sim}
\LaTeX{} 常见的关系符号除了可以直接输入的 $=$,$>$,$<$,其它符号用命令输入,常用的有不等号 \msym{ne}、
大于等于号 \msym{ge} 和小于等于号 \msym{le}%
\footnote{倾斜的关系符号 \msym{leqslant} 和 \msym{geqslant} 由 \pkg{amssymb} 提供,见表 \ref{tbl:ams-rel}。}、
约等号 \msym{approx}、等价 \msym{equiv}、正比 \msym{propto}、相似 \msym{sim} 等等。
更多符号命令可参考表 \ref{tbl:math-rel} 以及表 \ref{tbl:ams-rel}。

\mathindex{stackrel}
\LaTeX{} 还提供了自定义二元关系符的命令 \cmd{stackrel},用于将一个符号叠加在原有的二元关系符之上:
\begin{example}
\[
f_n(x) \stackrel{*}{\approx} 1
\]
\end{example}

\subsection{算符}\label{subsec:math-op}

\msymindex{times,div,cdot,pm,mp}
\LaTeX{} 中的算符大多数是二元算符,除了直接用键盘可以输入的 $+$、$-$、$*$、$/$,其它符号用命令输入,
常用的有乘号 \msym{times}、 除号 \msym{div}、点乘 \msym{cdot}、加减号 \msym{pm} / \msym{mp} 等等。
更多符号命令可参考表 \ref{tbl:math-op} 以及表 \ref{tbl:ams-op}。

\msymindex{nabla,partial}
\msym{nabla} 和 \msym{partial} 也是常用的算符,虽然它们不属于二元算符。

\pinyinindex{shuxuehanshu}{数学函数}
\LaTeX{} 将数学函数的名称作为一个算符排版,字体为直立字体。其中有一部分符号在上下位置可以书写一些内容作为条件,
类似于后文所叙述的巨算符。

\begin{table}[htp]
\centering
\caption{\LaTeX{} 作为算符的函数名称一览}\label{tbl:math-functions}
\begin{tabular}{*{5}{p{5em}}}
\hline
\multicolumn{5}{c}{\textbf{不带上下限的算符}} \\
\hline
\cmd{sin} & \cmd{arcsin} & \cmd{sinh} & \cmd{exp} & \cmd{dim} \\
\cmd{cos} & \cmd{arccos} & \cmd{cosh} & \cmd{log} & \cmd{ker} \\
\cmd{tan} & \cmd{arctan} & \cmd{tanh} & \cmd{lg}  & \cmd{hom} \\
\cmd{cot} & \cmd{arg}    & \cmd{coth} & \cmd{ln}  & \cmd{deg} \\
\cmd{sec} & \cmd{csc}    & \\
\hline
\multicolumn{5}{c}{\textbf{带上下限的算符}} \\
\hline
\cmd{lim} & \cmd{limsup} & \cmd{liminf} & \cmd{sup} & \cmd{inf} \\
\cmd{min} & \cmd{max}    & \cmd{det}    & \cmd{Pr}  & \cmd{gcd} \\
\hline
\end{tabular}
\end{table}

\begin{example}
\[
  \lim_{x \rightarrow 0}
  \frac{\sin x}{x}=1
\]
\end{example}

\mathindex{bmod,pmod}
对于求模表达式,\LaTeX{} 提供了 \cmd{bmod} 和 \cmd{pmod} 命令,前者相当于一个二元运算符,后者作为同余表达式的后缀:
\begin{example}
$a\bmod b \\
 x\equiv a \pmod{b}$
\end{example}

\cmdindex[amsmath]{DeclareMathOperator}
如果表 \ref{tbl:math-functions} 中的算符不够用的话,\pkg{amsmath} 允许用户用 \amscmd{Declare\-Math\-Operator}
定义自己的算符,其中带星号的命令定义带上下限的算符:
\begin{verbatim}
\DeclareMathOperator{\argh}{argh}
\DeclareMathOperator*{\nut}{Nut}
\end{verbatim}

\begin{example}
\[\argh 3 = \nut_{x=1} 4x\]
\end{example}

\subsection{巨算符}\label{subsec:math-bigop}

\msymindex{int,oint,sum,prod}
积分号 \msym{int}、求和号 \msym{sum} 等符号称为\textbf{巨算符}。巨算符在行内公式和行间公式的大小和形状有区别。
\begin{example}
In text:
$\sum_{i=1}^n \quad
\int_0^{\frac{\pi}{2}} \quad
\oint_0^{\frac{\pi}{2}} \quad
\prod_\epsilon $ \\
In display:
\[\sum_{i=1}^n \quad
\int_0^{\frac{\pi}{2}} \quad
\oint_0^{\frac{\pi}{2}} \quad
\prod_\epsilon \]
\end{example}

\mathindex{limits,nolimits}
巨算符的上下标位置可由 \cmd{limits} 和 \cmd{nolimits} 调整,前者令巨算符类似 $\lim$ 或求和算符 $\sum$,上下标位于上下方;
后者令巨算符类似积分号,上下标位于右上方和右下方。
\begin{example}
In text:
$\sum\limits_{i=1}^n \quad
\int\limits_0^{\frac{\pi}{2}} \quad
\prod\limits_\epsilon $ \\
In display:
\[\sum\nolimits_{i=1}^n \quad
\int\limits_0^{\frac{\pi}{2}} \quad
\prod\nolimits_\epsilon \]
\end{example}

\cmdindex[amsmath]{substack}
\envindex[amsmath]{subarray}
\pkg{amsmath} 宏包还提供了 \amscmd{substack},能够在下限位置书写多行表达式;\amsenv{subarray}
环境更进一步,令多行表达式可选择居中 (c) 或左对齐 (l):
\begin{example}
\[
\sum_{\substack{0\le i\le n \\
  j\in \mathbb{R}}}
P(i,j) = Q(n)
\]
\[
\sum_{\begin{subarray}{l}
  0\le i\le n \\
  j\in \mathbb{R}
\end{subarray}}
P(i,j) = Q(n)
\]
\end{example}

\subsection{数学重音和上下括号}\label{subsec:math-accents}

\maccindex{dot,ddot,vec,hat}
数学符号可以像文字一样加重音,比如求导符号 $\dot{r}$ (\cmd{dot}\marg*{r})、 $\ddot{r}$ (\cmd{ddot}\marg*{r})、
表示向量的箭头 $\vec{r}$ (\cmd{vec}\marg*{r}) 、表示单位向量的符号 $\hat{\mathbf{e}}$ (\cmd{hat}\marg*{\cmd{mathbf}\marg*{e}}) 等,
详见表 \ref{tbl:math-accents}。使用时要注意重音符号的作用区域,一般应当对某个符号而不是“符号加下标”使用重音:
\begin{example}
$\bar{x_0} \quad \bar{x}_0$\\[5pt]
$\vec{x_0} \quad \vec{x}_0$\\[5pt]
$\hat{\mathbf{e}_x} \quad
 \hat{\mathbf{e}}_x$
\end{example}

\waccindex{overline,underline}
\waccindex{widehat,overrightarrow}
\LaTeX{} 也能为多个字符加重音,包括直接画线的 \cmd{overline} 和 \cmd{underline} 命令(可叠加使用)、宽重音符号 \cmd{widehat}、
表示向量的箭头 \cmd{overrightarrow} 等。后两者详见表 \ref{tbl:math-accents} 和 \ref{tbl:math-arrow-accents} 等。
\begin{example}
$0.\overline{3} =
\underline{\underline{1/3}}$ \\[5pt]
$\hat{XY} \qquad \widehat{XY}$\\[5pt]
$\vec{AB} \qquad
\overrightarrow{AB}$
\end{example}

\waccindex{overbrace,underbrace}
\cmd{overbrace} 和 \cmd{underbrace} 命令用来生成上/下括号,各自可带一个上/下标公式。
\begin{example}
$\underbrace{\overbrace{(a+b+c)}^6
\cdot \overbrace{(d+e+f)}^7}
_\text{meaning of life} = 42$
\end{example}

\subsection{箭头}\label{subsec:math-arrows}

\msymindex{to,rightarrow,leftarrow,uparrow,downarrow}
常用的箭头包括 \cmd{rightarrow} ($\rightarrow$,或 \cmd{to})、\cmd{leftarrow}($\leftarrow$,或 \cmd{gets})等。
更多箭头详见表 \ref{tbl:math-arrows}。

\cmdindex[amsmath]{xleftarrow,xrightarrow}
\pkg{amsmath} 的 \amscmd{xleft\-arrow} 和 \amscmd{xright\-arrow} 命令提供了长度可以伸展的箭头,并且可以为箭头增加上下标:
\begin{example}
\[ a\xleftarrow{x+y+z} b \]
\[ c\xrightarrow[x<y]{a*b*c}d \]
\end{example}

\subsection{括号和定界符}\label{subsec:math-delims}

\LaTeX{} 提供了多种括号和定界符表示公式块的边界,如小括号 $()$、中括号 $[]$、
大括号 $\{\}$(\cmd{\{} \cmd{\}})、尖括号 $\langle \rangle$ (\cmd{langle} \cmd{rangle})等。
更多的括号/定界符命令见表 表 \ref{tbl:math-delims} 和 \ref{tbl:math-large-delims}。
\begin{example}
${a,b,c} \neq \{a,b,c\}$
\end{example}

\mathindex{left,right}
\mathindex{right}
使用 \cmd{left} 和 \cmd{right} 命令可令括号(定界符)的大小可变,在行间公式中常用。\LaTeX{} 会自动根据括号内的公式大小决定定界符大小。
\cmd{left} 和 \cmd{right} 必须成对使用。需要使用单个定界符时,另一个定界符写成 \cmd{left.} 或 \cmd{right.}。
\begin{example}
\[1 + \left(\frac{1}{1-x^{2}}
\right)^3 \qquad
\left.\frac{\partial f}{\partial t}
\right|_{t=0}\]
\end{example}

\mathindex{big,bigg,Big,Bigg}
\mathindex{bigl,biggl,Bigl,Biggl}
\mathindex{bigr,biggr,Bigr,Biggr}
有时我们不满意于 \LaTeX{} 为我们自动调节的定界符大小。这时我们还可以用 \cmd{big}、\cmd{bigg} 等命令生成固定大小的定界符。
更常用的形式是类似 \cmd{left} 的 \cmd{bigl}、\cmd{biggl} 等,以及类似 \cmd{right} 的 \cmd{bigr}、\cmd{biggr} 等
(\cmd{bigl} 和 \cmd{bigr} 不必成对出现)。
\begin{example}
$\Bigl((x+1)(x-1)\Bigr)^{2}$\\
$\bigl( \Bigl( \biggl( \Biggl( \quad
\bigr\} \Bigr\} \biggr\} \Biggr\} \quad
\big\| \Big\| \bigg\| \Bigg\| \quad
\big\Downarrow \Big\Downarrow
\bigg\Downarrow \Bigg\Downarrow$
\end{example}

使用 \cmd{big} 和 \cmd{bigg} 等命令的另外一个好处是:用 \cmd{left} 和 \cmd{right} 分界符包裹的公式块是不允许断行的
(下文提到的 \env{array} 或者 \amsenv{aligned} 等环境视为一个公式块),所以也不允许在多行公式里跨行使用,
而 \cmd{big} 和 \cmd{bigg} 等命令不受限制。

\section{多行公式}\label{sec:multi-eqns}

\subsection{长公式折行}\label{subsec:multline}

通常来讲应当避免写出超过一行而需要折行的长公式。如果一定要折行的话,习惯上优先在等号之前折行,其次在加号、减号之前,再次在乘号、除号之前。
其它位置应当避免折行。

\envindex[amsmath]{multline}
\pkg{amsmath} 宏包的 \amsenv{multline} 环境提供了书写折行长公式的方便环境。
它允许用 \crcmd{} 折行,将公式编号放在最后一行。
多行公式的首行左对齐,末行右对齐,其余行居中。
\begin{example}
\begin{multline}
a + b + c + d + e + f
+ g + h + i \\
= j + k + l + m + n\\
= o + p + q + r + s\\
= t + u + v + x + z
\end{multline}
\end{example}

与表格不同的是,公式的最后一行不写 \crcmd,如果写了,反倒会产生一个多余的空行。

\envindex[amsmath]{multline*}
类似 \amsenv{equation*},\amsenv{multline*} 环境排版不带编号的折行长公式。

\subsection{多行公式}\label{subsec:align}

\pinyinindex{duohanggongshi}{多行公式|(}
更多的情况是,我们需要罗列一系列公式,并令其按照等号对齐。

读者可能阅读过其它手册或者资料,知道 \LaTeX{} 提供了 \env{eqnarray} 环境。它按照等号左边——等号——等号右边呈三列对齐,
但等号周围的空隙过大,加上公式编号等一些 bug,目前已不推荐使用\footnote{\url{http://tug.org/pracjourn/2006-4/madsen/madsen.pdf}}。

\envindex[amsmath]{align}
\index{&@\texttt\& (\textit{单元格/对齐})}
目前最常用的是 \amsenv{align} 环境,它将公式用 \texttt\& 隔为两部分并对齐。分隔符通常放在等号左边:
\begin{example}
\begin{align}
a & = b + c \\
& = d + e
\end{align}
\end{example}

\cmdindex[amsmath]{notag}
\amsenv{align} 环境会给每行公式都编号。我们仍然可以用 \amscmd{notag} 去掉某行的编号。
在以下的例子,为了对齐等号,我们将分隔符放在右侧,并且此时需要在等号后添加一对括号 \texttt\{\texttt\} 以产生正常的间距:
\begin{example}
\begin{align}
a ={} & b + c \\
  ={} & d + e + f + g + h + i
        + j + k + l \notag \\
      & + m + n + o \\
  ={} & p + q + r + s
\end{align}
\end{example}

\amsenv{align} 还能够对齐多组公式,除等号前的 \texttt\& 之外,公式之间也用 \texttt\& 分隔:
\begin{example}
\begin{align}
a &=1  &  b &=2   & c &=3   \\
d &=-1 &  e &=-2  & f &=-5
\end{align}
\end{example}

\envindex[amsmath]{gather}
如果我们不需要按等号对齐,只需罗列数个公式,\amsenv{gather} 将是一个很好用的环境:
\begin{example}
\begin{gather}
a = b + c \\
d = e + f + g \\
h + i = j + k \notag \\
l + m = n
\end{gather}
\end{example}

\envindex[amsmath]{align*,gather*}
\amsenv{align} 和 \amsenv{gather} 有对应的不带编号的版本 \amsenv{align*} 和 \amsenv{gather*}。

\subsection{公用编号的多行公式}\label{subsec:aligned}

\envindex[amsmath]{aligned,gathered}
另一个常见的需求是将多个公式组在一起公用一个编号,编号位于公式的居中位置。为此,\pkg{amsmath} 宏包
提供了诸如 \amsenv{aligned}、\amsenv{gathered} 等环境,与 \env{equation} 环境套用。
以 \texttt{-ed} 结尾的环境用法与前一节不以 \texttt{-ed} 结尾的环境用法一一对应。我们仅以 \amsenv{aligned} 举例:
\begin{example}
\begin{equation}
\begin{aligned}
a &= b + c \\
d &= e + f + g \\
h + i &= j + k \\
l + m &= n
\end{aligned}
\end{equation}
\end{example}

\envindex[amsmath]{split}
\amsenv{split} 环境和 \amsenv{aligned} 环境用法类似,也用于和 \env{equation} 环境套用,
区别是 \amsenv{split} 只能将每行的一个公式分两栏,\amsenv{aligned} 允许每行多个公式多栏。

\pinyinindex{duohanggongshi}{多行公式|)}

\section{数组和矩阵}\label{sec:arrays}

\envindex{array}
\index{&@\texttt\& (\textit{单元格/对齐})}
为了排版二维数组,\LaTeX{} 提供了 \env{array} 环境,用法与 \env{tabular} 环境极为类似,也需要定义列格式,并用 \crcmd{} 换行。
数组可作为一个公式块,在外套用 \cmd{left}、\cmd{right} 等定界符:
\begin{example}
\[ \mathbf{X} = \left(
\begin{array}{cccc}
x_{11} & x_{12} & \ldots & x_{1n}\\
x_{21} & x_{22} & \ldots & x_{2n}\\
\vdots & \vdots & \ddots & \vdots\\
x_{n1} & x_{n2} & \ldots & x_{nn}\\
\end{array} \right) \]
\end{example}

值得注意的是,上一节末尾介绍的 \amsenv{aligned} 等环境也可以用定界符包裹。

\mathindex{left}
\mathindex{right}
我们还可以利用空的定界符排版出这样的效果:
\begin{example}
\[ |x| = \left\{
\begin{array}{rl}
-x & \text{if } x < 0,\\
0 & \text{if } x = 0,\\
x & \text{if } x > 0.
\end{array} \right. \]
\end{example}

\envindex[amsmath]{cases}
不过上述例子可以用 \pkg{amsmath} 提供的 \amsenv{cases} 环境更轻松地完成:
\begin{example}
\[ |x| =
\begin{cases}
-x & \text{if } x < 0,\\
0 & \text{if } x = 0,\\
x & \text{if } x > 0.
\end{cases} \]
\end{example}

\envindex[amsmath]{matrix,pmatrix,bmatrix,Bmatrix,vmatrix,Vmatrix}
我们当然也可以用 \env{array} 环境排版各种矩阵。\pkg{amsmath} 宏包还直接提供了多种排版矩阵的环境,包括不带定界符的 \amsenv{matrix},
以及带各种定界符的矩阵 \amsenv{pmatrix}($\bigl($)、\amsenv{bmatrix}($\bigl[$)、\amsenv{Bmatrix}($\bigl\{$)、
\amsenv{vmatrix}($\bigl\vert$)、\amsenv{Vmatrix}($\bigl\Vert$)。使用这些环境时,无需给定列格式%
\footnote{事实上这些矩阵内部也是用 \env{array} 环境生成的,列格式默认为 \texttt{*\{\Arg{n}\}\{c\}},\Arg{n} 默认为 10;
\amsenv{cases} 内部是一个列格式为 \texttt{@\{\}l@\{\cmd{quad}\}l@\{\}} 的 \env{array} 环境。}:
\begin{example}
\[
\begin{matrix}
1 & 2 \\ 3 & 4
\end{matrix} \qquad
\begin{bmatrix}
x_{11} & x_{12} & \ldots & x_{1n}\\
x_{21} & x_{22} & \ldots & x_{2n}\\
\vdots & \vdots & \ddots & \vdots\\
x_{n1} & x_{n2} & \ldots & x_{nn}\\
\end{bmatrix}
\]
\end{example}

在矩阵中的元素里排版分式时,一来要用到 \amscmd{dfrac} 等命令,二来行与行之间有可能紧贴着,这时要用到
\ref{subsec:tabular-colht} 小节的方法来调节间距:
\begin{example}
\[
\mathbf{H}=
\begin{bmatrix}
\dfrac{\partial^2 f}{\partial x^2} &
\dfrac{\partial^2 f}
      {\partial x \partial y} \\[8pt]
\dfrac{\partial^2 f}
      {\partial x \partial y} &
\dfrac{\partial^2 f}{\partial y^2}
\end{bmatrix}
\]
\end{example}

\section{公式中的间距}\label{sec:math-space}

\cmdindex{quad,qquad}
\index{,@\cmd{,}} % The only one which cannot use \cmdindex, oops..
\mathindex{:,;,"!}
前文提到过,绝大部分时候,数学公式中各元素的间距是根据符号类型自动生成的,需要我们手动调整的情况极少。
我们已经认识了两个生成间距的命令 \cmd{quad} 和 \cmd{qquad}。在公式中我们还可能用到的间距包括 \cmd{,}、\cmd{:}、\cmd{;}
以及负间距 \cmd{!},其中 \cmd{quad} 、 \cmd{qquad} 和 \cmd{,} 在文本和数学环境中可用,后三个命令只用于数学环境。
文本中的 \cmd{\textvisiblespace} 也能使用在数学公式中。

\newdimen\testdimen \testdimen=\fontdimen6\textfont2 \divide\testdimen18\relax
\begin{center}
\begin{tabularx}{0.9\textwidth}{*{3}{>{\raggedright\arraybackslash}X}|*{3}{>{\raggedright\arraybackslash}X}}
 \hline
 无额外间距  &                          & $a a$        &
 \cmd{,}     & \demowidth{3\testdimen}  & $a\,a$       \\
 \cmd{quad}  & \demowidth{18\testdimen} & $a\quad a$   &
 \cmd{:}     & \demowidth{4\testdimen}  & $a\:a$       \\
 \cmd{qquad} & \demowidth{36\testdimen} & $a\qquad a$  &
 \cmd{;}     & \demowidth{5\testdimen}  & $a\;a$       \\
 \cmd{\textvisiblespace}     & \demowidth{\fontdimen2\textfont0} & $a\ a$ &
 \cmd{!}     & $-$\demowidth{3\testdimen} & $a\!a$     \\
 \hline
\end{tabularx}
\end{center}

一个常见的用途是修正积分的被积函数$f(x)$和微元$\mathrm{d}x$之间的距离。注意微元里的$\mathrm{d}$用的是直立体:
\begin{example}
\[
\int_a^b f(x)\mathrm{d}x
\qquad
\int_a^b f(x)\,\mathrm{d}x
\]
\end{example}

另一个用途是生成多重积分号。如果我们直接连写两个 \cmd{int},之间的间距将会过宽,此时可以使用负间距 \cmd{!} 修正之。
不过 \pkg{amsmath} 提供了更方便的多重积分号,如二重积分 \amscmd{iint}、三重积分 \amscmd{iiint} 等。
\begin{example}
\newcommand\diff{\,\mathrm{d}}
\begin{gather*}
\int\int f(x)g(y)
\diff x \diff y \\
\int\!\!\!\int
f(x)g(y) \diff x \diff y \\
\iint f(x)g(y) \diff x \diff y \\
\iint\quad \iiint\quad \idotsint
\end{gather*}
\end{example}

\section{数学符号的字体控制}\label{sec:math-fonts}

\subsection{数学字母字体}\label{subsec:math-alpha}

\mathindex{mathrm,mathsf,mathtt,mathit,mathbf,mathcal,mathnormal}
\cmdindex[amssymb]{mathbb,mathfrak}
\cmdindex[mathrsfs]{mathscr}
\LaTeX{} 允许一部分数学符号切换字体,主要是拉丁字母、数字、大写希腊字母以及重音符号等。
表 \ref{tbl:math-fonts} 给出了切换字体的命令。某一些命令需要字体宏包的支持。
\begin{example}
$\mathcal{R} \quad \mathfrak{R}
\quad \mathbb{R}$
\[\mathcal{L}
= -\frac{1}{4}F_{\mu\nu}F^{\mu\nu}\]
$\mathfrak{su}(2)$ and
$\mathfrak{so}(3)$ Lie algebra
\end{example}

\begin{table}[htp]
\centering
\caption{数学字母字体} \label{tbl:math-fonts}
\begin{tabular}{*{3}{l}}
\hline
\textbf{示例}    & \textbf{命令} & \textbf{依赖的宏包}\\
\hline
$\mathnormal{ABCDE abcde 1234}$  & \cmd{mathnormal}\marg*{\ldots}&       \\
$\mathrm{ABCDE abcde 1234}$      & \cmd{mathrm}\marg*{\ldots}    &       \\
$\mathit{ABCDE abcde 1234}$      & \cmd{mathit}\marg*{\ldots}    &       \\
$\mathbf{ABCDE abcde 1234}$      & \cmd{mathbf}\marg*{\ldots}    &       \\
$\mathsf{ABCDE abcde 1234}$      & \cmd{mathsf}\marg*{\ldots}    &       \\
$\mathtt{ABCDE abcde 1234}$      & \cmd{mathtt}\marg*{\ldots}    &       \\
$\CMcal{ABCDE}$                  & \cmd{mathcal}\marg*{\ldots}   & 仅提供大写字母 \\
\hline
$\EuScript{ABCDE}$               & \cmd{mathcal}\marg*{\ldots}   & \pkg{eucal} 仅提供大写字母 \\
$\mathscr{ABCDE}$                & \cmd{mathscr}\marg*{\ldots}   & \pkg{mathrsfs} 仅提供大写字母\\
$\mathfrak{ABCDE abcde 1234}$    & \cmd{mathfrak}\marg*{\ldots}  & \pkg{amssymb} 或 \pkg{eufrak}  \\
$\mathbb{ABCDE}$                 & \cmd{mathbb}\marg*{\ldots}    & \pkg{amssymb} 仅提供大写字母 \\
\hline
\end{tabular}
\end{table}

\pkgindex{unicode-math}
如果需要为所有的数学符号切换字体,则需要直接调用数学字体宏包(见 \ref{subsec:font-pkgs} 小节)。在 \texttt{xelatex} 或者 \texttt{lualatex} 编译命令下,还可以使用基于 \pkg{fontspec} 宏包的 \pkg{unicode-math} 宏包配置 Unicode 数学字体,详见 \ref{subsec:unicode-math} 小节。

\subsection{数学符号的尺寸}\label{subsec:math-styles}

\mathindex{displaystyle,textstyle,scriptstyle,scriptscriptstyle}
数学符号按照符号排版的位置规定尺寸,从大到小包括行间公式尺寸、行内公式尺寸、上下标尺寸、次级上下标尺寸。
除了字号有别之外,行间和行内公式尺寸下的巨算符也使用不一样的大小。\LaTeX{} 为每个数学尺寸指定了一个切换的命令,见 \ref{tbl:math-size}。
\begin{table}[htp]
\centering
\caption{数学符号尺寸}\label{tbl:math-size}
\begin{tabular}{lll}
 \hline
 \textbf{命令} & \textbf{尺寸} & \textbf{示例} \\
 \hline
\cmd{displaystyle}      & 行间公式尺寸   & $\displaystyle\sum a $\\
\cmd{textstyle}         & 行内公式尺寸   & $\textstyle\sum a $ \\
\cmd{scriptstyle}       & 上下标尺寸     & $\scriptstyle a$ \\
\cmd{scriptscriptstyle} & 次级上下标尺寸 & $\scriptscriptstyle a$\\
 \hline
\end{tabular}
\end{table}

我们通过以下示例对比行间公式和行内公式的区别。在分式中,分子分母默认为行内公式尺寸,示例中将分母切换到行间公式尺寸:
\begin{example}
\[
r = \frac
  {\sum_{i=1}^n (x_i- x)(y_i- y)}
  {\displaystyle \left[
    \sum_{i=1}^n (x_i-x)^2
    \sum_{i=1}^n (y_i-y)^2
  \right]^{1/2} }
\]
\end{example}

\subsection{加粗的数学符号}\label{subsec:math-bold}

在 \LaTeX{} 中为符号切换数学字体并不十分自由,只能通过 \cmd{mathbf} 等有限的命令切换字体。比如想得到粗斜体的符号,就没有现成的命令%
\footnote{国内使用粗斜体符号表示矢量,见 GB 3102.11--93。};再比如 \cmd{mathbf} 只能改变拉丁字母和大写希腊字母,小写希腊字母就没有用。

\cmdindex{boldmath}
\LaTeX{} 提供了一个命令 \cmd{boldmath} 令用户可以将整套数学字体切换为粗体版本(前提是数学字体宏包本身支持粗体符号)。但这个命令\textbf{只能在公式外使用}:
\begin{example}
$\mu, M \qquad
\mathbf{\mu}, \mathbf{M}$
\qquad {\boldmath$\mu, M$}
\end{example}

\cmdindex[amsmath]{boldsymbol}
\pkg{amsmath} 提供了一个 \amscmd{boldsymbol} 命令(由调用的 \pkg{amsbsy} 宏包提供),用于打破 \cmd{boldmath} 的限制,
在公式内部将一部分符号切换为粗体。
\begin{example}
$\mu, M \qquad
\boldsymbol{\mu}, \boldsymbol{M}$
\end{example}

\pkgindex{bm}
\cmdindex[bm]{bm}
然而在许多数学字体宏包中,定界符、巨算符等一些符号本身没有粗体版本,\amscmd{boldsymbol} 也得不到粗体。
\LaTeX{} 工具宏集之一的 \pkg{bm} 宏包可以用 \cmd{bm} 命令生成“伪粗体”,作为粗体符号的一个解决方案。这里不做过多介绍,
详情请参考 \pkg{bm} 宏包的帮助文档。

\section{定理环境}\label{sec:theorems}

\subsection{\LaTeX{} 原始的定理环境}\label{subsec:latex-theorems}

\cmdindex{newtheorem}
使用 \LaTeX{} 排版数学和其他科技文档时,会接触到大量的定理、证明等内容。
\LaTeX{} 提供了一个基本的命令 \cmd{newtheorem} 提供定理环境的定义:
\begin{command}
\cmd{newtheorem}\marg{theorem environment}\marg{title}\oarg{section-level} \\
\cmd{newtheorem}\marg{theorem environment}\oarg{counter}\marg{title}
\end{command}

\Arg{theorem environment} 为定理环境的名称。原始的\LaTeX{} 里\textbf{没有现成的定理环境},
不加定义而直接使用很可能会出错。\Arg{title} 是定理环境的标题(“定理”,“公理”等)。

定理的序号由两个可选参数之一决定,它们\textbf{不能同时使用}:
\begin{itemize}
  \item \Arg{section level} 为章节级别,如 \texttt{chapter}、\texttt{section} 等,定理序号成为章节的下一级序号;
  \item \Arg{counter} 为用 \cmd{newcounter} 自定义的计数器名称(详见 \ref{sec:counters} 节),定理序号由这个计数器管理。
\end{itemize}
如果两个可选参数都不用的话,则使用默认的与定理环境同名的计数器。

在以下示例代码中,我们定义了一个 \env{mythm} 环境,其序号设为 \texttt{section} 的下一级序号。
注意 \env{mythm} 环境的可选参数以及 \cmd{label} 的用法:
\begin{example}
\newtheorem{mythm}{My Theorem}[section]
\begin{mythm}\label{thm:light}
The light speed in vacuum
is $299,792,458\,\mathrm{m/s}$.
\end{mythm}
\begin{mythm}[Energy-momentum relation]
The relationship of energy,
momentum and mass is
\[E^2 = m_0^2 c^4 + p^2 c^2\]
where $c$ is the light speed
described in theorem \ref{thm:light}.
\end{mythm}
\end{example}

\subsection{\pkg{amsthm} 宏包}\label{subsec:amsthm}

\LaTeX{} 默认的定理环境格式为粗体标签、斜体正文、定理名用小括号包裹。如果需要修改格式,
则要依赖其它的宏包,如 \pkg{amsthm}、\pkg{ntheorem} 等等。本小节简单介绍一下 \pkg{amsthm} 的用法。

\pkgindex{amsthm}
\cmdindex[amsthm]{theoremstyle}
\pkg{amsthm} 提供了 \cmd{theo\-rem\-style} 命令支持定理格式的切换,
在用 \cmd{new\-theo\-rem} 命令定义定理环境之前使用。
\pkg{amsthm} 预定义了三种格式用于 \cmd{theo\-rem\-style}:\texttt{plain} 和 \LaTeX{} 原始的格式一致;
\texttt{defi\-ni\-tion} 使用粗体标签、正体内容;\texttt{remark} 使用斜体标签、正体内容。

另外 \pkg{amsthm} 还支持用带星号的 \cmd{new\-theo\-rem*} 定义不带序号的定理环境:
\begin{verbatim}
\theoremstyle{definition} \newtheorem{law}{Law}
\theoremstyle{plain} \newtheorem{jury}[law]{Jury}
\theoremstyle{remark} \newtheorem*{mar}{Margaret}
\end{verbatim}
\theoremstyle{definition} \newtheorem{law}{Law}
\theoremstyle{plain} \newtheorem{jury}[law]{Jury}
\theoremstyle{remark} \newtheorem*{mar}{Margaret}

以上例子定义的 \env{jury} 环境与 \env{law} 环境共用编号,\env{mar} 环境不编号:
\begin{example}
\begin{law}\label{law:box}
Don't hide in the witness box.
\end{law}
\begin{jury}[The Twelve]
It could be you! So beware and
see law~\ref{law:box}.\end{jury}
\begin{jury}
You will disregard the last
statement.\end{jury}
\begin{mar}No, No, No\end{mar}
\begin{mar}Denis!\end{mar}
\end{example}

\pkg{amsthm} 还支持使用 \cmd{new\-theorem\-style} 命令自定义定理格式,
更为方便使用的是 \pkg{ntheorem} 宏包。感兴趣的读者可参阅它们的帮助文档。

\subsection{证明环境和证毕符号}\label{subsec:proof}

\envindex[amsthm]{proof}
\pkg{amsthm} 还提供了一个 \env{proof} 环境用于排版定理的证明过程。\env{proof} 环境末尾
自动加上一个 \qedsymbol{} 证毕符号:
\begin{example}
\begin{proof}
For simplicity, we use
\[
E=mc^2
\]
That's it.
\end{proof}
\end{example}

\cmdindex[amsthm]{qedhere}
如果行末是一个不带编号的公式,\qedsymbol{} 符号会另起一行,
这时可使用 \cmd{qedhere} 命令将 \qedsymbol{} 符号放在公式末尾:
\begin{example}
\begin{proof}
For simplicity, we use
\[
E=mc^2 \qedhere
\]
\end{proof}
\end{example}

\cmd{qedhere} 对于 \amsenv{align*} 等环境也有效:
\begin{example}
\begin{proof}
Assuming $\gamma
= 1/\sqrt{1-v^2/c^2}$, then
\begin{align*}
E &= \gamma m_0 c^2  \\
p &= \gamma m_0v \qedhere
\end{align*}
\end{proof}
\end{example}

在使用带编号的公式时,建议最好\textbf{不要在公式末尾使用} \cmd{qedhere} 命令。
对带编号的公式使用 \cmd{qedhere} 命令会使 \qedsymbol{} 符号放在一个难看的位置,紧贴着公式:
\begin{example}
\begin{proof}
For simplicity, we use
\begin{equation}
E=mc^2.\qedhere
\end{equation}
\end{proof}
\end{example}

在 \amsenv{align} 等环境中使用 \cmd{qedhere} 命令会使 \qedsymbol{} 盖掉公式的编号;使用 \env{equation} 嵌套
\amsenv{aligned} 等环境时,\cmd{qedhere} 命令会将 \qedsymbol{} 直接放在公式后。这些位置都不太正常。

证毕符号 \qedsymbol{} 本身被定义在命令 \cmd{qedsymbol} 中,如果有使用实心符号作为证毕符号的需求,需要自行用 \cmd{re\-new\-comm\-and}
命令修改(用法见 \ref{subsec:newcmd} 小节)\footnote{注意,这个改法\textbf{只对 \pkg{amsthm} 宏包适用}。
其它宏包如 \pkg{ntheorem} 等须参考帮助文档里提供的修改方法。}。
我们可以利用在 \ref{subsec:rules} 小节介绍的标尺盒子来生成一个适当大小的“实心矩形”:
\begin{example}
\renewcommand{\qedsymbol}%
  {\rule{1ex}{1.5ex}}
\begin{proof}
For simplicity, we use
\[
E=mc^2 \qedhere
\]
\end{proof}
\end{example}

\endinput