共计 3930 个字符,预计需要花费 10 分钟才能阅读完成。
一些概念
TeX:是 Donald E. Knuth(高德纳)发明的排版系统,本质上是一门宏语言,官网:https://ctan.org/,TeX 用户组:https://tug.org/
LaTeX:LaTeX 是 TeX 的扩展,又称为宏集,简单说就是 TeX 的命令太原始了,为了方便写作,Leslie Lamport 给 TeX 语言加入了很多新的功能,这些他写的功能跟 TeX 加在一起被称为 LaTeX。LaTeX 当然也是一门语言,是基于 TeX 的一门语言,LaTeX 工作组:https://www.latex-project.org/
TeX 发行版:现今的两个主流发行版为 TeX Live(团队负责,安装包大,https://tug.org/texlive/)和 MiKTeX(个人项目,安装包小,https://miktex.org/),两者都集成了一个简单的 LaTeX 源代码编辑器 TeXworks。用户在安装完毕后,可直接使用 TeXworks 编写和编译 LaTeX 源代码。
TeXstudio 编辑器:是跨平台的免费软件,专门用来编辑 .tex 文件的,下载地址:https://texstudio.sourceforge.net/
在线手册 :用 texdoc 命令调出,例如texdoc symbols
用来查看数学符号表,或https://texdoc.org/index.html
编译命令
文档格式 | plain TEX 格式 | LATEX 格式 | |
---|---|---|---|
TEX 引擎 | DVI | tex | N/A |
pdfTEX 引擎 | DVI | etex | latex |
pdftex | pdflatex | ||
XETEX 引擎 | xetex | xelatex | |
LuaTEX 引擎 | luatex | lualatex |
DVI:表示“设备无关(Device Independent)”,用 dvipdfmx 命令可以将其转为 pdf。
xelatex:支持 UTF-8 编码和对 TrueType/OpenType 字体的调用。当前较为方便的中文排版解决方案基于 xelatex。
lualatex:底层调用的引擎是 LuaTEX,这个引擎在 pdfTEX 引擎基础上发展而来,除了支持 UTF-8 编码和对 TrueType/OpenType 字体的调用外,还支持通过 Lua 语言扩展 TEX 的功能。lualatex 编译命令下的中文排版支持需要借助 luatexja 宏包。
LaTeX 语法规则
LaTeX 语法规则非常简单,由命令和环境构成。LaTeX 代码结构一般分为前导 (preamble) 和主体 (body) 两部分,前导部分主要用于申明文档类型、排版样式、所使用的宏包等;主体部分主要用于确定标题、章节、目录等文章结构及创作文档内容。
命令
LaTeX 命令通常由三部分组成:\ 命令名[可选参数]{必选参数}
,对大小写敏感,以反斜线 \ 开头,有以下两种形式之一:
- 反斜线和后面的一串字母,如 \LaTeX。它们以任意非字母符号(空格、数字、标点等)为界限
- 反斜线和后面的单个非字母符号,如 $
有些命令的参数可以带一个星号 *,带星号和不带星号的命令效果有一定的差异。初次接触这些概念时,可以粗略地把星号看作一种特殊的可选参数。
字母形式的命令会忽略其后的所有连续空格。如果要人为引入空格,需要在命令后面加一对花括号阻止其忽略空格。
\documentclass{article}
\begin{document}
\TeX users
or \TeX{} users?
\end{document}
环境
用法为一对命令 \begin 和 \end:
\begin{⟨环境名⟩}[⟨可选参数⟩]{⟨必选参数⟩}
…
\end{⟨环境名⟩}
分组
LaTeX 使用一对花括号 {} 作为分组,在分组中使用的命令被限制在分组内,不会影响到分组外的内容。
源代码结构
LaTeX 源代码以一个 \documentclass 命令作为开头,它指定了文档使用的文档类。% 表示注释,在这个字符之后直到行末,所有的字符都被忽略。
以 document 环境为界,document 环境前是导言部分,能设置全局参数;document 环境内部是正文部分;环境之后的部分被忽略。
\documentclass[⟨可选参数⟩]{⟨文档类名⟩}
% 导言区
\begin{document}
% 正文内容
\end{document}
% 此后内容会被忽略
文档类
\documentclass 指定的文档类有很多种,其中 LaTeX 提供的三个标准文档类分别为:文章 article、报告 report、书籍 book,支持中文排版的文档类:ctexart、ctexrep、ctexbook。
article 类型文档字体大小默认为 10pt,纸张大小默认为 letterpaper,文字分栏默认为 onecolumn(不分栏),打印时默认单面打印,可以根据需要进行设置:\documentclass[12pt, b5paper, twocolumn, twoside]{article}
\part{}创建篇、\chapter{}创建章(article 类型文档不能使用该命令)、\section{}创建一级节、\subsection{}创建二级节、\subsubsection{}创建三级节。
\documentclass{ctexart}
\setcounter{secnumdepth}{0} % 表示自动编号章节层次仅包括 \part 和 \chapter,1 为 \section 2 为 \subsection 3 为 \subsubsection 默认值
\begin{document}
\title{文档标题}
\author{作者}
\date{2024-01-01}
\maketitle % 显示命令,用来显示导言区添加的相关信息
\begin{abstract}
这是摘要,这是摘要
\end{abstract}
\textbf{Keywords: keyword1, keyword2, keyword3} % 设置关键词
\newpage
% \setcounter{tocdepth}{0} % 设置目录层次仅包括 \part 1 为 \section 2 为 \subsection 3 为 \subsubsection 默认值
\tableofcontents % 自动创建一个目录,带 * 章节命令不会出现在目录中
\thispagestyle{empty} % 让目录页面不带有全文格式
\newpage
\setcounter{page}{1} % 设置目录页之后页码为 1
\part{part 名称}
\section{一级标题}
\subsection{二级标题}
\paragraph{段落标题}
带标题的段落,带标题的段落
\subparagraph{亚段落标题}
带标题的亚段落,带标题的亚段落
\section{一级标题 2}
\subsection{二级标题 2}
内容 2,内容 2
\section*{一级标题 3} % 命令后加星号会取消自动编号
内容 3,内容 3
\end{document}
article 类型文档纸张方向默认为 portrait(纵向),可以调用 lscape 宏包中的 \begin{landscape} \end{landscape}环境将默认纵向调整为 landscape(横向)。
article 类型文档页边距可以通过调用 geometry 宏包进行调整:\usepackage[margin = 25mm]{geometry}。
article 类型文档章节标题字体格式可以通过调用 sectsty 宏包进行调整。
宏包
在使用 LaTeX 时,时常需要依赖一些扩展来增强或补充 LaTeX 的功能,,这些扩展称为宏包。调用宏包的方法非常类似调用文档类的方法:\usepackage[可选参数]{宏包名}
。
\usepackage 可以一次性调用多个宏包,在 宏包名 中用逗号隔开。这种用法一般不要指定选项。
CJK 宏包对中文字体的支持比较麻烦,已经不再推荐直接使用。xeCJK 及 luatexja 宏包封装了对汉字排版细节的处理功能。
ctex 宏包和文档类进一步封装了 CJK、xeCJK、luatexja 等宏包,使得用户在排版中文时不用再考虑排版引擎等细节。ctex 宏包本身用于配合各种文档类排版中文,而 ctex 文档类对 LaTeX 的标准文档类进行了封装,包括 ctexart、ctexrep、ctexbook 等。源代码须保存为 UTF-8 编码,并使用 xelatex 或 lualatex 命令编译。
文件的组织方式
LaTeX 提供了命令 \include 用来在源代码里插入文件:\include{⟨filename⟩}
。
⟨filename⟩ 为文件名(不带 .tex 扩展名),如果和要编译的主文件不在一个目录中,则要加上相对或绝对路径。
值得注意的是 \include 在读入 ⟨filename⟩ 之前会另起一页。有的时候并不需要这样,可以用 \input 命令,它纯粹是把文件里的内容插入:\input{⟨filename⟩}
。
LaTeX 还提供了一个 \includeonly 命令来组织文件,用于导言区,指定只载入某些文件。导言区使用了 \includeonly 后,正文中不在其列表范围的 \include 命令不会起效:\includeonly{⟨filename1⟩,⟨filename2⟩,…}
。
最后介绍一个实用的工具宏包 syntonly。加载这个宏包后,在导言区使用 \syntaxonly 命令,可令 LaTeX 编译后不生成 DVI 或者 PDF 文档,只排查错误,编译速度会快不少:
\usepackage{syntonly}
\syntaxonly
如果想生成文档,用 % 注释掉 \syntaxonly 命令即可。
参考:https://mirrors.zju.edu.cn/CTAN/info/lshort/chinese/lshort-zh-cn.pdf