\title{Maths in \protect\LaTeX: Part~5, Getting started on arrays} %%% \author[R.~A.~Bailey]{R.~.A.~Bailey\\ Queen Mary and Westfield College\\University of London} %%% %%% 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} %%% Dear Mr Editor, I should like the content of exercises %%% to come out in what all copy-editors call ROMAN, not in what %%% Frank Mittelbach calls roman. And this should be irrespective %%% of the surrounding text. %%% \newcommand{\latexword}[1]{{\tt #1}} %%% and the above should be in typewriter-ordinary IRRESPECTIVE of the %%% surrounding fonts %%% %%% %%% 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{\lamport}{{\it \LaTeX: A Document Preparation System\/} by Leslie Lamport} \newcommand{\shortlamp}{{\it The Manual}} \let\torl\AllTeX \newcommand{\phz}{\phantom{0}} \newcommand{\dfrac}[2]{\displaystyle\frac{#1}{#2}} \newcommand{\CS}{\mathop{{\rm CS}}\nolimits} \newcommand{\normof}[1]{{\left\Vert#1\right\Vert}^2} \newcommand{\littlehead}[1]{\textit{#1}} \begin{Article} \section*{Recall} This is the fifth part of a sequence of tutorials on typesetting Mathematics in \LaTeX. The first four appeared in issues~4.4, 4.5, 5.1 and~5.2 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 tutorial and the next I cover arrays: matrices, tables of data, aligned equations, and other items with a two-dimensional layout. I do not cover the extra array goodies provided by packages such as Frank Mittelbach's \latexword{array.sty}, David Carlisle's plethora of array add-ons or the new packages from the American Mathematical Society. I hope that someone else will write a follow-on article describing some or all of those, particularly if they can give easier methods of doing some of the more cumbersome items in this tutorial. 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. \addtocounter{section}{7} \section{Mathematical arrays} \subsection{Basics} The \latexword{array} environment is used to set all manner of aligned Mathematics. A simple example is: \[ \begin{array}{l} \verb+\begin{array}{lrrr}+\\ \verb+x & 1 & 2 & 5\\+\\ \verb+x^2 & 1 & 4 & 25 \\+\\ \verb+\end{array}+ \end{array} \quad \qquad \begin{array}{lrrr} x & 1 & 2 & 5\\ x^2 & 1 & 4 & 25 \end{array} \] This array has four columns. The alignment of these columns is shown in the argument \latexword{lrrr} of the environment. The first column is left-aligned; the other three are right-aligned. It is also possible to have a centred column, shown by a~\latexword{c}. Typically columns of Mathematical symbols are centred, integers are right-aligned and powers of a single symbol are left-aligned. >From now on I shall refer to the argument such as \latexword{lrrr} as the {\em columns specifier}. Entries in each row of the \latexword{array} are separated by ampersands. The end of a row (except the last one) is shown by \verb+\\+. If the last few entries in a row are blank there is (usually) no need to put in all the ampersands. The \latexword{array} environment can be used only in Maths mode. All its entries are automatically in Maths mode, in \verb+\textstyle+. If you have fractions or summations in an array you may want to precede them by \verb+\displaystyle+. Each entry is in a separate `box', which is typeset before the array is built up. Thus switches such as \verb+\bf+, \verb+\displaystyle+ and \verb+\raggedright+ extend no further than the end of the current entry. If a binary relation or operator, such as~$=$ or $+$, occurs at the beginning or end of an entry \torl\ cannot give it the proper spacing relative to the previous or succeeding entry. \subsection{Matrices and vectors} The most obvious use for \latexword{array} is for a matrix. Use \verb+\left+ and \verb+\right+ to surround the matrix with fences of the right size. For example, the matrix in Figure~\ref{mv} begins \begin{verbatim} \left( \begin{array}{rrr} \end{verbatim} \begin{figure*} \begin{minipage}{.5\textwidth} \[ \left( \begin{array}{rrr} 2 & -1 & -1\\ -1 & 3 & -1\\ -1 & -1 & 4 \end{array} \right) \left( \begin{array}{r} 5\\-3\\8 \end{array} \right) = \left( \begin{array}{r} 5\\-22\\30 \end{array} \right) \] \caption{A matrix equation} \label{mv} \end{minipage} \begin{minipage}{.5\textwidth} \[ \renewcommand{\arraystretch}{2} \det \left [ \begin{array}{cccc} \dfrac{\partial h_1}{\partial y_1} & \dfrac{\partial h_1}{\partial y_2} & \cdots & \dfrac{\partial h_1}{\partial y_n}\\ \dfrac{\partial h_2}{\partial y_1} & \dfrac{\partial h_2}{\partial y_2} & \cdots & \dfrac{\partial h_2}{\partial y_n}\\ \vdots & \vdots &\ddots & \vdots\\ \dfrac{\partial h_n}{\partial y_1} & \cdots & \cdots & \dfrac{\partial h_n}{\partial y_n} \end{array} \right] \] \caption{The Jacobian of~$h$} \label{jacob} \end{minipage} \end{figure*} The commands \verb+\vdots+ and \verb+\ddots+ are useful in matrices. They are both used in Figure~\ref{jacob}. An array can have a single column, as in the column vectors in Figure~\ref{mv}, or a single row, which is useful for a permutation or a row vector. \subsection{Arrays of arrays} Try to think logically, rather than visually, about the contents of an array. For example, if you have six $5\times 5$ Latin squares set out in a $2 \times 3$ rectangle then you might think that you have $10~$rows and $15$~columns. However, it is more logical to do \verb+\begin{array}{ccc}+ and then make each entry in this array a new array with five centred columns. One advantage of this approach is that it makes editing the file much easier when you decide to change the order of the Latin squares, or to lay them out in a $3\times 2$ rectangle. \subsection{Changing the row spacing} The default spacing between the rows of an \latexword{array} is fine for simple matrices with numbers in, but is often insufficient for large entries, particularly if you use \verb+\displaystyle+. To adjust the amount of space after the current row, put an explicit length in square brackets after the \verb+\\+: for example, \verb+\\[20pt]+. I find it useful to work in multiples of \verb+\jot+: this length is the usual extra space between lines of displayed Mathematics. Curiously, \verb+\jot+ is equal to $3$~points in all of \LaTeX's three point sizes, so an adjustment in a $10$~pt document may not be correct if you change the document to $11$~pt. If you work in multiples of the length \verb+\baselineskip+ then no extra adjustment is needed if the point size of the document is changed. Because of the complicated way in which the row-spacing in an array is adjusted to fit the contents, the length given in \verb+[ ]+ is not exactly an {\em addition}. You have to experiment to find out what works best: doubling the length given does not usually double the space between the rows. The existence of this optional length parameter to \verb+\\+ implies that no row of an array may start with \verb+[+. If you need to do this, precede it with an emtpy pair of braces: \verb+{}[...+. Changing the inter-row spacing for the whole array is much simpler than changing it for a single row. This spacing is governed by the value of the number \verb+\arraystretch+, whose default setting is~$1$. Between the rows of an array, the length \verb+\baselineskip+ is multiplied by \verb+\arraystretch+. In Figure~\ref{jacob}, the rows have been spread out by putting \begin{verbatim} \renewcommand{\arraystretch}{2} \end{verbatim} before the \verb+\begin{array}+. However, this command was given {\em after\/} the start of the displayed Maths, so that it remained local to that particular display. If you experiment with other values of \verb+\arraystretch+ in this example you will find that there is virtually no separation between the first two rows when \verb+\arraystretch+ is smaller than~$2$. Figure~\ref{ima} also shows an array in which \verb+\arraystretch+ has been altered. Arrays inside arrays can have different values of \verb+\arraystretch+. For example, in \begin{verbatim} \[ \renewcommand{\arraystretch}{2} \begin{array}{ccc} A & B & \renewcommand{\arraystretch}{1.2} \begin{array}{lr} ... \end{verbatim} the outer array has \verb+\arraystretch+ equal to~$2$, while the inner array which is the third entry in the first row has \verb+\arraystretch+ equal to~$1.2$. \begin{figure*} \[ \renewcommand{\arraystretch}{2} \addtolength{\arraycolsep}{1.5\arraycolsep} \begin{array}{cccp{1.5in}c} W_{1_G} & V_0 & 1 & one stratum\\ W_\psi &\left(V_{\rm rows} + V_{\rm cols} \right) \cap V_0^\perp & 2(q^2 + q) & \raggedright direct sum of two unidentifiable strata & \\ W_\eta &\left(V_{\rm rows} + V_{\rm cols} \right) ^\perp & q^3 & one stratum \end{array} \] \caption{A table of mathematical information} \label{ima} %This gives four candidates for automorphisms: \[ \begin{array}{l@{\colon p + q\omega + r \omega^2 + s\omega^3 + t\omega^4 \mapsto p + {}}r@{\omega + {}}r@{\omega^2 + {}}r@{\omega^3 + {}}r@{\omega^4}} \alpha_1 & q & r & s & t\\ \alpha_2 & s & q & t & r\\ \alpha_3 & r & t & q & s\\ \alpha_4 & t & s & r & q \end{array} \] \caption{Four automorphisms of a splitting field} \label{galois} \end{figure*} \subsection{Changing the column spacing} The default inter-column spacing in an array is one quad. To change the spacing between a pair of adjacent columns, use \verb+@{...}+ between their alignment codes in the columns specifier, putting inside the braces the actual horizontal space required. For example, \verb+\begin{array}{cc@{\qquad}c@{}c}+ produces an array with four centred columns in which the inter-column spaces are, in order, one quad, two quads and zero. At the start and end of the array there is usually a space of width half the inter-column space. These can be suppressed by putting \verb+@{}+ at the start and end of the columns specifier. The overall inter-column spacing is controlled by the value of the length \verb+\arraycolsep+, which is half the default inter-column space. This can be changed by using \verb+\addtolength+ in the usual way. I like to alter \verb+\arraycolsep+ by multiples of itself. %, so that %the changes are correct no matter what the point size of the document. For example, to treble the size of \verb+\arraycolsep+ do \begin{verbatim} \addtolength{\arraycolsep}{2\arraycolsep} \end{verbatim} while to halve it make the last parameter \verb+-0.5\arraycolsep+. In Figure~\ref{ima}, \verb+\arraycolsep+ has been multiplied by~$2.5$. Finally, the command \verb+\extracolsep+ inside an \verb+@{...}+ can be used to insert extra space to the left of all subsequent columns: for example, \verb+@{\extracolsep{1em}}+. This is not suppressed by a subsequent \verb+@{...}+. My remarks about quads above are not strictly true unless your current text font is Computer Modern roman in $10$~pt. A quad length is defined to be $1$~em, whose size depends on the current font, whereas \verb+\arraycolsep+ is defined to be $5$~pt, irrespective of the point size of the document. I find it very odd that \LaTeX, which has been so carefully set up so that the user can apparently change painlessly between $10$~pt, $11$~pt and $12$~pt, does not change the size of Maths lengths like \verb+\jot+ and \verb+\arraycolsep+ in the different point sizes. \subsection{Words in arrays} The odd word or two in an array can be put in by using \verb+\mbox+. But what should you do when you have a verbal phrase extending over more than one line, as in the final column of Figure~\ref{ima}? Most people's first thought is to have a separate line of the array for each line of text. As usual, this visual approach is inferior to the logical one when it comes to revising your file. Hard experience has shown me that you have to keep altering which words go on which lines as you alter other parts of the array. It is better to use the fourth type of column code~\verb+p+, which creates a paragraph box of a specified width. Thus the columns specifier in Figure~\ref{ima} is actually \verb+cccp{1.5in}+. Just guess a length to put inside \verb+p{...}+ at first: changing it later is much simpler than shuffling words around. Figure~\ref{ima} demonstrates another good reason to use the \verb+p+ code. The rows are far apart, because \verb+\arraystretch+ has been magnified. But we {\em don't\/} want the lines of text at the end of the second row to be that far apart. We could make an inner array with a smaller value of \verb+\arraystretch+, but it's simpler to use~\verb+p+. The only problem with the naked \verb+p+ columns is that they are set justified on both sides, which is absurd in narrow columns. I usually put \verb+\centering+ or \verb+\raggedright+ at the beginning of every entry in such a column. Unfortunately, you cannot do this in the final column of an array, because \LaTeX\ gets confused about whether \verb+\\+ refers to the row of the array or the line in the paragraph. If necessary, I get round this by adding a dummy unused column at the end of the array. Thus I told a lie above: the columns specifier in Figure~\ref{ima} is really \verb+cccp{1.5in}c+. \subsection{Inter-column constants} The code \verb+@{...}+ can be used for putting anything between two columns that must appear in every row, not just spaces. This is convenient for any repeated items. For example, the columns specifier in Figure~\ref{galois} is \begin{verbatim} {l@{\colon p + q\omega + r \omega^2 + s\omega^3 + t\omega^4 \mapsto p + {}}r@{\omega + {}}r@{\omega^2 + {}}r@{\omega^3 + {}}r@{\omega^4}} \end{verbatim} while the first row is just \begin{verbatim} \alpha_1 &q & r & s & t \end{verbatim} Notice the pairs \verb+{}+ that have been inserted to make $+$ behave as a binary operator. \subsection{Positioning} By default, each array is positioned so that it is centred vertically. In Figure~\ref{mv}, the equals sign is aligned with the centre of each of the three arrays. To align an array on its top row, start it with \verb+\begin{array}[t]{...}+; to align it on its bottom row, use \verb+[b]+ in place of \verb+[t]+. These positionings work well for simple tables of numbers. However, the logical interaction between them and \verb+\left+ and \verb+\right+ fences produces bizarre results (try it!). If you want matrices aligned on their top rows, as in Figure~\ref{topmat}, you have to do something quite complicated, which I shall come back to later. \begin{figure*} \newcommand{\topthing}[1]{\begin{array}{@{}c@{}}#1\\\phz\end{array}} \newcommand{\vecmu}{\mbox{\boldmath$\mu$}} \newcommand{\vecx}{{\bf x}} \[ \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*} \subsection{Cases} We often write equations where the value on the right-hand side depends on some condition, as in %The $(\omega,t)$-entry of~$X$ is defined by \begin{equation} X(\omega,t) = \cases{1 & if $\phi(\omega) = t$\cr 0 & otherwise.} \label{eqncase} \end{equation} You can do the right-hand side of this using an \latexword{array}, but it is simpler to use the direct plain \TeX\ command \verb+\cases+. The right-hand side of Equation~(\ref{eqncase}) was produced with \begin{verbatim} \cases{1 & if $\phi(\omega) = t$\cr 0 & otherwise.} \end{verbatim} The argument of \verb+\cases+ is like a two-column array, with its rows separated by \verb+\cr+ instead of \verb+\\+. The first entry in each row is in Maths mode; the second is in non-Maths mode. Both columns are left-aligned. \subsection{Binomial coefficients} If you write your binomial coefficients as $6 \choose 2$ rather than ${}^6{\rm C}_2$ you may be tempted to build them with an \latexword{array}. Don't. Use the plain \TeX\ infix command \verb+\choose+, as follows. \[ \verb+6 \choose 2+ \quad \qquad {6 \choose 2} \] It comes out rather differently in \verb+\textstyle+ and in \verb+\displaystyle+. Because \verb+\choose+ does not have its two arguments in braces, it is safest if you enclose the whole expression in grouping braces, as in \verb+{6 \choose 2}+, to ensure that \verb+\choose+ does not search too far back or too far forward for its arguments. If you need to use this a lot, make a \LaTeX-style macro such as \begin{verbatim} \newcommand{\binom}[2]{{#1\choose#2}} \end{verbatim} The command \verb+\atop+ works similarly, but omits the parentheses. \section*{Exercises} \addtocounter{preqn}{54} \begin{qn} The matrix $\left[\begin{array}{cc} 1 & 3\\ 3 & 5 \end{array} \right]$ is symmetric. \end{qn} \begin{qn} The determinant is given by \[ \det A = \left | \begin{array}{ccc} a_{11} & \ldots & a_{1n}\\ \vdots & \ddots & \vdots\\ a_{n1} & \ldots & a_{nn} \end{array} \right| \] \end{qn} \begin{qn} For a rotation, \[ \left(\begin{array}{rr} \cos \theta & \sin \theta\\ -\sin \theta & \cos \theta \end{array} \right) \left(\begin{array}{c}x \\ y\end{array}\right) = \left(\begin{array}{c} x\cos \theta + y\sin \theta\\ y\cos\theta - x\sin\theta \end{array} \right). \] \end{qn} \begin{qn} Here is a pair of mutually orthogonal Latin squares: \[ \begin{array}{cc} \begin{array}{ccc} A & B & C\\ B & C & A\\ C & A & B\\ \end{array} & \begin{array}{ccc} \alpha & \beta & \gamma\\ \gamma & \alpha & \beta\\ \beta & \gamma & \alpha \end{array} \\ \\ \mbox{Square 1} & \mbox{Square 2} \end{array} \] \end{qn} \begin{qn} A few real functions: \[ \begin{array}{lp{2in}c} x \mapsto x^2 & \raggedright differentiable everywhere & \\ x \mapsto \left| x\right | & \raggedright differentiable everywhere except at the origin &\\ x \mapsto \lfloor x \rfloor & \raggedright continuous everywhere except at the integers \end{array} \] \end{qn} \begin{qn} \it Typeset the table in Figure~\ref{ima}. \end{qn} \begin{qn} \addtolength{\arraycolsep}{-0.5\arraycolsep} Pascal's Triangle begins \[ \begin{array}{*{13}{c}} & & & & & & 1 & & & & & & \\ & & & & & 1 & & 1 & & & & & \\ & & & & 1 & & 2 & & 1 & & & &\\ & & & 1 & & 3 & & 3 & & 1 & & &\\ & & 1 & & 4 & & 6 & & 4 & & 1 & &\\ & 1 & & 5 & & 10 & & 10 & & 5 & & 1 &\\ 1 & & 6 & & 15 & & 20 & & 15 & & 6 & & 1 \end{array} \] \end{qn} \begin{qn} The Stirling numbers of the second kind are defined by \[ S(n,k) = \frac{1}{k!} \sum_{j=1}^{k} (-1)^{k-j} {k \choose j} j^n. \] \end{qn} \begin{qn} If the random variable $X$ is symmetric about~$0$ and if $Y = X^2$ then \[ f_Y(y) = \cases{ 0 & if $y \leq 0$ \cr \dfrac{f_X(\sqrt{y})}{\sqrt{y}} & if $y > 0$.} \] \end{qn} \begin{qn} \[ \left[ \begin{array}{cccc} \sigma_{11} & \sigma_{12} &\cdots & \sigma_{1n}\\ \sigma_{21} & \sigma_{22} &\cdots & \sigma_{2n}\\ \vdots & \cdots & \ddots& \vdots\\ \sigma_{1n} & \cdots & \cdots & \sigma_{nn} \end{array} \right] \] \end{qn} \begin{qn} \[ \begin{array}{ccccccccc} M_0 & \subseteq & M_1 & \subseteq & M_2 & \subseteq & \cdots & \subseteq & M_m\\ \uparrow && \uparrow && \uparrow\\ \mbox{null} && \mbox{linear} && \mbox{quadratic} \end{array} \] \end{qn} \section{Tables of data} \subsection{General} The extra topics that I cover in this section are most pertinent to tables of data, but do sometimes arise in Mathematical arrays. Likewise, many considerations about Mathematical arrays also apply to tables of data. For example, the table in Figure~\ref{eel} does not really have eight columns: it has two long columns but has been broken down into four parts to fit on the page nicely. So it is set as an array with one row and four columns, each of whose entries is an array with two columns. \LaTeX\ has another environment, called \latexword{tabular}, which is very similar to \latexword{array}. It may be used inside or outside Maths mode. By default, each of its entries is set in ordinary mode. However, any extra space on either side of the ampersands has no effect. The length \verb+\arraycolsep+ is replaced by the length \verb+\tabcolsep+. Tables of data often have a mix of words and symbols, and you have to decide which is less trouble: using an \latexword{array} and putting the words in \verb+mbox+es or \verb+p+~columns, or using a \latexword{tabular} and putting the symbols in \verb+$...$+. If the latter, don't forget to put numbers in \verb+$...$+ if they involve a minus sign. \begin{figure*} \[ \begin{tabular}{c|c|c|c} \begin{tabular}{cc} Year 1 & Year 2\\ \hline 269 & 466\\ 100 & 219\\ 197 & 421\\ 216 & 708\\ \end{tabular} & \begin{tabular}{cc} Year 1 & Year 2\\ \hline 134 & 590\\ \phz 74 & 137\\ \phz 88 & 356\\ \phz 25 & 212 \end{tabular} & \begin{tabular}{cc} Year 1 & Year 2\\ \hline 211 & 505 \\ 102 & 363\\ 191 & 563\\ \phz 67 & 338\\ \end{tabular} & \begin{tabular}{cc} Year 1 & Year 2\\ \hline 209 & 352\\ \phz 29 & 254\\ \phz 19 & 106\\ \phz 44 & 268 \end{tabular} \end{tabular} \] \caption{Number of eelworms in two successive years} \label{eel} \end{figure*} \subsection{Horizontal rules} \begin{figure*}[hbtp] \[ \begin{tabular}{l@{\qquad}l@{\qquad}lrrrrrrrrr} \hline & & & \multicolumn{3}{c}{1961} & \multicolumn{3}{c}{1971} & \multicolumn{3}{c}{1981}\\ \hline \multicolumn{3}{l}{Billion passenger kilometres travelled by:}\\ & \multicolumn{2}{l}{Air} && 1 &&& 2 &&& 3&\\ & \multicolumn{2}{l}{Rail} && 39 &&& 36 &&& 34&\\ & \multicolumn{2}{l}{Road}\\ & & Buses and coaches && 67 &&& 51 &&& 42&\\ & & Cars, taxis and two-wheeled motor vehicles && 142 &&& 284 &&& 380&\\ & & Bicycles && 10 &&& 4 &&& 4&\\ \cline{4-12} & \multicolumn{2}{l}{Total} && 259 &&& 377 &&& 406&\\ \hline \end{tabular} \] \caption{Passenger transport (from \protect\cite{keyd})} \label{cars} \end{figure*} To obtain a horizontal rule stretching the full width of the array, use \verb+\hrule+. Don't forget to finish the previous row with \verb+\\+, even if it is the last row of the array, as at the end of Figure~\ref{cars}. Two or more \verb+\hrule+s can follow each other with no intervening \verb+\\+. A little vertical space is put between two such horizontal rules. However, any vertical rules in the array (see below) will be suppressed between the successive horizontal rules. For a horizontal rule spanning only columns \mbox{$2$--$4$}, say, use \verb+\cline{2-4}+. Again, finish the preceding row with \verb+\\+. Figure~\ref{cars} shows an example of this. Successive \verb+\cline+s will be interpreted as being in the same row, as in \verb+\cline{2-4}\cline{7-7}+, for example, so that \verb+\cline{2-4}\cline{2-4}+ does {\em not\/} produce two horizontal lines with a little space between them. Likewise, there is no space between an \verb+\hline+ and an immediately preceding or succeeding \verb+\cline+. \subsection{Vertical rules} A vertical rule is obtained by putting \verb+|+ at the appropriate place in the columns specifier. For example, the columns specifier for the \latexword{tabular} in Figure~\ref{travel} is \begin{verbatim} |r@{ Month}l@{\quad\pounds}r| \end{verbatim} Two or more \verb+|+s may come next to each other. \begin{figure*} \begin{minipage}{.5\textwidth} \[ \begin{tabular}{|r@{ Month}l@{\quad\pounds}r|} \hline \multicolumn{3}{|c|}{Premiums}\\ \hline 1 & & 18\\ 3 & s & 48\\ 6 & s & 95 \\ 9 & s & 136\\ \hline \end{tabular} \] \caption{Travel insurance} \label{travel} \end{minipage} \begin{minipage}{.5\textwidth} \[ \begin{tabular}{lr@{}l} Bootstrap & 0.301\\ Jackknife & 0.314\\ Delta method & 0.244& *\\ Half-samples & 0.364 & \dag\\ Random subsampling & 0.423 & \ddag\\ Normal theory & 0.302 \end{tabular} \] \caption{Sticking out to the right (from \protect\cite{brad})} \label{efron} \end{minipage} \end{figure*} For a vertical rule in a single item, stretching from the top to bottom of its row, use \verb+\vline+. This cannot be used in a \verb+p+~column, but may be put inside \verb+@{...}+. If you omit the trailing ampersands in a row with few items the trailing vertical rules will also be omitted. This can be a nuisance in a sparse table. If you want a vertical rule at each side of a sparse table, consider doing this: \begin{verbatim} \begin{array}{|c|} \begin{array}{@{}...@{}} ... \end{array} \end{array} \end{verbatim} The length \verb+\arrayrulewidth+ controls the thickness of all the horizontal and vertical rules just described. The width of the space between the vertical rules created by \verb+||+ in a the columns specifier is controlled by the length \verb+\doublerulesep+, as is the vertical space between two successive \verb+\hline+s. \subsection{Spanning several columns} The \verb+\multicolumn+ command is used to create an entry spanning several columns. It takes three arguments. The first is the number of columns to be spanned; the second is the code for the type of column to be used; the third is the text of the entry. \begin{verbatim} \begin{tabular}{crrrr} Type & \multicolumn{4}{c}{Grade}\\ \cline{2-5} & 12 & 16 & 24 & 30\\ \hline $A$ & 0 & 1 & 21 & 24\\ $B$ & 1 & 6 & 24 & 13 \end{tabular} \end{verbatim} \[ \begin{tabular}{crrrr} Type & \multicolumn{4}{c}{Grade}\\ \cline{2-5} & 12 & 16 & 24 & 30\\ \hline $A$ & 0 & 1 & 21 & 24\\ $B$ & 1 & 6 & 24 & 13 \end{tabular} \] Any \verb+|+ in the columns specifier is regarded as belonging to its preceding column, and may be overwritten by \verb+\multicolumn+ unless it is included in the second argument. The exception is any \verb+|+ to the left of the first column, which is regarded as part of the first column. For example, the first row in Figure~\ref{travel} is \begin{verbatim} \multicolumn{3}{|c|}{Premiums}\\ \end{verbatim} Expressions \verb+@{...}+ in the columns specifier are similarly assigned to columns and similarly overwritten. Indented row labels for subheadings can also be conveniently obtained by using \verb+\multicolumn+. The \latexword{tabular} in Figure~\ref{cars} begins with three \verb+l+~columns. The first row after the second horizontal rule is a \verb+\multicolumn+ spanning three columns; the next begins with \verb+&+ followed by a \verb+\multicolumn+ spanning two columns. Unfortunately, if the width of a multicolumn entry spanning three or more columns is more than the total width of the spanned columns, \LaTeX\ cannot adjust the spacing between those columns to make it equal: it puts all the extra space to the left of the last of the spanned columns. The only way that I know around this is to use \verb+@{...}+ to put the same amount of extra space between each adjacent pair of the spanned columns. \subsection{Changing the type of an entry} Although its name does not suggest it, the command \verb+\multicolumn+ is also used to change the type of a single entry. This is most often used to give a centred heading to a column of right-aligned data. \begin{verbatim} \begin{array}{rrr} \multicolumn{1}{c}{n} & \multicolumn{1}{c}{n^2} & \multicolumn{1}{c}{\phi(n)}\\ 9 & 81 & 6\\ 10 & 100 & 4\\ 11 & 121 & 10 \end{array} \end{verbatim} \[ \begin{array}{rrr} \multicolumn{1}{c}{n} & \multicolumn{1}{c}{n^2} & \multicolumn{1}{c}{\phi(n)}\\ 9 & 81 & 6\\ 10 & 100 & 4\\ 11 & 121 & 10 \end{array} \] As this example shows, this works fine when the centred heading is narrower than the widest other entry in the column. However, when it is wider then all the other entries in the column are aligned with its right-hand edge, when probably what you wanted was to have them right-aligned among themselves and then all centred under the heading. How can this be fixed? If most of the numbers are the same length, a reasonable solution is to make the whole column centred and put in \verb+\phantom{0}+s to make the shorter numbers as long as the longest. This works because all digits have the same width. That is what I did in Figure~\ref{eel}. I adopted a different solution in Figure~\ref{cars}, where I decided that the year headings, not being numbers to be added to other numbers in their columns, should be centred. This time I used the columns specifier \verb+rrr+ for each column of data. In the headings I used \verb+\multicolumn{3}{c}{...}+ and in the data rows I left one blank entry either side of each data entry. The result is rather widely spaced: space could be saved by using \verb+@{...}+ between each data column and its blank neighbours. The command \verb+\multicolumn{1}+ can also be used to remove a vertical rule or the contents of an \verb+@{...}+ from one particular row. For example, if the columns specifier is \verb+l|r+ then the vertical rule is missing from any row whose first entry is made with \verb+\multicolumn{1}{l}+. \subsection{Decimal tabulation} Sometimes a column of numbers with decimal points should be aligned on those decimal points. If they all have the same number of digits after the point, there is no problem: simply use an \verb+r+ column. If only a few numbers are missing a few digits after the point, fill in the spaces with \verb+\phantom{0}+ and still use an \verb+r+ column. Only if you have a long column of numbers with very variable numbers of digits after the point is it worth going to the trouble of using the columns specifier \verb+r@{.}l+ and entering a number such as 3.142 as \verb+3 & 142+. \subsection{Things that stick out} Sometimes you have a column of numbers that should be right-aligned but some of the entries have accretions that should stick out to the right, as in Figure~\ref{efron}, or a left-aligned column with pieces sticking out to the left. There are three ways of dealing with this, each appropriate in different circumstances. If the pieces that stick out are all digits, use \verb+\phantom{0}+ as described above. Sometimes the piece that sticks out is very small and occurs in only one row. If a displayed Mathematical array ends the sentence then sometimes the full stop needs to come outside the array, vertically centred (with \verb+\end{array}.\]+); but sometimes the final row of the array needs a full stop at the end of it without upsetting the column alignment. Then the trick is to add the full stop in such a way that \torl\ thinks that it doesn't take up any space. According to \cite[page~98]{leslie}, you do this with \verb+\makebox[0pt][l]{.}+, but the plain \TeX\ \verb+\rlap{.}+ is shorter and achieves the same effect. For a small item sticking out on the left use \verb+\makebox[0pt][r]{ }+ or \verb+\llap{ }+. Of course, the content of \verb+\makebox{ }+ or \verb+\rlap+ or \verb+\llap+ is not in Maths mode. Statisticians sometimes put a question mark to indicate dubious data, and scientists often decorate numbers with stars to show statistical significance. In such cases it is best to use the columns specifier \verb+r@{}l+ for the column: the \verb+r+ part is used for the numbers and the \verb+l+ part is used for any decorations. In Figure~\ref{efron} the columns specifier is \verb+lr@{}l+ and the fourth line is \begin{verbatim} Half-samples & 0.364 & \dag\\ \end{verbatim} To see the difference between these last two solutions, compare the following. \begin{center} $ \begin{array}{ll} \begin{array}{l} \verb+\begin{array}{|r@{}l|}+\\ \verb!20 & ++!\\ \verb+\end{array}+ \end{array} & \begin{array}{|r@{}l|} 20 & ++ \end{array} \\ \\ \begin{array}{l} \verb+\begin{array}{|r|}+\\ \verb!20 \rlap{$++$}!\\ \verb+\end{array}+ \end{array} & \begin{array}{|r|} 20 \rlap{$++$} \end{array} \end{array} $ \end{center} \subsection{Columns specifiers} We have seen that a columns specifier is a string of the following objects: \verb+r+, \verb+l+, \verb+c+, \verb+p{...}+, \verb+@{...}+ and \verb+|+. It is easy to lose track when setting up the column specifier for a complicated array. However, repeated elements may be simplified by using \verb+*+. Thus an array with $15$~centred columns can be specified with \verb+*{15}{c}+. This shorthand is really advantageous for something complicated like \verb+l|*{4}{r@{}lrr|}+. Moreover, \verb+*+~expressions can be nested within each other. \section*{Exercises} \begin{qn} \renewcommand{\arraystretch}{1.6} \[ \begin{array}{c|ccccc} \multicolumn{6}{c}{\mbox{Values of $\nu_{\gamma\chi}$ for the design}}\\ \hline \gamma & \chi_0 & \chi_1 & \chi_2 &\chi_3 & \chi_4\\ \hline \mu & 1 & 0 & 0 & 0 & 0 \\ \sigma & 1 & 0 & 0 & 0 & 0\\ \rho & 1 & 0 & 0 & \frac{1}{4} & 0\\ \kappa & 1 & \displaystyle\frac{3 + e_2 - e_1}{36} & \displaystyle\frac{3 + e_4 - e_2}{36} & 0 & \displaystyle\frac{3 + e_1 - e_4}{36}\\ \varepsilon & 1 & 1 & 1 & 1 & 1\\ \hline \end{array} \] \end{qn} \begin{qn} Table of results: \[ \begin{array}{l|cc|r} & B_1 & B_2\\ \hline A_1 & 37 & \phz53 & 90\\ A_2 & 41 & \phz48 & 89\\ \hline & 78 & 101 & 179 \end{array} \] \end{qn} \begin{qn} \it Typeset the table in Figure~\ref{eel}. \end{qn} \begin{qn} \[ \begin{array}{lrrrr@{.}l} \mbox{Source} & \mbox{df} & \multicolumn{1}{c}{\mbox{SS}} & \multicolumn{1}{c}{\mbox{MS}} & \multicolumn{2}{c}{\mbox{VR}}\\ \hline x_1 & 1 & 104474 & 104474 & 1220 & 5\\ x_2 \mid x_1 & 1 & 2284 & 2284 & 26 & 68\\ \cline{1-3} \mbox{regression} & 2 & 106758\\ \mbox{residual} & 15 & 1284 & 85.6\\ \cline{1-3} \mbox{`total'} & 17 & 108042 \end{array} \] \end{qn} \begin{qn} \it Typeset the table in Figure~\ref{cars}. \end{qn} \begin{qn} \[ \begin{tabular}% {||r@{ }l|r@{}l|cr@{}lc|@{}c@{\hspace{\arraycolsep}\pounds}r||} \multicolumn{2}{||c|}{Date} & \multicolumn{2}{c|}{Miles} & \multicolumn{4}{c|}{Gallons} & \multicolumn{2}{c||}{Cost}\\ \hline 27 & December & 46674 & && 4 & .18 &&& 5.56\\ 3 & January & 46038 & & &3 & .93 && &5.00\\ 6 & January & 47956 & ? && 7 & .1 && &10.50\\ 10 & January & 47292 & && 7 & .89&& & 10.50\\ 17 & January & 47464 &&& 4 & &&&5.00\\ \multicolumn{10}{||c||}{\dotfill}\\ 3 & February & 48112 &&& 6 & .88 &&& 9.00 \end{tabular} \] \end{qn} \begin{thebibliography}{9} \bibitem{keyd} \writer{Central Statistical Office} \book{Key Data 1986} \publish{Her Majesty's Stationery Office}{London} \byear{1986} \bibitem{brad} \writer{Efron,~B.} \book{The Jackknife, the Bootstrap and Other Resampling Plans} \publish{Society for Industrial and Applied Mathematics}{Philadelphia} \byear{1982} \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}