前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LaTeX 总决式 | 重剑无锋,大巧不工

LaTeX 总决式 | 重剑无锋,大巧不工

作者头像
小小詹同学
发布2019-08-28 15:24:28
1.8K0
发布2019-08-28 15:24:28
举报
文章被收录于专栏:小詹同学小詹同学

1. 简介

任何技术的产生与发展都是有血有肉的,忽略这段历史,仅仅学习冰冷的技巧,无疑是悲哀的。千古兴亡多少事?悠悠,不尽长江滚滚流。

关于 LaTeX 的发展史及与所见即所得系统(WYSIWYG),比如微软的 Word 间的较量,我已在《什么是LATEX?》《LATEX&Word如何选择》,两篇文章中说的很清楚了,不再赘述。有兴趣的同学可以移步阅读。

此处,关于 TEX 做一个简单小结:

  • 免费
  • TEX 是最精确、最高级的标记语言
  • 版面更专业,数学公式尤其赏心悦目
  • 结构化,它的文档结构清晰
  • 跨平台,它几乎可以运行于所有操作系统
  • 语法不如 HTML 和 XML 严谨、清晰
  • 过程繁琐,需要编译,不能实时查看结果

群里有人问我 TeX、LaTeX、CTEX、TeX Live 之间有什么区别?这明显是没看过我前两篇文章呀,怀着万分悲痛的心情,再给大家小结一下哈:

  • TEX 是一种语言也是一个排版引擎 ,引擎的基本功能就是把字排成行,把行排成页,涉及到断字、断行、分页等算法。
  • LaTeX 是 TEX 的众多宏集之一,只需引用一小段代码,就能实现事先定义好的功能。
  • CTEX 和 TeX Live 都是 TEX 的套装,其中包含了LaTeX,pdfLaTeX,XELaTeX等多种宏集,字体,文档模板,辅助程序等。

[注]: TEX - pdfTeX - XETeX - LuaTeX 都是排版引擎,按照先进程度递增(LuaTeX 尚未完善)

1.1 LaTeX 极速体验

也许你曾听说过 LaTeX 或者 TEX ,但从未使用过。立即体验一下?

  1. 前往 http://tug.org/texlive/ 下载安装TEX Live。
  2. 打开编辑器 TeXworks,复制下面源代码到窗口内,保存文件至某处。
  3. 选择编译方式 XELaTeX,点击绿色编译按钮,右侧将弹出编译完成的 pdf 文件。
\documentclass{ctexart}
\begin{document}
    中文测试文档
\end{document}

让我们赶紧开始准备软件吧!

2. 软件的准备

2.1 关于CTEX套装

自2016年3月之后,CTEX 套装一直没有更新;另外 XELATEX 的出现, 让中文使用的很多难题得以解决, 不借助 CTEX 套装也可以很好地处理。

这里我推荐用 TEX Live ,想使用 CTEX 的同学可以自行下载安装。下载地址:http://www.ctex.org/CTeXDownload. CTEX 套装分为Basic 版和 Full 版, 选其中一个下载即可。建议使用 Full 版。安装完成后要立即更新。

2.2 TEX Live 的安装

我是64位的 Windows,下面以Windows为例

  1. 到 http://tug.org/texlive/ 下载自己机器对应的 TEX Live 的镜像或安装包。
  2. 双击 install- tl-windows.exe,开始安装。
  3. 更新. 这一步只是建议, 不是必须的。

TEX Live 的宏包管理器是 tlmgr (TeX Live manager). 在安装路径 C:\texlive\2015\bin\win32 下可以找到 tlmgr-gui.

也可以在 WinEdt 工具栏点击图标 启动 tlmgr-gui. 但是, tlmgr 的图形界面使用 Perl 编写, 容易造成系统假死. 故建议使用下面的方法更新.

  1. 使用 Win + R 组合键打开 “运行” 对话框,然后输入 cmd 回车, 打开命令提示符窗口.
  2. 先更新tlmgr. 执行命令
  3. 再更新TEX Live. 执行命令
tlmgr update -self
tlmgr update -all
2.3 编辑器的安装

TEX 的编写和编译, 需要借助TEX 编辑器。当然, 不使用专门的编辑器,仅用记事本和 DOS, 也可以使 TEX 工作。这里不做详细论述,推荐大家使用编辑器进行编写。

TEX Live 使用配搭有多种, 这里只说两个:

  1. TEX Live + TeXworks;
  2. TEX Live + WinEdt + Sumatra PDF.
TEX Live + TeXworks

TEX Live 自带编辑器TeXworks,其界面非常朴素, 默认没有语法高亮,字体也很小,需要对 TeXworks 进行简单的设置。

对 TeXworks 的字体及大小、语法高亮、默认编译方式等进行设置如上图所示,推荐:

  1. 字体选择为 Verdana, 字号 14 磅;
  2. 将默认编译方式设为 XeLaTeX;
  3. 对编译方式可以按自己的喜好排序, 比如图中依次为XeLaTeX, pdfLaTeX, BibTeX等.
TEX Live + WinEdt + Sumatra PDF

很多用户习惯使用 WinEdt, 安装 TEX Live 之后也可以选配WinEdt 以及 Sumatra PDF.

在 WinEdt 的发布网站 http://www.winedt.com/ 下载安装即可. 安装过程中, WinEdt会自动配置连接到 TEX Live.

接着安装 Sumatra PDF, 方便文件的反向查找.下载网址:http://www.sumatrapdfreader.org/free-pdf-reader.html.

安装 Sumatra PDF 后, 要对 WinEdt 配置, 使用 Sumatra PDF 作为默认的 pdf 阅读器. 在 WinEdt 菜单栏选 Options —> Execution Modes —>PDF Viewer.

WinEdt 默认的字号比较小, 建议修改.点击菜单 Options, 选择 Options Interface,弹出窗口, 左边边框寻找 Font 选项,对右边的文本进行编辑.

至此, 软件的安装已经完成了! 编译下前面例子, 测试安装是否成功了呢?

3. LATEX 的基本知识

建议: 在用中学. 边用边学, 建立了基本的概念以后, 在使用中根据需求去解决问题. LATEX 的功能和宏包有很多, 每个人用到的功能是有限的; 不主张看完一本大部头的书, 才动手上机测试.

  • 第一步: 把 TEX Live 安装到你的机器里.
  • 第二步: 找一份 LATEX 的入门介绍看看, 一边看一边在电脑上测试编译.
  • 建议开辟一个 “测试区” 文件夹, 用来调试某段 TEX 文档, 或者用来学习、测试各种命令的功能.
3.1 一篇LATEX文档的基本构成

一篇LATEX 文档, 由三个部分组成: 文档类声明, 导言区, 正文.

\documentclass{article}
\usepackage{hyperref}
\begin{document}
    Hello World!
\end{document}

文档类就是\documentclass{...}, 里面声明你要书写什么样式的文档, 常用的有: article, book,report.

可以自己定义一个新的文档类, 对文章的总体样式和各个细节进行声明, 或者定义自己的命令.

正文, 即\begin{document}\end{document} 之间的部分.

导言区, 夹在\documentclass{...}\begin{document} 之间的部分, 放置需要使用的宏包,或者自己规定一些新的命令.

\documentclass{ctexart}
\newcommand{\hubei}{中国湖北}
\begin{document}
    我来自\hubei.
\end{document}

上例中, 我们自己定义了一个全新的命令\hubei, 在正文使用该命令时, 得到的就是该命令的内容“中国湖北”. 还可以定义更复杂的结构或内容.

可能你需要定义的东西太多, 这时可以把它们写在一个文档里面, 这种文档就是宏包. 使用时在导言区使用\usepackage{...}, 即可以插入该文档的内容.

例如我们想书写一个数学符号. 该数学符号已经由宏包amssymb定义过了, 这样只需要在导言区写上\usepackage{amssymb}, 加载该宏包即可.

\documentclass{ctexart}
\usepackage{amssymb}
\begin{document}
    $\unrhd$
\end{document}
3.2 文档的编译方法
3.2.1 编译方式的选择

几种常见的编译方式: XeLaTeX, pdfLaTeX, LaTeX. 推荐使用XeLaTeX, pdfLaTeX 编译, 直接得到pdf 文档.

不同的编译方法, 对应的源文件一般略有不同. 比如第一页的例子,使用pdfLATEX 编译得到的pdf 文件, 其中文是乱码. 需要增加UTF8 选项:

\documentclass[UTF8]{ctexart}
\begin{document}
    中文文档测试.
\end{document}

不同的编译方式, 得到不同的效果. 下图可见XeLaTeX 处理得更好, 这也是推荐使用XeLaTeX 的一个重要原因.

\documentclass[UTF8]{ctexart}
\begin{document}
    方程$x^3=1$有3个复根. \\
    方程$x^3=1$ 有3 个复根. \\
    方程~$x^3=1$ 有~3 个复根.
\end{document}

左侧是pdfLaTeX 编译的结果, 右侧是XeLaTeX 编译的结果.

如果文档加入了交叉引用、目录、导航书签等, 需要编译至少两遍, 才能使相关部分正确显示.文档编码的类型, 可以在编辑器下方的状态栏看到.

3.2.2 中文文档的处理

中文的实现, 推荐使用CTEX 宏集.

下面是article类中文文档的例子.

\documentclass{ctexart}
\begin{document}
\title{中文\LaTeX{} 测试}
\author{姓名}
\maketitle
\tableofcontents
\section{测试}
中文测试.
\section{再测试}
中文测试.
\end{document}

下面是book类中文文档的例子.

\documentclass{ctexbook}
\begin{document}
\title{中文\LaTeX{} 测试}
\author{姓名}
\maketitle
\tableofcontents
\chapter{测试}
中文测试.
\chapter{再测试}
中文测试.
\end{document}

以下是使用beamer文档类编写幻灯片的一个示例.

\documentclass{beamer}
\usepackage[UTF8]{ctex}
\usetheme{Warsaw}
\begin{document}
\begin{frame}{中文演示文档}
\begin{itemize}[<+->]
\item 这是一个幻灯片;
\item 你可以使用XeLaTeX 编译;
\item 也可以使用pdfLaTeX 编译;
\item 推荐使用XeLaTeX 编译.
\end{itemize}
\end{frame}
\end{document}

4. 编辑器的基本知识

LATEX 的入门都看过了, 但你是否感觉无从下手?因为你需要面对的是TeXworks, WinEdt等编辑器, 下面我们简要介绍一下.

4.1 TeXworks 的基本用法
  1. 注释功能

Ctrl+Shift+]: 对选定区域进行注释, 该段不参与编译; Ctrl+Shift+[: 取消注释.

  1. 自动补全

使用方法是在输入若干字母后按Ctrl+Tab 或者Shift+Tab. 比如, 输入\i 之后按Shift+Tab 就会得到\item, 输入xg 之后按Shift+Tab 会得到\gamma, 输入\bth 之后按Shift+Tab 会得到

\begin{theorem}

\end{theorem}

如果有几种可能的补全方式, 多按几次就会在这几种方式之间循环.具体可以参考TeXworks 的帮助文档, 里面还介绍了很多快捷键命令.

4.2 WinEdt 的基本用法

最新版本为WinEdt 10.3, 这里以WinEdt 9.1 为例,两个版本没有大的区别.

  1. 环境的自动补全

输入一个环境名, 比如\begin{definiton}, 紧接着输入一个右括号}, 即输入

\begin{definiton}}

窗口会自动出现与之配对的\end{definiton}, 即得到

\begin{definiton}
*
\end{definiton}
  1. 工具栏的介绍
  1. 状态栏的介绍
  1. 右键菜单介绍
  1. 查找与替换
  • Ctrl+R, 在弹出的窗口填入要查找和替换的对象.
  • 用正则表达式完成查找和替换.
%比如要把文中所有形如
\url{user@website.com}
%的文字换成形如
\href{mailto:user@website.com}{user@website.com},
%搜索
\\url\{\(0*\)\}
%替换为
\\href\{mailto:\0\}\{\0\}
%即可
4.3 不用编辑器亦可

没有WinEdt 之类的编辑器也行?事实上, 不借助编辑器, 仅用记事本和DOS, 也可以使TEX工作.

  1. 书写文档. 打开记事本(假定文件保存在D 盘. 在D 盘点击右键, 选择“新建文本文档”),在记事本窗口写一小段完整的TEX 文档.
\documentclass{ctexart}
\begin{document}
中文文档测试.
\end{document}
  1. 保存文档. 在记事本窗口点击“另存为”, 记文件名为mytest.tex, 文件保存在D 盘.注意选择保存类型为所有文件, 否则上述操作只会得到一个名为mytest.tex.txt 的文本文档.
  2. 编译文档. 打开DOS窗口(win 键+ R, 输入“cmd”, 回车), 在DOS窗口下进入D 盘(输入“d:” 回车), 键入“pdflatex mytest” 并回车, 使文件得以编译.
  3. 预览文档. 打开D 盘, 可以看到mytest.pdf 文件.另外, 若想使用XeLaTeX编译, 保存文件时, 编码要选为UTF-8. 执行命令“xelatex mytest”, 即得到mytest.pdf 文件.

显然, 专业的编辑器更方便, 更擅长于TEX文档的编辑和编译.

5. 初学LaTeX 容易忽视的细节

有一些初学者容易忽视的小问题, 不能说是错误, 但这些是不规范、不专业的,我觉得有必要在学习之前就指出来加以规避.

5.1 括号
5.2 函数名
  • max; sin; ln; sup 等记号要用$ \max, \sin, \ln, \sup $ 输入, $ max, sin, ln, sup $ 得到的是max; sin; ln; sup, 这不符合运算符要用正体的要求.
  • 有一些数学符号没有现成的LATEX 命令, 比如arccot, 需要在导言区调用amsmath 宏包, 并定义:
\DeclareMathOperator{\arccot}{arccot}

%再使用$\arccot x$ 就可以得到arccot x.
5.3 标点符号
  • 使用半角标点, 后边要键入一个空格.
  • 建议全文使用半角标点, 无论是中文或英文文章. 英文中不应该有全角标点, 而数学环境中就根本不能有全角标点.
  • 存在的问题: 顿号、书名号、破折号等中文特有的标点怎么办? 个人折衷的办法是只在这些特定的情形使用全角标点.
  • 无论偏向于全角或半角, 强烈建议使用实心的句号, 只要书写的是自然科学的文章.因为, 比如使用全角句号的句子结尾处的“

” 容易和数学式“

” 混淆吧.

6. 遇到问题怎么办

6.1 查看错误信息

编译过程中跳出的窗口内有编译信息. 若出错, 编译过程会暂停,并提示出错原因. 此时不要急于关闭编译窗口或按回车忽略, 而应查看窗口中的出错信息, 可迅速找到错误.

最常见的出错信息:

  • ! Paragraph ended before … was complete. 环境、括号等不匹配.
  • ! Undefined control sequence. 可能是命令敲错, 或缺少相应宏包.
  • ! LaTeX Error: File '…' not found. 找不到相应文件.

这些出错信息一般浅显易懂, 并且显示错误所在行号.编译信息会保存为log 文件. 比如编译的源文件为mytest.tex, 编译完后, 在同一文件夹下会出现mytest.log 文件.

有些复杂的问题, 可以直接copy 出错信息, 网络搜索查找解决方案.

6.2 寻找解决方案
  • 资料《LATEX 2" 用户手册》、《Mathmode》分别是解决文本、公式排版的重要参考文档;
  • 查看宏包说明. TEX 系统自带了大量的宏包说明文档和例子. 在WinEdt 菜单栏点击Help -->TeX Doc, 输入宏包名查找.
  • 求助于网络. 主要是CTEX 论坛: http://bbs.ctex.org/. 建议先搜索再提问. Google 可以解决我们遇到的很多很多问题.

7. LATEX 究竟强在哪里

7.1 数学公式精美

TEX 的创立就是为了解决数学公式的排版, 这个是TEX 天生的强项. 大量资料有详尽阐述, 这里不再赘述. 数学公式排版的经典文档:

  • 名著《The LATEX Companion》
  • 《LATEX 2" 用户手册》作者: 邓建松, 建议精读此文.
  • 一个示例丰富的必备文档是《Mathmode》. 该文档是很好的备查手册.
7.2 编号自动生成

所有的编号都不用操心. 对公式、图表、章节、参考文献等的编号, 都是LATEX 自动完成的.

请复制测试下例. 先编译两遍; 然后去掉例子中的注释符号%, 再编译两遍, 看编号有何变化.

\documentclass[UTF8]{ctexart}
\begin{document}
\title{文档测试}
\author{Superman}
\maketitle
\tableofcontents
\section{测试一节}
公式:
\begin{equation}
1+1=2.
\end{equation}
%\section{插入一节}
% 新公式:
%\begin{equation}
%1+1.5=2.5.
%\end{equation}
\section{再来一节}
又一个公式:
\begin{equation}
1+2=3.
\end{equation}
\end{document}

比较编译的结果可以看到, 所有的编号都是自动调整的.

7.3 交叉引用便捷

对需要引用的公式、图、表、参考文献, 给它取一个名字, 可以很方便地进行引用. 这正是LATEX的一个特色.

下面是一个对公式引用的例子. 请试试编译该例子:

  1. 先编译一遍, 看结果; 编译第二遍, 注意有什么不同.
  2. 去掉例子中的注释符号%, 再编译两遍, 看编号及引用有何变化.
\documentclass{ctexart}
\begin{document}
\section{A test section}
\begin{equation}\label{eq-1}
1+1=2.
\end{equation}
等式\ref{eq-1} 是众所周知的.
%\section{A new section}
%\begin{equation}\label{eq-1.5}
%1+1.5=2.5.
%\end{equation}
% 等式\ref{eq-1.5} 也不难理解.
\section{Another section}
\begin{equation}\label{eq-2}
1+2=3.
\end{equation}
等式\ref{eq-2} 是简单的.
\end{document}

一个重要的常识: 在LATEX 中, 公式、图、表等的引用, 是通过命令\label{name}\ref{name}的配合使用实现的.

在实际使用中, 我们调用amsmath 宏包, 用命令\eqref{...} 使引用公式的编号是带括号的:

\documentclass{ctexart}
\usepackage{amsmath}
\begin{document}
\section{A test section}
\begin{equation}\label{eq-1}
1+1=2.
\end{equation}
等式\eqref{eq-1} 是众所周知的.
\end{document}
7.4 各种自动生成

LATEX 文档中好些部分都不是“手动” 写出来的, 给一些简单的指令, LATEX 就会帮你完成. 比如:

  • 目录. 在文档中需要加入目录出写上\tableofcontents, 编译就可以了.
  • 参考文献. 如果经常写学术文章, 可以建一个自己的参考文献库, 用BibTEX 可以很方便地得到文后的参考文献列表, 无需自己动手写一个字.
  • 索引. 在导言区加\makeindex, 在文档末尾加\printindex. 在需要索引处加入\index{词条名}便可.
  • 页眉. 在页眉可以自动加入文章名、作者名、章节名等信息.
7.5 模板使用方便

国际知名的学术杂志或出版公司, 一般都提供了自己的LATEX 模板, 比如Elsevier, Springer, IEEE 等等. 学术会议的投稿通常也会指定相应的LATEX 模板.

这些模板就真正实现了, 让作者把注意力集中于文章内容的书写, 而无需理会其排版的外形.

7.6 原文档像草稿

LATEX 源文件会看起来有些凌乱, 但这完全不会影响到结果文档的美观. 而本章的题目: 重剑无锋, 大巧不工正是这个意思.

  • 修改文档时, 不必急于删去认为是多余的文字, 把它们注释掉就行了, 说不定什么时候还想使用这段文字.
  • 用注释功能很容易给出文章的简写版, 或回过头来给出完整版.
  • 结果文档中的换行、另起一段、换页等是由LATEX 自动完成的. 源文件中的换行、空行的随意性不影响结果文档.
  • 可以把一些难记又常用的命令, 放在TEX 文档的最后,方便复制使用. 因为文档编译的时候, \end{document} 之后的信息是被忽略的, 所以这里也可以放一些资料、注解、备选信息等.

8. LATEX入门资料

初学者阅读文档建议:
  • 《LATEX 排版全解》, 写得很好, 内容比较新, 基本知识介绍得比较全面.
  • 《新手请先读我》, CTeX 论坛必读文档.
  • 《LATEX 入门》, 刘海洋编著
  • CTEX 及其论坛
  • LaTeX 科技排版

很难说哪本关于LATEX 的书籍最好. TEX 的内容非常庞杂, 没有一本书能够涵盖全部的内容.

我确信TEX 高手们是依靠TEX 系统自带的各种manual 或者来自于网络的各种文档(甚至是论坛的只言片语), 而不是某本书籍, 来掌握TEX 的.

LATEX 在日新月异, 名著也可能马上过时, 甚至因此产生误导.比如因为阅读了一些早期的资料,很多人有一个误解: 以为LATEX 支持的图片格式最好是eps.

事实上, LATEX 支持的图片格式绝非eps这一种, 无需特意把图片转化为eps 格式. 如果我在参加美赛时知道这一点, 就没有必要大费周章的转换图片格式了.

学习建议:
  1. 熟悉各种环境命令. 环境用\begin{…}\end{…} 来声明. 比如\begin{document}\end{document} 就声明了其内部是正文环境. 常用的环境很多, 要留意熟悉.
  2. 注意各种空格、距离命令: LATEX 提供的是一张白纸, 一张没有边界的白纸, 你要在一张多大的纸上写东西, 边上空多少, 字距、行距是多少, 等等, 都得你告诉LATEX.
  3. 数学公式指令熟悉一下就可以了, 不必死记. WinEdt 窗口上都有快捷键, 有约500 个常用的数学符号命令. 对于初学者, 数学公式稍微复杂一点的时候, 还可以借助MathType.
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小詹学Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 简介
    • 1.1 LaTeX 极速体验
    • 2. 软件的准备
      • 2.1 关于CTEX套装
        • 2.2 TEX Live 的安装
          • 2.3 编辑器的安装
            • TEX Live + TeXworks
            • TEX Live + WinEdt + Sumatra PDF
        • 3. LATEX 的基本知识
          • 3.1 一篇LATEX文档的基本构成
            • 3.2 文档的编译方法
              • 3.2.1 编译方式的选择
              • 3.2.2 中文文档的处理
          • 4. 编辑器的基本知识
            • 4.1 TeXworks 的基本用法
              • 4.2 WinEdt 的基本用法
                • 4.3 不用编辑器亦可
                • 5. 初学LaTeX 容易忽视的细节
                  • 5.1 括号
                    • 5.2 函数名
                      • 5.3 标点符号
                      • 6. 遇到问题怎么办
                        • 6.1 查看错误信息
                          • 6.2 寻找解决方案
                          • 7. LATEX 究竟强在哪里
                            • 7.1 数学公式精美
                              • 7.2 编号自动生成
                                • 7.3 交叉引用便捷
                                  • 7.4 各种自动生成
                                    • 7.5 模板使用方便
                                      • 7.6 原文档像草稿
                                      • 8. LATEX入门资料
                                        • 初学者阅读文档建议:
                                          • 学习建议:
                                          领券
                                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档