X-Git-Url: https://git.distorted.org.uk/~mdw/mdwtools/blobdiff_plain/55ed6c023fb385f6072b90c4219040ec0d4cd588..6a1388ae98e3c04d9d0bf4d99249b228a7934bd9:/mdwtab.dtx diff --git a/mdwtab.dtx b/mdwtab.dtx index 15e2988..d011bdd 100644 --- a/mdwtab.dtx +++ b/mdwtab.dtx @@ -44,7 +44,7 @@ %<+color> [2003/08/24 1.10 Fix for people who can't spell] % \end{meta-comment} % -% \CheckSum{3402} +% \CheckSum{3424} %% \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 @@ -370,7 +370,9 @@ % "?>{""}" & Inserts \ before the column % entry \emph{and} the rules list.* \\ \hlx{.} % "?<{""}" & Inserts \ after the column -% entry \emph{and} the rules list.* \\ \hlx{vhv.} +% entry \emph{and} the rules list.* \\ \hlx{.} +% "'{""}" & Inserts \ into the rules list +% only.* \\ \hlx{vhv.} % "*{""}{""}" & Inserts \ % copies of the \ into the % preamble. \\ \hlx{vhs} @@ -1201,9 +1203,9 @@ % \end{demo} % % -% \subsection{The \env{mathenv} package alignment environments} +% \subsection{The \package{mathenv} package alignment environments} % -% The \env{mathenv} package provides several environments for aligning +% The \package{mathenv} package provides several environments for aligning % equations in various ways. They're mainly provided as a demonstration of % the table handling macros in \package{mdwtab}, so don't expect great % things. If you want truly beautiful mathematics, use @@ -2717,6 +2719,9 @@ {#2}% \tab@append\tab@shortline{#2}% } +\coldef '#1{% + \tab@append\tab@shortline{#1}% +} % \end{macrocode} % % The strange column type. @@ -2725,16 +2730,30 @@ \coldef ##1#2{\tabcoltype{#1}{#2}} % \end{macrocode} % -% And \lit{*}, which repeats a preamble spec. This is really easy, and not -% at all like the original one. +% And \lit{*}, which repeats a preamble spec. The tricky part is ensuring +% that nested \lit{*} specs work correctly: we must save the loop counter, in +% |\count 0|, obviously, but \emph{also} the |\iterate| macro built which +% |\loop| modifies internally. Usually you'd use grouping to fix this, but +% if we introduce a group level then we won't update the preamble registers +% correctly. Instead, queue up tokens to restore the values in \TeX's input +% list. % % \begin{macrocode} \coldef *#1#2{% - \count@#1% - \loop\ifnum\count@>0\relax% - \tab@doreadpream{#2}% - \advance\count@\m@ne% - \repeat% + \toks\tw@\expandafter{\iterate}% + \toks@{% + \count@#1% + \loop\ifnum\count@>0\relax% + \tab@doreadpream{#2}% + \advance\count@\m@ne% + \repeat% + }% + \edef\@tempa{% + \the\toks@% + \def\noexpand\iterate{\the\toks\tw@}% + \count@\the\count@% + }% + \@tempa% } % \end{macrocode} %