X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/89092cc1f7b225d6caa59f2c10e7126009b0df02..e048fa5955190d01ea6069e0d0705279108b6851:/doc/sod.sty diff --git a/doc/sod.sty b/doc/sod.sty index 4d50de9..4d2f407 100644 --- a/doc/sod.sty +++ b/doc/sod.sty @@ -386,25 +386,33 @@ #1{setf}{#2}{#3}{#5}{#4}} %% \dhead[MOD]{CAT}{...}...[NAME]{SYNOPSIS} +%% \dhead*[MOD]{CAT}{...}...[NAME]{SYNOPSIS} %% %% Typeset a description head. Use this within the first argument of %% `describe*'; see `describe' for the details. +%% +%% With `*', don't set labels or add items to the index. \newif\if@dheadfirst -\def\dhead{\parse@dhd\dhead@} +\newif\if@dheadindex +\def\dhead{\@ifstar% + {\parse@dhd{\global\@dheadindexfalse\dhead@}}% + {\parse@dhd{\global\@dheadindextrue\dhead@}}} \def\dhead@#1#2#3#4#5{% {MOD}{CAT}{{...}...}{NAME}{SYNOPSIS} \if@dheadfirst\global\@dheadfirstfalse\else\relax\\*[\smallskipamount]\fi% - \phantomsection% - {\let\protect\@empty\let\@uscore\relax% - \edef\temp@{\@desc@dispatch{desclabel}{#2}{#1}{#2}#3{#4}}% - \def\@uscore{_\@gobble}\expandafter\message\expandafter{\temp@}% - \def\@uscore{-\@gobble}\expandafter\label\expandafter{\temp@}}% - {\begingroup\lccode`\~=`\_\lowercase{\endgroup\def~{_}}% - \protected@edef\@tempa##1{% - \noexpand\index{\@desc@dispatch{descindex}{#2}{#1}{#2}#3{#4}##1}}% - \toks@\expandafter{\@tempa{|)}}% - \toks\tw@\expandafter{\after@desc}% - \xdef\after@desc{\the\toks\tw@\the\toks@}% - \@tempa{|(}}% + \if@dheadindex% + \phantomsection% + {\let\protect\@empty\let\@uscore\relax% + \edef\temp@{\@desc@dispatch{desclabel}{#2}{#1}{#2}#3{#4}}% + \def\@uscore{_\@gobble}\expandafter\message\expandafter{\temp@}% + \def\@uscore{-\@gobble}\expandafter\label\expandafter{\temp@}}% + {\begingroup\lccode`\~=`\_\lowercase{\endgroup\def~{_}}% + \protected@edef\@tempa##1{% + \noexpand\index{\@desc@dispatch{descindex}{#2}{#1}{#2}#3{#4}##1}}% + \toks@\expandafter{\@tempa{|)}}% + \toks\tw@\expandafter{\after@desc}% + \xdef\after@desc{\the\toks\tw@\the\toks@}% + \@tempa{|(}}% + \fi% \rlap{\hb@xt@\linewidth{\hfil\normalfont\bfseries [\describecategoryname[#1]{#2}]}}% #5% @@ -454,7 +462,10 @@ %% %% * `:NAME': defaults MOD to `kwd'. \def\describe{\parse@dhd\desc@} -\def\desc@#1#2#3#4#5{\desc@begin{\dhead@{#1}{#2}{#3}{#4}{#5}}} +\def\desc@#1#2#3#4#5{% + \global\@dheadindextrue% + \desc@begin{\dhead@{#1}{#2}{#3}{#4}{#5}}% +} \let\enddescribe\desc@end %% \begin{describe*} @@ -532,6 +543,47 @@ \endgroup% } +%% \descindex[MOD]{CAT}{...}...{LABEL}[SUFFIX] +%% +%% Set a label and index entry here, as if for a description. The CAT names +%% the category of thing being described, and the LABEL names the specific +%% thing, as for `\descref'. The {...}... are any additional arguments +%% required by the category's kind (e.g., method specializers). The MOD is +%% the modifier to apply; see `\descref' for the details. +%% +%% The SUFFIX is appended to the index-entry text; by default it is empty. +%% Useful values are `|(' and `|)' to set ranges. +\def\descindex{\parse@dlbl\descindex@i} +\def\descindex@i#1#2#3#4{\@ifnextchar[% + {\descindex@ii{#1}{#2}{#3}{#4}}% + {\descindex@ii{#1}{#2}{#3}{#4}[]}} +\def\descindex@ii#1#2#3#4[#5]{% + {\begingroup\lccode`\~=`\_\lowercase{\endgroup\def~{_}}% + \protected@edef\@tempa{% + \noexpand\index{\@desc@dispatch{descindex}{#2}{#1}{#2}#3{#4}#5}}% + \@tempa}% +} + +%% \desclabel[MOD]{CAT}{...}...{LABEL}[INDEX-SUFFIX] +%% +%% Set a label and index entry here, as if for a description. The CAT names +%% the category of thing being described, and the LABEL names the specific +%% thing, as for `\descref'. The {...}... are any additional arguments +%% required by the category's kind (e.g., method specializers). The MOD is +%% the modifier to apply; see `\descref' for the details. +%% +%% This will also add an index entry, as for `\descindex'; the INDEX-SUFFIX +%% argument has the same effect as its SUFFIX argument. +\def\desclabel{\parse@dlbl\desclabel@i} +\def\desclabel@i#1#2#3#4{% + \begingroup% + \let\protect\@empty\def\@uscore{-\@gobble}% + \edef\@tempa{\@desc@dispatch{desclabel}{#2}{#1}{#2}#3{#4}}% + \phantomsection\label{\@tempa}% + \endgroup% + \descindex@i{#1}{#2}{#3}{#4}% +} + %% Description categories. \definedescribecategory{sym}{symbol} \definedescribecategory{fun}{#1{function}}