LaTex 学习笔记
为了解决自动化报告之类的问题,测试了几种不同的方案之后,我选了 LaTex。利用 LaTex 生成 PDF 文档可定制性强,排版精美,虽然不像 HTML 可以互动,但是 LaTex 做起来更简单明了,另外如果要自动化出纸质版报告 LaTex 就是最好的选择。
这篇文章是看《一份不太简短的 LATEX 2ε 介绍》做的笔记,其实 LaTex 一点都不难学。另外,如果你也喜欢用 Markdown ,那么就更简单了,你也会喜欢上 LaTex 的。
LaTex 的命令有点多,有的命令有点长,一下子肯定记不住这么多,随用随查即可。
LaTex 文档布局
Markdown 其实就是极简版的 LaTex。LaTex中开始一个文档之前需要先指定文档的布局方式,不同的文档布局其排版特点不同。例如:
\documentclass{article}
\begin{document}
Small is beautiful.
\end{document}
上面是一个简单的文档示例。下面是文档类型命令参数示例,指定文档为论文版式,11磅字体,双面格式排版,适合打印在 A4 纸上面。
\documentclass[11pt,twoside,a4paper]{article}
加载 LaTex 宏包
LaTex 的基础功能有时可能达不到我们的排版需求,但是有很多可用的宏包来增强排版功能,加载宏包指令:
\usepackage[options]{packagename}
LaTex 中强制换行和分页
在 LaTex 中强制换行:
\\ #换行
\newline #换行
\* #换行并强制不分页
\newpage #强制分页
LaTex 中的标点符号
引号: LaTex 中的左引号和右引号是分别用不同的字符表示的
- 左单引号为 ` ,就是 Tab 键上面 Esc 键下面那个反引号
- 左双引号为 `` ,就是两个左单引号
- 右单引号为 ' ,就是一个普通的单引号,分号键右边那个键
- 右双引号为 '' ,就是两个普通的单引号
破折号,连字符和减号: LaTex 中横线符号
- ‘-’ 一个短横线,连字符
- ‘--’ 两个短横线,短破折号
- ‘---’ 三个短横线,长破折号
- '$-$' 两个美元符号夹着一个短横线,数学负号
波浪号: LaTex 中有两种波浪号
- ‘~’ 小波浪号
- ‘$\sim$’ 大波浪号
省略号:虽然可以用英文句点,但是跟真正的省略号占字符长度是有差异的
- ‘\ldots’ 省略号
LaTex 中的标题和章节
LaTex 中把文章分为章、节和子节的命令。例如 论文版式 文档分章节指令如下:
\section{...}
\subsection{...}
\subsubsection{...}
\paragraph{...}
\subparagraph{...}
\tableofcontents #在其出现的地方插入目录
\appendix #标志着文档附录材料的开始,之后页码改用字母标记
LaTex 中的字体和强调
LaTex 中一般用斜体字表示强调
\emph{text} #普通环境下是将 text 斜体表示,但是在已经指定字体为斜体的情况下,则是将 text 用正体显示
\textit{text 为斜体}
LaTex 文档环境
LaTex 文档不同环境排版形式不同,只要保持调用顺序,不同的环境可以嵌套。
\begin{environment}
text
\end{environment}
LaTex 中的环境参数:
- itemize,是一种简单列表
- enumerate,是带序号的列表
- description,是带描述的列表
- flushleft,左对齐的段落
- flushright,右对齐的段落
- center,文本居中的段落
- quote,引用段落
- verbatim,逐字打印,不执行任何 LaTex 命令
- \verb#text#,将井号(其他符号也行)包裹的 text 逐字打印,效果同上一条
- tabular,表格,表格环境有比较多的控制参数可以自定义表格的样式
字体、行距以及段落格式
LaTex 会自动根据文档的逻辑结构选择合适的字体,但也可以自己指定字体类型和尺寸。
行距和段落格式也可以自己指定。
\linespread{factor} # 指定行距,factor=1.3 时是 1.5 倍行距...
\setlength{\parindent}{0pt} # 段落开头 0 缩进
LaTex 中可以自定义很多版面格式,但是默认的版式自有默认的道理,详细参考《一份不太简短的 LATEX 2ε 介绍》文中第 5.4 章节。
LaTex 自动化布局之浮动体
当排版到图片和表格时,可能在这个页面放不下,但是又不可能把图片和表格分开放到不同的页面里,浮动体可以解决这个问题,把这个页面放不下的图片和表格浮动到下一页,本页面的余空白用后面的文本来填充。
表格和图片就是可以被浮动的对象,浮动命令:
\begin{figure}[htbp!] # 浮动图片,[ ]中是放置说明符
\begin{table}[htbp!] # 浮动表格,[ ]中是放置说明符
放置说明符制定了浮动体放置的位置:
- h,浮动体就放在当前页面上,适合小浮动体
- t,浮动体放在页面顶部
- b,放在页面底部
- p,放在一个专门的页面,页面仅含一个浮动体
- !,忽略阻止浮动体放置的大部分内部参数,例如一页中允许的浮动体的最大个数
浮动体还可以自定义标题,自动添加图和表的序号或字母编号:
\caption{caption text} # 为图和表添加标题
\listoffigures # 为图添加序号
\listoftables # 为表添加序号
保护脆弱命令
某些命令当出现在其他命令的参数中时可能会失效,这些命令被称为脆弱命令,需要使用 \protect 对其进行保护,强制其作为 LaTex 命令生效。
\footnote 或 \phantom 出现在 \section 命令的参数中时就需要使用 \protect 进行保护,但 \protect 只保护紧邻其右侧的一个命令。
LaTex 数学公式
数学符号和公式的排版是 LaTex 的一大利器,Markdown 中排版数学公式就是用的 LaTex 的功能。
LaTex 中数学公式使用 \(和 \)或者 $ 和 $ 或者 \begin{math} 和 \end{math}
包裹起来。不同符号包裹显示效果不同。
常用数学符号可以在《一份不太简短的 LATEX 2ε 介绍》文中第 3.10 数学符号表章节查询。
插入图片
简单的说 LaTex 支持插入的图片格式为 EPS,而要在文档中看见图片,还需要安装一个 PostScript 打印机驱动输出图片。要在文档中添加图片,需要先生成 EPS 格式的图片,然后利用 graphicx 宏包来插入图片
\usepackage[driver]{graphicx}
\includegraphics[key=values,...]{file}
第一个命令中的 driver 参数是‘从 dvi 到 PostScript’用的程序,最常用的是 dvis,由于 LaTex 中没有插入图形的标准,需要这个参数才能使 graphicx 选择合适的方法将图形插入到 .dvi 文件中。
第二个命令中 file 就是图形文件,key 有多个参数可用:
- width 指定图形的宽度
- heigth 指定图形的高度
- angle 逆时针旋转图形度数
- scale 缩放图形
举例说明:
\usepackage[dvis]{grahpicx}
\begin{figure}
\begin{center}
\includegraphics[angle=90, width=0.5\textwidth]{test}
\end{center}
\end{figure}
这段命令把 test.eps 中的图片逆时针旋转 90 度,然后缩放使得图形宽度为文本页面宽度的 0.5 倍,居中放置于文档中。
参考文献
可以通过 thebibliography 环境来产生参考文献。在文章中引用文献 \cite{marker} ,参考文献条目中列出参考文献详情 \bibitem{marker}, marker 是联系引用和参考文献详情的字符串标识。
对于一些大型的项目,有很多参考文献的,可以用 BibTeX 程序,BibTeX 通常被包含在 TeX 的发行版中,可以建立一个参考文献的数据库,方便在文档中使用。
索引
在排版工具书,参考书中应该会用到。生成关键词索引需要用 LaTex 和辅助软件 makeindex,而且需要编译 LaTex 源文件两次以生成索引。
LaTex 中需要用到宏包 makeidx :
\usepackage{makeidx}
\makeindex # 激活索引命令
\index{key} # 在文档的这个位置添加一个关键词为 key 的索引
\printindex # 列出所有的索引(关键词)
# 编译 LaTex 文档,之后使用 makeindex 程序处理后缀为 .idx 的文件
# 会产生一个 .ind 的索引文件
# 第二次编译 LaTex 文档,索引就会出现在 \printindex 指定的位置
定制页眉和页脚
定制文档的页眉和页脚需要用到宏包 fancyhdr,用到的时候再看宏包说明吧。
Verbatim 宏包
Verbatim 宏包重新实现了 Verbatim 环境,并且提供一个命令可以导入一个 ASCII 文件到文档中。
\verbatiminput{filename}
下载并安装 LaTex 宏包
当然可以手动从 CTAN 上下载宏包源文件,然后手动编译安装,不推荐这种方法,有点麻烦。类似 python 的 pip ,LaTex 也有自己的包管理工具,windows 下面可以用 MiKTeX 套件自带的包管理工具,Linux 下面可以:
tlmgr install 宏包名
这里还有一个王垠写的 Tex 学习资料:
http://www.ctex.org/documents/shredder/tex_frame.html
以及这里有个专门解决 LaTex 的中文支持问题的论坛:
http://www.ctex.org/HomePage
在这个世界上我只确定一件事。那就是人确定的事情越少越好。 -- 毛姆