Whitespace cleanup.
[mdwtools] / mdwtab.dtx
index 0b78153..3c4b419 100644 (file)
@@ -6,31 +6,6 @@
 %
 % (c) 1996 Mark Wooding
 %
-%----- Revision history -----------------------------------------------------
-%
-% $Log: mdwtab.dtx,v $
-% Revision 1.3  2003/11/10 14:43:48  mdw
-% Ignore spaces after spliteqn.
-%
-% Revision 1.2  2003/09/05 16:15:03  mdw
-% Colour support!  Better rule attribute handling.  Lots of new hooks.
-%
-% Revision 1.1  2002/02/03 20:49:03  mdw
-% Checkin for new build system.
-%
-% Revision 1.8  1996/12/09 23:20:42  mdw
-% (\tab@setstrut): Fixed so that it uses \dimen@ii for the strut depth,
-% as advertised.
-%
-% Revision 1.7  1996/11/29 21:59:16  mdw
-% Fixed a little formatting mistake in a syntax diagram, and switched over
-% to the new syntax diagram commands on the grounds that they're slightly
-% less messy.  Maybe.
-%
-% Revision 1.6  1996/11/19 20:54:33  mdw
-% Entered into RCS
-%
-%
 % \end{meta-comment}
 %
 % \begin{meta-comment} <general public licence>
@@ -69,7 +44,7 @@
 %<+color>                [2003/08/24 1.10 Fix for people who can't spell]
 % \end{meta-comment}
 %
-% \CheckSum{3373}
+% \CheckSum{3404}
 %% \CharacterTable
 %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
 %%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
 % The |*| or optional \<rule-params> give rule-drawing parameters for the |h|
 % and |c| subcommands.  (Note that you can't pass a |*| or an optional
 % parameters argument to the |h| or |c| subcommands directly.)  See
-% section~\ref{sec:ruleparams}. 
+% section~\ref{sec:ruleparams}.
 %
 % The argument works a bit like a table preamble, really.  Each letter is a
 % command.  The following are supported:
 % then you get an extra thick rule at the bottom of the page.  This is a bit
 % of a problem, because if the rule isn't there in the footer and you get
 % a break between two rows \emph{without} a rule between them, then the page
-% looks very odd.  
+% looks very odd.
 %
 % If you want to do ruled longtables, I'd recommend that you proceed as
 % follows:
 % Note that if you do gobble the |\tab@mkpream|, it's your responsibility to
 % insert another one at the very end of your macro's expansion (so that
 % further preamble characters can be read).
-% 
+%
 % The replacement text is inserted directly.  It's normal to insert preamble
 % elements here.  There are several to choose from:
 %
 %   \[ "*" \]
 %   \[ "[" <colour-model> "]" \]
 %   "{" <colour> "}"
-%   \[ "[" <left-overhang> "]" 
+%   \[ "[" <left-overhang> "]"
 %      \[ "[" <right-overhang> "]" \] \]
 % \]]
 % \end{grammar}
 %
 %
 % \subsection{Parser states}
-% 
+%
 % Now we start on the parser.  It's really simple, deep down.  We progress
 % from state to state, extracting tokens from the preamble and building
 % command names from them.  Each command calls one of the element-building
 % routines, which works out which state it should be in.  We go through each
 % of the states in between (see later) doing default things for the ones we
 % missed out.
-% 
+%
 % Anyway, here's some symbolic names for the states.  It makes my life
 % easier.
 %
 \coldef <#1{\tabuserposttype{#1}}
 \coldef ?#1#2{%
   \ifx>#1\expandafter\tabuserpretype%
-  \else\expandafter\tabusrposttype\fi%
+  \else\expandafter\tabuserposttype\fi%
   {#2}%
   \tab@append\tab@shortline{#2}%
 }
   \tab@initread%
   \def\tab@multicol{\@arstrut}%
   \tab@preamble{\tab@multicol}%
-  \def\tab@midtext{\ignorespaces\@sharp\@sharp\@maybe@unskip}%
+  \let\tab@lefttext\tab@lefttexthook%
+  \let\tab@righttext\tab@righttexthook%
+  \let\tab@leftruletext\tab@leftruletexthook%
+  \let\tab@rightruletext\tab@rightruletexthook%
+  \def\tab@midtext{\tab@setcr\ignorespaces\@sharp\@sharp\@maybe@unskip}%
   \tab@readpreamble{#1}%
   \gdef\@preamble{\the\tab@preamble}%
   \let\tab@bgroup\begingroup%
 %
 % \begin{macro}{\tab@dohline}
 %
-% This is where hlines actually get drawn.  
+% This is where hlines actually get drawn.
 % Drawing lines is more awkward than it used to be, particularly in unboxed
 % tables.  It used to be a case simply of saying |\noalign{\hrule}|.
 % However, since unboxed tables are actually much wider than they look, this
   \if@fleqn%
     \eqaopenskip\mathindent%
     \splitleft\mathindent\relax%
-    \splitright\mathindent\@minus\mathindent\relax%  
+    \splitright\mathindent\@minus\mathindent\relax%
   \else%
     \eqaopenskip\@centering%
     \splitleft2.5em\@minus2.5em%
 % \end{environment}
 % \end{environment}
 %
-% Now we can define the column types. 
+% Now we can define the column types.
 %
 %    \begin{macrocode}
 \colpush{eqnarray}
 % we need to remove them by hand at the extremities of the environment.
 %
 %    \begin{macrocode}
-\def\subsplit{%
+\def\subsplit{\@ifnextchar[\subsplit@i{\subsplit@i[c]}}
+\def\subsplit@i[#1]{%
+  \let\@tempa\vcenter%
+  \if#1t\let\@tempa\vtop\fi%
+  \if#1b\let\@tempa\vbox\fi%
   \let\\\seq@cr%
-  \vcenter\bgroup%
+  \@tempa\bgroup%
   \seq@dosplit{\hfil\qquad$##$\qquad\hfil}{\hfilneg\hskip-2em}%
 }
 %    \end{macrocode}