X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/a588c77a273681e3cdc85d15fc44f3ddb7da9224..95346c389d6343009410e4d5541eb03d3f1fef59:/doc/sod.sty diff --git a/doc/sod.sty b/doc/sod.sty index 2894feb..56fc726 100644 --- a/doc/sod.sty +++ b/doc/sod.sty @@ -41,6 +41,16 @@ \let\implies\Rightarrow \let\epsilon\varepsilon +%% A table heading cell. Clone and hack \multicolumn. +\def\thd{\omit\@ifnextchar[\thd@{\thd@[l]}} +\def\thd@[#1]#2{% + \begingroup + \tab@multicol \tab@initread \let\tab@looped\tab@err@multi + \tab@preamble{}\def\tab@midtext{\bfseries#2}\tab@readpreamble{#1}% + \the\tab@preamble + \endgroup \ignorespaces +} + %% Unix manpage references. \def\man#1#2{\textbf{#1}(#2)} @@ -117,6 +127,7 @@ %% Put a chunk of text in a box. \newenvironment{boxy}[1][\q@]{% + \savenotes \dimen@\linewidth\advance\dimen@-1.2pt\advance\dimen@-2ex% \medskip% \vbox\bgroup\hrule\hbox\bgroup\vrule% @@ -126,6 +137,7 @@ \endminipage\hskip1ex\egroup\vskip1ex\egroup% \vrule\egroup\hrule\egroup% \medskip% + \spewnotes% } %% Lisp documentation machinery. @@ -133,40 +145,61 @@ \def\describecategoryname#1{% \expandafter\let\expandafter\@tempa\csname cat!#1\endcsname% \ifx\@tempa\relax#1\else\@tempa\fi} +\definedescribecategory{sym}{symbol} \definedescribecategory{fun}{function} \definedescribecategory{gf}{generic function} \definedescribecategory{var}{variable} \definedescribecategory{const}{constant} \definedescribecategory{meth}{primary method} -\definedescribecategory{ar-meth}{around-method} -\definedescribecategory{be-meth}{before-method} -\definedescribecategory{af-meth}{after-method} +\definedescribecategory{ar-meth}{around method} +\definedescribecategory{be-meth}{before method} +\definedescribecategory{af-meth}{after method} \definedescribecategory{cls}{class} \definedescribecategory{ty}{type} \definedescribecategory{mac}{macro} +\definedescribecategory{lmac}{local macro} +\definedescribecategory{parse}{parser spec} +\definedescribecategory{parseform}{parser form} +\definedescribecategory{opt}{option handler} +\definedescribecategory{optmac}{option macro} \def\nlret{\\\hspace{4em}\returns} \def\q@{\q@} -\newenvironment{describe}[3][\q@]{% +\def\parse@dhd#1{\@ifnextchar[{\parse@dhd@a{#1}}{\parse@dhd@c{#1}}} +\def\parse@dhd@a#1[#2]{#1{#2}} +\def\parse@dhd@c#1#2#3{\parse@dhd@cc{#1}{#2}{#3}#3 \q@} +\def\parse@dhd@cc#1#2#3#4 #5\q@{#1{#4}{#2}{#3}} + +\newif\if@dheadfirst +\def\dhead{\parse@dhd\dhead@} +\def\dhead@#1#2#3{% + \if@dheadfirst\global\@dheadfirstfalse\else\relax\\[\smallskipamount]\fi% + {\let\protect\@empty\def\@uscore{_\@gobble}\message{#2:#1}% + \def\@uscore{-\@gobble}\edef\@tempa{\noexpand\label{#2:#1}}\@tempa}% + \rlap{\rightline{\normalfont\bfseries[\describecategoryname{#2}]}}% + #3% +} + +\def\desc@begin#1{% \normalfont% - \par\goodbreak% - \vspace{\bigskipamount}% - \setbox\z@\hbox{\bfseries[\describecategoryname{#2}]}% - \dimen@\linewidth\advance\dimen@-\wd\z@% - \def\@temp##1 ##2\q@{% - \message{#2:##1}% - {\def\@uscore####1{-}\edef\@tempb{\noexpand\label{#2:##1}}\@tempb}% - }% - \def\@tempa{#1}\ifx\@tempa\q@\@temp#3 \q@\else\@temp{#1} \q@\fi% - \edef\@temp{{\the\linewidth}{@{}p{\the\dimen@}% - @{\extracolsep{\fill}}l@{\extracolsep{0pt}}}}% - \noindent\csname tabular*\expandafter\endcsname\@temp% - \tabbing\codeface#3\endtabbing&\unhbox\z@\\\endtabular% -% \@afterheading% - \list{}{\rightmargin\z@}\item% -}{% - \endlist% + \if@nobreak\else\par\goodbreak\fi% + \global\@dheadfirsttrue% + \begingroup% + \codeface% + \let\@endparenv\relax% + \clubpenalty\@M \widowpenalty\@M \interlinepenalty50% + \tabbing#1\endtabbing% + \endgroup% + \penalty\@M\@afterheading% + \list{}{\rightmargin\z@\topsep\z@}\item% } +\let\desc@end\endlist + +\@namedef{describe*}#1{\desc@begin{#1}} +\expandafter\let\csname enddescribe*\endcsname\desc@end +\def\describe{\parse@dhd\desc@} +\def\desc@#1#2#3{\desc@begin{\dhead@{#1}{#2}{#3}}} +\let\enddescribe\desc@end -%%% ----- That's all, folks -------------------------------------------------- -\endinput \ No newline at end of file +%%%----- That's all, folks -------------------------------------------------- +\endinput