TeX 版 (精华区)

发信人: vinson (壮志骄阳), 信区: office_tools
标  题: 9.爱的方程式---数组环境,方程环境
发信站: 哈工大紫丁香 (2002年01月06日11:37:41 星期天), 站内信件

(9)爱的方程式         --- 数组环境, 方程环境

  +----------------------------------------------------+
  |  本节内容: 数组array, 方程(标号)equation, 多行方程 |
  |  eqnarray, \aligned(vatola.sty), 标号的交叉引用    |
  |  参考文献的使用(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}
\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}

    这里再多说一句的是: 所有涉及交叉引用的文件, 在修改过与
    这里再多说一句的是: 所有涉及交叉引用的文件, 在修改过与
交叉引用有关的内容之后, 都需要对源文件进行两次编译才能得到
正确的结果.
  
--


电脑知识问答——让所有的菜鸟变成大虾

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 210.46.68.52]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.418毫秒