Latex_note_2

Latex_note_2

Charles Lv7

Latex_note_2

Latex的篇章结构

课程代码

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
% 导言区
\documentclass{ctexbook}%book,report,letter


%========设置标题的格式===========%
\ctexset{
section={
format+ = \zihao{-4} \heiti \raggedright,
name = {,、 },
number= \chinese{section},
beforeskip =1.0ex plus 0.2ex minus .2ex,
afterskip =1.0ex plus 0.2ex minus .2ex,
aftername = \hspace{0pt}
},
subsection={
format+ = \zihao{5} \heiti \raggedright,
name = {,、 },
number= \arabic{subsection},
beforeskip =1.0ex plus 0.2ex minus .2ex,
afterskip =1.0ex plus 0.2ex minus .2ex,
aftername = \hspace{0pt}
}
}

% 正文区(文稿区)
\begin{document}
\tableofcontents

\chapter{绪论}
\section{引言}
近年来,随着逆向工程和三维重建技术的发展和应用,获取现实世界中物体
的三维数据的方法越来越多的关注和研究。\par 很多研究机构和商业公司都陆续
推出了自己的三维重建系统。
\section{实验方法}
\chapter{实验与结果分析}
\section{实验结果}
\subsection{数据}
\subsection{图表}
\subsubsection{实验条件}
\subsubsection{实验过程}
\subsection{结果分析}
\section{结论}
\section{致谢}

\end{document}

课程内容细节:

  1. \\只起到换行的作用,不会形成新的段落,\par(paragraph)会形成新的段落。(但为了源文件的清晰,分段还是建议插入空行来实现)
  2. 可以使用section、subsection、subsubsection来形成多级的部分。
  3. 在使用ctexart时的段落排版和引入ctex包是不同的,但可以通过引入ctexset命令更改。(只有ctexart可以使用)
  4. 可以使用\chapter命令形成带章节的大纲。(需要使用ctexbook)此时subsubsection不起作用。
  5. 可以使用\tableofcontents形成整个文档的目录。(似乎必须下方有一行空行)

课程代码效果图:

image-20230201222345640

image-20230201222402087

image-20230201222417868

详细解读

分段操作

我们常用的换行操作有两个——\par\\,但二者实际使用时还是有细微的区别,比如分段操作时两者的行为就存在差异。

在article文档类中,会对每个段落的段首进行缩进。那么在使用\par的情况下,分开的两部分都进行了缩进,也就说明LaTeX将源码中这两个段落看作了两个段。但是,在使用\\的情况下,后半部分并没有缩进。这说明,LaTeX并没有将后半部分看作独立的一段。

从语言逻辑上讲,一段就是一段,实际上只需要分段来分隔每一段。但由于承载文字的工具的限制,纸的宽度是一定的,一段话如果超过了纸的宽度,就要换行。但是,换行产生的下一行句子和上一行仍然属于同一段。在多数时候,LaTeX自动帮我们做了换行的工作。但是,有时候我们出于各种各样的原因,想在一行的某个单词后强制换行,这时就应该用\\命令。

行距设置

行间距设置

\fontsize{fontSize}{baseLineSkip}\selectfont可以同时更改字体大小及行距。事实上,这里的行距是Word中的基准行距。它并不是真正的两个基线之间的距离。它存储在LaTeX的宏\f@baselineskip中。LaTeX中还有一个宏,是\baselinestretch, 我们可以通过命令\linespread{lineSpread}\selectfont 来改变它,其中lineSpread填我们想要变成的值。而LaTeX中真正的行距,也就是两个基线之间的距离,是\baselinestretch乘以\f@baselineskip的值,它储存在\baselineskip中。

如果我们什么都不设置,对于不同的文档类,默认字体大小不同,但默认的\f@baselineskip的值为默认字号的1.2倍,\baselinestretch在不同的文档类中也不同,article文档类中为1,ctexart文档类为1.3

因此,在我们改变行距时,如果想把行距调整成精确的值,一般用 \fontsize{fontSize}{baseLineSkip}\selectfont来实现;如果想成比例地调整行距,比如单倍行距,双倍行距,则使用\linespread{lineSpread}\selectfont来实现。 比如说,双倍行距就是\linespread{2}\selectfont

此外,我们也可以用一个名叫setspace的宏包,即

1
\usepackage{setspace}

然后使用\setstretch{lineSpread} 来设置linespread(不用加\selectfont). 这个命令的好处在于会同时修改数学公式、浮动体等的间距,使之与正文间距适应。

段间距设置

在不同的段之间,也可以设置段间距(默认为0)。通过\setlength{\parskip}{parSkip}来实现。比如说,我想设置段间距为2em, 则使用\setlength{\parskip}{2em}即可。这样,在不同两段之间的距离,为段间距+\baselineskip的距离。

这里值得注意的是,由于\\是断行不是分段,所以由\\引起的下一行与本行之间的距离,只有\baselineskip, 而不加上\parskip

空行设置

我们如何在LaTeX中插入多个空行呢?编译器中使用\par\par\par是会报错的,正确做法是:

1
\vspace*{n\baselineskip} 

其中n为想空的行数。

缩进设置

在article及ctexart中,都默认给每一段的段首进行了缩进。我们可以通过\setlength{\parindent}{parIndent}来控制缩进距离,比如说,我想控制段首缩进2em,则应写\setlength{\parindent}{2em}. 这个命令会使该命令之后的所有段的缩进都变成这个值。如果要取消全部段落的段首缩进,则可以写\setlength{\parindent}{0em}.如果要单独取消某一行的段首缩进,则在该行的段首写\noindent即可。

章节设置

不同的文档类中的章节不一样。我们常用的article文档类的章节层次有:section, subsection, subsubsection, paragraph, subparagraph. 常用的report文档类的章节层次有:chapter, section, subsection, subsubsection, paragraph, subparagraph. 也就是说,report比article多了一个chapter.

\section{}这些命令,起到了分隔文章主体的作用。同时,LaTeX强大的一点在于,你只需要写\section{},而不需要声明这是第几章,它会自动给你编号。

此外,如果想要改变章节标题的格式,对于英文文档类,需要宏包即

1
\usepackage{titlesec}

。对于中文文档类,如ctexart, ctexrep等,我们可以使用\CTEXsetup[]{}命令,具体方法请参考宏包ctex的说明文档。一般我们也不太会需要改变章节标题的格式,唯一可能会想改变的,是把中文\section居左。我们可以在导言区中写

1
\CTEXsetup[format+={\raggedright}]{section} 

来实现。

目录

在你正文中想要加入目录的地方,写上一行命令:

1
\tableofcontents

然后就能得到相应的目录了。

页面设置

之前讲段落的时候我们提过,由于客观条件的限制,原本只需要分段的文字,因为纸的宽度有限,在每段内还要断行。同样地,因为纸的长度有限,因此,一篇文章也要分为好多页。那么一页的大小怎么设置,能容纳多少行,一行能有多宽,页眉、页尾怎么设置,凡此种种,都叫整体页面的设置。

首先,这一切,都需要我们使用宏包geometry. 因此,首先,我们需要在导言区中写上

1
\usepackage{geometry}
页面大小设置

我们常用的页面大小,就是A4纸。要实现这个,可以在导言区中写上

1
\geometry{a4paper}

如果我们不是用约定的纸张大小,而是想以数值形式指定纸张大小,比如说长22厘米,宽10厘米,那么,我们可以在导言区中写

1
\geometry{paperheight=22cm, paperwidth=10cm}
版心位置、大小设置

除了设置页面的大小以外,我们还可以设置版心的位置和大小。什么是版心呢?我们知道,在一张纸上写字的时候,我们一般不会每行第一个字顶着最左边写,一直写到页面的最右边再断行,我们一般是会留下一些页边距的。那么,除去这些页边距以外,包括整个文字部分的长方形叫做版心。每行的第一个字顶着版心的最左边开始,一直写到版心的最右边开始断行。

版心的位置可以通过设置其左边距、右边距、上边距、下边距来设置。其对应的参数名分别为left, right, top, bottom. 比如说,我们要设置左边距为2cm,可以在导言区中写

1
\geometry{left=2cm} 

此外,我们如果需要将版心居中,竖直居中的参数名为vcentering, 水平居中的参数名为hcentering, 水平、竖直均居中的参数名为centering. 使用方法为:如果我们要让版心水平居中,可以在导言区中写

1
\geometry{hcentering} 

此外,还可以设置版心的大小。版心的长为textheight, 宽为textwidth. 我们如果要设置版心长为20cm,可以在导言区中写

1
\geometry{textheight=20cm}

总的而言,在geometry宏包说明中的一张图可以很直观地解释上述参数:

img

页眉与页脚

对于页眉页脚的设置,我们使用宏包fancyhdr. 所以,我们首先在导言区中写上

1
2
3
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}

如果我们同时使用了geometryfancyhdr宏包,那么一定要把\usepackage{fancyhdr}及相应的页眉、页脚设置写在\usepackage{geometry}的后面。

具体的设置方法,我们首先来看一张图:

img

这是宏包fancyhdr说明文档里的配图。这个宏包将页面的页眉、页脚各分为左、中、右三个部分,其对应的指令名为\lhead{}, \chead{}, \rhead{}, \lfoot{}, \lhead{}, \rhead{}. 我们在括号中填写想在对应地方出现的东西就可以了。

如果想使用页码,可以用\thepage来实现。 \thepage指令存储的是当前页面的页码数。比如说,我想在页尾的右侧写上当前页码,则在导言区中写上

1
\rfoot{\thepage} 

即可。

此外,顺便提一句,如果要在正文中使用\maketitle,那么那一页的页面格式会自动变回原来的页面格式。需要在\maketitle后加上一句\thispagestyle{fancy}

同时,页眉也被默认设置了含有页眉线。页眉线、页脚线的指令名分别为\headrulewidth\footrulewidth. 其粗细可分别用\renewcommand来设置。比如说,我想取消页眉线,就可以在导言区中写上

1
\renewcommand\headrulewidth{0pt} 

Latex中的特殊字符

课程代码

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
% 导言区
\documentclass{article}%book,report,letter

\usepackage{ctex}
\usepackage{xltxtra}%提供了针对XeTeX的改进并且加入XeTeX的LOGO
\usepackage{texnames}
\usepackage{mflogo}


% 正文区(文稿区)
\begin{document}

\section{ 空白符号}
Are you wiser than others?definitely no. in some ways, may
it is true.What can you achieve? a luxurious house?a brilliant car?
an admirable career?who knows?

近年来,随着逆向工程和三维重建技术的发展和应用,获取现实世界中物体
的三维数据的方法越来越多的关注和研究,很多研究机构和商业公司都陆续
推出了自己的三维重建系统。

% 1em(当前字体中M的宽度)
a \quad b

% 2em
a \qquad b

% 约为1/6个em
a\,b a\thinspace b

% 0.5个em
a \enspace b

% 空格
a \ b

% 硬空格
a~b

%1pc=12pt=4.218mm
a \kern 1pc b

a\kern -1em b

a \hskip 1em b

a \hspace{35pt} b

% 占位宽度
a \hphantom{xyz}b

% 弹性长度
a \hfill b
\section{\ LaTex 控制符}
\# \$ \% \{ \} \~{} \_{} \^{} \textbackslash \&
\section{ 排版符号}
\S \P \dag \ddag \copyright \pounds
\section{\ TeX 标志符号}
% 基本符号
\TeX{} \LaTeX{} \LaTeXe{}

% xltxtra宏包提供
\XeLaTeX

% texnames宏包提供
\AmSTeX{} \AmS-\LaTeX{}
\BibTeX{} \LuaTeX{}

%mflogo宏包提供
\METAFONT{} \MF{} \MP{}

\section{ 引号}
` ' `` ''

``你好''
\section{ 连字符}
- -- ---
\section{ 非英文字符}
\oe \OE \ae \AE \aa \AA \o \O \l \L
\ss \SS !` ?`
\section{ 重音符号(以o为例)}
\`o \'o \^o \''o \~o \=o \.o \u{o} \v{o} \H{o}
\r{o} \t{o} \b{o} \c{o} \d{o}
\end{document}

课程内容细节:

  1. 在英文段落中如果需要添加空格可以直接在文章中添加空格,但多个空格在pdf中仍然只有一个空格。而中文中空格将被忽略。
  2. 空行分段,多个空行等同1个。
  3. 自动缩进,不能使用空格代替缩进。
  4. 汉字与其他字符的间距会自动由XeLatex处理。
  5. 禁止使用中文全角空格。
  6. # $ % { } ~{} _{} ^{} \ &为常见的latex控制字符,使用时需要在前面加\转义,而反斜杠则使用(\textbackslash)产生(\\本身为换行不能使用)
  7. \TeX{} ,\LaTeX{} ,\LaTeXe{},\XeLaTeX命令可以生成对应的标志符号,而其中\XeLaTeX命令需要引入xltxtra宏包。

课程代码效果图:

image-20230201220158684

image-20230201220230749

image-20230201220241838

image-20230201220258161

image-20230201220309147

详细解读

特殊文字

有时候,我们也会遇到输入特殊文字的地方。对于LaTeX的控制性字符,比如说\, &, ~, ^, _, #, %, {, }, 除了\以外,其他都可以在原有字符前面加上\来实现转义输出,如\&就会输出&. 而对于反斜杠,我个人建议用\char92来实现。 而~^我建议用\~{}\^{}来实现。

Latex中的插图

课程代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
% 导言区
\documentclass{ctexart}%book,report,letter

% 导言区:\usepackage{graphicx}
% 语法:\includegraphics[<options>]{<文件名>}
% 格式:EPS,PDF,PNG,JPEG,BMP
\usepackage{graphicx}
\graphicspath{{figures/}}%图片在当前目录下的figures目录

% 正文区(文稿区)
\begin{document}
\ LaTeX{}中的插图:

\includegraphics[scale=0.3]{favicon}
\includegraphics[height=2cm]{favicon}
\includegraphics[height=0.1\textheight]{favicon}
\includegraphics[width=2cm]{favicon}
\includegraphics[width=0.2\textwidth]{favicon}
\includegraphics[angle=-45,width=0.2\textwidth]{favicon}
\end{document}

课程内容细节:

  1. 在插图中有多个指定参数时用逗号进行分割。
  2. 相关细节可以使用 texdoc graphicx命令查看。

课程代码效果图:

image-20230201221903884

详细讲解

插入图片

要在文档中插入图片,需要graphicx宏包。此外,为了让图片出现在正确的位置,需要float宏包。因此,在导言区中加上

1
2
\usepackage{graphicx}
\usepackage{float}

接着,如果我们要插入的图片的名字是pic.png, 那么在我们正文中要插入图片的位置加上如下代码:

1
2
3
4
5
\begin{figure}[H]
\centering
\includegraphics{pic.png}
\caption{Title of picture}
\end{figure}

这里注意一点,如果要将图片插入到文档中,建议将图片拷贝到.tex文件的同一级文件夹中,否则需要在\includegraphics{}的参数中填写绝对路径。

\caption{}指令的作用,是在其对应的位置(位于\includegraphics{}前就是图片上方,后就是图片下方)产生图注。

可以给\includegraphics{}加上option列表以调整图片的大小。比如说,我想插入的图片是原图片等比例缩小为原来的0.8,则可以写成

1
\includegraphics[scale=0.8]{pic.png} 

如果我是想专门调整长宽,则可以把scale=0.8换成height=xxx, width=xxx这样来实现。

此外,关于\caption{},我们可以对其字体、文字进行相关设置。这里需要我们使用caption宏包。我们首先在导言区中写上

1
\usepackage{caption}

然后在导言区中使用\captionsetup{}进行相关设置。

由于我们这里需要设置的是figure浮动体的caption,因此,我们需要特别注明captionsetup[figure]{}. **如果我们需要改变标题中的“图x”,让它变成“Picture x”或者其他文字,在大括号中可以写name=Picture来实现。**如果我们要改变这个caption整体的字号、字体,比如说全都变成Large字号,意大利斜体,则可以在大括号中写font={Large, it}. 值得注意的是这里的字号只能设置成LaTeX内置的那几个字号(可以参见之前的文章),而不能自己设置字号。其他参数均可以看caption宏包的说明。

并排图片

将两个图片并排在一起,需要一定的技巧。假设我们有两张图片pic1.png和pic2.png, 我们要将它们并排,则可以在正文中使用如下语句:

1
2
3
4
5
6
7
8
9
10
11
12
13
\begin{figure}[H]
\centering
\begin{minipage}{0.48\textwidth}
\centering
\includegraphics{pic1.png}
\caption{Title of pic1}
\end{minipage}
\begin{minipage}{0.48\textwidth}
\centering
\includegraphics{pin2.png}
\caption{Title of pic2}
\end{minipage}
\end{figure}

如果我们要并排三张图,则将0.48\textwidth变成0.32\textwidth,以此类推。

过宽的图片

有时候我们会遇到过宽的图片,这时,我们需要使用一个叫adjustbox的宏包。在导言区加上一句

1
\usepackage[export]{adjustbox} 

然后在正文中使用

1
2
3
4
\begin{figure}[H]
\centering
\includegraphics[center]{pic.png}
\end{figure}

即可。也就是说,在\includegraphics[]{}的中括号中,加上一句center就能实现图片居中了。

文字环绕图片

要使用文字环绕图片,需要在导言区使用宏包wrapfig。即在导言区中加上一句

1
\usepackage{wrapfig} 

然后在正文中要加入图片的地方使用语句

1
2
3
4
\begin{wrapfigure}{position}{width}
\centering
\includegraphics{pic.png}
\end{wrapfigure}

其中position可以有r或者l两种选项,分别对应在文字右侧和在文字左侧。width是这个浮动体的宽度(不是这个图片的宽度),比图片宽度略大一些。因此,比如说我要一个在文字右边的,宽度为0.5\textwidth 的浮动体,可以写成

1
2
3
4
\begin{wrapfigure}{r}{0.5\textwidth}
\centering
\includegraphics{pic.png}
\end{wrapfigure}
  • Title: Latex_note_2
  • Author: Charles
  • Created at : 2023-02-01 20:56:51
  • Updated at : 2023-08-17 09:44:45
  • Link: https://charles2530.github.io/2023/02/01/latex-note-2/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments