Home LaTex 基本概念
Post
Cancel

LaTex 基本概念

[toc]

之前的章节说明了怎么安装 LaTex,如果觉着安装麻烦或者不想在本地安装,其实还有很多线上网站可以直接用。

Overleaf 就是一个在线编辑 LaTex 的网站,注册之后可以免费使用,虽然免费帐户有些同步、编译的限制,但对普通用户来说够用了。

之后的系列笔记我都会用 Overleaf 来测试,而系列笔记本身是对官方文档(一份(不太)简短的 LATEX2ε 介绍)的一个精减提炼。

一、 Hello World

话不多说,先上两个 hello world。

1
2
3
4
\documentclass{article}
\begin{document}
``Hello world!'' from \LaTeX.
\end{document}
1
2
3
4
\documentclass{ctexart}
\begin{document}
“你好,世界!”来自 \LaTeX{} 的问候。
\end{document}

在使用中文时,需要注意编译器要选 XeLaTex,不然会编译失败。

二、命令和结构

LaTex 的源代码为文本文件。这些文本除了文字本身,还包括各种命令,用在排版公式、划分文档结构、控制样式等等不同的地方。

命令形式

LaTex 命令大小写敏感,以反斜线 \ 开头,为以下两种形式之一:

  • 反斜线和后面的一串字母,如 \LaTeX,它们以任意非字母符号(空格、数字、标点等)为界限。
  • 反斜线和后面的单个非字母符号,如 \$

忽略空格

字母形式的命令忽略其后的所有连续空格。如果要人为引入空格,需要在命令后面加一对花括号阻止其忽略空格。

1
2
Shall we call ourselves \TeX users
or \TeX{} users?

命令参数

命令可以接收一些参数,参数的内容会影响命令的效果。

参数分为可选参数和必选参数:

  • 可选参数以方括号 [ 和 ] 包裹
  • 必选参数一般以花括号 { 和 } 包裹
  • 带星号 * 命令,带星号和不带星号的命令效果有一定差异

环境

环境用以令一些效果在局部生效,或是生成特殊的文档元素,用法为一对命令 \begin\end:

1
2
3
\begin{⟨environment name⟩}[⟨optional arguments⟩]{⟨mandatory arguments⟩}
...
\end{⟨environment name⟩}

分组

有些命令会对其后所有内容产生作用。

若要限制其作用范围,则需要使用分组。

使用一对花括号 { 和 } 作为分组,在分组中使用的命令被限制在分组内,不会影响到分组外的内容。

代码结构

LaTex 源码以一个 \documentclass 命令作为开头,它指定了文档使用的文档类。document 环境当中的内容是文档正文。

\documentclass\begin{document} 之间的位置称为导言区。在导言区中一般会使用 \usepackage 命令调用宏包,以及进行文档的全局设置。

1
2
3
4
5
6
\documentclass{...} % ... 为某文档类 
% 导言区
\begin{document}
% 正文内容
\end{document}
% 此后内容会被忽略

三、文档类和宏包

文档类

文档类规定了源码所要生成的文档类型:普通文章、书籍、演示文稿、个人简历等等。

语法为:\documentclass[⟨options⟩]{⟨class-name⟩}

LaTex 提供的标准文档类有以下三种:

  • article:文章格式的文档类,广泛用于科技论文、报告、说明文档等。
  • report:长篇报告格式的文档类,具有章节结构,用于综述、长篇论文、简单的书籍等。
  • book:书籍文档类,包含章节结构和前言、正文、后记等结构。

可选参数 ⟨options⟩ 为文档类指定选项,以全局地规定一些排版的参数,如字号、纸张大小、 单双面等等。

比如调用 article 文档类排版文章,指定纸张为 A4 大小,基本字号为 11pt,双面排版:\documentclass[11pt,twoside,a4paper]{article}

标准文档类可指定选项:

  • 10pt, 11pt, 12pt:指定文档的基本字号。默认为 10pt。
  • a4paper, letterpaper, …:指定纸张大小,默认为美式信纸 letterpaper (8.5 × 11 英寸)。 可指定选项还包括 a5paper,b5paper,executivepaper 和 legalpaper。
  • twoside, oneside:指定单面/双面排版。双面排版时,奇偶页的页眉页脚、页边距不同。article 和 report 默认为 oneside,book 默认为 twoside
  • onecolumn, twocolumn:指定单栏/双栏排版。默认为 onecolumn。
  • openright, openany:指定新的一章 \chapter 是在奇数页(右侧)开始,还是直接紧跟着上一页开始。report 默认为 openany,book 默认为 openright。对 article 无效。
  • landscape:指定横向排版。默认为纵向。
  • titlepage, notitlepage:指定标题命令 \maketitle 是否生成单独的标题页。article 默认为 notitlepage,report 和 book 默认为 titlepage。
  • fleqn:令行间公式左对齐。默认为居中对齐。
  • leqno:将公式编号放在左边。默认为右边。
  • draft, final:指定草稿/终稿模式。草稿模式下,断行不良的地方会在行尾添加一个黑色方 块。默认为 final。

宏包

在使用 LaTex 时,时常需要依赖一些扩展来增强或补充 LaTex 的功能,比如排版复杂的表 格、插入图片、增加颜色甚至超链接等等。这些扩展称为宏包。

调包语法:\usepackage[⟨options⟩]{⟨package-name⟩}

帮助语法:texdoc ⟨pkg-name⟩

四、文件类型

LaTex 源码是以 .tex 为后缀的文本文件,但在 LaTex 使用和编译过程中还会遇到很多其它后缀的文件,对应文件的说明如下:

  • .sty 宏包文件。宏包的名称与文件名一致。
  • .cls 文档类文件。文档类名称与文件名一致。
  • .bib BIBTEX 参考文献数据库文件。
  • .bst BIBTEX 用到的参考文献格式模板。
  • .log 排版引擎生成的日志文件,供排查错误使用。
  • .aux LATEX 生成的主辅助文件,记录交叉引用、目录、参考文献的引用等。 .toc LATEX 生成的目录记录文件。
  • .lof LATEX 生成的图片目录记录文件。
  • .lot LATEX 生成的表格目录记录文件。
  • .bbl BIBTEX 生成的参考文献记录文件。
  • .blg BIBTEX 生成的日志文件。
  • .idx LATEX 生成的供 makeindex 处理的索引记录文件。
  • .ind makeindex 处理 .idx 生成的用于排版的格式化索引文件。
  • .ilg makeindex 生成的日志文件。
  • .out hyperref 宏包生成的 PDF 书签记录文件。

五、文件组织

当编写长篇文档时,例如当编写书籍、毕业论文时,单个源文件会使修改、校对变得十分困难。将源文件分割成若干个文件,例如将每章内容单独写在一个文件中,会大大简化修改和校对的工作。

命令 \include 用来在源代码里插入文件:

1
2
3
\include{⟨filename⟩}
\include{chapters/a.tex} % 相对路径
\include{/home/Bob/file.tex} % 绝对路径

命令 \include 在读入文件之前会另起一页,但有时我们并不想这样,而是用 \input 命令进行插入:\input{⟨filename⟩}

最后工具宏包 syntonly 可令 LaTex 编译后不生成 DVI 或者 PDF 文档,只排查错误,编译速度会快不少。

1
2
\usepackage{syntonly}
\syntaxonly

六、术语和概念

  • 引擎

    ​ 全称为排版引擎,是编译源代码并生成文档的程序,如 pdfTEX、XƎTEX 等。有时也称为编译器。

  • 格式

    ​ 定义了一组命令的代码集。LaTex 就是最广泛应用的一个格式。

  • 编译命令

    ​ 实际调用的、结合了引擎和格式的命令。如 xelatex 命令是结合 XƎTEX 引擎和 LaTex 格式的一个编译命令。

几个编译命令的特点:

  • latex

    ​ 虽然名为 latex 命令,底层调用的引擎其实是 pdfTEX。该命令生成 dvi(Device Inde-pendent) 格式的文档,用 dvipdfmx 命令可以将其转为 pdf。

  • pdflatex

    ​ 底层调用的引擎也是 pdfTEX,可以直接生成 pdf 格式的文档。

  • xelatex

    ​ 底层调用的引擎是 XƎTEX,支持 UTF-8 编码和对 TrueType / OpenType 字体的调用。 当前较为方便的中文排版解决方案基于 xelatex。

  • lualatex

    ​ 底层调用的引擎是 LuaTEX,这个引擎在 pdfTEX 引擎基础上发展而来,除了支持 UTF-8 编码和对 TrueType / OpenType 字体的调用外,还支持通过 Lua 语言扩展 TEX 的功能。lualatex 编译命令下的中文排版支持需要借助 luatexja 宏包。

This post is licensed under CC BY 4.0 by the author.