diff options
Diffstat (limited to 'obsolete/macros/inrstex/inrstex/tables.tex')
-rw-r--r-- | obsolete/macros/inrstex/inrstex/tables.tex | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/obsolete/macros/inrstex/inrstex/tables.tex b/obsolete/macros/inrstex/inrstex/tables.tex new file mode 100644 index 0000000000..144169e9a2 --- /dev/null +++ b/obsolete/macros/inrstex/inrstex/tables.tex @@ -0,0 +1,106 @@ +%-*-tex-*- +% Copyright Michael J. Ferguson, INRS-Telecommunications +% All rights reserved. +% \left and \right redefined to remove primitive conflict MJF Oct 87 + + +%============= Table making macros ============ +% the basic format is +% \begintable +% <special definitions for this table> +% \table format <format as in halign except it needs ## instead of #> +% \br{<struts>} .... | .... | .... " ..... | .... \er{<stuff>} +% \- +% ....etc + +% these macros require that | and " be active during the entire +% document to work correctly. ... although some definitions specifically +% set them active +\newcount\a@lignstate \a@lignstate=0 %0 -- between lines after \cr + %1 -- beginning of line in \bl + %2 -- midline + %3 -- endline in \el +\def\hssf{\hskip 0pt plus 1fill minus 1fill\relax} +\def\n@ewaligndefs{\def\center##1{\hssf ##1\hssf\null} + \def\left##1{\ifmmode\l@f##1\else##1\hssf\null\fi} + \def\right##1{\ifmmode\r@t##1\else\hssf ##1\null\fi}} +\def\s@avelr{\let\l@f=\left\let\r@t=\right} +\newdimen\trulesize +\let\tr=\trulesize +\trulesize = .4pt +\def\zerocenteredbox#1{\ifmmode \ifinner \setbox2 =\hbox{$#1$}\else + \setbox2 =\hbox{$\displaystyle#1$}\fi + \else \setbox2 =\hbox{#1}\fi + \setbox0=\hbox{\lower.5ex\hbox{$\vcenter{\box2}$}}\ht0=0pt\dp0 =0pt\box0} +\let\zb=\zerocenteredbox + +%this macro creates a strut with the that is higher by #2 and deeper than #3 +% than the natural size of #1 ... the sizes may be negative +\def\modifystrut#1#2#3{\setbox4=\hbox{#1}\dimen0=\ht4 + \advance \dimen0 by #2 \dimen2 = \dp4 + \advance \dimen2 by #3 + \vrule width 0pt height \dimen0 depth \dimen2} +\let\mst=\modifystrut +%general math form +\def\math#1{\relax $\relax#1\relax$} +\def\displaymath #1{\relax$\displaystyle #1\relax$} + + +% +\newskip\tcs +\newtoks\tablespread +\newskip\midtabglue \midtabglue = 0pt plus 1fill +\newtoks\everytable \everytable = {\relax} + +{\catcode`\|=\active \catcode`\" = \active + \gdef\begintable{\vbox\bgroup \s@avelr \tcs=.5em % uses font in force when entering + \catcode`\|=\active + \catcode`\"=\active + \def\:{\relax \vrule height 2.5ex depth .9ex width 0pt} + \def\-{\ifcase\a@lignstate \fulltablerule{\tr} + \else + \thrule{\tr}\fi} + \let\t@xx =\relax % for premature expansions + \everycr={\noalign{\global\a@lignstate=0}} + \def\fulltablerule##1{\noalign{\hrule height + ##1}} + \def\thrule##1{\omit\leaders\hrule height ##1\hfill} + \def\center{\hskip\tcs\hss ########\hss\hskip\tcs} + \def\left{\hskip\tcs ########\hss\hskip\tcs} + \def\right{\hskip\tcs\hss ########\hskip\tcs} + \def\sprule{\tvrule{2.5\tr}} + \def|{\ifcase\a@lignstate \def\t@xx{\tvrule{\tr}}\or + \def\t@xx{\tvrule{\tr}}\or + \def\t@xx{\unskip&\tvrule{\tr}&}\else + \def\t@xx{\tvrule{\tr}}\fi\t@xx} + \def\|{\ifcase\a@lignstate \def\t@xx{\sprule}\or + \def\t@xx{\sprule}\or + \def\t@xx{\unskip&\sprule&}\else + \def\t@xx{\sprule}\fi\t@xx} + \def"{&########&} % for table format + \def\br##1{\global\a@lignstate=1 ##1\unskip\global\a@lignstate=2&} + \def\er##1{\global\a@lignstate=3\unskip&##1\unskip + \global\a@lignstate=0\cr} + \def\tvrule##1{\hss\vrule width ##1\hss} + \def~{\penalty\@M \hphantom{0}} % changes ~ to be phantom of width .5em + \tablespread = {} + \the\everytable + } + \gdef\begintableformat #1\endtableformat{\offinterlineskip \tabskip = 0pt + \edef\t@blform{####\tabskip =\midtabglue &####\tabskip=0pt\cr} %adds rules front and back + \n@ewaligndefs + \def"{\ifcase\a@lignstate \def\t@xx{\relax}\or + \def\t@xx{\relax}\or + \def\t@xx{\unskip&&}\else + \def\t@xx{\relax}\fi\t@xx} + \edef\h@align{\halign \the\tablespread} + \h@align\bgroup\span\t@blform} + }% " and | are always active in INRSTEX + +\def\use#1{\omit\mscount=#1 \advance\mscount by -1\multiply\mscount by2 + \loop\ifnum\mscount>1 \sp@n\repeat + \ifnum\mscount>0 \span \else \relax \fi} +\let\sp=\span +\let\om = \omit +\def\sa#1{\setbox0=\hbox{#1}\hbox to \wd0{}} +\def\endtable{\crcr\egroup\egroup} |