diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-13 00:00:01 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-13 00:00:01 +0000 |
commit | 73d0fff04ecb705176e32a12a5070fd59d1104bf (patch) | |
tree | fda3cd2e5c0eedb415d3fca8f75a03babcc967b2 /Master/texmf-dist/tex/latex/multirow/multirow.sty | |
parent | dbafb0ef601ebc7c793c783e3d455cf22011c712 (diff) |
multirow
git-svn-id: svn://tug.org/texlive/trunk@1118 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/multirow/multirow.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/multirow/multirow.sty | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/multirow/multirow.sty b/Master/texmf-dist/tex/latex/multirow/multirow.sty new file mode 100644 index 00000000000..f52132fd150 --- /dev/null +++ b/Master/texmf-dist/tex/latex/multirow/multirow.sty @@ -0,0 +1,159 @@ +%% +%% multirow.sty V1.6 version (5-May-2004) +%% +%% Author: Jerry Leichter <jerrold.leichter@smarts.com> +%% Piet van Oostrum <piet@cs.uu.nl> +%% +%% This file may be distributed under the terms of the LaTeX Project Public +%% License, as described in lppl.txt in the base LaTeX distribution. +%% Either version 1 or, at your option, any later version. +%% +%% V1.0 was distributed anonymously, based on a Usenet posting that was +%% not intended for stand-alone use. +%% V1.1 was modified by Piet van Oostrum <piet@cs.uu.nl> to allow it to +%% work without bigstrut.sty. +%% V1.2 was modified by Jerry Leichter for the same goal, but using a +%% different approach which will work properly in conjunction with +%% bigstrut.sty. +%% V1.2a was modified by Piet van Oostrum <piet@cs.uu.nl> to use \vskip +%% instead of \raise in positioning, avoiding making rows too high +%% when the adjustment is large. +%% V1.3 was modified by Piet van Oostrum to work properly in a p{} column +%% (\leavevmode added) +%% V1.4 was modified by Piet van Oostrum to check for the special case that +%% the width is given as an *. In this case the natural +%% width of the text argument will be used and the argument +%% is processed in LR-mode. +%% V1.5 was modified by Piet van Oostrum: Added a % after \hbox{#5}\vfill}. +%% Added \struts around #5 for better vertical positioning. +%% Additional coding for negative value of nrows. +%% V1.6 was modified by Piet van Oostrum: Replace a space by \relax after +%% \advance\@tempdima#4. +%% +% Make an entry that will span multiple rows of a table. +% +% \multirow{nrows}[bigstruts]{width}[fixup]{text} +% +% nrows is the number of rows to span. It's up to you to leave the other +% rows empty, or the stuff created by \multirow will over-write it. +% With a positive value of nrows the spanned colomns are this row and +% (nrows-1) rows below it. With a negative value of nrows they are +% this row and (1-nrows) above it. +% +% bigstruts is mainly used if you've used bigstrut.sty. In that case it +% is the total number of uses of \bigstrut within the rows being +% spanned. Count 2 uses for each \bigstrut, 1 for each \bigstrut[x] +% where x is either t or b. The default is 0. +% width is the width to which the text is to be set, or * to indicate that +% the text argument's natural width is to be used. +% +% text is the actual text. If the width was set explicitly, the text will +% be set in a parbox of that width; you can use \\ to force linebreaks +% where you like. +% +% If the width was given as * the text will be set in LR mode. If you +% want a multiline entry in this case you should use a tabular or array +% in the text parameter. +% +% The text is centered vertically within the range spanned by nrows. +% +% fixup is a length used for fine tuning: The text will be raised (or +% lowered, if fixup is negative) by that length above (below) wherever +% it would otherwise have gone. +% +% For example (using both multirow and bigstrut) +% +% \newcommand{\minitab}[2][l]{\begin{tabular}{#1}#2\end{tabular}} +% \begin{tabular}{|c|c|} +% \hline +% \multirow{4}{1in}{Common g text} & Column g2a\\ +% & Column g2b \\ +% & Column g2c \\ +% & Column g2d \\ +% \hline +% \multirow{3}[6]*{Common g text} & Column g2a\bigstrut\\\cline{2-2} +% & Column g2b \bigstrut\\\cline{2-2} +% & Column g2c \bigstrut\\ +% \hline +% \multirow{4}[8]{1in}{Common g text} & Column g2a\bigstrut\\\cline{2-2} +% & Column g2b \bigstrut\\\cline{2-2} +% & Column g2c \bigstrut\\\cline{2-2} +% & Column g2d \bigstrut\\ +% \hline +% \multirow{4}*{\minitab[c]{Common \\ g text}} & Column g2a\\ +% & Column g2b \\ +% & Column g2c \\ +% & Column g2d \\ +% \hline +% \end{tabular} +% +% If any of the spanned rows are unusually large, or if you're using +% bigstrut.sty and \bigstrut's are used assymetrically about the centerline of +% the spanned rows, the vertical centering may not come out right. Use the +% fixup argument in this case. +% +% Just before "text" is expanded, the \multirowsetup macro is expanded to +% set up any special environment. Initially, \multirowsetup contains just +% \raggedright. It can be redefined with \renewcommand. +% +% Bugs: It's just about impossible to deal correctly with descenders. The +% text will be set up centered, but it may then have a baseline that doesn't +% match the baseline of the stuff beside it, in particular if the stuff +% beside it has descenders and "text" does not. This may result in a small +% missalignment. About all that can be done is to do a final touchup on +% "text", using the fixup optional argument. (Hint: If you use a measure +% like .1ex, there's a reasonable chance that the fixup will still be correct +% if you change the point size.) +% +% \multirow is mainly designed for use with table, as opposed to array, +% environments. It will not work well in an array environment since the lines +% have an extra \jot of space between them which it won't account for. Fixing +% this is difficult in general, and doesn't seem worth it. The bigstruts +% argument can be used to provide a semi-automatic fix: First set +% \bigstrutjot to .5\jot. Then simply repeat nrows as the bigstruts argument. +% This will be close, but probably not exact; you can use the fixup argument +% to refine the result. (If you do this repeatedly, you'll probably want to +% wrap these steps up in a simple macro. Note that the modified \bigstrutjot +% value will not give reasonable results if you have bigstruts and use this +% argument for its intended purpose elsewhere. In that case, you might want +% to set it locally.) +% +% If you use \multirow with the colortbl package you have to take +% precautions if you want to color the column that has the \multirow in it. +% colortbl works by coloring each cell separately. So if you use \multirow +% with a positive nrows value, colortbl will first color the top cell, then +% \multirow will typeset nrows cells starting with this cell, and later +% colortbl will color the other cells, effectively hiding the text in that +% area. This can be solved by putting the \multirow is the last row with a +% negative nrows value. +% Example: +% +% \begin{tabular}{l>{\columncolor{yellow}}l} +% aaaa & \\ +% cccc & \\ +% dddd & \multirow{-3}*{bbbb}\\ +% \end{tabular} +% +\def\multirowsetup{\raggedright} +\def\multirow#1{\relax\@ifnextchar + [{\@multirow{#1}}{\@multirow{#1}[0]}} +\def\@multirow#1[#2]#3{\@ifnextchar [{\@xmultirow{#1}[#2]{#3}}% + {\@xmultirow{#1}[#2]{#3}[0pt]}} +\def\@xmultirow#1[#2]#3[#4]#5{\@tempcnta=#1% + \@tempdima\@tempcnta\ht\@arstrutbox + \advance\@tempdima\@tempcnta\dp\@arstrutbox + \ifnum\@tempcnta<0\@tempdima=-\@tempdima\fi + \advance\@tempdima#2\bigstrutjot + \if*#3\setbox0\vtop to \@tempdima{\vfill\multirowsetup + \hbox{\strut#5\strut}\vfill}% + \else + \setbox0\vtop to \@tempdima{\hsize#3\@parboxrestore + \vfill \multirowsetup \strut#5\strut\par\vfill}% + \fi + \ht0\z@\dp0\z@ + \ifnum\@tempcnta<0\advance\@tempdima-\dp\@arstrutbox + \else\@tempdima=\ht\@arstrutbox + \ifnum#2>0 \advance\@tempdima\bigstrutjot \fi + \fi + \advance\@tempdima#4\relax\leavevmode\vtop{\vskip-\@tempdima\box0\vss}} +\@ifundefined{bigstrutjot}{\newdimen\bigstrutjot \bigstrutjot\jot}{} |