LaTeX入门
LaTeX源文件的基本结构
每一个源文件基本结构如下:
\documentclass[字体大小,纸张大小,杂类参数]{文档类别}
导言区(preamble)
\begin{document}
文档正文区
\end{document}
LaTeX的文档类别
合法的LaTeX文档类别包括下面的5种:
- article(文章)(注:CCT中可使用cctart)
- book(书籍)
- report(报告)
- letter(信函)
- slides(幻灯片)
除幻灯片类别,标准的文档类别接受下面的可选参数确定字体大小(1pt=1/72.27英尺)
所有的文档类别都接受下面形式的可选参数确定纸张大小(缺省为letter)
- a4paper (29.7£21cm)
- a5paper (21£14.8cm)
- b5paper (25£17.6cm)
- letterpaper (11£8.5 in)
- legalpaper (14£8.5 in)
- executivepaper (10.5£7.25 in)
还有一些杂类可选参数
- landscape:选择横向排版方式,缺省为纵向排版(portrait)
- leqno:公式的编号放在公式的左边,缺省时放在右边
- fleqn:公式显示左边对齐,缺省时中间对齐
- draft,final:标注/不标注带标尺的边框,缺省值为final
- oneside,twoside:选择单面还是双面打印。书籍类缺省为双面,其余缺省为单面
- onecolumn,twocolumn:通栏排还是分栏排,缺省为通栏
如何构建导言区
装入必要的类和包文件
为了便于用户定制或扩充排版系统,LaTeX将许多功能并存放在不同的类或包文件中。使用某个类或包文件的功能,需要在导言区中声明(激活):
\usepackage[option]{package}
其中package为要激活的包的名称,option是一组关键字列表,用以说明包中特定的功能或特性.
例如在从例子测试_CJK.tex中使用的
\usepackage[dvips,usenames]{color} % 支持颜色
\usepackage{CJK} % 用CJK支持汉字
\usepackage{fancyhdr} % 支持自定义的页眉、页脚
\usepackage{fancyvrb} % 支持抄录
\usepackage{fancybox} % 支持文本加框
进行文档全局性设置
有时你会对标准的设置不满意,这时可将一些设置命令放在导言区以影响整修文档。例如:
\setlength{\textwidth}{16cm} \setlength{\textheight}{22cm}
\setlength{\oddsidemargin}{0pt} \setlength{\parindent}{0em}
\setlength{\parskip}{3mm}
\renewcommand{\baselinestretch}{1.3}
\color{black}
文档正文区的组成
定义文章的一些信息:
\title{书名}
\author{作者名}
\date{日期} % \today
\maketitle
LATEX在处理输入文件时总是牌下面三种模式中的一种:
- Paragraph(段落模式)
- Math(数学模式)
- Left-to-right(从左到右模型,简称LR模式)
正文的输入需要按选定的文档类型及加载的宏包文件进行,由此得到相应的标题、章节、页码、页眉、页脚、脚注、边注、表格、图形以及各种类型复杂的数学公式。
当处理很大的文档时,经常将文件分成若干个部分分别进行编译,这时我们可以使用LATEX所提供的命令
- \input
- \include
- \includeonly
\input{texfile}
文件名只需指定基本名,不需加扩展名.tex,它等价于直接将文件“文件名.tex”中的内容输入到命令\input所处的位置.
此命令可以放在文档的任何地方(导言区或正文区),而且可以相互嵌套。
您可以将经常使用的导言放在单独的一个文件中,使用时置于源文件之首。
在\begin{document}....\end{document}之间加入多个\input命令.导言区加入\listfiles可以得到读入文件的清单.
\include{texfile}
使用\input命令的缺点是,通过\input命令合并起来的文章(不管那部分)
每经过一次修改,所有的文件都要被重新读入和处理。若用\input命令仅加载那个特定的文件,那么所有的页码、章节、插图和公式等的自动编号都从1开
始,这会使交叉引用产生混乱。更好的办法是采用\include命令。
它只能放在文档的正文区,不能嵌套,且与命令\includeonly{文件清单}结合使用。
文件清单列出当前正在处理的文件(其中的文件名不需要加后缀.tex,各文件名用逗号隔开)。若\input命令后的文件名在文件清单中,则此命令等价于
\clearpage\input{文件名}\clearpage,
否则相当于换页。因此文档应该在新页开始(如章与章之间)分割。\include命令可以帮助我们省去很多宝贵的编译时间。它的主要好处是页面、章
节和公式编号的附加信息可以由\includeonly命令提供,因此交叉引这类命令,如\ref和pageref命令等能生成正确的结果。此命令可多次
使用,所需的导言区仅有一个。
样例:编辑一本由8章组成的书籍
\documentclass{book}
导言区
\includeonly{.....}
\begin{document}
\frontmatter
\include{toc}
\mainmatter
\include{chapt1}
...
\include{chapt8}
\backmatter \printindex
\end{document}
其中toc.tex文件由如下的文本组成
\setcounter{page}{7}
\tableofcontents
\listofcontents
\listoffigures
通过在\includeonly命令中添加适当的项,如\includeonly{toc,chapt8}
就可以选择性地处理各章(这里为第8章)。
\includeonly
有些命令支持后面带有一对方括号[ ] 括起来的可选参数.
制作书签
pdf 格式的文档有一个特性— bookmarks,让用户可以打开一个树状的索引浏览文章的各个章节,这在阅读较大的文档时非常方便。TEX
中可以使用hyperref 宏包实现这一功能。
\usepackage[dvipdfm,CJKbookmarks,bookmarks=true,bookmarksnumbered=true]{hyperref}
中文bookmarks
pdf 的bookmarks 对文字的编码要求比较特殊,它可以使用两种编码:ISO Latin 1 或Unicode UTF16 Big
Endian。TEX 处理像中文这种多字节语言,即使文档采用UTF8
编码保存,仍然无法得到正确的bookmarks,这需要在文档中使用特殊的命令。
对于GB2312 编码的文件,我们可以在其后加上一行特殊指令(加在\begin{document}之后):
\AtBeginDvi{\special{pdf:tounicode GBpc-EUC-UCS2}}
而UTF8 编码的文件,则使用:
\AtBeginDvi{\special{pdf:tounicode UTF8-UCS2}}
加在\begin{document}之后
其中UTF8-UCS2 的CMap,需要到
http://project.ktug.or.kr/dvipdfmx/sample/omega/lambda-example2.zip
下载一个文件包,然后将UTF8-UCS2 文件复制到TEXMFHOME/dvipdfm/CMap 目录下2。
对bookmarks做一些定义:
\hypersetup{colorlinks, linkcolor=blue, citecolor=blue, urlcolor=blue,%定义链接的样式
bookmarksopen=true,%打开PDF文件的同时打开书签
pdfhighlight=/P, %/I(inverse) /N(no effect) /O(outline) /P(inset)
pdfauthor={MichaelBibby <michaelbibby@gmail.com>},%该PDF文件的制作者
pdfcreator=tex,%制作该PDF文档的工具
pdftitle={teTeX Chinese},%该PDF文档的标题。不是指PDF文件的文件名,任意取。
pdfsubject={teTeX},%
pdfkeywords={项目方案},%该文档的关键字
pdfstartview=FitH, %FitBH, FitB
pdfpagemode=UseOutlines,%UseOutlines, %None, FullScreen, UseThumbs
}
gbk2uni
这个工具很有用。有时候 bookmark 出不来,可能就需要它来帮忙。 ctex套件已经带有这个工具,UNIX平台的需要额外下载。
插入图片(eps)
LATEX 通过figure 和table 环境提供了处理图像或者图形等浮动对象的基本能力。
有几种办法可以通过使用基本LATEX 命令或者LATEX
扩展宏包来产生实际的图形。但是大多数用户发现这些命令相当难以理解。因此我们不打算在这个手册里深入介绍这些内容。如果需要这方面的详细信息,请参阅
The LaTeX Companion和LaTeX Manual。
一个比较简单的在文档中加入图形的办法就是使用特定的软件包1 生成图形文件,然后将最终的图形文件包含到文档中。LATEX
的宏包提供了许多方法来完成这个工作。在这个手册里,我们只讨论Encapsulated PostScript(EPS)
图形文件的使用。因为它比较简单而且被广泛地使用。
为了使用EPS 格式的图片,你必须有一个PostScript 打印机来输出结果。由D. P. Carlisle 制作的graphicx
宏包包含了一套很好的命令来包含图形。它是一个叫作“graphics” 的宏包集中的一部分。假设你使用的系统安装了PostScript 打印机和graphicx
宏包,那么你就可以通过下面的步骤一步步地把一幅图片加入你的文档中:
1. 用你的图像软件输出EPS 格式的图形文件。
2. 在输入文件的导言中加上下面的命令来装入graphicx 宏包。
\usepackage[driver]{graphicx}
这里driver 是你使用的“dvi 到postscript”的转换程序。最常用的是 dvips。因为TEX
中没有规定包含图形的标准,所以程序的名字是必需的。知道了driver 的名字,graphicx 宏包就可以选择合适的方法在 .dvi
文件中插入关于图形的信息。这样打印机才能理解这些信息并正确的包含这些.eps 文件。
3. 使用命令
\includegraphics[key=value, . . . ]{file}
来把文件file 加入你的文档。可选的参数是一系列由逗号隔开的关键词keys 和相应的值values。关键词keys
可以用来改变包含的图形的宽度、高度以及旋转角度等等。以下是最主要的几个关键词。
# graphicx 宏包使用的关键词:
width 把图形缩放到指定的宽度
height 把图形缩放到指定的高度
angle 逆时针旋转图形
scale 缩放图形
下面这个例子可以帮助我们理解整个过程:
\begin{figure}
\begin{center}
\includegraphics[angle=90, width=0.5\textwidth]{test}
\end{center}
\end{figure}
这段代码把存储在文件test.eps 中的图形包含到文档里。首先图形被旋转90 度,然后进行缩放使得图形的宽度等于标准页面宽度的0:5
倍。因为没有指定图形的高度,图形的高宽变化的比例是1:0,也就是保持原来的高宽比。高度和宽度参数也可以用绝对长度单位来指定。
插入脚注
Bibby\footnote{这是对"Bibby"做的脚注}
这时候在字符串Bibby的右上角会出现一个数字,表示这是该页的第几个脚注。如果要达到点击该数字即可跳转到对应的脚注,需要使用hyperref包:
# 在导言区中加入:
\usepackage{hyperref}
\pagestyle{headings} # 写在导言区。页眉由当前的章节标题和页码组成,页脚为空。
引用
\begin{quote}
...
\end{quote}
自动生成索引
在\begin{document}后加上此句即可:
\tableofcontents
为了美观,可以这样使用:
\newpage % start a new page
\tableofcontents % create table of contents automatically
\newpage % start a new page
\pagenumbering{arabic} % Arabic page numbers from now on(使用阿拉伯数字排序索引页面)
pagenumbering还可以有以下参数:
- arabic Arabic numerals
- roman Lowercase roman numerals
- Roman Uppercase roman numerals
- alph Lowercase letters
- Alph Uppercase letters
断行
另起一行,而不另起一段:
\\ or \newline
在强行断行后,还禁止分页:
\\*
另起一新页:
\newpage
字符串排版
省略号:
\ldots
引号
不要像在打字机上那样,把" 用作引号。在印刷中有专门的左引号和右引号。在LATEX 中,用两个`
(与波浪符号同一个键)产生左引号,用两个' (引号)产生右引号。一个` 和一个' 产生一个单引号。
插入链接
email链接
\href{mailto:michaelbibby@gmail.com}{给我电邮}}
URL链接
\href{http://www.ustc.edu.cn}{科大网站}
\url{http://www.ustc.edu.cn}
\nolinkurl{http://www.ustc.edu.cn}
插入表格
格式:
\begin{tabular}{table spec}
\end{tabular}
table spec定义了表格的样式。
- 'l' 产生左对齐的列;
- 'r' 产生右对齐的列;
- 'c' 产生居中的列;
- 'p{宽度值width}' 产生相应宽度、包含自动断行文本的列;
- '|' 产生铅直线;
- '&' 跳入下一列。也可由@{}中指定的符号来决定。比如\begin{tabular}{@{.}},以'.'列的为分隔符号。;
- '\\' 开始新的一行;
- '\hline' 生成一条水平线;
- '\cline{j-i}' 添加部分表格线。j和i分别表示表格线的起始列和终止列的序号;
比如:
\begin{tabular}{|l|c|c|}
...
\end{tabular}
这样产生的表格,第一列是左对齐的,第二、三列是居中的。
合并列
\begin{tabular}{|c|c|}
\hline
test & test \\
\hline
\multicolumn{2}{|c|}{text area} \\
\hline
\end{tabular}
其他
旁白或边注
\marginpar{}
列表
注意:列表中无法使用'\\'手动断行。
\begin{itemize}
\item The first item.
\item The second item.
...
\end{itemize}
特殊符号
符號 作用 文稿上使用 LaTeX 的替代指令
\ 下排版命令 $\backslash$ \textbackslash
% 註解 \% NA
# 定義巨集 \# NA
~ 產生一個空白 \~{} \textasciitilde
$ 進入(離開)數學模式 \$ \textdollar
_ 數學模式中產生下標字 \_{} \textunderscore
^ 數學模式中產生上標字 \^{} \textasciicircum
{ 標示命令的作用範圍 \{ \textbraceleft
} 標示命令的作用範圍 \} \textbraceright
< 數學模式中的小於符號 ___FCKpd___48lt;$ \textless
> 數學模式中的大於符號 ___FCKpd___48gt;$ \textgreater
| OT1 編碼,數學模式中才能正確顯示 $|$ \textbar
& 表格中的分隔符號 \& NA
水印
加在导言区:
\usepackage[all,bottom]{draftcopy}
\draftcopyName{Copyright by MichaelBibby, 2006}{50}
\draftcopySetGrey{0.8} \draftcopyPageTransform{55 rotate}
\draftcopyPageX{80}\draftcopyPageY{-25}
生成文件时的步骤是:
latex --> dvi --> ps --> pdf
设置边界
试用anysize包
\usepackage{anysize}
以下语句放在\begin{document}之后
papersize{width}{height}
设置页面的大小。这个命令可以不用,因为缺省可在 \documentclass 选项中设定标准得页面大小。一般为 a4paper。
\marginsize{left}{right}{top}{bottom}
设定页边空白的大小,这才是 anysize 宏包的价值所在。对于像 book 等双面版式来说,这里的 left 和 right
再奇偶页会互换。例如:
\marginsize{1}{1}{}{}