任何技术的产生与发展都是有血有肉的,忽略这段历史,仅仅学习冰冷的技巧,无疑是悲哀的。千古兴亡多少事?悠悠,不尽长江滚滚流。
关于 LaTeX 的发展史及与所见即所得系统(WYSIWYG),比如微软的 Word 间的较量,我已在《什么是LATEX?》,《LATEX&Word如何选择》,两篇文章中说的很清楚了,不再赘述。有兴趣的同学可以移步阅读。
此处,关于 TEX 做一个简单小结:
群里有人问我 TeX、LaTeX、CTEX、TeX Live 之间有什么区别?这明显是没看过我前两篇文章呀,怀着万分悲痛的心情,再给大家小结一下哈:
[注]: TEX - pdfTeX - XETeX - LuaTeX 都是排版引擎,按照先进程度递增(LuaTeX 尚未完善)
也许你曾听说过 LaTeX 或者 TEX ,但从未使用过。立即体验一下?
\documentclass{ctexart}
\begin{document}
中文测试文档
\end{document}
让我们赶紧开始准备软件吧!
自2016年3月之后,CTEX 套装一直没有更新;另外 XELATEX 的出现, 让中文使用的很多难题得以解决, 不借助 CTEX 套装也可以很好地处理。
这里我推荐用 TEX Live ,想使用 CTEX 的同学可以自行下载安装。下载地址:http://www.ctex.org/CTeXDownload. CTEX 套装分为Basic 版和 Full 版, 选其中一个下载即可。建议使用 Full 版。安装完成后要立即更新。
我是64位的 Windows,下面以Windows为例
TEX Live 的宏包管理器是 tlmgr (TeX Live manager). 在安装路径 C:\texlive\2015\bin\win32 下可以找到 tlmgr-gui.
也可以在 WinEdt 工具栏点击图标 启动 tlmgr-gui. 但是, tlmgr 的图形界面使用 Perl 编写, 容易造成系统假死. 故建议使用下面的方法更新.
tlmgr update -self
tlmgr update -all
TEX 的编写和编译, 需要借助TEX 编辑器。当然, 不使用专门的编辑器,仅用记事本和 DOS, 也可以使 TEX 工作。这里不做详细论述,推荐大家使用编辑器进行编写。
TEX Live 使用配搭有多种, 这里只说两个:
TEX Live 自带编辑器TeXworks,其界面非常朴素, 默认没有语法高亮,字体也很小,需要对 TeXworks 进行简单的设置。
对 TeXworks 的字体及大小、语法高亮、默认编译方式等进行设置如上图所示,推荐:
很多用户习惯使用 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 选项,对右边的文本进行编辑.
至此, 软件的安装已经完成了! 编译下前面例子, 测试安装是否成功了呢?
建议: 在用中学. 边用边学, 建立了基本的概念以后, 在使用中根据需求去解决问题. 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}
几种常见的编译方式: 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 编译的结果.
如果文档加入了交叉引用、目录、导航书签等, 需要编译至少两遍, 才能使相关部分正确显示.文档编码的类型, 可以在编辑器下方的状态栏看到.
中文的实现, 推荐使用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}
LATEX 的入门都看过了, 但你是否感觉无从下手?因为你需要面对的是TeXworks, WinEdt等编辑器, 下面我们简要介绍一下.
Ctrl+Shift+]
: 对选定区域进行注释, 该段不参与编译;
Ctrl+Shift+[
: 取消注释.
使用方法是在输入若干字母后按Ctrl+Tab
或者Shift+Tab
. 比如, 输入\i 之后按Shift+Tab
就会得到\item
, 输入xg 之后按Shift+Tab
会得到\gamma
, 输入\bth 之后按Shift+Tab
会得到
\begin{theorem}
\end{theorem}
如果有几种可能的补全方式, 多按几次就会在这几种方式之间循环.具体可以参考TeXworks 的帮助文档, 里面还介绍了很多快捷键命令.
最新版本为WinEdt 10.3, 这里以WinEdt 9.1 为例,两个版本没有大的区别.
输入一个环境名, 比如\begin{definiton}
, 紧接着输入一个右括号}
, 即输入
\begin{definiton}}
窗口会自动出现与之配对的\end{definiton}, 即得到
\begin{definiton}
*
\end{definiton}
Ctrl+R
, 在弹出的窗口填入要查找和替换的对象.%比如要把文中所有形如
\url{user@website.com}
%的文字换成形如
\href{mailto:user@website.com}{user@website.com},
%搜索
\\url\{\(0*\)\}
%替换为
\\href\{mailto:\0\}\{\0\}
%即可
没有WinEdt 之类的编辑器也行?事实上, 不借助编辑器, 仅用记事本和DOS, 也可以使TEX工作.
\documentclass{ctexart}
\begin{document}
中文文档测试.
\end{document}
显然, 专业的编辑器更方便, 更擅长于TEX文档的编辑和编译.
有一些初学者容易忽视的小问题, 不能说是错误, 但这些是不规范、不专业的,我觉得有必要在学习之前就指出来加以规避.
$ \max, \sin, \ln, \sup $
输入, $ max, sin, ln, sup $
得到的是max; sin; ln; sup, 这不符合运算符要用正体的要求.\DeclareMathOperator{\arccot}{arccot}
%再使用$\arccot x$ 就可以得到arccot x.
” 容易和数学式“
” 混淆吧.
编译过程中跳出的窗口内有编译信息. 若出错, 编译过程会暂停,并提示出错原因. 此时不要急于关闭编译窗口或按回车忽略, 而应查看窗口中的出错信息, 可迅速找到错误.
最常见的出错信息:
这些出错信息一般浅显易懂, 并且显示错误所在行号.编译信息会保存为log 文件. 比如编译的源文件为mytest.tex, 编译完后, 在同一文件夹下会出现mytest.log 文件.
有些复杂的问题, 可以直接copy 出错信息, 网络搜索查找解决方案.
TEX 的创立就是为了解决数学公式的排版, 这个是TEX 天生的强项. 大量资料有详尽阐述, 这里不再赘述. 数学公式排版的经典文档:
所有的编号都不用操心. 对公式、图表、章节、参考文献等的编号, 都是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}
比较编译的结果可以看到, 所有的编号都是自动调整的.
对需要引用的公式、图、表、参考文献, 给它取一个名字, 可以很方便地进行引用. 这正是LATEX的一个特色.
下面是一个对公式引用的例子. 请试试编译该例子:
\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}
LATEX 文档中好些部分都不是“手动” 写出来的, 给一些简单的指令, LATEX 就会帮你完成. 比如:
\tableofcontents
, 编译就可以了.\makeindex
, 在文档末尾加\printindex
. 在需要索引处加入\index{词条名}
便可.国际知名的学术杂志或出版公司, 一般都提供了自己的LATEX 模板, 比如Elsevier, Springer, IEEE 等等. 学术会议的投稿通常也会指定相应的LATEX 模板.
这些模板就真正实现了, 让作者把注意力集中于文章内容的书写, 而无需理会其排版的外形.
LATEX 源文件会看起来有些凌乱, 但这完全不会影响到结果文档的美观. 而本章的题目: 重剑无锋, 大巧不工正是这个意思.
很难说哪本关于LATEX 的书籍最好. TEX 的内容非常庞杂, 没有一本书能够涵盖全部的内容.
我确信TEX 高手们是依靠TEX 系统自带的各种manual 或者来自于网络的各种文档(甚至是论坛的只言片语), 而不是某本书籍, 来掌握TEX 的.
LATEX 在日新月异, 名著也可能马上过时, 甚至因此产生误导.比如因为阅读了一些早期的资料,很多人有一个误解: 以为LATEX 支持的图片格式最好是eps.
事实上, LATEX 支持的图片格式绝非eps这一种, 无需特意把图片转化为eps 格式. 如果我在参加美赛时知道这一点, 就没有必要大费周章的转换图片格式了.
\begin{…}
和\end{…}
来声明. 比如\begin{document}
和\end{document}
就声明了其内部是正文环境. 常用的环境很多, 要留意熟悉.