doc/sod.sty: Forbid page breaks between description header entries.
[sod] / doc / sod.sty
index 43b77cc..03d62f6 100644 (file)
   \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@}%