Eliminate tabs from TeX input files.
[mdwtools] / mdwtab.dtx
index a5786e5..b972848 100644 (file)
 %
 % \item David Carlisle's \package{colortbl} package entirely fails to work
 %       with \package{mdwtab}.  However, we now have colour support of our
-%      own which is at times similar in style.
+%       own which is at times similar in style.
 %
 % \end{itemize}
 %
 %
 % \begin{grammar}
 %
-% <tabular-env>        ::= \[[
+% <tabular-env> ::= \[[
 %   "\\begin"
 %   \begin{stack}
 %     "{tabular}" \\ "{tabular*}" "{" <length> "}" \\
 %
 % <position-arg> ::= (see below)
 %
-% <preamble>   ::= \[[
+% <preamble>    ::= \[[
 %   <first-column>
 %   \[ \< <column> \> \]
 % \]]
 %
 % <first-column> ::= \[[ \[ <rule> \] <column> \]]
 %
-% <column>     ::= \[[
+% <column>      ::= \[[
 %   \[ <spacing> \] \[ \< <user-pre-text> \> \] <column-type>
 %   \[ \< <user-post-text> \> \] \[ <spacing> \] \[ <rule> \]
 % \]]
 %
-% <spacing>    ::= \[[ "@" "{" <text> "}" \]]
+% <spacing>     ::= \[[ "@" "{" <text> "}" \]]
 %
 % <user-pre-text> ::= \[[ \[ "?" \] ">" "{" <text> "}" \]]
 %
-% <column-type>        ::= \[[
+% <column-type> ::= \[[
 %   \begin{stack}
 %     \[ "T" \\ "M" \] \( "l" \\ "c" \\ "r" \) \\
 %     \( "p" \\ "m" \\ "b" \) "{" <length> "}" \\
 %
 % <user-post-text> ::= \[[ \[ "?" \] "<" "{" <text> "}" \]]
 %
-% <rule>       ::= \[[ \( "|" \\ "!" "{" <text> "}" \) \]]
+% <rule>        ::= \[[ \( "|" \\ "!" "{" <text> "}" \) \]]
 %
 % \end{grammar}
 %
 % The actual column types are shown in table~\ref{tbl:columns}.
 %
 % \begin{table}
-% \begin{tabular}[C]{| >{\synshorts} c | m{3in} |}        \hlx{hv[1]}
-%
-% \multicolumn{2}{|c|}{\bf Column types}               \\ \hlx{v[1]hv}
-% \bf Name     & \bf Meaning                           \\ \hlx{vhv.}
-% "l"          & Left aligned text (\env{tabular}) or
-%                equation (\env{array}).               \\ \hlx{.}
-% "c"          & Centred text (\env{tabular}) or
-%                equation (\env{array}).               \\ \hlx{.}
-% "r"          & Right aligned text (\env{tabular}) or
-%                equation (\env{array}).               \\ \hlx{vhv.}
+% \begin{tabular}[C]{| >{\synshorts} c | m{3in} |}         \hlx{hv[1]}
+%
+% \multicolumn{2}{|c|}{\bf Column types}                \\ \hlx{v[1]hv}
+% \bf Name      & \bf Meaning                           \\ \hlx{vhv.}
+% "l"           & Left aligned text (\env{tabular}) or
+%                 equation (\env{array}).               \\ \hlx{.}
+% "c"           & Centred text (\env{tabular}) or
+%                 equation (\env{array}).               \\ \hlx{.}
+% "r"           & Right aligned text (\env{tabular}) or
+%                 equation (\env{array}).               \\ \hlx{vhv.}
 % "Ml", "Mc" and "Mr" & Left, centre and right aligned
-%                equations.*                           \\ \hlx{.}
+%                 equations.*                           \\ \hlx{.}
 % "Tl", "Tc" and "Tr" & Left, centre and right aligned
-%                text.*                                \\ \hlx{vhv.}
+%                 text.*                                \\ \hlx{vhv.}
 % "p{"<width>"}" & Top aligned paragraph with the given
-%                width.                                \\ \hlx{.}
+%                 width.                                \\ \hlx{.}
 % "m{"<width>"}" & Vertically centred paragraph with
-%                the given width.                      \\ \hlx{.}
+%                 the given width.                      \\ \hlx{.}
 % "b{"<width>"}" & Bottom aligned paragraph with the
-%                given width.                          \\ \hlx{vhv.}
+%                 given width.                          \\ \hlx{vhv.}
 % "#{"<pre>"}{"<post>"}" & User defined column type:
-%                \<pre> is inserted before the
-%                cell entry, \<post> is inserted
-%                afterwards.*                          \\ \hlx{vhhv[1]}
-%
-% \multicolumn{2}{|c|}{\bf Other modifier characters}  \\ \hlx{v[1]hv}
-% \bf Name     & \bf Meaning                           \\ \hlx{vhv.}
-% "|"          & Inserts a vertical rule between
-%                columns.                              \\ \hlx{.}
+%                 \<pre> is inserted before the
+%                 cell entry, \<post> is inserted
+%                 afterwards.*                          \\ \hlx{vhhv[1]}
+%
+% \multicolumn{2}{|c|}{\bf Other modifier characters}   \\ \hlx{v[1]hv}
+% \bf Name      & \bf Meaning                           \\ \hlx{vhv.}
+% "|"           & Inserts a vertical rule between
+%                 columns.                              \\ \hlx{.}
 % "$*["<params>"]" & Inserts a vertical rule of given
 %                 width between columns; "*" selects
 %                 "\arraythickrulewidth".*              \\ \hlx{.}
-% "!{"<text>"}"        & Inserts \<text> between columns,
-%                treating it as a vertical rule.       \\ \hlx{vhv.}
-% "@{"<text>"}"        & Inserts \<text> instead of the
-%                usual intercolumn space.              \\ \hlx{vhv.}
-% ">{"<text>"}"        & Inserts \<text> just before the
-%                actual column entry.                  \\ \hlx{.}
-% "<{"<text>"}"        & Inserts \<text> just after the
-%                actual column entry.                  \\ \hlx{.}
+% "!{"<text>"}" & Inserts \<text> between columns,
+%                 treating it as a vertical rule.       \\ \hlx{vhv.}
+% "@{"<text>"}" & Inserts \<text> instead of the
+%                 usual intercolumn space.              \\ \hlx{vhv.}
+% ">{"<text>"}" & Inserts \<text> just before the
+%                 actual column entry.                  \\ \hlx{.}
+% "<{"<text>"}" & Inserts \<text> just after the
+%                 actual column entry.                  \\ \hlx{.}
 % "?<{"<text>"}" & Inserts \<text> before the column
 %                 entry \emph{and} the rules list.*     \\ \hlx{.}
 % "?>{"<text>"}" & Inserts \<text> after the column
 %                 entry \emph{and} the rules list.*     \\ \hlx{vhv.}
 % "*{"<count>"}{"<chars>"}" & Inserts \<count>
-%                copies of the \<chars> into the
-%                preamble.                             \\ \hlx{vhs}
+%                 copies of the \<chars> into the
+%                 preamble.                             \\ \hlx{vhs}
 %
 % \multicolumn{2}{@{}l}{* This column type is a new feature}
 % \end{tabular}
 % separated list of column numbers and ranges:
 %
 % \begin{grammar}
-% <cline-cmd>  ::= \[[
+% <cline-cmd>   ::= \[[
 %   "\\cline"
 %   \[ "*" \] \\ \[ "[" <rule-params> "]" \]
 %   "{" \< <number> \[ "-" <number> \] \\ "," \> "}"
 %
 % \begin{grammar}
 %
-% <vgap-cmd>   ::= \[[
+% <vgap-cmd>    ::= \[[
 %   "\\vgap" \[ "[" <which-cols> "]" \] "{" <length> "}"
 % \]]
 %
-% <which-cols> ::= \[[ \< <number> \[ "-" <number> \] \\ "," \> \]]
+% <which-cols>  ::= \[[ \< <number> \[ "-" <number> \] \\ "," \> \]]
 %
 % \end{grammar}
 %
 % The syntax is simple:
 % \begin{grammar}
 %
-% <hlx-cmd>    ::= \[[
+% <hlx-cmd>     ::= \[[
 %   "\\hlx"
 %   \[ "*" \] \[ "[" <rule-params> "]" \]
 %   "{"
 %
 % \item [\lit*{z[}\<which-cols>\lit*{][}\<length>\lit*{]}]  Like \lit{v},
 %       except that the default gap is the current rule width (set by the
-%      \<rule-params>) rather than |\doublerulesep|.  This is a good thing
-%      to insert before a |\cline| row.
+%       \<rule-params>) rather than |\doublerulesep|.  This is a good thing
+%       to insert before a |\cline| row.
 %
 % \item [\lit*{s[}\<length>\lit*{]}]  Leaves a vertical gap with the
 %       given size.  If you omit the \<length> then |\doublerulesep| is
 % and tables look nicer.  They are all listed in table~\ref{tbl:config}.
 %
 % \begin{table}
-% \begin{tabular}[C]{| l | m{3in} |}                              \hlx{hv}
-% \bf Parameter                & \bf Meaning                           \\ \hlx{vhv}
-% |\tabstyle|          & A command executed at the beginning of
-%                        a \env{tabular} or \env{tabular$*$}
-%                        environment.  By default does nothing.
-%                        Change using |\renewcommand|.         \\ \hlx{vhv}
-% |\extrarowheight|    & A length added to the height of every
-%                        row, used to stop table rules
-%                        overprinting ascenders.  Default 0\,pt.
-%                        Usage is deprecated now: use |\hlx|
-%                        instead.                              \\ \hlx{vhv}
-% |\tabextrasep|       & Extra space added between rows in a
-%                        \env{tabular} or \env{tabular$*$}
-%                        environment (added \emph{before} any
-%                        following |\hline|).  Default 0\,pt.  \\
-% |\arrayextrasep|     & Analogous to |\tabextrasep|, but for
-%                        \env{array} environments.  Default
-%                        1\,jot (3\,pt).                       \\
-% |\smarrayextrasep|   & Analogous to |\tabextrasep|, but for
-%                        \env{smarray} environments.  Default
-%                        1\,pt.                                \\ \hlx{vhv}
-% |\tabcolsep|         & Space added by default on each side of
-%                        a table cell (unless suppressed by an
-%                        \lit{@}-expression) in \env{tabular}
-%                        environments.  Default is defined by
-%                        your document class.                  \\
-% |\arraycolsep|       & Analogous to |\tabcolsep|, but for
-%                        \env{array} environments.  Default is
-%                        defined by your document class.       \\
-% |\smarraycolsep|     & Analogous to |\tabcolsep|, but for
-%                        \env{smarray} environments.  Default
-%                        is 3\,pt.                             \\ \hlx{vhv}
-% |\arrayrulewidth|    & The width of horizontal and vertical
-%                        rules in tables.                      \\
-% |\arraythickrulewidth|& The width of starred rules in tables.        \\
-% |\doublerulesep|     & Space added between two adjacent
-%                        vertical or horizontal rules.  Also
-%                        used by |\hlx{v}|.                    \\ \hlx{vhv}
-% |\arraystretch|      & Command containing a factor to
-%                        multiply the default row height.
-%                        Default is defined by your document
-%                        class (usually 1).                    \\ \hlx{vh}
+% \begin{tabular}[C]{| l | m{3in} |}                               \hlx{hv}
+% \bf Parameter         & \bf Meaning                           \\ \hlx{vhv}
+% |\tabstyle|           & A command executed at the beginning of
+%                         a \env{tabular} or \env{tabular$*$}
+%                         environment.  By default does nothing.
+%                         Change using |\renewcommand|.         \\ \hlx{vhv}
+% |\extrarowheight|     & A length added to the height of every
+%                         row, used to stop table rules
+%                         overprinting ascenders.  Default 0\,pt.
+%                         Usage is deprecated now: use |\hlx|
+%                         instead.                              \\ \hlx{vhv}
+% |\tabextrasep|        & Extra space added between rows in a
+%                         \env{tabular} or \env{tabular$*$}
+%                         environment (added \emph{before} any
+%                         following |\hline|).  Default 0\,pt.  \\
+% |\arrayextrasep|      & Analogous to |\tabextrasep|, but for
+%                         \env{array} environments.  Default
+%                         1\,jot (3\,pt).                       \\
+% |\smarrayextrasep|    & Analogous to |\tabextrasep|, but for
+%                         \env{smarray} environments.  Default
+%                         1\,pt.                                \\ \hlx{vhv}
+% |\tabcolsep|          & Space added by default on each side of
+%                         a table cell (unless suppressed by an
+%                         \lit{@}-expression) in \env{tabular}
+%                         environments.  Default is defined by
+%                         your document class.                  \\
+% |\arraycolsep|        & Analogous to |\tabcolsep|, but for
+%                         \env{array} environments.  Default is
+%                         defined by your document class.       \\
+% |\smarraycolsep|      & Analogous to |\tabcolsep|, but for
+%                         \env{smarray} environments.  Default
+%                         is 3\,pt.                             \\ \hlx{vhv}
+% |\arrayrulewidth|     & The width of horizontal and vertical
+%                         rules in tables.                      \\
+% |\arraythickrulewidth|& The width of starred rules in tables. \\
+% |\doublerulesep|      & Space added between two adjacent
+%                         vertical or horizontal rules.  Also
+%                         used by |\hlx{v}|.                    \\ \hlx{vhv}
+% |\arraystretch|       & Command containing a factor to
+%                         multiply the default row height.
+%                         Default is defined by your document
+%                         class (usually 1).                    \\ \hlx{vh}
 % \end{tabular}
 %
 % \caption{Parameters for configuring table environments}
 % This implementation allows you to define lots of different sets of columns.
 % You can change the current set using the |\colset| declaration:
 % \begin{grammar}
-% <colset-cmd> ::= \[[ "\\colset" "{" <set-name> "}" \]]
+% <colset-cmd>  ::= \[[ "\\colset" "{" <set-name> "}" \]]
 % \end{grammar}
 % This leaves a problem, though: at any particular moment, the current
 % column set could be anything, since other macros and packages can change
 % previous current column set.
 %
 % \begin{grammar}
-% <colpush-cmd>        ::= \[[ "\\colpush" "{" <set-name> "}" \]]
-% <colpop-cmd> ::= \[[ "\\colpop" \]]
+% <colpush-cmd> ::= \[[ "\\colpush" "{" <set-name> "}" \]]
+% <colpop-cmd>  ::= \[[ "\\colpop" \]]
 % \end{grammar}
 %
 % The macros which manipulate the column set stack work \emph{locally}.
 % something lower-level.
 %
 % \begin{grammar}
-% <coldef-cmd> ::= \[[
+% <coldef-cmd>  ::= \[[
 %   "\\coldef"
 %     \[ "[" <set-name> "]" \]
 %     <col-name> <arg-template> "{" <replacement-text> "}"
 %
 % \begin{grammar}
 %
-% <collet-cmd> ::= \[[
+% <collet-cmd>  ::= \[[
 %   \[ "[" <set-name> "]" \] <col-name> \[ "=" \] \[ "[" <set-name> "]" \]
 %   <col-name>
 % \]]
 % using the |\tab@cr| command:
 %
 % \begin{grammar}
-% <tabcr-cmd>  ::= \[[
+% <tabcr-cmd>   ::= \[[
 %   "\\tab@cr" <command> "{" <non-star-text> "}" "{" <star-text> "}"
 % \]]
 % \end{grammar}
 %   \[ "[" \< <eqa-column> \> "]" \]
 % \]]
 %
-% <eqa-column> ::= \[[
+% <eqa-column>  ::= \[[
 %   \[ "q" \\ ":" \]
 %   \[ \< ">" "{" <pre-text> "}" \> \]
 %   \begin{stack}
 % table~\ref{tbl:eqnarray}.
 %
 % \begin{table}
-% \begin{tabular}[C]{| >{\synshorts} c | m{3in} |}        \hlx{hv[1]}
-%
-% \multicolumn{2}{|c|}{\bf Column types}               \\ \hlx{v[1]hv}
-% \bf Name     & \bf Meaning                           \\ \hlx{vhv.}
-% "l"          & Left aligned piece of equation.       \\ \hlx{.}
-% "c"          & Centred piece of equation.            \\ \hlx{.}
-% "x"          & Centred or flush-left whole equation
-%                (depending on \textsf{fleqn} option). \\ \hlx{.}
-% "r"          & Right aligned piece of equation.      \\ \hlx{vhv.}
-% "L"          & Left aligned piece of equation whose
-%                width is considered to be 2\,em.      \\ \hlx{vhv.}
+% \begin{tabular}[C]{| >{\synshorts} c | m{3in} |}         \hlx{hv[1]}
+%
+% \multicolumn{2}{|c|}{\bf Column types}                \\ \hlx{v[1]hv}
+% \bf Name      & \bf Meaning                           \\ \hlx{vhv.}
+% "l"           & Left aligned piece of equation.       \\ \hlx{.}
+% "c"           & Centred piece of equation.            \\ \hlx{.}
+% "x"           & Centred or flush-left whole equation
+%                 (depending on \textsf{fleqn} option). \\ \hlx{.}
+% "r"           & Right aligned piece of equation.      \\ \hlx{vhv.}
+% "L"           & Left aligned piece of equation whose
+%                 width is considered to be 2\,em.      \\ \hlx{vhv.}
 % "Tl", "Tc" and "Tr" & Left, centre and right aligned
-%                text.                                 \\ \hlx{vhhv[1]}
-%
-% \multicolumn{2}{|c|}{\bf Other modifier characters}  \\ \hlx{v[1]hv}
-% \bf Name     & \bf Meaning                           \\ \hlx{vhv.}
-% ":"          & Leaves a big gap between equations.
-%                By default, the `chunks' separated by
-%                \lit{:}s are equally spaced on the
-%                line.                                 \\ \hlx{.}
-% "q"          & Inserts 1\,em of space                \\ \hlx{vhv.}
-% ">{"<text>"}"        & Inserts \<text> just before the
-%                actual column entry.                  \\ \hlx{.}
-% "<{"<text>"}"        & Inserts \<text> just after the
-%                actual column entry.                  \\ \hlx{vhv.}
+%                 text.                                 \\ \hlx{vhhv[1]}
+%
+% \multicolumn{2}{|c|}{\bf Other modifier characters}   \\ \hlx{v[1]hv}
+% \bf Name      & \bf Meaning                           \\ \hlx{vhv.}
+% ":"           & Leaves a big gap between equations.
+%                 By default, the `chunks' separated by
+%                 \lit{:}s are equally spaced on the
+%                 line.                                 \\ \hlx{.}
+% "q"           & Inserts 1\,em of space                \\ \hlx{vhv.}
+% ">{"<text>"}" & Inserts \<text> just before the
+%                 actual column entry.                  \\ \hlx{.}
+% "<{"<text>"}" & Inserts \<text> just after the
+%                 actual column entry.                  \\ \hlx{vhv.}
 % "*{"<count>"}{"<chars>"}" & Inserts \<count>
-%                copies of the \<chars> into the
-%                preamble.                             \\ \hlx{vh}
+%                 copies of the \<chars> into the
+%                 preamble.                             \\ \hlx{vh}
 % \end{tabular}
 %
 % \caption{\package{eqnarray} column types and modifiers}
 %
 % \begin{demo}[w]{Lots of equations}
 %\begin{eqnarray}[rl:rl:lq]
-% V_i &= v_i - q_i v_j,        & X_i &= x_i - q_i x_j, &
+% V_i &= v_i - q_i v_j, & X_i &= x_i - q_i x_j, &
 %       U_i = u_i, \qquad \mbox{for $i \ne j$}  \\
 % V_j &= v_j,           & X_j &= x_j            &
 %       U_j u_j + \sum_{i \ne j} q_i u_i. \label{eq:A}
 % you like them.  These are all shown in table~\ref{tbl:eqnparms}.
 %
 % \begin{table}
-% \begin{tabular}[C]{| l | p{3in} |}                              \hlx{hv}
-% \bf Parameter                & \bf Use                               \\ \hlx{vhv}
-% |\eqaopenskip|       & Length put on the left of an
-%                        \env{eqnarray} environment.  By
-%                        default, this is |\@centering| (to
-%                        centre the alignment) or |\mathindent|
-%                        (to left align) depending on whether
-%                        you're using the \textsf{fleqn}
-%                        document class option.                \\
-% |\eqacloseskip|      & Length put on the right of an
-%                        \env{eqnarray} environment.  By
-%                        default, this is |\@centering|, to
-%                        align the environment correctly.      \\ \hlx{vhv}
-% |\eqacolskip|                & Space added by the \lit{:} column
-%                        modifier.  This should be a rubber
-%                        length, although it only stretches in
-%                        \env{eqnarray}, not in \env{eqnalign}.
-%                        The default value is 1\smallf1/2\,em
-%                        with 1000\,pt of stretch.             \\
-% |\eqainskip|         & Space added at each side of a normal
-%                        column.  By default this is 0\,pt.    \\ \hlx{vhv}
-% |\eqastyle|          & The maths style used in the alignment.
-%                        By default, this is |\textstyle|,
-%                        and you probably won't want to change
-%                        it.                                   \\ \hlx{vh}
+% \begin{tabular}[C]{| l | p{3in} |}                               \hlx{hv}
+% \bf Parameter         & \bf Use                               \\ \hlx{vhv}
+% |\eqaopenskip|        & Length put on the left of an
+%                         \env{eqnarray} environment.  By
+%                         default, this is |\@centering| (to
+%                         centre the alignment) or |\mathindent|
+%                         (to left align) depending on whether
+%                         you're using the \textsf{fleqn}
+%                         document class option.                \\
+% |\eqacloseskip|       & Length put on the right of an
+%                         \env{eqnarray} environment.  By
+%                         default, this is |\@centering|, to
+%                         align the environment correctly.      \\ \hlx{vhv}
+% |\eqacolskip|         & Space added by the \lit{:} column
+%                         modifier.  This should be a rubber
+%                         length, although it only stretches in
+%                         \env{eqnarray}, not in \env{eqnalign}.
+%                         The default value is 1\smallf1/2\,em
+%                         with 1000\,pt of stretch.             \\
+% |\eqainskip|          & Space added at each side of a normal
+%                         column.  By default this is 0\,pt.    \\ \hlx{vhv}
+% |\eqastyle|           & The maths style used in the alignment.
+%                         By default, this is |\textstyle|,
+%                         and you probably won't want to change
+%                         it.                                   \\ \hlx{vh}
 % \end{tabular}
 %
 % \caption{Parameters for the \env{eqnarray} and \env{eqnalign} environments}
 %
 % \begin{grammar}
 %
-% <matrix-env> ::= \[[ <begin-matrix> <contents> <end-matrix> \]]
+% <matrix-env>  ::= \[[ <begin-matrix> <contents> <end-matrix> \]]
 %
 % <begin-matrix> ::= \[[ "\\begin{matrix}" \[ "[" <matrix-cols> "]" \] \]]
 %
-% <matrix-cols>        ::= \[[
+% <matrix-cols> ::= \[[
 %   \< \[ "[" \] \[ "T" \] \( "l" \\ "c" \\ "r" \) \>
 % \]]
 %
-% <end-matrix> ::= \[[ "\\end{stack}" \]]
+% <end-matrix>  ::= \[[ "\\end{stack}" \]]
 %
 % \end{grammar}
 %
 % {\bf while} $\it tab\_state \ne s$ {\bf do} \\
 % \qq $\mathit{tab\_state = tab\_state}+1$; \\
 % \qq {\bf if} $\it tab\_state = tab\_limitState$ {\bf then}
-%                              $\it tab\_state=tab\_loopState$; \\
+%                               $\it tab\_state=tab\_loopState$; \\
 % \qq {\bf if} $\it tab\_state = tab\_preSpcState$ {\bf then} \\
 % \qq \qq {\bf if} $\it tab\_initRule$ {\bf then} \\
 % \qq \qq \qq $\it tab\_initRule = {\bf false}$; \\
 % \qq \qq {\bf end\,if}; \\
 % \qq {\bf end\,if}; \\
 % \qq {\bf if} $\it tab\_state \ne s$ {\bf then}
-%                              $\it do\_default(tab\_state)$; \\
+%                               $\it do\_default(tab\_state)$; \\
 % {\bf end\,while};
 % \end{quote}
 %
 %       Computer Programming} use the little `stub lines' to show where
 %       data items cross byte boundaries:
 %
-%      ^^A This actually looks terrifyingly similar to the original.
-%      ^^A The leading @{} is there to stop the table looking off-centre,
-%      ^^A because there's no left hand rule telling you where the table
-%      ^^A starts, like there is on the right, just the \tabcolsep glue.
-%
-%      \begingroup
-%      \newcommand{\wide}[2]{\multicolumn{#1}{c|}{\ttfamily #2}}
-%      \begin{tabular}[C]{@{} r @{\qquad} | Mc | *{5}{c|}} \hlx{c{2-7} v}
-%          empty & - & 1 & 0 & 0 & 0 & 0               \\ \hlx{v c{2-7} v}
-%      occupied & + & \wide{2}{LINK} & \wide{3}{KEY}   \\ \hlx{v c{2-7}}
-%      \end{tabular}
-%      \endgroup
+%       ^^A This actually looks terrifyingly similar to the original.
+%       ^^A The leading @{} is there to stop the table looking off-centre,
+%       ^^A because there's no left hand rule telling you where the table
+%       ^^A starts, like there is on the right, just the \tabcolsep glue.
+%
+%       \begingroup
+%       \newcommand{\wide}[2]{\multicolumn{#1}{c|}{\ttfamily #2}}
+%       \begin{tabular}[C]{@{} r @{\qquad} | Mc | *{5}{c|}} \hlx{c{2-7} v}
+%          empty & - & 1 & 0 & 0 & 0 & 0                \\ \hlx{v c{2-7} v}
+%       occupied & + & \wide{2}{LINK} & \wide{3}{KEY}   \\ \hlx{v c{2-7}}
+%       \end{tabular}
+%       \endgroup
 %
 % \end{itemize}
 %