目的:掌握latex的用法,能够应用其进行数学论文的排版。
背景:之前写论文的时候用到latex进行排版,最近帮朋友排版,突然发现主要内容忘记的差不多了,因此再次学习,这次争取掌握90%的用法,尽量熟练使用。
计划:复习基本用法,搜集模板【3小时】;练习【看情况,至少搞定三篇数学文章的排版】。
LaTeX是什么?
一个排版工具。由美国计算机科学家Leslie Lamport开发的基于TeX的排版系统,适用于大型论文排版和数学公式输入。
LaTeX能用来做什么?
主要是排版。生成从简单信件到完整书籍的各种文档,尤其适用于生成高印刷质量的科技和数学类文档。
怎么使用LaTeX?
安装配置
TeX套装:
TeX Live,支持不同的操作系统平台;MiKTeX,Windows系统;MacTeX,Mac系统。
TeX编辑器:
TexStudio- 开源免费的编辑器,界面集成度好。其源于:TeXmaker开源免费的编辑器。
TeXShop (Mac 版) - MacTeX 自带的编辑器,界面比较简洁,与 TeXworks 功能接近。
TeXPad(Mac 版) - Mac OS 平台下的收费编辑器。
在线LaTeX平台:【推荐使用,在线、易用、协作平台】
Overleaf:https://www.overleaf.com/
基本入门
命令和代码结构:
LATEX命令和环境LATEX中命令以反斜线\开头,后跟一串字母或者单个非字母符号
LATEX命令大小写敏感
LATEX中还包括环境,用以令一些效果在局部生效,或是生成特殊的文档元素。LATEX环境的用法为一对命令\begin和\end
源代码结构
\doucumentclass[
%导言区,一般会使用\usepackage命令调用宏包,并进行文档的全局设置
\begin{document}
%正文内容
\end{document}
%此后内容会被忽略
文件的组织方式
编辑长文档时,可把源文件分割成若干个文件,然后在源代码里使用\include{
在导言区,\include{
在导言区,可调用syntonly包,使用\syntaxonly命令,令LaTeX编译后不生成文档,只排查错误,加快编译速度。
备注:使用LaTeX排版的过程是,我们调用结合了引擎和格式的编译命令,生成一定格式的文档。
文字排版
首先考虑文档的编码,根据需要选择不同的编码方式。比如,用于以英文为主的西文文档可使用ASCII编码,西欧语言可使用Latin-1编码,中文可使用GBK编码,LaTeX默认使用适用多国字符的UTF-8编码。在进行中文排版时,可使用ctex文档类和宏包,需注意的是源代码需要保存为UTF-8编码格式,并使用xelatex或lualatex编译。
其次,LaTeX中的字符,常用的有:
空格,空格键和TAB键都可以
转义符,\
注释符,%
省略号,\ldots或者\dots
分段,空行或者\par
手动换行,\\
另外,LaTeX会自动处理词距、行距、断行和断页的问题,但是也可以手动设置。比如:
~,输入一个不会断行的空格
\\[
\\*[
\newline,手动断行,只能用于文本中,不可用于公式、表格
\newpage,手动断页,双栏排版中另起一栏
\clearpage,手动断页,另起一页
文档元素
LaTeX的三大类文档支持生成章节标题,且自动编号的命令,分别是:
\chapter{⟨title⟩} ,只在book和report文档类有定义。
\section{⟨title⟩}
\subsection{⟨title⟩}
\subsubsection{⟨title⟩}
\paragraph{⟨title⟩}
\subparagraph{⟨title⟩}
生成目录的命令是:\tableofcontents。另外,itletoc、tocloft等宏包提供了具体定制目录项格式的功能。
文档结构划分的命令:
\frontmatter前言部分,book文档类
\mainmatter正文部分,book文档类
\backmatter后记部分,book文档类
\appendix,附录
生成标题的命令:\maketitle,需要给定标题和作者等信息,\title{
交叉引用的命令:
\lable{
\ref{
\pageref{
生成脚注和边注的命令:
\footnote{
\footnotemark + \footnotetext{
\marginpar[⟨left-margin⟩]{⟨right-margin⟩}
特殊环境
生成有序列表,最多嵌套四层:\begin{enumerate}\item...\end{enumerate}。其列表符号可由命令\labelenumi到\labelenumiv定义。
生成无序列表,最多嵌套四层:\begin{itemize}\item...\end{itemize}。其列表符号可由命令\labelitemi到\labelitemiv定义。
生成带关键字的列表,关键字以粗体显示:\begin{description}\item[⟨item title⟩]...\end{description}。
备注:enumitem宏包可定制各种列表间距。
对齐环境:\begin{center}...\end{center},居中对齐;\begin{flushleft}...\end{flushleft},左对齐;\begin{flushright}...\end{flushright},右对齐。
对齐命令:\centering ,居中对齐; \raggedright,右对齐; \raggedleft,左对齐。和对齐环境的区别是,对齐环境会在上下文中产生一个额外的间距,对齐命令不产生。
引用环境:quote,用于较短的文字,首行不缩进;quotation,用于引用若干段文字,首行缩进;verse,用于诗歌排版,首行悬挂缩进。
摘要环境:abstract,默认只在标准文档类中的article和report文档类可用,一般用于紧跟\maketitle命令之后介绍文档的摘要。如果文档类指定了titlepage选项,则单独成页;反之,单栏排版时相当于一个居中的小标题加一个quotation环境,双栏排版时相当于\section*定义的一节。
代码环境:verbatim,带星号的版本更进一步将空格显示成“␣”;要排版简短的代码或关键字,可使用\verb命令:\verb⟨delim⟩⟨code⟩⟨delim⟩。另外,有一些宏包可用与优化代码的输入,比如:
verbatim宏包,优化了verbatim环境的内部命令,并提供了\verbatiminput命令用来直接读入文件生成代码环境。
fancyvrb宏包提供了可定制格式的Verbatim环境。
listings宏包更进一步,可生成关键字高亮的代码环境,支持各种程序设计语言的语法和关键字。
表格环境:tabular
图片
LaTeX本身不支持插图功能,需要使用graphicx宏包辅助支持。命令是:\includegraphics[⟨options⟩]{⟨filename⟩},使用的时候注意编译命令支持的图像格式。
盒子
Latex可画各种盒子,包括水平盒子,带框的水平盒子,垂直盒子和标尺盒子。命令分别为:
水平盒子,\mbox{...},或者 \makebox[⟨width⟩][⟨align⟩]{...}
带框的水平盒子,\fbox{...},或者 \framebox[⟨width⟩][⟨align⟩]{...}
垂直盒子,\parbox[⟨align⟩][⟨height⟩][⟨inner-align⟩]{⟨width⟩}{...}, 或者 \begin{minipage}[⟨align⟩][⟨height⟩][⟨inner-align⟩]{⟨width⟩}...\end{minipage}
标尺盒子,\rule[⟨raise⟩]{⟨width⟩}{⟨height⟩}
浮动体
LaTeX预定义了两类浮动体环境,figure 和 table。一个浮动体内可放多张图表,可使用subfig宏包的\subfloat命令排版子图。
给浮动体加标题并自动加编号,\caption{...}
生成浮动体目录,\listoffigures 或 \listoftables
排版数学公式——LaTeX的强项
不复杂,就是需要记忆的内容多,但是也有规律,根据需要选用合适的宏包和命令
一个好用的宏包,\usepackage{amsmath},对多行公式排版提供了有力支持。
\usepackage{amssymb},有丰富的符号。
行内公式,$公式$
行间公式不带编号,\[公式\],或者equation*环境,或者displaymath环境
行间公式带编号,equation环境
多行公式对齐,align环境
多行公式不对齐,gather环境
公用编号的多行公式,amsmath宏包提供了诸如aligned、gathered等环境,与equation环境套用。split环境和aligned环境用法类似,也用于和equation环境套用,区别是split只能将每行的一个公式分两栏,aligned允许每行多个公式多栏。
排版样式设定
字体和字号
LaTeX中有常用的设置字体样式和字号的命令,比如\rmfamily 或 \textrm{...} 设置罗马无衬线字体,{\small ...} 设置小号字体。还有\fontsize{⟨size⟩}{⟨base line-skip⟩} 命令,可以设置任意大小的字号。还可以使用各种字体宏包来进行字体样式和字号的设置,比如使用fontspec宏包更改字体,在ctex宏包或文档类中更改中文字体,使用unicode-math宏包配置Unicode数学字体等。
文字装饰和强调
使用\underline命令可添加不能换行的下划线,ulem宏包的\uline命令可添加可换行的下划线。\epmh命令可把文字变为斜体以强调。
段落格式和间距
三个和长度有关的命令:
自定义长度的命令,\newlength{\⟨length command⟩}
给长度赋值的命令,\setlength{\⟨length command⟩}{⟨length⟩}
增加长度的命令,\addtolength{\⟨length command⟩}{⟨length⟩}
在导言区设置行距,命令 \linespread{⟨factor⟩},其中缺省的行距是1.2倍字号大小。如果想在段落中改变行距,需要用\selectfont命令使\linespread命令的改动立即生效,注意行距的改变直到文字分段时才生效,故一般需要在段落结束的花括号内添加\par分段命令。
段落的格式有左缩进、右缩进、首行缩进,设置长度的命令分别为:
\setlength{\leftskip}{⟨length⟩}
\setlength{\rightskip}{⟨length⟩}
\setlength{\parindent}{⟨length⟩}
控制段落缩进的命令为 \indent 和 \noindent。
水平间距:LaTeX默认将单词之间的空格转化为水平间距。也可调整水平间距,命令为 \hspace,生成的水平间距可能会因为断行而消失,\hspace*命令可避免这一情况。\quad 相当于\hspace{1em},\qquad 相当于 \hspace{2em}。命令\stretch{⟨n⟩}生成一个特殊弹性长度,参数⟨n⟩为权重。\fill命令相当于\strtch{1}。
垂直间距:在页面中,段落、章节标题、行间公式、列表、浮动体等元素之间的间距是LATEX预设的。比如\parskip,默认设置为0pt plus 1pt。也可人为增加段落之间的间距,命令为\vspace,为了避免段落之间的垂直间距因断页而被吞掉,可使用 \vspace*命令。\vspace也可用\stretch设置无限延伸的垂直长度。\vspace也可在段落内使用,不过不会断行。另外LATEX还提供了\bigskip,\medskip,\smallskip来增加预定义长度的垂直间距。
页面和分栏
页面的设置包括纸张大小、页边距的设置,可以使用长度命令\setlength调整。也可以使用宏包进行设置,比如调用geometry宏包进行页面设置,命令为:
\usepackage{geometry}
\geometry{⟨geometry-settings⟩}
也可以将参数指定为宏包的选项:\usepackage[⟨geometry-settings⟩]{geometry},其中⟨geometry-settings⟩多以⟨key⟩=⟨value⟩的形式组织。
举例:符合Microsoft Word习惯的页面设定是A4纸张,上下边距1英寸,左右边距1.25英寸,于是我们可以通过两种方式设置:\usepackage[left=1.25in,right=1.25in,top=1in,bottom=1in]{geometry}
% or like this:
\usepackage[hmargin=1.25in,vmargin=1in]{geometry}。
页面内容的垂直对齐:LaTeX默认将页面内容在垂直方向上分散对齐,也可在垂直方向向顶部对齐,命令分别为:\flushbottom ,\raggedbottom
分栏:切换单/双栏排版的命令,\onecolumn ,\twocolumn[⟨one-column top material⟩],可选参数,用于排版双栏之上的一部分单栏内容。另外,multical宏包提供了较好的分栏解决方案,它提供了简单的multicols环境自动产生分栏,如以下环境将内容分为3栏:\begin{multicols}{3}...\end{multicols}。multicol宏包能够在一页之中切换单栏/多栏,也能处理跨页的分栏,且各栏的高度分布平衡。但代价是在multicols环境中无法正常使用table和figure等浮动体环境,它会直接让浮动体丢失。multicols环境中只能用跨栏的table*和figure*环境,或者用float宏包提供的H参数固定浮动体的位置
页眉页脚
\pagestyle{⟨page-style⟩}命令\thispagestyle只影响当页的页眉页脚样式:\thispagestyle{⟨page-style⟩}⟨page-style⟩参数为样式的名称
LaTeX预设了四种页眉页脚的样式,可以通过命令 \pagestyle{
\pagenumbering{