+----------------------------------------------------+

|本节内容: 数组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}
方程
\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}

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

点赞(0)

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部