LaTeX学习笔记

25次阅读
没有评论

共计 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
PDF pdftex pdflatex
XETEX 引擎 PDF xetex xelatex
LuaTEX 引擎 PDF 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

正文完
post-qrcode
 0
三毛
版权声明:本站原创文章,由 三毛 于2023-12-22发表,共计3930字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)