Tex是一种语言也是一个排版引擎,但Tex的元命令很难使用,后来有了衍生版Plain Tex、Latex。
Latex环境
-
在线Latex编辑编译器
https://www.sharelatex.com/
https://www.overleaf.com/
-
本地安装
需要两个软件,一个是latex编译器,一个是IDE。
编译器:在这里使用Tex Live,它是一个Tex的发行版,包括了编译器,宏包、字体等等。下载地址:Tex Live Tex Live清华镜像
IDE:可选项很多,可以参考:https://www.zhihu.com/question/19954023
借一张图
语法
Latex是在一个.tex的源文件中编写。语法主要分为三种:命令、数据、注释。
-
命令
分为普通命令和环境,二者可以相互嵌套。
-
普通命令
以
\
起始,大多只有一行 -
环境
包含一对起始声明和结尾声明,用于多行内容的场合。
-
-
数据
数据就是普通文本内容。
-
注释
Latex结构
-
物理结构
指源文件的组织形式,包含序言(preambel)和正文两部分。
-
逻辑结构
指最终输出文档的结构,包括标题、目录、章节等。
物理结构
序言用来完成一些设置,比如指定文档类型,引入宏包,定义命令、环境等。文档的内容则放在正文。
示例:
\documentclass[options]{class} % 文档类声明
\usepackage[options]{package} % 引入宏包
...
\begin{document} % 正文
...
\end{document}
常用的文档类有:article、report、book,options基本常用:
Latex内核小,很多功能通过宏包来实现。
逻辑结构
一份文档的开头通常有标题、作者、摘要等信息,之后是章节等层次结构,内容则散布于层次结构之间。
标题、作者、日期等命令要放在\maketitle
命令之前。
示例:
\title{LaTex Notes}
\author{}
\date{\today}
\maketitle
article和report可以有摘要,book没有,摘要环境用法:
\begin{abstract}
...
\end{abstract}
Latex提供了七种层次结构,每个高级层次结构可以包含若干低级层次。
\part{...} % level -1
\charpter{...} % level 0 article不支持
\section{...} % level 1
\subsection{...}% level 2
\subsubsection{...} %level 3
\paragraph{...} % level 4
\subparagraph{...} % level 5
% 如果不想添加层次的标题,可以使用*
\section*{...}
可用\tableofcontents
命令来生成目录,深度可自己制定,例如:
\setcounter{tocdepth}{2} % 指定深度
\tableofcontents % 列出目录
可以使用如下命令生成插图、表格目录:
\listoffigures
\listoftables
初次使用目录、或章节图表等层次结构发生变化时,需要执行两次编译命令。
使用
字符
输入文字字符可分为:普通字符、控制符、特殊字符、预定义字符串、注音符号等。
-
普通字符
-
控制符
#$%^&_{}
等是特殊控制符,使用时需要加上\
,而\
本身要使用\textbackslash
来输入,因为\\
是换行指令。 -
特殊字符
-
预定义字符
-
注音符号
字体设置
拉丁文字体主要有三大类:衬线字体、无衬线字体、等宽字体。衬线字体画笔的边缘部分有些修饰,类似于中文的宋体、仿宋等;无衬线字体的画笔是平滑的,类似于中文的黑体。
% 默认 罗马字体
Hello world
% 粗体
\textbf{Hello world}
% 下划线
\underline{Hello world}
% 斜体
\textit{Hello world}
% 字号
{\tiny Hello world}
{\scriptsize Hello world}
{\footnotesize Hello world}
{\small Hello world}
{\normalsize Hello world}
{\large Hello world}
{\Large Hello world}
{\LARGE Hello world}
{\huge Hello world}
{\Huge Hello world}
换行和换页符
换行需要两个回车换行,中间夹一个空行。或者在句尾添加\par
、\newline
、\\
也可以实现换行,但newline
和\\
不能形成缩进。
换页直接添加\newpage
长度
Latex的长度单位有:
Latex为排版对象和尺寸和位置定义了一系列宏变量,以便在排版时重用。
对齐方式
-
居中
\begin{center} \end{center}
-
左对齐
\begin{flushleft} \end{flushleft}
-
右对齐
\begin{flushright} \end{flushright}
-
缩进和段间距
Latex正文第一个段落缺省不进行首行缩进,可以调用
identfirst
宏包使得第一段也缩进首行。段落首行缩进的举例可以用\parindent
变量来控制,段落之间的举例可以用\parskip
变量来控制。\usepackage{identfirst} ... \setlength{\parindent}{2em} \addtolength{\parskip}{3pt}
Latex缺省行间距为单倍行距。可以使用
\linespread
命令来控制间距\linespread{1.3} % 1.5倍行距 \linespread{1.6} % 2倍行距 % 会把正文和目录脚注图表标题等行距也该了,如果只改正文,需要使用宏包 \usepackage{setspace} % 该宏包提供了几个环境设置局部行距 \singlespacing \onehalfspacing \doublespacing \serstretch{1.25} % 任意行距 \begin{doublespacing} ... \\ ... \end{doublespacing}
摘录和脚注和边注
摘录:
脚注:
边注:
列表
上述列表的缺省行间距较大,如要节省空间,可以考虑Bernd Schandl 9的paralist 宏包,它提供了一系列压缩列表和行间列表环境。
盒子
待补充
插入图片
Latex支持使用点阵图片格式JPEG和PNG,也支持矢量格式EPS和PDF,对于示意图应该首选矢量格式,包含大自然自然彩色的图像应该选JPEG,人工点阵图应该选PNG。
使用包\usepackage{graphicx}
,然后指定图片路径\graphicspath{{./images/}}
,最后在想要插入图片的地方使用\includegraphics{xxxx.xx}
,如果要设定图片的格式,可使用includegraphics[scale=1.5, angle=45, width=3cm, height=4cm]{xxxx.xx}
figure环境
对图片的位置进行调整可以使用figure环境:
\begin{figure}[htbp]
\centring
\includepgraphics{xxx.jpg}
\caption{有图有真相} % 设置插图标题
\label{fig:myphoto} % 放在标题后,表示该插图的引用
\end{figure}
htbp选项用来指定插图的理想位置,这几个字母分别代表here这里、top页顶、bottom页尾、float page浮动页(专门放浮动环境的单独页面)
也可以使用这几个字母的任意组合,但不建议单独使用h,因为Latex的排版算法是完美的。
插入多幅图
-
并排,共享标题
\begin{figure}[htbp] \centering \includegraphics{left.pdf} \includegraphics{right.pdf} \caption{xxx} \end{figure}
-
并排摆放,各有标题
\begin{figure}[htbp] \centering \begin{minipage}{60pt} \includegraphics{left.pdf} \caption{left} \end{minipage} \hspace{10pt} \begin{minipage}{60pt} \includegraphics{right.pdf} \caption{right} \end{minipage} \end{figure}
-
并排摆放,各有标题,各有子标题
\begin{figure}[htbp] \centering \subfloat[subleft title]{ \label{fig:subfig_a} \intcludegraphics{left.pdf} } \hspace{10pt} \subfloat[subright title]{ \label{fig:subfig_b} \intcludegraphics{right.pdf} } \caption{title} \lanel{fig:subfig} \end{figure}
改进
subfloat缺少宽度参数,而子标题最多和子图一样宽,太长会出现折行,为了避免这种情况,可以在
\subfloat
里再嵌套个minipage,因为后者是有宽度设置。\begin{figure}[htbp] \centering \subfloat[subleft title]{ \label{fig:subfig_a} \begin{minipage}[t]{60pt} \centering \intcludegraphics{left.pdf} \end{minipage} } \hspace{10pt} \subfloat[subright title]{ \label{fig:subfig_b} \begin{minipage}[t]{60pt} \centering \intcludegraphics{right.pdf} \end{minipage} } \caption{title} \lanel{fig:subfig} \end{figure}
数学
添加宏包\usepackage{amsmath}
,公式分为行间模式和独立模式。
其他的数学符号参考:
写作模板
一些Latex模板的网站:
http://www.latextemplates.com/
https://github.com/MartinThoma/LaTeX-examples
http://uk.tug.org/training/thesis/
https://www.overleaf.com/
https://www.latexstudio.net/
文件扩展名
中文问题
添加宏包\usepackage{xeCJK}
,并切换到XeLatex编译器(以TeXstudio为例),就可以正常显示中文了。