doc/sod.sty: Rename `descmod' to `modcat'.
[sod] / doc / sod.sty
index 43b77cc..d9cfabc 100644 (file)
 \def\describecategoryname{\@ifnextchar[\@descname@i{\@descname@i[]}}
 \def\@descname@i[#1]#2{%
   \expandafter\let\expandafter\@tempa\csname cat!#2\endcsname%
-  \expandafter\let\expandafter\@tempb\csname descmod/#1\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\@desc@dispatch#1#2{%
+  \csname #1/%
+  \expandafter\ifx\csname catsw!#2\endcsname\relax plain%
+  \else \csname catsw!#2\endcsname \fi%
+  \endcsname%
+}
 
 \definedescribecategory{sym}{symbol}
 \definedescribecategory{fun}{#1{function}}
 \definedescribecategory{plug}{pluggable parser}
 \def\nlret{\\\hspace{4em}\returns}
 
-\@namedef{descmod/}#1{#1}
+\@namedef{modcat/}#1{#1}
 
-\@namedef{descmod/setf}#1{\code{setf}-#1}
+\@namedef{modcat/setf}#1{\code{setf}-#1}
 
 \@namedef{descargs/plain}#1{#1{}}
 \@namedef{desclabel/plain}#1#2#3{#1:\@maybe@modlabel{#2}{#3}}
   \protect\fmtspecs{ specialized at }{#4}%
 }
 
-\def\@desc@dispatch#1#2{%
-  \csname #1/%
-  \expandafter\ifx\csname catsw!#2\endcsname\relax plain%
-  \else \csname catsw!#2\endcsname \fi%
-  \endcsname%
-}
-
 \def\q@{\q@}
 \def\@setf{setf}
 
   \fi%
 }
 
-%% \parse@dhd{NEXT}{CAT}{...}...[NAME]{SYNOPSIS}
+%% \parse@dhd{NEXT}[MOD]{CAT}{...}...[NAME]{SYNOPSIS}
 %% call NEXT{MOD}{CAT}{{...}...}{NAME}{SYNOPSIS}
 %%            #1   #2      #3     #4      #5
-\def\parse@dhd#1#2{%  {NEXT}{CAT}
+\def\@setf{setf}
+\def\parse@dhd#1{%  {NEXT}
+  \@ifnextchar[{\parse@dhd@a{#1}}{\parse@dhd@c{#1}}}
+\def\parse@dhd@a#1[#2]#3{%  {NEXT}[MOD]{CAT}
+  \@desc@dispatch{descargs}{#3}{\parse@dhd@ab{#1}{#2}{#3}}}
+\def\parse@dhd@ab#1#2#3#4{%  {NEXT}{MOD}{CAT}{{...}...}
+  \@ifnextchar[{\parse@dhd@ac{#1}{#2}{#3}{#4}}{\parse@dhd@ad{#1}{#2}{#3}{#4}}}
+\def\parse@dhd@ac#1#2#3#4[#5]#6{%  {NEXT}{MOD}{CAT}{{...}...}[NAME]{SYNOPSIS}
+  #1{#2}{#3}{#4}{#5}{#6}}
+\def\parse@dhd@ad#1#2#3#4#5{%  {NEXT}{MOD}{CAT}{{...}...}{NAME [ARGS...]}
+  \parse@dhd@ae{#1}{#2}{#3}{#4}{#5}#5 \q@}
+\def\parse@dhd@ae#1#2#3#4#5#6 #7\q@{%
+  % {NEXT}{MOD}{CAT}{{...}...}{SYNSOPSIS}NAME [ARGS...]\q@
+  #1{#2}{#3}{#4}{#6}{#5}}
+
+\def\parse@dhd@c#1#2{%  {NEXT}{CAT}
   \@desc@dispatch{descargs}{#2}{\parse@dhd@cb{#1}{#2}}}
 \def\parse@dhd@cb#1#2#3{%  {NEXT}{CAT}{{...}...}
   \@ifnextchar[{\parse@dhd@cc{#1}{#2}{#3}}{\parse@dhd@cd{#1}{#2}{#3}}}
 \newif\if@dheadfirst
 \def\dhead{\parse@dhd\dhead@}
 \def\dhead@#1#2#3#4#5{%  {MOD}{CAT}{{...}...}{NAME}{SYNOPSIS}
-  \if@dheadfirst\global\@dheadfirstfalse\else\relax\\[\smallskipamount]\fi%
+  \if@dheadfirst\global\@dheadfirstfalse\else\relax\\*[\smallskipamount]\fi%
+  \phantomsection%
   {\let\protect\@empty\let\@uscore\relax%
    \edef\temp@{\@desc@dispatch{desclabel}{#2}{#2}{#1}{#4}#3}%
    \def\@uscore{_\@gobble}\expandafter\message\expandafter{\temp@}%