首页 > 代码库 > [Z]LaTeX入门教程

[Z]LaTeX入门教程

LaTeX入门教程

Contents

  • TEX/LATEX是什么?
  • 为什么要用TEX/LATEX?
  • 安装
  • 开始使用
  • 数学符号使用中文文章的各个部分表格
    • 行内公式与行间公式
    • 上标与下标
    • 常见的数学公式
    • 行列式与矩阵
    • 方程组与分段函数
  • 插图
  • 罗列
  • 分割长文档
  • 学习资料
  • 幻灯片制作简介
  • 重要建议
  • Bibliography

TEX/LATEX是什么?

TEX 是一个非常优秀的排版软件, LATEX 是基于 TEX 之上的一个宏包集。因为 LATEX 的出现,使得人们使用 TEX 更加容易,目前大部分人们使用的 TEX 系统都是 LATEX 这个宏集。

为什么要用TEX/LATEX?

我们为什么要用 TEX/LATEX 来排版我们的论文、书籍呢?因为它
  • 排版的效果非常整齐漂亮;
  • 排版的效率高 ;
  • 非常稳定,从95年到现在, TEX 系统只发现了一个 bug。由此可见它的稳定性;
  • 排版科技文献,尤其是含有很多数学公式的文献特别方便、高效。现今没有一个排版软件在排版数学公式上面能和 TEX/LATEX 相媲美;

安装

我们可以从http://wikka.ctex.org 上下载最新的中文 TEX 套装,Windows 用户请下载 CTEX 套装,Linux 用户可以下载TeXlive 来安装。安装过程就不用我多说了吧!

开始使用

好了,安装了,是不是很想试试身手了?那么准备好:

  • 打开一个编辑器。哦,你用的是 CTEX 套装吗?那就是那个 WinEdt ,在桌面上画了一支钢笔的那个东东。如果没有这个,也无所谓,你就打开一个记事本也行。
  • 输入以下的代码:
    \documentclass{article}
    \usepackage{amsmath,amssymb}
    \usepackage{latexsym}
    \usepackage{CJK}

    \begin{document}
    \begin{CJK*}{GBK}{song}
    测试一下我的数学公式\[\int_a^b f(x)dx\]

    \end{CJK*}
    \end{document}

    上面的代码需要说明一下,我们将

    \begin{document}
    这个命令以前的部分叫做导言区,这部分主要用来声明使用什么宏包,重新定义命令,规划文章的总体布局等。所以,如果你的两篇文章大体上是一样的格式,你就可以把一篇文章的导言区拿到后面的文章里面去用,这样的话,用起来就方便得多。
  • 保存该文件。将这个保存为 test.tex,文件名你可以另外取了,但是要记住,它的后缀必须是 .tex,这样系统才认得它。
  • 编译。用的是 WinEdt 吗?那么就很简单了。你到它的工具条上找到LATEX 这个按纽(工具条上,挨着狮子头的那个按纽),按下它就行了。在 Linux 下用 Kile?一样的了,只是那个按纽改成了一个齿轮而已了。

    刚才不是说用记事本也行的嘛?那该怎么办呢?那,我先假设你把你的文件保存在了D盘的tex目录下面,这样做:

    查看排版结果,在WinEdt工具条上,点dvi那个按纽。在命令行下,输入:yap test.dvi
    • 打开一个Dos窗口,点击“开始 $ \rightarrow$附件 $ \rightarrow$命令行”;
    • 在Dos提示符下,输入:D:
    • cd tex
    • latex test.tex

    好了,完成编译。

你可能很失望吧,怎么我输了这么多的东西,出来才这么一点点?而且还那么麻烦?

不用急,前面的这部分是设计我们文章的整体框架的,设定好了,你就不用在每页上面想,这里我该怎么做,那里我该怎么调整呢?这些都已经给你 设定好了的。所以,随着你的文章的加长,你会发现,就这么两行已经让你省了很多很多的事了。而且,这部分我们还可以重复利用。如果你写第二篇文章 的时候,如果它们的结构相差不大,你完全可以把第一篇文章的导言区拿过去用,你就不用在写第二篇文章的时候又重新设计一次文章的框架了,多省事啊!

再说说编译,看起来,你要输出那么一点点的东西就要编译很长的时间。其实,在编译的时候,系统要调入很多宏包,它会花一点时间的,刚才的时间都是花在调入宏包的过程上,你看它的编译信息就知道了,它本身编译的时间并不长。其实,就算是厚厚的一本书,用LATEX 编译也不过几分钟而已。所以说,它的效率还是非常高的。

现在我们来分析一下我们刚才输入的代码

  • 第一行,声明文章的类型,我们这儿是论文(article)类型,文章的类型可以是书籍(book)、报告(report)、及信笺(letter);
  • 第二行至第四行,声明需要调用的宏包,我们这儿调用了美国数学会的数学公式宏包(amsmath)、美国数学会的数学符号宏包(amssymb)、LATEX 的数学符号宏包(latexsym)和中文处理宏包(CJK);
  • 上面的部分称为导言区,也就是正文开始前的部分。从第五行开始,就称为正文部分;
  • 第五行说明正文的开始,与此对应,最后一行声明正文的结束;
  • 第六行声明中文环境的开始,与此对应,倒数第二行声明中文环境的结束。
  • 第七行开始,输入你想输出 的内容。

LATEX 文档的基本框架就是这样,如果你还想得到一些特殊的效果, 那么最好去找本参考书来看,或者参考我后面提到的几个资源。

数学符号

在上面的例子你看到了,我们的数学公式是放在\[...\]里面的,这就是我们所说的数学环境。

数学环境除了上面的\[...\]符号以外,还有其它的一些方法。我们在后面会碰到。

行内公式与行间公式

如果我们输入

这是一个
\(\int_a^b f(x)dx \)
定积分符号
得到

这是一个 clip_image001 定积分符号

这是一个\[\int_a^b f(x)dx\]定积分符号

则得到

这是一个

clip_image001[5]

定积分符号

我们看到,前面一个公式会跟文本在一行里,这种公式,我们称之为行内公式;后面的这个公式在两行文本之间,我们称之为行间公式。我们也看到了,行内公式看起来要比行间公式要小一些,如果我们想得到跟行间公式一样大的行内公式,我们可以使用

\displaystyle{\int_a^b f(x)dx}
这个命令,那么就得到了跟行间公式一样大小的公式了。

上标与下标

在LATEX 里面,上标和下标分别是用^ 和_ 两个符号实现的。我们看在微分几何里常见的一个公式。

\[
\Gamma_{ij}^{k}
=\frac{1}{2}(\frac{\partial g_{il}}{\partial u^j}
+\frac{\partial g_{jl}}{\partial u^i}
-\frac{\partial g_{ij}}{\partial u^l})
\]

输出为

上下标还可以嵌套,我们看看下面的公式

\[\sum_{i,j,k=1}^{\infty}{x_{i_{j_{k}}}}\]
那么,输出为

常见的数学公式

  • 除法:
    \[\frac{f(x)}{g(x)}\]
    得到

  • 极限:
    \[\lim_{x\rightarrow x_0}f(x)=A\]
    得到

     

  • 积分:
    \[\int_a^b f(x)dx\]
    得到

  • 级数:
    \[\sum_{i=1}^{\infty} x_i\]
    得到

  • 根式:
    \[\sqrt[3]{x^4-3x+1}\]
    得到

  • 二重积分:
    \[\iint_{\Omega}f(x,y)dxdy\]
    得到

  • 三重积分:
    \[\iiint_{\Omega}f(x,y,z)dxdydz \]
    得到

行列式与矩阵

先排一个行列式
\[
\left|\begin{array}{cccc}
1 & 6 & 9 \\
7 & 90 & f(x)\\
9 & \psi(x) & g(x)
\end{array}\right|
\]

输出为

其中

\left|
\right|
表示左右定界符。如果我们将|换成 ( 和 )(或 [ 和 ]),就得到了矩阵。也就是
\[
\left[\begin{array}{cccc}
1 & 6 & 9 \\
7 & 90 & f(x)\\
9 & \psi(x) & g(x)
\end{array}\right]
\]

输出为

在这里,行列式和矩阵都是中间对齐的,如果你想左对齐或右对齐,你将{cccc}换成{llll}(左对齐)或{rrrr}(右对齐)就行了。& 是对齐符号。

方程组与分段函数

我们一般用 cases 环境排版方程组和分段函数,举例如下

方程组:

\[
\begin{cases}
\ u_{tt}(x,t)= b(t)\triangle u(x,t-4)&\\
\ \hspace{42pt}- q(x,t)f[u(x,t-3)]+te^{-t}\sin^2 x, & t \neq t_k; \\
\ u(x,t_k^+) - u(x,t_k^-) = c_k u(x,t_k), & k=1,2,3\ldots ;\\
\ u_{t}(x,t_k^+) - u_{t}(x,t_k^-) =c_k u_{t}(x,t_k), &
k=1,2,3\ldots\ .
\end{cases}
\]

输出结果:

分段函数:

\[
q(x,t)=
\begin{cases}(t-k+1)x^2,\quad \ \ &
t\in\big(k-1,k-\dfrac{1}{2}\big],\\
(k-t)x^2, \quad \ \ & t\in\big(k-\dfrac{1}{2},k\big],
\end{cases}
\]

输出结果如下:

 

使用中文

现在中文 TEX 系统一般有 CJK , cct ,和天元这三种, CJK 是一个德国人开发的中、日、韩文字处理包(汗!!), cct 是中科院张林波教授开发的中文系统,天元则是华东师大的肖刚、陈志杰等开发的中文 TEX 系统。

这三种方式各有特点,一般来说,cct 的中文字体比较多,生成的中文文件比较漂亮,排版方式考虑到我们使用中文的习惯。但是它在幻灯片方面还不够完美。天元系统应该可以和pdflatex 配合使用,能够生成幻灯片,也有比较丰富的中文字体,只是我不太熟悉这套系统,不好评价。CJK 不是一套单独的系统,它只是 LATEX 系统的一个宏包,所以它和 LATEX 的配合比较好,能跟 pdflatex 很好的合作,也很容易使用,只要象其它宏包一样的使用就行了。所以我推荐使用 CJK 。

  • 在导言区加入\usepackage{CJK}
  • 在正文开始时(紧接在\begin{document}后面)加入\begin{CJK*}{GBK}{song}
  • 输入正文
  • 在正文结束时加入\end{CJK*}

看起来,你的文章应该象这样子:

\documentclass{article}
……
\usepackage{CJK}

\begin{document}
\begin{CJK*}{GBK}{song}

这里是正文


\end{CJK*}
\end{document}

CJK 默认支持四种字体,它们是宋(song)、楷(kai)、黑(heiti)、隶(li),如果你要用其它的字体,你可以到 wikka.ctex.org 去下载字体。

以下的代码说明是怎么用其它的字体。

\documentclass{article}
\usepackage{CJK}

\begin{document}
\begin{CJK*}{GBK}{song}

CJK 默认支持四种字体,它们是宋(song)、楷(kai)、黑(heiti)、隶(li),
如果你要用其它的字体,你可以到\ wikka.ctex.org\ 去下载字体。

{\CJKfamily{li} 这是隶书;}
{\CJKfamily{kai} 这是楷书;}
{\CJKfamily{heiti} 这是黑体。}


我这里没有特别说明怎么用宋体,为什么?因为我们在文章的开头已经指明了,
这篇文章默认的字体是宋体了。如果你用的字体是默认字体以外的字体,
你就要把需要用到那个字体的部分用大括号包起来。


\end{CJK*}
\end{document}

文章的各个部分

  • 生成标题,在正文的开头加入
    \title{文章的题目}
    \author{作者姓名}
    \date{2005/09/23}
    \maketitle
  • 生成目录
    \tableofcontents
  • 生成章节号
    \chapter{章的名称},\section{节的名称}
  • 生成参考文献:在正文的末尾处加上
    \begin{thebibliography}
    \bibitem{}参考文献1
    \bibitem{}参考文献2
    \end{thebibliography}
  • 分段:在两段之间插入一个空行。
  • 分行:LATEX 会自动分行,但是如果你想在某个地方想强制分行,用两个反斜杠(\\)手工分行。

下面是一篇结构完整的文章

\documentclass[12pt]{article}
\usepackage{latexsym}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{CJK}

\begin{document}
\begin{CJK*}{GBK}{song}
\title{{\Large {\CJKfamily{heiti}非线性非齐次时滞脉冲双曲型方程解的振动性 }}
\author { 罗玉文 \\
重庆工学院数理学院
重庆, 400050)}
\date{}
\maketitle

\begin{center}
\section{引论}
\vspace{0.2cm}
\end{center}

在本文中,我们使用特征函数方法讨论非齐次非线性时滞脉冲双曲型方程的振动性。

\begin{center}
\section{定义和预备引理}
\vspace{0.2cm}
\end{center}

以下是一些本文中要用到的引理。


\begin{center}
\section{主要结论及证明}
\vspace{0.1cm}
\end{center}

这一节我们给出本文的主要结果并给出详细的证明。

\vspace{0.1cm}
\begin{center}
\section{一个例子}
\vspace{0.1cm}
\end{center}

这一节我们看一个例子。

\begin {thebibliography}{90}
{\small
\bibitem{} 燕居让,常微分方程振动理论,{\it 山西教育出版社,}{\bf
(1992)}。
\bibitem{} 叶齐孝,李正元,反应扩散方程引论, {\it 科学出版社 }, ({\bf
1990})。
\bibitem{} Zhang Y. Z. ,Zhao A. M. ,Yan J. R. , Oscillation Criteria for
Impulsive Delay Differential Equations[J] , {\it J. Math. Anal. Appl. } {\bf
205,(1997): 464-470 }}。


\end{thebibliography}
\end{CJK*}

\end{document}

表格

使用tabular 环境可以生成表格,见下面这个例子:

\begin{tabular}{|c|c|c|c|c|c|}
\hline\\
编号 & 姓名 & 性别 & 年龄 & 地址 & 电话号码\\
\hline\\
1 & 张三 & 男 & 45 & 重庆工学院 &12345678\\
\hline\\
2 & 李四 & 女 & 29 & 重庆杨家坪 & 654321\\
\hline
\end{tabular}

输出为

编号
姓名
性别
年龄
地址
电话号码

1
张三

45
重庆工学院
12345678

2
李四

29
重庆杨家坪
654321

这里要注意了,我们在第一行中,有几个 c 就表示有几列, c 表示你的列是居中对齐的,如果你想居左或居右,请用 l 或 r。

如果你的某行中的某一列是空的,你也要列出来,放个空格在那里就行了,你甚至可以什么都不放,在要空的那里前后各放一个& 符号就行。

在这里看到,对齐是用& 来实现的,我们前面说过。竖线是用 c两边的那些竖杠实现的,横线是用命令\hline来实现的。如果你不想要这些线,你可以把它们去掉。

插图

这部分内容实在太丰富了,我只能在这里讲一点最最基本的东西了。步骤是这样的:

  • 在导言区加入:
    \usepackage{graphicx}
  • 在需要插入图片的地方::
    \includegraphics[width=0.8\textwidth]{fig1.eps}

这里的fig1.eps 是你的图片名,目前LATEX 对 eps 格式的图片支持得最好。你如果想插入其它类型的图片,最好先转化成这种格式的图片。

我们在上面还看到了在方括号里面有 width 这个选项,这是你规定图片宽度的,其实还有一些别的选项例如 height ,这里我不多说了。

有关插图的内容,你可以到你的 ctex/ctex/doc 这个目录里面去找一个叫做 graphics.pdf 的文件,它是专门讲如何插图的。

需要注意的是,如果你想用命令 pdflatex 得到 pdf 文件的时候,你的图片格式可以是 pdf 、 jpg 、 png 、 tif ,但不能是 eps ,因为这个命令不认识这种格式的图片。

罗列

罗列的环境有三种:itemize,enumerate,和description,我们分别举例如下:

itemize 环境:

\begin{itemize}
\item 我的第一个项目
\item 我的第二个项目
\item 我的第三个项目
\end{itemize}

得到

  • 我的第一个项目
  • 我的第二个项目
  • 我的第三个项目

enumerate 环境:

\begin{enumerate}
\item 我的第一个项目
\item 我的第二个项目
\item 我的第三个项目
\end{enumerate}

得到

  1. 我的第一个项目
  2. 我的第二个项目
  3. 我的第三个项目

description 环境:

\begin{description}
\item 我的第一个项目
\item 我的第二个项目
\item 我的第三个项目
\end{description}

得到:

我的第一个项目
我的第二个项目
我的第三个项目

分割长文档

如果你的文章或书籍特别长,这个时候,你把所有内容写在一个文件里总不会是个好主意,特别是你想改掉一个小错误,在某个地方增加或减少一点内容,你会发现是一件很头疼的事,这个时候你就该把你的文件分成几块来处理。

命令\input{文件名}\include{文件名}都可以将括号里的文件读到当前位置,参加当前文档的编译。

例如,我编写一个 main.tex 文件,内容如下:

\documentclass{article}
\usepackage{amsmath}
\usepackage{CJK}
\begin{document}
\begin{CJK*}{GBK}{song}

\input{sec1.tex}
\include{sec2.tex}
\end{CJK*}

另外编辑 sec1.tex , sec2.tex 两个文件,这两个文件编辑完了,保存以后,编译 main.tex 文件就可以看输出结果了,你要改也可以只在这两个文件里面改就行了。例如,sec1.tex 和sec2.tex 的内容如下:

\section{第一节}
恭承嘉惠兮,俟罪长沙。侧闻屈原兮,自沉汩罗。造托湘流兮,敬吊先生。
\section{第一节}
贾生名谊,洛阳人也。年十八,以能诵诗属书闻于郡中。

记住,这样分割的话,sec1.tex 和sec2.tex 是没有导言区和正文开始的标志的。这些东西都在主文档里面。

学习资料

  • 纸本的参考书推荐《LATEX 入门与提高》,陈志杰,赵书钦,万福永编,高等教育出版社。《LATEX2e 科技排版指南》,邓建松,彭冉冉,陈长松编,科学出版社。这两本书都写得非常好,可以常备案头。其中第一本书图书馆有借。
  • 去看看这个目录:ctex/ctex/doc 里面都是 LATEX 的教程,其中 ctex_faq 特别适合初学。lshort-cn 是一本非常好的 LATEX 教程,有这两本电子书,足够你应付常用的需要了。另外还有几本,一本是讲插图的,我前面讲过,一本是讲各种各样的数学符号的,可满足你的特殊排版需要。
  • 看看这个目录:ctex/texmf/doc/latex ,里面都是各种宏包的使用例子,你如果不想看教程,去看例子也能解决一些问题,依样画葫芦嘛!
  • ctex 的论坛 www.ctex.org/forums/ 如果你碰到不能解决的问题,去这儿咨询吧,这里的人都很热心的。忠告:先查书,再上论坛;先搜索,再发问。

幻灯片制作简介

在你开始阅读这节之前,请你确认:

  • 你已经阅读了前面的内容,并且理解了 LATEX 的语法、指令
  • 你已经排版过至少一篇的论文或书籍
  • 你已经安装了 beamer 这个宏包

好了,我们现在假设你已经满足上面的条件了,那我们现在来制作幻灯片吧。

制作幻灯片的宏包现在可以说是多如牛毛,就我用过的,就有 pdfscreen 、texpower 、prosper 、context 和 beamer ,还有我没有用过的,如 slides ,seminer,foitex 等等,太多了!

context 是迄今功能最强大的幻灯片制作宏包,它可以做出非常炫的效果,只要你想到的,基本上它都能做得到。但是我不推荐使用它,因为它有两个缺点:第一,它和标准的 LATEX 语法不兼容;第二,它的中文支持还不够,需要自己配置,比较麻烦。

制作幻灯片最好的宏包是 beamer 宏包,它的语法跟标准的LATEX 几乎没有不同;跟 latex 和 pdflatx 两个命令都合作得很好;有多种色彩,字体可供选择;有各种已经定义好的主题;自己定义主题、色彩、宋体比较容易等等。

现在我们看看 beamer 是怎么样设计幻灯片的。试试以下的代码:

\documentclass[cjk]{beamer}
\usepackage{CJK}
\usetheme{Warsaw}

\begin{document}
\begin{CJK*}{GBK}{kai}

\title[用 Beamer 制作的幻灯片]{
Example Presentation Created\\
with the Beamer Package\\
(用 Beamer 制作的幻灯片)}
\author{作者 Till Tantau}
\date{\today}

\frame{\titlepage}

\section*{Outline}
\frame{\tableofcontents}

\section{Introduction (简介)}
\subsection{Overview of the Beamer Class (Beamer 类的概要)}
\frame{
\frametitle{Features of the Beamer Class (Beamer 类的特点)}

\begin{itemize}
\item<1-> Normal LaTeX class (标准的 LaTeX 类).
\item<2-> Easy overlays (重构简单).
\item<3-> No external programs needed (无需额外的程序).
\end{itemize}
}

\end{CJK*}
\end{document}

你输完以后,用命令 pdflatex 编译两遍,然后用 acrobat reader 打开生成的 pdf 文件,你就可以看到效果了。

这个是 beamer 自带的第四个例子,说明怎么使用中文。这里有几点需要说明一下:

  • 声明的文档类必须是 beamer ,方括号里是可选项,我们这儿选 cjk 是想告诉系统,这个文件是使用中文的;
  • 幻灯片的内容都要写在 \frame{ }命令的花括号里面,记住:一个 frame 就是一张幻灯片,不要在一张幻灯片里写入太多的内容;
  • 上面的 item 后面的<-1>等是用来暂停的,这种暂停方式,是按照 item 的顺序来的,如果你不是用 item 来控制暂停,你可以使用\pause命令,在你想要暂停的地方,加入这个命令即能实现暂停;

有关 beamer 的使用,你可以去看它的用户手册。它也同时提供了很多的例程。这些你都可以在 ctex/texmf/doc/latex/beamer 这个目录下面找到,它的用户手册名为 beameruserguide.pdf ,其它的基本上是例子。

重要建议

  • 常备一本参考资料在案头,以备查阅。毕竟,我们不可能记住每一个命令。
  • 找一份别人写的源文件,编译了,然后对照源文件与输出文件,边看边改,最后改成你自己的文章的时候,你也就学会了 LATEX ,这样学习是最快的。我本人就是这样学习的,只用了两个小时就会了它的基本命令,然后,没有依赖任何人,完成了我的第二篇文章。
  • 尽量不要使用集成编辑器上的按纽,它会降低你的输入速度的。

Bibliography

 

1 陈志杰,赵书钦,万福永,《LATEX 入门与提高》,高等教育出版社[M],北京,2002

 

2 邓建松,彭冉冉,陈长松,《LATEX2$ \epsilon$科技排版指南》,科学出版社,北京,2001

 

3 吴凌云,CTEX FAQ (常见问题集),CTEX 论坛,2005

 

4 中国 CTEX 用户小组译,一份不太简短的LATEX2$ \epsilon$介绍, CTEX 论坛,2002

 

5 D.E.Knuth 著, xianxian 译,特可(科)爱原本,CTEX 论坛

[Z]LaTeX入门教程