summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/gmutils/gmutils.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-10-24 23:46:12 +0000
committerKarl Berry <karl@freefriends.org>2010-10-24 23:46:12 +0000
commite5d25989ee337ac9399ae9e50bed87559488814f (patch)
treee08fa9fe408fbbd07d82226b3fd8a059c8d39d7b /Master/texmf-dist/tex/latex/gmutils/gmutils.sty
parent5d35798dc0ca224df75f912f020c70024e1a1169 (diff)
gmutils (24oct10)
git-svn-id: svn://tug.org/texlive/trunk@20183 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/gmutils/gmutils.sty')
-rw-r--r--Master/texmf-dist/tex/latex/gmutils/gmutils.sty7203
1 files changed, 98 insertions, 7105 deletions
diff --git a/Master/texmf-dist/tex/latex/gmutils/gmutils.sty b/Master/texmf-dist/tex/latex/gmutils/gmutils.sty
index 745e0f86f03..52afda5be49 100644
--- a/Master/texmf-dist/tex/latex/gmutils/gmutils.sty
+++ b/Master/texmf-dist/tex/latex/gmutils/gmutils.sty
@@ -1,3430 +1,126 @@
-%
-% \GetFileInfo{gmutils.sty}
-% \title{The \pk{gmutils} Package\thfileinfo}
-% \author{Grzegorz Murzynowski}
-% \maketitle
-%
-% \let\ty\emph
-%
-% \begin{copyrnote}
-%
-%%Written by Grzegorz Murzynowski,
-%% natror at o2 dot pl
-%%
-%% \copyright\,2005, 2006, 2007, 2008, 2009, 2010 by Grzegorz Murzynowski.
+%%
+%% \iffalse ^^A we skip the debug setting
+\IfFileExists{\string~/bin/gen_and_xela}{\errorcontextlines=1000 }{}
+%% \fi
+%% ^^A $Id: TheUltimateMaster.gmd,v 0.250 2010/10/24 14:42:35 natror Exp natror $
+%% This is file “gmutils.sty” generated with the DocStrip utility.
+%%
%%
-%% This program is subject to the \LaTeX\ Project Public License.
-%% See ^^A
-%% \url{http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html} ^^A
-%% for the details of that license.\rrthis
+%% The original source files were:
%%
-%% LPPL status: "author-maintained".\par
+%% gmutils/gmutils.gmd (with options: `utils')
%%
-%% Many thanks to my \TeX\ Guru Marcin Woliński for his \TeX nical ^^A
-%% support.
-%
-%\end{copyrnote}
%%
+%% Copyright © 2005, 2006, 2007, 2008, 2009, 2010
+%% by Grzegorz ‘Natror’ Murzynowski
+%% natror (at) o2 (dot) pl
+%%
+%% 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.
%%
-% \RecordChanges
-% \ChangesStart{}{1000/00/0}
-%
-% \chschange{v0.59}{06/09/04}{396}
-% \chschange{v0.61}{06/09/06}{432}
-% \chschange{v0.62}{06/9/7}{444}
-% \chschange{v0.65}{06/9/28}{700}
-% \chschange{v0.66}{06/10/5}{698}
-% \chschange{v0.67}{06/10/11}{739}
-% \chschange{v0.68}{06/10/12}{812}
-% \chschange{v0.69}{06/10/17}{844}
-% \chschange{v0.70}{06/10/20}{852}
-% \chschange{v0.71}{06/10/27}{876}
-% \chschange{v0.72}{06/11/14}{906}
-% \chschange{v0.74}{06/12/1}{1185}
-% \chschange{v0.76}{07/4/9}{1538}
-% \chschange{v0.77}{07/4/14}{1547}
-% \chschange{v0.78}{07/4/26}{1685}
-% \chschange{v0.80}{2007/4/29}{1689}
-% \chschange{v0.84}{2007/11/13}{2684}
-% \chschange{v0.85}{2007/11/16}{2795}
-% \chschange{v0.87}{2008/8/3}{4027}
-% \chschange{v0.88}{2008/8/3}{4040}
-% \chschange{v0.90}{2008/8/4}{4035}
-% \chschange{v0.91}{2008/8/6}{4055}
-% \chschange{v0.92}{2008/8/11}{4133}
-% \chschange{v0.93}{2008/8/21}{4140}
-% \chschange{v0.93}{2008/8/30}{4501}
-% \chschange{v0.94}{2008/10/4}{4880}
-% \chschange{v0.95}{2008/10/8}{4908}
-% \chschange{v0.96}{2008/11/21}{5363}
-% \toCTAN{2008/11/21 v0.96}
-% \chschange{v0.97}{2008/11/22}{5375}
-% \toCTAN{2008/11/22 v0.97}
-% \chschange{v0.98}{2008/11/30}{5429}
-% \chschange{v0.98}{2008/12/5}{5577}[\cs{DeclareCommand}]
-% \chschange{v0.98}{2008/12/5}{5627}[\cs{fakeonum}]
-% \chschange{v0.98}{2008/12/9}{6035}[\cs{DeclareCommand}, \cmd\arg]
-% \chschange{v0.98}{2008/12/10}{6129}
-% [\cmd\DeclareEnvironment]
-% \chschange{v0.98}{2008/12/10}{6147}
-% [\cmd\arg\ in verbatims]
-% \chschange{v0.98}{2008/12/12}{6535}
-% [\cmd\UrlFix]
-% \chschange{v0.98}{2008/12/14}{6656}
-% [type settings for \pk{gmdoc} (\cmd\narrativett) and for
-% \cmd\verbatimspecials]
-% \chschange{v0.991}{2010/3/4}{8257}
-% [some shorthands and major development of \cmd\DeclareCommand,
-% including ‘Knuthian’ and general optional arguments and
-% ‘\cmd\afterassignment’ pseudo-argument]
-% \toCTAN{2010/03/04 v0.991}
-%
-% \skiplines we skip the driver
-\ifnum\catcode`\@=12
-
-\documentclass[debug, countalllines, codespacesgrey, outeroff,
-pagella, trebuchet, cursor, fontspec=quiet]{gmdocc}
-\usepackage{eufrak}% for |\continuum| in the commentary.
-\twocoltoc
-\begin{document}
-
-\DocInput{\jobname.sty}
-\PrintChanges
-\thispagestyle{empty}
-\typeout{%
- Produce change log with^^J%
- makeindex -r -s gmglo.ist -o \jobname.gls \jobname.glo^^J
- (gmglo.ist should be put into some texmf/makeindex directory.)^^J}
-\typeout{%
- Produce index with^^J%
- makeindex -r \jobname^^J}
-\afterfi{\end{document}}
-
-\fi% of driver pass
-%\endskiplines
-
+%% LPPL status: "author-maintained".
+%%
+%%
+%%
+%% For the documentation please refer to the file(s)
+%% gmutils.{gmd,pdf}.
+%%
+%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{gmutils}
- [2010/03/04 v0.991 some rather TeXnical macros, some of them tricky (GM)]
-
-%
-% \tableofcontents
-%
-% \division{Intro}
-%
-% The \pk{gmutils.sty} package provides some macros that are
-% analogous to the standard \LaTeX\ ones but extend their
-% functionality, such as |\@ifnextcat|, |\addtomacro| or |\begin(*)|.
-% The others are just conveniences I~like to use in all my TeX
-% works, such as |\afterfi|, |\pk| or |\cs|.
-%
-% I wouldn't say they are only for the package writers but I~assume
-% some nonzero \LaTeXpar-awareness of the user.
-%
-% For details just read the code part.
-%
-% \begin{gmlonely}
-% \subdivision{Installation} Unpack the \file{gmutils-tds.zip}
-% archive (this is an archive that conforms the \acro{TDS} standard,
-% see \file{CTAN/tds/tds.pdf}) in some texmf directory or just put
-% the \pk{gmutils.sty} somewhere in the \file{texmf/\:tex/\:latex}
-% branch. Creating a~\file{texmf/\:tex/\:latex/\:gm} directory may
-% be advisable if you consider using other packages written by me.
-%
-% Then you should refresh your \TeX\ distribution's files' database
-% most probably.
-% \end{gmlonely}
-%
-% \subdivision{Contents of the \pk{gmutils.zip} archive}
-%
-% The distribution of the \pk{gmutils} package consists of the
-% following three files and a~\acro{TDS}-compliant archive.
-% \begin{verse}
-% \pk{gmutils.sty}\\
-% \pk{README}\\
-% \pk{gmutils.pdf}\\
-% \pk{gmutils.tds.zip}
-% \end{verse}
-%
-% \begin{gmlonely}
-% \subdivision{Compiling of the documentation}
-%
-% The last of the above files (the \pk{.pdf}, i.e., \emph{this
-% file}) is a~documentation compiled from the \pk{.sty} file by
-% running \LaTeX\ on the \pk{gmutils.sty} file twice
-% (|xelatex gmutils.sty| in the directory you wish the
-% documentation to be in, you don't have copy the \file{.sty} file
-% there, \TeX\ will find it),
-% then MakeIndex on the \file{gmutils.idx} file, and then \LaTeX\
-% on \file{gmutils.sty} once more.
-%
-% MakeIndex shell command:
-% \[\hbox{|makeindex -r gmutilsDoc|}\]
-% The |-r| switch is to forbid MakeIndex to make implicit ranges since
-% the (code line) numbers will be hyperlinks.
-%
-% Compiling the documentation requires the packages:
-% \pk{gmdoc} (\pk{gmdoc.sty} and \pk{gmdocc.cls}), \pk{gmverb.sty},
-% \pk{gmutils.sty}, \pk{gmiflink.sty} and also some standard packages:
-% \pk{hyperref.sty}, \pk{color.sty}, \pk{geometry.sty},
-% \pk{multicol.sty}, \pk{lmodern.sty}, \pk{fontenc.sty} that should
-% be installed on your computer by default.
-%
-% If you had not installed the \pk{mwcls} classes (available on
-% CTAN and present in \TeX\ Live e.g.), the result of your
-% compilation might differ a~bit from the \pk{.pdf} provided in this
-% \pk{.zip} archive in formatting: If you had not installed
-% \pk{mwcls}, the standard \pk{article.cls} class would be used.
-% \end{gmlonely}
-%
-\ifx\XeTeXversion\relax
- \let\XeTeXversion\@undefined% If someone earlier used
-% \nlperc|\@ifundefined{XeTeXversion}| to test
-% whether the engine is \XeTeX, then \incs{XeTeXversion} \emph{is} defined
-% in the sense of \eTeX\ tests. In that case we |\let| it to something
-% really undefined. Well, we might keep sticking to \incs{@ifundefined},
-% but it's a~macro and it eats its arguments, freezing their catcodes,
-% which is not what we want in line \ref{not@ifundef}.
-\fi
-
-\ifdefined\XeTeXversion
-\XeTeXinputencoding utf-8 % we use Unicode dashes later in this file.
-\fi% and if we are not in \XeTeX, we skip them thanks to \XeTeX-test.
-
-
- %^^A % \division{Ignoring spaces and line ends in packages and classes}
- %^^A %
- %^^A % Spurious spaces and line ends that convert to spaces are a~plague
- %^^A % for the package writers including me. On the other hand, changing
- %^^A % catcodes is dangerous and should be done with care. Therefore
- %^^A % I~provide a~declaration that reverts its effect at most at the end
- %^^A % of a~package or class.
- %^^A
- %^^A \def\package@ignorespaces{%
- %^^A \catcode`\ =9
- %^^A \endlinechar-1
- %^^A \AtEndOfPackage{\package@restorespace}}
- %^^A
- %^^A \def\package@restorespace{\catcode`\ =10 \endlinechar13 }
- %^^A
-
-% \division{Options}
-
-\newif\ifgmu@quiet
-
-\DeclareOption{quiet}{\gmu@quiettrue}
-
-\ProcessOptions
-
-%
-% \division{A~couple of abbreviations}
-% {\DoIndex{\@nx \@xa} \Define\@xa \Define\@nx
-\let\@xa\expandafter
-\let\@nx\noexpand
-
-\def\@xau#1{\unexpanded\@xa{#1}}
-%\changes{v0.94}{2008/10/4}{added}
-% \nostanza Note that there's only one |\expandafter|, after
-% |\unexpanded|. It's because |\unexpanded| expands expandable tokens
-% and gobbles |\relax|es while looking for an opening brace or |\bgroup|.
-% Note also that it \emph{requires} a text in braces.
-%
-% \chgs{2010/03/04 v0.991 made 1-parameter}
-% Note also that (since v0.991) this is a 1-parameter macro so doesn't
-% expand subsequent tokens until meets a \<balanced text> but just
-% takes first single token or \<text>.
-
-
-
-%} \HideDefining*\pdef
-\def\pdef{\protected\def}
-%\changes{v0.93}{2008/08/20}{added}
-
-% And this one is defined, I~know, but it's not |\long| with the
-% standard definition and I~want to be able to |\gobble| a~|\par|
-% sometimes.
-% \Define\gobbletwo
-\long\def\gobble#1{}
-% \Define\@gobble
-\let\@gobble\gobble
-\let\gobbletwo\@gobbletwo
-
-
-% \HideDefining*\provide
-\long\pdef\provide#1{%\changes{v0.93}{2008/08/30}{added}
- \ifdefined#1% \UnDef
- \ifx\relax#1\afterfifi{\def#1}%
- \else\afterfifi{\gmu@gobdef}% \UnDef
- \fi
- \else\afterfi{\def#1}%
- \fi}
-
-
-\long\def\gmu@gobdef#1#{% \UnDef
- \def\gmu@tempa{}% it's a~junk macro assignment
- % to absorb possible prefixes.
- \@gobble}
-
-% \HideDefining*\pprovide
-\def\pprovide{\protected\provide}
-% \changes[\pprovide]{v0.93}{2008/08/30}{added} Note that both
-% |\provide| and |\pprovide| may be prefixed with |\global|, |\outer|,
-% |\long| and |\protected| because the prefixes stick to |\def|
-% because all before it is expandable. If the condition(s) is false
-% (|#1| is defined) then the prefixes are absorbed by a~junk
-% assignment.
-%
-% Note moreover that unlike \LaTeX's |\providecommand|, our
-% \cs{(p)provide} allow any parameters string just like |\def|
-% (because they just \emph{expand} to |\def|).
-%
-
-\long\def\@nameedef#1#2{% \changes{v0.93}{2008/08/30}{added}
- \@xa\edef\csname#1\endcsname{#2}}
-
-% \division{\cs{if}s as a~four-argument \LaTeX\ command robust to unbalanced \cs{if}s and \cs{fi}s}
-
-\long\def\gmu@if#1#2{%
- \csname if#1\endcsname#2\@xa\@firstoftwo\else\@xa\@secondoftwo\fi
-}
-
-% \division{\cs{firstofone} and the queer \cs{catcode}s}
-%
-% Remember that once a~macro's argument has been read, its
-% |\catcode|s are assigned forever and ever. That's what is
-% |\firstofone| for. It allows you to change the |\catcode|s locally
-% for a~definition \emph{outside} the changed |\catcode|s' group.
-% Just see the below usage of this macro `with \TeX's eyes', as my
-% \TeX\ Guru taught me.
-%
-\long\def\firstofone#1{#1}
-
-% ^^A \long\def\bracethis#1{{#1}}
-% ^^A \long\def\fooscant{\@xa\scantokens\bracethis}
-\long\pdef\scantwo#1#2{
- \begingroup\endlinechar\m@ne
- \@xa\endgroup\scantokens{#1#2}%
-}
-
-\long\def\@firstofthree#1#2#3{#1}
-\long\def\@secondofthree#1#2#3{#2}
-\long\def\@thirdofthree#1#2#3{#3}
-\long\def\@secondoffive#1#2#3#4#5{#2}
-
-% In some |\if›[cat›?›]|\ test I~needed to look only at the first token of
-% a~tokens' string (first letter of a~word usually) and to
-% drop the rest of it. So I~define a~macro that expands
-% to the first token (or \arg{text}) of its argument.
-%
-\long\def\@firstofmany#1#2\@@nil{#1}
-% \changes{v0.63}{06/9/9}{added}
-
-\long\def\@allbutfirstof#1#2\@@nil{#2}
-% \changes{v0.97}{2008/11/22}{added}
-% \changes{v0.98}{2008/11/22}{renamed from \cs{@secondofmany}}
-
-
-% \division{\cs{afterfi} and pals}
-
-% It happens from time to time that you have some sequence of macros
-% in an |\if…| and you would like to expand |\fi| before expanding
-% them (e.g., when the macros should take some tokens next to |\fi…|
-% as their arguments. If you know how many macros are there, you may
-% type a~couple of |\expandafter|s and not to care how terrible it
-% looks. But if you don't know how many tokens will there be, you
-% seem to be in a~real trouble. There's the Knuthian trick with
-% |\next|. And here another, revealed to me by my \TeX\ Guru.
-%
-% I~think the situations when the Knuthian (the former) trick is not
-% available are rather seldom, but they are imaginable at least: the
-% |\next| trick involves an assignment so it won't work e.g.\ in
-% |\edef|.
-%
-% But |\afterfi| and pals are sensitive to |\fi|s that may occur in
-% macros' arguments so probably the safest and expandable way is the
-% |\expandafter\@›(first⁄|second›)oftwo| trick. %^^A|
-%^^A % One warning: those macros peel the braces off, i.e.,
-%^^A % \[|\if..\afterfi{\@makeother\^^M}\fi|\]
-%^^A % causes a~leakage of
-%^^A % |^^M|\catother. To avoid pollution write
-%^^A % \[|\if..\afterfi{\bgroup\@makeother\^^M\egroup}\fi|\,.\]
-%
-
-\def\longafterfi{%
- \long\def\afterfi##1##2\fi{\fi##1}}
-\longafterfi
-% And two more of that family:
-\long\def\afterfifi#1#2\fi#3\fi{\fi\fi#1}
-% \changes{v0.94}{2008/09/09}{\cs{if} removed from parameters' string}
-\long\def\afteriffifi#1#2\fi#3\fi{\fi#1}
-% Notice the refined elegance of those macros, that cover both `then'
-% and `else' cases thanks to |#2| that is discarded.
-
-\long\def\afterififfififi#1#2\fi#3\fi#4\fi{\fi#1}
-\long\def\afteriffififi#1#2\fi#3\fi#4\fi{\fi\fi#1}
-\long\def\afterfififi#1#2\fi#3\fi#4\fi{\fi\fi\fi#1}
-
-% \division{\cs{foone}}
-
-% The next command, |\foone|, is intended as two-argument for
-% shortening of the |\begingroup…\firstofone{\endgroup…}| hack.
-%
-\long\def\foone#1{\begingroup#1\relax\egfirstofone}
-% \UnDef
-\long\def\egfirstofone#1{\endgroup#1}
-
-\def\fooatletter{\foone\makeatletter}
-
-
-
-% \division{\cs{@ifempty}, \cs{IfAmong}, \cmd\IfIntersect\ \cs{@ifinmeaning}}
-% After a~short deliberation I~make the \cmd\IfAmong…\cmd\among\ and
-% \cmd\IfIntersect\ macros' names apeless since they are intended for
-% the macro and class writers, at the same level of abstraction as
-% \cmd\DeclareCommand.
-%
-\long\pdef\@ifempty#1{%\
- % \begin{enumargs}
- % \item the token(s) we test, it may be just |{}|,
- % \item the stuff executed if |#1| is empty (is |{}|),
- % \item the stuff executed if |#1| consists of at least one token.
- % \end{enumargs}
- \def\gmu@reserveda{#1}%
- \ifx\gmu@reserveda\@empty\@xa\@firstoftwo
- \else\@xa\@secondoftwo
- \fi}
-
-\long\def\@ifnonempty#1#2#3{\@ifempty{#1}{#3}{#2}}
-
-\long\pdef\IfAmong#1\among#2{%\label{IfAmong}\
- % \begin{enumargs}
- % \item the token(s) whose presence we check,
- % \item the list of tokens in which we search |#1|,
- % \item the ‘if found’ stuff,
- % \item the ‘if not found’ stuff.
- % \end{enumargs}
- % \chgs{2008/12/05 v0.98 split from \cs{IfAmong}}
- %
- \long\def\gmu@among@##1#1##2\gmu@among@{%
- \@ifempty{##2}\@secondoftwo\@firstoftwo}%
- \gmu@among@#2#1\gmu@among@}
-
-\long\def\IfIntersect#1#2{% this (not expandable) macro checks\
- % whether the list of tokens \inverb|#1| and \inverb|#2| have\
- % nonempty intersection and if so executes \incs{@firstoftwo} or\
- % else \incs{@secondoftwo}, so it's a~4-argument command:\
- % \begin{enumargs}
- % \item first list to match,
- % \item second list to match,
- % \item if match (nonempty intersection),
- % \item if not match (empty intersection).
- % \end{enumargs}
- \let\IfIntersect@next\@secondoftwo
- \gmu@foreach#1\gmu@foreach{%
- \@xa\IfAmong\gmu@forarg\among{#2}
- {\let\IfIntersect@next\@firstoftwo}{}}%
- \IfIntersect@next}
-
-% We need a~macro that iterates over every token on a~list. \LaTeX's
-% |\@for| iterates over a~list separated with commas so it's not the
-% case. Our macro is much simpler.
-\long\def\gmu@foreach#1\gmu@foreach#2{%
- \long\def\gmu@forer##1{%
- \ifx\gmu@foreach##1\else
- \long\def\gmu@forarg{##1}%
- #2%
- \@xa\gmu@forer
- \fi}%
- \gmu@forer#1\gmu@foreach}
-
-
-
-\long\pdef\@ifinmeaning#1\of#2{% \
- % \begin{enumargs}
- % \item the token(s) whose presence we check,
- % \item the macro in whose meaning we search |#1| (the first token of
- % this argument is expanded one level with |\expandafter|),
- % \item the `if found' stuff,
- % \item the `if not found' stuff.
- % \end{enumargs}
- %
- % \chgs{2007/11/06 v0.98 (in \pk{gmdoc}) made more elegant:
- % \cs{if} changed to \cs{ifx} made four parameters and not expanding
- % to an open \cs{if›(true⁄|false›)}. Also renamed from \cs{@ifismember}}
- % \chgs{2008/12/05 v0.98 moved here from \pk{gmdoc} and rewritten,
- % including split to \cs{IfAmong} because the latter is needed in
- % \cs{DeclareCommand}}
- %
- \def\gmu@reserveda{\IfAmong#1\among}%
- \@xa\gmu@reserveda\@xa{#2}}
-
-
-% \division{Global Boolean switches}
-%
-% The |\newgif| declaration's effect is used even in the \LaTeXe\
-% source by redefining some particular user defined ifs (UD-ifs
-% henceforth) step by step. The goal is to make the UD-if's
-% assignment global. I~needed it at least twice during \pk{gmdoc}
-% writing so I~make it a~macro. It's an almost verbatim copy of
-% \LaTeX's |\newif| modulo the letter $g$ and the |\global| prefix.
-% (File d: \file{ltdefns.dtx} Date: 2004/02/20 Version v1.3g, lines
-% 139--150) \Define\newgif
-\pdef\newgif#1{%
- {\escapechar\m@ne
- \global\let#1\iffalse
- \@gif#1\iftrue
- \@gif#1\iffalse
- }}
-% `Almost' is also in the detail that in this case, which deals with
-% |\global| assignments, we don't have to bother with storing and
-% restoring the value of |\escapechar|: we can do all the work inside
-% a~group.
-% \DefIndex\@gif
-\def\@gif#1#2{%
- \protected\@xa\gdef\csname\@xa\@gobbletwo\string#1%
- g% the letter $g$ for `|\global|'.
- \@xa\@gobbletwo\string#2\endcsname
- {\global\let#1#2}}
-
-\pdef\newif#1{% We not only make \incs{newif}
- % \incs{protected} but also make it to define \cs{protected}
- % assignments so that premature expansion doesn't affect
- % \inverb|\if…\fi| nesting.
- % \changes{v0.92}{2008/08/09}{added redefinition so that now
- % switches defined with it are \cs{protected} so they won't expand to
- % a~further expanding or unbalanced \cs{iftrue/false} in an \cs{edef}}
- \count@\escapechar \escapechar\m@ne
- \let#1\iffalse
- \@if#1\iftrue
- \@if#1\iffalse
- \escapechar\count@}
-
-\def\@if#1#2{%
- \protected \@xa\def\csname\@xa\@gobbletwo\string#1%
- \@xa\@gobbletwo\string#2\endcsname
- {\let#1#2}}
-
-
-\pdef\hidden@iffalse{\iffalse}
-\pdef\hidden@iftrue{\iftrue}
-
-% After |\newgif\iffoo| you may type |{\foogtrue}| and the |\iffoo|
-% switch becomes globally equal |\iftrue|. Simili modo |\foogfalse|.
-% Note the letter $g$ added to underline globalness of the assignment.
-%
-% If for any reason, no matter how queer ;-) may it be, you need
-% \emph{both} global and local switchers of your |\if…|, declare
-% it both with |\newif| and |\newgif|.
-%
-% Note that it's just a~shorthand. |\global\if⁄<switch>›(true⁄|false›)|
-% \emph{does} work as expected.
-
-% \Define\grefstepcounter
-% \changes{v0.59}{06/09/04}{moved here from \pk{gmdoc}.}
-% There's a~trouble with |\refstepcounter|: defining |\@currentlabel|
-% is local. So let's |\def| a~|\global| version of |\refstepcounter|.
-%
-% Warning. I~use it because of very special reasons in \pk{gmdoc} and
-% in general it is probably not a~good idea to make |\refstepcounter|
-% global since it is contrary to the original \LaTeX\ approach.
-\pdef\grefstepcounter#1{%
- {\let\protected@edef=\protected@xdef\refstepcounter{#1}}}
-% Na\"\i{}ve first try |\globaldefs=\tw@| raised an error
-% |unknown command \reserved@e|. The matter was to globalize
-% |\protected@edef| of |\@currentlabel|.\rrthis
-%
-% Thanks to using the true |\refstepcounter| inside, it observes the
-% change made to |\refstepcounter| by \pk{hyperref}.
-% \dekmedskip
-%
-% 2008/08/10 I~spent all the night debugging \cs{penalty 10000} that
-% was added after a~hypertarget in vertical mode. I~didn't dare to
-% touch \pk{hyperref}'s guts, so I~worked it around with ensuring
-% every \cs{grefstepcounter} to be in hmode:
-
-\pdef\hgrefstepcounter#1{%
- \ifhmode\leavevmode\fi\grefstepcounter{#1}}
-
-% By the way I~read some lines from \TB\ and was reminded that
-% \cs{unskip} strips any last skip, whether horizontal or
-% vertical. And I~use \cs{unskip} mostly to replace a~blank space with
-% some fixed skip. Therefore define
-
-\pdef\hunskip{\ifhmode\unskip\fi}
-
-% Note the two macros defined above are \cs{protected}. I~think it's
-% a~good idea to make \cs{protected} all the macros that contain
-% assignments. There is one more thing with \cs{ifhmode}: it can be different
-% at the point of \cs{edef} and at the point of execution.
-
-
-% Another shorthand. It may decrease a~number of |\expandafter|s e.g.
-% \Define\glet
-\def\glet{\global\let}
-
-
-% \LaTeX\ provides a~very useful |\g@addto@macro| macro that adds its
-% second argument to the current definition of its first argument
-% (works iff the first argument is a~no argument macro). But I~needed
-% it some times in a~document, where |@| is not a~letter. So:
-% \Define\gaddtomacro
-\let\gaddtomacro=\g@addto@macro
-
-% The redefining of the first argument of the above macro(s) is
-% |\global|. What if we want it local? Here we are:
-%
-\long\def\addto@macro#1#2{%
- % \chgs{2008/12/7 v0.98 \cs{toks@} replaced with some
- % \cmd\expandafter s because use of \cs{toks@} here caused
- % a~disaster in \cs{DeclareCommand}}
- \edef#1{\@xa\unexpanded\@xa{#1}\unexpanded{#2}}% \incmd\edef\ and
- % \incmd\unexpanded\ to double the hashes.
-}
-
-% And for use in the very document,
-% \Define\addtomacro
-\let\addtomacro=\addto@macro
-
-% 2008/08/09 I~need to prepend something not add at the end---so
-\long\def\prependtomacro#1#2{% \changes{v0.94}{2008/09/15}{order of
- % arguments reversed}
- \edef#1{\unexpanded{#2}\@xa\unexpanded\@xa{#1}}}
-% Note that \cs{prependtomacro} can be prefixed.
-
-% \Define\addtotoks
-\long\def\addtotoks#1#2{%
- #1=\@xa{\the#1#2}}
-
-% \Define\emptify
-\newcommand*\@emptify[1]{\let#1=\@empty}
-\@ifdefinable\emptify{\let\emptify\@emptify}
-
-% Note the two following commands are in fact one-argument.
-%\Define\g@emptify \Define\gemptify
-\newcommand*\g@emptify{\global\@emptify}
-\@ifdefinable\gemptify{\let\gemptify\g@emptify}
-
-% \Define\relaxen
-\newcommand\@relaxen[1]{\let#1=\relax}
-\@ifdefinable\relaxen{\let\relaxen\@relaxen}
-
-% Note the two following commands are in fact one-argument.
-% \Define\g@relaxen \Define\grelaxen
-\newcommand*\g@relaxen{\global\@relaxen}
-\@ifdefinable\grelaxen{\let\grelaxen\g@relaxen}
-
-% \division{\cs{gm@ifundefined}---a~test that doesn't create any\
-% hash entry unlike \cs{@ifundefined}}
-
-% I~define it under another name not redefine |\@ifundefined| because
-% I~can imagine an odd case when something works thanks to
-% |\@ifundefined|'s `relaxation’ effect.
-
-\long\def\gm@ifundefined#1{% not |\protected| because expandable.
- % \changes{v0.94}{2008/9/12}{added. All \cs{@ifundefined}s used by
- % me changed to this}
- % \changes{v0.94}{2008/10/03}{made robust to unbalanced \cs{if}s and
- % \cs{fi}s the same way as \LaTeX's \cs{@ifundefined} (after a~heavy
- % debug :-)}
- \ifcsname#1\endcsname% defined…
- \@xa\ifx\csname #1\endcsname\relax% but only as |\relax|---then
- % 2nd argument.
- \afterfifi\@firstoftwo%
- \else% defined and not |\relax|---then 3rd argument.
- \afterfifi\@secondoftwo%
- \fi
- \else% not defined---then 3rd.
- \afterfi\@firstoftwo%
- \fi}
-
-
-\long\def\gm@testdefined#1\iftrue{% This is a~macro that expands to
- % \incs{iftrue} or \incs{iffalse} depending on whether its argument
- % is defined in the \LaTeX\ sense. Its syntax requires an
- % \incs{iftrue} to force balancing \incs{if}s with \incs{fi}s.
- % \changes{v0.95}{2008/10/8}{added}
- \csname
- \ifdefined#1%
- \ifx#1\relax
- iffalse%
- \else iftrue%
- \fi
- \else iffalse%
- \fi\endcsname
-}
-
-\long\def\gm@testundefined#1\iftrue{% we expand the last macro two
- % levels. We repeat the parameter string to force the proper syntax.
- % \changes{v0.95}{2008/10/8}{added}
- \@xa\@xa\@xa\unless\gm@testdefined#1\iftrue}
-
-
-
-% \division{Some `other' and active stuff}
-% Here I~define a~couple of macros expanding to special chars made
-% `other'. It's important the \CS are expandable and therefore
-% they can occur e.g. inside |\csname›…\endcsname| unlike e.g.\
-% \CS'es |\chardef|ed.
-%
-% \Define\subs
-\foone{\catcode`\_=8 }
-{\let\subs=_}
-
-% \Define\sups
-\foone{\catcode`\^=7 }
-{\let\sups=^}
-
-\foone{\@makeother\_}
-{\def\xiiunder{_}}
-
-\let\all@unders\xiiunder
-\foone{\catcode`\_=8 }
-{\addtomacro\all@unders{_}}
-\foone{\catcode`\_=11 }
-{\addtomacro\all@unders{_}}
-\foone{\catcode`\_=13 }
-{\addtomacro\all@unders{_}}
-% \nostanza Now |\all@unders| bears underscores of categories 8, 11,
-% 12 and 13.
-
-\def\all@stars{*}
-\foone{\catcode`\*=11 }
-{\addtomacro\all@stars{*}}
-\foone{\catcode`\*=13 }
-{\addtomacro\all@stars{*}}
-%\nostanza And |\all@stars| bears stars of categories 11, 12 and 13.
-
-
-\ifdefined\XeTeXversion
- \chardef\_="005F
-\fi
-
-\foone{\@makeother\`}%
-{\def\backquote{`}}
-
-
-\foone{\catcode`\[=1 \@makeother\{
- \catcode`\]=2 \@makeother\}}%
-[%
- \def\xiilbrace[{]%
- \def\xiirbrace[}]%
-]% of |\firstofone|
-
-% Note that \LaTeX's |\@charlb| and |\@charrb| are of catcode 11
-% (`letter'), cf. The \LaTeXe\ Source file k, lines 129--130.
+ [2010/10/24 v0.993 some rather TeXnical macros, some of them tricky (GM)]
-
-% Now, let's define such a~smart |_| (underscore) which will be usual
-% |_|${}_8$ in the math mode and |_|\catother\ (`other') outside math.
-% \Define\smartunder
-% \changes{v0.60}{06/09/05}{\cs{\_} instead of \cs{xiiunder}}
-\foone{\catcode`\_=\active}
-{%
- \newcommand*\smartunder{%
- \catcode`\_=\active
- \def_{\ifmmode\subs\else\_\fi}}}% We define it as \inverb|\_| not just as
-% \inverb|\xiiunder| because some font encodings don't have \inverb|_| at the
-% \inverb|\char`\_| position.
-%
-% \CodeEscapeChar\!
-% \Define\bslash \Define\xiibackslash
-\foone{\catcode`\!=0
- \@makeother\\}
-{!newcommand*!xiibackslash{\}}
-%^^A] balancing braces for Emacs
-% \CodeEscapeChar\\
-
-\let\bslash=\xiibackslash
-
-
-% \begin{oldmc}
-\foone{\@makeother\%}
-{\def\xiipercent{%}}
-% \end{oldmc}
-
-\foone{\@makeother\&}%
-{\def\xiiand{&}}
-
-\foone{\@makeother\ }%
-{\def\xiispace{ }}
-
-\foone{\@makeother\#}%
-{\def\xiihash{#}}
-
-% We introduce \cs{visiblespace} from Will Robertson's \pk{xltxtra} if
-% available. It's not sufficient |\@ifpackageloaded{xltxtra}| since
-% \cs{xxt@visiblespace} is defined only unless |no-verb| option is
-% set. 2008/08/06 I~recognised the difference between \cs{xiispace}
-% which has to be plain `other' char (used in \cs{xiistring}) and
-% something visible to be printed in any font.
-
-\AtBeginDocument{%
- \ifdefined\xxt@visiblespace
- \let\visiblespace\xxt@visiblespace
- \def\xxt@visiblespace@fallback{{%
- \fontspec{Latin Modern Mono}\textvisiblespace}}%
- \else
- \let\visiblespace\xiispace
- \fi}
-
-
-\foone\obeyspaces{\def\gmu@activespace{ }}
-
-\foone\obeylines{\def\activeM{^^M}}
-
-
-% \division{\cs{@ifnextcat}, \cs{@ifnextac}, catcode-independent\
-% \cs{gm@ifstar}, \cs{@ifnextsingle}, \cs{@ifnextgroup}}
-%
-% As you guess, we |\def| |\@ifnextcat| \agrave~la |\@ifnextchar|, see
-% \LaTeXe\ source dated 2003/12/01, file d, lines 253--271. The
-% difference is in the kind of test used: while |\@ifnextchar| does
-% |\ifx|, |\@ifnextcat| does |\ifcat| which means it looks not at the
-% meaning of a~token(s) but at their |\catcode|(s). As you (should)
-% remember from \TeXbook, the former test doesn't expand macros while
-% the latter does. But in |\@ifnextcat| the peeked token is protected
-% against expanding by |\noexpand|. Note that the first parameter is
-% not protected and therefore it shall be expanded if it's
-% expandable. Because an assignment is involved, you can't test
-% whether the next token is an active char. But you can test if the
-% next token is |{|$_1$ or |}|$_2$: |\@ifnextcat\bgroup›…|,
-% |\@ifnextcat\egroup›…|.
-
-\long\pdef\@ifnextcat#1#2#3{%
-% \changes{v0.75}{2007/01/01}{\cs{let} for \cs[\#]1 changed to
-% \cs{def} to allow things like \cs{noexpand\texttilde}}
-% \HideDef
- \def\reserved@d{#1}%
- \def\reserved@a{#2}%
- \def\reserved@b{#3}%
- \futurelet\@let@token\@ifncat}
-
-% \ResumeDef
-\def\@ifncat{%
- \ifx\@let@token\@sptoken
- \let\reserved@c\@xifncat
- \else
- \ifcat\reserved@d\@nx\@let@token
- \let\reserved@c\reserved@a
- \else
- \let\reserved@c\reserved@b
- \fi
- \fi
- \reserved@c}
-
-{\def\:{\let\@sptoken= } \global\: % this makes |\@sptoken| a space token.
-
- % \DefIndex\@xifncat
-\def\:{\@xifncat} \@xa\gdef\: {\futurelet\@let@token\@ifncat}}
-% Note the trick to get a~macro with no parameter and requiring
-% a~space after it. We do it inside a~group not to spoil the general
-% meaning of |\:| (which we extend later).
-% \dekmedskip
-%
-% \stanza The next command provides the real \cs{if} test for the next
-% token. \emph{It} should be called |\@ifnextchar| but that name is
-% assigned for the future \cs{ifx} text, as we know. Therefore we call
-% it \cs{@ifnextif}.
-%
-% \stanza
-% Having |\@ifnextcat| defined, let's apply it immediately. Similar
-% thing does probably the \pk{xspace} package.
-\def\spifletter{\@ifnextcat a{\space}{}}
-
-
-\long\pdef\@ifnextif#1#2#3{%
-% \changes{v0.75}{2007/01/01}{\cs{let} for \cs[\#]1 changed to
-% \cs{def} to allow things like \cs{noexpand\texttilde}}
-% \chgs{2010/3/4 v0.991 inner macro fixed to handle active chars more
-% properly (more as \cmd\if\ would do it)}
-% \HideDef
-% (the future token in |\noexpand|ed, unlike \inhash1)
- \def\reserved@d{#1}%
- \def\reserved@a{#2}%
- \def\reserved@b{#3}%
- \futurelet\@let@token\@ifnif}
-% \ResumeDef
-
-\def\@ifnif{%
- \ifx\@let@token\@sptoken
- \let\reserved@c\@xifnif
- \else
- \if\reserved@d\@nx\@let@token
- \let\reserved@c\reserved@a
- \else % |#1| of |\@ifnextif| is not |\if|-equivalent the future
- % token. But this may be because the future token is active
- % so it \emph{would} be |\if|-equivalent if not passed
- % through |\futurelet|. Let's manage this case.
- \begingroup
- \edef\gmu@tempa{%
- \lccode`\@nx~=`\reserved@d
- }\gmu@tempa
- \lowercase{\endgroup
- \ifx~}\@let@token
- \let\reserved@c\reserved@a
- \else
- \let\reserved@c\reserved@b
- \fi
- \fi
- \fi
- \reserved@c}
-
-% \UnDef
-{\def\:{\let\@sptoken= } \: % this makes |\@sptoken| a space token.
-% \UnDef
-\def\:{\@xifnif} \@xa\gdef\: {\futurelet\@let@token\@ifnif}}
-
-% \dekmedskip
-%
-% But how to peek at the next token to check whether it's an active
-% char? First, we look with |\@ifnextcat| whether there stands a~group
-% opener. We do that to avoid taking a~whole |{…}| as the argument
-% of the next macro, that doesn't use |\futurelet| but takes the next
-% token as an argument, tests it and puts back intact.
-% \changes{v0.75}{2007/01/11}{added}
-%
-\long\pdef\@ifnextac#1#2{%
- \@ifnextsingle
- {\gm@ifnac{#1}{#2}}%
- {#2}}
-
-\long\def\gm@ifnac#1#2#3{%
- \ifcat\@nx~\@nx#3%
- \@xa\@firstoftwo
- \else\@xa\@secondoftwo
- \fi{#1#3}{#2#3}}
-
-% Yes, it won't work for an active char |\let| to |{|${}_1$, but it ^^A~}
-% \emph{will} work for an active char |\let| to a~char of
-% catcode${}\neq1$. (Is there anybody on Earth who'd make an active
-% char working as |\bgroup| not just recatcode it to $_1$?)
-%
-
-% Having defined such tools, let's redefine |\gm@ifstar| to make it work
-% with whatever catcode |*| may be.
-% make a~version of |\gm@ifstar| that would work with
-% |*|\catletter.
-
-
-\pdef\gmu@lowstar{%
- \iffontchar\font"22C6 \char"22C6 \else\gmu@lowstarfake\fi}% we could define it to
-% be expandable (with \inverb|^^^^22c6|) but the only goal of it would
-% be allowing this low star in |\csname›…\endcsname|. But it would be
-% misleading (not everyone can easily distinguish |⁄string*| from |*|)
-% so \IMHO\ it's better to raise an error should such an active occur
-% in a~|\csname|.
-% This macro is intended to be |\let| to an active star only in
-% verbatims. For usual text there's
-
-% Commands around making star low (via |\active|ation) are defined in
-% line \ref{def:gmu@star} because they use |\DeclareCommand|.
-
-
-\def\gmu@tempa{*}
-\foone{\catcode`\*=\active}
-{\def\gmu@tempb{*}% it's defined in line \ref{active star}
- % to make |*| defined (when it was undefined,
- % \incmd\newcommand's \incs{gm@ifstar} test turned
- % true, the next undefined token was gobbled and raised an error).
- \let*=\gmu@lowstar}
-
-
-
-\edef\gmu@tempa{%
- \long\pdef\@nx\gm@ifstar##1##2{% \chgs{2008/12/16 v0.98 renamed from
- % \cs{@ifstar} since something
- % redefines \cs{@ifstar}}]
- \@nx\@ifnextif\gmu@tempa%
- {\@nx\@firstoftwo{##1}}%
- {%
- \@nx\@ifnextchar\@xa\@nx\gmu@tempb
- {\@nx\@firstoftwo{##1}}{##2}}%
- }% of |\gm@ifstar|.
-}\gmu@tempa
-
-
-%\stanza
-% A~test whether we can pick a~single token. We have to check whether
-% we are not next to |{| and whether we are not next to |}|.
-
-\long\pdef\@ifnextsingle#1#2{% \chgs{2008/12/11 v0.98 extracted from
- % \cs{@ifnextac}} This macro checks whether the next token is able
- % to be picked or is it a~braced list of tokens or is it a~group
- % closer so there's no token to be picked.
- \@ifnextcat\bgroup{#2}{%
- \@ifnextcat\egroup{#2}% \chgs{2008/12/11 v0.98 added test for
- % \cmd\egroup}
- {#1}}}
-
-\long\pdef\@ifnextgroup#1#2{% Note this macro turns true both before
- % a~group opener and before a~group closer.
- \@ifnextsingle{#2}{#1}}
-
-
-% now let's apply this to sth. useful (used in \pk{gmverse} and in
-% some typesetting, e.g.\ for prof.\ JSB.
-\pdef\ignoreactiveM{%
- \@ifnextgroup{}{\gmu@checkM}}
-
-\foone\obeylines{% we know it's a~single token since we use this macro
- % only in \incmd\@ifnextgroup's ‘else’.
- \long\pdef\gmu@checkM#1{%
- \ifx
- #1\@xa\ignoreactiveM%
- \else\@xa#1\fi}}
-
-
-%
-% \stanza Now, define a~test that checks whether the next token is
-% a~genuine space, | |${}_{10}$ that is. First define
-% a~\CS let such
-% a~space. The assignment needs a~little trick (\TeXbook\ appendix D)
-% since |\let|'s syntax includes one optional space after |=|.
-%
-\let\gmu@reserveda\*%
-\def\*{%
- \let\*\gmu@reserveda
- \let\gm@letspace= }%
-\* %
-
-% \Define\@ifnextspace
-\def\@ifnextspace#1#2{%
- \let\gmu@reserveda\*%
- \def\*{%
- \let\*\gmu@reserveda
- \ifx\@let@token\gm@letspace\afterfi{#1}%
- \else\afterfi{#2}%
- \fi}%
- \futurelet\@let@token\*}
-% First use of this macro is for an active |-| that expands to |---|
-% if followed by a~space. Another to make dot checking whether is
-% followed by |~| without gobbling the space if it occurs instead.
-%
-% \stanza
-% Now a~test if the next token is an active line end. I~use it in
-% \pk{gmdoc} and later in this package for active long dashes.
-
-\foone\obeylines{%
- \long\pdef\@ifnextMac#1#2{%
- \@ifnextchar^^M{#1}{#2}}}
-
-
-% \division{Storing and restoring the meanings of \CSs}
-%
-% First a~Boolean switch of globalness of assignments and
-% its verifier.
-\newif\ifgmu@SMglobal
-
-\pdef\SMglobal{\gmu@SMglobaltrue}
-% The subsequent commands are defined in such a~way that you can
-% `prefix' them with |\SMglobal| to get global (re)storing.
-% \stanza
-% A~command to store the current meaning of a~\CS in another macro to
-% temporarily redefine the \CS and be able to set its original meaning
-% back (when grouping is not recommended):
-%
-%\Define\StoreMacro
-%\changes{v0.61}{06/09/05}{added.}
-%\changes{v0.67}{06/10/11}{enriched with \cs{makeatletter}}
-\pdef\StoreMacro{%
- \begingroup\makeatletter\gm@ifstar\egStore@MacroSt\egStore@Macro}
-% The unstarred version takes a~\CS and the starred version
-% a~text, which is intended for special control sequences. For storing
-% environments there is a~special command in line \ref{StoreEnvironment}.
-
-\long\def\egStore@Macro#1{\endgroup\Store@Macro{#1}}
-\long\def\egStore@MacroSt#1{\endgroup\Store@MacroSt{#1}}
-
-\long\def\Store@Macro#1{%
- \escapechar92
- \ifgmu@SMglobal\afterfi\global\fi
- \@xa\let\csname /gmu/store\string#1\endcsname#1%
- \global\gmu@SMglobalfalse}
-
-
-\long\def\Store@MacroSt#1{%
- \edef\gmu@smtempa{%
- \ifgmu@SMglobal\global\fi
- \@nx\let\@xa\@nx\csname/gmu/store\bslash#1\endcsname%\label{SMbslash}
- % we add backslash because to ensure compatibility between
- % \incs{(Re)StoreMacro} and \incs{(Re)StoreMacro*}, that is. to allow
- % writing e.g. \inverb|\StoreMacro\kitten| and then
- % \inverb|\RestoreMacro*{kitten}| to restore the meaning of
- % \incs{kitten}.\ilrr
- \@xa\@nx\csname#1\endcsname}
- \gmu@smtempa
- \global\gmu@SMglobalfalse}% we wish the globality to be just
- % once.\par
-
-% We make the |\StoreMacro| command a~three-step to allow usage of the
-% most inner macro also in the next command.
-%
-% The starred version, |\StoreMacro*| works with csnames (without the
-% backslash). It's first used to store the meanings of robust
-% commands, when you may need to store not only |\foo|, but also
-% |\csname foo \endcsname|.
-%
-%
-% The next command iterates over a~list of \CSs and stores each of
-% them. The \CS'es may be separated with commas but they don't have to.
-% \Define\StoreMacros
-
-\long\pdef\StoreMacros{\begingroup\makeatletter\Store@Macros}
-\long\def\Store@Macros#1{\endgroup
- \gmu@setsetSMglobal
- \let\gml@StoreCS\Store@Macro
- \gml@storemacros#1.}
-% \label{InnerStore}
-
-\def\gmu@setsetSMglobal{%
- \ifgmu@SMglobal
- \let\gmu@setSMglobal\gmu@SMglobaltrue
- \else
- \let\gmu@setSMglobal\gmu@SMglobalfalse
- \fi}
-
-% And the inner iterating macro:
-\long\def\gml@storemacros#1{%
- \def\gmu@reserveda{\@nx#1}% My \TeX\ Guru's trick to deal with |\fi|
- % and such, i.e., to hide |#1| from \TeX\ when it is processing a~test's
- % branch without expanding.
- \if\gmu@reserveda.% a~dot finishes storing.
- \global\gmu@SMglobalfalse
- \else
- \if\gmu@reserveda,% The list this macro is put before may
- % contain commas and that's O.K., we just continue the work.
- \afterfifi\gml@storemacros
- \else% what is else this shall be stored.
- \gml@StoreCS{#1}% we use a~particular \CS to may |\let| it both to
- % the storing macro as above and to the restoring one as
- % \gmiflink[letRestore]{below}.
- \afterfifi{\gmu@setSMglobal\gml@storemacros}%
- \fi
- \fi}
-
-% And for the restoring
-%\Define\RestoreMacro
-%\changes{v0.61}{06/09/05}{added.}
-%\changes{v0.67}{06/10/11}{enriched with \cs{makeatletter}}
-\pdef\RestoreMacro{%
- \begingroup\makeatletter\gm@ifstar\egRestore@MacroSt\egRestore@Macro}
-
-\long\def\egRestore@Macro#1{\endgroup\Restore@Macro{#1}}
-\long\def\egRestore@MacroSt#1{\endgroup\Restore@MacroSt{#1}}
-
-\long\def\Restore@Macro#1{%
- \escapechar92
- \gmu@ifstored#1{%
- \ifgmu@SMglobal\afterfi\global\fi
- \@xa\let\@xa#1\csname /gmu/store\string#1\endcsname
- \global\gmu@SMglobalfalse}%
- {\unless\ifgmu@quiet
- \PackageWarning{gmutils}{\@nx#1 is not stored, I do nothing with
- it}%
- \fi
- }%
-}
-
-\long\def\gmu@ifstored#1#2#3{%
- \gm@ifundefined{/gmu/store%
- \if\relax\@nx#1\else\bslash\fi
- \string#1}{#3}{#2}%
-}
-
-\long\pdef\gmu@storeifnotyet#1{%
- \if\relax\@nx#1% we check if it's a~\CS
- \gmu@ifstored{#1}{}{\StoreMacro#1}%
- \fi}
-
-
-\long\def\Restore@MacroSt#1{%
- \gm@ifundefined{/gmu/store\bslash#1}%
- {\unless\ifgmu@quiet
- \PackageWarning{gmutils}{\bslash#1 is not stored. I~do nothing}%
- \fi}%
- {\edef\gmu@smtempa{%
- \ifgmu@SMglobal\global\fi
- \@nx\let\@xa\@nx\csname#1\endcsname
- \@xa\@nx\csname/gmu/store\bslash#1\endcsname}% cf. the commentary
- % in line \ref{SMbslash}.
- \gmu@smtempa}%
- \global\gmu@SMglobalfalse}
-
-% \Define\RestoreMacros
-\long\pdef\RestoreMacros{\begingroup\makeatletter\Restore@Macros}
-
-\long\def\Restore@Macros#1{\endgroup
- \gmu@setsetSMglobal
- \let\gml@StoreCS\Restore@Macro% \gmhypertarget[letRestore]{we}
- % direct the core \CS towards restoring and call the same iterating
- % macro as in line \ref{InnerStore}.
- \gml@storemacros#1.}
-% As you see, the |\RestoreMacros| command uses the same iterating
-% macro inside, it only changes the meaning of the core macro.
-
-% And to restore \emph{and} use immediately:
-%\changes{v0.67}{06/10/11}{enriched with \cs{makeatletter}}
-\def\StoredMacro{\begingroup\makeatletter\Stored@Macro}
-\long\def\Stored@Macro#1{\endgroup\Restore@Macro#1#1}
-
-% To be able to call a~stored \CS without restoring it.
-\def\storedcsname#1{%% \changes{v0.88}{2008/08/03}{added}
- \csname /gmu/store\bslash#1\endcsname}
-
-
-% 2008/08/03 we need to store also an environment.
-\pdef\StoreEnvironment#1{% \label{StoreEnvironment}
-% \changes{v0.88}{2008/08/03}{added}
- \StoreMacro*{#1}\StoreMacro*{end#1}}
-
-\pdef\RestoreEnvironment#1{%
-% \changes{v0.88}{2008/08/03}{added}
- \RestoreMacro*{#1}\RestoreMacro*{end#1}}
-
-
-% It happened (see the definition of |\@docinclude| in \pk{gmdoc.sty})
-% that I~needed to |\relax| a~bunch of macros and restore them after
-% some time. Because the macros were rather numerous and I~wanted the
-% code more readable, I~wanted to |\do| them. After a~proper defining
-% of |\do| of course. So here is this proper definition of |\do|,
-% provided as a~macro (a~declaration).
-%
-% \Define\StoringAndRelaxingDo
-% \changes{v0.59}{06/09/04}{added for storing index-related macros in
-% \pk{gmdoc}'s \cs{DocInclude}.}
-% \changes{v0.61}{06/09/05}{renamed from \cs{MacroStoringDo} and the
-% storing cs's prefix changed from \cs[]{@gml@srs}.}
-\def\StoringAndRelaxingDo{%
- \gmu@SMdo@setscope
- \long\def\do##1{%
- \gmu@SMdo@scope
- \@xa\let\csname /gmu/store\string##1\endcsname##1%
- \gmu@SMdo@scope\let##1\relax}}
-
-\def\gmu@SMdo@setscope{%
- \ifgmu@SMglobal\let\gmu@SMdo@scope\global
- \else\let\gmu@SMdo@scope\relax
- \fi
- \global\gmu@SMglobalfalse}
-
-% And here is the counter-definition for restore.
-%
-% \Define\RestoringDo
-% \changes{v0.59}{06/09/04}{added for restoring index-related macros in
-% \pk{gmdoc}'s \cs{DocInclude}.}
-% \changes{v0.61}{06/09/05}{renamed from \cs{MacroRestoringDo} and
-% relaxing of the storing cs removed.}
-\long\def\RestoringDo{%
- \gmu@SMdo@setscope
- \long\def\do##1{%
- \gmu@SMdo@scope
- \@xa\let\@xa##1\csname /gmu/store\string##1\endcsname}}
-% Note that both |\StoringAndRelaxingDo| and |\RestoringDo| are
-% sensitive to the |\SMglobal| `prefix'.
-
-% And to store a~cs as explicitly named cs, i.e. to |\let| one csname
-% another (|\n@melet| not |\@namelet| because the latter is defined
-% in Till Tantau's \pk{beamer} class another way) (both arguments
-% should be text):
-\long\def\n@melet#1#2{%
- \edef\gmu@nl@reserveda{%
- \let\@xa\@nx\csname#1\endcsname
- \@xa\@nx\csname#2\endcsname}%
- \gmu@nl@reserveda}
-
-% The |\global| prefix doesn't work with |\n@melet| so we define the
-% alternative.
-\long\def\gn@melet#1#2{%
- \edef\gmu@nl@reserveda{%
- \global\let\@xa\@nx\csname#1\endcsname
- \@xa\@nx\csname#2\endcsname}%
- \gmu@nl@reserveda}
-
-\long\pdef\envirlet#1#2{%
- \n@melet{#1}{#2}%
- \n@melet{end#1}{end#2}%
-}
-
-
-% ^^A \StoreMacro\ch@ck
-% ^^A % \label{store:ch@ck}
+%%
+%%
+%% ^^A\typeout{\unexpanded{#4}}%%
- %\division{\cs{DeclareCommand} and \cmd\DeclareEnvironment}
- % The code of this section is based on the \pk{xparse}
- % package version 0.17 dated 1999/09/10, the version available in \TeX
- % Live 2007-13, in Ubuntu packages at least. Originally considered a~stub `im Erwartung'
- % (Schönberg) for the \LaTeX 3 bundle, it evolved to quite a~nice
- % tool I~think.
- %
- % I~rewrote the ancient \pk{xparse}'s code to use the usual
- % catcodes (only with |@| a~letter) and not to use the \pk{ldcsetup}
- % package (which caused an error of
- % undefined \CS\ |\KV@def|).
- % Then I~added the |\protected| prefix to the first macro. And I~added
- % my concept of |S|/|T| arg.\ spec. And of |b| and |B| spec. And the
- % |Q| argument type. And made \cmd\DeclareEnvironment\ makes the
- % arguments passed also to the end macro.
-%
-% After a~short deliberation I~rename the command to
-% \cs{DeclareCommand} which is much shorter than original
-% \cs{DeclareDocumentCommand} and more adequate at least
-% in my case: I~don't only use this powerful declaration for
-% ‘document’ commands.
-%
-% ^^A % After exchange of some mails with Morten H\o{}gholm and trying
-% ^^A % \pk{xparse} of 2008/08/03 svn 748 (which beautifully spoils the
-% ^^A % catcodes) I~wrap the
-% ^^A % ancient code in a~conditional to avoid name collision if someone
-% ^^A % loads \pk{xparse} before \pk{gmutils}
-%
-% In the args specification you can use:
-% \begin{itemize}
-% \item [\texttt{m}] for mandatory argument (braced or not),
-% \item [\env{O\arg{default}}] for optional argument (in square
-% brackets) with default value \<default> (which is passed as |#|\<n>
-% if the argument is missing),
-% \item [\texttt{o}] equivalent of |O{\NoValue}|: optional argument
-% (in square brackets) lack of which makes the \cs{NoValue} macro
-% passed as |#|\<n>. You can check it with
-% \possfil |\If›[No›]Value›(T⁄|F⁄|TF›){\#⁄<n>}|,
-% \item [\texttt{s}] for optional star (if star is present, it becomes
-% respective |#|\<n>, or else |\NoValue| is at the |#|\<n> (unlike in \pk{xparse}!).
-% \item [\texttt{S}\arg{list}{default}] for a~Single token, checks whether on the
-% respective position there's an unbraced token one of \<list> and
-% returns it on |#|\<n> if present or \arg{default} if absent. The
-% \arg{default} is a braced optional. If absent, |\NoValue| is the default.
-% ^^A Then that
-% ^^A % token can become |#|\<$n+1$>.
-% \item [\texttt{T}] as ‘Token’, just an alias for |S|.
-%
-% Like in \pk{xparse}, |s| is a~shorthand for |S{*}|, but
-% \emph{unlike} in \pk{xparse}, in the parsed arguments you get |*| or
-% |\NoValue| as |#|\<n>. You can now declare
-%\begin{verbatim}
-%\DeclareCommand\mimbla{S{+-}m}{%
-% \leavevmode
-% \ifx#1+\raise\fi
-% \ifx#1-\lower\fi
-% \ifx#1\NoValue\@tempdima=\fi
-% 7pt \hbox{#2}%
-% }
-%\end{verbatim}
-% and after |\mimbla+{raised} \mimbla-{lowered} \mimbla {untouched}|
-% get:\par
-% \fooatletter{\DeclareCommand\mimbla{S{+-}m}{\leavevmode\ifx#1+\raise\fi\ifx#1-\lower\fi\ifx#1\NoValue\@tempdima=\fi7pt\hbox{#2}}\mimbla+{raised}}
-%\mimbla-{lowered} \mimbla {untouched}
-%
-% This example is rather silly but shows that you spend only one |#|
-% for two symbols while in \pk{xparse} you would spend two. What if
-% you wanted 10 options for the optional symbol? Here it's no
-% problem. And with any number $k$ of tokens on the list the next |#| is
-% always $n+1$ not $n+k+1$.
-%
-% \item [\texttt{Q}\arg{list}] as ‘se\textbf Quence’, a~sequence of
-% symbols from \<list>; for the fundamental usage see line
-% \ref{Q-type}. More clearly, an argument specified with
-% |Q|\arg{tokens} is a~word over the alphabet
-% \<tokens>${}\cup{\tt\visiblespace}$ where {\tt\visiblespace}
-% is ignored and shall not be passed in the respective \hash{\<n>}.
-%
-% \item [\texttt{c}] for an optional argument in
-% parentheses. Historically it comes from a ‘coordinate’ argument and
-% may serve as such: if you declare \TextUsage\DCcoordinate, then
-% its catcher will be redefined to check for presence of a comma and pass
-% the argument as |{|\arg{before comma}{after comma}|}| if comma
-% present. |\NoValue| is passed if absent. By default
-% \TextUsage\DCnocoordinate\ is executed that defines the |c| type
-% argument as just an optional in parentheses.
-%
-% \item [\texttt C\arg{default}] as |c|, with default value.
-%
-% \item [\texttt b] for for an \emph{optional} argument in curly
-% braces. That's strange for anyone acquainted with \LaTeX\ and
-% contrary to its basic convention, but practised by Til Tantau in the
-% \pk{beamer} class. If missing, |\NoValue| is passed as |#|\<n> and
-% therefore all the tests |If›[No›]Value›(T⁄|F⁄|TF›)| apply.
-%
-% \item [\texttt B\arg{default}] for a~braced \emph{optional} argument with
-% the default value \<default>.
-%
-% \item [\texttt K\arg{\#-string}\metachar{[}\arg{replacement}\metachar{]}]
-% for a~\emph{mandatory} \textbf Knuthian delimited or undelimited macro
-% parameters. This concept comes from Stephen Hicks' suggestion at
-% Bacho\TeX\ 2009 of implementing arguments delimited with
-% |#{|. ^^A}
-% So, in the mandatory first argument to |K| you give
-% an arbitrary parameters string as described in Chapter 20 of
-% \TB. If you don't provide the replacement, only |#1| of those
-% parameters will be passed to the core macro of your command as
-% |#|\<n>. In both arguments you use single |#| char.
-%
-% \item [\texttt G\arg{pair of tokens}\metachar{[}{default value}\metachar{]}] a \textbf General
-% catcher of an optional. For instance, to declare an optional in
-% angles (used e.g.\ in Till Tantau's \pk{beamer}), declare
-% |G{<>}|. Again, if second argument is absent, |\NoValue| is assumed.
-% \item[\texttt{A}] (for ‘angles’) a~shorthand for |G{<>}| (accepts
-% the second braced as the default value).
-%
-% \item [\texttt{\string\afterassignment}\arg{register}] a
-% pseudo-argument that in fact \emph{interrupts} parsing arguments to
-% let an assignment to \<register>. The default \<register> is |\@tempcnta|. For
-% example,
-%\begin{verbatim}
-% \DeclareCommand\llf{\afterassignment}
-% {{\lastlinefit\@tempcnta\par}}
-%\end{verbatim}
-% defines |\llf| to be a command that expects a value for a numerical
-% assignment, assigns it to (|\@tempcnta| and then to) the |\lastlinefit|
-% special register and executes |\par| with that setting inside a
-% group.
-%
-% Actually, \<register> may be empty |{}| and then each
-% time our command is used the left side of the assignment has to
-% be given explicitly and may even be different each time.
-%
-% Doesn't add anything to the arguments' list.
-%
-% \emph{This pseudo-argument type should be considered experimental.}
-%
-% \end{itemize}
-%
-%
-% \stanza
-%
-% Note that you could limit acceptable values of a~mandatory or an
-% optional-in-brackets argument
-% to a~list inside definition of the command, using |\IfAmong›…\among…|
-% defined in line \ref{IfAmong}.
-%
-% The |S|/|T|, |s| and |Q| arguments are always `long', they allow
-% |\par| as their value that is. They have to be unbraced to be parsed so
-% there's no danger of “runaway argument”.
-%
-% By default, \TextMarginize*{\long!lL} all the |c|, |C|, |o|, |O|, |m|, |b| and
-% |B| are ‘short’, they don't allow |\par| in them that
-% is. Note however that |\par| is allowed in the default values. If
-% you wish to allow |\par| for all the arguments, you can say
-% |\DeclareCommand\mycommand!|… — the optional |!| makes all
-% the arguments ‘long’. Instead of |!| you can use |L| or |l| for
-% ‘long’ or just |\long| itself.
-%
-% In the arguments specification string you can write |>›[{›]⁄<prefix>›[}›]|
-% to make subsequent argument ‘long’ or ignored:
-%
-% Any of \TextUsage*{Pp!lL\long\par} to make a particular argument ‘long’,
-% allowing |\par| in it that is, and/or any of \TextUsage*{iI} to make the
-% argument ignored (just gobbled).
-%
-% (Note that also the |c| and |C| arguments may be made ‘long’. That's
-% because I use them not as coordinates but as just another kind of
-% optional argument.
-%
-% The concept of ignored arguments came to my head when I was
-% declaring a command with three braced optionals and put optional
-% stars only to distinguish the braced optionals.
-%
-% For example, after
-% \begin{verbatim}
-% \DeclareCommand\GLBTQKi{%
-% G{&&}{\#1 default}
-% >LB{\#2 default}
-% >iT{*\ht}
-% Q{0123456789}{0}
-% K{#1\par#2\par}{{\text{#1}\over\text{#2}}}
-% \end{verbatim}
-% and you get |\GLBTQKi| 4-argument with:
-% \begin{enumargs}
-% \dc G{&&} optional short in a pair of |&| with |\NoValue| as the default,
-% \dc >LB optional long in curly braces,
-% \dc >iT{*\ht} star or |\ht| control sequence,
-% \dc Q{0123456789}{0} optional sequence of decimal digits with
-% default 0,
-% \dc K{#1\par#2\par}{{\text{#1}\over\text{#2}}} mandatory sequence
-% of two arguments both delimited with |\par|, that will be passed
-% the inner macro as |{\text{#1}\over\text{#2}}|.
-% \end{enumargs}
-%
-% \stanza The arguments may be tested inside the command with
-% \TextUsage\IfLong|{#⁄<n>}|\arg{what if long}{what if short}. The
-% test looks for |\par| at any level of nesting (|{\par}|---|\par| in
-% braces will not hide) since it |\detokenize|s
-% its argument.
-%
-% ^^A % \stanza
-% ^^A %
-% ^^A % There's an idea that came to my mind but I~did not
-% ^^A % implement it:
-% ^^A % \begin{itemize}
-% ^^A % \item [\texttt{>B}] spec prefix for
-% ^^A % mandatory argument to check whether that argument is braced.
-% ^^A % \end{itemize}
-% ^^A % The |B| and |b| argument types partially fulfil it.
-%
-% \stanza If you wish \TextMarginize*{\global\outer} to define your
-% command |\global|ly, you can specify
-% |\DeclareCommand\mycommand\global|. If you wish to forbid usage of
-% your command in arguments of macros, add the |\outer| prefix. As
-% with original \TeX's |\def| and like, the prefixes are allowed in
-% any order and in any number only here they come between the
-% command's name and the arguments specification. You can also add
-% |\long|, as we mentioned above, and, for the symmetry, also
-% |\protected|, although the latter is \emph{always} added since the
-% command is not expandable.
-%
-% \stanza Handling of white spaces with optionals seems to me too
-% complicated compared to the estimated weight of the problem and
-% I~haven't faced it so far so I~don't provide anything. But!---but
-% there are some commands that should be invisible in the typeset
-% text, such as indexing commands and font declarations. For those
-% there is a~working \LaTeX\ mechanism of |\@bsphack|---|\@esphack|
-% and to use it I~provide yet another ‘prefix’:
-% if you type \TextMarginize*{iIwW\sphack} |W| or
-% |w| (for ‘white’) or |I| or |i| (for ‘invisible’) or, if you prefer
-% a~prefix-like, |\sphack|\qfootnote{I~don't define the \cmd\sphack\
-% control sequence and don't assume it's defined. I~use it only
-% as a~marker and my use of it doesn't create an entry in the
-% hash table.}
-% between the \CS to be defined and arguments
-% spec, |\@bsphack| and |\@esphack| will be
-% added in proper places.
-%
-% \stanza The original inner macros of the ancient \pk{xparse} had
-% names like |\@dc@o| etc. According to my \TeX\ Guru's advice
-% I~changed them to |\ArgumentCatcher@|\<letter(s)> to make the error
-% messages less confusing. Well, I~don't know if they are but
-% \possfil|\ArgumentCatcher@PO| looks better than |\@dc@PO| doesn't it?
-%
-% Talking of messages, there's a~Boolean switch
-% \TextUsage\IfDCMessages. Its default setting is
-% \TextUsage\DCMessagesfalse\ but if you set
-% \TextUsage\DCMessagestrue, every |\command| created with my
-% |\DeclareCommand| will issue a~message “Parsing arguments
-% for |\command|” at the beginning of its execution.
-%
-% If you are positive \TextMarginize{.qQ} that no such message will
-% ever be useful, you can suppress the very placing of it in the
-% command's definition with an optional argument to
-% \cs{Dec\-la\-re\-comm\-and} with all other ‘prefixes’, |.| or |q|
-% or |Q| for ‘quiet’.
-%
-% \stanza
-% To sum up, |\DeclareCommand| takes the following arguments:
-% \begin{enumargs}
-% \dc >Pm the command to be defined (can be even |\par| if you
-% really wish),
-%
-% \dc Q{\long\global\outer\protected!lL.qQiIwW\sphack} optional
-% \eTeX's prefix\:(es) and/or symbols for making all the arguments
-% long (|!|, |l| or |L|) and/or to suppress placing of the diagnostic
-% message in the definition (|.|, |q|, |Q|) and/or for placing
-% |\@sphack|---|\@esphack| (|i|, |I|, |w|, |W|, |\sphack|),
-%
-% \dc >Pm the arguments
-% specification (can contain |\par| as you see),
-%
-% \dc >Pm the definition body. You refer to the arguments with
-% |#|\<n> and can test their presence and absence with
-% |\If›[No›]Value›(T⁄|F⁄|TF›){#⁄<n>}| and if the argument was specified
-% with the |>P| prefix (allows |\par| in itself), you can test it
-% with |\IfLong{#⁄<n>}|\arg{if long}{if short}. You are also
-% provided the |\IfAmong›…\among| and |\IfIntersect| tests defined
-% earlier in this package to process the arguments, especially of
-% the |S|/|T| and |Q| type.
-%
-% \end{enumargs}
-%
-%\stanza
-% There is also the \TextUsage\DeclareEnvironment\ command to
-% define environments with sophisticated optionals. It takes the
-% arguments analogous to those of |\DeclareCommand|.
-%
-% The |iIwW\sphack| specifier however acts different: it doesn't add
-% |\@bsphack| nor |\@esphack| but only |\@ignoretrue| to the
-% end macro so the spaces following |\end{myenvir}| will be
-% ignored. (I~tried the space hack but it's problematic (“bad space
-% factor” error) if an environment begins in the vertical mode and
-% ends in horizontal.
-%
-% \stanza
-% So the arguments to
-% \cs{Decl\-are\-Env\-iron\-ment} are:
-% \begin{enumargs}
-%
-% \dc Pm the environment's name; you may wonder why it allows
-% \cmd\par; it's to allow environments like
-% \inverb|\string\par|---I~met such an environment once.
-%
-% \dc Q{\long\outer\global\protected!lL.qQiIwW\sphack} to prefix
-% \possfil the
-% command (note that |\outer| prefix will actually not work since
-% the command is called with |\csname|), make all the
-% arguments ‘long’ (|\long|, |!|, |l| or |L|), not to place the message
-% issuer in the command (|.|, |q|, |Q|) or to make the
-% environment ignores spaces following its end (|iIwW\sphack|).
-%
-% \dc Pm the arguments specification (both for the begin and for the
-% end macros)
-%
-% \dc Pm the begin definition,
-%
-% \dc Pm the end definition; it can use the same parameters
-% (\hash{\<n>}'s) as the begin definition. Note however that there
-% is only one
-% specification of the arguments and both begin and end have to have 9
-% parameters in total at most.
-%
-% \end{enumargs}
-%
-%
-
-\unless\ifdefined\@temptokenb
-\newtoks\@temptokenb
+\unless\ifdefined\Name
+ \def\Name#1#2{\expandafter#1\csname#2\endcsname}
\fi
-\newif\if@dc@alllong@ % for an option of all arguments long.
-\newif\if@dc@quiet@ % for suppressing the message of using of
-% declared command.
-
-\newif\IfDCMessages % a~global switch to suppress the message about
-% parsing.
-
-
-\def\@dc@long@yes{P}
-
-\newtoks\@dc@arguments
-
-\newcount\@dc@catchernum
-\newcount\@dc@argnum
-
-\newif\if@dc@ignore
-
-
-% \UnPdef
-\long\pdef\DeclareCommand#1#2#3{% ^^B It's the draft version just
- % ^^B~to declare the true one, which is defined in line \ref{DC:final}.
- % \begin{enumargs}
- % \item command to be defined,
- % \item arguments specification,
- % \item definition body.
- % \end{enumargs}
- % \chgs[\DeclareCommand]{2008/12/05 v0.98 added the \env{S}/\env{T} spec parsing, the
- % \env{s} spec parsing rewritten to be a~shorthand for
- % \env{S\{*\}}, unused code removed}
- %
- \@dc@catchernum\z@
- \@dc@argnum\z@
- \toks@{}% in this register we will store the created sequence of
- % argument catchers.
- % ^^A Later, in the working declared command,
- % ^^A % \incs{toks@} bears \inverb|{#1}{#2}{#3}…|.
- \@temptokena\toks@ % in this register we will store the sequence of \inverb|#1#2…|.
- \@temptokenb\toks@ % in this register we will store the sequences of
- % \inverb|m|'s.
- % ^^A \@temptokenc\toks@ % this register will bear the sequence of tests
- % ^^A % for `longness' of arguments.
- \emptify\@dc@long@
- \@dc@ignorefalse
- \@dc#2X% |X| is the sentinel of parsing.
- \protected\edef#1{%
- \@nx\@dc@ {\the\toks@}%
- \@xa\@nx\csname\string#1\endcsname
- \@nx #1%
- }%
- \edef\gmu@reserveda{%
- \long\def\@xa\@nx\csname\string#1\endcsname
- \the\@temptokena{%
- % ^^A \the\@temptokenc
- \unexpanded{#3}}}%
- \gmu@reserveda}% of the ‘draft’ |\DeclareCommand|.
-
-
-\long\def\@dc@
- #1% the argument catchers in a~pair of braces (their arguments
- % may contain \incmd\par\ so the macro is long).
- #2% |\\thecommand|
- #3% |\thecommand|
- {%
- \ifx\protect\@typeset@protect
- \@xa\@firstofone
- \else
- \protect#3\@xa\@gobble
- \fi
- {\@dc@arguments{#2}#1\the\@dc@arguments}}
-
-
-\def\@dc#1{% The main parsing macro.
- \ifx#1X% if we meet the sentinel we stop. Note there may be some
- % \inverb|m|'s in \incs{@temptokenb} and we might not to care about
- % them since
- % they denote mandatory arguments and as such they will
- % be grabbed by \nlperc|\\⁄<declared command>|. However, if any of them
- % contains \incs{par} (while it shouldn't), then it wouldn't be
- % noticed since \inverb|\\⁄<declared command>| is always
- % long. Therefore:
- \@dc@add@ms
- \else
- \ifx#1>%
- \let\next@dc\grab@prefix
- \else % not |X| neither |>|
- \if@dc@alllong@\let\@dc@long@\@dc@long@yes\fi
- \ifx#1\afterassignment\@dc@ignoretrue\fi % if we parse the
- % assigned pseudo-argument, we don't want to add anything to the
- % % arguments' toks register so we apply general mechanism of
- % % ignoring an argument.
- \ifx#1\gobblespace\@dc@ignoretrue\fi % again, as above for
- % ignoring spaces.
- \ifnum \ifx#1m0\else1\fi \ifx\@dc@long@\@empty 0\else 2\fi
- \if@dc@ignore 1\else0\fi = 0 % we check
- % whether \inverb|#1| is \inverb|m| and not prefixed.
- \addto@hook\@temptokenb m% as you see, \incs{@temptokenb} serves as
- % a~storage of |m|'s.
- \else % (not |m|) or prefixed
- \@dc@add@ms
- \if@dc@ignore\addtotoks\toks@{\@dc@ignorearg}\fi
- \@xa\addtotoks\@xa\toks@\@xa{%
- \csname ArgumentCatcher@\@dc@long@\detokenize{#1}\endcsname}% the argument catcher's name
- % is \inverb|\ArgumentCatcher@›[P›]⁄<arg. type>|.
- \@temptokenb{}%
- \fi% of |\if| short |m| or not
- \advance\@dc@catchernum\@ne
- \unless\if@dc@ignore
- \advance\@dc@argnum\@ne
- \@temptokena\@xa{%
- \the\@xa\@temptokena\@xa##\the\@dc@argnum}%
- \else
- \@dc@ignorefalse
- \fi
- \IfAmong#1\among{ABCO}%
- {\let\next@dc\grab@default}%
- {\IfAmong#1\among{GQST}%
- {\let\next@dc\grab@defaults}% G, Q, S and T have second argument,
- % braced optional, which is the default value (|\NoValue| by default).
- {\gmu@if x {K#1}%
- {\let\next@dc\@dc@define@K}%
- {\gmu@if x {\afterassignment#1}%
- {\let\next@dc\dc@grab@afterass}%
- {\let\next@dc\@dc}%
- }%
- }%
- }%
- \unless\ifx\next@dc\@dc@define@K
- \emptify\@dc@long@
- \fi
- \fi % of |\if#1>|.
- \@xa\next@dc
- \fi
-}%
-
-\def\@dc@add@ms{%
- \@xa\@ifempty\@xa{\the\@temptokenb}%
- {}%
- {\toks@\@xa{%
- \the\@xa\toks@
- \csname ArgumentCatcher@\the\@temptokenb\endcsname}}}
-
-
-\long\def\grab@default#1{% the default value or the list of tokens for
- % \inenv{S} may contain \incs{par} (why not?), that's why we make
- % this macro \incs{long}.
- \toks@\@xa{\the\toks@{#1}}%
- \let\next@dc\@dc
- \@dc
-}
-
-\long\def\grab@defaults#1{% default (when default is absent)
- \toks@\@xa{\the\toks@{#1}}%
- \@ifnextchar\bgroup
- {\grab@default}%
- {\grab@default{\NoValue}}%
-}
-
-\def\dc@grab@afterass{%
- \@ifnextchar\bgroup
- {\grab@default}%
- {\grab@default{\@tempcnta}}%
-}
-
-
-\long\def\@dc@addargum{%
- \addtotoks\@dc@arguments}
-
-\StoreMacro\@dc@addargum
-
-\pdef\@dc@ignorearg{%
- \long\def\@dc@addargum##1{%
- \RestoreMacro\@dc@addargum}}
-
-% Parsing of Knuthian parameters string is easier to implement with
-% full-feature |\DeclareCommand| so we postpone it till line \ref{K@parse}
-
-
-\def\grab@prefix#1{%
- \IfIntersect{#1}{\long!lL\par Pp}%
- {\def\@dc@long@{P}}{}%
- \IfIntersect{#1}{Ii}%
- {\@dc@ignoretrue}{}%
- \@dc
-}
-
-\long\def\ArgumentCatcher@o#1\@dc@arguments{% parsing of an optional with no default
- \@ifnextchar[%^^A]
- {\def\@dc@parse@next{#1}\ArgumentCatcher@o@}%\
- % the last macro has to be short so
- % we can't give it all the arguments' catchers since some default may
- % contain \incs{par}. Therefore we hide all the argument catchers in
- % \incs{@dc@parse@next}.
- {\@dc@addargum\NoValue#1\@dc@arguments}}
-
-\def\ArgumentCatcher@o@[#1]{%
- \@dc@addargum{{#1}}\@dc@parse@next\@dc@arguments}
-
-\long\def\ArgumentCatcher@Po#1\@dc@arguments{% parsing of an optional with no default.
- \@ifnextchar[%^^A]
- {\ArgumentCatcher@Po@{#1}}%
- {\@dc@addargum\NoValue#1\@dc@arguments}}
-
-\long\def\ArgumentCatcher@Po@#1[#2]{%
- \@dc@addargum{{#2}}#1\@dc@arguments}
-
-\long\def\ArgumentCatcher@O#1#2\@dc@arguments{% parsing of optional with default value.\
- % \begin{enumargs}
- % \mand the default value,
- % \mand the tail of args parser.
- % \end{enumargs}
- %
- \@ifnextchar[%^^A]
- {\def\@dc@parse@next{#2}\ArgumentCatcher@o@}% note that even when an
- % optional is short, its default may contain \incs{par}.
- {\@dc@addargum{{#1}}#2\@dc@arguments}}
-
-
-\long\def\ArgumentCatcher@PO#1#2\@dc@arguments{% parsing of optional with default value.\
- % \begin{enumargs}
- % \mand the default value,
- % \mand the tail of args parser.
- % \end{enumargs}
- %
- \@ifnextchar[%^^A]
- {\ArgumentCatcher@Po@#2}% note that even when an
- % optional is short, its default may contain \incs{par}.
- {\@dc@addargum{{#1}}#2\@dc@arguments}}
-
-
-\long\def\ArgumentCatcher@b#1\@dc@arguments{% parsing of an optional braced short argument.
- \@ifnextcat\bgroup
- {\def\@dc@parse@next{#1}\ArgumentCatcher@m@}%\
- % the last macro has to be short so
- % we can't give it all the arguments' parsers since some default may
- % contain \incs{par}. Therefore we hide all the argument catchers in \incs{@dc@parse@next}.
- {\@dc@addargum\NoValue#1\@dc@arguments}}
-
-
-\long\def\ArgumentCatcher@Pb#1\@dc@arguments{% parsing of a~braced and
- % long optional with \incmd\NoValue\ default.
- \@ifnextcat\bgroup
- {\ArgumentCatcher@Pm#1\@dc@arguments}%
- {\@dc@addargum\NoValue#1\@dc@arguments}%
-}
-
-\long\def\ArgumentCatcher@B#1#2\@dc@arguments{% parsing of a~braced optional with default value.\
- % \begin{enumargs}
- % \mand the default value,
- % \mand the tail of args catchers.
- % \end{enumargs}
- %
- \@ifnextcat\bgroup
- {\def\@dc@parse@next{#2}\ArgumentCatcher@m@}% note that even when an
- % optional is short, its default may contain \incs{par}.
- {\@dc@addargum{{#1}}#2\@dc@arguments}}
-
-\long\def\ArgumentCatcher@PB#1#2\@dc@arguments{% parsing of a~braced
- % and long optional with default value.\
- % \begin{enumargs}
- % \mand the default value,
- % \mand the tail of args catchers.
- % \end{enumargs}
- %
- \@ifnextcat\bgroup
- {\ArgumentCatcher@Pm#2\@dc@arguments}%
- {\@dc@addargum{{#1}}#2\@dc@arguments}}
-
-
-\long\def\ArgumentCatcher@S@% parsing of a~Single continued:
-#1% the list to search |#4| on,
-#2% the default value,
-#3% the tail of args parsers,
-#4% the token we search in |#1| (it's an unbraced
-% single token as we checked in line \ref{dc@S:bgroup}).
-{%
- \IfAmong#4\among{#1}%
- {\@dc@addargum{{#4}}#3\@dc@arguments}%
- {\@dc@addargum{{#2}}#3\@dc@arguments#4}%
-}
-
-\long\def\ArgumentCatcher@S % parsing of a~\textbf Single\
- % token. It's always long since we look for a~single unbraced token\
- % so there is no danger of “runaway argument”.
-#1% the list we search optional token on,
-#2% the default value,
-#3% the tail of args parser.
-\@dc@arguments{%
- \@ifnextsingle
- % \label{dc@S:bgroup}
- {\ArgumentCatcher@S@{#1}{#2}{#3}}%
- {\@dc@addargum{{#2}}#3\@dc@arguments}% if we parse an
- % opening or closing brace, then we are sure it's not any expected
- % Single.
-}
-
-
-\let\ArgumentCatcher@PS\ArgumentCatcher@S % as above: we always act `long' with single tokens.
-\let\ArgumentCatcher@T\ArgumentCatcher@S % we allow |T| (for Token) as
-% an alias of |S|.
-
-
-\edef\ArgumentCatcher@s{%
- \@nx\ArgumentCatcher@S{\@xa\@nx\all@stars}{\@nx\NoValue}}% the |s| arg spec is
-% a~shorthand for \inverb|S{*}|. Except the star may be of any
-% category from $\{11,12,13\}$.
-\let\ArgumentCatcher@Ps\ArgumentCatcher@s
-
-\long\def\ArgumentCatcher@Q% parsing of a~se\textbf Quence\
- % of tokens from the list. It's always long since we look for unbraced tokens\
- % so there is no danger of “runaway argument”.
-#1% the list we search optional tokens on,
-#2% the default value,
-#3% the tail of args parser.
-\@dc@arguments % delimiter
-{%
- \def\@dc@parse@next{#3}%
- \emptify\@dc@seQuence
- \ArgumentCatcher@Q@{#1}{#2}}
-
-% \Define\ArgumentCatcher@PQ
-\let\ArgumentCatcher@PQ\ArgumentCatcher@Q
-
-\long\def\ArgumentCatcher@Q@#1#2{% list, default
- % ^^A \typeout{@@@@ AC@Q@, toks@: \the\@dc@arguments}%
- \@ifnextsingle
- {\ArgumentCatcher@Q@@{#1}{#2}}%
- {\@dc@seQuence@finish{#2}}%
-}
-
-\long\def\ArgumentCatcher@Q@@#1#2#3{% list, default, token to be checked\\
- % we only launch this macro when not
- % before opening curly brace. \inverb|#1| is the list of acceptable
- % values, \inverb|#2| the default value, \inverb|#3| is the token to
- % be sought on the list.
- \IfAmong #3\among{#1}%
- {\addtomacro\@dc@seQuence#3%
- \ArgumentCatcher@Q@{#1}{#2}}%
- {\@dc@seQuence@finish{#2}#3}%
-}
-
-\long\def\@dc@seQuence@finish#1{%
- % ^^A \typeout{@@@@ l.\the\inputlineno\space \@xa\unexpanded\@xa{\@dc@seQuence}}%
- \ifx\@dc@seQuence\@empty\def\@dc@seQuence{#1}\fi
- \@xa\@dc@addargum\@xa{\@xa{\@dc@seQuence}}%
- % ^^A \typeout{@@@@ finish, toks@: \the\@dc@arguments}%
- \@dc@parse@next\@dc@arguments }
-
-
-\long\def\ArgumentCatcher@c#1\@dc@arguments{%
- \@ifnextchar(%^^A)
- {\def\@dc@parse@next{#1}\ArgumentCatcher@c@}%
- {%
- % ^^A \PackageError{gmutils/gmparse}{Missing coordinate argument}%
- % ^^A {A value of (0,0) is assumed}%
- \@dc@addargum{{\NoValue}}#1\@dc@arguments}%
-}
-
-\def\DCcoordinate{%
- \def\ArgumentCatcher@c@(##1){%
- \IfAmong,\among{##1}%
- {\@xa\@dc@addargum\@dc@commasep##1\@dc@commasep}%
- {\@dc@addargum{{##1}}}\@dc@parse@next\@dc@arguments}%
- % \stanza
- \def\@dc@commasep##1,##2\@dc@commasep{{{{##1}{##2}}}}%
- % \stanza
- \long\def\ArgumentCatcher@Pc@(##1){%
- \IfAmong,\among{##1}%
- {\@xa\@dc@addargum\@dc@commasep##1\@dc@commasep}%
- {\@dc@addargum{{##1}}}\@dc@parse@next\@dc@arguments}%
-}
-
-\def\DCnocoordinate{%
- \def\ArgumentCatcher@c@(##1){%
- \@dc@addargum{{##1}}\@dc@parse@next\@dc@arguments}%
- % \stanza
- \long\def\ArgumentCatcher@Pc@(##1){%
- \@dc@addargum{{##1}}\@dc@parse@next\@dc@arguments}%
-}
-
-\DCnocoordinate
-
-\long\def\ArgumentCatcher@C#1#2\@dc@arguments{%
- \@ifnextchar(%^^A)
- {\def\@dc@parse@next{#2}\ArgumentCatcher@c@}%
- {\@dc@addargum{{#1}}#2\@dc@arguments}}
-
-
-\long\def\ArgumentCatcher@Pc#1\@dc@arguments{%
- \@ifnextchar(%^^A)
- {\def\@dc@parse@next{#1}\ArgumentCatcher@Pc@}%
- {\@dc@addargum{{\NoValue}}#1\@dc@arguments}%
-}
-
-\long\def\ArgumentCatcher@PC#1#2\@dc@arguments{%
- \@ifnextchar(%^^A)
- {\def\@dc@parse@next{#2}\ArgumentCatcher@Pc@}%
- {\@dc@addargum{{#1}}#2\@dc@arguments}}
-
-
-\long\def\ArgumentCatcher@Pm#1\@dc@arguments#2{%
- \@dc@addargum{{#2}}#1\@dc@arguments}
-
-\def\gmu@hashes#1#2{% this is a~fully expandable loop analogous to
- % that of The % \eTeX\ Manual p.~9.
- \ifnum#1<#2%
- ####\number#1
- \expandafter\gmu@hashes
- \expandafter{\number\numexpr#1+1\expandafter}%
- \expandafter{\number#2\expandafter}%
- \fi}% of |\gmu@hashes|.
-
-\def\gmu@hashesbraced#1#2{%
- \ifnum#1<#2%
- {####\number#1}%
- \expandafter\gmu@hashesbraced
- \expandafter{\number\numexpr#1+1\expandafter}%
- \expandafter{\number#2\expandafter}%
- \fi}% of |\gmu@hashesbraced|.
-
-\@tempcnta=1
-\@whilenum\@tempcnta<9\do{%
- \edef\gmu@ms{\romannumeral\numexpr\@tempcnta*1000 }%
- %
- % ^^A \typeout{@@@@ gmutils.sty: defining \bslash
- % ^^A ArgumentCatcher@\gmu@ms}%
- \edef\gmu@tempa{%
- \long\def\@xa\@nx\csname
- ArgumentCatcher@\gmu@ms
- \endcsname
- ##1\@nx\@dc@arguments{\def\@nx\@dc@parse@next{##1}%
- \@xa\@nx\csname
- ArgumentCatcher@\gmu@ms @%
- \endcsname}%
- %
- \def\@xa\@nx\csname
- ArgumentCatcher@\gmu@ms @%
- \endcsname
- \gmu@hashes1{\numexpr\@tempcnta+1}%
- {\@nx\@dc@addargum{%
- \gmu@hashesbraced1{\numexpr\@tempcnta+1}}%
- \@nx\@dc@parse@next\@nx\@dc@arguments
- }% of \incs{ArgumentCatcher@\<m's>@}.
- }% of |\edef|.
- \gmu@tempa
- \advance\@tempcnta1\relax
-}% of the loop.
-
-% The loop above defines 8 pairs of macros as we see thanks to the
-% code below:
-\if 1 1
-\@tempcnta\@ne
-\@whilenum\@tempcnta<9\do{%
- \edef\gmu@ms{\romannumeral\numexpr\@tempcnta*1000}%
- \typeout{\bslash ArgumentCatcher@\gmu@ms:%
- ^^J\@xa\meaning\csname ArgumentCatcher@\gmu@ms\endcsname}%
- \typeout{\bslash ArgumentCatcher@\gmu@ms @:%
- ^^J\@xa\meaning\csname ArgumentCatcher@\gmu@ms @\endcsname}%
- \advance\@tempcnta\@ne
-}
+\unless\ifcsname ifgmu@quiet\endcsname
+\Name\newif {ifgmu@quiet}% % it has to be at least (at highest) in
\fi
-% The code above produces on the terminal:
-%\begin{verbatim}
-% \ArgumentCatcher@m:
-% macro:#1\@dc@arguments ->\def \@dc@parse@next {#1}\ArgumentCatcher@m@
-% \ArgumentCatcher@m@:
-% macro:#1->\addto@hook \@dc@arguments {{#1}}\@dc@parse@next \@dc@arguments
-% \ArgumentCatcher@mm:
-% macro:#1\@dc@arguments ->\def \@dc@parse@next {#1}\ArgumentCatcher@mm@
-% \ArgumentCatcher@mm@:
-% macro:#1#2->\addto@hook \@dc@arguments {{#1}{#2}}\@dc@parse@next \@dc@arguments
-% \ArgumentCatcher@mmm:
-% macro:#1\@dc@arguments ->\def \@dc@parse@next {#1}\ArgumentCatcher@mmm@
-% \ArgumentCatcher@mmm@:
-% macro:#1#2#3->\addto@hook \@dc@arguments {{#1}{#2}{#3}}\@dc@parse@next \@dc@arguments
-% \ArgumentCatcher@mmmm:
-% macro:#1\@dc@arguments ->\def \@dc@parse@next {#1}\ArgumentCatcher@mmmm@
-% \ArgumentCatcher@mmmm@:
-% macro:#1#2#3#4->\addto@hook \@dc@arguments {{#1}{#2}{#3}{#4}}\@dc@parse@next \@dc@arguments
-% \ArgumentCatcher@mmmmm:
-% macro:#1\@dc@arguments ->\def \@dc@parse@next {#1}\ArgumentCatcher@mmmmm@
-% \ArgumentCatcher@mmmmm@:
-% macro:#1#2#3#4#5->\addto@hook \@dc@arguments {{#1}{#2}{#3}{#4}{#5}}\@dc@parse@next \to
-% ks@
-% \ArgumentCatcher@mmmmmm:
-% macro:#1\@dc@arguments ->\def \@dc@parse@next {#1}\ArgumentCatcher@mmmmmm@
-% \ArgumentCatcher@mmmmmm@:
-% macro:#1#2#3#4#5#6->\addto@hook \@dc@arguments {{#1}{#2}{#3}{#4}{#5}{#6}}\@dc@parse@ne
-% xt \@dc@arguments
-% \ArgumentCatcher@mmmmmmm:
-% macro:#1\@dc@arguments ->\def \@dc@parse@next {#1}\ArgumentCatcher@mmmmmmm@
-% \ArgumentCatcher@mmmmmmm@:
-% macro:#1#2#3#4#5#6#7->\addto@hook \@dc@arguments {{#1}{#2}{#3}{#4}{#5}{#6}{#7}}\@dc@pa
-% rse@next \@dc@arguments
-% \ArgumentCatcher@mmmmmmmm:
-% macro:#1\@dc@arguments ->\def \@dc@parse@next {#1}\ArgumentCatcher@mmmmmmmm@
-% \ArgumentCatcher@mmmmmmmm@:
-% macro:#1#2#3#4#5#6#7#8->\addto@hook \@dc@arguments {{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}}\@
-% dc@parse@next \@dc@arguments
-%\end{verbatim}
-
-
-\def\ArgumentCatcher@mmmmmmmmm\the\@dc@arguments
-#1#2#3#4#5#6#7#8#9{% yes, it has to be
- % delimited (well, actually: started) by \inverb|\the\@dc@arguments| not
- % only \incs{@dc@arguments}. And it doesn't need to be long and launch inner
- % short macro because there's nothing more to catch.
- \@dc@addargum{%
- {#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}}\the\@dc@arguments}
+\RequirePackage{xkeyval}
-\long\def\ArgumentCatcher@Pm#1\@dc@arguments#2{% catcher of a~long mandatory.
- \@dc@addargum{{#2}}#1\@dc@arguments}
+\RequirePackage{gmbase}
-\long\def\ArgumentCatcher@K % a~Knuthian delimited or undelimited
-% arguments parsed and passed to the command's body in a~digest
-% (Knuthian replacement)
-#1% the particular Knuthian macro
-#2% the tail of args parser.
-\@dc@arguments % tail delimiter
-{\def\@dc@parse@next{#2}#1}
-
-\let\ArgumentCatcher@PK\ArgumentCatcher@K
-
-\long\def\gmu@twostring#1#2{\string#1\string#2}
-
-\long\def\ArgumentCatcher@G % general catcher
-#1% left and right delimiter
-#2% default value
-#3% the tail of args parser.
-\@dc@arguments % tail delimiter
-{%
- \edef\@dc@Gname{ArgumentCatcher@G\gmu@twostring#1}%
- \unless\ifcsname \@dc@Gname \endcsname
- \@xa\def\csname \@dc@Gname\@xa\endcsname
- \@dc@Gparams#1{\@dc@addargum{{##2}}##1\@dc@arguments}%
- \fi
- \@xa\@ifnextchar\@firstoftwo#1%
- {\def\dc@parse@next{#3}% we hide possible |\par|s.
- \csname\@dc@Gname\endcsname\dc@parse@next}%
- {\@dc@addargum{{#2}}#3\@dc@arguments}%
+\DeclareOptionX{quiet}{\gmu@quiettrue
+ \PassOptionsToPackage{quiet}{gmtypos}%
}
-
-\long\def\ArgumentCatcher@PG % general catcher
-#1% left and right delimiter
-#2% default value
-#3% the tail of args parser.
-\@dc@arguments % tail delimiter
+\def\gmu@PackOptionX
+#1% name of a package with or without leading “gm”.
{%
- \edef\@dc@Gname{ArgumentCatcher@PG\gmu@twostring#1}%
- \unless\ifcsname \@dc@Gname \endcsname
- \long\@xa\def\csname \@dc@Gname\@xa\endcsname
- \@dc@Gparams#1{\@dc@addargum{{##2}}##1\@dc@arguments}%
- \fi
- \@xa\@ifnextchar\@firstoftwo#1%
- {\csname\@dc@Gname\endcsname{#3}}%
- {\@dc@addargum{{#2}}#3\@dc@arguments}%
-}
-
-
-\long\def\@dc@Gparams#1#2{##1#1##2#2}% expands to parameters string
-% with \inhash1 delimited with first argument and \inhash2 delimited
-% with second. In fact it's intended to pass \inhash1 further (it will
-% always be braced) and to catch an argument put in a~pair of tokens
-% given \incmd\@dc@Gparams\ as the arguments.
-
-\long\def\ArgumentCatcher@A{\ArgumentCatcher@G{<>}}
-\long\def\ArgumentCatcher@PA{\ArgumentCatcher@PG{<>}}
-
-\long\def\ArgumentCatcher@a{\ArgumentCatcher@G{<>}{\NoValue}}
-\long\def\ArgumentCatcher@Pa{\ArgumentCatcher@PG{<>}{\NoValue}}
-
-
-\def\NoValue{-NoValue-}
-
-\long\def\IfNoValueTF#1{% % \chgs{2008/12/1 v0.98 the \pk{xparse} tests for
- % the presence of value redefined and much simplified (43 \CS'es
- % less). Moreover, they are now fully expandable: \cmd\IfNoValueTF,
- % \cmd\IfNoValueT, \cmd\IfNoValueF, \cmd\IfValueTF, \cmd\IfValueT,
- % \cmd\IfValueF}
- %
- \@xa\ifx\@firstofmany#1\@empty\@@nil\NoValue \afterfi\@firstoftwo
- \else\afterfi\@secondoftwo
- \fi}
-
-\long\def\IfNoValueT#1#2{\IfNoValueTF{#1}{#2}\@empty}
-
-\long\def\IfNoValueF#1#2{\IfNoValueTF{#1}\@empty{#2}}
-
-\long\def\IfValueTF#1#2#3{\IfNoValueTF{#1}{#3}{#2}}
-
-\long\def\PutIfValue#1{\IfValueT{#1}{#1}}
-
-% \Define\IfValueT
-\let\IfValueT\IfNoValueF
-
-% \Define\IfValueF
-\let\IfValueF\IfNoValueT
-
-\long\pdef\IfLong#1{%\
- % \begin{enumargs}
- % \item the argument to check for |\par|,
- % \item what if |\par| found,
- % \item what if |\par| not found.
- % \end{enumargs}
- %
- \edef\gmu@reserveda{\detokenize{#1}}%
- \edef\gmu@reserveda{%
- \IfAmong\string\par\@nx\among{\gmu@reserveda}}%
- \gmu@reserveda}
-
-
-% |\afterassignment| pseudo-argument
-
-\long\@namedef{ArgumentCatcher@\detokenize{\afterassignment}}%
-#1% register used in the assignment
-#2% the tail of args parser.
-\@dc@arguments{%
- \def\@dc@parse@next{%
- \@dc@addargum\NoValue % to make ignoring mechanism work
- #2\@dc@arguments}%
- \afterassignment\@dc@parse@next
- #1}% optional space and |=| is left at user's discretion. In fact,
-% \inhash1 may be empty and then each
-% time our command is used the left side of the assignment has to
-% be given explicitly and may even be different each time.
-
-\n@melet{ArgumentCatcher@P\detokenize{\afterassignment}}
-{ArgumentCatcher@\detokenize{\afterassignment}}
-
-% |\gobblespace| pseudo-argument: useful between optional and
-% Knuthian-type arguments and after all parsing. Equivalent
-% |>iT{\somedummymacro}|. At first I wanted mark it |\ignorespaces|
-% but the gobbling doesn't expand macros: it doesnt't use
-% |\ignorespaces| but |\@ifnextchar|'s space trick.
-
-\long\@namedef{ArgumentCatcher@\detokenize{\gobblespace}}%
-{\ArgumentCatcher@S{\dc@gobblespace@dummy}{\NoValue}}
-
-\n@melet{ArgumentCatcher@P\detokenize{\gobblespace}}
-{ArgumentCatcher@\detokenize{\gobblespace}}
-
-\def\dc@gobblespace@dummy{\dc@gobblespace@dummy}
-
-\let\gobblespace\dc@gobblespace@dummy
-
-
-% end of catchers' definitions
-
-
-\DeclareCommand\DeclareCommand % This is the final version by now.\
- % Note we introduce the ‘prefixes’ at the \inhash2 position only at \
- % this point so we have yet to prefix every argument specifier\
- % separately. Note also we only here ‘teach’ |\DeclareCommand| to
- % pass the name of its main argument in the |\dc@bsname| macro.
-{>Pm % (1) command to be defined (may be \incs{par} if you
- % really wish),
- Q{\global\protected\outer\long!lL.qQiIwW\sphack\envhack}%\
- % \label{Q-type} % (2) an optional
- % se\textbf Quence of \eTeX's prefixes and/or |!| or |l| or |L|
- % for ‘all
- % long’ and/or |.| or |q| or
- % |Q| for `quiet' (message about calling the command is
- % suppressed) and/or % |i| or |I| as ‘invisible’ or |W| or |w| as
- % ‘white’ or |\sphack| to make the command ‘invisible’ in
- % the leading with the \incs{@bsphack}…\incs{@esphack}\qfootnote{To
- % deal with an ‘invisible’ environment, there is one more
- % acceptable value of this argument: \cmd\envhack, which
- % suppresses placing \cs{@bsphack}---\cs{@esphack} and places
- % \cs{@ignoretrue} instead in the end macro.},
- >Pm % (3) arguments specification (may contain \incmd\par),
- >Pm % (4) the definition body; may contain nearly anything including
- % \incmd\par\ and tests for presence/absence of arguments
- % \nlperc|\If›[No›]Value›(T⁄|F⁄|TF›)| and for their longness \incmd\IfLong;
- % you refer to the arguments with \inverb|#|\<n>.
-}{% \label{DC:final} %
- % \chgs{2008/12/05 v0.98 added the \cs{@bsphack}---\cs{@esphack} option}
- % \chgs{2008/12/07 v0.98 added the \env{Q\arg{tokens}} argument type
- % (a~word over the alphabet \<tokens>)}
- %
- % ^^A \edef\@detokena{\detokenize{{#1} {#2} {#3} {#4} {#5} {#6}}}%
- % ^^A \typeout{\@detokena}%
- %
- \edef\dc@bsname{\string#1}% we'll use it in K-type arg.\ catcher and
- % to allow \inhash1${}=={}$\incs{par}
- % (\incs{Pack\+age\+Warn\+ing} is short and \incs{typeout} too!).
- \gm@testdefined#1\iftrue
- \IfDCMessages
- \PackageWarning{gmutils (gmparse)}{Redefining command \dc@bsname\space
- with \string\DeclareCommand}%
- \fi
- \else
- \IfDCMessages
- \typeout{^^J\string\DeclareCommand\dc@bsname\space (new)^^J}%
- \fi
- \fi
- %
- % First we parse the declaration options to know whether all the
- % arguments are to be long and whether we should suppress the
- % message ``Parsing arguments for…''.\nostanza
- \@dc@alllong@false
- \@dc@quiet@false
- % ^^A \typeout{@@@@ \the\inputlineno\space DC \xiihash1: \@nx#1}%
- \IfIntersect{#2}{\long!lL}{%
- % ^^A \typeout{@@@ \@nx #1 \space intersect with !lL }%
- \@dc@alllong@true}{}%
- \IfIntersect{#2}{.qQ}{\@dc@quiet@true}{}%
- \IfIntersect{#2}{iIwW\sphack}%
- {% if `invisibility' is specified: \UnDef
- \def\@dc@bsphack@{\@nx\@bsphack}% \UnDef
- \def\@dc@esphack@{\@nx\@esphack}%
- }%
- {\emptify\@dc@bsphack@\emptify\@dc@esphack@}% if `invisibility' is not specified.
- \IfAmong\envhack\among{#2}%
- {% but if we define an environment:
- \emptify\@dc@bsphack@\emptify\@dc@esphack@}%
- {% and if we don't define an environment:
- \emptify\@dc@env@argstoend}%
- \relaxen\@dc@global@ \relaxen\@dc@outer@
- \IfAmong\outer\among{#2}{\let\@dc@outer@\outer}{}%
- \IfAmong\global\among{#2}{\let\@dc@global@\global}{}%
- % We initialise the scratch count and toks registers before parsing
- % of the arguments specifiers.\nostanza
- \@dc@catchernum\z@
- \@dc@argnum\z@
- \toks@{}%
- \@temptokena\toks@
- \@temptokenb\toks@
- % We parse the arguments specifiers:\nostanza
- \@dc#3X% |X| is the sentinel of parsing.\par
- % Now we define the basic macro:\nostanza
- \@dc@outer@\@dc@global@ % possibly the prefixes,
- \protected\edef#1{% always |\protected| \balsmiley( ;-)
- \@dc@bsphack@ % perhaps |\@bsphack|
- \unless\if@dc@quiet@
- \unexpanded{%
- \IfDCMessages
- \typeout}{Parsing arguments for \dc@bsname.}%
- \@nx\fi
- \fi
- \@nx\@dc@{\the\toks@}% in the braces appear the argument catchers.
- \@xa\@nx\csname\dc@bsname\endcsname
- \ifx\@dc@outer@\outer
- \@xa\@nx\csname \@xa\gobble\string#1 \endcsname % note the blank
- % space after \inhash1! If the command is to be \incmd\outer, we
- % can't put it itself, so we put another, whose name is the same
- % plus a~space. Anyway, since \inhash1 becomes \incmd\protected,
- % this case will never be executed.
- \else \@nx #1%
- \fi
- }% \UnDef
- \edef\gmu@reserveda{%
- \@dc@global@ % perhaps |\global|
- \long\def\@xa\@nx\csname\string#1\endcsname% for a~command
- % \incmd\command, define \incs{\bslash command}\ilrr
- \the\@temptokena% it's |#1#2#3…|
- {% the definition body:
- \@dc@env@argstoend % if we define an environment, this macro
- % will provide passing the arguments to the end macro (see
- % line \ref{@dc@env@argstoend}).
- % ^^A \IfNoValueTF{#1}%
- % ^^A {\@dc@test@long\@nx#2{\the\@temptokena}}{}%
- \unexpanded{#4}%
- \@dc@esphack@}%
- }% of |\edef|.
- \gmu@reserveda
-}% of |\DeclareCommand|.
-
-% Now we have a~convenient tool to implement parsing of a~Knuthian
-% argument(s).
-
-% Knuthian argument's default replacement
-\def\@dc@K@defaultrepl{##1}
-% 2009/11/22 inner pair of braces removed (as leading to additional
-% group causing errors).
-
-\DeclareCommand\@dc@define@K\long{mb}{% \label{K@parse}
- % first we add the particular \CS to the toks register:\nostanza
- \edef\gmu@tempa{%
- \unexpanded{\toks@\@xa}%
- {\@nx\the\toks@{%
- \@xa\@nx\csname\dc@bsname @K\the\@dc@catchernum\endcsname}}%
- }\gmu@tempa
- % and define this macro: \nostanza
- \edef\gmu@tempa{%
- \def\@xa\@nx\csname\dc@bsname @K\the\@dc@catchernum\endcsname
- \unexpanded{#1}{%
- \@nx\@dc@addargum{{%
- \IfValueTF{#2}{\unexpanded{#2}}{\@xau{\@dc@K@defaultrepl}}%
- }}% we add the Knuthian
- % replacement to the toks register as \inhash n.
- \@nx\@dc@parse@next\@dc@arguments}% and continue parsing.
- }% of |\edef|. Now we execute this temporary macro, which means we \incmd\def|\⁄<command>@K⁄<n>|
- \@dc@global@ % set properly before |\@dc#3X|.
- \if P\@dc@long@\relax\long\fi
- \gmu@tempa
- % ^^A \nameshow{\dc@bsname @K\the\@dc@catchernum}%
- % Now we clean up and continue construction of arguments parser. \nostanza
- \emptify\@dc@long@
- \@dc
-}
-
-
-\DeclareCommand\DeclareEnvironment\long
-{m% Pm the environment's name; you may wonder why it allows
- % \incmd\par. Once I~met an environment with a~name containing
- % \nlperc|\string\par|.
- Q{\outer\global\protected\long!lL.qQiIwW\sphack\envhack}% \
- % a~sequence of \eTeX's prefixes and/or specifiers to make all the
- % arguments ‘long’ (\incmd\long, |!|,
- % |l| or |L|)
- % and/or not to place the message issuer in the command
- % (\inverb|.|, \inverb|q|, \inverb|Q|) and/or to make the
- % environment ignore spaces following its end (|i|, |I|, |w|, |W|
- % or \incmd\sphack),
- m % the arguments specification (both for the begin and the
- % end definitions),
- m % the begin definition,
- m % the end definition; it \emph{can} contain any
- % \inverb|#|\<n>---the arguments of the environment are passed
- % to it, too.
-}{%
- \def\@dc@env@argstoend{% \label{@dc@env@argstoend} \UnDef
- \edef
- \@xa\@nx\csname \bslash#1(arguments)\endcsname
- {\unexpanded{%
- \@xa\@xa\@xa\unexpanded\@xa\@xa\@xa{\@xa\@gobble\the\@dc@arguments}%
- }% of outer |\unexpanded|,
- }% of |\edef|'s body.
- % \nostanza Note that |\@dc@env@argstoend| will be put in an
- % |\edef| and the arguments bearer it sets will be defined as custom for
- % this particular environment (its name contains the name of the
- % environment) and inside the environment's group
- % and will bear a~list of tokens \arg{arg.1}{arg.2}\mch… not
- % the \CS\ |\@dc@arguments| so it's robust to nested environments
- % and even to \cs{DeclareEnvironment}'s occurrences inside the
- % environment.\fullpar \nostanza
- }% of |\@dc@env@argstoend|.
- %
- \def\gmu@reserveda{\envhack}% we add the information we define an
- % environment.
- \IfValueT{#2}%
- {\addtomacro\gmu@reserveda{#2}}% we pass all the ‘prefixes’ to
- % \incs{Decl\+are\+Comm\+and}
- % \stanza
- \@xa\DeclareCommand\csname#1\@xa\endcsname
- \gmu@reserveda{#3}{#4}%
- %
- %\nostanza Now the begin definition is done. Let's get down to the
- %end definition. \nostanza
- %
- \@dc@global@ % note this \CS was for sure redefined by the last
- % \incs{Decl\+are\+Com\+m\+and} (and by nothing else) and that's
- % exactly what we want.
- \@nameedef{end#1}% It's |\edef| inside.
- {\@nx\@xa\@xa\@nx\csname\bslash end#1\endcsname
- \@xa\@nx\csname \bslash#1(arguments)\endcsname}%
- % \nostanza We |\edef| the |\end|\<env. name> macro to be
- % \[|\expandafter\\end⁄<env. name>\\⁄<env. name>(arguments)|\]
- % (it's |\expandafter| and two control sequences, the latter with
- % |(arguments)| in its name).
- %
- \IfIntersect{#2}{iIwW\sphack}%
- {\@dc@global@\@xa\addtomacro
- \csname end#1\endcsname{\@ignoretrue}}{}%
- \edef\gmu@reserveda{% \UnDef
- \@dc@global@\long\def % the inner end macro is always \incmd\long\
- % and perhaps defined \incmd\global ly.
- \@xa\@nx\csname\bslash end#1\endcsname
- \the\@temptokena% it's |#1#2#3›…|---the inner end macro takes the
- % same number of parameters as the begin macro.
- {% the definition body
- % ^^A \IfNoValueTF{#1}%
- % ^^A {\@dc@test@long\@nx#2{\the\@temptokena}}{}%
- \unexpanded{#5}}%
- }% of |\edef|.
- \gmu@reserveda
-}
-
-
-% ^^A \unless\ifdefined\DeclareDocumentCommand
-% ^^A \let\DeclareDocumentCommand\DeclareCommand
-% ^^A \fi
-% ^^A
-% ^^A \unless\ifdefined\DeclareDocumentEnvironment
-% ^^A \let\DeclareDocumentEnvironment\DeclareEnvironment
-% ^^A \fi
-
-
-
-% \division{Ampulex Compressa-like modifications of macros}
-% Ampulex Compressa is a~wasp that performs brain surgery on its
-% victim cockroach to lead it to its lair and keep alive for its
-% larva. Well, all we do here with the internal \LaTeX\ macros
-% resembles Ampulex's actions but here is a~tool for a~replacement of
-% part of macro's definition.
-%
-% The \cs{ampulexdef} command takes its |#2| which has to be a~macro
-% and replaces part of its definition delimited with |#5| and |#6|
-% with the replacement |#7|. The redefinition may be prefixed with
-% |#1|. |#2| may have parameters and for such a~macro you have to set
-% the parameters string and arguments string (the stuff to be taken by
-% the one-step expansion of the macro) as the optional |[#3]| and
-% |[#4]|. . If \cs{ampulexdef} doesn't find the start and end tokens
-% in the meaning of the macro, it does nothing to it. You have to
-% write |####| instead of |#| or you can use |\ampulexhash| as
-% well. For an example use see line \ref{ampulexset}.
-
-%^^A \showthe\catcode`:
-%^^A \showthe\catcode`_
-%^^A
-%^^A \gmu@storespecials
-%^^A
-%^^A \RequirePackage{xparse}[2008/08/03]
-%^^A
-%^^A % This should not happen but well, it did: the catcodes changed the
-%^^A % \pk{expl3} way leaked so I~fix them here.
-%^^A \gmu@septify
-%^^A \@makeother\:
-%^^A \catcode`_=8
-%^^A \catcode`\ =10
-
-
-\DeclareCommand\ampulexdef\long
-{Q{\outer\long\global\protected} % (1) (optional) prefix\:(es);
- % allowed is any sequence of them in any order, just like for the
- % original \TeX's \incmd\def.
- S{\def\edef\gdef\xdef\pdef} % (2) (optional) kind of definition; if
- % not specified, \incmd\def\ will be used.
- m % (3) macro to be redefined,
- O{} % (4) \cs{def}'s parameters string; empty by default,
- O{} % (5) definition body's parameters to be taken in a~one-step
- % expansion of the redefined macro; empty by default,
- m % (6) start token(s),
- m % (7) end token(s)
- m % (8) the replacement
-}{%^^B
- % \changes{v0.93}{2008/08/29}{added}
- % \changes{v0.94}{2008/09/07}{made \pk{xparse}-ish and
- % \cs{ampulexset} removed}
- % \chgs{2008/12/7 v0.98 first argument (the prefix) made of the
- % \env{Q} type}
- % For the example of usage see \ref{ampulexset}. \HideDef
- \def\gmu@tempa{#6}%
- \def\gmu@tempb{#7}%
- \def\gmu@tempc{#8}% we wrap the start, end and replacement tokens in
- % macros to avoid unbalanced \incs{if}s. \ResumeDef
- \edef\gmu@tempd{%
- \long\def\@nx\gmu@tempd
- ####1\detoken@xa\gmu@tempa
- ####2\detoken@xa\gmu@tempb
- ####3\@nx\gmu@tempd{%
- \unexpanded{% \chgs[\ampulexdef]{2008/11/30 v0.98 a~bug fixed:
- % added \cs{unexpanded}}
- \@ifempty{##3}{\hidden@iffalse}{\hidden@iftrue}}}}%
- %
- \gmu@tempd% it defines \incs{gmu@tempc} to produce an open \incs{if}
- % depending on whether the start and end token(s) are found in the
- % meaning of \inverb|#3|.
- %
- \edef\gmu@tempe{%
- \@nx\gmu@tempd\all@other#3% note that |#3| may have parameters so
- % we have to look at its meaning not at its one-level expansion,
- % which could produce an ‘extra \cmd\}’ error.
- \detoken@xa\gmu@tempa
- \detoken@xa\gmu@tempb\@nx\gmu@tempd
- }%
- %
- \gmu@tempe% we apply the checker and it
- % produces an open \incs{if}.
- \edef\gmu@tempd{%
- \long\def\@nx\gmu@tempd
- ####1\@xa\unexpanded\@xa{\gmu@tempa}%
- ####2\@xa\unexpanded\@xa{\gmu@tempb}%
- ####3\@nx\ampulexdef{% we define a~temporary
- % macro with the parameters delimited with the `start' and `end' parameters
- % of \incs{ampulexdef}.\fullpar
- \@nx\unexpanded{####1}%
- \@nx\@xa\@nx\unexpanded
- \@nx\@xa{\@nx\gmu@tempc}%we replace the part of the redefined
- % macro's meaning with the replacement text.
- \@nx\unexpanded{####3}}}%
-%^^A\show\gmu@tempd
- \gmu@tempd
-%^^A\show\gmu@tempd
- %
- \edef\gmu@tempf{#5}%
- \edef\gmu@tempe{%
- \IfValueT{#1}{#1}\IfValueTF{#2}{#2}{\def}%
- \@nx#3#4{%
- \@xa\@xa\@xa\gmu@tempd\@xa#3\gmu@tempf\ampulexdef}}%
- \gmu@tempe
- \fi}
-
-\def\ampulexhash{####}% for your convenience (not to count the hashes).
-
-% For the heavy debugs I~was doing while preparing \pk{gmdoc}, as
-% a~last resort I~used |\showlists|. But this command alone was
-% usually too little: usually it needed setting |\showboxdepth| and
-% |\showboxbreadth| to some positive values. So,
-%
-\def\gmshowlists{\showboxdepth=1000 \showboxbreadth=1000 \showlists}
-% \changes{v0.59}{06/09/04}{moved here from \pk{gmdoc}}
-
-
-
-\newcommand\nameshow[1]{\@xa\show\csname#1\endcsname}
-\newcommand\nameshowthe[1]{\@xa\showthe\csname#1\endcsname}
-% Note that to get proper |\showthe\my@dimen14| in the `other' |@|'s
-% scope you write |\nameshowthe{my@dimen}14|\,.
-
-% Standard |\string| command returns a~string of `other' chars except
-% for the space, for which it returns | |$_{10}$. In \pk{gmdoc}
-% I~needed the spaces in macros' and environments' names to be always
-% \catother, so I~define
-% \Define\xiistring
-% \changes{v0.59}{06/09/04}{moved here from \pk{gmdoc}}
-\long\def\xiistring#1{%
- \if\@nx#1\xiispace
- \xiispace
- \else
- \afterfi{\string#1}% to make the same error as bare |\string|
- % would cause in case of empty \inhash1.
- \fi}
-
-%The next macro is applied to a~|\detokenized| nonempty string to convert the spaces into
-% ‘other’. \nostanza
-\def\@xiispaces#1 #2\@@nil{%
- #1%
- \ifx\@xiispaces#2\@xiispaces
- \else
- \xiispace
- \afterfi{\@xiispaces#2\@@nil}%
- \fi}
-
-
-% \division{Environments redefined}
-% \subdivision{Almost an environment or redefinition of \cs{begin}}
-%
-% We'll extend the functionality of |\begin|: the non-starred
-% instances shall act as usual and we'll add the starred version. The
-% difference of the latter will be that it won't check whether the
-% `environment' has been defined so any name will be allowed.
-%
-% This is intended to structure the source with named groups that
-% don't have to be especially defined and probably don't take any
-% particular action except the scoping.
-%
-% (If the |\begin*|'s argument is a~(defined) environment's name,
-% |\begin*| will act just like |\begin|.)
-% \dekmedskip
-%
-% Original \LaTeX's |\begin|:
-% \begin{verbatim}
-%\def\begin#1{%
-% \@ifundefined{#1}%
-% {\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}%
-% {\def\reserved@a{\def\@currenvir{#1}%
-% \edef\@currenvline{\on@line}%
-% \csname #1\endcsname}}%
-% \@ignorefalse
-% \begingroup\@endpefalse\reserved@a}
-%\end{verbatim}
-%
-% \Define\@begnamedgroup
-\long\def\@begnamedgroup#1{%
- \edef\@prevgrouplevel{\the\currentgrouplevel}% added 2009/03/24 to
- % handle special pseudo-environments that don't increase
- % \incmd\currentgrouplevel (such as \inenv{document}). Note it's
- % |\edef|ed \emph{outside} the environment's group.
- \@ignorefalse% not to ignore blanks after group
- \begingroup\@endpefalse
- \edef\@prevenvir{\@currenvir}% Note we |\edef| it inside the group
- % (for obvious reason), unlike the ‘previous’ grouplevel.
- \edef\@currenvir{#1}% We could do recatcoding
- % through\inverb|\string| or \nlperc\cmd\detokenize\ but all the name
- % `other' and 10 could affect
- % a~thousand packages so we don't do that and we'll recatcode in
- % a~testing macro, see line \ref{@ifenvir}.
- \edef\@currenvline{\on@line}%
- \csname #1\endcsname}% if the argument is a~command's name (an
-% environment's e.g.), this command will now be executed. (If the
-% corresponding control sequence hasn't been known to \TeX, this line
-% will act as |\relax|.)
-
-% Let us make it the starred version of |\begin|.
-% \begin{DoIndex}{\begin}
-% \Define\begin
-% \Define*{\begin*}
-\def\begin{\gm@ifstar{\@begnamedgroup}{%
- \@begnamedgroup@ifcs}}
-% \end{DoIndex}
-
-\def\@begnamedgroup@ifcs#1{%
- \ifcsname#1\endcsname\afterfi{\@begnamedgroup{#1}}%
- \else\afterfi{\@latex@error{Environment #1 undefined}\@eha}%
- \fi}%
-
-
-%\subdivision{\cs{@ifenvir} and improvement of \cs{end}}
-%
-% \changes{v0.74}{2006/11/27}{The catcodes of \cs{begin} and \cs{end}
-% argument(s) don't have to agree strictly anymore: an environment is properly
-% closed if the \cs{begin}'s and \cs{end}'s arguments result in the
-% same \cs{csname}}
-%
-% It's very clever and useful that |\end| checks whether its argument
-% is |\ifx|-equivalent |\@currenvir|. However, in standard \LaTeX\ it
-% works not quite as I~would expect: Since the idea of environment is
-% to open a~group and launch the \CS named in the |\begin|'s
-% argument. That last thing is done with |\csname…\endcsname| so
-% the catcodes of chars are irrelevant (until they are |\active|,
-% ${}_1$, ${}_2$ etc.). Thus should be also in the |\end|'s test and
-% therefore we ensure the compared texts are both expanded and made
-% all `other'.
-%
-% First a~(not expandable) macro that checks whether current
-% environment is as given in |#1|. Why is this macro |\long|?---you
-% may ask. It's |\long| to allow environments such as |\string\par|.
-%
-\long\def\@ifenvir#1{%\label{@ifenvir}\
- % \begin{enumargs}
- % \mand enquired environment name which will be confronted with
- % \incs{@currenvir}
- % \mand what if true (if the names are
- % equivalent\qfootnote{The names are checked whether they produce
- % the same \cmd\csname. They don't have to have the same
- % catcodes.})
- % \mand what if false
- % \end{enumargs}
- %
- % \changes{v0.92}{2008/08/07}{added}
-\@ifedetokens{\@currenvir}{#1}}
-
-
-\long\pdef\@ifedetokens#1#2{%
- % \begin{enumargs}
- % \item first list of tokens to be expanded and detokenized
- % \item second list
- % \item if agree
- % \item else
- % \end{enumargs}
- %
- % \chgs{2009/04/21 v0.99 moved to a~separate macro from
- % \cmd\@ifenvir\ and made symmetric to both arguments}
- % \chgs{2008/12/01 v0.98 rewritten not to make entries in the hash
- % table, thanks to \cmd\detokenize\ and made robust to open \cs{if}s
- % in the arguments thanks to substitution of explicit parameters
- % with \cmd\@firstoftwo\ and \cmd\@secondoftwo}
- \edef\gmu@tempa{#1}% to get |#1| fully expanded.
- \edef\gmu@reserveda{\@xa\detokenize\@xa{\gmu@tempa}}% with our
- % brave new \incs{begin}, \incs{@currenvir} is fully expanded,
- % remember?
- \edef\gmu@tempa{#2}% to get |#2| fully expanded.
- \edef\gmu@reservedb{\@xa\detokenize\@xa{\gmu@tempa}}%
- \ifx\gmu@reserveda\gmu@reservedb\@xa\@firstoftwo
- \else\@xa\@secondoftwo
- \fi}
-
-\def\@ifjobname#1{\@ifedetokens{\jobname}{#1}}
-
-\long\def\@ifprevenvir#1{%\label{@ifenvir}\
- % \begin{enumargs}
- % \mand enquired environment name which will be confronted with
- % \incs{@prevenvir}
- % \mand what if true (if the names are
- % equivalent\qfootnote{The names are checked whether they produce
- % the same \cmd\csname. They don't have to have the same
- % catcodes.})
- % \mand what if false
- % \end{enumargs}
- %
- % \changes{v0.92}{2009/09/04}{added}
-\@ifedetokens{\@prevenvir}{#1}}
-
-
-
-% Note that |\@ifjobname| and |\@ifenvir| are expandable and in an
-% |\edef| they expand to
-% \[|\@ifedetokens{⁄<current jobname>}{⁄<arg.1>}|\] and
-% \[|\@ifedetokens{⁄<current envir>}{⁄<arg.1>}|\] resp. which may be
-% useful for some \TeX vert.
-
-
-\def\@checkend#1{\@ifenvir{#1}{}{\@badend{#1}}}
-% \changes{v0.92}{2008/08/07}{shortened thanks to \cs{@ifenvir}}
-% Thanks to it you may write |\begin{macrocode*}| with |*|\catother
-% and end it with |\end{macrocode*}| with |*|\catletter\ (that was the
-% problem that led me to this solution). The error messages looked
-% really funny:
-%\begin{verbatim}
-%! LaTeX Error: \begin{macrocode*} on input line 1844 ended by \end{macrocode*}.
-%\end{verbatim}
-% You might also write
-% also |\end{macrocode\star}| where |\star| is defined as `other' star
-% or letter star.
-
-% \division{Storing and restoring the catcodes of specials}
-%
-% \Define\gmu@restorespecials
-\DeclareCommand\gmu@storespecials{o}{% we provide a~possibility of
- % adding stuff. For usage see line \ref{@storespecials}.
- \def\do##1{\catcode`\@nx##1=\the\catcode`##1\relax}%
- \edef\gmu@restorespecials{%
- \dospecials\do\^^M}\IfValueT{#1}{#1}}
-
-\pdef\gmu@septify{% restoring the standard catcodes of specials. The
- % name is the opposite of `sanitize' ^^A(
- % :-)\,. It restores also the original catcode of \inverb|^^M|.
- \def\do{\relax\catcode`}%
- \do\ 10\do\\0\do\{1\do\}2\do\$3\do\&4%
- \do\#6\do\^7\do\_8\do\%14\do\~13\do\^^M5\relax
- %\nostanza |%% \let\do\@makeother|\\
- % |%% \do0\do1\do2\do3\do4\do5\do6\do7\do8\do9\relax|\nostanza
-}
-
-
-
-
-%\division{From \pk{relsize}}
-%
-%\changes{v0.58}{06/09/02}{Relative font size change macros added}
-%
-% As file \pk{relsize.sty}, v3.1 dated July 4, 2003 states, \LaTeXe\
-% version of these macros was written by Donald Arseneau
-% \url{asnd@triumf.ca} and Matt Swift \url{swift@bu.edu} after the
-% \LaTeX\,2.09 \pk{smaller.sty} style file written by Bernie Cosell
-% \url{cosell@WILMA.BBN.COM}\,.
-%
-% I~take only the basic, non-math mode commands with the assumption
-% that there are the predefined font sizes.
-%
-% You declare the font size with \TextUsage\relsize\arg{n} where
-% \<n> gives the number of steps ("mag-step" = factor of 1.2) to
-% change the size by. E.g., $n = 3$ changes from |\normalsize| to
-% |\LARGE| size. Negative $n$ selects smaller fonts.
-% \TextUsage\smaller${}=={}$|\relsize{-1}|;
-% \TextUsage\larger${}=={}$|\relsize{1}|. \TextUsage\smallerr (my
-% addition)${}=={}$|\relsize{-2}|; \TextUsage\largerr\ guess yourself.
-%
-% (Since |\DeclareRobustCommand|
-% doesn't issue an error if its argument has been defined and it only
-% informs about redefining, loading \pk{relsize} remains allowed.)
-% \Define\relsize
-\pdef\relsize#1{%
- \ifmmode \@nomath\relsize\else
- \begingroup
- \@tempcnta % assign number representing current font size
- \ifx\@currsize\normalsize 4\else % funny order is to have most …
- \ifx\@currsize\small 3\else % …likely sizes checked first
- \ifx\@currsize\footnotesize 2\else
- \ifx\@currsize\large 5\else
- \ifx\@currsize\Large 6\else
- \ifx\@currsize\LARGE 7\else
- \ifx\@currsize\scriptsize 1\else
- \ifx\@currsize\tiny 0\else
- \ifx\@currsize\huge 8\else
- \ifx\@currsize\Huge 9\else
- 4\rs@unknown@warning % unknown state: |\normalsize| as starting point
- \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
-% Change the number by the given increment:
- \advance\@tempcnta#1\relax
-% watch out for size underflow:
- \ifnum\@tempcnta<\z@ \rs@size@warning{small}{\string\tiny}\@tempcnta\z@ \fi
- \@xa\endgroup
- \ifcase\@tempcnta % set new size based on altered number
- \tiny \or \scriptsize \or \footnotesize \or \small \or \normalsize \or
- \large \or \Large \or \LARGE \or \huge \or \Huge \else
- \rs@size@warning{large}{\string\Huge}\Huge
-\fi\fi}% end of |\relsize|.
-
-\providecommand*\rs@size@warning[2]{\PackageWarning{gmutils (relsize)}{%
- Size requested is too #1.\MessageBreak Using #2 instead}}
-
-
-\providecommand*\rs@unknown@warning{\PackageWarning{gmutils (relsize)}{Current font size
- is unknown! (Why?!?)\MessageBreak Assuming \string\normalsize}}
-
-% And a~handful of shorthands:
-%
-\DeclareRobustCommand*\larger[1][\@ne]{\relsize{+#1}}
-\DeclareRobustCommand*\smaller[1][\@ne]{\relsize{-#1}}
-\DeclareRobustCommand*\textlarger[2][\@ne]{{\relsize{+#1}#2}}
-\DeclareRobustCommand*\textsmaller[2][\@ne]{{\relsize{-#1}#2}}
-\pdef\largerr{\relsize{+2}}
-\pdef\smallerr{\relsize{-2}}
-
-
-
-%\division{Meta-symbols}
-% I~fancy also another Knuthian trick for typesetting \<meta-symbols>
-% in \TeXbook. So I~repeat it here. The inner |\meta| macro is
-% copied verbatim from \pk{doc}'s v2.1b documentation dated 2004/02/09
-% because it's so beautifully crafted I~couldn't resist. I~only don't
-% make it |\long|.
-% \dekmedskip
-%
-% \begin{quotation}
-% The new implementation fixes this problem by defining
-% |\meta| in a radically different way: we prevent hyphenation by defining a |\language|
-% which has no patterns associated with it and use this to typeset the words within
-% the angle brackets.
-% \end{quotation}
-%^^A~\DefIndex\l@nohyphenation
-%^^A~\ifx\l@nohyphenation\undefined
-%^^A~ \newlanguage\l@nohyphenation
-%^^A~\fi
-\pdef\meta#1{%
- % \begin{quotation}
- % Since the old implementation of |\meta| could be used in math we better ensure
- % that this is possible with the new one as well. So we use |\ensuremath| around
- % |\langle| and |\rangle|. However this is not enough: if |\meta@font@select| below
- % expands to |\itshape| it will fail if used in math mode. For this reason we hide
- % the whole thing inside an |\nfss@text| box in that case.
- % \end{quotation}
- {\meta@fontsetting\ensuremath\langle}%
- \ifmmode\@xa\nfss@text\fi
- {% this has to be a~begin-group because \incmd{\nfss@text} becomes
- % \incmd\hbox\ in math mode.
- \gmu@activespaceblank
- \meta@font@select
- % Need to keep track of what we changed just in case the user changes font inside
- % the argument so we store the font explicitly.
- % ^^A~% \DefIndex\meta@hyphen@restore
- % ^^A \edef\meta@hyphen@restore{%
- % ^^A \hyphenchar\the\font\the\hyphenchar\font}%
- % ^^A \hyphenchar\font\m@ne
- % ^^A \language\l@nohyphenation
- #1\/%
- % ^^A~ \meta@hyphen@restore
- }%
- {\meta@fontsetting\ensuremath\rangle}%
-}% of |\meta|.
-
-\pdef\gmu@activespaceblank{%
- \@xa\def\gmu@activespace{\space\ignorespaces}% note the
- % subtle perversity of this definition: if we meet more than one
- % subsequent active spaces, then the first of them will
- % typeset \incmd\space and its \incmd\ignorespaces\ will
- % gobble \incmd\space\ of the second and will stop at
- % \incs{ignorespaces} and this \incs{ignorespaces} will gobble
- % the next \incs{space} and so on.
-}
-
-\def\meta@fontsetting{\color{red!50!black}}
-
-\def\meta@font@select{\meta@fontsetting\it}
-% \changes {v0.76}{06/9/21}{\cs{itshape} changed to an explicit and
-% violent \cs{it} to work as expected in \cs{cs}'s argument}
-% But I~define |\meta@font@select| as the brutal and explicit |\it|
-% instead of the original |\itshape| to make it usable e.g.\ in the
-% \pk{gmdoc}'s |\cs| macro's argument.
-
-
-% The below |\meta|'s drag\qfootnote{Think of the drags that transform
-% a~very nice but rather standard `auntie' (`Tante' in Deutsch) into
-% \balsmiley( a~most adorable Queen ;-)\,.} is a~version of
-% \TeXbook's one. \Define*[\<⁄kern⁄string-3pt›…>]{\<›…>}
-\def\<#1>{\meta{#1}}
-
-\pdef\metachar#1{\begingroup\metacharfont #1\endgroup}
-\def\metacharfont{\meta@fontsetting\rm}
-
-% ^^A\gmshowlists
-
-% \division{Macros for printing macros and filenames}
-%
-% First let's define three auxiliary macros analogous to |\dywiz| from
-% \pk{polski.sty}: a~shorthands for |\discretionary| that'll stick to
-% the word not spoiling its hyphenability and that'll won't allow
-% a~line break just before nor just after themselves. The
-% |\discretionary| \TeX\ primitive has three arguments: |#1| `before
-% break', |#2| `after break', |#3| `without break', remember?
-% \Define\discre \Define\discret
-\pdef\discre#1#2#3{\leavevmode\kern0sp%
- \discretionary{#1}{#2}{#3}\penalty10000\hskip0sp\relax}
-
-\pdef\discret#1{\discre{#1}{#1}{#1}}
-
-% A~tiny little macro that acts like |\-| outside the math mode and
-% has its original meaning inside math.
-\def\:{%
- \ifmmode\afterfi{\mskip\medmuskip}%
- \else\afterfi{\discre{\null}{}{}}% \incs{null} to get
- % \incs{hyphenpenalty} not \incs{exhyphenpenalty}.
- \fi}
-
-
-
-\let\gmu@discretionaryhyphen\- % for the cases when we don't redefine
- % \incs\- but use \incs\UrlFix
-
-
-\DeclareCommand\bihyphen{O{*}}{% a~redefinition of |\-| that makes it
- % optional-argument to allow further hyphenation
- \DeclareCommand\gmu@discretionaryhyphen{T{#1}ca}{%
- \IfValueT{##2}{%
- \@ifempty{##2}{}{%
- \def\gmu@bihyphen@char{##2}}%
- }%
- \IfValueT{##3}{%
- \@ifempty{##3}{}{%
- \def\gmu@bihyphen@corr{##3}}%
+ % So we declare an OptionX that by default loads this package thanks
+ % to a special \CS having been defined to load it or do nothing.
+ \DeclareOptionX{#1}[on]{%
+ % ^^V \ifcsname gmu@Require@#1\endcsname
+ % ^^V \PackageError{gmutils}{Value clash for the ***#1*** package option}{}%
+ % ^^V \fi
+ \lowercase{\@xa\if\@gobble ##1\relax}% “off” given as the value
+ \@namedef{gmu@Require@#1}{}%
+ \else % “on”
+ \afterfi{%
+ \@namedef{gmu@Require@#1}{%
+ \IfFileExists{gm#1.sty}%
+ {\RequirePackage{gm#1}}% if there's a \pk{gm} package, we load
+ % it, else we load
+ {\RequirePackage{#1}}%
+ }% of namedef
+ }% of afterfi
+ \fi
+ }% of |\DeclareOptionX|
+ \IfFileExists{gm#1.sty}%
+ {\DeclareOptionX{gm#1}[on]{%
+ \ExecuteOptionsX{#1=####1}%
}%
- \IfValueTF{##1}\discre\discretionary
- {% before break
- \IfValueTF{##2}{%
- \@ifempty{##2}{\gmu@bihyphen@char}{##2}%
- }{%
- \ifnum\hyphenchar\font>\z@
- \char\hyphenchar\font
- \fi}}% end of before break
- {%after break
- \IfValueT{##3}{%
- \@ifempty{##3}{\gmu@bihyphen@corr}{##3}%
- }%
- }%
- {% without break
- }% almost as in \TB: unlike \TB, we allow hyphenchars
- % $\ge255$ as we are \XeTeX.
- }% of |\DeclareCommand\-|
- \gmu@storeifnotyet\-% original |\-| is a~\TeX's
- % primitive, therefore we should store it.
- \let\-\gmu@discretionaryhyphen
- \let\@dischyph\gmu@discretionaryhyphen % to override \pk{framed.sty}
-}% of |\bihyphen|
-
-
-\relaxen\gmu@bihyphen@corr
-
-\pdef\vs{\discre{\visiblespace}{}{\visiblespace}}
-
-% Then we define a~macro that makes the spaces visible even if used in
-% an argument (i.e., in a~situation where re|\catcode|ing has no
-% effect).
-%
-\def\printspaces#1{{\let~=\vs \let\ =\vs \gm@pswords#1 \@@nil}}
-% \DefIndex\gm@pswords
-\def\gm@pswords#1 #2\@@nil{%
- \ifx\relax#1\relax\else#1\fi
- \ifx\relax#2\relax\else\vs\penalty\hyphenpenalty\gm@pswords#2\@@nil\fi}% note
-% that in the recursive call of \incs{gm@pswords} the argument string is
-% not extended with a~sentinel space: it has been already by
-% \incs{printspaces}.\ilrr
-
-\pdef\sfname#1{\textsf{\printspaces{#1}}}
-
-\def\gmu@discretionaryslash{\discre{/}{\hbox{}}{/}}% the second
-% pseudo-argument nonempty to get
-% \incs{hyphenpenalty} not \incs{exhyphenpenalty}.\ilrr
-
-
-\pdef\file#1{\gmu@printslashes#1/\gmu@printslashes}
-
-\def\gmu@printslashes#1/#2\gmu@printslashes{%
- \sfname{#1}%
- \ifx\gmu@printslashes#2\gmu@printslashes
- \else
- \textsf{\gmu@discretionaryslash}%
- \afterfi{\gmu@printslashes#2\gmu@printslashes}\fi}
-
-
-% it allows the spaces in the filenames (and prints
-% them as \vs).
-
-% The macro defined below I~use to format the packages' names.
-\pdef\pk#1{\textsf{#1}}
-% \changes{v0.96}{2008/11/13}{\cs{textup} removed to allow slanting
-% the name in titles (that are usually typeset in Italic font)}
-
-
-% Some (if not all) of the below macros are copied from \pk{doc}
-% and/or \pk{ltxdoc}.
-%
-% A~macro for printing control sequences in arguments of
-% a~macro. Robust to avoid writing an explicit |\| into a~file. It
-% calls |\ttfamily| not |\tt| to be usable in headings which are
-% boldface sometimes.
-%
-%
-\DeclareCommand\cs{O{\type@bslash\penalty\@M\hskip\z@skip}}{%\
- % \begin{enumargs}
- % \dc O{\bslash} the control sequence's prefix, by default it's
- % \inverb|\| allowing hyphenation of subsequent word,
- % \dc m the control sequence or anything to be typeset in
- % typewriter font.
- % ^^A this argument is long to allow \inverb|\cmd\par|
- % ^^A % that expands to |\cs{\string\par}| or so.
- % \end{enumargs}
- % \chgs{2008/12/12 v0.98 added \cs{verbatim@specials}}
- % \chgs{2008/12/12 v0.98 made \cmd\- switch to \cmd\normalfont\
- % because \IMHO\ this underlines the fact that a~\CS\ belongs to the
- % narrative. \cmd\hyphenchar\ set to 45 as in usual texts}
- \begingroup
- \ifdefined\verbatim@specials\verbatim@specials\fi
- \edef\-{\discretionary{%
- \ifdefined\gmv@hyphen\gmv@hyphen
- \else\unexpanded{{\normalfont-}}%
- \fi}{}{}}%
- \def\{{\type@lbrace\yeshy}\def\}{\char`\}}%
- \narrativett
- \edef\narrativett@storedhyphenchar{\the\hyphenchar\font}%
- \hyphenchar\font=\ifdefined\gmv@hyphenchar\gmv@hyphenchar
- \else "A6 \fi
- \cs@inner{#1}}
-
-\pdef\cs@inner#1#2{%
- #1#2%
- \hyphenchar\font=\narrativett@storedhyphenchar\relax
- \endgroup}
-
-\def\narrativett{\ttfamily}% such name because I~introduce it to
-% distinguish the narrative verbatims from the code in \pk{gmdoc}.
-
-\long\pdef\env{\cs[]}
-% \changes{v0.66}{06/09/29}{the braces removed}
-
-% And for the special sequences like |^^A|:\nostanza
-\foone{\@makeother\^}
- {\pdef\hathat{\cs[^^]}}
-
-\AtBeginDocument{%
- \@ifpackageloaded{gmdoc}{\def\hash{\cs[\#]}}{}}
-
-% And one for encouraging line breaks e.g., before long verbatim words.
-\def\possfil{\hfil\penalty1000\hfilneg}
-
-\def\possvfil{\vfil
- \penalty\numexpr
- \gmu@minnum{\clubpenalty+\widowpenalty}{9999}%
- %^^A\gmu@maxnum
- %^^A {\ifnum\widowpenalty<\@M
- %^^A \gmu@minnum{\widowpenalty+1}{9999}\relax
- %^^A \else1000%
- %^^A \fi}%
- %^^A {\ifnum\clubpenalty<\@M
- %^^A \gmu@minnum{\clubpenalty+1}{9999}\relax
- %^^A \else1000%
- %^^A \fi}%
- \relax % eaten by |\gmu@maxnum|
- \relax % eaten by |\numexpr|
- \vfilneg}
-
-\long\def\gmu@extremnum#1#2#3{%\
- % \begin{enumargs}
- % \item inequality sign
- % \item left side of comparison
- % \item right side of comparison
- % \end{enumargs}
- \@xa\ifx\@firstofmany#3\@@nil\relax % this complicated test is to
- % allow arguments beginning with some \incs{if⁄<…>} as in
- % \incs{possvfil} e.g.
- \@xa\@firstoftwo
- \else\@xa\@secondoftwo
- \fi
- {#2}%
- {%
- \ifnum\numexpr#2\relax#1\numexpr#3\relax
- \@xa\@firstoftwo
- \else\@xa\@secondoftwo
- \fi
- {\gmu@extremnum#1{#2}}%
- {\gmu@extremnum#1{#3}}%
- }%
-}
-
-\def\gmu@maxnum{\gmu@extremnum>}
-\def\gmu@minnum{\gmu@extremnum<}
-
-
-% \division{Typesetting arguments and commands}
-%
-% We define a~conditional and iterating command \TextUsage\arg\ that
-% in math mode does what it used to do was in math and outside math it
-% typesets mandatory, optional and picture (parenthesed) and angled
-% arguments and optional stars. You can
-% write \[|\arg[gefilte]*<fisch>(mit){baigele}|\] to get
-% \[\hbox{\arg[gefilte]*{fisz}(mit){bajgele}}\]
-% or even
-% \[|\verb+\MoltoAdagio⁄⁄arg*{Dankgesang}<an>[die Gottheit]+|\]
-% (where |⁄⁄| is the escape char in verbatims) to
-% get \[|\MoltoAdagio⁄arg*{Dankgesang}<an>[die Gottheit]|\] (in
-% der lydischen Tonart).
-%
-% For more complicated arguments configurations consider using
-% \pk{gmdoc}'s environment \env{enumargs}.
-% \stanza
-% The five macros below are taken from the \pk{ltxdoc.dtx}.
-%
-% \begin{quotation}|\cmd{\foo}| Prints |\foo| verbatim. It may be used inside moving
-% arguments. |\cs{foo}| also prints |\foo|, for those who prefer that
-% syntax. (This second form may even be used when |\foo| is
-% |\outer|).\end{quotation}
-%
-
-\long\def\cmd#1{\@xa\cs\@xa{\@xa\cmd@to@cs\string#1}}% it has to be
-% un\incs{protected}! It has so many \incmd\expandafter s to allow
-% \inverb|\cmd\par| and still keep the \incmd\cs\ command ‘short’.
-
-\def\cmd@to@cs#1#2{\char\number`#2\relax}
-% \nostanza It can be short since it never gets actual control
-% sequence as an argument only a~string of ‘other’ tokens (and maybe spaces).
-
-% |\marg{text}| prints \marg{text}, `mandatory argument'.
-% \Define\marg
-\pdef\marg#1{{\narrativett\type@lbrace}\meta{#1}{\narrativett\char`\}}}
-
-% |\oarg{text}| prints \oarg{text}, `optional argument'.
-% Also |\oarg[text]| does that.
-% \HideAllDefining
-% \Define\oarg
-\pdef\oarg{\@ifnextchar[\@oargsq\@oarg}
-%^^A]
-\pdef\@oarg#1{{\narrativett[}\meta{#1}{\narrativett]}}
-\pdef\@oargsq[#1]{\@oarg{#1}}
-
-% |\parg{te,xt}| prints \parg{te,xt}, `picture mode argument'.
-% \Define\parg
-\pdef\parg{\@ifnextchar(\@pargp\@parg}
-%^^A)
-\def\@parg#1{{\narrativett(}\meta{#1}{\narrativett)}}
-\def\@pargp(#1){\@parg{#1}}
-
-\pdef\aarg{\@ifnextchar<\@aarga\@aarg}
-\def\@aarg#1{{\narrativett<}\meta{#1}{\narrativett>}}
-\def\@aarga<#1>{\@aarg{#1}}
-
-\def\@verbaarga#1#2>{\@aarg{#2}\arg@dc}
-
-\foone{\catcode`>\active}{%
- \def\@verbaargact#1#2>{\@aarg{#2}\arg@dc}%
+ }% of if yes. Else:
+ {}%
+ %
}
-\foone{\@makeother\{\@makeother\}%
- \catcode`[=\@ne\catcode`]=\tw@}
-[% ^^A{
- \def\@verbmargm#1#2}[% for an argument in curly braces in a verbatim, where
- % the braces are not groupers and not necessary ‘other’. We'll know
- % by \incmd{\@ifnextif} that the future token is an opening
- % brace. Note this macro has 2nd parameter delimited with ‘other’
- % closing brace (so may not act correctly when braces are nested
- % (then hide them with special verbatim groupers)).
- \marg[#2]%
- \arg@dc
- ]%
-]% of |\foone|
-
-% \ResumeAllDefining
-\DeclareCommand\arg@dc!{%
- % \chgs{200/03/04 v0.991 added rcognising of verbatim braces and
- % angles}
- s % (1)
- o % (2)
- c % (3)
- b % (4)
- a % (5)
- S{\arg} % (6) just gobbled (for backwards compatibility)
-}{% This command iterates while it
- % has arguments and typesets them in brackets, parentheses or curly
- % braces. Note it gobbles subsequent |\arg|s and just iterates.
- \def\next{0}%
- \IfValueT{#1}%
- {\metachar[\scanverb{*}\metachar]\def\next{1}}%
- \IfValueT{#2}{\@oarg{#2}\def\next{1}}%
- \IfValueT{#3}{\@parg{#3}\def\next{1}}%
- \IfValueT{#4}{\marg{#4}\def\next{1}}%
- \IfValueT{#5}{\aarg{#5}\def\next{1}}%
- \@ifnextchar\egroup{\endgroup}{%
- \if1\next\@xa\arg@dc
- \else % it's crucial that we look for verbatim braces \emph{after}
- % we checked there were no \inhash4, otherwise there would
- % be an error.
- \def\next{%
- \@ifnextif\xiilbrace{\@verbmargm}%
- {% not active or other lbrace
- \@ifnextif<{% then we look for angles
- \ifnum\catcode`>=\active
- \@xa\@verbaargact
- \else\@xa\@verbaarga
- \fi}%
- {% and if not angles neither verbatim braces, then
- \endgroup % if we have no more arguments to typeset, we
- % close the group opened in line \ref{queer.group}
- }%
- }%
- }%
- \@xa \next
- \fi
- }% of not egroup
-}% of |\arg@dc|
-
-
-% Now define the front-end macro of the |\arg| command:\nostanza
-\foone{\obeylines}{%
- \AtBeginDocument{%
- \let\math@arg\arg %
- \pdef\arg{\ifmmode\math@arg %
- % \chgs{200/03/04 v0.991 added rcognising of verbatim braces and angles}
- \else\afterfi{%
- \begingroup %
- % \label{queer.group}
- \ifdefined\@ifQueerEOL\@ifQueerEOL{%
- \def^^M{\unskip\space}% in the ‘queer’ \ac{EOL}s scope we
- % keep line end active in case we have
- % \incmd\arg\nlpercent\arg{arg.} ending a~line: the next
- % char peeper touches line end or, if the line end was $_5$,
- % gobbles the space it turns into so the comment layer would
- % ‘leak’ to the code layer.
- }{}\fi %
- \arg@dc}%
- \fi}% of |\arg|,
- }% of |\AtBeginDocument|,
-}% of |\foone|.
-% \chgs{2008/12/07 v0.98 made iterating thanks to \cmd\DeclareCommand\cs{arg@dc}}
-
-
-% Now you can write
-%\begin{verse}
-% |\arg{mand.\ arg} [opt.\ arg] (pict.\ arg)| \\
-% to get \arg{mand.\ arg} [opt.\ arg] (pict.\ arg). (Yes, with only one |\arg|!)\\
-% And |$\arg(1+i) = \pi/4$| for $\arg(1+i) = \pi/4$.
-% \end{verse}
-%
-
-\DeclareCommand\cat{Q{'"0123456789ABCDEF}}{%
- ${}_{\the\numexpr#1}\m@th$\@ifnextcat a\space{}}
-
+ \gmu@PackOptionX{command}
+ \gmu@PackOptionX{ampulex}
+ \gmu@PackOptionX{envir}
+ \gmu@PackOptionX{relsize}
+ \gmu@PackOptionX{meta} % provides |\bihyphen|, |\discre|, |\discret|
+ \gmu@PackOptionX{logos}
+ \gmu@PackOptionX{notonlypream}
+ \gmu@PackOptionX{mw}
-% \division{Not only preamble!}
-% Let's remove some commands from the list to erase at begin document!
-% Primarily that list was intended to save memory not to forbid
-% anything. Nowadays, when memory is cheap, the list of only-preamble
-% commands should be rethought \IMHO.
+ \gmu@PackOptionX{typos}
+ \gmu@PackOptionX{parts}
+ \gmu@PackOptionX{url}
+ \gmu@PackOptionX{RCS}
+\ExecuteOptionsX{command, envir, ampulex, relsize, meta, logos,
+ notonlypream, % ^^V mw=off,
+ typos, parts, url}
-% \Define\not@onlypreamble
-% \changes{v0.79}{2007/04/28}{All the actions are done in a~group and
-% therefore \cs{xdef} used instead of \cs{edef} because this command
-% has to use \cs{do} (which is contained in the \cs{@preamblecmds}
-% list) and \cs{not@onlypreamble} itself should be able to be let to
-% \cs{do}}
-\newcommand\not@onlypreamble[1]{{%
- \def\do##1{\ifx#1##1\else\@nx\do\@nx##1\fi}%
- \xdef\@preamblecmds{\@preamblecmds}}}
+\ProcessOptionsX
-\not@onlypreamble\@preamblecmds
-\not@onlypreamble\@ifpackageloaded
-\not@onlypreamble\@ifclassloaded
-\not@onlypreamble\@ifl@aded
-\not@onlypreamble\@pkgextension
+\def\doifdefined#1{\ifdefined#1\@xa#1\fi}
-% And let's make the message of only preamble command's forbidden use
-% informative a~bit:
+\doifdefined\gmu@Require@command
+\doifdefined\gmu@Require@envir
+\doifdefined\gmu@Require@ampulex
+\doifdefined\gmu@Require@relsize
+\doifdefined\gmu@Require@meta
+\doifdefined\gmu@Require@logos
+\doifdefined\gmu@Require@notonlypream
+\doifdefined\gmu@Require@mw
+\doifdefined\gmu@Require@typos
+\doifdefined\gmu@Require@parts
+\doifdefined\gmu@Require@url
+\doifdefined\gmu@Require@RCS
-\def\gm@notprerr{ can be used only in preamble (\on@line)}
-\AtBeginDocument{%
- \def\do#1{\@nx\do\@nx#1}%
- \edef\@preamblecmds{%
- \def\@nx\do##1{%
- \def##1{\@nx\PackageError{gmutils/LaTeX}%
- {\@nx\string##1 \@nx\gm@notprerr}\@nx\@eha}}%
- \@preamblecmds}}
-
-% A~subtle error raises: the \LaTeX\ standard |\@onlypreamble| and
-% what |\document| does with |\@preamblecmds| makes any two of `only
-% preamble' \CS's |\ifx|-identical inside \env{document}. And my
-% change makes any two \CS's |\ifx|-different. The first it
-% causes a~problem with is standard \LaTeX's |\nocite| that checks
-% |\ifx\@onlypreamble\document|. So hoping this is a~rare problem, we
-% circumvent it. 2008/08/29 a~bug is reported by Edd Barrett that
-% with \pk{natbib} an `extra \}' error occurs so we wrap the fix in
-% a~conditional.
-%
-% \changes[\nocite]{v0.93}{2008/08/29}{a~bug fixed: with \pk{natbib}
-% an `extra \}' error. Now it fixes only the standard version of
-% \cs{nocite}}
-
-
-\def\gmu@nocite@ampulex{% we wrap the stuff in a~macro to hide an open
- % \incs{if}. And not to make the begin-input hook too large.
- % \label{ampulexset} the first optional argument is the
- % parameters string and the second the argument for one-level
- % expansion of \incs{nocite}. Both hash strings are doubled to pass
- % the % first \incs{def}.
- \ampulexdef\nocite[####1][{{####1}}]% note the double brace
- % around \inhash3.
- \ifx
- {\@onlypreamble\document}%
- \iftrue}
-
-
-\AtBeginDocument{\gmu@nocite@ampulex}%
-
-
-% \division{Third person pronouns}
-%
-% Is a~reader of my documentations `she' or 'he' and does it make
-% a~difference?
-%
-% Previous versions of this documentation were consequently
-% alternating ’he’ and ’she’ and provided specific macros for that
-% purpose. Now I'm not that queer and gender so I take what is
-% normally used, ’they’ that is.
-%
-% (The issue of human sexes and genders (certainly much more numerous
-% than 2) is complex and delicate and a \TeX\ macro package is
-% probably not the best place to discuss it.)
-% ^^A % Not to favour any gender in the personal pronouns, define
-% ^^A % commands that'll print alternately masculine and feminine
-% ^^A % pronoun of third person. By `any' I~mean not only typically
-% ^^A % masculine and typically feminine but the entire amazingly rich
-% ^^A % variety of people's genders, \emph{including} those who do not
-% ^^A % describe themselves as `man' or `woman'.
-% ^^A %
-% ^^A % One may say two pronouns
-% ^^A % is far too little to cover this variety but I~could point Ursula's
-% ^^A % K.\ LeGuin's \textit{The Left Hand Of Darkness} as another acceptable
-% ^^A % answer. In that moody and moderate \acro{SF} novel the androgynous
-% ^^A % persons are usually referred to as `mister', `sir' or `he': the
-% ^^A % meaning of reference is extended. Such an extension also my
-% ^^A % automatic pronouns do suggest. It's \emph{not} political
-% ^^A % correctness, it's just respect to people's diversity.
-% ^^A % \DefIndex*{gm@PronounGender}
-% ^^A % \let\do\Define
-% ^^A % \do\gm@atppron \do\heshe \do\hisher \do\himher \do\hishers
-% ^^A % \do\HeShe \do\HisHer \do\HimHer \do\HisHers
-% ^^A \newcounter{gm@PronounGender} ^^A ^^A
-% ^^A \newcommand*\gm@atppron[2]{%
-% ^^A
-% ^^A \stepcounter{gm@PronounGender}% remember |\stepcounter| is global.
-% ^^A \ifodd\value{gm@PronounGender}#1\else#2\fi}
-% ^^A \newcommand*\heshe{\gm@atppron{he}{she}}
-% ^^A \newcommand*\hisher{\gm@atppron{his}{her}}
-% ^^A \newcommand*\himher{\gm@atppron{him}{her}}
-% ^^A \newcommand*\hishers{\gm@atppron{his}{hers}}
-% ^^A \newcommand*\HeShe{\gm@atppron{He}{She}}
-% ^^A \newcommand*\HisHer{\gm@atppron{His}{Her}}
-% ^^A \newcommand*\HimHer{\gm@atppron{Him}{Her}}
-% ^^A \newcommand*\HisHers{\gm@atppron{His}{Hers}}
-
\def\heshe{they}
\def\hisher{their}
\def\himher{them}
@@ -3435,3714 +131,11 @@ pagella, trebuchet, cursor, fontspec=quiet]{gmdocc}
\def\HimHer{Them}
\def\HisHers{Theirs}
-% \division{Improvements to \pk{mwcls} sectioning commands}
-%
-% That is, `Expe-ri-mente'\footnote{A.\ Berg, \textit{Wozzeck}.} mit MW
-% sectioning \& \cs{refstepcounter} to improve \pk{mwcls}'s cooperation
-% with \pk{hyperref}. They shouldn't make any harm if another class
-% (non-\pk{mwcls}) is loaded.
-%
-% We |\refstep| sectioning counters even if the sectionings are not
-% numbered, because otherwise
-% \begin{enumerate}
-% \item \pdfTeX\ cried of multiply defined |\label|s,
-% \item e.g.\ in a~table of contents the hyperlink
-% |<rozdzia\l\ Kwiaty polskie>| linked not to the chapter's heading but
-% to the last-before-it change of |\ref|.
-% \end{enumerate}
-
-\AtBeginDocument{% because we don't know when exactly \pk{hyperref} is
- % loaded and maybe after this package.
- \@ifpackageloaded{hyperref}{\newcounter{NoNumSecs}%
- \setcounter{NoNumSecs}{617}% to make |\ref|ing to an unnumbered section
- % visible (and funny?).
- \def\gm@hyperrefstepcounter{\refstepcounter{NoNumSecs}}%
- \pdef\gm@targetheading#1{%
- \hypertarget{#1}{#1}}}% end of then
- {\def\gm@hyperrefstepcounter{}%
- \def\gm@targetheading#1{#1}}% end of else
-}% of |\AtBeginDocument|
-
-% Auxiliary macros for the kernel sectioning macro:
-\def\gm@dontnumbersectionsoutofmainmatter{%
- \if@mainmatter\else \HeadingNumberedfalse \fi}
-\def\gm@clearpagesduetoopenright{%
- \if@openright\cleardoublepage\else \clearpage\fi}
-
-% To avoid |\def|ing of |\mw@sectionxx| if it's undefined, we redefine
-% |\def| to gobble the definition and restore the original meaning of
-% itself.
-%
-% Why shouldn't we change the ontological status of |\mw@sectionxx|
-% (not define if undefined)? Because some macros (in \pk{gmdocc} e.g.)
-% check it to learn whether they are in an \pk{mwcls} or not.
-%
-% But let's make a~shorthand for this test since we'll use it three
-% times in this package and maybe also somewhere else.
-% \Define\@ifnotmw
-\long\def\@ifnotmw#1#2{\gm@ifundefined{mw@sectionxx}{#1}{#2}}
-
-
-
-%^^A \let\gmu@def\def
-%^^A \@ifnotmw{%
-%^^A \StoreMacro\gmu@def \def\gmu@def#14#2{\RestoreMacro\gmu@def}}{}
-%^^A % I~know it may be of bad taste (to write such a~way \emph{here}) but
-%^^A % I~feel so lonely and am in an alien state of mind after 3 hour sleep
-%^^A % last night and, worst of all, listening to sir Edward Elgar's flamboyant
-%^^A % Symphonies d'Art Nouveau.
-%^^A %
-%^^A % A~\emph{decent} person would just wrap the following
-%^^A % definition in |\gm@ifundefined|'s Else. But look, the definition is so
-%^^A % long and I~feel so lonely etc. So,
-%^^A % I~define |\def| (for some people there's nothing sacred) to be
-%^^A % a~macro with two parameters, first of which is
-%^^A % delimited by digit 4 (the last token of |\mw@sectionxx|'s parameter
-%^^A % string) and the latter is undelimited which means it'll be the body
-%^^A % of the definition. Such defined |\def| does nothing else but
-%^^A % restores its primitive meaning by the way sending its arguments to
-%^^A % the Gobbled Tokens' Paradise. Luckily, |\RestoreMacro| contains
-%^^A % |\let| not |\def|.
-
-% The kernel of MW's sectioning commands:
-\@ifnotmw{}{%
-\def\mw@sectionxx#1#2[#3]#4{%
- \edef\mw@HeadingLevel{\csname #1@level\endcsname
- \space}% space delimits level number!
- \ifHeadingNumbered
- \ifnum \mw@HeadingLevel>\c@secnumdepth \HeadingNumberedfalse \fi
- % \nostanza line below is in |\gm@ifundefined| to make it work in classes
- % other than \pk{mwbk}\nostanza
- \gm@ifundefined{if@mainmatter}{}{\gm@dontnumbersectionsoutofmainmatter}
- \fi
-%\begin{verbatim}
-%% \ifHeadingNumbered
-%% \refstepcounter{#1}%
-%% \protected@edef\HeadingNumber{\csname the#1\endcsname\relax}%
-%% \else
-%% \let\HeadingNumber\@empty
-%% \fi
-%\end{verbatim}
- \def\HeadingRHeadText{#2}%
- \def\HeadingTOCText{#3}%
- \def\HeadingText{#4}%
- \def\mw@HeadingType{#1}%
- \if\mw@HeadingBreakBefore
- \if@specialpage\else\thispagestyle{closing}\fi
- \gm@ifundefined{if@openright}{}{\gm@clearpagesduetoopenright}%
- \if\mw@HeadingBreakAfter
- \thispagestyle{blank}\else
- \thispagestyle{opening}\fi
- \global\@topnum\z@
- \fi% of |\if\mw@HeadingBreakBefore|
-%%
-% placement of |\refstep| suggested by me (GM):\nostanza
- \ifHeadingNumbered
- \refstepcounter{#1}%
- \protected@edef\HeadingNumber{\csname the#1\endcsname\relax}%
- \else
- \let\HeadingNumber\@empty
- % ^^A \gm@hyperrefstepcounter it's nonsense
- \fi% of |\ifHeadingNumbered|
-%%
- \if\mw@HeadingRunIn
- \mw@runinheading
- \else
- \if\mw@HeadingWholeWidth
- \if@twocolumn
- \if\mw@HeadingBreakAfter
- \onecolumn
- \mw@normalheading
- \pagebreak\relax
- \if@twoside
- \null
- \thispagestyle{blank}%
- \newpage
- \fi% of |\if@twoside|
- \twocolumn
- \else
- \@topnewpage[\mw@normalheading]%
- \fi% of |\if\mw@HeadingBreakAfter|
- \else
- \mw@normalheading
- \if\mw@HeadingBreakAfter\pagebreak\relax\fi
- \fi% of |\if@twocolumn|
- \else
- \mw@normalheading
- \if\mw@HeadingBreakAfter\pagebreak\relax\fi
- \fi% of |\if\mw@HeadingWholeWidth|
- \fi% of |\if\mw@HeadingRunIn|
- }
-%^^A%%% (End of Experimente with MW sectioning.)
-
-
-%
-% \subdivision{An improvement of MW's \cs{SetSectionFormatting}}
-%
-% A~version of MW's |\SetSectionFormatting| that lets to leave some
-% settings unchanged by leaving the respective argument empty (|{}| or
-% |[]|).
-%
-% Notice: If we adjust this command for new version of \acro{MWCLS},
-% we should name it |\SetSectionFormatting| and add issuing errors if
-% the inner macros are undefined.
-%
-%\begin{enumargs*}^^B
-%\opt the flags, e.g. |breakbefore|, |breakafter|;
-%\item the sectioning name, e.g. |chapter|, |part|;
-%\item preskip;
-%\item heading type;
-%\item postskip
-%\end{enumargs*}
-%
-
-\relaxen\SetSectionFormatting
-\newcommand*\SetSectionFormatting[5][\empty]{%
- \ifx\empty#1\relax\else% empty (not |\empty|!) |#1| also launches |\else|.\HideDef
- \def\mw@HeadingRunIn{10}\def\mw@HeadingBreakBefore{10}%
- \def\mw@HeadingBreakAfter{10}\def\mw@HeadingWholeWidth{10}%
- \@ifempty{#1}{}{\mw@processflags#1,\relax}% If |#1| is omitted,
- % the flags are left unchanged. If |#1| is given, even as [], the
- % flags are first cleared and then processed again.
- \fi
- \gm@ifundefined{#2}{\@namedef{#2}{\mw@section{#2}}}{}%
- \mw@secdef{#2}{@preskip} {#3}{2 oblig.}%
- \mw@secdef{#2}{@head} {#4}{3 oblig.}%
- \mw@secdef{#2}{@postskip}{#5}{4 oblig.}%
- \ifx\empty#1\relax
- \mw@secundef{#2@flags}{1 (optional)}%
- \else\mw@setflags{#2}% \ResumeDef
- \fi}
-
-\def\mw@secdef#1#2#3#4{% ^^B
-% \begin{enumargs}
-% \item the heading name,
-% \item the command distincter,
-% \item the meaning,
-% \item the number of argument to error message.
-% \end{enumargs}
- \@ifempty{#3}
- {\mw@secundef{#1#2}{#4}}
- {\@namedef{#1#2}{#3}}}
-
-\def\mw@secundef#1#2{%
- \gm@ifundefined{#1}{%
- \ClassError{mwcls/gm}{%
- command \bslash#1 undefined \MessageBreak
- after \bslash SetSectionFormatting!!!\MessageBreak}{%
- Provide the #2 argument of \bslash SetSectionFormatting.}}{}}
-
-
-% First argument is a~sectioning command (wo.\ the backslash) and second the
-% stuff to be added at the beginning of the heading declarations.
-\def\addtoheading#1#2{%
- \n@melet{gmu@reserveda}{#1@head}%
- \edef\gmu@reserveda{\unexpanded{#2}\@xa\unexpanded{\gmu@reserveda}}%
- \n@melet{#1@head}{gmu@reserveda}%
-%^^A \@xa\show\csname#1@head\endcsname
-}
-
-}% of |\@ifnotmw|'s else.
-
-% \subdivision{Negative \cs{addvspace}} When two sectioning commands
-% appear one after another (we may assume that this occurs only when
-% a~lower section appears immediately after higher), we prefer to put
-% the \emph{smaller} vertical space not the larger, that is, the
-% preskip of the lower sectioning not the postskip of the higher.
-%
-% For that purpose we modify the very inner macros of \acro{MWCLS}
-% to introduce a~check whether the previous vertical space equals the
-% postskip of the section one level higher.
-
-\@ifnotmw{}{% We proceed only in \acro{MWCLS}.
-
-% The information that we are just after a~heading will be stored in
-% the |\gmu@prevsec| macro: any heading will define it as the section
-% name and |\everypar| (any normal text) will clear it.
-\def\@afterheading{%
- \@nobreaktrue
- \xdef\gmu@prevsec{\mw@HeadingType}% added now
- \everypar{%
- \grelaxen\gmu@prevsec% added now. All the rest is original \LaTeX.
- \if@nobreak
- \@nobreakfalse
- \clubpenalty \@M
- \if@afterindent \else
- {\setbox\z@\lastbox}%
- \fi
- \else
- \clubpenalty \@clubpenalty
- \everypar{}%
- \fi}}
-
-% If we are (with the current heading) just after another heading (one
-% level lower I~suppose), then we add the less of the higher header's
-% post-skip and the lower header pre-skip or, if defined, the
-% two-header-skip. (We put the macro defined below just before
-% |\addvspace| in \pk{mwcls} inner macros.)
-\def\gmu@checkaftersec{%
- \gm@ifundefined{gmu@prevsec}{}{%
- \ifgmu@postsec% an additional switch that is true by default but
- % may be turned into an \cs{ifdim} in special
- % cases, see line \ref{gmu@postsec}.
- {\@xa\mw@getflags\@xa{\gmu@prevsec}%
- \glet\gmu@reserveda\mw@HeadingBreakAfter}% \UnDef
- \if\mw@HeadingBreakBefore\def\gmu@reserveda{11}\fi% if the
- % current heading inserts page break before itself, all the play
- % with vskips is irrelevant.
- \if\gmu@reserveda\else
- \penalty10000\relax
- \skip\z@=\csname\gmu@prevsec @postskip\endcsname\relax
- \skip\tw@=\csname\mw@HeadingType @preskip\endcsname\relax
- \gm@ifundefined{\mw@HeadingType @twoheadskip}{%
- \ifdim\skip\z@>\skip\tw@
- \vskip-\skip\z@% we strip off the post-skip of previous
- % header if it's bigger than current pre-skip
- \else
- \vskip-\skip\tw@% we strip off the current pre-skip otherwise
- \fi}{% But if the two-header-skip is defined, we put
- % \emph{it}
- \penalty10000
- \vskip-\skip\z@
- \penalty10000
- \vskip-\skip\tw@
- \penalty10000
- \vskip\csname\mw@HeadingType @twoheadskip\endcsname
- \relax}%
- \penalty10000
- \hrule height\z@\relax% to hide the last (un)skip before subsequent
- % \incs{addvspace}s. \ilrr
- \penalty10000
- \fi
- \fi
- }% of |\gm@ifundefined{gmu@prevsec}| `else'.
-}% of |\def\gmu@checkaftersec|.
-
-\def\ParanoidPostsec{% \label{gmu@postsec} this version of
- % \inverb|\ifgmu@postsec| is intended for the special case of
- % sections may contain no normal text, as while \pk{gmdoc}ing.
- \def\ifgmu@postsec{% note this macro expands to an open \cs{if}.
- \skip\z@=\csname\gmu@prevsec @postskip\endcsname\relax
- \ifdim\lastskip=\skip\z@\relax% we play
- % with the vskips only if the last skip is the previous
- % heading's postskip (a~counter-example I~met while
- % \pk{gmdoc}ing).
- }}
-
-\let\ifgmu@postsec\iftrue
-
-\def\gmu@getaddvs#1\addvspace#2\gmu@getaddvs{%
- \toks\z@={#1}%
- \toks\tw@={#2}}
-
-% And the modification of the inner macros at last:
-\def\gmu@setheading#1{%
- \@xa\gmu@getaddvs#1\gmu@getaddvs
- \edef#1{%
- \the\toks\z@\@nx\gmu@checkaftersec
- \@nx\addvspace\the\toks\tw@}}
-
-\gmu@setheading\mw@normalheading
-\gmu@setheading\mw@runinheading
-
-\def\SetTwoheadSkip#1#2{\@namedef{#1@twoheadskip}{#2}}
-
-}% of |\@ifnotmw|'s else.
-
-
-% \subdivision{My heading setup for \pk{mwcls}}
-%
-% The setup of heading skips was tested in `real' typesetting, for
-% money that is. The skips are designed for 11/13\,pt leading and
-% together with my version of \pk{mw11.clo} option file for \pk{mwcls}
-% make the headings (except paragraph and subparagraph) consist of
-% an integer number of lines. The name of the declaration comes from
-% my employer, ``Wiedza Powszechna'' Editions.
-
-\@ifnotmw{}{% We define this declaration only when in \pk{mwcls}.
-\DeclareCommand\WPheadings{T{\chapter}}{%
- \SetSectionFormatting[breakbefore,wholewidth]
- {part}{\z@\@plus1fill}{}{\z@\@plus3fill}%
- %
- \IfValueF{#1}{%
- \gm@ifundefined{chapter}{}{%
- \SetSectionFormatting[breakbefore,wholewidth]
- {chapter}
- {66\p@}% |{67\p@}|% for Adventor/Schola 0,95.
- {\FormatHangHeading{\LARGE}}
- {27\p@\@plus0,2\p@\@minus1\p@}%
- }%
- }% of unless |#1|
- %
- \SetTwoheadSkip{section}{27\p@\@plus0,5\p@}%
- \SetSectionFormatting{section}
- {24\p@\@plus0,5\p@\@minus5\p@}% ^^A {24\p@\@plus5\p@\@minus2\p@}
- {\FormatHangHeading {\Large}}
- {10\p@\@plus0,5\p@}% ed.\ Krajewska of ``Wiedza Powszechna'', as
- % we understand her, wants the skip between a~heading and text
- % to be rigid.
- %
- \SetTwoheadSkip{subsection}{11\p@\@plus0,5\p@\@minus1\p@}%
- \SetSectionFormatting{subsection}
- {19\p@\@plus0,4\p@\@minus6\p@}
- {\FormatHangHeading {\large}}% 12/14 pt
- {6\p@\@plus0,3\p@}% after-skip 6\,pt due to p.12, not to squeeze
- % the before-skip too much.
- %
- \SetTwoheadSkip{subsubsection}{10\p@\@plus1,75\p@\@minus1\p@}%
- \SetSectionFormatting{subsubsection}
- {10\p@\@plus0,2\p@\@minus1\p@}
- {\FormatHangHeading {\normalsize}}
- {3\p@\@plus0,1\p@}% those little skips should be smaller than
- % you calculate out of a~geometric progression, because the
- % interline skip enlarges them.
- %
- \SetSectionFormatting[runin]{paragraph}
- {7\p@\@plus0,15\p@\@minus1\p@}
- {\FormatRunInHeading{\normalsize}}
- {2\p@}%
- %
- \SetSectionFormatting[runin]{subparagraph}
- {4\p@\@plus1\p@\@minus0,5\p@}
- {\FormatRunInHeading{\normalsize}}
- {\z@}%
-}% of |\WPheadings|
-}% of |\@ifnotmw|
-
-
-% \subdivision{Compatibilising standard and \pk{mwcls} sectionings}
-%
-% If you use Marcin Woli\nacute ski's document classes (\pk{mwcls}), you
-% might have met their little queerness: the sectioning commands take
-% two optional arguments instead of standard one. It's reasonable
-% since one may wish one text to be put into the running head,
-% another to the toc and yet else to the page. But the order of
-% optionalities causes an incompatibility with the standard classes:
-% MW section's first optional argument goes to the running head not to
-% toc and if you've got a~source file written with the standard
-% classes in mind and use the first (and only) optional argument, the
-% effect with \pk{mwcls} would be different if not error.
-%
-% Therefore I~counter-assign the commands and arguments to reverse the
-% order of optional arguments for sectioning commands when \pk{mwcls}
-% are in use and reverse, to make \pk{mwcls}-like sectioning optionals usable
-% in the standard classes.
-%
-% \stanza
-% With the following in force, you may both in the standard classes
-% and in \pk{mwcls} give a~sectioning command one or two optional
-% arguments (and mandatory the last, of course). If you give just one
-% optional, it goes to the running head and to toc as in scls (which
-% is unlike in \pk{mwcls}).
-% If you give two optionals, the first goes to the running head and
-% the other to toc (like in \pk{mwcls} and unlike in scls).
-%
-% (In both cases the mandatory last argument goes only to the page.)
-%
-% What more is unlike in scls, it's that even with them the starred
-% versions of sectioning commands allow optionals (but they still send
-% them to the Gobbled Tokens' Paradise).
-%
-% (In \pk{mwcls}, the only difference between starred and non-starred
-% sec commands is (not) numbering the titles, both versions make a~contents
-% line and a~mark and that's not changed with my redefinitions.)
-%
-%
-\@ifnotmw{% we are not in \pk{mwcls} and want to
- % handle \pk{mwcls}-like sectionings i.e., those written with two
- % optionals.
- \def\gm@secini{gm@la}%
- \StoreMacros{\partmark\chaptermark\sectionmark\subsectionmark\subsubsectionmark\paragraphmark}%
- % \Define\gm@secxx
- \def\gm@secxx#1#2[#3]#4{%
- \ifx\gm@secstar\@empty
- % \nostanza a~little trick to allow
- % a~special version of the heading just to the running head.
- \@namedef{#1mark}##1{% we redefine \cs{\<sec>mark} to gobble its
- % argument and to launch the stored true marking command on the
- % appropriate argument.
- \storedcsname{#1mark}{#2}%
- \RestoreMacro*{#1mark}% after we've done what we
- % wanted we restore original |\#1mark|.\ilrr
- }%
- \def\gm@secstar{[#3]}% if |\gm@secstar|
- % is empty, which means the sectioning command was written
- % starless, we pass the `true' sectioning command |#3| as the
- % optional argument. Otherwise the sectioning command was written
- % with star so the `true' s.c.\ takes no optional.
- \fi
- \@xa\@xa\csname\gm@secini#1\endcsname
- \gm@secstar{#4}}%
-% \stanza
-}{% we are in \pk{mwcls} and want to reverse MW's optionals order
- % i.e., if there's just one optional, it should go both to toc and to
- % running head.
- \def\gm@secini{gm@mw}%
- %
- \let\gm@secmarkh\@gobble% in \pk{mwcls} there's no need to make
- % tricks for special version to running headings.
- % \Define\gm@secxx
- \def\gm@secxx#1#2[#3]#4{%
- \@xa\@xa\csname\gm@secini#1\endcsname
- \gm@secstar[#2][#3]{#4}}%
-}
-
-\def\gm@sec#1{\@dblarg{\gm@secx{#1}}}
-\def\gm@secx#1[#2]{%
- \@ifnextchar[{\gm@secxx{#1}{#2}}{\gm@secxx{#1}{#2}[#2]}}% if
-% there's only one optional, we double \emph{it} not the mandatory
-% argument. ^^A}
-
-\def\gm@straightensec#1{% the parameter is for the command's name.
- \gm@ifundefined{#1}{}{% we don't change the ontological status of the
- % command because someone may test it.
- \n@melet{\gm@secini#1}{#1}%
- \@namedef{#1}{%
- \gm@ifstar{\def\gm@secstar{*}\gm@sec{#1}}{%
- \def\gm@secstar{}\gm@sec{#1}}}}%
-}%
-
-\let\do\gm@straightensec
-\do{part}\do{chapter}\do{section}\do{subsection}\do{subsubsection}
-\@ifnotmw{}{\do{paragraph}}% this `straightening' of
-% |\paragraph| with the standard \pk{article} caused the `\TeX\
-% capacity exceeded' error. Anyway, who on Earth wants paragraph
-% titles in toc or running head?
-%
-%
-% \division{\env{enumerate*} and \env{itemize*}}
-% We wish the starred version of \env{enumerate} to be just numbered
-% paragraphs. But \pk{hyperref} redefines |\item| so we should do it
-% a~smart way, to set the \LaTeX's \env{list} parameters that is.
-%
-% (Marcin Woli\nacute ski in \pk{mwcls} defines those environments slightly
-% different: his item labels are indented, mine are not; his
-% subsequent paragraphs of an item are not indented, mine are.)
-%
-% \Define*{enumerate*}
-\@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}
-
-% \Define*{itemize*}
-\@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}
-
-
-
-% \division{The logos}
-%
-% We'll modify The \LaTeX\ logo now to make it fit better to various
-% fonts.
-
-\let\oldLaTeX\LaTeX
-\let\oldLaTeXe\LaTeXe
-
-\pdef\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@}
-\StoreMacro\TeX
-\AtBeginDocument{\RestoreMacro\TeX}
-
-\newcommand*\DeclareLogo[3][\relax]{% \begin{enumargs*}
- % \opt is for non-\LaTeX\ spelling and will be used in the
- % \acro{PD1} encoding (to make pdf bookmarks);
- % \item is the command, its name will be the PD1 spelling by
- % default,
- % \item is the definition for all the font encodings except PD1.
- % \end{enumargs*}
- %
- \ifx\relax#1\def\gmu@reserveda{\@xa\@gobble\string#2}%
- \else
- \def\gmu@reserveda{#1}%
- \fi
- \edef\gmu@reserveda{%
- \@nx\DeclareTextCommand\@nx#2{PD1}{\gmu@reserveda}}
- \gmu@reserveda
- \DeclareTextCommandDefault#2{#3}%
- \pdef#2{#3}% added for \XeTeX.
-}
-
-% \DeclareDefining\DeclareLogo
-\DeclareLogo\LaTeX{%
- {%
- % ^^A\typeout{***** LaTeX logo of GM ^^J}\show\relax
- L%
- \setbox\z@\hbox{\check@mathfonts
- \fontsize\sf@size\z@
- \math@fontsfalse\selectfont
- A}%
- \kern-.57\wd\z@
- \sbox\tw@ T%
- \vbox to\ht\tw@{\copy\z@ \vss}%
- \kern-.2\wd\z@% originally $-,15$\,em for T.
- }%
- {%
- \ifdim\fontdimen1\font=\z@
- \else
- \count\z@=\fontdimen5\font
- \multiply\count\z@ by 64\relax
- \divide\count\z@ by\p@
- \count\tw@=\fontdimen1\font
- \multiply\count\tw@ by\count\z@
- \divide\count\tw@ by 64\relax
- \divide\count\tw@ by\tw@
- \kern-\the\count\tw@ sp\relax
- \fi}%
- \TeX}
-
-\DeclareLogo\LaTeXe{\mbox{\m@th \if
- b\expandafter\@car\f@series\@nil\boldmath\fi
- \LaTeX\kern.15em2$_{\textstyle\varepsilon}$}}
-
-\StoreMacro\LaTeX
-\StoreMacro*{LaTeX }
-% \label{SMLaTeX}
-
-% `\LaTeXpar' in my opinion better describes what I~work with/in than
-% just `\LaTeX'.
-% \Define\LaTeXpar
-\DeclareLogo[(La)TeX]{\LaTeXpar}{%
- {%
- \setbox\z@\hbox{(}%)
- \copy\z@
- \kern-.2\wd\z@ L%
- \setbox\z@\hbox{\check@mathfonts
- \fontsize\sf@size\z@
- \math@fontsfalse\selectfont
- A}%
- \kern-.57\wd\z@
- \sbox\tw@ T%
- \vbox to\ht\tw@{\box\z@%
- \vss}%
- }%
- \kern-.07em% originally $-,15$\,em for T.
- {%(
- \sbox\z@)%
- \kern-.2\wd\z@\copy\z@
- \kern-.2\wd\z@}\TeX
-}
-
-% \begin{quotation} Here are a few definitions which can usefully be
-% employed when documenting
-% package files: now we can readily refer to \AmSTeX, \BibTeX\ and \SliTeX, as well
-% as the usual \TeX\ and \LaTeX. There's even a \PlainTeX\ and
-% a~\Web.\end{quotation}
-\gm@ifundefined{AmSTeX}
- {\def\AmSTeX{\leavevmode\hbox{$\mathcal A\kern-.2em\lower.376ex%
- \hbox{$\mathcal M$}\kern-.2em\mathcal S$-\TeX}}}{}
-
-\DeclareLogo\BibTeX{{\rmfamily B\kern-.05em%
- \textsc{i{\kern-.025em}b}\kern-.08em% the kern is wrapped in
- % braces for my |\fakescaps|' sake.
- \TeX}}
-
-
-\DeclareLogo\SliTeX{{\rmfamily S\kern-.06emL\kern-.18em\raise.32ex\hbox
- {\scshape i}\kern -.03em\TeX}}
-
-\DeclareLogo\PlainTeX{\textsc{Plain}\kern2pt\TeX}
-
-\DeclareLogo\Web{\textsc{Web}}
-% There's also the \LaTeXpar\ logo got with the |\LaTeXpar| macro
-% provided by \pk{gmutils}. And here \TeXbook's logo:
-\DeclareLogo[The TeX book]\TeXbook{\textsl{The \TeX book}}
-\let\TB\TeXbook% \textit{TUG Boat} uses this.
-
-\DeclareLogo[e-TeX]\eTeX{%
- \iffontchar\font"03B5{\itshape ε}\else
- \ensuremath{\varepsilon}\fi-\kern-.125em\TeX}% definition sent by Karl
-% Berry from \textit{TUG Boat} itself.
-
-\StoreMacro\eTeX
-
-\DeclareLogo[pdfe-TeX]\pdfeTeX{pdf\eTeX}
-
-\DeclareLogo\pdfTeX{pdf\TeX}
-\DeclareLogo\pdfLaTeX{pdf\LaTeX}
-% \changes{v0.97}{2008/11/22}{added}
-
-\gm@ifundefined{XeTeX}{%
- \DeclareLogo\XeTeX{X\kern-.125em\relax
- \gm@ifundefined{reflectbox}{%
- \lower.5ex\hbox{E}\kern-.1667em\relax}{%
- \lower.5ex\hbox{\reflectbox{E}}\kern-.1667em\relax}%
- \TeX}}{}
-
-\gm@ifundefined{XeLaTeX}{%
- \DeclareLogo\XeLaTeX{X\kern-.125em\relax
- \gm@ifundefined{reflectbox}{%
- \lower.5ex\hbox{E}\kern-.1667em\relax}{%
- \lower.5ex\hbox{\reflectbox{E}}\kern-.1667em\relax}%
- \LaTeX}}
-% As you see, if \TeX\ doesn't recognise \cs{reflectbox}
-% (\pk{graphics} isn't loaded), the first |E| will not be reversed.
-% This version of the command is intended for non-\XeTeX\ usage. With
-% \XeTeX, you can load the \pk{xltxtra} package (e.g.\ with the
-% \pk{gmutils} |\XeTeXthree| declaration) and then the reversed |E|
-% you get as the Unicode Latin Letter Reversed E.
-
-\DeclareLogo[LuaTeX]\LuaTeX{\textsc{Lua}\TeX}
-% \changes{v0.96}{2008/10/10}{added}
-
-% \division{Expandable turning stuff all into `other'}
-% ^^A
-% ^^A % While typesetting a~Unicode file contents with \pk{inputenc} package
-% ^^A % I~got a~trouble with some Unicode sequences that expanded to
-% ^^A % unexpandable \CSs: they couldn't be used within
-% ^^A % |\csname…\endcsname|. My \TeX Guru advised to use |\meaning| to
-% ^^A % make all the name `other'. So---here we are.
-% ^^A %
-% ^^A % Don't use them in |\edef|s, they would expand not quite.
-% ^^A % \Define\unex@namedef \Define\unex@nameuse
-% ^^A
-% ^^A
-
-% A shorthand. Note that it takes an undelimited argument not
-% requires \<balanced text>.
-
-\long\def\detoken@xa#1{\detokenize\@xa{#1}}
-
-% The next macro originates from the ancient era when I didn't know
-% about \eTeX's |\detokenize|. A try to redefine it to
-% |\detokenize\@xa{#1}| resulted in error so (v0.991) I leave it and
-% use as is.
-%
-% Note however it acts different than |\detoken@xa| for a macro with
-% parameters: while |\detoken@xa| produces and ‘extra |}|’ error,
-% |\all@other| expands to the detokenised meaning. \Define\all@other
- \long\def\all@other#1{\@xa\gm@gobmacro\meaning#1}
-
- % The |\gm@gobmacro| macro above is applied to gobble the |\meaning|'s
- % beginning, |long macro:->| all `other' that is.
- % \Define\gm@gobmacro
- \edef\gmu@tempa{%
- \def\@nx\gm@gobmacro##1\@xa\@gobble\string\macro:##2->{}}
- \gmu@tempa
-
-
-% \division{Brave New World of \XeTeX}
-
-\def\@ifXeTeX{% two-argument command
- \ifdefined\XeTeXversion
- \unless\ifx\XeTeXversion\relax\afterfifi\@firstoftwo\else\afterfifi\@secondoftwo\fi
- \else\afterfi\@secondoftwo\fi}
-
-\def\XeTeXifprefix{% to be used as prefix to an |\if›…| test.
- \@ifXeTeX{}{\unless}}
-
-\DeclareCommand\XeTeXthree{o}{% \
- % \changes{v0.90}{2008/8/4}{adjusted
- % to the redefinition of
- % \cs{verb} in \pk{xlxtra} 2008/07/29}
- \@ifXeTeX{%
- \IfValueT{#1}{\PassOptionsToPackage{#1}{fontspec}}%
- \@ifpackageloaded{gmverb}{\StoreMacro\verb}{}%
- \RequirePackage{xltxtra}% since v 0.4 (2008/07/29) this package
- % redefines |\verb| and \env{verbatim*},
- % and quite elegantly provides an option
- % to suppress the redefinitions, but
- % unfortunately that option excludes also
- % a~nice definition of |\xxt@visiblespace|
- % which I~fancy.
- \@ifpackageloaded{gmverb}{\RestoreMacro\verb}{}%
- \AtBeginDocument{%
- \RestoreMacro\LaTeX\RestoreMacro*{LaTeX }% my version of the
- % \LaTeX\ logo has been stored just
- % after defining, in line \ref{SMLaTeX}. \ilrr
- \RestoreMacro\eTeX}%
- % \stanza
- \pdef\adddefaultfontfeatures##1{%
- \addtomacro\zf@default@options{#1,}}
- }% of |\@ifXeTeX|'s first argument,
- {}% |\@ifXeTeX|'s second argument,
-}% of |\XeTeXthree|'s body.
-
-
-% \indent The |\udigits| declaration causes the digits to be typeset
-% uppercase. I~provide it since by default I~prefer the lowercase
-% (nautical) digits.
-\AtBeginDocument{%
- \@ifpackageloaded{fontspec}{%
- \pdef\udigits{%
- \addfontfeature{Numbers=Uppercase}}%
- }{%
- \emptify\udigits}}
-
-
-% \subdivision{Fractions}
-
-\def\Xedekfracc{\gm@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{%
- \gm@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|.
- \gm@ifstar{\let\gmu@dekfracc\gmu@dekfraccsimple}{}%
- }
-
-\def\gmu@xedekfraccplain{% `else' of the main |\gm@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
-% for |\thous| (hacky thousand separator).
-
-\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}
-
-
-% What have we just done? We defined two versions of the
-% |\Xefractions| declaration. The starred version is intended to make
-% use only of the built-in fractions such as \dekfracc1/2 or
-% \dekfracc7/8. To achieve that, a~handful of macros is defined that
-% expand to the Unicodes of built-in fractions and |\dekfracc| command
-% is defined to use them.
-%
-% The unstarred version makes use of the Fraction font feature and
-% therefore is much simpler.
-%
-% Note that in the first argument of |\gm@ifstar| we wrote 8 (eight)
-% |#|s to get the correct definition and in the second argument `only'
-% 4. (The \LaTeXe\ Source claims that that is changed in the `new
-% implementation' of |\gm@ifstar| so maybe it's subject to change.)
-
-% A~simpler version of |\dekfracc| is provided in line \ref{2292}.
-
-% \subdivision{\cs{resizegraphics}}
-
-\pdef\resizegraphics#1#2#3{% % \changes{v0.94}{2008/10/4}{\cs{includegraphics}
- % works well in \XeTeX\ so I~remove the complicated version
- % with \cs{XeTeXpicfile}}
- % 2009/11/17 works bad with a file whose name contains spaces so I
- % return \cmd\XeTeXpicfile
- \resizebox{#1}{#2}{%
- \edef\gmu@tempa{\@nx\csname XeTeX\@nx\@ifendswithpdf{%
- \@xa\string\csname#3\endcsname}{pdf}{pic}file\@nx\endcsname}%
- \gmu@tempa "#3"\relax}}
-
-\edef\gmu@tempa{%
- \def\@nx\@ifendswithpdf##1{%
- \unexpanded{%
- \ifnum
- \if\relax\gmu@pdfdetector}##1%
- \detokenize{pdf}\unexpanded{\relax0\else1\fi}% we expand to 1 if
- % \inhash1 ends with lowercase ‘pdf’ of cat. 12
- \unexpanded{\if\relax\gmu@PDFdetector}##1%
- \detokenize{PDF}\unexpanded{\relax0\else1\fi}% we expand to 1 if
- % \inhash1 ends with uppercase ‘PDF’ of cat. 12
- >0
- \unexpanded{\@xa\@firstoftwo\else\@xa\@secondoftwo\fi}%
- }% of |\@ifendswithpdf|
- %
- % \stanza
- %
- \def\@nx\gmu@pdfdetector##1\detokenize{pdf}{}%
- \def\@nx\gmu@PDFdetector##1\detokenize{PDF}{}%
-}\gmu@tempa
-
-
-\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}{%
- \IfValueTF{##1}{\textsuperscript@@{##2}}%
- {%
- \begingroup
- \addfontfeature{VerticalPosition=Numerator}##2%
- \endgroup}}%
- }{\truetextsuperscript}}
-
-\def\truetextsuperscript{%
- \let\textsuperscript\textsuperscript@@
-}
-
-%^^A %\subdivision{Proper loading of \pk{tikz}}
-%^^A \def\xetikz{\def\pgfsysdriver{pgfsys-dvipdfm.def}%
-%^^A \usepackage{tikz}}
-
-% \subdivision{Settings for mathematics in main font} I~used these
-% terrible macros while typesetting E.~Szarzyński's \textit{Letters}
-% in 2008. The \TextUsage\gmath\ declaration introduces math-active
-% digits and binary operators and redefines Greek letters and parentheses, the
-% \TextUsage\garamath\ declaration redefines the quantifiers and is
-% more Garamond Premier Pro-specific.
-
-% So, when you set default fonts (in the preamble), put
-% \TextUsage\gmath\ to set what possible from them to math. This sets
-% the |normal| math version. If you want to use another set of fonts
-% elsewhere in your document and have according math for them, set
-% them ‘for a~while’ in the preamble and in their scope declare
-% |\gmath⁄arg[version]|. Then put |\mathversion{normal}| right after
-% |\begin{document}| and |\gmath[⁄<version>]| where you want those
-% other fonts.
-%
-% |\gmath| takes second optional argument, in parentheses,
-% which should be (sth.\ that expands to) a |\fontspec| font selecting
-% command. A font selected by this command will be declared and used
-% when some char in basic font is missing and only else the default
-% math font will be left for such a char.
-%
-% So, \[|\gmath⁄arg[version](rescue font«(spec-ification)»)|\]
-%
-% Note that |\gmath| without first optional argument has always to
-% come first because otherwise it overwrite settings of your math
-% version.
-
-\def\gmu@getfontstring{%
- \xdef\gmu@fontstring{%
- \gmu@fontstring@}}
-
-\def\gmu@fontstring@{%
- \@xa\@xa\@xa\gmu@fontstring@@\@xa\meaning\the\font\@@nil}
-
- %^^A \edef\gmu@tempa{%
- %^^A \def\@nx\gmu@fontstring@@
- %^^A \detokenize{select font }##1\@nx\@@nil
- %^^A {##1}%
- %^^A }\gmu@tempa
-
-\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%
- %^^A\typeout{@@@@ \@xa\meaning\the\font}%
- \@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}%
-}
-
-%\incs{XeTeXmathcode}\<char slot> \arg[=] \<type> \<family> \<char slot>
-
-\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).
-}{%
- %^^A\AtBeginDocument{\setbox0=\hbox{$\showthe\textfont0 $}}%
- \IfValueT{#1}{%
- \DeclareMathVersion{#1}% this sets the defaults so no need to
- % define them explicitly
- % ^^A \SetSymbolFont{operators}{#1}{OT1}{qpl}{m}{n}%
- % ^^A %^^A\SetSymbolFont{letters} {#1}{OML}{qpxmi} {m}{it}%
- % ^^A \SetSymbolFont{symbols}{#1}{OMS}{pxsy}{m}{n}%
- % ^^A \SetSymbolFont{largesymbols}{#1}{OMX}{pxex}{m}{n}%
- }% of if |#1| given
- %
- \gmu@getfontdata{\rmfamily\itshape}%
- %
- \edef\gmu@tempa{%
- \IfValueTF{#1}{\@nx\SetSymbolFont{letters}{#1}}%
- {\@nx\DeclareSymbolFont{letters}}%
- {\encodingdefault}{gmathit\PutIfValue{#1}}{m}{it}%
- \IfValueT{#1}{%
- \@nx\DeclareSymbolFont{letters#1}%
- {\encodingdefault}{gmathit\PutIfValue{#1}}{m}{it}%
- }%
- \@nx\DeclareFontFamily{\encodingdefault}{gmathit\PutIfValue{#1}}{%
- \skewchar\font\gmu@theskewchar\space}%
- \@nx\DeclareFontShape{\encodingdefault}{gmathit\PutIfValue{#1}}{m}{it}{%
- <-> \gmu@fontscalebr \gmu@fontstring}{}%
- \IfValueT{#1}{%
- \@nx\SetMathAlphabet\@nx\mathit{#1}{\encodingdefault}{gmathit#1}{m}{it}}%
- }\gmu@tempa
- %
- \IfValueT{#2}{%
- \gmu@getfontdata{#2\gmu@ifstored{\upshape}{\storedcsname{upshape}}{\upshape}}%
- \edef\gmu@tempa{%
- \@nx\DeclareSymbolFont{gmathRoman\PutIfValue{#1}}%
- {\encodingdefault}{gmathRm\PutIfValue{#1}}{m}{n}%
- \@nx\DeclareFontFamily{\encodingdefault}{gmathRm\PutIfValue{#1}}{%
- \skewchar\font\gmu@theskewchar\space}%
- \@nx\DeclareFontShape{\encodingdefault}{gmathRm\PutIfValue{#1}}{m}{n}{%
- <-> \gmu@fontscalebr \gmu@fontstring}{}%
- }\gmu@tempa
- \@xa\font\csname gmath@fontt\PutIfValue{#1}\endcsname
- =\gmu@fontstring\relax
- % \stanza
- \gmu@getfontdata{#2\gmu@ifstored{\itshape}{\storedcsname{itshape}}{\itshape}}%
- \edef\gmu@tempa{%
- \@nx\DeclareSymbolFont{gmathItalic\PutIfValue{#1}}%
- {\encodingdefault}{gmathIt\PutIfValue{#1}}{m}{n}%
- \@nx\DeclareFontFamily{\encodingdefault}{gmathIt\PutIfValue{#1}}{%
- \skewchar\font\gmu@theskewchar\space}%
- \@nx\DeclareFontShape{\encodingdefault}{gmathIt\PutIfValue{#1}}{m}{n}{%
- <-> \gmu@fontscalebr \gmu@fontstring}{}%
- }\gmu@tempa
- }% of if |#2| given
- % \stanza
- \gmu@getfontdata{\rmfamily\upshape}%
- \edef\gmu@tempa{%
- \IfValueTF{#1}{\@nx\SetSymbolFont{gmathroman}{#1}}%
- {\@nx\DeclareSymbolFont{gmathroman}}%
- {\encodingdefault}{gmathrm\PutIfValue{#1}}{m}{n}%
- \@nx\DeclareFontFamily{\encodingdefault}{gmathrm\PutIfValue{#1}}{%
- \skewchar\font\gmu@theskewchar\space}%
- \@nx\DeclareFontShape{\encodingdefault}{gmathrm\PutIfValue{#1}}{m}{n}{%
- <-> \gmu@fontscalebr \gmu@fontstring}{}%
- \IfValueT{#1}{%
- \@nx\SetMathAlphabet\@nx\mathrm{#1}{\encodingdefault}{gmathrm#1}{m}{n}}%
- }\gmu@tempa
- % ^^A \typeout{@@@ gmathrm (upright symbols):
- % ^^A \meaning\gmu@tempa}%
- \@xa\font\csname gmath@font\PutIfValue{#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)%
- \IfValueTF{##2}{%
- \edef\gmu@tempa{%
- = \mathchar@type##3\space
- \gmath@famnum\space
- % ^^A\the\XeTeXcharglyph
- "##2\relax}%
- \if\relax\@nx##1%
- \gmu@ifstored{##1}{}{\StoreMacro##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
- %^^A \the\XeTeXcharglyph
- `##1\relax}%
- }%
- \gmu@tempa
- % ^^A \typeout{@@@@ \@nx##1}%
- % ^^A \typeout{@@@@ \@xa\detokenize\@xa{\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
- \IfValueTF{##4}{%
- \iffontchar\gmath@ft"##4 \gmath@do##2[##4]##3(##6)%
- \else
- \IfValueTF{##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{%
- \IfValueT{##6}%
- {\ifcsname ##6\endcsname
- \edef\gmu@tempa{%
- \unexpanded{\gmath@doif{##1}{##2}{##3}[##4][##5]}%
- {\@xa\@nx\csname##6\endcsname}\relax
- }\gmu@tempa
- \@xa\@gobbletwo % if family |##6| is defined, we gobble the
- % other branch
- \fi
- }%
- \firstofone
- {\if\relax\@nx##2%
- \RestoreMacro##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
- \IfValueTF{##2}{%
- \edef\gmu@tempa{%
- = \gmath@famnum\space "##2\relax}%
- \edef\gmu@tempa{%
- \XeTeXdelcode `##1 \gmu@tempa}
- }%
- {%
- \edef\gmu@tempa{%
- \XeTeXdelcode `##1 =
- \gmath@famnum\space
- % ^^A \the\XeTeXcharglyph
- `##1\relax}%
- }%
- \gmu@tempa
- % ^^A \typeout{@@@@ \@nx##1}%
- % ^^A \typeout{@@@@ \meaning\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}}{%
- %^^A\setbox0=\hbox{$\showthe\textfont0 $}%
- \RestoreMacro\mathchar@type%
- %
- \IfValueT{##1}{\mathversion{##1}}%
- %
- \edef\gmath@version{\PutIfValue{##1}}%
- % ^^A\show\gmath@version
- %
- \@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
-%^^A \gmath@delc(% doesn't work with a~non-math font (I~dunno if
-%^^A~it works with a~math font).
- \gmath@do)\mathclose
-%^^A \gmath@delc)%
- \gmath@do[\mathopen
-%^^A \gmath@delc[%
- \gmath@do]\mathclose
-%^^A \gmath@delc]%
- %
- \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
-%^^A \gmath@delcif{2329}<%
- \gmath@do>\mathrel
-%^^A \gmath@delcif{232A}>%
- \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)%
- %^^A~\gmath@doif{039F}\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}
-
-% The |\gmatbase| declaration defines a~couple of gmath defining
-% commands and then launches them for the default font at begin
-% document and becomes only that launching.
-
-\@onlypreamble\gmathbase
-% \nostanza It's a~bit tricky: if \cs{gmathbase} occurs first time in
-% a~document inside \env{document} then an error error is raised. But
-% if \cs{gmathbase} occurs first time in the preamble, then it removes
-% itself from the only-preamble list and redefines itself to be only
-% the inner macro of the former itself.
-
-\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
- %^^A\typeout{@@@ I fake \string\leftrightarrow}%
- \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}}%
- % ^^A \StoreMacros{\{\}}%
- \do\{\mathopen
- \do\}\mathclose
- %
- \def\={\mathbin{=}}%
- \def\neqb{\mathbin{\neq}}%
- \let\neb\neqb
- \def\do##1{\gmu@storeifnotyet##1%
- \edef\gma@tempa{%
- \def\@xa\@nx\csname \@xa\gobble\string##1r\endcsname{%
- \@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
-
-\StoreMacro\mathchar@type
-
-\DeclareCommand\gmath{oC{\NoValue}}{%
- \gmathbase[#1](#2)%
- \gmathfurther
- \IfValueT{#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}
-
- %^^A In Beamer presentations it will we defined another way.
- %^^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|.
-
-
-
-
-% \subdivision{Minion and Garamond Premier kerning and ligature fixes}
-
-%»Ws« shall not make long »s« because long »s« looks ugly next to »W«.
-
-\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}
-
-
-
-% \subdivision{A~left-slanted font} Or rather a~left Italic \emph{and}
-% left slanted font. In both cases we sample the skewness of the
-% itshape font of the current family, we reverse it and apply to
-% \cs{itshape} in \cs{litshape} and
-% \cs{textlit} and to \cs{sl} in \cs{lsl}. Note
-% a~slight asymmetry: \cs{litshape} and \cs{textlit} take the current
-% family while \cs{lsl} and \cs{textlsl} the basic Roman family and
-% basic (serif) Italic font. Therefore we introduce the \cs{lit}
-% declaration for symmetry, that declaration left-slants \cs{it}.
-%
-% {\leftslanting
-% I~introduced them first while typesetting E.~Szarzyński's
-% \ty{Letters} to follow his (elaborate) hand-writing and now I copy
-% them here when need left Italic for his \ty{Albert Camus' ^^B
-% \ty{The Plague}} to avoid using bold font.\par}
-%
-% Of course it's rather esoteric so I~wrap all that in a~declaration.
-
-\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@}
-
-
-% \subdivision{Fake Old-style Numbers}
-%
-% While preparing documentation of this package I~faced an \ae ^^A
-% sthetic problem of lack of old-style numbers in a~font I~fancy. The
-% font is for the sans serif and the digits occur only in the date in
-% title so it would be a~pity not too use a~nice font when only one or
-% two numbers are needed.
-
-\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.
- % ^^A Note it's an optional
- % ^^A % braced argument so if the next non-space token after
- % ^^A % \incs{fakeonum} is not left brace, the \inverb|#2|-less version
- % ^^A % will be executed. It allows one to use this command as an
- % ^^A % environment.
-}{%\
- % 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%
- \IfValueT{#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.
- %^^A\typeout{@@@@@@ \gmu@tempa}%
- %^^A {\gmu@tempe
- % ^^A \typeout{@@@@@@ \the\fontcharwd\font`#1}%
- % ^^A }%
- \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}}}
-
-\def\gmu@measurewd#1{% \label{@measurewd}
- \edef\gmu@tempa{\the\fontcharwd\font`#1}%
- \settowidth{\@tempdimb}{% to preserve kerning
- \char`#1\char`#1\char`#1\char`#1\char`#1\char`#1%
- \char`#1\char`#1\char`#1\char`#1\char`#1\char`#1%
- \char`#1\char`#1\char`#1\char`#1\char`#1\char`#1%
- \char`#1\char`#1\char`#1}%
- \edef\gmu@tempb{\the\dimexpr(\@tempdimb-\gmu@tempa)/20}%
-}
-
-\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
-}
-% \nostanza Thus |\gmu@if@onum| becomes a~two-argument command that
-% executes its \hash1 if there is |+onum| in current font
-% specification or its |#2| if |+onum| is absent.
-%
-% One could easily generalise |\gmu@if@onum| to |\@if@fontfeature|,
-% i.e.\ to a~test for an arbitrary font feature, probably with
-% employing that very nice feature specification of \pk{fontspec}, so
-% that you could write
-% |\IfFontFeature{Numbers=OldStyle}{}{fake old-style digits}|.
-
-\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}%
- %^^A~\typeout{@@@@ :::\gmu@tempa:::}%
-}
-
-\def\gmu@calculateslant#1{%
- \gmu@getslant
- %^^A~\typeout{@@@@ \the\fontdimen1\font}%
- \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.
- %^^A\typeout{@@@ \gmu@tempd}%
- \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@reservedc##1:##2:\@@nil{%
- \ifx:##2:\else RawFeature={\gmu@maybestripcomma##2,,\@@nil} \fi}%
- % \stanza
- \def\gmu@reservedd##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@reservede##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@reserveda{%
- % 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@reservedd\@xa\meaning\the\font//\@@nil
- {% font name doesn't contain a~slash
- \@xa\@xa\@xa\gmu@reservede\@xa\meaning\the\font::\@@nil
- {% nor does it contain a~colon
- \def\@nx\gmu@reservedb\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@reservedb\detokenize{select font
- "}####1:####2\detokenize{"}####3\@nx\@@nil{%
- \ifx\fontspec#3%
- \@nx\@nx\@nx\fontspec[\@nx\gmu@reservedc####2::\@nx\@@nil#4]{####1}%
- \else
- #3Font={####1}, #3Features={\@nx\gmu@reservedc####2::\@nx\@@nil#4}%
- \fi
- }%
- }%
- }% of ‘no slash’ case
- {% font name contains a~slash
- \def\@nx\gmu@reservedb\detokenize{select font
- "}####1/####2\detokenize{"}####3\@nx\@@nil{%
- \ifx\fontspec#3%
- \@nx\@nx\@nx\fontspec[\@nx\gmu@reservedc####2::\@nx\@@nil#4]{####1}%
- \else
- #3Font={####1}, #3Features={\@nx\gmu@reservedc####2::\@nx\@@nil#4}%
- \fi
- }% of |\gmu@reservedb|
- }% of ‘slash present’ case
- }\gmu@reserveda
- % ^^A\typeout{@@@@@ ›\@xa\meaning\the\font‹}%
- \xdef#1{\@xa\@xa\@xa\gmu@reservedb\@xa\meaning\the\font\@@nil}%
- % ^^A~\typeout{@@@@@ ›\meaning#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
- % ^^A~\setlength\@tempdima{\fontdimen#1\font}%
- % ^^A~\setlength\@tempdimb{\fontdimen#1\zf@basefont}%
- % ^^A~\setlength\@tempdimc{1pt*\ratio{\@tempdima}{\@tempdimb}}%
- % We ‘descale’ the current font:\nostanza
- \gmu@cepstnof\fontspec[, Scale=1]\gmu@tempa
- \@xa\let\@xa\gmu@currfont@descaled\the\font
- \gmu@basefont
- % ^^A\typeout{@@@@ \meaning\gmu@basefont}%
- \gmu@cepstnof\fontspec[, Scale=1]\gmu@tempa
- % \nostanza now also the base font is descaled.
- \xdef\gmu@fontscale{%
- \strip@pt
- % ^^A\@tempdimc
- \dimexpr 1pt *
- \numexpr\dimexpr#1\fontdimen#2\font\relax\relax /
- \numexpr\fontdimen#2\gmu@currfont@descaled\relax
- \relax}%
- % ^^A \zf@PackageInfo{\zf@fontname\space scale = \zf@scale}%
- \endgroup}
-
-
-%\division{Varia}
-%
-
-% A~very neat macro provided by \pk{doc}. I~copy it
-% \texttilde|verbatim|.
-\def\gmu@tilde{%
- \leavevmode\lower.8ex\hbox{$\,\widetilde{\mbox{ }}\,$}}
-% Originally there was just |\ | instead of |\mbox{ }| but some
-% commands of ours do redefine |\ |.
-%^^A\pdef\*{\gmu@tilde}
-% \changes[\*]{v0.97}{2008/11/29}{ removed (it was a~text tilde,
-% available as \cmd\texttilde)}
-\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}}
-% We prepare the proper kerning for ``\texttilde/''.
-
-% The standard |\obeyspaces| declaration just changes the space's
-% |\catcode| to \catactive\ (`active'). Usually it is fairly enough
-% because no one `normal' redefines the active space. But we are
-% \emph{not} normal and we do \emph{not} do usual things and therefore
-% we want a~declaration that not only will |\active|ate the space but
-% also will (re)define it as the |\ | primitive. So define
-% |\gmobeyspaces| that obeys this requirement.
-%
-% (This definition is repeated in \pk{gmverb}.)
-\foone{\catcode`\ \active}%
-{\def\gmobeyspaces{\let \ \catcode`\ \active}}
-
-% While typesetting poetry, I~was surprised that sth.\ didn't work. The
-% reason was that original |\obeylines| does |\let| not |\def|, so I~give
-% the latter possibility.
-% \Define\defobeylines
-% \changes{v0.62}{06/09/07}{moved from \pk{pmlectionis.cls}}
-\foone{\catcode`\^^M\active}% the comment signs here are crucial.
-{\def\defobeylines{\catcode`\^^M=13 \def^^M{\par}}}
-
-% Another thing I~dislike in \LaTeX\ yet is doing special things for
-% |\…skip|'s, 'cause I~like the Knuthian simplicity. So I~sort of
-% restore Knuthian meanings:
-% \changes{v0.63}{06/9/8}{Plain-like skip macros
-% defined: \cs{dek›(small⁄|med⁄|big›)skip} i.e., moved here from
-% another file}
-
-\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}
-% \changes{v0.80}{2007/04/28}{added}
-
-
-% A~mark for the \TODO{}s:
-\newcommand*{\TODO}[1][]{{%
- \sffamily\bfseries\huge TO-DO!\if\relax#1\relax\else\space\fi#1}}
-% \changes{v0.64}{06/9/17}{moved here from \pk{pmlectionis}}
-
-% \skiplines
-% The code contained in this |\skiplines| I~wrote to make the table of
-% contents two-column. The first difficulties led me to making the
-% writes immediate at begin and end document but this also worked bad
-% in a~special situation, namely, when a~contents line was added on
-% the last page of the document. So for now I~give this way up and
-% brutally redefine the internal \LaTeX\ macro.
-%
-% % A~trick for making |\protected@write| immediate. What's a~use of it?
-% % See the next macro.
-% % Define\MakeWriteImmediate
-% % CodeDefIndex\@@write
-% % changes{v0.65}{06/9/26}{added}
-% \newcommand*\MakeWriteImmediate{%
-% \let\@@write\write
-% \def\write{\immediate\@@write}}
-%
-% % First I~used it for closing of \env{multicols} in the \file{.toc}
-% % file. Second time to make \emph{two} tables of contents containing
-% % two different parts of the document
-% % Define\ImmediateAddtoConts
-% % changes{v0.65}{06/9/26}{added}
-% \newcommand\ImmediateAddtoConts[2]{{%
-% \MakeWriteImmediate
-% \addtocontents{#1}{#2}%
-% }}
-% \endskiplines
-
-% I~like two-column tables of contents. First I~tried to provide them by
-% writing |\begin{multicols}{2}| and |\end{multicols}| out to the
-% \file{.toc} file but it worked wrong in some cases. So I~redefine the
-% internal \LaTeX\ macro instead.
-\newcommand*\twocoltoc{%
- \RequirePackage{multicol}%
- \def\@starttoc##1{%
- \begin{multicols}{2}\makeatletter\@input {\jobname .##1}%
- \if@filesw \@xa \newwrite \csname tf@##1\endcsname
- \immediate \openout \csname tf@##1\endcsname \jobname .##1\relax
- \fi
- \@nobreakfalse\end{multicols}}}
-
-\@onlypreamble\twocoltoc
-
-% The macro given below is taken from the \pk{multicol} package (where
-% its name is |\enough@room|). I~put it in this package since I~needed
-% it in two totally different works.
-\DeclareCommand\enoughpage{%
- Q{+-0123456789}% (optional short version (number of |\baselineskip|s))
- B{2\baselineskip}% (2) optional (formerly mandatory) long version of
- % required room on a page
- >is
- B{} % (3) what if the room is enough
- >isB{\newpage} % (4) what if there's to little room on a page
-}{%
- % \chgs{2009/03/18 v0.98 made \eTeX-ish}
- % \chgs{2009/05/25 v0.98 made ifthenelse-like with ‘then’ and ‘else’
- % optional default \<nothing> and \cmd\newpage resp.}
- % \chgs{2009/10/21 v0.98 \cmd\par\ removed since to let it be used
- % for \cmd\pagebreak\ inside a paragraph}
- % ^^A \par
- \if
- \ifdim\dimexpr\pagegoal-\pagetotal<\dimexpr
- \IfValueTF{#1}{#1\baselineskip}{#2}\relax
- 1\else0\fi
- \unless\ifdim\dimexpr\pagegoal-\pagetotal<\z@
- 1\else2\fi
- % \nostanza We check both whether space left on page is larger
- % than we check \emph{and} whether it's nonnegative (the latter
- % happens when we are already on the next page). Therefore this
- % test will not work properly for large values of \inhash1 or
- % values close to \incmd\textwidth.
- % ^^A % \nostanza since 2009/03/18 the test is expandable but
- % ^^A % I~leave this macro \inverb|\protected| because user's will to
- % ^^A % make the test during the (e-)definition of some macro or while
- % ^^A % expanding macros as in inserts seems to me not
- % ^^A % very likely. \nostanza
- \@xa\@firstoftwo
- \else
- \@xa\@secondoftwo
- \fi
- {#4}{#3}%
-}
-
-%^^A % Two shorthands for debugging:
-%^^A %\Define\tOnLine\Define\OnAtLine
-%^^A \newcommand*\tOnLine{\typeout{\on@line}}
-%^^A
-%^^A \let\OnAtLine\on@line
-
-% An equality sign properly spaced:
-\pdef\equals{\hunskip${}={}$\ignorespaces}
-% And for the \LaTeX's pseudo-code statements:
-\pdef\eequals{\hunskip${}=={}$\ignorespaces}
-
-\pdef\·{\hunskip${}·{}$\ignorespaces}
-
-
-% While typesetting a~\acro{UTF-8} ls-R result I~found a~difficulty that
-% follows: \acro{UTF-8} encoding is handled by the \pk{inputenc}
-% package. It's O.K. so far. The \acro{UTF-8} sequences are managed using
-% active chars. That's O.K. so far. While writing such sequences to
-% a~file, the active chars expand. You feel the blues? When the result of
-% expansion is read again, it sometimes is again an active char, but
-% now it doesn't star a~correct \acro{UTF-8} sequence.
-%
-% Because of that I~wanted to `freeze' the active chars so that they
-% would be |\write|n to a~file unexpanded. A~very brutal operation is
-% done: we look at all 256 chars' catcodes and if we find an active
-% one, we |\let| it |\relax|. As the macro does lots and lots of
-% assignments, it shouldn't be used in |\edef|s.
-%
-% \Define\freeze@actives
-% \changes{v0.76}{2007/02/07}{added}
-
-\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}}
-
-
-% A~macro that typesets all 256 chars of given font. It makes use of
-% |\@whilenum|. \Define\ShowFont
-
-\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}}
-
-
-% A~couple of macros for typesetting liturgic texts such as psalmody
-% of Liturgia Horarum. I~wrap them into a~declaration since they'll be
-% needed not every time.
-% \Define\liturgiques
-% \changes{v0.76}{07/3/30}{added, or rather moved from \file{Akatyst.tex}}
-\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.
- \StoreMacro\*%
- \def\*{\czer{\storedcsname{*}}}%
- \def\+{\czer{†}}%
- \newcommand*\nieczer[1]{\textcolor{black}{##1}}%
-}
-
-% After the next definition you can write
-% \cs{gmu@RP}\arg[options]{package}{\CS} to get the package |#2|
-% loaded with options |#1| if the \CS |#3| is undefined.
-\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}}
-
-% Since inside \env{document} we cannot load a~package, we'll redefine
-% |\gmu@RPfor| to issue a~request before the error issued by undefined
-% \CS.
-%^^A \Define\gmu@RPfor
-\AtBeginDocument{%
- \renewcommand*\gmu@RPfor[3][]{%
- \unless\ifdefined#3%
- \@ifpackageloaded{#2}{}{%
- \typeout{^^J! Package `#2' not loaded!!! (\on@line)^^J}}%
- \fi}}
-
-
-% It's very strange to me but it seems that $\continuum$ is not
-% defined in the basic math packages. It is missing at least in the
-% \textit{Symbols} book.
-\pprovide\continuum{%
- \gmu@RPfor{eufrak}\mathfrak\ensuremath{\mathfrak{c}}}
-
-% And this macro I~saw in the \pk{ltugproc} document class and I~liked
-% it.
-\def\iteracro{%
- \pdef\acro##1{%
- \begingroup
- \acropresetting
- \gmu@acrospaces##1 \gmu@acrospaces
- \endgroup
- }%
-}
-
-\emptify\acropresetting
-
-\iteracro
-
-\def\gmu@acrospaces#1 #2\gmu@acrospaces{%
- \gmu@acroinner#1\gmu@acroinner
- \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@acroinner#1{%
- \ifx\gmu@acroinner#1\relax\else
- \ifcat a\@nx#1\relax%
- \ifnum`#1=\uccode`#1%
- {\acrocore{#1}}%
- \else{#1}% tu było |\smallerr|
- \fi
- \else#1%
- \fi
- \afterfi\gmu@acroinner
- \fi}
-
-% We extract the very thing done to the letters to a~macro because we
-% need to redefine it in fonts that don't have small caps.
-\pdef\acrocore{\smaller % was: |\scshape\lowercase|
-}
-
-% Since the fonts I~am currently using do not support required font
-% feature, I~skip the following definition.
-
-\def\IMHO{\acro{IMHO}}
-\def\AKA{\acro{AKA}}
-
-\pdef\usc#1{{\addfontfeature{Letters=UppercaseSmallCaps}#1}}
-
-\def\uscacro{\let\acro\usc}
-
-%^^A \newcommand*\qxenc{\fontencoding{QX}\selectfont}
-%^^A % The |\copyright| command is unavailable in T1 and U~(unknown)
-%^^A % encodings so provide
-%^^A \newcommand*\qxcopyright{{\qxenc\copyright}}
-%^^A \newcommand*\qxcopyrights{%
-%^^A \let\gmu@copyright\copyright
-%^^A \def\copyright{{\qxenc\gmu@copyright}}}
-%^^A
-%^^A \newcommand*\fixcopyright{%
-%^^A \@ifXeTeX{\def\copyright{\char"00A9 }}{\qxcopyrights}}
-
-
-% Probably the only use of it is loading \pk{gmdocc.cls} `as second
-% class'. This command takes first argument optional, options of the
-% class, and second mandatory, the class name. I~use it in an article
-% about \pk{gmdoc}.
-\def\secondclass{%
- \newif\ifSecondClass
- \SecondClasstrue
- \@fileswithoptions\@clsextension}%|[outeroff,gmeometric]{gmdocc}|%
-% it's loading \pk{gmdocc.cls} with all the bells and whistles except
-% the error message.
-
-
-% Cf.\ \TeXbook\ ex.\ 11.6.\par
-% A~line from \LaTeX:
-% \[|% \check@mathfonts\fontsize\sf@size\z@\math@fontsfalse\selectfont|\]
-% didn't work as I~would wish: in a~|\footnotesize|'s scope it still
-% was |\scriptsize|, so too large.
-% \changes{v0.81}{2007/05/13}{moved here from \pk{pmlectionis.cls}}
-
-\def\gmu@dekfraccsimple#1/#2{\leavevmode\kern.1em
- \raise.7ex\hbox{%^^A \udigits
- \gmu@fracfontsetup#1}\gmu@numeratorkern
- \dekfraccslash\gmu@denominatorkern
- %^^A\lower.25ex\hbox
- {%^^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,
-% %%%%% \nlpercent|\char"2044 |\ilrr
-\dekfraccsimple
-
-% \changes{v0.81}{2007/05/13}{moved here from \pk{pmlectionis.cls}}
-
-
-% A~macro that acts like |\,| (thin and unbreakable space) except it
-% allows hyphenation afterwards:
-
-\newcommand*\ikern{\,\penalty\@M\hskip\z@skip\relax}
-%\changes{v0.82}{2007/07/17}{added}
-
-% And a~macro to forbid hyphenation of the next word:
-\pdef\nohy{\leavevmode\kern0sp\relax}
-\pdef\yeshy{\leavevmode\penalty\@M\hskip\z@skip}
-% In both of the above definitions `0sp' not |\z@| to allow their
-% writing to and reading from files where @ is `other'.
-
-
-
-
-% \subdivision{\cs{include} not only \file{.tex}'s}
-% |\include| modified by me below lets you to include files of any
-% extension provided that extension in the argument.
-%
-% If you want to |\include| a~non-\file{.tex} file and deal with it
-% with |\includeonly|, give the latter command full file name, with
-% the extension that is.
-%
-\def\gmu@getext#1.#2\@@nil{%\UnDef
- \def\gmu@filename{#1}%\UnDef
- \def\gmu@fileext{#2}}
-
-\def\include#1{\relax
- \ifnum\@auxout=\@partaux
- \@latex@error{\string\include\space cannot be nested}\@eha
- \else \@include#1 \fi}
-
-\def\@include#1 {%
- \gmu@getext#1.\@@nil
- % \UnDef
- \ifx\gmu@fileext\empty\def\gmu@fileext{tex}\fi
- \clearpage
- \if@filesw
- \immediate\write\@mainaux{\string\@input{\gmu@filename.aux}}%
- \fi
- \@tempswatrue
- \if@partsw
- \@tempswafalse
- \edef\reserved@b{#1}%
- \@for\reserved@a:=\@partlist\do{%
- \ifx\reserved@a\reserved@b\@tempswatrue\fi}%
- \fi
- \if@tempswa
- \let\@auxout\@partaux
- \if@filesw
- \immediate\openout\@partaux \gmu@filename.aux
- \immediate\write\@partaux{\relax}%
- \fi
- \@input@{\gmu@filename.\gmu@fileext}%
- \inclasthook
- \clearpage
- \@writeckpt{\gmu@filename}%
- \if@filesw
- \immediate\closeout\@partaux
- \fi
- \else
-% If the file is not included, reset |\@include| |\deadcycles|, so that a
-% long list of non-included files
-% does not generate an `Output loop' error.
- \deadcycles\z@
- \@nameuse{cp@\gmu@filename}%
- \fi
- \let\@auxout\@mainaux}
-
-
-\newcommand\whenonly[3]{%
- \def\gmu@whonly{#1,}%
- \ifx\gmu@whonly\@partlist\afterfi{#2}\else\afterfi{#3}\fi}
-
-% I~assume one usually includes chapters or so so the last page style
-% should be closing.
-\def\inclasthook{\thispagestyle{closing}}
-
-% \subdivision{Switching on and off parts of one file}
-%
-% The |\include| facility is very nice only it forces you to split
-% your source in many files. Therefore I~provide a~tool analogous to
-% |\include| and using the same |\includeonly| mechanism/list to
-% switch on and off parts of the same source file.
-%
-\def\filepart#1{\relax
- \ifnum\@auxout=\@partaux
- \@latex@error{\string\filepart\space cannot be nested}\@eha
- \else\afterfi{\@filepart#1 }\fi}
-
-\def\@filepart#1 {%
- \clearpage
- \edef\gmu@filepartname{#1}% we'll use it later
- \if@filesw
- \immediate\write\@mainaux{\string\@input{#1.aux}}%
- \fi
- \@tempswatrue
- \if@partsw
- \@tempswafalse
- \@for\reserved@a:=\@partlist\do{%
- \ifx\reserved@a\gmu@filepartname\@tempswatrue\fi}%
- \fi
- \if@tempswa
- \let\@auxout\@partaux
- \if@filesw
- \immediate\openout\@partaux #1.aux
- \immediate\write\@partaux{\relax}%
- \fi
- \@xa\@firstoftwo
- % \label{spart:iftrue}
- \else
-% If the file is not included, reset |\@include| |\deadcycles|, so that a
-% long list of non-included files
-% does not generate an `Output loop' error.
- \deadcycles\z@
- \@nameuse{cp@\gmu@filepartname}%
- \let\@auxout\@mainaux
- \@xa\@secondoftwo
- \fi
- {\iftrue}%
- {\let\endfilepart\fi
- \csname gm@skipped@#1\endcsname
- \def\next{\RestoreMacro\endfilepart
- \@ifnextchar\bgroup{\show\NextBgroup\@gobble}{}}%
- \@xa\next\iffalse}%
-}
-
-
-\DeclareCommand\endfilepart{b}{% Note the argument is not used really. Maybe later we'll
- % use it for checking of proper matching. Or maybe not.
- \inclasthook
- \clearpage
- \@writeckpt{\gmu@filepartname}%
- \if@filesw
- \immediate\closeout\@partaux
- \fi
- \fi% this |\fi| closes |\Iftrue| put by line \ref{spart:iftrue}.
- \let\@auxout\@mainaux
-}
-
-\StoreMacro\endfilepart
-
-\def\nofileparts{%
- \let\filepart\@gobble
- \DeclareCommand\endfilepart{b}{}%
-}
-
-% \subdivision{Fix of including when \pk{fontspec} is used}
-% The \pk{fontspec} package creates counters for font families. If
-% a~\pk{fontspec} command is used in a~part of a~document and then
-% such a~part is skipped, an error occurs ‘No counter zf@fam@…
-% defined’. Now we fix that by ensuring all the counters are defined
-% before they are set.
-%
-% Note it's a~draft version which doesn't support resetting of one counter
-% within another.
-
-\def\includecountfix{%
- \def\@wckptelt##1{%
- \immediate\write\@partaux{%
- \providecounter{##1}% to
- % provide the font counters defined
- % in parts of the document.
- \string\setcounter{##1}{\the\@nameuse{c@##1}}}}%
-}
-
-\pdef\providecounter#1{%
- \unless\ifcsname c@#1\endcsname\newcounter{#1}\fi}
-
-
-% \subdivision{Faked small caps}
-
-\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|
-% adding redefinition of |\\| caused stack overflow. Note it
-% disallows hyphenation except at |\-|.
-
-\pdef\fakescaps#1{{\gmu@scapss#1\@@nil}}
-
-\let\fakescapscore\gmu@scalematchX
-
-% Experimente z~akcentami patrz no3.tex.
-\def\tinycae{{\tiny\AE}}% to use in |\fakescaps[\tiny]{…}|
-
-\RequirePackage{calc}
-
-% wg |\zf@calc@scale| pakietu \pk{fontspec}.
-
-\@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}}%
- \gm@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}%
-%^^A \typeout{**** \gmu@scscale}%
- \endgroup
- \addfontfeature{Scale=\gmu@scscale}%
- }}{\let\gmu@scalematchX\smallerr}
-
-\def\fakescextrascale#1{\def\fakesc@extrascale{#1}}
-
-
-% \subdivision{See above/see below}
-% To generate a~phrase as in the header depending of whether the
-% respective label is before of after.
-\newcommand*\wyzejnizej[1]{%
- \edef\gmu@tempa{\gm@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
-}
-
-%\subdivision{\env{luzniej} and \env{napapierki}---environments used\
-% in page breaking for money}
-%
-% \QueerEOL
-% The name of first of them comes from Polish typesetters' phrase
-% ``rozbija\cacute\ [sk\l ad] na papierki''---`to broaden [leading] with
-% paper scratches'.
-
-\def\napapierkistretch{0,3pt}% It's quite much for 11/13pt leading.
-
-\def\napapierkicore{\advance\baselineskip%
- by 0ptplus\napapierkistretch\relax}
-
-
-% ^^A % \catcode`\^^D\active \def^^D{\traceon}
-% ^^A % \catcode`\^^E\active \def^^E{\traceoff\gmshowlists}
-% ^^A \catcode`\^^D=9
-% ^^A \catcode`\^^E=9
-\DeclareEnvironment{napapierki}{s}{%
- % \chgs{2009/01/05 v0.98 added optional star controlling globalness}
- \par\IfValueT{#1}{\global
- }%
- \napapierkicore}
-{%
- \par
- \IfValueT{#1}{\global\baselineskip=1\baselineskip\relax
- }%
-}% so that you can use \inverb|\napapierki*›…\endnapapierki*|
-% in interlacing environments.
-
-
-
-\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}
-
-% After |\begin{luzniej}| we may put the optional argument of
-% |\luzniejcore|
-\newenvironment*{luzniej}{\par\luzniejcore}{\par}
-
-
-% The starred version sets |\looseness| in |\everypar|, which has its advantages
-% and disadvantages.\nostanza
-\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
-% parentheses and letters with descendants such as $j$ or $y$ in
-% certain fonts.
-%
-% The original |\pauza| of \pk{polski} has the skips rigid (one is
-% even a~kern). We make the skips flexible. Moreover, our |\pauza|
-% begins with |\ifhmode| to be usable also at the beginning of a~line
-% where it marks a~part of a~dialogue.
-
-\def\pauza@skipcore{\hskip0.2em plus0.1em\relax
- \pauzacore
- \@ifnextchar,{% 2009/11/22 added a special case of a comma following pauza
- }{\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{%
- \leavevmode\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{%
- \@ifnextspace{\pauza@skipcore}%
- {\@ifnextchar,{\pauza@skipcore}% a special case of comma added 2009/11/22
- {\@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{—}}
-\longpauza
-\def\shortpauza{%
- \def\pauzacore{\hbox{–\kern,23em\relax\llap{–}}}}%
-\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.
-
-
-
-% If you have all the three dashes on your keyboard (as I~do), you may want to use
-% them for short instead of |\pauza|, |\ppauza| and |\dywiz|. The
-% shortest dash is defined to be smart in math mode and result with
-% $-$.
-\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–{\–}%
- % ^^A \catcode`-\active \let-\gmu@dywiz
- \addtomacro\dospecials{\do\–\do\—}%
- \addtomacro\@sanitize{\@makeother\–\@makeother\—}%
- \addtomacro\gmu@septify{\do\–13\do\—13\relax}%
-}}}
-\else
-\relaxen\adashes
-\fi
-
-
-% The hyphen shouldn't be active \IMHO\ because it's used in \TeX\
-% control such as |\hskip-2pt|. Therefore we provide the |\ahyphen|
-% declaration reluctantly, because sometimes we need it and always use
-% it with caution. Note that my active hyphen in vertical and math
-% modes expands to |-|\catother.
-
-\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}}
-
-
-% To get current time. Works in \eTeX s, including \XeTeX. |\czas|
-% typesets \czas\ and |\czas[:]| typesets \czas[:].
-\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}
-
-
-\@ifXeTeX{%
- \pdef\textbullet{% \changes{v0.94}{2008/10/3}{the \XeTeX\
- % version enriched with \cs{iffontchar} due to lack of bullets
- % with the default settings reported by Morten H\o{}gholm and Edd Barrett}
- \iffontchar\font"2022 \char"2022 \else\ensuremath{\bullet}\fi}%
- %
- \pprovide\glyphname#1{% \changes{v0.96}{2008/11/12}{moved here from
- % my private document class}
- \XeTeXglyph \numexpr\XeTeXglyphindex "#1"\relax\relax}% since
- % \XeTeX\ … \incs{numexpr} is redundant.
-}
-{\def\textbullet{\ensuremath{\bullet}}}
-
-\newenvironment*{tytulowa}{\newpage}{\par\thispagestyle{empty}\newpage}
-
-% To typeset peoples' names on page 4 (the editorial page):
-\def\nazwired{\quad\textsc}
-
-
-
-
-% \subdivision{Typesetting dates in my memoirs}
-
-% A~date in the |YYYY-MM-DD| format we'll transform into
-% `\acro{DD mmmm YYYY}'
-% format or we'll just typeset next two tokens/|{…}| if the
-% arguments' string begins with |--|. The latter option is provided to
-% preserve compatibility with already used macros and to avoid
-% a~starred version of |\thedate| and the same time to be able to turn
-% |\datef| off in some cases (for \file{SevSev04.tex}).
-\pdef\polskadata{%
- \DeclareCommand\gmu@datefsl{%
- Q{0123456789\bgroup}>iT{/-} % (1) year
- Q{0123456789\bgroup}>iT{/-} % (2) month
- Q{0123456789\bgroup} % (3) day
- T{,} K{##1\gmu@datefsl} % (4, 5) additional stuff after comma
- }{%
- \IfValueF{##2}{\PutIfValue{##3}}%
- \IfValueT{##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}%
- \IfValueT{##1}{\space ##1}%
- \PutIfValue{##4}\IfValueT{##5}{ ##5}%
- }% of \incs{gmu@datefsl}.
- }% of |\polskadata|
-
-\polskadata
-
-% For documentation in English:
-\pdef\englishdate{%
- \DeclareCommand\gmu@datefsl{%
- Q{0123456789\bgroup}>iT{/-} % (1) year
- Q{0123456789\bgroup}>iT{/-} % (2) month
- Q{0123456789\bgroup} % (3) day
- T{,} K{##1\gmu@datefsl} % (4, 5) additional stuff after comma
- }{%
- \IfValueF{##2}{\PutIfValue{##3}}%
- \IfValueT{##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,
- \IfValueT{##1}{ ##1}%
- \PutIfValue{##4}\IfValueT{##5}{ ##5}%
- }% of \incs{gmu@datefsl}.
-}%
-
-
-
-% Dates for memoirs to be able to typeset them also as diaries.
-\newif\ifdate
-% ^^A|%\newcounter{dateinsection}[section]|
-\pdef\bidate#1{%
- \gmu@datefsl#1\gmu@datefsl
-}
-
-\pdef\linedate{\gm@ifstar\linedate@@\linedate@}
-\pdef\linedate@@#1{\linedate@{--{}{}#1}}
-\pdef\linedate@#1{\par
- \linedate@hook{#1}%
- \ifdate\addvspace{\dateskipamount}%
- \possvfil% if we put it before |\addvspace|, the v-space is always added.
- \date@line{\footnotesize\itshape \bidate{#1}}%
- \nopagebreak
- \else%|%\ifnum\arabic{dateinsection}>0\dekbigskip\fi|
- \addvspace{\bigskipamount}\possvfil
- \fi}% end of |\linedate|.
-
-\let\linedate@hook\@gobble
-
-\let\dateskipamount\medskipamount
-
-\pdef\rdate{\let\date@line\rightline \linedate}
-
-
-\def\date@left#1{\par{%
- \raggedright#1%
- \leftskip\z@skip
- % ^^A \hangindent\z@skip
- % ^^A \hangafter\z@
- % ^^A \parshape\z@
- % ^^A~wycinam, bo gryzło się z~floatingfigure.
- \@@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}}
-% I'm not quite positive which side I~want the date to be put to so
-% let's |let| for now and we'll be able to change it in the very documents.
-\let\thedate\ldate
-
-
-\pdef\zwrobcy#1{\emph{#1}} %ostinato, allegro con moto,
- %garden party etc., także kompliment
-
-\pdef\tytul#1{\emph{#1}}
-
-
-% Maszynopis w~świecie justowanym zrobi delikatną
-% chorągiewkę. (The \env{maszynopis} environment will make a~delicate
-% ragged right if called in a~justified world.)
-\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.
- \StoreMacro\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
- % ^^A~\lastlinefit=700
- \let\\\@normalcr}
-
-% To conform Polish recommendation for typesetting saying that
-% a~paragraph's last line leaving less than |\parindent| should be
-% stretched to fill the text width:\nostanza
-\DeclareCommand\fullpar{%
- T{+-}%
- Q{+-0123456789} % optional looseness (most probably negative)
-}{%
- \begingroup
- \IfValueT{#1}{\looseness=#1\IfValueTF{#2}{#2}{1}\relax
- \multiply\tolerance by \tw@
- }%
- \fullparcore
- \par
- \endgroup}
-
-\pdef\fullparcore{%
- \hunskip
- \parfillskip\z@skip}
-
-
-% To conform Polish recommendation for typesetting that says that the
-% last line of a~paragraph has to be 2|\parindent| long at least. The
-% idea is to set \cs{parfillskip} naturally rigid and long as
-% |\textwidth-2\parindent|, but that causes non-negligible shrinking
-% of the
-% inter-word spaces so we provide a~declaration to catch the proper
-% glue where the parindent is set (e.g.\ in footnotes parindent is 0\,pt)
-\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
- \IfValueT{##1}{%
- \looseness=##1\IfValueTF{##2}{##2}{1}\relax
- \multiply\tolerance by2
- }%
- \twoparcore<##3>%
- \par
- \endgroup
- }% of \incmd\twopar.
- % \stanza
- \ifdefined\XeTeXversion
- \DeclareCommand\twoparcore{%
- A{\twopar@atleast}>iT{\cipolągwa}}{%
- \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}>iT{\cipolagwa}}{%
- \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{%
- \unless\ifdefined\@parindent
- \newskip\@parindent
- \@parindent=\parindent
- \fi
- \def\restoreparindent{\parindent\@parindent}%
- }% of \cmd\AtBeginDocument.
-}% of \cs{twoparinit}.
-
-
-
-
-% \subdivision{For dati under poems}
-% Or explanations under results of \pk{time}.
-
-\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}
- \IfValueTF{#1}{\leftline{%
- \whernfont
- \hskip#1\relax\parbox
- {\dimexpr\textwidth-\leftskip-\rightskip-#1}%
- {#2}% of |\parbox|,
- }% of |\leftline|,
- }% of |ValueT{#1}|.
- {% |ValueF{#1}|:
- \rightline
- {\whernfont
- \whern@parbox{#2}%
- }% of |\rightline|,
- \setprevdepth
- }% of |ValueF{#1}|,
-}% of |\wherncore|.
-
-
-\DeclareCommand\whern@parbox{%
- S{\leftskip\rightskip}% horizontal alignment of resulting box (the
- % side to be ragged)
- O{t} % vertical alignment of parbox
- >is % separator
- O{0,7666\textwidth} % (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}{%
- \IfValueTF{#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
- \gm@ifstar{\wherncore}%
- {\vskip\whernskip\wherncore}}
-
-\let\whernfont\footnotesize
-
-\newskip\whernskip
-\whernskip2\baselineskip minus 2\baselineskip\relax
-
-\DeclareCommand\whernup{%
- o % a~vskip before
- >is % separating star (ignored)
- o % (2) custom width of parbox
- >Pm}{\par
- \IfValueT{#1}{\vskip#1\relax}%
- \leftline{%
- \IfValueTF{#2}{\whern@parbox\rightskip[b][#2]}%
- {\whern@parbox\rightskip[b]}%
- {#3}%
- }%
- \setprevdepth
- \nopagebreak\relax
- \@ifenvir{quote}{\noindent\ignorespaces}{}}
-
-
-
-%\subdivision{Thousand separator}
-
-\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
-% a~thin space.
-%
-% So you can type |\thousep{7123123123123}| to get
-% \thousep{7123123123123}. But what if you want to apply |\thousep| to
-% a~count register or a~|\numexpr|? You should write one or two
-% |\expandafter|s and |\the|. Let's do it only once for all:
-
-\pdef\xathousep#1{\@xa\thousep\@xa{\the#1}}
-% Now write |\xathousep{\numexpr 10*9*8*7*6*120}| to get
-% \xathousep{\numexpr 90*8*7*6*120}.
-
-\def\shortthousep{%
- \DeclareCommand\thous{Q{+-0123456789}}{%
- % we declare it as a command with Q-type argument to allow spaces
- % between digits.
- \ifmmode\hbox\bgroup\@gmu@mmhboxtrue\fi
- \IfValueTF{##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|.
-%
-% And now write \shortthousep |\thous 3628800| to get \thous 3628800 even with
-% a~blank space (beware of the range of \TeX's counts).
-
-
-% \subdivision{\pk{hyperref}'s \cs{nolinkurl} into \cs{url*}}
-
-\def\urladdstar{%
- \AtBeginDocument{%
- \@ifpackageloaded{hyperref}{%
- \StoreMacro\url
- \pdef\url{\gm@ifstar{\nolinkurl}{\storedcsname{url}}}%
- }{}}}
-
-\@onlypreamble\urladdstar
-
-
-% \subdivision{Footnotes suggested by Andrzej Tomaszewski}
-
-\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
- \IfValueT{#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 |\IfValueT|.
- %
- \gmu@ATfootnotes
- \gmu@AT@ampulex\maketitle% without \pk{hyperref}
- \ifdefined\HyOrg@maketitle
- \afterfi{\gmu@AT@ampulex\HyOrg@maketitle}% with \pk{hyperref}
- \fi
-}
-
-\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\balsmiley#1 {}% to balance parentheses and brackets in
- % smileys. \balsmiley( ;-) \inverb|\balsmiley( ;-)|
-% \chgs{2008/12/9 v0.98 moved here from my personal macro package
-% since I~needed it in the documentation of \pk{gmutils}}.
-%^^A The \pk{wasysym} package defines \incs{smiley} as it should be, a~smiley
-%^^A that is.
-
-\long\pdef\scantnoline#1{% ‘rescan tokens without adding line end’
- {\endlinechar\m@ne\scantokens{#1}}}
-% \chgs{2008/12/14 v0.98 added}
-
-% \subdivision{A~fix to the \pk{url} package}
-%
-% It happened that a~\ac{URL}s typeset with the |\url| command of the
-% \pk{url} package came out sort of spaced because kerning was off
-% because of the math mode. So I~provide a~redefinition of the
-% internal macros of the \pk{url} package which in my version uses not math mode but
-% |\scantokens| and not |\relpenalty| and |\binoppenalty| but
-% |\hyphenpenalty| (as it is in the paragraph) and
-% |\discretionary|. I~tried putting explicit penalties after the
-% symbols but that spoiled kerning.
-%
-% The rules of line breaking are somewhat different, too: in the original \pk{url}
-% package line breaks are forbidden between any two symbols listed in
-% |\UrlBigBreaks|. In my version line breaks are
-% forbidden between any two \emph{identical} ‘\ac{URL} Breaks’ and
-% ‘\ac{URL} Big Breaks’.
-%
-% There are some more differences in formatting some chars, i.a.\ |~|,
-% |%| and angle brackets which I~don't treat specially and just take from font
-% assuming the font provides \ac{ASCII} chars and checking whether it
-% provides the angle brackets.
-%
-\@ifXeTeX{%
- \pdef\UrlFix{\AtBeginDocument{%
- \@ifpackageloaded{url}{\gm@UrlFix}{}}%
- \relaxen\UrlFix}%
- %
- \AtBeginDocument{%
- \pdef\UrlFix{%
- \@ifpackageloaded{url}{\gm@UrlFix}{}%
- \relaxen\UrlFix}}%
-}
-{%
- \pdef\UrlFix{\PackageWarning{gmutils}{!!! The \string\UrlFix\space
- declaration works only with XeTeX}}%
-}
-
-
-\@ifXeTeX{}{%
- \edef\gmu@restoreUpUpUp{\catcode`\@nx\^^^=\the\catcode`\^^^}%
- \AtEndOfPackage\gmu@restoreUpUpUp
- \catcode`\^^^=9 }
-
-\def\gm@UrlFix{%
- % \stanza
- % default style assignments
- \def\UrlBreaks{\do\.\do\@\do\\\do\/\do\!\do\_\do\|\do\;\do\]%
- \do\)\do\,\do\?\do\'\do\"\do\+\do\=\do\#\do\%\do\~\do\_\do\|%
- \do\{\do\}\do\$}%
- \def\UrlBigBreaks{\do\:}%
- \def\UrlNoBreaks{\do\(\do\[\do\{}%
- \def\UrlSpecials{%
- \do\ {\hbox{\visiblespace}}\do\^^M{\hbox{\visiblespace}}}%
- % \stanza
- %
- % \stanza
- \def\Url@Format##1{%
- \UrlFont
- \ifdefined\verbatim@specials
- \catcode`\>\active
- \verbatim@specials
- \verbatim@mathhack
- \fi % setting of
- % the escape char, begin and end group and optionally math shift,
- % defined in \pk{gmverb}.
- \gm@UrlSetup
- \UrlLeft
- \edef\gmu@theendlinechar{\the\endlinechar}%
- \endlinechar\m@ne
- \kern\z@% to forbid hyphenating the first word if the \ac{URL}
- % begins with a~word
- \hyphenchar\font=\UrlHyphenchar\relax
- \let\-\gmu@discretionaryhyphen
- \scantokens{##1}%
- \endlinechar\gmu@theendlinechar\relax
- \UrlRight
- }% of |\Url@Format|.
- % \stanza
- \edef\UrlHyphenchar{%
- \ifdefined\gmv@hyphenchar\gmv@hyphenchar
- \else"A6 \fi}% \label{UrlHyphenchar} broken bar, |¦| or the same as
- % provided in \pk{gmverb} for verbatims. You
- % can redefine it as you please. This char is used as the
- % hyphenation char in \ac{URL}s and therefore should be different
- % from |-| (hyphen), which is often a part of an \ac{URL}. The
- % broken bar seems to be quite unlikely in \ac{URL}s and/or file
- % names.
- % \stanza
- \def\verbatim@mathhack{%
- \ifdefined\verbatim@specials@list
- \@xa\verbatim@mathhack@\verbatim@specials@list
- \fi
- }%
- % \stanza
- \def\verbatim@mathhack@##1##2##3##4##5##6{%
- \IfValueT{##4}{%
- \edef\gmu@thinmuskip{\the\thinmuskip}%
- \edef\gmu@medmuskip{\the\medmuskip}%
- \edef\gmu@thickmuskip{\the\thickmuskip}%
- \begingroup
- \lccode`\~=`##4\lowercase{%
- \endgroup\def~####1~}%
- {$\thinmuskip\gmu@thinmuskip\relax
- \medmuskip\gmu@medmuskip\relax
- \thickmuskip\gmu@thickmuskip\relax
- ####1%
- $}%
- \catcode`##4\active
- }%
- }%
- %\stanza
- \def\gm@UrlSetup{%
- \medmuskip\Urlmuskip \thickmuskip\medmuskip \thinmuskip0mu%
- \relpenalty\UrlBigBreakPenalty \binoppenalty\UrlBreakPenalty
- % ^^A \exhyphenpenalty\@M % seems not to work.
- % ^^A \hyphenpenalty\@M
- \def\do{\gmu@doUrlMath\UrlBreakPenalty}\UrlBreaks % bin
- % (\incs{hyphenpenalty} anyway)
- \def\do{\gmu@doUrlMath\UrlBigBreakPenalty}\UrlBigBreaks % rel
- % (\incs{hyphenpenalty} anyway)
- \def\do{\gmu@doUrlMath\@M}\UrlNoBreaks % open (no break)
- \def\do{\gmu@doUrlMathAc\UrlBreakPenalty}% (\incs{hyphenpenalty})
- \UrlSpecials
- \if \iffontchar\font"2329 1\else0\fi\iffontchar\font"232A 1\else2\fi
- % \nostanza we check whether the font provides both left and right
- % angle brackets. \nostanza
- \gmu@measurewd{^^^^2329}%
- \edef\gmu@tempa{%
- \@nx\gmu@doUrlMathAc\@M\@nx\<{%
- \hbox to\gmu@tempb{\unexpanded{\hss\char"2329 \hss}}}%
- }\gmu@tempa
- \gmu@measurewd{^^^^232a}%
- \edef\gmu@tempa{%
- \@nx\do\@nx\>{%
- \hbox to\gmu@tempb{\unexpanded{\hss\char"232A \hss}}}%
- }\gmu@tempa
- \else
- \gmu@doUrlMathAc\@M\<{\langle}\do\>{\rangle}%
- \fi
- \iffontchar\font"22C6 % low star
- \do\*{\hbox{\char"22C6 }}%
- \else \do\**%
- \fi
- \ifx\do@url@hyp\@empty
- \gmu@measurewd{-}% this macro is defined in line \ref{@measurewd}.
- \edef\gmu@tempa{%
- \unexpanded{\gmu@doUrlMathAc\@M\-}%
- {\hbox to \gmu@tempb{\unexpanded{\hss-\hss}}%
- \@nx\-}% hyphen is a
- % good point for hyphenation, but the hyphenation char should
- % be sth. else, and it is indeed: |¦| (broken bar,
- % |\char"A6|). See also line \ref{UrlHyphenchar}
- }\gmu@tempa
- \fi
- \addfontfeature{Ligatures=NoCommon, Mapping=none}% instead of
- % ‘doing’ \incs{ver\+bat\+im\+@\+no\+lig\+@\+list}.
- % ^^A \let\do\set@mathnolig \verbatim@nolig@list % prevent ligatures
- }% of |\gm@UrlSetup|.
- % \stanza
- % ^^A \def\gmu@UrlBreakPenalty{\gobble{\penalty\UrlBreakPenalty\relax}}%
- % ^^A \def\gmu@UrlBigBreakPenalty{\gobble{\penalty\UrlBigBreakPenalty\relax}}%
- % ^^A \def\gmu@Url@M{\gobble{\penalty\@M\relax}}%
- %
- % \stanza
- \def\gmu@doUrlMath##1##2{%\
- % \begin{enumargs}
- % \item value of the penalty (used as a~Boolean: if $<$
- % \thous 10000, \nlperc\cs{hyphenpenalty} will be used anyway, if $\ge$
- % \thous10000, there will be no \incs{discretionary}),
- % \item the char, given as |\⁄<char>|.
- % \end{enumargs}
- % ^^A % \begin{enumargs}
- % ^^A % \item a~type information macro that expands to |\gobble{⁄«penalty»}|,
- % ^^A % \item the char, given as |\⁄<char>|.
- % ^^A % \end{enumargs}
- % ^^A\gmu@measurewd{##3}%
- \begingroup
- \lccode`\~=`##2\lowercase{%
- \endgroup\def~{\@ifnextchar~}%
- \@xa\addtomacro\@xa~}% of |\lowercase|.
- \ifnum##1<\@M
- {%
- {\char`##2\csname gmu@dbl\string##2kern\endcsname}% if next is the same char
- {\ifmmode\char`##2% else
- \else\gmu@urlbreakable{##1}{##2}%
- \fi}%
- }% of |\addtomacro|'s argument |\ifnum| true.
- \else
- {%
- {\char`##2\csname gmu@dbl\string##2kern\endcsname}{\char`##2}%
- }% of |\addtomacro|'s argument |\ifnum| false.
- \fi
- \catcode`##2=\active
- }% of |\gmu@doUrlMath|.
- % \stanza
- \def\gmu@doUrlMathAc##1##2##3{%\
- % \begin{enumargs}
- % \item (value of) a~penalty (see the remark to \inverb|##1| of
- % the previous macro),
- % \item the char (as |\⁄<char>|),
- % \item the definition.
- % \end{enumargs}
- \begingroup
- \lccode`\~=`##2\lowercase{%
- \endgroup\def~{\@ifnextchar~}%
- \@xa\addtomacro\@xa~}% of |\lowercase|.
- \ifnum ##1<\@M
- {%
- {\ifmmode\char`##2\else$##3\m@th$\fi}%
- {\ifmmode\char`##2%
- \else\discretionary{\hbox{$##3\m@th$}}{}{\hbox{$##3\m@th$}}%
- \fi}%
- }% of |\addtomacro|'s argument if num true.
- \else
- {%
- {\ifmmode\char`##2\else$##3\m@th$\fi}{\ifmmode\char`##2\else$##3\m@th$\fi}%
- }% of |\addtomacro|'s argument if num false.
- \fi
- \catcode`##2=\active
- }% of |\gmu@doUrlMathAc|.
- % \stanza
- \pdef\gmu@url@rigidbreak##1##2{\discretionary{\char`##2}{}{\char`##2}}%
- % \stanza
- \pdef\gmu@url@flexbreak##1##2{\penalty\@M \hskip\z@ plus0,03em
- \char`##2\penalty##1\hskip\z@ plus0,03em\relax}%
- % \stanza
- \let\gmu@urlbreakable\gmu@url@flexbreak
- % \stanza
- \def\Url@z##1{%
- % Do any hyper referencing due to hyperref (or perform a url-def)
- \Url@HyperHook
- % Now do the formatting in a group (can also have \incs{Url@HyperHook} take
- % this as an argument). \nostanza
- {\Url@Format{##1}}%
- \endgroup}%
- % \stanza
- \DeclareUrlCommand\file{\urlstyle{sf}}%
- % \stanza
- \emptify\Url@moving% with our settings |\url| is pretty allowed in
- % moving arguments, I~hope.
-}% of |\gmu@UrlFix|.
-
-\DeclareCommand\UrlSlashKern{O{tt}m}%
-{\AtBeginDocument{%
- \@nameedef{url@#1style}{\def\@nx\UrlFont{%
- \@xa\@nx\csname#1family\endcsname
- \def\@xa\@nx\csname gmu@dbl\string\/kern\endcsname
- {\kern#2\relax}%
- % ^^A \hyphenchar\font=124
- }% of |\UrlFont|
- }% of |\url#1style|
- \urlstyle{#1}%
- }% of |\AtBeginDocument|
-}% of |\UrlSlashKern|
-
-
-
-
-% \division{Conditional tilde}
-%
-% Polish typesetting standards say that for 12 dd and 10 dd \<czcionki>
-% if leading is narrower that 3\dekfracc1/2 \<kwadratu>, $ 3\dekfracc1/2 × 48$dd,
-% then hanging letters are allowed, which also applies to 8 and 6 dd
-% \<czcionki> in less than 3 \<kwadraty> leading. I~treat this
-% recommendation not strictly but as an inspiration, that is
-% I~translate »dd« to »pt«.
-
-\def\TrzaskaTilde{%
- \@xa\DeclareCommand\@xa\gm@smarttilde
- \@xa{\@xa S\@xa{\all@stars~}}{%
- \IfValueTF{##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 |\gm@ifstar|'s else,
- }% of |\gm@smarttilde|,
- \let~\gm@smarttilde
-}% of |\TrzaskaTilde|.
-
-
-\pdef\getprevdepth{%
- \endgraf
- \xdef\setprevdepth{\prevdepth=\the\prevdepth\relax}%
-}
-
-% \division{Storing the catcode of line end}
-\def\StoreCatM{%
- \protected\edef\RestoreCatM{%
- \catcode`\@nx\^^M=\the\catcode`\^^M\relax}%
-}
-
-\pdef\RestoreCatM{\PackageE{gmutils}{first store the catcode of
- ^\empty^\empty M with \string\StoreCatM.}%
-}
-
-% \division{A~really empty page}
-% Copied from Marcin Woliński's macros.
-%
-
-\newcommand{\clearemptydoublepage}{%
- \newpage{\pagestyle{empty}\cleardoublepage}}
-
-
-\DeclareCommand\setspaceskip{%
- A{}% optional factor for all three components
- O{\fontdimen2\font}%
- >is
- O{\fontdimen3\font}%
- >is
- O{\fontdimen4\font}}
-{\spaceskip=#1#2plus#1#3minus#1#4\relax}
-
-\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}%
-}
-
-
-%^^A\def\gmu@lowstarfake{*}
-
-
-\def\makestarlow{%
- \begingroup\lccode`\~=`\*\lowercase{%% \Define**
- \endgroup\def~{\gmu@lowstar}}% 2009/10/19 |\let| changed to
- % \inverb|\def| to allow redefinitions of \incmd\gmu@lowstar.
- \catcode`\*=\active
- \defLowStarFake
-}
-
-\DeclareCommand\defLowStarFake{%
- Q{+-0123456789,.}{0,5}% fraction of fontchar depth of the star glyph
-}%
-{%
- \def\gmu@lowstarfake{%
- \leavevmode\vbox{\hbox{*}\kern#1\fontchardp\font`*}%
- }%
-}
-
-
-\def\gmu@lowstarfake{*} % useful for next command where normal star is
-% low.
-
-
-% The |\*| \CS and active |*| should be defined different to make them
-% distinguishable by tests, especially with |\gm@ifstar| in
-% mind.
-
-\DeclareCommand\*{Q{0123456789}{1}}
-% \label{def:gmu@star}
-{\gmu@star@loop0{#1}}
-
-\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
- \@xa\gmu@star@loop
- \@xa{\number\numexpr#1+1\@xa}%
- \@xa{\number#2\@xa}%
- \fi}
-
-
-
-\endinput
-%
-% \ChangesGeneral
-%
-% \changes{v0.70}{06/10/20}{Package renamed to \pk{gmutils} from
-% \pk{gmlpatch}. As my \protect\TeX\ Guru remarked rightly, the
-% previous name might suggest there was sth.\ wrong with \LaTeX\ which
-% was not my intention}
-%
-% \changes{v0.74}{2006/11/28}{Added macros to make sectioning commands
-% of \pk{mwcls} and standard classes compatible. Now my sectionings
-% allow two optionals in both worlds and with \pk{mwcls} if there's
-% only one optional, it's the title to toc and running head not just
-% to the latter}
-%
-% \changes{v0.76}{2007/03/10}{A~`fixing' of \cs{dots} was rolled back
-% since it came out they were \acro{O.K.} and that was the \acro{QX} encoding that
-% prints them very tight}
-%
-% \changes{v0.77}{2007/04/13}{\cs{afterfi} \& pals made two-argument
-% as the Marcin Woli\nacute ski's analogoi are. At this occasion some
-% redundant macros of that family are deleted}
-%
-% \changes{v0.78}{2007/04/26}{\cs{@namelet} renamed to \cs{n@melet}
-% to solve a~conflict with the \pk{beamer} class. The package contents
-% regrouped}
-%
-% \changes{v0.85}{2007/11/16}{fixed behaviour of too clever headings
-% with \pk{gmdoc} by adding an \cs{ifdim} test}
-%
-% \changes{v0.87}{2008/08/03}{the package goes \eTeX\ even more,
-% making use of \cs{ifdefined} and the code using \acro{UTF-8} chars is
-% wrapped in a~\XeTeX-condition}
-%
-% \changes{v0.89}{2008/08/04}{removed obsolete adjustment of \pk{pgf}
-% for \XeTeX}
-%
-% \changes{v0.91}{2008/08/06}{removed \cs{jobnamewoe} since
-% \cs{jobname} is always without extension. \cs{xiispace} forked to
-% \cs{visiblespace} \cs{let} to \cs{xxt@visiblespace} of \pk{xltxtra}
-% if available. The documentation driver integrated with the \file{.sty} file}
-%
-% \changes{v0.93}{2008/08/21}{A~couple of \cs{DeclareRobustCommand*}
-% changed to \cs{pdef}}
-%
-% \changes{v0.93}{2008/08/29}{The numerical macros commented out as
-% obsolete and never really used}
-%
-% \changes{v0.94}{2008/09/08}{\cs{bgroup} and \cs{egroup} in the
-% macro storing commands and in \cs{foone} changed to \cs{begingroup}
-% and \cs{endgroup} since the former produce an empty \cs{mathord} in
-% math mode while the latter don't}
-%
-% \changes{v0.94}{2008/10/4}{The code from ancient \pk{xparse} (1999) of \TeX
-% Live 2007 rewritten here}
-%
-% \changes{v0.94}{2008/10/4}{removed \cs{unex@namedef} and
-% \cs{unex@nameuse}, probably never really used since they were
-% incomplete: \cs{edef@other} undefined}
-%
-% \toCTAN{2008/11/21 v0.96}
-%
-%
-% \PrintChanges\PrintIndex
-%\NoEOF
-
-% (For my GNU Emacs:)
-%%% Local Variables:
+%%% (For my GNU Emacs:)
+%%% Local Variables:
%%% mode: doctex
%%% coding: utf-8
-%%% mode: flyspell
-%%% ispell-local-dictionary: "british"
-%%% End:
-
-% LocalWords: xedekfraccplain dekfraccsimple doif ifnif sptoken xifnif lowstar
-% LocalWords: dc oC soC oarg parg Ps LocalWords ifnextgroup xifncat ifncat xaS
-% LocalWords: ifnextsingle seQuence activespace dofakeonum smarttilde prevdp
-% LocalWords: reserveda fileext filepart tempswatrue partsw tempswafalse gmu
-% LocalWords: tempswa filename filepartname partlist mainaux writeckpt nameuse
-% LocalWords: prependtomacro xefraccdef xefracc mmhbox selectfont cepstnof
-% LocalWords: reservedb tempd SMglobal smtempa SMglobalfalse MacroSt fontscale
-% LocalWords: quotedstring getfontdata getfontscale getfontstring fontstring
-% LocalWords: numeratorkern denominatorkern fracfontsetup maxnum minnum
-% LocalWords: extremnum firstofmany normalcr tempcnta currfont reservedc
-% LocalWords: maybestripcomma twocolumn thefnmark makefnmark ATfootnotes
-% LocalWords: reservedd reservede
+%%% End:
+\endinput
+%%
+%% End of file `gmutils.sty'.