+----------------------------------------------------+
|本节内容: 我为什么要用TeX ? |
+----------------------------------------------------+
如果你经常编排带数学公式的文章, 那么你对WORD估计不陌生, 而且对它的公式编辑器也用得不少, 那你可能会发现, WORD编排出来的段落不是那么令人满意, 如果左对齐, 那么每行的右边参差不齐, 很不美观; 而如果选用两边对齐, 那么WORD为了达到这点要求, 可能就加大了某些词与词之间的间距, 那样也达不到我们满意的文章格式. 能不能在行末自动地把一个单词在音节处拆开, 并加上连字符呢? TeX可以.
公式编辑器用多了, 你可能就发现, 如果你要修改文章字体的大小, 这时需要一个一个地调整公式的大小, 简直是无法承受的工作量; 而且, 你经常会发现, WORD的公式大小并不是和正文那么适配, 许多时候看起来要么大了, 要么小了, 尤其是碰到大行的公式, 页面编排都可能因此受到影响了. 而TeX美观的公式混排, 统一的公式正文大小, 会令你感觉你编排的文章和正式出版的数学书籍一样漂亮.
WORD编一篇大的文章, 你就会发现你可能不得不将它按章节存储成各个小文件, 因为公式多的文章的WORD文档大得不是一张软盘能解决的了. 而我们使用的TeX格式的文档, 一个50页包含很多公式的文章可能只有不到100K大小.
微软的东西就是版本多, 你一定为WORD6.0, WORD95, WORD97,还有英文WORD, 中文WORD的诸多版本的不兼容性大感头疼, 有时不是头疼就能解决的, 公式编辑器的不兼容, 使低版本的WORD公式根本无法在高版本中使用. 而虽然TeX也有非常多的版本, 但是TeX的基本格式以及公式等编排格式都有统一的标准, 而那些灵活多样的格式, 往往只是一两个文本文件就可以解决的, 甚至我可能一点不直到别人所用的格式, 但从文档中我猜出大致意思了, 那我也可以自己写出那样特殊的格式, 因为TeX是纯文本格式, 你可以轻松地读懂每一句话. 而WORD文档格式的不公开, 我想不会有几个人能从一个WORD文档看出编排后的样式. TeX的纯文本文件, 使得各个操作系统下的TeX环境都能轻松地编辑修改浏览打印你的文章, DOS, WINDOWS, 甚至UNIX.
最为关键的是, 现在很多国内外杂志, 要求寄去的文章按TeX格式排版(可能有些杂志可以接收WORD文档, 那你可能又要在茫茫软件海洋中寻找英文WORD, 因为国外根本就没有中文WORD, 而你的中文WORD文档在英文WORD中什么都看不出来). 那么会用TeX就更是你迫在眉睫的需要.
TeX就和vi一样, 在你对他一点不懂的时候, 你总觉得他很难相处, 但是在你了解他之后, 你会越来越发现他的好.
TeX 2
+----------------------------------------------------+
| 本节内容: 一个最最最最简单的TeX文档, 并在CCT环境 |
| 下编译浏览打印该文件, 编译出现错误后的继续, 以及 |
| DOS下的CCT EMTEX的下载及安装. |
| (附CCT EMTEX的 文件) |
+----------------------------------------------------+
我们已经讲过, TeX源文件是文本文件, 就象一个C语言的源文件一样, 那么我们也象编译C语言程序得到可执行程序一样, 我们编译TeX源文件, 得到能在计算机上浏览或打印的格式文件,那就是后缀为.DVI的文件(我们就称它为DVI文件). TeX源文件我们通常把其后缀取为.TEX. 当然, 如果你在中文TeX的环境中编排你的中文文章, 那么你的源文件后缀可能就是那个中文TeX给你约定的了, 我们现在常用的CCT EMTEX, 所用的后缀是.CTX, 系统的操作是将.CTX源文件中的中文经过预处理, 产生标准的TeX文件, 然后再照平常的TeX文档一样操作, 得到DVI文件.
今后, 我们均以DOS下的CCT EMTEX环境为例, 来讲述TeX文章的编排. 因为TeX的标准, 所以在不同的TeX环境, 其实文章编排的内容格式是一样的, 只是可能它得到DVI的途径不同而已. 而我们就以现在比较流行的LaTeX为准来讲述TeX的使用, 其它如amstex, amslatex等, 仅是文档的最外层框架以及少数扩展的命令不大一样之外, 其它命令都是相同的.
一个最最简单的TeX文档可能是: (比如我们用EDIT, 当然也可以用写字板或UltraEdit等甚至是UNIX下的vi编辑器等编辑一个文本文件如下四行, 取名为'')
\documentstyle{article}
\begin{document}
my example content
\end{document}
现在流行的TeX格式似乎已经不是documentstyle而是documentclass了, 但是它们除了一开始的写法不大一样之外, 正文的命令排版等等都没有任何区别. 以CCT EMTEX环境为例, 我们用'latex '
来编译TeX文件来得到DVI文件, 然后用'view '来浏览, 用'dvi24p '(24针打)或'dviljp '(激打)来打印文章.(以上三条命令的后缀均可以省去, 仅用'latex 1','view 1'和'dviljp 1'等.)
如果你的TeX文件不符合TeX语法, 那编译将可能出错, 这时可以让系统忽略错误产生DVI文件(这时可能就不能达到你所期望的排版效果了), 或者你应该修改源文件中的错误, 重新编译, 直到全部通过. 在LaTeX编译出错时, 会在屏幕上显示出错信息, 并显示"?"以接受用户进一步的指示. 在"?"后, 输入:
1. 回车: LaTeX尽量忽略此错误, 继续运行;
2. s: LaTeX继续运行, 并之后还有错误, 也不停止运行;
3. r: 类似s, 比上者更强硬, 甚至连打不开文件这样的严重错误也不停止;
4. q: 同r, 但错误及提示均不在屏幕显示, 直接写入.LOG文件;
5. I: 之后跟一个字符串, 用来插入替代出错的字符串. 比如在正文需要纵向空出1cm空白, 用"\vskip 1cm", 但是输入错误成为"\vship 1cm", 则编译出错:
! Undefined control sequence.
l.102 \vship
1cm
?
表示在第102行, \vship是未定义的命令, 这时在?后输入"I\vskip", 则用\vskip替代出错的\vship, 继续执行. 这里需要注意的是, 这条指令只是编译中临时修改错误, 并没有真正地修改源文件;
6. 小于10的数: 表示删出从当前位置开始的那么多个字符;
7. ?: 显示提示
8. h: 显示帮助, 对当前错误提出进一步动作的建议;
9. x: 中断编译, 将已编译的结果写入.DVI中, 出错及提示写入
.LOG中.
下载CCT EMTEX, 科大内可去
ftp://202.38.68.76/chencs/cct-new/
该软件源站点是 :/pub/cct
安装请阅读. 装之后,关于CCT(TeX的中文接口)部分的说明请看解开后的. 文后附CCT中 的内容.
TeX 3
+----------------------------------------------------+
| 本节内容: TeX 中的十个保留字符; TeX 中关于空格, |
| 段落, 断行, 分页的约定; 几种TeX中的短横线以及单 |
| 双引号的使用; 字体, 字号, 分组; 特殊字符, 重音 |
+----------------------------------------------------+
TeX中, 你很常见到的是"\"符号, 那是TeX排版命令的标志,比如说\Omega就是能输出键盘无法直接输入的特殊字符Ω, 而\begin{tabular}{ll}将说明一个制表环境的开始.
和"\"字符一起, $ & % # _ ^ { } ~ 是TeX的保留字符, 如果要在文章中输出以上字符, 分别应该用\backslash, \$, \&,\%, \#, \_, \^{}, \{, \}, \~{}来表出.
$ 是数学环境的分界符
& 在制表中和数学环境中, 用来对齐各列的
% 表示之后的为注释, TeX忽略该行此符号之后的内容
# TeX定义命令时, #1--#9表示第几个参数
_ 数学公式中的下标
^ 数学公式中的上标
{ } 分组的开始和结束
~ 用在英文排版中, 表示不可断行的空格
TeX中有几个约定:
1.空格和<TAB>符以及回车符, 都被TeX当做一个空格(即使你连续输入很多空格), 也因此, 不能将一个完整的英文单词用回车切开;
2.段落: 在TeX源文件中, 一个空行就表示一个新段落的开始, 也可以用"\par"产生新段落;
将一段的正文按定义的宽度及页高自动进行断行分页,因此如果需要强制断行用"\\"或"\newline"来表示; 换页用"\newpage"或"\clearpage";
4.短横线的长度:
连字符, 用"-", 如"X-ray";
表示数字的范围, 用"--", 如"1--2";
破折号, 用"---";
在数学环境中, "-"总是当作减号;
5.单引号和双引号
单引号, 分别用"`"和"'"来表示;
双引号, 则用"``"和"''"(两个同方向单引号连用).
LaTeX中有256种字体甚至更多, 而常用的是5--6种而已, 比如英文正文常用罗马体("\rm"), 公式中常用意大利体("\it"), 其它字体有黑体("\bf"), 斜体("\sl"), 等线体("\sf"), 打字机 体("\tt"). 在不使用字体控制时, 缺省是罗马体, LaTeX一直使用当前字体, 直到出现改变字体的命令为止. 而CCT中增加了改变中文字体的命令: "\songti"(宋体), "\heiti"(黑体), "\fangsong"(仿宋), "\kaishu"(楷书), 中文字体缺省是宋体.
LaTeX英文字号使用point(点制). 1 inch=72.26 pt. LaTeX 从小到大,依次用"\tiny", "\scriptsize", "\footnotesize", "\small", "\normalsize", "\large", "\Large", "\LARGE",
"\huge", "\Huge"来定义和改变字号. 在定义了10pt, 11pt或12pt的基准字号后, LaTeX也相应地调整以上各字号的大小. 这里还要注意的是, 在同时使用英文字体和字号控制中, 应先改变字号再改变字体, 否则可能得不到希望的结果. CCT中, 对中文还有专门的命令"\zihao{n}", 这里n是中文字号的号数, 为0到7, 以及-4(小四)和-5(小五).
在上面, 我们已经知道了{和}定义了分组(group), 所有在分组字符之间出现的命令的作用范围都只是在这组相应的大括号中. 看看例子"normal {\bf this is bf} normal again"就知道了.
在编排科技文献中, 经常会遇到一些键盘无法直接输入的字符, 比如节号, 版权号, 剑号以及在字母上加一些重音符号等等.你来试试看:
\S \P \copyright \dag \ddag \^a
以a为例, 下面看看各个重音符号的作用: \^{a}, \v{a},\~{a}, \'{a}, \`{a}, \.{a}, \"{a}, \u{a}, \={a}; 而在以后要讲的数学环境中, 以上几个重音应该分别表示为$\hat{a}$,$\check{a}$, $\tilde{a}$, $\acute{a}$, $\grave{a}$, $\dot{a}$, $\ddot{a}$, $\breve{a}$, $\bar{a}$, 最后, 在数学环境中, 还有$\vec{a}$是在a上面加一小箭头. 其中, 数学环境中, 还有\widhat和\widtilde, 可以自动地调整^或~的长度, 以适应其后{}中的多个字符.
TeX 4
+----------------------------------------------------+
| 本节内容: TeX的文件版式\documentstyle, 页面格式 |
| \pagestyle, 版面的尺寸参数 |
+----------------------------------------------------+
TeX的版式首先是文件版式, 也就是我们接触的第一个最最最简单的TeX文档中的第一句:
\documentstyle[选项1,选项2,...]{格式}
其中的[]及选项是可选的, 而{格式}是必需的. LaTeX有以下几种格式: article(文章), report(报告), book(书), letter(信件). CCT对前面三种进行了汉化, 分别是carticle, creport和cbook.
常用的选项有
10pt/11pt/12pt: 定义基准字号, 缺省10pt.
twoside: 两面印刷格式, 因奇偶页装订位置不同而异, 缺省为
单页.
twocolumn: 双栏排版, 缺省为单栏.
titlepage: 仅在article格式使用, 它是\maketile产生一个单
独的文章题目页, 同时abstract也产生单独页
leqno: 使公式标号出现在左边, 缺省在右
fleqn: 公式左对齐, 缺省中间对齐
thesis: 专用于毕业论文排版
IEEE: 专向IEEE类杂志投稿的格式
IFTHEN: 排版计算机程序
LaTeX的一个页面有页眉(head, 通常是杂志名, 卷号, 当前章节名等), 主体(body, 正文, 包括脚注及图表), 页脚(通常是页码, 如果页码放在页眉处, 则页脚可能是空的). 我们用下面的指令控制页版面:
\pagestyle{参数}
参数可以是
plain: 页码在页脚居中, 页眉空白, 为article, report的缺省
empty: 趁 页脚都空白
heading: 页脚为空, 页眉为正文的章节信息及页码
myheadings: 自定义页眉, 内容由
\markboth{left_head}{right_head} (双面twoside排版)
或\markright{right_head} (单面排版)
\pagestyle是对全文有效的, 而如果要定义某页的页面格式, 则可用\thispagestyle, 用法同上, 下一页自动恢复原设置.
这里提到页码, 我们经常会修改页码的表现格式, 可能用阿拉伯数字或罗马数字等, 则修改\pagenumbering{参数}, 这里参数可以是arabic(阿拉伯数字), roman(小写罗马数字: i, ii, iii,) Roman(大写罗马数字: I, II, III,), alph(小写英文: a, b, c,), Alph(大写英文: A, B, C). 如果需要更改某页的页码, 则用修改计数器命令: \setcounter{page}{数字}, 这里page是页码计数器.
TeX中还经常会在\documentstyle和\begin{document}之间常用到很多修改版面尺寸的命令. 如未指明, 这些命令的格式都是用\para_name=newvalue的格式.
\texwidth, \texheight 页body的宽度和高度, 不包括 趁 页脚
\oddsidemargin, \evensidemargin 奇数/偶数页, 纸张左边缘到页body左边缘的距离减去一英寸
\topmargin 纸张上边缘到页眉或body(无页眉时)的距离减去一 英寸
\marginparwidth 页边注(marginnote)的宽度
\marginparsep 正文边缘到页边注边缘的距离
\headheight 页眉高度
\headsep 页眉底部到页主体顶部的距离
\footheight 页脚高度
\footskip 页正文最后一行底到页脚底的距离
(建议, 总把\oddsizemargin, \evensidemargin, \topmargin设为0cm; 如果没用页眉, 将\headheight, headsep设为0cm; 如果没用页脚, 将\footheight, \footskip设为0cm, 这样便于在输出时直接利用驱动程序的功能控制版心的位置.)
\columnsep 双栏article中, 左右栏间空白的距离
\columnseprule 双栏article中, 左右栏间分隔线的宽度, 缺省为零, 即没有线
以下参数的修改可以在\begin{document}的前面和后面:
\parskip 段落之间除了空出正常行距外额外空出的距离
\parindent 段首空白的长度
\footnotesep 两个注脚之间的距离
\baselineskip 正文中前一行底和第二行底的距离, 会因字号的改变自动改变.
另外, 定义行距还有一个特殊的参数, 那是\baselinestretch,它是用在\begin{document}前的全局变量, 修改格式如
\renewcommand\baselinestretch{倍数} 缺省时为1.0, 因此
LaTeX中最小行距是\baselineskip乘上\baselinestretch得到的.
TeX 5
+----------------------------------------------------+
| 本节内容: 以一个article例子看看文章的一般排版格 |
| 式. title信息详解. 以下仅就例讲解, 详情后续: 章 |
| 节, 留空(LaTeX的长度表示), 参考文献. |
+----------------------------------------------------+
有了那么多准备知识,我想现在可以开始深入展开一篇文章的排版了.大家可以把以下内容从\documentstyle行开始, 直到\end{document}行存在一个文本文件中, 如, 然后编译: latex 111(因为用到交叉引用, 需要编译两次), 然后用view 111来浏览此例, view中, 回车翻下页, <ESC>退出(具体view的使用参看CCT的)
\documentstyle{article} %使用article格式
\topmargin=0pt %以下页面设置
\oddsidemargin=0pt \evensidemargin=0pt %
\textwidth=14cm %
\textheight=21cm %
%
\title{This is a sample of \LaTeX} %文章题目
\author{Bigeyes(\tt{chencs@})\\ %作者. 多行用\\
Department of Mathematics\\ %
USTC, Anhui, Hefei, 230026 %
%
\and %如有多作者, 用\and
A\_A %
\thanks{Supported by ...} %致谢, 在author里
\\ %
BBS of USTC\\ %
[202.38.64.3]} %
\date{Mar. 1, 1999} %日期, 如果没有此项,
%则以当前日期代替, 若
%不要日期, 则用空{}
%
\begin{document} %document开始.
%以上定义标题各项内容,
\maketitle %此句产生标题, 不可缺少,
%一般都是正文第一句
\begin{abstract} %套用abstract格式
This is mini-page defined for abstract, %自动形成小页
you only write your abstract in it. If %
you want to shows keywords, maybe you %
should use: %
{\bf Keywords: }\LaTeX, example %LaTeX没有keywords环境
\end{abstract} %自己手工来做吧
%
\section{The very beginning} %一个节, 节的使用后详
This is the first section of your %
article. You may find every first %一节的第一段缺省情况
paragraph of your section, subsection, %为段首不自动缩进
chapter or ... always has no %
``parindent'' at the beginning. %
This is the second paragrph, you can %但是以后的段段首
find this has parindent at the % 自动缩进
beginning. If you want to show %
parindent at first paragraph too, %
do as the first paragraph I showed %
in the next section. %
%
\section{The 2nd step} %第二节,使用自动标号
\hskip \parindent %横向空出\parindent
This is the second section. In this %从这里大家看到
first paragraph, I use `hskip' to %\parindent其实是
get the first parindent. Maybe you %一个长度单位, 长
can get this effect by another way. %度单位后详
%
\subsection{Sub-sect of 2} %小节
this %
%
\subsection*{\S 2.2 Another sub of 2} %节,小节可以不使用
this %自动标号, 这时有关
%的计数器不增加
\section{Conclusion} %
I think you have know \TeX well now. %又是一节
I want to show you how to use %
bibliography. In the article, you %参考文献的
can use as ``see \cite{texbook}''. %引用方法\cite{标识}
%
\begin{thebibliography}{0} %参考文献列在这里
%{0}表示最长文献序号
% 为一位数
%\bibitem{标识}
%参考文献使用后详
\bibitem{texbook} Donald~E.~Knouth, ``The \TeX book'',
Addison-Wesley, 1984
\bibitem{lamport} L.\ Lamport, ``\LaTeX:
A Document Preparation System'',
Addison-Wesley, 1994
\bibitem{companion} M.~Goossens, F.~Millelbach,
and A.~Samarin, ``The \LaTeX\ Companion'',
Addison--Wesley, 1994
\end{thebibliography}
\end{document} %document结束
TeX 6
+----------------------------------------------------+
| 本节内容: 章节划分, 正文空白, TeX的长度, 脚注 |
+----------------------------------------------------+
上一节我们"亲密接触"了一个LaTeX文章, 下面, 我们就其中一些地方做补充说明.
LaTeX的章节划分很方便, 只要使用章节命令, TeX就能自动地改变其字体, 字号, 行距和排版方式. 章节划分的一般格式为 \sect-command{sect-name} 或 \sect-command*{sect-name}这两种格式的区别是, 前者自动给章节加序号, 而后者不加序号,也不加相应计数器. 这里的\sect-command可以是(从大到小)\part, \chapter, \section, \subsection, \subsubsection, \paragraph, \subparagraph. 其中在article环境中没有\chapter. 大家可以参看上节的例子.
在TeX中, 大家已经知道, 不管你用了多少个连在一起的空格, 都代表一个, 不管你用几个空行, 都只表示新起一段. 那么, 怎么在正文中留空格呢?(关于数学环境, 以后再讲) 在TeX中, 横向用"\ "或"\enskip"表示空格, 可以用"\quad"表示大空格, "\qquad" 更大一些, 而"\hskip 长度"或"\hspace{长度}"可以任意控制空白的大小; 纵向, 从小到大可以使用"\smallskip", "\medskip","\bigskip", 而"\vskip 长度"和"\vspace{长度}"可以控制纵向空白的大小. 这里还要多说一句的是: 命令"\hspace*{长度}"和"\vspace*{长度}", 这二者的空白只在当前行当前页有效, 不会在行尾或页末造成影响.
上面大家看到"长度"这个概念了, 在TeX中, 有绝对长度和相对长度之分, 前者为数字加上绝对长度单位, 如mm(毫米), cm(厘米), in(英寸), pt(点), 例: 1.5mm, +2.8cm, -1.2in, 72.27pt.这里还要注意的是即时是零长度, 也要加上单位: 0cm等. 而相对长度单位有: em(当前字号M字母的宽), ex(当前字号x字母的高), CCT中还定义了"\ccwd"(当前字号汉字宽), "\ccht"(当前字号汉字高), "\ccdp"(当前字号汉字的深度). 从上节的例子大家可以看到, "\parindent", "\baselineskip", "\parskip"等距离参数, 也可以作为长度单位, 因此, "0.5 \textwidth"也是合法的长度,它等于当前页面正文宽度的一半.
最后, 我们看看TeX怎么在文中加脚注的. 一般格式是:
\footnote[num]{内容}
其中[num]是可选项, 如果省略, 则自动给该页脚注排序, 从1开始标号. footnote只能用于普通正文模式中, 比如盒子或数学环境中都无法使用, 因此系统提供了另外两条命令:
\footnotemark[num] 用来在文中插入脚注符号, 但不产生脚注内容; 而
\footnotetext[num]{内容} 则用来真正产生脚注内容. 注意在以后要讲的minipage中, 系统可能会将脚注放错位置.
TeX 7
+----------------------------------------------------+
| 本节内容: 三种数学环境, 数学环境中字体和字号, 数 |
| 学公式中的空格, 上下标, 分式, \displaystyle, 大 |
| 大小小的括号, 根式, 导数. |
+----------------------------------------------------+
到这里, 大家就已经能输入一篇完整的一般文章了, 但是科技文章总少不了数学公式, 而且大家选择TeX作为排版工具, 其中一个原因也是看中了它美观的公式编排, 现在我们就来看看和一般正文不一样的公式.
TeX提供三种有关数学公式的环境, 一种是"文中公式", 通过$或\(进入"数学环境", 通过$或\)来结束数学环境的; 第二种是"独立公式", 用$$或\[进入"显示数学环境"(以后我们统称数学环境), 用$$或\]退出, 在正文, 它是独占一行的, 它排出的字体要稍微比文中公式要大些; 第三种是带公式标号的数学公式: "方程",这个以后我们详细再讲. 数学环境是自动根据当前字号来调整公式中字的大小的.
数学环境中, 缺省字体是数学斜体(显示出来和意大利体一样), 因此如果要用到正文, 需要改变字体或使用盒子, 如我们要输出"y=x, if x>0,"这一句, 其中的"y=0"和"x>0"应该是数学公式(虽然不进入数学环境也能输), 而"if"却属于正文内容, 因此不应该用数学斜体显示, 而应该用"$y=x, {\rm if} x>0$"或用盒子: "$y=x, \mbox{if } x>0$", 但这里还要注意的是, 数学环境中忽 略一切空格(当然分隔命令的空格除外), 因此第一种输入可以发现, if和x>0之间没有我们想要的空格, 而第二种输入方式由于在\mbox{} 中if后加了一个空格, 所以if和x>0有一个空格, 这正是我们想要的. 因此标准的输入方法一般用后者. 而且, 前者的方法对汉字就不适用, 因为汉字不能出现在数学环境中, 而用盒子框起来就没问题了. 这里再多说一句的是, 数学环境中不能使用字号命令, 如果需要改变字号, 应该在数学环境之外改变, 而数学环境自动根据当前字号调整字的大小.
上面已经提到数学环境中忽略任何空白字符, 那么, 怎么在公式中输出空格呢? 当然我们可以用以前讲过的\quad或hskip来空出横向空格等, 但是如果我们要输出诸如"fdx"(这里dx是微分),这样在f和dx中要有一个小空格, 用\quad显然太大了, hskip根本不知道该空出多大距离. 在公式中, 常用的几个调整距离的命令是"\,"(小距离), "\:"(中距离), "\;"(大距离), "\!"(负距离),象刚才说的例子, 我们一般就用$f\,dx$即可. 当然, 一般情况我们很少改变数学公式中的距离.
下面我们看看如何在数学公式中输入上下标, 在讲TeX保留字时大家就有印象了, 上下标分别用"^"和"_"来表示, 如$x_0^2$, TeX中, 先输上标后输下标和先写下标再写上标是没有区别的, 它都会一样地自动调整字符大小和位置. 如果上下标的字符不止一个, 那就用"{}"括起来, 如$x^{1+y^{i+1}}$. 如果有人突然想在字符的左边输上下标呢? 简单的方法是在前面加一个空的{}, 如${}_{17}^{35}Cl$, 哦, 可能不是用的数学斜体, 那只好再用盒子了: ${}_{17}^{35}\mbox{Cl}$.
有时我们可能直接用1/2来表示分数就可以了, 但是如果分子分母我们想要排在分数线的上下, 那就要用"\frac{分子}{分母}"来表示了, 如$$\frac{1}{x+1}$$. 但是大家如果再把这个例子用单$括起做文中公式, 或者$$y=\frac{y-\frac{1}{x+1}}{y+1}$$,就会发现, 这个分式显示出来觉得比正常字号小, 要解决这个问题就要用\displaystyle的命令了. 可以试试
$$y=\frac{y-\displaystyle\frac{1}{x+1}}{y+1}$$, 可以了吧. 当然, 如果你在\documentstyle中使用了vatola选项(需要TeX系统在指定目录有文件), 那么, 你可以直接用\dfrac来代替\frac来达到同样的效果, 而避免使用冗长的\displaystyle 的输入.(格式如\documentstyle[vatola]{article}; 而如果用\documentclass{article}, 则用\usepackage{vatola}); 或二者均可以在第一句后面加上\input 来包含这个包)
有人可能又要问了, 如果我输出的分数, 分子还是有分子分母的分数, 分母也是一个不简单的分数, 那层层迭迭的分数线, 不够美观, 我还是喜欢"分子/分母"的格式, 那怎么把这条斜分数线画得长一些呢? 这里就要用到所谓的"定界符", 也就是成对出现的类似于括号的符号了, 如(), [], {}(用\{和\}输入), <>(用\langle和\rangle输入), /, \(用\backslash), |, ||(用\|); 以及另一些没法直接显示的符号, 大家自己用TeX产生出来看看:
$\lfloor, \rfloor; \lceil, \rceil; \uparrow; \Uparrow;
\downarrow; \Downarrow; \updownarrow; \Updownarrow$. 这些
"括号"通常嵌套并和分数等数学公式一起使用, 如$$y=1+(\frac{(x+1)^2}{x^2})$$, 当然大家会看到这外层括号太小, 不美观, 因此TeX提供了几个改变大小的命令, 从小到大依次是\big, \Big, \bigg, \Bigg, 如$$(, \big(, \Big(, \bigg(,\Bigg($$, 其它定界符类似使用. 另外, TeX还提供了自动调整括
号大小的命令, 那就是在定界符前加\left和\right, 需要注意的是\left和\right一定要成对出现, 如果只用单个, 那么另一边就要用"\left."或"\right."补上. 知道这些后, 我们就可以来输入长的"/"号了: $$\frac{1}{x+1} \left/ \frac{y+1}{x^2} \right.$$或$$\left. \frac{1}{x+1} \right/ \frac{y+1}{x^2}$$, 这两个是不是比$$\frac{\displaystyle\frac{1}{x+1}}{\displaystyle
\frac{y+1}{x^2}}$$更令人满意啊?
下面, 我们来讲讲根式的输入: "\sqrt[开方次数]{表达式}", 其中[开方次数]可选参数, 如果没有则是开平方, 如
$$\sqrt[3]{x+y}+\sqrt{2}$$.
而导数, 也就是在字母右上方加一撇或两撇的输出, 我们常用$$f^{\prime}$$和$$f^{\prime\prime}$$来表示, 或更简单地, 用$$f'$$和$$f''$$来表示.
TeX 8
+----------------------------------------------------+
| 本节内容: 数学符号: 希腊字母, 二元运算符, 关系运 |
| 算符, 箭头, 其它符号, 可用于一般环境的符号, 花体 |
| 符号及函数名, 可变大小的符号, \limits和\nolimits, |
| 省略号, 符号的上下堆积, 上下标的分行 |
+----------------------------------------------------+
TeX提供了许多"控制符号"来得到诸如希腊字母, 关系运算符,箭头等无法用ASCII键盘直接输入的符号.
小写希腊字母, 如\alpha,\beta, \gamma, \pi;
大写希腊字母, 如\Gamma, \Pi, \Omega;
二元运算符, 如\times(乘号), \div(除号), \pm(加减号), \circ(小圆圈), \cdot(点)等;
关系运算符, 如\leq(小于等于), \geq(大于等于), \subset(包含于), \supset(包含), \in(属于); 否定关系运算符, 如\not=(不等于), \not<(不小于), \not\supset (不包含); 箭头, \leftarrow, \rightarrow, \longrightarrow, \uparrow, \mapto等;
其它符号, \nabla(Nabla算子), \angle(角), \infty(无穷), \forall(任意), \exists(存在), \prime(导数的撇). 这些符号比较多, 这里就不细细一一列出, 大家去找一本TeX书, 复印那两三页下来就可以了.
本节讲的绝大多数符号都只能在数学环境中使用, 有几个符号也可以使用在一般环境中, 那是\S(节号), \P(段落号), \dag(剑号), \ddag(双剑号).
有时数学公式中的函数名, 算子等要用特别的花体来排版, TeX提供了\cal字体, 如"function $\cal F$". 而对于专有名词,如一些函数名, 如sin x中的sin, 就要用罗马体, 而不是一般的数学斜体排印, 我们可以用$${\rm sin}x$$, 也可以用TeX提供的直接在函数名前加"\"的方法: $$\sin x$$, 一般的函数均有定义, 如\sin, \cos, \lim, \log等.
数学环境中, 还有一类特殊的符号, 那就是可变大小符号, 如求和号, 积分号, 它们会因为符号后面的内容的大小自动调整自己的大小:
\sum, \prod, \coprod, \int, \oint, \bigcap, \bigcup, \bigsqcup, \bigvee, \bigwedge, \bigodot, \bigotimes, \bigoplus, \biguplus.
需要注意的是, 有些可变符号的上下标位置在文中公式和独立公式中是不一样的, 大家看个例子:
$\sum_{i=1}^n x_i=\int_0^\infty f(x)dx$
和$$\sum_{i=1}^n x_i=\int_0^\infty f(x)dx$$,
这里大家看到, \sum在文中公式中, 上下标是写在右上角和右下角的, 在独立公式中, 是写在上面和下面的; 而\int在二者中都写在右上角和右下角的. 我们可以强制用\limits和\nolimits来控制上下标的出现位置: 使用方法如$\sum\limits_{i=1}^b x_i$就强制将上下标写在上边和下边, 而\nolimits使其出现在右边角上. 这里多说一句, 如果你想把一般的操作符也想用\limits或\nolimits用, 只须把你的操 作符用\mathop{}括起来即可.
大家如果编排矩阵或行列式, 就会遇到特别的省略号, 大家试试\cdots, \vdots, \ddots就是三个方向的省略号. 而\ldots是比 \cdots低一点的省略号, 它和其它三个不同的是也可以用在正文环境中. \ldots一般用于$x_1, x_2, \ldots, x_n$这样的时候.
排版数学公式可能还会遇到需要把两个符号上下组合在一起,最常见的就是上划线和下划线, 大家试试$$\overline{a+b+c+d}$$
和$$\underline{a+b+c+d}$$,
这里需要说明的是, \overline只能用于数学环境, 而\underline也可以用在正文中. 类似地还有用花
括号括在式子上下的: $$\overbrace{a+\underbrace{b+c}+d}$$, 而如果上下括号上面或下面还有符号, 可以用上下标来表示, 如:
$$\overbrace{a+\underbrace{b+c}_{1.0}+d}^{2.0}$$.
LaTeX还可以将任意两个符号重叠在一起: \stackrel{上层符号}{下层符号}, 如$$\vec{x} \stackrel{\rm def}{=}(x_1, x_2, \ldots, x_n)$$, 这里需要说明的是\stackrel中第一个参数的符号以较小字号输出的. 而$${上面 \atop 下面}$$可以把两行内容按相同字号排出, 类似 地就出现了$${n \choose m}$$则是带括号的n个取m个的写法.
符号可以上下堆积, 可是我们如果要在\sum的下面写诸如i<9和j<9这两行下标, 用$$\sum_{i<9 \\ j<9} i/j$$是不行的. 我们怎么实现这样的分行呢? 我们可以用\atop来堆积, 如
$$\sum_{\scriptstyle i<3 \atop \scriptstyle j<3} i/j$$
这里之所以加了\scriptstyle是因为仅用\atop命令会把上下的字体再缩小一号. 另外, 我们也可以用另外的方法: 前面我们在讲\frac时提到\dfrac这个符号需要使用包, 这里, 如果使用了这个包, 我们可以在下标中用{\Sb 第一行 \\第二行 \endSb}, 在上标中用{\Sp 第一行 \\ 第二行 \endSp}来表示多行下标或上标.
TeX 9
+----------------------------------------------------+
| 本节内容: 数组array, 方程(标号)equation, 多行方程 |
| eqnarray, \aligned(), 标号的交叉引用 |
| 参考文献的使用(more) |
+----------------------------------------------------+
数组环境通常用来编排矩阵, 行列式等对齐的数学公式的.它的格式是:
\begin{array}{列对齐}
第一行 \\
第二行 \\
...
最后一行
\end{array}
这里, 列对齐的格式是{c1c2c3...cn}, 每个ci为一个字母, 说明第i列的对齐方式, 可以是c(居中), l(左对齐), r(右对齐). 而每一行的各列用&符号隔开, 行末是\\. 因此n列的数组, {列对齐}应该有n项, 每行应该有n-1个&, 一个\\(最后行通常不用\\). 数组中某一列可以不存在, 但是&号不能少. 数组外常常使用可变大小的定界符\left和\right, 大家看个例子:
$$\left(
\begin{array}{clr}
a+b+c & a+b+c & a+b+c \\
a+b & a+b & a+b \\
a & a & a
\end{array}
\right) $$
这里要作些说明,数组中某两行的距离可以用"\\[距离]"来改变, 也可以用"\renewcommand\arraystretch{实数}"来整体修改数组的垂直距离(缺省为1.0), 而参数\arraycolsep=...是修改其列间距. 使用数组时, 经常容易出错的是: array必须出现在数
学环境中, &的个数和\\的个数一定要正确, 如果使用可变大小的 括号, 一定要注意\left和\right必须成对出现, 即使只排印半对括号.
一般的$和$$环境, 不能给公式或方程编号, 因此, 就用到了方程环境. 格式是:
\begin{equation}
方程
\end{equation}
这其中的方程, 和$$情况没有两样, 只是在公式右边自动加上了程编号(如果\documentstyle用了\leqno选项, 则公式标号在左边). 多行的方程可以把array使用在equation中来实现, 但是标号只出现一个, 出现在多行的中间. 如果多行要分别标号, 或者不想用麻烦的$$嵌套array, 那就要用到多行方程环境:
\begin{eqnarray}
......
\end{eqnarray}
和
\begin{eqnarray*}
...
\end{eqnarray*}
二者的区别是, 带*号的不将公式标号排出来, 而不带*的自动给每行式子编排标号. 在\begin{eqnarray}和\end{eqnarray}中的部分是一个三列的array环境, 因此有两个&和一个\\, 如:
\begin{eqnarray}
y&=&1+2+3+4+5+6+7+8+9+10 \\
&=&55
\end{eqnarray}
而如果把方程某行的\\前加上"\nonumber", 则TeX不给该行方程编排标号, 如"y&=&1+2+3+4+5+6+7+8+9+10 \nonumber \\", 则该行不出现标号. 这里还要注意的是equation和eqnarray都是直接进入$$的显示数学环境, 此不能在前面和后面加上$或$$了.
大家可能会注意到, 不论是array还是eqnarray, 每个&符号都会在公式中产生列的小空隙, 同样也在vatola宏库中, 定义了一个aligned对齐环境, 它使得编排多行公式在对齐的同时不会出现$符号位置的列空隙. 它可以出现在$$环境中, 那公式不标号; 或出现在equation中, 它对一个多行公式只标一个标号, 类似于array. 它相当于一个两列的array, 因此每行仅有一个&.
\begin{equation}
\aligned
y&=1+2+3+4+5+6+7+8+9+10 \\
&=55
\endaligned
\end{equation}
这里需要注意的是, \begin{array} \end{array}和\begin{tabular}(制表)\end{tabular}不能出现在\aligned与\endaligned中, 如须
使用, 要用\vbox{}或\hbox{}等把array或tabular环境括起来.
在讲第一个完整的TeX文档例子时, 大家一定注意到参考文献标号的交叉引用, 而方程也有标号, 也可以交叉引用. 为什么我们选择交叉引用而不是直接在文中写"公式(1)中..."的原因很简单, 交叉引用可以实时地调整标号, 插入或删去一个公式带来整体标号的改变, 无需改变引用标号的地方; 而且, 可以在不修改正文的情况下灵活地调整标号的风格.
TeX使用\lable{标号}来定义标号, 这里的标号可以是字母,数字, 标点等组成的字符串. 需要引用, 则使用\ref{标号}, 这里的"标号"应该是有\lable定义过的, 定义和引用的先后无关. 例如, 我们有
\subsection{Early Results}
\label{sec-early} %这里定义子节标号
Euler's equation
\begin{equation}
e^{i\pi}+1=0 \label{eq:euler} %这里定义方程标号
\end{equation}
\combines the five most important numbers in mathematics
in a single euqtion.
然后我们就可以如下地引用
Equation~\ref{eq:euler} in Section~\ref{sec-early} ...
不管这里方程或子节的标号是多少, 引用时都能准确地指出. 这就是我们要使用自动交叉引用的原因. 这里, \label会自动根据自己的位置, 得出标号, 如出现在equation, eqnarray, enumerate (项目), figure(图), table(表)环境中, 被引用的是公式号, 项目编号或图表号; 而出现在其它位置则是章节号.
引用时除了\ref外还有一个\pageref{标号}, 它显示的是\label{标号}出现的页面位置.
\cite和\bibitem我们在一开始的例子中就看到了, 我们这里更详细地说说这两条命令的完整格式:
\cite[附加信息]{标号1, 标号2, ..., 标号n}
\bibitem[名称]{标号}
先看一个\cite加附加信息的例子(这个例子是在第5节例子的参考 文献的基础上的):
See \cite{texbook, companion} or \cite[page 20-22]{lamport} ..
再看\bibitem的名称可选项:
See \cite{kn:texbook} for more details.
...
\begin{thebibliography}[lamport 86] %[]中是最长文献编号
\bibitem[Knuth 84]{kn:texbook} D. E. Knuth. {\sl The \TeX{}book}.
Addison-Wesley, Reading.
\end{thebibliography}
这里再多说一句的是: 所有涉及交叉引用的文件, 在修改过与交叉引用有关的内容之后, 都需要对源文件进行两次编译才能得到正确的结果.
TeX 10
+----------------------------------------------------+
| 本节内容: 居中, 左对齐, 右对齐环境; 小页环境; 抄 |
| 录环境; 列表环境; 制表环境. |
+----------------------------------------------------+
这里要介绍的是几个TeX中常用的环境, 它的一般格式是:
\begin{环境名}
...
\end{环境名}
首先是居中, 左对齐, 右对齐环境, 这三者的环境名分别是center, flushleft和flushright, 在环境中的正文以\\断行. 这三个环境比较简单, 就不举例子了. 需要注意的是, 紧接这环境后的正文和环境如果没有空行隔开, 那么系统认为是一个段落,就是说环境后的正文行首没有\parindent的缩进.
小页环境大家在第一个完整的TeX例子中已经看到了, abstract就是小页. 小页环境的格式是:
\begin{minipage}[位置]{宽度}
...
\end{minipage}
{宽度}可以用TeX的任何合法距离; [位置]是可选项, 可以选择t 或b来表示小页是和正文是"顶部对齐"还是"底部对齐", 请看例子:
NORMAL TEXT
\begin{minipage}{1 in}
This is a minipage aligned on its bottom line.
\end{minipage}
AND
\begin{minipage}[t]{1 in}
This is a minipage aligned on its top line.
\end{minipage}
END
注意的是, 小页的footnote(脚注)是紧跟在小页后面, 而不是在整个页面的下面, 所以在minipage嵌套时, 可能系统会放错脚注的位置.
抄录环境(verbatim)在\begin{verbatim}和\end{verbatim} 的任何字符都将原样输出, 包括\等TeX保留字. 而"verbatim*"与verbatim的区别是, 它将把空格用|_|表示出来. verbatim有一个简写形式, "\verb标识符 字符串 标识符", 其中标识符可以是空格以外任何字符, 它与\verb之间没有空格. 如:
\verb+
This is \!@#$%%^&*&*({ All you want to type.
+
当然, 字符串里就不能出现你作为标识符的符号了.
列表环境itemize, enumerate, description.
\begin{itemize}
\item 列表项1
\item 列表项2
...
\item 列表项n
\end{itemize}
自动编号; 如果超过一行, 自动缩进以突出编号. 而enumerate与itemize的区别是, 它不出现数字编号, 而是以小黑圆点来标识.
description一般用于类似于名词解释的情形:
\begin{description}
\item[名词] 解释
\item[名词] 解释
...
\end{description}
一般, 还在[名词]中加上\bf或\heiti以突出名词.列表环境还可以嵌套使用, 具体就不细述了.
TeX专门提供了一个制表环境, 用来排印有线或无线的表格.
\begin{tabular}[位置]{列定义}
...
\end{tabular}
这里[位置]和minipage一样, 可选t或b, 但我们通常用的表格都是独立表格, 所以通常不定义位置, 而直接独立一段. {列定义}类似于array的列对齐, 可以用c,l和r来表示对齐方式, 这里的列定义还可以在列对齐字母间用"|"以画出表格中列的竖线. 表格内容如array一样, 用&隔开, \\换行, 同样要注意&的个数. 表格的横线可以用\hline来表示, 如:
\begin{tabular}{|c|c|c}
\hline
1 & 2 & 3 \\
\hline
4 & & 6 \\ %这里要注意, 若最后行要画横线, 则此处要有\\
\hline
\end{tabular}
而"\cline{列号1-列号2}"则是表示从列号1到列号2的一条横线. 而如果要在表格元素中画竖线, 则可以用"\vline". 有时我们还会遇到需要把某行表格的几列合并起来, 这就要使用
\multicolumn{栏数}{栏定义}{内容}
{栏数}是要合并的栏的数目, {栏定义}类似于表格的{列定义}, 如:
\begin{tabular}{|c|c|c|}
\hline
\multicolumn{2}{|c|}{1} & 2 \\
\hline
3 & 4 & 5 \\
\hline
\end{tabular}
而
\begin{tabular*}{宽度}[位置]{列定义}
...
\end{tabular*}可以自己定义表格的总宽度, 如\textwidth等TeX
的合法距离.
最后, 我们讲讲制表环境的四个参数, 这四个参数都是局部 参数, 也就是说只要用分组限定命令的作用范围, 就可以调整某个表格的参数而不影响其它表格. \tabcolsep是两列间水平距离的一半, 缺省为6pt; \arrayrulewidth为定义\hline, \vline,\cline及列定义的分隔线|的线宽, 缺省为0.4pt; \doublerulesep为连续两个\hline或列定义中连续两个|所画的线段之间的间隔,缺省为2pt, 如果设为0pt, 则可以用连续的\hline或|来加粗表格的某些线框; \arraystretch是一个实数, 缺省为1.0, 定义行距的一个因子, 用\renewcommand来改变.