%% 
%% \iffalse ^^A we skip the debug setting
\IfFileExists{\string~/bin/gen_and_xela}{\errorcontextlines=1000 }{}
%% \fi
%% ^^A $Id: TheUltimateMaster.gmd,v 0.352 2011/10/12 15:19:42 natror Exp natror $
%% This is file “gmtypos.sty” generated with the DocStrip utility.
%% 
%%
%% The original source files were:
%%
%% gmutils/gmutils.gmd  (with options: `typos')
%%
%% 
%% Copyright ©  
%% by Grzegorz ‘Natror’ Murzynowski
%% natror (at) gmail (dot) com
%% 
%% This program is subject to the LaTeX Project Public License.
%% See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html
%% for the details of that license.
%%
%% LPPL status: "author-maintained".
%%
%% 
%% 
%% For documentation please refer to the file(s)
%% gmutils.{gmd,pdf}.
%% 
%% 
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{gmtypos}
    [2011/10/12 v0.996 a collection of macros, mostly typographical (GM)]


%%
%%
%%     ^^A\typeout{\unexpanded{#4}}%%

\RequirePackage{gmcommand, gmnotonlypream}

\unless\ifcsname ifgmu@quiet\endcsname
  \@xa\newif\csname ifgmu@quiet\endcsname
\fi

\DeclareOption{quiet}{\gmu@quiettrue}

\ProcessOptions

\AtBeginDocument{%
  \@ifpackageloaded{fontspec}{%
    \pdef\udigits{%
      \addfontfeature{Numbers=Uppercase}}%
  }{%
    \emptify\udigits}%
}


\def\Xedekfracc{\gmu@ifstar\gmu@xedekfraccstar\gmu@xedekfraccplain}
    % (plain) The starless version turns the font feature |frac| on.
    %
    % (\*) But nor my modification of Minion Pro neither \TeX\ Gyre
    % Pagella doesn't feature the
    % |frac| font feature properly so, with the starred version of the
    % declaration we use the characters from the font where available
    % (see the |\@namedef|s below) and the |numr| and |dnom| features
    % with the fractional slash otherwise (via |\gmu@dekfracc|).
    %
    % (\*\*) But Latin Modern Sans Serif Quotation doesn't support the
    % numerator and denominator positions so we provide the double
    % star version for it, which takes the char from font if it exist
    % and typesets with lowers and kerns otherwise.

\def\gmu@xedekfraccstar{%
  \def\gmu@xefraccdef##1##2{%
      \iffontchar\font ##2
        \@namedef{gmu@xefracc##1}{\char##2 }%
      \else
        \n@melet{gmu@xefracc##1}{relax}%
      \fi}%
    %
    \def\gmu@dekfracc##1/##2{%
      {\addfontfeature{VerticalPosition=Numerator}##1}\gmu@numeratorkern
      \char"2044 \gmu@denominatorkern
      {\addfontfeature{VerticalPosition=Denominator}##2}}%
    %
    % We define the fractional macros. Since Adobe Minion Pro doesn't
    % contain $\frac n5$ nor $\frac n6$, we don't provide them here.
    \gmu@xefraccdef{1/4}{"BC}%
    \gmu@xefraccdef{1/2}{"BD}%
    \gmu@xefraccdef{3/4}{"BE}%
    \gmu@xefraccdef{1/3}{"2153}%
    \gmu@xefraccdef{2/3}{"2154}%
    \gmu@xefraccdef{1/5}{"2155}%
    \gmu@xefraccdef{2/5}{"2156}%
    \gmu@xefraccdef{3/5}{"2157}%
    \gmu@xefraccdef{4/5}{"2158}%
    \gmu@xefraccdef{1/6}{"2159}%
    \gmu@xefraccdef{5/6}{"215A}%
    \gmu@xefraccdef{1/8}{"215B}%
    \gmu@xefraccdef{3/8}{"215C}%
    \gmu@xefraccdef{5/8}{"215D}%
    \gmu@xefraccdef{7/8}{"215E}%
    \pdef\dekfracc@args##1/##2{%
      \gmu@ifundefined{gmu@xefracc\detokenize{##1/##2}}{%
        \gmu@dekfracc{##1}/{##2}}{%
        \csname gmu@xefracc\detokenize{##1/##2}\endcsname}%
      \if@gmu@mmhbox\egroup\fi
    }% of |\dekfracc@args|.
    \gmu@ifstar{\let\gmu@dekfracc\gmu@dekfraccsimple}{}%
  }

\def\gmu@xedekfraccplain{% `else' of the main |\gmu@ifstar|
    \pdef\dekfracc@args##1/##2{%
      \ifmmode\hbox\fi{%
        \addfontfeature{Fractions=On}%
        ##1/##2}%
      \if@gmu@mmhbox\egroup\fi
    }% of |\dekfracc@args|
  }

\newif\if@gmu@mmhbox% we'll use this switch for |\dekfracc| and also

\pdef\dekfracc{% \changes{v0.94}{2008/09/14}{made to work also in math
               % mode, even with math-active digits}
  \ifmmode\hbox\bgroup\@gmu@mmhboxtrue\fi
  \dekfracc@args}

\def\gmu@numeratorkern{\kern-.055em\relax}
\def\gmu@denominatorkern{\kern-.05em\relax}



\pdef\textsuperscript@@#1{%
  \@textsuperscript{\selectfont#1}}%
\def\@textsuperscript#1{%
  {\m@th\ensuremath{^{\mbox{\fontsize\sf@size\z@#1}}}}}

\let\textsuperscript@@\textsuperscript

\def\GMtextsuperscript{%
  \@ifXeTeX{%
    \DeclareCommand\textsuperscript{sm}{%
      \gmuIfValueTF{##1}{\textsuperscript@@{##2}}%
      {%
        \begingroup
        \addfontfeature{VerticalPosition=Numerator}##2%
        \endgroup}}%
  }{\truetextsuperscript}}

\def\truetextsuperscript{%
  \let\textsuperscript\textsuperscript@@
}



\def\gmu@getfontstring{%
  \xdef\gmu@fontstring{%
    \gmu@fontstring@}}

\def\gmu@fontstring@{%
  \@xa\@xa\@xa\gmu@fontstring@@\@xa\meaning\the\font\@nil}

\def\gmu@fontstring@@#1"#2"#3\@nil{"#2"}

\def\gmu@getfontscale#1Scale#2=#3,{%
  \ifx\gmu@getfontscale#3\else
    \def\gmu@tempa{MatchLowercase}%
    \def\gmu@tempb{#3}%
    \ifx\gmu@tempa\gmu@tempb
      \gmu@calc@scale{5}%
      \@xa\@firstoftwo
    \else
      \def\gmu@tempa{MatchUppercase}%
      \ifx\gmu@tempa\gmu@tempb
        \gmu@calc@scale{8}%
        \afterfifi\@firstoftwo
        \else\afterfifi\@secondoftwo
      \fi
    \fi
    {\xdef\gmu@fontscalebr{[\gmu@fontscale] }}%
    {\xdef\gmu@fontscalebr{[#3] }}%
    \afterfi\gmu@getfontscale
  \fi
}

\def\gmu@getfontdata#1{%
  \global\emptify\gmu@fontscalebr
  \begingroup
  #1%
  \@xa\@xa\@xa\gmu@getfontscale
  \csname zf@family@options\f@family\endcsname
  ,Scale=\gmu@getfontscale,%
  \gmu@getfontstring
  \xdef\gmu@theskewchar{\the\skewchar\font}%
  \endgroup}

\def\gmu@stripchar#1"{"}

\DeclareCommand\gmath@getfamnum{C{\gmath@fam}}{%
  \edef\gmath@famnum{\@xa\gmu@stripchar\meaning#1}%
}


\DeclareCommand\gmathFams{o  % the name of math version
  C{\NoValue} % ‘rescue’ font. Will be accessible via
  % \inverb|\symgmathRoman⁄<version>| (math family) and
  % \inverb|\gmath@fontt⁄<version>| (font).
}{%
  \gmuIfValueT{#1}{%
    \DeclareMathVersion{#1}% this sets the defaults so no need to
    % define them explicitly
    }% of if |#1| given
  %
  \gmu@getfontdata{\rmfamily\itshape}%
  %
  \edef\gmu@tempa{%
    \gmuIfValueTF{#1}{\@nx\SetSymbolFont{letters}{#1}}%
    {\@nx\DeclareSymbolFont{letters}}%
    {\encodingdefault}{gmathit\gmuPutIfValue{#1}}{m}{it}%
    \gmuIfValueT{#1}{%
      \@nx\DeclareSymbolFont{letters#1}%
      {\encodingdefault}{gmathit\gmuPutIfValue{#1}}{m}{it}%
      }%
    \@nx\DeclareFontFamily{\encodingdefault}{gmathit\gmuPutIfValue{#1}}{%
      \skewchar\font\gmu@theskewchar\space}%
    \@nx\DeclareFontShape{\encodingdefault}{gmathit\gmuPutIfValue{#1}}{m}{it}{%
      <-> \gmu@fontscalebr \gmu@fontstring}{}%
    \gmuIfValueT{#1}{%
      \@nx\SetMathAlphabet\@nx\mathit{#1}{\encodingdefault}{gmathit#1}{m}{it}}%
  }\gmu@tempa
  %
  \gmuIfValueT{#2}{%
    \gmu@getfontdata{#2\gmu@ifstored{\upshape}{\storedcsname{upshape}}{\upshape}}%
    \edef\gmu@tempa{%
      \@nx\DeclareSymbolFont{gmathRoman\gmuPutIfValue{#1}}%
      {\encodingdefault}{gmathRm\gmuPutIfValue{#1}}{m}{n}%
      \@nx\DeclareFontFamily{\encodingdefault}{gmathRm\gmuPutIfValue{#1}}{%
        \skewchar\font\gmu@theskewchar\space}%
      \@nx\DeclareFontShape{\encodingdefault}{gmathRm\gmuPutIfValue{#1}}{m}{n}{%
        <-> \gmu@fontscalebr \gmu@fontstring}{}%
    }\gmu@tempa
    \@xa\font\csname gmath@fontt\gmuPutIfValue{#1}\endcsname
    =\gmu@fontstring\relax
    % \stanza
    \gmu@getfontdata{#2\gmu@ifstored{\itshape}{\storedcsname{itshape}}{\itshape}}%
    \edef\gmu@tempa{%
      \@nx\DeclareSymbolFont{gmathItalic\gmuPutIfValue{#1}}%
      {\encodingdefault}{gmathIt\gmuPutIfValue{#1}}{m}{n}%
      \@nx\DeclareFontFamily{\encodingdefault}{gmathIt\gmuPutIfValue{#1}}{%
        \skewchar\font\gmu@theskewchar\space}%
      \@nx\DeclareFontShape{\encodingdefault}{gmathIt\gmuPutIfValue{#1}}{m}{n}{%
        <-> \gmu@fontscalebr \gmu@fontstring}{}%
    }\gmu@tempa
  }% of if |#2| given
  % \stanza
  \gmu@getfontdata{\rmfamily\upshape}%
  \edef\gmu@tempa{%
    \gmuIfValueTF{#1}{\@nx\SetSymbolFont{gmathroman}{#1}}%
    {\@nx\DeclareSymbolFont{gmathroman}}%
    {\encodingdefault}{gmathrm\gmuPutIfValue{#1}}{m}{n}%
    \@nx\DeclareFontFamily{\encodingdefault}{gmathrm\gmuPutIfValue{#1}}{%
      \skewchar\font\gmu@theskewchar\space}%
    \@nx\DeclareFontShape{\encodingdefault}{gmathrm\gmuPutIfValue{#1}}{m}{n}{%
      <-> \gmu@fontscalebr \gmu@fontstring}{}%
    \gmuIfValueT{#1}{%
      \@nx\SetMathAlphabet\@nx\mathrm{#1}{\encodingdefault}{gmathrm#1}{m}{n}}%
  }\gmu@tempa
    \@xa\font\csname gmath@font\gmuPutIfValue{#1}\endcsname
    =\gmu@fontstring\relax
    \gmathfamshook
}

\emptify\gmathfamshook

\DeclareCommand\gmathbase{oC{\NoValue}}{%
  \gmathFams[#1](#2)%
  \DeclareCommand\gmath@do{%
    m % (1) the character or \CS\ to be declared,
    o % (2)  the Unicode to be assigned,
    m % (3) math type (\CS like \cs{mathord} etc.)
    C{\gmath@fam} % font family
  }{%\
    %
    \gmath@getfamnum(##4)%
    \gmuIfValueTF{##2}{%
      \edef\gmu@tempa{%
        = \mathchar@type##3\space
        \gmath@famnum\space
        "##2\relax}%
      \if\relax\@nx##1%
        \gmu@ifstored{##1}{}{\Store@Macro##1}%
        \edef\gmu@tempa{%
          \XeTeXmathchardef \@nx##1\gmu@tempa}%
        \else
        \edef\gmu@tempa{%
          \XeTeXmathcode `##1 \gmu@tempa}
        \fi%
      }%
      {% no value of |##2|
        \edef\gmu@tempa{%
          \XeTeXmathcode `##1 =
          \mathchar@type##3\space
          \gmath@famnum\space
          `##1\relax}%
      }%
      \gmu@tempa
    }% of \incs{gmath@do}
    %
    \DeclareCommand\gmath@doif{%
      m        % (1) the Unicode hex of char enquired,
      m      % (2) the char or \CS\ to be declared,
      m      % (3) math type \CS (\cs{mathord} etc.),
      o      % (4) second-choice Unicode (taken if first-choice is absent),
      o      % (5) third-choice Unicode (as above if second-choice is absent from font).
      B{\gmath@fam} % (6) never used in this package. Why?
      C{\NoValue}
    }{%
      \gmu@storeifnotyet{##2}%
      \@xa\let\@xa\gmath@ft\csname
        gmath@font%
        \ifx\gmath@fam##6\else t\fi
        \gmath@version
      \endcsname
      \iffontchar\gmath@ft"##1 \gmath@do##2[##1]##3(##6)%
      \else
        \gmuIfValueTF{##4}{%
          \iffontchar\gmath@ft"##4 \gmath@do##2[##4]##3(##6)%
          \else
            \gmuIfValueTF{##5}{%
              \iffontchar\gmath@ft"##5 \gmath@do##2[##5]##3(##6)%
              \else
                \gmath@restore{##1}{##2}{##3}{##4}{##5}{##7}%
              \fi}%
            {\gmath@restore{##1}{##2}{##3}{##4}{##5}{##7}}%
          \fi}%
        {\gmath@restore{##1}{##2}{##3}{##4}{##5}{##7}}%
      \fi
    }% of |\gmath@doif|
    % In the command above we try to define math char or a~\CS in the
    % family given as |##6|. If there're no respective chars, we try
    % the same with the family given (as a~word) in |##7|.
    \def\gmath@restore##1##2##3##4##5##6{%
      \gmuIfValueT{##6}%
      {\ifcsname ##6\endcsname
          \edef\gmu@tempa{%
            \unexpanded{\gmath@doif{##1}{##2}{##3}[##4][##5]}%
            {\@xanxcs{##6}}\relax
          }\gmu@tempa
          \@xa\@gobbletwo % if family |##6| is defined, we gobble the
          % other branch
        \fi
      }%
      \firstofone
      {\if\relax\@nx##2%
          \Restore@Macro##2%
        \fi
      }%
    }%
    %
\iffalse % doesn't work in a~non-math font.
    \DeclareCommand\gmath@delc{mo}{%\
      % \begin{enumargs*}
      %   \mand the char or \CS\ to be declared,
      % \opt the Unicode (if not the same as the char).
      % \end{enumargs*}
      %
    \gmath@getfamnum
    \gmuIfValueTF{##2}{%
      \edef\gmu@tempa{%
        = \gmath@famnum\space "##2\relax}%
      \edef\gmu@tempa{%
        \XeTeXdelcode `##1 \gmu@tempa}
    }%
    {%
      \edef\gmu@tempa{%
        \XeTeXdelcode `##1 =
        \gmath@famnum\space
        `##1\relax}%
    }%
    \gmu@tempa
  }% of \incs{gmath@delc}
  %
  \def\gmath@delcif##1##2{%\
    % \begin{enumargs*}
    %   \mand the Unicode enquired,
    % \item the char to be delcode-declared
    % \end{enumargs*}
    %
    \iffontchar\gmath@font"##1 \gmath@delc##2[##1]\fi}
\fi% of iffalse
  %
  \def\gmath@delimif##1##2##3{%\
    % \begin{enumargs*}
    % \item the Unicode enquired,
    % \item the \CS\ defined as \cs{XeTeXdelimiter},
    % \item the math type \CS\ (probably \incs{mathopen} or
    %   \incs{mathclose}).
    % \end{enumargs*}
    \iffontchar\gmath@font"##1
      \gmath@getfamnum
      \protected\edef##2{\@nx\ensuremath{%
          \XeTeXdelimiter \mathchar@type##3\space
          \gmath@famnum\space "##1\relax}}%
    \fi}% of \cs{gmath@delimif}.
  %
  \pdef\rmopname##1##2##3{%
    \mathop {##1\kern \z@ \mathrm{##3}}\csname n##2limits@\endcsname
  }%
  %
  \DeclareCommand\gmu@dogmathbase{oC{\NoValue}}{%
    \Restore@Macro\mathchar@type%
    %
    \gmuIfValueT{##1}{\mathversion{##1}}%
    %
    \edef\gmath@version{\gmuPutIfValue{##1}}%
    %
    \@xa\let\@xa\gmath@fam\csname symgmathroman%
    \endcsname
    \edef\gmath@famm{symgmathRoman\gmath@version}% as you see, this is
    % not a~font family (number) but a~macro containing the name: of
    % the secondary (‘rescue’) family.
    %
    \typeout{@@@ gmutils.sty: taking some math chars from the font^^J \gmu@fontstring@}%
    \gmath@do+\mathbin
    \gmath@doif{2212}-\mathbin[2013](\gmath@famm)% minus sign if present or else en dash
    \gmath@do=\mathrel
    \gmath@do0\mathord
    \gmath@do1\mathord
    \gmath@do2\mathord
    \gmath@do3\mathord
    \gmath@do4\mathord
    \gmath@do5\mathord
    \gmath@do6\mathord
    \gmath@do7\mathord
    \gmath@do8\mathord
    \gmath@do9\mathord
    %%
    \gmath@doif{2264}\le\mathrel(\gmath@famm)%
    \let\leq\le
    \let\leeng\le
    \gmath@doif{2265}\ge\mathrel(\gmath@famm)%
    \let\geq\ge
    \let\geeng\ge
    \gmath@doif{2A7D}\xleq\mathrel(\gmath@famm)%
    \gmath@doif{2A7E}\xgeq\mathrel(\gmath@famm)%
    \@ifpackageloaded{polski}{%
      \ifdefined\xleq
      \gmu@storeifnotyet\leq
      \let\leq=\xleq
      \let\le=\leq
      \fi
      \ifdefined\xgeq
      \gmu@storeifnotyet\geq
      \let\geq=\xgeq
      \let\ge=\geq
      \fi}{}%
    %
    \gmath@do.\mathpunct
    \gmath@do,\mathpunct
    \gmath@do;\mathpunct
    \gmath@do…\mathpunct
    \gmath@do(\mathopen
    \gmath@do)\mathclose
    \gmath@do[\mathopen
    \gmath@do]\mathclose
    %
    \gmath@doif{00D7}×\mathbin (\gmath@famm)%
    \gmath@do:\mathrel
    \gmath@doif{00B7}·\mathbin(\gmath@famm)%
    \gmath@doif{22C6}*\mathbin(\gmath@famm)% % low star
    \gmath@doif{2300}\varnothing\mathord(\gmath@famm)%
    \gmath@doif{221E}\infty\mathord(\gmath@famm)%
    \gmath@doif{2248}\approx\mathrel(\gmath@famm)%
    \gmath@doif{2260}\neq\mathrel(\gmath@famm)%
    \let\ne\neq
    \gmath@doif{00AC}\neg\mathbin(\gmath@famm)%
    \gmath@doif{00AC}\nego\mathord(\gmath@famm)%
    \gmath@do/\mathop
    \gmath@do<\mathrel
    \gmath@do>\mathrel
    \gmath@doif{2329}\langle\mathopen(\gmath@famm)%
    \gmath@doif{232A}\rangle\mathclose(\gmath@famm)%
    \gmath@doif{2202}\partial\mathord(\gmath@famm)%
    \gmath@doif{00B1}\pm\mathbin(\gmath@famm)%
    \gmath@doif{007E}\sim\mathrel(\gmath@famm)%
    \gmath@doif{2190}\leftarrow\mathrel(\gmath@famm)%
    \gmath@doif{2192}\rightarrow\mathrel(\gmath@famm)%
    \gmath@doif{2194}\leftrightarrow\mathrel(\gmath@famm)%% if not present,
    % \incs{gmathfurther} will take care
    % of it if left and right arrows are present.
    \gmath@doif{2191}\uparrow\mathrel(\gmath@famm)%% it should be a~delimiter
    % (declared with \incs{gmath@delimif}) % but in a~non-math
    % font the delimiters don't work (2008/11/19) and I~don't think
    % I'll ever need up- and down- arrows as delimiters.
    \gmath@doif{2193}\downarrow\mathrel(\gmath@famm)%
    %
    \gmath@doif{2208}\in\mathrel[03F5][0454](\gmath@famm)%%
    % As a~fan of modal logics I~allow redefinition of \incs{lozenge}
    % and \incs{square} iff both are in the font. I~don't accept
    % the ‘ballot box’ U+2610.
    \if\iffontchar\gmath@font"25CA 0\else 1\fi
       \iffontchar\gmath@font"25FB 0\else\iffontchar\gmath@font"25A1 0\else 2\fi\fi
      \gmath@do\lozenge[25CA]\mathord
      \gmath@doif{25FB}\square\mathord[25A1](\gmath@famm)%%  ‘medium white square (modal
      % operator)’ of just ‘white square’.
    \fi
    \gmath@doif{EB08}\bigcircle\mathbin(\gmath@famm)%
    \gmath@doif{2227}\wedge\mathbin(\gmath@famm)%
    \gmath@doif{2228}\vee\mathbin(\gmath@famm)%
    %
    \gmath@doif{0393}\Gamma\mathalpha(\gmath@famm)%
    \gmath@doif{0394}\Delta\mathalpha(\gmath@famm)%
    \gmath@doif{0398}\Theta\mathalpha(\gmath@famm)%
    \gmath@doif{039B}\Lambda\mathalpha(\gmath@famm)%
    \gmath@doif{039E}\Xi\mathalpha(\gmath@famm)%
    \gmath@doif{03A3}\Sigma\mathalpha(\gmath@famm)%
    \gmath@doif{03A5}\Upsilon\mathalpha(\gmath@famm)%
    \gmath@doif{03А6}\Phi\mathalpha(\gmath@famm)%
    \gmath@doif{03A8}\Psi\mathalpha(\gmath@famm)%
    \gmath@doif{03A9}\Omega\mathalpha(\gmath@famm)%
    %
    \@xa\let\@xa\gmath@fam\csname symletters\gmath@version%
    \endcsname
    \edef\gmath@famm{symgmathItalic\gmath@version}%
    %
    \gmath@doif{03B1}\alpha\mathalpha(\gmath@famm)%
    \gmath@doif{03B2}\beta\mathalpha(\gmath@famm)%
    \gmath@doif{03B3}\gamma\mathalpha(\gmath@famm)%
    \gmath@doif{03B4}\delta\mathalpha(\gmath@famm)%
    \gmath@doif{03F5}\epsilon\mathalpha(\gmath@famm)%
    \gmath@doif{03B5}\varepsilon\mathalpha(\gmath@famm)%
    \gmath@doif{03B6}\zeta\mathalpha(\gmath@famm)%
    \gmath@doif{03B7}\eta\mathalpha(\gmath@famm)%
    \gmath@doif{03B8}\theta\mathalpha(\gmath@famm)%
    \gmath@doif{03D1}\vartheta\mathalpha(\gmath@famm)%
    \gmath@doif{03B9}\iota\mathalpha(\gmath@famm)%
    \gmath@doif{03BA}\kappa\mathalpha(\gmath@famm)%
    \gmath@doif{03BB}\lambda\mathalpha(\gmath@famm)%
    \gmath@doif{03BC}\mu\mathalpha(\gmath@famm)%
    \gmath@doif{03BD}\nu\mathalpha(\gmath@famm)%
    \gmath@doif{03BE}\xi\mathalpha(\gmath@famm)%
    \gmath@doif{03C0}\pi\mathalpha(\gmath@famm)%
    \gmath@doif{03A0}\Pi\mathalpha(\gmath@famm)%
    \gmath@doif{03C1}\rho\mathalpha(\gmath@famm)%
    \gmath@doif{03C3}\sigma\mathalpha(\gmath@famm)%
    \gmath@doif{03DA}\varsigma\mathalpha(\gmath@famm)%% 03C2?
    \gmath@doif{03C4}\tau\mathalpha(\gmath@famm)%
    \gmath@doif{03C5}\upsilon\mathalpha(\gmath@famm)%
    \gmath@doif{03D5}\phi\mathalpha(\gmath@famm)%
    \gmath@doif{03C7}\chi\mathalpha(\gmath@famm)%
    \gmath@doif{03C8}\psi\mathalpha(\gmath@famm)%
    \gmath@doif{03C9}\omega\mathalpha(\gmath@famm)%
    %
    \if 1 1%
    \iffontchar\gmath@font"221A
      \fontdimen61\gmath@font=1pt
      \edef\sqrtsign{%
        \XeTeXradical \@xa\gmu@stripchar\meaning\symgmathroman\space "221A\relax}%
    \fi
    \fi% of if 1 1.
    \def\max{\rmopname \relax m{max}}%
    \def\min{\rmopname \relax m{min}}%
    \def\lim{\rmopname \relax m{lim}}%
    \def\sin{\rmopname \relax o{sin}}%
    \def\cos{\rmopname \relax o{cos}}%
    \def\tg{\rmopname \relax o{tg}}%
    \def\ctg{\rmopname \relax o{ctg}}%
    \def\tan{\rmopname \relax o{tan}}%
    \def\ctan{\rmopname \relax o{ctan}}%
  }% of |\gmu@dogmathbase|
  \AtBeginDocument{\gmu@dogmathbase[#1](#2)%
    \let\gmathbase\gmu@dogmathbase
  }% of atbd
    \not@onlypreamble\gmathbase
}% of \cs{gmathbase}


\@onlypreamble\gmathbase

\pdef\gmathfurther{% \HideDef
  % \changes{v0.94}{2008/10/4}{removed definition of
  %   \cs{}\<letter>s and \cs{}\<digit>s}
  % \changes{v0.96}{2008/11/7}{Greek letters completed. Wrapped with
  %   \cs{addtotoks} to allow using in any order with \cs{garamath}
  %   and others}
  %
  \def\do##1##2##3{\gmu@storeifnotyet##1%
    \def##1{%
      \mathop{\mathchoice{\hbox{%
            \rm
            \edef\gma@tempa{\the\fontdimen8\font}%
            \larger[3]%
            \lower\dimexpr(\fontdimen8\font-\gma@tempa)/2 %
              \hbox{##2}}}{\hbox{%
              \rm
              \edef\gma@tempa{\the\fontdimen8\font}%
              \larger[2]%
              \lower\dimexpr(\fontdimen8\font-\gma@tempa)/2 %
              \hbox{##2}}}%
          {\mathrm{##2}}{\mathrm{##2}}}##3}}%
    \iffontchar\gmath@font"2211    \do\sum{\char"2211}{}\fi%
    \do\forall{\gma@quantifierhook \rotatebox[origin=c]{180}{A}%
      \gmu@forallkerning
    }{\nolimits}%
    \def\gmu@forallkerning{\setbox0=\hbox{A}\setbox2=\hbox{\scriptsize x}%
      \kern\dimexpr\ht2/3*2 -\wd0/2\relax}% to be able to redefine it
    % when the big quantifier is Bauhaus-like.
    \do\exists{\rotatebox[origin=c]{180}{\gma@quantifierhook E}}\nolimits%
    %
    \def\do##1##2##3{\gmu@storeifnotyet##1%
      \def##1{##3{%
          \mathchoice{\hbox{\rm##2}}{\hbox{\rm##2}}%
          {\hbox{\rm\scriptsize##2}}{\hbox{\rm\tiny##2}}}}}%
    %
    \unless\iffontchar\gmath@font"2227
      \do\vee{\rotatebox[origin=c]{90}{<}}\mathbin%
    \fi
    \unless\iffontchar\gmath@font"2228
      \do\wedge{\rotatebox[origin=c]{-90}{<}}\mathbin
    \fi
    %
    \unless\iffontchar\gmath@font"2194
      \if\iffontchar\gmath@font"2190 0\else1\fi
        \iffontchar\gmath@font"2192 0\else2\fi
        \do\leftrightarrow{\char"2190\kern-0,1em \char"2192}\mathrel
    \fi\fi
    %
    \def\do##1##2##3{\gmu@storeifnotyet##1%
      \def##1####1{##2{\hbox{%
            \rm
            \setbox0=\hbox{####1}%
            \edef\gma@tempa{\the\ht0}%
            \edef\gma@tempb{\the\dp0}%
            ##3%
            \setbox0=\hbox{####1}%
           \lower\dimexpr(\ht0 + \dp0)/2-\dp0 -((\gma@tempa+\gma@tempb)/2-\gma@tempb) %
           \box0}}}}%
   \do\bigl\mathopen\larger
   \do\bigr\mathclose\larger
   \do\Bigl\mathopen\largerr
   \do\Bigr\mathclose\largerr
   \do\biggl\mathopen{\larger[3]}%
   \do\biggr\mathclose{\larger[3]}%
   \do\Biggl\mathopen{\larger[4]}%
   \do\Biggr\mathclose{\larger[4]}%
   %
   %
   \addtotoks\everymath{% \changes{v0.96}{2008/11/20}{the
     % \cs{everymath}'s left brace moved here:
     % earlier all the stuff was put into \cs{everymath}}
     \def\do##1##2{\gmu@storeifnotyet##1%
       \def##1{\ifmmode##2{\mathchoice
           {\hbox{\rm\char`##1}}{\hbox{\rm\char`##1}}%
           {\hbox{\rm\scriptsize\char`##1}}{\hbox{\rm\tiny\char`##1}}}%
         \else\char`##1\fi}}%
     \do\{\mathopen
     \do\}\mathclose
     %
     \def\={\mathbin{=}}%
     \def\neqb{\mathbin{\neq}}%
     \let\neb\neqb
     \def\do##1{\gmu@storeifnotyet##1%
       \edef\gma@tempa{%
         \def\@xanxcs{\@xa\gobble\string##1r}{%
           \@nx\mathrel{\@nx##1}}}%
       \gma@tempa}%
     \do\vee \do\wedge \do\neg
     \def\fakern{\mkern-3mu}%
     \thickmuskip=8mu plus 4mu\relax
     %
     \gma@gmathhook
   }% of |\everymath|.
   \everydisplay\everymath
   \ifdefined\Url
     \ampulexdef\Url{\let\do}\@makeother
     {\everymath{}\let\do\@makeother}% I~don't know why but the
     % \pk{url} package's \incs{url} typesets the argument inside
     % a~math which caused digits not to be typewriter but Roman and
     % lowercase.
  \fi% of |\ifdefined\Url|.
}% of |\def\gmathfurther|. \ResumeDef

\Store@Macro\mathchar@type

\DeclareCommand\gmath{oC{\NoValue}}{%
  \gmathbase[#1](#2)%
  \gmathfurther
  \gmuIfValueT{#1}{\csname gmathhook#1\endcsname}% this allows adding
  % version-specific stuff (I~first used this for Fell fonts rescued
  % with Garamond Premier)
}

\pdef\gmathscripts{% \changes{v0.96}{2008/11/11}{added}
  \addtotoks\everymath{\catcode`\^=7\relax \catcode`\_=8\relax }%
  \everydisplay\everymath}

\pdef\gmathcats{%
  \addtotoks\everymath{\gmu@septify}%
  \everydisplay\everymath}

\emptify\gma@quantifierhook
\def\quantifierhook#1{%
  \def\gma@quantifierhook{#1}}

\emptify\gma@gmathhook
\def\gmathhook#1{\addtomacro\gma@gmathhook{#1}}

\def\gma@dollar$#1${{\gmath$#1$}}%
\def\gma@bare#1{\gma@dollar$#1$}%
\def\gma@checkbracket{\@ifnextchar\[%^^A\]
  \gma@bracket\gma@bare}
\def\gma@bracket\[#1\]{{\gmath\[#1\]}\@ifnextchar\par{}{\noindent}}
\def\gma{\@ifnextchar$%^^A $
  \gma@dollar\gma@checkbracket}

   %^^B trial composition
\def\bgcolor{\color{white}}

\DeclareCommand\garamath{%
  O{\rm}% the font command
}{%
  % Before 2009/10/19 all the stuff was added to |\everymath| which
  % didn't work.
  \quantifierhook{\addfontfeature{OpticalSize=800}}%
  %
  \def\gma@arrowdash{{%
      \setbox0=\hbox{\char"2192}\copy0\kern-0,6\wd0
      \bgcolor\rule[-\dp0]{0,6\wd0}{\dimexpr1,07\ht0+\dp0}\kern-0,6\wd0}}%
  %
  \def\gma@gmathhook{%
    \def\do####1####2####3{\gmu@storeifnotyet####1%
      \def####1{####3{%
          \mathchoice{\hbox{#1####2}}{\hbox{#1####2}}%
          {\hbox{#1\scriptsize####2}}{\hbox{#1\tiny####2}}}}}%
    \do\mapsto{\rule[0,4ex]{0,1ex}{0,4ex}\kern-0,05em%
      \gma@arrowdash\kern-0,05em\char"2192}\mathrel
    \do\cup{\scshape u}\mathbin
    \do\varnothing{\setbox0=\hbox{\gma@quantifierhook\addfontfeature{Scale=1.272727}0}%
      \setbox2=\hbox{\char"2044}%
      \copy0 \kern-0,5\wd0 \kern-0,5\wd2 \lower0,125\wd0 \copy2
      \kern0,5\wd0\kern-0,5\wd2}{}% of |\varnothing|
    \do\leftarrow{\char"2190\kern-0,05em\gma@arrowdash}\mathrel
    \do\shortleftarrow{\char"2190}\mathrel
    \do\rightarrow{\gma@arrowdash\kern-0,05em\char"2192}\mathrel
    \do\shortrightarrow{\char"2192\relax}\mathrel
    \do\in{\gma@quantifierhook\char"0454}\mathbin
    \do\prec{\gma@quantifierhook
      \rotatebox[origin=c]{-90}{%
        \glyphname{u03A5.a}}}\mathrel % added 2009/9/11
  }% of |\gma@gmathhook|
}% of |\garamath|.



\def\gmu@tempa{\kern-0,08em\penalty10000\hskip0sp\relax
  s\penalty10000\hskip0sp\relax}

\protected\edef\Vs{V\gmu@tempa}

\protected\edef\Ws{W\gmu@tempa}

\pdef\Wz{W\kern-0,05em\penalty10000\hskip0sp\relax z}


\pdef\leftslanting@{%
  \def\litdimen{\strip@pt\fontdimen1\font ex}%
  \def\litcorrection{%
    \ifhmode\null\nobreak\hskip\litdimen\relax\fi}%
  \def\litkern{% note it's to be used inside the left slanted font,
    % unlike \incmd\litcorrection, intended to be used \emph{before}
    % switching to left slant/italic.
    \leavevmode\null
    \kern-\litdimen\relax}%
  \def\dilitkern{\kern\litdimen\litkern}%
  % \stanza
  \pdef\litshape{% \changes{v0.93}{2008/08/22}{copied here from
    % E.~Szarzyński's \ty{The Letters}}
    \litcorrection
    \itshape
    \@tempdima=-2\fontdimen1\font
    \advance\leftskip by\strip@pt\fontdimen1\font ex % to assure at
    % least the lowercase letters not to overshoot to the (left)
    % margin. Note this has any effect only if there is a~\incs{par} in
    % the scope.
    \litcorrection
    \edef\gmu@tempa{%
      \@nx\addfontfeature{FakeSlant=\strip@pt\@tempdima}}%^^B
    % \ilrr when not \incs{edef}ed, it caused an error, which is
    % perfectly understandable.
    \gmu@tempa}%
  %
  %
  \pdef\textlit##1{% \changes{v0.93}{2008/08/22}{added}
    {\litshape##1}}%
  %
  \pdef\lit{\rm\litshape}%
  %
  %
  \pdef\lsl{{%
      \litcorrection
      \it
      % \changes{v0.93}{2008/08/22}{copied here from E.~Szarzyński's \ty{The
      %     Letters}}
      \@tempdima=-\fontdimen1\font
      \litcorrection
      \xdef\gmu@tempa{%
        \@nx\addfontfeature{RawFeature={slant=\strip@pt\@tempdima}}}}%
    \rm  % Note in this declaration we left-slant the basic Roman font
    % not the itshape of the current family.
    \gmu@tempa}%
  %
  % Now we can redefine \cs{em} and \cs{emph} to use left Italic for
  % nested emphasis. In Polish typesetting there is bold in nested
  % emphasis as I~have heard but we don't like bold since it perturbs
  % homogeneous greyness of a~page. So we introduce a~three-cycle
  % instead of two-: Italic, left Italic, upright.
  %
  \pdef\em{%\changes{v0.93}{2008/08/22}{added}
    \ifdim\fontdimen1\font=\z@  \itshape
    \else
      \ifdim\fontdimen1\font>\z@ \litshape
      \else \upshape
      \fi
    \fi}%
  %
  %
  \pdef\emph##1{% \changes{v0.93}{2008/08/22}{added}
    {\em##1}}%
}% of \cs{leftslanting@}.

\pdef\leftslanting{\AtBeginDocument\leftslanting@}

\AtBeginDocument{\let\leftslanting\leftslanting@}


\def\romorzero#1{%
  \ifnum#1=0 zero\else\romannumeral#1 \fi}

\DeclareCommand\fakeonum{%
  o %  fake bold for the digit »2« (for which emboldening improves
  % look),
  >Pm   %  the text to fake old-style numbers in.
}{%\
  % I~tried to use this command as a~declaration but active digits are
  % very uncomfortable, e.g.\ you can't define macros with arguments.
  % \chgs{2008/12/04 v0.98 added}
  \gmu@if@onum{#2}{%
    \begingroup
    \edef\gmu@tempa{#2}%
    \makeatletter%
    \gmuIfValueT{#1}{%
      \prependtomacro\fake@onum@ii{%
        \begingroup\addfontfeature{FakeBold=#1}}%
      \addtomacro\fake@onum@ii\endgroup
    }%
    \endlinechar\m@ne % to suppress the line end added by
    % |\scantokens|, especially in active |^^M|'s scopes.
    \gmu@dofakeonum
    \@xa\scantokens\@xa{\gmu@tempa}%
    \endgroup
  }% of |\gmu@ifonum| ‘else’.
}% of |\fakeonum|.

\def\gmu@dofakeonum{%
  \def\do##1{%
    \catcode`##1\active
    \scantokens{%
      \@xa\let\@xa##1%
      \csname fake@onum@\@xa\romorzero\string##1\endcsname\empty}}%
  \do0\do1\do2\do3\do4\do5\do6\do7\do8\do9%
}

\def\do#1#2{%
  \@namedef{fake@onum@\romorzero#1}{#2}}

\def\gmu@tempa#1{%
  \do#1{\leavevmode
    \gmu@calculateslant{#1}% uses \incs{gmu@tempa} and
    % \incs{gmu@tempb}, therefore goes first. And defines \incs{gmu@tempd}.
    \gmu@measurewd{#1}% the width of char |#1| is in \incs{gmu@tempa}
    % without kerning and in \incs{gmu@tempb} with kerning.
    %
    \edef\gmu@tempc{\the\fontcharht\font`#1}%
    \hbox to \gmu@tempb {%
      \hss\resizebox{\gmu@tempa}%
      {\dimexpr\fontdimen5\font+\gmu@tempc-\fontdimen8\font}%
      {\gmu@tempd#1}\hss}}}

\gmu@tempa0 % |\fake@onum@zero|
\gmu@tempa1 % |\fake@onum@i|
\gmu@tempa2 % |\fake@onum@ii|

\def\gmu@tempa#1{%
  \do#1{\leavevmode
    \gmu@measurewd{#1}%
    \lower
    \dimexpr\fontdimen8\font-\fontdimen5\font\relax
    \hbox to \gmu@tempb {\hss#1\hss}}%
}

\gmu@tempa3 % |\fake@onum@iii|
\gmu@tempa4 % |\fake@onum@iv|
\gmu@tempa5 % |\fake@onum@v|
\gmu@tempa7 % |\fake@onum@vii|
\gmu@tempa9 % |\fake@onum@ix|

\def\gmu@tempa#1{% to preserve pseudo-kerning in digits sequences.
  \do#1{\leavevmode
  \gmu@measurewd#1%
  \hbox to \gmu@tempb {\hss#1\hss}}}

\gmu@tempa6 % |\fake@onum@vi|
\gmu@tempa8 % |\fake@onum@viii|

\protected\def\gmu@if@onum{%
  \edef\gmu@tempa{\@xa\meaning\the\font}%
  \@xa\@ifinmeaning\detokenize{+onum}\of\gmu@tempa
}

\pdef\gmu@getslant{% we define |\gmu@tempa| to the (fake) slant of current font.
  \edef\gmu@tempa{\@xa\meaning\the\font\detokenize{slant=0,}}%
  \edef\gmu@tempb{%
    \def\@nx\gmu@tempb####1%
    \detokenize{slant=}%
    ####2,####3}%
  \gmu@tempb\@nil{##2}%
  \edef\gmu@tempa{\@xa\gmu@tempb\gmu@tempa\@nil pt}%
}

\def\gmu@calculateslant#1{%
  \gmu@getslant
  \edef\gmu@tempa{\the\numexpr\dimexpr\fontdimen1\font + \gmu@tempa}%\
  % \incs{gmu@tempa} bears the number of scaled points of total slant
  % (\inverb|\fontdimen1\font|${}+$\inverb|slant=…| if present) per 1pt
  % of \inhash1.\ilrr
  \edef\gmu@tempa{\the\numexpr \gmu@tempa *
    \numexpr\fontdimen5\font\relax/\numexpr\fontcharht\font`#1
    \relax}%\
  % we scale the total slant of \inverb|#1| by the ratio of original
  % and scaled height of \inverb|#1|.
  \edef\gmu@tempd{%
    \the\dimexpr \gmu@tempa sp  - \fontdimen1\font}%\
  % and we subtract slant-fontdimen from the scaled total slant.
  \ifdim\gmu@tempd=\z@ \emptify\gmu@tempd
  \else\edef\gmu@tempd{%
    \@nx\addfontfeature{FakeSlant=\strip@pt\dimexpr\gmu@tempd}}%
  \fi}

\DeclareCommand\gmu@cepstnof{O{\gmu@tempa}% a~cs to be |\xdef|ed the
  % font specification,
  s% not used really,
  m% |\fontspec| token or name of feature font (\inverb|Italic|, \inverb|Bold|,
   % \inverb|SmallCaps|, \inverb|BoldItalic| ),
  O{, Scale=MatchLowercase}% \pk{fontspec}  font features (key=val)
}
{% |\gmu@cepstnof|'s body
  \def\gmu@cepstnof@resc##1:##2:\@nil{%
    \ifx:##2:\else RawFeature={\gmu@maybestripcomma##2,,\@nil} \fi}%
  % \stanza
  \def\gmu@cepstnof@resd##1/##2/\@nil{% to check whether font name
    % contains |/| (which may not be true!)
    \ifx&##2&\@xa\@firstoftwo\else\@xa\@secondoftwo\fi}%
  % \stanza
  \def\gmu@cepstnof@rese##1:##2:\@nil{% to check whether the font name
    % contains |:| when it doesn't contain |/|.
    \ifx&##2&\@xa\@firstoftwo\else\@xa\@secondoftwo\fi}%
  % \stanza
  \edef\gmu@cepstnof@resa{%
    % now, reserved B parses the font name and features. It uses an
    % auxiliary reserved C because after |/| may be or may not be
    % features specification.
    \@xa\@xa\@xa\gmu@cepstnof@resd\@xa\meaning\the\font//\@nil
    {% font name doesn't contain a~slash
      \@xa\@xa\@xa\gmu@cepstnof@rese\@xa\meaning\the\font::\@nil
      {% nor does it contain a~colon
        \def\@nx\gmu@cepstnof@resb\detokenize{select font
          "}####1\detokenize{"}####2\@nx\@nil{%
          \ifx\fontspec#3%
            \@nx\@nx\@nx\fontspec[\@gobble#4\@empty]{####1}% gobble a~comma
          \else
            #3Font={####1}, #3Features={\@gobble #4\@empty}%
          \fi
        }%
      }%
      {% no slash but there is a~colon
        \def\@nx\gmu@cepstnof@resb\detokenize{select font
          "}####1:####2\detokenize{"}####3\@nx\@nil{%
          \ifx\fontspec#3%
            \@nx\@nx\@nx\fontspec[\@nx\gmu@cepstnof@resc####2::\@nx\@nil#4]{####1}%
          \else
            #3Font={####1}, #3Features={\@nx\gmu@cepstnof@resc####2::\@nx\@nil#4}%
          \fi
        }%
      }%
    }% of ‘no slash’ case
    {% font name contains a~slash
      \def\@nx\gmu@cepstnof@resb\detokenize{select font
        "}####1/####2\detokenize{"}####3\@nx\@nil{%
        \ifx\fontspec#3%
          \@nx\@nx\@nx\fontspec[\@nx\gmu@cepstnof@resc####2::\@nx\@nil#4]{####1}%
        \else
          #3Font={####1}, #3Features={\@nx\gmu@cepstnof@resc####2::\@nx\@nil#4}%
        \fi
      }% of |\gmu@cepstnof@resb|
    }% of ‘slash present’ case
  }\gmu@cepstnof@resa
  \xdef#1{\@xa\@xa\@xa\gmu@cepstnof@resb\@xa\meaning\the\font\@nil}%
}%

\def\gmu@stripcomma#1,{#1}

\def\gmu@maybestripcomma#1,,#2\@nil{#1}

\pdef\gmu@setbasefont{\@xa\let\@xa\gmu@basefont\the\font}

\let\setbasefont\gmu@setbasefont

\DeclareCommand\gmu@calc@scale{%
  O{1}% a~factor,
  m% number of the fontdimen
  }
{\begingroup
  % We ‘descale’ the current font:\nostanza
  \gmu@cepstnof\fontspec[, Scale=1]\gmu@tempa
  \@xa\let\@xa\gmu@currfont@descaled\the\font
  \gmu@basefont
  \gmu@cepstnof\fontspec[, Scale=1]\gmu@tempa
  % \nostanza now also the base font is descaled.
  \xdef\gmu@fontscale{%
    \strip@pt
    \dimexpr  1pt *
     \numexpr\dimexpr#1\fontdimen#2\font\relax\relax /
    \numexpr\fontdimen#2\gmu@currfont@descaled\relax
    \relax}%
  \endgroup}


\def\gmu@tilde{%
  \leavevmode\lower.8ex\hbox{$\,\widetilde{\mbox{ }}\,$}}
\AtBeginDocument{% to bypass redefinition of |\~| as a~text command
  % with various encodings
  \pdef\texttilde{%
    % \changes{v0.83}{2007/08/22}{postponed to
    %   \cs{begin\{document\}} to avoid overwriting by a~text command
    %   and
    %   made sensible to a~subsequent
    %   /} % \changes{v0.86}{2007/12/11}{renamed from \cmd\~
    % since the latter is one of \LaTeX's\ accents}
    \@ifnextchar/{\gmu@tilde\kern-0,1667em\relax}\gmu@tilde}}

\foone{\catcode`\^^M\active}% the comment signs here are crucial.
{\def\defobeylines{\catcode`\^^M=13 \def^^M{\par}}}


\def\deksmallskip{\vskip\smallskipamount}
\def\undeksmallskip{\vskip-\smallskipamount}
\def\dekmedbigskip{\vskip\glueexpr \medskipamount+\smallskipamount}
\def\dekmedskip{\vskip\medskipamount}
\def\dekbigskip{\vskip\bigskipamount}

\def\hfillneg{\hskip 0pt plus -1fill\relax}

\newcommand*{\TODO}[1][]{{%
    \sffamily\bfseries\huge TO-DO!\if\relax#1\relax\else\space\fi#1}}
\newcommand*\twocoltoc{%
  \RequirePackage{multicol}%
  \def\@starttoc##1{%
    \begin{multicols}{2}\makeatletter
      \NamedInput % changed from |\@input| 2010/8/13.
      {\jobname .##1}%
      \if@filesw \@xa \newwrite \csname tf@##1\endcsname
        \immediate \openout \csname tf@##1\endcsname \jobname .##1\relax
      \fi
      \@nobreakfalse\end{multicols}%
  }% of |\starttoc|
}

\@onlypreamble\twocoltoc


\pdef\equals{\hunskip${}={}$\ignorespaces}
\pdef\eequals{\hunskip${}=={}$\ignorespaces}

\pdef\·{\hunskip${}·{}$\ignorespaces}


\def\freeze@actives{%
  \count\z@\z@
  %
  \@whilenum\count\z@<\@cclvi\do{%
    \ifnum\catcode\count\z@=\active
      \uccode`\~=\count\z@
      \uppercase{\let~\relax}%
    \fi
    \advance\count\z@\@ne}}


\newcommand*\ShowFont[1][6]{%
  \begin{multicols}{#1}[The current font (the \f@encoding\ encoding):]
    \parindent\z@
    \count\z@\m@ne
    \@whilenum\count\z@<\@cclv\do{
      \advance\count\z@\@ne
      \ \the\count\z@:~\char\count\z@\par}
  \end{multicols}}

\newcommand*\liturgiques[1][red]{% Requires the \pk{color} package.
  \gmu@RPfor{xcolor}\color%
  \newcommand*\czerwo{\small\color{#1}}% environment
  \newcommand{\czer}[1]{\leavevmode{\czerwo##1}}% we leave
  % vmode because if we don't, then \env{verse}'s |\everypar| would be
  % executed in a~group and thus its effect lost.
  \Store@Macro\*%
  \def\*{\czer{\storedcsname{*}}}%
  \def\+{\czer{†}}%
  \newcommand*\nieczer[1]{\textcolor{black}{##1}}%
}

\newcommand*\gmu@RPfor[3][]{% \changes{v0.93}{2008/08/30}{renamed from
  % \cs{gmu@RPif} and \#3 changed from a~csname to \CS}
  \ifx\relax#1\relax\emptify\gmu@resa
  \else \def\gmu@resa{[#1]}%
  \fi
  \@xa\RequirePackage\gmu@resa{#2}}

\AtBeginDocument{%
  \renewcommand*\gmu@RPfor[3][]{%
    \unless\ifdefined#3%
      \@ifpackageloaded{#2}{}{%
        \typeout{^^J! Package `#2' not loaded!!! (\on@line)^^J}}%
    \fi}}

\pprovide\continuum{%
  \gmu@RPfor{eufrak}\mathfrak\ensuremath{\mathfrak{c}}}

\def\iteracro{%
  \pdef\acro##1{%
    \begingroup
    \acropresetting
    \gmu@acrospaces##1 \gmu@acrospaces
    \endgroup
  }%
}

\emptify\acropresetting

\iteracro

\def\gmu@acrospaces#1 #2\gmu@acrospaces{%
  \gmu@acroiter#1\gmu@acroiter
  \ifx\relax#2\relax\else
    \space
    \afterfi{\gmu@acrospaces#2\gmu@acrospaces}% when |#2| is nonempty,
    % it is ended with a~space. Adding one
    % more space in this line resulted in
    % an infinite loop, of course.
  \fi
}

\def\gmu@acroiter#1{%
  \gmu@notif {x\@xa\@xa} {\@firstofmany#1\@undefined\@nil \gmu@acroiter}
  {\gmu@acrokernel{#1}%
    % and iterate
    \gmu@acroiter
  }% of if sentinel or not
  {}%
}

\def\gmu@acrokernel #1{%
  \gmu@if {cat} {a\@xanx\@firstofmany#1\@undefined\@nil}%
  {\gmu@if {num} {`#1=\uccode`#1\space }% a space to delimit numer
    % (without it further macros were
    % expanded which in this case are
    % |\expandafter\@firstoftwo\else\@secondoftwo| and this made the test didn't work.)
    {{\acrocore{#1}}}%
    {{#1}}% tu było |\smallerr|
  }%
  {#1}%
}

\pdef\acrocore{\smaller % was: |\scshape\lowercase|
}


\def\IMHO{\acro{IMHO}\spifletter}
\def\AKA{\acro{AKA}\spifletter}

\pdef\usc#1{{\addfontfeature{Letters=UppercaseSmallCaps}#1}}

\def\uscacro{\let\acrocore\usc}



\def\gmu@dekfraccsimple#1/#2{\leavevmode\kern.1em
  \raise.7ex\hbox{%^^A \udigits
    \gmu@fracfontsetup#1}\gmu@numeratorkern
  \dekfraccslash\gmu@denominatorkern
  {%^^A\udigits
    \gmu@fracfontsetup#2}%
  \if@gmu@mmhbox\egroup\fi}

\def\gmu@fracfontsetup{%
  \smaller[3]\addfontfeature{FakeBold=1}}

\def\dekfraccsimple{% \label{2292}
  \let\dekfracc@args\gmu@dekfraccsimple
}
\@ifXeTeX{\def\dekfraccslash{\char"2044 }}
{\def\dekfraccslash{/}} % You can define it as the fraction slash,
\dekfraccsimple



\newcommand*\ikern{\,\penalty\@M\hskip\z@skip\relax}


\def\gmu@scapLetters#1{%
  \ifx#1\relax\relax\else% two |\relax|es to cover the case of empty |#1|.
    \ifcat a\@nx#1\relax
      \ifnum\the\lccode`#1=`#1\relax
        {\fakescapscore\MakeUppercase{#1}}% not Plain |\uppercase|
                                % because that works bad with \pk{inputenc}.
      \else#1%
      \fi
    \else#1%
    \fi%
    \@xa\gmu@scapLetters
  \fi}%
\def\gmu@scapSpaces#1 #2\@nil{%
  \ifx#1\relax\relax
  \else\gmu@scapLetters#1\relax
  \fi
  \ifx#2\relax\relax
  \else\afterfi{\ \gmu@scapSpaces#2\@nil}%
  \fi}
\def\gmu@scapss#1\@nil{{\def~{{\nobreakspace}}%
    \gmu@scapSpaces#1 \@nil}}%|% \def\\{{\newline}}\relax|

\pdef\fakescaps#1{{\gmu@scapss#1\@nil}}

\let\fakescapscore\gmu@scalematchX

\def\tinycae{{\tiny\AE}}% to use in |\fakescaps[\tiny]{…}|

\RequirePackage{calc}


\@ifpackageloaded{fontspec}{%
  \def\gmu@scalar{1.0}%
  \def\zf@scale{}%
  \def\gmu@scalematchX{%
    \begingroup
      \ifx\zf@scale\empty\def\gmu@scalar{1.0}%
      \else\let\gmu@scalar\zf@scale\fi
      \setlength\@tempdima{\fontdimen5\font}% 5---ex height
      \setlength\@tempdimb{\fontdimen8\font}% 8---\XeTeX\ synthesised
      % uppercase height.
      \divide\@tempdimb by1000\relax
      \divide\@tempdima by\@tempdimb
      \setlength{\@tempdima}{\@tempdima*\real{\gmu@scalar}}%
      \gmu@ifundefined{fakesc@extrascale}{}{%
        \setlength{\@tempdima}{\@tempdima*\real{\fakesc@extrascale}}}%
      \@tempcnta=\@tempdima
      \divide\@tempcnta by 1000\relax
      \@tempcntb=-1000\relax
      \multiply\@tempcntb by\@tempcnta
      \advance\@tempcntb by\@tempdima
      \xdef\gmu@scscale{\the\@tempcnta.%
        \ifnum\@tempcntb<100 0\fi
        \ifnum\@tempcntb<10 0\fi
        \the\@tempcntb}%^^A{\strip@pt\@tempdimc}%
    \endgroup
    \addfontfeature{Scale=\gmu@scscale}%
  }}{\let\gmu@scalematchX\smallerr}

\def\fakescextrascale#1{\def\fakesc@extrascale{#1}}

\newcommand*\wyzejnizej[1]{%
  \edef\gmu@tempa{\gmu@ifundefined{r@#1}{\arabic{page}}{%
      \@xa\@xa\@xa\@secondoftwo\csname r@#1\endcsname}}%
  \ifnum\gmu@tempa<\arabic{page}\relax wy\.zej\fi
  \ifnum\gmu@tempa>\arabic{page}\relax ni\.zej\fi
  \ifnum\gmu@tempa=\arabic{page}\relax \@xa\ignorespaces\fi
}



\def\napapierkistretch{0,3pt}% It's quite much for 11/13pt leading.

\def\napapierkicore{\advance\baselineskip%
  by 0ptplus\napapierkistretch\relax}

\DeclareEnvironment{napapierki}{s}{%
  % \chgs{2009/01/05 v0.98 added optional star controlling globalness}
  \par\gmuIfValueT{#1}{\global}%
  %
  \napapierkicore}
{%
  \par
  \gmuIfValueT{#1}{\global\baselineskip=1\baselineskip\relax
  }%
}% so that you can use  \inverb|\napapierki*›…\endnapapierki*|


\newcount\gmu@luzniej

\newcommand*\luzniejcore[1][1]{%
  \advance\gmu@luzniej\@ne% We use this count to check whether we open
  % the environment or just set |\looseness| inside it again.
  \ifnum\gmu@luzniej=\@ne  \multiply\tolerance by 2 \fi
  \looseness=#1\relax}

\newenvironment*{luzniej}{\par\luzniejcore}{\par}

\newenvironment*{luzniej*}[1][1]{%
  \multiply\tolerance by 2\relax
  \everypar{\looseness=#1\relax}}{\par}

\newcommand*\nawj{\kern0,1em\relax}% a~kern to be put between

\def\pauza@skipcore{\hskip0.2em plus0.1em\relax
  \pauzacore
  \@ifnextanyIS {,;:}%
  {% 2009/11/22 added a special case of a comma following pauza,
    % 2011/02/22, 13.33 extended to colon and semicolon (well, the
    % latter should not happen in such a position but a colon did (in
    % Polish)).
  }{\hskip.2em plus0.1em\relax\ignorespaces}}%
\def\ppauza@skipcore{\unskip\penalty10000\hskip0.2em plus0.1em\relax
          \ppauza@dash\hskip.2em plus0.1em\ignorespaces}

\AtBeginDocument{%
  \pdef\pauza{%
    \ifhmode
      \unskip\penalty10000
      \hskip0.2em plus0.1em\relax
      \pauzacore\hskip.2em plus0.1em\relax\ignorespaces%
    \else
      \pauzadial
    \fi
  }%
  %
  % According to \tytul{Instrukcja technologiczna.\ Skład ręczny ^^B
  %   i~maszynowy} the dialogue dash (in Polish) should be followed by
  % a~rigid hskip of \dekfracc1/2\,em.
  \pdef\pauzadial{%
    \ifhmode\unskip\quad\else\leavevmode\fi
    \pauzacore\penalty10000\hskip0,5em\ignorespaces
  }
  %
  % And a~version with no space at the left, to begin a~|\noindent|ed
  % paragraph explaining e.g.\ a~quotation:
  \pdef\lpauza{%
    \leavevmode
    \pauzacore\hskip.2em plus0.1em\ignorespaces}%
  %
  % We define |\ppauza| as an en dash surrounded with thin stretchable
  % spaces and sticking to the upper line or bare but discretionary
  % depending on the next token being space${}_10$. Of course you'll
  % never get such a~space after a~literal \CS so an explicit |\ppauza|
  % will always result with a~bare discretionary en dash, but if we
  % |\let–\ppauza|…
  % \stanza
   \pdef\ppauza{%
    \ifvmode    \PackageError{gmutils}{%
      command \bslash ppauza (en dash) not intended for vmode.}{%
      Use \bslash ppauza (en dash) only in number and numeral ranges.}%
    \else
      \unskip\discretionary
      {\ppauza@dash}{\ppauza@dash}{\ppauza@dash}%
    \fi}%
}% of at begin document

\ifdefined\XeTeXversion
\AtBeginDocument{% to be independent of moment of loading of \pk{polski}.
  \pdef\—{%
    \ifhmode
      \unskip\penalty10000
      \afterfi{%
        \@ifnextanyRS { ,;:}% was comma as a special case; 2011/02/22,
        % 13.32 added colon and semicolon.
        %
        % The above needs some explanation, I suppose. We check if next token
        % is blank space or some punctuations, for which purpose we
        % use \inverb|\@ifnextanyRS|, where |RS| stands for
        % “respecting space”. So if next is a space it turns true. Then
        % \inverb|\pauza@skipcore|'s test does not respect space
        % (gobbles it) and typesets punctuators with no skip while a
        % blank replaces with a skip.
        %
        {\pauza@skipcore}%
        {\@ifnextMac{\pauza@skipcore}%
          {\pauzacore\penalty\hyphenpenalty\hskip\z@skip}%
        }%
      }% of |\afterfi|'s argument
      \else
    % \nostanza According to \tytul{Instrukcja technologiczna.\ Skład ręczny ^^B
    % i~maszynowy} the dialogue dash should be followed by a~rigid
    % hskip of \dekfracc1/2\,em.\nostanza
      \leavevmode\pauzacore\penalty10000\hskip0,5em\ignorespaces
    \fi
  }%
  % The next command's name consists of letters and therefore it eats
  % any spaces following it, so |\@ifnextspace| would always be
  % false, therefore we don't use it.\nostanza
  \pdef\–{%
    \ifvmode    \PackageError{gmutils}{%
      command \bslash ppauza (en dash) not intended for vmode.}{%
      Use \bslash ppauza (en dash) only in number and numeral ranges.}%
    \else
      \afterfi{%
        \@ifnextspace{\ppauza@skipcore}{%
          \@ifnextMac\ppauza@skipcore
          {\unskip\discretionary
            {\ppauza@dash}{\ppauza@dash}{\ppauza@dash}}}%
      }%
    \fi
  }%
  %
  \def\emdash{\char`\—}
}% of at begin document

\def\longpauza{%
  \def\pauzacore@long{—}%
  \let\pauzacore\pauzacore@long
}
\longpauza

\def\shortpauza{%
  \def\pauzacore@short{\hbox{–\kern,23em\relax\llap{–}}}%
  \let\pauzacore\pauzacore@short
}%
\def\ppauza@dash{–}%

\else % not \XeTeX
\def\longpauza{\def\pauzacore{---}}
\longpauza
\def\shortpauza{%
  \def\pauzacore{--\kern,23em\relax\llap{--}}}%
\def\ppauza@dash{--}%

\fi% of if \XeTeX\ or not.

\ifdefined\XeTeXversion

\foone{\catcode`—\active \catcode`–\active \catcode`-\active}{%\label{not@ifundef}
  \def\adashes{\AtBeginDocument\adashes}% because |\pauza|
  % is defined at begin document.
  \AtBeginDocument{\def\adashes{%
      \catcode`—\active \def—{\—}%
      \catcode`–\active \def–{\–}%
      \addtomacro\dospecials{\do\–\do\—}%
      \addtomacro\@sanitize{\@makeother\–\@makeother\—}%
      \addtomacro\gmu@septify{\do\–13\do\—13\relax}%
}}}
\else
\relaxen\adashes
\fi


\def\gmu@dywiz{\ifmmode-\else
  \ifvmode-\else\afterfifi\dywiz\fi\fi}%

\foone{\catcode`-\active}{% aktivnyj diefis aktywny dywiz active hyphen
    \def\ahyphen{\let-\gmu@dywiz\catcode`\-\active}}

\newcommand*\czas[1][.]{%
  \the\numexpr(\time-30)/60\relax#1%
  \@tempcnta=\numexpr\time-(\time-30)/60*60\relax
  \ifnum\@tempcnta<10 0\fi\the\@tempcnta}

\newenvironment*{tytulowa}{\newpage}{\par\thispagestyle{empty}\newpage}

\def\nazwired{\quad\textsc}


\pdef\polskadata{%
  \DeclareCommand\gmu@datefsl{%
    ##1    Q{0123456789\bgroup}>iT{/-} % year
    ##2    Q{0123456789\bgroup}>iT{/-} % month
    ##3    Q{0123456789\bgroup} % day
                 >is % terminator of date scanning that will be gobbled
    ##4    T{,}% another terminator of date, but this will be printed
    ##5    K{##1\gmu@datefsl} % additional stuff after comma (or instead date)
  }{%
      \gmuIfValueF{##2}{\gmuPutIfValue{##3}}%
      \gmuIfValueT{##2}{%
        \@tempcnta=0##3\relax\the\@tempcnta
        \ifcase##2\relax\or\ stycznia\or\ lutego%
        \or\ marca\or\ kwietnia\or\ maja\or\ czerwca\or\ lipca\or\ sierpnia%
        \or\ września\or\ października\or\ listopada\or\ grudnia\else
        {}%
        \fi}%
        \gmuIfValueT{##1}{\space ##1}%
        \gmuPutIfValue{##4}%
        \gmu@ifempty{##5}{}{ ##5}%
      }% of \incs{gmu@datefsl}.
  }% of |\polskadata|

\polskadata

\pdef\englishdate{%
  \DeclareCommand\gmu@datefsl{%
    Q{0123456789\bgroup}>iT{/-} % (1) year
    Q{0123456789\bgroup}>iT{/-} % (2) month
    Q{0123456789\bgroup} % (3) day
    >is
    T{,}  K{##1\gmu@datefsl} % (4, 5) additional stuff after comma
  }{%
    \gmuIfValueF{##2}{\gmuPutIfValue{##3}}%
    \gmuIfValueT{##2}{%
      \ifcase##2\relax\or January\or February%
        \or March\or April\or May\or June\or July\or August%
        \or September\or October\or November\or December\else
        {}%
      \fi}%
    \space
    \@tempcnta=##3\relax\the\@tempcnta,
    \gmuIfValueT{##1}{ ##1}%
    \gmuPutIfValue{##4}%
    \gmu@ifempty{##5}{}{ ##5}%
  }% of \incs{gmu@datefsl}.
}%

\newif\ifdate
\pdef\bidate #1{%
  \gmu@datefsl#1\gmu@datefsl
}

\DeclareCommand\linedate{s{}m}
{%
  \par
  \linedate@hook #1#2\@nil%
  \addvspace{\dateskipamount}%
  \possvfil% if we put it before |\addvspace|, the v-space is always
  % added.
  %
  \ifdate
    % ^^U     \addvspace{\dateskipamount}%
    \if@CofaćPrzedDatą@
      \penalty\@M
      \vskip-0,5\baselineskip
    \else
      \@CofaćPrzedDatą@true
    \fi
    %
    \date@line{\DateFont \bidate{#1#2}}%
    \nopagebreak
    % ^^U   \else%|%\ifnum\arabic{dateinsection}>0\dekbigskip\fi|
    % ^^U     \addvspace{\bigskipamount}\possvfil
  \fi
}% end of |\linedate|.

\newif\if@CofaćPrzedDatą@
\@CofaćPrzedDatą@true

\pdef\NoPredate {\@CofaćPrzedDatą@false}

\newcommand*\DateFont{\footnotesize\itshape}

\def\linedate@hook #1\@nil{}

\newskip\dateskipamount
\dateskipamount\medskipamount

\pdef\rdate{\let\date@line\rightline \linedate}

\def\date@left#1{\par{%
    \raggedright#1%
    \leftskip\z@skip
    \@@par}}%

\pdef\ldate{%\changes{v0.94}{2008/09/06}{\cs{leftline}
  % replaced with \cs{par}…\cs{par} to work well with \pk{floatflt}}
  \let\date@line\date@left
  \linedate}

\newcommand*\runindate[1]{%
  \paragraph{\footnotesize\itshape \gmu@datef#1\gmu@datef}%
  \stepcounter{dateinsection}}
\let\thedate\ldate

\pdef\zwrobcy#1{\emph{#1}} %ostinato, allegro con moto,
                                %garden party etc., także kompliment

\pdef\tytul#1{\emph{#1}}

\newenvironment{maszynopis}[1][]{#1\ttfamily
  \hyphenchar\font=45\relax% this assignment is global for the font.
  \@tempskipa=\glueexpr\rightskip+\leftskip\relax
  \ifdim\gluestretch\@tempskipa=\z@
  \tolerance900
  % \nostanza it worked well with tolerance \equals 900.\nostanza
  \advance\rightskip by\z@ plus0,5em\relax\fi
  \fontdimen3\font=\z@% we forbid stretching spaces…\par\nostanza\gmdnoindent
  %|%  \fontdimen4\font=\z@| but allow shrinking them.\nostanza
  \hyphenpenalty0 % not to make \TeX\ nervous: in a~typewriting this
  % marvellous algorithm of hyphenation should be turned off and every
  % line broken at the last allowable point.
  \Store@Macro\pauzacore
  \def\pauzacore{-\rlap{\kern-0,3em-}-}%
}{\par}

\pdef\justified{%
  \leftskip=1\leftskip% to preserve the natural length and discard
  % stretch and shrink.
  \rightskip=1\rightskip
  \parfillskip=1\parfillskip
  \advance\parfillskip by 0sp plus 1fil\relax
  \let\\\@normalcr}

\DeclareCommand\fullpar{%
  T{+-}%
  Q{+-0123456789} % optional looseness (most probably negative)
}{%
  \begingroup
  \gmuIfValueT{#1}{\looseness=#1\gmuIfValueTF{#2}{#2}{1}\relax
    \multiply\tolerance by \tw@
  }%
  \fullparcore
  \par
  \endgroup}

\pdef\fullparcore{%
  \hunskip
  \parfillskip\z@skip}

\newcommand*\twoparinit{% the name stands for `\emph{last} paragraph
  % line's length \emph{min}imum \emph{two} \incs{parindent}.
  \def\twopar@defts{%
    \hsize-\leftskip-\rightskip-\fontcharwd\font`…}%
  \def\twopar@atleast{2\@parindent}%
  \DeclareCommand\twopar{%
    T{+-}% (1) you can specify loosening the paragraph by one only by
         % typing single |+| and tightening by one by typing single |-|.
    Q{+-0123456789}% (2)
    A{\twopar@atleast}% (3)
    >iT{\cipolagwa}}{%
    \begingroup
    \gmuIfValueT{##1}{%
      \looseness=##1\gmuIfValueTF{##2}{##2}{1}\relax
      \multiply\tolerance by2
    }%
    \twoparcore<##3>%
    \endgraf
    \endgroup
  }% of \incmd\twopar.
  % \stanza
  \ifdefined\XeTeXversion
    \DeclareCommand\twoparcore{%
      A{\twopar@atleast}
      \gobblespace
    }{%
      \hunskip % it's \ac{O.K.} it's in a~group, it'll work anyway.
      \edef\gmu@tempa{\the\dimexpr\twopar@defts-##1\relax}%
      \parfillskip=\glueexpr\gmu@tempa minus \gmu@tempa
      \relax% to delimit |\glueexpr|.
      \relax% to delimit the assignment.
    }%
  \else % not \XeTeX---doesn't use |\fontcharwd|.
    \DeclareCommand\twoparcore{%
      A{\twopar@default}
      \gobblespace
    }{%
      \hunskip % it's \ac{O.K.} it's in a~group, it'll work anyway.
      {\setbox0=\hbox{\dots}%
        \xdef\gmu@tempa{\the\wd0}}%
      \edef\gmu@tempa{%
        \the\dimexpr\hsize-\leftskip-\rightskip
        -\gmu@tempa-2\@parindent\relax}%
      \parfillskip=\glueexpr\gmu@tempa minus \gmu@tempa
      \relax% to delimit |\glueexpr|.
      \relax% to delimit the assignment.
    }%
  \fi
  % \stanza
  \AtBeginDocument{%
    \def\restoreparindent{\parindent\@parindent}%
  }% of \cmd\AtBeginDocument.
}% of \cs{twoparinit}.


\def\gmu@leftskipcorr{%
  \kern1\leftskip
  \ifcsname \@currenvir leftskip\endcsname
    \kern-1\csname \@currenvir leftskip\endcsname
  \fi
}

\DeclareCommand\wherncore{om}{%\
  % \begin{enumargs}
  %   \dc optional value of \incs{hskip} of (left) indent of the parbox. If
  %   absent, parbox is aligned right;
  % \dc text for the datum parbox.
  % \end{enumargs}
  \gmuIfValueTF{#1}{\leftline{%
      \kern1\leftskip
      \whernfont
      \hskip#1\relax\parbox
      {\dimexpr\hsize-\leftskip-\rightskip-#1}%
      {#2}% of |\parbox|,
    }% of |\leftline|,
  }% of |ValueT{#1}|.
  {% |ValueF{#1}|:
    \rightline
    {\whernfont
      \whern@parbox{#2}%
      \kern1\rightskip
    }% of |\rightline|,
    \setprevdepth
  }% of |ValueF{#1}|,
}% of |\wherncore|.

\DeclareCommand\whern@parbox{%
  T {\leftskip\rightskip}% horizontal alignment of resulting box (the
  % side to be ragged)
  O{t} % vertical alignment of parbox
  >is % separator
  O{0,7666\hsize} % (3) width of parbox
  m % (4) parbox contents
}{%
  % \begin{enumargs}
  %   \dc S the skip of the ragged side,
  %   \dc the |\parbox|'s contents.
  % \end{enumargs}
  \parbox[#2]{#3}{%
    \gmuIfValueTF{#1}{#1}{\leftskip}=0sp plus \textwidth
    \parfillskip0sp\relax
    \let\\\linebreak
    \disobeylines
    \whernfont #4\unskip\strut\endgraf
    \getprevdepth
  }% of |\parbox|,
}% of |\whern@parbox|.

\def\whern{%
  \endgraf\nopagebreak
  \gmu@ifstar{\wherncore}%
  {\vskip\whernskip\wherncore}%
}

\let\whernfont\footnotesize

\newskip\whernskip
\whernskip2\baselineskip minus 2\baselineskip\relax

\foone{\obeylines}{%
  \DeclareCommand\whernup{%
#1    o % a~vskip before
    >is % separating star (ignored)
#2    o  % custom width of parbox
#3    >Pm%
#4    o % a vskip between this box and subsqt. text
    >iQ{ \par
    }%
  }% of args' spec
}% of obey lines
{\par
  \gmuIfValueT{#1}{\vskip#1\relax}%
  %
  % The \env{prosato} env. of \pk{gmverse}  \& derivs. set some
  % positive parskip and counterkrank its first occurrence by a vskip
  % of its negative. Therefore here we put ourselves in a |\rlap| and
  % put at the very beginning of a paragraph.
  \ifinner \noindent\nobreak\kern-1\leftskip \nobreak
    \rlap{%
      \vbox{%
      \fi % of if inner
      \leftline{%
        % ^^A        \gmu@leftskipcorr
        \gmuIfValueTF{#2}{\whern@parbox\rightskip[b][#2]}%
        {\whern@parbox\rightskip[b]}%
        {#3}%
      }%
      %
      \ifinner
        \gmuIfValueT {#4}{\vskip\glueexpr #4\endexpr }%
        \phantom{Ala ma Filifjonkgyr}%
      }% of vbox
    }% of rlap
    %
    \penalty\@M
    \kern 1\leftskip
    \@ifenvir{quote}{\hskip\z@skip}{\hskip\parindent\relax}%
  \else
    \gmuIfValueT {#4}{\vskip \glueexpr #4\endexpr }%
  \fi
}% of |\whernup|'s body.


\pdef\thousep#1{% a~macro that'll put the thousand separator between
  % every two three-digit groups.\par\nostanza
  % First we check whether we have at least five digits.
  %\changes{v0.93}{2008/08/23}{added}
  \gmu@thou@fiver#1\relax\relax\relax\relax\relax% we put five
  % \incs{relax}es after the parameter to ensure the string will meet
  % \incs{gmu\+@\+thou\+@\+fi\+ver}'s definition.\ilrr
  \gmu@thou@fiver{#1}{% if more than five digits:
    \emptify\gmu@thou@put
    \relaxen\gmu@thou@o\relaxen\gmu@thou@i\relaxen\gmu@thou@ii
    \@tempcnta\z@
    \gmu@thou@putter#1\gmu@thou@putter
    \gmu@thou@put
  }}

\def\gmu@thou@fiver#1#2#3#4#5\gmu@thou@fiver#6#7{% this macro only
  % checks if the text delimited with itself consists of at least five tokens/braces
  \ifx\relax#5\relax\@xa\@firstoftwo
  \else\@xa\@secondoftwo
  \fi{#6}{#7}}

\def\gmu@thou@putter #1#2{% we are sure to have at least five tokens
  % before the sentinel \incs{gmu@thou@putter}.
  \advance\@tempcnta\@ne
  \@tempcntb\@tempcnta
  \divide\@tempcntb3\relax
  \@tempcnta=\numexpr\@tempcnta-\@tempcntb*3
  \edef\gmu@thou@put{\@xau{\gmu@thou@put}\unexpanded{#1}%
    \ifx\gmu@thou@putter#2\else
      \ifcase\@tempcnta
        \gmu@thou@o\or\gmu@thou@i\or\gmu@thou@ii% all three
        % \CSes are yet  \incs{relax} so we may put them in
        % an \incs{edef} safely.\ilrr
      \fi
    \fi}% of \cs{edef}
  \ifx\gmu@thou@putter #2% if we are at end of the digits…
    \edef\gmu@tempa{%
      \ifcase\@tempcnta
        \gmu@thou@o\or\gmu@thou@i\or\gmu@thou@ii
      \fi}%
    \@xa\let\gmu@tempa\gmu@thousep% … we set the proper \CS…
  \else% or …
    \afterfi{%  iterate.
      \gmu@thou@putter#2}% of \cs{afterfi}
  \fi% of if end of digits.
}% of \cs{gmu@thou@putter}.

\def\gmu@thousep{\,}% in Polish the recommended thousand separator is

\pdef\xathousep#1{\@xa\thousep\@xa{\the#1}}

\def\shortthousep{%
  \DeclareCommand\thous{
    D {\NoValue} % decimal argument
  }{%
    % we declare it as a command with Q-type argument to allow spaces
    % between digits.
    \ifmmode\hbox\bgroup\@gmu@mmhboxtrue\fi
    \gmuIfValueTF{##1}{% we are given a sequence of digits
      \@tempcnta=##1\relax
      \ifnum\@tempcnta<0 $-$%
        \@tempcnta=-\@tempcnta
      \fi
      \xathousep\@tempcnta
      \if@gmu@mmhbox\egroup
      \else\@xa\spifletter
      \fi
    }%
    {% no bare digits given, then we assume the argument is braced.
      \thousep
    }%
  }% of |\thous|.
}% of |\shortthousep|.


\DeclareCommand\ATfootnotes{s}{% \chgs{2008/11/29 v0.98 moved here
  % from my own private macro package to allow the beauty of these
  % footnotes for the general audience}
  % \stanza
  % We make the footnote mark in the footnote |\scriptsize| not
  % |\scriptscriptsize|.\nostanza
  \gmuIfValueT{#1}% the following setting is suitable for old style
  % numbers in footnote marks, therefore I~place it in the starred
  % version of the command.
  {\prependtomacro\gmu@ATfootnotes{%
      \pdef\@makefnmark{%
        \mbox {\normalfont \textsuperscript {\smaller[3]\@thefnmark }}}%
    }% of prepend,
  }% of |\gmuIfValueT|.
  %
  \gmu@ATfootnotes
  \gmu@AT@ampulex\maketitle% without \pk{hyperref}
  \unless\if@HyOrg@maketitle@ampulexed@
    \ifdefined\HyOrg@maketitle
      \afterfi{\gmu@AT@ampulex\HyOrg@maketitle}% with \pk{hyperref}
    \fi
    \@HyOrg@maketitle@ampulexed@true
  \fi
}

\newif\if@HyOrg@maketitle@ampulexed@

\pdef\gmu@AT@ampulex #1{%
  \ampulexdef#1{\def\@makefnmark}%
  \if@twocolumn
  {\gmu@ATfootnotes\if@twocolumn}% Ampulex redefinition of
  % \incs{maketitle} for the standard classes.
  \ampulexdef#1{\long\def\@makefntext}%
  \if@twocolumn{\gmu@ATfootnotes\if@twocolumn}% Ampulex redefinition
  % of \incs{maketitle} for \pk{mwcls}.
}

\pdef\gmu@ATfootnotes{%
  % And we make the footnote number not be in superscript but on the
  % base line, according to Andrzej Tomaszewski's suggestion on
  % Bacho\TeX\ 2008, and the same size as in the footnote mark.\nostanza
  \long\pdef\@makefntext##1{%
    \ifdefined\@parindent \parindent\@parindent
    \else \parindent 1em\relax
    \fi
    \indent{\ATf@font\scriptsize% ^^A \hphantom{19}\llap
      {\@thefnmark}}%
    \gmu@fnhook
    \enspace\ignorespaces##1}%
}

\let\ATf@font\normalfont

\emptify\gmu@fnhook


\pdef\rrthis{% ‘rag right this’: make only the current paragraph
  % ragged right (e.g.\ if the paragraph consists of a~long \ac{URL}).
  % \chgs{2008/12/01 v0.98 added}
  \begingroup\rightskip=0sp plus \hsize \endgraf\endgroup}

\pdef\centerthis{% 2009/12/15
  \begingroup
  \rightskip=1\rightskip plus \hsize
  \leftskip=1\leftskip plus\hsize
  \parfillskip=\z@skip
  \endgraf\endgroup}


\def\TrzaskaTilde{%
  \@xa\DeclareCommand\@xa\gmu@smarttilde
  \@xa{\@xa T\@xa{\all@stars~}}{%
    \gmuIfValueTF{##1}{\nobreakspace{}}%
    {\ifdim\dimexpr\hsize-\leftskip-\rightskip
      -\ifdim\hangindent<\z@-\fi\hangindent % the last
      % parameter is used with respect to the \pk{floatflt} package.
      >%
        \ifdim\f@size pt>\dimexpr10pt-1sp\relax
          168dd
        \else
          144dd
        \fi
        \nobreakspace {}%
      \else
        \ %
      \fi
    }% of |\gmu@ifstar|'s else,
  }% of |\gmu@smarttilde|,
  \let~\gmu@smarttilde
}% of |\TrzaskaTilde|.


\newcommand{\clearemptydoublepage}{%
        \newpage{\pagestyle{empty}\cleardoublepage}}

\foone\obeylines{%
  \def\disobeylines{% for arguments in which line end is active to
    % simulate normal behaviour
    \ifnum\catcode`\^^M=\active%
      \pdef^^M{\@ifnextgroup{\ifhmode\unskip\space\fi}{\gmu@disMinner}}%
      \def\gmu@disMinner##1{%
        \ifx^^M##1\endgraf%
        \else\afterfi{\ifhmode\unskip\space\fi}\fi##1}%
    \fi}%
}


\DeclareCommand\*{Q{0123456789}{1}}
{\gmu@flexhyphen
  \gmu@star@loop0{#1}\relax
}%

\def\gmu@star@loop#1#2{% this is an expandable loop as in The
   % \eTeX\ Manual p.~9.
   \ifnum#1<\numexpr#2\relax%
     \gmu@lowstar
     \gmu@flexhyphen
     \@xa\gmu@star@loop
     \@xa{\number\numexpr#1+1\@xa}%
     \@xa{\number#2\@xa}%
   \fi}

\ifdefined\XeTeXversion

\foone{%
  \catcode`„\active
  \catcode`”\active
  \catcode`’\active
  \catcode`—\active
  \catcode`–\active
}{%
  \def\activequotes{%
    \incsdef„{}{\@ifnextchar—%
      {\lv\llap{\string„}\pauzadial}{\string„}}%
    \incsdef”{}{\string”\@ifnextanyRS{.,}{\quotkern}{}}%
    \incsdef’{}{\string’\@ifnextanyRS{.,}{\quotkern}{}}%
    \catcode`„\active
    \catcode`”\active
    }%
    \def\activepunctsQ {„”’—–}%
}

\catcode`ѥ\active

\DeclareCommand\ac {b} {%
  \gmuIfValueTF{#1}%
  {%
    \acro{#1}%
  }%
  {\ac@u}%
}

\def\ac@kernel#1{{\gmu@acrokernel {#1}}}% |#1| in braces because |\acrocore|
                                % valid in \ty{Dzienniczek} uses
                                % |\lowercase| (that requires  braced text).


\@xa\def\@xa\@dc@basicdelims\@xa{%
  \two@Ms \par \relax
  \bgroup
  \egroup \begingroup \endgroup
  \begin \end
  $% ^^A$
  \(\)\[\]% other math delims
  &\\% tabular delims
}

\let\@dc@basicdelimsp\@dc@basicdelims

\@xa\addtomacro\@xa\@dc@basicdelimsp
\@xa{\all@spaces}

\@xa\def\@xa\@dc@punctanddelims
\@xa{\@dc@basicdelims :,.;?!„”«»‹›"'`‘’}%

\let \@dc@acpunctanddelims \@dc@punctanddelims

\@xa\addtomacro\@xa\@dc@acpunctanddelims
\@xa{\activepunctsQ}

\let \@dc@acpunctanddelimsp \@dc@punctanddelims

\@xa\addtomacro\@xa\@dc@acpunctanddelimsp
\@xa{\all@spaces}

\addtomacro\@dc@acpunctanddelimsp{~}

\DeclareCommand\ac@u{
  >\@xa U {\@dc@acpunctanddelimsp ()[]<>ѥ} \default{}
  \eacher {\ac@kernel}
  >iW{ѥ}
}
{%
  \ifmmode\@xa\text\else\@xa\firstofone\fi{#1}%
}

\fi % of if \XeTeX\ of l.~\ref{12322}.

\@namedef{enumerate*}{%
  \ifnum\@enumdepth>\thr@@
    \@toodeep
  \else
    \advance\@enumdepth\@ne
    \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
    \@xa\list\csname label\@enumctr\endcsname{%
      \partopsep\topsep \topsep\z@ \leftmargin\z@
      \itemindent\@parindent %|%\advance\itemindent\labelsep|
      \labelwidth\@parindent
      \advance\labelwidth-\labelsep
      \listparindent\@parindent
      \usecounter \@enumctr
      \def\makelabel##1{##1\hfil}}%
  \fi}
\@namedef{endenumerate*}{\endlist}

\@namedef{itemize*}{%
  \ifnum\@itemdepth>\thr@@
    \@toodeep
  \else
    \advance\@itemdepth\@ne
    \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
    \@xa\list\csname\@itemitem\endcsname{%
      \partopsep\topsep \topsep\z@ \leftmargin\z@
      \itemindent\@parindent
      \labelwidth\@parindent
      \advance\labelwidth-\labelsep
      \listparindent\@parindent
      \def\makelabel##1{##1\hfil }}%
  \fi}
\@namedef{enditemize*}{\endlist}

\endinput
%%
%% End of file `gmtypos.sty'.
