Latex_note_1
Latex_note_1
部分参考改编于专栏——Mac OS下的LaTeX技巧 - 知乎 (zhihu.com)
latex_basic
课程代码
1 | % 导言区 |
课程内容细节:
- letter不含有
\maketitle
部分。- 对于文章中需要修改的部分,建议使用直接注释掉的方法。
- 在latex中可以使用
$$
包含数学公式进行编写,同时可以使用双$$
进行公式书写并换行。(单$表示行内公式,双$表示行间公式)- 如果需要在两段文字间换行,可以在两段文字间加入一行空行,且多个空行在pdf中依然只表示一个换行符。(这行空行不可以写注释,影响换行)
- 一个latex有且只有一个document环境。
- latex在导言区进行全局设置,在正文区进行文稿编写。
课程代码效果图:
详细解读
文档类
第一行,是固定的\documentclass{}
.这个大括号里填的东西叫文档类。我们常用的LaTeX文档类有article, report, minimal. 比如说,使用了article, 一般就用不了chapter,只能用section, subsection, 使用report就可以用chapter. 同时,在排版时也会有一些自动调整的东西,比如说一个叫book的文档类,生成以后的文档就会自动分左页右页。我们最常用的,是article文档类,也是我们之后的文章里默认使用的文档类。此外,minimal文档类,则就相当于一个布料,它啥也没给你预设,就是一个最简单的纸。此外,如果我们要在LaTeX中使用中文,则应使用ctexart文档类。而使用了ctexart文档类之后,编译器就知道该怎么输出中文了。
\documentclass具体介绍
当 latex 处理源文件时, 首先需要知道的就是作者所要创建的文档类型。 文档类型可由\documentclass 命令来指定。
1 | \documentclass[option]{class} |
clsss 指定想要的文档类型。表1给出了一些用到的文档类型。通过options 参数可以定制文档类的属性。 不同的选项之间须用逗号隔开。
1 | % 这行是用来说明当前文档的文档类型的,加个fontset=windows是中文输入时不想让它报warning |
文档类型:
article | 排版科学期刊、 演示文档、 短报告、 程序文档、 邀请函…… |
---|---|
proc | 一个基于 article 的会议文集类 |
minimal | 非常小的文档类。 只设置了页面尺寸和基本字体。 主要用来查错。 |
report | 排版多章节长报告、 短篇书籍、 博士论文…… |
book | 排版书籍。 |
slides | 排版幻灯片。 该文档类使用大号 sans serif 字体。 也可以选用 FoilTEXa 来得到相同的效果。 |
文档类常用选项:
10pt, 11pt, 12pt | 设置文档中所使用的字体的大小。 如果该项没有指定, 默认使用10pt 字体。 |
---|---|
a4paper, letterpaper, . . . | 定义纸张的尺寸。 缺省设置为letterpaper。 此外, 还可以使用a5paper, b5paper, executivepaper 以及legalpaper。 |
fleqn | 设置行间公式为左对齐, 而不是居中对齐。 |
leqno | 设置行间公式的编号为左对齐, 而不是右对齐。 |
titlepage, notitlepage | 指定是否在文档标题(document title) 后另起一页。 article 文档类缺省设置为不开始新页, report 和book 类则相反。 |
onecolumn, twocolumn | latex 以单栏(one column) 或双栏(two column) 的方式来排版文档。 |
twoside, oneside | 指定文档为双面或单面打印格式。 article 和report 类为单面(single sided) 格式, book 类缺省为双面(double sided) 格式。 注意该选项只是作用于文档样式, 而不会通知打印机以双面格式打印文档。 |
landscape | 将文档的打印输出布局设置为 landscape 模式。 |
openright, openany | 决定新的一章仅在奇数页开始还是在下一页开始。 在文档类型为article 时该选项不起作用, 因为该类中没有定义“章” (chapter)。 report 类默认在下一页开始新一章而book 类的新一章总是在奇数页开始。 |
导言区
在文档类和\begin{document}
之间,是导言区(preamble) . 导言区是干什么的呢?是进行文档预设的。在LaTeX中,这些文档叫做宏包(package), 用指令\usepackage{}
来调用。这些宏包大都与时俱进,经常有更新,那我们从哪知道这牌子最新的内容呢?就需要包管理器。我们下载下来的LaTeX发行版中,除了配有TeXworks, TeXShop这类的编辑器,还有包管理器,也就是TeX live. 这个包管理器中管理着所有我们可以使用的宏包,我们也可以利用这个软件进行宏包更新。此外,每个宏包里都有许多配套的指令供我们使用,这些配套的指令,也是写在导言区里的。一个宏包的指令可能有几十甚至几百个,我们只需要记得常用的一两个就行了。那么其他指令该怎么查呢?每个宏包都有它配套的说明书。这时候texdoc
就派上它的用场了。Windows系统打开命令提示符,在里面写上
1 | texdoc xxx |
其中"xxx"为所要查找的宏包的名字。
输入以后,就会弹出一个pdf,就是宏包的说明文档了。
总得来说,导言区是由各种各样的指令构成的。指令分为无参数指令、有参数指令及环境三类。其基本格式为
1 | \command[option]{parameter} |
每个指令,都是由一个反斜杠\
开头,然后跟着指令的名称,接下来中括号中写选项,大括号中写参数。
-
无参数指令,比如说
\LaTeX
, 输出的是排版好的LaTeX(正如本文的题图);\bfseries
,使其所在的作用域内的文字全部变成黑体;\maketitle
输出标题; -
有参数指令,比如说
\textit{}
, 将其参数内的文字全部变成意大利斜体;\author{}
将作者名存储到一个叫author的变量中,在后续输出标题时会被调用。 -
环境,就是
\begin{env}
和\end{env}
. 这两个永远是配套使用的 。比如说\begin{document}
和\end{document}
之间的就是正文环境,\begin{table}
和\end{table}
之间的就是表格环境。
而填在中括号内的可选的选项,也是指令的组成部分之一。比如说,\begin{table}[H]
,就是一个以H
类型浮动的表格;\usepackage[ruled]{algorithm2e}
就是使用被画在框框里的算法格式。
\usepackage
这个命令,只能在导言区使用。其余的命令,大都可以在正文内使用。
\usepackage具体介绍
排版文档时, 你可能会发现某些时候基本的LATEX 并不能解决你的问题。 如果想插入图形(graphics)、 彩色文本(coloured text) 或源代码到你的文档中, 你就需要使用宏包来增强LATEX 的功能。 可使用如下命令调用宏包
1 | \usepackage[options]{package} |
这里package 是宏包的名称, options 是用来激活宏包特殊功能的一组关键词。很多宏包随LATEX 基本发行版一起发布。
1 | % 这里我们使用了UTF8的编码格式和ctex宏包来解决中文编码的问题 |
随LATEX一起发行的宏包:
宏包 | 描述 |
---|---|
doc | 排版LATEX 的说明文档。 |
exscale | 提供了按比例伸缩的数学扩展字体。 |
fontenc | 指明使用哪种LATEX 字体编码(font encoding)。 |
ifthen | 提供如下形式的命令‘if . . . then do . . . otherwise do . . . .’ |
latexsym | 提供LATEX 符号字体。 |
makeidx | 提供排版索引的命令 |
syntonly | 编译文档而不生成 dvi 文件 |
inputenc | 指明使用哪种输入编码, 如 ASCII, ISO Latin-1, ISO Latin-2, 437/850IBM code pages, Apple Macintosh, Next, ANSI-Windows 或用户自定义编码。 |
页面样式pagestyle
LATEX 支持三种预定义的页眉/页脚(header/footer) 样式, 称为页面样式(pagestyle)。
使用方式:
\pagestyle{style}
其中的 style 参数确定了使用哪一种页面样式 。
1 | \pagestyle{headings} |
Latex预定义的页面样式:
页面样式 | 描述 |
---|---|
plain | 在页脚正中显示页码。 这是页面样式的缺省设置。 |
headings | 在页眉中显示章节名及页码, 页脚空白。 |
empty | 将页眉页脚都设为空白。 |
正文
在\begin{document}
和\end{document}
之间的,就是正文。 只有在这里面输入的东西,才会被输出。随着我们对LaTeX了解的深入,在正文里能写的东西会越来越多。
\begin…\end的结构像不像前端里的<p>.</p>标签。
1 | \begin{document} |
一些操作符号:
命令 | 作用 |
---|---|
\ | 另起一行,换行符。 |
\section{章节名} | 开启一个章节,会自动编号。 |
\subsection{章节名} | 开启一个子章节,会自动编号。 |
\subsubsection{章节名} | 开启一个孙章节,会自动编号。 |
\paragraph{段落名} | 开启一个段落。 |
\subparagraph{段落名} | 开启一个子段落。 |
我们把\begin{document}前面的区域叫做导言区域。
1 | % 编号格式 |
这样我们就知道了Latex文件的基本构成部分。
latex中的中文处理方法
课程代码
1 | % 导言区 |
课程内容细节:
- 要想编写中文,首先要保证latex原文件为UTF-8编码。并引入宏包(\usepackage{ctex})
\newcommand
用于定义新命令,如示例中度数的定义。- 在写中文时可以在前面定义所写汉字的字体等信息。
- 示例中的equation环境用于产生带编号的公式。
- 在cmd输入texdoc +宏包名可以查阅相关的宏包说明手册。(lshort-zh是latex的入门说明文件,也可以通过这种方式访问)
- 可以使用\documentclass{ctexart}代替之前的宏包引入。
课程代码效果图:
详细讲解
中文字体
如果要在文本中输入中文,首先需要使用文档类ctexart,或者ctexrep之类的,也就是把对应的英文文档类缩写,前面加ctex.
然后不需要再新引入宏包,直接使用命令setCJKmainfont{fontName}
, setCJKsansfont{fontName}
, setCJKmonofont{fontName}
来分别设置正文的主中文字体族,无衬线中文字体族和打字机中文字体族。同时,我们也可以用\setCJKfamilyfont{newFontName}{fontName}
来定义新中文字体,然后再正文中用\CJKfamily{newFontName}
来使用新中文字体。
同样地,如果想单独设定某个字体族的字体形状,也可以模仿\setCJKmainfont[BoldFont=boldFontName, ItalicFont=italicFontName]{mainFontName}
来设置。
顺便说一句,CJK的意思是Chinese, Japanese和Korean,代表中日韩三国文字。
Latex的字体设置
课程代码
1 | % 导言区 |
课程内容细节:
- 可以用大括号进行分组,以限制字体声明的范围。
- \quad为空格,\\为换行
- 可以在documentclass设置文档参数设置字体大小,正常只有10,11,12pt
- 建议使用定义newcommand来设置字体相关参数
课程代码效果图:
详细解读
设置字体族
想要设置字体族,首先要在使用宏包fontspec, 即
1 | \usepackage{fontspec} |
然后分别可以用\setmainfont{fontName}
, \setsansfont{fontName}
, \setmonofont{fontName}
来设置主字体族,无衬线字体族和打字机字体族。其中fontName
就是上文提到的字体名称,需要去操作系统特定的地方去找,类似于"simsun", "Times new roman"等。
然后,在正文中,我们有如下几个命令:\textrm{}
和\rmfamily
, \textsf{}
和\sffamily
, \texttt{}
和\ttfamily
, 可以让我们分别主动调用主字体族,无衬线字体族和打字机字体族。 注意到每一组命令都有两个,一个是带参数的,一个是不带参数的。带参数的命令是把参数变成对应的字体族,不带参数的命令是把该命令所在的作用域内的文字变成对应的字体族。
类似地,我们可以使用\textup{}
和\upshape
, \textit{}
和\itshape
来分别主动调用当前字体族的直立体与意大利斜体,用\textmd{}
和\mdseries
, \textbf{}
和\bfseries
来分别调用当前字体形状的正常体与粗体。
自定义字体族
而如果自己还想单独设置字体族对应的字体形状,可以仿照下面的例子:\setmainfont[BoldFont=boldFontName, ItalicFont=italicFontName]{mainFontName}
来设置。
除此之外,我们可以在导言区用命令\newfontfamily\newfontname{fontName}
来定义一个新字体,其中\newfontname
就是你想用来使用新定义的字体的指令,fontName
就是新字体的名字。接下来,就可以在正文中使用{\newfontname This is written in new font}
来调用新字体。
字号
上述的是字体的设置,接下来讲一下字号的设置。
首先我们需要了解字号究竟代表什么意思呢?pt和em究竟是什么呢?
在现代排版学中,pt是字号的单位,中文译为磅。在Word中,1pt为1/72英寸。而在LaTeX中,1pt为1/72.27英寸。而磅与中文字号的转化关系为:初号42pt, 小初36pt, 一号26pt, 小一24pt, 二号22pt, 小二18pt, 三号16pt, 小三15pt, 四号14pt, 小四12pt, 五号10.5pt, 小五9pt
当前的字体大小被记作单位em, 也就是说,如果当前字号为12pt, 那当前1em=12pt.
LaTeX中的字号与Word中的字号在某些细微之处是不一样滴,请不要相同字号下用Word和LaTeX作比较
LaTeX提供了十个十分方便的命令:
1 | \tiny, \scriptsize, \footnotesize, \small, \normalsize, \large, \Large, \LARGE, \huge, \Huge |
这十个命令可以方便地改变其所在的作用域内的字体大小和行距。
此外,我们也可以用\fontsize{}{}\selectfont
来设置字号(最后的\selectfont
的含义不需要理解,反正记住只要改字号,在之后一定要加上\selectfont
才能生效)。前者写字号的绝对大小,如10pt, 20pt. 后者写的是行距,一般是字号乘1.2。
除此之外,行距我们还可以使用空行完成,例如我们平时经常使用的1.5倍行距就可以表示为字体加上0.5倍空行,即
1 \setlength{\parskip}{0.5\baselineskip}
对于中文,我们可以用\zihao{-4}
来表示小四号字体。
空格
对于英文文本来说,单词间的空格是有效的,但仅限于一个空格。在需要多个空格的时候,我们可以用指令\
, 也就是反斜杠加空格,来实现空格。
比如说,我想输出的Hello和world!之间有五个空格,那么我在正文内可以写
Hello\ \ \ \ \ world!
。对于指令来说,其后的空格将会被省略。比如说,
Hello \LaTeX world!
,输出的时候LaTeX和world!之间将没有空格。为了解决这种情况,我们依然可以使用指令\
, 即Hello \LaTeX\ world!
。
对于中文文本来说,中文汉字之间的空格默认被省略,你好
和你 好
输出的效果是一样的。为了解决这一问题,我们可以类似地用你\ \ \ \ \ 好
来解决。
对于中英文混排文本来说,默认会在中文和英文之间加一个空格,而这也是论文写作的规范。如果你不喜欢这样,可以在导言区内加入\CJKsetecglue{}
这个命令(大括号内什么都不用写)。
如果要对空格更精细地控制,还有一些更加详细的操作。上述的\
只是空格的一种,它产生的空格的宽度约为三分之一个字母"M"的宽度。 LaTeX中还有许多其他产生空格的方法。如果记一个"M"的宽度为m, \,
产生1/6个m的宽度,\;
产生2/7个m的宽度,\quad
产生一个m的宽度,\qquad
产生两个m的宽度。
附录
Latex语法及公式基础介绍
思路
将文字内容与排版格式分离
LaTeX语法
LaTeX参数
可选参数:中括号;必选参数:大括号
语句分类
-
注释:以%开头
-
命令:
-
普通命令
1
2
3% format: \command[option]{content}
\documentclass{article}
\usepackage[dvipdfm]{graphicx} -
环境
1
2
3
4
5\begin{figure}[htbp]
\centering
\includegraphics[width=120pt]{avatar.jpg}
\caption{This is Rick}
\end{figure}
-
-
数据
源码结构
分两个部分:序言(确定文档的类型、引用的包)、正文
文档类和宏包
1 | \usepackage{syntonly} |
功能
浮动体:figure和table,习惯上figure里放图片,table里放表格
层次结构
自动标号
1 | \part{Part Name} |
目录
1 | \setcounter{tocdepth}{2} % 设定目录深度 |
插入图片
1 | \usepackage{graphicx} %引入包 |
参数 | 含义 |
---|---|
width= | 将图片缩放到宽度为 |
height= | 将图片缩放到高度为 |
scale= | 相比于原尺寸缩放 |
angle= | 逆时针旋转 |
多图并排排列
1 | \usepackage{subcaption} %引入包 |
数学公式
介绍前先来安利一下这个在线的数学公式测试:
Online LaTeX Equation Editor - create, integrate and download (codecogs.com)
1 | \usepackage{amsmath} |
标题页
插入列表
计数符号可以自定义
有序列表
1 | \begin{enumerate} |
无序列表
1 | \begin{itemize} |
描述
1 | \begin{description} |
对齐
- 环境对齐:
center
/flushleft
/flushright
- 命令对齐:
\centering \raggedright \raggerleft
插入表格
1 | \begin{table}[!htbp] |
插入定理
除了 definition 环境,还可以使用 theorem 、lemma、corollary、assumption、conjecture、axiom、principle、problem、example、proof、solution 这些环境,根据论文的实际需求合理使用。
交叉引用
引用公式
\eqref
引用图片
引用文献
命令
连续空格被视为一个,开头空格忽略,空行会分段,等效于\par
代码 | 功能 |
---|---|
\par | 换行 |
\verb\ | 输出单词 |
`` ‘’ | 双引号 |
- | 连字号,复合词 |
— | 短破折 |
—- | 长破折 |
\\ |
换行 |
- Title: Latex_note_1
- Author: Charles
- Created at : 2023-02-01 10:06:10
- Updated at : 2023-08-20 11:04:36
- Link: https://charles2530.github.io/2023/02/01/latex-note-1/
- License: This work is licensed under CC BY-NC-SA 4.0.