%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Module:    ZzTeX New Mathematics Facilities
%
% Synopsis:  This file provides the mathematics facilities for "new math"
%            modes 1 and 2. It is loaded after the design file.
%
% Author:    Paul C. Anagnostopoulos
% Created:   16 October 2002
%
% Copyright 1989--2020 by Paul C. Anagnostopoulos
% under The MIT License (opensource.org/licenses/MIT)
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%                       Punctuation
%                       -----------


\if \eqlp{\newmath}{1}%

\def \ldotp {\hbox to .42em{\hfil.\hfil}}

\else\if \gtrp{\newmath}{1}%

% This macro defines the math characters \zmperiod, \zmcomma,
% colon, and semicolon to use the specified style.
% If the style is \mit, then it's different.

\def \setmathpunctuationstyle #1{%                              {style}
  {\zmstyfam = \name{#1fam}%
   \definemathchar {\zmperiod} \classord  \zmstyfam {2E}
   \definemathchar {\zmcomma}  \classpunc \zmstyfam {2C}
   \definemathchar {`;}        \classpunc \zmstyfam {3B}
   \definemathchar {`:}        \classrel  \zmstyfam {3A}}}

% Now establish \rm as the default punctuation style.

\setmathpunctuationstyle{\rm}

% Period and comma must be active in math.

\definemathchar {`.} \classactive \rmfam {00}

\definemathchar {`,} \classactive \rmfam {00}

% When period and comma are active in math, this is what they do.

{
\catcode `\. = \catactive
\gdef .{\mathpalette\zmactperiod{}}

\catcode `\, = \catactive
\gdef ,{\mathpalette\zmactcomma{}}
}

\def \zmactperiod #1#2{%
  \mathord{\hbox to .28em{\hfil $#1\zmperiod$\hfil}}}

\def \zmactcomma #1#2{%
  \mathpunct{\hbox to .33em{\hfil $#1\zmcomma$\kern .03em\hfil}}}

% Now we can define all the dot-oriented math commands.

\def \cdotp {\mathpunct{\vcenter{\hbox{$.$}}}}

\def \ldotp {\mathpunct{.}}

\def \cdots {\mathinner{\cdotp\cdotp\cdotp}}

\def \ddots {%
  \vbox{\baselineskip = 4pt \lineskiplimit = 0pt
        \hbox{.}%
        \hbox{\kern .4em .}%
        \hbox{\kern .8em .}%
        \vskip -.25ex}}

\def \ldots {\mathinner{\ldotp\ldotp\ldotp}}

\def \vdots {%
  \vbox{\baselineskip = 4pt \lineskiplimit = 0pt
        \hbox{.}%
        \hbox{.}%
        \hbox{.}%
        \vskip -.25ex}}

% Make \maps and \colon do the right thing.

\def \maps {\mathpunct{:}}

\let \colon = \maps

\fi\fi
