LaTeX是一个文档排版系统,适合于大型论文排版和数学公式输入,同时可以插入图表,使得文档易于阅读。本文主要介绍的是以下内容:
首先安装tex,见TeX Live下载及安装说明。
TeX的源代码是后缀为.tex的纯文本文件。使用任意纯文本编辑器,都可以修改.tex文件:包括Windows自带的记事本程序。本文只介绍TeXworks,TeXworks十分简洁,除了最基本的功能之外,没有其他复杂的东西。
启动TeXworks有三种方法:
1、在Windows运行的对话框中输入texworks按回车;
2、从开始菜单找到TeXworks图标以启动;
3、进入TeX系统的安装目录找到TeXworks。
TeXworks启动效果如下图:
上图中空白的部分,就是输入编辑文本的编辑框;在编辑框的右下角,显示有三个按钮,最左边的是换行符模式,中间是编码模式,右边标示当前光标所在位置。编辑框的上方是工具栏,工具栏的左边是编译按钮(TeXworks也称其为排版工具);工具栏在往上是菜单栏。
TeXworks预设了若干排版工具,下面主要用到XeLaTeX。
TeXworks默认的排版工具是pdfLaTeX,可以在编辑-首选项-排版-处理工具-默认中修改为其他的排版工具。
注意:在Windows上,TeX涉及到的文件(包括.tex与.jpg等各类文件)都不要包含中文名字,避免在编译时可能会因为编码问题导致报错。
在TeXworks编辑框中输入:
\documentclass{article}
%这里是导言区
\begin{document}
HELLO WORLD
\end{document}
将文档保存后在排版工具的下拉选框中选中XeLaTeX后,按下绿色的编译按钮。则屏幕的右边就会出现编译之后结果:
根据输出可知,输入进编辑框的五行文字,在最终输出的pdf文档中只显示了1行。即交付TeX处理的文档内容,并不会全部输出。
上图中的文档类,即是TeX系统预设的(或是用户自定的)一些格式的集合。不同的文档类在输出效果上会有差别。注意:TeX对控制序列的大小写是敏感的。
此处的第二行以%开头,以百分号%作为注释标记——TeX会忽略从%开始到当前行末尾的所有内容。若要输出%字符本身,则需要在%之前加上反斜杠\进行转义,例如:20\%
之后出现了控制序列begin。这个控制序列总是与end成对出现。这两个控制序列以及他们中间的内容被称为「环境」;它们之后的第一个必要参数总是一致的,被称为环境名。只有在document环境中的内容,才会被正常输出到文档中去或是作为控制序列对文档产生影响,即在\end{document}
之后插入任何内容都是无效的。
从\documentclass{article}
开始到\begin{document}
之前的部分被称为导言区,可将导言区理解为是对整篇文档进行设置的区域。在导言区出现的控制序列,往往会影响整篇文档的格式。如通常在导言区设置页面大小、页眉页脚样式、章节标题样式等。
不要使用
CJK宏包
。
现在XeTeX原生支持Unicode,并且可以方便地调用系统字体,只需要使用几个简单的宏包,就能完成中文支持了。【宏包】是一系列控制序列的合集。这些控制序列太常用,于是将其打包放在同一个文件中,成为所谓的宏包。使用\usepackage{}
可以用来调用宏包。
宏集CTeX的优势在于,它能适配于多种编译方式;在内部处理好了中文和中文版式的支持,隐藏了这些细节;并且,提供了不少中文用户需要的功能接口。下面介绍如何使用CTeX宏集来处理中英文混排的文档。
在TeXworks编辑框中输入以下内容,以UTF-8编码保存,使用XeLaTeX编译:
\documentclass[UTF8]{ctexart}
%这里是导言区
\begin{document}
你好,WORLD
\end{document}
也可直接使用xeCJK宏包来支持中英文混排。在TeXworks编辑框中输入以下内容,保存,使用XeLaTeX编译:
\documentclass{article}
%这里是导言区
\usepackage{xeCJK} %调用xeCJK宏包
\setCJKmainfont{SimSun} %设置CJK主字体为SimSun,即宋体
\begin{document}
你好,WORLD
\end{document}
输出:
和【3.1 方法1】一节的不同点在于,导言区中多出了两条控制序列,其作用已用注释标出。\setCJKmainfont{}
是定义在"xeCJK"宏包中的控制序列,它可以用来设置CJK主字体。
如果TeX提示找不到字体,则请Windows用户打开命令行输入:
fc-list :lang=zh-cn
显示如下(我的电脑上显示中文是乱码,不过这里不是重点,我也不想去查找相关资料,就请忽略吧):
上图显示可能不清楚,请点击图片然后右键在新窗口中查看。其中的每一行,都代表着一个可用的字体。其形式如下:
<字体文件路径>: <字体标示名1>, <字体表示名2>:Style=<字体类型>
只需要在本节【3.2 方法2】开头的第一段代码用自己想使用的字体名称替换第四行的SimSun
即可。
若之前的文档无法编译通过,请在自己的操作系统字体中,选取一个,将其字体表示名填入到\setCJKmainfont{·}中去即可。
用XeLaTeX编译如下文档:
\documentclass[UTF8]{ctexart}
\title{您好,世界}
\author{薛伟}
\date{\today}
\begin{document}
\maketitle
你好,WORLD
\end{document}
显示:
代码中的导言区复杂了很多,但和之前的文档主要的区别只有一处:定义了标题、作者、日期。除此之外在document环境中还多了一个控制序列\maketitle,这个控制序列能将在导言区中定义的标题、作者、日期按照预定的格式展现出来。
用XeLaTeX编译如下文档:
\documentclass[UTF8]{ctexart}
\title{你好,world!}
\author{流动的风与雪}
\date{\today}
\begin{document}
\maketitle
\section{你好中国}
中国在亚洲东部
\section{Hello Beijing}
北京是中国的首都
\subsubsection{hello dongcheng district}
\paragraph{天安门广场}
is in the center of 天安门广场。
\subparagraph{毛主席}
在天安门中央
\subsection{hello 山西}
\paragraph{中北大学}是我的母校。
\end{document}
显示如下:
在文档类article/ctexart
中,定义了五个控制序列来调整行文组织结构,分别是:
在上一节即【4.2 章节和段落】的文档中,找到\maketitle,在它的下面插入控制序列\tableofcontents,保存并用XeLaTeX编译两次,观察效果。即代码修改为:
\documentclass[UTF8]{ctexart}
\title{你好,world!}
\author{流动的风与雪}
\date{\today}
\begin{document}
\maketitle
\tableofcontents
\section{你好中国}
中国在亚洲东部
\section{Hello Beijing}
北京是中国的首都
\subsubsection{hello dongcheng district}
\paragraph{天安门广场}
is in the center of 天安门广场。
\subparagraph{毛主席}
在天安门中央
\subsection{hello 山西}
\paragraph{中北大学}是我的母校。
\end{document}
请注意,LaTeX将一个换行当做是一个简单的空格来处理,如果需要换行另起一段,则需要用两个换行来实现,即两段之间需要一个空行。
在整个【5 插入公式】中,为了节省篇幅,大部分内容将取消导言区中的中文支持的部分。在实际使用中,只需要将导言区中的相关部分加上,就可以同时使用中文和编写数学公式了。为了使用AMS-LaTeX提供的数学功能,需要在导言区加载amsmath宏包:
\usepackage{amsmath}
LaTeX的数学模式有两种:
在行文中,使用$...$
可以插入行内公式,使用\[...\]
可以插入行间公式,如果需要对行间公式进行编号,则可以使用equation环境:
\begin{equation}
...
\end{equation}
1、行内公式也可以使用
\(...\)
或者\begin{math}...\end{math}
来插入。
2、无编号的行间公式也可以使用\begin{displaymath}...\end{displaymath}
或者\begin{equation*}...\end{equation*}
来插入,其中equation*中的*
表示环境不编号。
示例代码(请保存后,使用XeLaTeX编译,查看效果):
\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}
显示如下:
可以发现,在行内公式(第一个1/2)和行间公式(第二个1/2)中,分式的输出效果是有差异的。如果要强制行内模式的分式显示为行间模式的大小,可以使用\dfrac,反之可以使用\tfrac。
一些小的运算符可在数学模式下直接输入;而另一些需要用控制序列生成,如:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[ \pm \] %加减号
\[ \times \] %乘号
\[ \div \] %除号
\[ \cdot \] %点乘
\[ \cap \] %交
\[ \cup \] %并
\[ \geq \] %大于等于
\[ \leq \] %小于等于
\[ \neq \] %不等于
\[ \approx \] %约等于
\[ \equiv \] %恒等
\end{document}
显示如下:
连加、连乘、极限、积分等大型运算符分别用\sum,\prod,\lim,\int生成。如:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[ \sum \] %连加
\[ \prod \] %连乘
\[ \lim \] %极限
\[ \int \] %积分
\end{document}
显示如下:
上面四个符号的上下标若显示在行内公式中则会被压缩,以适应行高。可用\limits和\nolimits来强制显式地指定是否压缩这些上下标。例如(注意\quad
是输出一个汉字的空白距离):
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[ \sum_{i=1}^n i \quad \prod_{i=1}^n \] %默认为\limits,即不压缩
\[ \sum\nolimits_{i=1}^n i \quad \prod\nolimits_{i=1}^n \] %被压缩,以适应行高
\[ \lim_{x\to0}x^2 \quad \int_a^b x^2 dx \] %默认为\limits,即不压缩
\[ \lim\nolimits_{x\to0}x^2 \quad \int\nolimits_a^b x^2 dx \] %被压缩,以适应行高
\end{document}
显示如下:
多重积分可以使用\iint,\iiint,\iiiint,\idotsint等命令输入:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[ \iint \]
\[ \iiint \]
\[ \iiiint \]
\[ \idotsint \]
\end{document}
各种括号用(),[],\{\},\langle\rangle
等命令表示:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[ () \]
\[ [] \]
\[ \{\} \] %花括号
\[ \langle\rangle\] %尖括号
\end{document}
显示如下:
注意花括号通常用来输入命令和环境的参数,所以在数学公式中它们前面要加\。除此之外,竖线符号|
、||
:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[\lvert\rvert\] %|
\[\lVert\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} \]
\[ \begin{bmatrix} a&b\\c&d \end{bmatrix} \]
\[ \begin{Bmatrix} a&b\\c&d \end{Bmatrix} \]
\[ \begin{vmatrix} a&b\\c&d \end{vmatrix} \]
\[ \begin{Vmatrix} a&b\\c&d \end{Vmatrix} \]
\end{document}
显示如下:
使用smallmatrix环境,可以生成行内公式的小矩阵:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
Here is a matrix $\begin{smallmatrix} a&b\\c&d \end{smallmatrix}$
\end{document}
注意:
无须对齐的长公式可以使用multline环境。示例代码如下:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{multline}
x=a+b+c+{}\\
d+e+f+g
\end{multline}
\end{document}
显示如下:
如果不需要编号,可以使用multline*环境代替。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{multline*}
x=a+b+c+{}\\
d+e+f+g
\end{multline*}
\end{document}
需要对齐的公式,可以使用aligned
来实现,它必须包含在数学环境之内。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[\begin{aligned}
x={}&a+b+c+{}\\
&d+e+f+g
\end{aligned}\]
\end{document}
无需对齐的公式组可以使用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}
分段函数可以用cases环境来实现,它必须包含在数学环境之内。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[y=\begin{cases}
-x,\quad x\leq 0\\
x,\quad x>0
\end{cases}\]
\end{document}
利用graphicx宏包提供的\includegraphics命令可插入图片(注意:路径中使用/
):
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics{C:/Program Files/2.jpg}
\end{document}
显示如下:
可以用\includegraphics控制序列的可选参数来控制图片大小,比如:
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics[width=.5\textwidth]{C:/Program Files/2.jpg}
\end{document}
显示如下:
这样图片的宽度会被缩放至页面宽度的50%,图片的总高度会按比例缩放。
tabular环境提供了最简单的表格功能。它用\hline命令表示横线,在列格式中用|表示竖线;用&来分列,用\\
来换行;每列可以采用居左、居中、居右等横向对齐方式,分别用l、c、r来表示。
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\begin{tabular}{|r|l|c|}
\hline
name&sex&age\\
\hline
naruto&male&18\\
\hline
sasuke&male&18\\
\hline
sakura&female&18\\
\hline
\end{tabular}
\end{document}
插图和表格通常需要占据大块空间,所以经常需要调整他们的位置。而figure和table环境可以自动完成这样的任务——这种自动调整位置的环境称作浮动体(float)。下面以figure为例:
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\begin{figure}[htbp]
\centering
\includegraphics{C:/Program Files/2.jpg}
\caption{Windows10}
\label{fig:myphoto}
\end{figure}
\end{document}
htbp选项用来指定插图的理想位置,这几个字母分别代表here、top、bottom、floatpage,也就是就【这里、页顶、页尾、浮动页(专门放浮动体的单独页面或分栏)】。\centering用来使插图居中;\caption命令设置插图标题,LaTeX会自动给浮动体的标题加上编号。注意\label应该放在标题命令之后。
使用geometry宏包设置页边距。如希望将纸张的长度设置为20cm、宽度设置为15cm、左边距1cm、右边距2cm、上边距3cm、下边距4cm,可以在导言区加上这样几行:
\usepackage{geometry}
\geometry{papersize={20cm,15cm}}
\geometry{left=1cm,right=2cm,top=3cm,bottom=4cm}
使用fancyhdr宏包设置页眉页脚,如希望在页眉左边写上名字,中间写上今天的日期,右边写上电话;页脚的正中写上页码;页眉和正文之间有一道宽为0.4pt的横线分割:
\documentclass{article}
\usepackage{fancyhdr}
\pagestyle{fancy}
\lhead{xw}
\chead{\today}
\rhead{1234567890}
\cfoot{\thepage}
\renewcommand{\headrulewidth}{0.4pt}
\begin{document}
hello
\end{document}
CTeX宏集已经处理好了首行缩进的问题(每个自然段前默认空两格汉字宽度)。因此,使用CTeX宏集进行中西文混合排版时,不需要关注首行缩进的问题。
通过setspace宏包提供的命令来调整行间距。比如在导言区添加如下内容,可以将行距设置为字号的1.5倍:
\usepackage{setspace}
\onehalfspacing
请注意用词的差别:
通过修改长度\parskip的值来调整段间距。例如在导言区添加以下内容:
\addtolength{\parskip}{.4em}
则可以在原有的基础上,增加段间距0.4em。如果需要减小段间距,只需将该数值改为负值即可。
一份其实很短的LaTeX入门文档
END