现在的位置: 首页 > 综合 > 正文

LaTeX学习笔记

2013年06月18日 ⁄ 综合 ⁄ 共 10519字 ⁄ 字号 评论关闭
文章目录

介绍LaTeX

LaTeX 排版系统简介

  • TeX系统:

TeX是由Donald E. Knuth书写的一个计算机程序,目的是对文本和数学公式进行排版。最基本的TeX程序是由一些很基本的命令组成,以完成简单的排版和程序设计功能。 TeX 也允许使用这些基本的命令定义一些更复杂的高级命令,由此利用低级的结构快形成一个用户界面相当友好的环境。Knuth还设计了一个名叫Plain Tex的基本格式,以便与低层次的TeX 呼应。Plain TeX格式依然是TeX 字处理相当基本的部分,实际上我们很分清TeX与Plain TeX.

  • LaTeX系统:

Plain TeX的重点只是停留在如何排版的层次上,对TeX的深层功能的进一步发掘需要相当高级的编程技巧。美国计算机学家Leslie Lamport开发了LaTeX格式,这种格式提供了一组生成复杂文档所需要的更高级的命令,它在生成复杂表格和数学公式方面功能尤为突出。它可以自动给 出标题、章节、表格目录、交叉引用、公式编号、文献引用、浮动图表、浮动图形等等。LaTeX 经过多年的更新其版本号固定为2.09.

  • LaTeX2e系统:

由于LaTeX的普及及其许多领域的扩展,使得相当广泛的一类排版格式都冠以LaTeX的标签。为了再次统一自LaTeX2.09版本以后所进行的 各种修补工作并建立一个真正的、能满足较长时间内排版需要的LaTeX改进标准,在Frank Mittelbach的领导下,Leslie Lamport, Chris Rowley和Rainer Schopf创立了LaTeX项目组,旨在得到LaTeX的一个新版本3,在该版本中建立一个最优的、有效的命令集合。1994年他们发行了一个新的版 本,并命名为LaTeX2e。

LaTeX 排版的主要特点

LaTeX 排版的主要特点:

  • 国际权威学术机构及会议指定排版格式
  • 符号公式随心所欲
  • 文档易于网上传输
  • 支持多种 操作系统
  • 易于转换成ps文档、pdf文档或HTML文档
  • 便于扩充并形成个性化的排版环境(用LaTeX的宏包实现)

LaTeX源文件的组织结构

基本结构

每一个源文件基本结构如下:

/documentclass[字体大小,纸张大小,杂类参数]{文档类别}
导言区(preamble)

/begin{document}
文档正文区
/end{document}

LaTeX的文档类别(/documentclass{})

合法的LaTeX文档类别包括下面的5种:

  • article(文章)(注:CCT中可使用cctart)
  • book(书籍)
  • report(报告)
  • letter(信函)
  • slides(幻灯片)

除幻灯片类别,标准的文档类别接受下面的可选参数确定字体大小(1pt=1/72.27英尺)

  • 10pt(缺省)
  • 11pt
  • 12pt

所有的文档类别都接受下面形式的可选参数确定纸张大小(缺省为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

有些命令支持后面带有一对方括号[ ] 括起来的可选参数.

导言区

bookmarks

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平台的需要额外下载。

usepackage

indentifirst

indentfirst # 每个中文段落都在第一行空两个中文字符的宽度。

由于indentfirst不能准确地使用两个汉字的位置,所以需要在/begin{document}之后加一个TEX指令:

/CJKindent

hyperref

hyperref宏有许多选项,比如,可以这样使用:

/usepackage[dvipdfm,CJKbookmarks,bookmarks=true,bookmarksnumbered=true]{hyperref}

另外更多的常用选项:

/hypersetup{colorlinks, linkcolor=blue, citecolor=blue,
urlcolor=blue,
plainpages=flase,
pdfcreator=tex,
bookmarksopen=true,
pdfhighlight=/P,
pdfauthor={MichaelBibby <michaelbibby@gmail.com>},
pdfcreator={cTeX},
pdftitle={/LaTeX Beamer 入门},
pdfkeywords={/LaTeX Beamer 入门 MichaelBibby},
pdfstartview=FitH,
pdfpagemode=UseOutlines,%UseOutlines, %None, FullScreen, UseThumbs
}

正文

文章标题

/title{OpenBSD入门} % 设定文章的标题。书名。
/author{张煌彬} % 文章作者
/date{/today} % 文章的日期

%/newpage

/maketitle % 使用该命令生成标题信息。只有加了该命令才能生成文章标题信息。

章和节

对article风格的文档,有下列分节命令:

/section{...}
/subsection{...}
/subsubsection{...}

/paragraph{...}
/subparagraph{...}

对report 和book 风格的文档,还有其他两个分节命令(part比chapter要大):

/part{...}
/chapter{...}

因为article 风格的文档不划分为章,所以很容易把它作为一章插入书籍文档中。节之间的间隔,节的序号和标题的字号由LATEX 自动设置。分节的两个命令有些特殊性:

  • 命令/part 不影响章的序号。
  • 命令/appendix 不带参量,只把章的序号改用为字母标记。

/chapter还有另外一种使用方式:

/chapter[显示在目录索引中的内容]{显示在正文中的标题}

LATEX 在文档编译的最后一个循环中,提取节的标题和页码以生成目录。命令

/tableofcontents

在其出现的位置插入目录。为了得到正确的目录内容,一个新文档必须编译两次。有时还要编译三次。届时LATEX 会通知你。

字体与尺寸(Todo)

字体

字体尺寸

插入图片(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,也就是保持原来的高宽比。高度和宽度参数也可以用绝对长度单位来指定。

脚注(footnote)

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 中,用两个` (与波浪符号同一个键)产生左引号,用两个' (引号)产生右引号。一个` 和一个' 产生一个单引号。

参考文献(Todo)

页眉、页脚(Todo)

使用fancyhdr宏包

在用 LaTeX 排版文章、书籍时,缺省定义了四种页眉页脚的格式:

    empty  没有页眉和页脚
plain 没有页眉,页脚中部放置页码。
headings 没有页脚,页眉包含章节的标题和页码。
myheadings 没有页脚,页眉页码和使用者所定义的信息。

article 缺省使用 plain 格式,而 book 则使用headings 格式。 也可用 /pagestyle 命令在你的文档中设定所用的格式,例如在文档中使用 /pagestyle{empty} 则使得此后的页面没有页眉和页脚。 一般情况下,这四种格式基本可满足排版的要求。但在某些情况下,特别是 使用者想定义自己的页眉和页脚格式时,就会遇到很多限制和麻烦。这时, 使用 fancyhdr 宏包可以很容易地达到目的。

利用 fancyhdr 宏包提供的命令,可以方便的作到:

  • 自定义页眉和页脚。
  • 为页眉和页脚加上装饰性的横线。
  • 页眉和页脚的宽度可以超过正文文本的宽度。
  • 多行的页眉和页脚。
  • 奇偶页使用不同格式的页眉和页脚。
  • 每章的首页使用不同格式的页眉和页脚。
  • 浮动对象页使用不同格式的页眉和页脚。
  • 控制页眉和页脚的字体,包括字形,字族,大小写等。

现在的大多数 TeX 软件如 MikTeX,fpTeX,teTeX等,都包括 fancyhdr 宏包。如果你的 TeX 软件是较旧的 emTeX 等,则需要自己安装。安装的方法很简单, 只要将 fancyhdr.sty 放到 LaTeX 能够找到的目录下就行了。

导言区中加入:

/usepckage{fancyhdr}
/pagestyle{fancy}

% 基本用法:
/lhead{}
/chead{}
/rhead{}
/lfoot{}
/cfoot{}
/rfoot{}

Image:Fancyhdr1.gif} /bfseries /leftmark} /fancyfoot[LE,RO]{/thepage} /fancyfoot[LO,RE]{/CJKfamily{kai} 公元二零零零年七月} /renewcommand{/headrulewidth}{0.4pt} /renewcommand{/footrulewidth}{0.4pt} ...... /end{CJK} /end{document}

章节(section)

/section*{section title}
/section{section title} # 在section title前生产数字序列号

杂项

email链接

/href{mailto:michaelbibby@gmail.com}{给我电邮}}

URL链接

  • 链接的颜色:
/href{http://www.openbsd.org}{OpenBSD官方网站}
  • 只显示URL:
/url{http://www.openbsd.org}
  • 显示URL,但是不做链接和跳转:
/nolinkurl{http://www.openbsd.org}

子目录级数

/setcounter{tocdepth}{5} % 生成最多5级子目录。结合/tableofcontents使用

旁白或边注

/marginpar{}

列表

注意:列表中无法使用'//'手动断行。

/begin{itemize}
/item The first item.
/item The second item.
...
/end{itemize}

表格(Todo)

格式:

/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}

特殊符号

符號   作用            文稿上使用   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}{}{}

Tips

PDF合并

gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf f1.pdf f2.pdf f3.pdf

Tools

PDF<-->Word

http://www.grindeq.com/index.htm

 

抱歉!评论已关闭.