texlive[54296] Master: schemata (14mar20)

commits+karl at tug.org commits+karl at tug.org
Sat Mar 14 21:44:40 CET 2020


Revision: 54296
          http://tug.org/svn/texlive?view=revision&revision=54296
Author:   karl
Date:     2020-03-14 21:44:40 +0100 (Sat, 14 Mar 2020)
Log Message:
-----------
schemata (14mar20)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/generic/schemata/README
    trunk/Master/texmf-dist/doc/generic/schemata/README.txt
    trunk/Master/texmf-dist/doc/generic/schemata/schemata.pdf
    trunk/Master/texmf-dist/source/generic/schemata/schemata.dtx
    trunk/Master/texmf-dist/source/generic/schemata/schemata.ins
    trunk/Master/texmf-dist/tex/generic/schemata/schemata.sty
    trunk/Master/tlpkg/libexec/ctan2tds

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/generic/schemata/schemata.png
    trunk/Master/texmf-dist/doc/generic/schemata/schematest.tex
    trunk/Master/texmf-dist/source/generic/schemata/Makefile

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/generic/schemata/Makefile
    trunk/Master/texmf-dist/doc/generic/schemata/schemata.hd

Deleted: trunk/Master/texmf-dist/doc/generic/schemata/Makefile
===================================================================
--- trunk/Master/texmf-dist/doc/generic/schemata/Makefile	2020-03-14 20:42:00 UTC (rev 54295)
+++ trunk/Master/texmf-dist/doc/generic/schemata/Makefile	2020-03-14 20:44:40 UTC (rev 54296)
@@ -1,35 +0,0 @@
-NAME  = schemata
-SHELL = bash
-PWD   = $(shell pwd)
-VERS  = $(shell ltxfileinfo -v $(NAME).dtx|sed -e 's/^v//')
-LOCAL = $(shell kpsewhich --var-value TEXMFLOCAL)
-UTREE = $(shell kpsewhich --var-value TEXMFHOME)
-all:	$(NAME).pdf
-	test -e README.txt && mv README.txt README || exit 0
-$(NAME).pdf: $(NAME).dtx
-	pdflatex -shell-escape -recorder -interaction=batchmode $(NAME).dtx >/dev/null
-	pdflatex --recorder --interaction=nonstopmode $(NAME).dtx > /dev/null
-	if [ -f $(NAME).glo ]; then makeindex -q -s gglo.ist -o $(NAME).gls $(NAME).glo; fi
-	if [ -f $(NAME).idx ]; then makeindex -q -s gind.ist -o $(NAME).ind $(NAME).idx; fi
-	pdflatex --recorder --interaction=nonstopmode $(NAME).dtx > /dev/null
-	pdflatex --recorder --interaction=nonstopmode $(NAME).dtx > /dev/null
-clean:
-	rm -f $(NAME).{aux,fls,glo,gls,hd,idx,ilg,ind,ins,log,out,toc} README.txt
-distclean: clean
-	rm -f $(NAME).{pdf,sty} README
-inst: all
-	mkdir -p $(UTREE)/{tex,source,doc}/generic/$(NAME)
-	cp $(NAME).dtx $(UTREE)/source/generic/$(NAME)
-	cp Makefile $(UTREE)/source/generic/$(NAME)
-	cp $(NAME).sty $(UTREE)/tex/generic/$(NAME)
-	cp $(NAME).pdf $(UTREE)/doc/generic/$(NAME)
-install: all
-	sudo mkdir -p $(LOCAL)/{tex,source,doc}/generic/$(NAME)
-	sudo cp $(NAME).dtx $(LOCAL)/source/generic/$(NAME)
-	sudo cp Makefile $(LOCAL)/source/generic/$(NAME)
-	sudo cp $(NAME).sty $(LOCAL)/tex/generic/$(NAME)
-	sudo cp $(NAME).pdf $(LOCAL)/doc/generic/$(NAME)
-zip: all
-	ln -sf . $(NAME)
-	zip -Drq $(PWD)/$(NAME)-$(VERS).zip $(NAME)/{README,Makefile,$(NAME).{pdf,dtx}}
-	rm $(NAME)

Modified: trunk/Master/texmf-dist/doc/generic/schemata/README
===================================================================
--- trunk/Master/texmf-dist/doc/generic/schemata/README	2020-03-14 20:42:00 UTC (rev 54295)
+++ trunk/Master/texmf-dist/doc/generic/schemata/README	2020-03-14 20:44:40 UTC (rev 54296)
@@ -1,8 +1,8 @@
-|
+
 --------:| ----------------------------------------------------------------
 schemata:| Generic package to aid construction of topical categories
   Author:| Charles P. Schaum
-  E-mail:| charles dot schaum at comcast dot net
+  E-mail:| charles dot schaum at comcast.net
  License:| Released under the LaTeX Project Public License v1.3c or later
      See:| http://www.latex-project.org/lppl.txt
 
@@ -9,24 +9,27 @@
 Short description:
 The schemata package helps the creation of topical outlines that illustrate the breakdown of concepts and categories in academic texts from the late medieval to early modern periods.
 
-Files  Distribution
+Files     Distribution
 
-README       This file
-schemata.pdf Documentation
+README        This file
+schemata.pdf  Documentation
+schematest.tex  Test file for Plain TeX or Eplain
+schemata.png  Image file used for the manual
 
-Makefile     Automates building with GNU make 3.81
-schemata.dtx Documented LaTeX file containing both code and documentation
+Makefile      Automates building with GNU make 3.81
+schemata.dtx  Documented LaTeX file containing both code and documentation
 
 Installation
 
-Unpack schemata-XX.zip in an appropriate directory.
+Download the package from
 
-Note that the instructions below assume that you are using a *nix-
-compatible computer. If that is otherwise, you will need to modify
-these instructions to your needs.
+https://www.ctan.org/tex-archive/macros/generic/schemata
 
-If you have a make utility compatible with GNU make you can type
+Unpack schemata.zip in an appropriate directory.
 
+If you have a make utility compatible with GNU make, either in
+GNU/Linux, a BSD variant, OSX, or Cygwin in Windows you can type
+
 make inst
 
 to install the package into your $TEXMFHOME tree or
@@ -34,43 +37,78 @@
 make install
 
 to install the package into your $TEXMFLOCAL tree for all users.
+The latter requires sudo privileges.
 
-Manually, you can generate the package files. First you generate the
-installer driver, README, and style files, with a preliminary PDF:
+Other useful targets include:
 
+(release process)
+
+make release The default target, same as just ``make''.
+
+make clean Removes all intermediate files. Left are
+the files listed above plus schemata.sty.
+
+make distclean Leave only schemata.dtx, schematest.tex,
+schemata.png, and Makefile.
+
+make zip Generate a zip file ready for distribution.
+
+(testing process)
+
+make testing Release files, plus compiles schematest.tex.
+
+It is not necessary, however, to use GNU make. One can generate
+the package files manually. Since the files schemata.ins and README.txt
+are contained in the .dtx file itself, the first step is to generate
+the installer driver schemata.ins, plus the file README.txt, which will
+also trigger the extraction of schemata.sty and produce the first pass of
+the package documentation schemata.pdf:
+
 pdflatex -shell-escape -recorder -interaction=batchmode schemata.dtx
 
-Next you generate the PDF with a table of contents and all cross-references
-validated, so that the index entries will not move:
+Next one adds a table of contents and all cross-references, this also
+should finalize page numbers for glossary and index input files:
 
 pdflatex --recorder --interaction=nonstopmode schemata.dtx
 
-The next commands generate the glossary/index and final pdf file
+The next commands generate the glossary/index output files:
 
 makeindex -q -s gglo.ist -o schemata.gls schemata.glo
 makeindex -q -s gind.ist -o schemata.ind schemata.idx
+
+The final two commands integrate the glossary (changes) and index:
+
 pdflatex --recorder --interaction=nonstopmode schemata.dtx
 pdflatex --recorder --interaction=nonstopmode schemata.dtx
 
-Normally you create the following manual installation directories for user:
+Now one can either keep README.txt or rename it to README, e.g.:
 
-$TEXMFHOME/source/generic/schemata dtx file
-$TEXMFHOME/tex/generic/schemata sty file
-$TEXMFHOME/doc/generic/schemata pdf file
+mv README.txt README
 
-and you create the following manual installation directories for local site:
+Normally one creates the following directories for a user:
 
-$TEXMFLOCAL/source/generic/schemata dtx file
-$TEXMFLOCAL/tex/generic/schemata sty file
-$TEXMFLOCAL/doc/generic/schemata pdf file
+$TEXMFHOME/source/generic/schemata dtx file, schemata.png
+$TEXMFHOME/doc/generic/schemata pdf file, README, schematest.tex,
 
+and creates the following directories for the local site:
+
+$TEXMFLOCAL/source/generic/schemata dtx file, schemata.png
+$TEXMFLOCAL/doc/generic/schemata pdf file, README, schematest.tex,
+
 The above environment variables often are /usr/local/texlive/texmf-local for
 $TEXMFLOCAL and ~/texmf for $TEXMFHOME.
 
-Run mktexlsr with the appropriate level of permissions to complete the install.
+The make process normally renames the README.txt file created from the
+dtx file to just README by using mv (move / rename utility in the *nix
+userland). Windows distributions of TeX and LaTeX often keep the txt file
+because of using file extensions instead of ``magic numbers'' to identify
+files.
 
-This packages works with LaTeX and plain TeX.
+Run mktexlsr with the appropriate level of permissions to complete the
+install.
 
+This packages works with LaTeX and Plain TeX.
+
 License
 
 This material is subject to the LaTeX Project Public License:
@@ -77,3 +115,265 @@
 http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html
 
 Happy TeXing!
+\ifx\fmtname\schemataLaTeX\else
+  \catcode`@=11\relax
+\fi
+\newbox\@schemata at rhs
+\newbox\@schemata at lhs
+\newdimen\@schemata at rheight
+\newdimen\@schemata at lheight
+\newif\if at schemata@LCBox
+\newif\if at schemata@SWBox
+\newif\if at schemata@NudgeBox
+\ifx\fmtname\schemataLaTeX
+  \DeclareOption{braces}%
+    {\let\@schemata at LD\lbrace \let\@schemata at RD\rbrace}
+  \DeclareOption{brackets}%
+    {\let\@schemata at LD\lbrack \let\@schemata at RD\rbrack}
+  \DeclareOption{parens}%
+    {\let\@schemata at LD( \let\@schemata at RD)}
+  \DeclareOption{groups}%
+    {\let\@schemata at LD\lgroup \let\@schemata at RD\rgroup}
+  \ExecuteOptions{braces}
+  \ProcessOptions\relax
+\else
+  \let\@schemata at LD\lbrace%
+  \let\@schemata at RD\rbrace%
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\DoBraces}%
+    {\let\@schemata at LD\lbrace \let\@schemata at RD\rbrace}
+\else
+  \def\DoBraces%
+    {\let\@schemata at LD\lbrace \let\@schemata at RD\rbrace}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\DoBrackets}%
+    {\let\@schemata at LD\lbrack \let\@schemata at RD\rbrack}
+\else
+  \def\DoBrackets%
+    {\let\@schemata at LD\lbrack \let\@schemata at RD\rbrack}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\DoParens}%
+    {\let\@schemata at LD( \let\@schemata at RD)}
+\else
+  \def\DoParens%
+    {\let\@schemata at LD( \let\@schemata at RD)}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\DoGroups}%
+    {\let\@schemata at LD\lgroup \let\@schemata at RD\rgroup}
+\else
+  \def\DoGroups%
+    {\let\@schemata at LD\lgroup \let\@schemata at RD\rgroup}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\LCschema}{\@schemata at LCBoxtrue}
+\else
+  \def\LCschema{\@schemata at LCBoxtrue}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\UCschema}{\@schemata at LCBoxfalse}
+\else
+  \def\UCschema{\@schemata at LCBoxfalse}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\SwitchSB}{\@schemata at SWBoxtrue}%
+\else
+  \def\SwitchSB{\@schemata at SWBoxtrue}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\NudgeSB}{\@schemata at NudgeBoxtrue}
+\else
+  \def\NudgeSB{\@schemata at NudgeBoxtrue}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand{\SBNudgeFactor}{\kern0.2em}
+\else
+  \def\SBNudgeFactor{\kern0.2em}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\schemabox}[2][0pt]{\@schemata at schemabox[#1]{#2}}
+\else
+  \def\schemabox{\futurelet\testchar\@schemata at schemab@x}
+  \def\@schemata at schemab@x{%
+    \ifx[\testchar
+      \let\next\@schemata at schemabox%
+    \else
+      \let\next\@schemata@@schemab at x%
+    \fi
+    \next%
+  }%
+  \def\@schemata@@schemab at x#1{\@schemata at schemabox[0pt]{#1}}
+\fi
+\def\@schemata at schemabox[#1]#2{%
+  \ifinner
+    \if at schemata@LCBox
+      \def\@Adj{}%
+      \if at schemata@SWBox\def\@Adj{\strut}\fi
+    \else
+      \def\@Adj{\strut}%
+      \if at schemata@SWBox\def\@Adj{}\fi
+    \fi
+    \if at schemata@NudgeBox
+      \let\@Nudge\SBNudgeFactor%
+    \else
+      \def\@Nudge{}%
+    \fi
+    \ifdim#1<1pt
+      \def\\{\@Nudge\egroup\hbox\bgroup\ignorespaces }%
+      \vbox{\hbox\bgroup\@Adj\ignorespaces #2\@Nudge\egroup}%
+    \else
+      \def\\{\hfil\egroup\hbox to #1\bgroup\ignorespaces }%
+      \vbox{\hbox to #1\bgroup\@Adj\ignorespaces #2\hfil\egroup}%
+    \fi
+  \else
+    #2%
+  \fi
+  \@schemata at SWBoxfalse%
+  \@schemata at NudgeBoxfalse%
+}
+\ifx\fmtname\schemataLaTeX
+  \newcommand{\schema}[3][open]{%
+    \@schemata at schema[#1]{#2}{#3}}
+\else
+  \long\def\schema{\futurelet\testchar\@schemata at schem@}
+  \long\def\@schemata at schem@{%
+    \ifx[\testchar
+      \let\next\@schemata at schema%
+    \else
+      \let\next\@schemata@@schem@%
+    \fi
+    \next%
+  }%
+  \long\def\@schemata@@schem@#1#2{%
+    \@schemata at schema[open]{#1}{#2}}
+\fi
+\long\def\@schemata at schema[#1]#2#3{%
+  \def\@ption{#1}\def\@pen{open}%
+  \ifx\@ption\@pen
+    \setbox\@schemata at rhs=\vbox{#3}%
+    \@schemata at rheight=\ht\@schemata at rhs%
+    \advance\@schemata at rheight\dp\@schemata at rhs%
+    \advance\@schemata at rheight by 1.44265ex%
+    \hbox{$\vcenter{#2}%
+      \@schemata at lbrace{\@schemata at rheight}%
+      \vcenter{#3}$}%
+  \else
+    \setbox\@schemata at lhs=\vbox{#2}%
+    \@schemata at lheight=\ht\@schemata at lhs%
+    \advance\@schemata at lheight\dp\@schemata at lhs%
+    \advance\@schemata at lheight by 1.44265ex%
+    \hbox{$\vcenter{#2}%
+      \kern-0.2em\@schemata at rbrace{\@schemata at lheight}%
+      \vcenter{#3}$}%
+  \fi
+}
+\ifx\fmtname\schemataLaTeX
+  \newcommand{\Schema}[5][open]{%
+    \@schemata at Schema[#1]{#2}{#3}{#4}{#5}}
+\else
+  \long\def\Schema{\futurelet\testchar\@schemata at Schem@}
+  \long\def\@schemata at Schem@{%
+    \ifx[\testchar
+      \let\next\@schemata at Schema%
+    \else
+      \let\next\@schemata@@Schem@%
+    \fi
+    \next%
+  }%
+  \long\def\@schemata@@Schem@#1#2#3#4{%
+    \@schemata at Schema[open]{#1}{#2}{#3}{#4}}
+\fi
+\long\def\@schemata at Schema[#1]#2#3#4#5{%
+  \def\@ption{#1}%
+  \def\@pen{open}%
+  \dimen0=#2%
+  \ifx\@ption\@pen
+    \hbox{$\vcenter{\vskip1.44265\dimen0#4}%
+      \@schemata at biglbrace{#2}{#3}\vcenter{#5}$}%
+  \else
+    \hbox{$\vcenter{\vskip1.44265\dimen0#4}\kern-0.2em%
+      \@schemata at bigrbrace{#2}{#3}\vcenter{#5}$}%
+  \fi
+}
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\@schemata at lbrace}[1]{%
+    \ifmmode
+      \left.\vcenter{\vbox to #1{\vfil}}\right\@schemata at LD%
+    \fi
+  }
+\else
+  \def\@schemata at lbrace#1{%
+    \ifmmode
+      \left.\vcenter{\vbox to #1{\vfil}}\right\@schemata at LD%
+    \fi
+  }
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\@schemata at rbrace}[1]{%
+    \ifmmode
+      \left\@schemata at RD\vcenter{\vbox to #1{\vfil}}\right.%
+    \fi
+  }
+\else
+  \def\@schemata at rbrace#1{%
+    \ifmmode
+      \left\@schemata at RD\vcenter{\vbox to #1{\vfil}}\right.%
+    \fi
+  }
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\@schemata at biglbrace}[2]{%
+    \@schemata@@biglbrace{#1}{#2}}
+\else
+  \def\@schemata at biglbrace#1#2{%
+    \@schemata@@biglbrace{#1}{#2}}
+\fi
+\def\@schemata@@biglbrace#1#2{%
+  \dimen0=#1%
+  \dimen2=#2%
+  \dimen4=-\dimen2%
+  \ifdim\dimen4>\dimen2\dimen2=\dimen4\fi
+  \ifdim\dimen0<0pt
+    \ifmmode\vcenter{\hbox{$\left.%
+      \vbox to 1.44265\dimen2{\vfil}%
+      \right\@schemata at LD%
+      \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi
+  \else
+    \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}%
+      \atop\left.%
+      \vbox to 1.44265\dimen2{\vfil}%
+      \right\@schemata at LD$}}\fi
+  \fi
+}
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\@schemata at bigrbrace}[2]{%
+    \@schemata@@bigrbrace{#1}{#2}%
+  }
+\else
+  \def\@schemata at bigrbrace#1#2{%
+    \@schemata@@bigrbrace{#1}{#2}%
+  }
+\fi
+\def\@schemata@@bigrbrace#1#2{%
+  \dimen0=#1%
+  \dimen2=#2%
+  \dimen4=-\dimen2%
+  \ifdim\dimen4>\dimen2\dimen2=\dimen4\fi
+  \ifdim\dimen0<0pt
+    \ifmmode\vcenter{\hbox{$\left.%
+      \vbox to 1.44265\dimen2{\vfil}%
+      \right\@schemata at RD%
+      \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi
+  \else
+    \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}%
+      \atop\left.%
+      \vbox to 1.44265\dimen2{\vfil}%
+      \right\@schemata at RD$}}\fi
+  \fi
+}
+\ifx\fmtname\schemataLaTeX\else
+  \catcode`@=12\relax
+\fi

Modified: trunk/Master/texmf-dist/doc/generic/schemata/README.txt
===================================================================
--- trunk/Master/texmf-dist/doc/generic/schemata/README.txt	2020-03-14 20:42:00 UTC (rev 54295)
+++ trunk/Master/texmf-dist/doc/generic/schemata/README.txt	2020-03-14 20:44:40 UTC (rev 54296)
@@ -1,8 +1,8 @@
-|
+
 --------:| ----------------------------------------------------------------
 schemata:| Generic package to aid construction of topical categories
   Author:| Charles P. Schaum
-  E-mail:| charles dot schaum at comcast dot net
+  E-mail:| charles dot schaum at comcast.net
  License:| Released under the LaTeX Project Public License v1.3c or later
      See:| http://www.latex-project.org/lppl.txt
 
@@ -9,24 +9,27 @@
 Short description:
 The schemata package helps the creation of topical outlines that illustrate the breakdown of concepts and categories in academic texts from the late medieval to early modern periods.
 
-Files  Distribution
+Files     Distribution
 
-README       This file
-schemata.pdf Documentation
+README        This file
+schemata.pdf  Documentation
+schematest.tex  Test file for Plain TeX or Eplain
+schemata.png  Image file used for the manual
 
-Makefile     Automates building with GNU make 3.81
-schemata.dtx Documented LaTeX file containing both code and documentation
+Makefile      Automates building with GNU make 3.81
+schemata.dtx  Documented LaTeX file containing both code and documentation
 
 Installation
 
-Unpack schemata-XX.zip in an appropriate directory.
+Download the package from
 
-Note that the instructions below assume that you are using a *nix-
-compatible computer. If that is otherwise, you will need to modify
-these instructions to your needs.
+https://www.ctan.org/tex-archive/macros/generic/schemata
 
-If you have a make utility compatible with GNU make you can type
+Unpack schemata.zip in an appropriate directory.
 
+If you have a make utility compatible with GNU make, either in
+GNU/Linux, a BSD variant, OSX, or Cygwin in Windows you can type
+
 make inst
 
 to install the package into your $TEXMFHOME tree or
@@ -34,43 +37,78 @@
 make install
 
 to install the package into your $TEXMFLOCAL tree for all users.
+The latter requires sudo privileges.
 
-Manually, you can generate the package files. First you generate the
-installer driver, README, and style files, with a preliminary PDF:
+Other useful targets include:
 
+(release process)
+
+make release The default target, same as just ``make''.
+
+make clean Removes all intermediate files. Left are
+the files listed above plus schemata.sty.
+
+make distclean Leave only schemata.dtx, schematest.tex,
+schemata.png, and Makefile.
+
+make zip Generate a zip file ready for distribution.
+
+(testing process)
+
+make testing Release files, plus compiles schematest.tex.
+
+It is not necessary, however, to use GNU make. One can generate
+the package files manually. Since the files schemata.ins and README.txt
+are contained in the .dtx file itself, the first step is to generate
+the installer driver schemata.ins, plus the file README.txt, which will
+also trigger the extraction of schemata.sty and produce the first pass of
+the package documentation schemata.pdf:
+
 pdflatex -shell-escape -recorder -interaction=batchmode schemata.dtx
 
-Next you generate the PDF with a table of contents and all cross-references
-validated, so that the index entries will not move:
+Next one adds a table of contents and all cross-references, this also
+should finalize page numbers for glossary and index input files:
 
 pdflatex --recorder --interaction=nonstopmode schemata.dtx
 
-The next commands generate the glossary/index and final pdf file
+The next commands generate the glossary/index output files:
 
 makeindex -q -s gglo.ist -o schemata.gls schemata.glo
 makeindex -q -s gind.ist -o schemata.ind schemata.idx
+
+The final two commands integrate the glossary (changes) and index:
+
 pdflatex --recorder --interaction=nonstopmode schemata.dtx
 pdflatex --recorder --interaction=nonstopmode schemata.dtx
 
-Normally you create the following manual installation directories for user:
+Now one can either keep README.txt or rename it to README, e.g.:
 
-$TEXMFHOME/source/generic/schemata dtx file
-$TEXMFHOME/tex/generic/schemata sty file
-$TEXMFHOME/doc/generic/schemata pdf file
+mv README.txt README
 
-and you create the following manual installation directories for local site:
+Normally one creates the following directories for a user:
 
-$TEXMFLOCAL/source/generic/schemata dtx file
-$TEXMFLOCAL/tex/generic/schemata sty file
-$TEXMFLOCAL/doc/generic/schemata pdf file
+$TEXMFHOME/source/generic/schemata dtx file, schemata.png
+$TEXMFHOME/doc/generic/schemata pdf file, README, schematest.tex,
 
+and creates the following directories for the local site:
+
+$TEXMFLOCAL/source/generic/schemata dtx file, schemata.png
+$TEXMFLOCAL/doc/generic/schemata pdf file, README, schematest.tex,
+
 The above environment variables often are /usr/local/texlive/texmf-local for
 $TEXMFLOCAL and ~/texmf for $TEXMFHOME.
 
-Run mktexlsr with the appropriate level of permissions to complete the install.
+The make process normally renames the README.txt file created from the
+dtx file to just README by using mv (move / rename utility in the *nix
+userland). Windows distributions of TeX and LaTeX often keep the txt file
+because of using file extensions instead of ``magic numbers'' to identify
+files.
 
-This packages works with LaTeX and plain TeX.
+Run mktexlsr with the appropriate level of permissions to complete the
+install.
 
+This packages works with LaTeX and Plain TeX.
+
 License
 
 This material is subject to the LaTeX Project Public License:
@@ -77,3 +115,265 @@
 http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html
 
 Happy TeXing!
+\ifx\fmtname\schemataLaTeX\else
+  \catcode`@=11\relax
+\fi
+\newbox\@schemata at rhs
+\newbox\@schemata at lhs
+\newdimen\@schemata at rheight
+\newdimen\@schemata at lheight
+\newif\if at schemata@LCBox
+\newif\if at schemata@SWBox
+\newif\if at schemata@NudgeBox
+\ifx\fmtname\schemataLaTeX
+  \DeclareOption{braces}%
+    {\let\@schemata at LD\lbrace \let\@schemata at RD\rbrace}
+  \DeclareOption{brackets}%
+    {\let\@schemata at LD\lbrack \let\@schemata at RD\rbrack}
+  \DeclareOption{parens}%
+    {\let\@schemata at LD( \let\@schemata at RD)}
+  \DeclareOption{groups}%
+    {\let\@schemata at LD\lgroup \let\@schemata at RD\rgroup}
+  \ExecuteOptions{braces}
+  \ProcessOptions\relax
+\else
+  \let\@schemata at LD\lbrace%
+  \let\@schemata at RD\rbrace%
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\DoBraces}%
+    {\let\@schemata at LD\lbrace \let\@schemata at RD\rbrace}
+\else
+  \def\DoBraces%
+    {\let\@schemata at LD\lbrace \let\@schemata at RD\rbrace}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\DoBrackets}%
+    {\let\@schemata at LD\lbrack \let\@schemata at RD\rbrack}
+\else
+  \def\DoBrackets%
+    {\let\@schemata at LD\lbrack \let\@schemata at RD\rbrack}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\DoParens}%
+    {\let\@schemata at LD( \let\@schemata at RD)}
+\else
+  \def\DoParens%
+    {\let\@schemata at LD( \let\@schemata at RD)}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\DoGroups}%
+    {\let\@schemata at LD\lgroup \let\@schemata at RD\rgroup}
+\else
+  \def\DoGroups%
+    {\let\@schemata at LD\lgroup \let\@schemata at RD\rgroup}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\LCschema}{\@schemata at LCBoxtrue}
+\else
+  \def\LCschema{\@schemata at LCBoxtrue}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\UCschema}{\@schemata at LCBoxfalse}
+\else
+  \def\UCschema{\@schemata at LCBoxfalse}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\SwitchSB}{\@schemata at SWBoxtrue}%
+\else
+  \def\SwitchSB{\@schemata at SWBoxtrue}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\NudgeSB}{\@schemata at NudgeBoxtrue}
+\else
+  \def\NudgeSB{\@schemata at NudgeBoxtrue}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand{\SBNudgeFactor}{\kern0.2em}
+\else
+  \def\SBNudgeFactor{\kern0.2em}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\schemabox}[2][0pt]{\@schemata at schemabox[#1]{#2}}
+\else
+  \def\schemabox{\futurelet\testchar\@schemata at schemab@x}
+  \def\@schemata at schemab@x{%
+    \ifx[\testchar
+      \let\next\@schemata at schemabox%
+    \else
+      \let\next\@schemata@@schemab at x%
+    \fi
+    \next%
+  }%
+  \def\@schemata@@schemab at x#1{\@schemata at schemabox[0pt]{#1}}
+\fi
+\def\@schemata at schemabox[#1]#2{%
+  \ifinner
+    \if at schemata@LCBox
+      \def\@Adj{}%
+      \if at schemata@SWBox\def\@Adj{\strut}\fi
+    \else
+      \def\@Adj{\strut}%
+      \if at schemata@SWBox\def\@Adj{}\fi
+    \fi
+    \if at schemata@NudgeBox
+      \let\@Nudge\SBNudgeFactor%
+    \else
+      \def\@Nudge{}%
+    \fi
+    \ifdim#1<1pt
+      \def\\{\@Nudge\egroup\hbox\bgroup\ignorespaces }%
+      \vbox{\hbox\bgroup\@Adj\ignorespaces #2\@Nudge\egroup}%
+    \else
+      \def\\{\hfil\egroup\hbox to #1\bgroup\ignorespaces }%
+      \vbox{\hbox to #1\bgroup\@Adj\ignorespaces #2\hfil\egroup}%
+    \fi
+  \else
+    #2%
+  \fi
+  \@schemata at SWBoxfalse%
+  \@schemata at NudgeBoxfalse%
+}
+\ifx\fmtname\schemataLaTeX
+  \newcommand{\schema}[3][open]{%
+    \@schemata at schema[#1]{#2}{#3}}
+\else
+  \long\def\schema{\futurelet\testchar\@schemata at schem@}
+  \long\def\@schemata at schem@{%
+    \ifx[\testchar
+      \let\next\@schemata at schema%
+    \else
+      \let\next\@schemata@@schem@%
+    \fi
+    \next%
+  }%
+  \long\def\@schemata@@schem@#1#2{%
+    \@schemata at schema[open]{#1}{#2}}
+\fi
+\long\def\@schemata at schema[#1]#2#3{%
+  \def\@ption{#1}\def\@pen{open}%
+  \ifx\@ption\@pen
+    \setbox\@schemata at rhs=\vbox{#3}%
+    \@schemata at rheight=\ht\@schemata at rhs%
+    \advance\@schemata at rheight\dp\@schemata at rhs%
+    \advance\@schemata at rheight by 1.44265ex%
+    \hbox{$\vcenter{#2}%
+      \@schemata at lbrace{\@schemata at rheight}%
+      \vcenter{#3}$}%
+  \else
+    \setbox\@schemata at lhs=\vbox{#2}%
+    \@schemata at lheight=\ht\@schemata at lhs%
+    \advance\@schemata at lheight\dp\@schemata at lhs%
+    \advance\@schemata at lheight by 1.44265ex%
+    \hbox{$\vcenter{#2}%
+      \kern-0.2em\@schemata at rbrace{\@schemata at lheight}%
+      \vcenter{#3}$}%
+  \fi
+}
+\ifx\fmtname\schemataLaTeX
+  \newcommand{\Schema}[5][open]{%
+    \@schemata at Schema[#1]{#2}{#3}{#4}{#5}}
+\else
+  \long\def\Schema{\futurelet\testchar\@schemata at Schem@}
+  \long\def\@schemata at Schem@{%
+    \ifx[\testchar
+      \let\next\@schemata at Schema%
+    \else
+      \let\next\@schemata@@Schem@%
+    \fi
+    \next%
+  }%
+  \long\def\@schemata@@Schem@#1#2#3#4{%
+    \@schemata at Schema[open]{#1}{#2}{#3}{#4}}
+\fi
+\long\def\@schemata at Schema[#1]#2#3#4#5{%
+  \def\@ption{#1}%
+  \def\@pen{open}%
+  \dimen0=#2%
+  \ifx\@ption\@pen
+    \hbox{$\vcenter{\vskip1.44265\dimen0#4}%
+      \@schemata at biglbrace{#2}{#3}\vcenter{#5}$}%
+  \else
+    \hbox{$\vcenter{\vskip1.44265\dimen0#4}\kern-0.2em%
+      \@schemata at bigrbrace{#2}{#3}\vcenter{#5}$}%
+  \fi
+}
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\@schemata at lbrace}[1]{%
+    \ifmmode
+      \left.\vcenter{\vbox to #1{\vfil}}\right\@schemata at LD%
+    \fi
+  }
+\else
+  \def\@schemata at lbrace#1{%
+    \ifmmode
+      \left.\vcenter{\vbox to #1{\vfil}}\right\@schemata at LD%
+    \fi
+  }
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\@schemata at rbrace}[1]{%
+    \ifmmode
+      \left\@schemata at RD\vcenter{\vbox to #1{\vfil}}\right.%
+    \fi
+  }
+\else
+  \def\@schemata at rbrace#1{%
+    \ifmmode
+      \left\@schemata at RD\vcenter{\vbox to #1{\vfil}}\right.%
+    \fi
+  }
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\@schemata at biglbrace}[2]{%
+    \@schemata@@biglbrace{#1}{#2}}
+\else
+  \def\@schemata at biglbrace#1#2{%
+    \@schemata@@biglbrace{#1}{#2}}
+\fi
+\def\@schemata@@biglbrace#1#2{%
+  \dimen0=#1%
+  \dimen2=#2%
+  \dimen4=-\dimen2%
+  \ifdim\dimen4>\dimen2\dimen2=\dimen4\fi
+  \ifdim\dimen0<0pt
+    \ifmmode\vcenter{\hbox{$\left.%
+      \vbox to 1.44265\dimen2{\vfil}%
+      \right\@schemata at LD%
+      \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi
+  \else
+    \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}%
+      \atop\left.%
+      \vbox to 1.44265\dimen2{\vfil}%
+      \right\@schemata at LD$}}\fi
+  \fi
+}
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\@schemata at bigrbrace}[2]{%
+    \@schemata@@bigrbrace{#1}{#2}%
+  }
+\else
+  \def\@schemata at bigrbrace#1#2{%
+    \@schemata@@bigrbrace{#1}{#2}%
+  }
+\fi
+\def\@schemata@@bigrbrace#1#2{%
+  \dimen0=#1%
+  \dimen2=#2%
+  \dimen4=-\dimen2%
+  \ifdim\dimen4>\dimen2\dimen2=\dimen4\fi
+  \ifdim\dimen0<0pt
+    \ifmmode\vcenter{\hbox{$\left.%
+      \vbox to 1.44265\dimen2{\vfil}%
+      \right\@schemata at RD%
+      \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi
+  \else
+    \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}%
+      \atop\left.%
+      \vbox to 1.44265\dimen2{\vfil}%
+      \right\@schemata at RD$}}\fi
+  \fi
+}
+\ifx\fmtname\schemataLaTeX\else
+  \catcode`@=12\relax
+\fi

Deleted: trunk/Master/texmf-dist/doc/generic/schemata/schemata.hd
===================================================================
Modified: trunk/Master/texmf-dist/doc/generic/schemata/schemata.pdf
===================================================================
(Binary files differ)

Added: trunk/Master/texmf-dist/doc/generic/schemata/schemata.png
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/generic/schemata/schemata.png
===================================================================
--- trunk/Master/texmf-dist/doc/generic/schemata/schemata.png	2020-03-14 20:42:00 UTC (rev 54295)
+++ trunk/Master/texmf-dist/doc/generic/schemata/schemata.png	2020-03-14 20:44:40 UTC (rev 54296)

Property changes on: trunk/Master/texmf-dist/doc/generic/schemata/schemata.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/generic/schemata/schematest.tex
===================================================================
--- trunk/Master/texmf-dist/doc/generic/schemata/schematest.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/generic/schemata/schematest.tex	2020-03-14 20:44:40 UTC (rev 54296)
@@ -0,0 +1,530 @@
+%--------:| ----------------------------------------------------------------
+%schemata:| Generic package to aid construction of topical categories
+%  Author:| Charles P. Schaum
+%  E-mail:| charles dot schaum at comcast.net
+% License:| Released under the LaTeX Project Public License 1.3c or later
+%     See:| http://www.latex-project.org/lppl.txt
+%
+% This is an example file used with the schemata package.
+% See README and schemata.pdf for copyright info.
+%---------------------------------------------------------------------------
+\def\nameofplain{plain}
+\def\nameofeplain{eplain}
+\def\nameoflatex{LaTeX2e}
+\def\nameoflollipop{Lollipop}
+%
+% To use Plain TeX, do something like the following, substituting
+% tex, xetex, luatex, etc.:
+% 
+%      pdftex schematest
+%
+% To use Eplain, do something like the following:
+% 
+%      touch test.tex
+%      pdftex test <<< "\\input eplain \\input schematest"
+%
+% To use lollipop, do something like the following:
+% 
+%      lollipop schematest
+%
+% To use LaTeX, do something like the following, substituting
+% latex, xelatex, lualatex, etc.:
+% 
+%      pdflatex schematest
+%
+\ifx\fmtname\nameoflatex
+  \documentclass[10pt]{article}
+  %\usepackage[utf8]{inputenc} %Not needed for newer versions
+  \usepackage[T1]{fontenc}
+  \usepackage[polutonikogreek,american]{babel}
+  \newcommand{\gk}[1]{\foreignlanguage{polutonikogreek}{#1}}
+  \usepackage{schemata}
+  \begin{document}
+\else
+  \ifx\fmtname\nameoflollipop
+    \input schemata.sty
+    \font\scshape=cmcsc10
+    \def\textsc#1{\bgroup\scshape #1\egroup}
+    \def\gk#1{\bgroup\it #1\egroup}
+    \Start
+  \else
+    \input schemata.sty
+    \font\scshape=cmcsc10
+    \def\textsc#1{\bgroup\scshape #1\egroup}
+    \def\gk#1{\bgroup\it #1\egroup}
+  \fi
+\fi
+$$
+\Schema{-1ex}{8.7ex}
+{
+  \schemabox{Subjectum theo-\\
+  logi\ae{} est Notitia\\
+  Dei. Considerat\\
+  ergo, Dei, vel}
+}
+{
+\schema
+  {
+    \schemabox{\textsc{Essentiam},}
+  }
+  {
+    \schemabox{Unitate natur\ae{}.\\
+    Trinitate personarum.\\
+    Operibus ad intra.}
+  }\smallskip
+  \schema
+  {
+    \schemabox{\textsc{Voluntatem},\\
+    manifestatam in\\
+    operibus ad extra;\\
+    ut in}
+  }
+  {
+    \schemabox{Creatione.\\
+    Sustentatione natur\ae{} %
+    laps\ae{}.\\
+    Reparatione.\\
+    Conversione.\\
+    Justificatione.\\
+    Sanctificatione \&\\
+    Glorificatione ejusdem.}
+  }
+}
+$$
+
+$$
+\Schema{-25ex}{20.6ex}
+{
+  \schemabox{Subjectum \&\\
+  summa univer-\\
+  s\ae{} Scriptur\ae{},\\
+  est \textsc{Cognitio}\\
+  vel}
+}
+{
+  \Schema{-6.4ex}{8.5ex}
+  {
+    \schemabox{\textsc{Dei}, qua-\\lis sit, aut}
+  }
+  {
+    \schema
+    {\schemabox{\textsc{Per se}:\\ scilicet.}}
+    {
+      \schemabox{Unus in essentia.}\smallskip
+      \schemabox{Trinus in personis.}
+    }\smallskip
+    \schema
+    {\schemabox{Ad hominem\\ quem vel}}
+    {
+      \schemabox{Accusat \& terret, \textsc{Per Legem},\\
+      Consolatur \& erigit, \textsc{Per Evangelium}.\\
+      Salvat, \textsc{Per Christum}.\\
+      Renovat, \textsc{Per Spiritum Sanctum}.\\
+      Sanctificat, \textsc{Per Verbum} \& \textsc{Sacramenta}.\\
+      Castigat, tentat \& exercet, \textsc{Per Crucem}.\\
+      Glorificat \textsc{Per Resurrectionem Carnis}\\
+      \textsc{\quad Ad Vitam \AE{}ternam}.}
+    }\medskip
+  }
+  \Schema{-13.4ex}{17.4ex}
+  {
+    \schemabox{\textsc{Hominis},\\ qualis sit}
+  }
+  {
+    \Schema{-4.4ex}{5ex}
+    {\schemabox{\textsc{Per se}:}}
+    {
+      \schemabox{Ante lapsum.}\smallskip
+      \schema
+      {\schemabox{Post lapsum:}}
+      {
+        \schemabox{Ante Regenerationem \&\\
+        Renovationem S. Sancti.}\medskip
+        \schemabox{Post Regenerationem \&\\
+        Renovationem S. Sancti.}\smallskip
+      }\smallskip
+    }
+    \Schema{4.2ex}{14.4ex}
+    {\schemabox{Ad}}
+    {
+      \schema
+      {\schemabox{\textsc{Deum},}}
+      {
+        \schemabox{P\oe{}nitentia agens, agnitis peccatis \&\\
+        ira Dei cognita \textsc{Ex Lege}.\\
+        Erigens se \textsc{Voce Evangelii}.\\
+        Credens \textsc{In Christum Salvatorem}.\\
+        Non repugnans \textsc{Spiritui Sancto} impellenti.\\
+        Audiens \textsc{Verbum}: \& utens \textsc{Sacramentis}.\\
+        Patienter \& constanter sufferens \textsc{Crucem}.\\
+        Sperans \& expectans glorificationem\\
+        \textsc{\quad In Resurrectione Carnis}\\
+        \textsc{\quad Ad Vitam \AE{}ternam}.}
+      }\smallskip
+      \schema
+        {\schemabox{seipsum ratione}}
+        {\schemabox{Anim\ae{}\\ vel\\ Corporis}}\smallskip
+      \Schema{2ex}{5.1ex}
+      {\schemabox{Proximum,}}
+      {
+        \schema
+        {\schemabox{Amicum ra-\\ tione vel}}
+        {
+          \schemabox{Religionis.\\
+          Politic\ae{} \& \OE{}conomic\ae{}.\\
+          Cognationis.\\
+          Agnationis.}
+        }\smallskip
+        \schemabox{Inimicum.}
+      }
+    }
+  }
+}
+$$
+
+\eject
+
+\bgroup
+
+\ifx\fmtname\nameofeplain
+\verbatim \DoParens |endverbatim
+\fi
+\DoParens%
+\vfil
+$$
+\Schema{-26ex}{21.5ex}
+{
+  \schemabox{Sacr\ae{}\\ litter\ae{}\\ loquuntur,\\ de}
+}
+{
+  \schema
+  {
+    \schemabox{\textsc{Deo}}
+  }
+  {
+    \schemabox{Uno, in Trinitate.}\smallskip\schemabox{Trino, in unitate.}
+  }
+  \Schema{-16.5ex}{23.4ex}
+  {
+    \vskip30ex
+    \schemabox{\textsc{Dei}\\ \textsc{Operibus}}
+  }
+  {
+    \schema
+    {
+      \schemabox{\textsc{Intra},\\ qu\ae{} sunt\\ divisa, ut}
+    }
+    {
+      \schemabox{\textsc{Patris}, ab \ae{}terno gignere.\\ \textsc{Filii}, ab \ae{}terno genitum esse.\\ \textsc{Spiritus Sancti}, ab utroque\\ ab \ae{}terno procedete.}
+    }
+    \medskip
+    \Schema{-2ex}{21ex}
+    {
+      \schemabox{\textsc{Extra},\\ qu\ae{} sunt\\ indivisa;\\ tervata\\ tamen\\ cujusque\\ person\ae{}\\ divinitatis\\ sua pro-\\prietate}
+    }
+    {
+      \Schema{-0.8ex}{6.4ex}
+      {
+        \schemabox{Creatione\\ natur\ae{}}
+      }
+      {
+        \schema
+        {
+          \schemabox{Brute ut}
+        }
+        {
+          \schemabox{C\oe{}li} \smallskip \schemabox{Elementorum} \smallskip \schemabox{Mundi}
+        }
+        \smallskip
+        \schema
+        {
+          \schemabox{\ifx\fmtname\nameoflatex\gk{logik~hs}\else\gk{logik\=es}\fi, ut}
+        }
+        {
+          \schemabox{Angelorum.} \smallskip \schemabox{Hominum: Ad\ae{},\\ Ev\ae{} \& procreatorum\\ exipsis.}
+        }
+      }
+      \schema
+      {
+        \schemabox{Sustenatione\\ natur\ae{} laps\ae{},}
+      }
+      {
+        \schemabox{Angelorum malorum,} \smallskip \schemabox{Hominum: Ad\ae{}, Ev\ae{}\\ \& procreatorum exipsis.}
+      }
+      \Schema{2.6ex}{8.8ex}
+      {
+        \schemabox{Beneficiis\\ erga Ecc-\\ lesiam: ea\\ versantur\\ aut circa}
+      }
+      {
+        \Schema{2.2ex}{7ex}
+        {
+          \schemabox{Res, ut}
+        }
+        {
+          \schema
+          {
+            \schemabox{Verbum}
+          }
+          {
+            \schemabox{Legis} \smallskip \schemabox{Evangelii} \smallskip \schemabox{Sacramentorum}
+          }
+          \smallskip
+          \schema
+          {
+            \schemabox{Signa vel Veteris\\ vel Novi Testa-\\ mentum ut sunt:}
+          }
+          {
+            \schemabox{Ceremoni\ae{}} \smallskip \schemabox{Miracula}
+          }
+        }
+        \smallskip
+        \Schema{1ex}{5ex}
+        {
+          \schemabox{Personas}
+        }
+        {
+          \schema
+          {
+            \schemabox{Ecclesi\ae{}}
+          }
+          {
+            \schemabox{Universalis} \smallskip \schemabox{Particularis}
+          }
+          \smallskip
+          \schemabox{Politi\ae{} ut Magistratuum}
+          \smallskip
+          \schemabox{\OE{}conomi\ae{} ut privatorum}
+        }
+      }\vskip2ex
+    }
+  }
+}
+$$
+\vfil
+
+\eject
+
+\ifx\fmtname\nameofeplain
+\verbatim \DoGroups |endverbatim
+\fi
+\DoGroups
+
+\vfil
+$$
+\Schema{-26.5ex}{21ex}
+{
+  \schemabox{Sacr\ae{}\\ litter\ae{}\\ loquuntur,\\ de}
+}
+{
+  \schema
+  {
+    \schemabox{\textsc{Deo}}
+  }
+  {
+    \schemabox{Uno, in Trinitate.}\smallskip\schemabox{Trino, in unitate.}
+  }
+  \Schema{-17ex}{23.4ex}
+  {
+    \vskip30ex
+    \schemabox{\textsc{Dei}\\ \textsc{Operibus}}
+  }
+  {
+    \schema
+    {
+      \schemabox{\textsc{Intra},\\ qu\ae{} sunt\\ divisa, ut}
+    }
+    {
+      \schemabox{\textsc{Patris}, ab \ae{}terno gignere.\\ \textsc{Filii}, ab \ae{}terno genitum esse.\\ \textsc{Spiritus Sancti}, ab utroque\\ ab \ae{}terno procedete.\strut}
+    }
+    \medskip
+    \Schema{-2ex}{21ex}
+    {
+      \schemabox{\textsc{Extra},\\ qu\ae{} sunt\\ indivisa;\\ tervata\\ tamen\\ cujusque\\ person\ae{}\\ divinitatis\\ sua pro-\\prietate}
+    }
+    {
+      \Schema{-0.8ex}{6.4ex}
+      {
+        \schemabox{Creatione\\ natur\ae{}}
+      }
+      {
+        \schema
+        {
+          \schemabox{Brute ut}
+        }
+        {
+          \schemabox{C\oe{}li} \smallskip \schemabox{Elementorum} \smallskip \schemabox{Mundi}
+        }
+        \smallskip
+        \schema
+        {
+          \schemabox{\ifx\fmtname\nameoflatex\gk{logik~hs}\else\gk{logik\=es}\fi, ut}
+        }
+        {
+          \schemabox{Angelorum.} \smallskip \schemabox{Hominum: Ad\ae{},\\ Ev\ae{} \& procreatorum\\ exipsis.\strut}
+        }
+      }
+      \schema
+      {
+        \schemabox{Sustenatione\\ natur\ae{} laps\ae{},}
+      }
+      {
+        \schemabox{Angelorum malorum,} \smallskip \schemabox{Hominum: Ad\ae{}, Ev\ae{}\\ \& procreatorum exipsis.}
+      }
+      \Schema{2.6ex}{8.8ex}
+      {
+        \schemabox{Beneficiis\\ erga Ecc-\\ lesiam: ea\\ versantur\\ aut circa}
+      }
+      {
+        \Schema{2.2ex}{7ex}
+        {
+          \schemabox{Res, ut}
+        }
+        {
+          \schema
+          {
+            \schemabox{Verbum}
+          }
+          {
+            \schemabox{Legis} \smallskip \schemabox{Evangelii} \smallskip \schemabox{Sacramentorum}
+          }
+          \smallskip
+          \schema
+          {
+            \schemabox{Signa vel Veteris\\ vel Novi Testa-\\ mentum ut sunt:}
+          }
+          {
+            \schemabox{Ceremoni\ae{}} \smallskip \schemabox{Miracula}
+          }
+        }
+        \smallskip
+        \Schema{0.6ex}{5.5ex}
+        {
+          \schemabox{Personas}
+        }
+        {
+          \schema
+          {
+            \schemabox{Ecclesi\ae{}}
+          }
+          {
+            \schemabox{Universalis} \smallskip \schemabox{Particularis}
+          }
+          \smallskip
+          \schemabox{Politi\ae{} ut Magistratuum}
+          \smallskip
+          \schemabox{\OE{}conomi\ae{} ut privatorum}
+        }
+      }\vskip2ex
+    }
+  }
+}
+$$
+\vfil
+\egroup
+
+\eject
+
+$$
+\Schema{-1.4ex}{10ex}
+{
+  \schemabox{Qu\ae{} sit\\ \textsc{Dei}, vel}
+}
+{
+  \Schema{-1ex}{5ex}
+  {
+    \schemabox{\textsc{Essentia}, in}
+  }
+  {
+    \vskip1ex\schemabox{Unitate divina,}
+    \medskip
+    \Schema{0ex}{3.4ex}
+    {
+      \schemabox{Tribus perso-\\ nis divinitatis}
+    }
+    {
+      \Schema[close]{0ex}{3.4ex}
+      {
+        \NudgeSB\schemabox{Patre,\\ Filio,\\ Spiritui Sancto}
+      }
+      {
+        \schemabox{\ifx\fmtname\nameoflatex\gk{<omoous'iois}\else\gk{homoousiois}\fi\\ \& co\ae{}ternis}
+      }
+    }
+  }
+  \medskip
+  \Schema{-0.2ex}{6.4ex}
+  {
+    \schemabox{\textsc{Voluntas},\\ revelatur in\\ actione, sive}
+  }
+  {
+    \Schema{0ex}{3.4ex}
+    {
+      \schemabox{Universali}
+    }
+    {
+      \Schema[close]{0ex}{3.4ex}
+      {
+        \schemabox{Creationis,\\Sustenationis,\\ Propagationis,}
+      }
+      {
+        \schemabox{rerum creatarum.}
+      }
+    }
+    \medskip
+    \schema
+    {
+      \schemabox{Speciali, in beneficiis\\ erga Ecclesiam, eam}
+    }
+    {
+      \schemabox{Colligendo.\\ Justificando.\\ Conservando.\\
+      Glorificando.}
+    }
+  }
+}
+$$
+
+\vfill
+% Use here in Plain TeX.
+\newbox\mybox
+$$
+\Schema{-0.2ex}{14.4ex}
+{\schemabox{\bf Curricula\\\bf Texts}}
+{
+  \DoBrackets%
+  % Doable in LaTeX, not in Plain TeX, because \outer.
+  % \newbox\mybox%
+  \setbox\mybox=\hbox{\bf III. Philosophical }%
+  \dimen0=\wd\mybox%
+  \schema
+    {\schemabox[\dimen0]{\bf I. General\\Studies}}
+    {\schemabox{1. Collected Works\\2. Encyclopedias}}
+  \smallskip
+  \schema
+    {\schemabox[\dimen0]{\bf II. Literary\\Disciplines}}
+    {\schemabox{1. Philology\\
+     2. Historical Introduction\\
+     3. Literary Theory\\
+     4. Application}}
+  \smallskip
+  \schema
+      {\schemabox[\dimen0]{\bf III. Philosophical\\Disciplines}}
+      {\schemabox{1. Source Texts\\
+       2. History of Philosophy\\
+       3. General Surveys\\
+       4. Specific Studies}}
+  \smallskip
+  \schema
+      {\schemabox[\dimen0]{\bf IV. Historical\\Disciplines}}
+      {\schemabox{1. General Surveys\\
+       2. Specialized Works}}
+}
+$$
+\ifx\fmtname\nameoflatex
+  \end{document}
+\else
+  \ifx\fmtname\nameoflollipop
+    \Stop
+  \else
+    \bye
+  \fi
+\fi


Property changes on: trunk/Master/texmf-dist/doc/generic/schemata/schematest.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/generic/schemata/Makefile
===================================================================
--- trunk/Master/texmf-dist/source/generic/schemata/Makefile	                        (rev 0)
+++ trunk/Master/texmf-dist/source/generic/schemata/Makefile	2020-03-14 20:44:40 UTC (rev 54296)
@@ -0,0 +1,49 @@
+NAME  = schemata
+ENGINE = pdflatex
+SHELL = bash
+PWD   = $(shell pwd)
+VERS  = $(shell ltxfileinfo -v $(NAME).dtx|sed -e 's/^v//')
+LOCAL = $(shell kpsewhich --var-value TEXMFLOCAL)
+UTREE = $(shell kpsewhich --var-value TEXMFHOME)
+release:    $(NAME).pdf
+testing:    $(NAME).pdf schematest.pdf
+schematest.pdf    : schematest.tex
+	pdftex schematest >/dev/null
+$(NAME).pdf : $(NAME).dtx
+	$(ENGINE) -shell-escape -recorder -interaction=batchmode $(NAME).dtx >/dev/null
+	$(ENGINE) --recorder --interaction=nonstopmode $(NAME).dtx > /dev/null
+	if [ -f $(NAME).glo ]; then makeindex -q -s gglo.ist -o $(NAME).gls $(NAME).glo; fi
+	if [ -f $(NAME).idx ]; then makeindex -q -s gind.ist -o $(NAME).ind $(NAME).idx; fi
+	$(ENGINE) --recorder --interaction=nonstopmode $(NAME).dtx > /dev/null
+	$(ENGINE) --recorder --interaction=nonstopmode $(NAME).dtx > /dev/null
+	test -e README.txt && mv README.txt README || exit 0
+clean:
+	rm -f $(NAME).{aux,fls,glo,gls,hd,idx,ilg,ind,ins,log,out,toc} README.txt
+	rm -f schematest.{aux,fls,glo,gls,hd,idx,ilg,ind,ins,log,out,toc}
+distclean: clean
+	rm -f $(NAME).{dvi,pdf,sty,synctex.gz} README
+	rm -f schematest.{dvi,pdf,sty,synctex.gz}
+inst: release
+	mkdir -p $(UTREE)/{tex,source,doc}/generic/$(NAME)
+	cp $(NAME).dtx $(UTREE)/source/generic/$(NAME)
+	cp $(NAME).png $(UTREE)/source/generic/$(NAME)
+	cp Makefile $(UTREE)/source/generic/$(NAME)
+	cp $(NAME).sty $(UTREE)/tex/generic/$(NAME)
+	cp $(NAME).pdf $(UTREE)/doc/generic/$(NAME)
+	cp schematest.tex $(UTREE)/doc/generic/$(NAME)
+	cp README $(UTREE)/doc/generic/$(NAME)
+install: release
+	sudo mkdir -p $(LOCAL)/{tex,source,doc}/latex/$(NAME)
+	sudo cp $(NAME).dtx $(LOCAL)/source/generic/$(NAME)
+	sudo cp $(NAME).png $(LOCAL)/source/generic/$(NAME)
+	sudo cp Makefile $(LOCAL)/source/generic/$(NAME)
+	sudo cp $(NAME).sty $(LOCAL)/tex/generic/$(NAME)
+	sudo cp $(NAME).pdf $(LOCAL)/doc/generic/$(NAME)
+	sudo cp schematest.tex $(LOCAL)/doc/generic/$(NAME)
+	sudo cp README $(LOCAL)/doc/generic/$(NAME)
+zip: release
+	ln -sf . $(NAME)
+	zip -Drq $(PWD)/$(NAME)-$(VERS).zip\
+      $(NAME)/{README,schematest.tex,Makefile,$(NAME).{pdf,dtx,png}}
+	rm $(NAME)
+


Property changes on: trunk/Master/texmf-dist/source/generic/schemata/Makefile
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/source/generic/schemata/schemata.dtx
===================================================================
--- trunk/Master/texmf-dist/source/generic/schemata/schemata.dtx	2020-03-14 20:42:00 UTC (rev 54295)
+++ trunk/Master/texmf-dist/source/generic/schemata/schemata.dtx	2020-03-14 20:44:40 UTC (rev 54296)
@@ -4,36 +4,38 @@
 \iffalse
 %</internal>
 %<*readme>
-|
+
 --------:| ----------------------------------------------------------------
 schemata:| Generic package to aid construction of topical categories
   Author:| Charles P. Schaum
-  E-mail:| charles dot schaum at comcast dot net
+  E-mail:| charles dot schaum at comcast.net
  License:| Released under the LaTeX Project Public License v1.3c or later
      See:| http://www.latex-project.org/lppl.txt
 
-
 Short description:
 The schemata package helps the creation of topical outlines that illustrate the breakdown of concepts and categories in academic texts from the late medieval to early modern periods.
 
-Files		 Distribution
+Files		    Distribution
 
-README       This file
-schemata.pdf Documentation
+README        This file
+schemata.pdf  Documentation
+schematest.tex  Test file for Plain TeX or Eplain
+schemata.png  Image file used for the manual
 
-Makefile     Automates building with GNU make 3.81
-schemata.dtx Documented LaTeX file containing both code and documentation
+Makefile      Automates building with GNU make 3.81
+schemata.dtx  Documented LaTeX file containing both code and documentation
 
 Installation
 
-Unpack schemata-XX.zip in an appropriate directory.
+Download the package from
 
-Note that the instructions below assume that you are using a *nix-
-compatible computer. If that is otherwise, you will need to modify
-these instructions to your needs.
+https://www.ctan.org/tex-archive/macros/generic/schemata
 
-If you have a make utility compatible with GNU make you can type
+Unpack schemata.zip in an appropriate directory.
 
+If you have a make utility compatible with GNU make, either in
+GNU/Linux, a BSD variant, OSX, or Cygwin in Windows you can type
+
 	make inst
 
 to install the package into your $TEXMFHOME tree or
@@ -41,43 +43,80 @@
 	make install
 
 to install the package into your $TEXMFLOCAL tree for all users.
+The latter requires sudo privileges.
 
-Manually, you can generate the package files. First you generate the
-installer driver, README, and style files, with a preliminary PDF:
+Other useful targets include:
 
+	(release process)
+
+	make release			The default target, same as just ``make''.
+
+	make clean				Removes all intermediate files. Left are
+							the files listed above plus schemata.sty.
+
+	make distclean			Leave only schemata.dtx, schematest.tex,
+							schemata.png, and Makefile.
+
+	make zip				Generate a zip file ready for distribution.
+
+	(testing process)
+
+	make testing			Release files, plus compiles schematest.tex.
+
+It is not necessary, however, to use GNU make. One can generate
+the package files manually. Since the files schemata.ins and README.txt
+are contained in the .dtx file itself, the first step is to generate
+the installer driver schemata.ins, plus the file README.txt, which will
+also trigger the extraction of schemata.sty and produce the first pass of
+the package documentation schemata.pdf:
+
 	pdflatex -shell-escape -recorder -interaction=batchmode schemata.dtx
 
-Next you generate the PDF with a table of contents and all cross-references
-validated, so that the index entries will not move:
+Next one adds a table of contents and all cross-references, this also
+should finalize page numbers for glossary and index input files:
 
 	pdflatex --recorder --interaction=nonstopmode schemata.dtx
 	
-The next commands generate the glossary/index and final pdf file
+The next commands generate the glossary/index output files:
 	
 	makeindex -q -s gglo.ist -o schemata.gls schemata.glo
 	makeindex -q -s gind.ist -o schemata.ind schemata.idx
+	
+The final two commands integrate the glossary (changes) and index:
+	
 	pdflatex --recorder --interaction=nonstopmode schemata.dtx
 	pdflatex --recorder --interaction=nonstopmode schemata.dtx
 
-Normally you create the following manual installation directories for user:
+Now one can either keep README.txt or rename it to README, e.g.:
 
-	$TEXMFHOME/source/generic/schemata		dtx file
-	$TEXMFHOME/tex/generic/schemata			sty file
-	$TEXMFHOME/doc/generic/schemata			pdf file
+	mv README.txt README
+
+Normally one creates the following directories for a user:
+
+	$TEXMFHOME/source/generic/schemata		dtx file, schemata.png
+	$TEXMFHOME/doc/generic/schemata			pdf file, README, schematest.tex,
+	                                       
 		
-and you create the following manual installation directories for local site:
+and creates the following directories for the local site:
 
-	$TEXMFLOCAL/source/generic/schemata		dtx file
-	$TEXMFLOCAL/tex/generic/schemata		sty file
-	$TEXMFLOCAL/doc/generic/schemata		pdf file
+	$TEXMFLOCAL/source/generic/schemata		dtx file, schemata.png
+	$TEXMFLOCAL/doc/generic/schemata		pdf file, README, schematest.tex,
+	                                       
 
 The above environment variables often are /usr/local/texlive/texmf-local for
 $TEXMFLOCAL and ~/texmf for $TEXMFHOME.
 
-Run mktexlsr with the appropriate level of permissions to complete the install.
+The make process normally renames the README.txt file created from the
+dtx file to just README by using mv (move / rename utility in the *nix
+userland). Windows distributions of TeX and LaTeX often keep the txt file
+because of using file extensions instead of ``magic numbers'' to identify
+files.
 
-This packages works with LaTeX and plain TeX.
+Run mktexlsr with the appropriate level of permissions to complete the
+install.
 
+This packages works with LaTeX and Plain TeX.
+
 License
 
 This material is subject to the LaTeX Project Public License:
@@ -97,10 +136,11 @@
 \keepsilent
 \askforoverwritefalse
 \preamble
+
 --------:| ----------------------------------------------------------------
 schemata:| Generic package to aid construction of topical categories
   Author:| Charles P. Schaum
-  E-mail:| charles dot schaum at comcast dot net
+  E-mail:| charles dot schaum at comcast.net
  License:| Released under the LaTeX Project Public License v1.3c or later
      See:| http://www.latex-project.org/lppl.txt
 
@@ -107,7 +147,7 @@
 \endpreamble
 \postamble
 
-Copyright (C) 2016 by Charles P. Schaum <charles dot schaum at comcast dot net>
+Copyright (C) 2020 by Charles P. Schaum <charles dot schaum at comcast.net>
 
 This work may be distributed and/or modified under the
 conditions of the LaTeX Project Public License (LPPL), either
@@ -119,8 +159,10 @@
 This work is "maintained" (as per LPPL maintenance status) by
 Charles P. Schaum.
 
-This work consists of the file schemata.dtx and a Makefile.
-Running "make" generates the derived files README, schemata.pdf and schemata.sty.
+This work consists of the file schemata.dtx, schematest.tex,
+  schemata.png, and a Makefile.
+Running "make" generates the derived files README, schemata.pdf,
+  and schemata.sty.
 Running "make inst" installs the files in the user's TeX tree.
 Running "make install" installs the files in the local TeX tree.
 
@@ -154,36 +196,63 @@
 %<*driver>
 \ProvidesFile{schemata.dtx}
 %</driver>
-%<package>\expandafter\ifx\csname newenvironment\endcsname\relax\else
-%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>{\expandafter}\expandafter\ifx \csname schemataLaTeX\endcsname\relax
+%<package>  \def\schemataLaTeX{LaTeX2e}\fi
+%<package>\ifx\fmtname\schemataLaTeX
+%<package>\expandafter\NeedsTeXFormat\expandafter{\schemataLaTeX}
 %<package>\ProvidesPackage{schemata}
 %<*package>
-    [2016/01/25 v0.8 generic package to aid construction of topical categories]
+  [2020/03/13 v1.0 generic package to aid construction of topical categories]
+%</package>
 %<package>\fi
-%<*package>
-%</package>
 %<*driver>
 \documentclass[11pt]{ltxdoc}
-\usepackage[textwidth=140mm,textheight=237mm,right=25mm,nohead]{geometry}
-\usepackage[utf8]{inputenc}
 \usepackage[T1]{fontenc}
-\usepackage{lmodern}
-\usepackage{listingsutf8}
 \usepackage[polutonikogreek,american]{babel}
 \newcommand{\gk}[1]{\foreignlanguage{polutonikogreek}{#1}}
+\usepackage{lmodern}
+\usepackage[textwidth=140mm,textheight=237mm,right=25mm,nohead]{geometry}
+\usepackage{graphicx}
+%^^A Dangerous bend ahead...
+\usepackage{manfnt}
+%^^A Use the MetaPost logo
 \usepackage{mflogo}
-\usepackage{multicol}
 \usepackage[toc]{multitoc}
+\usepackage{paracol}
+\usepackage{\jobname}
+\usepackage{verbatim}
 \usepackage[numbered]{hypdoc}
-\usepackage{\jobname}
-\lstset{
-  basicstyle=\ttfamily\small,
-  gobble=2,
-  numbers=left,
-  stepnumber=1,    
-  firstnumber=1,
-  numberfirstline=true
+
+%^^A Let verbatim environments be numbered or unnumbered, and start or resume that.
+\makeatletter
+\newcommand*\ClearNum{%^^A
+  \newcounter{VerbLine}\setcounter{VerbLine}{0}%^^A
+  \def\verbatim at processline{\expandafter\@gobble\the\verbatim at line\par}%^^A
 }
+\newcommand*\StartNum{%^^A
+  \setcounter{VerbLine}{0}
+  \def\verbatim at processline{\stepcounter{VerbLine}\leavevmode%^^A
+  \llap{\footnotesize\normalfont\theVerbLine\quad}%^^A
+  \expandafter\@gobble\the\verbatim at line\par}%^^A
+}
+\newcommand*\ContinueNum{%^^A
+  \def\verbatim at processline{\stepcounter{VerbLine}\leavevmode%^^A
+  \llap{\footnotesize\normalfont\theVerbLine\quad}%^^A
+  \expandafter\@gobble\the\verbatim at line\par}%^^A
+}
+\makeatother
+%^^A Set up numbered verbatim
+\ClearNum
+
+%^^A Macros for marginalia.
+\newcommand*\Version[1]{\unless\ifinner\marginpar{\strut\raggedleft\textsf{\bfseries#1}}\fi}
+\newcommand*\VersionWarn[1]{{\unless\ifinner\marginpar{\strut\raggedleft\textsf{\bfseries#1}\break\small\dbend}\fi}}
+\newcommand*\Warn{{\unless\ifinner\marginpar{\strut\small\raggedleft\dbend}\fi}}
+\newcommand*\Info[1]{{\unless\ifinner\marginpar{\strut\small\raggedleft#1}\fi}}
+
+%^^A Struts for framed boxes
+\newcommand*{\mystrut}{\rule[-0.25\baselineskip]{0pt}{\baselineskip}}
+
 \EnableCrossrefs
 \CodelineIndex
 \RecordChanges
@@ -193,7 +262,7 @@
 %</driver>
 % \fi
 %
-% \CheckSum{769}
+% \CheckSum{594}
 %
 % \CharacterTable
 %  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -223,7 +292,7 @@
 %\title{\textsf{schemata} --- Generic package to aid construction of topical categories\thanks{This file
 %   describes version \fileversion, last revised \filedate.}
 %}
-%\author{Charles P. Schaum\thanks{E-mail: charles dot schaum at comcast dot net}}
+%\author{Charles P. Schaum\thanks{E-mail: charles dot schaum at comcast.net}}
 %\date{Released \filedate}
 %
 %\maketitle
@@ -236,81 +305,188 @@
 %
 % \section{Introduction}
 %
-% This package emerged from my personal need to typeset diagrams based on seventeenth-century theology books. I chose a ``bare-bones'' approach to make it platform-agnostic and simple to implement.
+% This package uses boxes and math mode to typeset \emph{schemata} (plural of \gk{t'o sq~hma} or \emph{schema}, meaning \emph{form}, \emph{shape}, \emph{appearance}, etc.). One sees them in academic literature from at least the seventeenth through the nineteenth centuries.\footnote{Books that use this package include: Löhe, \textit{The Pastor} [\textit{Der evangelische Geistliche}] (St.~Louis, 2015) and Schaum and Coll\-ver, \textit{Breath of God, Yet Work of Man} (St.~Louis, 2019).}
 %
-% I would recommend that a package like \emph{TikZ}, \textsf{PSTricks}, \MP, or some other powerful solution may have advantages over this one, especially for those seeking a top-to-bottom diagram, such as that in: \textsc{H.~Dembowski}, \emph{Einf{\"u}hrung in die Christologie} (Darmstadt, 1993), 146.
+% Packages like \emph{TikZ}, \textsf{PSTricks}, \MP, or other solutions have advantages over this one, especially for those seeking a top-to-bottom diagram.\footnote{For example: \textsc{H.~Dembowski}, \emph{Einf{\"u}hrung in die Christologie} (Darmstadt, 1993), 146.}
+% Yet these packages may present challenges if one has to implement both open \emph{and} closed braces in a schema, which math mode allows.
+% \newpage
 %
-% Nevertheless, many packages do not handle both open \emph{and} closed braces in a schema without a great amount of manual setup. This package uses math mode to do that, somewhat mimicking how a letterpress typesetter might design schemata for the works of Petrus Ramus, the \emph{Loci Theologici} of Martin Chemnitz, the \emph{Clavis Scripturae Sacrae} of Matthias Flacius Illyricus, and many others.
-% \clearpage
-%
 % \section{Usage}
 %
-% \subsection{Package Options and Loading}
+% \subsection[Loading and Options]{Package Loading and Options}
 %
-% This package basically is a ``wrapper'' that takes some of the work out of using \TeX{} math mode to create \emph{schemata} (plural of \gk{t'o sq~hma} or \emph{schema}, meaning \emph{form, shape, appearance, bearing, manner, fashion,} and so on). Such diagrams were used quite frequently to break down a main concept into its component parts and demonstrate the relationship among various components.\\
+% The \textsf{schemata} package is a minimal ``wrapper'' for math mode. It can be used with \LaTeX{} or with several generic formats, such as \PlainTeX{} and Eplain, even Lollipop, but not \textsc{Con\TeX t}:\footnote{It appears that \textsc{Con\TeX t} does not like nesting math-mode expressions within boxes in the manner used by this package. Barring a rewrite of \textsf{schemata}, that is the \emph{status controversiae}.}
+% \begin{quote}
+% \fbox{\begin{tabular}{ll}
+% {\Large\strut}For \LaTeX{} invoke: & \cmd{\usepackage}\oarg{options}\texttt{\{schemata\}}\\
+% {\Large\strut}For generic use: & \cmd{\input}\texttt{\textvisiblespace schemata.sty}
+% \end{tabular}}
+% \end{quote}\smallskip
+% 
+% \DescribeMacro{\schemataLaTeX}
+% Normally, \textsf{schemata} uses generic \TeX{} macros if the format is not \LaTeXe. When using a \LaTeX-like format with a different name than \texttt{LaTeX2e}, one theoretically could insert the following before |\usepackage{schemata}|:
+% \begin{quote}
+% |\edef\schemataLaTeX{\fmtname}|
+% \end{quote}
+% 
+% Yet\Warn{} this is usually unneeded. We want \cmd{\schemataLaTeX} to be undefined before \texttt{schemata.sty} is loaded to get the default value \texttt{LaTeX2e}. We recommend not using this macro unless you know what you are doing.\medskip
+% 
+% \LaTeX\Info{options} users can choose one among four package options: \texttt{braces}, \texttt{brackets}, \texttt{parens}, and \texttt{groups}. These set the defaults for the delimiters. If no options are chosen, the default is \texttt{braces}.
+% 
+% \subsection{Macro Overview}
 %
-% The \textsf{schemata} package can be used with plain \TeX{} and \LaTeX:
+% One can describe schemata as a grouping of boxes that contain content, whose relationships are demonstrated by delimiters. We start with the boxes and their content. Subsequently, we deal with the delimiters, then later, the manner of grouping and arrangement, as well as tweaks and tutorials.
+% 
+% \subsubsection[\texttt{\textbackslash schemabox}]{Containers: \texttt{\textbackslash schemabox}}
+% 
+% \DescribeMacro{\schemabox}
+% Schemata contain vertically-centered lists of material in inner vertical mode. When in a \cmd{\schema} or a \cmd{\Schema} (see below), a \cmd{\schemabox} stacks one or more lines of \cmd{\hbox}-enclosed text in a \cmd{\vbox.} It redefines the macro |\\| to close the current \cmd{\hbox} and begin a new one, with some options that can be modified (Section~\ref{sec:tweakschema}).
 % \begin{quote}
-% \begin{tabular}{ll}
-% Users of \LaTeX{} invoke: & |\usepackage[|\meta{options}|]{schemata}|\\[1ex]
-% Plain \TeX{} users will use: & |\input|\textvisiblespace|schemata.sty|
-% \end{tabular}
+% \fbox{\begin{tabular}{l}
+% {\Large\strut}\cmd{\schemabox}\oarg{width}\marg{text}\\
+% \end{tabular}}
 % \end{quote}
+% The \meta{width} of a \cmd{\schemabox} is a dimension, e.g., \texttt{3cm}. No text wrapping (as in a \cmd{\parbox}) takes place. If there is more than one line of text, each line of \meta{text} must be terminated explicitly by |\\|, except the final line. Usually, the first line of a \cmd{\schemabox} inserts a \cmd{\strut} for aesthetic reasons.
 %
-% \subsection{Macro Overview}
+% When not in internal vertical mode, \cmd{\schemabox} ignores \meta{width}, does not redefine |\\|, and prints its argument as text: |\schemabox{line~1\\ line~2}| \schemabox{line~1\\ line~2}. This helps prevent errors.
+% \newpage
 %
+% \subsubsection{Delimiters}
+% 
 % \DescribeMacro{\DoBraces}
+% Both generic \TeX{} and \LaTeX{} users can use these four macros to set or change the type of delimiters.
 % \DescribeMacro{\DoBrackets}
+% In both generic \TeX{} and \LaTeX, the default delimiter is braces.
 % \DescribeMacro{\DoParens}
-% \LaTeX{} users can choose among three global package options: |braces|, |brackets|, and |parens|. These set the defaults for the ``braces.'' If no options are chosen, the default is |braces|. Plain \TeX{} users get the same results by using \cmd{\DoBraces}, \cmd{\DoBrackets}, and \cmd{\DoParens}. These macros have the same effect as the package options. The default still remains braces, shown by the three examples below:
+% \cmd{\DoBraces}, \cmd{\DoBrackets}, \cmd{\DoParens}, and \cmd{\DoGroups} do the same thing as the respective package options,
+% \DescribeMacro{\DoGroups}
+% except they also change the delimiters when used before \cmd{\schema} and \cmd{\Schema}. They remain in force until the end of a scope:\label{page:SBNudge}
 % \begin{displaymath}
-% \schema{\schemabox{a}}{\schemabox{b}}\qquad \schema{\schemabox{a}}{\schemabox{b\\c}}\qquad \Schema{0ex}{2.3ex}{\schemabox{a}}{\Schema[close]{0ex}{2.4ex}{\schemabox{b\\c}}{\schemabox{d}}}
+% \DoBrackets\bgroup\renewcommand\SBNudgeFactor{\kern0.08em}
+% \Schema{0ex}{2.3ex}{\schemabox{a}}{\Schema[close]{0ex}{2.4ex}{\NudgeSB\schemabox{b\\c}}{\schemabox{d}}}\egroup
+% \qquad\DoParens
+% \Schema{0ex}{2.3ex}{\schemabox{a}}{\Schema[close]{0ex}{2.4ex}{\schemabox{b\\c}}{\schemabox{d}}}
+% \qquad\DoGroups
+% \Schema{0ex}{2.3ex}{\schemabox{a}}{\Schema[close]{0ex}{2.4ex}{\schemabox{b\\c}}{\schemabox{d}}}
+% \qquad\DoBraces
+% \Schema{0ex}{2.3ex}{\schemabox{a}}{\Schema[close]{0ex}{2.4ex}{\schemabox{b\\c}}{\schemabox{d}}}
 % \end{displaymath}
-% The next three examples use \cmd{\DoBrackets} to get brackets instead:
+%
+% Additionally, these macros can change the delimiter style within a schema. See Section~\ref{sec:multiple}, as well as the example below:\bigskip
+% 
+% \leavevmode\quad\begin{minipage}[c]{0.6\textwidth}\small
+% \StartNum
+% \begin{verbatim}
+%\DoBrackets
+%\Schema{0ex}{2.4ex}
+%  {\schemabox{a}}
+%  {\DoParens\Schema[close]{0ex}{2.3ex}
+%    {\schemabox{b\\c}}
+%    {\schemabox{d}}
+%}\end{verbatim}
+% \end{minipage}
+% \begin{minipage}[c]{0.25\textwidth}
 % \begin{displaymath}
-% \DoBrackets\schema{\schemabox{a}}{\schemabox{b}}\qquad \schema{\schemabox{a}}{\schemabox{b\\c}}\qquad \Schema{0ex}{2.4ex}{\schemabox{a}}{\Schema[close]{0ex}{2.3ex}{\schemabox{b\\c}}{\schemabox{d}}}
-% \end{displaymath}
-% The next three three use \cmd{\DoParens}:
-% \begin{displaymath}
-% \DoParens\schema{\schemabox{a}}{\schemabox{b}}\qquad \schema{\schemabox{a}}{\schemabox{b\\c}}\qquad \Schema{0ex}{2.4ex}{\schemabox{a}}{\Schema[close]{0ex}{2.3ex}{\schemabox{b\\c}}{\schemabox{d}}}
-% \end{displaymath}
-% All three macros should precede \cmd{\schema} and \cmd{\Schema} within a particular scope, and they remain in force within that scope unless changed. Additionally, \cmd{\DoBraces}, \cmd{\DoBrackets}, and \cmd{\DoParens} can change the style of ``brace'' within a schema. See Section~\ref{sec:multiple}, as well as the trivial example below:
-% \begin{displaymath}
-% \Schema{0ex}{2.4ex}
+% \DoBrackets\Schema{0ex}{2.4ex}
 %   {\schemabox{a}}
 %   {\DoParens\Schema[close]{0ex}{2.3ex}
 %     {\schemabox{b\\c}}
-%     {\schemabox{d}}
+%     {\schemabox{d}}}
+% \end{displaymath}\medskip
+% \end{minipage}\bigskip
+% 
+% One can add new types by using eligible math-mode delimiters, e.g.:\bigskip
+% 
+% \leavevmode\quad\begin{minipage}[c]{0.6\textwidth}\small
+% \StartNum
+% \begin{verbatim}
+%\makeatletter
+%\newcommand*{\DoVerts}%
+%  {\let\@schemata at LD\bracevert%
+%   \let\@schemata at RD\bracevert}
+%\makeatother
+%\DoVerts
+%\Schema{0ex}{5ex}
+%  {\vskip0.6ex\schemabox{a}}
+%  {\Schema[close]{0ex}{5ex}
+%    {\vskip0.4ex\schemabox{b\\c\\d\\e}}
+%    {\vskip0.6ex\schemabox{{\kern0.1em}f}}
+%}\end{verbatim}
+% \end{minipage}
+% \begin{minipage}[c]{0.25\textwidth}
+% \makeatletter
+% \newcommand*{\DoVerts}%
+%   {\let\@schemata at LD\bracevert%
+%    \let\@schemata at RD\bracevert}
+% \makeatother
+% \DoVerts
+% \begin{displaymath}
+% \Schema{0ex}{5ex}
+%   {\vskip0.6ex\schemabox{a}}
+%   {\Schema[close]{0ex}{5ex}
+%     {\vskip0.4ex\schemabox{b\\c\\d\\e}}
+%     {\vskip0.6ex\schemabox{{\kern0.1em}f}}
 % }
-% \end{displaymath}
-% \begin{lstlisting}
-% \Schema{0ex}{2.4ex}
-%   {\schemabox{a}}
-%   {\DoParens\Schema[close]{0ex}{2.3ex}
-%     {\schemabox{b\\c}}
-%     {\schemabox{d}}
-% }
-% \end{lstlisting}
-% \clearpage
+% \end{displaymath}\medskip
+% \end{minipage}
 %
+% \subsubsection[\texttt{\textbackslash schema}]{Leaf Nodes: \texttt{\textbackslash schema}}
+%
 % \DescribeMacro{\schema}
 % A ``simple'' schema has a left-hand side with vertically-centered vertical material, a brace, and a right-hand side with vertically-centered vertical material:
 % \begin{quote}
-% \cmd{\schema}\oarg{type}\marg{left-hand side}\marg{right-hand side}
+% \fbox{\begin{tabular}{l}
+% {\Large\strut}\cmd{\schema}\oarg{type}\marg{left side}\marg{right side}\\
+% \end{tabular}}
 % \end{quote}
-% The \meta{left-hand side} and \meta{right-hand side} are vertical material in order to allow a \cmd{\smallskip} or other vertical adjustment as needed.\medskip
+% The \meta{left side} and \meta{right side} are vertical material in order to allow a \cmd{\smallskip} or other vertical adjustment as needed.\medskip
+% 
+% The \meta{type} of a schema is \texttt{open} (the delimiter opens to the right) by default:
+% 
+% \leavevmode\quad\begin{minipage}[c]{0.6\textwidth}\small
+% \StartNum
+% \begin{verbatim}
+%\schema
+%  {\schemabox{a}}
+%  {\schemabox{b\\c}}\end{verbatim}
+% \end{minipage}
+% \begin{minipage}[c]{0.25\textwidth}
+% \begin{displaymath}
+% \schema
+%   {\schemabox{a}}
+%   {\schemabox{b\\c}}
+% \end{displaymath}\vspace{0pt}
+% \end{minipage}
+% \newpage
+% 
+% Any value of \meta{type} other than the exact string \texttt{open} makes a ``closed'' schema (the delimiter opens to the left):
 %
-% The \meta{type} of a schema is |open| (to the right) by default: \schema{\SwitchSB\schemabox{a}}{\SwitchSB\schemabox{b\\c}}\medskip
+% \leavevmode\quad\begin{minipage}[c]{0.6\textwidth}\small
+% \StartNum
+% \begin{verbatim}
+%\schema[closed]
+%  {\NudgeSB\schemabox{b\\c}}
+%  {\schemabox{a}}\end{verbatim}
+% \end{minipage}
+% \begin{minipage}[c]{0.25\textwidth}
+% \begin{displaymath}
+% \schema[closed]
+%   {\NudgeSB\schemabox{b\\c}}
+%   {\schemabox{a}}
+% \end{displaymath}\vspace{0pt}
+% \end{minipage}
+% 
+% Using \cmd{\NudgeSB} above added a kern of \texttt{0.2em} at the right of the \cmd{\schemabox} to offset an automatic kern of \texttt{-0.2em} that normally pulls the brace slightly closer to the left-hand side when it opens to the right. We cover such tweaks in Section~\ref{sec:tweakschema}.
+% 
+% In practice, \cmd{\schema} does not nest, so it is only useful for the right-hand ``leaves'' of a large schema. That makes formatting the ``leaves'' much faster. Thus, the \cmd{\schema} macro is used only in the framed sub-schemata below.\smallskip
 %
-% Any value of \meta{type} other than |open| makes a ``closed'' schema: \schema[r]{\NudgeSB\SwitchSB\schemabox{b\\c}}{\SwitchSB\schemabox{a}}\medskip
-%
-% In practice, \cmd{\schema} does not nest, so it is only useful for the right-hand ``leaves'' of a large schema. That makes formatting the ``leaves'' faster. Thus the \cmd{\schema} macro is used only in the framed boxes below:\\
-%
-% \leavevmode\hfill\parbox{0.15\textwidth}%
-% {%
+% \noindent\leavevmode\begin{minipage}[c]{0.6\textwidth}
+% \quad\space The automatic sizing of \cmd{\schema} changes, depending on the height, depth, and even context of the letters. This can look ugly if uniformity is desired. Use \cmd{\Schema} (next section) to enforce uniform schemata. Section~\ref{sec:tweakschema} gives more details on tweaking \cmd{\schema} as needed.
+% \end{minipage}\hfill
+% \begin{minipage}[c]{0.235\textwidth}\small
 %   \Schema{-1ex}{4.2ex}
 %     {
-%       \schemabox{\dots a}
+%       \schemabox{a}
 %     }
 %     {
 %       \vbox{\noindent%
@@ -319,226 +495,332 @@
 %       }
 %     }
 %   }
-% }\hfill%
-% \parbox{0.6\textwidth}{Observe how the automatic sizing of \cmd{\schema} changes, depending on the height, depth, and even context of the letters. Avoid \cmd{\schema} if you need multiple copies of an example to look exactly alike. Section~\ref{sec:tweakschema} gives more details on tweaking \cmd{\schema} as needed.}\\\bigskip
+% \end{minipage}
 %
+% \subsubsection[\texttt{\textbackslash Schema}]{Branches and Root: \texttt{\textbackslash Schema}}
+%
 % \DescribeMacro{\Schema}
-% The ``complex'' form of a schema also has a left-hand side with vertically-centered vertical material, a brace, and a right-hand side of vertically-centered vertical material, along with two arguments that adjust the brace:
+% The ``complex'' form of a schema also has a left-hand side with vertically-centered vertical material, a brace, and a right-hand side of vertically-centered vertical material, along with two arguments that adjust the layout:
 % \begin{quote}
-% \cmd{\Schema}\oarg{type}\marg{adjust}\marg{size}\marg{left-hand side}\marg{right-hand side}
+% \fbox{\begin{tabular}{l}
+% {\Large\strut}\cmd{\Schema}\oarg{type}\marg{adjust}\marg{size}\marg{left side}\marg{right side}\\
+% \end{tabular}}
 % \end{quote}
-%The \meta{type} is |open| by default. As above, any other \meta{type} except the exact string |open| will make it a ``closed'' schema.
+%The \meta{type} is |open| by default. As above, any other \meta{type} except the exact string |open| will make it a ``closed'' schema. Both \meta{adjust} and \meta{size} are dimensions. We recommend expressing them as \texttt{ex}. This allows for easier scaling of the schema when changing the font size. Here is how to set \meta{adjust}:\footnote{Instead of setting \meta{adjust}, one could put vertical skips either before or after \cmd{\schemabox}, \cmd{\schema}, or \cmd{\Schema}. Yet using braces as delimiters tends to draw material toward the center cusp, where \meta{adjust} keeps that centered look while allowing some adjustments.}
+% \begin{quote}
+% \begin{tabular}{lll}
+% \textbf{negative} & left side and delimiter up & right side down\\[0.5ex]
+% \textbf{positive} & left side and delimiter down & right side up\\
+% \end{tabular}
+% \end{quote}
 %
-%Both \meta{adjust} and \meta{size} are dimensions that are expressed best with the unit ``ex.'' This allows for easier scaling of the schema.
+% Set the delimiter \meta{size} to be a scaled value of ex just a bit larger than the number of lines of text that the delimiter spans.
 %
-% Set \meta{adjust} to move the brace up (negative value) or down (positive value). Set \meta{size} to be a number of ex nearly equal to the number of lines that the brace should span. The value of \meta{size} is converted into an absolute value.
+% By using \cmd{\Schema} to adjust the delimiter height and centering, one can bypass the shortcomings of \cmd{\schema}, but at the cost of time. One has to traverse the schema at least twice to get the desired layout. \cmd{\Schema} lets one produce multiple schemata with the same look. This method allows complex layouts:
 %
-% Using \cmd{\Schema} allows one to adjust the brace height and centering manually. This is the only way to work around the way that \cmd{\schema} automatically adjusts for the height of everything on the open side of a brace. This is also the only way to get multiple examples of the same schema or similar schemata to look similar.
-%
-% Admittedly, this method is nothing short of ugly. Perhaps its only redeeming feature is that you can count lines of text to get a rough estimate of adjustments. Yet source texts from the seventeenth century often present schemata that can evade an easy, automatic solution, \emph{e.g.}:
-%
 % \begin{displaymath}
 % \Schema[close]{0ex}{5.1ex}
 % {
 %   \Schema{0.1ex}{3.8ex}
+%   {\SwitchSB\schemabox{main idea}}
 %   {
-%     \SwitchSB\schemabox{main idea}%
+%     \schema{\schemabox{part 1}}
+%       {\SwitchSB\NudgeSB\schemabox{detail a\\detail b}}\smallskip
+%     \schema{\schemabox{part 2}}
+%       {\SwitchSB\NudgeSB\schemabox{detail c\\detail d}}
 %   }
-%   {
-%     \schema{\schemabox{part}}{\SwitchSB\NudgeSB\schemabox{detail\\detail}}\smallskip
-%     \schema{\schemabox{part}}{\SwitchSB\NudgeSB\schemabox{detail\\detail}}
-%   }
 % }
 % {
 %   \Schema{0ex}{3.8ex}
+%   {\schemabox{synonym}}
 %   {
-%     \schemabox{synonym}%
+%     \schema{\schemabox{part 3}}
+%       {\SwitchSB\schemabox{detail e\\detail f}}\smallskip
+%     \schema{\schemabox{part 4}}
+%       {\SwitchSB\schemabox{detail g\\detail h}}
 %   }
-%   {
-%     \schema{\schemabox{part}}{\SwitchSB\schemabox{detail\\detail}}\smallskip
-%     \schema{\schemabox{part}}{\SwitchSB\schemabox{detail\\detail}}
-%   }
 % }
 % \end{displaymath}
-% \clearpage
+% \newpage
+% 
+% The source for that complex schema looks like:
+% \begin{quote}\small
+% \StartNum
+% \begin{verbatim}
+%\Schema[close]{0ex}{5.1ex}
+%{
+%  \Schema{0.1ex}{3.8ex}
+%  {\SwitchSB\schemabox{main idea}}
+%  {
+%    \schema{\schemabox{part 1}}
+%      {\SwitchSB\NudgeSB\schemabox{detail a\\detail b}}\smallskip
+%    \schema{\schemabox{part 2}}
+%      {\SwitchSB\NudgeSB\schemabox{detail c\\detail d}}
+%  }
+%}
+%{
+%  \Schema{0ex}{3.8ex}
+%  {\schemabox{synonym}}
+%  {
+%    \schema{\schemabox{part 3}}
+%      {\SwitchSB\schemabox{detail e\\detail f}}\smallskip
+%    \schema{\schemabox{part 4}}
+%      {\SwitchSB\schemabox{detail g\\detail h}}
+%  }
+%}\end{verbatim}
+% \end{quote}
 %
-% \DescribeMacro{\schemabox}
-% When in a \cmd{\schema} or a \cmd{\Schema}, this box stacks one or more lines of \cmd{\hbox}-enclosed material in a \cmd{\vbox.} It redefines the control sequence |\\| in a manner that terminates the current \cmd{\hbox} and begins a new one, with some options that can be modified (Section~\ref{sec:tweakschema}). Its syntax is:
-% \begin{quote}
-% \cmd{\schemabox}\oarg{width}\marg{text}
+% Both \cmd{\schema} and \cmd{\Schema} will stack vertically if set sequentially as paragraphs in running text:
+% 
+% \begin{paracol}{2}
+% \begin{quote}\small
+% \StartNum
+% \begin{verbatim}
+% \schema
+%   {\schemabox{a}}
+%   {\schemabox{b\\c}}
+%   
+% \schema
+%   {\schemabox{d}}
+%   {\schemabox{e\\f}}\end{verbatim}
 % \end{quote}
-% The \meta{width} of a \cmd{\schemabox} is a dimension, \emph{e.g.}, 3cm. No wrapping (as in a \cmd{\parbox}) takes place. If there are more than one line of text, each line of \meta{text} must be terminated explicitly by |\\|, except the final line. Usually, the first line of a \cmd{\schemabox} inserts a \cmd{\strut} for aesthetic reasons.
+% \switchcolumn
+% \vfil
+% 
+% \schema
+%   {\schemabox{a}}
+%   {\schemabox{b\\c}}
+%   
+% \schema
+%   {\schemabox{d}}
+%   {\schemabox{e\\f}}
+% \end{paracol}
+%   
+% They can be on a line of text: \schema{\schemabox{Does this}}{\schemabox{look\\ugly?}}\bigskip
 %
-% When \cmd{\schemabox} occurs apart from internal vertical mode, it ignores \meta{width} and merely reproduces \meta{text}. With |\schemabox{blah}| you just get ``\schemabox{blah}.''\\
-%
-% Certainly, one need not use a \cmd{\schemabox}, for example:\\
-% \begin{lstlisting}
-% \def\Box{%
-%   \hbox{%
-%     \vrule%
-%     \vbox to 1cm{\hrule\hbox to 1cm{\hfil}\vfil\hrule}%
-%     \vrule%
-%   }%
-% }
-% \end{lstlisting}%
+% Certainly, one need not use a \cmd{\schemabox} in either \cmd{\schema} or \cmd{\Schema}. For example, we make a macro \cmd{\Box} below to create one square centimeter of content:
 % \def\Box{\hbox{\vrule\vbox to 1cm{\hrule\hbox to 1cm{\hfil}\vfil\hrule}\vrule}}
-% \begin{multicols}{2}[\columnsep=30pt]
-% \hbox{}\bigskip
-% \begin{lstlisting}[firstnumber=8]
-% \schema{\Box}{\Box}
-% \end{lstlisting}
-% \hbox{}\bigskip\bigskip
-% \begin{lstlisting}[firstnumber=9]
-% \schema{\Box}{\Box\Box}
-% \end{lstlisting}
-% \hbox{}\vfil
-% \begin{lstlisting}[firstnumber=10]
-% \Schema{-0.2ex}{0.9cm}
-% {\Box}
-% {
-%   \Schema[close]{-0.2ex}{0.9cm}
-%   {\Box\hbox{\Box\kern0.2em}}
-%   {\Box}
-% }
-% \end{lstlisting}
-% \hbox{}
-% \columnbreak
-% \hbox{}
-% \schema{\Box}{\Box}
-% \hbox{}
+% \begin{quote}\small
+% \StartNum
+% \begin{verbatim}
+%\def\Box{%
+%  \hbox{%
+%    \vrule%
+%    \vbox to 1cm{\hrule\hbox to 1cm{\hfil}\vfil\hrule}%
+%    \vrule%
+%  }%
+%}\end{verbatim}
+% \end{quote}
 %
-% \schema{\Box}{\Box\Box}
-% \hbox{}
-%
+% Now we begin with the trivial example of one \cmd{\Box} on each side of the delimiter:\bigskip
+% 
+% \begin{paracol}{2}
+% \vspace{-0.1cm}
+% \begin{quote}\small
+% \ContinueNum
+% \begin{verbatim}
+%\schema{\Box}{\Box}\end{verbatim}
+% \end{quote}
+% \switchcolumn
+% \schema{\Box}{\Box}\bigskip
+% \end{paracol}
+% \newpage
+% 
+% This example is more complex, showing how each side stacks \cmd{\Box}es vertically:\bigskip
+% 
+% \begin{paracol}{2}
+% \vspace{0.45cm}
+% \begin{quote}\small
+% \ContinueNum
+% \begin{verbatim}
+%\schema{\Box}{\Box\Box}\end{verbatim}
+% \end{quote}
+% \switchcolumn
+% \schema{\Box}{\Box\Box}\bigskip
+% \end{paracol}
+% 
+% Finally we use \cmd{\Schema} to get a schema that is both open and closed:\bigskip
+% 
+% \begin{paracol}{2}
+% \vspace{-0.4cm}
+% \begin{quote}\small
+% \ContinueNum
+% \begin{verbatim}
+%\Schema{-0.2ex}{0.9cm}
+%{\Box}
+%{
+%  \Schema[close]
+%    {-0.2ex}{0.9cm}
+%  {\Box\hbox{\Box\kern0.2em}}
+%  {\Box}
+%}\end{verbatim}
+% \end{quote}
+% \switchcolumn
+% \vspace{0.15cm}
 % \Schema{-0.2ex}{0.9cm}
 % {\Box}
 % {
-%   \Schema[close]{-0.2ex}{0.9cm}
+%   \Schema[close]
+%     {-0.2ex}{0.9cm}
 %   {\Box\hbox{\Box\kern0.2em}}
 %   {\Box}
 % }
-% \end{multicols}
-% Both \cmd{\schema} and \cmd{\Schema} are vertical, so they will stack vertically if invoked sequentially outside of a tabular environment, display math, and so on, that can be used to display schemata horizontally.
+% \end{paracol}
+% A kern of \texttt{0.2em} was added above to compensate for the automatic kern of \texttt{-0.2em}, as Section~\ref{sec:tweakschema} explains in more detail. If not expressed in \texttt{ex} height, \meta{size} should be slightly less than half the height of the contents, e.g., \texttt{0.9cm} for a height of \texttt{2cm}.
 %
-% If one does not use ``ex'' height for \meta{size} in a \cmd{\Schema}, one should specify a \meta{size} slightly less than half the height of the contents. Above, a \meta{size} of 0.9cm suffices for a content of 2cm. Using ``ex'' height is meant to simplify sizing content according to lines of text.
-%
-% A kern of 0.2em was added in the final snippet above to offset an automatic kern of -0.2em added between the left-hand material and the brace in a closed schema. More on that is given under \cmd{\NudgeSB} in the next section.
-% \clearpage
-%
 % \subsection{Romancing the \texttt{\textbackslash schema}}
 % \label{sec:tweakschema}
 %
 % \DescribeMacro{\LCschema}
+% By default, a \cmd{\schemabox} adds a \cmd{\strut} to the first line because the topics in a schema often start with a capital letter.
 % \DescribeMacro{\UCschema}
-% By default, a \cmd{\schemabox} adds a \cmd{\strut} to the first line because it is often the case that the topics in a schema start in some fashion with a capital letter. To have braces in a \cmd{\schema} that are big enough, you need that \cmd{\strut.}
+% The \cmd{\strut} causes the delimiter of a \cmd{\schema} to have the proper size.
 %
-%If the first letter is not a capital or if the text seems a little off-center, you can turn off this default feature of \cmd{\schemabox} by placing \cmd{\LCschema} immediately before it. \cmd{\LCschema} will prevent all subsequent uses of \cmd{\schemabox} from adding \cmd{\strut} until you restore the default behavior with \cmd{\UCschema}, also best placed before the intended \cmd{\schemabox}.
+% If the first letter is not a capital or if the text seems a little off-center, you can turn off this default feature of \cmd{\schemabox} by placing \cmd{\LCschema} immediately before \cmd{\schemabox}. \cmd{\LCschema} will prevent all subsequent uses of \cmd{\schemabox} from adding \cmd{\strut} until you restore the default behavior with \cmd{\UCschema}, also best placed before the intended \cmd{\schemabox}. Here is an example where an entire schema is in lowercase, so we change the look of the whole thing:\footnote{Based on axioms in August Pfeiffer, \textit{Thesaurus Hermeneuticus} (Frankfurt am Main, 1698).}
 %
-% Here is an example where an entire schema is in lowercase, so instead of placing \cmd{\LCschema} and \cmd{\UCschema} before a particular \cmd{\schemabox}, we put the two macros before and after the \cmd{\Schema}:
-%
-% \begin{lstlisting}
-% \LCschema%
-% \Schema{0.1ex}{4.8ex}
-% {\hbox{sensus literalis}}
-% {
-%   \schema{\schemabox{sensus\\literalis\\(improprie)}}
-%          {\schemabox{ex parallelismo clarior\\
-%              ex analogia fidei\\ex evidentia rei}}
-%           \smallskip\schemabox{sensus literae}
-% }
-% \UCschema%
-% \end{lstlisting}
-%
-% \noindent The foregoing example produces the following:
+% \begin{quote}\small
+% \StartNum
+% \begin{verbatim}
+%\LCschema
+%\Schema{0.1ex}{4.8ex}
+%{\hbox{sensus literalis}}
+%{
+%  \schema{\schemabox{sensus\\literalis\\(improprie)}}
+%         {\schemabox{e parallelismo clarior\\
+%             ex analogia fidei\\ex evidentia rei}}
+%          \smallskip\schemabox{sensus literae}
+%}
+%\UCschema\end{verbatim}
+% \end{quote}
+% \vspace{-2ex}
 % \begin{displaymath}
-% \LCschema%
+% \LCschema
 % \Schema{0.1ex}{4.8ex}
 % {\hbox{sensus literalis}}
 % {
 %   \schema{\schemabox{sensus\\literalis\\(improprie)}}
-%          {\schemabox{ex parallelismo clarior\\
+%          {\schemabox{e parallelismo clarior\\
 %              ex analogia fidei\\ex evidentia rei}}
 %           \smallskip\schemabox{sensus literae}
 % }
-% \UCschema%
-% \end{displaymath}
+% \UCschema
+% \end{displaymath}\smallskip
+% \newpage
+% 
+% \DescribeMacro{\SwitchSB}
+% The macro \cmd{\SwitchSB} is a per-use toggle. It causes a particular \cmd{\schemabox} to do the opposite of whatever \cmd{\LCschema} and \cmd{\UCschema} call for. It should be placed immediately before the \cmd{\schemabox} to be affected and its effect is reset when that particular \cmd{\schemabox} terminates. 
 %
-% \DescribeMacro{\SwitchSB} The macro \cmd{\SwitchSB} causes a particular \cmd{\schemabox} to do the opposite of whatever \cmd{\LCschema} and \cmd{\UCschema} call for. It should be placed immediately before the \cmd{\schemabox} to be affected and its effect is reset thereafter.
+% Note, however, that mixing lowercase and uppercase-styles of \cmd{\schemabox} may put parts of a schema slightly  off-center, meaning that one must \meta{adjust} a \cmd{\Schema} by a tenth of an ex, give or take. Also remember that one can add \cmd{\strut} as needed to make manual adjustments.\medskip
 %
-% Note, however, that mixing lowercase and uppercase-styles of \cmd{\schemabox} may put parts of a schema slightly  off-center, meaning that one must \meta{adjust} a \cmd{\Schema} by a tenth of an ex, give or take.
+% \DescribeMacro{\NudgeSB}
+% The macro \cmd{\NudgeSB} is another ``per-use'' macro that causes a particular \cmd{\schemabox} to add a default \texttt{0.2em} kern at the end of every line of text, then is reset thereafter. It ``corrects a corrective.''
+% 
+% \cmd{\NudgeSB} is meant to be used on the left-hand side of a closed \cmd{\schema} or \cmd{\Schema}. Both macros insert a kern of \texttt{-0.2em} to draw the cusp or flexion point of the delimiter closer to the left-hand side. This corrects the spacing of delimiters that open to the right. When a delimiter opens to the left, the kern may be needed if there is punctuation, or it may throw off the spacing.\medskip
 %
-% Also remember that you can add \cmd{\strut} as needed to make manual adjustments.\\
+% \DescribeMacro{\SBNudgeFactor}
+% This macro is the kern used by \cmd{\NudgeSB} to make its corrective. Sometimes you feel like a nudge, sometimes you don't, and sometimes you just want a little nudge. We used the example below on page~\pageref{page:SBNudge} before the schema with two braces, all in a group to localize any changes:
+% \begin{quote}
+% \verb+\renewcommand\SBNudgeFactor{\kern0.08em}+
+% \end{quote}
 %
-% \DescribeMacro{\NudgeSB} The macro \cmd{\NudgeSB} is another ``per-use'' macro that causes a particular \cmd{\schemabox} to add a 0.2em kern at the end of every line of text. This is meant to be used especially with left-hand-side material in a closed \cmd{\schema} or \cmd{\Schema} because they use a -0.2em kern to draw the braces closer to the box. That is because many lines of text in schemata terminate with punctuation. The negative kern is a default way to prevent too much white space.
-%
-% When no punctuation is there and more white space is desired, \cmd{\NudgeSB} gets the text to be the same distance from the brace as the right-hand-side material. \cmd{\NudgeSB} should be placed immediately before the \cmd{\schemabox} to be affected and, like \cmd{\SwitchSB}, it is reset thereafter.
-%
 % \subsection{Tutorial}
+% 
+% Now that we have explained what all the macros are supposed to do, let's take a journey together in establishing and practicing a methodology for creating general forms of schemata.
 %
 % \subsubsection{Starting Off Basic}
 %
-% So you want to typeset a seventeenth-century schema. You try the following:
-% \begin{multicols}{2}
-% \begin{lstlisting}
-% \schema{a}{b\\c}
-% \end{lstlisting}
-% \parbox{0.8\columnwidth}{\schema{a}{b\\c}}
-% \end{multicols}
-% \noindent That went badly. Then you remember that schemata hold internal vertical material and need something to organize the horizontal text in such a list. This weird \cmd{\schemabox} thing should do:
-% \begin{multicols}{2}
-% \begin{lstlisting}
-% \schema
+% Let's ignore pretty much everything that we learned so far and attempt to typeset a schema with the following:
+% \begin{paracol}{2}
+% \begin{quote}\small
+% \StartNum
+% \begin{verbatim}
+%\schema{a}{b\\c}\end{verbatim}
+% \end{quote}
+% \switchcolumn
+% 
+% \vfil\schema{a}{b\\c}\medskip
+% \end{paracol}
+% 
+% Oh dear, that went badly. Oh, wait! Schemata hold internal vertical lists. That weird \cmd{\schemabox} thing handles just that case:
+% \begin{paracol}{2}
+% \begin{quote}\small
+% \StartNum
+% \begin{verbatim}
+%\schema
+%  {\schemabox{a}}
+%  {\schemabox{b\\c}}\end{verbatim}
+% \end{quote}
+% \switchcolumn
+% 
+% \vfil\schema
 %   {\schemabox{a}}
 %   {\schemabox{b\\c}}
-% \end{lstlisting}
-% \schema
+% \end{paracol}
+%
+% Now we are getting somewhere! But if we do not have a ``big'' side we get:
+% \begin{paracol}{2}
+% \begin{quote}\small
+% \StartNum
+% \begin{verbatim}
+%\schema
+%  {\schemabox{a}}
+%  {\schemabox{b}}\end{verbatim}
+% \end{quote}
+% \switchcolumn
+% 
+% \vfil\schema
 %   {\schemabox{a}}
-%   {\schemabox{b\\c}}
-% \end{multicols}
+%   {\schemabox{b}}
+% \end{paracol}
+% 
+% When there is no ``big'' side of a schema, perhaps use inline math mode:
+% \begin{quote}
+% |\(\hbox{a}\left\{\hbox{\strut b}\right.\)|\qquad \(\hbox{a}\left\{\hbox{\strut gib}\right.\)
+% \end{quote}
 %
-% \noindent Now we are getting somewhere! The ``big'' side of the schema really should be more than one line high. Otherwise just use inline math mode or text.
+% \subsubsection{\textit{Loci} 101}
 %
-% \subsubsection{\emph{Loci} 101}
+% We move on from trivial examples to several real-world examples based on published material. Let's try a few examples from \emph{Loci Theologici} by Martin Chemnitz. We begin by using only \cmd{\schema}:
 %
-% Let's try a few examples from \emph{Loci Theologici}. We begin with this example, using only the \cmd{\schema} macro:
+% \begin{quote}\small
+% \StartNum
+% \begin{verbatim}
+%\schema
+%{
+%  \schemabox{Subjectum theo-\\
+%  logi\ae{} est Notitia\\
+%  Dei. Considerat\\
+%  ergo, Dei, vel}
+%}
+%{
+%  \schema
+%  {
+%    \schemabox{\textsc{Essentiam},}
+%  }
+%  {
+%    \schemabox{Unitate natur\ae{}.\\
+%    Trinitate personarum.\\
+%    Operibus ad intra.}
+%  }
+%  \schema
+%  {
+%    \schemabox{\textsc{Voluntatem},\\
+%    manifestatam in\\
+%    operibus ad extra;\\
+%    ut in}
+%  }
+%  {
+%    \schemabox{Creatione.\\
+%    Sustentatione natur\ae{} laps\ae{}.\\
+%    Reparatione.\\
+%    Conversione.\\
+%    Justificatione.\\
+%    Sanctificatione \&\\
+%    Glorificatione ejusdem.}
+%  }
+%}\end{verbatim}
+% \end{quote}
 %
-% \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
-% \schema
-% {
-%   \schemabox{Subjectum theo-\\
-%     logi\ae{} est Notitia\\
-%     Dei. Considerat\\
-%     ergo, Dei, vel}
-% }
-% {
-%   \schema
-%   {
-%     \schemabox{\textsc{Essentiam},}
-%   }
-%   {
-%     \schemabox{Unitate natur\ae{}.\\
-%       Trinitate personarum.\\
-%       Operibus ad intra.}
-%   }
-%   \schema
-%   {
-%     \schemabox{\textsc{Voluntatem},\\
-%       manifestatam in\\
-%       operibus ad extra;\\
-%       ut in}
-%   }
-%   {
-%     \schemabox{Creatione.\\
-%       Sustentatione natur\ae{} laps\ae{}.\\
-%       Reparatione.\\
-%       Conversione.\\
-%       Justificatione.\\
-%       Sanctificatione \&\\
-%       Glorificatione ejusdem.}
-%   }
-% }
-% \end{lstlisting}
-%
 % \begin{displaymath}
 % \schema
 % {
@@ -554,45 +836,49 @@
 %   }
 %   {
 %     \schemabox{Unitate natur\ae{}.\\
-%       Trinitate personarum.\\
-%       Operibus ad intra.}
+%     Trinitate personarum.\\
+%     Operibus ad intra.}
 %   }
 %   \schema
 %   {
 %     \schemabox{\textsc{Voluntatem},\\
-%       manifestatam in\\
-%       operibus ad extra;\\
-%       ut in}
+%     manifestatam in\\
+%     operibus ad extra;\\
+%     ut in}
 %   }
 %   {
 %     \schemabox{Creatione.\\
-%       Sustentatione natur\ae{} laps\ae{}.\\
-%       Reparatione.\\
-%       Conversione.\\
-%       Justificatione.\\
-%       Sanctificatione \&\\
-%       Glorificatione ejusdem.}
+%     Sustentatione natur\ae{} laps\ae{}.\\
+%     Reparatione.\\
+%     Conversione.\\
+%     Justificatione.\\
+%     Sanctificatione \&\\
+%     Glorificatione ejusdem.}
 %   }
 % }
 % \end{displaymath}
-% Something is off here. The ``simple'' schema automatically adjusts the brace height to the right-hand side. But that includes the \emph{entire} right-hand side. Moreover, \cmd{\schema} will produce cumulatively larger braces when nesting.
+% 
+% This is not what we want; \cmd{\schema} works for the ``leaves'' on the right, but not for the ``root'' on the left. The brace adjusts to the entire right-hand side.
 %
-% We have two ``leaves'' on the right-hand side, so we only have one \cmd{\schema} to change into a \cmd{\Schema}. We also add a \cmd{\smallskip} to separate the ``leaves.'' We change the following two lines above:
-%
-% \begin{lstlisting}
-% \Schema{-1ex}{8.7ex}
-% \end{lstlisting}
-%
-% \begin{lstlisting}[firstnumber=17]
-%   }\smallskip
-% \end{lstlisting}
+% Before we address the brace, we adjust the spacing, starting from the ``leaves'' at right, going to the  ``root'' on the left. We add a \cmd{\smallskip} after a \cmd{\schema} to space out the ``leaves'':\footnote{Using \cmd{\vskip} in \PlainTeX{} starts a new paragraph, so \cmd{\smallskip} cannot be used within the horizontal mode \cmd{\schemabox} when using \PlainTeX. In some cases, putting vertical space in the first or last lines of a \cmd{\schemabox}, regardless of format, will affect centering.}
+% \begin{quote}
+% \StartNum\addtocounter{VerbLine}{16}
+% \begin{verbatim} }\smallskip\end{verbatim}
+% \end{quote}
+% 
+% We have two \cmd{\schema} ``leaves'' and one ``root,'' so we only change one \cmd{\schema} into a \cmd{\Schema}. We count the lines of text, estimate, then revise. Below we have 8--9 lines of text from ``\textsc{Essentiam}'' to ``ut in.'' We estimate \meta{size} at \texttt{8.5ex} and \meta{adjust} at \texttt{0ex}. The large brace is too low, so we \meta{adjust} to \texttt{-1ex}, raising the left side and the delimiter, while lowering the right. We then refine \meta{size} to \texttt{8.7ex}.\footnote{Changes in \TeX{} distributions can change font metrics and thus, the metrics of your schemata.}
+% \begin{quote}
+% \StartNum\begin{verbatim} \Schema{-1ex}{8.7ex}\end{verbatim}
+% \end{quote}
+% 
+% After those two line changes, we have the finished schema that now looks like it is supposed to appear:
 % \begin{displaymath}
 % \Schema{-1ex}{8.7ex}
 % {
 %   \schemabox{Subjectum theo-\\
-%      logi\ae{} est Notitia\\
-%      Dei. Considerat\\
-%      ergo, Dei, vel}
+%   logi\ae{} est Notitia\\
+%   Dei. Considerat\\
+%   ergo, Dei, vel}
 % }
 % {
 % \schema
@@ -601,146 +887,223 @@
 %   }
 %   {
 %     \schemabox{Unitate natur\ae{}.\\
-%        Trinitate personarum.\\
-%        Operibus ad intra.}
+%     Trinitate personarum.\\
+%     Operibus ad intra.}
 %   }\smallskip
 %   \schema
 %   {
-%    \schemabox{\textsc{Voluntatem},\\
-%        manifestatam in\\
-%        operibus ad extra;\\
-%        ut in}
+%     \schemabox{\textsc{Voluntatem},\\
+%     manifestatam in\\
+%     operibus ad extra;\\
+%     ut in}
 %   }
 %   {
 %     \schemabox{Creatione.\\
-%        Sustentatione natur\ae{} %
-%          laps\ae{}.\\
-%        Reparatione.\\
-%        Conversione.\\
-%        Justificatione.\\
-%        Sanctificatione \&\\
-%        Glorificatione ejusdem.}
+%     Sustentatione natur\ae{} %
+%     laps\ae{}.\\
+%     Reparatione.\\
+%     Conversione.\\
+%     Justificatione.\\
+%     Sanctificatione \&\\
+%     Glorificatione ejusdem.}
 %   }
 % }
 %\end{displaymath}
 %
-% Now that looks better! We added a \cmd{\smallskip} at the end of the right-hand side material of a \cmd{\schema} to space out the ``leaves.'' That usually is the best practice in spacing out elements. You cannot put \cmd{\smallskip} and the like into a \cmd{\schemabox} in plain \TeX, and usually you want to avoid doing so in the first or last lines of a \cmd{\schemabox} in \LaTeX{} to aid proper centering.
+% \subsubsection{Going Big}
+% 
+% Thus far, we have dealt with many trivial examples. We have amassed a significant body of knowledge:
+% 
+% \begin{enumerate}
+% \item We usually use \cmd{\schemabox} for the contents of a schema.
+% \item Schemata usually ``open'' from left to right, from ``root'' to ``leaves.''
+% \item We typeset ``leaves'' with \cmd{\schema} to save time.
+% \item We typeset other parts with \cmd{\Schema}.
+% \item We adjust spacing and delimiter size by working from the ``leaves'' to the ``root'' to minimize the number of corrective passes.
+% \item We may need to consider differences between \LaTeX{} and \PlainTeX{} when using \cmd{\vskip}, \cmd{\smallskip}, etc., as well as \cmd{\newbox}, which is an \cmd{\outer} macro in \PlainTeX. These differences can cause unexpected errors.
+% \item We may need to use the tweaking macros \cmd{\UCschema}, \cmd{\LCschema}, \cmd{\SwitchSB}, and \cmd{\NudgeSB}.
+% \end{enumerate}
+% \newpage
+% 
+% Armed with this information, we sally forth to reproduce the following schema found on page 13 of Martin Chemnitz, \textit{Loci Theologici} (Frankfurt, 1653).\footnote{This image was created from a photograph taken by the author. It is the victim of a few cage transforms, despeckling, color selection and fill, color equalization, cleanup, scaling, and reduction to a two-color indexed palette.}\bigskip
+% 
+% \noindent\includegraphics[width=\textwidth]{schemata.png}\bigskip
 %
-% Always work from right to left when adjusting the spacing of a schema. Start from the ``leaves'' and work to the  ``root.''
+% \begin{itemize}
+% \item As you see, the braces were composed of various type sorts, mainly smaller rules and assorted curly and bendy bits.
+% 
+% \item Because this is Latin we will see roman, italic and small caps, but little of other typefaces. We do see \emph{s-medialis} and many old-style ligatures.
+% 
+% \item In the reproduction we will use \emph{s-finalis} only, but we will retain some ligatures.
+% 
+% \item We will improve spacing between elements.
+% 
+% \item We will not aim for an exact reproduction of line breaks and such.
+% \end{itemize}
+% \newpage
+% 
+% We begin by looking at the ``leaves,'' the rightmost bits of text enclosed by braces. We can use \cmd{\schema} in these cases. That results in the following:
+% 
+% \begin{quote}
+% \StartNum
+% \begin{verbatim}
+% \schema
+% {\schemabox{\textsc{Per se}:\\ scilicet.}}
+% {
+%   \schemabox{Unus in essentia.}
+%   \schemabox{Trinus in personis.}
+% }\end{verbatim}
+% \qquad\schema
+% {\schemabox{\textsc{Per se}:\\ scilicet.}}
+% {
+%   \schemabox{Unus in essentia.}
+%   \schemabox{Trinus in personis.}
+% }
+% \end{quote}
 %
-% The \cmd{\Schema} macro requires manual brace adjustment and sizing. Count the lines of text, estimate, then revise. Here we have between eight and nine lines of text from ``\textsc{Essentiam}'' down to ``ut in.'' First set the \meta{size} to |8.5ex| and \meta{adjust} to |0ex|. The large brace will be a little too low. Set \meta{adjust} to |-1ex| to raise the brace about half a line and to lower the left-hand side about half a line, keeping everything centered. Finally, set \meta{size} to |8.7ex| or to taste.
+% \begin{quote}
+% \StartNum
+% \begin{verbatim}
+%\schema
+%{\schemabox{Ad hominem\\ quem vel}}
+%{
+%  \schemabox{Accusat \& terret, \textsc{Per Legem},\\
+%  Consolatur \& erigit, \textsc{Per Evangelium}.\\
+%  Salvat, \textsc{Per Christum}.\\
+%  Renovat, \textsc{Per Spiritum Sanctum}.\\
+%  Sanctificat, \textsc{Per Verbum} \& \textsc{Sacramenta}.\\
+%  Castigat, tentat \& exercet, \textsc{Per Crucem}.\\
+%  Glorificat \textsc{Per Resurrectionem Carnis}\\
+%  \textsc{\quad Ad Vitam \AE{}ternam}.}
+%}\end{verbatim}
+% \qquad\schema
+% {\schemabox{Ad hominem\\ quem vel}}
+% {
+%   \schemabox{Accusat \& terret, \textsc{Per Legem},\\
+%   Consolatur \& erigit, \textsc{Per Evangelium}.\\
+%   Salvat, \textsc{Per Christum}.\\
+%   Renovat, \textsc{Per Spiritum Sanctum}.\\
+%   Sanctificat, \textsc{Per Verbum} \& \textsc{Sacramenta}.\\
+%   Castigat, tentat \& exercet, \textsc{Per Crucem}.\\
+%   Glorificat \textsc{Per Resurrectionem Carnis}\\
+%   \textsc{\quad Ad Vitam \AE{}ternam}.}
+% }
+% \end{quote}
 %
-% \textbf{Changes in \TeX{} distributions can change font metrics and thus, the metrics of your schemata.}
-% \clearpage
+% \begin{quote}
+% \StartNum
+% \begin{verbatim}
+%\schemabox{Ante lapsum.}
+%       
+%\schema
+%{\schemabox{Post lapsum:}}
+%{
+%  \schemabox{Ante Regenerationem \&\\
+%  Renovationem S. Sancti.}
+%  \schemabox{Post Regenerationem \&\\
+%  Renovationem S. Sancti.}
+%}\end{verbatim}
+% \qquad\schemabox{Ante lapsum.}\footnote{We delete line 2 after \emph{Ante lapsum} in the large example on page~\pageref{page:firstbig} and thereafter.}
+% 
+% \qquad\schema
+% {\schemabox{Post lapsum:}}
+% {
+%   \schemabox{Ante Regenerationem \&\\
+%   Renovationem S. Sancti.}
+%   \schemabox{Post Regenerationem \&\\
+%   Renovationem S. Sancti.}
+% }
+% \end{quote}
+% \newpage
 %
-% \subsubsection{Going Big}
+% \begin{quote}
+% \StartNum
+% \begin{verbatim}
+%\schema
+%{\schemabox{\textsc{Deum},}}
+%{
+%  \schemabox{P\oe{}nitentia agens, agnitis peccatis \&\\
+%  ira Dei cognita \textsc{Ex Lege}.\\
+%  Erigens se \textsc{Voce Evangelii}.\\
+%  Credens \textsc{In Christum Salvatorem}.\\
+%  Non repugnans \textsc{Spiritui Sancto} impellenti.\\
+%  Audiens \textsc{Verbum}: \& utens \textsc{Sacramentis}.\\
+%  Patienter \& constanter sufferens \textsc{Crucem}.\\
+%  Sperans \& expectans glorificationem\\
+%  \textsc{\quad In Resurrectione Carnis}\\
+%  \textsc{\quad Ad Vitam \AE{}ternam}.}
+%}\end{verbatim}
+% \qquad\schema
+% {\schemabox{\textsc{Deum},}}
+% {
+%   \schemabox{P\oe{}nitentia agens, agnitis peccatis \&\\
+%   ira Dei cognita \textsc{Ex Lege}.\\
+%   Erigens se \textsc{Voce Evangelii}.\\
+%   Credens \textsc{In Christum Salvatorem}.\\
+%   Non repugnans \textsc{Spiritui Sancto} impellenti.\\
+%   Audiens \textsc{Verbum}: \& utens \textsc{Sacramentis}.\\
+%   Patienter \& constanter sufferens \textsc{Crucem}.\\
+%   Sperans \& expectans glorificationem\\
+%   \textsc{\quad In Resurrectione Carnis}\\
+%   \textsc{\quad Ad Vitam \AE{}ternam}.}
+% }
+% \end{quote}
 %
-% We begin with the following example, where the \cmd{\Schema} braces all have dummy values of |0ex| \meta{adjust} and |5ex| \meta{size}. Please do not be alarmed at how bad this looks right now!
+% \begin{quote}
+% \StartNum
+% \begin{verbatim}
+%\schema
+%{\schemabox{seipsum ratione}}
+%{\schemabox{Anim\ae{}\\ vel\\ Corporis}}\end{verbatim}
+% \qquad\schema
+% {\schemabox{seipsum ratione}}
+% {\schemabox{Anim\ae{}\\ vel\\ Corporis}}
+% \end{quote}
 %
-% \begin{displaymath}\bgroup\footnotesize%
-% \Schema{0ex}{5ex}
+% \begin{quote}
+% \StartNum
+% \begin{verbatim}
+%\schema
+%{\schemabox{Amicum ra-\\ tione vel}}
+%{
+%  \schemabox{Religionis.\\
+%  Politic\ae{} \& \OE{}conomic\ae{}.\\
+%  Cognationis.\\
+%  Agnationis.}
+%}
+%
+%\schemabox{Inimicum.}\end{verbatim}
+% \qquad\schema
+% {\schemabox{Amicum ra-\\ tione vel}}
 % {
-%   \schemabox{Subjectum \& summa\\
-%      univers\ae{} Scriptur\ae{},\\
-%      est \textsc{Cognitio} vel}
+%   \schemabox{Religionis.\\
+%   Politic\ae{} \& \OE{}conomic\ae{}.\\
+%   Cognationis.\\
+%   Agnationis.}
 % }
-% {
-%   \Schema{0ex}{5ex}
-%   {
-%     \schemabox{\textsc{Dei}, qualis \\ sit, aut}
-%   }
-%   {
-%     \schema
-%     {\schemabox{\textsc{Per se}:\\ scilicet.}}
-%     {
-%       \schemabox{Unus in essentia.}
-%       \schemabox{Trinus in personis.}
-%     }
-%     \schema
-%     {\schemabox{Ad hominem\\ quem vel}}
-%     {
-%       \schemabox{Accusat \& terret, \textsc{Per Legem},\\
-%         Consolatur \& erigit, \textsc{Per Evangelium}.\\
-%         Salvat, \textsc{Per Christum}.\\
-%         Renovat, \textsc{Per Spiritum Sanctum}.\\
-%         Sanctificat, \textsc{Per Verbum} \& \textsc{Sacramenta}.\\
-%         Castigat, tentat \& exercet, \textsc{Per Crucem}.\\
-%         Glorificat \textsc{Per Resurrectionem Carnis}\\
-%         \textsc{Ad Vitam \AE{}ternam}.}
-%     }
-%   }
-%   \Schema{0ex}{5ex}
-%   {
-%     \schemabox{\textsc{Hominis},\\ qualis sit}
-%   }
-%   {
-%     \Schema{0ex}{5ex}
-%     {\schemabox{\textsc{Per se}:}}
-%     {
-%       \schemabox{Ante lapsum.}
-%       \schema
-%       {\schemabox{Post lapsum:}}
-%       {
-%         \schemabox{Ante Regenerationem \&\\
-%           Renovationem S. Sancti.}
-%         \schemabox{Post Regenerationem \&\\
-%           Renovationem S. Sancti.}
-%       }
-%     }
-%     \Schema{0ex}{5ex}
-%     {\schemabox{Ad}}
-%     {
-%       \schema
-%       {\schemabox{\textsc{Deum}}}
-%       {
-%         \schemabox{P\oe{}nitentia agens, agnitis peccatis \&\\
-%           ira Dei cognita \textsc{Ex Lege}.\\
-%           Erigens se \textsc{Voce Evangelii}.\\
-%           Credens \textsc{In Christum Salvatorem}.\\
-%           Non repugnans \textsc{Spiritui Sancto} impellenti.\\
-%           Audiens \textsc{Verbum}: \& utens \textsc{Sacramentis}.\\
-%           Patienter \& constanter sufferens \textsc{Crucem}.\\
-%           Sperans \& expectans glorificationem\\
-%           \textsc{In Resurrectione Carnis}\\
-%           \textsc{Ad Vitam \AE{}ternam}.}
-%       }
-%       \schema
-%         {\schemabox{seipsum ratione}}
-%         {\schemabox{Anim\ae{}\\ vel\\ Corporis}}
-%       \Schema{0ex}{5ex}
-%         {\schemabox{Proximum,}}
-%         {
-%           \schema
-%           {\schemabox{Amicum ra-\\ tione vel}}
-%           {
-%             \schemabox{Religionis.\\
-%               Politic\ae{} \& \OE{}conomic\ae{}.\\
-%               Cognationis.\\
-%               Agnationis.}
-%           }
-%           \schemabox{Inimicum.}
-%         }
-%     }
-%   }
-% }\egroup%
-%\end{displaymath}
-% Below we have the code listing for the schema above, wherein you can get the idea of how the example correlates with the source. The code listing breaks at sensible places across pages:\\
+% 
+% \qquad\schemabox{Inimicum.}\footnote{We delete line 9 before \emph{Inimicum} in the large example on page~\pageref{page:firstbig} and thereafter.}
+% \end{quote}
+% \newpage
+% 
+% \phantomsection
+% \label{page:firstbig}
+% Below we build all of the ``leaves'' into the larger schema using \cmd{\Schema}. The braces all have dummy values of \texttt{0ex} \meta{adjust} and \texttt{5ex} \meta{size}. Please do not be alarmed at how bad this looks right now! We will adjust the layout shortly. We just want to see the general look of things:\bigskip
 %
-% \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
+% \bgroup\small\begin{displaymath}
 % \Schema{0ex}{5ex}
 % {
-%   \schemabox{Subjectum \& summa\\
-%      univers\ae{} Scriptur\ae{},\\
-%      est \textsc{Cognitio} vel}
+%   \schemabox{Subjectum \&\\
+%   summa univer-\\
+%   s\ae{} Scriptur\ae{},\\
+%   est \textsc{Cognitio}\\
+%   vel}
 % }
 % {
 %   \Schema{0ex}{5ex}
 %   {
-%     \schemabox{\textsc{Dei}, qualis \\ sit, aut}
+%     \schemabox{\textsc{Dei}, qua-\\lis sit, aut}
 %   }
-% \end{lstlisting}
-% \clearpage
-% \begin{lstlisting}[firstnumber=12,basicstyle=\ttfamily\footnotesize]
 %   {
 %     \schema
 %     {\schemabox{\textsc{Per se}:\\ scilicet.}}
@@ -752,13 +1115,13 @@
 %     {\schemabox{Ad hominem\\ quem vel}}
 %     {
 %       \schemabox{Accusat \& terret, \textsc{Per Legem},\\
-%         Consolatur \& erigit, \textsc{Per Evangelium}.\\
-%         Salvat, \textsc{Per Christum}.\\
-%         Renovat, \textsc{Per Spiritum Sanctum}.\\
-%         Sanctificat, \textsc{Per Verbum} \& \textsc{Sacramenta}.\\
-%         Castigat, tentat \& exercet, \textsc{Per Crucem}.\\
-%         Glorificat \textsc{Per Resurrectionem Carnis}\\
-%         \textsc{Ad Vitam \AE{}ternam}.}
+%       Consolatur \& erigit, \textsc{Per Evangelium}.\\
+%       Salvat, \textsc{Per Christum}.\\
+%       Renovat, \textsc{Per Spiritum Sanctum}.\\
+%       Sanctificat, \textsc{Per Verbum} \& \textsc{Sacramenta}.\\
+%       Castigat, tentat \& exercet, \textsc{Per Crucem}.\\
+%       Glorificat \textsc{Per Resurrectionem Carnis}\\
+%       \textsc{\quad Ad Vitam \AE{}ternam}.}
 %     }
 %   }
 %   \Schema{0ex}{5ex}
@@ -774,9 +1137,9 @@
 %       {\schemabox{Post lapsum:}}
 %       {
 %         \schemabox{Ante Regenerationem \&\\
-%           Renovationem S. Sancti.}
+%         Renovationem S. Sancti.}
 %         \schemabox{Post Regenerationem \&\\
-%           Renovationem S. Sancti.}
+%         Renovationem S. Sancti.}
 %       }
 %     }
 %     \Schema{0ex}{5ex}
@@ -783,56 +1146,200 @@
 %     {\schemabox{Ad}}
 %     {
 %       \schema
-%       {\schemabox{\textsc{Deum}}}
+%       {\schemabox{\textsc{Deum},}}
 %       {
 %         \schemabox{P\oe{}nitentia agens, agnitis peccatis \&\\
-%           ira Dei cognita \textsc{Ex Lege}.\\
-%           Erigens se \textsc{Voce Evangelii}.\\
-%           Credens \textsc{In Christum Salvatorem}.\\
-%           Non repugnans \textsc{Spiritui Sancto} impellenti.\\
-%           Audiens \textsc{Verbum}: \& utens \textsc{Sacramentis}.\\
-%           Patienter \& constanter sufferens \textsc{Crucem}.\\
-%           Sperans \& expectans glorificationem\\
-%           \textsc{In Resurrectione Carnis}\\
-%           \textsc{Ad Vitam \AE{}ternam}.}
+%         ira Dei cognita \textsc{Ex Lege}.\\
+%         Erigens se \textsc{Voce Evangelii}.\\
+%         Credens \textsc{In Christum Salvatorem}.\\
+%         Non repugnans \textsc{Spiritui Sancto} impellenti.\\
+%         Audiens \textsc{Verbum}: \& utens \textsc{Sacramentis}.\\
+%         Patienter \& constanter sufferens \textsc{Crucem}.\\
+%         Sperans \& expectans glorificationem\\
+%         \textsc{\quad In Resurrectione Carnis}\\
+%         \textsc{\quad Ad Vitam \AE{}ternam}.}
 %       }
-% \end{lstlisting}
-% \clearpage
-% \begin{lstlisting}[firstnumber=67,basicstyle=\ttfamily\footnotesize]
 %       \schema
 %         {\schemabox{seipsum ratione}}
 %         {\schemabox{Anim\ae{}\\ vel\\ Corporis}}
 %       \Schema{0ex}{5ex}
-%         {\schemabox{Proximum,}}
+%       {\schemabox{Proximum,}}
+%       {
+%         \schema
+%         {\schemabox{Amicum ra-\\ tione vel}}
 %         {
-%           \schema
-%           {\schemabox{Amicum ra-\\ tione vel}}
-%           {
-%             \schemabox{Religionis.\\
-%               Politic\ae{} \& \OE{}conomic\ae{}.\\
-%               Cognationis.\\
-%               Agnationis.}
-%           }
-%           \schemabox{Inimicum.}
+%           \schemabox{Religionis.\\
+%           Politic\ae{} \& \OE{}conomic\ae{}.\\
+%           Cognationis.\\
+%           Agnationis.}
 %         }
+%         \schemabox{Inimicum.}
+%       }
 %     }
 %   }
 % }
-% \end{lstlisting}
+%\end{displaymath}\egroup\bigskip
 %
-% First, we add space between the ``leaves'' of the tree. If you do not work from right to left, you will waste time revising the ``leaves'' and ``branches.''
+% Below we have the code listing for the schema above. One can see that there is much correlation between the listing and the printed result:
 %
-% \begin{displaymath}\bgroup\footnotesize%
+% \begin{quote}\small
+% \StartNum
+% \begin{verbatim}
+%\Schema{0ex}{5ex}
+%{
+%  \schemabox{Subjectum \&\\
+%  summa univer-\\
+%  s\ae{} Scriptur\ae{},\\
+%  est \textsc{Cognitio}\\
+%  vel}
+%}
+%{
+%  \Schema{0ex}{5ex}
+%  {
+%    \schemabox{\textsc{Dei}, qua-\\lis sit, aut}
+%  }
+%  {
+%    \schema
+%    {\schemabox{\textsc{Per se}:\\ scilicet.}}
+%    {
+%      \schemabox{Unus in essentia.}
+%      \schemabox{Trinus in personis.}
+%    }
+%    \schema
+%    {\schemabox{Ad hominem\\ quem vel}}
+%    {
+%      \schemabox{Accusat \& terret, \textsc{Per Legem},\\
+%      Consolatur \& erigit, \textsc{Per Evangelium}.\\
+%      Salvat, \textsc{Per Christum}.\\
+%      Renovat, \textsc{Per Spiritum Sanctum}.\\
+%      Sanctificat, \textsc{Per Verbum} \& \textsc{Sacramenta}.\\
+%      Castigat, tentat \& exercet, \textsc{Per Crucem}.\\
+%      Glorificat \textsc{Per Resurrectionem Carnis}\\
+%      \textsc{\quad Ad Vitam \AE{}ternam}.}
+%    }
+%  }
+%  \Schema{0ex}{5ex}
+%  {
+%    \schemabox{\textsc{Hominis},\\ qualis sit}
+%  }
+%  {
+%    \Schema{0ex}{5ex}
+%    {\schemabox{\textsc{Per se}:}}
+%    {
+%      \schemabox{Ante lapsum.}
+%      \schema
+%      {\schemabox{Post lapsum:}}
+%      {
+%        \schemabox{Ante Regenerationem \&\\
+%        Renovationem S. Sancti.}
+%        \schemabox{Post Regenerationem \&\\
+%        Renovationem S. Sancti.}
+%      }
+%    }
+%    \Schema{0ex}{5ex}
+%    {\schemabox{Ad}}
+%    {
+%      \schema
+%      {\schemabox{\textsc{Deum},}}
+%      {
+%        \schemabox{P\oe{}nitentia agens, agnitis peccatis \&\\
+%        ira Dei cognita \textsc{Ex Lege}.\\
+%        Erigens se \textsc{Voce Evangelii}.\\
+%        Credens \textsc{In Christum Salvatorem}.\\
+%        Non repugnans \textsc{Spiritui Sancto} impellenti.\\
+%        Audiens \textsc{Verbum}: \& utens \textsc{Sacramentis}.\\
+%        Patienter \& constanter sufferens \textsc{Crucem}.\\
+%        Sperans \& expectans glorificationem\\
+%        \textsc{\quad In Resurrectione Carnis}\\
+%        \textsc{\quad Ad Vitam \AE{}ternam}.}
+%      }
+%      \schema
+%        {\schemabox{seipsum ratione}}
+%        {\schemabox{Anim\ae{}\\ vel\\ Corporis}}
+%      \Schema{0ex}{5ex}
+%      {\schemabox{Proximum,}}
+%      {
+%        \schema
+%        {\schemabox{Amicum ra-\\ tione vel}}
+%        {
+%          \schemabox{Religionis.\\
+%          Politic\ae{} \& \OE{}conomic\ae{}.\\
+%          Cognationis.\\
+%          Agnationis.}
+%        }
+%        \schemabox{Inimicum.}
+%      }
+%    }
+%  }
+%}\end{verbatim}
+% \end{quote}
+%
+% First, we add space between the ``leaves'' of the tree. If you do not work from right to left, you will waste time revising the ``leaves'' and ``branches.'' The following lines, shown with some surrounding context, were changed.
+%
+% Remember that you can add a \cmd{\smallskip} within a \cmd{\schemabox} in \LaTeX{}, but not in \PlainTeX. We have split the text below into two boxes to make it format-agnostic. See also how the second \cmd{\smallskip} follows the closing brace of the right-hand side, not the \cmd{\schemabox.} That adjusts the entire \cmd{\schema}.
+% \begin{quote}\small\StartNum\addtocounter{VerbLine}{16}
+% \begin{verbatim}
+%    {
+%      \schemabox{Unus in essentia.}\smallskip
+%      \schemabox{Trinus in personis.}
+%    }\smallskip\end{verbatim}
+% \end{quote}
+% 
+% Again, below, the skip comes at the close of a \cmd{\schema}.
+% \begin{quote}\small\ContinueNum\addtocounter{VerbLine}{10}
+% \begin{verbatim}
+%      \textsc{\quad Ad Vitam \AE{}ternam}.}
+%    }\medskip\end{verbatim}
+% \end{quote}
+% 
+% Below, the first skip helps to separate the lone \cmd{\schemabox} from the \cmd{\schema} beneath it. This illustrates how the internal vertical lists of schemata can contain heterogeneous material.
+% 
+% A medium skip is placed between two \cmd{\schemabox}es, which slightly throws off the way the brace spans the boxes. A small skip is put at the end of the last \cmd{\schemabox} to correct that. Sometimes putting skips within a \cmd{\schema} can be tricky. Then a \cmd{\smallskip} is added again at the end of the right-hand side.
+% \begin{quote}\small\ContinueNum\addtocounter{VerbLine}{8}
+% \begin{verbatim}
+%    {
+%      \schemabox{Ante lapsum.}\smallskip
+%      \schema
+%      {\schemabox{Post lapsum:}}
+%      {
+%        \schemabox{Ante Regenerationem \&\\
+%        Renovationem S. Sancti.}\medskip
+%        \schemabox{Post Regenerationem \&\\
+%        Renovationem S. Sancti.}\smallskip
+%      }\smallskip
+%    }\end{verbatim}
+% \end{quote}
+% 
+% The skips below generally follow the same patterns that we have seen above.
+% \begin{quote}\small\ContinueNum\addtocounter{VerbLine}{15}
+% \begin{verbatim}
+%        \textsc{\quad Ad Vitam \AE{}ternam}.}
+%      }\smallskip
+%      \schema
+%        {\schemabox{seipsum ratione}}
+%        {\schemabox{Anim\ae{}\\ vel\\ Corporis}}\smallskip\end{verbatim}
+% \end{quote}
+% 
+% \begin{quote}\small\ContinueNum\addtocounter{VerbLine}{10}
+% \begin{verbatim}
+%          }\smallskip
+%          \schemabox{Inimicum.}\end{verbatim}
+% \end{quote}
+%
+%The resulting schema looks better already:
+% \bgroup\small\begin{displaymath}
 % \Schema{0ex}{5ex}
 % {
-%   \schemabox{Subjectum \& summa\\
-%      univers\ae{} Scriptur\ae{},\\
-%      est \textsc{Cognitio} vel}
+%   \schemabox{Subjectum \&\\
+%   summa univer-\\
+%   s\ae{} Scriptur\ae{},\\
+%   est \textsc{Cognitio}\\
+%   vel}
 % }
 % {
 %   \Schema{0ex}{5ex}
 %   {
-%     \schemabox{\textsc{Dei}, qualis \\ sit, aut}
+%     \schemabox{\textsc{Dei}, qua-\\lis sit, aut}
 %   }
 %   {
 %     \schema
@@ -845,13 +1352,13 @@
 %     {\schemabox{Ad hominem\\ quem vel}}
 %     {
 %       \schemabox{Accusat \& terret, \textsc{Per Legem},\\
-%         Consolatur \& erigit, \textsc{Per Evangelium}.\\
-%         Salvat, \textsc{Per Christum}.\\
-%         Renovat, \textsc{Per Spiritum Sanctum}.\\
-%         Sanctificat, \textsc{Per Verbum} \& \textsc{Sacramenta}.\\
-%         Castigat, tentat \& exercet, \textsc{Per Crucem}.\\
-%         Glorificat \textsc{Per Resurrectionem Carnis}\\
-%         \textsc{Ad Vitam \AE{}ternam}.}
+%       Consolatur \& erigit, \textsc{Per Evangelium}.\\
+%       Salvat, \textsc{Per Christum}.\\
+%       Renovat, \textsc{Per Spiritum Sanctum}.\\
+%       Sanctificat, \textsc{Per Verbum} \& \textsc{Sacramenta}.\\
+%       Castigat, tentat \& exercet, \textsc{Per Crucem}.\\
+%       Glorificat \textsc{Per Resurrectionem Carnis}\\
+%       \textsc{\quad Ad Vitam \AE{}ternam}.}
 %     }\medskip
 %   }
 %   \Schema{0ex}{5ex}
@@ -867,9 +1374,9 @@
 %       {\schemabox{Post lapsum:}}
 %       {
 %         \schemabox{Ante Regenerationem \&\\
-%           Renovationem S. Sancti.}\medskip
+%         Renovationem S. Sancti.}\medskip
 %         \schemabox{Post Regenerationem \&\\
-%           Renovationem S. Sancti.}\smallskip
+%         Renovationem S. Sancti.}\smallskip
 %       }\smallskip
 %     }
 %     \Schema{0ex}{5ex}
@@ -876,92 +1383,83 @@
 %     {\schemabox{Ad}}
 %     {
 %       \schema
-%       {\schemabox{\textsc{Deum}}}
+%       {\schemabox{\textsc{Deum},}}
 %       {
 %         \schemabox{P\oe{}nitentia agens, agnitis peccatis \&\\
-%           ira Dei cognita \textsc{Ex Lege}.\\
-%           Erigens se \textsc{Voce Evangelii}.\\
-%           Credens \textsc{In Christum Salvatorem}.\\
-%           Non repugnans \textsc{Spiritui Sancto} impellenti.\\
-%           Audiens \textsc{Verbum}: \& utens \textsc{Sacramentis}.\\
-%           Patienter \& constanter sufferens \textsc{Crucem}.\\
-%           Sperans \& expectans glorificationem\\
-%           \textsc{In Resurrectione Carnis}\\
-%           \textsc{Ad Vitam \AE{}ternam}.}
+%         ira Dei cognita \textsc{Ex Lege}.\\
+%         Erigens se \textsc{Voce Evangelii}.\\
+%         Credens \textsc{In Christum Salvatorem}.\\
+%         Non repugnans \textsc{Spiritui Sancto} impellenti.\\
+%         Audiens \textsc{Verbum}: \& utens \textsc{Sacramentis}.\\
+%         Patienter \& constanter sufferens \textsc{Crucem}.\\
+%         Sperans \& expectans glorificationem\\
+%         \textsc{\quad In Resurrectione Carnis}\\
+%         \textsc{\quad Ad Vitam \AE{}ternam}.}
 %       }\smallskip
 %       \schema
 %         {\schemabox{seipsum ratione}}
 %         {\schemabox{Anim\ae{}\\ vel\\ Corporis}}\smallskip
 %       \Schema{0ex}{5ex}
-%         {\schemabox{Proximum,}}
+%       {\schemabox{Proximum,}}
+%       {
+%         \schema
+%         {\schemabox{Amicum ra-\\ tione vel}}
 %         {
-%           \schema
-%           {\schemabox{Amicum ra-\\ tione vel}}
-%           {
-%             \schemabox{Religionis.\\
-%               Politic\ae{} \& \OE{}conomic\ae{}.\\
-%               Cognationis.\\
-%               Agnationis.}
-%           }\smallskip
-%           \schemabox{Inimicum.}
-%         }
+%           \schemabox{Religionis.\\
+%           Politic\ae{} \& \OE{}conomic\ae{}.\\
+%           Cognationis.\\
+%           Agnationis.}
+%         }\smallskip
+%         \schemabox{Inimicum.}
+%       }
 %     }
 %   }
-% }\egroup%
-%\end{displaymath}
-%\noindent The following lines, shown with some surrounding context, were changed as a result of adding spaces:
+% }
+%\end{displaymath}\egroup
+% \newpage
+% 
+% \newpage
+% 
+% Next we estimate the lines of text and blank lines from the top of a \cmd{\Schema} brace to the bottom, e.g., from ``\textsc{Per se}:'' to ``quem vel''. We use those ``ex'' height figures for \meta{size}. The following lines illustrate our ``ball park'' figures:
 %
-% \begin{lstlisting}[firstnumber=15,basicstyle=\ttfamily\footnotesize]
-%     {
-%       \schemabox{Unus in essentia.}\smallskip
-%       \schemabox{Trinus in personis.}
-%     }\smallskip
-% \end{lstlisting}
-% You can add a \cmd{\smallskip} within a \cmd{\schemabox} in \LaTeX{}, but not in plain \TeX. We have split the text into two boxes to make it format-agnostic. See also how the second \cmd{\smallskip} follows the closing brace of the right-hand side, not the \cmd{\schemabox.}
-% \begin{lstlisting}[firstnumber=29,basicstyle=\ttfamily\footnotesize]
-%         \textsc{Ad Vitam \AE{}ternam}.}
-%     }\medskip
-% \end{lstlisting}
-% Again, the skip comes at the close of a right-hand side.
-% \begin{lstlisting}[firstnumber=39,basicstyle=\ttfamily\footnotesize]
-%     {
-%       \schemabox{Ante lapsum.}\smallskip
-%       \schema
-%       {\schemabox{Post lapsum:}}
-%       {
-%         \schemabox{Ante Regenerationem \&\\
-%           Renovationem S. Sancti.}\medskip
-%         \schemabox{Post Regenerationem \&\\
-%           Renovationem S. Sancti.}\smallskip
-%       }\smallskip
-%     }
-% \end{lstlisting}
-% In the snippet above, the first skip helps to separate the lone \cmd{\schemabox} from the \cmd{\schema} below it. This illustrates how the internal vertical lists of schemata can contain heterogeneous material. A medium skip is placed between two \cmd{\schemabox}es, which slightly throws off the way the brace spans the boxes. A small skip is put at the end of the last \cmd{\schemabox} to correct that, illustrating that putting skips within a \cmd{\schema} can be tricky. Then a \cmd{\smallskip} is added again at the end of the right-hand side. The skips below generally follow the same pattern.
-% \begin{lstlisting}[firstnumber=65,basicstyle=\ttfamily\footnotesize]
-%           \textsc{Ad Vitam \AE{}ternam}.}
-%       }\smallskip
-%       \schema
-%         {\schemabox{seipsum ratione}}
-%         {\schemabox{Anim\ae{}\\ vel\\ Corporis}}\smallskip
-% \end{lstlisting}
-% \begin{lstlisting}[firstnumber=80,basicstyle=\ttfamily\footnotesize]
-%           }\smallskip
-%           \schemabox{Inimicum.}
-% \end{lstlisting}
-%
-% Next we estimate the lines from the top of a \cmd{\Schema} brace to the bottom, e.g., from ``\textsc{Per se}:'' to ``quem vel''. We use those ``ex'' height figures for \meta{size}:\\
-%
-% \begin{displaymath}\bgroup\footnotesize%
+% \begin{quote}\small\StartNum
+% \begin{verbatim}
+% \Schema{0ex}{23ex}\end{verbatim}
+% \end{quote}
+% \begin{quote}\small\ContinueNum\addtocounter{VerbLine}{8}
+% \begin{verbatim}
+% \Schema{0ex}{8ex}\end{verbatim}
+% \end{quote}
+% \begin{quote}\small\ContinueNum\addtocounter{VerbLine}{23}
+% \begin{verbatim}
+% \Schema{0ex}{16ex}\end{verbatim}
+% \end{quote}
+% \begin{quote}\small\ContinueNum\addtocounter{VerbLine}{4}
+% \begin{verbatim}
+% \Schema{0ex}{5ex}\end{verbatim}
+% \end{quote}
+% \begin{quote}\small\ContinueNum\addtocounter{VerbLine}{12}
+% \begin{verbatim}
+% \Schema{0ex}{16ex}\end{verbatim}
+% \end{quote}
+% \begin{quote}\small\ContinueNum\addtocounter{VerbLine}{19}
+% \begin{verbatim}
+% \Schema{0ex}{5ex}\end{verbatim}
+% \end{quote}
+% 
+% \bgroup\small\begin{displaymath}
 % \Schema{0ex}{23ex}
 % {
-%   \schemabox{Subjectum \& summa\\
-%      univers\ae{} Scriptur\ae{},\\
-%      est \textsc{Cognitio} vel}
+%   \schemabox{Subjectum \&\\
+%   summa univer-\\
+%   s\ae{} Scriptur\ae{},\\
+%   est \textsc{Cognitio}\\
+%   vel}
 % }
 % {
 %   \Schema{-6.4ex}{8.6ex}
 %   {
-%     \schemabox{\textsc{Dei}, qualis \\ sit, aut}
+%     \schemabox{\textsc{Dei}, qua-\\lis sit, aut}
 %   }
 %   {
 %     \schema
@@ -974,13 +1472,13 @@
 %     {\schemabox{Ad hominem\\ quem vel}}
 %     {
 %       \schemabox{Accusat \& terret, \textsc{Per Legem},\\
-%         Consolatur \& erigit, \textsc{Per Evangelium}.\\
-%         Salvat, \textsc{Per Christum}.\\
-%         Renovat, \textsc{Per Spiritum Sanctum}.\\
-%         Sanctificat, \textsc{Per Verbum} \& \textsc{Sacramenta}.\\
-%         Castigat, tentat \& exercet, \textsc{Per Crucem}.\\
-%         Glorificat \textsc{Per Resurrectionem Carnis}\\
-%         \textsc{Ad Vitam \AE{}ternam}.}
+%       Consolatur \& erigit, \textsc{Per Evangelium}.\\
+%       Salvat, \textsc{Per Christum}.\\
+%       Renovat, \textsc{Per Spiritum Sanctum}.\\
+%       Sanctificat, \textsc{Per Verbum} \& \textsc{Sacramenta}.\\
+%       Castigat, tentat \& exercet, \textsc{Per Crucem}.\\
+%       Glorificat \textsc{Per Resurrectionem Carnis}\\
+%       \textsc{\quad Ad Vitam \AE{}ternam}.}
 %     }\medskip
 %   }
 %   \Schema{0ex}{16ex}
@@ -996,9 +1494,9 @@
 %       {\schemabox{Post lapsum:}}
 %       {
 %         \schemabox{Ante Regenerationem \&\\
-%           Renovationem S. Sancti.}\medskip
+%         Renovationem S. Sancti.}\medskip
 %         \schemabox{Post Regenerationem \&\\
-%           Renovationem S. Sancti.}\smallskip
+%         Renovationem S. Sancti.}\smallskip
 %       }\smallskip
 %     }
 %     \Schema{0ex}{16ex}
@@ -1005,74 +1503,81 @@
 %     {\schemabox{Ad}}
 %     {
 %       \schema
-%       {\schemabox{\textsc{Deum}}}
+%       {\schemabox{\textsc{Deum},}}
 %       {
 %         \schemabox{P\oe{}nitentia agens, agnitis peccatis \&\\
-%           ira Dei cognita \textsc{Ex Lege}.\\
-%           Erigens se \textsc{Voce Evangelii}.\\
-%           Credens \textsc{In Christum Salvatorem}.\\
-%           Non repugnans \textsc{Spiritui Sancto} impellenti.\\
-%           Audiens \textsc{Verbum}: \& utens \textsc{Sacramentis}.\\
-%           Patienter \& constanter sufferens \textsc{Crucem}.\\
-%           Sperans \& expectans glorificationem\\
-%           \textsc{In Resurrectione Carnis}\\
-%           \textsc{Ad Vitam \AE{}ternam}.}
+%         ira Dei cognita \textsc{Ex Lege}.\\
+%         Erigens se \textsc{Voce Evangelii}.\\
+%         Credens \textsc{In Christum Salvatorem}.\\
+%         Non repugnans \textsc{Spiritui Sancto} impellenti.\\
+%         Audiens \textsc{Verbum}: \& utens \textsc{Sacramentis}.\\
+%         Patienter \& constanter sufferens \textsc{Crucem}.\\
+%         Sperans \& expectans glorificationem\\
+%         \textsc{\quad In Resurrectione Carnis}\\
+%         \textsc{\quad Ad Vitam \AE{}ternam}.}
 %       }\smallskip
 %       \schema
 %         {\schemabox{seipsum ratione}}
 %         {\schemabox{Anim\ae{}\\ vel\\ Corporis}}\smallskip
 %       \Schema{0ex}{5ex}
-%         {\schemabox{Proximum,}}
+%       {\schemabox{Proximum,}}
+%       {
+%         \schema
+%         {\schemabox{Amicum ra-\\ tione vel}}
 %         {
-%           \schema
-%           {\schemabox{Amicum ra-\\ tione vel}}
-%           {
-%             \schemabox{Religionis.\\
-%               Politic\ae{} \& \OE{}conomic\ae{}.\\
-%               Cognationis.\\
-%               Agnationis.}
-%           }\smallskip
-%           \schemabox{Inimicum.}
-%         }
+%           \schemabox{Religionis.\\
+%           Politic\ae{} \& \OE{}conomic\ae{}.\\
+%           Cognationis.\\
+%           Agnationis.}
+%         }\smallskip
+%         \schemabox{Inimicum.}
+%       }
 %     }
 %   }
-% }\egroup%
-%\end{displaymath}
+% }
+%\end{displaymath}\egroup
 %
-%\noindent The following lines, illustrate our ``ball park'' figures, where we include lines of text and blank lines in the total count:
+% \newpage
+% 
+% Next we tweak \meta{adjust} values by counting the lines (\texttt{ex}) in the direction the left side needs to move relative to the right, multiply the result by two, and make it negative for up and positive for down. Using an editor, e.g., \texttt{texworks} makes this fairly easy. We also adjust the final \meta{size} of the braces. Work from leaves to root:
+% \begin{quote}\small\StartNum
+% \begin{verbatim}
+% \Schema{-25ex}{20.6ex}% Do this one last. ``Subjectum''\end{verbatim}
+% \end{quote}
+% \begin{quote}\small\ContinueNum\addtocounter{VerbLine}{8}
+% \begin{verbatim}
+% \Schema{-6.4ex}{8.5ex}% Do this one first. ``Dei''\end{verbatim}
+% \end{quote}
+% \begin{quote}\small\ContinueNum\addtocounter{VerbLine}{23}
+% \begin{verbatim}
+% \Schema{-13.4ex}{17.4ex}% Do this one fifth. ``Hominis''\end{verbatim}
+% \end{quote}
+% \begin{quote}\small\ContinueNum\addtocounter{VerbLine}{4}
+% \begin{verbatim}
+% \Schema{-4.4ex}{5ex}% Do this one second. ``Per se'' (lower)\end{verbatim}
+% \end{quote}
+% \begin{quote}\small\ContinueNum\addtocounter{VerbLine}{12}
+% \begin{verbatim}
+% \Schema{4.2ex}{14.4ex}% Do this one fourth. ``Ad''\end{verbatim}
+% \end{quote}
+% \begin{quote}\small\ContinueNum\addtocounter{VerbLine}{19}
+% \begin{verbatim}
+% \Schema{2ex}{5.1ex}% Do this one third. ``Proximum''\end{verbatim}
+% \end{quote}
 %
-% \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
-% \Schema{0ex}{23ex}
-% \end{lstlisting}
-% \begin{lstlisting}[firstnumber=8,basicstyle=\ttfamily\footnotesize]
-%   \Schema{0ex}{8ex}
-% \end{lstlisting}
-% \begin{lstlisting}[firstnumber=32,basicstyle=\ttfamily\footnotesize]
-%   \Schema{0ex}{16ex}
-% \end{lstlisting}
-% \begin{lstlisting}[firstnumber=37,basicstyle=\ttfamily\footnotesize]
-%     \Schema{0ex}{5ex}
-% \end{lstlisting}
-% \begin{lstlisting}[firstnumber=50,basicstyle=\ttfamily\footnotesize]
-%     \Schema{0ex}{16ex}
-% \end{lstlisting}
-% \begin{lstlisting}[firstnumber=70,basicstyle=\ttfamily\footnotesize]
-%       \Schema{0ex}{5ex}
-% \end{lstlisting}
-%
-% Next we add the \meta{adjust values} by counting the lines in the direction the brace needs to move, multiplying by two, and making it negative for up and positive for down. Using an editor, e.g., \textsf{texworks} makes this fairly easy. We also adjust the final \meta{size} of the braces. Work from leaves to root.
-%
-% \begin{displaymath}\bgroup\footnotesize%
+% \bgroup\small\begin{displaymath}
 % \Schema{-25ex}{20.6ex}
 % {
-%   \schemabox{Subjectum \& summa\\
-%      univers\ae{} Scriptur\ae{},\\
-%      est \textsc{Cognitio} vel}
+%   \schemabox{Subjectum \&\\
+%   summa univer-\\
+%   s\ae{} Scriptur\ae{},\\
+%   est \textsc{Cognitio}\\
+%   vel}
 % }
 % {
 %   \Schema{-6.4ex}{8.5ex}
 %   {
-%     \schemabox{\textsc{Dei}, qualis \\ sit, aut}
+%     \schemabox{\textsc{Dei}, qua-\\lis sit, aut}
 %   }
 %   {
 %     \schema
@@ -1085,13 +1590,13 @@
 %     {\schemabox{Ad hominem\\ quem vel}}
 %     {
 %       \schemabox{Accusat \& terret, \textsc{Per Legem},\\
-%         Consolatur \& erigit, \textsc{Per Evangelium}.\\
-%         Salvat, \textsc{Per Christum}.\\
-%         Renovat, \textsc{Per Spiritum Sanctum}.\\
-%         Sanctificat, \textsc{Per Verbum} \& \textsc{Sacramenta}.\\
-%         Castigat, tentat \& exercet, \textsc{Per Crucem}.\\
-%         Glorificat \textsc{Per Resurrectionem Carnis}\\
-%         \textsc{Ad Vitam \AE{}ternam}.}
+%       Consolatur \& erigit, \textsc{Per Evangelium}.\\
+%       Salvat, \textsc{Per Christum}.\\
+%       Renovat, \textsc{Per Spiritum Sanctum}.\\
+%       Sanctificat, \textsc{Per Verbum} \& \textsc{Sacramenta}.\\
+%       Castigat, tentat \& exercet, \textsc{Per Crucem}.\\
+%       Glorificat \textsc{Per Resurrectionem Carnis}\\
+%       \textsc{\quad Ad Vitam \AE{}ternam}.}
 %     }\medskip
 %   }
 %   \Schema{-13.4ex}{17.4ex}
@@ -1107,9 +1612,9 @@
 %       {\schemabox{Post lapsum:}}
 %       {
 %         \schemabox{Ante Regenerationem \&\\
-%           Renovationem S. Sancti.}\medskip
+%         Renovationem S. Sancti.}\medskip
 %         \schemabox{Post Regenerationem \&\\
-%           Renovationem S. Sancti.}\smallskip
+%         Renovationem S. Sancti.}\smallskip
 %       }\smallskip
 %     }
 %     \Schema{4.2ex}{14.4ex}
@@ -1116,72 +1621,47 @@
 %     {\schemabox{Ad}}
 %     {
 %       \schema
-%       {\schemabox{\textsc{Deum}}}
+%       {\schemabox{\textsc{Deum},}}
 %       {
 %         \schemabox{P\oe{}nitentia agens, agnitis peccatis \&\\
-%           ira Dei cognita \textsc{Ex Lege}.\\
-%           Erigens se \textsc{Voce Evangelii}.\\
-%           Credens \textsc{In Christum Salvatorem}.\\
-%           Non repugnans \textsc{Spiritui Sancto} impellenti.\\
-%           Audiens \textsc{Verbum}: \& utens \textsc{Sacramentis}.\\
-%           Patienter \& constanter sufferens \textsc{Crucem}.\\
-%           Sperans \& expectans glorificationem\\
-%           \textsc{In Resurrectione Carnis}\\
-%           \textsc{Ad Vitam \AE{}ternam}.}
+%         ira Dei cognita \textsc{Ex Lege}.\\
+%         Erigens se \textsc{Voce Evangelii}.\\
+%         Credens \textsc{In Christum Salvatorem}.\\
+%         Non repugnans \textsc{Spiritui Sancto} impellenti.\\
+%         Audiens \textsc{Verbum}: \& utens \textsc{Sacramentis}.\\
+%         Patienter \& constanter sufferens \textsc{Crucem}.\\
+%         Sperans \& expectans glorificationem\\
+%         \textsc{\quad In Resurrectione Carnis}\\
+%         \textsc{\quad Ad Vitam \AE{}ternam}.}
 %       }\smallskip
 %       \schema
 %         {\schemabox{seipsum ratione}}
 %         {\schemabox{Anim\ae{}\\ vel\\ Corporis}}\smallskip
 %       \Schema{2ex}{5.1ex}
-%         {\schemabox{Proximum,}}
+%       {\schemabox{Proximum,}}
+%       {
+%         \schema
+%         {\schemabox{Amicum ra-\\ tione vel}}
 %         {
-%           \schema
-%           {\schemabox{Amicum ra-\\ tione vel}}
-%           {
-%             \schemabox{Religionis.\\
-%               Politic\ae{} \& \OE{}conomic\ae{}.\\
-%               Cognationis.\\
-%               Agnationis.}
-%           }\smallskip
-%           \schemabox{Inimicum.}
-%         }
+%           \schemabox{Religionis.\\
+%           Politic\ae{} \& \OE{}conomic\ae{}.\\
+%           Cognationis.\\
+%           Agnationis.}
+%         }\smallskip
+%         \schemabox{Inimicum.}
+%       }
 %     }
 %   }
-% }\egroup%
-%\end{displaymath}
+% }
+%\end{displaymath}\egroup
 %
-% \noindent We get the following changes, with a few final tweaks:
+% \subsubsection[Big Groups]{Big Schema with Groups}
 %
-% \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
-% \Schema{-25ex}{20.6ex}% Do this one last.
-% \end{lstlisting}
-% \begin{lstlisting}[firstnumber=8,basicstyle=\ttfamily\footnotesize]
-%   \Schema{-6.4ex}{8.5ex}% Do this one first.
-% \end{lstlisting}
-% \begin{lstlisting}[firstnumber=32,basicstyle=\ttfamily\footnotesize]
-%   \Schema{-13.4ex}{17.4ex}% Do this one fifth.
-% \end{lstlisting}
-% \begin{lstlisting}[firstnumber=37,basicstyle=\ttfamily\footnotesize]
-%     \Schema{-4.4ex}{5ex}% Do this one second.
-% \end{lstlisting}
-% \begin{lstlisting}[firstnumber=50,basicstyle=\ttfamily\footnotesize]
-%     \Schema{4.2ex}{14.4ex}% Do this one fourth.
-% \end{lstlisting}
-% \begin{lstlisting}[firstnumber=70,basicstyle=\ttfamily\footnotesize]
-%       \Schema{2ex}{5.1ex}% Do this one third.
-% \end{lstlisting}
-%
-% If all your dimensions are in ex height, scaling your (large) schema gets easier. For example, one ex is a different size for different fonts and font sizes:\medskip
-%
-% \hfil\begin{tabular}{cccc}
-% \cmd{\Large} & \cmd{\large} & \cmd{\normalsize} & \cmd{\footnotesize}\\
-% \Large\dimen0=1ex \the\dimen0 & \large\dimen0=1ex \the\dimen0 & \normalsize\dimen0=1ex \the\dimen0 & \footnotesize\dimen0=1ex \the\dimen0\normalsize\\
-% \end{tabular}\hfil
-%
-% \noindent The next example illustrates spacing, adjusting, and \cmd{\DoParens} inside a group scope:
-% \begin{displaymath}
-% \bgroup\scriptsize\DoParens%
-%\Schema{-36.4ex}{15.6ex}
+% The next example illustrates everything tha we have covered so far, plus \cmd{\DoGroups}, all inside a local scope:\bigskip
+% 
+% \bgroup\footnotesize\begin{displaymath}
+% \DoGroups%
+%\Schema{-27ex}{21.5ex}
 %{
 %  \schemabox{Sacr\ae{}\\ litter\ae{}\\ loquuntur,\\ de}
 %}
@@ -1191,10 +1671,11 @@
 %    \schemabox{\textsc{Deo}}
 %  }
 %  {
-%    \schemabox{Uno, in Trinitate.\smallskip\\Trino, in unitate.}
+%    \schemabox{Uno, in Trinitate.}\smallskip\schemabox{Trino, in unitate.}
 %  }
 %  \Schema{-17ex}{23.4ex}
 %  {
+%    \vskip30ex
 %    \schemabox{\textsc{Dei}\\ \textsc{Operibus}}
 %  }
 %  {
@@ -1203,10 +1684,10 @@
 %      \schemabox{\textsc{Intra},\\ qu\ae{} sunt\\ divisa, ut}
 %    }
 %    {
-%      \schemabox{\textsc{Patris}, ab \ae{}terno gignere.\\ \textsc{Filii}, ab \ae{}terno genitum esse.\\ \textsc{Spiritus Sancti}, ab utroque\\ ab \ae{}terno procedete.}
+%      \schemabox{\textsc{Patris}, ab \ae{}terno gignere.\\ \textsc{Filii}, ab \ae{}terno genitum esse.\\ \textsc{Spiritus Sancti}, ab utroque\\ ab \ae{}terno procedete.\strut}
 %    }
 %    \medskip
-%    \Schema{-2.6ex}{19.6ex}
+%    \Schema{-2ex}{21ex}
 %    {
 %      \schemabox{\textsc{Extra},\\ qu\ae{} sunt\\ indivisa;\\ tervata\\ tamen\\ cujusque\\ person\ae{}\\ divinitatis\\ sua pro-\\prietate}
 %    }
@@ -1229,7 +1710,7 @@
 %          \schemabox{\gk{logik~hs}, ut}
 %        }
 %        {
-%          \schemabox{Angelorum.} \smallskip \schemabox{Hominum: Ad\ae{},\\ Ev\ae{} \& procreatorum\\ exipsis.}
+%          \schemabox{Angelorum.} \smallskip \schemabox{Hominum: Ad\ae{},\\ Ev\ae{} \& procreatorum\\ exipsis.\strut}
 %        }
 %      }
 %      \schema
@@ -1241,7 +1722,7 @@
 %      }
 %      \Schema{2.6ex}{8.8ex}
 %      {
-%        \schemabox{Beneficiis erga\\ Ecclesiam: ea ver-\\ santur aut circa}
+%        \schemabox{Beneficiis\\ erga Ecc-\\ lesiam: ea\\ versantur\\ aut circa}
 %      }
 %      {
 %        \Schema{2.2ex}{7ex}
@@ -1266,7 +1747,7 @@
 %          }
 %        }
 %        \smallskip
-%        \Schema{1ex}{5ex}
+%        \Schema{0.6ex}{5.5ex}
 %        {
 %          \schemabox{Personas}
 %        }
@@ -1283,75 +1764,114 @@
 %          \smallskip
 %          \schemabox{\OE{}conomi\ae{} ut privatorum}
 %        }
-%      }
+%      }\vskip2ex
 %    }
 %  }
-%}\egroup%
-%\end{displaymath}
-% Next we see some closed schemata. This example merits consideration because it uses not only open schemata but closed ones nested within them. One must use \cmd{\Schema} in that case to prevent the opening braces from being slightly larger than the closing braces.
+%}
+%\end{displaymath}\egroup
+%
+% \subsubsection[Open and Closed]{Open and Closed Schemata}
+%
+% Now we look at schemata that have both open and closed braces. One must use \cmd{\Schema} to get delimiters to be the same height. These schemata take the form:
+% \begin{quote}\ttfamily
+% \cmd{\Schema}\{\textrm{\meta{adjust}}\}\{\textrm{\meta{height}}\}\\
+% \{\textrm{\meta{$left_1$}}\}\\
+% \{\\
+% \hbox{}\quad\cmd{\Schema}[close]\{\textrm{\meta{adjust}}\}\{\textrm{\meta{height}}\}\\
+% \hbox{}\quad\{\textrm{\meta{$left_2$}}\}\\
+% \hbox{}\quad\{\textrm{\meta{$right_2$}}\}\\
+% \}
+% \end{quote}
+% \newbox\mybox
+% \def\Box#1{%^^A
+%   \setbox\mybox=\hbox{\vrule\vbox{\hrule%^^A
+%     \vfil\hbox{\strut\space #1\space}%^^A
+%     \vfil\hrule}\vrule}%^^A
+%   \dimen0=\ht\mybox%^^A
+%   \advance\dimen0 by2ex%^^A
+%   \hbox{\vrule\vbox to \dimen0{\hrule%^^A
+%     \vfil\hbox{{\Large\strut}\space #1\space}%^^A
+%     \vfil\hrule}\vrule}}
+%
+% \newpage
+% We use a modified version of our \cmd{\Box} macro from above to show how each part nests within the other. Below we do not use \cmd{\NudgeSB} from Section~\ref{sec:tweakschema} because we are not using \cmd{\schemabox}; instead we directly add the kern: |\hbox{\Box{\,$left_2$}\kern0.2em}| within the closed schema. The result is:\medskip
+% 
+% \begin{quote}
+%   \quad\Schema{0ex}{2ex}
+%     {\Box{\,$left_1$}}
+%     {%^^A
+%       \Box{%^^A
+%         \Schema[close]{0ex}{2ex}
+%         {\hbox{\Box{\,$left_2$}\kern0.2em}}
+%         {\Box{\,$right_2$}}%^^A
+%       }%^^A
+%     }
+% \end{quote}\medskip
+% 
+%  Here is another, more complex example:\medskip
+%
 % \begin{displaymath}
-% \bgroup\small%
-% \Schema{-1.4ex}{10ex}
-% {
-%   \schemabox{Qu\ae{} sit\\ \textsc{Dei}, vel}
-% }
-% {
-%   \Schema{-1ex}{5ex}
-%   {
-%     \schemabox{\textsc{Essentia}, in}
-%   }
-%   {
-%     \vskip1ex\schemabox{Unitate divina,}
-%     \medskip
-%     \Schema{0ex}{3.4ex}
-%     {
-%       \schemabox{Tribus perso-\\ nis divinitatis}
-%     }
-%     {
-%       \Schema[close]{0ex}{3.4ex}
-%       {
-%         \NudgeSB\schemabox{Patre,\\ Filio,\\ Spiritui Sancto}
+% \Schema{0ex}{6ex}
+% {\Box{a}}
+% {%^^A
+%   \Box{%^^A
+%     \Schema[close]{0ex}{6ex}
+%     {%^^A
+%       \Box{%^^A
+%         \Schema{0ex}{3ex}
+%         {\Box{b}}
+%         {%^^A
+%           \Box{%^^A
+%             \Schema[close]{0ex}{3ex}
+%             {\hbox{\Box{c}\kern0.2em}}
+%             {\Box{d}}
+%           }
+%         }
 %       }
-%       {
-%         \schemabox{\gk{<omoous'iois}\\ \& co\ae{}ternis}
-%       }
 %     }
+%     {\Box{e}}
 %   }
-%   \medskip
-%   \Schema{-0.2ex}{6.4ex}
-%   {
-%     \schemabox{\textsc{Voluntas},\\ revelatur in\\ actione, sive}
-%   }
-%   {
-%     \Schema{0ex}{3.4ex}
-%     {
-%       \schemabox{Universali}
-%     }
-%     {
-%       \Schema[close]{0ex}{3.4ex}
-%       {
-%         \schemabox{Creationis,\\Sustenationis,\\ Propagationis,}
-%       }
-%       {
-%         \schemabox{rerum creatarum.}
-%       }
-%     }
-%     \medskip
-%     \schema
-%     {
-%       \schemabox{Speciali, in beneficiis\\ erga Ecclesiam, eam}
-%     }
-%     {
-%       \schemabox{Colligendo.\\ Justificando.\\ Conservando.\\
-%         Glorificando.}
-%     }
-%   }
-% }\egroup%
-% \end{displaymath}
-% \clearpage
-% The following listing of the previous example illustrates how one handles closed schemata in this fashion. The macro \cmd{\gk} creates Greek text.
+% }
+% \end{displaymath}\medskip
 %
-% \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
+% \begin{quote}\small\StartNum\begin{verbatim}
+%\newbox\mybox
+%\def\Box#1{%
+%  \setbox\mybox=\hbox{\vrule\vbox{\hrule%
+%    \vfil\hbox{\strut\space #1\space}%
+%    \vfil\hrule}\vrule}%
+%  \dimen0=\ht\mybox%
+%  \advance\dimen0 by2ex%
+%  \hbox{\vrule\vbox to \dimen0{\hrule%
+%    \vfil\hbox{{\Large\strut}\space #1\space}%
+%    \vfil\hrule}\vrule}}
+%\Schema{0ex}{6ex}
+%{\Box{a}}
+%{%
+%  \Box{%
+%    \Schema[close]{0ex}{6ex}
+%    {%
+%      \Box{%
+%        \Schema{0ex}{3ex}
+%        {\Box{b}}
+%        {%
+%          \Box{%
+%            \Schema[close]{0ex}{3ex}
+%            {\hbox{\Box{c}\kern0.2em}}
+%            {\Box{d}}
+%          }
+%        }
+%      }
+%    }
+%    {\Box{e}}
+%  }
+%}\end{verbatim}
+% \end{quote}
+%\newpage
+%
+% This is more of a real-world example. As above, one must use \cmd{\Schema} to prevent the opening braces from being slightly larger than the closing braces.
+% 
+% \bgroup\small\begin{displaymath}
 % \Schema{-1.4ex}{10ex}
 % {
 %   \schemabox{Qu\ae{} sit\\ \textsc{Dei}, vel}
@@ -1391,7 +1911,7 @@
 %     {
 %       \Schema[close]{0ex}{3.4ex}
 %       {
-%         \schemabox{Creationis,\\ Sustenationis,\\ Propagationis,}
+%         \schemabox{Creationis,\\Sustenationis,\\ Propagationis,}
 %       }
 %       {
 %         \schemabox{rerum creatarum.}
@@ -1403,92 +1923,66 @@
 %       \schemabox{Speciali, in beneficiis\\ erga Ecclesiam, eam}
 %     }
 %     {
-%       \schemabox{Colligendo.\\ Justificando.\\ Conservando.\\
-%         Glorificando.}
+%       \schemabox{Colligendo.\\ Justificando.\\
+%       Conservando.\\ Glorificando.}
 %     }
 %   }
 % }
-% \end{lstlisting}
-% \clearpage
-% Balanced open and closed schemata take the general form below:
-% \begin{quote}\ttfamily
-% \cmd{\Schema}\{\meta{adjust}\}\{\meta{height}\}\\
-% \hbox{}\quad\{\meta{$left_1$}\}\\
-% \hbox{}\quad\{\cmd{\Schema}[close]\{\meta{adjust}\}\{\meta{height}\}\\
-% \hbox{}\qquad\{\meta{$left_2$}\}\\
-% \hbox{}\qquad\{\meta{$right_2$}\}\\
-% \hbox{}\quad\}
+% \end{displaymath}\egroup\smallskip
+% 
+% This listing of the previous example illustrates how one handles closed schemata. The macro \cmd{\gk} uses \textsf{babel} to create Greek text.
+%
+% \begin{quote}\small\StartNum
+% \begin{verbatim}
+%\Schema{-1.4ex}{10ex}
+%{\schemabox{Qu\ae{} sit\\ \textsc{Dei}, vel}}
+%{
+%  \Schema{-1ex}{5ex}
+%  {\schemabox{\textsc{Essentia}, in}}
+%  {
+%    \vskip1ex\schemabox{Unitate divina,}
+%    \medskip
+%    \Schema{0ex}{3.4ex}
+%    {\schemabox{Tribus perso-\\ nis divinitatis}}
+%    {
+%      \Schema[close]{0ex}{3.4ex}
+%      {\NudgeSB\schemabox{Patre,\\ Filio,\\ Spiritui Sancto}}
+%      {\schemabox{\gk{<omoous'iois}\\ \& co\ae{}ternis}}
+%    }
+%  }
+%  \medskip
+%  \Schema{-0.2ex}{6.4ex}
+%  {\schemabox{\textsc{Voluntas},\\ revelatur in\\ actione, sive}}
+%  {
+%    \Schema{0ex}{3.4ex}
+%    {\schemabox{Universali}}
+%    {
+%      \Schema[close]{0ex}{3.4ex}
+%      {\schemabox{Creationis,\\ Sustenationis,\\ Propagationis,}}
+%      {\schemabox{rerum creatarum.}}
+%    }
+%    \medskip
+%    \schema
+%    {\schemabox{Speciali, in beneficiis\\ erga Ecclesiam, eam}}
+%    {\schemabox{Colligendo.\\ Justificando.\\
+%     Conservando.\\ Glorificando.}}
+%  }
+%}\end{verbatim}
 % \end{quote}
-%
-% The result is:
-% \begin{displaymath}
-% \Schema{0ex}{2ex}
-%        {\hbox{$left_1$}}{\Schema[close]{0ex}{2ex}
-%                         {\hbox{$left_2$}}{\hbox{$right_2$}}}
-% \end{displaymath}
-% \medskip
-%
-% Try to produce the following. Everything to the right of the leftmost brace is the RHS of the outermost schema. Everything between the leftmost brace and the rightmost brace is the LHS of the first nested schema, and so on.
-% \begin{displaymath}
-% \Schema{0ex}{5.6ex}
-% {\schemabox{a}}
-% {
-%   \Schema[close]{0ex}{5.6ex}
-%   {
-%     \Schema{0ex}{3.3ex}
-%     {\schemabox{b\\c}}
-%     {
-%       \Schema[close]{0ex}{3.3ex}
-%       {\schemabox{f\\g\\h}}
-%       {\schemabox{l\\m}}
-%     }
-%     \Schema{0ex}{3.3ex}
-%     {\schemabox{d\\e}}
-%     {
-%       \Schema[close]{0ex}{3.3ex}
-%       {\schemabox{i\\j\\k}}
-%       {\schemabox{n\\o}}
-%     }
-%   }
-%   {\schemabox{p}}
-% }
-% \end{displaymath}\medskip
-%
-% If you choose to give up, the listing is below:\\[4ex]
-% \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
-% \Schema{0ex}{5.6ex}
-% {\schemabox{a}}
-% {
-%   \Schema[close]{0ex}{5.6ex}
-%   {
-%     \Schema{0ex}{3.3ex}
-%     {\schemabox{b\\c}}
-%     {
-%       \Schema[close]{0ex}{3.3ex}
-%       {\schemabox{f\\g\\h}}
-%       {\schemabox{l\\m}}
-%     }
-%     \Schema{0ex}{3.3ex}
-%     {\schemabox{d\\e}}
-%     {
-%       \Schema[close]{0ex}{3.3ex}
-%       {\schemabox{i\\j\\k}}
-%       {\schemabox{n\\o}}
-%     }
-%   }
-%   {\schemabox{p}}
-% }
-% \end{lstlisting}
-% \clearpage
+% \newpage
+% 
 % \subsection{Final features}
 % \label{sec:multiple}
 % This final example illustrates how one can set the width of a \cmd{\schemabox}, and for what sort of use that might be. Below we invoke \cmd{\DoBrackets} after the start of the group containing the right-hand side of the first \cmd{\Schema}.
-% \begin{displaymath}\bgroup\small
+% 
+% \bgroup\small\begin{displaymath}
 % \Schema{-0.2ex}{14.4ex}
 % {\schemabox{\bfseries Curricula\\\bfseries Texts}}
 % {
 %   \DoBrackets%
-%   \newbox\mybox\setbox\mybox=\hbox{\bfseries III. Philosophical }%
+%^^A% Doable in LaTeX, not in Plain TeX, because \outer.
+%^^A% \newbox\mybox%
+%   \setbox\mybox=\hbox{\bfseries III. Philosophical }%
 %   \dimen0=\wd\mybox%
 %   \schema
 %     {\schemabox[\dimen0]{\bfseries I. General\\Studies}}
@@ -1497,470 +1991,534 @@
 %   \schema
 %     {\schemabox[\dimen0]{\bfseries II. Literary\\Disciplines}}
 %     {\schemabox{1. Philology\\
-%       2. Historical Introduction\\
-%       3. Literary Theory\\
-%       4. Application}}
+%      2. Historical Introduction\\
+%      3. Literary Theory\\
+%      4. Application}}
 %   \smallskip
 %   \schema
 %       {\schemabox[\dimen0]{\bfseries III. Philosophical\\Disciplines}}
 %       {\schemabox{1. Source Texts\\
-%       2. History of Philosophy\\
-%       3. General Surveys\\
-%       4. Specific Studies}}
+%        2. History of Philosophy\\
+%        3. General Surveys\\
+%        4. Specific Studies}}
 %   \smallskip
 %   \schema
 %       {\schemabox[\dimen0]{\bfseries IV. Historical\\Disciplines}}
 %       {\schemabox{1. General Surveys\\
-%       2. Specialized Works}}
-% }\egroup%
-%\end{displaymath}
-%
-% \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
-% \Schema{-0.2ex}{14.4ex}
-% {\schemabox{\bfseries Curricula\\\bfseries Texts}}
-% {
-%   \DoBrackets%
-%   \newbox\mybox\setbox\mybox=\hbox{\bfseries III. Philosophical }%
-%   \dimen0=\wd\mybox%
-%   \schema
-%     {\schemabox[\dimen0]{\bfseries I. General\\Studies}}
-%     {\schemabox{1. Collected Works\\2. Encyclopedias}}
-%   \smallskip
-%   \schema
-%     {\schemabox[\dimen0]{\bfseries II. Literary\\Disciplines}}
-%     {\schemabox{1. Philology\\
-%       2. Historical Introduction\\
-%       3. Literary Theory\\
-%       4. Application}}
-%   \smallskip
-%   \schema
-%       {\schemabox[\dimen0]{\bfseries III. Philosophical\\Disciplines}}
-%       {\schemabox{1. Source Texts\\
-%       2. History of Philosophy\\
-%       3. General Surveys\\
-%       4. Specific Studies}}
-%   \smallskip
-%   \schema
-%       {\schemabox[\dimen0]{\bfseries IV. Historical\\Disciplines}}
-%       {\schemabox{1. General Surveys\\
-%       2. Specialized Works}}
+%        2. Specialized Works}}
 % }
-%\end{lstlisting}
-% \clearpage
+%\end{displaymath}\egroup
+% 
+% \begin{quote}\small
+% \StartNum
+% \begin{verbatim}
+%\Schema{-0.2ex}{14.4ex}
+%{\schemabox{\bfseries Curricula\\\bfseries Texts}}
+%{
+%  \DoBrackets%
+%  % \newbox here is doable in LaTeX, not in Plain TeX,
+%  % where it must be used as an \outer macro.
+%  \newbox\mybox%
+%  \setbox\mybox=\hbox{\bfseries III. Philosophical }%
+%  \dimen0=\wd\mybox%
+%  \schema
+%    {\schemabox[\dimen0]{\bfseries I. General\\Studies}}
+%    {\schemabox{1. Collected Works\\2. Encyclopedias}}
+%  \smallskip
+%  \schema
+%    {\schemabox[\dimen0]{\bfseries II. Literary\\Disciplines}}
+%    {\schemabox{1. Philology\\
+%     2. Historical Introduction\\
+%     3. Literary Theory\\
+%     4. Application}}
+%  \smallskip
+%  \schema
+%    {\schemabox[\dimen0]{\bfseries III. Philosophical\\Disciplines}}
+%    {\schemabox{1. Source Texts\\
+%     2. History of Philosophy\\
+%     3. General Surveys\\
+%     4. Specific Studies}}
+%  \smallskip
+%  \schema
+%    {\schemabox[\dimen0]{\bfseries IV. Historical\\Disciplines}}
+%    {\schemabox{1. General Surveys\\
+%     2. Specialized Works}}
+%}\end{verbatim}
+% \end{quote}
+% \newpage
+% 
 %\StopEventually{^^A
-%  \clearpage\PrintChanges
-%  \clearpage\PrintIndex
+%  \newgeometry{textwidth=160mm,textheight=237mm,right=25mm}
+%  \newpage\PrintChanges
+%  \newpage\PrintIndex
 %}
 %
 % \section{Implementation}
 %
-% The concept of using math mode to generate schemata was first implemented by me in plain \TeX, then migrated to \LaTeX.
+% Shorter macros are written in both \LaTeX{} and generic \TeX. Longer macros implement a platform-specific front end and a common back end. The macros default to \LaTeXe{} format. If the format test fails, then generic macros are selected.\medskip
 %
-% \subsection{Package Options and Booleans}
+% \bgroup\footnotesize\obeylines
+% \leavevmode\llap{\scriptsize 1\ \ }\verb+%<package>{\expandafter}\expandafter\ifx \csname schemataLaTeX\endcsname\relax+
+% \leavevmode\llap{\scriptsize 2\ \ }\verb+%<package>  \def\schemataLaTeX{LaTeX2e}\fi+
+% \leavevmode\llap{\scriptsize 3\ \ }\verb+%<package>\ifx\fmtname\schemataLaTeX+
+% \leavevmode\llap{\scriptsize 4\ \ }\verb+%<package>\expandafter\NeedsTeXFormat\expandafter{\schemataLaTeX}+
+% \leavevmode\llap{\scriptsize 5\ \ }\verb+%<package>\ProvidesPackage{schemata}+
+%                                  \verb+%<*package>+
+% \leavevmode\llap{\scriptsize 6\ \ }\verb+  [2020/03/13 v1.0 generic package to aid construction of topical categories]+
+%                                  \verb+%</package>+
+% \leavevmode\llap{\scriptsize 7\ \ }\verb+%<package>\fi+
+% \egroup
+% \makeatletter\advance\c at CodelineNo by 7\makeatother
+% 
+% \subsection{Internal Variables}
 %
-% \changes{v0.6}{2013/03/10}{Added brackets and parens as well as braces}
-% Three options are implemented, namely, |braces| (the default), |brackets|, and |parens|. Plain \TeX{} does not use options as such, but simply declares braces as the default and allows the user to change that after the file is |\input|.
+% \changes{v1.0}{2020/03/13}{current format handling}
+% If we are not using \LaTeXe, we do the equivalent of \cmd{\makeatletter}.
+% 
 %    \begin{macrocode}
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \catcode`@=11%
-  \def\DoBraces{\let\@schemata at LD\lbrace \let\@schemata at RD\rbrace}%
-  \DoBraces%
-\else
-  \DeclareOption{braces}{\let\@schemata at LD\lbrace \let\@schemata at RD\rbrace}
-  \DeclareOption{brackets}{\let\@schemata at LD\lbrack \let\@schemata at RD\rbrack}
-  \DeclareOption{parens}{\let\@schemata at LD( \let\@schemata at RD)}
-  \ExecuteOptions{braces}
-  \ProcessOptions\relax
+\ifx\fmtname\schemataLaTeX\else
+  \catcode`@=11\relax
 \fi
 %    \end{macrocode}
+%    
+% \changes{v0.8}{2016/01/25}{Rename box/dimen registers}
+% \changes{v1.0}{2020/03/13}{Rename box/dimen registers}
+%Two box registers and two dimen registers are used to analyze the left-hand and right-hand vertical sizes of the boxes in a schema. To make it less likely for these internal variables to be redefined, they are now more ``unique.''
 %
-%Two box registers and two dimen registers are used to analyze the left-hand and right-hand vertical sizes of the boxes in a schema.
-% \changes{v0.8}{2016/01/25}{Renamed box/dimen registers}
 %    \begin{macrocode}
-\newbox\@rhs%
-\newbox\@lhs%
-\newdimen\@rheight%
-\newdimen\@lheight%
+\newbox\@schemata at rhs
+\newbox\@schemata at lhs
+\newdimen\@schemata at rheight
+\newdimen\@schemata at lheight
 %    \end{macrocode}
+%
 % \changes{v0.6}{2013/03/10}{Added UC/LC tweaks.}
 % \changes{v0.8}{2016/01/25}{Renamed internal macros}
+% Two Boolean flags affect the height of a \cmd{\schemabox}, respectively setting and toggling that height for lowercase and uppercase content in order to add or remove space for boxes with only lowercase text.
+% 
 %    \begin{macrocode}
-\newif\if at schemata@LCBox%
-\newif\if at schemata@SWBox%
-\newif\if at schemata@NudgeBox%
+\newif\if at schemata@LCBox
+\newif\if at schemata@SWBox
 %    \end{macrocode}
 %
+% This Boolean flag determines if a kern should be added to the end of each line in a \cmd{\schemabox} (helps with closed braces).
+% 
+%    \begin{macrocode}
+\newif\if at schemata@NudgeBox
+%    \end{macrocode}
+%
+% \subsection{Package Options}
+%
+% \changes{v0.6}{2013/03/10}{Added brackets and parens as well as braces}
+% \changes{v1.0}{2020/03/13}{Added group option}
+% We set braces to be the default set of delimiters. Apart from \LaTeXe{} we ignore the options. Three options are implemented, namely, \texttt{braces} (the default), \texttt{brackets}, and \texttt{parens}. Since the options are used infrequently, we naively process them in whatever order we get, each overwriting the last. 
+%
+%    \begin{macrocode}
+\ifx\fmtname\schemataLaTeX
+  \DeclareOption{braces}%
+    {\let\@schemata at LD\lbrace \let\@schemata at RD\rbrace}
+  \DeclareOption{brackets}%
+    {\let\@schemata at LD\lbrack \let\@schemata at RD\rbrack}
+  \DeclareOption{parens}%
+    {\let\@schemata at LD( \let\@schemata at RD)}
+  \DeclareOption{groups}%
+    {\let\@schemata at LD\lgroup \let\@schemata at RD\rgroup}
+  \ExecuteOptions{braces}
+  \ProcessOptions\relax
+\else
+  \let\@schemata at LD\lbrace%
+  \let\@schemata at RD\rbrace%
+\fi
+%    \end{macrocode}
+%
 % \subsection {Macros}
 %
 % \begin{macro}{\DoBraces}
 % \changes{v0.6}{2013/03/10}{Added macro}
-% Set the default option for braces.
+% \changes{v1.0}{2020/03/13}{ensure short}
+% Set the delimiters to be braces. This is local to a scope, including within a schema.
+% 
 %    \begin{macrocode}
-\expandafter\ifx\csname newenvironment\endcsname\relax
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\DoBraces}%
+    {\let\@schemata at LD\lbrace \let\@schemata at RD\rbrace}
 \else
-  \newcommand{\DoBraces}{\let\@schemata at LD\lbrace \let\@schemata at RD\rbrace}%
+  \def\DoBraces%
+    {\let\@schemata at LD\lbrace \let\@schemata at RD\rbrace}
 \fi
 %    \end{macrocode}
 % \end{macro}
+% 
 % \begin{macro}{\DoBrackets}
 % \changes{v0.6}{2013/03/10}{Added macro}
-% Set the ``branches'' to be brackets.
+% \changes{v1.0}{2020/03/13}{ensure short}
+% Set the delimiters to be brackets. This is local, as above.
+% 
 %    \begin{macrocode}
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \def\DoBrackets{\let\@schemata at LD\lbrack \let\@schemata at RD\rbrack}%
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\DoBrackets}%
+    {\let\@schemata at LD\lbrack \let\@schemata at RD\rbrack}
 \else
-  \newcommand{\DoBrackets}{\let\@schemata at LD\lbrack \let\@schemata at RD\rbrack}%
+  \def\DoBrackets%
+    {\let\@schemata at LD\lbrack \let\@schemata at RD\rbrack}
 \fi
 %    \end{macrocode}
 % \end{macro}
+% 
 % \begin{macro}{\DoParens}
 % \changes{v0.6}{2013/03/10}{Added macro}
-% Set the ``branches'' to be parentheses.
+% \changes{v1.0}{2020/03/13}{ensure short}
+% Set the delimiters to be parentheses. This is local, as above.
+% 
 %    \begin{macrocode}
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \def\DoParens{\let\@schemata at LD( \let\@schemata at RD)}%
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\DoParens}%
+    {\let\@schemata at LD( \let\@schemata at RD)}
 \else
-  \newcommand{\DoParens}{\let\@schemata at LD( \let\@schemata at RD)}%
+  \def\DoParens%
+    {\let\@schemata at LD( \let\@schemata at RD)}
 \fi
 %    \end{macrocode}
 % \end{macro}
+% 
+% \begin{macro}{\DoGroups}
+% \changes{v1.0}{2020/03/13}{Added macro}
+% Set the delimiters to be parentheses. This is local, as above.
+% 
+%    \begin{macrocode}
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\DoGroups}%
+    {\let\@schemata at LD\lgroup \let\@schemata at RD\rgroup}
+\else
+  \def\DoGroups%
+    {\let\@schemata at LD\lgroup \let\@schemata at RD\rgroup}
+\fi
+%    \end{macrocode}
+% \end{macro}
+% 
 % \begin{macro}{\LCschema}
 % \changes{v0.6}{2013/03/10}{Added macro}
-% Set global settings to assume lowercase initial text in \cmd{\schemabox}es.
+% \changes{v1.0}{2020/03/13}{ensure short}
+% Prevent \cmd{\schemabox} from adding a \cmd{\strut} in the first line.
+% 
 %    \begin{macrocode}
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \def\LCschema{\@schemata at LCBoxtrue}%
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\LCschema}{\@schemata at LCBoxtrue}
 \else
-  \newcommand{\LCschema}{\@schemata at LCBoxtrue}%
+  \def\LCschema{\@schemata at LCBoxtrue}
 \fi
 %    \end{macrocode}
 % \end{macro}
+% \newpage
+% 
 % \begin{macro}{\UCschema}
 % \changes{v0.6}{2013/03/10}{Added macro}
-% Set global settings to assume uppercase initial text in \cmd{\schemabox}es.
+% \changes{v1.0}{2020/03/13}{ensure short}
+% Permit \cmd{\schemabox} to add a \cmd{\strut} in the first line (default).
+% 
 %    \begin{macrocode}
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \def\UCschema{\@schemata at LCBoxfalse}%
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\UCschema}{\@schemata at LCBoxfalse}
 \else
-  \newcommand{\UCschema}{\@schemata at LCBoxfalse}%
+  \def\UCschema{\@schemata at LCBoxfalse}
 \fi
 %    \end{macrocode}
 % \end{macro}
+% 
 % \begin{macro}{\SwitchSB}
 % \changes{v0.6}{2013/03/10}{Added macro}
+% \changes{v1.0}{2020/03/13}{ensure short}
 % Flip the UC/LC settings for one \cmd{\schemabox}, which will reset this value on exit.
+% 
 %    \begin{macrocode}
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \def\SwitchSB{\@schemata at SWBoxtrue}%
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\SwitchSB}{\@schemata at SWBoxtrue}%
 \else
-  \newcommand{\SwitchSB}{\@schemata at SWBoxtrue}%
+  \def\SwitchSB{\@schemata at SWBoxtrue}
 \fi
 %    \end{macrocode}
 % \end{macro}
-%
+% 
 % \begin{macro}{\NudgeSB}
 % \changes{v0.8}{2016/01/25}{Added macro}
-% Add a kern to the end of each line in a \cmd{\schemabox}. This will be reset on exit from the \cmd{\schemabox}.
+% \changes{v1.0}{2020/03/13}{ensure short}
+% Add a kern to the end of each line in one \cmd{\schemabox}. This will be reset on exit from that \cmd{\schemabox}.
+% 
 %    \begin{macrocode}
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \def\NudgeSB{\@schemata at NudgeBoxtrue}%
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\NudgeSB}{\@schemata at NudgeBoxtrue}
 \else
-  \newcommand{\NudgeSB}{\@schemata at NudgeBoxtrue}%
+  \def\NudgeSB{\@schemata at NudgeBoxtrue}
 \fi
 %    \end{macrocode}
 % \end{macro}
-% \clearpage\noindent
-%
+% 
+% \begin{macro}{\SBNudgeFactor}
+% \changes{v1.0}{2020/03/13}{Added macro}
+% Define the \texttt{\textbackslash kern} to be added to the end of each line in one \cmd{\schemabox}. The default is \texttt{0.2em}, equal to the horizontal corrective.
+% 
+%    \begin{macrocode}
+\ifx\fmtname\schemataLaTeX
+  \newcommand{\SBNudgeFactor}{\kern0.2em}
+\else
+  \def\SBNudgeFactor{\kern0.2em}
+\fi
+%    \end{macrocode}
+% \end{macro}
+% 
 % \begin{macro}{\schemabox}
+% \changes{v0.6}{2013/03/10}{Added lowercase tweaks}
 % \changes{v0.8}{2016/01/25}{Added nudge feature; fix errors when not in internal vertical mode}
-% If in internal vertical mode, wrap a stack of left-aligned \cmd{\hbox}es with optional width in a \cmd{\vbox.} This allows the box to be only as wide as needed. The syntax is reminiscent of a one-column tabular. Normally insert a \cmd{\strut} in the first \cmd{\hbox}.
-% \changes{v0.6}{2013/03/10}{Added lowercase tweaks}
+% \changes{v1.0}{2020/03/13}{create front- and back-end; ensure short}
+%  If in internal vertical mode, restricted horizontal mode, or math mode, wrap a stack of \cmd{\hbox}es in a \cmd{\vbox}, then put that inside an \cmd{\hbox}. The first argument sets an optional width for those \cmd{\hbox}es. Normally insert a \cmd{\strut} in the first \cmd{\hbox}. The second argument contains the rows of horizontal material, where |\\| is redefined to end one \cmd{\hbox} and begin another. When in any other mode mode, just display the second argument as text.
+%
 %    \begin{macrocode}
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \gdef\schemabox{\futurelet\testchar\@schemabox}
-  \gdef\@schemabox{%
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\schemabox}[2][0pt]{\@schemata at schemabox[#1]{#2}}
+\else
+  \def\schemabox{\futurelet\testchar\@schemata at schemab@x}
+  \def\@schemata at schemab@x{%
     \ifx[\testchar
-      \let\next\@@schemabox%
+      \let\next\@schemata at schemabox%
     \else
-      \let\next\@@schemab at x%
+      \let\next\@schemata@@schemab at x%
     \fi
     \next%
   }%
-  \gdef\@@schemab at x#1{\@@schemabox[0pt]{#1}}
-  \gdef\@@schemabox[#1]#2{%
-    \ifinner
-      \if at schemata@LCBox
-        \def\@Adj{}%
-        \if at schemata@SWBox\def\@Adj{\strut}\fi
-      \else
-        \def\@Adj{\strut}%
-        \if at schemata@SWBox\def\@Adj{}\fi
-      \fi
-      \if at schemata@NudgeBox
-        \def\@Nudge{\kern0.2em}%
-      \else
-        \def\@Nudge{}%
-      \fi
-      \ifdim#1<1pt
-        \def\\{\@Nudge\egroup\hbox\bgroup\ignorespaces }%
-        \vbox{\hbox\bgroup\@Adj\ignorespaces #2\@Nudge\egroup}%
-      \else
-        \def\\{\hfil\egroup\hbox to #1\bgroup\ignorespaces }%
-        \vbox{\hbox to #1\bgroup\@Adj\ignorespaces #2\hfil\egroup}%
-      \fi
+  \def\@schemata@@schemab at x#1{\@schemata at schemabox[0pt]{#1}}
+\fi
+\def\@schemata at schemabox[#1]#2{%
+  \ifinner
+    \if at schemata@LCBox
+      \def\@Adj{}%
+      \if at schemata@SWBox\def\@Adj{\strut}\fi
     \else
-      #2%
+      \def\@Adj{\strut}%
+      \if at schemata@SWBox\def\@Adj{}\fi
     \fi
-    \@schemata at SWBoxfalse%
-    \@schemata at NudgeBoxfalse%
-  }%
-%    \end{macrocode}
-% \clearpage
-%    \begin{macrocode}
-\else
-  \newcommand{\schemabox}[2][0pt]{%
-    \ifinner
-      \if at schemata@LCBox
-        \def\@Adj{}%
-        \if at schemata@SWBox\def\@Adj{\strut}\fi
-      \else
-        \def\@Adj{\strut}%
-        \if at schemata@SWBox\def\@Adj{}\fi
-      \fi
-      \if at schemata@NudgeBox
-        \def\@Nudge{\kern0.2em}%
-      \else
-        \def\@Nudge{}%
-      \fi
-      \ifdim#1<1pt
-        \def\\{\@Nudge\egroup\hbox\bgroup\ignorespaces }%
-        \vbox{\hbox\bgroup\@Adj\ignorespaces #2\@Nudge\egroup}%
-      \else
-        \def\\{\hfil\egroup\hbox to #1\bgroup\ignorespaces }%
-        \vbox{\hbox to #1\bgroup\@Adj\ignorespaces #2\hfil\egroup}%
-      \fi
+    \if at schemata@NudgeBox
+      \let\@Nudge\SBNudgeFactor%
     \else
-      #2%
+      \def\@Nudge{}%
     \fi
-    \@schemata at SWBoxfalse%
-    \@schemata at NudgeBoxfalse%
-  }%
-\fi
+    \ifdim#1<1pt
+      \def\\{\@Nudge\egroup\hbox\bgroup\ignorespaces }%
+      \vbox{\hbox\bgroup\@Adj\ignorespaces #2\@Nudge\egroup}%
+    \else
+      \def\\{\hfil\egroup\hbox to #1\bgroup\ignorespaces }%
+      \vbox{\hbox to #1\bgroup\@Adj\ignorespaces #2\hfil\egroup}%
+    \fi
+  \else
+    #2%
+  \fi
+  \@schemata at SWBoxfalse%
+  \@schemata at NudgeBoxfalse%
+}
 %    \end{macrocode}
 % \end{macro}
-% \clearpage\noindent
-%
+% 
 % \begin{macro}{\schema}
-% This ``simple'' schema vertically centers two boxes of internal vertical material and puts a ``simple'' brace between the boxes based on the height of the box and the options passed to the schema. By default, a schema has a box to the left, an open delimiter, and a box to the right. If any optional argument other than "open" is used, the schema prints a box to the left, a close brace, and a box to the right.
+% \changes{v1.0}{2020/03/13}{create front- and back-end; ensure long}
+% This ``simple'' schema vertically centers two boxes of internal vertical material and puts a ``simple'' brace between the boxes based on the height of the box and the options passed to the schema.
+% 
+% There is something of a ``magic'' value for adjusting the height used for the larger side of a \cmd{\schema}, namely \texttt{1.44265ex}. By using this adjustment, which is slightly larger than $\sqrt{2}$ times the ex-height of the font, the results look more aesthetically pleasing in terms of centering and size of the braces.
+% 
+% By default, a schema has a box to the left, an open delimiter, and a box to the right. If any optional argument other than \texttt{open} is used, the schema prints a box to the left, a close brace, and a box to the right.
+% 
 %    \begin{macrocode}
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \gdef\schema{\futurelet\testchar\@schema}
-  \gdef\@schema{\ifx[\testchar \let\next\@@schema%
-               \else \let\next\@@schem@ \fi \next}
-  \gdef\@@schem@#1#2{\@@schema[open]{#1}{#2}}
-  \gdef\@@schema[#1]#2#3{%
-    \def\@ption{#1}\def\@pen{open}%
-    \ifx\@ption\@pen
-      \setbox\@rhs=\vbox{#3}%
-      \@rheight=\ht\@rhs%
-      \advance\@rheight\dp\@rhs%
-      \advance\@rheight by 1.44265ex%
-      \hbox{$\vcenter{#2}%
-            \@schemata at lbrace{\@rheight}%
-            \vcenter{#3}$}%
-    \else
-      \setbox\@lhs=\vbox{#2}%
-      \@lheight=\ht\@lhs%
-      \advance\@lheight\dp\@lhs%
-      \advance\@lheight by 1.44265ex%
-      \hbox{$\vcenter{#2}%
-            \kern-0.2em\@schemata at rbrace{\@lheight}%
-            \vcenter{#3}$}%
-    \fi
-  }%
+\ifx\fmtname\schemataLaTeX
+  \newcommand{\schema}[3][open]{%
+    \@schemata at schema[#1]{#2}{#3}}
 \else
-  \newcommand{\schema}[3][open]{%
-    \def\@ption{#1}\def\@pen{open}%
-    \ifx\@ption\@pen
-      \setbox\@rhs=\vbox{#3}%
-      \@rheight=\ht\@rhs%
-      \advance\@rheight\dp\@rhs%
-      \advance\@rheight by 1.44265ex%
-      \hbox{$\vcenter{#2}%
-            \@schemata at lbrace{\@rheight}%
-            \vcenter{#3}$}%
+  \long\def\schema{\futurelet\testchar\@schemata at schem@}
+  \long\def\@schemata at schem@{%
+    \ifx[\testchar
+      \let\next\@schemata at schema%
     \else
-      \setbox\@lhs=\vbox{#2}%
-      \@lheight=\ht\@lhs%
-      \advance\@lheight\dp\@lhs%
-      \advance\@lheight by 1.44265ex%
-      \hbox{$\vcenter{#2}%
-            \kern-0.2em\@schemata at rbrace{\@lheight}%
-            \vcenter{#3}$}%
+      \let\next\@schemata@@schem@%
     \fi
+    \next%
   }%
+  \long\def\@schemata@@schem@#1#2{%
+    \@schemata at schema[open]{#1}{#2}}
 \fi
+\long\def\@schemata at schema[#1]#2#3{%
+  \def\@ption{#1}\def\@pen{open}%
+  \ifx\@ption\@pen
+    \setbox\@schemata at rhs=\vbox{#3}%
+    \@schemata at rheight=\ht\@schemata at rhs%
+    \advance\@schemata at rheight\dp\@schemata at rhs%
+    \advance\@schemata at rheight by 1.44265ex%
+    \hbox{$\vcenter{#2}%
+      \@schemata at lbrace{\@schemata at rheight}%
+      \vcenter{#3}$}%
+  \else
+    \setbox\@schemata at lhs=\vbox{#2}%
+    \@schemata at lheight=\ht\@schemata at lhs%
+    \advance\@schemata at lheight\dp\@schemata at lhs%
+    \advance\@schemata at lheight by 1.44265ex%
+    \hbox{$\vcenter{#2}%
+      \kern-0.2em\@schemata at rbrace{\@schemata at lheight}%
+      \vcenter{#3}$}%
+  \fi
+}
 %    \end{macrocode}
 % \end{macro}
-% \clearpage\noindent
-%
+% 
 % \begin{macro}{\Schema}
-% This is the general-purpose form of schemata. The arguments include whether it is an open or closed schema, the vertical adjustment of the left-hand side, the size of the brace, and the contents of the left and right-hand sizes. It works the same as above, but requires manual adjustment of the braces.
+% \changes{v1.0}{2020/03/13}{create front- and back-end; ensure long}
+% This is the general-purpose form of schemata. The arguments include whether it is an open or closed schema, the vertical adjustment of the left-hand side and delimiter over against the right-hand side, the size of the brace, and the contents of the left and right-hand sizes. It works about the same as above, but requires manual adjustment of the braces. Again we see the ``magic'' height adjustment value of \texttt{1.44265ex}.
+% 
 %    \begin{macrocode}
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \gdef\Schema{\futurelet\testchar\@Schema}
-  \gdef\@Schema{\ifx[\testchar \let\next\@@Schema%
-               \else \let\next\@@Schem@ \fi \next}
-  \gdef\@@Schem@#1#2#3#4{\@@Schema[open]{#1}{#2}{#3}{#4}}
-  \gdef\@@Schema[#1]#2#3#4#5{%
-    \def\@ption{#1}%
-    \def\@pen{open}%
-    \dimen0=#2%
-    \ifx\@ption\@pen
-      \hbox{$\vcenter{\vskip1.44265\dimen0#4}%
-        \@schemata at biglbrace{#2}{#3}\vcenter{#5}$}%
-    \else
-      \hbox{$\vcenter{\vskip1.44265\dimen0#4}\kern-0.2em%
-        \@schemata at bigrbrace{#2}{#3}\vcenter{#5}$}%
-    \fi
-  }%
+\ifx\fmtname\schemataLaTeX
+  \newcommand{\Schema}[5][open]{%
+    \@schemata at Schema[#1]{#2}{#3}{#4}{#5}}
 \else
-  \newcommand{\Schema}[5][open]{%
-    \def\@ption{#1}%
-    \def\@pen{open}%
-    \dimen0=#2%
-    \ifx\@ption\@pen
-      \hbox{$\vcenter{\vskip1.44265\dimen0#4}%
-        \@schemata at biglbrace{#2}{#3}\vcenter{#5}$}%
+  \long\def\Schema{\futurelet\testchar\@schemata at Schem@}
+  \long\def\@schemata at Schem@{%
+    \ifx[\testchar
+      \let\next\@schemata at Schema%
     \else
-      \hbox{$\vcenter{\vskip1.44265\dimen0#4}\kern-0.2em%
-        \@schemata at bigrbrace{#2}{#3}\vcenter{#5}$}%
+      \let\next\@schemata@@Schem@%
     \fi
+    \next%
   }%
+  \long\def\@schemata@@Schem@#1#2#3#4{%
+    \@schemata at Schema[open]{#1}{#2}{#3}{#4}}
 \fi
+\long\def\@schemata at Schema[#1]#2#3#4#5{%
+  \def\@ption{#1}%
+  \def\@pen{open}%
+  \dimen0=#2%
+  \ifx\@ption\@pen
+    \hbox{$\vcenter{\vskip1.44265\dimen0#4}%
+      \@schemata at biglbrace{#2}{#3}\vcenter{#5}$}%
+  \else
+    \hbox{$\vcenter{\vskip1.44265\dimen0#4}\kern-0.2em%
+      \@schemata at bigrbrace{#2}{#3}\vcenter{#5}$}%
+  \fi
+}
 %    \end{macrocode}
 % \end{macro}
-%
+% \newpage
+% 
 % \begin{macro}{\@schemata at lbrace}
 % \changes{v0.8}{2016/01/25}{Renamed}
-% Draw an on-center brace to the left of a simple box.
+% \changes{v1.0}{2020/03/13}{ensure short}
+% Draw an on-center delimiter to the left of a simple box.
+% 
 %    \begin{macrocode}
-\expandafter\ifx\csname newenvironment\endcsname\relax
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\@schemata at lbrace}[1]{%
+    \ifmmode
+      \left.\vcenter{\vbox to #1{\vfil}}\right\@schemata at LD%
+    \fi
+  }
+\else
   \def\@schemata at lbrace#1{%
-    \ifmmode\left.\vcenter{\vbox to #1{\vfil}}\right\@schemata at LD\fi}
-\else
-  \newcommand{\@schemata at lbrace}[1]{%
-    \ifmmode\left.\vcenter{\vbox to #1{\vfil}}\right\@schemata at LD\fi}
+    \ifmmode
+      \left.\vcenter{\vbox to #1{\vfil}}\right\@schemata at LD%
+    \fi
+  }
 \fi
 %    \end{macrocode}
 % \end{macro}
-%
+% 
 % \begin{macro}{\@schemata at rbrace}
 % \changes{v0.8}{2016/01/25}{Renamed}
-% Draw an on-center brace to the right of a simple box.
+% \changes{v1.0}{2020/03/13}{ensure short}
+% Draw an on-center delimiter to the right of a simple box.
+% 
 %    \begin{macrocode}
-\expandafter\ifx\csname newenvironment\endcsname\relax
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\@schemata at rbrace}[1]{%
+    \ifmmode
+      \left\@schemata at RD\vcenter{\vbox to #1{\vfil}}\right.%
+    \fi
+  }
+\else
   \def\@schemata at rbrace#1{%
-    \ifmmode\left\@schemata at RD\vcenter{\vbox to #1{\vfil}}\right.\fi}
-\else
-  \newcommand{\@schemata at rbrace}[1]{%
-    \ifmmode\left\@schemata at RD\vcenter{\vbox to #1{\vfil}}\right.\fi}
+    \ifmmode
+      \left\@schemata at RD\vcenter{\vbox to #1{\vfil}}\right.%
+    \fi
+  }
 \fi
 %    \end{macrocode}
 % \end{macro}
-% \clearpage\noindent
 %
 % \begin{macro}{\@schemata at biglbrace}
 % \changes{v0.8}{2016/01/25}{Renamed; use absolute value of brace size}
-% Draw a vertically-adjustable brace to the left of a complex assortment of boxes.
+% \changes{v1.0}{2020/03/13}{ensure short; create front- and back-end}
+% Draw a vertically-adjustable delimiter to the left of a complex assortment of boxes. Again we see the ``magic'' height adjustment value of \texttt{1.44265ex}, but both positive and negative.
+% 
 %    \begin{macrocode}
-\expandafter\ifx\csname newenvironment\endcsname\relax
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\@schemata at biglbrace}[2]{%
+    \@schemata@@biglbrace{#1}{#2}}
+\else
   \def\@schemata at biglbrace#1#2{%
-    \dimen0=#1%
-    \dimen2=#2%
-    \dimen4=-\dimen2%
-    \ifdim\dimen4>\dimen2\dimen2=\dimen4\fi
-    \ifdim\dimen0<0pt
-      \ifmmode\vcenter{\hbox{$\left.%
-                       \vbox to 1.44265\dimen2{\vfil}%
-                       \right\@schemata at LD%
-                       \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi
-    \else
-      \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}%
-                       \atop\left.%
-                       \vbox to 1.44265\dimen2{\vfil}%
-                       \right\@schemata at LD$}}\fi
-    \fi
-  }%
-\else
-  \newcommand{\@schemata at biglbrace}[2]{%
-    \dimen0=#1%
-    \dimen2=#2%
-    \dimen4=-\dimen2%
-    \ifdim\dimen4>\dimen2\dimen2=\dimen4\fi
-    \ifdim\dimen0<0pt
-      \ifmmode\vcenter{\hbox{$\left.%
-                       \vbox to 1.44265\dimen2{\vfil}%
-                       \right\@schemata at LD%
-                       \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi
-    \else
-      \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}%
-                       \atop\left.%
-                       \vbox to 1.44265\dimen2{\vfil}%
-                       \right\@schemata at LD$}}\fi
-    \fi
-  }%
+    \@schemata@@biglbrace{#1}{#2}}
 \fi
+\def\@schemata@@biglbrace#1#2{%
+  \dimen0=#1%
+  \dimen2=#2%
+  \dimen4=-\dimen2%
+  \ifdim\dimen4>\dimen2\dimen2=\dimen4\fi
+  \ifdim\dimen0<0pt
+    \ifmmode\vcenter{\hbox{$\left.%
+      \vbox to 1.44265\dimen2{\vfil}%
+      \right\@schemata at LD%
+      \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi
+  \else
+    \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}%
+      \atop\left.%
+      \vbox to 1.44265\dimen2{\vfil}%
+      \right\@schemata at LD$}}\fi
+  \fi
+}
 %    \end{macrocode}
 % \end{macro}
-% \clearpage\noindent
-%
+% 
 % \begin{macro}{\@schemata at bigrbrace}
 % \changes{v0.8}{2016/01/25}{Renamed; Use absolute value of brace size}
-% Draw a vertically-adjustable brace to the right of a complex assortment of boxes.
+% \changes{v1.0}{2020/03/13}{ensure short; create front- and back-end}
+% Draw a vertically-adjustable delimiter to the right of a complex assortment of boxes. Again we see the ``magic'' height adjustment value of \texttt{1.44265ex}, but both positive and negative.
+% 
 %    \begin{macrocode}
-\expandafter\ifx\csname newenvironment\endcsname\relax
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\@schemata at bigrbrace}[2]{%
+    \@schemata@@bigrbrace{#1}{#2}%
+  }
+\else
   \def\@schemata at bigrbrace#1#2{%
-    \dimen0=#1%
-    \dimen2=#2%
-    \dimen4=-\dimen2%
-    \ifdim\dimen4>\dimen2\dimen2=\dimen4\fi
-    \ifdim\dimen0<0pt
-      \ifmmode\vcenter{\hbox{$\left.%
-                       \vbox to 1.44265\dimen2{\vfil}%
-                       \right\@schemata at RD%
-                       \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi
-    \else
-      \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}%
-                       \atop\left.%
-                       \vbox to 1.44265\dimen2{\vfil}%
-                       \right\@schemata at RD$}}\fi
-    \fi
-  }%
-\else
-  \newcommand{\@schemata at bigrbrace}[2]{%
-    \dimen0=#1%
-    \dimen2=#2%
-    \dimen4=-\dimen2%
-    \ifdim\dimen4>\dimen2\dimen2=\dimen4\fi
-    \ifdim\dimen0<0pt
-      \ifmmode\vcenter{\hbox{$\left.%
-                       \vbox to 1.44265\dimen2{\vfil}%
-                       \right\@schemata at RD%
-                       \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi
-    \else
-      \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}%
-                       \atop\left.%
-                       \vbox to 1.44265\dimen2{\vfil}%
-                       \right\@schemata at RD$}}\fi
-    \fi
-  }%
+    \@schemata@@bigrbrace{#1}{#2}%
+  }
 \fi
+\def\@schemata@@bigrbrace#1#2{%
+  \dimen0=#1%
+  \dimen2=#2%
+  \dimen4=-\dimen2%
+  \ifdim\dimen4>\dimen2\dimen2=\dimen4\fi
+  \ifdim\dimen0<0pt
+    \ifmmode\vcenter{\hbox{$\left.%
+      \vbox to 1.44265\dimen2{\vfil}%
+      \right\@schemata at RD%
+      \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi
+  \else
+    \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}%
+      \atop\left.%
+      \vbox to 1.44265\dimen2{\vfil}%
+      \right\@schemata at RD$}}\fi
+  \fi
+}
 %    \end{macrocode}
 % \end{macro}
+%
+% If we are not using \LaTeXe, we do the equivalent of \cmd{\makeatother}.
+%
 %    \begin{macrocode}
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \catcode`@=12
+\ifx\fmtname\schemataLaTeX\else
+  \catcode`@=12\relax
 \fi
 %    \end{macrocode}
 %\Finale

Modified: trunk/Master/texmf-dist/source/generic/schemata/schemata.ins
===================================================================
--- trunk/Master/texmf-dist/source/generic/schemata/schemata.ins	2020-03-14 20:42:00 UTC (rev 54295)
+++ trunk/Master/texmf-dist/source/generic/schemata/schemata.ins	2020-03-14 20:44:40 UTC (rev 54296)
@@ -5,10 +5,11 @@
 %% The original source files were:
 %%
 %% schemata.dtx  (with options: `install')
+%% 
 %% --------:| ----------------------------------------------------------------
 %% schemata:| Generic package to aid construction of topical categories
 %%   Author:| Charles P. Schaum
-%%   E-mail:| charles dot schaum at comcast dot net
+%%   E-mail:| charles dot schaum at comcast.net
 %%  License:| Released under the LaTeX Project Public License v1.3c or later
 %%      See:| http://www.latex-project.org/lppl.txt
 %% 
@@ -16,10 +17,11 @@
 \keepsilent
 \askforoverwritefalse
 \preamble
+
 --------:| ----------------------------------------------------------------
 schemata:| Generic package to aid construction of topical categories
   Author:| Charles P. Schaum
-  E-mail:| charles dot schaum at comcast dot net
+  E-mail:| charles dot schaum at comcast.net
  License:| Released under the LaTeX Project Public License v1.3c or later
      See:| http://www.latex-project.org/lppl.txt
 
@@ -26,7 +28,7 @@
 \endpreamble
 \postamble
 
-Copyright (C) 2016 by Charles P. Schaum <charles dot schaum at comcast dot net>
+Copyright (C) 2020 by Charles P. Schaum <charles dot schaum at comcast.net>
 
 This work may be distributed and/or modified under the
 conditions of the LaTeX Project Public License (LPPL), either
@@ -38,8 +40,10 @@
 This work is "maintained" (as per LPPL maintenance status) by
 Charles P. Schaum.
 
-This work consists of the file schemata.dtx and a Makefile.
-Running "make" generates the derived files README, schemata.pdf and schemata.sty.
+This work consists of the file schemata.dtx, schematest.tex,
+  schemata.png, and a Makefile.
+Running "make" generates the derived files README, schemata.pdf,
+  and schemata.sty.
 Running "make inst" installs the files in the user's TeX tree.
 Running "make install" installs the files in the local TeX tree.
 
@@ -50,8 +54,270 @@
   \file{\jobname.sty}{\from{\jobname.dtx}{package}}
 }
 \endbatchfile
+\ifx\fmtname\schemataLaTeX\else
+  \catcode`@=11\relax
+\fi
+\newbox\@schemata at rhs
+\newbox\@schemata at lhs
+\newdimen\@schemata at rheight
+\newdimen\@schemata at lheight
+\newif\if at schemata@LCBox
+\newif\if at schemata@SWBox
+\newif\if at schemata@NudgeBox
+\ifx\fmtname\schemataLaTeX
+  \DeclareOption{braces}%
+    {\let\@schemata at LD\lbrace \let\@schemata at RD\rbrace}
+  \DeclareOption{brackets}%
+    {\let\@schemata at LD\lbrack \let\@schemata at RD\rbrack}
+  \DeclareOption{parens}%
+    {\let\@schemata at LD( \let\@schemata at RD)}
+  \DeclareOption{groups}%
+    {\let\@schemata at LD\lgroup \let\@schemata at RD\rgroup}
+  \ExecuteOptions{braces}
+  \ProcessOptions\relax
+\else
+  \let\@schemata at LD\lbrace%
+  \let\@schemata at RD\rbrace%
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\DoBraces}%
+    {\let\@schemata at LD\lbrace \let\@schemata at RD\rbrace}
+\else
+  \def\DoBraces%
+    {\let\@schemata at LD\lbrace \let\@schemata at RD\rbrace}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\DoBrackets}%
+    {\let\@schemata at LD\lbrack \let\@schemata at RD\rbrack}
+\else
+  \def\DoBrackets%
+    {\let\@schemata at LD\lbrack \let\@schemata at RD\rbrack}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\DoParens}%
+    {\let\@schemata at LD( \let\@schemata at RD)}
+\else
+  \def\DoParens%
+    {\let\@schemata at LD( \let\@schemata at RD)}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\DoGroups}%
+    {\let\@schemata at LD\lgroup \let\@schemata at RD\rgroup}
+\else
+  \def\DoGroups%
+    {\let\@schemata at LD\lgroup \let\@schemata at RD\rgroup}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\LCschema}{\@schemata at LCBoxtrue}
+\else
+  \def\LCschema{\@schemata at LCBoxtrue}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\UCschema}{\@schemata at LCBoxfalse}
+\else
+  \def\UCschema{\@schemata at LCBoxfalse}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\SwitchSB}{\@schemata at SWBoxtrue}%
+\else
+  \def\SwitchSB{\@schemata at SWBoxtrue}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\NudgeSB}{\@schemata at NudgeBoxtrue}
+\else
+  \def\NudgeSB{\@schemata at NudgeBoxtrue}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand{\SBNudgeFactor}{\kern0.2em}
+\else
+  \def\SBNudgeFactor{\kern0.2em}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\schemabox}[2][0pt]{\@schemata at schemabox[#1]{#2}}
+\else
+  \def\schemabox{\futurelet\testchar\@schemata at schemab@x}
+  \def\@schemata at schemab@x{%
+    \ifx[\testchar
+      \let\next\@schemata at schemabox%
+    \else
+      \let\next\@schemata@@schemab at x%
+    \fi
+    \next%
+  }%
+  \def\@schemata@@schemab at x#1{\@schemata at schemabox[0pt]{#1}}
+\fi
+\def\@schemata at schemabox[#1]#2{%
+  \ifinner
+    \if at schemata@LCBox
+      \def\@Adj{}%
+      \if at schemata@SWBox\def\@Adj{\strut}\fi
+    \else
+      \def\@Adj{\strut}%
+      \if at schemata@SWBox\def\@Adj{}\fi
+    \fi
+    \if at schemata@NudgeBox
+      \let\@Nudge\SBNudgeFactor%
+    \else
+      \def\@Nudge{}%
+    \fi
+    \ifdim#1<1pt
+      \def\\{\@Nudge\egroup\hbox\bgroup\ignorespaces }%
+      \vbox{\hbox\bgroup\@Adj\ignorespaces #2\@Nudge\egroup}%
+    \else
+      \def\\{\hfil\egroup\hbox to #1\bgroup\ignorespaces }%
+      \vbox{\hbox to #1\bgroup\@Adj\ignorespaces #2\hfil\egroup}%
+    \fi
+  \else
+    #2%
+  \fi
+  \@schemata at SWBoxfalse%
+  \@schemata at NudgeBoxfalse%
+}
+\ifx\fmtname\schemataLaTeX
+  \newcommand{\schema}[3][open]{%
+    \@schemata at schema[#1]{#2}{#3}}
+\else
+  \long\def\schema{\futurelet\testchar\@schemata at schem@}
+  \long\def\@schemata at schem@{%
+    \ifx[\testchar
+      \let\next\@schemata at schema%
+    \else
+      \let\next\@schemata@@schem@%
+    \fi
+    \next%
+  }%
+  \long\def\@schemata@@schem@#1#2{%
+    \@schemata at schema[open]{#1}{#2}}
+\fi
+\long\def\@schemata at schema[#1]#2#3{%
+  \def\@ption{#1}\def\@pen{open}%
+  \ifx\@ption\@pen
+    \setbox\@schemata at rhs=\vbox{#3}%
+    \@schemata at rheight=\ht\@schemata at rhs%
+    \advance\@schemata at rheight\dp\@schemata at rhs%
+    \advance\@schemata at rheight by 1.44265ex%
+    \hbox{$\vcenter{#2}%
+      \@schemata at lbrace{\@schemata at rheight}%
+      \vcenter{#3}$}%
+  \else
+    \setbox\@schemata at lhs=\vbox{#2}%
+    \@schemata at lheight=\ht\@schemata at lhs%
+    \advance\@schemata at lheight\dp\@schemata at lhs%
+    \advance\@schemata at lheight by 1.44265ex%
+    \hbox{$\vcenter{#2}%
+      \kern-0.2em\@schemata at rbrace{\@schemata at lheight}%
+      \vcenter{#3}$}%
+  \fi
+}
+\ifx\fmtname\schemataLaTeX
+  \newcommand{\Schema}[5][open]{%
+    \@schemata at Schema[#1]{#2}{#3}{#4}{#5}}
+\else
+  \long\def\Schema{\futurelet\testchar\@schemata at Schem@}
+  \long\def\@schemata at Schem@{%
+    \ifx[\testchar
+      \let\next\@schemata at Schema%
+    \else
+      \let\next\@schemata@@Schem@%
+    \fi
+    \next%
+  }%
+  \long\def\@schemata@@Schem@#1#2#3#4{%
+    \@schemata at Schema[open]{#1}{#2}{#3}{#4}}
+\fi
+\long\def\@schemata at Schema[#1]#2#3#4#5{%
+  \def\@ption{#1}%
+  \def\@pen{open}%
+  \dimen0=#2%
+  \ifx\@ption\@pen
+    \hbox{$\vcenter{\vskip1.44265\dimen0#4}%
+      \@schemata at biglbrace{#2}{#3}\vcenter{#5}$}%
+  \else
+    \hbox{$\vcenter{\vskip1.44265\dimen0#4}\kern-0.2em%
+      \@schemata at bigrbrace{#2}{#3}\vcenter{#5}$}%
+  \fi
+}
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\@schemata at lbrace}[1]{%
+    \ifmmode
+      \left.\vcenter{\vbox to #1{\vfil}}\right\@schemata at LD%
+    \fi
+  }
+\else
+  \def\@schemata at lbrace#1{%
+    \ifmmode
+      \left.\vcenter{\vbox to #1{\vfil}}\right\@schemata at LD%
+    \fi
+  }
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\@schemata at rbrace}[1]{%
+    \ifmmode
+      \left\@schemata at RD\vcenter{\vbox to #1{\vfil}}\right.%
+    \fi
+  }
+\else
+  \def\@schemata at rbrace#1{%
+    \ifmmode
+      \left\@schemata at RD\vcenter{\vbox to #1{\vfil}}\right.%
+    \fi
+  }
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\@schemata at biglbrace}[2]{%
+    \@schemata@@biglbrace{#1}{#2}}
+\else
+  \def\@schemata at biglbrace#1#2{%
+    \@schemata@@biglbrace{#1}{#2}}
+\fi
+\def\@schemata@@biglbrace#1#2{%
+  \dimen0=#1%
+  \dimen2=#2%
+  \dimen4=-\dimen2%
+  \ifdim\dimen4>\dimen2\dimen2=\dimen4\fi
+  \ifdim\dimen0<0pt
+    \ifmmode\vcenter{\hbox{$\left.%
+      \vbox to 1.44265\dimen2{\vfil}%
+      \right\@schemata at LD%
+      \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi
+  \else
+    \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}%
+      \atop\left.%
+      \vbox to 1.44265\dimen2{\vfil}%
+      \right\@schemata at LD$}}\fi
+  \fi
+}
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\@schemata at bigrbrace}[2]{%
+    \@schemata@@bigrbrace{#1}{#2}%
+  }
+\else
+  \def\@schemata at bigrbrace#1#2{%
+    \@schemata@@bigrbrace{#1}{#2}%
+  }
+\fi
+\def\@schemata@@bigrbrace#1#2{%
+  \dimen0=#1%
+  \dimen2=#2%
+  \dimen4=-\dimen2%
+  \ifdim\dimen4>\dimen2\dimen2=\dimen4\fi
+  \ifdim\dimen0<0pt
+    \ifmmode\vcenter{\hbox{$\left.%
+      \vbox to 1.44265\dimen2{\vfil}%
+      \right\@schemata at RD%
+      \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi
+  \else
+    \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}%
+      \atop\left.%
+      \vbox to 1.44265\dimen2{\vfil}%
+      \right\@schemata at RD$}}\fi
+  \fi
+}
+\ifx\fmtname\schemataLaTeX\else
+  \catcode`@=12\relax
+\fi
 %% 
-%% Copyright (C) 2016 by Charles P. Schaum <charles dot schaum at comcast dot net>
+%% Copyright (C) 2020 by Charles P. Schaum <charles dot schaum at comcast.net>
 %% 
 %% This work may be distributed and/or modified under the
 %% conditions of the LaTeX Project Public License (LPPL), either
@@ -63,8 +329,10 @@
 %% This work is "maintained" (as per LPPL maintenance status) by
 %% Charles P. Schaum.
 %% 
-%% This work consists of the file schemata.dtx and a Makefile.
-%% Running "make" generates the derived files README, schemata.pdf and schemata.sty.
+%% This work consists of the file schemata.dtx, schematest.tex,
+%%   schemata.png, and a Makefile.
+%% Running "make" generates the derived files README, schemata.pdf,
+%%   and schemata.sty.
 %% Running "make inst" installs the files in the user's TeX tree.
 %% Running "make install" installs the files in the local TeX tree.
 %% 

Modified: trunk/Master/texmf-dist/tex/generic/schemata/schemata.sty
===================================================================
--- trunk/Master/texmf-dist/tex/generic/schemata/schemata.sty	2020-03-14 20:42:00 UTC (rev 54295)
+++ trunk/Master/texmf-dist/tex/generic/schemata/schemata.sty	2020-03-14 20:44:40 UTC (rev 54296)
@@ -5,308 +5,285 @@
 %% The original source files were:
 %%
 %% schemata.dtx  (with options: `package')
+%% 
 %% --------:| ----------------------------------------------------------------
 %% schemata:| Generic package to aid construction of topical categories
 %%   Author:| Charles P. Schaum
-%%   E-mail:| charles dot schaum at comcast dot net
+%%   E-mail:| charles dot schaum at comcast.net
 %%  License:| Released under the LaTeX Project Public License v1.3c or later
 %%      See:| http://www.latex-project.org/lppl.txt
 %% 
-\expandafter\ifx\csname newenvironment\endcsname\relax\else
-\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+{\expandafter}\expandafter\ifx \csname schemataLaTeX\endcsname\relax
+  \def\schemataLaTeX{LaTeX2e}\fi
+\ifx\fmtname\schemataLaTeX
+\expandafter\NeedsTeXFormat\expandafter{\schemataLaTeX}
 \ProvidesPackage{schemata}
-    [2016/01/25 v0.8 generic package to aid construction of topical categories]
+  [2020/03/13 v1.0 generic package to aid construction of topical categories]
 \fi
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \catcode`@=11%
-  \def\DoBraces{\let\@schemata at LD\lbrace \let\@schemata at RD\rbrace}%
-  \DoBraces%
-\else
-  \DeclareOption{braces}{\let\@schemata at LD\lbrace \let\@schemata at RD\rbrace}
-  \DeclareOption{brackets}{\let\@schemata at LD\lbrack \let\@schemata at RD\rbrack}
-  \DeclareOption{parens}{\let\@schemata at LD( \let\@schemata at RD)}
+\ifx\fmtname\schemataLaTeX\else
+  \catcode`@=11\relax
+\fi
+\newbox\@schemata at rhs
+\newbox\@schemata at lhs
+\newdimen\@schemata at rheight
+\newdimen\@schemata at lheight
+\newif\if at schemata@LCBox
+\newif\if at schemata@SWBox
+\newif\if at schemata@NudgeBox
+\ifx\fmtname\schemataLaTeX
+  \DeclareOption{braces}%
+    {\let\@schemata at LD\lbrace \let\@schemata at RD\rbrace}
+  \DeclareOption{brackets}%
+    {\let\@schemata at LD\lbrack \let\@schemata at RD\rbrack}
+  \DeclareOption{parens}%
+    {\let\@schemata at LD( \let\@schemata at RD)}
+  \DeclareOption{groups}%
+    {\let\@schemata at LD\lgroup \let\@schemata at RD\rgroup}
   \ExecuteOptions{braces}
   \ProcessOptions\relax
+\else
+  \let\@schemata at LD\lbrace%
+  \let\@schemata at RD\rbrace%
 \fi
-\newbox\@rhs%
-\newbox\@lhs%
-\newdimen\@rheight%
-\newdimen\@lheight%
-\newif\if at schemata@LCBox%
-\newif\if at schemata@SWBox%
-\newif\if at schemata@NudgeBox%
-\expandafter\ifx\csname newenvironment\endcsname\relax
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\DoBraces}%
+    {\let\@schemata at LD\lbrace \let\@schemata at RD\rbrace}
 \else
-  \newcommand{\DoBraces}{\let\@schemata at LD\lbrace \let\@schemata at RD\rbrace}%
+  \def\DoBraces%
+    {\let\@schemata at LD\lbrace \let\@schemata at RD\rbrace}
 \fi
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \def\DoBrackets{\let\@schemata at LD\lbrack \let\@schemata at RD\rbrack}%
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\DoBrackets}%
+    {\let\@schemata at LD\lbrack \let\@schemata at RD\rbrack}
 \else
-  \newcommand{\DoBrackets}{\let\@schemata at LD\lbrack \let\@schemata at RD\rbrack}%
+  \def\DoBrackets%
+    {\let\@schemata at LD\lbrack \let\@schemata at RD\rbrack}
 \fi
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \def\DoParens{\let\@schemata at LD( \let\@schemata at RD)}%
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\DoParens}%
+    {\let\@schemata at LD( \let\@schemata at RD)}
 \else
-  \newcommand{\DoParens}{\let\@schemata at LD( \let\@schemata at RD)}%
+  \def\DoParens%
+    {\let\@schemata at LD( \let\@schemata at RD)}
 \fi
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \def\LCschema{\@schemata at LCBoxtrue}%
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\DoGroups}%
+    {\let\@schemata at LD\lgroup \let\@schemata at RD\rgroup}
 \else
-  \newcommand{\LCschema}{\@schemata at LCBoxtrue}%
+  \def\DoGroups%
+    {\let\@schemata at LD\lgroup \let\@schemata at RD\rgroup}
 \fi
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \def\UCschema{\@schemata at LCBoxfalse}%
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\LCschema}{\@schemata at LCBoxtrue}
 \else
-  \newcommand{\UCschema}{\@schemata at LCBoxfalse}%
+  \def\LCschema{\@schemata at LCBoxtrue}
 \fi
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \def\SwitchSB{\@schemata at SWBoxtrue}%
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\UCschema}{\@schemata at LCBoxfalse}
 \else
-  \newcommand{\SwitchSB}{\@schemata at SWBoxtrue}%
+  \def\UCschema{\@schemata at LCBoxfalse}
 \fi
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \def\NudgeSB{\@schemata at NudgeBoxtrue}%
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\SwitchSB}{\@schemata at SWBoxtrue}%
 \else
-  \newcommand{\NudgeSB}{\@schemata at NudgeBoxtrue}%
+  \def\SwitchSB{\@schemata at SWBoxtrue}
 \fi
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \gdef\schemabox{\futurelet\testchar\@schemabox}
-  \gdef\@schemabox{%
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\NudgeSB}{\@schemata at NudgeBoxtrue}
+\else
+  \def\NudgeSB{\@schemata at NudgeBoxtrue}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand{\SBNudgeFactor}{\kern0.2em}
+\else
+  \def\SBNudgeFactor{\kern0.2em}
+\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\schemabox}[2][0pt]{\@schemata at schemabox[#1]{#2}}
+\else
+  \def\schemabox{\futurelet\testchar\@schemata at schemab@x}
+  \def\@schemata at schemab@x{%
     \ifx[\testchar
-      \let\next\@@schemabox%
+      \let\next\@schemata at schemabox%
     \else
-      \let\next\@@schemab at x%
+      \let\next\@schemata@@schemab at x%
     \fi
     \next%
   }%
-  \gdef\@@schemab at x#1{\@@schemabox[0pt]{#1}}
-  \gdef\@@schemabox[#1]#2{%
-    \ifinner
-      \if at schemata@LCBox
-        \def\@Adj{}%
-        \if at schemata@SWBox\def\@Adj{\strut}\fi
-      \else
-        \def\@Adj{\strut}%
-        \if at schemata@SWBox\def\@Adj{}\fi
-      \fi
-      \if at schemata@NudgeBox
-        \def\@Nudge{\kern0.2em}%
-      \else
-        \def\@Nudge{}%
-      \fi
-      \ifdim#1<1pt
-        \def\\{\@Nudge\egroup\hbox\bgroup\ignorespaces }%
-        \vbox{\hbox\bgroup\@Adj\ignorespaces #2\@Nudge\egroup}%
-      \else
-        \def\\{\hfil\egroup\hbox to #1\bgroup\ignorespaces }%
-        \vbox{\hbox to #1\bgroup\@Adj\ignorespaces #2\hfil\egroup}%
-      \fi
+  \def\@schemata@@schemab at x#1{\@schemata at schemabox[0pt]{#1}}
+\fi
+\def\@schemata at schemabox[#1]#2{%
+  \ifinner
+    \if at schemata@LCBox
+      \def\@Adj{}%
+      \if at schemata@SWBox\def\@Adj{\strut}\fi
     \else
-      #2%
+      \def\@Adj{\strut}%
+      \if at schemata@SWBox\def\@Adj{}\fi
     \fi
-    \@schemata at SWBoxfalse%
-    \@schemata at NudgeBoxfalse%
-  }%
-\else
-  \newcommand{\schemabox}[2][0pt]{%
-    \ifinner
-      \if at schemata@LCBox
-        \def\@Adj{}%
-        \if at schemata@SWBox\def\@Adj{\strut}\fi
-      \else
-        \def\@Adj{\strut}%
-        \if at schemata@SWBox\def\@Adj{}\fi
-      \fi
-      \if at schemata@NudgeBox
-        \def\@Nudge{\kern0.2em}%
-      \else
-        \def\@Nudge{}%
-      \fi
-      \ifdim#1<1pt
-        \def\\{\@Nudge\egroup\hbox\bgroup\ignorespaces }%
-        \vbox{\hbox\bgroup\@Adj\ignorespaces #2\@Nudge\egroup}%
-      \else
-        \def\\{\hfil\egroup\hbox to #1\bgroup\ignorespaces }%
-        \vbox{\hbox to #1\bgroup\@Adj\ignorespaces #2\hfil\egroup}%
-      \fi
+    \if at schemata@NudgeBox
+      \let\@Nudge\SBNudgeFactor%
     \else
-      #2%
+      \def\@Nudge{}%
     \fi
-    \@schemata at SWBoxfalse%
-    \@schemata at NudgeBoxfalse%
-  }%
-\fi
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \gdef\schema{\futurelet\testchar\@schema}
-  \gdef\@schema{\ifx[\testchar \let\next\@@schema%
-               \else \let\next\@@schem@ \fi \next}
-  \gdef\@@schem@#1#2{\@@schema[open]{#1}{#2}}
-  \gdef\@@schema[#1]#2#3{%
-    \def\@ption{#1}\def\@pen{open}%
-    \ifx\@ption\@pen
-      \setbox\@rhs=\vbox{#3}%
-      \@rheight=\ht\@rhs%
-      \advance\@rheight\dp\@rhs%
-      \advance\@rheight by 1.44265ex%
-      \hbox{$\vcenter{#2}%
-            \@schemata at lbrace{\@rheight}%
-            \vcenter{#3}$}%
+    \ifdim#1<1pt
+      \def\\{\@Nudge\egroup\hbox\bgroup\ignorespaces }%
+      \vbox{\hbox\bgroup\@Adj\ignorespaces #2\@Nudge\egroup}%
     \else
-      \setbox\@lhs=\vbox{#2}%
-      \@lheight=\ht\@lhs%
-      \advance\@lheight\dp\@lhs%
-      \advance\@lheight by 1.44265ex%
-      \hbox{$\vcenter{#2}%
-            \kern-0.2em\@schemata at rbrace{\@lheight}%
-            \vcenter{#3}$}%
+      \def\\{\hfil\egroup\hbox to #1\bgroup\ignorespaces }%
+      \vbox{\hbox to #1\bgroup\@Adj\ignorespaces #2\hfil\egroup}%
     \fi
-  }%
+  \else
+    #2%
+  \fi
+  \@schemata at SWBoxfalse%
+  \@schemata at NudgeBoxfalse%
+}
+\ifx\fmtname\schemataLaTeX
+  \newcommand{\schema}[3][open]{%
+    \@schemata at schema[#1]{#2}{#3}}
 \else
-  \newcommand{\schema}[3][open]{%
-    \def\@ption{#1}\def\@pen{open}%
-    \ifx\@ption\@pen
-      \setbox\@rhs=\vbox{#3}%
-      \@rheight=\ht\@rhs%
-      \advance\@rheight\dp\@rhs%
-      \advance\@rheight by 1.44265ex%
-      \hbox{$\vcenter{#2}%
-            \@schemata at lbrace{\@rheight}%
-            \vcenter{#3}$}%
+  \long\def\schema{\futurelet\testchar\@schemata at schem@}
+  \long\def\@schemata at schem@{%
+    \ifx[\testchar
+      \let\next\@schemata at schema%
     \else
-      \setbox\@lhs=\vbox{#2}%
-      \@lheight=\ht\@lhs%
-      \advance\@lheight\dp\@lhs%
-      \advance\@lheight by 1.44265ex%
-      \hbox{$\vcenter{#2}%
-            \kern-0.2em\@schemata at rbrace{\@lheight}%
-            \vcenter{#3}$}%
+      \let\next\@schemata@@schem@%
     \fi
+    \next%
   }%
+  \long\def\@schemata@@schem@#1#2{%
+    \@schemata at schema[open]{#1}{#2}}
 \fi
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \gdef\Schema{\futurelet\testchar\@Schema}
-  \gdef\@Schema{\ifx[\testchar \let\next\@@Schema%
-               \else \let\next\@@Schem@ \fi \next}
-  \gdef\@@Schem@#1#2#3#4{\@@Schema[open]{#1}{#2}{#3}{#4}}
-  \gdef\@@Schema[#1]#2#3#4#5{%
-    \def\@ption{#1}%
-    \def\@pen{open}%
-    \dimen0=#2%
-    \ifx\@ption\@pen
-      \hbox{$\vcenter{\vskip1.44265\dimen0#4}%
-        \@schemata at biglbrace{#2}{#3}\vcenter{#5}$}%
-    \else
-      \hbox{$\vcenter{\vskip1.44265\dimen0#4}\kern-0.2em%
-        \@schemata at bigrbrace{#2}{#3}\vcenter{#5}$}%
-    \fi
-  }%
+\long\def\@schemata at schema[#1]#2#3{%
+  \def\@ption{#1}\def\@pen{open}%
+  \ifx\@ption\@pen
+    \setbox\@schemata at rhs=\vbox{#3}%
+    \@schemata at rheight=\ht\@schemata at rhs%
+    \advance\@schemata at rheight\dp\@schemata at rhs%
+    \advance\@schemata at rheight by 1.44265ex%
+    \hbox{$\vcenter{#2}%
+      \@schemata at lbrace{\@schemata at rheight}%
+      \vcenter{#3}$}%
+  \else
+    \setbox\@schemata at lhs=\vbox{#2}%
+    \@schemata at lheight=\ht\@schemata at lhs%
+    \advance\@schemata at lheight\dp\@schemata at lhs%
+    \advance\@schemata at lheight by 1.44265ex%
+    \hbox{$\vcenter{#2}%
+      \kern-0.2em\@schemata at rbrace{\@schemata at lheight}%
+      \vcenter{#3}$}%
+  \fi
+}
+\ifx\fmtname\schemataLaTeX
+  \newcommand{\Schema}[5][open]{%
+    \@schemata at Schema[#1]{#2}{#3}{#4}{#5}}
 \else
-  \newcommand{\Schema}[5][open]{%
-    \def\@ption{#1}%
-    \def\@pen{open}%
-    \dimen0=#2%
-    \ifx\@ption\@pen
-      \hbox{$\vcenter{\vskip1.44265\dimen0#4}%
-        \@schemata at biglbrace{#2}{#3}\vcenter{#5}$}%
+  \long\def\Schema{\futurelet\testchar\@schemata at Schem@}
+  \long\def\@schemata at Schem@{%
+    \ifx[\testchar
+      \let\next\@schemata at Schema%
     \else
-      \hbox{$\vcenter{\vskip1.44265\dimen0#4}\kern-0.2em%
-        \@schemata at bigrbrace{#2}{#3}\vcenter{#5}$}%
+      \let\next\@schemata@@Schem@%
     \fi
+    \next%
   }%
+  \long\def\@schemata@@Schem@#1#2#3#4{%
+    \@schemata at Schema[open]{#1}{#2}{#3}{#4}}
 \fi
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \def\@schemata at lbrace#1{%
-    \ifmmode\left.\vcenter{\vbox to #1{\vfil}}\right\@schemata at LD\fi}
-\else
-  \newcommand{\@schemata at lbrace}[1]{%
-    \ifmmode\left.\vcenter{\vbox to #1{\vfil}}\right\@schemata at LD\fi}
-\fi
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \def\@schemata at rbrace#1{%
-    \ifmmode\left\@schemata at RD\vcenter{\vbox to #1{\vfil}}\right.\fi}
-\else
-  \newcommand{\@schemata at rbrace}[1]{%
-    \ifmmode\left\@schemata at RD\vcenter{\vbox to #1{\vfil}}\right.\fi}
-\fi
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \def\@schemata at biglbrace#1#2{%
-    \dimen0=#1%
-    \dimen2=#2%
-    \dimen4=-\dimen2%
-    \ifdim\dimen4>\dimen2\dimen2=\dimen4\fi
-    \ifdim\dimen0<0pt
-      \ifmmode\vcenter{\hbox{$\left.%
-                       \vbox to 1.44265\dimen2{\vfil}%
-                       \right\@schemata at LD%
-                       \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi
-    \else
-      \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}%
-                       \atop\left.%
-                       \vbox to 1.44265\dimen2{\vfil}%
-                       \right\@schemata at LD$}}\fi
+\long\def\@schemata at Schema[#1]#2#3#4#5{%
+  \def\@ption{#1}%
+  \def\@pen{open}%
+  \dimen0=#2%
+  \ifx\@ption\@pen
+    \hbox{$\vcenter{\vskip1.44265\dimen0#4}%
+      \@schemata at biglbrace{#2}{#3}\vcenter{#5}$}%
+  \else
+    \hbox{$\vcenter{\vskip1.44265\dimen0#4}\kern-0.2em%
+      \@schemata at bigrbrace{#2}{#3}\vcenter{#5}$}%
+  \fi
+}
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\@schemata at lbrace}[1]{%
+    \ifmmode
+      \left.\vcenter{\vbox to #1{\vfil}}\right\@schemata at LD%
     \fi
-  }%
+  }
 \else
-  \newcommand{\@schemata at biglbrace}[2]{%
-    \dimen0=#1%
-    \dimen2=#2%
-    \dimen4=-\dimen2%
-    \ifdim\dimen4>\dimen2\dimen2=\dimen4\fi
-    \ifdim\dimen0<0pt
-      \ifmmode\vcenter{\hbox{$\left.%
-                       \vbox to 1.44265\dimen2{\vfil}%
-                       \right\@schemata at LD%
-                       \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi
-    \else
-      \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}%
-                       \atop\left.%
-                       \vbox to 1.44265\dimen2{\vfil}%
-                       \right\@schemata at LD$}}\fi
+  \def\@schemata at lbrace#1{%
+    \ifmmode
+      \left.\vcenter{\vbox to #1{\vfil}}\right\@schemata at LD%
     \fi
-  }%
+  }
 \fi
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \def\@schemata at bigrbrace#1#2{%
-    \dimen0=#1%
-    \dimen2=#2%
-    \dimen4=-\dimen2%
-    \ifdim\dimen4>\dimen2\dimen2=\dimen4\fi
-    \ifdim\dimen0<0pt
-      \ifmmode\vcenter{\hbox{$\left.%
-                       \vbox to 1.44265\dimen2{\vfil}%
-                       \right\@schemata at RD%
-                       \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi
-    \else
-      \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}%
-                       \atop\left.%
-                       \vbox to 1.44265\dimen2{\vfil}%
-                       \right\@schemata at RD$}}\fi
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\@schemata at rbrace}[1]{%
+    \ifmmode
+      \left\@schemata at RD\vcenter{\vbox to #1{\vfil}}\right.%
     \fi
-  }%
+  }
 \else
-  \newcommand{\@schemata at bigrbrace}[2]{%
-    \dimen0=#1%
-    \dimen2=#2%
-    \dimen4=-\dimen2%
-    \ifdim\dimen4>\dimen2\dimen2=\dimen4\fi
-    \ifdim\dimen0<0pt
-      \ifmmode\vcenter{\hbox{$\left.%
-                       \vbox to 1.44265\dimen2{\vfil}%
-                       \right\@schemata at RD%
-                       \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi
-    \else
-      \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}%
-                       \atop\left.%
-                       \vbox to 1.44265\dimen2{\vfil}%
-                       \right\@schemata at RD$}}\fi
+  \def\@schemata at rbrace#1{%
+    \ifmmode
+      \left\@schemata at RD\vcenter{\vbox to #1{\vfil}}\right.%
     \fi
-  }%
+  }
 \fi
-\expandafter\ifx\csname newenvironment\endcsname\relax
-  \catcode`@=12
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\@schemata at biglbrace}[2]{%
+    \@schemata@@biglbrace{#1}{#2}}
+\else
+  \def\@schemata at biglbrace#1#2{%
+    \@schemata@@biglbrace{#1}{#2}}
 \fi
+\def\@schemata@@biglbrace#1#2{%
+  \dimen0=#1%
+  \dimen2=#2%
+  \dimen4=-\dimen2%
+  \ifdim\dimen4>\dimen2\dimen2=\dimen4\fi
+  \ifdim\dimen0<0pt
+    \ifmmode\vcenter{\hbox{$\left.%
+      \vbox to 1.44265\dimen2{\vfil}%
+      \right\@schemata at LD%
+      \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi
+  \else
+    \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}%
+      \atop\left.%
+      \vbox to 1.44265\dimen2{\vfil}%
+      \right\@schemata at LD$}}\fi
+  \fi
+}
+\ifx\fmtname\schemataLaTeX
+  \newcommand*{\@schemata at bigrbrace}[2]{%
+    \@schemata@@bigrbrace{#1}{#2}%
+  }
+\else
+  \def\@schemata at bigrbrace#1#2{%
+    \@schemata@@bigrbrace{#1}{#2}%
+  }
+\fi
+\def\@schemata@@bigrbrace#1#2{%
+  \dimen0=#1%
+  \dimen2=#2%
+  \dimen4=-\dimen2%
+  \ifdim\dimen4>\dimen2\dimen2=\dimen4\fi
+  \ifdim\dimen0<0pt
+    \ifmmode\vcenter{\hbox{$\left.%
+      \vbox to 1.44265\dimen2{\vfil}%
+      \right\@schemata at RD%
+      \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi
+  \else
+    \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}%
+      \atop\left.%
+      \vbox to 1.44265\dimen2{\vfil}%
+      \right\@schemata at RD$}}\fi
+  \fi
+}
+\ifx\fmtname\schemataLaTeX\else
+  \catcode`@=12\relax
+\fi
 %% 
-%% Copyright (C) 2016 by Charles P. Schaum <charles dot schaum at comcast dot net>
+%% Copyright (C) 2020 by Charles P. Schaum <charles dot schaum at comcast.net>
 %% 
 %% This work may be distributed and/or modified under the
 %% conditions of the LaTeX Project Public License (LPPL), either
@@ -318,8 +295,10 @@
 %% This work is "maintained" (as per LPPL maintenance status) by
 %% Charles P. Schaum.
 %% 
-%% This work consists of the file schemata.dtx and a Makefile.
-%% Running "make" generates the derived files README, schemata.pdf and schemata.sty.
+%% This work consists of the file schemata.dtx, schematest.tex,
+%%   schemata.png, and a Makefile.
+%% Running "make" generates the derived files README, schemata.pdf,
+%%   and schemata.sty.
 %% Running "make inst" installs the files in the user's TeX tree.
 %% Running "make install" installs the files in the local TeX tree.
 %% 

Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds	2020-03-14 20:42:00 UTC (rev 54295)
+++ trunk/Master/tlpkg/libexec/ctan2tds	2020-03-14 20:44:40 UTC (rev 54296)
@@ -2803,6 +2803,7 @@
  'psfragx'      => 'latex',  # requires interaction
  'pxrubrica'    => 'platex',
  'schedule'     => 'latex',  # requires interaction
+ 'schemata'	=> 'tex',
  'scontents'	=> 'etex',
  'secnum'	=> 'tex',
  'silence'      => 'latex -translate-file=empty.tcx',   # no 8-bit



More information about the tex-live-commits mailing list.