texlive[76178] Master/texmf-dist: schemata (28aug25)

commits+karl at tug.org commits+karl at tug.org
Fri Aug 29 16:03:28 CEST 2025


Revision: 76178
          https://tug.org/svn/texlive?view=revision&revision=76178
Author:   karl
Date:     2025-08-29 16:03:28 +0200 (Fri, 29 Aug 2025)
Log Message:
-----------
schemata (28aug25)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/generic/schemata/README.md
    trunk/Master/texmf-dist/doc/generic/schemata/schemata.pdf
    trunk/Master/texmf-dist/doc/generic/schemata/schematest.tex
    trunk/Master/texmf-dist/source/generic/schemata/Makefile
    trunk/Master/texmf-dist/source/generic/schemata/schemata.dtx
    trunk/Master/texmf-dist/tex/generic/schemata/schemata.sty

Modified: trunk/Master/texmf-dist/doc/generic/schemata/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/generic/schemata/README.md	2025-08-29 14:03:15 UTC (rev 76177)
+++ trunk/Master/texmf-dist/doc/generic/schemata/README.md	2025-08-29 14:03:28 UTC (rev 76178)
@@ -1,193 +1,360 @@
-# Short Description
+# 1 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
+# 2 Installing a Distro Package
 
-|Filename        |Description                            |
-|----------------|---------------------------------------|
-|`schemata.dtx`  |commented style file; source file      |
-|`Makefile`      |For use with GNU make; with source file|
-|`schemata.ins`  |installation driver (generated file)   |
-|`schemata.sty`  |style file          (generated file)   |
-|`schemata.pdf`  |Documentation       (generated file)   |
-|`README.md`     |This file           (generated file)   |
-|`schematest.tex`|Test file           (generated file)   |
-|`schemata.eps`  |Image file used for the manual         |
+One can find `nameauth` in one's current TeX distribution. See the appropriate documentation in TeXlive, MikTeX, MacTeX, Linux distro, BSD, etc. Use those tools to ensure that `nameauth` is installed. **You are done.**
 
-# Obtaining the Package
+# 3 Obtaining from CTAN
 
-1. Packaged in your current TeX distrbution: See the appropriate documentation.
+## 3.1 Getting the Package Archive
 
-2. Otherwise, download `schemata.zip` from [CTAN](http://mirrors.ctan.org/macros/generic/schemata.zip).
+If not using the tools above, one can download `schemata.zip` from [CTAN](https://mirrors.ctan.org/macros/generic/schemata.zip). After downloading, unpack `schemata.zip` in an appropriate directory. Change to the directory containing the supplied files. The following files are included in the archive that is uploaded to CTAN:
 
-3. Unpack `schemata.zip` in an appropriate directory.
+| Filename         | Description                             |
+| :--------------- | :-------------------------------------- |
+| `schemata.dtx`   | commented style file; source file       |
+| `Makefile`       | For use with GNU make; with source file |
+| `schemata.eps`   | Image file for the manual; source file  |
+| `schemata.sty`   | style file          (generated file)    |
+| `schemata.pdf`   | Documentation       (generated file)    |
+| `README.md`      | This file           (generated file)    |
+| `schematest.tex` | Test file           (generated file)    |
 
-4. Change to the  directory containing the `schemata` files.
+## 3.2 Determining the Installation type
 
-# File Generation
+### 3.2.1 Read `Makefile` First
 
-## Automatic Installation
+`Makefile` has an extensive comment on usage, as well as other helpful comments. It lists all required programs needed to use the GNU make file for installation in a POSIX-compliant environment, such as GNU/Linux, various BSDs, MacOS, and WSL or Cygwin on Windows.
 
-This method requires GNU `make` on a POSIX-compliant environment, such as GNU/Linux, various BSD flavors, perhaps MacOS (e.g., with various porting systems), and even Cygwin on Windows.
+Minimum required programs include `bash` or an equivalent shell (for which one must edit `Makefile`), and `make`, plus a TeX distribution. To distribute the package, one also requires at least `sed`, and `zip`.
 
-  * Building and testing with `xelatex` and `lualatex` requires one to have the font `GFSDidot.otf` in a system or user font path. The GFS fonts are available in most Linux distributions and may be downloaded from the [Greek Font Society](https://www.greekfontsociety-gfs.gr/).
+### 3.2.2 POSIX Cases
 
-  *  The package can be built and used with `dvilualatex` only when one can use modern testing packages (but `dvipdf` fails). The test file fails with `dvilualatex`, but it works with `dviluatex`.
+If one is using a TeX distribution in a POSIX environment (MacOS, Linux distro, BSD, etc.) and has the required programs listed in `Makefile`, one may do one of the following:
 
-  * We now use an Encapsulated PostScript graphics file instead of a Portable Network Graphics file to permit all LaTeX variants to build the package.
+1. Use GNU make to build and install. **Section 4.1**
 
-  * We use the LaTeX installation on the host machine to build the package. When using `make`, any `dvi` files that are created will also be converted to `pdf` format.
+2. Build and install manually. **Section 4.2**
 
-1. Type `make` to generate the release files using `pdflatex`.
+### 3.2.3 Windows Cases
 
-2. To use another LaTeX engine, type one of the following:
+Windows offers the largest number of possibilities:
 
-        make ENGINE=xelatex
-        make ENGINE=lualatex
-        make ENGINE=dvilualatex
-        make ENGINE=latex
+* Cygwin offers a POSIX environment and its own TeX distribution. Avoid installing another TeX distro via WSL or Windows native. **Section 4.1**
 
-3. Type `make inst` to install the files in the user's personal TDS-compliant directory tree.
+* WSL offers a POSIX environment and its own TeX distribution. Avoid installing another TeX distro via Cygwin or Windows native. **Section 4.1**
 
-4. Type `sudo make install` to install the files in the system-wide, local TDS-compliant directory tree.
+* Use `make` within either Cygwin or WSL to build this package for native Windows TeX distributions MikTeX or TeXlive. Install needed build components in either Cygwin or WSL, alongside either MikTeX or TeXlive, but not both distros. Avoid installing another TeX distro in either Cygwin or WSL.
 
-5. One can include multiple make targets on the command line, but that goes beyond the scope of this document and is intended for experienced users.
+    * One can use `make` to build this package. **Section 4.1.1**
 
-## Manual Compilation
+    * Installation must be manual. **Section 4.2.2**
 
-Otherwise, the following steps are used for manual installation. See the general information at the [TeX FAQ](https://www.texfaq.org/FAQ-installthings).
+* Directly using native Windows TeX distributions (MikTeX or TeXlive)
 
-1. To build the package on the host system, generate the installation files and a copy of the documentation without the table of contents and cross-references. We use `pdflatex` by default:
+    All building and installation must be manual. **Section 4.2**
 
+* Other POSIX environments running under DOS, Windows, and other systems have not been tested and are not supported.
+
+* `Makefile` contains tests that will mitigate some issues:
+
+    * If a `.exe` extension is needed by programs used in the building process, that is detected automatically.
+
+    * If `ltxfileinfo` does not exist, the make process will produce a zip file that avoids potential problems in Windows.
+
+    * If `dvipdf` from Ghostscript is installed in a non-Windows environment, the make process will use that. Otherwise it will fall back to `dvipdfmx`.
+
+    * When installing, the make process will check if the path to the install directory exists. If it does not, it will produce an error message and exit.
+
+    If this error message occurs, which is more likely in Windows, please refer to installation of local packages in MikTeX [here](https://docs.miktex.org/manual/localadditions.html#id573803) and [here](https://miktex.org/kb/texmf-roots). Otherwise see the [TeX FAQ](https://www.texfaq.org/FAQ-privinst) and [this page](https://en.wikibooks.org/wiki/LaTeX/Installing_Extra_Packages).
+
+Here is a table showing the feasibility of a few scenarios. Any case that is not mentioned below has not been tested and is not recommended.
+
+| Build Env. | TeX Distro Platform | Make builds pkg/zip            | Make installs package           |
+| :--------- | :------------------ | :----------------------------- | :------------------------------ |
+| POSIX      | POSIX               | Yes<sup>1</sup>                | Yes                             |
+| Cygwin     | Cygwin (packages)   | Not tested; likely<sup>1</sup> | Not tested; likely <sup>2</sup> |
+| Cygwin     | MikTeX (Windows)    | Yes<sup>1, 3</sup>             | No;<sup>4</sup> do manually     |
+| Cygwin     | TeXlive (Windows)   | Not tested; likely<sup>1</sup> | Not tested; do manually         |
+| WSL        | WSL Linux packages  | Yes<sup>1</sup>                | Yes<sup>5</sup>                 |
+| WSL        | MikTeX (Windows)    | Yes<sup>1, 3</sup>             | No;<sup>4</sup> do manually     |
+| WSL        | TeXlive (Windows)   | Not tested; likely<sup>1</sup> | Not tested; do manually         |
+
+<sup>1</sup> All dependencies must be met. Bear in mind possible MacOS issues.
+
+<sup>2</sup> Installs only to Cygwin environment; not to Windows environment.
+
+<sup>3</sup> The `make images` target using `pdfjam` likely will not work as desired. **Section 6.2.3 Images**
+
+<sup>4</sup> Neither `ltxfileinfo` nor `kpsewhich` will give useful results; do a manual install.
+
+<sup>5</sup> Installs only to WSL Linux distro environment; not to Windows environment.
+
+# 4 Building and Installing
+
+Regarding command line options longer than one letter, the programs included with major TeX distributions use either single dashes or GNU-style double dashes.
+
+Here, for the sake of consistency, we use the GNU convention of single dashes with one-letter options and double dashes for longer options.
+
+## 4.1 GNU `make` for Building and Installation
+
+### 4.1.1 Build
+
+In the directory where the files unpacked from the zip archive are located, type `make`. This will do a fresh build of the package using `pdflatex`. To add more options, use, e.g.: `make ADDOPTS="--synctex=1"`.
+
+There is a make target, `make unpack`, that does not build the package. It only regenerates files from `schemata.dtx`.
+
+### 4.1.2 Install
+
+Currently, `Makefile` only installs into POSIX environments.
+
+For individual use, one must have a TDS-compliant tree set up in order for installation to work. For more info in setting up those trees, see **Section 4.2.3** for the individual case and **Section 4.2.4** for the site-wide case.
+
+For site-wide use, one must be able to get root privileges via `sudo`.
+
+* Type `make inst` to install the package files in the user's personal TDS-compliant directory tree.
+
+* Type `make install` to install the package files in the site-wide, local TDS-compliant directory tree. The user will be prompted for the `sudo` password.
+
+### 4.1.3 Remove
+
+The same constraints that apply to installation also apply to removal. If one can do the former, one can do the latter.
+
+* Type `make uninst` to remove the package files in the user's personal TDS-compliant directory tree.
+
+* Type `make uninstall` to remove the package files in the site-wide, local TDS-compliant directory tree. The user will be prompted for the `sudo` password.
+
+`Makefile` will produce listings from the remaining texmf trees after uninstalling the package.
+
+## 4.2 Manual Building and Installation
+
+Unlike the case with the supplied `Makefile`, which automates adding extensions, in certain cases using Windows TeX distros, one may have to add the ".exe" extension to the programs.
+
+### 4.2.1 Build
+
+1. Using the unpacked files from the zip archive, we begin by creating the installation driver, unpacking additional files from `schemata.dtx`, and generating a copy of the documentation without the table of contents and cross-references:
+
         pdflatex --shell-escape --recorder --interaction=batchmode schemata.dtx
 
-2. This will generate the following files:
+    a. We see the following main files:
 
-        schemata.ins   (complete)
-        schemata.sty   (complete)
-        schemata.pdf   (incomplete; do steps 3 through 5)
-        README.md      (complete)
-        schematest.tex (complete)
+    `Makefile`, `README.md`, `schemata.dtx`, `schemata.eps`, `schemata.ins`, `schemata.pdf`, `schemata.sty`, and `schematest.tex`.
 
-3. Generate the TOC and cross-references for the documentation:
+    b. We also see the following temporary files:
 
+    `schemata.aux`, `schemata.fls`, `schemata.glo`, `schemata.hd`, `schemata.idx`, `schemata.log`, `schemata.out`, `schemata.tmp`, and `schemata.toc`; also `schemata-eps-converted-to.pdf`.
+
+2. Generate the TOC and cross-references within the documentation:
+
         pdflatex --recorder --interaction=nonstopmode schemata.dtx
 
-4. Generate the index files using `makeindex`:
+3. Generate the index and glossary files using `makeindex`:
 
         makeindex -q -s gglo.ist -o schemata.gls schemata.glo
         makeindex -q -s gind.ist -o schemata.ind schemata.idx
 
-5. Integrate the glossary (changes) and index into the documentation. The second run updates the TOC:
+    This adds three files: `schemata.gls`, `schemata.ilg`, and `schemata.ind`.
 
+4. Integrate the glossary (list of changes) and index into the documentation. The second run updates the TOC:
+
         pdflatex --recorder --interaction=nonstopmode schemata.dtx
         pdflatex --recorder --interaction=nonstopmode schemata.dtx
 
-One can substitute, e.g., `xelatex`, `lualatex`, `dvilualatex`, and `latex`, for `pdflatex`, but the documentation may look different in some cases.
+    The list of files now looks like:
 
-## Manual File Installation
+| Filename         | Description                    |
+| :--------------- | :----------------------------- |
+| `Makefile`       | for use with GNU make          |
+| `schemata.dtx`   | commented style file           |
+| `schemata.eps`   | Image file used for the manual |
+|                  |                                |
+| `README.md`      | this file                      |
+| `schemata.pdf`   | package documentation          |
+| `schematest.tex` | test file                      |
+|                  |                                |
+| `schemata.ins`   | installation driver            |
+| `schemata.sty`   | style file                     |
+|                  |                                |
+| `schemata.aux`   | auxiliary file                 |
+| `schemata.fls`   | shows files read               |
+| `schemata.glo`   | raw glossary entries           |
+| `schemata.gls`   | typeset glossary entries       |
+| `schemata.hd`    |                                |
+| `schemata.idx`   | raw index entries              |
+| `schemata.ilg`   | `makeindex` log file           |
+| `schemata.ind`   | typeset index entries          |
+| `schemata.log`   | log file                       |
+| `schemata.out`   | pdf bookmark/hypertext info    |
+| `schemata.tmp`   | temp file used with fancyvrb   |
+| `schemata.toc`   | table of contents info         |
 
-Different TeX distributions have somewhat different ways to store TDS-compliant configuration and package data. See, for example, [MikTeX](https://miktex.org/kb/texmf-roots) and the [TeX FAQ](https://www.texfaq.org/FAQ-privinst). Two approaches below conform generally to a Unix-based system:
+Also, there is the automatically-generated `schemata-eps-converted-to.pdf`.
 
-## User's Home Directory
+### 4.2.2 General Install Info
 
-`TEXMFHOME` is a variable that points to the root of a TDS-compliant directory tree available to a user. Use `kpsewhich --var-value TEXMFHOME` to obtain its value. Quite often it is equivalent to `$HOME/texmf`. The dollar sign in front of the variable denotes the value of the variable instead of its name. So if `$HOME` is `/home/bob`, then `$TEXMFHOME` would be `/home/bob/texmf`, and we can understand the following paths to be under that directory:
+In order to perform manual installation, one should be familiar with the general information at the [TeX FAQ](https://www.texfaq.org/FAQ-installthings).
 
-|Path                                |Description                                 |
-|------------------------------------|--------------------------------------------|
-|`$TEXMFHOME/source/generic/schemata`|`ins` and `dtx` files, Makefile, `eps` file |
-|`$TEXMFHOME/tex/generic/schemata`   |`sty` file                                  |
-|`$TEXMFHOME/doc/generic/schemata`   |`pdf` file, `README.md`, `schematest.tex`   |
+Different TeX distributions have somewhat different ways to store TDS-compliant configuration and package data. See, for example, for MikTeX [here](https://docs.miktex.org/manual/localadditions.html#id573803) and [here](https://miktex.org/kb/texmf-roots). Otherwise see the [TeX FAQ](https://www.texfaq.org/FAQ-privinst) and [this page](https://en.wikibooks.org/wiki/LaTeX/Installing_Extra_Packages).
 
-On older TeX distributions, run `mktexlsr` on $TEXMFHOME to complete the install process.
+The instructions below conform generally to a Unix-like system. There are some cases under Windows where this method may not work. For other non-POSIX systems, one will have to know the appropriate procedures and documentation as needed for those cases, which are not covered here.
 
-## System-Wide Directory
+The user must already have a TDS-compliant tree set up in order for installation to work. We assume that one knows how to become superuser, create directories, move files, and the like.
 
-`TEXMFLOCAL` is a variable that points to the root of a TDS-compliant directory tree available to all users on a local site, system-wide installation. Use `kpsewhich --var-value TEXMFLOCAL` to obtain its value. See the [TeX FAQ](https://www.texfaq.org/FAQ-what-TDS). We can understand the following paths to be under that directory:
+### 4.2.3 Install for a User
 
-|Path                                 |Description                                 |
-|-------------------------------------|--------------------------------------------|
-|`$TEXMFLOCAL/source/generic/schemata`|`ins` and `dtx` files, Makefile, `eps` file |
-|`$TEXMFLOCAL/tex/generic/schemata`   |`sty` file                                  |
-|`$TEXMFLOCAL/doc/generic/schemata`   |`pdf` file, `README.md`, `schematest.tex`   |
+`TEXMFHOME` is an environment (shell) variable that points to the root of a TDS-compliant directory tree available to a user. To get its value on POSIX-compliant systems, use:
 
-Run `mktexlsr` with the appropriate permissions on `$TEXMFLOCAL` to complete the install process.
+* `kpsewhich --var-value TEXMFHOME`
 
-# Testing
+Quite often, `$TEXMFHOME` is equivalent to `$HOME/texmf`. The dollar sign in front of the variable denotes the value of the variable instead of its name. If `$HOME` is `/home/bob`, then `$TEXMFHOME` would be `/home/bob/texmf`. We can understand the following paths to be under this home directory.
 
-## Compiling `schematest.tex`
+| Path                                 | Files            |
+| :----------------------------------- | :--------------- |
+| `$TEXMFHOME/source/generic/schemata` | `schemata.ins`   |
+|                                      | `schemata.dtx`   |
+|                                      | `schemata.eps`   |
+|                                      | `Makefile`       |
+|                                      |                  |
+| `$TEXMFHOME/tex/generic/schemata`    | `schemata.sty`   |
+|                                      |                  |
+| `$TEXMFHOME/doc/generic/schemata`    | `schemata.pdf`   |
+| `$TEXMFHOME/doc/generic/schemata`    | `README.md`      |
+| `$TEXMFHOME/doc/generic/schemata`    | `schematest.tex` |
 
-1. Either go to the directory used when unpacking the `zip` file or copy the file `schematest.tex` from the `doc/generic/schemata` branch of whatever TDS-compliant tree to a directory of your choice.
+Create the directories in the left-hand column, or the equivalent. For manual installation, move or copy the files in the right-hand column to their respective directories in the left-hand column. On older TeX distributions, run `mktexlsr` on `$TEXMFHOME` to complete the install process (current distributions may not need this).
 
-2. If one has access to GNU `make`, use either `Makefile` in the directory where one unpacked the `zip` file or copy `Makefile` from either `src/generic/schemata` or `doc/generic/schemata` in whatever TDS-compliant tree it exists.
+### 4.2.4 Install Site-Wide
 
-    When using `make`, any `dvi` files that are created will also be converted to `pdf` format.
+`TEXMFLOCAL` is a variable that points to the root of a TDS-compliant directory tree available to all users on a local site, system-wide installation. To get its value, use:
 
-3. To compile the test file using `make` and `pdftex`, simply type:
+* `kpsewhich --var-value TEXMFLOCAL`
 
-        make testing
+See the [TeX FAQ](https://www.texfaq.org/FAQ-what-TDS). We can understand the following paths to be under this local site, system-wide directory:
 
-4. For multi-format testing using `make` in addition to that above, one can do the following. The comments should not be typed; they tell one what to expect:
+| Path                                  | Files            |
+| :------------------------------------ | :--------------- |
+| `$TEXMFLOCAL/source/generic/schemata` | `schemata.ins`   |
+|                                       | `schemata.dtx`   |
+|                                       | `schemata.eps`   |
+|                                       | `Makefile`       |
+|                                       |                  |
+| `$TEXMFLOCAL/tex/generic/schemata`    | `schemata.sty`   |
+|                                       |                  |
+| `$TEXMFLOCAL/doc/generic/schemata`    | `schemata.pdf`   |
+|                                       | `README.md`      |
+|                                       | `schematest.tex` |
 
-        Comment: Shows transliterated Latin for Greek
-        ---------------------------------------------
-        make testing TESTENGINE=tex
-        make testing TESTENGINE=luatex
-        make testing TESTENGINE=dviluatex
-        make testing TESTENGINE=xetex
-        ---------------------------------------------
-        make testing TESTENGINE=eplain
-        ---------------------------------------------
-        make testing TESTENGINE=lollipop
-        ---------------------------------------------
-        Comment: Shows Greek text via babel
-        ---------------------------------------------
-        make testing TESTENGINE=latex
-        make testing TESTENGINE=pdflatex
-        ---------------------------------------------
-        Comment: Shows Greek text via polyglossia
-        ---------------------------------------------
-        make testing TESTENGINE=lualatex
-        make testing TESTENGINE=xelatex
+Create the directories in the left-hand column. For manual installation, move or copy the files in the right-hand column to their respective directories in the left-hand column. Change file ownership as needed. If needed, run `mktexlsr` with the appropriate permissions on `$TEXMFLOCAL` to complete the install process. See also the discussion on [this page](https://tex.stackexchange.com/questions/45231/how-to-install-system-wide-packages-without-requiring-an-ls-r-database-with-tex).
 
-5. If one does not have `make`, one can use any one of the following commands. The comments should not be typed; they tell one what to expect:
+# 5 More on Package Building
 
-        Comment: Shows transliterated Latin for Greek
-        ---------------------------------------------
+* The package and manual build on current and older TeX distributions, being designed with that in mind.
+
+* The documentation is built only with `pdflatex`. The test file can generate output with multiple formats.
+
+* This release was tested on Linux (Pop! OS; vanilla TL, both current and 2017) and Windows 10 (MikTeX using shells from both Cygwin and WSL).
+
+* The CTAN release was created with the current vanilla TL on Pop! OS. See also [this page](https://wiki.debian.org/TeXLive) for Debian-based systems. For Arch-based systems, the AUR has a package that takes care of dependencies.
+
+* TeXlive versions are managed on Pop! OS using [tl-switch](https://github.com/ServusCarolus/tl-switch).
+
+# 6 Testing
+
+The file `schematest.tex` is designed to test this package on a wide variety of formats.
+
+To test `schemata`, either test the files right after installing, or create a new testing directory. One then can copy the files from the TDS-compliant source dir and optionally, the documentation directory as well, or unpack the CTAN zip file into the test directory and build the package.
+
+## 6.1 Using GNU `make`
+
+The make file will not allow `make` to process `dvilualatex` as a target. For caveats regarding the `eplain` target, see below.
+
+* Type `make test` to use `pdflatex` and Greek via `babel`.
+
+* If one wants to change engines and re-test, type `make testclean`.
+
+* One can add the value of ENGINE:
+
+For Greek via `polyglossia`; requires `GFSDidot.otf`:
+:
+        make test ENGINE=xelatex
+        make test ENGINE=lualatex
+
+For Greek via `babel`:
+        make test ENGINE=pdflatex (default)
+        make test ENGINE=latex
+
+For transliterated Greek:
+        make test ENGINE=tex
+        make test ENGINE=luatex
+        make test ENGINE=dviluatex
+        make test ENGINE=xetex
+        make test ENGINE=eplain
+        make test ENGINE=lollipop
+
+* The `eplain` executable may not exist in some TeX distributions. If this is the case, `make` will use `pdftex` to load the eplain macros and process the test files.
+
+* To add more options, use, e.g.:
+
+        make test ADDOPTS="--synctex=1"
+
+## 6.2 Manual Method
+
+Using `dvilualatex` has more complicated setup prerequisites that go beyond the scope of this document. One would have to install TFM files generated from `GFSDidot.otf` or use a different font.
+
+* Compile `schematest.tex`.
+
+Shows Greek text via `polyglossia`; requires `GFSDidot.otf`:
+
+        lualatex --interaction=nonstopmode schematest
+        xelatex --interaction=nonstopmode schematest
+
+Shows Greek text via `babel`:
+
+        latex --interaction=nonstopmode schematest
+        pdflatex --interaction=nonstopmode schematest
+
+Shows transliterated Greek:
+
         tex --interaction=nonstopmode schematest
         pdftex --interaction=nonstopmode schematest
         luatex --interaction=nonstopmode schematest
         dviluatex --interaction=nonstopmode schematest
         xetex --interaction=nonstopmode schematest
-        ---------------------------------------------
+
         eplain --interaction=nonstopmode schematest
-        ---------------------------------------------
+
         lollipop --interaction=nonstopmode schematest
-        ---------------------------------------------
-        Comment: Shows Greek text via babel
-        ---------------------------------------------
-        latex --interaction=nonstopmode schematest
-        pdflatex --interaction=nonstopmode schematest
-        ---------------------------------------------
-        Comment: Shows Greek text via polyglossia
-        ---------------------------------------------
-        lualatex --interaction=nonstopmode schematest
-        xelatex --interaction=nonstopmode schematest
 
-The manual is also a test suite.
+* If `eplain` is not available as a command in the shell, one can invoke `pdftex` thus:
 
-# Copyright
+        $ pdftex
+        This is pdfTeX, Version 3.141592653-2.6-1.40.28 (TeX Live 2025) (preloaded format=pdftex)
+        restricted \write18 enabled.
+        **&eplain schematest
 
-Copyright (C) 2021 by Charles P. Schaum <charles[dot]schaum at comcast.net>
--------------------------------------------------------
+* Another step is used only when a `dvi` file is produced.
 
+    We default to `dvipdfmx` in case Ghostscript is not installed. If Ghostscript is already installed, one may be able to use `dvipdf` instead, but this can depend on one's system and TeX distribution. If a file `schematest.out.ps` exists, one may delete it after creating the pdf file.
+
+        dvipdfmx schematest
+
+If one changes LaTeX engines, one first must remove all of the auxiliary files.
+
+# 7 Copyright
+
+Copyright (C) 2025 by Charles P. Schaum <charles[dot]schaum at comcast.net>
+
 This file may be distributed and/or modified under the
-conditions of the LaTeX Project Public License, either version 1.3
-of this license or (at your option) any later version.
-The latest version of this license is in:
+conditions of the LaTeX Project Public License, either
+version 1.3 of this license or (at your option) any
+later version. The latest version of this license is in:
 
-   [https://www.latex-project.org/lppl.txt](https://www.latex-project.org/lppl.txt)
+[https://www.latex-project.org/lppl.txt](https://www.latex-project.org/lppl.txt)
 
-and version 1.3 or later is part of all distributions of LaTeX
-version 2005/12/01 or later.
+and version 1.3 or later is part of all distributions
+of LaTeX version 2005/12/01 or later.
+
+This work includes all source and generated files
+described as such in this file, README.md.

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

Modified: trunk/Master/texmf-dist/doc/generic/schemata/schematest.tex
===================================================================
--- trunk/Master/texmf-dist/doc/generic/schemata/schematest.tex	2025-08-29 14:03:15 UTC (rev 76177)
+++ trunk/Master/texmf-dist/doc/generic/schemata/schematest.tex	2025-08-29 14:03:28 UTC (rev 76178)
@@ -8,7 +8,7 @@
 %% 
 %% This is a generated file.
 %% 
-%% Copyright (C) 2021 by Charles P. Schaum <charles[dot]schaum at comcast.net>
+%% Copyright (C) 2025 by Charles P. Schaum <charles[dot]schaum at comcast.net>
 %% 
 %% This file may be distributed and/or modified under the conditions of
 %% the LaTeX Project Public License, either version 1.3 of this license
@@ -46,6 +46,7 @@
   \usepackage[braces]{schemata}[2021/02/27]
   \begin{document}
 \else
+  \def\bfseries{\bf}
   \ifx\fmtname\nameoflollipop
     \input schemata.sty
     \font\scshape=cmcsc10
@@ -85,10 +86,11 @@
 
 Due to restrictions for dealing with so many formats,\par
 Greek character text will appear with:\par
-\ \kern 1em pdflatex / latex (babel)\par
-\ \kern 1em xelatex / lualatex (polyglossia)\par
+\ \kern 1em pdflatex / latex (babel, converted Latin characters)\par
+\ \kern 1em xelatex / lualatex (polyglossia, native Greek text)\par
 All other formats will have transliterated text instead of Greek.\par
 \vfil
+
 $$
 \Schema{-1ex}{8.7ex}
 {
@@ -126,11 +128,13 @@
   }
 }
 $$
+
 \vfil
 \eject
 
 \hbox{\ }
 \vfil
+
 $$
 \Schema{-25ex}{20.6ex}
 {
@@ -220,6 +224,7 @@
   }
 }
 $$
+
 \vfil
 \eject
 
@@ -227,10 +232,14 @@
 {\tt\char`\\ DoParens}\DoParens
 \hbox{\ }
 \vfil
+
 $$
 \Schema{-26ex}{21.5ex}
 {
-  \schemabox{Sacr\ae{}\\ litter\ae{}\\ loquuntur,\\ de}
+  \schemabox{Sacr\ae{}\\
+  litter\ae{}\\
+  loquuntur,\\
+  de}
 }
 {
   \schema
@@ -238,30 +247,47 @@
     \schemabox{\textsc{Deo}}
   }
   {
-    \schemabox{Uno, in Trinitate.}\smallskip\schemabox{Trino, in unitate.}
+    \schemabox{Uno, in Trinitate.}\smallskip
+    \schemabox{Trino, in unitate.}
   }
   \Schema{-16.5ex}{23.4ex}
   {
     \vskip30ex
-    \schemabox{\textsc{Dei}\\ \textsc{Operibus}}
+    \schemabox{\textsc{Dei}\\
+    \textsc{Operibus}}
   }
   {
     \schema
     {
-      \schemabox{\textsc{Intra},\\ qu\ae{} sunt\\ divisa, ut}
+      \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.}
     }
     \medskip
     \Schema{-2ex}{21ex}
     {
-      \schemabox{\textsc{Extra},\\ qu\ae{} sunt\\ indivisa;\\ tervata\\ tamen\\ cujusque\\ person\ae{}\\ divinitatis\\ sua pro-\\prietate}
+      \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{}}
+        \schemabox{Creatione\\
+        natur\ae{}}
       }
       {
         \schema
@@ -269,7 +295,9 @@
           \schemabox{Brute ut}
         }
         {
-          \schemabox{C\oe{}li} \smallskip \schemabox{Elementorum} \smallskip \schemabox{Mundi}
+          \schemabox{C\oe{}li} \smallskip
+          \schemabox{Elementorum} \smallskip
+          \schemabox{Mundi}
         }
         \smallskip
         \schema
@@ -277,19 +305,29 @@
           \schemabox{\gk{^^ce^^bb^^ce^^bf^^ce^^b3^^ce^^b9^^ce^^ba^^e1^^bf^^86^^cf^^82}{logik~hs}{logik\=es}, ut}
         }
         {
-          \schemabox{Angelorum.} \smallskip \schemabox{Hominum: Ad\ae{},\\ Ev\ae{} \& procreatorum\\ exipsis.}
+          \schemabox{Angelorum.} \smallskip
+          \schemabox{Hominum: Ad\ae{},\\
+          Ev\ae{} \& procreatorum\\
+          exipsis.}
         }
       }
       \schema
       {
-        \schemabox{Sustenatione\\ natur\ae{} laps\ae{},}
+        \schemabox{Sustenatione\\
+        natur\ae{} laps\ae{},}
       }
       {
-        \schemabox{Angelorum malorum,} \smallskip \schemabox{Hominum: Ad\ae{}, Ev\ae{}\\ \& procreatorum exipsis.}
+        \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}
+        \schemabox{Beneficiis\\
+        erga Ecc-\\
+        lesiam: ea\\
+        versantur\\
+        aut circa}
       }
       {
         \Schema{2.2ex}{7ex}
@@ -302,15 +340,20 @@
             \schemabox{Verbum}
           }
           {
-            \schemabox{Legis} \smallskip \schemabox{Evangelii} \smallskip \schemabox{Sacramentorum}
+            \schemabox{Legis} \smallskip
+            \schemabox{Evangelii} \smallskip
+            \schemabox{Sacramentorum}
           }
           \smallskip
           \schema
           {
-            \schemabox{Signa vel Veteris\\ vel Novi Testa-\\ mentum ut sunt:}
+            \schemabox{Signa vel Veteris\\
+            vel Novi Testa-\\
+            mentum ut sunt:}
           }
           {
-            \schemabox{Ceremoni\ae{}} \smallskip \schemabox{Miracula}
+            \schemabox{Ceremoni\ae{}} \smallskip
+            \schemabox{Miracula}
           }
         }
         \smallskip
@@ -324,7 +367,8 @@
             \schemabox{Ecclesi\ae{}}
           }
           {
-            \schemabox{Universalis} \smallskip \schemabox{Particularis}
+            \schemabox{Universalis} \smallskip
+            \schemabox{Particularis}
           }
           \smallskip
           \schemabox{Politi\ae, ut Magistratuum}
@@ -336,6 +380,7 @@
   }
 }
 $$
+
 \vfil
 \eject
 
@@ -342,6 +387,7 @@
 {\tt\char`\\ DoGroups}\DoGroups
 \hbox{\ }
 \vfil
+
 $$
 \Schema{-26.5ex}{21ex}
 {
@@ -451,6 +497,7 @@
   }
 }
 $$
+
 \vfil
 \egroup
 \eject
@@ -457,6 +504,7 @@
 
 \hbox{\ }
 \vfil
+
 $$
 \Schema{-1.4ex}{10ex}
 {
@@ -517,54 +565,54 @@
 $$
 
 \vfil
-\eject
+% Use here especially in Plain TeX and the like.
+\newbox\mybox
 
-\hbox{\ }
-\vfil
-% Use here in Plain TeX.
-\newbox\mybox
 $$
-\Schema{-0.2ex}{14.4ex}
-{\schemabox{\bf Curricula\\\bf Texts}}
+\Schema{0ex}{15ex}
+{\schemabox{\bfseries Curricula\\\bfseries Texts}}
 {
   \DoBrackets%
-  % Doable in LaTeX, not in Plain TeX, because \outer.
-  % \newbox\mybox%
-  \setbox\mybox=\hbox{\bf III. Philosophical }%
+  \setbox\mybox=\hbox{\bfseries III. Philosophical }%
   \dimen0=\wd\mybox%
   \schema
-    {\schemabox[\dimen0]{\bf I. General\\Studies}}
-    {\schemabox{1. Collected Works\\2. Encyclopedias}}
-  \smallskip
+    {\schemabox[\dimen0]
+      {\bfseries I. General\\Studies}}
+    {\NudgeSB[before]%
+     \schemabox
+      {1. Collected Works\\
+       2. Encyclopedias}}
+  \medskip
   \schema
-    {\schemabox[\dimen0]{\bf II. Literary\\Disciplines}}
-    {\schemabox{1. Philology\\
-     2. Historical Introduction\\
-     3. Literary Theory\\
-     4. Application}}
-  \smallskip
+    {\schemabox[\dimen0]
+      {\bfseries II. Literary\\Disciplines}}
+    {\NudgeSB[before]%
+     \schemabox{1. Philology\\
+       2. Historical Introduction\\
+       3. Literary Theory\\
+       4. Application}}
+  \medskip
   \schema
-      {\schemabox[\dimen0]{\bf III. Philosophical\\Disciplines}}
-      {\schemabox{1. Source Texts\\
-       2. History of Philosophy\\
-       3. General Surveys\\
-       4. Specific Studies}}
-  \smallskip
+      {\schemabox[\dimen0]
+        {\bfseries III. Philosophical\\Disciplines}}
+      {\NudgeSB[before]%
+       \schemabox{1. Source Texts\\
+         2. History of Philosophy\\
+         3. General Surveys\\
+         4. Specific Studies}}
+  \medskip
   \schema
-      {\schemabox[\dimen0]{\bf IV. Historical\\Disciplines}}
-      {\schemabox{1. General Surveys\\
-       2. Specialized Works}}
+      {\schemabox[\dimen0]
+        {\bfseries IV. Historical\\Disciplines}}
+      {\NudgeSB[before]%
+        \schemabox{1. General Surveys\\
+        2. Specialized Works}}
 }
 $$
+
 \vfil
 \eject
 
-\ifx\fmtname\nameoflatex
-  \end{document}
-\else
-  \ifx\fmtname\nameoflollipop
-    \Stop
-  \else
-    \bye
-  \fi
-\fi
+\ifx\fmtname\nameoflatex \end{document} \fi
+\ifx\fmtname\nameoflollipop \Stop \fi
+\bye

Modified: trunk/Master/texmf-dist/source/generic/schemata/Makefile
===================================================================
--- trunk/Master/texmf-dist/source/generic/schemata/Makefile	2025-08-29 14:03:15 UTC (rev 76177)
+++ trunk/Master/texmf-dist/source/generic/schemata/Makefile	2025-08-29 14:03:28 UTC (rev 76178)
@@ -1,92 +1,362 @@
-#Copyright (C) 2020 by Charles P. Schaum <charles[dot]schaum at comcast.net>
-#-------------------------------------------------------
+# Copyright (C) 2025 by Charles P. Schaum <charles[dot]schaum at comcast.net>
+# -----------------------------------------------
 #
-#This file may be distributed and/or modified under the
-#conditions of the LaTeX Project Public License, either version 1.3
-#of this license or (at your option) any later version.
-#The latest version of this license is in:
+# This file may be distributed and/or modified under the
+# conditions of the LaTeX Project Public License, either
+# version 1.3 of this license or (at your option) any
+# later version. The latest version of this license is in:
 #
 #   http://www.latex-project.org/lppl.txt
 #
-#and version 1.3 or later is part of all distributions of LaTeX 
-#version 2005/12/01 or later.
+# and version 1.3 or later is part of all distributions
+# of LaTeX version 2005/12/01 or later.
 #
+# This work includes all source and generated files
+# described as such in README.md, included herein.  
+#
+# -----------------------------------------------
+#
+# Usage:
+#
+# 	Delete all generated files, do clean build on
+# 	POSIX--compliant systems, WSL, or Cygwin.
+#
+# 		make
+#
+#	This target does the same default build as above.
+#
+# 		make release
+#
+# 	Just do a quick rebuild; keep generated files.
+# 	One must edit or touch `$(NAME).dtx'.
+#
+#		make package
+#
+#	Install/remove supplied files into the user's texmf tree.
+#	These targets only work in a POSIX environment and do not
+#	install from WSL or Cygwin into a Windows environment
+#	They have not been tested on MikTeX for Linux.
+#
+#		make inst
+#		make uninst
+#
+#	Install/remove supplied files into the local texmf tree.
+#	Needs an appropriate level of permission. These targets
+#	only work in a fully POSIX environment. They have not
+#	been tested on MikTeX for Linux. Note that one should
+#	not put "sudo" before these commands because they will
+#	not find the proper path variables. Just let the make
+#	target ask for the password.
+#
+#		make install
+#		make uninstall
+#
+#	Add options if needed, such as
+#
+#		make ADDOPTS="--synctex=1"
+#
+#	Compile test file with pdflatex.
+#
+#		make test
+#
+#	Compile test file with different engines.
+#
+#		make test ENGINE=xelatex
+#		make test ENGINE=lualatex
+#		make test ENGINE=pdflatex
+#		make test ENGINE=latex
+#
+#		make test ENGINE=xetex
+#		make test ENGINE=luatex
+#		make test ENGINE=dviluatex
+#		make test ENGINE=pdftex
+#		make test ENGINE=tex
+#		make test ENGINE=eplain
+#		make test ENGINE=lollipop
+#
+#	The dvilualatex engine is not available due to manual font setup prerequisites.
+#
+#	Clean up auxiliary files for the package, examples, and tests.
+#
+#		make clean
+#		make testclean
+#
+#	Remove all generated files.
+#
+#		make distclean
+#
+#	Regenerate files from the dtx file if needed. This target
+#	does not build the package. It is handy when editing the
+#	dtx to work on README.md, examples.tex, and the like.
+#
+#		make unpack
+#
+#	Do a clean package build and create a zip archive
+#	ready for distribution.
+#
+#		make zip
+#
+# -----------------------------------------------
+#
+# Programs necessary to make this package:
+#
+#	POSIX Build Utilities
+#		bash
+#		make
+#		sed
+#		zip
+#
+#	TeX Distro Programs
+#		pdflatex
+#		pdftex
+#		kpsewhich
+#		makeindex
+#
+# -----------------------------------------------
+#
+# Recommended prerequisites, primary tier:
+#
+#	TeX Distro Programs
+#		xelatex
+#		lualatex
+#		latex
+#		xetex
+#		luatex
+#		pdftex
+#		tex
+#		ltxfileinfo
+#		dvipdfmx
+#
+# -----------------------------------------------
+#
+# Recommended prerequisites, secondary tier:
+#
+#	POSIX Build Utilities
+#		dvipdf
+#
+#	TeX Distro Programs
+#		dviluatex
+#		eplain
+#		lollipop
+#
+# -----------------------------------------------
+#
+
+#
+# Assign most variables in this section. Here we determine what
+# programs exist and choices related to that.
+#
+
 # Name of package
-NAME  = schemata
-# LaTeX engine to use for package; below is the default.
-# One can choose from latex, pdflatex, xelatex, lualatex, dvilualatex.
-ENGINE ?= pdflatex
-# Engine to use for test; below is the default.
-TESTENGINE ?= pdftex
+
+NAME = schemata
+
 # Shell to use; default is bash
+
 SHELL = bash
+
 # Value of current working directory
-PWD   = $(shell pwd)
-# Package version info
-VERS  = $(shell ltxfileinfo -v $(NAME).dtx|sed -e 's/^v//')
+
+PWD = $(shell pwd)
+
+# LaTeX engines to use for building the package and for typesetting
+# the examples file and testing files; below is the default.
+
+# We ttest if we are on Windows by adding a .exe extension.
+
+EXT = .exe
+
+ENGINE ?= pdflatex
+BUILDENGINE := $(shell command -v pdflatex$(EXT) 2> /dev/null)
+TESTENGINE := $(shell command -v $(ENGINE)$(EXT) 2> /dev/null)
+
+# If we cannot find the engine, try the version without an extension.
+
+ifeq ($(strip $(BUILDENGINE)),)
+EXT =
+BUILDENGINE := $(shell command -v pdflatex$(EXT) 2> /dev/null)
+endif
+
+ifeq ($(strip $(TESTENGINE)),)
+EXT =
+TESTENGINE := $(shell command -v $(ENGINE)$(EXT) 2> /dev/null)
+endif
+
+# Get package version info; check if not available in some environments.
+# Create a zip file name that will not cause problems, e.g., in Windows.
+
+DOVERSION := $(shell command -v ltxfileinfo 2> /dev/null)
+
+ifeq ($(strip $(DOVERSION)),)
+	ZIPNAME = $(NAME)
+else
+	ZIPNAME = $(NAME)-$(shell ltxfileinfo -v $(NAME).dtx|sed -e 's/^v//')
+endif
+
+# Determine which dvi to pdf converter to use. If Ghostscript is installed
+# use dvipdf, otherwise dvipdfmx. Do not use Ghostscript on Windows.
+
+DVIPDF := $(shell command -v dvipdf 2> /dev/null)
+
+ifeq ($(strip $(DVIPDF)),)
+	DVIPDF = dvipdfmx
+else
+ifneq ($(strip $(EXT)),)
+	DVIPDF = dvipdfmx
+else
+	DVIPDF = dvipdf
+endif
+endif
+
+# Build options are in this variable.
+
+BUILDOPTS = --recorder --interaction=nonstopmode
+
+# Test and example options are in this variable.
+
+TESTOPTS = --interaction=nonstopmode
+
+# Add options with this variable, e.g.: make ADDOPTS="--synctex=1"
+
+ADDOPTS ?= 
+
+# Core options for generating the sty file and included files
+# the normal way. Alternate is via make unpack.
+
+COREOPTS = --shell-escape --recorder --interaction=batchmode
+
 # Local, system-wide tex tree
-LOCAL = $(shell kpsewhich --var-value TEXMFLOCAL)
+
+LOCAL = $(shell kpsewhich$(EXT) --var-value TEXMFLOCAL)
+
 # Tex tree in user's home directory
-UTREE = $(shell kpsewhich --var-value TEXMFHOME)
+
+UTREE = $(shell kpsewhich$(EXT) --var-value TEXMFHOME)
+
+# Used when testing for formats that are hard to deal with.
+
+DVILUALATEX = dvilualatex
+EPLAIN = eplain
+
 #
-# Default make target is release and its dependencies
-release:    $(NAME).pdf
+# Package Building Section
 #
-# The testing target also compiles the examples file.
-testing:    $(NAME).pdf schematest.pdf
+
+# Default make target is the package release and its dependencies.
+# When building, erase all generated files to make a fresh build.
+
+release : distclean package clean
+
+# Use this recipe to make the package without removing all prior files.
+
+package : $(NAME).pdf
+	@echo "Package has been made successfully."
+
+# This is the recipe for the package and the docs.
+
+$(NAME).pdf : $(NAME).sty
+ifeq ($(strip $(BUILDENGINE)),)
+	$(error Cannot find engine for building.\
+	Please check your installation)
+endif
+	$(BUILDENGINE) $(BUILDOPTS) $(ADDOPTS) $(NAME).dtx > /dev/null
+	makeindex$(EXT) -q -s gglo.ist -o $(NAME).gls $(NAME).glo
+	makeindex$(EXT) -q -s gind.ist -o $(NAME).ind $(NAME).idx
+	$(BUILDENGINE) $(BUILDOPTS) $(ADDOPTS) $(NAME).dtx > /dev/null
+	$(BUILDENGINE) $(BUILDOPTS) $(ADDOPTS) $(NAME).dtx > /dev/null
+
+# This is the core dependency. When run we get all extracted files:
+# README.md, nameauth.ins, nameauth.sty, examples.tex, and the test
+# files as well.
+
+$(NAME).sty : $(NAME).dtx
+	$(BUILDENGINE) $(COREOPTS) $(ADDOPTS) $(NAME).dtx > /dev/null
+
 #
-# This is the recipe for schematest.pdf. It will work also for dvi output.
-schematest.pdf : schematest.tex
-	$(TESTENGINE) --interaction=nonstopmode schematest > /dev/null
-	if [ -f schematest.dvi ]; then dvipdf schematest; fi
-	if [ -f schematest.out.ps ]; then rm schematest.out.ps; fi
+# Testing Section
 #
-# This is the recipe for the package docs. It will work also for dvi output.
-$(NAME).pdf : $(NAME).dtx schemata.sty schemata.ins
-	$(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
-	if [ -f $(NAME).dvi ]; then dvipdf $(NAME); fi
+
+# Make schematest pdf using the TeX to pdf pattern rule.
+# Ensure that at least the style file exists when doing so.
+# Show success messages for only allowed engines.
+
+test : $(NAME).sty schematest.pdf
+	@echo "Test file has been made successfully."
+
+# Pattern for pdf files.
+
+%.pdf : %.tex
+ifeq ($(strip $(TESTENGINE)),)
+ifeq ($(ENGINE), $(EPLAIN))
+	pdftex$(EXT) --jobname=$* "\input eplain \input $*"
+else
+	$(error $(ENGINE) may not be available in some cases.\
+	Check documentation. Cannot find engine for testing;\
+	please check your installation)
+endif
+else
+ifeq ($(ENGINE), $(DVILUALATEX))
+	$(error $(ENGINE) requires manual font installation.\
+	This make file does not process it)
+else
+	$(TESTENGINE) $(TESTOPTS) $< > /dev/null
+	if [ -f $*.dvi ]; then $(DVIPDF)$(EXT) $*; fi
+	if [ -f $*.out.ps ]; then rm $*.out.ps; fi
+endif
+endif
+
 #
-# These are the recipes for all the files that need to be extracted
-# from the dtx file. Any one of them simply extracts the following:
-# README.md, schemata.ins, schemata.sty, schematest.tex
+# Utility Section
 #
-# Once any one of these recipes is run, the rest will be satisfied.
-# But they need to be there for dependencies to work best.
-README.md : $(NAME).dtx
-	pdftex $(NAME).dtx
 
-schemata.ins : $(NAME).dtx
-	pdftex $(NAME).dtx
+# Set up phony targets that do not depend on any specific files.
 
-schemata.sty : $(NAME).dtx
-	pdftex $(NAME).dtx
+.PHONY: test unpack clean testclean distclean uninst ununstall
 
-schematest.tex : $(NAME).dtx
-	pdftex $(NAME).dtx
-#
-# Using this recipe deletes the auxiliary and log files
-clean:
-	rm -f $(NAME).{aux,fls,glo,gls,hd,idx,ilg,ind,ins,log,out,toc}
-	rm -f schematest.{aux,fls,glo,gls,hd,idx,ilg,ind,ins,log,out,toc}
-#
-# Using this recipe cleans also all generated files
-distclean: clean
-	rm -f $(NAME).{dvi,pdf,sty,synctex.gz,"synctex(busy)"} README.md
-	rm -f schematest.{dvi,pdf,synctex.gz,"synctex(busy)",tex}
+# Simply unpack the other supplied files from the dtx file.
+# Not usually needed to build the package, but can be used,
+# for example, in case one accidentally deletes a file.
+
+unpack :
+	pdftex$(EXT) $(NAME).dtx
+
+# Delete all auxiliary and log files for the package; prep for
+# re-running building and packaging targets. The file
+# "nameauth.dtx.aux" has appeared in some systems. Just in case
+# someone tries to create a "nameauth.dvi" file, we delete it.
+
+clean :
+	rm -f $(NAME).{aux,glo,gls,idx,rdx,ilg,ind,rnd,toc}
+	rm -f $(NAME).{dvi,fls,hd,log,out,tmp}
+	rm -f $(NAME).synctex.gz
+	rm -f $(NAME).'synctex(busy)'
+	rm -f $(NAME).dtx.aux
+
+# Delete all auxiliary and log files for the test file; leave
+# just the TeX file for re-running the test target.
+
+testclean :
+	rm -f schematest.{aux,glo,gls,idx,rdx,ilg,ind,rnd,toc}
+	rm -f schematest.{dvi,fls,hd,log,out,pdf,tmp}
+	rm -f schematest.synctex.gz
+	rm -f schematest.'synctex(busy)'
+
+# Delete all generated files related to package building except zip.
+
+distclean : clean testclean
+	rm -f $(NAME).{pdf,ins,sty,zip}
+	rm -f README.md
 	rm -f schemata-eps-converted-to.pdf
-#
-# Using this recipe deletes files for testong
-testclean:
-	rm -f schematest.{aux,fls,glo,gls,hd,idx,ilg,ind,ins,log,out,toc}
-	rm -f schematest.{dvi,pdf,synctex.gz,"synctex(busy)"}
-#
-# This recipe installs the package release into the user's tree
-inst: release
+	rm -f schematest.tex
+
+# Install the package release into the user's tree.
+# Note that this target depends on the "package" target,
+# so we do not do a clean build. This may aid testing.
+
+inst : package
+ifeq ($(strip $(UTREE)),)
+	$(error "Unable to install; no path to user tree." )
+else
 	mkdir -p $(UTREE)/{tex,source,doc}/generic/$(NAME)
 	cp $(NAME).dtx $(UTREE)/source/generic/$(NAME)
 	cp $(NAME).eps $(UTREE)/source/generic/$(NAME)
@@ -95,9 +365,16 @@
 	cp $(NAME).pdf $(UTREE)/doc/generic/$(NAME)
 	cp schematest.tex $(UTREE)/doc/generic/$(NAME)
 	cp README.md $(UTREE)/doc/generic/$(NAME)
-#
-# This recipe installs the package release into the system tree
-install: release
+endif
+
+# Install the package release into the system tree.
+# Note that this target depends on the "package" target,
+# so we do not do a clean build. This may aid testing.
+
+install : package
+ifeq ($(strip $(LOCAL)),)
+	$(error "Unable to install; no path to local tree." )
+else
 	sudo mkdir -p $(LOCAL)/{tex,source,doc}/generic/$(NAME)
 	sudo cp $(NAME).dtx $(LOCAL)/source/generic/$(NAME)
 	sudo cp $(NAME).eps $(LOCAL)/source/generic/$(NAME)
@@ -106,10 +383,59 @@
 	sudo cp $(NAME).pdf $(LOCAL)/doc/generic/$(NAME)
 	sudo cp schematest.tex $(LOCAL)/doc/generic/$(NAME)
 	sudo cp README.md $(LOCAL)/doc/generic/$(NAME)
-#
-# This recipe creates a zip file for upload to CTAN
-zip: release
+endif
+
+# Uninstall the package release from the user's tree.
+# Show the state of the texmf tree thereafter.
+
+uninst : 
+ifeq ($(strip $(LOCAL)),)
+	$(error "Unable to uninstall; no path to user tree." )
+else
+	rm -f $(UTREE)/source/generic/$(NAME)/$(NAME).dtx 
+	rm -f $(UTREE)/source/generic/$(NAME)/Makefile
+	rm -f $(UTREE)/tex/source/$(NAME)/$(NAME).sty
+	rm -f $(UTREE)/doc/generic/$(NAME)/$(NAME).pdf 
+	rm -f $(UTREE)/doc/generic/$(NAME)/*.tex
+	rm -f $(UTREE)/doc/generic/$(NAME)/README.md 
+	rmdir $(UTREE)/{tex,source,doc}/generic/$(NAME)
+	@echo "The texmf tree now looks like:"
+	ls $(UTREE)/source/generic/
+	ls $(UTREE)/tex/generic/
+	ls $(UTREE)/doc/generic/
+endif
+
+# Uninstall the package release from the system tree.
+
+uninstall : 
+ifeq ($(strip $(LOCAL)),)
+	$(error "Unable to uninstall; no path to local tree." )
+else
+	sudo rm -f $(LOCAL)/source/generic/$(NAME)/$(NAME).dtx 
+	sudo rm -f $(LOCAL)/source/generic/$(NAME)/Makefile
+	sudo rm -f $(LOCAL)/tex/generic/$(NAME)/$(NAME).sty
+	sudo rm -f $(LOCAL)/doc/generic/$(NAME)/$(NAME).pdf
+	sudo rm -f $(LOCAL)/doc/generic/$(NAME)/*.tex
+	sudo rm -f $(LOCAL)/doc/generic/$(NAME)/README.md
+	sudo rmdir $(LOCAL)/{tex,source,doc}/generic/$(NAME)
+	@echo "The texmf tree now looks like:"
+	ls $(LOCAL)/source/generic/
+	ls $(LOCAL)/tex/generic/
+	ls $(LOCAL)/doc/generic/
+endif
+
+# Create a zip file for upload to CTAN. On systems where ltxfileinfo
+# cannot be found, we create a zip file without a version in its name
+# instead of a zip file with a dash at the end, which can cause some
+# problems on Windows in certain cases.
+
+zip : release
+	rm -f $(NAME)*.zip
 	ln -sf . $(NAME)
-	zip -Drq $(PWD)/$(NAME)-$(VERS).zip \
-$(NAME)/{README.md,Makefile,$(NAME).{pdf,dtx,eps}}
+	zip -Drq $(PWD)/$(ZIPNAME).zip \
+	$(NAME)/{Makefile,README.md,\
+	schematest.tex,\
+	$(NAME).{dtx,pdf,eps,sty}}
 	rm $(NAME)
+	@echo "Zip file has been made successfully."
+

Modified: trunk/Master/texmf-dist/source/generic/schemata/schemata.dtx
===================================================================
--- trunk/Master/texmf-dist/source/generic/schemata/schemata.dtx	2025-08-29 14:03:15 UTC (rev 76177)
+++ trunk/Master/texmf-dist/source/generic/schemata/schemata.dtx	2025-08-29 14:03:28 UTC (rev 76178)
@@ -1,216 +1,388 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 2021 by Charles P. Schaum <charles[dot]schaum at comcast.net>
-% -------------------------------------------------------
+% Copyright (C) 2025 by Charles P. Schaum <charles[dot]schaum at comcast.net>
+% -----------------------------------------------
 %
 % This file may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in:
+% conditions of the LaTeX Project Public License, either
+% version 1.3 of this license or (at your option) any
+% later version. The latest version of this license is in:
 %
-%    https://www.latex-project.org/lppl.txt
+%   http://www.latex-project.org/lppl.txt
 %
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
+% and version 1.3 or later is part of all distributions
+% of LaTeX version 2005/12/01 or later.
 %
+% This work includes all source and generated files
+% described as such in README.md, included herein.
+%
+% -----------------------------------------------
+%
 %<*internal>
 \iffalse
 %</internal>
 %<*readme>
 %<<readmevb
-# Short Description
+# 1 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
+# 2 Installing a Distro Package
 
-|Filename        |Description                            |
-|----------------|---------------------------------------|
-|`schemata.dtx`  |commented style file; source file      |
-|`Makefile`      |For use with GNU make; with source file|
-|`schemata.ins`  |installation driver (generated file)   |
-|`schemata.sty`  |style file          (generated file)   |
-|`schemata.pdf`  |Documentation       (generated file)   |
-|`README.md`     |This file           (generated file)   |
-|`schematest.tex`|Test file           (generated file)   |
-|`schemata.eps`  |Image file used for the manual         |
+One can find `nameauth` in one's current TeX distribution. See the appropriate documentation in TeXlive, MikTeX, MacTeX, Linux distro, BSD, etc. Use those tools to ensure that `nameauth` is installed. **You are done.**
 
-# Obtaining the Package
+# 3 Obtaining from CTAN
 
-1. Packaged in your current TeX distrbution: See the appropriate documentation.
+## 3.1 Getting the Package Archive
 
-2. Otherwise, download `schemata.zip` from [CTAN](http://mirrors.ctan.org/macros/generic/schemata.zip).
+If not using the tools above, one can download `schemata.zip` from [CTAN](https://mirrors.ctan.org/macros/generic/schemata.zip). After downloading, unpack `schemata.zip` in an appropriate directory. Change to the directory containing the supplied files. The following files are included in the archive that is uploaded to CTAN:
 
-3. Unpack `schemata.zip` in an appropriate directory.
+| Filename         | Description                             |
+| :--------------- | :-------------------------------------- |
+| `schemata.dtx`   | commented style file; source file       |
+| `Makefile`       | For use with GNU make; with source file |
+| `schemata.eps`   | Image file for the manual; source file  |
+| `schemata.sty`   | style file          (generated file)    |
+| `schemata.pdf`   | Documentation       (generated file)    |
+| `README.md`      | This file           (generated file)    |
+| `schematest.tex` | Test file           (generated file)    |
 
-4. Change to the  directory containing the `schemata` files.
+## 3.2 Determining the Installation type
 
-# File Generation
+### 3.2.1 Read `Makefile` First
 
-## Automatic Installation
+`Makefile` has an extensive comment on usage, as well as other helpful comments. It lists all required programs needed to use the GNU make file for installation in a POSIX-compliant environment, such as GNU/Linux, various BSDs, MacOS, and WSL or Cygwin on Windows.
 
-This method requires GNU `make` on a POSIX-compliant environment, such as GNU/Linux, various BSD flavors, perhaps MacOS (e.g., with various porting systems), and even Cygwin on Windows.
+Minimum required programs include `bash` or an equivalent shell (for which one must edit `Makefile`), and `make`, plus a TeX distribution. To distribute the package, one also requires at least `sed`, and `zip`.
 
-  * Building and testing with `xelatex` and `lualatex` requires one to have the font `GFSDidot.otf` in a system or user font path. The GFS fonts are available in most Linux distributions and may be downloaded from the [Greek Font Society](https://www.greekfontsociety-gfs.gr/).
+### 3.2.2 POSIX Cases
 
-  *  The package can be built and used with `dvilualatex` only when one can use modern testing packages (but `dvipdf` fails). The test file fails with `dvilualatex`, but it works with `dviluatex`.
+If one is using a TeX distribution in a POSIX environment (MacOS, Linux distro, BSD, etc.) and has the required programs listed in `Makefile`, one may do one of the following:
 
-  * We now use an Encapsulated PostScript graphics file instead of a Portable Network Graphics file to permit all LaTeX variants to build the package.
+1. Use GNU make to build and install. **Section 4.1**
 
-  * We use the LaTeX installation on the host machine to build the package. When using `make`, any `dvi` files that are created will also be converted to `pdf` format.
+2. Build and install manually. **Section 4.2**
 
-1. Type `make` to generate the release files using `pdflatex`.
+### 3.2.3 Windows Cases
 
-2. To use another LaTeX engine, type one of the following:
+Windows offers the largest number of possibilities:
 
-        make ENGINE=xelatex
-        make ENGINE=lualatex
-        make ENGINE=dvilualatex
-        make ENGINE=latex
+* Cygwin offers a POSIX environment and its own TeX distribution. Avoid installing another TeX distro via WSL or Windows native. **Section 4.1**
 
-3. Type `make inst` to install the files in the user's personal TDS-compliant directory tree.
+* WSL offers a POSIX environment and its own TeX distribution. Avoid installing another TeX distro via Cygwin or Windows native. **Section 4.1**
 
-4. Type `sudo make install` to install the files in the system-wide, local TDS-compliant directory tree.
+* Use `make` within either Cygwin or WSL to build this package for native Windows TeX distributions MikTeX or TeXlive. Install needed build components in either Cygwin or WSL, alongside either MikTeX or TeXlive, but not both distros. Avoid installing another TeX distro in either Cygwin or WSL.
 
-5. One can include multiple make targets on the command line, but that goes beyond the scope of this document and is intended for experienced users.
+    * One can use `make` to build this package. **Section 4.1.1**
 
-## Manual Compilation
+    * Installation must be manual. **Section 4.2.2**
 
-Otherwise, the following steps are used for manual installation. See the general information at the [TeX FAQ](https://www.texfaq.org/FAQ-installthings).
+* Directly using native Windows TeX distributions (MikTeX or TeXlive)
 
-1. To build the package on the host system, generate the installation files and a copy of the documentation without the table of contents and cross-references. We use `pdflatex` by default:
+    All building and installation must be manual. **Section 4.2**
 
+* Other POSIX environments running under DOS, Windows, and other systems have not been tested and are not supported.
+
+* `Makefile` contains tests that will mitigate some issues:
+
+    * If a `.exe` extension is needed by programs used in the building process, that is detected automatically.
+
+    * If `ltxfileinfo` does not exist, the make process will produce a zip file that avoids potential problems in Windows.
+
+    * If `dvipdf` from Ghostscript is installed in a non-Windows environment, the make process will use that. Otherwise it will fall back to `dvipdfmx`.
+
+    * When installing, the make process will check if the path to the install directory exists. If it does not, it will produce an error message and exit.
+
+    If this error message occurs, which is more likely in Windows, please refer to installation of local packages in MikTeX [here](https://docs.miktex.org/manual/localadditions.html#id573803) and [here](https://miktex.org/kb/texmf-roots). Otherwise see the [TeX FAQ](https://www.texfaq.org/FAQ-privinst) and [this page](https://en.wikibooks.org/wiki/LaTeX/Installing_Extra_Packages).
+
+Here is a table showing the feasibility of a few scenarios. Any case that is not mentioned below has not been tested and is not recommended.
+
+| Build Env. | TeX Distro Platform | Make builds pkg/zip            | Make installs package           |
+| :--------- | :------------------ | :----------------------------- | :------------------------------ |
+| POSIX      | POSIX               | Yes<sup>1</sup>                | Yes                             |
+| Cygwin     | Cygwin (packages)   | Not tested; likely<sup>1</sup> | Not tested; likely <sup>2</sup> |
+| Cygwin     | MikTeX (Windows)    | Yes<sup>1, 3</sup>             | No;<sup>4</sup> do manually     |
+| Cygwin     | TeXlive (Windows)   | Not tested; likely<sup>1</sup> | Not tested; do manually         |
+| WSL        | WSL Linux packages  | Yes<sup>1</sup>                | Yes<sup>5</sup>                 |
+| WSL        | MikTeX (Windows)    | Yes<sup>1, 3</sup>             | No;<sup>4</sup> do manually     |
+| WSL        | TeXlive (Windows)   | Not tested; likely<sup>1</sup> | Not tested; do manually         |
+
+<sup>1</sup> All dependencies must be met. Bear in mind possible MacOS issues.
+
+<sup>2</sup> Installs only to Cygwin environment; not to Windows environment.
+
+<sup>3</sup> The `make images` target using `pdfjam` likely will not work as desired. **Section 6.2.3 Images**
+
+<sup>4</sup> Neither `ltxfileinfo` nor `kpsewhich` will give useful results; do a manual install.
+
+<sup>5</sup> Installs only to WSL Linux distro environment; not to Windows environment.
+
+# 4 Building and Installing
+
+Regarding command line options longer than one letter, the programs included with major TeX distributions use either single dashes or GNU-style double dashes.
+
+Here, for the sake of consistency, we use the GNU convention of single dashes with one-letter options and double dashes for longer options.
+
+## 4.1 GNU `make` for Building and Installation
+
+### 4.1.1 Build
+
+In the directory where the files unpacked from the zip archive are located, type `make`. This will do a fresh build of the package using `pdflatex`. To add more options, use, e.g.: `make ADDOPTS="--synctex=1"`.
+
+There is a make target, `make unpack`, that does not build the package. It only regenerates files from `schemata.dtx`.
+
+### 4.1.2 Install
+
+Currently, `Makefile` only installs into POSIX environments.
+
+For individual use, one must have a TDS-compliant tree set up in order for installation to work. For more info in setting up those trees, see **Section 4.2.3** for the individual case and **Section 4.2.4** for the site-wide case.
+
+For site-wide use, one must be able to get root privileges via `sudo`.
+
+* Type `make inst` to install the package files in the user's personal TDS-compliant directory tree.
+
+* Type `make install` to install the package files in the site-wide, local TDS-compliant directory tree. The user will be prompted for the `sudo` password.
+
+### 4.1.3 Remove
+
+The same constraints that apply to installation also apply to removal. If one can do the former, one can do the latter.
+
+* Type `make uninst` to remove the package files in the user's personal TDS-compliant directory tree.
+
+* Type `make uninstall` to remove the package files in the site-wide, local TDS-compliant directory tree. The user will be prompted for the `sudo` password.
+
+`Makefile` will produce listings from the remaining texmf trees after uninstalling the package.
+
+## 4.2 Manual Building and Installation
+
+Unlike the case with the supplied `Makefile`, which automates adding extensions, in certain cases using Windows TeX distros, one may have to add the ".exe" extension to the programs.
+
+### 4.2.1 Build
+
+1. Using the unpacked files from the zip archive, we begin by creating the installation driver, unpacking additional files from `schemata.dtx`, and generating a copy of the documentation without the table of contents and cross-references:
+
         pdflatex --shell-escape --recorder --interaction=batchmode schemata.dtx
 
-2. This will generate the following files:
+    a. We see the following main files:
 
-        schemata.ins   (complete)
-        schemata.sty   (complete)
-        schemata.pdf   (incomplete; do steps 3 through 5)
-        README.md      (complete)
-        schematest.tex (complete)
+    `Makefile`, `README.md`, `schemata.dtx`, `schemata.eps`, `schemata.ins`, `schemata.pdf`, `schemata.sty`, and `schematest.tex`.
 
-3. Generate the TOC and cross-references for the documentation:
+    b. We also see the following temporary files:
 
+    `schemata.aux`, `schemata.fls`, `schemata.glo`, `schemata.hd`, `schemata.idx`, `schemata.log`, `schemata.out`, `schemata.tmp`, and `schemata.toc`; also `schemata-eps-converted-to.pdf`.
+
+2. Generate the TOC and cross-references within the documentation:
+
         pdflatex --recorder --interaction=nonstopmode schemata.dtx
 
-4. Generate the index files using `makeindex`:
+3. Generate the index and glossary files using `makeindex`:
 
         makeindex -q -s gglo.ist -o schemata.gls schemata.glo
         makeindex -q -s gind.ist -o schemata.ind schemata.idx
 
-5. Integrate the glossary (changes) and index into the documentation. The second run updates the TOC:
+    This adds three files: `schemata.gls`, `schemata.ilg`, and `schemata.ind`.
 
+4. Integrate the glossary (list of changes) and index into the documentation. The second run updates the TOC:
+
         pdflatex --recorder --interaction=nonstopmode schemata.dtx
         pdflatex --recorder --interaction=nonstopmode schemata.dtx
 
-One can substitute, e.g., `xelatex`, `lualatex`, `dvilualatex`, and `latex`, for `pdflatex`, but the documentation may look different in some cases.
+    The list of files now looks like:
 
-## Manual File Installation
+| Filename         | Description                    |
+| :--------------- | :----------------------------- |
+| `Makefile`       | for use with GNU make          |
+| `schemata.dtx`   | commented style file           |
+| `schemata.eps`   | Image file used for the manual |
+|                  |                                |
+| `README.md`      | this file                      |
+| `schemata.pdf`   | package documentation          |
+| `schematest.tex` | test file                      |
+|                  |                                |
+| `schemata.ins`   | installation driver            |
+| `schemata.sty`   | style file                     |
+|                  |                                |
+| `schemata.aux`   | auxiliary file                 |
+| `schemata.fls`   | shows files read               |
+| `schemata.glo`   | raw glossary entries           |
+| `schemata.gls`   | typeset glossary entries       |
+| `schemata.hd`    |                                |
+| `schemata.idx`   | raw index entries              |
+| `schemata.ilg`   | `makeindex` log file           |
+| `schemata.ind`   | typeset index entries          |
+| `schemata.log`   | log file                       |
+| `schemata.out`   | pdf bookmark/hypertext info    |
+| `schemata.tmp`   | temp file used with fancyvrb   |
+| `schemata.toc`   | table of contents info         |
 
-Different TeX distributions have somewhat different ways to store TDS-compliant configuration and package data. See, for example, [MikTeX](https://miktex.org/kb/texmf-roots) and the [TeX FAQ](https://www.texfaq.org/FAQ-privinst). Two approaches below conform generally to a Unix-based system:
+Also, there is the automatically-generated `schemata-eps-converted-to.pdf`.
 
-## User's Home Directory
+### 4.2.2 General Install Info
 
-`TEXMFHOME` is a variable that points to the root of a TDS-compliant directory tree available to a user. Use `kpsewhich --var-value TEXMFHOME` to obtain its value. Quite often it is equivalent to `$HOME/texmf`. The dollar sign in front of the variable denotes the value of the variable instead of its name. So if `$HOME` is `/home/bob`, then `$TEXMFHOME` would be `/home/bob/texmf`, and we can understand the following paths to be under that directory:
+In order to perform manual installation, one should be familiar with the general information at the [TeX FAQ](https://www.texfaq.org/FAQ-installthings).
 
-|Path                                |Description                                 |
-|------------------------------------|--------------------------------------------|
-|`$TEXMFHOME/source/generic/schemata`|`ins` and `dtx` files, Makefile, `eps` file |
-|`$TEXMFHOME/tex/generic/schemata`   |`sty` file                                  |
-|`$TEXMFHOME/doc/generic/schemata`   |`pdf` file, `README.md`, `schematest.tex`   |
+Different TeX distributions have somewhat different ways to store TDS-compliant configuration and package data. See, for example, for MikTeX [here](https://docs.miktex.org/manual/localadditions.html#id573803) and [here](https://miktex.org/kb/texmf-roots). Otherwise see the [TeX FAQ](https://www.texfaq.org/FAQ-privinst) and [this page](https://en.wikibooks.org/wiki/LaTeX/Installing_Extra_Packages).
 
-On older TeX distributions, run `mktexlsr` on $TEXMFHOME to complete the install process.
+The instructions below conform generally to a Unix-like system. There are some cases under Windows where this method may not work. For other non-POSIX systems, one will have to know the appropriate procedures and documentation as needed for those cases, which are not covered here.
 
-## System-Wide Directory
+The user must already have a TDS-compliant tree set up in order for installation to work. We assume that one knows how to become superuser, create directories, move files, and the like.
 
-`TEXMFLOCAL` is a variable that points to the root of a TDS-compliant directory tree available to all users on a local site, system-wide installation. Use `kpsewhich --var-value TEXMFLOCAL` to obtain its value. See the [TeX FAQ](https://www.texfaq.org/FAQ-what-TDS). We can understand the following paths to be under that directory:
+### 4.2.3 Install for a User
 
-|Path                                 |Description                                 |
-|-------------------------------------|--------------------------------------------|
-|`$TEXMFLOCAL/source/generic/schemata`|`ins` and `dtx` files, Makefile, `eps` file |
-|`$TEXMFLOCAL/tex/generic/schemata`   |`sty` file                                  |
-|`$TEXMFLOCAL/doc/generic/schemata`   |`pdf` file, `README.md`, `schematest.tex`   |
+`TEXMFHOME` is an environment (shell) variable that points to the root of a TDS-compliant directory tree available to a user. To get its value on POSIX-compliant systems, use:
 
-Run `mktexlsr` with the appropriate permissions on `$TEXMFLOCAL` to complete the install process.
+* `kpsewhich --var-value TEXMFHOME`
 
-# Testing
+Quite often, `$TEXMFHOME` is equivalent to `$HOME/texmf`. The dollar sign in front of the variable denotes the value of the variable instead of its name. If `$HOME` is `/home/bob`, then `$TEXMFHOME` would be `/home/bob/texmf`. We can understand the following paths to be under this home directory.
 
-## Compiling `schematest.tex`
+| Path                                 | Files            |
+| :----------------------------------- | :--------------- |
+| `$TEXMFHOME/source/generic/schemata` | `schemata.ins`   |
+|                                      | `schemata.dtx`   |
+|                                      | `schemata.eps`   |
+|                                      | `Makefile`       |
+|                                      |                  |
+| `$TEXMFHOME/tex/generic/schemata`    | `schemata.sty`   |
+|                                      |                  |
+| `$TEXMFHOME/doc/generic/schemata`    | `schemata.pdf`   |
+| `$TEXMFHOME/doc/generic/schemata`    | `README.md`      |
+| `$TEXMFHOME/doc/generic/schemata`    | `schematest.tex` |
 
-1. Either go to the directory used when unpacking the `zip` file or copy the file `schematest.tex` from the `doc/generic/schemata` branch of whatever TDS-compliant tree to a directory of your choice.
+Create the directories in the left-hand column, or the equivalent. For manual installation, move or copy the files in the right-hand column to their respective directories in the left-hand column. On older TeX distributions, run `mktexlsr` on `$TEXMFHOME` to complete the install process (current distributions may not need this).
 
-2. If one has access to GNU `make`, use either `Makefile` in the directory where one unpacked the `zip` file or copy `Makefile` from either `src/generic/schemata` or `doc/generic/schemata` in whatever TDS-compliant tree it exists.
+### 4.2.4 Install Site-Wide
 
-    When using `make`, any `dvi` files that are created will also be converted to `pdf` format.
+`TEXMFLOCAL` is a variable that points to the root of a TDS-compliant directory tree available to all users on a local site, system-wide installation. To get its value, use:
 
-3. To compile the test file using `make` and `pdftex`, simply type:
+* `kpsewhich --var-value TEXMFLOCAL`
 
-        make testing
+See the [TeX FAQ](https://www.texfaq.org/FAQ-what-TDS). We can understand the following paths to be under this local site, system-wide directory:
 
-4. For multi-format testing using `make` in addition to that above, one can do the following. The comments should not be typed; they tell one what to expect:
+| Path                                  | Files            |
+| :------------------------------------ | :--------------- |
+| `$TEXMFLOCAL/source/generic/schemata` | `schemata.ins`   |
+|                                       | `schemata.dtx`   |
+|                                       | `schemata.eps`   |
+|                                       | `Makefile`       |
+|                                       |                  |
+| `$TEXMFLOCAL/tex/generic/schemata`    | `schemata.sty`   |
+|                                       |                  |
+| `$TEXMFLOCAL/doc/generic/schemata`    | `schemata.pdf`   |
+|                                       | `README.md`      |
+|                                       | `schematest.tex` |
 
-        Comment: Shows transliterated Latin for Greek
-        ---------------------------------------------
-        make testing TESTENGINE=tex
-        make testing TESTENGINE=luatex
-        make testing TESTENGINE=dviluatex
-        make testing TESTENGINE=xetex
-        ---------------------------------------------
-        make testing TESTENGINE=eplain
-        ---------------------------------------------
-        make testing TESTENGINE=lollipop
-        ---------------------------------------------
-        Comment: Shows Greek text via babel
-        ---------------------------------------------
-        make testing TESTENGINE=latex
-        make testing TESTENGINE=pdflatex
-        ---------------------------------------------
-        Comment: Shows Greek text via polyglossia
-        ---------------------------------------------
-        make testing TESTENGINE=lualatex
-        make testing TESTENGINE=xelatex
+Create the directories in the left-hand column. For manual installation, move or copy the files in the right-hand column to their respective directories in the left-hand column. Change file ownership as needed. If needed, run `mktexlsr` with the appropriate permissions on `$TEXMFLOCAL` to complete the install process. See also the discussion on [this page](https://tex.stackexchange.com/questions/45231/how-to-install-system-wide-packages-without-requiring-an-ls-r-database-with-tex).
 
-5. If one does not have `make`, one can use any one of the following commands. The comments should not be typed; they tell one what to expect:
+# 5 More on Package Building
 
-        Comment: Shows transliterated Latin for Greek
-        ---------------------------------------------
+* The package and manual build on current and older TeX distributions, being designed with that in mind.
+
+* The documentation is built only with `pdflatex`. The test file can generate output with multiple formats.
+
+* This release was tested on Linux (Pop! OS; vanilla TL, both current and 2017) and Windows 10 (MikTeX using shells from both Cygwin and WSL).
+
+* The CTAN release was created with the current vanilla TL on Pop! OS. See also [this page](https://wiki.debian.org/TeXLive) for Debian-based systems. For Arch-based systems, the AUR has a package that takes care of dependencies.
+
+* TeXlive versions are managed on Pop! OS using [tl-switch](https://github.com/ServusCarolus/tl-switch).
+
+# 6 Testing
+
+The file `schematest.tex` is designed to test this package on a wide variety of formats.
+
+To test `schemata`, either test the files right after installing, or create a new testing directory. One then can copy the files from the TDS-compliant source dir and optionally, the documentation directory as well, or unpack the CTAN zip file into the test directory and build the package.
+
+## 6.1 Using GNU `make`
+
+The make file will not allow `make` to process `dvilualatex` as a target. For caveats regarding the `eplain` target, see below.
+
+* Type `make test` to use `pdflatex` and Greek via `babel`.
+
+* If one wants to change engines and re-test, type `make testclean`.
+
+* One can add the value of ENGINE:
+
+For Greek via `polyglossia`; requires `GFSDidot.otf`:
+:
+        make test ENGINE=xelatex
+        make test ENGINE=lualatex
+
+For Greek via `babel`:
+        make test ENGINE=pdflatex (default)
+        make test ENGINE=latex
+
+For transliterated Greek:
+        make test ENGINE=tex
+        make test ENGINE=luatex
+        make test ENGINE=dviluatex
+        make test ENGINE=xetex
+        make test ENGINE=eplain
+        make test ENGINE=lollipop
+
+* The `eplain` executable may not exist in some TeX distributions. If this is the case, `make` will use `pdftex` to load the eplain macros and process the test files.
+
+* To add more options, use, e.g.:
+
+        make test ADDOPTS="--synctex=1"
+
+## 6.2 Manual Method
+
+Using `dvilualatex` has more complicated setup prerequisites that go beyond the scope of this document. One would have to install TFM files generated from `GFSDidot.otf` or use a different font.
+
+* Compile `schematest.tex`.
+
+Shows Greek text via `polyglossia`; requires `GFSDidot.otf`:
+
+        lualatex --interaction=nonstopmode schematest
+        xelatex --interaction=nonstopmode schematest
+
+Shows Greek text via `babel`:
+
+        latex --interaction=nonstopmode schematest
+        pdflatex --interaction=nonstopmode schematest
+
+Shows transliterated Greek:
+
         tex --interaction=nonstopmode schematest
         pdftex --interaction=nonstopmode schematest
         luatex --interaction=nonstopmode schematest
         dviluatex --interaction=nonstopmode schematest
         xetex --interaction=nonstopmode schematest
-        ---------------------------------------------
+
         eplain --interaction=nonstopmode schematest
-        ---------------------------------------------
+
         lollipop --interaction=nonstopmode schematest
-        ---------------------------------------------
-        Comment: Shows Greek text via babel
-        ---------------------------------------------
-        latex --interaction=nonstopmode schematest
-        pdflatex --interaction=nonstopmode schematest
-        ---------------------------------------------
-        Comment: Shows Greek text via polyglossia
-        ---------------------------------------------
-        lualatex --interaction=nonstopmode schematest
-        xelatex --interaction=nonstopmode schematest
 
-The manual is also a test suite.
+* If `eplain` is not available as a command in the shell, one can invoke `pdftex` thus:
 
-# Copyright
+        $ pdftex
+        This is pdfTeX, Version 3.141592653-2.6-1.40.28 (TeX Live 2025) (preloaded format=pdftex)
+        restricted \write18 enabled.
+        **&eplain schematest
 
-Copyright (C) 2021 by Charles P. Schaum <charles[dot]schaum at comcast.net>
--------------------------------------------------------
+* Another step is used only when a `dvi` file is produced.
 
+    We default to `dvipdfmx` in case Ghostscript is not installed. If Ghostscript is already installed, one may be able to use `dvipdf` instead, but this can depend on one's system and TeX distribution. If a file `schematest.out.ps` exists, one may delete it after creating the pdf file.
+
+        dvipdfmx schematest
+
+If one changes LaTeX engines, one first must remove all of the auxiliary files.
+
+# 7 Copyright
+
+Copyright (C) 2025 by Charles P. Schaum <charles[dot]schaum at comcast.net>
+
 This file may be distributed and/or modified under the
-conditions of the LaTeX Project Public License, either version 1.3
-of this license or (at your option) any later version.
-The latest version of this license is in:
+conditions of the LaTeX Project Public License, either
+version 1.3 of this license or (at your option) any
+later version. The latest version of this license is in:
 
-   [https://www.latex-project.org/lppl.txt](https://www.latex-project.org/lppl.txt)
+[https://www.latex-project.org/lppl.txt](https://www.latex-project.org/lppl.txt)
 
-and version 1.3 or later is part of all distributions of LaTeX
-version 2005/12/01 or later.
+and version 1.3 or later is part of all distributions
+of LaTeX version 2005/12/01 or later.
+
+This work includes all source and generated files
+described as such in this file, README.md.
 %readmevb
 %</readme>
 %<*internal>
@@ -229,7 +401,7 @@
 
 This is a generated file.
 
-Copyright (C) 2021 by Charles P. Schaum <charles[dot]schaum at comcast.net>
+Copyright (C) 2025 by Charles P. Schaum <charles[dot]schaum at comcast.net>
 
 This file may be distributed and/or modified under the conditions of
 the LaTeX Project Public License, either version 1.3 of this license
@@ -282,7 +454,7 @@
 %<package>\expandafter\NeedsTeXFormat\expandafter{\schemataLaTeX}[2005/12/01]
 %<package>\ProvidesPackage{schemata}
 %<*package>
-  [2021/02/27 1.4 generic package to aid construction of topical categories]
+  [2025/08/27 1.5 generic package to aid construction of topical categories]
 %</package>
 %<package>\else
 %<package>\catcode`@=11\relax
@@ -290,107 +462,52 @@
 %
 %<*driver>
 \documentclass[11pt]{ltxdoc}
-%^^A Below we check if our TL distribution has the iftex package and load it.
-\IfFileExists{iftex.sty}{\usepackage{iftex}}{}
+%^^A Now only built with pdflatex.
 
-%^^A Only versions of iftex since 2019 have the macro \RequireTUTeX.
-%^^A If the package is not loaded or if it is not new,
-%^^A we load the older, transitional packages.
-\unless\ifdefined\RequireTUTeX
-  \usepackage{ifxetex}
-  \usepackage{ifluatex}
-  \usepackage{ifpdf}
-\fi
+%^^A Only load inputenc id on a sufficiently older distro.
+\IfFileExists{utf8-2018.def}{}{\usepackage[utf8]{inputenc}}
 
-%^^A We include packages depending on the LaTeX engine, mode,
-%^^A and version of TeX being used.
-\ifxetex %^^A \ifpdf will not be true, but a pdf results.
-  \usepackage{fontspec}
-  \usepackage{polyglossia}
-  \setdefaultlanguage{american}
-  \setotherlanguage[variant=ancient]{greek}
-  \newfontfamily\greekfont{GFSDidot.otf}
-\else
-  \ifluatex
-    \ifpdf %^^A pdf mode
-      \usepackage{fontspec}
-      \usepackage{polyglossia}
-      \setdefaultlanguage{american}
-      \setotherlanguage[variant=ancient]{greek}
-      \newfontfamily\greekfont{GFSDidot.otf}
-    \else %^^A dvi mode
-      \IfFileExists{utf8-2018.def}{}{\usepackage[utf8]{inputenc}}
-      \usepackage[T1]{fontenc}
-      \usepackage{lmodern}
-      \usepackage[polutonikogreek,american]{babel}
-    \fi
-  \else %^^A These packages work for both pdf and dvi.
-    \IfFileExists{utf8-2018.def}{}{\usepackage[utf8]{inputenc}}
-    \usepackage[T1]{fontenc}
-    \usepackage{lmodern}
-    \usepackage[polutonikogreek,american]{babel}
-  \fi
-\fi
+%^^A Load polytonic Greek and US English.
+\usepackage[T1]{fontenc}
+\usepackage{lmodern}
+\usepackage[polutonikogreek,american]{babel}
+\newcommand{\gk}[1]{\foreignlanguage{polutonikogreek}{#1}}
 
-\usepackage{microtype}
-
-\newcommand{\gk}[2]{%
-  \ifxetex
-    \textgreek{#1}%
-  \else
-    \ifluatex
-      \ifpdf
-        \textgreek{#1}%
-      \else
-        \foreignlanguage{polutonikogreek}{#2}%
-      \fi
-    \else
-      \foreignlanguage{polutonikogreek}{#2}%
-    \fi
-  \fi
-}
 \usepackage[textwidth=140mm,textheight=237mm,right=25mm,nohead]{geometry}
 \usepackage{graphicx}
+\usepackage{xcolor}
 %^^A Dangerous bend ahead...
 \usepackage{manfnt}
 %^^A Use the MetaPost logo
 \usepackage{mflogo}
 \usepackage[toc]{multitoc}
-\usepackage{paracol}
-\usepackage{\jobname}[2021/02/27]
-\usepackage{verbatim}
+\usepackage{\jobname}[2025/08/27]
 \usepackage[numbered]{hypdoc}
 
-%^^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
+\usepackage{fancyvrb}
+
+%^^A Define fancyvrb defaults.
+\fvset{gobble=2,numbers=left,fontsize=\small}
+
+%^^A Display examples
+\newcommand\DisplayEx[1][\empty]{%
+  \edef\arg{#1}%
+  \begin{minipage}{0.55\textwidth}
+  \ifx\arg\empty
+    \VerbatimInput[gobble=0]{\jobname.tmp}
+  \else
+    \VerbatimInput[gobble=0,#1]{\jobname.tmp}
+  \fi
+  \end{minipage}
+  \begin{minipage}{0.2\textwidth}
+  \input{\jobname.tmp}\medskip
+  \end{minipage}
 }
-\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
@@ -400,7 +517,7 @@
 %</driver>
 % \fi
 %
-% \CheckSum{596}
+% \CheckSum{642}
 %
 % \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
@@ -420,7 +537,6 @@
 %
 %
 % \changes{0.5}{2013/02/14}{Initial version}
-% \changes{0.6}{2013/03/10}{Added features}
 % \changes{0.7}{2013/09/23}{Changed contact info}
 % \changes{0.8}{2016/01/25}{Rewrote manual}
 % \changes{1.0}{2020/03/13}{Ensure better multi-format operation}
@@ -427,9 +543,10 @@
 % \changes{1.1}{2020/03/14}{Fix issue with \texttt{dtx} guards}
 % \changes{1.2}{2020/11/23}{Updates to \texttt{Readme.md}, \texttt{Makefile}, \texttt{schematest.tex}, combine \texttt{Readme.md} and \texttt{schematest.tex} files in \texttt{dtx}}
 % \changes{1.4}{2021/02/27}{Updates to \texttt{Readme.md}}
+% \changes{1.5}{2025/08/27}{Updates to \texttt{Readme.md}, \texttt{Makefile}, \texttt{schematest.tex}, and this manual}
 %
 % \GetFileInfo{\jobname.dtx}
-% \DoNotIndex{\bgroup, \csname, \DeclareOption, \def, \dimen, \egroup, \else, \endcsname, \endinput, \ExecuteOptions, \expandafter, \fi, \futurelet, \gdef, \hbox, \hfil, \if, \ifcsname, \ifdim, \ifmmode, \ifx, \ignorespaces, \index, \let, \newbox, \newcommand, \newdimen, \newif, \next, \PackageWarning, \ProcessOptions, \relax, \RequirePackage, \setbox, \space, \vbox, \vcenter, \vfil, \vskip}
+% \DoNotIndex{\advance, \atop, \bgroup, \catcode, \DeclareOption, \def, \edef, \dp, \egroup, \else, \endinput, \ExecuteOptions, \fi, \fmtname, \futurelet, \hbox, \hfil, \ht, \ifdim, \ifinner, \ifmmode, \ifx, \ignorespaces, \left, \long, \let, \newbox, \newcommand, \newdimen, \newif, \next, \ProcessOptions, \relax, \RequirePackage, \setbox, \right, \strut, \vbox, \vcenter, \vfil, \vskip, \wd}
 %
 %\title{\textsf{schemata} --- Generic package to aid construction of topical categories\thanks{This file
 %   describes version \fileversion, last revised \filedate.}
@@ -441,13 +558,13 @@
 %
 % \begin{abstract}
 % \noindent The \textsf{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.
-% \end{abstract}
+% \end{abstract}\smallskip
 %
 % \tableofcontents
 %
 % \section{Introduction}
 %
-% 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).}
+% 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).}
 %
 % 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.
@@ -457,7 +574,7 @@
 %
 % \subsection[Loading and Options]{Package Loading and Options}
 %
-% The \textsf{schemata} package is a minimal ``wrapper'' for math mode. It can be used with \LaTeX{} or with ``generic'' formats, including \PlainTeX, Eplain, and Lollipop.\footnote{\textsc{Con\TeX t} does not like the way that \textsf{schemata} nests math-mode expressions within boxes.}
+% The \textsf{schemata} package is a minimal ``wrapper'' for math mode. It can be used with \LaTeX{} or with ``generic'' formats, including \PlainTeX, eplain, and Lollipop. Currently, \textsf{schemata} will operate with \textsc{Con\TeX t} without halting, but the way that it sizes and aligns delimiters does not work well with \textsc{Con\TeX t}.
 % \begin{quote}
 % \fbox{\begin{tabular}{ll}
 % {\Large\strut}For \LaTeX{} invoke: & \cmd{\usepackage}\oarg{options}\texttt{\{schemata\}}\\
@@ -473,26 +590,33 @@
 %
 % Yet\Warn{} this is usually unneeded. Normally 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}.
+% \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 used with \cmd{\schema} and \cmd{\Schema}. If no options are chosen, the default is \texttt{braces}.
 %
 % \subsection{Macro Overview}
 %
 % 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.
 %
+% One need not enclose schemata within any math mode delimiters but one can use, for example, display math when constructing large schemata. The \cmd{\schema} and \cmd{\Schema} macros will ensure that they use math mode. Only the large examples in this manual are contained in a math environment.
+%
 % \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}).
+% Schemata contain vertically-centered lists of material in inner vertical mode. By design, it is \emph{not} a \cmd{\long} macro. 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. A \cmd{\schemabox} can add kerns before and after each line of text to aid horizontal spacing (Section~\ref{sec:tweakschema}).
 % \begin{quote}
 % \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.
-%
-% 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.
+% 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}, but that can be modified (Section~\ref{sec:tweakschema}).
 % \newpage
 %
+% When not in internal vertical mode, \cmd{\schemabox} ignores \meta{width}, does not redefine the macro |\\|, and prints its argument as text to mitigate errors:
+% \begin{quote}
+% |Some text has \schemabox{line 1\\ line 2}.|
+%
+% Some text has \schemabox{line 1\\ line 2}.
+% \end{quote}
+%
 % \subsubsection{Delimiters}
 %
 % \DescribeMacro{\DoBraces}
@@ -502,76 +626,85 @@
 % \DescribeMacro{\DoParens}
 % \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}
-% \DoBraces
-% \Schema{0ex}{2.3ex}{\schemabox{a}}{\Schema[close]{0ex}{2.4ex}{\schemabox{b\\c}}{\schemabox{d}}}
-% \qquad\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}}}
-% \end{displaymath}
+% except they also can change the delimiters within \cmd{\schema} and \cmd{\Schema}. They remain in force until the end of a given scope:\medskip
 %
-% Additionally, these macros can change the delimiter style within a schema. See Section~\ref{sec:multiple}, as well as the example below:\bigskip
+% Default assumptions include using braces, at least one uppercase letter on each side of a delimiter, and that delimiters open from left to right.
+% \begin{quote}
+% \begin{VerbatimOut}{\jobname.tmp}
+% \schema
+%   {\schemabox{A}}
+%   {\schemabox{B\\C}}
+% \end{VerbatimOut}
+% \DisplayEx
+% \end{quote}
 %
-% \leavevmode\quad\begin{minipage}{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}{0.25\textwidth}
-% \begin{displaymath}
-% \DoBrackets\Schema{0ex}{2.4ex}
-%   {\schemabox{a}}
-%   {\DoParens\Schema[close]{0ex}{2.3ex}
-%     {\schemabox{b\\c}}
-%     {\schemabox{d}}}
-% \end{displaymath}\medskip
-% \end{minipage}\bigskip
+% Now we change to brackets (\cmd{\DoBrackets}). We add a ``nudge'' before B and C for better spacing (Section~\ref{sec:tweakschema}):
+% \begin{quote}
+% \begin{VerbatimOut}{\jobname.tmp}
+% \DoBrackets
+% \schema
+%   {\schemabox{A}}
+%   {\NudgeSB[left]\schemabox{B\\C}}
+% \end{VerbatimOut}
+% \DisplayEx
+% \end{quote}
 %
-% One can add new types by using eligible math-mode delimiters, e.g.:\bigskip
+% Change to parentheses. We use \cmd{\schema} with a closing delimiter and add a ``nudge'' after A and B for better spacing:
+% \begin{quote}
+% \begin{VerbatimOut}{\jobname.tmp}
+% \DoParens
+% \schema[close]
+%   {\NudgeSB\schemabox{A\\B}}
+%   {\schemabox{C}}
+% \end{VerbatimOut}
+% \DisplayEx
+% \end{quote}
 %
-% \leavevmode\quad\begin{minipage}{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}{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}}
+% As we change to groups we use the more complex macro \cmd{\Schema} with a nested closing delimiter on the right-hand side, as well as a ``nudge'' after B and C:
+% \begin{quote}
+% \begin{VerbatimOut}{\jobname.tmp}
+% \DoGroups
+% \Schema{0ex}{3ex}
+%   {\smallskip\schemabox{A}}
+%   {\Schema[close]{0ex}{3ex}
+%     {\NudgeSB\schemabox{B\\C}}
+%     {\smallskip\schemabox{D}}
 % }
-% \end{displaymath}\medskip
-% \end{minipage}
+% \end{VerbatimOut}
+% \DisplayEx
+% \end{quote}
 %
+% We change delimiters within the schema below. We insert ``nudges'' both before and after B and C, and before D. See also Section~\ref{sec:multiple}.
+% \begin{quote}
+% \begin{VerbatimOut}{\jobname.tmp}
+% \DoBrackets
+% \Schema{0ex}{2.4ex}
+%   {\schemabox{A}}
+%   {\DoParens\Schema[close]{0ex}{2.4ex}
+%     {\NudgeSB[left]\NudgeSB[right]
+%      \schemabox{B\\C}}
+%     {\NudgeSB[left]\schemabox{D}}
+%   }
+% \end{VerbatimOut}
+% \DisplayEx
+% \end{quote}
+%
+% One can add new delimiter types.\footnote{See \emph{The \TeX book}, page~146. Avoid using \cmd{\langle}, \cmd{\rangle}, \texttt{/}, and \cmd{\textbackslash}. They do not scale like the other delimiters and will not produce expected results in some cases.}
+% In  \PlainTeX\ one might see the following example. Both \cmd{\SwitchSB} and \cmd{\NudgeSB} are described in Section~\ref{sec:tweakschema}:
+% \begin{quote}
+% \begin{VerbatimOut}{\jobname.tmp}
+% \catcode`@=11\relax
+% \def\DoVerts{%
+%   \let\@schemata at LD\Vert%
+%   \let\@schemata at RD\Vert}
+% \catcode`@=12\relax
+% \DoVerts
+% \schema{\SwitchSB\schemabox{A}}
+%   {\NudgeSB[left]\schemabox{B\\C\\D}}
+% \end{VerbatimOut}
+% \DisplayEx
+% \end{quote}
+%
 % \subsubsection[\texttt{\textbackslash schema}]{Leaf Nodes: \texttt{\textbackslash schema}}
 %
 % \DescribeMacro{\schema}
@@ -581,65 +714,45 @@
 % {\Large\strut}\cmd{\schema}\oarg{type}\marg{left side}\marg{right side}\\
 % \end{tabular}}
 % \end{quote}
-% 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}{0.6\textwidth}\small
-% \StartNum
-% \begin{verbatim}
-%\schema
-%  {\schemabox{a}}
-%  {\schemabox{b\\c}}\end{verbatim}
-% \end{minipage}
-% \begin{minipage}{0.25\textwidth}
-% \begin{displaymath}
+% The \meta{left side} and \meta{right side} are vertical material in order to allow a \cmd{\smallskip} or other vertical adjustment as needed. The \meta{type} of a schema is \texttt{open} by default. The delimiter opens toward the right:
+% \begin{quote}
+% \begin{VerbatimOut}{\jobname.tmp}
 % \schema
-%   {\schemabox{a}}
-%   {\schemabox{b\\c}}
-% \end{displaymath}\vspace{0pt}
-% \end{minipage}
-% \newpage
+%   {\schemabox{A}}
+%   {\schemabox{B\\C}}
+% \end{VerbatimOut}
+% \DisplayEx
+% \end{quote}
 %
-% Any value of \meta{type} other than the exact string \texttt{open} makes a ``closed'' schema (the delimiter opens to the left):
-%
-% \leavevmode\quad\begin{minipage}{0.6\textwidth}\small
-% \StartNum
-% \begin{verbatim}
-%\schema[closed]
-%  {\NudgeSB\schemabox{b\\c}}
-%  {\schemabox{a}}\end{verbatim}
-% \end{minipage}
-% \begin{minipage}{0.25\textwidth}
-% \begin{displaymath}
+% Any value of \meta{type} other than the string \texttt{open} makes a ``closed'' schema (the delimiter opens to the left). Especially with closed braces, one often adds a ``nudge'' to the left-hand side to negates a kern of \texttt{-0.2em} added by default.
+% \begin{quote}
+% \begin{VerbatimOut}{\jobname.tmp}
 % \schema[closed]
-%   {\NudgeSB\schemabox{b\\c}}
-%   {\schemabox{a}}
-% \end{displaymath}\vspace{0pt}
-% \end{minipage}
+%   {\NudgeSB\schemabox{A}}
+%   {\schemabox{B\\C}}
+% \end{VerbatimOut}
+% \DisplayEx
+% \end{quote}
+%\smallskip
+% In practice, \cmd{\schema} does not nest, so it is only useful for the rightmost elements or ``leaves'' of a large schema to make formatting the leaves more efficient. Using boxes, below we show where one would use \cmd{\schema} to populate the leaves:
+% \begin{quote}
+% \begin{VerbatimOut}{\jobname.tmp}
+% \Schema{-0.4ex}{4.2ex}
+%   {\schemabox{A}}
+%   {\vbox{\noindent%
+%     \fbox{\schema
+%       {\schemabox{B}}
+%       {\schemabox{C\\D}}}\\[1ex]
+%     \fbox{\schema
+%       {\schemabox{E}}
+%       {\schemabox{F\\G}}}}}
+% \end{VerbatimOut}
+% \DisplayEx
+% \end{quote}
 %
-% \noindent\leavevmode\newlength{\savepar}\setlength{\savepar}{\the\parindent}^^A
-% \begin{minipage}{0.65\textwidth}
-% 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}.
+% The sizing of a \cmd{\schema} changes automatically, depending on the height, depth, and context of the letters. This can look ugly if uniform delimiter size is desired. Use \cmd{\Schema} (next section) to enforce such uniformity.
+% \newpage
 %
-% \hspace{\the\savepar}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 at right.
-% \end{minipage}\hfill
-% \begin{minipage}{0.2\textwidth}\small
-%   \Schema{-1ex}{4.2ex}
-%     {
-%       \schemabox{a}
-%     }
-%     {
-%       \vbox{\noindent%
-%         \fbox{\schema{\schemabox{b}}{\SwitchSB\schemabox{c\\d}}}\\[1ex]
-%         \fbox{\schema{\schemabox{e}}{\schemabox{f\\g}}
-%       }
-%     }
-%   }
-% \end{minipage}\smallskip
-%
-% \indent 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.
-%
 % \subsubsection[\texttt{\textbackslash Schema}]{Branches and Root: \texttt{\textbackslash Schema}}
 %
 % \DescribeMacro{\Schema}
@@ -649,7 +762,7 @@
 % {\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. 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.}
+%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 (if applicable), 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]
@@ -659,147 +772,80 @@
 %
 % 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.
 %
-% 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:
+% Adjustments must be done from right to left. Once a leaf or sub-tree is balanced, any attempt to re-balance the schema from left to right will throw everything off. We will return to this point especially in Section~\ref{sec:Loci} and thereafter.
 %
-% \begin{displaymath}
-% \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{displaymath}
-% \newpage
+% 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.
 %
-% 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}
+% \cmd{\Schema} lets one produce multiple schemata with the same look, i.e., the same brace heights and general appearance. One can nest and combine these similar schemata into complex layouts. See Section~\ref{sec:OpenClose}.\bigskip
+%
+% \begin{VerbatimOut}{\jobname.tmp}
+% Both \cmd{\schema} and \cmd{\Schema} can be in running text:\\[1ex]
+% \indent Here is one \schema{\schemabox{A}}{\schemabox{B\\C}}
+% and the other \Schema{0ex}{2.5ex}{\schemabox{D}}{\schemabox{E\\F}}
+% \end{VerbatimOut}
+%
+% \input{\jobname.tmp}
+%
+% \begin{quote}
+% \VerbatimInput[gobble=0]{\jobname.tmp}
 % \end{quote}
 %
-% Both \cmd{\schema} and \cmd{\Schema} will stack vertically if set sequentially as paragraphs in running text:
+% Both \cmd{\schema} and \cmd{\Schema} will stack vertically if set sequentially. It does not matter which type of schema precedes or follows; for example:
 %
-% \begin{paracol}{2}
-% \begin{quote}\small
-% \StartNum
-% \begin{verbatim}
+% \begin{quote}
+% \renewcommand*\SBNudgeFactor{\kern 0.22em}
+% \begin{VerbatimOut}{\jobname.tmp}
 % \schema
-%   {\schemabox{a}}
-%   {\schemabox{b\\c}}
-%   
-% \schema
-%   {\schemabox{d}}
-%   {\schemabox{e\\f}}\end{verbatim}
+%   {\schemabox{A}}
+%   {\schemabox{B\\C}}
+%
+% \Schema{0ex}{2.5ex}
+%   {\schemabox{D}}
+%   {\schemabox{E\\F}}
+% \end{VerbatimOut}
+% \DisplayEx
 % \end{quote}
-% \switchcolumn
-% \vfil
+% \newpage
 %
-% \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
-%
 % 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{quote}\small
-% \StartNum
-% \begin{verbatim}
-%\def\Box{%
-%  \hbox{%
-%    \vrule%
-%    \vbox to 1cm{\hrule\hbox to 1cm{\hfil}\vfil\hrule}%
-%    \vrule%
-%  }%
-%}\end{verbatim}
+% \def\Box{%^^A
+%   \hbox{%^^A
+%     \vrule%^^A
+%     \vbox to 1cm{\hrule\hbox to 1cm{\hfil}\vfil\hrule}%^^A
+%     \vrule%^^A
+%   }%^^A
+% }
+% \begin{quote}
+% \begin{Verbatim}
+% \def\Box{%
+%   \hbox{%
+%     \vrule%
+%     \vbox to 1cm{\hrule\hbox to 1cm{\hfil}\vfil\hrule}%
+%     \vrule%
+%   }%
+% }
+% \end{Verbatim}
 % \end{quote}
 %
-% 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}
+% Now we begin with the trivial example of one \cmd{\Box} on each side of the delimiter:
+% \begin{quote}
+% \begin{VerbatimOut}{\jobname.tmp}
+% \schema{\Box}{\Box}
+% \end{VerbatimOut}
+% \DisplayEx[numbers=none]
 % \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}
+% This example is more complex, showing how each side stacks boxes vertically:
+% \begin{quote}
+% \begin{VerbatimOut}{\jobname.tmp}
+% \schema{\Box}{\Box\Box}
+% \end{VerbatimOut}
+% \DisplayEx[numbers=none]
 % \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}
+% Finally we use \cmd{\Schema} to get a schema that is both open and closed:
+% \begin{quote}
+% \begin{VerbatimOut}{\jobname.tmp}
 % \Schema{-0.2ex}{0.9cm}
 % {\Box}
 % {
@@ -808,9 +854,14 @@
 %   {\Box\hbox{\Box\kern0.2em}}
 %   {\Box}
 % }
-% \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}.
+% \end{VerbatimOut}
+% \DisplayEx
+% \end{quote}
 %
+% A kern of \texttt{0.2em} was added above to compensate for the automatic kern of \texttt{-0.2em}. This correction mimics the behavior of \cmd{\NudgeSB}.
+%
+% If not expressed in terms of \texttt{ex} height, which is quite useful for correlating the number of lines of text and white space in a schema to the actual height of a brace that is needed, then \meta{size} should be expressed as above: slightly less than half the height of the contents, e.g., \texttt{0.9cm} for a height of \texttt{2cm}.
+%
 % \subsection{Romancing the \texttt{\textbackslash schema}}
 % \label{sec:tweakschema}
 %
@@ -817,154 +868,136 @@
 % \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}
-% The \cmd{\strut} causes the delimiter of a \cmd{\schema} to have the proper size.
+% The \cmd{\strut} causes the delimiter of a \cmd{\schema} to have the proper size in order to span that letter.
 %
-% 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).}
+% If the first letter is not a capital letter, or if the text seems a little off-center, you can turn off this default feature of \cmd{\schemabox} by placing \cmd{\LCschema} before the \cmd{\schemabox} where the change is to occur. \cmd{\LCschema} prevents all subsequent uses of \cmd{\schemabox} from adding \cmd{\strut}. One restores the default behavior with \cmd{\UCschema}, also best placed before the intended \cmd{\schemabox}.
+% \newpage
 %
-% \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}
+% Here is an example where an entire schema is in lowercase. Instead of putting \cmd{\LCschema} before a particular \cmd{\schemabox}, we change the look of the whole thing and then restore the default via \cmd{\UCschema}:\footnote{Based on axioms in August Pfeiffer, \textit{Thesaurus Hermeneuticus} (Frankfurt am Main, 1698).}
+%
+% \begin{VerbatimOut}{\jobname.tmp}
 % \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}
+% {\schemabox{sensus literalis}}
+% {\schema
+%   {\schemabox{sensus\\literalis\\(improprie)}}
+%   {\schemabox{e parallelismo clarior\\
+%      ex analogia fidei\\ex evidentia rei}}
+%   \smallskip
+%   \schemabox{sensus literae}
 % }
 % \UCschema
-% \end{displaymath}\smallskip
-% \newpage
+% \end{VerbatimOut}
 %
+% \begin{quote}
+% \VerbatimInput[gobble=0]{\jobname.tmp}
+% \end{quote}
+%
+% \begin{displaymath}
+% \input{\jobname.tmp}
+% \end{displaymath}
+%
 % \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. 
+% The macro \cmd{\SwitchSB} toggles the insertion of a \cmd{\strut} to the opposite of what is in effect for just one \cmd{\schemabox}. Thus:
+% 
+% \begin{quote}
+% \begin{tabular}{ll}
+% Current State & Using \cmd{\SwitchSB}\\[1ex]
+% \strut\cmd{\UCschema} & no \cmd{\strut}\\
+% \strut\cmd{\LCschema} & insert a \cmd{\strut}
+% \end{tabular}
+% \end{quote}
 %
+% \cmd{\SwitchSB} should be placed immediately before the \cmd{\schemabox} to be affected. Its effects are reset when that particular \cmd{\schemabox} terminates. 
+%
 % 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
 %
 % \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.''
+% The macro \cmd{\NudgeSB} is another ``per-use'' macro that, by default, causes a particular \cmd{\schemabox} to add either one or two \texttt{0.2em} kerns to the end(s) of every line of text. This behavior resets outside of that \cmd{\schemabox}.
+% \begin{quote}
+% \fbox{\begin{tabular}{l}
+% {\Large\strut}\cmd{\NudgeSB}\oarg{direction}\\
+% \end{tabular}}
+% \end{quote}
 %
-% \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
+% The default argument of \meta{direction} is \texttt{right}; the kern is added to the right side of the text. Any other value for \meta{direction} causes a \cmd{\schemabox} to add a kern to the left side. One can add kerns to both sides of every line of text, e.g.:
+% \begin{quote}
+% |\NudgeSB[left]\NudgeSB[right]\schemabox{text}|
+% \end{quote}
 %
+% Both \cmd{\schema} and \cmd{\Schema} insert a kern of \texttt{-0.2em} between the left-hand side and the delimiter to correct spacing when a delimiter opens to the right, especially braces. In some cases, we bypass the default with a nudge.
+% \newpage
+%
 % \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:
+% 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 want to change the size of a nudge. Next we show how to do that within a local scope:
 % \begin{quote}
-% \verb+\renewcommand\SBNudgeFactor{\kern0.08em}+
+% \begin{VerbatimOut}{\jobname.tmp}
+% \bgroup
+%   \DoBrackets
+%   \renewcommand\SBNudgeFactor{\kern 1em}
+%   \Schema{0ex}{2.3ex}
+%   {
+%     \NudgeSB
+%     \schemabox{a}
+%   }
+%   {
+%     \Schema[close]{0ex}{2.4ex}
+%     {
+%       \NudgeSB[right]
+%       \NudgeSB[left]
+%       \schemabox{b\\c}
+%     }
+%     {
+%       \NudgeSB[left]
+%       \schemabox{d}
+%     }
+%   }
+% \egroup
+% \end{VerbatimOut}
+% \DisplayEx
 % \end{quote}
 %
 % \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.
+% Now that we have explained what the macros do, let's take a journey together to discover a methodology for creating general forms of schemata.
 %
 % \subsubsection{Starting Off Basic}
 %
-% 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}
+% Let's ignore most of what we have learned so far and naively try \cmd{\schema}:
+% \begin{quote}
+% \begin{VerbatimOut}{\jobname.tmp}
+% \schema{A}{B\\C}
+% \end{VerbatimOut}
+% \DisplayEx[numbers=none]
 % \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}
+% Oh dear, that went badly. Oh, wait! Schemata hold internal vertical lists. That weird \cmd{\schemabox} is designed for internal vertical mode:
+% \begin{quote}
+% \begin{VerbatimOut}{\jobname.tmp}
+% \schema
+%   {\schemabox{A}}
+%   {\schemabox{B\\C}}
+% \end{VerbatimOut}
+% \DisplayEx
 % \end{quote}
-% \switchcolumn
 %
-% \vfil\schema
-%   {\schemabox{a}}
-%   {\schemabox{b\\c}}
-% \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}}
-% \end{paracol}
-%
-% When there is no ``big'' side of a schema, perhaps use inline math mode:
+% Now we are getting somewhere! But we really need a ``big'' side of a schema, or else we get:
 % \begin{quote}
-% |\(\hbox{a}\left\{\hbox{\strut gib}\right.\)|\qquad \(\hbox{a}\left\{\hbox{\strut gib}\right.\)
+% \begin{VerbatimOut}{\jobname.tmp}
+% \schema
+%   {\schemabox{A}}
+%   {\schemabox{B}}
+% \end{VerbatimOut}
+% \DisplayEx
 % \end{quote}
+% \newpage
 %
 % \subsubsection{\textit{Loci} 101}
+% \label{sec:Loci}
 %
 % 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}:
-%
-% \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{displaymath}
+% \begin{quote}
+% \begin{VerbatimOut}{\jobname.tmp}
 % \schema
 % {
 %   \schemabox{Subjectum theo-\\
@@ -999,23 +1032,17 @@
 %     Glorificatione ejusdem.}
 %   }
 % }
-% \end{displaymath}
+% \end{VerbatimOut}
+% \VerbatimInput[gobble=0]{\jobname.tmp}
 %
-% 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.
-%
-% 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}
+% \input{\jobname.tmp}
 % \end{quote}
+% \newpage
 %
-% 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.}
+% This is not what we want to see; \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. Below, we demonstrate what we want and then show how we got there:
+%
 % \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}
+% \begin{VerbatimOut}{\jobname.tmp}
 % \Schema{-1ex}{8.7ex}
 % {
 %   \schemabox{Subjectum theo-\\
@@ -1051,75 +1078,85 @@
 %     Glorificatione ejusdem.}
 %   }
 % }
-%\end{displaymath}
+% \end{VerbatimOut}
+% \input{\jobname.tmp}
+% \vskip -2.5ex
+% \end{quote}
 %
+% \begin{enumerate}
+% \item We first adjust the spacing, starting from the leaves at right, going to the root on the left. We add a \cmd{\smallskip}, shown in \textcolor{red}{\bfseries red boldface}:
+% \begin{quote}
+% \VerbatimInput[gobble=0,firstline=13,lastline=16]{\jobname.tmp}
+% \VerbatimInput[gobble=0,firstline=17,lastline=17,
+%   formatcom=\vskip -1ex,formatcom*=\color{red},
+%   formatcom*=\bfseries]{\jobname.tmp}
+% \end{quote}
+%
+% One should be attentive to format-dependent macro behavior.\footnote{Using \cmd{\vskip} in \PlainTeX{} starts a new paragraph, so \cmd{\smallskip} cannot be used within the horizontal mode of a \cmd{\schemabox} when using \PlainTeX. \LaTeX\ allows more flexibility and permits one to place vertical skips more freely.}
+% In some cases, putting vertical space in the first or last lines of a \cmd{\schemabox}, regardless of format, will affect centering negatively.
+%
+% \item 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}
+%   \VerbatimInput[gobble=0,firstline=1,lastline=1,
+%   formatcom*=\color{red},formatcom*=\bfseries]{\jobname.tmp}
+% \end{quote}
+% \end{enumerate}
+%
+% After those two changes, we have the finished schema:
+% \begin{quote}
+%   \VerbatimInput[gobble=0,firstline=1,lastline=7]{\jobname.tmp}
+%
+%   \VerbatimInput[gobble=0,firstline=8]{\jobname.tmp}
+% \end{quote}
+%
 % \subsubsection{Going Big}
 %
-% Thus far, we have dealt with many trivial examples. We have amassed a significant body of knowledge:
+% Thus far, we have dealt with trivial examples while gaining 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 Schemata usually open from left to right, from root to leaves.
+% \item We usually 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}.
+% \item We adjust spacing and delimiters by working from the leaves to the root.
+% \item We may need to consider differences among formats when using \cmd{\vskip}, \cmd{\smallskip}, etc. Also, \cmd{\newbox} is an \cmd{\outer} macro in \PlainTeX.
+% \item Sometimes, we need to use \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
+% With this information, we will reproduce a schema found on page 13 of Martin Chemnitz, \textit{Loci Theologici} (Frankfurt, 1653). The image of the schema was obtained by the present author.\vfill
 %
-% \noindent\includegraphics[width=\textwidth]{schemata.eps}\bigskip
+% \leavevmode\noindent\includegraphics[width=0.9\textwidth]{schemata.eps}
 %
 % \begin{itemize}
-% \item As you see, the braces were composed of various type sorts, mainly smaller rules and assorted curly and bendy bits.
+% \item The braces are composed of vertical rules and other type sorts. We will replace them with the analogous standard \TeX\ brace delimiters.
 %
-% \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 The Latin uses roman, italic and small caps. We will use \emph{s-finalis} where the original uses \emph{s-medialis}. We will retain some 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.
+% \item We will improve spacing between elements and we will not aim for an exact reproduction of line breaks.
 % \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:
+% 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 individual snippets:
 %
 % \begin{quote}
-% \StartNum
-% \begin{verbatim}
+%
+% The first snippet starts at the top right of the original schema:
+% \begin{VerbatimOut}{\jobname.tmp}
 % \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}
+% \end{VerbatimOut}
+% \VerbatimInput[gobble=0]{\jobname.tmp}
+% \ \qquad\input{\jobname.tmp}
+% \newpage
 %
-% \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
+% Next is the first large \cmd{\schema}, easy to confuse with the other large one:
+% \begin{VerbatimOut}{\jobname.tmp}
+% \schema
 % {\schemabox{Ad hominem\\ quem vel}}
 % {
 %   \schemabox{Accusat \& terret, \textsc{Per Legem},\\
@@ -1131,24 +1168,22 @@
 %   Glorificat \textsc{Per Resurrectionem Carnis}\\
 %   \textsc{\quad Ad Vitam \AE{}ternam}.}
 % }
+% \end{VerbatimOut}
+% \VerbatimInput[gobble=0]{\jobname.tmp}
+% \ \qquad\input{\jobname.tmp}\medskip
+%
+% Next we have just one line of text, which is almost tucked in front of the leaf that comes after it, but it still is a leaf in its own right:
+% \begin{VerbatimOut}{\jobname.tmp}
+% \schemabox{Ante lapsum.}
+% \end{VerbatimOut}
+% \VerbatimInput[gobble=0]{\jobname.tmp}
+% \ \qquad\input{\jobname.tmp}
 % \end{quote}
 %
 % \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
+% This next example looks bad, but structure precedes aesthetics. Later we will add vertical skips to get two groups of two lines each:
+% \begin{VerbatimOut}{\jobname.tmp}
+% \schema
 % {\schemabox{Post lapsum:}}
 % {
 %   \schemabox{Ante Regenerationem \&\\
@@ -1156,27 +1191,14 @@
 %   \schemabox{Post Regenerationem \&\\
 %   Renovationem S. Sancti.}
 % }
-% \end{quote}
+% \end{VerbatimOut}
+% \VerbatimInput[gobble=0]{\jobname.tmp}
+% \ \qquad\input{\jobname.tmp}\medskip
 % \newpage
 %
-% \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
+% Here is the second large \cmd{\schema}, easy to confuse with the first:
+% \begin{VerbatimOut}{\jobname.tmp}
+% \schema
 % {\schemabox{\textsc{Deum},}}
 % {
 %   \schemabox{P\oe{}nitentia agens, agnitis peccatis \&\\
@@ -1190,50 +1212,49 @@
 %   \textsc{\quad In Resurrectione Carnis}\\
 %   \textsc{\quad Ad Vitam \AE{}ternam}.}
 % }
-% \end{quote}
+% \end{VerbatimOut}
+% \VerbatimInput[gobble=0]{\jobname.tmp}
+% \ \qquad\input{\jobname.tmp}\medskip
 %
-% \begin{quote}
-% \StartNum
-% \begin{verbatim}
-%\schema
-%{\schemabox{seipsum ratione}}
-%{\schemabox{Anim\ae{}\\ vel\\ Corporis}}\end{verbatim}
-% \qquad\schema
+% Using one \cmd{\schemabox} on the right can do a decent job with spacing:
+% \begin{VerbatimOut}{\jobname.tmp}
+% \schema
 % {\schemabox{seipsum ratione}}
 % {\schemabox{Anim\ae{}\\ vel\\ Corporis}}
+% \end{VerbatimOut}
+% \VerbatimInput[gobble=0]{\jobname.tmp}
+% \ \qquad\input{\jobname.tmp}
 % \end{quote}
 %
 % \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
+% Here we have a large leaf, later followed by another ``one-liner'':
+% \begin{VerbatimOut}{\jobname.tmp}
+% \schema
 % {\schemabox{Amicum ra-\\ tione vel}}
-% {
+%  {
 %   \schemabox{Religionis.\\
 %   Politic\ae{} \& \OE{}conomic\ae{}.\\
 %   Cognationis.\\
 %   Agnationis.}
 % }
+% \end{VerbatimOut}
+% \VerbatimInput[gobble=0]{\jobname.tmp}
+% \ \qquad\input{\jobname.tmp}\medskip
+% \newpage
 %
-% \qquad\schemabox{Inimicum.}\footnote{We delete line 9 before \emph{Inimicum} in the large example on page~\pageref{page:firstbig} and thereafter.}
+% And here is the second ``one-liner'' in the larger schema:
+% \begin{VerbatimOut}{\jobname.tmp}
+% \schemabox{Inimicum.}
+% \end{VerbatimOut}
+% \VerbatimInput[gobble=0]{\jobname.tmp}
+% \ \qquad\input{\jobname.tmp}
 % \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
+% We build the leaves into the larger schema using \cmd{\Schema} with dummy values for both \meta{adjust} and \meta{size} in order to verify that the basic design is accurate:
 %
-% \bgroup\small\begin{displaymath}
+% \begin{VerbatimOut}{\jobname.tmp}
 % \Schema{0ex}{5ex}
 % {
 %   \schemabox{Subjectum \&\\
@@ -1321,156 +1342,20 @@
 %     }
 %   }
 % }
-%\end{displaymath}\egroup\bigskip
+% \end{VerbatimOut}
+% \bgroup\small\begin{displaymath}
+% \input{\jobname.tmp}
+% \end{displaymath}\egroup\bigskip
 %
-% 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:
+% Although the initial result is not pleasing to the eye, the following code listing illustrates the structure of the schema above and serves as a basis for later revisions.
 %
-% \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}
+% \begin{quote}
+% \VerbatimInput[gobble=0,lastline=8]{\jobname.tmp}
 %
-% 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}
+% \VerbatimInput[gobble=0,firstline=9]{\jobname.tmp}
 % \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}
+% \begin{VerbatimOut}{\jobname.tmp}
 % \Schema{0ex}{5ex}
 % {
 %   \schemabox{Subjectum \&\\
@@ -1558,39 +1443,101 @@
 %     }
 %   }
 % }
-%\end{displaymath}\egroup
-% \newpage
+% \end{VerbatimOut}
 %
-% \newpage
+% Now we show how to correct the spacing within and among elements. \textbf{Here we must work from leaves to root.} Any other approach would waste time repeatedly adjusting the leaves and branches. We show those lines that were changed in \textcolor{red}{\bfseries red boldface}, with some surrounding context. Remember that you can add a \cmd{\smallskip} within a \cmd{\schemabox} in \LaTeX{}, but not in \PlainTeX.
 %
-% 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:
+% We have split the text below into two boxes to make it format-agnostic. The first \cmd{\smallskip} adds space between two instances of \cmd{\schemabox}. The second \cmd{\smallskip} follows the closing brace of the right-hand side, not the \cmd{\schemabox}, in order to adjust the entire \cmd{\schema}.
+% \begin{quote}
+% \VerbatimInput[gobble=0,firstline=15,lastline=17]{\jobname.tmp}
 %
-% \begin{quote}\small\StartNum
-% \begin{verbatim}
-% \Schema{0ex}{23ex}\end{verbatim}
+% \VerbatimInput[gobble=0,firstline=18,lastline=18,
+%   formatcom=\vskip -2.7ex,formatcom*=\color{red},
+%   formatcom*=\bfseries]{\jobname.tmp}
+%
+% \VerbatimInput[gobble=0,firstline=19,lastline=19,
+%   formatcom=\vskip -4.4ex]{\jobname.tmp}
+%
+% \VerbatimInput[gobble=0,firstline=20,lastline=20,
+%   formatcom=\vskip -2.7ex,formatcom*=\color{red},
+%   formatcom*=\bfseries]{\jobname.tmp}
 % \end{quote}
-% \begin{quote}\small\ContinueNum\addtocounter{VerbLine}{8}
-% \begin{verbatim}
-% \Schema{0ex}{8ex}\end{verbatim}
+%
+% Again, the skip comes after the close of a \cmd{\schema} to adjust the whole thing.
+% \begin{quote}
+% \VerbatimInput[gobble=0,firstline=29,lastline=31]{\jobname.tmp}
+%
+% \VerbatimInput[gobble=0,firstline=32,lastline=32,
+%   formatcom=\vskip -2.7ex,formatcom*=\color{red},
+%   formatcom*=\bfseries]{\jobname.tmp}
 % \end{quote}
-% \begin{quote}\small\ContinueNum\addtocounter{VerbLine}{23}
-% \begin{verbatim}
-% \Schema{0ex}{16ex}\end{verbatim}
+%
+% Below, the first \cmd{\smallskip} helps to separate the lone \cmd{\schemabox} from the \cmd{\schema} beneath it. The result allows us to ``tuck'' that small element as its own leaf in front of and above the larger leaf that follows.
+%
+% This also illustrates how the internal vertical lists contained by \cmd{\Schema} and \cmd{\schema} can hold heterogeneous material, which one can arrange as needed.
+%
+% A \cmd{\medskip} is placed between two instances of \cmd{\schemabox}, which slightly throws off the way that the brace spans the boxes. A small skip is put at the end of the last \cmd{\schemabox} to correct that.
+%
+% In simple cases like this particular leaf, we can offset one change in spacing with another change to avoid using \cmd{\Schema}. With anything more complex than that, however, using \cmd{\Schema} becomes inevitable.
+%
+% Finally, a \cmd{\smallskip} is added after the entire \cmd{\schema} on the right-hand side.
+% \begin{quote}
+% \VerbatimInput[gobble=0,firstline=39,lastline=41]{\jobname.tmp}
+%
+% \VerbatimInput[gobble=0,firstline=42,lastline=42,
+%   formatcom=\vskip -2.7ex,formatcom*=\color{red},
+%   formatcom*=\bfseries]{\jobname.tmp}
+%
+% \VerbatimInput[gobble=0,firstline=43,lastline=46,
+%   formatcom=\vskip -4.4ex]{\jobname.tmp}
+%
+% \VerbatimInput[gobble=0,firstline=47,lastline=47,
+%   formatcom=\vskip -2.7ex,formatcom*=\color{red},
+%   formatcom*=\bfseries]{\jobname.tmp}
+%
+% \VerbatimInput[gobble=0,firstline=48,lastline=48,
+%   formatcom=\vskip -4.4ex]{\jobname.tmp}
+%
+% \VerbatimInput[gobble=0,firstline=49,lastline=50,
+%   formatcom=\vskip -2.7ex,formatcom*=\color{red},
+%   formatcom*=\bfseries]{\jobname.tmp}
+%
+% \VerbatimInput[gobble=0,firstline=51,lastline=51,
+%   formatcom=\vskip -4.4ex]{\jobname.tmp}
 % \end{quote}
-% \begin{quote}\small\ContinueNum\addtocounter{VerbLine}{4}
-% \begin{verbatim}
-% \Schema{0ex}{5ex}\end{verbatim}
+%
+% The skips below follow predictably at the end of each \cmd{\schema}:
+% \begin{quote}
+% \VerbatimInput[gobble=0,firstline=65,lastline=67]{\jobname.tmp}
+%
+% \VerbatimInput[gobble=0,firstline=68,lastline=68,
+%   formatcom=\vskip -2.7ex,formatcom*=\color{red},
+%   formatcom*=\bfseries]{\jobname.tmp}
+%
+% \VerbatimInput[gobble=0,firstline=69,lastline=70,
+%   formatcom=\vskip -4.4ex]{\jobname.tmp}
+%
+% \VerbatimInput[gobble=0,firstline=71,lastline=71,
+%   formatcom=\vskip -2.7ex,formatcom*=\color{red},
+%   formatcom*=\bfseries]{\jobname.tmp}
+%
+% \VerbatimInput[gobble=0,firstline=72,lastline=81,
+%   formatcom=\vskip -4.4ex]{\jobname.tmp}
+%
+% \VerbatimInput[gobble=0,firstline=82,lastline=82,
+%   formatcom=\vskip -2.7ex,formatcom*=\color{red},
+%   formatcom*=\bfseries]{\jobname.tmp}
 % \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}
 %
+% Notice in the following schema how the addition of vertical space among the various elements helps make the entire schema easier to read. This is a big improvement over the original version done with a letterpress!
+%
+% Thus we have come to a rough halfway point. We have identified the various smaller elements of the schema, put them together in a larger structure, and given them the spacing needed to be aesthetically pleasing. 
+%
 % \bgroup\small\begin{displaymath}
+% \input{\jobname.tmp}
+% \end{displaymath}\egroup\medskip
+%
+% \begin{VerbatimOut}{\jobname.tmp}
 % \Schema{0ex}{23ex}
 % {
 %   \schemabox{Subjectum \&\\
@@ -1600,7 +1547,7 @@
 %   vel}
 % }
 % {
-%   \Schema{-6.4ex}{8.6ex}
+%   \Schema{0ex}{8ex}
 %   {
 %     \schemabox{\textsc{Dei}, qua-\\lis sit, aut}
 %   }
@@ -1678,37 +1625,38 @@
 %     }
 %   }
 % }
-%\end{displaymath}\egroup
+% \end{VerbatimOut}
 %
-% \newpage
+% Next we estimate lines of text and blank lines between the top and bottom elements on the right-hand side of each \cmd{\Schema}. We put that number as ex height in \meta{size}. We can use the listing itself for estimating.
+% 
+% \begin{itemize}
+% \item From ``\textsc{Dei}, qualis sit, aut'' (``Salvat'' at right) to ``\textsc{Hominis}, qualis sit'' (``Sperans'' at right), put in the \cmd{\Schema} with ``Subjectum \& summa\dots''.
+% \VerbatimInput[gobble=0,lastline=1]{\jobname.tmp}
 %
-% 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}
+% \item From ``\textsc{Per se}: scilicet'' (``Unus'' at right) to ``Ad hominem quem vel'' (``Sanctificat'' at right), put in the \cmd{\Schema} with ``\textsc{Dei}, qualis sit, aut''.
+% \VerbatimInput[gobble=0,firstline=10,lastline=10]{\jobname.tmp}
 %
+% \item From ``\textsc{Per se}'' (``Renovationem'' at right) to ``Ad'' (``\textsc{ad Vitam}'' at right), put in the \cmd{\Schema} with ``Ad hominem quem vel''.
+% \VerbatimInput[gobble=0,firstline=34,lastline=34]{\jobname.tmp}
+%
+% \item From ``Ante lapsum'' to ``Post lapsum'', put in the \cmd{\Schema} with ``\textsc{Per se}''.
+% \VerbatimInput[gobble=0,firstline=39,lastline=39]{\jobname.tmp}
+%
+% \item From ``\textsc{Deum}'' (``Non repugnans'' at right) to ``Proximum'' (``Cognationis'' at right), put in the \cmd{\Schema} with ``Ad''.
+% \VerbatimInput[gobble=0,firstline=52,lastline=52]{\jobname.tmp}
+%
+% \item From ``Amicum ratione vel'' (``Politic\ae{}'' at right) to ``Inimicum'', put in the \cmd{\Schema} with ``Proximum''.
+% \VerbatimInput[gobble=0,firstline=72,lastline=72]{\jobname.tmp}
+% \end{itemize}
+%
+% The following schema illustrates our ``ball park'' figures:
+%
 % \bgroup\small\begin{displaymath}
+% \input{\jobname.tmp}
+% \end{displaymath}\egroup\bigskip
+%
+% Finally 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. We also adjust the final \meta{size} of the braces.
+% \begin{VerbatimOut}{\jobname.tmp}
 % \Schema{-25ex}{20.6ex}
 % {
 %   \schemabox{Subjectum \&\\
@@ -1796,124 +1744,186 @@
 %     }
 %   }
 % }
-%\end{displaymath}\egroup
+% \end{VerbatimOut}
 %
-% \subsubsection[Big Groups]{Big Schema with Groups}
+% \begin{quote}
+% \VerbatimInput[gobble=0,lastline=1]{\jobname.tmp}
 %
-% The next example illustrates everything tha we have covered so far, plus \cmd{\DoGroups}, all inside a local scope:\bigskip
+% \VerbatimInput[gobble=0,firstline=10,lastline=10]{\jobname.tmp}
 %
+% \VerbatimInput[gobble=0,firstline=34,lastline=34]{\jobname.tmp}
+%
+% \VerbatimInput[gobble=0,firstline=39,lastline=39]{\jobname.tmp}
+%
+% \VerbatimInput[gobble=0,firstline=52,lastline=52]{\jobname.tmp}
+%
+% \VerbatimInput[gobble=0,firstline=72,lastline=72]{\jobname.tmp}
+% \end{quote}
+%
+% \bgroup\small\begin{displaymath}
+% \input{\jobname.tmp}
+% \end{displaymath}\egroup
+% \newpage
+%
+% Here is the final listing for our schema:
+%
+% \begin{quote}
+% \VerbatimInput[gobble=0,lastline=51]{\jobname.tmp}
+% \newpage
+%
+% \VerbatimInput[gobble=0,firstline=52]{\jobname.tmp}
+% \end{quote}
+%
+% \subsubsection{Another example}
+%
+% We use \cmd{\DoGroups} in a local scope for this next schema. The listing illustrates a more extensive use of spacing. The macro \cmd{\gk} uses \textsf{babel} to create Greek text. The version of \cmd{\gk} in \texttt{schematest.tex} can use either \textsf{babel} or \textsf{polyglossia} to create Greek text, or it can just show a transliteration. In this listing we do not break each line following the macro \cmd{\\} in a \cmd{\schemabox}.
+%
+% \begin{VerbatimOut}{\jobname.tmp}
+% \DoGroups
+% \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{\gk{logik~hs}, 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}
+%         }
+%       }\vskip 2ex
+%     }
+%   }
+% }
+% \end{VerbatimOut}
+%
+% \begin{quote}
+% \VerbatimInput[gobble=0,lastline=5]{\jobname.tmp}
+% \newpage
+%
+% \VerbatimInput[gobble=0,firstline=6,lastline=61]{\jobname.tmp}
+% \newpage
+%
+% \VerbatimInput[gobble=0,firstline=62,lastline=114]{\jobname.tmp}
+% \newpage
+%
+% \VerbatimInput[gobble=0,firstline=115]{\jobname.tmp}
+% \end{quote}
+%
 % \bgroup\footnotesize\begin{displaymath}
-% \DoGroups%
-%\Schema{-27ex}{21.5ex}
-%{
-%  \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{\gk{λογικῆς}{logik~hs}, 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
-%    }
-%  }
-%}
-%\end{displaymath}\egroup
+% \input{\jobname.tmp}
+% \end{displaymath}\egroup
+% \newpage
 %
 % \subsubsection[Open and Closed]{Open and Closed Schemata}
+% \label{sec:OpenClose}
 %
 % 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
@@ -1925,6 +1935,7 @@
 % \hbox{}\quad\{\textrm{\meta{$right_2$}}\}\\
 % \}
 % \end{quote}
+%
 % \newbox\mybox
 % \def\Box#1{%^^A
 %   \setbox\mybox=\hbox{\vrule\vbox{\hrule%^^A
@@ -1935,24 +1946,48 @@
 %   \hbox{\vrule\vbox to \dimen0{\hrule%^^A
 %     \vfil\hbox{{\Large\strut}\space #1\space}%^^A
 %     \vfil\hrule}\vrule}}
+% Perhaps we can better illustrate this nesting by using a modified version of the \cmd{\Box} macro from above:
 %
-% \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{displaymath}
+% \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{displaymath}\medskip
 %
+% Here is another, more complex example:\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
+% \begin{Verbatim}
+% \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}}
+%           }
+%         }
+%       }
 %     }
-% \end{quote}\medskip
+%     {\Box{e}}
+%   }
+% }
+% \end{Verbatim}
+% \end{quote}
 %
-%  Here is another, more complex example:\medskip
-%
 % \begin{displaymath}
 % \Schema{0ex}{6ex}
 % {\Box{a}}
@@ -1975,221 +2010,114 @@
 %     {\Box{e}}
 %   }
 % }
-% \end{displaymath}\medskip
+% \end{displaymath}
 %
-% \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
+% Now we move on to another example from the \textit{Loci}. As above, one must use \cmd{\Schema} to prevent the opening braces from being slightly larger than the closing braces. First we show the schema, then we show the listing.
 %
-% 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}
+% \begin{VerbatimOut}{\jobname.tmp}
 % \Schema{-1.4ex}{10ex}
+% {\schemabox{Qu\ae{} sit\\ \textsc{Dei}, vel}}
 % {
-%   \schemabox{Qu\ae{} sit\\ \textsc{Dei}, vel}
-% }
-% {
 %   \Schema{-1ex}{5ex}
+%   {\schemabox{\textsc{Essentia}, in}}
 %   {
-%     \schemabox{\textsc{Essentia}, in}
-%   }
-%   {
 %     \vskip1ex\schemabox{Unitate divina,}
 %     \medskip
 %     \Schema{0ex}{3.4ex}
+%     {\schemabox{Tribus perso-\\ nis divinitatis}}
 %     {
-%       \schemabox{Tribus perso-\\ nis divinitatis}
-%     }
-%     {
 %       \Schema[close]{0ex}{3.4ex}
-%       {
-%         \NudgeSB\schemabox{Patre,\\ Filio,\\ Spiritui Sancto}
-%       }
-%       {
-%         \schemabox{\gk{ὀμοουσίοις}{<omoous'iois}\\ \& co\ae{}ternis}
-%       }
+%       {\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}}
 %   {
-%     \schemabox{\textsc{Voluntas},\\ revelatur in\\ actione, sive}
-%   }
-%   {
 %     \Schema{0ex}{3.4ex}
+%     {\schemabox{Universali}}
 %     {
-%       \schemabox{Universali}
-%     }
-%     {
 %       \Schema[close]{0ex}{3.4ex}
-%       {
-%         \schemabox{Creationis,\\Sustenationis,\\ Propagationis,}
-%       }
-%       {
-%         \schemabox{rerum creatarum.}
-%       }
+%       {\schemabox{Creationis,\\ Sustenationis,\\ Propagationis,}}
+%       {\schemabox{rerum creatarum.}}
 %     }
 %     \medskip
 %     \schema
-%     {
-%       \schemabox{Speciali, in beneficiis\\ erga Ecclesiam, eam}
-%     }
-%     {
-%       \schemabox{Colligendo.\\ Justificando.\\
-%       Conservando.\\ Glorificando.}
-%     }
+%     {\schemabox{Speciali, in beneficiis\\ erga Ecclesiam, eam}}
+%     {\schemabox{Colligendo.\\ Justificando.\\
+%      Conservando.\\ Glorificando.}}
 %   }
 % }
-% \end{displaymath}\egroup\smallskip
+% \end{VerbatimOut}
 %
-% This listing of the example above illustrates closed schemata. The macro \cmd{\gk} uses either \textsf{polyglossia} or \textsf{babel}. We cannot show Unicode Greek text in the verbatim environment; we substitute \texttt{xxxxx} for \gk{ὀμοουσίοις}{<omoous'iois}.
+% The macro \cmd{\gk} uses \textsf{babel}. The version included in \texttt{schematest.tex} can use \textsf{babel}, \textsf{polyglossia} or just transliterated 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{xxxxx}{<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}
+% \begin{quote}
+% \VerbatimInput[gobble=0]{\jobname.tmp}
 % \end{quote}
+%
+% \bgroup\small\begin{displaymath}
+% \input{\jobname.tmp}
+% \end{displaymath}\egroup
 % \newpage
 %
-% \subsection{Final features}
+% \subsection{Fixed-Width Boxes}
 % \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}.
 %
-% \bgroup\small\begin{displaymath}
-% \Schema{-0.2ex}{14.4ex}
+% \begin{VerbatimOut}{\jobname.tmp}
+% \Schema{0ex}{15ex}
 % {\schemabox{\bfseries Curricula\\\bfseries Texts}}
 % {
 %   \DoBrackets%
-%^^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}}
-%     {\schemabox{1. Collected Works\\2. Encyclopedias}}
-%   \smallskip
+%     {\schemabox[\dimen0]
+%       {\bfseries I. General\\Studies}}
+%     {\NudgeSB[before]%
+%      \schemabox
+%       {1. Collected Works\\
+%        2. Encyclopedias}}
+%   \medskip
 %   \schema
-%     {\schemabox[\dimen0]{\bfseries II. Literary\\Disciplines}}
-%     {\schemabox{1. Philology\\
-%      2. Historical Introduction\\
-%      3. Literary Theory\\
-%      4. Application}}
-%   \smallskip
+%     {\schemabox[\dimen0]
+%       {\bfseries II. Literary\\Disciplines}}
+%     {\NudgeSB[before]%
+%      \schemabox{1. Philology\\
+%        2. Historical Introduction\\
+%        3. Literary Theory\\
+%        4. Application}}
+%   \medskip
 %   \schema
-%       {\schemabox[\dimen0]{\bfseries III. Philosophical\\Disciplines}}
-%       {\schemabox{1. Source Texts\\
-%        2. History of Philosophy\\
-%        3. General Surveys\\
-%        4. Specific Studies}}
-%   \smallskip
+%       {\schemabox[\dimen0]
+%         {\bfseries III. Philosophical\\Disciplines}}
+%       {\NudgeSB[before]%
+%        \schemabox{1. Source Texts\\
+%          2. History of Philosophy\\
+%          3. General Surveys\\
+%          4. Specific Studies}}
+%   \medskip
 %   \schema
-%       {\schemabox[\dimen0]{\bfseries IV. Historical\\Disciplines}}
-%       {\schemabox{1. General Surveys\\
-%        2. Specialized Works}}
+%       {\schemabox[\dimen0]
+%         {\bfseries IV. Historical\\Disciplines}}
+%       {\NudgeSB[before]%
+%         \schemabox{1. General Surveys\\
+%         2. Specialized Works}}
 % }
-%\end{displaymath}\egroup
+% \end{VerbatimOut}
 %
-% \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}
+% This final example illustrates using \cmd{\schemabox} with a fixed width. We have defined \cmd{\mybox} elsewhere with \cmd{\newbox}. Bear in mind that \cmd{\newbox} is an outer macro in \PlainTeX.
+%
+% \begin{quote}
+% \VerbatimInput[gobble=0]{\jobname.tmp}
 % \end{quote}
 % \newpage
 %
+% \bgroup\begin{displaymath}
+% \input{\jobname.tmp}
+% \end{displaymath}\egroup
+%
 %\StopEventually{^^A
 %  \newgeometry{textwidth=160mm,textheight=237mm,right=25mm}
 %  \PrintChanges\newpage\PrintIndex
@@ -2199,32 +2127,31 @@
 % \fi
 %
 % \section{Implementation}
-% \small
 %
-% Shorter macros are written in both \LaTeX\ and generic \TeX. Longer macros implement both a \LaTeX\ and a generic front end with a common back end.
+% Shorter macros are written entirely in both \LaTeX\ and \TeX. Longer macros implement both a \LaTeX\ front end and a generic front end with a common \TeX\ back end. If the format is \texttt{LaTeX2e} then the macros use the \LaTeXe{} front end. Otherwise they use generic \TeX, meaning \PlainTeX, eplain, and Lollipop\,---\,maybe others too, but they are not supported.
 %
-% If the format is ``LaTeX2e'' then the macros use the \LaTeXe{} front end. Otherwise they use generic \TeX, meaning \PlainTeX, eplain, and Lollipop\,---\,maybe others too, but they are not supported.
+%In order to support the largest diversity of formats and \TeX\ engines, we avoid newer primitives like  \cmd{\unless} and \texttt{\textbackslash ifdefined}. Thus, we must revert to the ``old'' way of testing whether or not a macro is defined.
 %
-%In order to support such a diversity of formats and \TeX\ engines, we must avoid newer primitives like  \cmd{\unless} and \texttt{\textbackslash ifdefined}. Thus, we must revert to the ``old'' way of testing whether or not a macro is defined.
-%
 % \begin{macro}{\schemataLaTeX}
 % \changes{1.0}{2020/03/13}{Added format-specific features}
 % \changes{1.3}{2020/03/13}{Fix format detection bug}
 % Below we manually duplicate with verbatim material what we put early in the \texttt{dtx} file for the versioning information to work. The \cmd{\schemataLaTeX} macro normally is undefined until it is assigned the value of \texttt{LaTeX2e}, to be compared with \cmd{\fmtname}. If we are not using \LaTeXe, we do the equivalent of \cmd{\makeatletter} in either \PlainTeX\ or eplain.\medskip
 %
-% \bgroup\footnotesize\obeylines
-% \leavevmode\llap{\hbox to 1em{\hfill\scriptsize 1}\ \ }\verb+%<package>\expandafter\ifx \csname schemataLaTeX\endcsname\relax+
-% \leavevmode\llap{\hbox to 1em{\hfill\scriptsize 2}\ \ }\verb+%<package>  \def\schemataLaTeX{LaTeX2e}\fi+
-% \leavevmode\llap{\hbox to 1em{\hfill\scriptsize 3}\ \ }\verb+%<package>\ifx\fmtname\schemataLaTeX+
-% \leavevmode\llap{\hbox to 1em{\hfill\scriptsize 4}\ \ }\verb+%<package>\expandafter\NeedsTeXFormat\expandafter{\schemataLaTeX}[2005/12/01]+
-% \leavevmode\llap{\hbox to 1em{\hfill\scriptsize 5}\ \ }\verb+%<package>\ProvidesPackage{schemata}+
-% \leavevmode\llap{\hbox to 1em{\hfill\scriptsize 6}\ \ }\verb+%<*package>+
-% \leavevmode\llap{\hbox to 1em{\hfill\scriptsize 7}\ \ }\verb+  [2021/02/27 1.4 generic package to aid construction of topical categories]+
-% \leavevmode\llap{\hbox to 1em{\hfill\scriptsize 8}\ \ }\verb+%</package>+
-% \leavevmode\llap{\hbox to 1em{\hfill\scriptsize 9}\ \ }\verb+%<package>\else+
-% \leavevmode\llap{\hbox to 1em{\hfill\scriptsize 10}\ \ }\verb+%<package>\catcode`@=11\relax+
-% \leavevmode\llap{\hbox to 1em{\hfill\scriptsize 11}\ \ }\verb+%<package>\fi+
-% \egroup
+% \begin{quote}
+% \begin{Verbatim}[fontsize=\footnotesize]
+% %<package>\expandafter\ifx \csname schemataLaTeX\endcsname\relax
+% %<package>  \def\schemataLaTeX{LaTeX2e}\fi
+% %<package>\ifx\fmtname\schemataLaTeX
+% %<package>\expandafter\NeedsTeXFormat\expandafter{\schemataLaTeX}[2005/12/01]
+% %<package>\ProvidesPackage{schemata}
+% %<*package>
+%   [2025/08/27 1.5 generic package to aid construction of topical categories]
+% %</package>
+% %<package>\else
+% %<package>\catcode`@=11\relax
+% %<package>\fi
+% \end{Verbatim}
+% \end{quote}
 % \end{macro}
 % \makeatletter\advance\c at CodelineNo by 11\makeatother
 %
@@ -2232,7 +2159,7 @@
 %
 % \begin{macro}{\@schemata at LaTeX}
 % \changes{1.3}{2020/12/02}{Added}
-% We declare the internal macro \cmd{\@schemata at LaTeX} to be the value of \cmd{\schemataLaTeX} to safeguard package operation. From this point onward we can display or query \cmd{\schemataLaTeX} for user-side tests without affecting package internals.
+% We declare the macro \cmd{\@schemata at LaTeX} to be the value of \cmd{\schemataLaTeX} to safeguard package operation. From this point onward we can display or query \cmd{\schemataLaTeX} for user-side tests without affecting package internals.
 %
 %    \begin{macrocode}
 \edef\@schemata at LaTeX{\schemataLaTeX}
@@ -2239,8 +2166,6 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \changes{0.8}{2016/01/25}{Rename box/dimen registers}
-% \changes{1.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. Three more dimen registers are for scratchwork.
 %
 %    \begin{macrocode}
@@ -2253,8 +2178,6 @@
 \newdimen\@schemata at three%
 %    \end{macrocode}
 %
-% \changes{0.6}{2013/03/10}{Added UC/LC tweaks.}
-% \changes{0.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}
@@ -2262,18 +2185,16 @@
 \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).
+% These Boolean flags determine if a kern should be added to the beginning or the end of each line in a \cmd{\schemabox} (helps with closed braces and certain delimiters).
 %
 %    \begin{macrocode}
-\newif\if at schemata@NudgeBox%
+\newif\if at schemata@LNudge%
+\newif\if at schemata@RNudge%
 %    \end{macrocode}
-% \newpage
 %
 % \subsection{Package Options}
 %
-% \changes{0.6}{2013/03/10}{Added brackets and parens as well as braces}
-% \changes{1.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. 
+% We set braces to be the default set of delimiters. Apart from \LaTeXe{} we ignore the options. Four options are implemented, namely, \texttt{braces} (the default), \texttt{brackets}, \texttt{parens}, and \texttt{groups}. Since the options are used infrequently, we naively process them in whatever order we get, each overwriting the last. 
 %
 %    \begin{macrocode}
 \ifx\fmtname\@schemata at LaTeX
@@ -2296,12 +2217,13 @@
   \let\@schemata at RD\rbrace%
 \fi
 %    \end{macrocode}
+% \newpage
 %
 % \subsection {Macros}
 %
 % \begin{macro}{\DoBraces}
 % \changes{0.6}{2013/03/10}{Added macro}
-% \changes{1.0}{2020/03/13}{ensure short}
+% \changes{1.0}{2020/03/13}{Ensure short macro}
 % Set the delimiters to be braces. This is local to a scope, including within a schema.
 %
 %    \begin{macrocode}
@@ -2319,7 +2241,7 @@
 %
 % \begin{macro}{\DoBrackets}
 % \changes{0.6}{2013/03/10}{Added macro}
-% \changes{1.0}{2020/03/13}{ensure short}
+% \changes{1.0}{2020/03/13}{Ensure short macro}
 % Set the delimiters to be brackets. This is local, as above.
 %
 %    \begin{macrocode}
@@ -2337,7 +2259,7 @@
 %
 % \begin{macro}{\DoParens}
 % \changes{0.6}{2013/03/10}{Added macro}
-% \changes{1.0}{2020/03/13}{ensure short}
+% \changes{1.0}{2020/03/13}{Ensure short macro}
 % Set the delimiters to be parentheses. This is local, as above.
 %
 %    \begin{macrocode}
@@ -2372,7 +2294,7 @@
 %
 % \begin{macro}{\LCschema}
 % \changes{0.6}{2013/03/10}{Added macro}
-% \changes{1.0}{2020/03/13}{ensure short}
+% \changes{1.0}{2020/03/13}{Ensure short macro}
 % Prevent \cmd{\schemabox} from adding a \cmd{\strut} in the first line.
 %
 %    \begin{macrocode}
@@ -2386,7 +2308,7 @@
 %
 % \begin{macro}{\UCschema}
 % \changes{0.6}{2013/03/10}{Added macro}
-% \changes{1.0}{2020/03/13}{ensure short}
+% \changes{1.0}{2020/03/13}{Ensure short macro}
 % Permit \cmd{\schemabox} to add a \cmd{\strut} in the first line (default).
 %
 %    \begin{macrocode}
@@ -2400,7 +2322,7 @@
 %
 % \begin{macro}{\SwitchSB}
 % \changes{0.6}{2013/03/10}{Added macro}
-% \changes{1.0}{2020/03/13}{ensure short}
+% \changes{1.0}{2020/03/13}{Ensure short macro}
 % Flip the UC/LC settings for one \cmd{\schemabox}, which will reset this value on exit.
 %
 %    \begin{macrocode}
@@ -2414,16 +2336,38 @@
 %
 % \begin{macro}{\NudgeSB}
 % \changes{0.8}{2016/01/25}{Added macro}
-% \changes{1.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}.
+% \changes{1.0}{2020/03/13}{Ensure short macro}
+% \changes{1.5}{2025/08/27}{Select kerns for left or right}
+% Add a kern to the beginning or the end (or both, if invoked twice) of each line in one \cmd{\schemabox}. This will be reset on exit from that \cmd{\schemabox}. First comes the front end:
 %
 %    \begin{macrocode}
 \ifx\fmtname\@schemata at LaTeX
-  \newcommand*{\NudgeSB}{\@schemata at NudgeBoxtrue}
+  \newcommand*{\NudgeSB}[1][right]{\@schemata at NudgeSB[#1]}
 \else
-  \def\NudgeSB{\@schemata at NudgeBoxtrue}
+  \def\NudgeSB{\futurelet\@schemata at testchar\@schemata at N@dgeSB}
+  \def\@schemata at N@dgeSB{%
+    \ifx[\@schemata at testchar
+      \let\next\@schemata at NudgeSB%
+    \else
+      \let\next\@schemata@@NudgeSB%
+    \fi
+    \next%
+  }%
+  \def\@schemata@@NudgeSB{\@schemata at NudgeSB[right]}
 \fi
 %    \end{macrocode}
+% Next comes the common back end:
+%    \begin{macrocode}
+\def\@schemata at NudgeSB[#1]{%
+  \edef\@schemata at NudgeTest{#1}%
+  \def\@schemata at NudgeDefault{right}%
+  \ifx\@schemata at NudgeTest\@schemata at NudgeDefault
+    \@schemata at RNudgetrue%
+  \else
+    \@schemata at LNudgetrue%
+  \fi
+}
+%    \end{macrocode}
 % \end{macro}
 %
 % \begin{macro}{\SBNudgeFactor}
@@ -2445,7 +2389,8 @@
 % \changes{0.8}{2016/01/25}{Added nudge feature; fix errors when not in internal vertical mode}
 % \changes{1.0}{2020/03/13}{Create front- and back-end; ensure short}
 % \changes{1.2}{2020/11/23}{Fix namespace}
-%  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.
+% \changes{1.5}{2025/08/27}{Add kerns on left, right, or both}
+%  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. Add kerns as directed by \cmd{\NudgeSB}. When in any other mode, just display the second argument as text. First is the front end:
 %
 %    \begin{macrocode}
 \ifx\fmtname\@schemata at LaTeX
@@ -2462,6 +2407,9 @@
   }%
   \def\@schemata@@schemab at x#1{\@schemata at schemabox[0pt]{#1}}
 \fi
+%    \end{macrocode}
+% Next comes the common back end:
+%    \begin{macrocode}
 \def\@schemata at schemabox[#1]#2{%
   \ifinner
     \if at schemata@LCBox
@@ -2471,40 +2419,48 @@
       \def\@schemata at Adj{\strut}%
       \if at schemata@SWBox\def\@schemata at Adj{}\fi
     \fi
-    \if at schemata@NudgeBox
-      \let\@schemata at Nudge\SBNudgeFactor%
+    \if at schemata@RNudge
+      \let\@schemata at NudgeR\SBNudgeFactor%
     \else
-      \def\@schemata at Nudge{}%
+      \def\@schemata at NudgeR{}%
     \fi
+    \if at schemata@LNudge
+      \let\@schemata at NudgeL\SBNudgeFactor%
+    \else
+      \def\@schemata at NudgeL{}%
+    \fi
     \ifdim#1<1pt
-      \def\\{\@schemata at Nudge\egroup\hbox\bgroup\ignorespaces }%
+      \def\\{\@schemata at NudgeR\egroup%
+        \hbox\bgroup\@schemata at NudgeL\ignorespaces }%
       \vbox{\hbox\bgroup%
-        \@schemata at Adj\ignorespaces #2\@schemata at Nudge%
-        \egroup}%
+        \@schemata at Adj\@schemata at NudgeL\ignorespaces #2%
+        \@schemata at NudgeR\egroup}%
     \else
-      \def\\{\hfil\egroup\hbox to #1\bgroup\ignorespaces }%
+      \def\\{\hfil\egroup%
+        \hbox to #1\bgroup\@schemata at NudgeL\ignorespaces }%
       \vbox{\hbox to #1\bgroup%
-      \@schemata at Adj\ignorespaces #2\hfil%
-      \egroup}%
+        \@schemata at Adj\@schemata at NudgeL\ignorespaces #2%
+        \hfil\egroup}%
     \fi
   \else
     #2%
   \fi
   \@schemata at SWBoxfalse%
-  \@schemata at NudgeBoxfalse%
+  \@schemata at RNudgefalse%
+  \@schemata at LNudgefalse%
 }
 %    \end{macrocode}
 % \end{macro}
-% \newpage
 %
 % \begin{macro}{\schema}
-% \changes{1.0}{2020/03/13}{create front- and back-end; ensure long}
+% \changes{1.0}{2020/03/13}{Create front- and back-end; ensure long}
 % \changes{1.2}{2020/11/23}{Fix namespace}
+% \changes{1.5}{2025/08/27}{Better arg check}
 % 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.
+% 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. First is the front end:
 %
 %    \begin{macrocode}
 \ifx\fmtname\@schemata at LaTeX
@@ -2523,8 +2479,12 @@
   \long\def\@schemata@@schem@#1#2{%
     \@schemata at schema[open]{#1}{#2}}
 \fi
+%    \end{macrocode}
+% Next comes the common back end:
+%    \begin{macrocode}
 \long\def\@schemata at schema[#1]#2#3{%
-  \def\@schemata at option{#1}\def\@schemata at open{open}%
+  \edef\@schemata at option{#1}%
+  \def\@schemata at open{open}%
   \ifx\@schemata at option\@schemata at open
     \setbox\@schemata at rhs=\vbox{#3}%
     \@schemata at rheight=\ht\@schemata at rhs%
@@ -2545,12 +2505,12 @@
 }
 %    \end{macrocode}
 % \end{macro}
-% \newpage
 %
 % \begin{macro}{\Schema}
-% \changes{1.0}{2020/03/13}{create front- and back-end; ensure long}
+% \changes{1.0}{2020/03/13}{Create front- and back-end; ensure long}
 % \changes{1.2}{2020/11/23}{Fix namespace}
-% 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}.
+% \changes{1.5}{2025/08/27}{Better arg check}
+% 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}. First is the front end:
 %
 %    \begin{macrocode}
 \ifx\fmtname\@schemata at LaTeX
@@ -2569,8 +2529,11 @@
   \long\def\@schemata@@Schem@#1#2#3#4{%
     \@schemata at Schema[open]{#1}{#2}{#3}{#4}}
 \fi
+%    \end{macrocode}
+% Next comes the common back end:
+%    \begin{macrocode}
 \long\def\@schemata at Schema[#1]#2#3#4#5{%
-  \def\@schemata at option{#1}%
+  \edef\@schemata at option{#1}%
   \def\@schemata at open{open}%
   \@schemata at one=#2%
   \ifx\@schemata at option\@schemata at open
@@ -2586,7 +2549,7 @@
 %
 % \begin{macro}{\@schemata at lbrace}
 % \changes{0.8}{2016/01/25}{Renamed}
-% \changes{1.0}{2020/03/13}{ensure short}
+% \changes{1.0}{2020/03/13}{Ensure short macro}
 % Draw an on-center delimiter to the left of a simple box.
 %
 %    \begin{macrocode}
@@ -2609,7 +2572,7 @@
 %
 % \begin{macro}{\@schemata at rbrace}
 % \changes{0.8}{2016/01/25}{Renamed}
-% \changes{1.0}{2020/03/13}{ensure short}
+% \changes{1.0}{2020/03/13}{Ensure short macro}
 % Draw an on-center delimiter to the right of a simple box.
 %
 %    \begin{macrocode}
@@ -2631,8 +2594,8 @@
 %
 % \begin{macro}{\@schemata at biglbrace}
 % \changes{0.8}{2016/01/25}{Renamed; use absolute value of brace size}
-% \changes{1.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.
+% \changes{1.0}{2020/03/13}{Ensure short; 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. First is the front end:
 %
 %    \begin{macrocode}
 \ifx\fmtname\@schemata at LaTeX
@@ -2642,6 +2605,9 @@
   \def\@schemata at biglbrace#1#2{%
     \@schemata@@biglbrace{#1}{#2}}
 \fi
+%    \end{macrocode}
+% Next comes the common back end:
+%    \begin{macrocode}
 \def\@schemata@@biglbrace#1#2{%
   \@schemata at one=#1%
   \@schemata at two=#2%
@@ -2662,12 +2628,11 @@
 }
 %    \end{macrocode}
 % \end{macro}
-% \newpage
 %
 % \begin{macro}{\@schemata at bigrbrace}
 % \changes{0.8}{2016/01/25}{Renamed; Use absolute value of brace size}
-% \changes{1.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.
+% \changes{1.0}{2020/03/13}{Ensure short; 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.  First is the front end:
 %
 %    \begin{macrocode}
 \ifx\fmtname\@schemata at LaTeX
@@ -2679,6 +2644,9 @@
     \@schemata@@bigrbrace{#1}{#2}%
   }
 \fi
+%    \end{macrocode}
+% Next comes the common back end:
+%    \begin{macrocode}
 \def\@schemata@@bigrbrace#1#2{%
   \@schemata at one=#1%
   \@schemata at two=#2%
@@ -2738,6 +2706,7 @@
   \usepackage[braces]{schemata}[2021/02/27]
   \begin{document}
 \else
+  \def\bfseries{\bf}
   \ifx\fmtname\nameoflollipop
     \input schemata.sty
     \font\scshape=cmcsc10
@@ -2777,10 +2746,11 @@
 
 Due to restrictions for dealing with so many formats,\par
 Greek character text will appear with:\par
-\ \kern 1em pdflatex / latex (babel)\par
-\ \kern 1em xelatex / lualatex (polyglossia)\par
+\ \kern 1em pdflatex / latex (babel, converted Latin characters)\par
+\ \kern 1em xelatex / lualatex (polyglossia, native Greek text)\par
 All other formats will have transliterated text instead of Greek.\par
 \vfil
+
 $$
 \Schema{-1ex}{8.7ex}
 {
@@ -2818,11 +2788,13 @@
   }
 }
 $$
+
 \vfil
 \eject
 
 \hbox{\ }
 \vfil
+
 $$
 \Schema{-25ex}{20.6ex}
 {
@@ -2912,6 +2884,7 @@
   }
 }
 $$
+
 \vfil
 \eject
 
@@ -2919,10 +2892,14 @@
 {\tt\char`\\ DoParens}\DoParens
 \hbox{\ }
 \vfil
+
 $$
 \Schema{-26ex}{21.5ex}
 {
-  \schemabox{Sacr\ae{}\\ litter\ae{}\\ loquuntur,\\ de}
+  \schemabox{Sacr\ae{}\\
+  litter\ae{}\\
+  loquuntur,\\
+  de}
 }
 {
   \schema
@@ -2930,30 +2907,47 @@
     \schemabox{\textsc{Deo}}
   }
   {
-    \schemabox{Uno, in Trinitate.}\smallskip\schemabox{Trino, in unitate.}
+    \schemabox{Uno, in Trinitate.}\smallskip
+    \schemabox{Trino, in unitate.}
   }
   \Schema{-16.5ex}{23.4ex}
   {
     \vskip30ex
-    \schemabox{\textsc{Dei}\\ \textsc{Operibus}}
+    \schemabox{\textsc{Dei}\\
+    \textsc{Operibus}}
   }
   {
     \schema
     {
-      \schemabox{\textsc{Intra},\\ qu\ae{} sunt\\ divisa, ut}
+      \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.}
     }
     \medskip
     \Schema{-2ex}{21ex}
     {
-      \schemabox{\textsc{Extra},\\ qu\ae{} sunt\\ indivisa;\\ tervata\\ tamen\\ cujusque\\ person\ae{}\\ divinitatis\\ sua pro-\\prietate}
+      \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{}}
+        \schemabox{Creatione\\
+        natur\ae{}}
       }
       {
         \schema
@@ -2961,7 +2955,9 @@
           \schemabox{Brute ut}
         }
         {
-          \schemabox{C\oe{}li} \smallskip \schemabox{Elementorum} \smallskip \schemabox{Mundi}
+          \schemabox{C\oe{}li} \smallskip
+          \schemabox{Elementorum} \smallskip
+          \schemabox{Mundi}
         }
         \smallskip
         \schema
@@ -2969,19 +2965,29 @@
           \schemabox{\gk{λογικῆς}{logik~hs}{logik\=es}, ut}
         }
         {
-          \schemabox{Angelorum.} \smallskip \schemabox{Hominum: Ad\ae{},\\ Ev\ae{} \& procreatorum\\ exipsis.}
+          \schemabox{Angelorum.} \smallskip
+          \schemabox{Hominum: Ad\ae{},\\
+          Ev\ae{} \& procreatorum\\
+          exipsis.}
         }
       }
       \schema
       {
-        \schemabox{Sustenatione\\ natur\ae{} laps\ae{},}
+        \schemabox{Sustenatione\\
+        natur\ae{} laps\ae{},}
       }
       {
-        \schemabox{Angelorum malorum,} \smallskip \schemabox{Hominum: Ad\ae{}, Ev\ae{}\\ \& procreatorum exipsis.}
+        \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}
+        \schemabox{Beneficiis\\
+        erga Ecc-\\
+        lesiam: ea\\
+        versantur\\
+        aut circa}
       }
       {
         \Schema{2.2ex}{7ex}
@@ -2994,15 +3000,20 @@
             \schemabox{Verbum}
           }
           {
-            \schemabox{Legis} \smallskip \schemabox{Evangelii} \smallskip \schemabox{Sacramentorum}
+            \schemabox{Legis} \smallskip
+            \schemabox{Evangelii} \smallskip
+            \schemabox{Sacramentorum}
           }
           \smallskip
           \schema
           {
-            \schemabox{Signa vel Veteris\\ vel Novi Testa-\\ mentum ut sunt:}
+            \schemabox{Signa vel Veteris\\
+            vel Novi Testa-\\
+            mentum ut sunt:}
           }
           {
-            \schemabox{Ceremoni\ae{}} \smallskip \schemabox{Miracula}
+            \schemabox{Ceremoni\ae{}} \smallskip
+            \schemabox{Miracula}
           }
         }
         \smallskip
@@ -3016,7 +3027,8 @@
             \schemabox{Ecclesi\ae{}}
           }
           {
-            \schemabox{Universalis} \smallskip \schemabox{Particularis}
+            \schemabox{Universalis} \smallskip
+            \schemabox{Particularis}
           }
           \smallskip
           \schemabox{Politi\ae, ut Magistratuum}
@@ -3028,6 +3040,7 @@
   }
 }
 $$
+
 \vfil
 \eject
 
@@ -3034,6 +3047,7 @@
 {\tt\char`\\ DoGroups}\DoGroups
 \hbox{\ }
 \vfil
+
 $$
 \Schema{-26.5ex}{21ex}
 {
@@ -3143,6 +3157,7 @@
   }
 }
 $$
+
 \vfil
 \egroup
 \eject
@@ -3149,6 +3164,7 @@
 
 \hbox{\ }
 \vfil
+
 $$
 \Schema{-1.4ex}{10ex}
 {
@@ -3209,57 +3225,57 @@
 $$
 
 \vfil
-\eject
+% Use here especially in Plain TeX and the like.
+\newbox\mybox
 
-\hbox{\ }
-\vfil
-% Use here in Plain TeX.
-\newbox\mybox
 $$
-\Schema{-0.2ex}{14.4ex}
-{\schemabox{\bf Curricula\\\bf Texts}}
+\Schema{0ex}{15ex}
+{\schemabox{\bfseries Curricula\\\bfseries Texts}}
 {
   \DoBrackets%
-  % Doable in LaTeX, not in Plain TeX, because \outer.
-  % \newbox\mybox%
-  \setbox\mybox=\hbox{\bf III. Philosophical }%
+  \setbox\mybox=\hbox{\bfseries III. Philosophical }%
   \dimen0=\wd\mybox%
   \schema
-    {\schemabox[\dimen0]{\bf I. General\\Studies}}
-    {\schemabox{1. Collected Works\\2. Encyclopedias}}
-  \smallskip
+    {\schemabox[\dimen0]
+      {\bfseries I. General\\Studies}}
+    {\NudgeSB[before]%
+     \schemabox
+      {1. Collected Works\\
+       2. Encyclopedias}}
+  \medskip
   \schema
-    {\schemabox[\dimen0]{\bf II. Literary\\Disciplines}}
-    {\schemabox{1. Philology\\
-     2. Historical Introduction\\
-     3. Literary Theory\\
-     4. Application}}
-  \smallskip
+    {\schemabox[\dimen0]
+      {\bfseries II. Literary\\Disciplines}}
+    {\NudgeSB[before]%
+     \schemabox{1. Philology\\
+       2. Historical Introduction\\
+       3. Literary Theory\\
+       4. Application}}
+  \medskip
   \schema
-      {\schemabox[\dimen0]{\bf III. Philosophical\\Disciplines}}
-      {\schemabox{1. Source Texts\\
-       2. History of Philosophy\\
-       3. General Surveys\\
-       4. Specific Studies}}
-  \smallskip
+      {\schemabox[\dimen0]
+        {\bfseries III. Philosophical\\Disciplines}}
+      {\NudgeSB[before]%
+       \schemabox{1. Source Texts\\
+         2. History of Philosophy\\
+         3. General Surveys\\
+         4. Specific Studies}}
+  \medskip
   \schema
-      {\schemabox[\dimen0]{\bf IV. Historical\\Disciplines}}
-      {\schemabox{1. General Surveys\\
-       2. Specialized Works}}
+      {\schemabox[\dimen0]
+        {\bfseries IV. Historical\\Disciplines}}
+      {\NudgeSB[before]%
+        \schemabox{1. General Surveys\\
+        2. Specialized Works}}
 }
 $$
+
 \vfil
 \eject
 
-\ifx\fmtname\nameoflatex
-  \end{document}
-\else
-  \ifx\fmtname\nameoflollipop
-    \Stop
-  \else
-    \bye
-  \fi
-\fi
+\ifx\fmtname\nameoflatex \end{document} \fi
+\ifx\fmtname\nameoflollipop \Stop \fi
+\bye
 %examplesvb
 %</examples>
 \endinput

Modified: trunk/Master/texmf-dist/tex/generic/schemata/schemata.sty
===================================================================
--- trunk/Master/texmf-dist/tex/generic/schemata/schemata.sty	2025-08-29 14:03:15 UTC (rev 76177)
+++ trunk/Master/texmf-dist/tex/generic/schemata/schemata.sty	2025-08-29 14:03:28 UTC (rev 76178)
@@ -8,7 +8,7 @@
 %% 
 %% This is a generated file.
 %% 
-%% Copyright (C) 2021 by Charles P. Schaum <charles[dot]schaum at comcast.net>
+%% Copyright (C) 2025 by Charles P. Schaum <charles[dot]schaum at comcast.net>
 %% 
 %% This file may be distributed and/or modified under the conditions of
 %% the LaTeX Project Public License, either version 1.3 of this license
@@ -25,7 +25,7 @@
 \ifx\fmtname\schemataLaTeX
 \expandafter\NeedsTeXFormat\expandafter{\schemataLaTeX}[2005/12/01]
 \ProvidesPackage{schemata}
-  [2021/02/27 1.4 generic package to aid construction of topical categories]
+  [2025/08/27 1.5 generic package to aid construction of topical categories]
 \else
 \catcode`@=11\relax
 \fi
@@ -39,7 +39,8 @@
 \newdimen\@schemata at three%
 \newif\if at schemata@LCBox%
 \newif\if at schemata@SWBox%
-\newif\if at schemata@NudgeBox%
+\newif\if at schemata@LNudge%
+\newif\if at schemata@RNudge%
 \ifx\fmtname\@schemata at LaTeX
   \DeclareOption{braces}%
     {\let\@schemata at LD\lbrace%
@@ -111,10 +112,28 @@
   \def\SwitchSB{\@schemata at SWBoxtrue}
 \fi
 \ifx\fmtname\@schemata at LaTeX
-  \newcommand*{\NudgeSB}{\@schemata at NudgeBoxtrue}
+  \newcommand*{\NudgeSB}[1][right]{\@schemata at NudgeSB[#1]}
 \else
-  \def\NudgeSB{\@schemata at NudgeBoxtrue}
+  \def\NudgeSB{\futurelet\@schemata at testchar\@schemata at N@dgeSB}
+  \def\@schemata at N@dgeSB{%
+    \ifx[\@schemata at testchar
+      \let\next\@schemata at NudgeSB%
+    \else
+      \let\next\@schemata@@NudgeSB%
+    \fi
+    \next%
+  }%
+  \def\@schemata@@NudgeSB{\@schemata at NudgeSB[right]}
 \fi
+\def\@schemata at NudgeSB[#1]{%
+  \edef\@schemata at NudgeTest{#1}%
+  \def\@schemata at NudgeDefault{right}%
+  \ifx\@schemata at NudgeTest\@schemata at NudgeDefault
+    \@schemata at RNudgetrue%
+  \else
+    \@schemata at LNudgetrue%
+  \fi
+}
 \ifx\fmtname\@schemata at LaTeX
   \newcommand{\SBNudgeFactor}{\kern0.2em}
 \else
@@ -143,27 +162,35 @@
       \def\@schemata at Adj{\strut}%
       \if at schemata@SWBox\def\@schemata at Adj{}\fi
     \fi
-    \if at schemata@NudgeBox
-      \let\@schemata at Nudge\SBNudgeFactor%
+    \if at schemata@RNudge
+      \let\@schemata at NudgeR\SBNudgeFactor%
     \else
-      \def\@schemata at Nudge{}%
+      \def\@schemata at NudgeR{}%
     \fi
+    \if at schemata@LNudge
+      \let\@schemata at NudgeL\SBNudgeFactor%
+    \else
+      \def\@schemata at NudgeL{}%
+    \fi
     \ifdim#1<1pt
-      \def\\{\@schemata at Nudge\egroup\hbox\bgroup\ignorespaces }%
+      \def\\{\@schemata at NudgeR\egroup%
+        \hbox\bgroup\@schemata at NudgeL\ignorespaces }%
       \vbox{\hbox\bgroup%
-        \@schemata at Adj\ignorespaces #2\@schemata at Nudge%
-        \egroup}%
+        \@schemata at Adj\@schemata at NudgeL\ignorespaces #2%
+        \@schemata at NudgeR\egroup}%
     \else
-      \def\\{\hfil\egroup\hbox to #1\bgroup\ignorespaces }%
+      \def\\{\hfil\egroup%
+        \hbox to #1\bgroup\@schemata at NudgeL\ignorespaces }%
       \vbox{\hbox to #1\bgroup%
-      \@schemata at Adj\ignorespaces #2\hfil%
-      \egroup}%
+        \@schemata at Adj\@schemata at NudgeL\ignorespaces #2%
+        \hfil\egroup}%
     \fi
   \else
     #2%
   \fi
   \@schemata at SWBoxfalse%
-  \@schemata at NudgeBoxfalse%
+  \@schemata at RNudgefalse%
+  \@schemata at LNudgefalse%
 }
 \ifx\fmtname\@schemata at LaTeX
   \newcommand{\schema}[3][open]{%
@@ -182,7 +209,8 @@
     \@schemata at schema[open]{#1}{#2}}
 \fi
 \long\def\@schemata at schema[#1]#2#3{%
-  \def\@schemata at option{#1}\def\@schemata at open{open}%
+  \edef\@schemata at option{#1}%
+  \def\@schemata at open{open}%
   \ifx\@schemata at option\@schemata at open
     \setbox\@schemata at rhs=\vbox{#3}%
     \@schemata at rheight=\ht\@schemata at rhs%
@@ -218,7 +246,7 @@
     \@schemata at Schema[open]{#1}{#2}{#3}{#4}}
 \fi
 \long\def\@schemata at Schema[#1]#2#3#4#5{%
-  \def\@schemata at option{#1}%
+  \edef\@schemata at option{#1}%
   \def\@schemata at open{open}%
   \@schemata at one=#2%
   \ifx\@schemata at option\@schemata at open



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