chiark / gitweb /
doc/sod.sty: Let the modifier control labelling and indexing.
[sod] / doc / sod.sty
index d9cfabc5ad950936516a6460909bbc5108d5bc3d..d188afac304bd65b6e02c7967d0ccea4b0ac8a44 100644 (file)
   \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%
 \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{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}%
 }