From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- usergrps/uktug/baskervi/5_4/bailey.tex | 828 +++++++++++++++++++++++++++++++++ 1 file changed, 828 insertions(+) create mode 100644 usergrps/uktug/baskervi/5_4/bailey.tex (limited to 'usergrps/uktug/baskervi/5_4/bailey.tex') diff --git a/usergrps/uktug/baskervi/5_4/bailey.tex b/usergrps/uktug/baskervi/5_4/bailey.tex new file mode 100644 index 0000000000..737e7ab829 --- /dev/null +++ b/usergrps/uktug/baskervi/5_4/bailey.tex @@ -0,0 +1,828 @@ +%latex2e file +%%% +%%% An article for Baskerville, intended to be the last of 6 parts +%%% +\title{Maths in \LaTeX: Part~6, Harder arrays} +\author[R.~A.~Bailey]{R.~A.~Bailey\\ +Queen Mary and Westfield College, \\University of London} +%%% + +%% Added by CAR for SPQR, and other small necessary changes made: +%% search for ``amsmath''. + +%%% here are extra environments that I have used in this article. +%%% I hope that they do not conflict with anything of the editor's. +%%% +\newcommand{\writer}[1]{{\sc #1}:} +\newcommand{\book}[1]{{\it #1},} +\newcommand{\publish}[2]{{\rm #1, #2,}} +\newcommand{\byear}[1]{{\rm (#1).}} +\newtheorem{preqn}{Exercise} +\newenvironment{qn}{\preqn\rm}{\endpreqn} +\newcommand{\latexword}[1]{{\tt #1}} +%%% +%%% +%%% editor: I have been as generic as I can, but of course you can't +%%% put \verb inside a \newcommand. I have consistently used + as the +%%% delimiter for \verb, except when I needed the + in Maths! +%%% +\newcommand{\phz}{\phantom{0}} +\newcommand{\RBdfrac}[2]{\displaystyle\frac{#1}{#2}} +\newcommand{\CS}{\mathop{{\rm CS}}\nolimits} +\newcommand{\normof}[1]{{\left\Vert#1\right\Vert}^2} +\newcommand{\R}{\mathbb{R}} +\begin{Article} +\section{Recall} +This is the sixth and final part of a sequence of tutorials on +typesetting Mathematics in \LaTeX. The first five appeared in +issues~4.4, 4.5, 5.1, 5.2 and~5.3 of \BV. The series includes some +things which can be found in \cite{leslie}, but I am working in more +things which, while straightforward and necessary for Mathematical +work, are not in \cite{leslie} or \cite{newleslie}. In this final +tutorial I cover the harder parts of arrays, including aligned +equations. + +In case you missed the previous tutorials, I remind you that I expect +you, the reader, to do some work. Every so often comes a group of +exercises, which you are supposed to do. Use \LaTeX\ to typeset +everything in the exercise except sentences in italics, which are +instructions. If you are not satisfied that you can do the exercise, +then tell me. Either write to me at +\begin{verse} +School of Mathematical Sciences\\ +Queen Mary and Westfield College\\ +Mile End Road\\ +London E1 4NS +\end{verse} +with hard copy of your input and output, +or email me at \mbox{\tt r.a.bailey@qmw.ac.uk} +with a copy of the +smallest possible piece of \LaTeX\ input file that contains your +attempt at the answer. +In either case +I will include a solution in the following issue of \BV: you will remain +anonymous if you wish. + +This tutorial covers things that \LaTeX\ is not really very good at. +You may ask why I have not simply referred you to the packages +\latexword{amsmath}, \latexword{array} and \latexword{delarray}. One +reason is that every package has its price: it may give you the +functionality that you want at the expense of changing something that +you are quite happy with. The other is that you often are not allowed +to include style packages when you submit an article to a journal or +conference proceedings. It is your choice whether to use the inelegant +solutions presented here or to cut out the relevant pieces of code +from various style packages. + +\section{Answers} +\subsection{Boxed subarrays} +In the panel session at the end of the \ukt\ meeting on `The New Maths for +the New \LaTeX' on 7~June, one of the participants asked how to create an array +in which there is a box around a subarray, as in +\[ +\begin{array}{c|cccc|} +\multicolumn{1}{c}{1} & 2 & 3 & 4 & \multicolumn{1}{c}{5}\\ +\cline{2-5} +2 & A & B & C & D\\ +3 & B & A & D & C\\ +4 & C & D & A & B\\ +5 & D & C & B & A\\ +\cline{2-5} +\end{array} +\] +The answer is to use \verb+\cline+ for the horizontal sides of the box and to +put \verb+|+ in the columns specifier to obtain the vertical sides of the box, +overriding this with \verb+\multicolumn{1}+ where necessary. Thus the input +for the preceding array begins +\begin{verbatim} + \begin{array}{c|cccc|} + \multicolumn{1}{c}{1} & 2 & 3 & 4 & + \multicolumn{1}{c}{5}\\ + \cline{2-5} + 2 & A & B & C & D\\ + ... +\end{verbatim} + +\subsection{Angle brackets} +Several people have asked me why I insist that \verb+\langle+ and +\verb+\rangle+ should be used for angle brackets when they prefer the shape of +\verb+<+ and \verb+>+. At a group theory conference in July I saw a good, if +unconscious, demonstration of why \verb+<+ and \verb+>+ should not be used. A +line of displayed Maths on an overhead projector transparency was +\[ +G = \times ^x +\] +Look at the spacing. \TeX\ knows that $=$ and $<$ are both relations, +so it puts no space between them, but it does put some space between the +relation~$>$ and the binary operator~$\times$. If you put this +equation in the running text, you will find that the line may break between +the~$<$ and the~$a$. If you really prefer the shapes of $<$ and~$>$ to +$\langle$ and~$\rangle$ then you should make yourself macros such as +\begin{verbatim} + \newcommand{\llangle}{\mathopen{<}} + \newcommand{\rrangle}{\mathclose{>}} +\end{verbatim} +\newcommand{\llangle}{\mathopen{<}} +\newcommand{\rrangle}{\mathclose{>}} +Then the display becomes +\[ +G = \llangle a,b,c\rrangle \times \llangle a,c,e\rrangle^x +\] +However, you cannot make these new angle brackets expand by preceding them with +\verb+\left+ and \verb+\right+. + +\addtocounter{section}{9} +\section{Arrays of equations} +\subsection{Don't do it} +Many of us write our lecture notes on the board as a series of equations, more +or less aligned, and are tempted to write in print in the same fashion. Don't. +For one thing, printed material needs the connecting words that you normally +say at the board, such as `and' or `it follows that' or `substituting for +\ldots'. For another, alignment suggests to the reader that the equations are +somehow related, so it should not be used merely because two displayed +equations come one after another with no intervening text: use two separate +lines of displayed Maths instead, using \verb+\[+ and~\verb+\]+. + +\subsection{Parallel definitions} +For two or more parallel or analogous definitions or results, use the +\latexword{eqnarray*} environment. If a typical line is $A=B$ then type that +line as \verb+A & = & B+ and put \verb+\\+ at the end of each line except the +last. Extra space can be added after any \verb+\\+ just as with ordinary +arrays. For example, the parallel definitions of $\cap$ and~$+$ +\begin{eqnarray*} +W \cap X& =& \left\{v\in V:v \in W \mbox{ and } v\in X\right\}\\ +W + X & = & \left\{w+x:w\in W \mbox{ and } x\in X\right\} +\end{eqnarray*} +have input +\begin{verbatim} + \begin{eqnarray*} + W \cap X & =& \left\{v\in V:v \in W + \mbox{ and } v\in X\right\}\\ + W + X & = & \left\{w+x:w\in W + \mbox{ and } x\in X\right\} + \end{eqnarray*} +\end{verbatim} + +\subsection{Chains of equalities} +The \latexword{eqnarray*} environment is also useful for a chain of equalities +or inequalities, such as +\begin{eqnarray*} +\sum_{i=1}^q x_{ij}(M-x_{ij}) & = & M^2 - \sum_{i=1}^q x_{ij}^2\\ + & \leq & M^2 - \frac{M^2}{q}\\ + & = & \theta M^2. +\end{eqnarray*} +Here each line after the first begins with \verb+&+ followed by \verb+=+ or +some other relation, followed by another~\verb+&+. +Any line may conclude with \verb+\qquad\mbox{...}+ to give +a short explanation, just as in a single line of displayed Maths. + +\begin{figure*} +\begin{eqnarray*} +n(Q_3 - Q_1)^4 \mathop{\rm Var} W +& = & +\left[(M-Q_1) \left(\frac{1}{f_M} - \frac{1}{2f_{Q_3}}\right) + + (Q_3 - M) \left(\frac{1}{f_M} - \frac{1}{2f_{Q_1}}\right)\right]^2\\ + & & \mbox{} + \frac{1}{2}\left[\left(\frac{M-Q_1}{f_{Q_3}}\right)^2 + + \left(\frac{Q_3 - M}{f_{Q_1}}\right)^2\right] +\end{eqnarray*} +\caption{An overlong equation} +\label{loong} +\end{figure*} + +\subsection{Overlong displays} +Sometimes what is conceptually a single line of displayed Maths, whether it is +an equation or not, is simply too long to fit on one line. Then you can use +\latexword{eqnarray*}, choosing where to split the line. If you split it at a +binary operator, it is usual to put the binary operator after the split. In +this case you must precede it with \verb+\mbox{}+ so that \TeX\ knows that it +is a binary operator. +The two lines in Figure~\ref{loong} are given by +\begin{verbatim} + ...\right]^2\\ & & \mbox{} + \frac{1}{2} ... +\end{verbatim} + +To split an even longer line, you may want the second and succeeding lines to +come partly underneath the first line. You can do this by enclosing the whole +of the first line in \verb+\lefteqn{ }+, thus fooling \TeX\ into thinking that +it has no width. Starting subsequent lines with \verb+& &+ gives that necessary +bit of indentation. +In this example +\begin{eqnarray*} +\lefteqn{\sum\left\{\sum\left\{f(B) : B \cap A = \emptyset\right\} : A +\supseteq J\right\} = }\\ + & & \sum\left\{\sum\left\{f(B) : A \supseteq J,\ A \cap B = \emptyset\right\} +: B \cap J = \emptyset \right\} +\end{eqnarray*} +the lines begin +\begin{verbatim} + \lefteqn{\sum ... + & & \sum ... +\end{verbatim} + +\subsection{Numbered aligned equations} +The environment \latexword{eqnarray} works just like \latexword{eqnarray*} +except that each line is numbered, in the same sequence as +\latexword{equation}s. If you want any line to be not numbered, just put +\verb+\nonumber+ before the end of the line. If you want to refer somewhere +else to the number, put a \verb+\label+ on the line in the usual way. +Thus +\begin{eqnarray} +\bar{F}(x_1,x_2) & = & \int_0^\infty \exp(-\theta a_1x_1^c - \theta a_2x_2^c) +\frac{\theta^{b-1}\lambda^b {\rm e}^{-\theta\lambda}}{\Gamma(b)} {\rm +d}\theta \nonumber \\ + & = & \frac{\lambda^b}{(\lambda + a_1x_1^c +a_2x_2^c)^b} +\end{eqnarray} +is created with +\begin{verbatim} + \begin{eqnarray} + \bar{F}(x_1,x_2) & = & \int_0^\infty ... + {\rm d}\theta \nonumber \\ + & = & \frac{ ... + \end{eqnarray} +\end{verbatim} + +\subsection{What is \latexword{eqnarray}?} +The two environments \latexword{eqnarray} and \latexword{eqnarray*} differ only +in the numbering of lines. Each creates a piece of displayed Maths containing a +special sort of array. The array has only three columns. The first column is in +\verb+\displaystyle+ and is right-aligned. The second is in \verb+\textstyle+ +and is centred. The third is in \verb+\displaystyle+ and is left-aligned. The +space between columns is controlled by \verb+\arraycolsep+ just as for ordinary +arrays. The space between rows is (unless you put something after the +\verb+\\+) what you would get in an ordinary array by putting \verb+\\[\jot]+. +% Corrected by CAR: // to \\ twice here, once below. + +\subsection{Simultaneous equations} +Simultaneous equations are often written with a vertical alignment for each +variable and for the binary operators in between them, as well as for the +equals sign, as the following example shows. +\[ +\setlength{\arraycolsep}{0pt} +\begin{array}{*{4}{rc}r@{\mbox{}={}}r} +x_1 &{} -{} & x_2 & {}+{} & x_3 & {}-{} &x_4 &{} +{}& x_5 & 1\\[\jot] +2x_1 & - & x_2 & +& 3x_3 && & + &4x_5 & 2\\[\jot] +3x_1 & - &2 x_2 & + & 2x_3 & + &x_4 & +& x_5 & 1\\[\jot] +x_1 & & & + & x_3 & + &2x_4 & +& x_5 & 0\\[\jot] +\end{array} +\] +This is too many alignments for an \latexword{eqnarray*}, so an +\latexword{array} has been used in displayed Maths, with every line ending with +\verb+\\[\jot]+. With a column for each variable and one for each binary +operator, almost all pairs of adjacent columns should have the separation that +\TeX\ normally gives between an ordinary Maths symbol and a binary operator, +which is \verb+\medmuskip+. Unfortunately, you cannot set \verb+\arraycolsep+ +to be equal to \verb+0.5\medmuskip+: \TeX\ will complain. So I have set +\verb+\arraycolsep+ to zero: the command +\begin{verbatim} + \setlength{\arraycolsep}{0pt} +\end{verbatim} +has been placed before the array but within the displayed Maths, to limit its +scope. Then the columns specifier +\verb+{*{4}{rc}r@{{}={}}r}+ does the trick for the equals sign, which comes in +every column: for the binary operators I have put \verb!{}+{}! or \verb+{}-{}+ +as least once in each column. + +There are two other possibilities that could be used here. The +\latexword{array} package allows you to put items in the columns specifier that +will be incorporated in array entries before the boxes are made. So you could +put the \verb+{}+ either side of each binary operator by putting it in the +columns specifier once and for all. See \cite[Section~5.3]{companion}. +That would be useful if the binary +operators in the array had differing widths. The second is to effectively set +\verb+\arraycolsep+ equal to \verb+0.5\medmuskip+. Now, \verb+\medmuskip+ is +4\,mu plus some stretchability, and 1\,mu is $1/18$ of an em in the current +font. +So you can do +\begin{verbatim} + \setlength{\arraycolsep}{0.11em} +\end{verbatim} +and omit all the \verb+{}+, +so long as the current font does not change (by too much) between the issuing +of that command and the setting of the entries in the array. + +\subsection{Which to use: \latexword{eqnarray} or \latexword{array}?} +Regular readers will know that I am a big fan of \LaTeX. All the same, I think +that the design of \latexword{eqnarray} is fundamentally flawed. It is not +simply a method of aligning lines of displayed Maths, chiefly because it uses +\verb+\arraycolsep+ to insert larger spaces than normal, but also because it +changes between \verb+\displaystyle+ and \verb+\textstyle+ and because it is +limited to three columns. For these last two reasons, it is also not a method +of achieving a displayed array all of whose entries are in +\verb+\displaystyle+ and whose rows are spread out, +which would have been a useful environment. + +So which should you use, \latexword{eqnarray} or \latexword{eqnarray*} or +\latexword{array}? Each of them needs some work to give good results. + +If you need a set of aligned +equations carrying a single number then I recommend using +\latexword{array} inside an \latexword{equation}. You will have to put in +\verb+\displaystyle+ and \verb+\jot+ where necessary. If one or more lines +must be individually numbered then there is nothing for it but to use +\latexword{eqnarray}. + +If an unnumbered set of aligned equations has only two alignment points you may +be able to use \latexword{eqnarray*} if you are careful about the inter-column +spacing. Thus if you put an \verb+&+ on only one side of an equals sign you +must put a quad space on the other side. In the following display each line has +the form +\begin{verbatim} + ... \quad = & ... & \qquad ... +\end{verbatim} +\begin{eqnarray*} +g(x) \quad = & {\rm e}^{x} &\qquad\mbox{for $x\in\R$,}\\ +h(y) \quad= & \ln y &\qquad\mbox{for $y > 0$,}\\ +h'(y) \quad = & \frac{1}{y} &\qquad\mbox{for $y > 0$.} +\end{eqnarray*} + +For a set with more alignment points, such as +\[ +\begin{array}{r@{(1)={}}rr@{(2)={}}rr@{(3)={}}rr@{(4)={}}r} +f & 1 & f & 0 & f & -2 & f & 3\\[\jot] +g & 5 & g & 7.5 & g & 6 & g & -4\\ +\end{array} +\] +or simultaneous equations, use \latexword{array} and be cunning with the +columns specifier. + +For parallel results, or for chains of (in)equalities, it would be good to +have a form of \latexword{eqnarray} and \latexword{eqnarray*} in which the +space on either side of the equals sign is what \TeX\ normally puts between a +relation and an ordinary Maths symbol, which is \verb+\thickmuskip+. +Now, \verb+\thickmuskip+ is 5\,mu plus some stretchability, so we can use the +same fudge that we used for simultaneous equations. +It is no +good changing \verb+\arraycolsep+ globally, because that would affect other +\latexword{array}s. So you could make an environment to use in place of +\latexword{eqnarray} such as the following. +\begin{verbatim} + \newenvironment{bettereqnarray}% + {\setlength{\arraycolsep}{0.14em}% + \eqnarray}% + {\endeqnarray} +\end{verbatim} +\newenvironment{bettereqnarray}% +{\setlength{\arraycolsep}{0.14em}\eqnarray}% +{\endeqnarray} + +Compare the following display, made with \latexword{bettereqnarray} and +\verb+\nonumber+, with the previous form made with \latexword{eqnarray*}. +Now that the spaces around the aligned~\verb+=+ are correct, a second~\verb+=+ +can be placed on the same line. +\begin{bettereqnarray} +\sum_{i=1}^q x_{ij}(M-x_{ij}) & = & M^2 - \sum_{i=1}^q x_{ij}^2\nonumber\\ + & \leq & M^2 - \frac{M^2}{q} + = \theta M^2 \nonumber +\end{bettereqnarray} + +If you are uneasy about that fudge, set \verb+\arraycolsep+ to zero. +Then put \verb+& {}={} &+ instead of \verb+& = &+ in the centre of the array. + +There is a disadvantage common to both of these \latexword{bettereqnarray} +environments: if you have any ordinary \latexword{array} within them then +the value +of \verb+\arraycolsep+ will almost certainly be wrong and you will have to +reset it locally. + +There are several better environments for aligned equations in the +\latexword{amsmath} package, which is described in \cite{ams}. However, it does +not seem to be possible to obtain these environments without the rest of the +package, which you may not want: for example, it disables \verb+\over+. + +\section{Exercises} +\addtocounter{preqn}{71} +\begin{qn} +M\"obius inversion gives: +\begin{eqnarray} +B_\gamma & = & \sum_{\alpha\in\Gamma} z(\gamma,\alpha) S_\alpha,\\ +S_\alpha & = & \sum_{\gamma\in\Gamma} m(\alpha,\gamma) B_\gamma. +\label{arrayref} +\end{eqnarray} +\end{qn} + +\begin{qn} +{\it Get the number cited here from the question above, by cross-reference.} + +Now\begin{eqnarray*} +L_\alpha & = & X'S_\alpha X\\ + & = & \sum_{\gamma\in\Gamma} m(\alpha,\gamma)X'B_\gamma X \qquad \mbox{by +Equation~(\ref{arrayref})}\\ + & = & \sum_{\gamma\in\Gamma} \frac{m(\alpha,\gamma)}{k_\gamma} C_\gamma. +\end{eqnarray*} +\end{qn} + +\begin{qn} +\begin{eqnarray} +\sum a_j b_k & = & a_1b_1 + a_1b_2 + a_1b_3 \nonumber\\ + & & \mbox{} + a_2b_1 + a_2b_2 + a_2b_3 \nonumber\\ + & & \mbox{} + a_3b_1 + a_2b_2 + a_3b_3. +\end{eqnarray} +\end{qn} + +\begin{qn} +\begin{equation} +\begin{array}{rcl} +\displaystyle +\sum_{1\leq j,k\leq 3} a_j b_k +&=& +\begin{array}[t]{l} + a_1b_1 + a_1b_2 + a_1b_3 \\[\jot] + \mbox{} + a_2b_1 + a_2b_2 + a_2b_3 \\[\jot] + \mbox{} + a_3b_1 + a_2b_2 + a_3b_3. +\end{array} +\end{array} +\end{equation} +\end{qn} + +\begin{qn} +Using the hint, we get +\begin{eqnarray*} +\lefteqn{3(1-z)^2\sum_k +%% Changed for amsmath: +% {1/2\choose k} + \binom{1/2}{k} + \left({\frac{8}{9}z}\right)^k +(1-z)^{2-k} = }\\ + & & 3(1-z)^2 \sum_k +%% Changed for amsmath: +% {1/2\choose k} + \binom{1/2}{k} + \left({\frac{8}{9}}\right)^k +\sum_j +%% Changed for amsmath: +% {k+j-3\choose j} +\binom{k+j-3}{j} +z^{j+k} +\end{eqnarray*} +and now look at the coefficient of $z^{3+l}$. +\end{qn} + +\begin{qn} +Solve the system of equations +\[ +\setlength{\arraycolsep}{0pt} +\begin{array}{rcrcr@{{}={}}l} +2x &{} +{} &y &{}+{}& 5z&4\\[\jot] +3x & - & 2y & + & 2z & 2\\[\jot] +5x & - & 8y & - & 4z & 1. +\end{array} +\] +\end{qn} + +\begin{qn} +The dyad appears as +\begin{equation} +\begin{array}{rcc@{}@{\mbox{}+\mbox{}}c@{\mbox{}+\mbox{}}c@{\mbox{}+\mbox{}}c} +{\bf AB} & = & \multicolumn{1}{c}{}& A_xB_x {\bf ii} & A_xB_y{\bf ij} & +A_xB_z{\bf ik} \\[\jot] + & && A_yB_x{\bf ji} & A_yB_y{\bf jj} & A_yB_z{\bf jk}\\[\jot] + & && A_zB_x{\bf ki} & A_zB_y{\bf kj} &A_zB_z{\bf kk} +\end{array} +\end{equation} +\end{qn} + +\begin{qn} +\[ +\begin{array}{r@{(x)={}}l@{\qquad}r@{{}=(}r@{,}r@{,}r@{,}r@{,}r@{)}l} +f & 1 & f & 1&\phz1&\phz1&1&1\\[\jot] +g & x & g & 1&2&3&4&5\\[\jot] +h & x^2 & h & 1&4&9&\phz16&\phz25&. +\end{array} +\] +\end{qn} + +\section{Hand-crafting alignments} +In this section I show a few tricks for difficult alignments. I show them +because I know that I am not the only Mathematician who needs +to produce these effects. I am not particularly proud of the methods I have +used, because in each case I have had to either measure a length explicitly or +use phantoms: I couldn't find a way of getting the right sizes automatically. +So if any reader can write in with a better way of doing these things, I shall +be delighted. + +\subsection{Horizontal braces in arrays} +When I use an \latexword{array} to show a chain of equalities, I often use an +under- or overbrace to indicate how terms are grouped. Here is an example. + +\newlength{\gnat} +\settowidth{\gnat}{$\bar{y} (1,\ldots, 1)$} +\newlength{\gnu} +\settowidth{\gnu}{$\RBdfrac{\CS(x,y)}{\CS(x,x)} x'$} +\[ +\begin{array}{rcccccc} +y & = & \multicolumn{3}{c}{f} & +& r\\ + & & \multicolumn{3}{c}{ +\overbrace{\hphantom{\bar{y} (1,\ldots, 1)\quad+\quad +\RBdfrac{\CS(x,y)}{\CS(x,x)} +x'}}}\\ + &= & \bar{y} (1,\ldots, 1)&{}+{}&\RBdfrac{\CS(x,y)}{\CS(x,x)} x' +&{}+{} & r\\ + & & \uparrow & & \uparrow & & \uparrow\\ + & & \multicolumn{1}{p{\gnat}}{\centering fit for null model} && + \multicolumn{1}{p{\gnu}}{\centering +extra fit \mbox{for straight} line model} && + \mbox{residual} +\end{array} +\] + +The problem is that the brace needs to span several columns. So the brace needs +to be put in with a \verb+\multicolumn+ command, so it cannot automatically be +set to the correct width. I solve this by using \verb+\hphantom+ to obtain the +width of the spanned columns. Here there is an entry +\begin{verbatim} + \multicolumn{3}{c}{f} +\end{verbatim} +in the first row; and the corresponding entry in the second row is +\begin{verbatim} + \multicolumn{3}{c}{ + \overbrace{\hphantom{\bar{y} (1,\ldots, 1) + \quad+\quad ... x'}}} +\end{verbatim} +I have used the fact that the intercolumn space is one quad. + +An alternative solution is to use the command \verb+\downbracefill+ as the +final argument of the \verb+\multicolumn+ in the second row. However, you have +to be outside Maths mode to use \verb+\downbracefill+, and putting it inside an +\latexword{mbox} is no good because that destroys the expandability. So you +have to set the whole thing in a \latexword{tabular} environment rather than +\latexword{array}, and then enclose every other entry in \verb+$ $+, which is a +pain. There is also an analogous command \verb+\upbracefill+. + +\subsection{Paragraph boxes in arrays} +In the preceding display I have also set some explanatory text in paragraph +boxes whose width is determined by the width of a Mathematical expression in +the same column. For each such column I make a new length and use +\verb+\settowidth+ to make it as wide as the desired Mathematical expression: +see \cite[page~95]{leslie} or \cite[page~101]{newleslie}. Then I make a +\verb+p+ column element of that width. + +For example, in the first column I get the correct width with +\begin{verbatim} + \newlength{\gnat} + \settowidth{\gnat}{$\bar{y} (1,\ldots, 1)$} +\end{verbatim} +and then use it as follows. +\begin{verbatim} + \multicolumn{1}{p{\gnat}}{\centering + fit for null model} +\end{verbatim} + + +\subsection{Top-aligned matrices} + +\newcommand{\topthing}[1]{\begin{array}{@{}c@{}}#1\\\phz\end{array}} +\newcommand{\vecmu}{\mbox{\boldmath$\mu$}} +\newcommand{\vecx}{{\bf x}} +\newcommand{\cov}{\mathop{{\rm Cov}}\nolimits} + +\begin{figure*} +\[ +\topthing{3(\vecx - \vecmu)^{\rm T} \Sigma^{-1} (\vecx - \vecmu) += +(x-1, y+2)} +\left[\begin{array}{rr} +4&1\\1&1 +\end{array} +\right] +\left(\begin{array}{c} +x-1\\y+2 +\end{array} +\right) +\] +\caption{Matrices aligned on their top rows} +\label{topmat} +\end{figure*} + +In the last article I showed Figure~\ref{topmat} as an example of +something that is not easy to do in \LaTeX. To achieve this I have +made a macro \verb+\topthing+ which takes as its single argument any +item that must be aligned with the top rows of the arrays. The biggest +arrays here have two rows, so \verb+\topthing+ produces a two-rowed +array whose second row is empty. If there were bigger arrays here I +would have to have a macro for each smaller size of array. The empty +second row of the array contains a phantom zero: this works because +zero is the standard height, as are all the entries that occur in the +second rows of arrays. I don't know how to fudge this for arbitrary +heights of entries. Finally, I remove the extra space that is usually +put on each side of an array. + +The \verb+\topthing+ macro is defined by +\begin{verbatim} + \newcommand{\topthing}[1]% + {\begin{array}{@{}c@{}} + #1\\\phantom{0} + \end{array}} +\end{verbatim} +Then the equation in Figure~\ref{topmat} is done with +\begin{verbatim} + \topthing{3(... (x-1, y+2)} + \left[\begin{array}{rr} + 4&1\\1&1 + \end{array} + ... +\end{verbatim} + + +Top-aligned matrices can be done very simply if you have access to the package +\latexword{delarray}. Get it. See \cite[Section 5.3.6]{companion}. However, be +warned that \latexword{delarray} inputs the package \latexword{array}, which +makes a small difference to the way that \verb+|+ works in all +\latexword{array}s. + + +\subsection{Bordered matrices} +Using \verb+\left[+ and so on to get the right size of fences around a matrix +works fine for unbordered matrices. But how do you get a bordered matrix such +as the following? +\newlength{\perch} +\newcommand{\fish}[2]{\settowidth{\perch}{$#1$}\makebox[\perch]{$#2$}} +\newcommand{\minone}{\llap{$-$}1} +\begin{equation} +\begin{array}{c@{}c} + & \begin{array}{ccccc} +\emptyset & \{1\} & \{2\} & \{1,2\} & \{1,2,3\}\\ +\end{array}\\ +\begin{array}{c} +\emptyset \\ \{1\} \\ \{2\} \\ \{1,2\} \\ \{1,2,3\} +\end{array} +& +\left[ +\begin{array}{ccccc} +\fish{\emptyset}{1} & \fish{\{1\}}{\minone} & \fish{\{2\}}{\minone} +& \fish{\{1,2\}}{1} & \fish{\{1,2,3\}}{0}\\ +0 & 1 & 0 & \minone & 0\\ +0 & 0 & 1 & \minone & 0\\ +0 & 0 & 0 & 1 & \minone\\ +0 & 0 & 0 & 0 & 1 +\end{array} +\right] +\end{array} +\label{zeta} +\end{equation} + +The command \verb+\bordermatrix+ given by plain \TeX\ will not do, because it +uses parentheses for the fences and does not let you choose how the columns are +aligned. + +The problem is to get the fences of the right size while keeping the alignment +of the two borders with the body of the matrix. My solution is to set the whole +thing as a $2 \times 2$ array with no space between the columns. The top left +entry is empty. The top right entry is a one-rowed array containing the column +labels. The bottom left entry is a one-columned array containing the row +labels. The bottom right entry is the body of the matrix, including the fences. + +If all entries have the same width and height, that's enough. However, if any +column in the body of the matrix has a different width from the corresponding +column in the top border, then the narrower of the two has to be expanded. +Set a new length equal to the wider item and then put the smaller item in a +\latexword{makebox} of that width. + +In the matrix~(\ref{zeta}) it is clear that, in every column, it is the label +that is the widest element. So I made a macro to set the first row of the body +of the matrix to the width of the labels, as follows. +\begin{verbatim} + \newlength{\perch} + \newcommand{\fish}[2]% + {\settowidth{\perch}{$#1$} + \makebox[\perch]{$#2$}} +\end{verbatim} +For example, the first entry in the main body of the matrix is +\begin{verbatim} + \fish{\emptyset}{1} +\end{verbatim} +Note that it suffices to make a single entry in each column of the body as wide +as the column label. + +(By the way, I can never decide whether the minus signs should be taken into +account or not when centering the columns of such a matrix. Here I decided not +to, and so I defined +\begin{verbatim} + \newcommand{\minone}{\llap{$-$}1} +\end{verbatim} +and then used \verb+\minone+ for each $-1$.) + +If the row heights in the body of the matrix do not match those in the array of +row labels, as in the following matrix, they can be adjusted with +\verb+\vphantom+. If \verb+X+ is the tallest item in the row, simply put +\verb+\vphantom{X}+ in a single entry of the corresponding row of the other +array: it will not affect the horizontal spacing. + +\begin{equation} +\begin{array}{c@{}c} + & \begin{array}{c|c} +\multicolumn{1}{c}{1\quad \ldots\quad r} & r+1 \quad\ldots\quad n +\end{array}\\ + \begin{array}{c} + \begin{array}{c} + 1\\\vdots\\ r + \end{array}\\ + \begin{array}{c} + r+1\\\vdots\\ n + \end{array} + \end{array} + & +\left[ +\begin{array}{c|c} +\fish{1\quad \ldots\quad r}{\Sigma_1} + \vphantom{\begin{array}{c} + 1\\\vdots\\r + \end{array}} +& \fish{r+1\quad \ldots\quad n}{0}\\ +\hline + \vphantom{\begin{array}{c} + r+1\\\vdots\\ n + \end{array}} + 0 + & +\Sigma_2 +\end{array} +\right] +\end{array} +\label{showoff} +\end{equation} + +\section{Exercises} +\begin{qn} +\[ +\begin{array}{ccccccc} +\normof{f} & = & e_1^2 u_1\cdot u_1 & + & e_2^2 u_2 \cdot u_2 &+& e_3^2 u_3 +\cdot +u_3\\[\jot] + & & 18 \bar{y}^2 & + & {\tt ss1} & + & {\tt ss2}\\[\jot] + & & & & 104474 & + & 2284\\ + & & & & +\multicolumn{3}{c}{\underbrace{\hphantom{e_2^2 u_2 \cdot u_2\quad+\quad +e_3^2 u_3 \cdot u_3}}_{\textstyle 106758}} +\end{array} +\] +\end{qn} + +\begin{qn} +\begin{bettereqnarray} +\topthing{\cov(U,V)} & +\topthing{=} & +\topthing{(2,1)} +{ +\renewcommand{\arraycolsep}{5pt} + \left[\begin{array}{@{}rr@{}}1 & -1 \\ -1 & 4 + \end{array}\right] + \left(\begin{array}{@{}r@{}}-2 \\ 1\end{array}\right) +} +\nonumber\\ + & +\topthing{=} & +\topthing{(2,1)} + \left(\begin{array}{@{}r@{}}-3 \\6\end{array}\right) + \topthing{{}=0} +\nonumber +\end{bettereqnarray} +\end{qn} + +\begin{qn} +{\it Typeset the matrix~(\ref{showoff}).} +\end{qn} + +\section{Acknowledgements} +While writing these tutorials I have had to expand my own knowledge of how to +typeset Mathematics in \LaTeX\ to cover topics that I had never really bothered +with properly. I should like to thank David Carlisle, Frank Mittelbach and +Chris Rowley for patiently answering my questions, even when they did not +wholly approve of what I was writing. Of course, any remaining mistakes are my +own, as are the personal opinions expressed. + +Thanks also to many of my colleagues, both at Goldsmiths' College and at Queen +Mary and Westfield College, for badgering me to explain how to do these things. +And thanks to those readers who have sent kind messages of appreciation while +the tutorials have been appearing. + +\begin{thebibliography}{9} +\bibitem{ams} +\writer{American Mathematical Society} +\book{\AMS-\LaTeX\ Version~1.2 User's Guide} +\publish{American Mathematical Society}{Providence, Rhode Island} +\byear{1995} + + +\bibitem{companion} +\writer{Goossens,~M., Mittelbach,~F. \& Samarin,~A.} +\book{The \LaTeX\ Companion} +\publish{Addison-Wesley}{Reading, Mass.} +\byear{1994} + +\bibitem{leslie} +\writer{Lamport,~L.} +\book{\LaTeX: A Document Preparation System} +first edition, +\publish{Addison-Wesley}{Reading, Mass.} +\byear{1986} + +\bibitem{newleslie} +\writer{Lamport,~L.} +\book{\LaTeX: A Document Preparation System} +second edition, +\publish{Addison-Wesley}{Reading, Mass.} +\byear{1994} +\end{thebibliography} +\end{Article} + + -- cgit v1.2.3