Latex

Tex是一种语言也是一个排版引擎,但Tex的元命令很难使用,后来有了衍生版Plain Tex、Latex。

Latex环境

  1. 在线Latex编辑编译器

    https://www.sharelatex.com/

    https://www.overleaf.com/

  2. 本地安装

    需要两个软件,一个是latex编译器,一个是IDE。

    编译器:在这里使用Tex Live,它是一个Tex的发行版,包括了编译器,宏包、字体等等。下载地址:Tex Live Tex Live清华镜像

    IDE:可选项很多,可以参考:https://www.zhihu.com/question/19954023

    借一张图

语法

Latex是在一个.tex的源文件中编写。语法主要分为三种:命令、数据、注释。

  1. 命令

    分为普通命令和环境,二者可以相互嵌套。

    • 普通命令

      \起始,大多只有一行

    • 环境

      包含一对起始声明和结尾声明,用于多行内容的场合。

  2. 数据

    数据就是普通文本内容。

  3. 注释

Latex结构

  1. 物理结构

    指源文件的组织形式,包含序言(preambel)和正文两部分。

  2. 逻辑结构

    指最终输出文档的结构,包括标题、目录、章节等。

物理结构

序言用来完成一些设置,比如指定文档类型,引入宏包,定义命令、环境等。文档的内容则放在正文。

示例:

\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

初次使用目录、或章节图表等层次结构发生变化时,需要执行两次编译命令。

使用

字符

输入文字字符可分为:普通字符、控制符、特殊字符、预定义字符串、注音符号等。

  1. 普通字符

  2. 控制符

    #$%^&_{}等是特殊控制符,使用时需要加上\,而\本身要使用\textbackslash来输入,因为\\是换行指令。

  3. 特殊字符

  4. 预定义字符

  1. 注音符号

字体设置

拉丁文字体主要有三大类:衬线字体、无衬线字体、等宽字体。衬线字体画笔的边缘部分有些修饰,类似于中文的宋体、仿宋等;无衬线字体的画笔是平滑的,类似于中文的黑体。

% 默认 罗马字体
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为排版对象和尺寸和位置定义了一系列宏变量,以便在排版时重用。

对齐方式

  1. 居中

    \begin{center}
    \end{center}
    
  2. 左对齐

    \begin{flushleft}
    \end{flushleft}
    
  3. 右对齐

    \begin{flushright}
    \end{flushright}
    
  4. 缩进和段间距

    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的排版算法是完美的。

插入多幅图
  1. 并排,共享标题

    \begin{figure}[htbp]
    \centering
    \includegraphics{left.pdf}
    \includegraphics{right.pdf}
    \caption{xxx}
    \end{figure}
    
  2. 并排摆放,各有标题

    \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}
    
  3. 并排摆放,各有标题,各有子标题

    \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为例),就可以正常显示中文了。