1. Latex 介绍
什么是LATEX ?LATEX 是一种格式。为免误会,初次接触这一概念的读者可以粗略地将 LATEX 理解成是对 TEX 的一层封装。LATEX 使用 TEX 程序作为自己的排版引擎。LATEX 最初的设计目标是分离内容与格式,以便作者能够无需关注版式设计,只需专注与内容创作就能得到高质量排版的作品。
LaTeX的优点:
- 绝大多数时候,用户只需专注于一些组织文档结构的基础命令,无需(或很少)操心文档 的版面设计。
- 具有专业的排版输出能力,产生的文档看上去就像“印刷品”一样。
- 具有方便而强大的数学公式排版能力,无出其右者。
- 很容易生成复杂的专业排版元素,如脚注、交叉引用、参考文献、目录等。
- 强大的可扩展性。世界各地的人开发了数以千计的 LATEX 宏包用于补充和扩展 LATEX 的功能。
- 能够促使用户写出结构良好的文档——而这也是 LATEX 存在的初衷。
- LATEX 和 TEX 及相关软件是跨平台、免费、开源的。无论用户使用的是 Windows,macOS (OS X),GNU/Linux 还是 FreeBSD 等操作系统,都能轻松获得和使用这一强大的排版工 具,并且获得稳定的输出。
同时,有优点就会存在缺点,LaTeX的缺点如下:
- 不容易排查错误。LATEX 作为一个依靠编写代码工作的排版工具,其使用的宏语言比 C++ 或 Python 等程序设计语言在错误排查方面困难得多。它虽然能够提示错误,但不提供调 试的机制,有时错误提示还很难理解。
- 不容易定制样式。LATEX 提供了一个基本上良好的样式,为了让用户不去关注样式而专注于文档结构。但如果想要改进 LATEX 生成的文档样式则是十分困难。
- 相比“所见即所得”的模式有一些不便,为了查看生成文档的效果,用户总要不停地编译。
LaTeX的安装这里不予介绍,以下都使用的是TeXstudio软件进行LaTeX编译,当然VSCode等软件也是可以的。
2. LaTeX基础
首先我们来看一个简单的LaTeX程序,如下:
% 导言区
\documentclass{article}
% 正文区
\begin{document}
Hello World
\end{document}
以这个程序为例,在 \begin{document}
之前的部分为导言区,在 \begin{document}
和 \end{document}
之间的部分为正文区。
2.1 导言区
LaTeX导言区可以导入各种宏包,以使用相应宏包的功能,一条语句中可以导入多个宏包,语法如下:
\usepackage{宏包1, 宏包2}
常用的宏包如下:
ctex
:中文支持
amsmath
:LaTeX数学公式支持
graphicx
:插入图片
algorithm
和 algorithmic
:算法排版
listings
:插入代码块
导言区的 \documentclass{article}
规定了文档类型,
- 对于英文,可以用
book、article
和beamer
; - 对于中文,可以用
ctexbook、ctexart
和ctexbeamer
,这些类型自带了对中文的支持。
另外,一般也可以在\documentclass处设置基本参数,笔者通常设置默认字体大小为12pt,纸张大小为A4,单面打印。需要将第一行的内容替换为:
\documentclass[12pt, a4paper, oneside]{article}
2.2 正文区
正文区输入想要编辑的文字与排版即可,事实上,后面我们的讲解基本上都是针对正文区。
3. 导言详解
导言区除了可以导入各种包之外,还可以设置时间、作者、日期等等,接下来我们详细讲解下导言区的设置。
3.1 设置时间、作者、日期
可以使用以下几个命令在封面设置作者、时间、日期。
\author{}
:设置作者
\title{}
:设置作者
\date{}
:设置作者
注意,如果设置了以上三个属性后,必须在正文区的第一行写上 \maketitle
,不然以上三条命令不会起到任何作用,且只能加在第一行。代码示例如下:
\documentclass[12pt, a4paper, oneside]{article}
\usepackage{ctex} %导入中文包
\title{飞鸟集}
\author{泰戈尔}
\date{\today}
\begin{document}
\maketitle
"England"
\end{document}
3.2 全局设置
指定的文档类型的一般格式如下
\documentclass[⟨options⟩]{⟨class-name⟩}
其中 option
为可选的全局设置。
通用的可选设置如下:
设置 | 含义 |
---|---|
10pt,11pt112pt | 指定文档的基本字号。缺省为10pt |
a4paper, letterpaper,… | 指定纸张大小,默认为美式纸张letterpaper。可指定选项还包括a5paper,b5paper,executivepaper 和legalpaper |
fleqn | 令行间公式左对齐(缺省为居中) |
leqno | 将公式编号放在左边(缺省为右边) |
titlepage, notitlepage | 指定标题命令\maketitle 是否生成单独的标题页。article 缺省为notitlepage,report 和book 缺省为titlepage。 |
onecolumn, twocolumn | 指定单栏/双栏排版 |
twoside, oneside | 指定单面/双面排版。双面排版时,奇偶页的页眉页脚、页边距不同。article和report 缺省为单面排版,book 缺省为双面。 |
landscape | 指定横向排版。缺省为纵向。 |
openright, openany | 指定新的一章\chapter 是在奇数页(右侧)开头,还是直接紧跟着上一页开头。report 缺省为openany,book 缺省为openright。【对article 无效】 |
4. 文件组织
当编写较大规模的LATEX 源代码,如书籍、毕业论文等,你有理由将源代码分成若干个文件而不是写到一堆,比如很自然地每章写一个文件,那就要用到下面的命令
\include{⟨filename⟩}
⟨filename⟩ 为文件名,如果和要编译的主文件不在一个目录中,则要加上相对或绝对路径,⟨filename⟩ 可以不带扩展名,此时默认为 .tex
,其它文件必须带扩展名。
值得注意的是 \include
在读入⟨filename⟩ 之前会另起一页。有的时候我们并不需要这样,而是用 \input
命令,它纯粹是把文件里的内容插入:
\input{⟨filename⟩}
另外 LaTex 提供了一个 \includeonly
命令来组织文件,用于导言区,指定只载入某些文件:
\includeonly{⟨filename1 ⟩,⟨filename2 ⟩,...}
导言区使用了 \includeonly
后,正文中不在其列表范围的 \include
命令不会起效。