-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchapter02.tex
660 lines (561 loc) · 32.3 KB
/
chapter02.tex
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
\chapter{\LaTeX\ 入门}
\section*{开篇语}
欢迎来到\LaTeX\ 入门章!在这一章中,我们将学习\LaTeX\ 的基本用法,并通过一些示例代码来展示\LaTeX\
的基本用法及强大的功能。
在本章中,我们将学习到:
\begin{itemize}[label=\twemoji{open book}]
\item \LaTeX\ 中的一些基本概念,比如文档类型,文档结构,空格与换行的处理等等
\item \LaTeX\ 中环境的概念,以及一些常用的环境的用法
\item 如何插入和格式化图表、表格和图片
\item 如何插入及排版数学公式
\item 如何生成自动化的目录、引用和索引
\end{itemize}
通过学习这些基础内容,我们将能够掌握\LaTeX\ 的基本用法,为后续更高级的排版需求打下坚实的基础。让我们一起开始\LaTeX\ 之旅,探索这款强大工具的基础知识吧!
\section{Hello World}
按惯例,我们首先在文本编辑器中写一个\texinline{hello world},让\LaTeX\ 先用起来。如果是完全新手的话,建议首先使用发行版自带的编辑器,或者是overleaf的在线编辑器,因为对运行环境的集成度高,所以容易上手。
\begin{texlst}[listing only, label={code:hello}, nameref={Hello World示例代码}]
\documentclass{article}
\begin{document}
Hello World
\end{document}
\end{texlst}
将上面的代码输入到编辑器中,然后编译(在发行版的编辑器会有编译的按钮),完成之后就会看到生成的PDF文件中显示的“Hello
World”。
下面是对于这段代码的说明:
\begin{enumerate}
\forcsvlist{\item}{
第一个语句\texinline{\documentclass{article}}是指定文档类型,这里指定的是\texinline{artile}类型。,
\texinline{\begin{document}}和\texinline{\end{document}}之间是正文区。,
文档类型与正文之间称为导言区,这里可以加载其他宏包或者进行一些设定,这个示例里面这些都没有,我们会在后面看到。
}
\end{enumerate}
\section{文档类型}\label{sec:doctype}
文档类型是\LaTeX\ 基于\TeX\
引擎做的一层抽象,使得文档内容与格式能够分离,这样我们写文档的时候可以更加专注于内容。但是实际上除非是有一个完全合乎规范的文档模板,写作者本身还是需要具备一定的\LaTeX
知识才能顺利地写作的。
\LaTeX\ 内置了数种文档类型,其中常用的:\texinline{article}、\texinline{report}和\texinline{book}。各个文档类型的适用范围如下表:
\noindent
\begin{table}[ht]
\centering
\begin{tabular}{lll} \toprule
文档类型 & 说明 & 支持的章节标号 \\ \midrule
book & 长篇书籍 & part, chapter, section, subsection, subsubsection \\
report & 中篇报告 & chapter, section, subsection, subsubsection \\
article & 短篇文章 & section, subsection, subsubsection \\
\bottomrule
\end{tabular}
\caption{\LaTeX\ 内置常用文档类型}
\end{table}
回到``Hello World''的示例,如果把“Hello
World”改成“你好,世界”,你将看不到相应的输出。这是因为\texinline{article}文档类型默认的字体并不支持中文,我们可以通过设置正确的字体,或者选择一个支持中文的文档类型。这里我们简单介绍一下\texinline{ctex}宏包,它提供了四种文档类型:\texinline{ctexart}、\texinline{ctexrep}、\texinline{ctexbook}及\texinline{ctexbeamer},前面三个是基于\LaTeX
的基础文档类型做的汉化版本,ctexbeamer则是用来制作幻灯片的。
美国数学学会 (\AmS)也提供了一套文档类型,分别为\texinline{amsart}和 \texinline{amsbook},对数学公式的排版提供了更多的支持。当然还有很多很多的文档类型,可以根据自身的需要去使用。
\section{文档结构}
在\nameref{sec:doctype}一节中,我们了解了文档有章节之类的结构,除此之外,文档还有标题,作者,日期以及目录这些信息。
标题、作者及日期的申明放在导言区,命令分别是\texinline{\title}、\texinline{\author}、\texinline{\date}。申明了这些信息后不会直接显示,需要在正文区用\texinline{\maketitle}命令来显示这些信息。
注意,如果有多位作者,名字之间用\texinline{\and}命令来连接。另外,日期可以用\texinline{\today}来生成当天的日期。
目录的生成也很简单,用\texinline{\tableofcontents}命令就可以自动生成。如果某些章节你不希望出现在目录里,可以用相应的章节命令的星号版本。
下面是一个简单的示例:
\begin{texlst}[listing only]
%!tex program = lualatex
\documentclass{ctexart}
\title{我的巨著}
\author{大象同学 \and 我自己}
\date{\today}
\begin{document}
\maketitle
\tableofcontents
\section{我有一个伟大的想法}
balabala
\section*{这个不会出现在目录里面}
这个小节标题不会有编号,只有标题。
\end{document}
\end{texlst}
\clearpage
\section{页面布局}
\drawpage
上面的布局图是用\texinline{layouts}宏包的\texinline{\drawpage}命令绘制的。与我们的直观理解类似,一个页面分为页眉、页脚、边注区及正文区,每个区域的尺寸及格式都是可以单独调整与设置的,这些内容我们后面再深究。
\section{\LaTeX\ 的三种语句} \label{sec:text type}
在 \LaTeX\ 编辑环境中,源文件由三种基本类型的语句构成:文本、命令和注释。每种语句在文档的编译和最终输出中扮演着不同的角色。理解这三种语句的区别和作用是掌握\LaTeX\ 的关键。
\subsection{文本}
文本是构成 \LaTeX\
文档主体的主要成分,它包括所有的字母、数字、标点符号和空格,用于传达信息和叙述。文本在源文件中直接输入,不包含任何特殊字符或指令。
\nameref{code:hello}中的\enquote{hello
world}就是文本。
\subsection{命令}
命令是 \LaTeX\ 的强大之处,它们用于执行特定的格式化任务或插入特殊符号。命令总是以反斜杠 \texinline{\} 开头,后跟命令名。例如,
\texinline{\section{Introduction}}用于创建一个章节标题,\texinline{\alpha} 用于插入希腊字母\alpha
。命令可以有参数,参数用花括号 \texinline|{}| 包围。命令还可以有可选参数,可选参数一般放在\texinline{[]}中。如下例:
\begin{texlst}[listing and text]
\framebox[3cm]{这是一个盒子}
\end{texlst}
命令的名称有两种:
\begin{enumerate}
\item 全部是字母,长度不限
\item
单个符号,比如\texinline{\#}、\texinline{\^}、\texinline{\\}等等,用于输出一些特殊的字符或者实现一些特殊排版功能。
\end{enumerate}
\subsection{注释}
注释目前还没有遇到,注释的作用是向文档中添加说明或解释,这些内容在编译时不会被包含在最终的PDF或其他格式的输出文件中。注释对于理解代码、临时移除代码段或测试文档中的特定部分非常有用。注释用\%开始。
\begin{texlst}[label={code:comments}]
这是可见文本
% 这是注释不可见
\end{texlst}
\subsection{小结}
文本、命令和注释构成了 \LaTeX\ 源文件的基础,它们协同工作,使你能够创建结构化、格式化丰富且专业的文档。掌握这三种语句的使用,是成为一名高效 \LaTeX\ 用户的关键。通过实践,你将学会如何将简单的文本转换成复杂且美观的文档,同时利用命令来控制文档的布局和样式,以及使用注释来保持代码的清晰和可维护性。
\section{\LaTeX\ 中的特殊字符}
在\nameref{sec:text type}中,讲到注释是以\%开始的,那么很自然的一个疑问,\%号本身该如何输出呢?这就引出了我们本节的内容特殊字符。特殊字符分为两类,一类是键盘上有字符,这种特殊字符由于用作控制字符,所以不能直接输入。第二种就是键盘上本来就没有的符号,比如\alpha\beta
等等。
\subsection{控制字符}
在 \LaTeX\ 的世界里,有几个字符因其特殊的功能而不能直接用于普通文本中。它们被用作命令、环境的界定符或格式控制的标志。下面列出了这些特殊字符以及如何在需要时正确地将它们作为普通文本的一部分插入到文档中。
\begin{table}[H]
\centering
\begin{tabular}{lll} \toprule
符号 & 作用 & 输出方式 \\ \midrule
\verb|#| & 宏参数定义 & \texinline{\#} \\
\verb|$| & 开启数学环境 & \texinline{\$} \\
\verb|^| & 用于数学环境中表示上标 & \texinline{\^{}} \\
\verb|_| & 用于数学环境中表示下标 & \texinline{\_} \\
\verb|&| & 用于一些环境中表示对齐 & \texinline{\&} \\
\verb|{}| & 成对出现,表示范围,或者作用域 & \texinline{\{ \}} \\
\verb|~| & 表示一个不可断行的空格 & \texinline{\~{}} \\
\verb|\| & 开始一个命令 & \texinline{\textbackslash} \\ \bottomrule
\end{tabular}
\caption{控制字符}
\end{table}
上面的输出方式中,有两个在后面加上了\texinline|{}|,这种写法是因为这些命令会将直接将紧随命令之后或者紧随命令空格后的一个字符当做参数,\texinline|{}|表示一个内容为空的范围,不会有任何字符成为参数,也就可以输出符号本身。\texinline|\^ a|和\texinline|\^a|都会输出\^a。
\subsection{其他特殊字符}
\LaTeX
的强大之处在于它能够轻松地处理各种复杂的符号和字符,尤其适合于学术和科研领域的文档创作。当涉及到数学、物理、化学等学科时,希腊字母和专业符号的使用尤为频繁。幸运的是,\LaTeX\ 为这些特殊字符提供了简洁的命令。
\subsubsection{输入希腊字母}
希腊字母在 \LaTeX\ 中非常常见,无论是用于变量、函数命名还是在公式中表示特定的物理量或数学概念。要插入希腊字母,你只需要在反斜杠后面加上字母的名字即可。
\begin{texlst}[listing and text]
\begin{itemize}[nosep]
\item \alpha
\item \beta
\item \gamma\quad\Gamma
\item \delta\quad\Delta
\item \epsilon
\item \zeta
\item \eta
\item \theta\quad\Theta
\item \iota
\item \kappa
\item \lambda\quad\Lambda
\item \mu
\item \nu
\item \xi\quad\Xi
\item \pi\quad\Pi
\item \rho
\item \sigma\quad\Sigma
\item \tau
\item \upsilon\quad\Upsilon
\item \phi\quad\Phi
\item \chi
\item \psi\quad\Psi
\item \omega\quad\Omega
\end{itemize}
\end{texlst}
\pagebreak
\subsubsection{输入数学符号}
除了希腊字母,\LaTeX\ 还提供了大量的数学符号。例如:
\footnote{示例代码中用的\texinline{itemize}列表环境后面马上会讲到。}
\begin{texlst}[listing and text]
\begin{itemize}[nosep]
\item $\times$
\item $\div$
\item $\pm$
\item $\neq$
\item $\leq$
\item $\geq$
\item $\approx$
\item $\infty$
\item $\int$
\item $\sum$
\item $\prod$
\item $\sqrt{x}$
\item $\frac{a}{b}$
\end{itemize}
\end{texlst}
注意数学符号需要在数学模式下才能输入,否则会出错,数学符号优雅的输出是\LaTeX
很重要的一个特性,具体的内容到数学公式的部分再细讲。
\vfill
\pagebreak
\subsubsection{其他特殊符号}
对于其他特殊字符,\LaTeX\ 同样提供了一系列命令。例如:
\begin{texlst}[listing and text]
\begin{itemize}[nosep]
\item \dag
\item \ddag
\item \S
\item \P
\item \copyright
\item \pounds
\item \ae
\item \oe
\item \AA
\item \aa
\end{itemize}
\end{texlst}
\LaTeX\ 中还提供了一个手册,可以快速查询各种各样的符号的输出方法,在命令行中输入以下命令来查阅。
\begin{shellcmd}
texdoc symbols
\end{shellcmd}
\subsection{小结}
\LaTeX\ 为输入特殊字符提供了极其丰富的支持,无论是希腊字母、数学符号还是其他领域常用的字符。通过简单的命令,你可以轻松地将这些符号融入你的文档中,使你的文本既专业又美观。掌握这些命令将极大地提升你使用 \LaTeX\ 创作学术和科研文档的能力。
\section{空格}
在 \LaTeX\ 中,空格不仅仅是文本中的空白区域;它们是文档格式化的重要组成部分,用于控制单词间的间隔、段落内的行距,甚至是数学公式中的符号间隔。理解 \LaTeX\ 如何处理空格,以及如何控制空格的大小和位置,是制作高质量文档的关键。
\subsection{自动空格处理}
\LaTeX\ 通常自动管理文本中的空格。例如,无论你在源文件中输入多少空格,\LaTeX\ 通常只会显示一个标准的单词间隔。同样,连续的空格会被合并成一个,多余的空格会被忽略。这意味着你不必担心源文件中的空格数量,\LaTeX\ 会自动调整以保持良好的阅读体验。
\begin{texlst}
这是 关于空格 的示例。
\end{texlst}
\subsection{空格大小}
\LaTeX
中的空格的长度与字体的大小相关。在印刷术语中,把一个大写字母M的宽度称为1em,一个小写字母x的高度称为1ex,1em相当于字体的大小。比如\LaTeX
正文的默认大小为10pt,也就是1em约等于10pt。另外,1en等于1em的一半(n是半个m)。在\LaTeX
中宽空格等于1em,可以用\texinline{\quad}来输出。另外,在数学环境下,用mu(math unit)这个单位,$1\text{em}=18\text{mu}$。在\LaTeX
中空白分别可分行与不可分行两种,区别就在于它们所在的地方能不能被分割两行。
下表是\LaTeX\ 中提供的空格的命令以及相应的大小。
\begin{table}[htpb]
\centering
\begin{tabular}{lrl} \toprule
空格命令 & 长度 & 备注 \\ \midrule
\verb|\,| & $3\text{mu}$ & \Rightarrow\,\Leftarrow \\
\verb|\>或\:| & $4\text{mu}$ & \Rightarrow\>\Leftarrow \\
\verb|\;| & $5\text{mu}$ & \Rightarrow\;\Leftarrow \\
\verb|\|\textvisiblespace & $6\text{mu}$ & \Rightarrow\ \Leftarrow \\
\verb|\enskip| & $9\text{mu}$ & \Rightarrow\enskip \Leftarrow \\
\verb|\!| & $-3\text{mu}$ & \Rightarrow\!\Leftarrow \\
\verb|\quad| & $18\text{mu}$ & \Rightarrow\quad \Leftarrow \\
\verb|\qquad| & $36\text{mu}$ & \Rightarrow\qquad \Leftarrow \\ \bottomrule
\end{tabular}
\caption{可分行空白}
\end{table}
\begin{table}[H]
\centering
\begin{tabular}{lrl} \toprule
空格命令 & 长度 & 备注 \\ \midrule
\verb|\thinspace| & $3\text{mu}$ & \Rightarrow\thinspace \Leftarrow \\
\verb|\medspace| & $4\text{mu}$ & \Rightarrow\medspace \Leftarrow \\
\verb|\thickspace| & $5\text{mu}$ & \Rightarrow\thickspace \Leftarrow \\
\verb|~| & $6\text{mu}$ & \Rightarrow~\Leftarrow \\
\verb|\enspace| & $9\text{mu}$ & \Rightarrow\enspace \Leftarrow \\
\verb|\negthinspace| & $-3\text{mu}$ & \Rightarrow\negthinspace \Leftarrow \\
\verb|\negmedspace| & $-4\text{mu}$ & \Rightarrow\negmedspace \Leftarrow \\
\verb|\negthickspace| & $-5\text{mu}$ & \Rightarrow\negthickspace \Leftarrow \\
\bottomrule
\end{tabular}
\caption{不可分行空白}
\end{table}
你可能会觉得\texinline{\|\textvisiblespace|} 这个命令是多此一举,因为用空格就直接可以输出一个空格,这个命令还有存在的必要吗?我们来看下面一个示例:
\begin{texlst}[listing and text]
\LaTeX\ is a typesetting system.
\LaTeX\ is a typesetting system.
\end{texlst}
可以看到第一个写法\LaTeX
与is中间的空格消失了,因为空格或者其他非字母的字符是命令的界定符(除了几个特殊的\TeX\
命令),在一个命令之后的空格就不会再输出空格。所以需要用\texinline{\|\textvisiblespace|} 来解决这个问题。
\subsection{数学模式中的空格}
在数学模式下,LaTeX
会自动调整符号和表达式之间的空格,以反映数学运算的语义。例如,函数名和变量之间会自动添加适当的空间。然而,你仍然可以使用上述命令来微调数学公式的布局。
\begin{texlst}[listing and text]
$a^2+b^2=c^2$
\end{texlst}
\subsection{避免自动空格处理}
有时你可能不希望 \LaTeX\ 自动合并或忽略空格,例如在代码示例或诗歌中。在这种情况下,可以使用 \texinline{verbatim} 环境,它会原样保留所有的空格和换行。
\subsection{小结}
\LaTeX\ 的空格处理机制提供了灵活性和控制力,使你能够在保持文档整洁的同时,对文本布局进行精确调整。通过理解 \LaTeX
中空格的处理机制,你可以创造出既美观又专业,同时符合特定需求的文档。
\section{换行和分段}
在 \LaTeX
编辑过程中,掌握如何控制文本的换行和分段是非常重要的技能,它直接影响到文档的可读性和美观度。不同于大多数文字处理器,\LaTeX\ 通常自动处理文本的布局,但有时你可能需要手动干预。
\subsection{自动换行}
\LaTeX\ 默认会自动进行换行和段落对齐。只要你在输入文本时按回车键结束一行并开始新的一行,\LaTeX
会将这些视为逻辑上的新行,但在输出的文档中并\emph{不会形成可见的换行符}。LaTeX 会根据页面宽度和段落内容自动进行换行。
\subsection{手动换行}
如果你需要在特定位置强制换行,可以使用双反斜杠 \texinline{\\} 或者 \texinline{\newline} 命令。
\texinline{\\*}命令也是强制换行,但是防止在此处分页。\texinline{\newline}的效果与\texinline{\\}一样,因为\texinline{\\}在输入方面的优势,一般都用\texinline{\\}。另外\texinline{\linebreak}也可以起到强制换行的效果,但是\texinline{\linebreak}会影响到分页,\texinline{\newline}则不会。
另外,\texinline{\\}命令还可以接受参数来控制纵向的距离。
\begin{texlst}[listing and text]
这里\\换行
然后\\[2em]空两行
\end{texlst}
但是请注意,过多的手动换行可能会破坏 \LaTeX\ 的自然段落布局,导致不理想的间距问题。
\subsection{分段}
在 \LaTeX\ 中,创建一个新的段落非常简单,只需在段落之间插入一个空白行(多个空白行视为一个)即可。
\begin{texlst}[listing and text]
这是
一个句子,
中间的回车被忽略。
开始新的一段。
多个空行被视为一个。
\end{texlst}
此外,\LaTeX\ 中用\texinline{\par}来显式的起始一个段落。
\begin{texlst}
段落1\par 段落2
\end{texlst}
\subsection{小结}
在 \LaTeX\ 中,换行和分段是文本布局的基本组成部分。了解如何使用 \LaTeX\ 的自动换行功能以及如何在必要时进行手动干预,将有助于你创建结构清晰、格式一致的高质量文档。
\section{环境}
在 \LaTeX\ 中,环境(environment)是一种用于组织和格式化文档内容的重要机制。环境允许你定义一个具有特定布局和样式的一段文本区域,从而使得文档结构更加清晰且易于维护。环境通常用于处理比单个命令更复杂的情况,如列表、数学公式、引用、表格、图形、章节标题等。
\subsection{环境的优点}
\begin{description}[nosep, style=nextline]
\item[结构化]环境帮助你将文档分成逻辑上独立的部分,使得文档结构更加清晰。
\item[格式控制]每个环境都有预定义的格式规则,这有助于保持整个文档的一致性。
\item[重用性]一旦定义了某个环境,你可以在文档中多次使用它,无需重复相同的格式指令。
\item[扩展性]\LaTeX\ 提供了广泛的宏包,每个宏包都可能引入新的环境,以满足不同的排版需求。
\item[易于修改]如果需要更改某一类内容的格式,只需修改相关环境的定义即可,而不必逐个修改文档中的每个实例。
\end{description}
\subsection{常用的环境}
\begin{description}[nosep, style=nextline]
\item[列表环境] 有序列表\texinline{enumerate}、无序列表\texinline{itemize}和描述列表\texinline{description}
\item[浮动体环境]
\texinline{figure}、\texinline{table}用于将图表生成浮动体(因为图表一般面积挺大,如果当前位置放不下可以根据规则进行浮动而不至于出现大面积的空白),可自动编号和添加标题。
\item[数学环境] 一般常用的有\texinline{equation}、\texinline{gather}、\texinline{align}、\texinline{matrix}等
\item[表格环境] \texinline{tabular}可以生成最基本的表格
\item[引用文本环境] \texinline{quotation}和\texinline{quote}环境可以用来处理引用文本
\item[抄录环境] \texinline{verbatim}抄录环境用来实现将文本不加任何翻译的输出,一般用于显示源代码
\item[文本框环境] \texinline{minipage}环境用于创建文本框,常用于并排排列内容
\end{description}
以上仅列举了一部分 \LaTeX
中可用的环境,实际上还有许多其他的环境,用于处理各种复杂的排版需求。通过使用合适的环境,你可以极大地提高 \LaTeX\ 文档的编写效率和质量。
\section{列表}
列表
是一种组织信息的有力工具,在学术论文、技术手册、报告、教程和几乎任何类型的文档中都非常常见。它们帮助读者快速浏览关键点,清晰地展示步骤或选项,以及区分不同概念或组成部分。在
\LaTeX\ 中,创建列表不仅容易,而且高度可定制,允许你根据文档的具体需求来调整样式和格式。
\subsection{无序列表(项目符号列表)}
在 LaTeX 中创建无序列表(也称为项目符号列表)非常简单,使用 \texinline{itemize} 环境即可。每个列表项都以 \texinline{\item} 命令开始。
\begin{texlst}[listing and text]
\begin{itemize}
\item 第一项
\item 第二项
\item 第三项
\end{itemize}
\end{texlst}
\subsection{有序列表(编号列表)}
如果你需要一个有序列表,即带有数字或其他类型的编号的列表,那么应该使用 \texinline{enumerate} 环境。
\begin{texlst}[listing and text]
\begin{enumerate}
\item 第一项
\item 第二项
\item 第三项
\end{enumerate}
\end{texlst}
\subsection{描述列表}
描述列表(或定义列表)用于提供术语及其定义。在 \LaTeX\ 中,使用 \texinline{description} 环境。
\begin{texlst}[listing and text]
\begin{description}
\item[术语一] 定义一
\item[术语二] 定义二
\item[术语三] 定义三
\end{description}
\end{texlst}
\subsection{小结}
列表是 \LaTeX\ 文档中非常实用的功能,通过使用 \texinline{itemize}、\texinline{enumerate} 和 \texinline{description}
环境,你可以轻松地创建各种风格的列表,以适应你的文档需求。自定义项目符号和编号格式则让你能够进一步调整列表的外观,使其与文档的整体风格相匹配。自定义的部分我们放在后面讲。
\section{表格}
在\LaTeX\
中创建表格是一个非常实用的功能,尤其是当你需要在文档中插入数据、对比信息或展示统计数据时。\texinline{tabular}环境是\LaTeX\ 中最基本的表格生成工具,它允许你以高度定制的方式创建表格。
\subsection{基本语法}
\begin{texlst}[listing only]
\begin{tabular}{列类型}
表格内容
\end{tabular}
\end{texlst}
其中,\enquote{列类型}定义了表格的列数和每一列的对齐方式(左对齐\texinline{l}、居中\texinline{c}、右对齐\texinline{r})。以及是否加竖线\texinline{|},比如\texinline#{|l|c|r|}#就定义了三列,并且每列中间都用竖线分隔。
\subsection{创建一个简单的表格}
\begin{texlst}[listing and text]
\begin{tabular}{|c|r|}
\hline
名称 & 数量 \\ \hline
苹果 & 5 \\
香蕉 & 3 \\
橙子 & 2 \\
\hline
\end{tabular}
\end{texlst}
可以看到,列之间用\texinline{&}隔开,行需要手动用\texinline{\hline}命令来绘制横线。
\subsection{小结}
\texinline{tabular}环境是\LaTeX\
中创建表格的基础。但是\texinline{tabular}的功能有限,一些高级的功能无法实际,比如单元格跨行和跨列的问题,长表格转置等等。随着你对\LaTeX
的熟悉,我们可以一起探索更多如\texinline{multirow}、\texinline{longtable}等其他更复杂的表格环境,它们提供了更加强大的表格功能。
\section{插入图片}
在学术论文、报告或任何类型的文档中插入图片是一种常见的做法。\LaTeX\
提供了多种方式来插入和处理图片,使其能够很好地融入文档的整体设计中。在\LaTeX\ 中插入图片,需要在导言区加载\texinline{graphicx}\footnote{\LaTeX\ 中还有一个graphics宏包,graphicx属于增强版本,所以现在一般都用这个}包。这是我们第一次用到第三方的宏包的情况,我们来看一下插入图片的基本语法。
\begin{texlst}[listing only]
%!tex program = lualatex
\documentclass{article}
\usepackage{graphicx} % 加载图形处理包
\begin{document}
\begin{figure}[htbp] % 将图片放置在figue环境中,这是一个浮动体环境,可以控制图片在不同的情况下的位置策略
\centering % 居中图片
\includegraphics[width=0.5\textwidth]{example-image-a} % 载入图片,可选参数中可以设置图片的大小
\caption{这是一个示例图片。} % 图片的标题
\label{fig:example} % 图片的标签,可以在其他地方引用图片
\end{figure}
\end{document}
\end{texlst}
下面我们看一下上面的代码插入图片的效果。
\begin{figure}[htbp]
\centering
\includegraphics[width=0.5\textwidth]{example-image-a}
\caption{这是一个示例图片。}
\label{fig:example}
\end{figure}
当然\texinline{graphicx}宏包还有其他的功能,比如旋转,裁切等等,我们后面会详细介绍。
\section{数学公式}
大家使用\LaTeX\ 最主要的原因可能就是用来写公式,可见\LaTeX\ 在公式排版处理方面的强大能力。在\LaTeX\
中公式分为行内公式(inline)和行间公式(display)。
行内公式可以用\texinline{$$}来包围,比如\texinline{$(a+b)^2=a^2+2ab+b^2$},显示为 \( (a+b)^2 = a^2 + 2ab + b^2
\)。但是一般并不建议用这种方式,因为\texinline{$}无法分清是否成对,一般推荐用\texinline{\( \)}。
行间公式可以用\texinline{$$ $$}来包围,跟前面的原因一样这种方式不推荐,另外还可以用\texinline{\[ \]},这种方式我觉得也不好,语义化的命令才便于阅读。
在书写数学公式的时候一般都建议加载\texinline{amsmath}和\texinline{amssymb}宏包。\texinline{amsmath}提供了多个相关的环境来处理不同情况下书写公式的需要。
\subsection{常用的数学环境}
\begin{itemize}[nosep]
\item \texinline{equation} 和 \texinline{equation*},用单行公式,星号的版本不编号
\begin{texlst}[listing and text, righthand width=5cm, lower separated=true]
\begin{equation}
\sum_{l=0}^{n}(n-l)^{l}
\end{equation}
\end{texlst}
\item \texinline{multline} 和 \texinline{multline*},多行公式
\begin{texlst}[listing and text, righthand width=5cm, lower separated=true]
\begin{multline*}
a+b+c+\\
f + i + j + k
\end{multline*}
\end{texlst}
\item \texinline{gather} 和 \texinline{gather*},多行公式,居中对齐
\begin{texlst}[listing and text, righthand width=5cm, lower separated=true]
\begin{gather*}
a_1 = b_1 + c_1 \\
a_2 = b_2 + c_2 - d_2 + e_2
\end{gather*}
\end{texlst}
\item \texinline{align} 和 \texinline{align*},多行公式,按\texinline{&}来对齐
\begin{texlst}[listing and text, righthand width=5cm, lower separated=true]
\begin{align*}
a_1 &= b_1 + c_1 \\
a_2 &= b_2 + c_2 - d_2 + e_2
\end{align*}
\end{texlst}
\item \texinline{flalign} 和 \texinline{flalign*}\footnote{fl是full length的意思},多行公式,对齐到整个页面的宽度
\begin{texlst}[listing and text, righthand width=5cm, lower separated=true]
\begin{flalign*}
a_{11} + b_{11} & = c_{11} & a_{12} & = b_{12}\\
b_{21} & = c_{21} & a_{22} & = b_{22} + c_{22}
\end{flalign*}
\end{texlst}
\end{itemize}
\subsection{常用的数学命令}
\begin{itemize}[nosep]
\item 分式 \inlinedemo{\frac{b}{x}}
\item 根号 \inlinedemo{\sqrt[4]{x^3}}
\item 求和 \inlinedemo{\sum_{n=1}^{100}n^2}
\item 极限 \inlinedemo{\lim_{x\to\infty}\frac{1}{x}}
\item 连乘 \inlinedemo{\prod_{k=1}^{m} \left( 1 + \frac{1}{k^2} \right)}
\item 积分 \inlinedemo{\int_{0}^{\infty} e^{-x^2}\,dx}
\item 对数 \inlinedemo{\log_{10}{x}}
\item 自然对数 \inlinedemo{\ln{x}}
\item 连分数 \inlinedemo{\cfrac{1}{\sqrt{2}+\cfrac{1}{\sqrt{2}+\dots}}}
\item 二项式 \inlinedemo{\binom{n}{2}}
\item 正负号 \inlinedemo{\pm}
\item 负正号 \inlinedemo{\mp}
\item 乘号 \inlinedemo{\times}
\item 除号 \inlinedemo{\div}
\item 大于等于号 \inlinedemo{\ge}
\item 小于等于号 \inlinedemo{\le}
\item 不等于号 \inlinedemo{\ne}
\item 约等于号 \inlinedemo{\approx}
\item 相似 \inlinedemo{\sim}
\item 全等 \inlinedemo{\cong}
\end{itemize}
\vspace{1cm}
另外,还有一些与矩阵相关的命令也挺常见。
\begin{texlst}[listing and text]
\begin{math}
\begin{matrix}
a & b \\
c & d
\end{matrix}
\end{math}
\end{texlst}
\vfill
\pagebreak
\begin{texlst}[listing and text]
\begin{math}
\begin{pmatrix}
a & b \\
c & d
\end{pmatrix}
\end{math}
\end{texlst}
\begin{texlst}[listing and text]
\begin{math}
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}
\end{math}
\end{texlst}
\begin{texlst}[listing and text]
\begin{math}
\begin{Bmatrix}
a & b \\
c & d
\end{Bmatrix}
\end{math}
\end{texlst}
\begin{texlst}[listing and text]
\begin{math}
\begin{vmatrix}
a & b \\
c & d
\end{vmatrix}
\end{math}
\end{texlst}
\begin{texlst}[listing and text]
\begin{math}
\begin{Vmatrix}
a & b \\
c & d
\end{Vmatrix}
\end{math}
\end{texlst}
\section{浮动体}
在 \LaTeX\ 中,浮动体(floats)是指可以在文档中自由移动位置的元素,如表格和图像。浮动体使得我们能够更灵活地安排这些元素的位置,从而避免在页面布局中出现不美观的断裂。
\LaTeX\ 中提供了两种浮动体,\texinline{figure}用于图片,\texinline{table}用于表格。表格与图片的插入在之前的小节中已经讲过了,使用浮动体只需要将图片与表格放在相应的浮动体环境中即可。
\LaTeX\ 中的浮动体提供了四种浮动的策略:
\begin{itemize}
\item h -- here原地
\item t -- top页首
\item b -- bottom页末
\item p -- page单独一页
\end{itemize}
我们可以将这四种策略组合起来,当一种策略无法被满足时选用下一种,下面是一段示例代码:
\begin{texlst}[listing only]
\begin{table}[htbp]
\centering
\begin{tabular}{|c|r|}\hline
标题 & 数量 \\\hline
\LaTeX\ 入门 & 100 \\\hline
\end{tabular}
\end{table}
\end{texlst}
插入的表格将依次按照原地、页首、页末、单独开页的策略来浮动。
\LaTeX\ 中的浮动体为我们提供了灵活且美观的方式来管理图像和表格。通过 \texinline{figure} 和 \texinline{table}
环境,我们可以轻松地插入和管理这些元素,并使用选项来调整它们的位置。
\section{交叉引用}
\LaTeX\ 提供了强大的交叉引用功能,可以方便地引用章节、图表、表格、公式等。要引用之前我们要用\texinline{\label}命令给相应的位置打上标签,然后使用的时候用\texinline{\ref}命令来引用即可。
\begin{texlst}[listing only]
\section{Cross Reference}\label{sec:intro}
\end{texlst}
一般打标签推荐的方式是像上例中一样,把类型和名字之间用冒号隔开,这样在比较大型的项目中不容易搞混。标签的名称也尽可能地与内容有相关性。
\LaTeX\ 的自动化功能使得文档结构发生变化时,编号会自动更新,引用的编号也会随之同步更新,这个机制保证了在任何时候引用都是是正确的。
下面的示例演示如何在需要的地方引用标签:
\begin{texlst}[listing only]
在第\ref{sec:intro}小节中,我们……
\end{texlst}
此外,如果我们加载了\texinline{hyperref}宏包的话,引用的时候会生成超链接,这样就可以实现快速的跳转来查阅引用的内容。
交叉引用是一个既简单又强大的功能,熟练使用可以提高文档质量与可维护性。最后说一下,交叉引用需要多次编译,这点请注意一下。