认识LaTeX
L a T e X LaTeX LaTeX是 T e X TeX TeX的宏集,其编辑和排版的核心思想在于通过章、节等简单的概念指定文档的逻辑结构,规定了每一句话在文章中所从属的层次,从而极大方便了对各个层次批量处理,而这些结构的格式和布局,则是由 L a T e X LaTeX LaTeX系统负责处理。因此,它鼓励从内容中分离布局,同时仍然允许在需要时进行手动排版调整。
LaTeX中命令的一般格式为:\命令名称[备选选项]{参数}
环境指令的一般格式为:
\begin[备选选项]{环境名}
...
\end{环境名}
注意:不带花括号的命令后面如果想打印空格,请加上一对内部为空的花括号再键入空格,否则空格会被忽略.例如:
\LaTeX{} Studio
.
基本框架
\documentclass{...}
--[[...导言区...]]--
\begin{document}
--[[在这两个命令之间就是你的文档内容]]--
\end{document}
\documentclass{...}
用于指定文档类型(模板)。模板规定一些统一样式,比如章节一级标题都用什么字体什么字号怎么对齐,章节二级标题用什么字体什么字号怎么对齐,一级段落又用什么字体什么字号怎么对齐,页眉页脚页边距一类的页面设置又怎么设置,以及一些自定义的命令。
常用的模板即article,但article模板不支持中文,因此若想在LaTeX中显示中文,则应使用ctexart模板。标准写法为:
\documentclass[UTF8]{ctexart} -- [UTF8]不加也可
另外,该命令也提供了一个文档格式的设置,即\documentclass[options]{}
,在方括号里可以填写关于文档格式的设置,比较常见的是设置正文字号和页面规格,
其实在LaTeX里的很多命令都是如此,方括号里可以填写设置,不填可以省略方括号
比如\documentclass[12pt,a4paper]{article}
表示正文字号为12pt,页面规格为A4纸。另外,LaTeX默认页面大小是A4纸。
\begin{}
\end{}
命令实则是创建某种环境。 常见环境有:
- document —— 文件(正文)
- center —— 居中环境
\documentclass{article}
\author{My Name} --作者
\title{TEST} --文章标题
\date{2021.12.16} --日期 该语句也可不写,在之后maketitle时,日期会自动选取为你编辑这篇文档的当天,并直接排版上去
\begin{document}
\maketitle --排版标题和、作者、日期
Hello, World! --文章内容
\end{document}
\documentclass{article}
\author{My Name}
\title{TEST}
\begin{document}
\maketitle
\section{biggest part} -- 一级章节标题 大括号内为标题名
Hello, World! -- 语句自动带有段落首句的缩进
\subsection{big part} -- 二级章节标题
gugugugugugu
\subsubsection{small part} -- 三级章节标题
\paragraph{bbbb} -- 一级段落 大括号内为标题名
Hi!
\subparagraph{ssss} -- 二级段落
Ah!
\end{document}
可见,LaTeX会自动给标题标序号,若是想要去除标题前面的数字编号,则是在原命令中大括号前加一个*
号即可。例如:
\section*{biggest part}
但是注意:去除编号后章节标题的默认是不会加到目录中的!
自动生成内容目录可用 \tableofcontents
语句。
需要注意的是,LaTeX处理目录需要编译两次。
格式控制
长度单位
单位 | 全称 | 长度 |
---|---|---|
pt | point(磅) | |
pc | pica | 1 p c = 12 p t 1\ pc=12\ pt 1 pc=12 pt,四号字大小 |
in | inch(英寸) | 1 i n = 72.27 p t 1\ in=72.27\ pt 1 in=72.27 pt |
bp | bigpoint(大点) | 1 b p = 1 72 i n 1\ bp=\frac{1}{72}\ in 1 bp=721 in |
cm | centimeter(厘米) | 1 c m = 1 2.54 i n 1\ cm=\frac{1}{2.54}\ in 1 cm=2.541 in |
mm | millimeter(毫米) | 1 m m = 0.1 c m 1\ mm=0.1\ cm 1 mm=0.1 cm |
sp | scaled point( TeX \TeX TEX基本长度单位) | 1 s p = 1 65536 p t 1\ sp=\frac{1}{65536}\ pt 1 sp=655361 pt |
em | 当前字号下大写M的宽度 | |
ex | 当前字号下小写x的宽度 |
日常使用的小四为12pt,五号为10.5pt
常用的长度宏:
\textwidth -- 页面上文字的总宽度,即页宽减去两侧边距.
\linewidth -- 当前行允许的行宽.
可变长度
例如5pt plus 3pt minus 2pt
:表示一个能收缩到 3pt 也能伸长到 8pt 的长度.
直接使用倍数也是允许的,例如:1.5\parindent
一些语句
注释、换行、缩进、行距、列距
- 注释则以
%
号开头,在该符号后(仅一行)的内容均会被认为是注释。
- 若源文件中文字之间多个空格被视为一个
- 可以用
~
代替一个空格,特别之处在于多个~
不会被视为一个 - 若是在源文件中直接换行,那么LaTeX会将这两行文字之间的空白字符忽略,然后以一个空格隔开接在一行(单个换行被视为一个空格)。
- 源文件中连续两个及以上的回车,那么第二行文字会被认为是新起的一个段落,会带有缩进。(多个换行会被视为一个)
- 可以用
\mbox{}
来表示一个空行,从而实现两个段落之间空一行的效果(毕竟多个换行仍代表只换一行) - 语句
\\
是常用的强制换行命令,但不是新起一段,换行后的那段文字没有缩进。 \newline
与\\
效果相同,换行无缩进。- 命令
\par
也是换行命令,准确的说,该命令的意思是新起一个段落(和空行的效果一样),因此会带有缩进。
\indent{}
—— 缩进(相当于一个tab)
\noindent{}
—— 取消缩进
\hspace{X cm}
—— 该命令会产生一个长度为Xcm的空格
\vspace{X cm}
—— 该命令用于两段文字间,产生一个长度为X cm的垂直间距以隔开两个段落
(若该命令用于段落之中则只会产生一个空格,但设置段落距离的效果仍将会在这段结束时显现。)
调整行间距,可以使用宏包setspace
,并创建环境:
\begin{spacing}{factor}
\end{spacing}
在该环境内,所有行距都变为你设置的factor乘上默认行距,factor是一个小数。
\documentclass[UTF8]{ctexart}
\usepackage{setspace}
\begin{document}
\begin{spacing}{1.5}
这里是$1.5$倍(相对默认的行距)行距这里是$1.5$倍(相对默认的行距)行距这里是$1.5$倍(相对默认的行距)行距这里是$1.5$倍(相对默认的行距)行距\\
\end{spacing}
\begin{spacing}{0.5}
这里是$0.5$倍(相对默认的行距)行距这里是$0.5$倍(相对默认的行距)行距这里是$0.5$倍(相对默认的行距)行距这里是$0.5$倍(相对默认的行距)行距\\
\end{spacing}
\end{document}
另外,在导言区添加命令\linespread{factor}
可以更改全文行距的。
设置段落之间的距离:
\setlength{\parskip}{0pt}
分页
\newpage
开始新的一页
如果要连续新开两页,先在中间加上一个空箱子,例如
\newpage\mbox{}\newpage
符号
符号 | 代码 | 样式 |
---|---|---|
省略号 | \ldots | … \ldots … |
角度 | $30\,^{\circ}$ | 30 ∘ 30\,^{\circ} 30∘ |
摄氏度 | $37\,^{\circ}\mathrm{C}$ | 37 ∘ C 37\,^{\circ}\mathrm{C} 37∘C |
英文的省略号使用命令
\ldots
,而不是三个句点。
插入图片
\includegraphics[设置图片参数]{图片路径}
注意:路径即可以是绝对路径,也可以是相对路径(以tex文件保存的位置开始)。
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics[width=4cm,height=2cm]{test.png}
\end{document}
usepackage{}
是调用宏包的命令。宏包其实就可以理解为C++的库,里面定义了一些命令,来实现一定的功能。通常在声明模板(即命令\documentclass{})后,正文前就将所有要用的宏包调用(说实话和C++调用库很像)。
常用的宏包有:
- graphicx —— 图片相关
- amsmath、amssymb —— 数学公式
插入表格
插入表格时需要在tabular环境中。
大括号中参数用于设置表格的列属性,其中:
- 竖线
|
即表格中的竖线 - 字母个数(c、l、r)表示列数,
c
表示元素居中,l
表示元素左对齐,r
表示元素右对齐
表格内容以&
来分隔每列,\\
换行,\hline
画一条横线。
页面设置
\newpage
命令会使当前页直接结束,并起新的一页。
\pagenumbering{}
该命令可以设置当前页面的页码显示为某一种风格,共有5种风格:
- arabic —— 阿拉伯数字,即 1 , 2 , 3 , 4 , … 1,2,3,4,… 1,2,3,4,…是默认样式。
- roman —— 小写罗马数字,即 i , i i , i i i , i v , … i,ii,iii,iv,… i,ii,iii,iv,…
- Roman —— 大写罗马数字,即 I , I I , I I I , I V , … I,II,III,IV,… I,II,III,IV,…
- alph —— 小写英文字母,即 a , b , c , d , … a,b,c,d,… a,b,c,d,…
- Alph —— 大写英文字母,即 A , B , C , D , … A,B,C,D,… A,B,C,D,…
setcounter{page}{x}
该命令可以设置当前页面的页码为数字x。
\documentclass[UTF8]{ctexart}
\begin{document}
\pagenumbering{Alph}
Lorem lpsum
\newpage
\pagenumbering{Roman}
\setcounter{page}{4} -- 设置该页的页码数为4,并为大写罗马数字,即最终效果为IV。
\end{document}
\pagestyle{...}
和\thispagestyle{...}
设置页面样式,即页眉和页脚,使用的是LaTeX默认提供的4种样式:
- empty —— 没有页眉页脚
- plain —— 没有页眉,页脚是一个居中的页码
- headings —— 没有页脚,页眉是章节名称的页码
- myheadings —— 没有页脚,页眉是页码和用户自定义的内容
区别在于:前者是全局的,对之后的所有页均有效;后者只对当前页有效。
如想对页眉和页脚进行更多个性化的设置,可以去查阅宏包fancyhdr的使用。
要设置页边距需调用宏包geometry
此后在导言区使用命令
\geometry{left=3.18cm,right=3.18cm,top=2.54cm,bottom=2.54cm} -- 这是Word中默认的页边距
来自由设置页面上下左右的边距。
超链接
需要调用宏包hyperref
。
\href{URL}{text}
默认的样式是在有链接的文字上加方框,可能比较难看,如果需要调整,可改变\usepackage[option]{hyperref}
中的option属性:
- colorlinks —— 表示链接以改变字体颜色的形式而非加方框
- linkcolor、anchorcolor、citecolor —— 分别表示用来标识link、anchor、cite等各种链接的颜色。
(使用tableofcontents
生成目录时,点击目录会跳转到相应位置,因此这也是一种超链接。对于目录的设置,我们使用的是linkcolor)
例如,若想使目录的链接颜色依旧是原本的黑色,则:
\usepackage[colorlinks,linkcolor=black]{hyperref} -- 设置了两种属性
另外也可以用\url{URL}
直接插入链接,以等宽字体排版。
如想对目录、标题进行更加深入的设置,可以去查阅宏包titletoc、titlesec的使用。
文本位置
LaTeX \LaTeX LATEX 默认使用两端对齐的排版方式,若要使用别的排版,可以通过定义环境实现。
\begin{flushleft} -- 其内的文本全部左对齐
...
\end{flushleft}
\begin{center} -- 其内的文本全部居中对齐
...
\end{center}
\begin{flushright} -- 其内的文本全部右对齐
...
\end{flushright}
文本效果
\fbox{text}
该命令会给大括号里的文本text加上线框。
在引入framed
宏包时,还可以创建framed环境,会给其内的文本加线框(建议配合居中环境使用)
\documentclass[UTF8]{ctexart}
\usepackage{framed}
\begin{document}
\begin{center}
\begin{framed}
....
\end{framed}
\end{center}
\end{document}
如想对线框进行更多个性化的设置,可以去查阅宏包mdframed的使用。
字族:
命令 | 字族 |
---|---|
\rmfamily | Roman 罗马字族 |
\sffamily | Sans Serif 无衬线字族 |
\ttfamily | Typewriter 等宽字族 |
临时改变字族可以使用:textrm{text}
字系:
命令 | 字系 |
---|---|
\bfseries | 粗体 BoldSeries 字系属性 |
\mdseries | 中粗体 MiddleSeries 字系属性 |
临时改变字系可以使用:\textbf{text}
字体加粗
字形:
命令 | 字形 |
---|---|
\upshape | 竖直 Upright 字形 |
\slshape | 斜体 Slant 字形 |
\itshape | 强调体 Italic 字形 |
\scshape | 小号大写体 Scap 字形 |
如果临时改变字形,可以使用:
\textup{text}
,直立(为默认)。\textit{text}
,意大利体。\textsl{text}
,倾斜。\textsc{text}
,小型大写。
如果在文中多次使用某种字体变换,可以将其自定义成一个命令.
这时请使用 text 系列的命令而不要使用 family, series 或 shape 系列的命令,否则需要多加一组花括号防止“泄露”。以下二者等价:
\newcommand{\concept}[1]{\textbf{#1}}
\newcommand{\concept}[1]{{\bfseries #1}}
\emph{text}
斜体
如果对一段已经这样转换为斜体的文本再使用\emph{text},它就会取消斜体,而成为正体。
英文中一般采用斜体来进行强调。(例如在说明书名时)
汉字没有加斜体.平常我们看到的加斜汉字,通常是几何变换得到的结果,非常的粗糙,并不严格满足排版要求;而真正的字形是需要精细的设计的。
同时,汉字字体里面也很少有加粗体的设计。西文一般设有加斜,但是这与“斜体”并不是同一回事.
加斜是指某种字族 的 Italy 字系;而斜体是指 Slant 字族.
在行文中表强调时使用的是前者;在 Microsoft Word 等软件中看到的倾斜的字母 I I I,也代表前者.
字号:
行文会有一个默认的“标准”字号(比如在 documentclass 的选项中设置的12pt),基于此可以再设置相对大小:
这几个命令会将其后面对应文本的字号修改,若只想修改一部分文本的字号,只需用大括号将命令和要修改的文本括起来就好了。
{
\Huge
Hello
}
{
\LARGE
Hello
}
文本下划线,引入宏包ulem
\uline{text}
,下划线。\uuline{text}
,双下划线。\uwave{text}
,波浪线。\sout{text}
,删除线。\xout{text}
,斜删除线。\dashuline{text}
,虚线。\dotuline{text}
,点线。
需要注意的是, ulem宏包重定义了\emph命令,使得由原来的斜体命令变成了下划线命令,由原来的两次斜体变为正体 变成了 两次下划线就双下划线.
通过宏包的normalem选项可以取消这个更改:\usepackage[normalem]{ulem}
.
字体颜色:
引入xcolor
宏包。该宏包中预定义了一些颜色:
也可以自定义颜色名:
\definecolor{hh}{RGB}{34, 145, 250}
设置文本颜色\color{颜色名}
\color{red}
Hello world!
也可以使用textcolor{颜色名}{text}
来设置部分文本颜色。
首字下沉:使用宏包lettrine
插入代码
使用宏包listings
在\lstset{}
里填写对代码块的设置,该命令用于导言区,是对代码块的全局设置,之后所有的代码块都会采用该配样式。
注意:要设置代码块中文字和背景的颜色时,建议引入宏包xcolor来设置。
常用配置为:
\lstset{
basicstyle={ -- 设置代码格式
\fontspec{Consolas}
\scriptsize
},
keywordstyle={ -- 设置关键字格式
\color[RGB]{40,40,255}
\fontspec{Consolas Bold}
\scriptsize
},
stringstyle={ -- 设置字符串格式
\color[RGB]{128,0,0}
\fontspec{Consolas}
\scriptsize
},
commentstyle={ -- 设置代码注释的格式
\color[RGB]{0,96,96}
\fontspec{Consolas}
\scriptsize
},
numberstyle={ -- 设置行号格式
\scriptsize
\color{black}
\fontspec{Consolas}
},
emphstyle=\color[RGB]{112,64,160}, -- 设置强调字格式
language=c++, -- 设置语言
numbers=left, -- 显示行号
numbersep=5pt, -- 设置行号与代码的距离
frame=single, -- 设置背景边框
tabsize=4, -- 设置tab长度
backgroundcolor=\color[RGB]{245,245,244}, -- 设定背景颜色
showstringspaces=false, -- 不显示字符串中的空格
showspaces=false, -- 不显示代码中的空格
showtabs=false, -- 不显示代码中的tab
breaklines=true, -- 设置自动换行
morekeywords={}, -- 可以手动添加关键字
emph={scanf,printf}, -- 可以手动添加强调字
xleftmargin=2em, -- 设置左边距,默认与页芯等宽
xrightmargin=2em, -- 设置右边距,默认与页芯等宽
aboveskip=1em, -- 设置上边距
}
效果:
创建环境:
\begin{lstlisting}
... -- code
\end{lstlisting}
实例:
\documentclass[UTF8]{ctexart}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{fontspec}
\lstset{
...
}
\begin{document}
\begin{lstlisting}
...
\end{lstlisting}
\end{document}
一些代码样式:
\lstset{
columns=fixed,
numbers=left,
numberstyle=\tiny\color{gray},
frame=none,
backgroundcolor=\color[RGB]{245,245,244},
keywordstyle=\color[RGB]{40,40,255},
numberstyle=\footnotesize\color{darkgray},
commentstyle=\it\color[RGB]{0,96,96},
stringstyle=\rmfamily\slshape\color[RGB]{128,0,0},
showstringspaces=false,
language=matlab,
}
效果:
\definecolor{ballblue}{rgb}{0.13, 0.67, 0.8}
\definecolor{cornflowerblue}{rgb}{0.39,0.58,0.93}
\definecolor{babyblueeyes}{rgb}{0.63, 0.79, 0.95}
\lstset{
backgroundcolor=\color{white},
basicstyle=\footnotesize,
language=matlab,
breakatwhitespace=false,
breaklines=true, % sets automatic line breaking
captionpos=b, % sets the caption-position to bottom
commentstyle=\color{ballblue}, % comment style
extendedchars=true,
frame=single, % adds a frame around the code
keepspaces=true,
keywordstyle=\color{blue}, % keyword style
numbers=left,
numbersep=5pt,
numberstyle=\tiny\color{blue},
rulecolor=\color{babyblueeyes},
stepnumber=1,
stringstyle=\color{black}, % string literal style
tabsize=4, % sets default tabsize to 4 spaces
title=\lstname
}