From 685a69bf7d32b572beaa13dbde7c4485952900fd Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 30 Jan 2016 22:59:40 +0000 Subject: schemata (30jan16) git-svn-id: svn://tug.org/texlive/trunk@39510 c570f23f-e606-0410-a88d-b1316a301751 --- .../source/generic/schemata/schemata.dtx | 2919 +++++++++++--------- .../source/generic/schemata/schemata.ins | 97 +- 2 files changed, 1671 insertions(+), 1345 deletions(-) (limited to 'Master/texmf-dist/source/generic/schemata') diff --git a/Master/texmf-dist/source/generic/schemata/schemata.dtx b/Master/texmf-dist/source/generic/schemata/schemata.dtx index aeab827b595..ed5e80042c1 100644 --- a/Master/texmf-dist/source/generic/schemata/schemata.dtx +++ b/Master/texmf-dist/source/generic/schemata/schemata.dtx @@ -1,62 +1,199 @@ % \iffalse meta-comment -% -% Copyright (C) 2013 by Charles P. Schaum --------------------------------------------------------------------------- -% This work 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. -% -% This work has the LPPL maintenance status `maintained'. -% -% The Current Maintainer of this work is Charles P. Schaum. -% -% This work consists of the files schemata.dtx and schemata.ins -% and the derived filebase schemata.sty. -% +% vim: textwidth=75 +%<*internal> +\iffalse +% +%<*readme> +| +--------:| ---------------------------------------------------------------- +schemata:| Generic package to aid construction of topical categories + Author:| Charles P. Schaum + E-mail:| charles dot schaum at comcast dot net + License:| Released under the LaTeX Project Public License v1.3c or later + See:| http://www.latex-project.org/lppl.txt + + +Short description: +The schemata package helps the creation of topical outlines that illustrate the breakdown of concepts and categories in academic texts from the late medieval to early modern periods. + +Files Distribution + +README This file +schemata.pdf Documentation + +Makefile Automates building with GNU make 3.81 +schemata.dtx Documented LaTeX file containing both code and documentation + +Installation + +Unpack schemata-XX.zip in an appropriate directory. + +Note that the instructions below assume that you are using a *nix- +compatible computer. If that is otherwise, you will need to modify +these instructions to your needs. + +If you have a make utility compatible with GNU make you can type + + make inst + +to install the package into your $TEXMFHOME tree or + + make install + +to install the package into your $TEXMFLOCAL tree for all users. + +Manually, you can generate the package files. First you generate the +installer driver, README, and style files, with a preliminary PDF: + + pdflatex -shell-escape -recorder -interaction=batchmode schemata.dtx + +Next you generate the PDF with a table of contents and all cross-references +validated, so that the index entries will not move: + + pdflatex --recorder --interaction=nonstopmode schemata.dtx + +The next commands generate the glossary/index and final pdf file + + makeindex -q -s gglo.ist -o schemata.gls schemata.glo + makeindex -q -s gind.ist -o schemata.ind schemata.idx + pdflatex --recorder --interaction=nonstopmode schemata.dtx + pdflatex --recorder --interaction=nonstopmode schemata.dtx + +Normally you create the following manual installation directories for user: + + $TEXMFHOME/source/generic/schemata dtx file + $TEXMFHOME/tex/generic/schemata sty file + $TEXMFHOME/doc/generic/schemata pdf file + +and you create the following manual installation directories for local site: + + $TEXMFLOCAL/source/generic/schemata dtx file + $TEXMFLOCAL/tex/generic/schemata sty file + $TEXMFLOCAL/doc/generic/schemata pdf file + +The above environment variables often are /usr/local/texlive/texmf-local for +$TEXMFLOCAL and ~/texmf for $TEXMFHOME. + +Run mktexlsr with the appropriate level of permissions to complete the install. + +This packages works with LaTeX and plain TeX. + +License + +This material is subject to the LaTeX Project Public License: +http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html + +Happy TeXing! +% +%<*internal> +\fi +\def\nameofplainTeX{plain} +\ifx\fmtname\nameofplainTeX\else + \expandafter\begingroup +\fi +% +%<*install> +\input docstrip.tex +\keepsilent +\askforoverwritefalse +\preamble +--------:| ---------------------------------------------------------------- +schemata:| Generic package to aid construction of topical categories + Author:| Charles P. Schaum + E-mail:| charles dot schaum at comcast dot net + License:| Released under the LaTeX Project Public License v1.3c or later + See:| http://www.latex-project.org/lppl.txt + +\endpreamble +\postamble + +Copyright (C) 2016 by Charles P. Schaum + +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: + +http://www.latex-project.org/lppl.txt + +This work is "maintained" (as per LPPL maintenance status) by +Charles P. Schaum. + +This work consists of the file schemata.dtx and a Makefile. +Running "make" generates the derived files README, schemata.pdf and schemata.sty. +Running "make inst" installs the files in the user's TeX tree. +Running "make install" installs the files in the local TeX tree. + +\endpostamble + +\usedir{tex/generic/schemata} +\generate{ + \file{\jobname.sty}{\from{\jobname.dtx}{package}} +} +% +%\endbatchfile +%<*internal> +\usedir{source/generic/schemata} +\generate{ + \file{\jobname.ins}{\from{\jobname.dtx}{install}} +} +\nopreamble\nopostamble +\usedir{doc/generic/schemata} +\generate{ + \file{README.txt}{\from{\jobname.dtx}{readme}} +} +\ifx\fmtname\nameofplainTeX + \expandafter\endbatchfile +\else + \expandafter\endgroup +\fi +% % \fi % % \iffalse %<*driver> \ProvidesFile{schemata.dtx} % -%\expandafter\ifx\csname newenvironment\endcsname\relax% -%\else -%\NeedsTeXFormat{LaTeX2e}[2005/12/01] +%\expandafter\ifx\csname newenvironment\endcsname\relax\else +%\NeedsTeXFormat{LaTeX2e}[1999/12/01] %\ProvidesPackage{schemata} %<*package> - [2013/09/23 v0.7 generic package to aid construction of topical categories] + [2016/01/25 v0.8 generic package to aid construction of topical categories] %\fi +%<*package> % -% %<*driver> -\documentclass{ltxdoc} +\documentclass[11pt]{ltxdoc} +\usepackage[textwidth=140mm,textheight=237mm,right=25mm,nohead]{geometry} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage{listingsutf8} \usepackage[polutonikogreek,american]{babel} \newcommand{\gk}[1]{\foreignlanguage{polutonikogreek}{#1}} -\usepackage{makeidx} \usepackage{mflogo} \usepackage{multicol} \usepackage[toc]{multitoc} -\usepackage{schemata}[2013/09/23] -\usepackage{hypdoc} -\makeindex -\frenchspacing +\usepackage[numbered]{hypdoc} +\usepackage{\jobname} +\lstset{ + basicstyle=\ttfamily\small, + gobble=2, + numbers=left, + stepnumber=1, + firstnumber=1, + numberfirstline=true +} \EnableCrossrefs \CodelineIndex \RecordChanges \begin{document} - \DocInput{schemata.dtx} - \PrintChanges - \PrintIndex + \DocInput{\jobname.dtx} \end{document} % % \fi % -% \CheckSum{628} +% \CheckSum{769} % % \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 @@ -78,270 +215,404 @@ % \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} % -% \DoNotIndex{\@Schem@, \@Schema, \@schem@, \@schema, \@schemab@x, \@schemabox, \Schem@, \schem@, \schemab@x, \bfseries, \bgroup, \catcode, \csname, \DeclareOption, \def, \dimen, \egroup, \else, \endcsname, \endinput, \ExecuteOptions, \expandafter, \fi, \futurelet, \gdef, \hbox, \hfil, \if, \ifcsname, \ifdim, \ifmmode, \ifx, \ignorespaces, \index, \itshape, \let, \newbox, \newcommand, \newdimen, \next, \Open, \Option, \PackageWarning, \ProcessOptions, \relax, \RequirePackage, \scshape, \setbox, \space, \testchar, \vbox, \vfil, \vskip} +% \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} % -% \GetFileInfo{schemata.dtx} -% \title{The \textsf{schemata} package} -% \author{Charles P. Schaum \\ \texttt{charles dot schaum at comcast dot net}} -% \date{\fileversion~from \filedate} -% \maketitle +%\title{\textsf{schemata} --- Generic package to aid construction of topical categories\thanks{This file +% describes version \fileversion, last revised \filedate.} +%} +%\author{Charles P. Schaum\thanks{E-mail: charles dot schaum at comcast dot net}} +%\date{Released \filedate} +% +%\maketitle % % \begin{abstract} -% \noindent The \textsf{schemata} package facilitates the creation of topical schemata, outlines that use braces (or facsimiles thereof) to illustrate the breakdown of concepts and categories in Scholastic thought from late medieval and early modern periods. This packages functions with both plain \TeX{} and \LaTeX. +% \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} % % \tableofcontents % % \section{Introduction} % -% This package emerged from my personal need to typeset diagrams based on seventeenth-century theology books. I have chosen to make it use a very ``bare-bones'' approach that is platform-agnostic in many cases, simple to implement, and immune to a number of special cases because it requires manual formatting. +% This package emerged from my personal need to typeset diagrams based on seventeenth-century theology books. I chose a ``bare-bones'' approach to make it platform-agnostic and simple to implement. % -% I would recommend that a package like \emph{TikZ}, \textsf{PSTricks}, \MP, or some other powerful solution may have advantages, especially for those seeking a top-to-bottom diagram, such as that in; \textsc{H.~Dembowski}, \emph{Einf{\"u}hrung in die Christologie} (Darmstadt, 1993), 146. This package is meant to be basic and available in minimal \TeX{} installations. +% I would recommend that a package like \emph{TikZ}, \textsf{PSTricks}, \MP, or some other powerful solution may have advantages over this one, especially for those seeking a top-to-bottom diagram, such as that in: \textsc{H.~Dembowski}, \emph{Einf{\"u}hrung in die Christologie} (Darmstadt, 1993), 146. % -% This package allows one to mimic (to some degree) the left-to-right schemata seen in books like the \emph{Loci Theologici} of Martin Chemnitz and the \emph{Clavis Scripturae Sacrae} of M. Flacius Illyricus. +% Nevertheless, many packages do not handle both open \emph{and} closed braces in a schema without a great amount of manual setup. This package uses math mode to do that, somewhat mimicking how a letterpress typesetter might design schemata for the works of Petrus Ramus, the \emph{Loci Theologici} of Martin Chemnitz, the \emph{Clavis Scripturae Sacrae} of Matthias Flacius Illyricus, and many others. +% \clearpage % % \section{Usage} % % \subsection{Package Options and Loading} % -% \LaTeX{} users can choose among three package options: |braces|, |brackets|, and |parens|. These set the defaults for the ``branches.'' If no options are chosen, the default is |braces|. Plain \TeX{} and \LaTeX{} users can use the |\DoBraces|, |\DoBrackets|, and |\DoParens| macros for the same effect. The default still remains braces.\\ +% This package basically is a ``wrapper'' that takes some of the work out of using \TeX{} math mode to create \emph{schemata} (plural of \gk{t'o sq~hma} or \emph{schema}, meaning \emph{form, shape, appearance, bearing, manner, fashion,} and so on). Such diagrams were used quite frequently to break down a main concept into its component parts and demonstrate the relationship among various components.\\ % +% The \textsf{schemata} package can be used with plain \TeX{} and \LaTeX: +% \begin{quote} % \begin{tabular}{ll} % Users of \LaTeX{} invoke: & |\usepackage[|\meta{options}|]{schemata}|\\[1ex] % Plain \TeX{} users will use: & |\input|\textvisiblespace|schemata.sty| % \end{tabular} +% \end{quote} % -% \subsection{Overview} +% \subsection{Macro Overview} +% +% \DescribeMacro{\DoBraces} +% \DescribeMacro{\DoBrackets} +% \DescribeMacro{\DoParens} +% \LaTeX{} users can choose among three global package options: |braces|, |brackets|, and |parens|. These set the defaults for the ``braces.'' If no options are chosen, the default is |braces|. Plain \TeX{} users get the same results by using \cmd{\DoBraces}, \cmd{\DoBrackets}, and \cmd{\DoParens}. These macros have the same effect as the package options. The default still remains braces, shown by the three examples below: +% \begin{displaymath} +% \schema{\schemabox{a}}{\schemabox{b}}\qquad \schema{\schemabox{a}}{\schemabox{b\\c}}\qquad \Schema{0ex}{2.3ex}{\schemabox{a}}{\Schema[close]{0ex}{2.4ex}{\schemabox{b\\c}}{\schemabox{d}}} +% \end{displaymath} +% The next three examples use \cmd{\DoBrackets} to get brackets instead: +% \begin{displaymath} +% \DoBrackets\schema{\schemabox{a}}{\schemabox{b}}\qquad \schema{\schemabox{a}}{\schemabox{b\\c}}\qquad \Schema{0ex}{2.4ex}{\schemabox{a}}{\Schema[close]{0ex}{2.3ex}{\schemabox{b\\c}}{\schemabox{d}}} +% \end{displaymath} +% The next three three use \cmd{\DoParens}: +% \begin{displaymath} +% \DoParens\schema{\schemabox{a}}{\schemabox{b}}\qquad \schema{\schemabox{a}}{\schemabox{b\\c}}\qquad \Schema{0ex}{2.4ex}{\schemabox{a}}{\Schema[close]{0ex}{2.3ex}{\schemabox{b\\c}}{\schemabox{d}}} +% \end{displaymath} +% All three macros should precede \cmd{\schema} and \cmd{\Schema} within a particular scope, and they remain in force within that scope unless changed. Additionally, \cmd{\DoBraces}, \cmd{\DoBrackets}, and \cmd{\DoParens} can change the style of ``brace'' within a schema. See Section~\ref{sec:multiple}, as well as the trivial example below: +% \begin{displaymath} +% \Schema{0ex}{2.4ex} +% {\schemabox{a}} +% {\DoParens\Schema[close]{0ex}{2.3ex} +% {\schemabox{b\\c}} +% {\schemabox{d}} +% } +% \end{displaymath} +% \begin{lstlisting} +% \Schema{0ex}{2.4ex} +% {\schemabox{a}} +% {\DoParens\Schema[close]{0ex}{2.3ex} +% {\schemabox{b\\c}} +% {\schemabox{d}} +% } +% \end{lstlisting} +% \clearpage % % \DescribeMacro{\schema} -% The ``simple'' form of a schema consists of one left-hand side containing vertically-centered vertical material, a brace, and one right-hand side containing vertically-centered vertical material: +% A ``simple'' schema has a left-hand side with vertically-centered vertical material, a brace, and a right-hand side with vertically-centered vertical material: % \begin{quote} % \cmd{\schema}\oarg{type}\marg{left-hand side}\marg{right-hand side} % \end{quote} -% The \meta{type} of a schema is |open| by default. Anything other than the exact string |open| will make it a ``closed'' schema where the left-hand side is bigger than the right and the direction of the brace reflects that. This approach is based on my experience that trying to figure out the size of left-hand and right-hand sides automatically can lead to strange corner cases. This manual solution recognizes that most schemata read and open from left to right. +% The \meta{left-hand side} and \meta{right-hand side} are vertical material in order to allow a \cmd{\smallskip} or other vertical adjustment as needed.\medskip % -% The \meta{left-hand side} and \meta{right-hand side} are vertically-centered material in a |\vbox|. This is intentional because one might want to insert a |\smallskip| or other adjustment as needed. One can put whatever is desired in these arguments. An example in \LaTeX{} might be a one-column tabular environment, e.g.: -% \begin{multicols}{2} -% \noindent Code:\\[2ex] -% |\schema%|\\ -% |{%|\\ -% | \hbox{\begin{tabular}{@{}l@{}}|\\ -% | This conists\\|\\ -% | of stuff|\\ -% | \end{tabular}}|\\ -% |}%|\\ -% \noindent|{%|\\ -% | \schemabox{%|\\ -% | And here\\|\\ -% | we have\\|\\ -% | more stuff%|\\ -% | }%|\\ -% |}|\\ -% \columnbreak\\ -% \noindent Result:\\[2ex] -% \schema% -% {% -% \hbox{\begin{tabular}{@{}l@{}} -% This conists\\ -% of stuff\\ -% \end{tabular}} -% }% -% {% -% \schemabox{% -% And here\\ -% we have\\ -% more stuff% -% }% -% } +% The \meta{type} of a schema is |open| (to the right) by default: \schema{\SwitchSB\schemabox{a}}{\SwitchSB\schemabox{b\\c}}\medskip % -% \noindent Note how the results of the two sides are similar. In fact, if one uses a |p{|\meta{width}|}| argument with a tabular, one will get similar results seen with a |\schemabox| using a width argument. The formar still must be enclosed in an |\hbox|. The latter is intended for use in plain \TeX. +% Any value of \meta{type} other than |open| makes a ``closed'' schema: \schema[r]{\NudgeSB\SwitchSB\schemabox{b\\c}}{\SwitchSB\schemabox{a}}\medskip +% +% In practice, \cmd{\schema} does not nest, so it is only useful for the right-hand ``leaves'' of a large schema. That makes formatting the ``leaves'' faster. Thus the \cmd{\schema} macro is used only in the framed boxes below:\\ +% +% \leavevmode\hfill\parbox{0.15\textwidth}% +% {% +% \Schema{-1ex}{4.2ex} +% { +% \schemabox{\dots a} +% } +% { +% \vbox{\noindent% +% \fbox{\schema{\schemabox{b}}{\SwitchSB\schemabox{c\\d}}}\\[1ex] +% \fbox{\schema{\schemabox{e}}{\schemabox{f\\g}} +% } +% } +% } +% }\hfill% +% \parbox{0.6\textwidth}{Observe how the automatic sizing of \cmd{\schema} changes, depending on the height, depth, and even context of the letters. Avoid \cmd{\schema} if you need multiple copies of an example to look exactly alike. Section~\ref{sec:tweakschema} gives more details on tweaking \cmd{\schema} as needed.}\\\bigskip % -% The |\schemabox| macro is a ``stack'' of |\hbox| content within a |\vbox|. We will cover it below after we introduce the |\Schema| macro. -% \end{multicols} -% \clearpage % \DescribeMacro{\Schema} -% The ``complex'' form of a schema consists of one left-hand side containing vertically-centered vertical material, a brace, and one right-hand side of vertically-centered vertical material: +% The ``complex'' form of a schema also has a left-hand side with vertically-centered vertical material, a brace, and a right-hand side of vertically-centered vertical material, along with two arguments that adjust the brace: % \begin{quote} % \cmd{\Schema}\oarg{type}\marg{adjust}\marg{size}\marg{left-hand side}\marg{right-hand side} % \end{quote} -%The \meta{type} of a schema is |open| by default. Anything other than the exact string |open| will make it a ``closed'' schema as above. +%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} should be expressed in ``ex'', loosely interpreted as multiples of lines. Since an |hbox{\strut}| is 2.88538 ex high and |\vcenter| halves vertical height, the values are multiplied internally by 1.44265. +%Both \meta{adjust} and \meta{size} are dimensions that are expressed best with the unit ``ex.'' This allows for easier scaling of the schema. % -%Actually, \meta{adjust} must be \emph{double} the number of ``ex'' lines that a brace must go up (negative value) or down (positive value). By making one enter |-5ex| to pull a brace up 2.5 lines, one can use a whole number instead of entering many decimals. +% Set \meta{adjust} to move the brace up (negative value) or down (positive value). Set \meta{size} to be a number of ex nearly equal to the number of lines that the brace should span. The value of \meta{size} is converted into an absolute value. % -% {\bfseries Note:} The value of \meta{size} always should be positive.\smallskip +% Using \cmd{\Schema} allows one to adjust the brace height and centering manually. This is the only way to work around the way that \cmd{\schema} automatically adjusts for the height of everything on the open side of a brace. This is also the only way to get multiple examples of the same schema or similar schemata to look similar. % -% Admittedly, this method is nothing short of ugly. Yet it scales quite well and allows one to guess lengths by counting lines (even in the source) instead of measuring printed or displayed output.\\ +% Admittedly, this method is nothing short of ugly. Perhaps its only redeeming feature is that you can count lines of text to get a rough estimate of adjustments. Yet source texts from the seventeenth century often present schemata that can evade an easy, automatic solution, \emph{e.g.}: +% +% \begin{displaymath} +% \Schema[close]{0ex}{5.1ex} +% { +% \Schema{0.1ex}{3.8ex} +% { +% \SwitchSB\schemabox{main idea}% +% } +% { +% \schema{\schemabox{part}}{\SwitchSB\NudgeSB\schemabox{detail\\detail}}\smallskip +% \schema{\schemabox{part}}{\SwitchSB\NudgeSB\schemabox{detail\\detail}} +% } +% } +% { +% \Schema{0ex}{3.8ex} +% { +% \schemabox{synonym}% +% } +% { +% \schema{\schemabox{part}}{\SwitchSB\schemabox{detail\\detail}}\smallskip +% \schema{\schemabox{part}}{\SwitchSB\schemabox{detail\\detail}} +% } +% } +% \end{displaymath} +% \clearpage % % \DescribeMacro{\schemabox} -% This box stacks one or more lines of |\hbox|-enclosed material in a |\vbox|. It redefines the control sequence |\\| in a manner that terminates the current |\hbox| and begins a new one. +% When in a \cmd{\schema} or a \cmd{\Schema}, this box stacks one or more lines of \cmd{\hbox}-enclosed material in a \cmd{\vbox.} It redefines the control sequence |\\| in a manner that terminates the current \cmd{\hbox} and begins a new one, with some options that can be modified (Section~\ref{sec:tweakschema}). Its syntax is: % \begin{quote} % \cmd{\schemabox}\oarg{width}\marg{text} % \end{quote} -% The \meta{width} of a |\schemabox| is a dimension, e.g. 3cm. No wrapping takes place. Each line of \meta{text} must be terminated explicitly by |\\|, except the final line. The first line of a |\schemabox| inserts a |\strut| for aesthetic reasons. +% The \meta{width} of a \cmd{\schemabox} is a dimension, \emph{e.g.}, 3cm. No wrapping (as in a \cmd{\parbox}) takes place. If there are more than one line of text, each line of \meta{text} must be terminated explicitly by |\\|, except the final line. Usually, the first line of a \cmd{\schemabox} inserts a \cmd{\strut} for aesthetic reasons. +% +% When \cmd{\schemabox} occurs apart from internal vertical mode, it ignores \meta{width} and merely reproduces \meta{text}. With |\schemabox{blah}| you just get ``\schemabox{blah}.''\\ % -% Certainly, it is not mandatory to use a |\schemabox|. Indeed, anything that creates a box whose width is smaller than |\textwidth| can be useful. For example, one can create 1cm$^2$ boxes:\\[1ex] -% | \def\Box{\hbox{\vrule\vbox to 1cm{%|\\ -% | \hrule\hbox to 1cm{\hfil}\vfil\hrule}\vrule}}|\\ +% Certainly, one need not use a \cmd{\schemabox}, for example:\\ +% \begin{lstlisting} +% \def\Box{% +% \hbox{% +% \vrule% +% \vbox to 1cm{\hrule\hbox to 1cm{\hfil}\vfil\hrule}% +% \vrule% +% }% +% } +% \end{lstlisting}% % \def\Box{\hbox{\vrule\vbox to 1cm{\hrule\hbox to 1cm{\hfil}\vfil\hrule}\vrule}} +% \begin{multicols}{2}[\columnsep=30pt] +% \hbox{}\bigskip +% \begin{lstlisting}[firstnumber=8] +% \schema{\Box}{\Box} +% \end{lstlisting} +% \hbox{}\bigskip\bigskip +% \begin{lstlisting}[firstnumber=9] +% \schema{\Box}{\Box\Box} +% \end{lstlisting} +% \hbox{}\vfil +% \begin{lstlisting}[firstnumber=10] +% \Schema{-0.2ex}{0.9cm} +% {\Box} +% { +% \Schema[close]{-0.2ex}{0.9cm} +% {\Box\hbox{\Box\kern0.2em}} +% {\Box} +% } +% \end{lstlisting} +% \hbox{} +% \columnbreak +% \hbox{} +% \schema{\Box}{\Box} +% \hbox{} +% +% \schema{\Box}{\Box\Box} +% \hbox{} +% +% \Schema{-0.2ex}{0.9cm} +% {\Box} +% { +% \Schema[close]{-0.2ex}{0.9cm} +% {\Box\hbox{\Box\kern0.2em}} +% {\Box} +% } +% \end{multicols} +% Both \cmd{\schema} and \cmd{\Schema} are vertical, so they will stack vertically if invoked sequentially outside of a tabular environment, display math, and so on, that can be used to display schemata horizontally. % -% \begin{tabular}{lll} -% \schema{\Box}{\Box} & \schema{\Box}{\Box\Box} & \Schema{-0.2ex}{0.9cm}{\Box}{\Schema[close]{-0.2ex}{0.9cm}{\Box\hbox{\Box\kern0.2em}}{\Box}}\\ -% \end{tabular} +% If one does not use ``ex'' height for \meta{size} in a \cmd{\Schema}, one should specify a \meta{size} slightly less than half the height of the contents. Above, a \meta{size} of 0.9cm suffices for a content of 2cm. Using ``ex'' height is meant to simplify sizing content according to lines of text. % -% \medskip\noindent Both |\schema| and |\Schema| are vertical, so they will stack vertically if invoked sequentially. A |tabular| environment prevented that stacking above. If one does not use ``ex'' height for \meta{size} in a |\Schema|, one should specify a \meta{size} slightly less than half the height of the contents. Above, a \meta{size} of |0.9cm| suffices for a content of |2cm|. This approach is meant to facilitate sizing content according to lines of text, which is what schemata usually hold. +% A kern of 0.2em was added in the final snippet above to offset an automatic kern of -0.2em added between the left-hand material and the brace in a closed schema. More on that is given under \cmd{\NudgeSB} in the next section. +% \clearpage % -% \subsection{Tutorial} +% \subsection{Romancing the \texttt{\textbackslash schema}} +% \label{sec:tweakschema} % -% \subsubsection{Starting Off Basic} +% \DescribeMacro{\LCschema} +% \DescribeMacro{\UCschema} +% By default, a \cmd{\schemabox} adds a \cmd{\strut} to the first line because it is often the case that the topics in a schema start in some fashion with a capital letter. To have braces in a \cmd{\schema} that are big enough, you need that \cmd{\strut.} % -% Imagine that you are using a computer to simulate the physical typesetting of a seventeenth-century schema. To begin with, you try the following schema: -% \begin{multicols}{2} -% \noindent Code:\\[2ex] -% |\schema{a}{b\\c}|\\ -% \noindent Result:\\[2ex] -% \schema{a}{b\\c} -% \end{multicols} -% \noindent That did not go well. Then you remember this weird |\schemabox| that just might work. You |\let| the control sequence to the shorter |\SB| and you get: -% \begin{multicols}{2} -% \noindent Code:\\[2ex] -% |\let\SB\schemabox|\\ -% |\schema{\SB{a}}{\SB{b\\c}}|\\ -% \noindent Result:\\[2ex] -% \let\SB\schemabox -% \schema{\SB{a}}{\SB{b\\c}} -% \end{multicols} +%If the first letter is not a capital or if the text seems a little off-center, you can turn off this default feature of \cmd{\schemabox} by placing \cmd{\LCschema} immediately before it. \cmd{\LCschema} will prevent all subsequent uses of \cmd{\schemabox} from adding \cmd{\strut} until you restore the default behavior with \cmd{\UCschema}, also best placed before the intended \cmd{\schemabox}. % -% \noindent Now we are getting somewhere! Note that the side of the schema that ``opens up'' really should be more than one line high:\\ +% Here is an example where an entire schema is in lowercase, so instead of placing \cmd{\LCschema} and \cmd{\UCschema} before a particular \cmd{\schemabox}, we put the two macros before and after the \cmd{\Schema}: % -% \noindent\begin{tabular}{lllllllll} -% \schema{\schemabox{a}}{\schemabox{b}} & \schema{\schemabox{a}}{\schemabox{b\\c}} & \Schema{0ex}{2ex}{\schemabox{a}}{\Schema[close]{0ex}{2ex}{\schemabox{b\\c}}{\schemabox{d}}} & \DoBrackets \schema{\schemabox{a}}{\schemabox{b}} & \DoBrackets \schema{\schemabox{a}}{\schemabox{b\\c}} & \DoBrackets \Schema{0ex}{2ex}{\schemabox{a}}{\Schema[close]{0ex}{2ex}{\schemabox{b\\c}}{\schemabox{d}}} & \DoParens \schema{\schemabox{a}}{\schemabox{b}} & \DoParens \schema{\schemabox{a}}{\schemabox{b\\c}} & \DoParens \Schema{0ex}{2ex}{\schemabox{a}}{\Schema[close]{0ex}{2ex}{\schemabox{b\\c}}{\schemabox{d}}}\\ -% \end{tabular}\\ +% \begin{lstlisting} +% \LCschema% +% \Schema{0.1ex}{4.8ex} +% {\hbox{sensus literalis}} +% { +% \schema{\schemabox{sensus\\literalis\\(improprie)}} +% {\schemabox{ex parallelismo clarior\\ +% ex analogia fidei\\ex evidentia rei}} +% \smallskip\schemabox{sensus literae} +% } +% \UCschema% +% \end{lstlisting} % -% \noindent\DescribeMacro{\DoBraces} The left three examples use braces. This is the default, but it is also triggered by |\DoBraces|. \DescribeMacro{\DoBrackets} The center three examples are achieved with |\DoBrackets|. \DescribeMacro{\DoParens} The right three result from using |\DoParens|. All three macros should precede |\schema| and |\Schema| within a particular scope, and they remain in force in that scope unless changed. A height of 1.44265ex is added automatically to the height of the delimiters to aid the appearance of multi-line schemata. +% \noindent The foregoing example produces the following: +% \begin{displaymath} +% \LCschema% +% \Schema{0.1ex}{4.8ex} +% {\hbox{sensus literalis}} +% { +% \schema{\schemabox{sensus\\literalis\\(improprie)}} +% {\schemabox{ex parallelismo clarior\\ +% ex analogia fidei\\ex evidentia rei}} +% \smallskip\schemabox{sensus literae} +% } +% \UCschema% +% \end{displaymath} % -% \subsubsection{\emph{Loci} 101} +% \DescribeMacro{\SwitchSB} The macro \cmd{\SwitchSB} causes a particular \cmd{\schemabox} to do the opposite of whatever \cmd{\LCschema} and \cmd{\UCschema} call for. It should be placed immediately before the \cmd{\schemabox} to be affected and its effect is reset thereafter. % -% Since we know something about schemata and how to do them, let's try a few examples from \emph{Loci Theologici}. We begin with this simple example:\\ +% 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. % -%\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.} -% } -%} +% Also remember that you can add \cmd{\strut} as needed to make manual adjustments.\\ % -% Something is off here. The ``simple'' schema automatically adjusts the brace height to the right-hand side. But that includes the \emph{entire} right-hand side. Moreover, |\schema| will produce cumulatively larger braces when nesting. +% \DescribeMacro{\NudgeSB} The macro \cmd{\NudgeSB} is another ``per-use'' macro that causes a particular \cmd{\schemabox} to add a 0.2em kern at the end of every line of text. This is meant to be used especially with left-hand-side material in a closed \cmd{\schema} or \cmd{\Schema} because they use a -0.2em kern to draw the braces closer to the box. That is because many lines of text in schemata terminate with punctuation. The negative kern is a default way to prevent too much white space. % -% This package requires the user to make manual alignment and adjustment to the braces when the entire right-hand side is not to be enclosed. This is because one might insert vertical space at various points that make automatic calculation of brace height somewhat less than trivial. This example is fairly simple and requires only two changes at the places indicated, namely: +% When no punctuation is there and more white space is desired, \cmd{\NudgeSB} gets the text to be the same distance from the brace as the right-hand-side material. \cmd{\NudgeSB} should be placed immediately before the \cmd{\schemabox} to be affected and, like \cmd{\SwitchSB}, it is reset thereafter. % -% \bgroup\footnotesize% +% \subsection{Tutorial} +% +% \subsubsection{Starting Off Basic} +% +% So you want to typeset a seventeenth-century schema. You try the following: % \begin{multicols}{2} -%\noindent|\schema% Change to \Schema{-1ex}{8.6ex}|\\ -%|{%|\\ -%| \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.}|\\ -%| }% Add\smallskip here|\\\columnbreak\\ -%| \schema|\\ -%| {%|\\ -%| \schemabox{\textsc{Voluntatem},\\|\\ -%| manifestatam in\\|\\ -%| operibus ad extra;\\|\\ -%| ut in}|\\ -%| }|\\ -%| {%|\\ -%| \schemabox{Creatione.\\|\\ -%| Sustentatione natur\ae{} %|\\ -%| laps\ae{}.\\|\\ -%| Reparatione.\\|\\ -%| Conversione.\\|\\ -%| Justificatione.\\|\\ -%| Sanctificatione \&\\|\\ -%| Glorificatione ejusdem.}|\\ -%| }|\\ -%|}|\\ +% \begin{lstlisting} +% \schema{a}{b\\c} +% \end{lstlisting} +% \parbox{0.8\columnwidth}{\schema{a}{b\\c}} +% \end{multicols} +% \noindent That went badly. Then you remember that schemata hold internal vertical material and need something to organize the horizontal text in such a list. This weird \cmd{\schemabox} thing should do: +% \begin{multicols}{2} +% \begin{lstlisting} +% \schema +% {\schemabox{a}} +% {\schemabox{b\\c}} +% \end{lstlisting} +% \schema +% {\schemabox{a}} +% {\schemabox{b\\c}} % \end{multicols} -% \egroup % -% \noindent The commented text |% Add\smallskip here| at the bottom of the left column indicates where a little vertical space between the right-hand ``leaves'' of the ``tree'' might help. We remove the comment and insert a |\smallskip|. The general rule is:\\ +% \noindent Now we are getting somewhere! The ``big'' side of the schema really should be more than one line high. Otherwise just use inline math mode or text. % -% \noindent\ \ |\schema|\dots\marg{right-hand side}\meta{vert-space} +% \subsubsection{\emph{Loci} 101} % -% \noindent\ \ |\Schema|\dots\marg{right-hand side}\meta{vert-space}\\ +% Let's try a few examples from \emph{Loci Theologici}. We begin with this example, using only the \cmd{\schema} macro: % -% \noindent One also may insert space within a |\schemabox|, but one should avoid doing that in either the first or last lines when inside a |\schema|. +% \begin{lstlisting}[basicstyle=\ttfamily\footnotesize] +% \schema +% { +% \schemabox{Subjectum theo-\\ +% logi\ae{} est Notitia\\ +% Dei. Considerat\\ +% ergo, Dei, vel} +% } +% { +% \schema +% { +% \schemabox{\textsc{Essentiam},} +% } +% { +% \schemabox{Unitate natur\ae{}.\\ +% Trinitate personarum.\\ +% Operibus ad intra.} +% } +% \schema +% { +% \schemabox{\textsc{Voluntatem},\\ +% manifestatam in\\ +% operibus ad extra;\\ +% ut in} +% } +% { +% \schemabox{Creatione.\\ +% Sustentatione natur\ae{} laps\ae{}.\\ +% Reparatione.\\ +% Conversione.\\ +% Justificatione.\\ +% Sanctificatione \&\\ +% Glorificatione ejusdem.} +% } +% } +% \end{lstlisting} % -% Having adjusted the ``leaves,'' we now work toward the ``root.'' The |\Schema| macro requires manual brace adjustment and sizing. It is best used in cases where either the left or right-hand sides include a |\schema| or a |\Schema|. Manual adjustment is achieved by counting lines, estimating, and refining the estimate. +% \begin{displaymath} +% \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{displaymath} +% Something is off here. The ``simple'' schema automatically adjusts the brace height to the right-hand side. But that includes the \emph{entire} right-hand side. Moreover, \cmd{\schema} will produce cumulatively larger braces when nesting. +% +% We have two ``leaves'' on the right-hand side, so we only have one \cmd{\schema} to change into a \cmd{\Schema}. We also add a \cmd{\smallskip} to separate the ``leaves.'' We change the following two lines above: % -% Even in the source above, one can estimate eight lines of output text from ``\textsc{Essentiam}'' down to ``ut in.'' Set \meta{size} to |8ex| and \meta{adjust} to |0ex|. The large brace will be a little too low. Set \meta{adjust} to |-1ex| to raise the brace about half a line and to lower the left-hand side about half a line, keeping everything centered. Finally, setting \meta{size} to |8.6ex| gives a better result. +% \begin{lstlisting} +% \Schema{-1ex}{8.7ex} +% \end{lstlisting} % -%\Schema{-1ex}{8.6ex} -%{% -% \schemabox{Subjectum theo-\\ +% \begin{lstlisting}[firstnumber=17] +% }\smallskip +% \end{lstlisting} +% \begin{displaymath} +% \Schema{-1ex}{8.7ex} +% { +% \schemabox{Subjectum theo-\\ % logi\ae{} est Notitia\\ % Dei. Considerat\\ % ergo, Dei, vel} -%} -%{% -% \schema -% {% -% \schemabox{\textsc{Essentiam},} -% } -% {% -% \schemabox{Unitate natur\ae{}.\\ +% } +% { +% \schema +% { +% \schemabox{\textsc{Essentiam},} +% } +% { +% \schemabox{Unitate natur\ae{}.\\ % Trinitate personarum.\\ % Operibus ad intra.} -% }\smallskip -% \schema -% {% +% }\smallskip +% \schema +% { % \schemabox{\textsc{Voluntatem},\\ % manifestatam in\\ % operibus ad extra;\\ % ut in} -% } -% {% -% \schemabox{Creatione.\\ +% } +% { +% \schemabox{Creatione.\\ % Sustentatione natur\ae{} % % laps\ae{}.\\ % Reparatione.\\ @@ -349,665 +620,570 @@ % Justificatione.\\ % Sanctificatione \&\\ % Glorificatione ejusdem.} -% } -%}\medskip -% -% \noindent Many schemata, such as ones that illustrate the relationship of figures and tropes to the literal sense of a text, are no more complex than this: -% -% \begin{displaymath} -% \LCschema% -% \Schema{0ex}{4.8ex} -% {\hbox{sensus literalis}} -% {% -% \schema{\schemabox{sensus\\literalis\\(improprie)}}% -% {\schemabox{ex parallelismo clarior\\ex analogia fidei\\ex evidentia rei}}% -% \smallskip\schemabox{sensus literae} +% } % } -% \UCschema% -% \end{displaymath} -% |\LCschema%|\\ -% |\Schema{-1ex}{5ex}|\\ -% |{\hbox{Sensus literalis}}|\\ -% |{%|\\ -% | \schema{\schemabox{Sensus\\literalis\\(improprie)}}%|\\ -% | {\schemabox{Ex parallelismo clarior\\%|\\ -% | Ex analogia fidei\\Ex evidentia rei}}%|\\ -% | \medskip\schemabox{Sensus literae}|\\ -% |}|\\ -% |\UCschema%|\\[2ex] -% \DescribeMacro{\LCschema} -% \DescribeMacro{\UCschema} -% By default, a |\schemabox| automatically adds a |\strut| to the first line because it is often the case that the topics in a schema start in some fashion with a capitalized letter. Using |\Schema| allows one to manually adjust the brace height, but |\schema|, as used above, looks wrong with the lowercase content unless one uses |\LCschema| in order to suppress adding a |\strut|. |\UCschema| restores the default. +%\end{displaymath} % -% \DescribeMacro{\SwitchSB} |\SwitchSB| is a ``per-use'' macro that causes a particular |\schemabox| to do the opposite of whatever |\LCschema| and |\UCschema| call for. It should be placed immediately before the |\schemabox| and is reset thereafter. +% Now that looks better! We added a \cmd{\smallskip} at the end of the right-hand side material of a \cmd{\schema} to space out the ``leaves.'' That usually is the best practice in spacing out elements. You cannot put \cmd{\smallskip} and the like into a \cmd{\schemabox} in plain \TeX, and usually you want to avoid doing so in the first or last lines of a \cmd{\schemabox} in \LaTeX{} to aid proper centering. % -% This still does not correct for the fact that |\schema| adjusts its height with respect to the ascenders and descenders, not the height of the first letter. Inserting |\vskip-0.8ex| before |\schemabox{Ex parallelismo|\dots{} causes the material in the |\schema| to look centered on the first letters. Still, if one must go to all that trouble, one could easily use |Schema|. +% Always work from right to left when adjusting the spacing of a schema. Start from the ``leaves'' and work to the ``root.'' % -% This example also shows that one can have a heterogeneous collection of vertically-centered material within the LHS and RHS braces of |\Schema|. Doing that with |\schema| is not recommended. +% The \cmd{\Schema} macro requires manual brace adjustment and sizing. Count the lines of text, estimate, then revise. Here we have between eight and nine lines of text from ``\textsc{Essentiam}'' down to ``ut in.'' First set the \meta{size} to |8.5ex| and \meta{adjust} to |0ex|. The large brace will be a little too low. Set \meta{adjust} to |-1ex| to raise the brace about half a line and to lower the left-hand side about half a line, keeping everything centered. Finally, set \meta{size} to |8.7ex| or to taste. +% +% \textbf{Changes in \TeX{} distributions can change font metrics and thus, the metrics of your schemata.} % \clearpage % % \subsubsection{Going Big} % -% We begin with the following example, where the |\Schema| braces all have dummy values of |0ex| \meta{adjust} and |5ex| \meta{size}. Perhaps the indentation helps to give a sense of the nesting and how the result might end up: +% We begin with the following example, where the \cmd{\Schema} braces all have dummy values of |0ex| \meta{adjust} and |5ex| \meta{size}. Please do not be alarmed at how bad this looks right now! % -% \bgroup\footnotesize% -% \begin{multicols}{2} -%\noindent |\Schema{0ex}{5ex}|\\ -%|{%|\\ -%| \schemabox{Subjectum \& summa\\|\\ -%| univers\ae{} Scriptur\ae{},\\|\\ -%| est \textsc{Cognitio} vel}|\\ -%|}|\\ -%|{%|\\ -%| \Schema{0ex}{5ex}|\\ -%| {%|\\ -%| \schemabox{\textsc{Dei}, qualis\\|\\ -%| sit, aut}|\\ -%| }|\\ -%| {%|\\ -%| \schema|\\ -%| {\schemabox{\textsc{Per se}:\\ scilicet.}}|\\ -%| {%|\\ -%| \schemabox{Unus in essentia.\\|\\ -%| Trinus in personis.}|\\ -%| }|\\ -%| \schema|\\ -%| {\schemabox{Ad hominem\\ quem vel}}|\\ -%| {%|\\ -%| \schemabox{Accusat \& terret, %|\\ -%| \textsc{Per Legem},\\|\\ -%| Consolatur \& erigit, %|\\ -%| \textsc{Per Evangelium}.\\|\\ -%| Salvat, \textsc{Per Christum}.\\|\\ -%| Renovat, \textsc{Per Spiritum%|\\ -%| Sanctum}.\\|\\ -%| Sanctificat, \textsc{Per Verbum} \& %|\\ -%| \textsc{Sacramenta}.\\|\\ -%| Castigat, tentat \& exercet, %|\\ -%| \textsc{Per Crucem}.\\|\\ -%| Glorificat \textsc{Per %|\\ -%| Resurrectionem Carnis}\\|\\ -%| \textsc{Ad Vitam \AE{}ternam}.}|\\ -%| }|\\ -%| }|\\ -%| \Schema{0ex}{5ex}|\\ -%| {%|\\ -%| \schemabox|\\ -%| {%|\\ -%| \textsc{Hominis},\\ qualis sit|\\ -%| }|\\ -%| }|\\ -%| {%|\\ -%| \Schema{0ex}{5ex}|\\ -%| {\schemabox{\textsc{Per se}:}}|\\ -%| {%|\\ -%| \schemabox{Ante lapsum.}|\\ -%| \schema|\\ -%| {\schemabox{Post lapsum:}}|\\ -%| {%|\\ -%| \schemabox{Ante Regenerationem \&\\|\\ -%| Renovationem S. Sancti.}|\\ -%| \schemabox{Post Regenerationem \&\\|\\ -%| Renovationem S. Sancti.}|\\ -%| }|\\ -%| }|\\ -%| \Schema{0ex}{5ex}|\\ -%| {\schemabox{Ad}}|\\ -%| {%|\\ -%| \schema|\\ -%| {\schemabox{\textsc{Deum}}}|\\ -%| {%|\\ -%| \schemabox{P\oe{}nitentia agens, %|\\ -%| agnitis peccatis \&\\|\\ -%| ira Dei cognita \textsc{Ex Lege}.\\|\\ -%| Erigens se \textsc{Voce Evangelii}.\\|\\ -%| Credens \textsc{In Christum Salvatorem}.\\|\\ -%| Non repugnans \textsc{Spiritui Sancto} %|\\ -%| impellenti.\\|\\ -%| Audiens \textsc{Verbum}: \& utens %|\\ -%| \textsc{Sacramentis}.\\|\\ -%| Patienter \& constanter sufferens %|\\ -%| \textsc{Crucem}.\\|\\ -%| Sperans \& expectans glorificationem\\|\\ -%| \textsc{In Resurrectione Carnis}\\|\\ -%| \textsc{Ad Vitam \AE{}ternam}.}|\\ -%| }|\\ -%| \schema|\\ -%| {\schemabox{seipsum ratione}}|\\ -%| {\schemabox{Anim\ae{}\\ vel\\ Corporis}}|\\ -%| \Schema{0ex}{5ex}|\\ -%| {\schemabox{Proximum,}}|\\ -%| {%|\\ -%| \schema|\\ -%| {\schemabox{Amicum ra-\\ tione vel}}|\\ -%| {%|\\ -%| \schemabox{Religionis.\\|\\ -%| Politic\ae{} \& \OE{}conomic\ae{}.\\|\\ -%| Cognationis.\\|\\ -%| Agnationis.}|\\ -%| }|\\ -%| \schemabox{Inimicum.}|\\ -%| }|\\ -%| }|\\ -%| }|\\ -%|}|\\ -% \end{multicols} -%\egroup -%\clearpage -% Below is the result of that code (with additions for spacing). It looks pretty bad, except where the |\schema| macros have extended their braces. Think of a |\schema| as a ``leaf'' on the right-hand side and you get the idea.\\ -% -% \bgroup\footnotesize% -%\Schema{0ex}{5ex} -%{% -% \schemabox{Subjectum \& summa\\ +% \begin{displaymath}\bgroup\footnotesize% +% \Schema{0ex}{5ex} +% { +% \schemabox{Subjectum \& summa\\ % univers\ae{} Scriptur\ae{},\\ % est \textsc{Cognitio} vel} -%} -%{% -% \Schema{0ex}{5ex} -% {% -% \schemabox{\textsc{Dei}, qualis \\% -% sit, aut} -% } -% {% -% \schema -% {\schemabox{\textsc{Per se}:\\ scilicet.}} -% {% -% \schemabox{Unus in essentia.| <---space|\\% -% Trinus in personis.| <---space|} -% } -% \schema -% {\schemabox{Ad hominem\\ quem vel}} -% {% -% \schemabox{Accusat \& terret, % -% \textsc{Per Legem},\\ -% Consolatur \& erigit, % -% \textsc{Per Evangelium}.\\ -% Salvat, \textsc{Per Christum}.\\ -% Renovat, \textsc{Per Spiritum% -% Sanctum}.\\ -% Sanctificat, \textsc{Per Verbum} \& % -% \textsc{Sacramenta}.\\ -% Castigat, tentat \& exercet, % -% \textsc{Per Crucem}.\\ -% Glorificat \textsc{Per % -% Resurrectionem Carnis}\\ -% \textsc{Ad Vitam \AE{}ternam}.| <---space|} -% } -% } -% \Schema{0ex}{5ex} -% {% -% \schemabox -% {% -% \textsc{Hominis},\\ qualis sit -% } -% } -% {% -% \Schema{0ex}{5ex} -% {\schemabox{\textsc{Per se}:}} -% {% -% \schemabox{Ante lapsum.| <---space|} -% \schema -% {\schemabox{Post lapsum:}} -% {% -% \schemabox{Ante Regenerationem \&\\ -% Renovationem S. Sancti.| <---space|} -% \schemabox{Post Regenerationem \&\\ -% Renovationem S. Sancti.| <---space|} -% } -% } -% \Schema{0ex}{5ex} -% {\schemabox{Ad}} -% {% -% \schema -% {\schemabox{\textsc{Deum}}} -% {% -% \schemabox{P\oe{}nitentia agens, % -% agnitis peccatis \&\\ -% ira Dei cognita \textsc{Ex Lege}.\\ -% Erigens se \textsc{Voce Evangelii}.\\ -% Credens \textsc{In Christum Salvatorem}.\\ -% Non repugnans \textsc{Spiritui Sancto} % -% impellenti.\\ -% Audiens \textsc{Verbum}: \& utens % -% \textsc{Sacramentis}.\\ -% Patienter \& constanter sufferens % -% \textsc{Crucem}.\\ -% Sperans \& expectans glorificationem\\ -% \textsc{In Resurrectione Carnis}\\ -% \textsc{Ad Vitam \AE{}ternam}.| <---space|} -% } -% \schema -% {\schemabox{seipsum ratione}} -% {\schemabox{Anim\ae{}\\ vel\\ Corporis| <---space|}} -% \Schema{0ex}{5ex} -% {\schemabox{Proximum,}} -% {% -% \schema -% {\schemabox{Amicum ra-\\ tione vel}} -% {% -% \schemabox{Religionis.\\ -% Politic\ae{} \& \OE{}conomic\ae{}.\\ -% Cognationis.\\ -% Agnationis.| <---space|} -% } -% \schemabox{Inimicum.} -% } -% } -% } -%} -%\egroup\vspace{2ex} -%\noindent The first order of business is to determine the spacing of the ``leaves'' of the tree, both within and between schemata. The places where one might wish to add vertical space are indicated by |<---space| in the figure above. +% } +% { +% \Schema{0ex}{5ex} +% { +% \schemabox{\textsc{Dei}, qualis \\ sit, aut} +% } +% { +% \schema +% {\schemabox{\textsc{Per se}:\\ scilicet.}} +% { +% \schemabox{Unus in essentia.} +% \schemabox{Trinus in personis.} +% } +% \schema +% {\schemabox{Ad hominem\\ quem vel}} +% { +% \schemabox{Accusat \& terret, \textsc{Per Legem},\\ +% Consolatur \& erigit, \textsc{Per Evangelium}.\\ +% Salvat, \textsc{Per Christum}.\\ +% Renovat, \textsc{Per Spiritum Sanctum}.\\ +% Sanctificat, \textsc{Per Verbum} \& \textsc{Sacramenta}.\\ +% Castigat, tentat \& exercet, \textsc{Per Crucem}.\\ +% Glorificat \textsc{Per Resurrectionem Carnis}\\ +% \textsc{Ad Vitam \AE{}ternam}.} +% } +% } +% \Schema{0ex}{5ex} +% { +% \schemabox{\textsc{Hominis},\\ qualis sit} +% } +% { +% \Schema{0ex}{5ex} +% {\schemabox{\textsc{Per se}:}} +% { +% \schemabox{Ante lapsum.} +% \schema +% {\schemabox{Post lapsum:}} +% { +% \schemabox{Ante Regenerationem \&\\ +% Renovationem S. Sancti.} +% \schemabox{Post Regenerationem \&\\ +% Renovationem S. Sancti.} +% } +% } +% \Schema{0ex}{5ex} +% {\schemabox{Ad}} +% { +% \schema +% {\schemabox{\textsc{Deum}}} +% { +% \schemabox{P\oe{}nitentia agens, agnitis peccatis \&\\ +% ira Dei cognita \textsc{Ex Lege}.\\ +% Erigens se \textsc{Voce Evangelii}.\\ +% Credens \textsc{In Christum Salvatorem}.\\ +% Non repugnans \textsc{Spiritui Sancto} impellenti.\\ +% Audiens \textsc{Verbum}: \& utens \textsc{Sacramentis}.\\ +% Patienter \& constanter sufferens \textsc{Crucem}.\\ +% Sperans \& expectans glorificationem\\ +% \textsc{In Resurrectione Carnis}\\ +% \textsc{Ad Vitam \AE{}ternam}.} +% } +% \schema +% {\schemabox{seipsum ratione}} +% {\schemabox{Anim\ae{}\\ vel\\ Corporis}} +% \Schema{0ex}{5ex} +% {\schemabox{Proximum,}} +% { +% \schema +% {\schemabox{Amicum ra-\\ tione vel}} +% { +% \schemabox{Religionis.\\ +% Politic\ae{} \& \OE{}conomic\ae{}.\\ +% Cognationis.\\ +% Agnationis.} +% } +% \schemabox{Inimicum.} +% } +% } +% } +% }\egroup% +%\end{displaymath} +% Below we have the code listing for the schema above, wherein you can get the idea of how the example correlates with the source. The code listing breaks at sensible places across pages:\\ +% +% \begin{lstlisting}[basicstyle=\ttfamily\footnotesize] +% \Schema{0ex}{5ex} +% { +% \schemabox{Subjectum \& summa\\ +% univers\ae{} Scriptur\ae{},\\ +% est \textsc{Cognitio} vel} +% } +% { +% \Schema{0ex}{5ex} +% { +% \schemabox{\textsc{Dei}, qualis \\ sit, aut} +% } +% \end{lstlisting} +% \clearpage +% \begin{lstlisting}[firstnumber=12,basicstyle=\ttfamily\footnotesize] +% { +% \schema +% {\schemabox{\textsc{Per se}:\\ scilicet.}} +% { +% \schemabox{Unus in essentia.} +% \schemabox{Trinus in personis.} +% } +% \schema +% {\schemabox{Ad hominem\\ quem vel}} +% { +% \schemabox{Accusat \& terret, \textsc{Per Legem},\\ +% Consolatur \& erigit, \textsc{Per Evangelium}.\\ +% Salvat, \textsc{Per Christum}.\\ +% Renovat, \textsc{Per Spiritum Sanctum}.\\ +% Sanctificat, \textsc{Per Verbum} \& \textsc{Sacramenta}.\\ +% Castigat, tentat \& exercet, \textsc{Per Crucem}.\\ +% Glorificat \textsc{Per Resurrectionem Carnis}\\ +% \textsc{Ad Vitam \AE{}ternam}.} +% } +% } +% \Schema{0ex}{5ex} +% { +% \schemabox{\textsc{Hominis},\\ qualis sit} +% } +% { +% \Schema{0ex}{5ex} +% {\schemabox{\textsc{Per se}:}} +% { +% \schemabox{Ante lapsum.} +% \schema +% {\schemabox{Post lapsum:}} +% { +% \schemabox{Ante Regenerationem \&\\ +% Renovationem S. Sancti.} +% \schemabox{Post Regenerationem \&\\ +% Renovationem S. Sancti.} +% } +% } +% \Schema{0ex}{5ex} +% {\schemabox{Ad}} +% { +% \schema +% {\schemabox{\textsc{Deum}}} +% { +% \schemabox{P\oe{}nitentia agens, agnitis peccatis \&\\ +% ira Dei cognita \textsc{Ex Lege}.\\ +% Erigens se \textsc{Voce Evangelii}.\\ +% Credens \textsc{In Christum Salvatorem}.\\ +% Non repugnans \textsc{Spiritui Sancto} impellenti.\\ +% Audiens \textsc{Verbum}: \& utens \textsc{Sacramentis}.\\ +% Patienter \& constanter sufferens \textsc{Crucem}.\\ +% Sperans \& expectans glorificationem\\ +% \textsc{In Resurrectione Carnis}\\ +% \textsc{Ad Vitam \AE{}ternam}.} +% } +% \end{lstlisting} +% \clearpage +% \begin{lstlisting}[firstnumber=67,basicstyle=\ttfamily\footnotesize] +% \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{lstlisting} % -% It really is necessary to work from right to left here. One might think that he or she can guess roughly how big a brace might be. While that may be true, what will happen if you try to size the braces before spacing out the text on the right-hand side is that you will have to go back and forth, tweaking this and that, until you get what you want. That is a waste of time and a source of frustration. Steel yourself to avoid temptation and begin rigorously by adding vertical space after selected instances of |\Schema| or |\schema|, or within a |\schemabox|. The list on the next page shows the changes. +% 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.'' % -% \bgroup\footnotesize% -%\Schema{0ex}{5ex} -%{% -% \schemabox{Subjectum \& summa\\ +% \begin{displaymath}\bgroup\footnotesize% +% \Schema{0ex}{5ex} +% { +% \schemabox{Subjectum \& summa\\ % univers\ae{} Scriptur\ae{},\\ % est \textsc{Cognitio} vel} -%} -%{% -% \Schema{0ex}{5ex} -% {% -% \schemabox{\textsc{Dei}, qualis \\% -% sit, aut} -% } -% {% -% \schema -% {\schemabox{\textsc{Per se}:\\ scilicet.}} -% {% -% \schemabox{Unus in essentia.\smallskip\\% -% 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{Ad Vitam \AE{}ternam}.} -% }\medskip -% } -% \Schema{0ex}{5ex} -% {% -% \schemabox -% {% -% \textsc{Hominis},\\ qualis sit -% } -% } -% {% -% \Schema{0ex}{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 -% } -% \Schema{0ex}{5ex} -% {\schemabox{Ad}} -% {% -% \schema -% {\schemabox{\textsc{Deum}}} -% {% -% \schemabox{P\oe{}nitentia agens, % -% agnitis peccatis \&\\ -% ira Dei cognita \textsc{Ex Lege}.\\ -% Erigens se \textsc{Voce Evangelii}.\\ -% Credens \textsc{In Christum Salvatorem}.\\ -% Non repugnans \textsc{Spiritui Sancto} % -% impellenti.\\ -% Audiens \textsc{Verbum}: \& utens % -% \textsc{Sacramentis}.\\ -% Patienter \& constanter sufferens % -% \textsc{Crucem}.\\ -% Sperans \& expectans glorificationem\\ -% \textsc{In Resurrectione Carnis}\\ -% \textsc{Ad Vitam \AE{}ternam}.} -% }\smallskip -% \schema -% {\schemabox{seipsum ratione}} -% {\schemabox{Anim\ae{}\\ vel\\ Corporis}}\smallskip -% \Schema{0ex}{5ex} -% {\schemabox{Proximum,}} -% {% -% \schema -% {\schemabox{Amicum ra-\\ tione vel}} -% {% -% \schemabox{Religionis.\\ -% Politic\ae{} \& \OE{}conomic\ae{}.\\ -% Cognationis.\\ -% Agnationis.} -% }\smallskip -% \schemabox{Inimicum.} -% } -% } -% } -%} -%\egroup\medskip -% +% } +% { +% \Schema{0ex}{5ex} +% { +% \schemabox{\textsc{Dei}, qualis \\ 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{Ad Vitam \AE{}ternam}.} +% }\medskip +% } +% \Schema{0ex}{5ex} +% { +% \schemabox{\textsc{Hominis},\\ qualis sit} +% } +% { +% \Schema{0ex}{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{0ex}{5ex} +% {\schemabox{Ad}} +% { +% \schema +% {\schemabox{\textsc{Deum}}} +% { +% \schemabox{P\oe{}nitentia agens, agnitis peccatis \&\\ +% ira Dei cognita \textsc{Ex Lege}.\\ +% Erigens se \textsc{Voce Evangelii}.\\ +% Credens \textsc{In Christum Salvatorem}.\\ +% Non repugnans \textsc{Spiritui Sancto} impellenti.\\ +% Audiens \textsc{Verbum}: \& utens \textsc{Sacramentis}.\\ +% Patienter \& constanter sufferens \textsc{Crucem}.\\ +% Sperans \& expectans glorificationem\\ +% \textsc{In Resurrectione Carnis}\\ +% \textsc{Ad Vitam \AE{}ternam}.} +% }\smallskip +% \schema +% {\schemabox{seipsum ratione}} +% {\schemabox{Anim\ae{}\\ vel\\ Corporis}}\smallskip +% \Schema{0ex}{5ex} +% {\schemabox{Proximum,}} +% { +% \schema +% {\schemabox{Amicum ra-\\ tione vel}} +% { +% \schemabox{Religionis.\\ +% Politic\ae{} \& \OE{}conomic\ae{}.\\ +% Cognationis.\\ +% Agnationis.} +% }\smallskip +% \schemabox{Inimicum.} +% } +% } +% } +% }\egroup% +%\end{displaymath} %\noindent The following lines, shown with some surrounding context, were changed as a result of adding spaces: % -% \bgroup\footnotesize% -% \begin{multicols}{2} -%\noindent| \schemabox{Unus in essentia.\smallskip\\%|\\ -%| Trinus in personis.}|\\ -%| }\smallskip|\\ -% \hbox to 0.25\columnwidth{\bfseries\hfil\dots}\\ -%\noindent| \textsc{Ad Vitam \AE{}ternam}.}|\\ -%| }\medskip|\\ -% \hbox to 0.25\columnwidth{\bfseries\hfil\dots}\\ -%\noindent| \schemabox{Ante lapsum.}\smallskip|\\ -%| \schema|\\ -% \hbox to 0.25\columnwidth{\bfseries\hfil\dots}\\ -%\noindent| \schemabox{Ante Regenerationem \&\\|\\ -%| Renovationem S. Sancti.}\medskip|\\ -%| \schemabox{Post Regenerationem \&\\|\\ -%| Renovationem S. Sancti.}|\\ -%| }\smallskip|\columnbreak\\ -% \hbox to 0.25\columnwidth{\bfseries\hfil\dots}\\ -%\noindent| \textsc{Ad Vitam \AE{}ternam}.}|\\ -%| }\smallskip|\\ -%| \schema|\\ -%| {\schemabox{seipsum ratione}}|\\ -%| {\schemabox{Anim\ae{}\\ vel\\ Corporis}}%|\\ -%| \smallskip|\\ -% \hbox to 0.25\columnwidth{\bfseries\hfil\dots}\\ -%\noindent| Agnationis.}|\\ -%| }\smallskip|\\ -%| \schemabox{Inimicum.}|\\ -% \end{multicols} -% \egroup% -% -% Next we estimate the lines from the top of a |\Schema| brace to the bottom, e.g., from ``\textsc{Per se}:'' to ``quem vel''. We use those ``ex'' height figures for \meta{size}:\\ -% -% \bgroup\footnotesize% -%\Schema{0ex}{20ex} -%{% -% \schemabox{Subjectum \& summa\\ +% \begin{lstlisting}[firstnumber=15,basicstyle=\ttfamily\footnotesize] +% { +% \schemabox{Unus in essentia.}\smallskip +% \schemabox{Trinus in personis.} +% }\smallskip +% \end{lstlisting} +% You can add a \cmd{\smallskip} within a \cmd{\schemabox} in \LaTeX{}, but not in plain \TeX. We have split the text into two boxes to make it format-agnostic. See also how the second \cmd{\smallskip} follows the closing brace of the right-hand side, not the \cmd{\schemabox.} +% \begin{lstlisting}[firstnumber=29,basicstyle=\ttfamily\footnotesize] +% \textsc{Ad Vitam \AE{}ternam}.} +% }\medskip +% \end{lstlisting} +% Again, the skip comes at the close of a right-hand side. +% \begin{lstlisting}[firstnumber=39,basicstyle=\ttfamily\footnotesize] +% { +% \schemabox{Ante lapsum.}\smallskip +% \schema +% {\schemabox{Post lapsum:}} +% { +% \schemabox{Ante Regenerationem \&\\ +% Renovationem S. Sancti.}\medskip +% \schemabox{Post Regenerationem \&\\ +% Renovationem S. Sancti.}\smallskip +% }\smallskip +% } +% \end{lstlisting} +% In the snippet above, the first skip helps to separate the lone \cmd{\schemabox} from the \cmd{\schema} below it. This illustrates how the internal vertical lists of schemata can contain heterogeneous material. A medium skip is placed between two \cmd{\schemabox}es, which slightly throws off the way the brace spans the boxes. A small skip is put at the end of the last \cmd{\schemabox} to correct that, illustrating that putting skips within a \cmd{\schema} can be tricky. Then a \cmd{\smallskip} is added again at the end of the right-hand side. The skips below generally follow the same pattern. +% \begin{lstlisting}[firstnumber=65,basicstyle=\ttfamily\footnotesize] +% \textsc{Ad Vitam \AE{}ternam}.} +% }\smallskip +% \schema +% {\schemabox{seipsum ratione}} +% {\schemabox{Anim\ae{}\\ vel\\ Corporis}}\smallskip +% \end{lstlisting} +% \begin{lstlisting}[firstnumber=80,basicstyle=\ttfamily\footnotesize] +% }\smallskip +% \schemabox{Inimicum.} +% \end{lstlisting} +% +% Next we estimate the lines from the top of a \cmd{\Schema} brace to the bottom, e.g., from ``\textsc{Per se}:'' to ``quem vel''. We use those ``ex'' height figures for \meta{size}:\\ +% +% \begin{displaymath}\bgroup\footnotesize% +% \Schema{0ex}{23ex} +% { +% \schemabox{Subjectum \& summa\\ % univers\ae{} Scriptur\ae{},\\ % est \textsc{Cognitio} vel} -%} -%{% -% \Schema{0ex}{8ex} -% {% -% \schemabox{\textsc{Dei}, qualis \\% -% sit, aut} -% } -% {% -% \schema -% {\schemabox{\textsc{Per se}:\\ scilicet.}} -% {% -% \schemabox{Unus in essentia.\smallskip\\% -% 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{Ad Vitam \AE{}ternam}.} -% }\medskip -% } -% \Schema{0ex}{14ex} -% {% -% \schemabox -% {% -% \textsc{Hominis},\\ qualis sit -% } -% } -% {% -% \Schema{0ex}{4ex} -% {\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 -% } -% \Schema{0ex}{12ex} -% {\schemabox{Ad}} -% {% -% \schema -% {\schemabox{\textsc{Deum}}} -% {% -% \schemabox{P\oe{}nitentia agens, % -% agnitis peccatis \&\\ -% ira Dei cognita \textsc{Ex Lege}.\\ -% Erigens se \textsc{Voce Evangelii}.\\ -% Credens \textsc{In Christum Salvatorem}.\\ -% Non repugnans \textsc{Spiritui Sancto} % -% impellenti.\\ -% Audiens \textsc{Verbum}: \& utens % -% \textsc{Sacramentis}.\\ -% Patienter \& constanter sufferens % -% \textsc{Crucem}.\\ -% Sperans \& expectans glorificationem\\ -% \textsc{In Resurrectione Carnis}\\ -% \textsc{Ad Vitam \AE{}ternam}.} -% }\smallskip -% \schema -% {\schemabox{seipsum ratione}} -% {\schemabox{Anim\ae{}\\ vel\\ Corporis}}\smallskip -% \Schema{0ex}{4ex} -% {\schemabox{Proximum,}} -% {% -% \schema -% {\schemabox{Amicum ra-\\ tione vel}} -% {% -% \schemabox{Religionis.\\ -% Politic\ae{} \& \OE{}conomic\ae{}.\\ -% Cognationis.\\ -% Agnationis.} -% }\smallskip -% \schemabox{Inimicum.} -% } -% } -% } -%} -%\egroup\medskip -% -%\noindent The following lines, shown with some surrounding context, illustrate our ``ball park'' figures: -% -% \bgroup\footnotesize% -% \begin{multicols}{2} -%\noindent|\Schema{0ex}{20ex}|\\ -%|{%|\\ -%| \schemabox{Subjectum \& summa\\|\\ -% \hbox to 0.25\columnwidth{\bfseries\hfil\dots}\\ -%\noindent| \Schema{0ex}{8ex}|\\ -%| {%|\\ -%| \schemabox{\textsc{Dei}, qualis \\%|\\ -% \hbox to 0.25\columnwidth{\bfseries\hfil\dots}\\ -%\noindent| \Schema{0ex}{14ex}|\\ -%| {%|\\ -%| \schemabox|\\ -%| {%|\\ -%| \textsc{Hominis},\\ qualis sit|\\ -% \hbox to 0.25\columnwidth{\bfseries\hfil\dots}\\ -%\noindent| \Schema{0ex}{4ex}|\\ -%| {\schemabox{\textsc{Per se}:}}|\\ -% \hbox to 0.25\columnwidth{\bfseries\hfil\dots}\\ -%\noindent| \Schema{0ex}{12ex}|\\ -%| {\schemabox{Ad}}|\\ -% \hbox to 0.25\columnwidth{\bfseries\hfil\dots}\\ -%\noindent| \Schema{0ex}{4ex}|\\ -%| {\schemabox{Proximum,}}|\\ -% \end{multicols} -% \egroup% -% -% Now we add the \meta{adjust values} by counting the lines in the direction the brace needs to move, multiplying by two, and making it negative for up and positive for down. Using, e.g., \textsf{texworks} makes this easy. Work from leaves to root.\\ -% -% \bgroup\footnotesize% -%\Schema{-25ex}{20ex} -%{% -% \schemabox{Subjectum \& summa\\ +% } +% { +% \Schema{-6.4ex}{8.6ex} +% { +% \schemabox{\textsc{Dei}, qualis \\ 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{Ad Vitam \AE{}ternam}.} +% }\medskip +% } +% \Schema{0ex}{16ex} +% { +% \schemabox{\textsc{Hominis},\\ qualis sit} +% } +% { +% \Schema{0ex}{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{0ex}{16ex} +% {\schemabox{Ad}} +% { +% \schema +% {\schemabox{\textsc{Deum}}} +% { +% \schemabox{P\oe{}nitentia agens, agnitis peccatis \&\\ +% ira Dei cognita \textsc{Ex Lege}.\\ +% Erigens se \textsc{Voce Evangelii}.\\ +% Credens \textsc{In Christum Salvatorem}.\\ +% Non repugnans \textsc{Spiritui Sancto} impellenti.\\ +% Audiens \textsc{Verbum}: \& utens \textsc{Sacramentis}.\\ +% Patienter \& constanter sufferens \textsc{Crucem}.\\ +% Sperans \& expectans glorificationem\\ +% \textsc{In Resurrectione Carnis}\\ +% \textsc{Ad Vitam \AE{}ternam}.} +% }\smallskip +% \schema +% {\schemabox{seipsum ratione}} +% {\schemabox{Anim\ae{}\\ vel\\ Corporis}}\smallskip +% \Schema{0ex}{5ex} +% {\schemabox{Proximum,}} +% { +% \schema +% {\schemabox{Amicum ra-\\ tione vel}} +% { +% \schemabox{Religionis.\\ +% Politic\ae{} \& \OE{}conomic\ae{}.\\ +% Cognationis.\\ +% Agnationis.} +% }\smallskip +% \schemabox{Inimicum.} +% } +% } +% } +% }\egroup% +%\end{displaymath} +% +%\noindent The following lines, illustrate our ``ball park'' figures, where we include lines of text and blank lines in the total count: +% +% \begin{lstlisting}[basicstyle=\ttfamily\footnotesize] +% \Schema{0ex}{23ex} +% \end{lstlisting} +% \begin{lstlisting}[firstnumber=8,basicstyle=\ttfamily\footnotesize] +% \Schema{0ex}{8ex} +% \end{lstlisting} +% \begin{lstlisting}[firstnumber=32,basicstyle=\ttfamily\footnotesize] +% \Schema{0ex}{16ex} +% \end{lstlisting} +% \begin{lstlisting}[firstnumber=37,basicstyle=\ttfamily\footnotesize] +% \Schema{0ex}{5ex} +% \end{lstlisting} +% \begin{lstlisting}[firstnumber=50,basicstyle=\ttfamily\footnotesize] +% \Schema{0ex}{16ex} +% \end{lstlisting} +% \begin{lstlisting}[firstnumber=70,basicstyle=\ttfamily\footnotesize] +% \Schema{0ex}{5ex} +% \end{lstlisting} +% +% Next we add the \meta{adjust values} by counting the lines in the direction the brace needs to move, multiplying by two, and making it negative for up and positive for down. Using an editor, e.g., \textsf{texworks} makes this fairly easy. We also adjust the final \meta{size} of the braces. Work from leaves to root. +% +% \begin{displaymath}\bgroup\footnotesize% +% \Schema{-25ex}{20.6ex} +% { +% \schemabox{Subjectum \& summa\\ % univers\ae{} Scriptur\ae{},\\ % est \textsc{Cognitio} vel} -%} -%{% -% \Schema{-6.4ex}{8.2ex} -% {% -% \schemabox{\textsc{Dei}, qualis \\% -% sit, aut} -% } -% {% -% \schema -% {\schemabox{\textsc{Per se}:\\ scilicet.}} -% {% -% \schemabox{Unus in essentia.\smallskip\\% -% 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{Ad Vitam \AE{}ternam}.} -% }\medskip -% } -% \Schema{-14.4ex}{17ex} -% {% -% \schemabox -% {% -% \textsc{Hominis},\\ qualis sit -% } -% } -% {% -% \Schema{-4ex}{4.4ex} -% {\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 -% } -% \Schema{3.6ex}{14ex} -% {\schemabox{Ad}} -% {% -% \schema -% {\schemabox{\textsc{Deum}}} -% {% -% \schemabox{P\oe{}nitentia agens, % -% agnitis peccatis \&\\ -% ira Dei cognita \textsc{Ex Lege}.\\ -% Erigens se \textsc{Voce Evangelii}.\\ -% Credens \textsc{In Christum Salvatorem}.\\ -% Non repugnans \textsc{Spiritui Sancto} % -% impellenti.\\ -% Audiens \textsc{Verbum}: \& utens % -% \textsc{Sacramentis}.\\ -% Patienter \& constanter sufferens % -% \textsc{Crucem}.\\ -% Sperans \& expectans glorificationem\\ -% \textsc{In Resurrectione Carnis}\\ -% \textsc{Ad Vitam \AE{}ternam}.} -% }\smallskip -% \schema -% {\schemabox{seipsum ratione}} -% {\schemabox{Anim\ae{}\\ vel\\ Corporis}}\smallskip -% \Schema{2ex}{5ex} -% {\schemabox{Proximum,}} -% {% -% \schema -% {\schemabox{Amicum ra-\\ tione vel}} -% {% -% \schemabox{Religionis.\\ -% Politic\ae{} \& \OE{}conomic\ae{}.\\ -% Cognationis.\\ -% Agnationis.} -% }\smallskip -% \schemabox{Inimicum.} -% } -% } -% } -%} -%\egroup\medskip -% -%\noindent The following illustrates the final results: -% -% \bgroup\footnotesize% -% \begin{multicols}{2} -%\noindent|\Schema{-25ex}{20ex}|\\ -%|{%|\\ -%| \schemabox{Subjectum \& summa\\|\\ -% \hbox to 0.25\columnwidth{\bfseries\hfil\dots}\\ -%\noindent| \Schema{-6.4ex}{8.2ex}|\\ -%| {%|\\ -%| \schemabox{\textsc{Dei}, qualis \\%|\\ -% \hbox to 0.25\columnwidth{\bfseries\hfil\dots}\\ -%\noindent| \Schema{-14.4ex}{17ex}|\\ -%| {%|\\ -%| \schemabox|\\ -%| {%|\\ -%| \textsc{Hominis},\\ qualis sit|\\ -% \hbox to 0.25\columnwidth{\bfseries\hfil\dots}\\ -%\noindent| \Schema{-4ex}{4.4ex}|\\ -%| {\schemabox{\textsc{Per se}:}}|\\ -% \hbox to 0.25\columnwidth{\bfseries\hfil\dots}\\ -%\noindent| \Schema{3.6ex}{14ex}|\\ -%| {\schemabox{Ad}}|\\ -% \hbox to 0.25\columnwidth{\bfseries\hfil\dots}\\ -%\noindent| \Schema{2ex}{5ex}|\\ -%| {\schemabox{Proximum,}}|\\ -% \end{multicols} -% \egroup -% -% \noindent The next example illustrates spacing, adjusting, and |\DoParens|:\\ -% +% } +% { +% \Schema{-6.4ex}{8.5ex} +% { +% \schemabox{\textsc{Dei}, qualis \\ 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{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{In Resurrectione Carnis}\\ +% \textsc{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.} +% } +% } +% } +% }\egroup% +%\end{displaymath} +% +% \noindent We get the following changes, with a few final tweaks: +% +% \begin{lstlisting}[basicstyle=\ttfamily\footnotesize] +% \Schema{-25ex}{20.6ex}% Do this one last. +% \end{lstlisting} +% \begin{lstlisting}[firstnumber=8,basicstyle=\ttfamily\footnotesize] +% \Schema{-6.4ex}{8.5ex}% Do this one first. +% \end{lstlisting} +% \begin{lstlisting}[firstnumber=32,basicstyle=\ttfamily\footnotesize] +% \Schema{-13.4ex}{17.4ex}% Do this one fifth. +% \end{lstlisting} +% \begin{lstlisting}[firstnumber=37,basicstyle=\ttfamily\footnotesize] +% \Schema{-4.4ex}{5ex}% Do this one second. +% \end{lstlisting} +% \begin{lstlisting}[firstnumber=50,basicstyle=\ttfamily\footnotesize] +% \Schema{4.2ex}{14.4ex}% Do this one fourth. +% \end{lstlisting} +% \begin{lstlisting}[firstnumber=70,basicstyle=\ttfamily\footnotesize] +% \Schema{2ex}{5.1ex}% Do this one third. +% \end{lstlisting} +% +% If all your dimensions are in ex height, scaling your (large) schema gets easier. For example, one ex is a different size for different fonts and font sizes:\medskip +% +% \hfil\begin{tabular}{cccc} +% \cmd{\Large} & \cmd{\large} & \cmd{\normalsize} & \cmd{\footnotesize}\\ +% \Large\dimen0=1ex \the\dimen0 & \large\dimen0=1ex \the\dimen0 & \normalsize\dimen0=1ex \the\dimen0 & \footnotesize\dimen0=1ex \the\dimen0\normalsize\\ +% \end{tabular}\hfil +% +% \noindent The next example illustrates spacing, adjusting, and \cmd{\DoParens} inside a group scope: +% \begin{displaymath} % \bgroup\scriptsize\DoParens% -%\Schema{-38ex}{14ex} +%\Schema{-36.4ex}{15.6ex} %{ -% \schemabox{Sacr\ae{} litter\ae{}\\ loquuntur, de} +% \schemabox{Sacr\ae{}\\ litter\ae{}\\ loquuntur,\\ de} %} %{ % \schema @@ -1017,14 +1193,14 @@ % { % \schemabox{Uno, in Trinitate.\smallskip\\Trino, in unitate.} % } -% \Schema{-21ex}{19.6ex} +% \Schema{-17ex}{23.4ex} % { % \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.} @@ -1032,7 +1208,7 @@ % \medskip % \Schema{-2.6ex}{19.6ex} % { -% \schemabox{\textsc{Extra}, qu\ae{} sunt\\ indivisa; tervata\\ tamen cujusque\\ person\ae{} divinita-\\ tis sua proprietate} +% \schemabox{\textsc{Extra},\\ qu\ae{} sunt\\ indivisa;\\ tervata\\ tamen\\ cujusque\\ person\ae{}\\ divinitatis\\ sua pro-\\prietate} % } % { % \Schema{-0.8ex}{6.4ex} @@ -1063,7 +1239,7 @@ % { % \schemabox{Angelorum malorum,} \smallskip \schemabox{Hominum: Ad\ae{}, Ev\ae{}\\ \& procreatorum exipsis.} % } -% \Schema{2.6ex}{8.6ex} +% \Schema{2.6ex}{8.8ex} % { % \schemabox{Beneficiis erga\\ Ecclesiam: ea ver-\\ santur aut circa} % } @@ -1110,550 +1286,683 @@ % } % } % } -%} -%\egroup\medskip -% -% \noindent Next we see some closed schemata. Braces are back, thanks to scoping rules.\\ -% -%\bgroup\small% -%\Schema{-1.4ex}{10ex} -%{% -% \schemabox{Qu\ae{} sit\\ % -% \textsc{Dei}, vel} -%} -%{% -% \Schema{-1ex}{5ex} -% {% -% \schemabox{\textsc{Essentia}, in} -% } -% {% -% \vskip1ex\schemabox{Unitate divina,} -% \medskip -% \Schema{0ex}{3.4ex} -% {% -% \schemabox{Tribus perso-\\% -% nis divinitatis} -% } -% {% -% \Schema[close]{0ex}{3.4ex} -% {% -% \schemabox{Patre,\\ Filio,\\% -% Spiritui Sancto} -% } -% {% -% \schemabox{\gk{ -% \fi % \section{Implementation} % % The concept of using math mode to generate schemata was first implemented by me in plain \TeX, then migrated to \LaTeX. % -% \subsection{Package Options and Required Packages} +% \subsection{Package Options and Booleans} % % \changes{v0.6}{2013/03/10}{Added brackets and parens as well as braces} -% Three options are implemented, namely, |braces| (the default), |brackets|, and |parens|. Plain \TeX{} does not use options as such, but simply declares braces as the default and allows the user to change that after the file is |\input|.\\ +% Three options are implemented, namely, |braces| (the default), |brackets|, and |parens|. Plain \TeX{} does not use options as such, but simply declares braces as the default and allows the user to change that after the file is |\input|. % \begin{macrocode} -\expandafter\ifx\csname newenvironment\endcsname\relax% -\def\DoBraces{\let\schemaLD\lbrace \let\schemaRD\rbrace}\DoBraces% -\DoBraces% +\expandafter\ifx\csname newenvironment\endcsname\relax + \catcode`@=11% + \def\DoBraces{\let\@schemata@LD\lbrace \let\@schemata@RD\rbrace}% + \DoBraces% \else -\DeclareOption{braces}{\let\schemaLD\lbrace \let\schemaRD\rbrace} -\DeclareOption{brackets}{\let\schemaLD\lbrack \let\schemaRD\rbrack} -\DeclareOption{parens}{\let\schemaLD( \let\schemaRD)} -\ExecuteOptions{braces} -\ProcessOptions\relax + \DeclareOption{braces}{\let\@schemata@LD\lbrace \let\@schemata@RD\rbrace} + \DeclareOption{brackets}{\let\@schemata@LD\lbrack \let\@schemata@RD\rbrack} + \DeclareOption{parens}{\let\@schemata@LD( \let\@schemata@RD)} + \ExecuteOptions{braces} + \ProcessOptions\relax \fi % \end{macrocode} % +%Two box registers and two dimen registers are used to analyze the left-hand and right-hand vertical sizes of the boxes in a schema. +% \changes{v0.8}{2016/01/25}{Renamed box/dimen registers} % \begin{macrocode} -\newbox\rhs% -\newbox\lhs% -\newdimen\rheight% -\newdimen\lheight% -% \end{macrocode}\medskip -%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. Automation of alignment presently is a distant horizon. -% -% \changes{v0.6}{2013/03/10}{Added tweaks for lowercase material in a \cmd{\schema}.} +\newbox\@rhs% +\newbox\@lhs% +\newdimen\@rheight% +\newdimen\@lheight% +% \end{macrocode} +% \changes{v0.6}{2013/03/10}{Added UC/LC tweaks.} +% \changes{v0.8}{2016/01/25}{Renamed internal macros} % \begin{macrocode} -\newif\ifschemaLC% -\newif\ifschemaSwitch% +\newif\if@schemata@LCBox% +\newif\if@schemata@SWBox% +\newif\if@schemata@NudgeBox% % \end{macrocode} % % \subsection {Macros} % % \begin{macro}{\DoBraces} % \changes{v0.6}{2013/03/10}{Added macro} +% Set the default option for braces. % \begin{macrocode} -\def\DoBraces{\let\schemaLD\lbrace \let\schemaRD\rbrace}\DoBraces% +\expandafter\ifx\csname newenvironment\endcsname\relax +\else + \newcommand{\DoBraces}{\let\@schemata@LD\lbrace \let\@schemata@RD\rbrace}% +\fi % \end{macrocode} % \end{macro} -% Set the default option. % \begin{macro}{\DoBrackets} % \changes{v0.6}{2013/03/10}{Added macro} +% Set the ``branches'' to be brackets. % \begin{macrocode} -\def\DoBrackets{\let\schemaLD\lbrack \let\schemaRD\rbrack}% +\expandafter\ifx\csname newenvironment\endcsname\relax + \def\DoBrackets{\let\@schemata@LD\lbrack \let\@schemata@RD\rbrack}% +\else + \newcommand{\DoBrackets}{\let\@schemata@LD\lbrack \let\@schemata@RD\rbrack}% +\fi % \end{macrocode} % \end{macro} -% Set the ``branches'' to be brackets. % \begin{macro}{\DoParens} % \changes{v0.6}{2013/03/10}{Added macro} +% Set the ``branches'' to be parentheses. % \begin{macrocode} -\def\DoParens{\let\schemaLD( \let\schemaRD)}% +\expandafter\ifx\csname newenvironment\endcsname\relax + \def\DoParens{\let\@schemata@LD( \let\@schemata@RD)}% +\else + \newcommand{\DoParens}{\let\@schemata@LD( \let\@schemata@RD)}% +\fi % \end{macrocode} % \end{macro} -% Set the ``branches'' to be parentheses. % \begin{macro}{\LCschema} % \changes{v0.6}{2013/03/10}{Added macro} +% Set global settings to assume lowercase initial text in \cmd{\schemabox}es. % \begin{macrocode} -\def\LCschema{\schemaLCtrue}% +\expandafter\ifx\csname newenvironment\endcsname\relax + \def\LCschema{\@schemata@LCBoxtrue}% +\else + \newcommand{\LCschema}{\@schemata@LCBoxtrue}% +\fi % \end{macrocode} % \end{macro} -% Set global settings to assume lowercase initial text in schemaboxes. % \begin{macro}{\UCschema} % \changes{v0.6}{2013/03/10}{Added macro} +% Set global settings to assume uppercase initial text in \cmd{\schemabox}es. % \begin{macrocode} -\def\UCschema{\schemaLCfalse}% +\expandafter\ifx\csname newenvironment\endcsname\relax + \def\UCschema{\@schemata@LCBoxfalse}% +\else + \newcommand{\UCschema}{\@schemata@LCBoxfalse}% +\fi % \end{macrocode} % \end{macro} -% Set global settings to assume uppercase initial text in schemaboxes. % \begin{macro}{\SwitchSB} % \changes{v0.6}{2013/03/10}{Added macro} +% Flip the UC/LC settings for one \cmd{\schemabox}, which will reset this value on exit. % \begin{macrocode} -\def\SwitchSB{\schemaSwitchtrue}% +\expandafter\ifx\csname newenvironment\endcsname\relax + \def\SwitchSB{\@schemata@SWBoxtrue}% +\else + \newcommand{\SwitchSB}{\@schemata@SWBoxtrue}% +\fi % \end{macrocode} % \end{macro} -% Flip the settings for one |\schemabox|, which will reset this value. +% +% \begin{macro}{\NudgeSB} +% \changes{v0.8}{2016/01/25}{Added macro} +% Add a kern to the end of each line in a \cmd{\schemabox}. This will be reset on exit from the \cmd{\schemabox}. +% \begin{macrocode} +\expandafter\ifx\csname newenvironment\endcsname\relax + \def\NudgeSB{\@schemata@NudgeBoxtrue}% +\else + \newcommand{\NudgeSB}{\@schemata@NudgeBoxtrue}% +\fi +% \end{macrocode} +% \end{macro} +% \clearpage\noindent % % \begin{macro}{\schemabox} +% \changes{v0.8}{2016/01/25}{Added nudge feature; fix errors when not in internal vertical mode} +% If in internal vertical mode, wrap a stack of left-aligned \cmd{\hbox}es with optional width in a \cmd{\vbox.} This allows the box to be only as wide as needed. The syntax is reminiscent of a one-column tabular. Normally insert a \cmd{\strut} in the first \cmd{\hbox}. % \changes{v0.6}{2013/03/10}{Added lowercase tweaks} % \begin{macrocode} -\expandafter\ifx\csname newenvironment\endcsname\relax% -{\catcode`@=11 -\gdef\schemabox{\futurelet\testchar\schemab@x} -\gdef\schemab@x{\ifx[\testchar \let\next\@schemabox% - \else \let\next\@schemab@x \fi \next} -\gdef\@schemab@x#1{\@schemabox[0pt]{#1}} -\gdef\@schemabox[#1]#2{% - \ifschemaLC\def\Adj{}% - \ifschemaSwitch\def\Adj{\strut}\fi - \else - \def\Adj{\strut}% - \ifschemaSwitch\def\Adj{}\fi - \fi - \schemaSwitchfalse% - \ifdim#1<1pt - \def\\{\egroup\hbox\bgroup\ignorespaces }% - \vbox{\hbox\bgroup\Adj\ignorespaces #2\egroup}% - \else - \def\\{\hfil\egroup\hbox to #1\bgroup\ignorespaces }% - \vbox{\hbox to #1\bgroup\Adj\ignorespaces #2\hfil\egroup}% - \fi -}}\else -\newcommand{\schemabox}[2][0pt]{% - \ifschemaLC\def\Adj{}% - \ifschemaSwitch\def\Adj{\strut}\fi - \else - \def\Adj{\strut}% - \ifschemaSwitch\def\Adj{}\fi - \fi - \schemaSwitchfalse% - \ifdim#1<1pt - \def\\{\egroup\hbox\bgroup\ignorespaces }% - \vbox{\hbox\bgroup\Adj\ignorespaces #2\egroup}% - \else - \def\\{\hfil\egroup\hbox to #1\bgroup\ignorespaces }% - \vbox{\hbox to #1\bgroup\Adj\ignorespaces #2\hfil\egroup}% - \fi -}\fi +\expandafter\ifx\csname newenvironment\endcsname\relax + \gdef\schemabox{\futurelet\testchar\@schemabox} + \gdef\@schemabox{% + \ifx[\testchar + \let\next\@@schemabox% + \else + \let\next\@@schemab@x% + \fi + \next% + }% + \gdef\@@schemab@x#1{\@@schemabox[0pt]{#1}} + \gdef\@@schemabox[#1]#2{% + \ifinner + \if@schemata@LCBox + \def\@Adj{}% + \if@schemata@SWBox\def\@Adj{\strut}\fi + \else + \def\@Adj{\strut}% + \if@schemata@SWBox\def\@Adj{}\fi + \fi + \if@schemata@NudgeBox + \def\@Nudge{\kern0.2em}% + \else + \def\@Nudge{}% + \fi + \ifdim#1<1pt + \def\\{\@Nudge\egroup\hbox\bgroup\ignorespaces }% + \vbox{\hbox\bgroup\@Adj\ignorespaces #2\@Nudge\egroup}% + \else + \def\\{\hfil\egroup\hbox to #1\bgroup\ignorespaces }% + \vbox{\hbox to #1\bgroup\@Adj\ignorespaces #2\hfil\egroup}% + \fi + \else + #2% + \fi + \@schemata@SWBoxfalse% + \@schemata@NudgeBoxfalse% + }% +% \end{macrocode} +% \clearpage +% \begin{macrocode} +\else + \newcommand{\schemabox}[2][0pt]{% + \ifinner + \if@schemata@LCBox + \def\@Adj{}% + \if@schemata@SWBox\def\@Adj{\strut}\fi + \else + \def\@Adj{\strut}% + \if@schemata@SWBox\def\@Adj{}\fi + \fi + \if@schemata@NudgeBox + \def\@Nudge{\kern0.2em}% + \else + \def\@Nudge{}% + \fi + \ifdim#1<1pt + \def\\{\@Nudge\egroup\hbox\bgroup\ignorespaces }% + \vbox{\hbox\bgroup\@Adj\ignorespaces #2\@Nudge\egroup}% + \else + \def\\{\hfil\egroup\hbox to #1\bgroup\ignorespaces }% + \vbox{\hbox to #1\bgroup\@Adj\ignorespaces #2\hfil\egroup}% + \fi + \else + #2% + \fi + \@schemata@SWBoxfalse% + \@schemata@NudgeBoxfalse% + }% +\fi % \end{macrocode} % \end{macro} -% Wrap a stack of left-aligned hboxes with optional width in a vbox. -% This allows the box to be only as wide as needed. The syntax is reminiscent -% of a one-column tabular. Normally insert a |\strut| in the first |\hbox|. +% \clearpage\noindent % % \begin{macro}{\schema} +% This ``simple'' schema vertically centers two boxes of internal vertical material and puts a ``simple'' brace between the boxes based on the height of the box and the options passed to the schema. By default, a schema has a box to the left, an open delimiter, and a box to the right. If any optional argument other than "open" is used, the schema prints a box to the left, a close brace, and a box to the right. % \begin{macrocode} -\expandafter\ifx\csname newenvironment\endcsname\relax% -{\catcode`@=11 -\gdef\schema{\futurelet\testchar\schem@} -\gdef\schem@{\ifx[\testchar \let\next\@schema% - \else \let\next\@schem@ \fi \next} -\gdef\@schem@#1#2{\@schema[open]{#1}{#2}} -\gdef\@schema[#1]#2#3{% - \def\Option{#1}\def\Open{open}% - \ifx\Option\Open - \setbox\rhs=\vbox{#3}% - \rheight=\ht\rhs% - \advance\rheight\dp\rhs% - \advance\rheight by 1.44265ex% - \hbox{$\vcenter{#2}\basiclbrace{\rheight}\vcenter{#3}$}% - \else - \setbox\lhs=\vbox{#2}% - \lheight=\ht\lhs% - \advance\lheight\dp\lhs% - \advance\lheight by 1.44265ex% - \hbox{$\vcenter{#2}\kern-0.2em\basicrbrace{\lheight}\vcenter{#3}$}% - \fi -}}\else -\newcommand{\schema}[3][open]{% - \def\Option{#1}\def\Open{open}% - \ifx\Option\Open - \setbox\rhs=\vbox{#3}% - \rheight=\ht\rhs% - \advance\rheight\dp\rhs% - \advance\rheight by 1.44265ex% - \hbox{$\vcenter{#2}\basiclbrace{\rheight}\vcenter{#3}$}% - \else - \setbox\lhs=\vbox{#2}% - \lheight=\ht\lhs% - \advance\lheight\dp\lhs% - \advance\lheight by 1.44265ex% - \hbox{$\vcenter{#2}\kern-0.2em\basicrbrace{\lheight}\vcenter{#3}$}% - \fi -}\fi +\expandafter\ifx\csname newenvironment\endcsname\relax + \gdef\schema{\futurelet\testchar\@schema} + \gdef\@schema{\ifx[\testchar \let\next\@@schema% + \else \let\next\@@schem@ \fi \next} + \gdef\@@schem@#1#2{\@@schema[open]{#1}{#2}} + \gdef\@@schema[#1]#2#3{% + \def\@ption{#1}\def\@pen{open}% + \ifx\@ption\@pen + \setbox\@rhs=\vbox{#3}% + \@rheight=\ht\@rhs% + \advance\@rheight\dp\@rhs% + \advance\@rheight by 1.44265ex% + \hbox{$\vcenter{#2}% + \@schemata@lbrace{\@rheight}% + \vcenter{#3}$}% + \else + \setbox\@lhs=\vbox{#2}% + \@lheight=\ht\@lhs% + \advance\@lheight\dp\@lhs% + \advance\@lheight by 1.44265ex% + \hbox{$\vcenter{#2}% + \kern-0.2em\@schemata@rbrace{\@lheight}% + \vcenter{#3}$}% + \fi + }% +\else + \newcommand{\schema}[3][open]{% + \def\@ption{#1}\def\@pen{open}% + \ifx\@ption\@pen + \setbox\@rhs=\vbox{#3}% + \@rheight=\ht\@rhs% + \advance\@rheight\dp\@rhs% + \advance\@rheight by 1.44265ex% + \hbox{$\vcenter{#2}% + \@schemata@lbrace{\@rheight}% + \vcenter{#3}$}% + \else + \setbox\@lhs=\vbox{#2}% + \@lheight=\ht\@lhs% + \advance\@lheight\dp\@lhs% + \advance\@lheight by 1.44265ex% + \hbox{$\vcenter{#2}% + \kern-0.2em\@schemata@rbrace{\@lheight}% + \vcenter{#3}$}% + \fi + }% +\fi % \end{macrocode} % \end{macro} -% This ``simple'' schema vertically centers two boxes of internal vertical material and -% puts a ``simple'' brace between the boxes based on the height of the box and the options -% passed to the schema. By default, a schema has a box to the left, an open delimiter, -% and a box to the right. If any optional argument other than "open" is used, the schema -% prints a box to the left, a close brace, and a box to the right. +% \clearpage\noindent % % \begin{macro}{\Schema} +% This is the general-purpose form of schemata. The arguments include whether it is an open or closed schema, the vertical adjustment of the left-hand side, the size of the brace, and the contents of the left and right-hand sizes. It works the same as above, but requires manual adjustment of the braces. % \begin{macrocode} -\expandafter\ifx\csname newenvironment\endcsname\relax% -{\catcode`@=11 -\gdef\Schema{\futurelet\testchar\Schem@} -\gdef\Schem@{\ifx[\testchar \let\next\@Schema \else \let\next\@Schem@ \fi \next} -\gdef\@Schem@#1#2#3#4{\@Schema[open]{#1}{#2}{#3}{#4}} -\gdef\@Schema[#1]#2#3#4#5{% - \def\Option{#1}\def\Open{open}% - \ifx\Option\Open - \dimen0=#2% - \hbox{$\vcenter{\vskip1.44265\dimen0#4}\complexlbrace{#2}{#3}\vcenter{#5}$}% - \else - \dimen0=#2% - \hbox{$\vcenter{\vskip1.44265\dimen0#4}\kern-0.2em% - \complexrbrace{#2}{#3}\vcenter{#5}$}% - \fi -}}\else -\newcommand{\Schema}[5][open]{% - \def\Option{#1}\def\Open{open}% - \ifx\Option\Open +\expandafter\ifx\csname newenvironment\endcsname\relax + \gdef\Schema{\futurelet\testchar\@Schema} + \gdef\@Schema{\ifx[\testchar \let\next\@@Schema% + \else \let\next\@@Schem@ \fi \next} + \gdef\@@Schem@#1#2#3#4{\@@Schema[open]{#1}{#2}{#3}{#4}} + \gdef\@@Schema[#1]#2#3#4#5{% + \def\@ption{#1}% + \def\@pen{open}% \dimen0=#2% - \hbox{$\vcenter{\vskip1.44265\dimen0#4}\complexlbrace{#2}{#3}\vcenter{#5}$}% - \else + \ifx\@ption\@pen + \hbox{$\vcenter{\vskip1.44265\dimen0#4}% + \@schemata@biglbrace{#2}{#3}\vcenter{#5}$}% + \else + \hbox{$\vcenter{\vskip1.44265\dimen0#4}\kern-0.2em% + \@schemata@bigrbrace{#2}{#3}\vcenter{#5}$}% + \fi + }% +\else + \newcommand{\Schema}[5][open]{% + \def\@ption{#1}% + \def\@pen{open}% \dimen0=#2% - \hbox{$\vcenter{\vskip1.44265\dimen0#4}\kern-0.2em% - \complexrbrace{#2}{#3}\vcenter{#5}$}% - \fi -}\fi + \ifx\@ption\@pen + \hbox{$\vcenter{\vskip1.44265\dimen0#4}% + \@schemata@biglbrace{#2}{#3}\vcenter{#5}$}% + \else + \hbox{$\vcenter{\vskip1.44265\dimen0#4}\kern-0.2em% + \@schemata@bigrbrace{#2}{#3}\vcenter{#5}$}% + \fi + }% +\fi % \end{macrocode} % \end{macro} -% This is the general-purpose form of schemata. The parameters include whether it is an open or closed schema, the vertical adjustment of the left-hand side, the size of the brace, and the contents of the left and right-hand sizes. It works the same as above, but requires manual adjustment of the braces. % -% \begin{macro}{\basiclbrace} +% \begin{macro}{\@schemata@lbrace} +% \changes{v0.8}{2016/01/25}{Renamed} +% Draw an on-center brace to the left of a simple box. % \begin{macrocode} -\expandafter\ifx\csname newenvironment\endcsname\relax% - \def\basiclbrace#1{% - \ifmmode\left.\vcenter{\vbox to #1{\vfil}}\right\schemaLD\fi} +\expandafter\ifx\csname newenvironment\endcsname\relax + \def\@schemata@lbrace#1{% + \ifmmode\left.\vcenter{\vbox to #1{\vfil}}\right\@schemata@LD\fi} \else - \newcommand{\basiclbrace}[1]{% - \ifmmode\left.\vcenter{\vbox to #1{\vfil}}\right\schemaLD\fi} + \newcommand{\@schemata@lbrace}[1]{% + \ifmmode\left.\vcenter{\vbox to #1{\vfil}}\right\@schemata@LD\fi} \fi % \end{macrocode} % \end{macro} -% Draw an on-center brace to the left of a simple box. % -% \begin{macro}{\basicrbrace} +% \begin{macro}{\@schemata@rbrace} +% \changes{v0.8}{2016/01/25}{Renamed} +% Draw an on-center brace to the right of a simple box. % \begin{macrocode} -\expandafter\ifx\csname newenvironment\endcsname\relax% - \def\basicrbrace#1{% - \ifmmode\left\schemaRD\vcenter{\vbox to #1{\vfil}}\right.\fi} +\expandafter\ifx\csname newenvironment\endcsname\relax + \def\@schemata@rbrace#1{% + \ifmmode\left\@schemata@RD\vcenter{\vbox to #1{\vfil}}\right.\fi} \else - \newcommand{\basicrbrace}[1]{% - \ifmmode\left\schemaRD\vcenter{\vbox to #1{\vfil}}\right.\fi} + \newcommand{\@schemata@rbrace}[1]{% + \ifmmode\left\@schemata@RD\vcenter{\vbox to #1{\vfil}}\right.\fi} \fi % \end{macrocode} % \end{macro} -% Draw an on-center brace to the right of a simple box. +% \clearpage\noindent % -% \begin{macro}{\complexlbrace} +% \begin{macro}{\@schemata@biglbrace} +% \changes{v0.8}{2016/01/25}{Renamed; use absolute value of brace size} +% Draw a vertically-adjustable brace to the left of a complex assortment of boxes. % \begin{macrocode} -\expandafter\ifx\csname newenvironment\endcsname\relax% -\def\complexlbrace#1#2{% - \dimen0=#1% - \dimen2=#2% - \ifdim\dimen0<0pt - \ifmmode\vcenter{\hbox{$\left.\vbox to 1.44265\dimen2{\vfil}\right\schemaLD% - \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi - \else - \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}% - \atop\left.\vbox to 1.44265\dimen2{\vfil}\right\schemaLD$}}\fi - \fi -}\else -\newcommand{\complexlbrace}[2]{% - \dimen0=#1% - \dimen2=#2% - \ifdim\dimen0<0pt - \ifmmode\vcenter{\hbox{$\left.\vbox to 1.44265\dimen2{\vfil}\right\schemaLD% - \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi - \else - \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}% - \atop\left.\vbox to 1.44265\dimen2{\vfil}\right\schemaLD$}}\fi - \fi -}\fi +\expandafter\ifx\csname newenvironment\endcsname\relax + \def\@schemata@biglbrace#1#2{% + \dimen0=#1% + \dimen2=#2% + \dimen4=-\dimen2% + \ifdim\dimen4>\dimen2\dimen2=\dimen4\fi + \ifdim\dimen0<0pt + \ifmmode\vcenter{\hbox{$\left.% + \vbox to 1.44265\dimen2{\vfil}% + \right\@schemata@LD% + \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi + \else + \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}% + \atop\left.% + \vbox to 1.44265\dimen2{\vfil}% + \right\@schemata@LD$}}\fi + \fi + }% +\else + \newcommand{\@schemata@biglbrace}[2]{% + \dimen0=#1% + \dimen2=#2% + \dimen4=-\dimen2% + \ifdim\dimen4>\dimen2\dimen2=\dimen4\fi + \ifdim\dimen0<0pt + \ifmmode\vcenter{\hbox{$\left.% + \vbox to 1.44265\dimen2{\vfil}% + \right\@schemata@LD% + \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi + \else + \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}% + \atop\left.% + \vbox to 1.44265\dimen2{\vfil}% + \right\@schemata@LD$}}\fi + \fi + }% +\fi % \end{macrocode} % \end{macro} -% Draw a brace to the left of a complex assortment of boxes. +% \clearpage\noindent % -% \begin{macro}{\complexrbrace} +% \begin{macro}{\@schemata@bigrbrace} +% \changes{v0.8}{2016/01/25}{Renamed; Use absolute value of brace size} +% Draw a vertically-adjustable brace to the right of a complex assortment of boxes. % \begin{macrocode} -\expandafter\ifx\csname newenvironment\endcsname\relax% -\def\complexrbrace#1#2{% - \dimen0=#1% - \dimen2=#2% - \ifdim\dimen0<0pt - \ifmmode\vcenter{\hbox{$\left.\vbox to 1.44265\dimen2{\vfil}\right\schemaRD% - \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi - \else - \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}% - \atop\left.\vbox to 1.44265\dimen2{\vfil}\right\schemaRD$}}\fi - \fi -}\else -\newcommand{\complexrbrace}[2]{% - \dimen0=#1% - \dimen2=#2% - \ifdim\dimen0<0pt - \ifmmode\vcenter{\hbox{$\left.\vbox to 1.44265\dimen2{\vfil}\right\schemaRD% - \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi - \else - \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}% - \atop\left.\vbox to 1.44265\dimen2{\vfil}\right\schemaRD$}}\fi - \fi -}\fi +\expandafter\ifx\csname newenvironment\endcsname\relax + \def\@schemata@bigrbrace#1#2{% + \dimen0=#1% + \dimen2=#2% + \dimen4=-\dimen2% + \ifdim\dimen4>\dimen2\dimen2=\dimen4\fi + \ifdim\dimen0<0pt + \ifmmode\vcenter{\hbox{$\left.% + \vbox to 1.44265\dimen2{\vfil}% + \right\@schemata@RD% + \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi + \else + \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}% + \atop\left.% + \vbox to 1.44265\dimen2{\vfil}% + \right\@schemata@RD$}}\fi + \fi + }% +\else + \newcommand{\@schemata@bigrbrace}[2]{% + \dimen0=#1% + \dimen2=#2% + \dimen4=-\dimen2% + \ifdim\dimen4>\dimen2\dimen2=\dimen4\fi + \ifdim\dimen0<0pt + \ifmmode\vcenter{\hbox{$\left.% + \vbox to 1.44265\dimen2{\vfil}% + \right\@schemata@RD% + \atop\vbox to -1.44265\dimen0{\vfil}$}}\fi + \else + \ifmmode\vcenter{\hbox{$\vbox to 1.44265\dimen0{\vfil}% + \atop\left.% + \vbox to 1.44265\dimen2{\vfil}% + \right\@schemata@RD$}}\fi + \fi + }% +\fi % \end{macrocode} % \end{macro} -% Draw a brace to the right of a complex assortment of boxes. -% -% \clearpage -% \Finale +% \begin{macrocode} +\expandafter\ifx\csname newenvironment\endcsname\relax + \catcode`@=12 +\fi +% \end{macrocode} +%\Finale \endinput -% \iffalse % -% \fi diff --git a/Master/texmf-dist/source/generic/schemata/schemata.ins b/Master/texmf-dist/source/generic/schemata/schemata.ins index 13352e64657..88c3f9fb616 100644 --- a/Master/texmf-dist/source/generic/schemata/schemata.ins +++ b/Master/texmf-dist/source/generic/schemata/schemata.ins @@ -1,55 +1,72 @@ %% -%% Copyright (C) 2013 by Charles P. Schaum +%% This is file `schemata.ins', +%% generated with the docstrip utility. %% -%% This file may be distributed and/or modified under the conditions of -%% the LaTeX Project Public License, either version 1.2 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.2 or later is part of all distributions of LaTeX version -%% 1999/12/01 or later. +%% The original source files were: %% - +%% schemata.dtx (with options: `install') +%% --------:| ---------------------------------------------------------------- +%% schemata:| Generic package to aid construction of topical categories +%% Author:| Charles P. Schaum +%% E-mail:| charles dot schaum at comcast dot net +%% License:| Released under the LaTeX Project Public License v1.3c or later +%% See:| http://www.latex-project.org/lppl.txt +%% \input docstrip.tex \keepsilent - -\usedir{tex/latex/schemata} - +\askforoverwritefalse \preamble +--------:| ---------------------------------------------------------------- +schemata:| Generic package to aid construction of topical categories + Author:| Charles P. Schaum + E-mail:| charles dot schaum at comcast dot net + License:| Released under the LaTeX Project Public License v1.3c or later + See:| http://www.latex-project.org/lppl.txt -This is a generated file. +\endpreamble +\postamble -Copyright (C) 2013 by Charles P. Schaum +Copyright (C) 2016 by Charles P. Schaum -This file may be distributed and/or modified under the conditions of -the LaTeX Project Public License, either version 1.2 of this license -or (at your option) any later version. The latest version of this -license is in: +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: - http://www.latex-project.org/lppl.txt +http://www.latex-project.org/lppl.txt -and version 1.2 or later is part of all distributions of LaTeX version -1999/12/01 or later. +This work is "maintained" (as per LPPL maintenance status) by +Charles P. Schaum. -\endpreamble +This work consists of the file schemata.dtx 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. -\generate{\file{schemata.sty}{\from{schemata.dtx}{package}}} - -\obeyspaces -\Msg{*************************************************************} -\Msg{* *} -\Msg{* To finish the installation you have to move the following *} -\Msg{* file into a directory searched by TeX: *} -\Msg{* *} -\Msg{* schemata.sty *} -\Msg{* *} -\Msg{* To produce the documentation run the file schemata.dtx *} -\Msg{* through LaTeX. *} -\Msg{* *} -\Msg{* Happy TeXing! *} -\Msg{* *} -\Msg{*************************************************************} +\endpostamble +\usedir{tex/generic/schemata} +\generate{ + \file{\jobname.sty}{\from{\jobname.dtx}{package}} +} \endbatchfile +%% +%% Copyright (C) 2016 by Charles P. Schaum +%% +%% 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: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% This work is "maintained" (as per LPPL maintenance status) by +%% Charles P. Schaum. +%% +%% This work consists of the file schemata.dtx and a Makefile. +%% Running "make" generates the derived files README, schemata.pdf and schemata.sty. +%% Running "make inst" installs the files in the user's TeX tree. +%% Running "make install" installs the files in the local TeX tree. +%% +%% +%% End of file `schemata.ins'. -- cgit v1.2.3