【论文写作】LaTeX排版工具 | 写给初学者的一篇容易上手的文档 下

简介: 【论文写作】LaTeX排版工具 | 写给初学者的一篇容易上手的文档

插入数学公式

为了使用 AMS-LaTeX 提供的数学功能,我们需要在导言区加载 amsmath 宏包:

\usepackage{amsmath}

数学模式

LaTeX 的数学模式有两种:行内模式 (inline) 和行间模式 (display)

  • 行内模式:在正文的行文中,插入数学公式;
  • 行间模式:独立排列单独成行,并自动居中。

在行文中,使用 $ … $ 可以插入行内公式,使用 \[ ... \] 可以插入行间公式,如果需要对行间公式进行编号,则可以使用 equation 环境

\begin{equation}
...
\end{equation}

上下标

\documentclass{article}
\usepackage{amsmath}
\begin{document}
Einstein 's $E=mc^2$.
\[ E=mc^2. \]
\begin{equation}
E=mc^2.
\end{equation}
\end{document}

注意,行内公式和行间公式对标点的要求是不同的:

  • 行内公式的标点,应该放在数学模式的限定符之外
  • 行间公式则应该放在数学模式限定符之内

在数学模式中,需要表示上标,可以使用 ^ 来实现(下标则是 _)。它默认只作用于之后的一个字符,如果想对连续的几个字符起作用,请将这些字符用花括号 {} 括起来,例如:

\[ z = r\cdot e^{2\pi i}. \]

根式与分式

根式\sqrt{·} 来表示,分式\frac{·}{·} 来表示(第一个参数为分子,第二个为分母)。

\documentclass{article}
\usepackage{amsmath}
\begin{document}
$\sqrt{x}$, $\frac{1}{2}$.
\[ \sqrt{x}, \]
\[ \frac{1}{2}. \]
\end{document}

在行间公式和行内公式中,分式的输出效果是有差异的。如果要强制行内模式的分式显示为行间模式的大小,可以使用 \dfrac, 反之可以使用 \tfrac。

运算符

一些小的运算符,可以在数学模式下直接输入;另一些需要用控制序列生成,如

\[ \pm\; \times \; \div\; \cdot\; \cap\; \cup\;
\geq\; \leq\; \neq\; \approx \; \equiv \]

连加、连乘、极限、积分等大型运算符分别用 \sum, \prod, \lim, \int 生成。他们的上下标在行内公式中被压缩,以适应行高。我们可以用 \limits 和 \nolimits 来强制显式地指定是否压缩这些上下标。例如:

$ \sum_{i=1}^n i\quad \prod_{i=1}^n $
$ \sum\limits _{i=1}^n i\quad \prod\limits _{i=1}^n $
\[ \lim_{x\to0}x^2 \quad \int_a^b x^2 dx \]
\[ \lim\nolimits _{x\to0}x^2\quad \int\nolimits_a^b x^2 dx \]

多重积分可以使用 \iint, \iiint, \iiiint, \idotsint 等命令输入:

\[ \iint\quad \iiint\quad \iiiint\quad \idotsint \]

定界符(括号等)

各种括号用 (), [], \{\}, \langle\rangle 等命令表示;注意花括号通常用来输入命令和环境的参数,所以在数学公式中它们前面要加 \。因为 LaTeX 中 | 和 \| 的应用过于随意,amsmath 宏包推荐用 \lvert\rvert\lVert\rVert 取而代之。

为了调整这些定界符的大小,amsmath 宏包推荐使用 \big, \Big, \bigg, \Bigg 等一系列命令放在上述括号前面调整大小。

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[ \Biggl(\biggl(\Bigl(\bigl((x)\bigr)\Bigr)\biggr)\Biggr) \]
\[ \Biggl[\biggl[\Bigl[\bigl[[x]\bigr]\Bigr]\biggr]\Biggr] \]
\[ \Biggl \{\biggl \{\Bigl \{\bigl \{\{x\}\bigr \}\Bigr \}\biggr \}\Biggr\} \]
\[ \Biggl\langle\biggl\langle\Bigl\langle\bigl\langle\langle x
\rangle\bigr\rangle\Bigr\rangle\biggr\rangle\Biggr\rangle \]
\[ \Biggl\lvert\biggl\lvert\Bigl\lvert\bigl\lvert\lvert x
\rvert\bigr\rvert\Bigr\rvert\biggr\rvert\Biggr\rvert \]
\[ \Biggl\lVert\biggl\lVert\Bigl\lVert\bigl\lVert\lVert x
\rVert\bigr\rVert\Bigr\rVert\biggr\rVert\Biggr\rVert \]
\end{document}

省略号

省略号用 \dots, \cdots, \vdots, \ddots 等命令表示。\dots 和 \cdots 的纵向位置不同,前者一般用于有下标的序列

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[ x_1,x_2,\dots ,x_n\quad 1,2,\cdots ,n\quad
\vdots\quad \ddots \]
\end{document}

矩阵

amsmath 的 pmatrix, bmatrix, Bmatrix, vmatrix, Vmatrix 等环境可以在矩阵两边加上各种分隔符

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[ \begin{pmatrix} a&b\\c&d \end{pmatrix} \quad
\begin{bmatrix} a&b\\c&d \end{bmatrix} \quad
\begin{Bmatrix} a&b\\c&d \end{Bmatrix} \quad
\begin{vmatrix} a&b\\c&d \end{vmatrix} \quad
\begin{Vmatrix} a&b\\c&d \end{Vmatrix} \]
\end{document}

使用 smallmatrix 环境,可以生成行内公式的小矩阵:

多行公式

  • 有的公式特别长,我们需要手动为他们换行;
  • 有几个公式是一组,我们需要将他们放在一起;
  • 有些类似分段函数,我们需要给它加上一个左边的花括号。

长公式

  • 不对齐(无须对齐的长公式可以使用 multline 环境)
\begin{multline}
x = a+b+c+{} \\
d+e+f+g
\end{multline}

如果不需要编号,可以使用 multline* 环境代替。

  • 对齐(需要对齐的公式,可以使用 aligned 次环境来实现,它必须包含在数学环境之内)

公式组

无需对齐的公式组可以使用 gather 环境,需要对齐的公式组可以使用 align 环境。他们都带有编号,如果不需要编号可以使用带星花的版本

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{gather}
a = b+c+d \\
x = y+z
\end{gather}
\begin{align}
a &= b+c+d \\
x &= y+z
\end{align}
\end{document}

请注意,不要使用 eqnarray 环境

分段函数

段函数可以用cases次环境来实现,它必须包含在数学环境之内。

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[ y= \begin{cases}
-x,\quad x\leq 0 \\
x,\quad x>0
\end{cases} \]
\end{document}

插入图片和表格

图片

在 LaTeX 中插入图片,有很多种方式。最好用的应当属利用 graphicx 宏包提供的 \includegraphics 命令。比如你在你的 TeX 源文件同目录下,有名为 a.png 的图片,你可以用这样的方式将它插入到输出文档中:

\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics{a.png}
\end{document}

图片可能很大,超过了输出文件的纸张大小,或者干脆就是你自己觉得输出的效果不爽。这时候你可以用 \includegraphics 控制序列的可选参数来控制。比如:

\includegraphics[width = .8\textwidth]{a.png}

这样图片的宽度会被缩放至页面宽度的百分之八十,图片的总高度会按比例缩放。

表格

tabular 环境提供了最简单的表格功能。它用 \hline 命令表示横线,在列格式中用 | 表示竖线用 & 来分列,用 \\ 来换行;每列可以采用居左、居中、居右等横向对齐方式,分别用 l、c、r 来表示。

\documentclass{article}
\usepackage{graphicx}
\begin{document}
\begin{tabular}{|l|c|r|}
 \hline
操作系统& 发行版& 编辑器\\
 \hline
Windows & MikTeX & TexMakerX \\
 \hline
Unix/Linux & teTeX & Kile \\
 \hline
Mac OS & MacTeX & TeXShop \\
 \hline
通用& TeX Live & TeXworks \\
 \hline
\end{tabular}
\end{document}

浮动 float

插图和表格通常需要占据大块空间,所以在文字处理软件中我们经常需要调整他们的位置。figure 和 table 环境可以自动完成这样的任务;这种自动调整位置的环境称作浮动(float)。我们以 figure 为例。

\documentclass{article}
\usepackage{graphicx}
\begin{document}
\begin{figure}[htbp]
\centering
\includegraphics{a.png}
\caption{有图有真相}
\label{fig:myphoto}
\end{figure}
\end{document}
  • 解释:
  1. htbp 选项用来指定插图的理想位置,这几个字母分别代表 here, top, bottom, float page,也就是就这里、页顶、页尾、浮动页(专门放浮动体的单独页面或分栏)。
  2. \centering 用来使插图居中
  3. \caption 命令设置插图标题,LaTeX 会自动给浮动体的标题加上编号。注意 \label 应该放在标题命令之后。

版面设置

页边距

设置页边距,推荐使用 geometry 宏包。

比如我希望,将纸张的长度设置为 20cm、宽度设置为 15cm、左边距 1cm、右边距 2cm、上边距 3cm、下边距 4cm,可以在导言区加上这样几行:

\documentclass{article}
\usepackage{geometry}
\geometry{papersize={20cm,15cm}}
\geometry{left=1cm,right=2cm,top=3cm,bottom=4cm}
\begin{document}
\end{document}

页眉页脚

设置页眉页脚,推荐使用 fancyhdr 宏包

比如我希望,在页眉左边写上我的名字,中间写上今天的日期,右边写上我的电话;页脚的正中写上页码;页眉和正文之间有一道宽为 0.4pt 的横线分割,可以在导言区加上如下几行:

\documentclass{article}
\usepackage{fancyhdr}
\pagestyle{fancy}
\lhead{\author}
\chead{\date}
\rhead{152xxxxxxxx}
\lfoot{}
\cfoot{\thepage}
\rfoot{}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\headwidth}{\textwidth}
\renewcommand{\footrulewidth}{0pt}
\begin{document}

首行缩进

CTeX 宏集已经处理好了首行缩进的问题(自然段前空两格汉字宽度)。因此,使用 CTeX 宏集进行中西文混合排版时,我们不需要关注首行缩进的问题。

但是,如果你选择不使用CTex宏集进行中文支持和版式设置,你需要做额外的一些工作:

  1. 调用 indentfirst 宏包。
  2. 设置首行缩进长度 \setlength{\parindent}{2\ccwd}。其中 \ccwd 是 xeCJK 定义的宏,它表示当前字号中一个中文汉字的宽度。

行间距

通过 setspace 宏包提供的命令来调整行间距。比如在导言区添加如下内容,可以将行距设置为字号的 1.5 倍:

\documentclass{article}
\usepackage{setspace}
\onehalfspacing
\begin{document}
\end{document}
  • 行距是字号的 1.5 倍;
  • 1.5 倍行距。

事实上,这不是设置 1.5 倍行距的正确方法,RuixiZhang 开发了 zhlineskip 宏包,提供了对中西文混排更细致的行距控制能力。

段间距

通过修改长度 \parskip 的值来调整段间距。例如在导言区添加以下内容:

\documentclass{article}
\addtolength{\parskip}{.4em}
\begin{document}
\end{document}

则可以在原有的基础上,增加段间距 0.4em。如果需要减小段间距,只需将该数值改为负值即可。

TeX 家族

带有 TeX 的词,仅仅是本文就已经提到了 TeX, LaTeX, XeLaTeX。通常中国学生面对不了解意思的一群形近单词,都会有一种「本能的恐惧」(笑~)。因此,「大神们」在为新手介绍 TeX 的时候,如果互相争论 「XXTeX 比 YYTeX 好」或者是「XXTeX 的 YYTeX 如何如何」,往往会蹦出下面这些带有 TeX 的词汇:

TeX, pdfTeX, XeTeX, LuaTeX, LaTeX, pdfLaTeX, XeLaTeX …

事实上,这部分的内容太过复杂,所以大家只需要将这部分的内容当做是一个参考就可以了。

TeX - LaTeX

TeX 是高德纳做出来的排版引擎,同时也是该引擎使用的标记语言(Markup Language)的名称。

LaTeX 则是 L. Lamport (1941年2月7日 – ) 教授开发的基于 TeX 的排版系统。实际上 LaTeX 利用 TeX 的控制命令,定义了许多新的控制命令并封装成一个可执行文件。这个可执行文件会去解释 LaTeX 新定义的命令成为 TeX 的控制命令,并最终交由 TeX 引擎进行排版。LaTeX 是基于一个叫做 plain TeX 的格式的。plain TeX 是高德纳教授为了方便用户,自己基于原始的 TeX 定义的格式,但实际上 plain TeX 的命令仍然十分晦涩。至于原始的 TeX 直接使用的人就更少了,因此 plain TeX 格式逐渐就成为了 TeX 格式的同义词,尽管他们事实上是不同的。

pdfTeX - pdfLaTeX

TeX 系统生成的文件是 dvi 格式,虽然可以用其他程序将其转换为例如 pdf 等更为常见的格式,但是毕竟不方便。

dvi 格式是为了排版而产生的,它本身并不支持所谓的「交叉引用」,pdfTeX 直接输出 pdf 格式的文档,这也是 pdfTeX 相对 TeX 进步(易用性方面)的地方。

pdfLaTeX 这个程序的主要工作依旧是将 LaTeX 格式的文档进行解释,不过此次是将解释之后的结果交付给 pdfTeX 引擎处理。

XeTeX - XeLaTeX

高德纳教授在实现 TeX 的当初并没有考虑到中日韩等字符的处理,而只支持 ASCII 字符。这并不是说中日韩字符就无法使用 TeX 引擎排版了,事实上 TeX 将每个字符用一个框包括起来(这被称为盒子)然后将一个个的盒子按照一定规则排列起来,因而 TeX 的算法理论上适用于任何字符。ASCII 字符简单理解,就是在半角模式下你的键盘能直接输出的字符。

在 XeTeX 出现之前,为了能让 TeX 系统排版中文,国人曾使用了 天元、CCT、CJK 等手段处理中文。其中 天元和CCT 现在已经基本不用,CJK 因为使用时间长且效果相对较好,现在还有人使用。

不同于 CJK 等方式使用 TeX 和 pdfTeX 这两个不直接支持 Unicode 字符的引擎,XeTeX 引擎直接支持 Unicode 字符。也就是说现在不使用 CJK 也能排版中日韩文的文档了,并且这种方式要比之前的方式更加优秀。

XeLaTeX 和 XeTeX 的关系与 pdfLaTeX 和 pdfTeX 的关系类似,这里不再赘述。

使用 XeTeX 引擎需要使用 UTF-8 编码。

所谓编码就是字符在计算机储存时候的对应关系。例如,假设有一种编码,将汉字「你」对应为数字「1」;「好」对应为数字「2」,则含有「你好」的纯文本文件,在计算机中储存为「12」(读取文件的时候,将「12」再转换为「你好」显示在屏幕上或打印出来)。

UTF-8 编码是 Unicode 编码的一种。

CTeX - MiKTeX - TeX Live

CTeX, MiKTeX, TeX Live 都是被称为「发行」的软件合集。他们包括了上述各种引擎的可执行程序,以及一些文档类、模板、字体文件、辅助程序等等。其中 CTeX 是建立在 MiKTeX 的基础之上的。

小结

TeX - pdfTeX - XeTeX - LuaTeX 都是排版引擎,按照先进程度递增(LuaTeX 尚未完善)。

LaTeX 是一种格式,基于 TeX 格式定义了很多更方便使用的控制命令。上述四个引擎都有对应的程序将 LaTeX 格式解释成引擎能处理的内容。

CTeX, MiKTeX, TeX Live 都是 TeX 的发行,他们是许许多多东西的集合。

其他

参考文档

相关文章
|
7月前
|
数据采集 自然语言处理 程序员
ChatGPT 调教日记(一):Markdown 解析器
ChatGPT 调教日记(一):Markdown 解析器
179 0
|
2月前
|
数据可视化 IDE 程序员
14 款超赞的代码片段生成工具😍(程序员必备)
在本文中,我将介绍 14 款代码片段图片生成器,每款工具都具备独特功能,能够满足不同需求,帮助你将代码转化为精美、易于分享的视觉内容。
123 13
14 款超赞的代码片段生成工具😍(程序员必备)
|
5月前
ChatGPT提问获取高质量答案的艺术PDF下载书籍推荐分享
**掌握ChatGPT高质量Prompt技巧的指南,教你艺术性提问以获取卓越答案。适用于各层次用户,提升内容创作效率。了解Prompt工程,作为对话模式触发器,有效引导ChatGPT生成人类般文本。点击获取PDF资源:[ChatGPT提问艺术](https://zhangfeidezhu.com/?p=334)**
66 0
ChatGPT提问获取高质量答案的艺术PDF下载书籍推荐分享
|
6月前
|
开发者
Markdown:解放排版,简洁高效的文字创作神器!
Markdown 是一种轻量级标记语言,以易读易写著称,常用于生成 HTML 页面。其简洁的语法加速了排版,尤其在写作、博客和文档领域广泛应用。虽然不擅长复杂排版,但能轻松实现字体大小调整、插入表格、图片和超链接等。Markdown 通过键盘快捷操作,避免了 Word 等软件的繁琐设置。本文将深入讲解 Markdown 语法,助你提升效率。Markdown 适合快速学习,兼容各种文本编辑器,支持导出多种格式,广泛应用于 GitHub 和多个在线平台。
91 0
揭秘Markdown:轻松掌握基础语法,让你的写作更高效、优雅!
揭秘Markdown:轻松掌握基础语法,让你的写作更高效、优雅!
轻松写作利器——Markdown常用语法介绍
家人们,今天我想向大家介绍一种广泛应用于写作和文档编辑的工具——Markdown。作为一种简单而高效的标记语言,Markdown在技术圈和写作领域越来越受欢迎。无论你是写程序代码、博客文章还是撰写文档,Markdown都能帮助你以简洁的方式展现内容。让我们一起来了解Markdown的常用语法吧!
94 0
轻松写作利器——Markdown常用语法介绍
|
敏捷开发 算法 Cloud Native
面试中的代码写作:如何撰写清晰、高效的示例代码
面试中的代码写作:如何撰写清晰、高效的示例代码
108 0
|
机器学习/深度学习
1 分钟搞定!ChatGPT + XMind 打造最高效的思维导图
1 分钟搞定!ChatGPT + XMind 打造最高效的思维导图
1241 1
|
自然语言处理
推荐 3 个英语论文写作辅助神器
推荐 3 个英语论文写作辅助神器
170 0
|
存储 前端开发 Linux
Markdown语法实战教学,从0到1
它的语法及其简单,看了本文,本🐱保证必然可以学会,接触之后你将不想在日常使用中触碰到那烦人的Word。对于那些运营者学会使用Markdown对于你的工作将是质的提升。 Markdown还是纯文本且拥有极强的可移植性,例如在Linux中你可能使用Word对你来说是一种阻碍,但Markdown则不会有此烦恼,对于Markdown来讲你可以在任何操作系统来运行创建它,例如:iPad OS、Mac OS、Linux、Windows、Android等。
157 0
Markdown语法实战教学,从0到1

相关实验场景

更多