-% \begin{meta-comment}
-%
-% syntax.dtx
-%
-% Syntax typesetting package for LaTeX 2e
-%
-% (c) 2003 Mark Wooding
-%
-% \end{meta-comment}
-%
% \begin{meta-comment} <general public licence>
%%
%% syntax package -- typesetting syntax descriptions
-%% Copyright (c) 2003 Mark Wooding
+%% Copyright (c) 1996, 2002, 2015, 2020 Mark Wooding
%%
%% This program is free software; you can redistribute it and/or modify
%% it under the terms of the GNU General Public License as published by
% \begin{meta-comment} <Package preamble>
%<+package>\NeedsTeXFormat{LaTeX2e}
%<+package>\ProvidesPackage{syntax}
-%<+package> [2003/08/25 1.08 Syntax typesetting (MDW)]
+%<+package> [2020/09/06 1.14.0 Syntax typesetting]
% \end{meta-comment}
%
-% \CheckSum{1627}
+% \CheckSum{1628}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%
% You can modify the appearance of grammars using three length parameters:
%
-% \begin{description} \def\makelabel{\hskip\labelsep\cmd}
+% \begin{description} \setdescriptionlabel{\cmd{#1}}
%
% \item [\grammarparsep] is the amount of space inserted between production
% rules. It is a rubber length whose default value is 8\,pt, with
% ^^A took to get the table below to look right: __6. Hmm... not as bad
% ^^A as I expected. Most of them were fine-tuning things.
%
-% \medskip ^^A Leave a vertical gap
-% \hbox to\columnwidth{\hfil\vbox{\tabskip=0pt ^^A Centre it horizontally
-% \sdsize \csname sd@setsize\endcsname ^^A Position syntdiag arrows
-% \halign to .5\columnwidth{ ^^A Set the table width
+% \medskip ^^A Leave a vertical gap
+% \hbox to\columnwidth{\hfil\vbox{\tabskip=0pt ^^A Centre it horizontally
+% \sdsize \csname sd@setsize\endcsname ^^A Position syntdiag arrows
+% \halign to .5\columnwidth{ ^^A Set the table width
% &\ttfamily\ignorespaces#\unskip\hfil\tabskip=0pt ^^A Typeset the name
-% &\quad\csname sd@arr@#\endcsname\hfil ^^A Typeset the arrow
-% &\setbox0=\hbox{#}\tabskip=0pt plus 1fil\cr ^^A Stretch between columns
+% &\quad\csname sd@arr@#\endcsname\hfil ^^A Typeset the arrow
+% &\setbox0=\hbox{#}\tabskip=0pt plus 1fil\cr ^^A Stretch between columns
% >>-&>>-& &>-&>-& &->&->\cr
% -><&-><& &...&...& &-&-\cr
-% }}\hfil} ^^A Close the boxing
-% \medskip ^^A And leave another gap
+% }}\hfil} ^^A Close the boxing
+% \medskip ^^A And leave another gap
%
% These declarations should be used only in the optional argument to the
% \env{syntdiag$*$} command. The second optional argument to the
%
% The following length parameters may be altered:
%
-% \begin{description} \def\makelabel{\hskip\labelsep\cmd}
+% \begin{description} \setdescriptionlabel{\cmd{#1}}
%
% \item [\sdstartspace] The length of the rule between the arrows which
% begin each line of the syntax diagram and the first item on the line.
% |\lit| and |\lit*|) has two style commands associated with it, as shown
% in the table below.
%
-% \begin{tab}{lll} \hline
-% \bf Syntax item & \bf Left command & \bf Right command \\ \hline
-% Nonterminals & |\syntleft| & |\syntright| \\
-% Quoted terminals & |\litleft| & |\litright| \\
-% Unquoted terminals & |\ulitleft| & |\ulitright| \\ \hline
+% \begin{tab}{lll} \hline
+% \bf Syntax item & \bf Left command & \bf Right command \\ \hline
+% Nonterminals & |\syntleft| & |\syntright| \\
+% Quoted terminals & |\litleft| & |\litright| \\
+% Unquoted terminals & |\ulitleft| & |\ulitright| \\ \hline
% \end{tab}
%
% It's not too hard to see how this works. For example, if you look at
%
% There's some extra cunningness here, because I'd like to be able to
% hyphenate after underscores usually, but not when there's another one
-% following. And then, because \env{tabbing} redefines |\_|, there's some
+% following. And then, because \env{tabbing} redefines |\-|, there's some
% more yukkiness to handle that: the usual |\@tabacckludge| mechanism doesn't
% cope with this particular case.
%
\bgroup%
\verb@eol@error%
\let\do\@makeother\dospecials%
+ \@noligs%
#2%
\catcode`#1\active%
\lccode`\~`#1%