LaTeX入门教程
来自互联网
Contents
TEX/LATEX是什么?
TEX 是一个非常优秀的排版软件,LATEX 是基于TEX 之上的一个宏包集。因为LATEX 的出现,使得人们使用TEX 更加容易,目前大部分人们使用的 TEX 系统都是LATEX 这个宏集。为什么要用TEX/LATEX?
我们为什么要用TEX/LATEX来排版我们的论文、书籍呢?因为它安装
我们可以从http://wikka.ctex.org 上下载最新的中文TEX 套装,Windows 用户请下载 CTEX 套装,Linux用户可以下载TeXlive 来安装。安装过程就不用我多说了吧!开始使用
好了,安装了,是不是很想试试身手了?那么准备好:
好了,完成编译。
你可能很失望吧,怎么我输了这么多的东西,出来才这么一点点?而且还那么麻烦?
不用急,前面的这部分是设计我们文章的整体框架的,设定好了,你就不用在每页上面想,这里我该怎么做,那里我该怎么调整呢?这些都已经给你设定好了的。所以,随着你的文章的加长,你会发现,就这么两行已经让你省了很多很多的事了。而且,这部分我们还可以重复利用。如果你写第二篇文章的时候,如果它们的结构相差不大,你完全可以把第一篇文章的导言区拿过去用,你就不用在写第二篇文章的时候又重新设计一次文章的框架了,多省事啊!
再说说编译,看起来,你要输出那么一点点的东西就要编译很长的时间。其实,在编译的时候,系统要调入很多宏包,它会花一点时间的,刚才的时间都是花在调入宏包的过程上,你看它的编译信息就知道了,它本身编译的时间并不长。其实,就算是厚厚的一本书,用LATEX编译也不过几分钟而已。所以说,它的效率还是非常高的。
现在我们来分析一下我们刚才输入的代码
LATEX文档的基本框架就是这样,如果你还想得到一些特殊的效果, 那么最好去找本参考书来看,或者参考我后面提到的几个资源。
数学符号
在上面的例子你看到了,我们的数学公式是放在[...]
里面的,这就是我们所说的数学环境。
数学环境除了上面的[...]
符号以外,还有其它的一些方法。我们在后面会碰到。
行内公式与行间公式
如果我们输入
这是一个得到
(int_a^b f(x)dx )
定积分符号
这是一个 定积分符号
和
这是一个[int_a^b f(x)dx]定积分符号
则得到
这是一个
定积分符号
我们看到,前面一个公式会跟文本在一行里,这种公式,我们称之为行内公式;后面的这个公式在两行文本之间,我们称之为行间公式。我们也看到了,行内公式看起来要比行间公式要小一些,如果我们想得到跟行间公式一样大的行内公式,我们可以使用
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}}}}]那么,输出为
常见的数学公式
行列式与矩阵
先排一个行列式[
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,3ldots ;\
u_{t}(x,t_k^+) - u_{t}(x,t_k^-) =c_k u_{t}(x,t_k), &
k=1,2,3ldots .
end{cases}
]
输出结果:
分段函数:
[
q(x,t)=
begin{cases}(t-k+1)x^2,quad &
tinbig(k-1,k-dfrac{1}{2}big],\
(k-t)x^2, quad & tinbig(k-dfrac{1}{2},kbig],
end{cases}
]
输出结果如下:
使用中文
现在中文 TEX 系统一般有 CJK , cct ,和天元这三种, CJK是一个德国人开发的中、日、韩文字处理包(汗!!), cct是中科院张林波教授开发的中文系统,天元则是华东师大的肖刚、陈志杰等开发的中文 TEX 系统。
这三种方式各有特点,一般来说,cct的中文字体比较多,生成的中文文件比较漂亮,排版方式考虑到我们使用中文的习惯。但是它在幻灯片方面还不够完美。天元系统应该可以和pdflatex配合使用,能够生成幻灯片,也有比较丰富的中文字体,只是我不太熟悉这套系统,不好评价。CJK 不是一套单独的系统,它只是LATEX 系统的一个宏包,所以它和LATEX 的配合比较好,能跟 pdflatex很好的合作,也很容易使用,只要象其它宏包一样的使用就行了。所以我推荐使用 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}
文章的各个部分
下面是一篇结构完整的文章
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
来实现的。如果你不想要这些线,你可以把它们去掉。
插图
这部分内容实在太丰富了,我只能在这里讲一点最最基本的东西了。步骤是这样的:
这里的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}
得到
- 我的第一个项目
- 我的第二个项目
- 我的第三个项目
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 是没有导言区和正文开始的标志的。这些东西都在主文档里面。
学习资料
幻灯片制作简介
在你开始阅读这节之前,请你确认:
好了,我们现在假设你已经满足上面的条件了,那我们现在来制作幻灯片吧。
制作幻灯片的宏包现在可以说是多如牛毛,就我用过的,就有 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 的使用,你可以去看它的用户手册。它也同时提供了很多的例程。这些你都可以在ctex/texmf/doc/latex/beamer 这个目录下面找到,它的用户手册名为 beameruserguide.pdf,其它的基本上是例子。
重要建议
Bibliography
- 1
- 陈志杰,赵书钦,万福永,《LATEX入门与提高》,高等教育出版社[M],北京,2002
- 2
- 邓建松,彭冉冉,陈长松,《LATEX2科技排版指南》,科学出版社,北京,2001
- 3
- 吴凌云,CTEX FAQ (常见问题集),CTEX 论坛,2005
- 4
- 中国 CTEX用户小组译,一份不太简短的LATEX2介绍, CTEX 论坛,2002
- 5
- D.E.Knuth 著, xianxian 译,特可(科)爱原本,CTEX 论坛