LaTeX Noob

LaTeX Noob

Kirschy

在VSCode上配置TexLive简直是一大难事(花费一上午的时间),此后博主又花了一下午的时间慢慢消化LaTeX的一些基础知识,本文基本都是参考该篇CSDN所作,然而也正是”基础知识“,该文章后续将会视使用情况持续更新。

LaTeX作为一种文本标记语言,尽管非所见即所得,但其在正式的排版体系中所展示出的优越性以及其之后必然愈发突出的工具属性,更让博主认为有学习LaTeX的必要(或者说只是接触早晚的事)。工具性质知识的学习一定是比博物性质知识的学习更加重要的。

Okay, here we go.

一、整体框架

1. 声明

文章的最开始,我要写一篇文章:documentclass[UTF8]{ctexart}

中括号是文章编码。

关于从.tex到.pdf的几种编译路线:

  1. XeLaTeX:适配Unicode字符集(直接支持UTF-8编码,如果有日语韩语之类就很合适),不需要额外的字体设置,可以直接使用操作系统中的字体。
  2. PDFLaTeX:LaTeX的传统编译器,使用经典的8位进行编码而不支持Unicode,因此主要适用于仅含拉丁字符集的文档。需要使用LaTeX的字体系统,大多情况需要额外配置字体。
  3. BibTeX:专门用于处理.bib文件并生成引用与参考文献列表,在文档经过编译一次后产生辅助文件后使用,不会单独用。
  4. LaTeXmk:自动化编译工具,也是用于处理LaTeX文档中的交叉引用和参考文献。能根据文档中的命令来自行决定编译顺序(比如要不要用BibTeX)。
  5. xelatex->bibtex->xelatex*2:在XeLaTeX的基础上处理引用与参考文献列表,最后再次运行XeLaTeX两次是为了更新所有的交叉引用和参考文献。
  6. pdflatex->bibtex->pdflatex*2:与上同理,完全看文档内容字符的编码需求。

花括号是文章类型:ctex宏包本身就提供了很多类型(核心是支持中文),而且如果在文档开头直接声明文章类型是ctex宏包中的类型,则在后续不需要再用\usepackages{ctex}来说明需要导入ctex宏包了。

  1. article:最常用的文档类型之一,适用于撰写短篇文章(论文、报告、笔记),不支持章节命令(chapter),通常用于单栏格式的文档。ctex中变型为ctexart。
  2. report:与article类似,但是还支持章节结构,因此适用于撰写长篇报告或简单书籍,通常用于双面打印,可以包含目录。ctex中变型为ctexrep。
  3. book:支持章节以及更加复杂的结构(包括前言-正文-后记、复杂的目录与索引之类),适用于撰写书籍。适合双面打印。
  4. proc:基于article文档类的一个简单学术文档模板,通常用于会议论文集。ctex中变型为ctexproc。
  5. slides:幻灯片演示文稿文档类,使用无衬线字体(字符笔画粗细一致)。
  6. beamer:幻灯片演示文稿文档类,但是提供更多选项来定制外观、布局之类。
  7. minimal:精简文档类,仅设定纸张大小和基本字号,用作代码测试的最小工作示例。
  8. letter:撰写信件的文档类,提供信件的格式与布局。

2. 导入

说明要开始写文章,导入一些写文章的时候会用到的东西。可以单行导入多个宏,也可以分开写。

1
2
3
4
\usepackage{setspace,lipsum}
% or
\usepackage{setspace}
\usepackage{lipsum}

在这里简单介绍一下一些常用的宏包:

  1. setspace:用于调整文档中行距。有单倍行距(\singlespacing)、双倍行距(\doublespacing)与自定义行距(\onehalfspacing)。
  2. lipsum:“随机”生成填充文本,通常用于设计与排版过程中,用于模拟实际文本的外观布局。
  3. amsmath:提供数学公式排版的增强功能,用于支持多行公式、对齐公式、数学环境、新数学符号与命令。
  4. mathtools:是amsmath宏包的拓展,排版精细化,更多功能。
  5. booktabs:用于改进表格中线条,在三线表中使用(分别的三线命名代替传统的\hline)。
  6. microtypes:提供“微排版”功能,改进字符与单词间距,进行字体、行距等的微调。
  7. graphicx:用于处理图片的插入,支持多种图片格式,支持调整图片大小、旋转与裁剪等等。
  8. ……

如果编译返回某一宏包不存在,则需要手动在Start+r的cmd命令行界面输入指令tlmgr install [宏包名称],加载好后再编辑即可。如果要求的某一宏包并不存在于CTAN(Comprehensive Tex Archive Network,Tex综合档案网络。不存在会导致命令行运行失败),则需要在网络上寻找第三方资源,将对应.sty文件放在texlive\2024\texmf-dist\tex\latex路径下同名文件夹中,详细操作过程可以参考

3. 环境

包含了文章的内容:(类似地,任何\begin{xxx}……\end{xxx}所圈的地都可以算作一个小环境)

1
2
3
\begin{document}
% 正文
\end{document}

二、正文结构

1. 标题

1
2
3
4
\title{这是标题\LaTeX}
\author{Kirschy}
\date{01-13-2025}
\maketitle

Fig1

实际上,\LaTeX是LaTeX在编译时会被识别的一个特殊符号,最后渲染结果如上图。如果在其之后还要写东西,一定注意给一个空格!

2. 章节

层次分明:分章节过程中最多无脑两次sub,如果继续往下分段则是\paragraph\paragraph的作用仅仅是另起一段并且在开头添加了指定内容的粗体段标题。后面的文字会紧跟小标题,不会像section一样另起一段。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Hello World!

\section{\LaTeX 的使用}
Do you know how to use \LaTeX quickly?

\subsection{\LaTeX 的基本知识}
Here we'd like to introduce some basic information.

\subsubsection{\LaTeX 的结构}
The \LaTeX 's special frame decides its wide use.

\paragraph{Para 1}In this first paragraph.

\paragraph{Para 2}Comes the paragraph2.

Fig2

3. 列表

写法结构类似于document,需要一对begin+end把内容包起来。

1
2
3
4
5
6
\begin{enumerate}
\item 这是第一条
\item 我是第二条
\item 我是奶龙
\item 我才是奶龙
\end{enumerate} % enumerate是枚举的意思,即列表效果

Fig3

4. 目录

使用\tableofcontents就可以自动解析文章的section与列表,动态标号直接生成一个目录。会要求运行两次,第一次是加载,第二次才会显示新增的条目。

5. 换行

类似于markdown,代码里面的内容间隔一个空行才能在最后渲染的时候出来一个换行:

1
2
3
4
5
\begin{document}
第一行

第二行
\end{document}

6. 页操作

1
2
3
4
5
6
7
%%%另起一页,两种写法
\newpage
\clearpage
%%%页号显示
\pagestyle{empty} %% 整篇文章都不显示页号,因为是默认有页号的
\thispagestyle{empty} %% 仅当前页不显示页号
\setcounter{page}{1} %% 表示页号从正文的第几页出现。

“empty”实际上可以说是规定格式的一种,即指页眉页脚都没有,另外还有三种页眉页脚格式——

  1. plain:没有页眉,页码放在页脚处。“article”格式的文章在缺省状态下即此,是默认状态。
  2. headings:没有页脚,章节的标题和页码都放在页眉处。“book”格式的文章缺省状态默认为此。
  3. myheadings:没有页脚页眉页码,显示的是使用者自定义的信息。

7. 转义

意思就是让一些在LaTeX编译过程中有特殊含义的字符能够正常显示,与Markdown类似,都是使用反斜杠(\)指定其后近邻的特殊意义字符正常显示。

1
\{我用了这两个反斜杠就能让大括号被正常显示了\}

如果要显示反斜杠怎么办?稍微麻烦——\verb|\|,这样两个管道符中间的反斜杠就会显示出来。

Fig4

三、字体显示

1. 加粗

1
\textbf{这个样子能让大括号里的内容变成加粗黑体}

2. 字号

有好几个等级,对应不同的名称。

1
2
3
4
5
6
7
8
9
10
11
{\normalsize 不习惯这个故事 已经结尾}

{\large 连错也错的这么美 任谁都会}

{\Large 有没有人比你懂我的防备}

{\LARGE 还是会笑我傻到以为}

{\huge 这真心的话不能给}

{\Huge 多残忍也都自己安慰}

3. 字体

1
2
3
4
{\songti 宋体}
{\youyuan 幼圆}
{\kaiti 楷体}
{\lishu 隶书}

4. 居中

1
2
3
\begin{center}
% 内容
\end{center}

下面用一张图把上面的内容囊括一下,字体似乎有点小问题:

Fig5

四、公式显示

1. 一般等式

1
2
3
\begin{equation}
2=1+1 \notag
\end{equation}

\notag是用来声明隐藏公式后面的标号的,如果不声明,公式后面会有自动动态标号。无标号公式还有几种写法,提供在下面:

1
2
3
4
5
6
7
	\begin{equation*}
3=2+1
\end{equation*}
% ——————————
\[
5=3+2 \notag
\]

2. 公式换行

普通公式在同一个环境中不支持\\换行操作。

1
2
3
4
5
6
7
8
9
	\begin{equation}
8=5+3 \\
13=8+5
\end{equation}
% 上面的写法就是错的,不能达到预期效果,应该这么写————
\begin{align}
&21=13+8 \notag \\
&34=21+13
\end{align}

另外还要注意上面\notag的位置,是让第一行的公式不显示标号,而第二行仍然会有。而&符号的作用就是实现不同行的公式在最左端实现对齐。

WARNING!align环境需要由amsmath宏包支持,一定记得在文前导入包的时候写入!

Fig6

3. 行内公式

1
2
3
4
\paragraph{On in-line formulas}
众所周知,$together=to+get+her$;
或者也有人说现在最好用这种:\(a^2+b^2=c^2\);
有点像行间公式可以用\[\]的写法,而不能用$$ $$来代替。

4. 公式命令

其实上面写欧拉公式涉及到一些,下面给出详细的列表:(以及我自己的练手)。而大写都是类似于\Delta那样的放大首字母的操作。

幂(上标) 下标 分式 开根 求和号 积分号 微分号
^ _ \frac{分子}{分母} \sqrt{} \sum_{起始}^{上限} \int_{下限}^{上限} \mathrm{d}

关于上面展示的积分与求和的写法,都最好写成_在前^在后,有时候后面两个连续的“_”、“_”之间的内容即便在$$的行内公式渲染环境下也会被判定为斜体渲染。

(A) (B) / / (E)
\alpha \beta \gamma \delta \epsilon \varepsilon
(Z) (E) / (I) (K) /
\zeta \eta \theta \iota \kappa \lambda
(M) (N) / (O) / (P)
\mu \nu \xi \omicron \pi \rho
/ (T) / / (X)
\sigma \tau \upsilon \phi \varphi \chi
/ /
\psi \omega

实际上无论是公式命令还是希腊字母,在vscode的编辑界面中都有快捷选取栏,对记忆上面这些东西的要求不大。

Fig7

在LaTeX中,默认情况下行内公式的上下标是在右上与右下的,而如果想要显示得和行间公式一样,就要加上\displaystyle
\sum^{n}_{i=1}a_i 👉 \displaystyle\prod^{n}_{i=1}a_i 👉

也基于上面的原因,极限的写法也最好使用\displaystyle
\displaystyle\lim_{x \to 0} \frac{\sin x}{x} = 1 👉
\displaystyle\lim_{x \rightarrow +\infty} (1+\frac{1}{x})^x = e 👉
\frac{1}{sqrt{2\pi}\sigma} \int_{-\infty}^{+\infty} \large e^{-\tfrac{(x-\mu)^2}{2\sigma^2}} \mathrm{d}x = 1 👇(忍不住再写一个)

Tip:

  1. 可以发现正常公式中的三角函数是有反斜杠的!因此最后显示的是正体而非单纯代表字母变量的斜体;
  2. \to\rightarrow都能表示出右箭头,自然也有\leftarrow表示的左箭头;
  3. \tfrac{}{}将字号设为行间公式的大小,另外还有\dfrac{}{}可把分数的字号设置为独立公式大小(有时显得太大…);
  4. 无穷的两种写法你可知道(\infin&infty),不过redefine主题内置插件在网页上的渲染不支持前者(,还是用\infty罢;
  5. 巧用\large放大调整公式观感。

5. 符号补充

在此补充其他的一些符号特殊标识打法:

1
2
3
4
5
6
7
8
9
10
11
12
\begin{align*}
\hat{X} \\
\widehat{X} \\
\bar{X}_i \\
\bar{X_i} \\
\overline{X}_i \\
\overline{X_i} \\
\tilde{X} \\
\widetilde{X} \\
\dot{X} \\
\ddot{X}
\end{align*}

以及数学中用到的集合,注意\mathbb这个命令是在amssymb宏包中的,注意导言区引用。另外还推荐同时\usepackage{amsfonts},能够保证兼容性。

1
2
3
4
5
6
7
8
9
10
\begin{align*}
\mid \\
\mathbb{N_+} \\
\pi \in \mathbb{R} \\
e \notin \mathbb{Z} \\
\{1,2,3\} \cap \{3,4,5\} = \{3\} \\
\{1,2,3\} \cup \{3,4,5\} = \{1,2,3,4,5\} \\
\{3\} \subset \{1,2,3\} \\
\{1,2,3,4,5\} \supset \{1,2,3\}
\end{align*}

还有还有,一些杂七杂八的东西:

  • \sqrt{}默认是开平方,可以写\sqrt[n]{}来表示开n次方。

  • \lvert\rvert代表绝对值,放在左右两边(咋还分了两边,试了一下只写一个\vert也不是不行),当然懒也可以直接在键盘上输管道符冒充。

  • \approx表示约等于,当然懒的话也可以直接键盘输入约等于( or ≈)。

  • \pm用于输入正负号( or ±)。

  • \propto表示正比于()。

  • \sim表示波浪线,直接输入波浪线会有特殊含义,mathjax插件也渲染不出来( or ~)。

  • \vac{}用来加向量符号,当然你也可以用\boldsymbol{}来粗体显示常见的印刷样式( or )。

  • \partial是偏微分符号()。

  • \neq是不等号( or ≠)。

  • 包含性字符的适应性,体验一下:
    \displaystyle\lim_{n \to +\infty} P\{\vert \frac{m}{n}-p<\varepsilon \vert\} = 1\displaystyle\lim_{n \to +\infty} P\left\{\left\vert \frac{m}{n}-p<\varepsilon \right\vert\right\} = 1

    包含性字符可以通过加\left\right来对范围内的表达式进行适应性的大小调整(由于这个主题mathjax插件还是无法支持对反斜杠+特殊字符、\left\right适应性括号的渲染,就只能贴个图在这里了salad)。

以及空格方面的一些小细节,需看即戳
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
\begin{align*}
a \quad b \\
a \qquad b \\ %所谓quad,就是说在当前字体下一个汉字的宽度。qq就是double了
a\ b \\ %大空格
a\;b \\ %中等空格
a\,b \\ %小空格
ab \\ %默认没有空格的状态
a\!b %贴贴,完全凑在一起
\end{align*}
%%%----不等号,也有一些不甚重要的细节----
\begin{align*}
\geq \\
\leq
\end{align*}
%%%似乎amsmath宏包里没有\geqslant和\leqslant这两种用法……

6. 矩阵与大括号

矩阵的构建需要提前导入宏包mathtools,经过两层声明。无论是矩阵的bmatrix还是大括号的cases都只能放在equation环境里。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
% 矩阵
\[
A=\begin{bmatrix}
1&2&3 \\
4&5&6
\end{bmatrix}
\]
% 大括号
\[
P(X=r)=\begin{cases}
&\frac{e^{-\lambda}\lambda ^r}{r!} \\
&\frac{1}{\sqrt{2\pi} \sigma} e^{-\frac{(r-\mu)^2}{2\sigma ^2}}
\end{cases}
\]

Fig8

7. 表格

可以掌握的是普通线格表格和三线表,还有更多变体表格不在这里介绍。\hline实际上是手动添加横线的过程,不加横线将导致横线缺失。而在\begin{tabular}{|l|c|r|}中的l、c、r指的是其对应列内容的对齐方式,l是左对齐也是不填的默认状态、c是居中、r是右对齐。

1
2
3
4
5
6
7
8
9
\begin{tabular}{|l|c|r|}
\hline
&Romeo&Juliet \\
\hline
Romeo&0&1 \\
\hline
Juliet&1&0 \\
\hline
\end{tabular}

Fig9

1
2
3
4
5
6
7
8
9
10
11
12
13
\begin{table}[!htbp]
\centering
\caption{2024听的次数最多的歌}
\begin{tabular}{ccc}
\toprule
&\textbf{歌名}&\textbf{歌手} \\
\midrule
\textbf{top1}&《被人》&薛之谦 \\
\textbf{top2}&《在银河中孤独摇摆》&知更鸟、HOYO-MiX、Chevy \\
\textbf{top3}&《最好》&薛之谦 \\
\bottomrule
\end{tabular}
\end{table}

Fig10

8. 标签与引用

该板块放在这里主要是涉及公式的引用,用来直接引用文档内远处的任意公式。当然除了公式,其他表格、图片都是可以被引用的,只需要先给它们指定一个自定义的名称,然后在后文引用就可以了。

1
2
3
4
5
6
7
	\begin{equation}
P(X=r)=\frac{1}{\sqrt{2\pi} \sigma} e^{-\frac{(r-\mu)^2}{2\sigma ^2}}
\end{equation}

我来组成引用部分——(\ref{eq:here})
% eq表示公式,而tab是表、fig是图。
% 当前该部分实现仍有一些问题,编译出的引用部分是“(??)”。

五-图片展示

Still Under Construction……

  • Title: LaTeX Noob
  • Author: Kirschy
  • Created at : 01-14-2025 00:00:00
  • Updated at : 03-16-2025 10:41:41
  • Link: https://kirschyr.github.io/2025/01/14/LaTeX/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments