X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/19a890755c41015df023f1f42ada443568d45386..630d9305b266dcf14f216513c461fa9f66e798a3:/doc/sod.sty diff --git a/doc/sod.sty b/doc/sod.sty index d9cfabc..457dcad 100644 --- a/doc/sod.sty +++ b/doc/sod.sty @@ -28,6 +28,8 @@ %% More reference types. \defxref{p}{part} +\def\instead#1#2{#1} + %% Other languages with special typesetting. \def\Cplusplus{C\kern-\p@++} \def\Csharp{C\#} @@ -189,7 +191,7 @@ \expandafter\let\expandafter\@tempa\csname cat!#2\endcsname% \expandafter\let\expandafter\@tempb\csname modcat/#1\endcsname% \ifx\@tempa\relax\@tempb{#2}\else\@tempa\@tempb\fi} -\def\@maybe@modlabel#1#2{\if!#1!\else#1/\fi#2} +\def\@mod@dispatch#1#2{\csname #1/#2\endcsname} \def\@desc@dispatch#1#2{% \csname #1/% \expandafter\ifx\csname catsw!#2\endcsname\relax plain% @@ -222,20 +224,33 @@ \def\nlret{\\\hspace{4em}\returns} \@namedef{modcat/}#1{#1} +\@namedef{modlabel/}#1{#1} +\@namedef{modindex/}#1{#1@\noexpand\code{#1}} \@namedef{modcat/setf}#1{\code{setf}-#1} +\@namedef{modlabel/setf}#1{setf/#1} +\@namedef{modindex/setf}#1{#1@\noexpand\code{#1}} + +\@namedef{modcat/muffs}#1{#1} +\@namedef{modlabel/muffs}#1{*#1*} +\@namedef{modindex/muffs}#1{#1@\noexpand\code{*#1*}} + +\@namedef{modcat/kwd}#1{#1} +\@namedef{modlabel/kwd}#1{:#1} +\@namedef{modindex/kwd}#1{#1@\noexpand\code{:#1}} \@namedef{descargs/plain}#1{#1{}} -\@namedef{desclabel/plain}#1#2#3{#1:\@maybe@modlabel{#2}{#3}} +\@namedef{desclabel/plain}#1#2#3{#1:\@mod@dispatch{modlabel}{#2}{#3}} \@namedef{descindex/plain}#1#2#3{% - #3@\noexpand\code{#3}!% + \@mod@dispatch{modindex}{#2}{#3}!% \protect\describecategoryname[#2]{#1}% } \@namedef{descargs/method}#1#2{#1{{#2}}} -\@namedef{desclabel/method}#1#2#3#4{#1:\@maybe@modlabel{#2}{#3}(#4)} +\@namedef{desclabel/method}#1#2#3#4% + {#1:\@mod@dispatch{modlabel}{#2}{#3}(#4)} \@namedef{descindex/method}#1#2#3#4{% - #3@\noexpand\code{#3}!% + \@mod@dispatch{modindex}{#2}{#3}!% \protect\describecategoryname[#2]{#1}% \protect\fmtspecs{ specialized at }{#4}% } @@ -266,6 +281,7 @@ %% call NEXT{MOD}{CAT}{{...}...}{NAME}{SYNOPSIS} %% #1 #2 #3 #4 #5 \def\@setf{setf} +\def\@starstar{**} \def\parse@dhd#1{% {NEXT} \@ifnextchar[{\parse@dhd@a{#1}}{\parse@dhd@c{#1}}} \def\parse@dhd@a#1[#2]#3{% {NEXT}[MOD]{CAT} @@ -292,12 +308,22 @@ % {NEXT}{CAT}{{...}...}{SYNOPSIS}NAME [ARGS...]\q@ \def\temp@{#5}% \ifx\@setf\temp@\def\next@{\parse@dhd@csetf{#1}{#2}{#3}{#4}#6 \q@}% - \else\def\next@{#1{}{#2}{#3}{#5}{#4}}\fi% + \else\def\temp@##1##2*##3\q@{\def\temp@{##1##3}}\temp@#5*\q@% + \ifx\temp@\@starstar\def\next@{\parse@dhd@cmuffs{#1}{#2}{#3}{#4}#5}% + \else\def\temp@##1##2\q@{\def\temp@{##1}}\temp@#5\q@% + \if:\temp@\def\next@{\parse@dhd@ckwd{#1}{#2}{#3}{#4}#5\q@}% + \else\def\next@{#1{}{#2}{#3}{#5}{#4}}\fi\fi\fi% \next@% } \def\parse@dhd@csetf#1#2#3#4(#5 #6\q@{% % {NEXT}{CAT}{{...}...}{SYNOPSIS}(NAME [ARGS...])\q@ #1{setf}{#2}{#3}{#5}{#4}} +\def\parse@dhd@cmuffs#1#2#3#4*#5*{% + % {NEXT}{CAT}{{...}...}{SYNOPSIS}*NAME* + #1{muffs}{#2}{#3}{#5}{#4}} +\def\parse@dhd@ckwd#1#2#3#4:#5\q@{% + % {NEXT}{CAT}{{...}...}{SYNOPSIS}:NAME\q@ + #1{kwd}{#2}{#3}{#5}{#4}} \newif\if@dheadfirst \def\dhead{\parse@dhd\dhead@} @@ -345,10 +371,16 @@ \def\descref#1{\@ifnextchar[{\descref@i{#1}}{\descref@ii{#1}{}}} \def\descref@i#1[#2]{\descref@ii{#1}{ #2}} \def\descref@ii#1#2#3{% - \code{#1}#2 (page~% - {\let\protect\@empty% - \def\@uscore{-\@gobble}\edef\@tempa{\noexpand\pageref{#3:#1}}\@tempa}% - )% + \begingroup% + \let\protect\@empty% + \def\@uscore{-\@gobble}% + \edef\@tempa##1{% + \endgroup% + \noexpand\hyperref[#3:#1]% + ##1% + \noexpand\autopageref{#3:#1}% + }% + \@tempa{{\code{#1}}#2 (})% } %%%----- That's all, folks --------------------------------------------------