X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/0a8f78ec333b8193d1155b5839aea67bb62cf480..00d59354c311fb28730b7c9b117b0d91aac092cc:/doc/sod.sty

diff --git a/doc/sod.sty b/doc/sod.sty
index 44fe07a..9da7def 100644
--- a/doc/sod.sty
+++ b/doc/sod.sty
@@ -106,8 +106,8 @@
 
 %% Intercept grammar typesetting and replace the vertical bar with the
 %% maths-font version.
-\let\@@grammar\grammar
-\def\grammar{\def\textbar{\hbox{$|$}}\@@grammar}
+\let\@@syn@shorts\syn@shorts
+\def\syn@shorts{\def\textbar{\hbox{$|$}}\@@syn@shorts}
 
 %% Collect super- and subscripts.  (Note that underscores are active for the
 %% most part.)  When we're done, end maths mode if we entered it
@@ -189,8 +189,17 @@
 %%%--------------------------------------------------------------------------
 %%% Environment for setting programs.
 
+%% Save `\kill' so that `longtable' won't clobber it.
+\let\prog@@kill\kill
+
 %% Main guts of `prog' and `nprog'.
-\def\@prog{\let\prog@@cr\@tabcr\let\@tabcr\@progcr\codeface\tabbing}
+\def\@prog{%
+  \let\prog@@cr\@tabcr%
+  \let\@tabcr\@progcr%
+  \let\kill\prog@@kill%
+  \codeface%
+  \tabbing%
+}
 
 %% Newlines: called by `\\' within a `prog'.
 %%
@@ -573,9 +582,9 @@
   \begingroup%
     \let\protect\@empty\def\@uscore{-\@gobble}%
     \edef\temp@{\@desc@dispatch{desclabel}{#5}{#4}{#5}#6{#7}}%
-    \hyperref[\temp@]{\code{#7}}#8%
-    #1#2{\temp@}#3%
-  \endgroup%
+    \edef\next@##1##2##3{\endgroup%
+      \noexpand\hyperref[\temp@]{##1}##2{\temp@}##3}%
+  \next@{\code{#7}}{#8#1#2}{#3}%
 }
 
 %% \descindex[MOD]{CAT}{...}...{LABEL}[SUFFIX]
