summaryrefslogtreecommitdiff
path: root/macros/generic/schemata/schemata.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/generic/schemata/schemata.dtx')
-rw-r--r--macros/generic/schemata/schemata.dtx1176
1 files changed, 874 insertions, 302 deletions
diff --git a/macros/generic/schemata/schemata.dtx b/macros/generic/schemata/schemata.dtx
index 82b39c2f38..133998ebf6 100644
--- a/macros/generic/schemata/schemata.dtx
+++ b/macros/generic/schemata/schemata.dtx
@@ -1,128 +1,188 @@
% \iffalse meta-comment
-% vim: textwidth=75
+%
+% Copyright (C) 2020 by Charles P. Schaum <charles[dot]schaum@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:
+%
+% 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.
+%
%<*internal>
\iffalse
%</internal>
%<*readme>
-
---------:| ----------------------------------------------------------------
-schemata:| Generic package to aid construction of topical categories
- Author:| Charles P. Schaum
- E-mail:| charles dot schaum@comcast.net
- License:| Released under the LaTeX Project Public License v1.3c or later
- See:| http://www.latex-project.org/lppl.txt
+%<<readmevb
+# Short Description
Short description:
The schemata package helps the creation of topical outlines that illustrate the breakdown of concepts and categories in academic texts from the late medieval to early modern periods.
-Files Distribution
+# Files
+
+|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.pdf` |Documentation (generated file) |
+|`README.md` |This file (generated file) |
+|`schematest.tex`|Test file for Plain TeX or Eplain |
+|`schemata.png` |Image file used for the manual |
+
+# Obtaining the Package
+
+1. Packaged in your current TeX distrbution: See the appropriate documentation.
+
+2. Otherwise, download `schemata.zip` from [CTAN](www.ctan.org/tex-archive/macros/generic/schemata).
+
+3. Unpack `schemata.zip` in an appropriate directory.
+
+4. Change to the directory containing the `schemata` files.
+
+# File Generation
+
+## Automatic Installation
+
+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.
+
+0. A quick install in one's home directory using some of the included files from the `zip` archive just requires the following steps:
+
+ tex schemata.dtx
+ make inst
+
+Otherwise 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.
+
+1. Type `make distclean release` to generate the release files using `pdflatex`.
+
+3. To use another TeX engine, type one of the following:
+ make ENGINE=latex
+ make ENGINE=lualatex
+ make ENGINE=dvilualatex
+ make ENGINE=xelatex
+
+4. Type `make inst` to install the files in the user's personal TDS-compliant directory tree.
+
+5. Type `sudo make install` to install the files in the system-wide, local TDS-compliant directory tree.
+
+## Manual Compilation
+
+Otherwise, the following steps are used for manual installation. See the general information at the [TeX FAQ](https://www.texfaq.org/FAQ-installthings).
-README This file
-schemata.pdf Documentation
-schematest.tex Test file for Plain TeX or Eplain
-schemata.png Image file used for the manual
+0. To use some of the included files from the `zip` archive and only extract files from the `dtx` file, just do the following step and proceed to installation:
-Makefile Automates building with GNU make 3.81
-schemata.dtx Documented LaTeX file containing both code and documentation
+ tex schemata.dtx
-Installation
+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:
-Download the package from
+ pdflatex --shell-escape --recorder --interaction=batchmode schemata.dtx
-https://www.ctan.org/tex-archive/macros/generic/schemata
+2. Generate the TOC and cross-references for the documentation:
-Unpack schemata.zip in an appropriate directory.
+ pdflatex --recorder --interaction=nonstopmode schemata.dtx
-If you have a make utility compatible with GNU make, either in
-GNU/Linux, a BSD variant, OSX, or Cygwin in Windows you can type
+3. Generate the index files using `makeindex`:
- make inst
+ makeindex -q -s gglo.ist -o schemata.gls schemata.glo
+ makeindex -q -s gind.ist -o schemata.ind schemata.idx
-to install the package into your $TEXMFHOME tree or
+4. Integrate the glossary (changes) and index into the documentation. The second run updates the TOC:
- make install
+ pdflatex --recorder --interaction=nonstopmode schemata.dtx
+ pdflatex --recorder --interaction=nonstopmode schemata.dtx
-to install the package into your $TEXMFLOCAL tree for all users.
-The latter requires sudo privileges.
+One can substitute, e.g., `latex`, `xelatex`, `lualatex`, and `dvilualatex` for `pdflatex`, but the documentation may look different in some cases.
-Other useful targets include:
+## File Installation
- (release process)
+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:
- make release The default target, same as just ``make''.
+## User's Home Directory
- make clean Removes all intermediate files. Left are
- the files listed above plus schemata.sty.
+`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:
- make distclean Leave only schemata.dtx, schematest.tex,
- schemata.png, and Makefile.
+|Path |Description |
+|------------------------------------|--------------------------------------------|
+|`$TEXMFHOME/source/generic/schemata`|`ins` and `dtx` files, Makefile, `png` file |
+|`$TEXMFHOME/tex/generic/schemata` |`sty` file |
+|`$TEXMFHOME/doc/generic/schemata` |`pdf` file, `README.md`, `schematest.tex` |
- make zip Generate a zip file ready for distribution.
+On older TeX distributions, run `mktexlsr` on $TEXMFHOME to complete the install process.
- (testing process)
+## System-Wide Directory
- make testing Release files, plus compiles schematest.tex.
+`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:
-It is not necessary, however, to use GNU make. One can generate
-the package files manually. Since the files schemata.ins and README.txt
-are contained in the .dtx file itself, the first step is to generate
-the installer driver schemata.ins, plus the file README.txt, which will
-also trigger the extraction of schemata.sty and produce the first pass of
-the package documentation schemata.pdf:
+|Path |Description |
+|-------------------------------------|--------------------------------------------|
+|`$TEXMFLOCAL/source/generic/schemata`|`ins` and `dtx` files, Makefile, `png` file |
+|`$TEXMFLOCAL/tex/generic/schemata` |`sty` file |
+|`$TEXMFLOCAL/doc/generic/schemata` |`pdf` file, `README.md`, `schematest.tex` |
- pdflatex -shell-escape -recorder -interaction=batchmode schemata.dtx
+Run `mktexlsr` with the appropriate permissions on `$TEXMFLOCAL` to complete the install process.
-Next one adds a table of contents and all cross-references, this also
-should finalize page numbers for glossary and index input files:
+# Testing
- pdflatex --recorder --interaction=nonstopmode schemata.dtx
-
-The next commands generate the glossary/index output files:
-
- makeindex -q -s gglo.ist -o schemata.gls schemata.glo
- makeindex -q -s gind.ist -o schemata.ind schemata.idx
-
-The final two commands integrate the glossary (changes) and index:
-
- pdflatex --recorder --interaction=nonstopmode schemata.dtx
- pdflatex --recorder --interaction=nonstopmode schemata.dtx
+## Compiling `schematest.tex`
-Now one can either keep README.txt or rename it to README, e.g.:
+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.
- mv README.txt README
+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.
-Normally one creates the following directories for a user:
+When using `make`, any `dvi` files that are created will also be converted to `pdf` format.
- $TEXMFHOME/source/generic/schemata dtx file, schemata.png
- $TEXMFHOME/doc/generic/schemata pdf file, README, schematest.tex,
-
-
-and creates the following directories for the local site:
+3. To compile the test file using `make` and `pdftex`, simply type `make testing`.
- $TEXMFLOCAL/source/generic/schemata dtx file, schemata.png
- $TEXMFLOCAL/doc/generic/schemata pdf file, README, schematest.tex,
-
+4. For multi-format testing using `make` in addition to that above, one can do the following:
-The above environment variables often are /usr/local/texlive/texmf-local for
-$TEXMFLOCAL and ~/texmf for $TEXMFHOME.
+ make testing TESTENGINE=tex
+ make testing TESTENGINE=eplain
+ make testing TESTENGINE=lollipop
+ make testing TESTENGINE=luatex
+ make testing TESTENGINE=dviluatex
+ make testing TESTENGINE=xetex
+ make testing TESTENGINE=pdflatex
+ make testing TESTENGINE=latex
+ make testing TESTENGINE=lualatex
+ make testing TESTENGINE=dvilualatex
+ make testing TESTENGINE=xelatex
-The make process normally renames the README.txt file created from the
-dtx file to just README by using mv (move / rename utility in the *nix
-userland). Windows distributions of TeX and LaTeX often keep the txt file
-because of using file extensions instead of ``magic numbers'' to identify
-files.
+5. If one does not have `make`, one can use any one of the following commands:
-Run mktexlsr with the appropriate level of permissions to complete the
-install.
+ pdftex --interaction=nonstopmode schematest
+ tex --interaction=nonstopmode schematest
+ eplain --interaction=nonstopmode schematest
+ lollipop --interaction=nonstopmode schematest
+ luatex --interaction=nonstopmode schematest
+ dviluatex --interaction=nonstopmode schematest
+ xetex --interaction=nonstopmode schematest
+ pdflatex --interaction=nonstopmode schematest
+ lualatex --interaction=nonstopmode schematest
+ dvilualatex --interaction=nonstopmode schematest
+ xelatex --interaction=nonstopmode schematest
-This packages works with LaTeX and Plain TeX.
+The manual is also a test suite.
-License
+# Copyright
-This material is subject to the LaTeX Project Public License:
-http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html
+Copyright (C) 2020 by Charles P. Schaum <charles[dot]schaum@comcast.net>
+-------------------------------------------------------
-Happy TeXing!
+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](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.
+%readmevb
%</readme>
%<*internal>
\fi
@@ -135,40 +195,26 @@ Happy TeXing!
\input docstrip.tex
\keepsilent
\askforoverwritefalse
-\preamble
---------:| ----------------------------------------------------------------
-schemata:| Generic package to aid construction of topical categories
- Author:| Charles P. Schaum
- E-mail:| charles dot schaum@comcast.net
- License:| Released under the LaTeX Project Public License v1.3c or later
- See:| http://www.latex-project.org/lppl.txt
-
-\endpreamble
-\postamble
+\preamble
-Copyright (C) 2020 by Charles P. Schaum <charles dot schaum@comcast.net>
+This is a generated file.
-This work may be distributed and/or modified under the
-conditions of the LaTeX Project Public License (LPPL), either
-version 1.3c of this license or (at your option) any later
-version. The latest version of this license is in the file:
+Copyright (C) 2020 by Charles P. Schaum <charles[dot]schaum@comcast.net>
-http://www.latex-project.org/lppl.txt
+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 work is "maintained" (as per LPPL maintenance status) by
-Charles P. Schaum.
+ http://www.latex-project.org/lppl.txt
-This work consists of the file schemata.dtx, schematest.tex,
- schemata.png, and a Makefile.
-Running "make" generates the derived files README, schemata.pdf,
- and schemata.sty.
-Running "make inst" installs the files in the user's TeX tree.
-Running "make install" installs the files in the local TeX tree.
+and version 1.3 or later is part of all distributions of LaTeX version
+2005/12/01 or later.
-\endpostamble
+\endpreamble
-\usedir{tex/generic/schemata}
+\usedir{tex/latex/nameauth}
\generate{
\file{\jobname.sty}{\from{\jobname.dtx}{package}}
}
@@ -179,10 +225,14 @@ Running "make install" installs the files in the local TeX tree.
\generate{
\file{\jobname.ins}{\from{\jobname.dtx}{install}}
}
-\nopreamble\nopostamble
\usedir{doc/generic/schemata}
+\nopostamble
+\generate{
+ \file{schematest.tex}{\from{\jobname.dtx}{examples}}
+}
+\nopreamble
\generate{
- \file{README.txt}{\from{\jobname.dtx}{readme}}
+ \file{README.md}{\from{\jobname.dtx}{readme}}
}
\ifx\fmtname\nameofplainTeX
\expandafter\endbatchfile
@@ -199,12 +249,13 @@ Running "make install" installs the files in the local TeX tree.
%<package>{\expandafter}\expandafter\ifx \csname schemataLaTeX\endcsname\relax
%<package> \def\schemataLaTeX{LaTeX2e}\fi
%<package>\ifx\fmtname\schemataLaTeX
-%<package>\expandafter\NeedsTeXFormat\expandafter{\schemataLaTeX}
+%<package>\expandafter\NeedsTeXFormat\expandafter{\schemataLaTeX}[2005/12/01]
%<package>\ProvidesPackage{schemata}
%<*package>
- [2020/03/14 v1.1 generic package to aid construction of topical categories]
+ [2020/11/23 1.2 generic package to aid construction of topical categories]
%</package>
%<package>\fi
+%
%<*driver>
\documentclass[11pt]{ltxdoc}
\usepackage[T1]{fontenc}
@@ -219,7 +270,7 @@ Running "make install" installs the files in the local TeX tree.
\usepackage{mflogo}
\usepackage[toc]{multitoc}
\usepackage{paracol}
-\usepackage{\jobname}
+\usepackage{\jobname}[2020/11/23]
\usepackage{verbatim}
\usepackage[numbered]{hypdoc}
@@ -281,19 +332,21 @@ Running "make install" installs the files in the local TeX tree.
% Right brace \} Tilde \~}
%
%
-% \changes{v0.5}{2013/02/14}{Initial version}
-% \changes{v0.6}{2013/03/10}{Added features}
-% \changes{v0.7}{2013/09/23}{Changed contact info}
-% \changes{v0.8}{2016/01/25}{Rewrote manual; moved to dtxgen}
-% \changes{v1.1}{2020/03/14}{Fix issue with dtx guards}
+% \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}
+% \changes{1.1}{2020/03/14}{Fix issue with \texttt{dtx} guards}
+% \changes{1.2}{2020/11/11}{Updates to \texttt{Readme.md}, \texttt{Makefile}, \texttt{schematest.tex}, combine \texttt{Readme.md} and \texttt{schematest.tex} files in \texttt{dtx}}
%
% \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, \testchar, \vbox, \vcenter, \vfil, \vskip}
+% \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}
%
%\title{\textsf{schemata} --- Generic package to aid construction of topical categories\thanks{This file
% describes version \fileversion, last revised \filedate.}
%}
-%\author{Charles P. Schaum\thanks{E-mail: charles dot schaum@comcast.net}}
+%\author{Charles P. Schaum\thanks{E-mail: charles[dot]schaum@comcast.net}}
%\date{Released \filedate}
%
%\maketitle
@@ -323,23 +376,23 @@ Running "make install" installs the files in the local TeX tree.
% {\Large\strut}For generic use: & \cmd{\input}\texttt{\textvisiblespace schemata.sty}
% \end{tabular}}
% \end{quote}\smallskip
-%
+%
% \DescribeMacro{\schemataLaTeX}
% Normally, \textsf{schemata} uses generic \TeX{} macros if the format is not \LaTeXe. When using a \LaTeX-like format with a different name than \texttt{LaTeX2e}, one theoretically could insert the following before |\usepackage{schemata}|:
% \begin{quote}
% |\edef\schemataLaTeX{\fmtname}|
% \end{quote}
-%
+%
% Yet\Warn{} this is usually unneeded. We want \cmd{\schemataLaTeX} to be undefined before \texttt{schemata.sty} is loaded to get the default value \texttt{LaTeX2e}. We recommend not using this macro unless you know what you are doing.\medskip
-%
+%
% \LaTeX\Info{options} users can choose one among four package options: \texttt{braces}, \texttt{brackets}, \texttt{parens}, and \texttt{groups}. These set the defaults for the delimiters. If no options are chosen, the default is \texttt{braces}.
-%
+%
% \subsection{Macro Overview}
%
% One can describe schemata as a grouping of boxes that contain content, whose relationships are demonstrated by delimiters. We start with the boxes and their content. Subsequently, we deal with the delimiters, then later, the manner of grouping and arrangement, as well as tweaks and tutorials.
-%
+%
% \subsubsection[\texttt{\textbackslash schemabox}]{Containers: \texttt{\textbackslash schemabox}}
-%
+%
% \DescribeMacro{\schemabox}
% Schemata contain vertically-centered lists of material in inner vertical mode. When in a \cmd{\schema} or a \cmd{\Schema} (see below), a \cmd{\schemabox} stacks one or more lines of \cmd{\hbox}-enclosed text in a \cmd{\vbox.} It redefines the macro |\\| to close the current \cmd{\hbox} and begin a new one, with some options that can be modified (Section~\ref{sec:tweakschema}).
% \begin{quote}
@@ -353,7 +406,7 @@ Running "make install" installs the files in the local TeX tree.
% \newpage
%
% \subsubsection{Delimiters}
-%
+%
% \DescribeMacro{\DoBraces}
% Both generic \TeX{} and \LaTeX{} users can use these four macros to set or change the type of delimiters.
% \DescribeMacro{\DoBrackets}
@@ -363,19 +416,19 @@ Running "make install" installs the files in the local TeX tree.
% \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}
-% \DoBrackets\bgroup\renewcommand\SBNudgeFactor{\kern0.08em}
+% \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}}}
-% \qquad\DoBraces
-% \Schema{0ex}{2.3ex}{\schemabox{a}}{\Schema[close]{0ex}{2.4ex}{\schemabox{b\\c}}{\schemabox{d}}}
% \end{displaymath}
%
% Additionally, these macros can change the delimiter style within a schema. See Section~\ref{sec:multiple}, as well as the example below:\bigskip
-%
-% \leavevmode\quad\begin{minipage}[c]{0.6\textwidth}\small
+%
+% \leavevmode\quad\begin{minipage}{0.6\textwidth}\small
% \StartNum
% \begin{verbatim}
%\DoBrackets
@@ -386,7 +439,7 @@ Running "make install" installs the files in the local TeX tree.
% {\schemabox{d}}
%}\end{verbatim}
% \end{minipage}
-% \begin{minipage}[c]{0.25\textwidth}
+% \begin{minipage}{0.25\textwidth}
% \begin{displaymath}
% \DoBrackets\Schema{0ex}{2.4ex}
% {\schemabox{a}}
@@ -395,10 +448,10 @@ Running "make install" installs the files in the local TeX tree.
% {\schemabox{d}}}
% \end{displaymath}\medskip
% \end{minipage}\bigskip
-%
+%
% One can add new types by using eligible math-mode delimiters, e.g.:\bigskip
-%
-% \leavevmode\quad\begin{minipage}[c]{0.6\textwidth}\small
+%
+% \leavevmode\quad\begin{minipage}{0.6\textwidth}\small
% \StartNum
% \begin{verbatim}
%\makeatletter
@@ -414,7 +467,7 @@ Running "make install" installs the files in the local TeX tree.
% {\vskip0.6ex\schemabox{{\kern0.1em}f}}
%}\end{verbatim}
% \end{minipage}
-% \begin{minipage}[c]{0.25\textwidth}
+% \begin{minipage}{0.25\textwidth}
% \makeatletter
% \newcommand*{\DoVerts}%
% {\let\@schemata@LD\bracevert%
@@ -441,17 +494,17 @@ Running "make install" installs the files in the local TeX tree.
% \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}[c]{0.6\textwidth}\small
+%
+% \leavevmode\quad\begin{minipage}{0.6\textwidth}\small
% \StartNum
% \begin{verbatim}
%\schema
% {\schemabox{a}}
% {\schemabox{b\\c}}\end{verbatim}
% \end{minipage}
-% \begin{minipage}[c]{0.25\textwidth}
+% \begin{minipage}{0.25\textwidth}
% \begin{displaymath}
% \schema
% {\schemabox{a}}
@@ -459,32 +512,31 @@ Running "make install" installs the files in the local TeX tree.
% \end{displaymath}\vspace{0pt}
% \end{minipage}
% \newpage
-%
+%
% Any value of \meta{type} other than the exact string \texttt{open} makes a ``closed'' schema (the delimiter opens to the left):
%
-% \leavevmode\quad\begin{minipage}[c]{0.6\textwidth}\small
+% \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}[c]{0.25\textwidth}
+% \begin{minipage}{0.25\textwidth}
% \begin{displaymath}
% \schema[closed]
% {\NudgeSB\schemabox{b\\c}}
% {\schemabox{a}}
% \end{displaymath}\vspace{0pt}
% \end{minipage}
-%
+%
+% \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}.
-%
-% In practice, \cmd{\schema} does not nest, so it is only useful for the right-hand ``leaves'' of a large schema. That makes formatting the ``leaves'' much faster. Thus, the \cmd{\schema} macro is used only in the framed sub-schemata below.\smallskip
%
-% \noindent\leavevmode\begin{minipage}[c]{0.6\textwidth}
-% \quad\space The automatic sizing of \cmd{\schema} changes, depending on the height, depth, and even context of the letters. This can look ugly if uniformity is desired. Use \cmd{\Schema} (next section) to enforce uniform schemata. Section~\ref{sec:tweakschema} gives more details on tweaking \cmd{\schema} as needed.
+% \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}[c]{0.235\textwidth}\small
+% \begin{minipage}{0.2\textwidth}\small
% \Schema{-1ex}{4.2ex}
% {
% \schemabox{a}
@@ -496,7 +548,9 @@ Running "make install" installs the files in the local TeX tree.
% }
% }
% }
-% \end{minipage}
+% \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}}
%
@@ -533,7 +587,7 @@ Running "make install" installs the files in the local TeX tree.
% }
% {
% \Schema{0ex}{3.8ex}
-% {\schemabox{synonym}}
+% {\schemabox{\,synonym}}
% {
% \schema{\schemabox{part 3}}
% {\SwitchSB\schemabox{detail e\\detail f}}\smallskip
@@ -543,7 +597,7 @@ Running "make install" installs the files in the local TeX tree.
% }
% \end{displaymath}
% \newpage
-%
+%
% The source for that complex schema looks like:
% \begin{quote}\small
% \StartNum
@@ -561,7 +615,7 @@ Running "make install" installs the files in the local TeX tree.
%}
%{
% \Schema{0ex}{3.8ex}
-% {\schemabox{synonym}}
+% {\schemabox{\,synonym}}
% {
% \schema{\schemabox{part 3}}
% {\SwitchSB\schemabox{detail e\\detail f}}\smallskip
@@ -572,7 +626,7 @@ Running "make install" installs the files in the local TeX tree.
% \end{quote}
%
% Both \cmd{\schema} and \cmd{\Schema} will stack vertically if set sequentially as paragraphs in running text:
-%
+%
% \begin{paracol}{2}
% \begin{quote}\small
% \StartNum
@@ -587,7 +641,7 @@ Running "make install" installs the files in the local TeX tree.
% \end{quote}
% \switchcolumn
% \vfil
-%
+%
% \schema
% {\schemabox{a}}
% {\schemabox{b\\c}}
@@ -614,7 +668,7 @@ Running "make install" installs the files in the local TeX tree.
% \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
@@ -626,9 +680,9 @@ Running "make install" installs the files in the local TeX tree.
% \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
@@ -639,9 +693,9 @@ Running "make install" installs the files in the local TeX tree.
% \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
@@ -707,7 +761,7 @@ Running "make install" installs the files in the local TeX tree.
% \UCschema
% \end{displaymath}\smallskip
% \newpage
-%
+%
% \DescribeMacro{\SwitchSB}
% The macro \cmd{\SwitchSB} is a per-use toggle. It causes a particular \cmd{\schemabox} to do the opposite of whatever \cmd{\LCschema} and \cmd{\UCschema} call for. It should be placed immediately before the \cmd{\schemabox} to be affected and its effect is reset when that particular \cmd{\schemabox} terminates.
%
@@ -715,7 +769,7 @@ Running "make install" installs the files in the local TeX tree.
%
% \DescribeMacro{\NudgeSB}
% The macro \cmd{\NudgeSB} is another ``per-use'' macro that causes a particular \cmd{\schemabox} to add a default \texttt{0.2em} kern at the end of every line of text, then is reset thereafter. It ``corrects a corrective.''
-%
+%
% \cmd{\NudgeSB} is meant to be used on the left-hand side of a closed \cmd{\schema} or \cmd{\Schema}. Both macros insert a kern of \texttt{-0.2em} to draw the cusp or flexion point of the delimiter closer to the left-hand side. This corrects the spacing of delimiters that open to the right. When a delimiter opens to the left, the kern may be needed if there is punctuation, or it may throw off the spacing.\medskip
%
% \DescribeMacro{\SBNudgeFactor}
@@ -725,7 +779,7 @@ Running "make install" installs the files in the local TeX tree.
% \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.
%
% \subsubsection{Starting Off Basic}
@@ -738,10 +792,10 @@ Running "make install" installs the files in the local TeX tree.
%\schema{a}{b\\c}\end{verbatim}
% \end{quote}
% \switchcolumn
-%
+%
% \vfil\schema{a}{b\\c}\medskip
% \end{paracol}
-%
+%
% Oh dear, that went badly. Oh, wait! Schemata hold internal vertical lists. That weird \cmd{\schemabox} thing handles just that case:
% \begin{paracol}{2}
% \begin{quote}\small
@@ -752,7 +806,7 @@ Running "make install" installs the files in the local TeX tree.
% {\schemabox{b\\c}}\end{verbatim}
% \end{quote}
% \switchcolumn
-%
+%
% \vfil\schema
% {\schemabox{a}}
% {\schemabox{b\\c}}
@@ -768,15 +822,15 @@ Running "make install" installs the files in the local TeX tree.
% {\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:
% \begin{quote}
-% |\(\hbox{a}\left\{\hbox{\strut b}\right.\)|\qquad \(\hbox{a}\left\{\hbox{\strut gib}\right.\)
+% |\(\hbox{a}\left\{\hbox{\strut gib}\right.\)|\qquad \(\hbox{a}\left\{\hbox{\strut gib}\right.\)
% \end{quote}
%
% \subsubsection{\textit{Loci} 101}
@@ -858,7 +912,7 @@ Running "make install" installs the files in the local TeX tree.
% }
% }
% \end{displaymath}
-%
+%
% 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.}
@@ -866,12 +920,12 @@ Running "make install" installs the files in the local TeX tree.
% \StartNum\addtocounter{VerbLine}{16}
% \begin{verbatim} }\smallskip\end{verbatim}
% \end{quote}
-%
+%
% We have two \cmd{\schema} ``leaves'' and one ``root,'' so we only change one \cmd{\schema} into a \cmd{\Schema}. We count the lines of text, estimate, then revise. Below we have 8--9 lines of text from ``\textsc{Essentiam}'' to ``ut in.'' We estimate \meta{size} at \texttt{8.5ex} and \meta{adjust} at \texttt{0ex}. The large brace is too low, so we \meta{adjust} to \texttt{-1ex}, raising the left side and the delimiter, while lowering the right. We then refine \meta{size} to \texttt{8.7ex}.\footnote{Changes in \TeX{} distributions can change font metrics and thus, the metrics of your schemata.}
% \begin{quote}
% \StartNum\begin{verbatim} \Schema{-1ex}{8.7ex}\end{verbatim}
% \end{quote}
-%
+%
% After those two line changes, we have the finished schema that now looks like it is supposed to appear:
% \begin{displaymath}
% \Schema{-1ex}{8.7ex}
@@ -912,9 +966,9 @@ Running "make install" installs the files in the local TeX tree.
%\end{displaymath}
%
% \subsubsection{Going Big}
-%
+%
% Thus far, we have dealt with many trivial examples. We have amassed a significant body of knowledge:
-%
+%
% \begin{enumerate}
% \item We usually use \cmd{\schemabox} for the contents of a schema.
% \item Schemata usually ``open'' from left to right, from ``root'' to ``leaves.''
@@ -925,26 +979,26 @@ Running "make install" installs the files in the local TeX tree.
% \item We may need to use the tweaking macros \cmd{\UCschema}, \cmd{\LCschema}, \cmd{\SwitchSB}, and \cmd{\NudgeSB}.
% \end{enumerate}
% \newpage
-%
+%
% Armed with this information, we sally forth to reproduce the following schema found on page 13 of Martin Chemnitz, \textit{Loci Theologici} (Frankfurt, 1653).\footnote{This image was created from a photograph taken by the author. It is the victim of a few cage transforms, despeckling, color selection and fill, color equalization, cleanup, scaling, and reduction to a two-color indexed palette.}\bigskip
-%
+%
% \noindent\includegraphics[width=\textwidth]{schemata.png}\bigskip
%
% \begin{itemize}
% \item As you see, the braces were composed of various type sorts, mainly smaller rules and assorted curly and bendy bits.
-%
+%
% \item Because this is Latin we will see roman, italic and small caps, but little of other typefaces. We do see \emph{s-medialis} and many old-style ligatures.
-%
+%
% \item In the reproduction we will use \emph{s-finalis} only, but we will retain some ligatures.
-%
+%
% \item We will improve spacing between elements.
-%
+%
% \item We will not aim for an exact reproduction of line breaks and such.
% \end{itemize}
% \newpage
-%
+%
% We begin by looking at the ``leaves,'' the rightmost bits of text enclosed by braces. We can use \cmd{\schema} in these cases. That results in the following:
-%
+%
% \begin{quote}
% \StartNum
% \begin{verbatim}
@@ -1005,7 +1059,7 @@ Running "make install" installs the files in the local TeX tree.
% Renovationem S. Sancti.}
%}\end{verbatim}
% \qquad\schemabox{Ante lapsum.}\footnote{We delete line 2 after \emph{Ante lapsum} in the large example on page~\pageref{page:firstbig} and thereafter.}
-%
+%
% \qquad\schema
% {\schemabox{Post lapsum:}}
% {
@@ -1082,11 +1136,11 @@ Running "make install" installs the files in the local TeX tree.
% Cognationis.\\
% Agnationis.}
% }
-%
+%
% \qquad\schemabox{Inimicum.}\footnote{We delete line 9 before \emph{Inimicum} in the large example on page~\pageref{page:firstbig} and thereafter.}
% \end{quote}
% \newpage
-%
+%
% \phantomsection
% \label{page:firstbig}
% Below we build all of the ``leaves'' into the larger schema using \cmd{\Schema}. The braces all have dummy values of \texttt{0ex} \meta{adjust} and \texttt{5ex} \meta{size}. Please do not be alarmed at how bad this looks right now! We will adjust the layout shortly. We just want to see the general look of things:\bigskip
@@ -1285,16 +1339,16 @@ Running "make install" installs the files in the local TeX tree.
% \schemabox{Trinus in personis.}
% }\smallskip\end{verbatim}
% \end{quote}
-%
+%
% Again, below, the skip comes at the close of a \cmd{\schema}.
% \begin{quote}\small\ContinueNum\addtocounter{VerbLine}{10}
% \begin{verbatim}
% \textsc{\quad Ad Vitam \AE{}ternam}.}
% }\medskip\end{verbatim}
% \end{quote}
-%
+%
% Below, the first skip helps to separate the lone \cmd{\schemabox} from the \cmd{\schema} beneath it. This illustrates how the internal vertical lists of schemata can contain heterogeneous material.
-%
+%
% A medium skip is placed between two \cmd{\schemabox}es, which slightly throws off the way the brace spans the boxes. A small skip is put at the end of the last \cmd{\schemabox} to correct that. Sometimes putting skips within a \cmd{\schema} can be tricky. Then a \cmd{\smallskip} is added again at the end of the right-hand side.
% \begin{quote}\small\ContinueNum\addtocounter{VerbLine}{8}
% \begin{verbatim}
@@ -1310,7 +1364,7 @@ Running "make install" installs the files in the local TeX tree.
% }\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}
@@ -1320,7 +1374,7 @@ Running "make install" installs the files in the local TeX tree.
% {\schemabox{seipsum ratione}}
% {\schemabox{Anim\ae{}\\ vel\\ Corporis}}\smallskip\end{verbatim}
% \end{quote}
-%
+%
% \begin{quote}\small\ContinueNum\addtocounter{VerbLine}{10}
% \begin{verbatim}
% }\smallskip
@@ -1418,9 +1472,9 @@ Running "make install" installs the files in the local TeX tree.
% }
%\end{displaymath}\egroup
% \newpage
-%
+%
% \newpage
-%
+%
% Next we estimate the lines of text and blank lines from the top of a \cmd{\Schema} brace to the bottom, e.g., from ``\textsc{Per se}:'' to ``quem vel''. We use those ``ex'' height figures for \meta{size}. The following lines illustrate our ``ball park'' figures:
%
% \begin{quote}\small\StartNum
@@ -1447,7 +1501,7 @@ Running "make install" installs the files in the local TeX tree.
% \begin{verbatim}
% \Schema{0ex}{5ex}\end{verbatim}
% \end{quote}
-%
+%
% \bgroup\small\begin{displaymath}
% \Schema{0ex}{23ex}
% {
@@ -1539,7 +1593,7 @@ Running "make install" installs the files in the local TeX tree.
%\end{displaymath}\egroup
%
% \newpage
-%
+%
% Next we tweak \meta{adjust} values by counting the lines (\texttt{ex}) in the direction the left side needs to move relative to the right, multiply the result by two, and make it negative for up and positive for down. Using an editor, e.g., \texttt{texworks} makes this fairly easy. We also adjust the final \meta{size} of the braces. Work from leaves to root:
% \begin{quote}\small\StartNum
% \begin{verbatim}
@@ -1659,7 +1713,7 @@ Running "make install" installs the files in the local TeX tree.
% \subsubsection[Big Groups]{Big Schema with Groups}
%
% The next example illustrates everything tha we have covered so far, plus \cmd{\DoGroups}, all inside a local scope:\bigskip
-%
+%
% \bgroup\footnotesize\begin{displaymath}
% \DoGroups%
%\Schema{-27ex}{21.5ex}
@@ -1761,9 +1815,9 @@ Running "make install" installs the files in the local TeX tree.
% \schemabox{Universalis} \smallskip \schemabox{Particularis}
% }
% \smallskip
-% \schemabox{Politi\ae{} ut Magistratuum}
+% \schemabox{Politi\ae, ut Magistratuum}
% \smallskip
-% \schemabox{\OE{}conomi\ae{} ut privatorum}
+% \schemabox{\OE{}conomi\ae, ut privatorum}
% }
% }\vskip2ex
% }
@@ -1796,7 +1850,7 @@ Running "make install" installs the files in the local TeX tree.
%
% \newpage
% We use a modified version of our \cmd{\Box} macro from above to show how each part nests within the other. Below we do not use \cmd{\NudgeSB} from Section~\ref{sec:tweakschema} because we are not using \cmd{\schemabox}; instead we directly add the kern: |\hbox{\Box{\,$left_2$}\kern0.2em}| within the closed schema. The result is:\medskip
-%
+%
% \begin{quote}
% \quad\Schema{0ex}{2ex}
% {\Box{\,$left_1$}}
@@ -1808,7 +1862,7 @@ Running "make install" installs the files in the local TeX tree.
% }%^^A
% }
% \end{quote}\medskip
-%
+%
% Here is another, more complex example:\medskip
%
% \begin{displaymath}
@@ -1871,7 +1925,7 @@ Running "make install" installs the files in the local TeX tree.
%\newpage
%
% This is more of a real-world example. As above, one must use \cmd{\Schema} to prevent the opening braces from being slightly larger than the closing braces.
-%
+%
% \bgroup\small\begin{displaymath}
% \Schema{-1.4ex}{10ex}
% {
@@ -1930,7 +1984,7 @@ Running "make install" installs the files in the local TeX tree.
% }
% }
% \end{displaymath}\egroup\smallskip
-%
+%
% This listing of the previous example illustrates how one handles closed schemata. The macro \cmd{\gk} uses \textsf{babel} to create Greek text.
%
% \begin{quote}\small\StartNum
@@ -1971,11 +2025,11 @@ Running "make install" installs the files in the local TeX tree.
%}\end{verbatim}
% \end{quote}
% \newpage
-%
+%
% \subsection{Final features}
% \label{sec:multiple}
% This final example illustrates how one can set the width of a \cmd{\schemabox}, and for what sort of use that might be. Below we invoke \cmd{\DoBrackets} after the start of the group containing the right-hand side of the first \cmd{\Schema}.
-%
+%
% \bgroup\small\begin{displaymath}
% \Schema{-0.2ex}{14.4ex}
% {\schemabox{\bfseries Curricula\\\bfseries Texts}}
@@ -2009,7 +2063,7 @@ Running "make install" installs the files in the local TeX tree.
% 2. Specialized Works}}
% }
%\end{displaymath}\egroup
-%
+%
% \begin{quote}\small
% \StartNum
% \begin{verbatim}
@@ -2047,16 +2101,17 @@ Running "make install" installs the files in the local TeX tree.
%}\end{verbatim}
% \end{quote}
% \newpage
-%
+%
%\StopEventually{^^A
% \newgeometry{textwidth=160mm,textheight=237mm,right=25mm}
-% \newpage\PrintChanges
-% \newpage\PrintIndex
+% \PrintChanges\newpage\PrintIndex
%}
% \iffalse
%<*package>
% \fi
+%
% \section{Implementation}
+% \small
%
% Shorter macros are written in both \LaTeX{} and generic \TeX. Longer macros implement a platform-specific front end and a common back end. The macros default to \LaTeXe{} format. If the format test fails, then generic macros are selected.\medskip
%
@@ -2064,28 +2119,28 @@ Running "make install" installs the files in the local TeX tree.
% \leavevmode\llap{\scriptsize 1\ \ }\verb+%<package>{\expandafter}\expandafter\ifx \csname schemataLaTeX\endcsname\relax+
% \leavevmode\llap{\scriptsize 2\ \ }\verb+%<package> \def\schemataLaTeX{LaTeX2e}\fi+
% \leavevmode\llap{\scriptsize 3\ \ }\verb+%<package>\ifx\fmtname\schemataLaTeX+
-% \leavevmode\llap{\scriptsize 4\ \ }\verb+%<package>\expandafter\NeedsTeXFormat\expandafter{\schemataLaTeX}+
+% \leavevmode\llap{\scriptsize 4\ \ }\verb+%<package>\expandafter\NeedsTeXFormat\expandafter{\schemataLaTeX}[2005/12/01]+
% \leavevmode\llap{\scriptsize 5\ \ }\verb+%<package>\ProvidesPackage{schemata}+
% \verb+%<*package>+
-% \leavevmode\llap{\scriptsize 6\ \ }\verb+ [2020/03/14 v1.1 generic package to aid construction of topical categories]+
+% \leavevmode\llap{\scriptsize 6\ \ }\verb+ [2020/11/11 1.2 generic package to aid construction of topical categories]+
% \verb+%</package>+
% \leavevmode\llap{\scriptsize 7\ \ }\verb+%<package>\fi+
% \egroup
% \makeatletter\advance\c@CodelineNo by 7\makeatother
-%
+%
% \subsection{Internal Variables}
%
-% \changes{v1.0}{2020/03/13}{current format handling}
+% \changes{1.0}{2020/03/13}{current format handling}
% If we are not using \LaTeXe, we do the equivalent of \cmd{\makeatletter}.
-%
+%
% \begin{macrocode}
\ifx\fmtname\schemataLaTeX\else
\catcode`@=11\relax
\fi
% \end{macrocode}
%
-% \changes{v0.8}{2016/01/25}{Rename box/dimen registers}
-% \changes{v1.0}{2020/03/13}{Rename box/dimen registers}
+% \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. To make it less likely for these internal variables to be redefined, they are now more ``unique.''
%
% \begin{macrocode}
@@ -2095,25 +2150,25 @@ Running "make install" installs the files in the local TeX tree.
\newdimen\@schemata@lheight
% \end{macrocode}
%
-% \changes{v0.6}{2013/03/10}{Added UC/LC tweaks.}
-% \changes{v0.8}{2016/01/25}{Renamed internal macros}
+% \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}
\newif\if@schemata@LCBox
\newif\if@schemata@SWBox
% \end{macrocode}
%
% This Boolean flag determines if a kern should be added to the end of each line in a \cmd{\schemabox} (helps with closed braces).
-%
+%
% \begin{macrocode}
\newif\if@schemata@NudgeBox
% \end{macrocode}
%
% \subsection{Package Options}
%
-% \changes{v0.6}{2013/03/10}{Added brackets and parens as well as braces}
-% \changes{v1.0}{2020/03/13}{Added group option}
+% \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.
%
% \begin{macrocode}
@@ -2137,10 +2192,10 @@ Running "make install" installs the files in the local TeX tree.
% \subsection {Macros}
%
% \begin{macro}{\DoBraces}
-% \changes{v0.6}{2013/03/10}{Added macro}
-% \changes{v1.0}{2020/03/13}{ensure short}
+% \changes{0.6}{2013/03/10}{Added macro}
+% \changes{1.0}{2020/03/13}{ensure short}
% Set the delimiters to be braces. This is local to a scope, including within a schema.
-%
+%
% \begin{macrocode}
\ifx\fmtname\schemataLaTeX
\newcommand*{\DoBraces}%
@@ -2151,12 +2206,12 @@ Running "make install" installs the files in the local TeX tree.
\fi
% \end{macrocode}
% \end{macro}
-%
+%
% \begin{macro}{\DoBrackets}
-% \changes{v0.6}{2013/03/10}{Added macro}
-% \changes{v1.0}{2020/03/13}{ensure short}
+% \changes{0.6}{2013/03/10}{Added macro}
+% \changes{1.0}{2020/03/13}{ensure short}
% Set the delimiters to be brackets. This is local, as above.
-%
+%
% \begin{macrocode}
\ifx\fmtname\schemataLaTeX
\newcommand*{\DoBrackets}%
@@ -2167,12 +2222,12 @@ Running "make install" installs the files in the local TeX tree.
\fi
% \end{macrocode}
% \end{macro}
-%
+%
% \begin{macro}{\DoParens}
-% \changes{v0.6}{2013/03/10}{Added macro}
-% \changes{v1.0}{2020/03/13}{ensure short}
+% \changes{0.6}{2013/03/10}{Added macro}
+% \changes{1.0}{2020/03/13}{ensure short}
% Set the delimiters to be parentheses. This is local, as above.
-%
+%
% \begin{macrocode}
\ifx\fmtname\schemataLaTeX
\newcommand*{\DoParens}%
@@ -2183,11 +2238,11 @@ Running "make install" installs the files in the local TeX tree.
\fi
% \end{macrocode}
% \end{macro}
-%
+%
% \begin{macro}{\DoGroups}
-% \changes{v1.0}{2020/03/13}{Added macro}
+% \changes{1.0}{2020/03/13}{Added macro}
% Set the delimiters to be parentheses. This is local, as above.
-%
+%
% \begin{macrocode}
\ifx\fmtname\schemataLaTeX
\newcommand*{\DoGroups}%
@@ -2198,12 +2253,12 @@ Running "make install" installs the files in the local TeX tree.
\fi
% \end{macrocode}
% \end{macro}
-%
+%
% \begin{macro}{\LCschema}
-% \changes{v0.6}{2013/03/10}{Added macro}
-% \changes{v1.0}{2020/03/13}{ensure short}
+% \changes{0.6}{2013/03/10}{Added macro}
+% \changes{1.0}{2020/03/13}{ensure short}
% Prevent \cmd{\schemabox} from adding a \cmd{\strut} in the first line.
-%
+%
% \begin{macrocode}
\ifx\fmtname\schemataLaTeX
\newcommand*{\LCschema}{\@schemata@LCBoxtrue}
@@ -2213,12 +2268,12 @@ Running "make install" installs the files in the local TeX tree.
% \end{macrocode}
% \end{macro}
% \newpage
-%
+%
% \begin{macro}{\UCschema}
-% \changes{v0.6}{2013/03/10}{Added macro}
-% \changes{v1.0}{2020/03/13}{ensure short}
+% \changes{0.6}{2013/03/10}{Added macro}
+% \changes{1.0}{2020/03/13}{ensure short}
% Permit \cmd{\schemabox} to add a \cmd{\strut} in the first line (default).
-%
+%
% \begin{macrocode}
\ifx\fmtname\schemataLaTeX
\newcommand*{\UCschema}{\@schemata@LCBoxfalse}
@@ -2227,12 +2282,12 @@ Running "make install" installs the files in the local TeX tree.
\fi
% \end{macrocode}
% \end{macro}
-%
+%
% \begin{macro}{\SwitchSB}
-% \changes{v0.6}{2013/03/10}{Added macro}
-% \changes{v1.0}{2020/03/13}{ensure short}
+% \changes{0.6}{2013/03/10}{Added macro}
+% \changes{1.0}{2020/03/13}{ensure short}
% Flip the UC/LC settings for one \cmd{\schemabox}, which will reset this value on exit.
-%
+%
% \begin{macrocode}
\ifx\fmtname\schemataLaTeX
\newcommand*{\SwitchSB}{\@schemata@SWBoxtrue}%
@@ -2241,12 +2296,12 @@ Running "make install" installs the files in the local TeX tree.
\fi
% \end{macrocode}
% \end{macro}
-%
+%
% \begin{macro}{\NudgeSB}
-% \changes{v0.8}{2016/01/25}{Added macro}
-% \changes{v1.0}{2020/03/13}{ensure short}
+% \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}.
-%
+%
% \begin{macrocode}
\ifx\fmtname\schemataLaTeX
\newcommand*{\NudgeSB}{\@schemata@NudgeBoxtrue}
@@ -2255,11 +2310,11 @@ Running "make install" installs the files in the local TeX tree.
\fi
% \end{macrocode}
% \end{macro}
-%
+%
% \begin{macro}{\SBNudgeFactor}
-% \changes{v1.0}{2020/03/13}{Added macro}
+% \changes{1.0}{2020/03/13}{Added macro}
% Define the \texttt{\textbackslash kern} to be added to the end of each line in one \cmd{\schemabox}. The default is \texttt{0.2em}, equal to the horizontal corrective.
-%
+%
% \begin{macrocode}
\ifx\fmtname\schemataLaTeX
\newcommand{\SBNudgeFactor}{\kern0.2em}
@@ -2268,20 +2323,21 @@ Running "make install" installs the files in the local TeX tree.
\fi
% \end{macrocode}
% \end{macro}
-%
+%
% \begin{macro}{\schemabox}
-% \changes{v0.6}{2013/03/10}{Added lowercase tweaks}
-% \changes{v0.8}{2016/01/25}{Added nudge feature; fix errors when not in internal vertical mode}
-% \changes{v1.0}{2020/03/13}{create front- and back-end; ensure short}
+% \changes{0.6}{2013/03/10}{Added lowercase tweaks}
+% \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/11}{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.
%
% \begin{macrocode}
\ifx\fmtname\schemataLaTeX
\newcommand*{\schemabox}[2][0pt]{\@schemata@schemabox[#1]{#2}}
\else
- \def\schemabox{\futurelet\testchar\@schemata@schemab@x}
+ \def\schemabox{\futurelet\@schemata@testchar\@schemata@schemab@x}
\def\@schemata@schemab@x{%
- \ifx[\testchar
+ \ifx[\@schemata@testchar
\let\next\@schemata@schemabox%
\else
\let\next\@schemata@@schemab@x%
@@ -2293,23 +2349,27 @@ Running "make install" installs the files in the local TeX tree.
\def\@schemata@schemabox[#1]#2{%
\ifinner
\if@schemata@LCBox
- \def\@Adj{}%
- \if@schemata@SWBox\def\@Adj{\strut}\fi
+ \def\@schemata@Adj{}%
+ \if@schemata@SWBox\def\@schemata@Adj{\strut}\fi
\else
- \def\@Adj{\strut}%
- \if@schemata@SWBox\def\@Adj{}\fi
+ \def\@schemata@Adj{\strut}%
+ \if@schemata@SWBox\def\@schemata@Adj{}\fi
\fi
\if@schemata@NudgeBox
- \let\@Nudge\SBNudgeFactor%
+ \let\@schemata@Nudge\SBNudgeFactor%
\else
- \def\@Nudge{}%
+ \def\@schemata@Nudge{}%
\fi
\ifdim#1<1pt
- \def\\{\@Nudge\egroup\hbox\bgroup\ignorespaces }%
- \vbox{\hbox\bgroup\@Adj\ignorespaces #2\@Nudge\egroup}%
+ \def\\{\@schemata@Nudge\egroup\hbox\bgroup\ignorespaces }%
+ \vbox{\hbox\bgroup%
+ \@schemata@Adj\ignorespaces #2\@schemata@Nudge%
+ \egroup}%
\else
\def\\{\hfil\egroup\hbox to #1\bgroup\ignorespaces }%
- \vbox{\hbox to #1\bgroup\@Adj\ignorespaces #2\hfil\egroup}%
+ \vbox{\hbox to #1\bgroup%
+ \@schemata@Adj\ignorespaces #2\hfil%
+ \egroup}%
\fi
\else
#2%
@@ -2319,23 +2379,24 @@ Running "make install" installs the files in the local TeX tree.
}
% \end{macrocode}
% \end{macro}
-%
+%
% \begin{macro}{\schema}
-% \changes{v1.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/11}{Fix namespace}
% This ``simple'' schema vertically centers two boxes of internal vertical material and puts a ``simple'' brace between the boxes based on the height of the box and the options passed to the schema.
-%
+%
% There is something of a ``magic'' value for adjusting the height used for the larger side of a \cmd{\schema}, namely \texttt{1.44265ex}. By using this adjustment, which is slightly larger than $\sqrt{2}$ times the ex-height of the font, the results look more aesthetically pleasing in terms of centering and size of the braces.
-%
+%
% By default, a schema has a box to the left, an open delimiter, and a box to the right. If any optional argument other than \texttt{open} is used, the schema prints a box to the left, a close brace, and a box to the right.
-%
+%
% \begin{macrocode}
\ifx\fmtname\schemataLaTeX
\newcommand{\schema}[3][open]{%
\@schemata@schema[#1]{#2}{#3}}
\else
- \long\def\schema{\futurelet\testchar\@schemata@schem@}
+ \long\def\schema{\futurelet\@schemata@testchar\@schemata@schem@}
\long\def\@schemata@schem@{%
- \ifx[\testchar
+ \ifx[\@schemata@testchar
\let\next\@schemata@schema%
\else
\let\next\@schemata@@schem@%
@@ -2346,8 +2407,8 @@ Running "make install" installs the files in the local TeX tree.
\@schemata@schema[open]{#1}{#2}}
\fi
\long\def\@schemata@schema[#1]#2#3{%
- \def\@ption{#1}\def\@pen{open}%
- \ifx\@ption\@pen
+ \def\@schemata@option{#1}\def\@schemata@open{open}%
+ \ifx\@schemata@option\@schemata@open
\setbox\@schemata@rhs=\vbox{#3}%
\@schemata@rheight=\ht\@schemata@rhs%
\advance\@schemata@rheight\dp\@schemata@rhs%
@@ -2367,19 +2428,20 @@ Running "make install" installs the files in the local TeX tree.
}
% \end{macrocode}
% \end{macro}
-%
+%
% \begin{macro}{\Schema}
-% \changes{v1.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/11}{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}.
-%
+%
% \begin{macrocode}
\ifx\fmtname\schemataLaTeX
\newcommand{\Schema}[5][open]{%
\@schemata@Schema[#1]{#2}{#3}{#4}{#5}}
\else
- \long\def\Schema{\futurelet\testchar\@schemata@Schem@}
+ \long\def\Schema{\futurelet\@schemata@testchar\@schemata@Schem@}
\long\def\@schemata@Schem@{%
- \ifx[\testchar
+ \ifx[\@schemata@testchar
\let\next\@schemata@Schema%
\else
\let\next\@schemata@@Schem@%
@@ -2390,10 +2452,10 @@ Running "make install" installs the files in the local TeX tree.
\@schemata@Schema[open]{#1}{#2}{#3}{#4}}
\fi
\long\def\@schemata@Schema[#1]#2#3#4#5{%
- \def\@ption{#1}%
- \def\@pen{open}%
+ \def\@schemata@option{#1}%
+ \def\@schemata@open{open}%
\dimen0=#2%
- \ifx\@ption\@pen
+ \ifx\@schemata@option\@schemata@open
\hbox{$\vcenter{\vskip1.44265\dimen0#4}%
\@schemata@biglbrace{#2}{#3}\vcenter{#5}$}%
\else
@@ -2404,12 +2466,12 @@ Running "make install" installs the files in the local TeX tree.
% \end{macrocode}
% \end{macro}
% \newpage
-%
+%
% \begin{macro}{\@schemata@lbrace}
-% \changes{v0.8}{2016/01/25}{Renamed}
-% \changes{v1.0}{2020/03/13}{ensure short}
+% \changes{0.8}{2016/01/25}{Renamed}
+% \changes{1.0}{2020/03/13}{ensure short}
% Draw an on-center delimiter to the left of a simple box.
-%
+%
% \begin{macrocode}
\ifx\fmtname\schemataLaTeX
\newcommand*{\@schemata@lbrace}[1]{%
@@ -2426,12 +2488,12 @@ Running "make install" installs the files in the local TeX tree.
\fi
% \end{macrocode}
% \end{macro}
-%
+%
% \begin{macro}{\@schemata@rbrace}
-% \changes{v0.8}{2016/01/25}{Renamed}
-% \changes{v1.0}{2020/03/13}{ensure short}
+% \changes{0.8}{2016/01/25}{Renamed}
+% \changes{1.0}{2020/03/13}{ensure short}
% Draw an on-center delimiter to the right of a simple box.
-%
+%
% \begin{macrocode}
\ifx\fmtname\schemataLaTeX
\newcommand*{\@schemata@rbrace}[1]{%
@@ -2450,10 +2512,10 @@ Running "make install" installs the files in the local TeX tree.
% \end{macro}
%
% \begin{macro}{\@schemata@biglbrace}
-% \changes{v0.8}{2016/01/25}{Renamed; use absolute value of brace size}
-% \changes{v1.0}{2020/03/13}{ensure short; create front- and back-end}
+% \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.
-%
+%
% \begin{macrocode}
\ifx\fmtname\schemataLaTeX
\newcommand*{\@schemata@biglbrace}[2]{%
@@ -2481,12 +2543,12 @@ Running "make install" installs the files in the local TeX tree.
}
% \end{macrocode}
% \end{macro}
-%
+%
% \begin{macro}{\@schemata@bigrbrace}
-% \changes{v0.8}{2016/01/25}{Renamed; Use absolute value of brace size}
-% \changes{v1.0}{2020/03/13}{ensure short; create front- and back-end}
+% \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.
-%
+%
% \begin{macrocode}
\ifx\fmtname\schemataLaTeX
\newcommand*{\@schemata@bigrbrace}[2]{%
@@ -2524,6 +2586,516 @@ Running "make install" installs the files in the local TeX tree.
\catcode`@=12\relax
\fi
% \end{macrocode}
-%\Finale
-\endinput
+% \Finale
+% \endinput
%</package>
+%<*examples>
+%<<examplesvb
+\def\nameofplain{plain}
+\def\nameofeplain{eplain}
+\def\nameoflatex{LaTeX2e}
+\def\nameoflollipop{Lollipop}
+%
+% See README.md for compiling this document.
+%
+\ifx\fmtname\nameoflatex
+ \documentclass[10pt]{article}
+ \usepackage[T1]{fontenc}
+ \usepackage[polutonikogreek,american]{babel}
+ \newcommand{\gk}[1]{\foreignlanguage{polutonikogreek}{#1}}
+ \usepackage{schemata}
+ \begin{document}
+\else
+ \ifx\fmtname\nameoflollipop
+ \input schemata.sty
+ \font\scshape=cmcsc10
+ \def\textsc#1{\bgroup\scshape #1\egroup}
+ \def\gk#1{\bgroup\it #1\egroup}
+ \Start
+ \else
+ \input schemata.sty
+ \font\scshape=cmcsc10
+ \def\textsc#1{\bgroup\scshape #1\egroup}
+ \def\gk#1{\bgroup\it #1\egroup}
+ \fi
+\fi
+
+Format: \fmtname\par
+
+$$
+\Schema{-1ex}{8.7ex}
+{
+ \schemabox{Subjectum theo-\\
+ logi\ae{} est Notitia\\
+ Dei. Considerat\\
+ ergo, Dei, vel}
+}
+{
+\schema
+ {
+ \schemabox{\textsc{Essentiam},}
+ }
+ {
+ \schemabox{Unitate natur\ae{}.\\
+ Trinitate personarum.\\
+ Operibus ad intra.}
+ }\smallskip
+ \schema
+ {
+ \schemabox{\textsc{Voluntatem},\\
+ manifestatam in\\
+ operibus ad extra;\\
+ ut in}
+ }
+ {
+ \schemabox{Creatione.\\
+ Sustentatione natur\ae{} %
+ laps\ae{}.\\
+ Reparatione.\\
+ Conversione.\\
+ Justificatione.\\
+ Sanctificatione \&\\
+ Glorificatione ejusdem.}
+ }
+}
+$$
+
+$$
+\Schema{-25ex}{20.6ex}
+{
+ \schemabox{Subjectum \&\\
+ summa univer-\\
+ s\ae{} Scriptur\ae{},\\
+ est \textsc{Cognitio}\\
+ vel}
+}
+{
+ \Schema{-6.4ex}{8.5ex}
+ {
+ \schemabox{\textsc{Dei}, qua-\\lis sit, aut}
+ }
+ {
+ \schema
+ {\schemabox{\textsc{Per se}:\\ scilicet.}}
+ {
+ \schemabox{Unus in essentia.}\smallskip
+ \schemabox{Trinus in personis.}
+ }\smallskip
+ \schema
+ {\schemabox{Ad hominem\\ quem vel}}
+ {
+ \schemabox{Accusat \& terret, \textsc{Per Legem},\\
+ Consolatur \& erigit, \textsc{Per Evangelium}.\\
+ Salvat, \textsc{Per Christum}.\\
+ Renovat, \textsc{Per Spiritum Sanctum}.\\
+ Sanctificat, \textsc{Per Verbum} \& \textsc{Sacramenta}.\\
+ Castigat, tentat \& exercet, \textsc{Per Crucem}.\\
+ Glorificat \textsc{Per Resurrectionem Carnis}\\
+ \textsc{\quad Ad Vitam \AE{}ternam}.}
+ }\medskip
+ }
+ \Schema{-13.4ex}{17.4ex}
+ {
+ \schemabox{\textsc{Hominis},\\ qualis sit}
+ }
+ {
+ \Schema{-4.4ex}{5ex}
+ {\schemabox{\textsc{Per se}:}}
+ {
+ \schemabox{Ante lapsum.}\smallskip
+ \schema
+ {\schemabox{Post lapsum:}}
+ {
+ \schemabox{Ante Regenerationem \&\\
+ Renovationem S. Sancti.}\medskip
+ \schemabox{Post Regenerationem \&\\
+ Renovationem S. Sancti.}\smallskip
+ }\smallskip
+ }
+ \Schema{4.2ex}{14.4ex}
+ {\schemabox{Ad}}
+ {
+ \schema
+ {\schemabox{\textsc{Deum},}}
+ {
+ \schemabox{P\oe{}nitentia agens, agnitis peccatis \&\\
+ ira Dei cognita \textsc{Ex Lege}.\\
+ Erigens se \textsc{Voce Evangelii}.\\
+ Credens \textsc{In Christum Salvatorem}.\\
+ Non repugnans \textsc{Spiritui Sancto} impellenti.\\
+ Audiens \textsc{Verbum}: \& utens \textsc{Sacramentis}.\\
+ Patienter \& constanter sufferens \textsc{Crucem}.\\
+ Sperans \& expectans glorificationem\\
+ \textsc{\quad In Resurrectione Carnis}\\
+ \textsc{\quad Ad Vitam \AE{}ternam}.}
+ }\smallskip
+ \schema
+ {\schemabox{seipsum ratione}}
+ {\schemabox{Anim\ae{}\\ vel\\ Corporis}}\smallskip
+ \Schema{2ex}{5.1ex}
+ {\schemabox{Proximum,}}
+ {
+ \schema
+ {\schemabox{Amicum ra-\\ tione vel}}
+ {
+ \schemabox{Religionis.\\
+ Politic\ae{} \& \OE{}conomic\ae{}.\\
+ Cognationis.\\
+ Agnationis.}
+ }\smallskip
+ \schemabox{Inimicum.}
+ }
+ }
+ }
+}
+$$
+
+\eject
+
+\bgroup
+
+\ifx\fmtname\nameofeplain
+\verbatim \DoParens |endverbatim
+\fi
+\DoParens%
+\vfil
+$$
+\Schema{-26ex}{21.5ex}
+{
+ \schemabox{Sacr\ae{}\\ litter\ae{}\\ loquuntur,\\ de}
+}
+{
+ \schema
+ {
+ \schemabox{\textsc{Deo}}
+ }
+ {
+ \schemabox{Uno, in Trinitate.}\smallskip\schemabox{Trino, in unitate.}
+ }
+ \Schema{-16.5ex}{23.4ex}
+ {
+ \vskip30ex
+ \schemabox{\textsc{Dei}\\ \textsc{Operibus}}
+ }
+ {
+ \schema
+ {
+ \schemabox{\textsc{Intra},\\ qu\ae{} sunt\\ divisa, ut}
+ }
+ {
+ \schemabox{\textsc{Patris}, ab \ae{}terno gignere.\\ \textsc{Filii}, ab \ae{}terno genitum esse.\\ \textsc{Spiritus Sancti}, ab utroque\\ ab \ae{}terno procedete.}
+ }
+ \medskip
+ \Schema{-2ex}{21ex}
+ {
+ \schemabox{\textsc{Extra},\\ qu\ae{} sunt\\ indivisa;\\ tervata\\ tamen\\ cujusque\\ person\ae{}\\ divinitatis\\ sua pro-\\prietate}
+ }
+ {
+ \Schema{-0.8ex}{6.4ex}
+ {
+ \schemabox{Creatione\\ natur\ae{}}
+ }
+ {
+ \schema
+ {
+ \schemabox{Brute ut}
+ }
+ {
+ \schemabox{C\oe{}li} \smallskip \schemabox{Elementorum} \smallskip \schemabox{Mundi}
+ }
+ \smallskip
+ \schema
+ {
+ \schemabox{\ifx\fmtname\nameoflatex\gk{logik~hs}\else\gk{logik\=es}\fi, ut}
+ }
+ {
+ \schemabox{Angelorum.} \smallskip \schemabox{Hominum: Ad\ae{},\\ Ev\ae{} \& procreatorum\\ exipsis.}
+ }
+ }
+ \schema
+ {
+ \schemabox{Sustenatione\\ natur\ae{} laps\ae{},}
+ }
+ {
+ \schemabox{Angelorum malorum,} \smallskip \schemabox{Hominum: Ad\ae{}, Ev\ae{}\\ \& procreatorum exipsis.}
+ }
+ \Schema{2.6ex}{8.8ex}
+ {
+ \schemabox{Beneficiis\\ erga Ecc-\\ lesiam: ea\\ versantur\\ aut circa}
+ }
+ {
+ \Schema{2.2ex}{7ex}
+ {
+ \schemabox{Res, ut}
+ }
+ {
+ \schema
+ {
+ \schemabox{Verbum}
+ }
+ {
+ \schemabox{Legis} \smallskip \schemabox{Evangelii} \smallskip \schemabox{Sacramentorum}
+ }
+ \smallskip
+ \schema
+ {
+ \schemabox{Signa vel Veteris\\ vel Novi Testa-\\ mentum ut sunt:}
+ }
+ {
+ \schemabox{Ceremoni\ae{}} \smallskip \schemabox{Miracula}
+ }
+ }
+ \smallskip
+ \Schema{1ex}{5ex}
+ {
+ \schemabox{Personas}
+ }
+ {
+ \schema
+ {
+ \schemabox{Ecclesi\ae{}}
+ }
+ {
+ \schemabox{Universalis} \smallskip \schemabox{Particularis}
+ }
+ \smallskip
+ \schemabox{Politi\ae, ut Magistratuum}
+ \smallskip
+ \schemabox{\OE{}conomi\ae, ut privatorum}
+ }
+ }\vskip2ex
+ }
+ }
+}
+$$
+\vfil
+
+\eject
+
+\ifx\fmtname\nameofeplain
+\verbatim \DoGroups |endverbatim
+\fi
+\DoGroups
+
+\vfil
+$$
+\Schema{-26.5ex}{21ex}
+{
+ \schemabox{Sacr\ae{}\\ litter\ae{}\\ loquuntur,\\ de}
+}
+{
+ \schema
+ {
+ \schemabox{\textsc{Deo}}
+ }
+ {
+ \schemabox{Uno, in Trinitate.}\smallskip\schemabox{Trino, in unitate.}
+ }
+ \Schema{-17ex}{23.4ex}
+ {
+ \vskip30ex
+ \schemabox{\textsc{Dei}\\ \textsc{Operibus}}
+ }
+ {
+ \schema
+ {
+ \schemabox{\textsc{Intra},\\ qu\ae{} sunt\\ divisa, ut}
+ }
+ {
+ \schemabox{\textsc{Patris}, ab \ae{}terno gignere.\\ \textsc{Filii}, ab \ae{}terno genitum esse.\\ \textsc{Spiritus Sancti}, ab utroque\\ ab \ae{}terno procedete.\strut}
+ }
+ \medskip
+ \Schema{-2ex}{21ex}
+ {
+ \schemabox{\textsc{Extra},\\ qu\ae{} sunt\\ indivisa;\\ tervata\\ tamen\\ cujusque\\ person\ae{}\\ divinitatis\\ sua pro-\\prietate}
+ }
+ {
+ \Schema{-0.8ex}{6.4ex}
+ {
+ \schemabox{Creatione\\ natur\ae{}}
+ }
+ {
+ \schema
+ {
+ \schemabox{Brute ut}
+ }
+ {
+ \schemabox{C\oe{}li} \smallskip \schemabox{Elementorum} \smallskip \schemabox{Mundi}
+ }
+ \smallskip
+ \schema
+ {
+ \schemabox{\ifx\fmtname\nameoflatex\gk{logik~hs}\else\gk{logik\=es}\fi, ut}
+ }
+ {
+ \schemabox{Angelorum.} \smallskip \schemabox{Hominum: Ad\ae{},\\ Ev\ae{} \& procreatorum\\ exipsis.\strut}
+ }
+ }
+ \schema
+ {
+ \schemabox{Sustenatione\\ natur\ae{} laps\ae{},}
+ }
+ {
+ \schemabox{Angelorum malorum,} \smallskip \schemabox{Hominum: Ad\ae{}, Ev\ae{}\\ \& procreatorum exipsis.}
+ }
+ \Schema{2.6ex}{8.8ex}
+ {
+ \schemabox{Beneficiis\\ erga Ecc-\\ lesiam: ea\\ versantur\\ aut circa}
+ }
+ {
+ \Schema{2.2ex}{7ex}
+ {
+ \schemabox{Res, ut}
+ }
+ {
+ \schema
+ {
+ \schemabox{Verbum}
+ }
+ {
+ \schemabox{Legis} \smallskip \schemabox{Evangelii} \smallskip \schemabox{Sacramentorum}
+ }
+ \smallskip
+ \schema
+ {
+ \schemabox{Signa vel Veteris\\ vel Novi Testa-\\ mentum ut sunt:}
+ }
+ {
+ \schemabox{Ceremoni\ae{}} \smallskip \schemabox{Miracula}
+ }
+ }
+ \smallskip
+ \Schema{0.6ex}{5.5ex}
+ {
+ \schemabox{Personas}
+ }
+ {
+ \schema
+ {
+ \schemabox{Ecclesi\ae{}}
+ }
+ {
+ \schemabox{Universalis} \smallskip \schemabox{Particularis}
+ }
+ \smallskip
+ \schemabox{Politi\ae, ut Magistratuum}
+ \smallskip
+ \schemabox{\OE{}conomi\ae, ut privatorum}
+ }
+ }\vskip2ex
+ }
+ }
+}
+$$
+\vfil
+\egroup
+
+\eject
+
+$$
+\Schema{-1.4ex}{10ex}
+{
+ \schemabox{Qu\ae{} sit\\ \textsc{Dei}, vel}
+}
+{
+ \Schema{-1ex}{5ex}
+ {
+ \schemabox{\textsc{Essentia}, in}
+ }
+ {
+ \vskip1ex\schemabox{Unitate divina,}
+ \medskip
+ \Schema{0ex}{3.4ex}
+ {
+ \schemabox{Tribus perso-\\ nis divinitatis}
+ }
+ {
+ \Schema[close]{0ex}{3.4ex}
+ {
+ \NudgeSB\schemabox{Patre,\\ Filio,\\ Spiritui Sancto}
+ }
+ {
+ \schemabox{\ifx\fmtname\nameoflatex\gk{<omoous'iois}\else\gk{homoousiois}\fi\\ \& co\ae{}ternis}
+ }
+ }
+ }
+ \medskip
+ \Schema{-0.2ex}{6.4ex}
+ {
+ \schemabox{\textsc{Voluntas},\\ revelatur in\\ actione, sive}
+ }
+ {
+ \Schema{0ex}{3.4ex}
+ {
+ \schemabox{Universali}
+ }
+ {
+ \Schema[close]{0ex}{3.4ex}
+ {
+ \schemabox{Creationis,\\Sustenationis,\\ Propagationis,}
+ }
+ {
+ \schemabox{rerum creatarum.}
+ }
+ }
+ \medskip
+ \schema
+ {
+ \schemabox{Speciali, in beneficiis\\ erga Ecclesiam, eam}
+ }
+ {
+ \schemabox{Colligendo.\\ Justificando.\\ Conservando.\\
+ Glorificando.}
+ }
+ }
+}
+$$
+
+\vfill
+% Use here in Plain TeX.
+\newbox\mybox
+$$
+\Schema{-0.2ex}{14.4ex}
+{\schemabox{\bf Curricula\\\bf Texts}}
+{
+ \DoBrackets%
+ % Doable in LaTeX, not in Plain TeX, because \outer.
+ % \newbox\mybox%
+ \setbox\mybox=\hbox{\bf III. Philosophical }%
+ \dimen0=\wd\mybox%
+ \schema
+ {\schemabox[\dimen0]{\bf I. General\\Studies}}
+ {\schemabox{1. Collected Works\\2. Encyclopedias}}
+ \smallskip
+ \schema
+ {\schemabox[\dimen0]{\bf II. Literary\\Disciplines}}
+ {\schemabox{1. Philology\\
+ 2. Historical Introduction\\
+ 3. Literary Theory\\
+ 4. Application}}
+ \smallskip
+ \schema
+ {\schemabox[\dimen0]{\bf III. Philosophical\\Disciplines}}
+ {\schemabox{1. Source Texts\\
+ 2. History of Philosophy\\
+ 3. General Surveys\\
+ 4. Specific Studies}}
+ \smallskip
+ \schema
+ {\schemabox[\dimen0]{\bf IV. Historical\\Disciplines}}
+ {\schemabox{1. General Surveys\\
+ 2. Specialized Works}}
+}
+$$
+\ifx\fmtname\nameoflatex
+ \end{document}
+\else
+ \ifx\fmtname\nameoflollipop
+ \Stop
+ \else
+ \bye
+ \fi
+\fi
+%examplesvb
+%</examples>
+\endinput