-
-%% \parse@dhd{NEXT}{CAT}[NAME]{SYNOPSIS}
-%% call NEXT{MOD}{CAT}{NAME}{SYNOPSIS}
-%% #1 #2 #3 #4
-\def\parse@dhd#1#2{% {NEXT}{CAT}
- \@ifnextchar[{\parse@dhd@cc{#1}{#2}}{\parse@dhd@cd{#1}{#2}}}
-\def\parse@dhd@cc#1#2[#3]#4{% {NEXT}{CAT}[NAME]{SYNOPSIS}
- #1{}{#2}{#3}{#4}}
-\def\parse@dhd@cd#1#2#3{% {NEXT}{CAT}{SYNOPSIS}
- \parse@dhd@ce{#1}{#2}{#3}#3 \q@}
-\def\parse@dhd@ce#1#2#3#4 #5\q@{%
- % {NEXT}{CAT}{SYNOPSIS}NAME [ARGS...]\q@
- \def\temp@{#4}%
- \ifx\temp@\@setf\def\next@{\parse@dhd@csetf{#1}{#2}{#3}#5 \q@}%
- \else\def\next@{#1{}{#2}{#4}{#3}}\fi%
+\def\@starstar{**}
+
+%% \parse@dhd{NEXT}[MOD]{CAT}{...}...[NAME]{SYNOPSIS}
+%%
+%% Parse the arguments for a description header, and call
+%%
+%% NEXT{MOD}{CAT}{{...}...}{NAME}{SYNOPSIS}
+%%
+%% Here, {...}... represents the additional category-kind arguments. See
+%% `describe' for what all of this means.
+\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}}}
+\def\parse@dhd@cc#1#2#3[#4]#5{% {NEXT}{CAT}{{...}...}[NAME]{SYNOPSIS}
+ #1{}{#2}{#3}{#4}{#5}}
+\def\parse@dhd@cd#1#2#3#4{% {NEXT}{CAT}{{...}...}{SYNOPSIS}
+ \parse@dhd@ce{#1}{#2}{#3}{#4}#4 \q@}
+\def\parse@dhd@ce#1#2#3#4#5 #6\q@{%
+ % {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\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%