2025年4月9日学习记录
LaTex基础学习
1. LaTex的基本结构
1.1 基本结构
LaTex中主要分为导言区和正文区
% 导言区
\documentclass{article}
\usepackage{ctex}
%正文区
\begin{document}
Hello
\end{document}
1.2 导言区
导言区通常用于定义文档的格式、语言等(全局设置)。
1.2.1 \documentclass
\documentclass命令是用于设置LaTex文件所生成文档的格式,语法如下。
\documentclass[options]{class}
| Class | 简介 |
|---|---|
| article | 科技论文,报告,软件文档等 |
| IEEEtran | IEEE Transactions 格式 |
| proc | 法律文书 |
| report | 长篇报告,学位论文 |
| book | 书籍 |
| slides | 幻灯片 |
| memoir | 传记 |
| letter | 信件 |
| beamer | PPT |
| Option | 简介 |
|---|---|
| 12pt | 文档正文字体大小(默认10pt) |
| a4paper、letterpaper | 页面规格(默认为letterpaper或a4paper) |
| … | … |
例如:
\documentclass[12pt, a4paper]{article}
%意思是正文字体大小为12pt,页面规格是A4,使用article文档格式
1.2.2 \usepackage
\usepackage命令设置在编译LaTex文件时要导入的扩展包,例如:
\usepackage[utf8]{inputenc}
%指定输入文件的编码为utf8,inputenc负责输入文件的解码
\usepackage{comment}
%comment宏包提供了 注释多行内容 的功能
1.2.3 封面格式
\title{My First Paper} % 文章名字
\author{WSKH} % 作者姓名
\date{\today} % 日期
这只是设置了封面格式,生成封面的是\maketitle命令。它需要放在正文区。
1.3 正文区
在正文区,我们可以用公式、用命令构成文本文档。一个LaTeX文件中只能有一个document。
% 正文区(文稿区)
\begin{document}
\maketitle % 将标题打印出来
Hello
\end{document}
1.4 完整示例
% 导言区
\documentclass[12pt,a4paper]{article}
\title{My First Paper} % 文章名字
\author{WSKH} % 作者姓名
\date{\today} % 日期
% 正文区(文稿区)
\begin{document}
\maketitle % 将标题打印出来
Hello
Let $f(x)$ define:
$$f(x)=x^2+x+1$$
\end{document}

2. LaTex的中文处理办法
2.1 设置支持中文
如果是 XeLaTeX 或 LuaLaTeX ,可以使用xeCJK宏包,则
\documentclass{article}
\usepackage{xeCJK} % 引入 xeCJK 宏包
\setCJKmainfont{SimSun} % 设置中文字体(如宋体),可不设置
\begin{document}
你好,世界!
\end{document}
如果是 pdfLaTeX ,可以使用 CJKutf8宏包,但配置复杂,字体选择有限。
\documentclass{article}
\usepackage{CJKutf8} % 引入 CJKutf8 宏包
\begin{document}
\begin{CJK}{UTF8}{gbsn} % gbsn 是宋体,其他选项如 gkai(楷体)
你好,世界! This is English.
\end{CJK}
\end{document}
\begin{CJK}{UTF8}{字体}:必须用CJK环境包裹中文内容,并指定字体(如gbsn、gkai)。- 需要额外安装 CJK 字体包(如
texlive-lang-chinese)。 - 字体选择较少,排版效果不如
xeCJK或ctex。
如果是 XeLaTeX 或 LuaLaTeX ,但不想用 xeCJK,可以使用fontspec宏包手动设置。
\documentclass{article}
\usepackage{fontspec} % 引入 fontspec 宏包
\setmainfont{Times New Roman} % 设置英文字体
\newfontfamily\zhfont{SimSun} % 设置中文字体
\begin{document}
{\zhfont 你好,世界!} This is English.
\end{document}
但是这个需要完全手动。
除了引入ctex宏包,还可以将documentclass设置为ctexart、ctexrep、ctexbook,此时就不需要再额外引入ctex宏包了。
\documentclass[12pt,a4paper]{ctexart}
\documentclass[12pt,a4paper]{ctexrep}
\documentclass[12pt,a4paper]{ctexbook}
2.2 设置中文字体格式
例如:
\title{\kaishu 中文标题} % 文章名字(楷书)
\author{\heiti 你的名字} % 作者姓名(黑体)
完整代码:
% 导言区
\documentclass[12pt,a4paper]{article}
\usepackage{ctex}
\title{\kaishu 中文标题} % 文章名字(楷书)
\author{\heiti 你的名字} % 作者姓名(黑体)
\date{\today} % 日期
% 正文区(文稿区)
\begin{document}
\maketitle % 将标题打印出来
中文内容
\end{document}
2.3 字体字号设置
字体大小设置
% 字体大小设置
{\tiny Hello} \\
{\scriptsize Hello} \\
{\footnotesize Hello} \\
{\small Hello} \\
{\normalsize Hello} \\
{\large Hello} \\
{\Large Hello} \\
{\LARGE Hello} \\
{\huge Hello} \\
{\Huge Hello} \\
中文字号设置
% 中文字号设置
\zihao{5} 你好
英文字体格式设置
% 英文字体格式设置
\textbf{Hello} % 加粗
\textit{Hello} % 斜体
还可以自定义字体设置。
当需要很复杂的字体设置时(如需要设置字号、斜体、加粗),如果使用正常的写法,就会很麻烦,特别是需要多次使用该字体时,如下所示:
{\huge{\textbf{\textit{Hello}}}}
也可以将复杂命令定义为新命令,方便后面的调用。
在导言区,定义命令 \myfont
\newcommand{\myfont}{\huge{\textbf{\textit{Hello}}}}
然后在正文区使用
\myfont
3. LaTeX的篇章结构
3.1 \section构建小节
\section{引言}
\section{问题背景}
\section{数学模型的建立与求解}
\section{结论}

3.2 \subsection 构建子小节
\section{引言}
\section{问题背景}
\section{数学模型的建立与求解}
\subsection{符号说明}
\subsection{模拟退火算法模型建立}
\subsection{模拟退火算法模型求解}
\section{结论}

3.3 \subsubsection 构建子子小节
\section{引言}
\section{问题背景}
\section{数学模型的建立与求解}
\subsection{符号说明}
\subsection{模拟退火算法模型建立}
\subsubsection{参数设置}
\subsubsection{领域动作算子}
\subsubsection{评价函数}
\subsection{模拟退火算法模型求解}
\section{结论}

3.4 生成目录
\tableofcontents
完整代码:
% 导言区
\documentclass[12pt,a4paper]{ctexart}
% 正文区(文稿区)
\begin{document}
\tableofcontents
\section{引言}
\section{问题背景}
\section{数学模型的建立与求解}
\subsection{符号说明}
\subsection{模拟退火算法模型建立}
\subsubsection{参数设置}
\subsubsection{领域动作算子}
\subsubsection{评价函数}
\subsection{模拟退火算法模型求解}
\section{结论}
\end{document}
会在正文页面前面自动生成一个目录页面。

4. LaTeX中的特殊字符
4.1 空白字符
- 中文中加空格不会再编译后产生空格
- 英文中不管加多少个空格,最后编译完最多产生一个空格
- 空行分段,多个空行等同于1个
- 自动缩进,绝对不能使用空格代替
- 英文中多个空格处理为1个空格,中文中空格将被忽略
- 汉字与其他字符的间距会自动由XeLateX处理
- 禁止使用中文全角空格
可以根据命令加入空格
\section{控制字体宽度}
\subsection{控制空格}
a\quad b\par %1em(当前字体中M的宽度)
a\qquad b\par %2em
a\,b a\thinspace b\par %约为1/6em
a\enspace b\par %0.5em
a\ \ \ \ b\par %4个空格
a~b\par %硬空格(不能分割的空格)
\subsection{根据参数产生指定间隔}
a\kern 1pc b\par
a\kern -1em b\par %b距离a-1em,相当于把ab反向输出为ba
a\hskip 1em b\par
a\hspace{35pt}b\par
\subsection{根据指定字符的宽度来产生空白}
a\hphantom{1}b\par
a\hphantom{12}b\par
a\hphantom{123}b\par
a\hphantom{1234}b\par
a\hphantom{12345}b\par
\subsection{弹性长度空白}
a\hfill b\par %弹性空白可以让两边的字符正好到达纸张边界


4.2 控制符
\subsection{控制符}
\# \$ \% \{\} \~{} \_{} \^{} \textbackslash \&

4.3 排版符号
\subsection{排版符号}
\S \P \dag \ddag \copyright \pounds

4.4 引号
\subsection{引号}
` ' `` '' ``你好'' `好'

4.5 连字符、非英文字符、音标等
查
5. LaTeX中的插图
5.1 引入宏包(导言区)
\usepackage{graphicx} %插图需要引用的包
5.2 指定图片路径
可以指定单个路径,也可以指定多个路径(导言区)
上网查,该代码放入即报错。
5.3 语法
语法(正文区):\textbackslash includegraphics[选项]{文件名}
支持格式:EPS,PDF,PNG,JPEG,BMP
可以指定缩放比例scale,也可以指定图片宽和高:
指定缩放比例:\includegraphics[scale=0.1]{xxxx.jpg}
指定图片宽高:\includegraphics[width=6cm,height=6cm]{xxxx.jpg}
6. LaTeX中的表格
6.1 基本语法
% \begin{tabular}[<垂直对齐方式>]{<列格式说明>}
<表项> & <表项> & ... & <表项> \\
...
%\end{tabular}
%用\\表示换行
% 用&表示不同的列
% l-本列左对齐
% c-本列居中对齐
% r-本列右对齐
% p{<宽>}-本列宽度固定,能够自动换行
6.2 完整代码
\documentclass{article}
\usepackage{ctex}
\title{LaTeX中的表格}
\author{TZF}
\date{\today}
%cmd窗口里输入texdoc booktab可查看帮助文档
\begin{document}
\maketitle
\begin{tabular}{l|c|p{1.5cm}|c|r} %l:左对齐 c:居中 r:右对齐 |:在该位置增加竖线 p{1.5cm}指定宽度
\hline %\hline为表格增加一条横线
姓名 & 语文 & 数学 & 外语 & 备注 \\ %\\结束这一行表格的书写
\hline
张三 & 98 & 96 & 97 & 优秀 \\
\hline
李四 & 85 & 87 & 83 & 良好 \\
\hline
王五 & 73 & 74 & 77 & 一般 \\
\hline
赵六 & 62 & 66 & 64 & 及格 \\
\hline
\end{tabular}
\end{document}

7. LaTeX中的浮动体
7.1 基本语法
% 浮动体
% 实现灵活分页(避免无法分割的内容产生的页面留白)
% 给图表添加标题
% 交叉引用
% figure环境(table环境类似)
% \begin{figure}[<允许位置>]
% <任意内容>
%\end{figure}
7.2 浮动格式htbp
常用选项[htbp]是浮动格式: 『h』当前位置。将图形放置在正文文本中给出该图形环境的地方。如果本页所剩的页面不够,这一参数将不起作用。 『t』顶部。将图形放置在页面的顶部。 『b』底部。将图形放置在页面的底部。 『p』浮动页。将图形放置在一只允许有浮动对象的页面上。 一般使用[htb]这样的组合,只用[h]是没有用的。这样组合的意思就是latex会尽量满足排在前面的浮动格式,就是h-t-b这个顺序,让排版的效果尽量好。 !h 只是试图放在当前位置。如果页面剩下的部分放不下,还是会跑到下一页的。一般页言,用 [!h] 选项经常会出现不能正确放置的问题,所以常用 [ht]、[htbp] 等。
7.3 代码示例
\documentclass{article}
\usepackage{ctex}
\usepackage{graphicx} %插图需要引用的包
\graphicspath %指定图片在当前文件夹下的fig文件夹内
\title{LaTeX中的浮动体}
\author{WSKH}
\date{\today}
\begin{document}
LaTeX中的图\ref{f1}:
\begin{figure}[htbp] % [htbp] 浮动格式
\centering % 让图片居中显示
\includegraphics[scale=0.1]{1305454ssas.jpg}
\caption{图片标题} % 设置图片标题,并自动编号
\label{f1}
\end{figure}
LaTeX中的表\ref{t1}:
\begin{table}[htbp]
\centering % 让表格居中显示
\caption{表格标题} % 设置表格标题,并自动编号
\label{t1}
\begin{tabular}{l|c|p{1.5cm}|c|r} %l:左对齐 c:居中 r:右对齐 |:在该位置增加竖线 p{1.5cm}指定宽度
\hline %\hline为表格增加一条横线
姓名 & 语文 & 数学 & 外语 & 备注 \\ %\\结束这一行表格的书写
\hline
张三 & 98 & 96 & 97 & 优秀 \\
\hline
李四 & 85 & 87 & 83 & 良好 \\
\hline
王五 & 73 & 74 & 77 & 一般 \\
\hline
赵六 & 62 & 66 & 64 & 及格 \\
\hline
\end{tabular}
\end{table}
\end{document}

8. LaTeX中的数学公式
8.1 行内公式
\section{行内公式}
\subsection{美元符号}
交换律是 $a+b=b+a$
\subsection{小括号}
交换律是 \(a+b=b+a\)
\subsection{math环境}
交换律是 \begin{math}a+b=b+a\end{math}
8.2 上下标
\section{上下标}
\subsection{上标}
$x^2+y^4=z^3$
\subsection{下标}
$P_i+N_j=M_k$
8.3 希腊字母
\section{希腊字母}
$\alpha$
$\beta$
$\gamma$
$\epsilon$
$\pi$
$\omega$
$\Gamma$
$\Delta$
$\Theta$
$\Pi$
$\Omega$
8.4 数学函数
$\log$
$\sin$
$\cos$
$\arcsin$
8.5 分式
$\frac{1}{5}$
8.6 行间公式
\section{行间公式}
\subsection{美元符号}
$$f(x)=x^2+x+1$$
\subsection{中括号}
\[f(x)=x^2+x+1\]
\subsection{displaymath环境}
\begin{displaymath}
f(x)=x^2+x+1
\end{displaymath}
\subsection{自动编号equation环境}
函数\ref{e1}:
\begin{equation}
f(x)=x^2+x+1 \label{e1}
\end{equation}
8.7 简单矩阵
需要引入宏包
\section{矩阵}
$\begin{matrix}
0 & 1 \\
1 & 0
\end{matrix}$
$\begin{pmatrix}
0 & 1 \\
1 & 0
\end{pmatrix}$
$\begin{bmatrix}
0 & 1 \\
1 & 0
\end{bmatrix}$
$\begin{Bmatrix}
0 & 1 \\
1 & 0
\end{Bmatrix}$
$\begin{vmatrix}
0 & 1 \\
1 & 0
\end{vmatrix}$
$\begin{Vmatrix}
0 & 1 \\
1 & 0
\end{Vmatrix}$

8.8 多行公式
引入宏包
\section{多行公式}
% gather环境
\subsection{gather带编号}
\begin{gather}
a+b=b+a \\
f(x)=x^2+x+1
\end{gather}
\subsection{gather*不带编号}
\begin{gather*}
a+b=b+a \\
f(x)=x^2+x+1
\end{gather*}
% align环境,用&进行对齐
\subsection{align}
\begin{align}
a+b&=b+a \\
f(x)&=x^2+x+1
\end{align}
\subsection{align*}
\begin{align*}
a+b&=b+a \\
f(x)&=x^2+x+1
\end{align*}
% split环境,对其采用align环境对齐方式,编号在中间
\subsection{split}
\begin{equation}
\begin{split}
a+b&=b+a \\
f(x)&=x^2+x+1
\end{split}
\end{equation}
% cases环境,每行公式用&分割为两个部分,通常表示为值和后面的条件
\subsection{cases}
\begin{equation}
f(x)=\begin{cases}
1,&x>0 \\
0,&x=0 \\
-1,&x<0
\end{cases}
\end{equation}


9. 参考文献BibTex
9.1 编辑器设置
视情况而定
9.2 创建bib文件
@BOOK{mittelbach2004,
title = {The Companion},
publisher = {Addison-Wesley},
year = {2004},
author = {Frank Mittelbach and Michel Goossens},
series = {Tools and Techniques for Computer Typesetting},
address = {Boston},
edition = {Second}
}

9.3 指定参考文献样式
\bibliographystyle{plain} % 指定参考文献样式
9.4 完整代码
\documentclass{article}
\usepackage{ctex}
\bibliographystyle{plain} % 指定参考文献样式
\title{LaTeX中的参考文献BibTex}
\author{WSKH}
\date{\today}
\begin{document}
这是一个参考文献的引用:\cite{mittelbach2004}
% 根据当前目录下的10.bib文件,生成参考文献章节
% \nocite{*} % 默认情况下,只有被引用的参考文献才会被列出,如果想列出没被引用的参考文献可以使用\nocite{*}命令
\bibliography{10}
\end{document}

10. 自定义命令和环境
。。。用到再搜

