summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/catechis/catechis.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/catechis/catechis.dtx')
-rw-r--r--Master/texmf-dist/source/latex/catechis/catechis.dtx540
1 files changed, 540 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/catechis/catechis.dtx b/Master/texmf-dist/source/latex/catechis/catechis.dtx
new file mode 100644
index 00000000000..4eda60e7e6a
--- /dev/null
+++ b/Master/texmf-dist/source/latex/catechis/catechis.dtx
@@ -0,0 +1,540 @@
+% \iffalse
+% +AMDG This document was begun on E January 1202, and it
+% is humbly dedicated to her Immaculate Heart for
+% her prayers, and to the Sacred Heart of Jesus for His
+% mercy.
+%
+% This document is copyright 2017 by Donald P. Goodman, and is
+% released publicly under the LaTeX Project Public License. The
+% distribution and modification of this work is constrained by the
+% conditions of that license. See
+% http://www.latex-project.org/lppl.txt
+% for the text of the license. This document is released
+% under version 1.3 of that license, and this work may be distributed
+% or modified under the terms of that license or, at your option, any
+% later version.
+%
+% This work has the LPPL maintenance status 'maintained'.
+%
+% The Current Maintainer of this work is Donald P. Goodman
+% (dgoodmaniii@gmail.com).
+%
+% This work consists of catechis.dtx, catechis.ins, and
+% derived files catechis.sty and catechis.pdf.
+% \fi
+
+% \iffalse
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{catechis}[2018/01/13 v2.0 Support for writing catechism questions and answers]
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{doc}
+\usepackage{array}
+\usepackage{lettrine}
+ \setcounter{DefaultLines}{3}
+ \setlength{\DefaultFindent}{2pt}
+ \renewcommand{\LettrineFontHook}{\color{red}}
+\usepackage{url}
+\usepackage{spverbatim}
+\usepackage{fancyvrb}
+ \newcommand\vitem[1][]{\SaveVerb[%
+ aftersave={\item[\textnormal{\bfseries\UseVerb[#1]{vsave}}]}]{vsave}}
+\usepackage[typeone]{dozenal}
+\usepackage{lmodern}
+\usepackage[]{catechis}
+\usepackage[colorlinks]{hyperref}
+\usepackage{makeidx}
+\EnableCrossrefs
+\PageIndex
+\CodelineNumbered
+\RecordChanges
+\makeindex
+
+\def\exline{\bigskip\hrule\bigskip}
+
+\tracingmacros=3 \begin{document} \DocInput{catechis.dtx}
+\end{document}
+%</driver> \fi
+%
+% \title{The |catechis| Package, v2.0} \author{Donald P.\
+% Goodman III} \date{\today}
+%
+% \maketitle
+%
+% \begin{abstract}
+% \noindent
+% The catechism (a text consisting of explicitly-stated and
+% usually numbered questions and answers) has long been an
+% important vehicle for teaching the basics of concepts.
+% \LaTeX, however, does not by default have much facility
+% for producing such texts. The |catechis| package provides
+% a number of highly customizable macros for writing
+% catechisms, including a numbered question-and-answer
+% environment; comments on answers; and citations.
+% \end{abstract}
+%
+% \tableofcontents
+%
+% \section{Introduction}
+%
+% Catechisms are largely known for basic religious
+% instruction, and this has indeed been their primary use.
+% For this reason alone, \LaTeX\ ought to have some
+% facilities for authoring them. Furthermore, the form is
+% useful for other topics, as well; it provides an easy way
+% to give basic information on a topic, making it easily
+% extractable by eye from the full text, while still
+% allowing more advanced discussion for those who wish to
+% plunge more deeply into a given question.
+%
+% |catechis| is packaged according to the \LaTeX\
+% \textsc{docstrip} utility, which allows automatic
+% extraction of code and documentation from the same files.
+%
+% This is version 2.0 of |catechis|; it represents a mostly
+% complete rewrite of the package, which is therefore much
+% simpler and more robust.
+%
+% \section{The State of the \TeX\ for Catechisms}
+% \label{sect:state}
+%
+% \LaTeX\ has basically no provision for producing
+% well-formed catechisms. It's easy enough to fake it, of
+% course; for example:
+%
+% \begin{verbatim}
+% \begin{enumerate}
+% \item\textbf{Who made us?} \\ God made us.
+% \item\textbf{Why did God make us?} \\ God made us to
+% know Him, love Him, and serve Him, and by so doing
+% to gain everlasting life with Him in Heaven.
+% \end{enumerate}
+% \end{verbatim}
+%
+% This gives the following result:
+%
+% \exline
+%\begin{enumerate}
+% \item\textbf{Who made us?} \\ God made us.
+% \item\textbf{Why did God make us?} \\ God made us to
+% know Him, love Him, and serve Him, and by so doing
+% to gain everlasting life with Him in Heaven.
+%\end{enumerate}
+% \exline
+%
+% However, this solution is far from satisfactory. It's
+% unportable, fit really only for this one document;
+% uncustomizable, because it's hard-wired to do only this
+% one thing; unmodifiable, at least automatically, because
+% it uses explicit visual formatting in the text; and far
+% too wordy. What is desired is something more along the
+% lines of the following:
+%
+% \begin{verbatim}
+% \catques{Who made us?}{God made us.}
+% \catques{Why did God make us?}{God made us to
+% know Him, love Him, and serve Him, and by so doing
+% to gain everlasting life with Him in Heaven.}
+% \end{verbatim}
+%
+% Which, with the |catechis| package, produces this:
+%
+% \exline
+% \catques{Who made us?}{God made us.}
+% \catques{Why did God make us?}{God made us to
+% know Him, love Him, and serve Him, and by so doing
+% to gain everlasting life with Him in Heaven.}
+% \catques{What will happen if the question is really long,
+% so that it wraps to the next line?}{It will work properly,
+% with the wrapped line appropriately indented. The answer,
+% as you have already seen, will behave likewise.}
+% \exline
+%
+% |catechis| provides these facilities and more to produce
+% high-quality, useful catechisms.
+%
+% \section{Basic Usage}
+% \label{sect:basics}
+%
+% The most basic usage of |catechis| is encompassed by the
+% \DescribeMacro{\catques}|\catques| macro:
+%
+% \begin{center}
+% \cmd{\catques} \marg{question} \marg{answer}
+% \end{center}
+%
+% There is no more to this than meets the eye. Both
+% arguments are mandatory, though either may be empty; the
+% first is the question, and the second is the answer. It
+% is often helpful to indent sensibly to keep these more
+% readable in the source:
+%
+% \begin{verbatim}
+% \catques{What is the question?}{%
+% The question is, ``What is the question?''}%
+% \end{verbatim}
+%
+% This produces the following:
+%
+% \exline
+% \catques{What is the question?}{The question is, ``What is the question?''}%
+% \exline
+%
+% Our next macro, \DescribeMacro{\catcomment}|\catcomment|,
+% really shows the genius of the catechism concept. The
+% question and answer are the \emph{basic} information; it's
+% easily followed up by a comment, which is visually
+% separate and can be skipped by those interested in, or
+% only ready for, the basics, but is still sensibly placed
+% and ready for those who wish it.
+%
+% \exline
+% \catques{What is the question?}{The question is, ``What is the question?''}%
+% \catcomment{This is a comment. It's very interesting, it
+% wraps and indents correctly, and the package's default
+% comment style is demonstrated here.}
+% \catques{How are the questions numbered? Are they
+% numbered sequentially, throughout the text?}{Yes, the
+% questions are numbered sequentially throughout the text.
+% You can reset the numbers manually, which we'll talk about
+% later; but by default, there is one question stream which
+% is numbered from 1 on up.}
+% \catcomment{We're numbering questions sequentially to show
+% that you can have catechism questions scattered throughout
+% a text, or your text can be entirely in the form of a
+% catechism. |catechis| works either way.}
+% \exline
+%
+% There is also the \DescribeMacro{\catexplic}|\catexplic|
+% command, which works essentially identically to
+% |\catcomment| but can include paragraph breaks and is
+% intended for much lengthier commentary on the answer.
+%
+% \begin{verbatim}
+% \catques{What is the question?}{The question is, ``What is the question?''}%
+% \catcomment{This is a comment. It's very interesting, it
+% wraps and indents correctly, and the package's default
+% comment style is demonstrated here.}
+% \catexplic{We can make some really impressive things
+% happen with this command. While comments allow
+% short explanatory comments on an answer, explics
+% give us field to go on for a long time, if we want.
+%
+% We can put in paragraph breaks, and we can even do the
+% following:
+% \begin{compactenum}
+% \item We can put lists in them!
+% \item Isn't that cool? This can provide a great way to
+% give advanced information on a topic that people can read
+% if they want, or just skip on to the next question!
+% \end{compactenum}\restoreindents
+%
+% You can really produce beautiful catechetical works using
+% this facility, which will do a great job of instructing
+% people at all levels of expertise.
+% }%
+% \end{verbatim}
+%
+% \exline
+% \catques{What is the question?}{The question is, ``What is the question?''}%
+% \catcomment{This is a comment. It's very interesting, it
+% wraps and indents correctly, and the package's default
+% comment style is demonstrated here.}
+% \catexplic{We can make some really impressive things
+% happen with this command. While comments allow
+% short explanatory comments on an answer, explics
+% give us field to go on for a long time, if we want.
+%
+% We can put in paragraph breaks, the indentation of which
+% we can control with fine granularity; and we can even do the
+% following:
+%
+% \begin{compactenum}
+% \item We can put lists in them!
+% \item Isn't that cool? This can provide a great way to
+% give advanced information on a topic that people can read
+% if they want, or just skip on to the next question!
+% \end{compactenum}\restoreindents
+%
+% You can really produce beautiful catechetical works using
+% this facility, which will do a great job of instructing
+% people at all levels of expertise.
+%
+% }%
+% \exline
+%
+% You'll note that lists \emph{will} hose all of
+% |catechis|'s careful indentation, so after using one in a
+% |\catexplic|, you must issue
+% \DescribeMacro{\restoreindents}|\restoreindents| to get
+% everything back to normal.
+%
+% Catechisms also routinely provide citations to support
+% their claims; |catechis| provides for this, too. A
+% heading for a group of citations is printed by issuing
+% \DescribeMacro{\catcitetitle}|\catcitetitle|, and each
+% individual citation is printed by issuing the |\catcite|
+% command, which takes the citation as the first argument
+% and the source as the second:
+%
+% \begin{center}
+% \DescribeMacro{\catcite}
+% \cmd{\catcite} \marg{citation} \marg{source}
+% \end{center}
+%
+% An example:
+%
+% \begin{verbatim}
+% \catcitetitle
+% \catcite{For the apparel oft proclaims the man.}{Polonius}
+% \catcite{And this above all: to thine own self be true; /
+% and it must follow, as the night the day, / that thou
+% canst not be false to any man.}{Polonius}
+% \end{verbatim}
+%
+% \exline
+% \catcitetitle
+% \catcite{For the apparel oft proclaims the man.}{Polonius}
+% \catcite{And this above all: to thine own self be true; /
+% and it must follow, as the night the day, / that thou
+% canst not be false to any man.}{Polonius}
+% \exline
+%
+% Lastly, |catechis| gives some provisions for more
+% customary catechetical enumerates. It uses standard
+% features from the |paralist| package for this, and simply
+% makes those the default.
+%
+% \begin{verbatim}
+% \catques{Can we do enumerates?}{Yes, we can do those; we
+% can even do them in a special way, so that it looks more
+% like the way catechisms customarily look.}
+% \catcomment{Just check this out; we have here a comment
+% giving slightly more detailed information, then an
+% enumerate giving \emph{much} more detailed information.}
+% \begin{enumerate}
+% \item Here, we have the first item, with some extra
+% details elaborating on what was said before.
+% \item Here, we have another item.
+% \item Here, we have still another.
+% \end{enumerate}
+% \end{verbatim}
+%
+% \exline
+% \catques{Can we do enumerates?}{Yes, we can do those; we
+% can even do them in a special way, so that it looks more
+% like the way catechisms customarily look.}
+% \catcomment{Just check this out; we have here a comment
+% giving slightly more detailed information, then an
+% enumerate giving \emph{much} more detailed information.}
+% \begin{compactenum}
+% \item Here, we have the first item, with some extra
+% details elaborating on what was said before.
+% \item Here, we have another item.
+% \item Here, we have still another.
+% \end{compactenum}
+% \exline
+%
+% \section{Customization}
+% \label{sect:custom}
+%
+% Pretty much everything in the package can be customized.
+% The names of the necessary commands and lengths are fairly
+% predictable: they will start with |\cat|, be followed by
+% the type of thing (|ques|, |comm|, |explic|, etc.), and
+% then the property to be set (|sty|, |indent|, |hindent|,
+% etc.).
+%
+% In all cases, lengths are set with |\setlength|, while
+% commands are set with |\newcommand| or |\def|.
+%
+% \begin{description}
+% \vitem|catquesnum| \DescribeMacro{catquesnum} The counter
+% which |catechis| maintains for the questions. It can be
+% set or reset with the usual \LaTeX\ counter commands
+% (e.g., |\setcounter|, |\addtocounter|).
+% \vitem|\thecatquesnum| \DescribeMacro{\thecatquesnum} The
+% actual typeset version of |catquesnum|. By default, this
+% is defined as |\renewcommand{\thecatquesnum}{\arabic{catquesnum}.}|.
+% \vitem|\catquesnumwd| \DescribeMacro{\catquesnumwd} The
+% width of the box in which |catechis| typesets the question
+% numbe. By default, |2em|.
+% \vitem|\catquesindent| \DescribeMacro{\catquesindent}
+% The indentation of the first line of the question in
+% |\catques|. By default, |0em|.
+% \vitem|\catqueshindent| \DescribeMacro{\catqueshindent}
+% The indentation of subsequent lines of the question in
+% |\catques|. By default, |2em|.
+% \vitem|\catquessty| \DescribeMacro{\catquessty} The style
+% in which the question will be printed in |\catques|. By
+% default, |\bfseries|.
+% \vitem|\catansindent| \DescribeMacro{\catansindent}
+% The indentation of the first line of the answer in
+% |\catques|. By default, |2em|.
+% \vitem|\catanshindent| \DescribeMacro{\catanshindent}
+% The indentation of subsequent lines of the answer in
+% |\catques|. By default, |2em|.
+% \vitem|\catanssty| \DescribeMacro{\catanssty} The style
+% in which the answer will be printed in |\catques|. By
+% default, empty.
+% \vitem|\catcommindent| \DescribeMacro{\catcommindent}
+% The indentation of the first line of the comment in
+% |\catcomment|. By default, |2em|.
+% \vitem|\catcommhindent| \DescribeMacro{\catcommhindent}
+% The indentation of subsequent lines of the comment in
+% |\catcomment|. By default, |2em|.
+% \vitem|\catcommsty| \DescribeMacro{\catcommsty} The style
+% in which the comment will be printed in |\catcomment|. By
+% default, empty.
+% \vitem|\catexplicindent| \DescribeMacro{\catexplicindent}
+% The indentation of the first line of the paragraphs in a
+% |\catexplic|. By default, |4em|.
+% \vitem|\catexplichindent| \DescribeMacro{\catexplichindent}
+% The indentation of subsequent lines of the paragraphs in a
+% |\catexplic|. By default, |2em|.
+% \vitem|\catexplicsty| \DescribeMacro{\catexplicsty} The style
+% in which the comment will be printed in |\catexplic|. By
+% default, |\small|.
+% \vitem|\catcitetitleword|
+% \DescribeMacro{\catcitetitleword} The word which the
+% |\catcitetitle| command will print. By default,
+% |Citations|.
+% \vitem|\catcitetitlesty| \DescribeMacro{\catcitetitlesty}
+% The style in which |\catcitetitle| will print its
+% contents. By default, |\Large\scshape|.
+% \vitem|\catciteindent| \DescribeMacro{\catciteindent} The
+% indentation of the first line of the citation itself
+% (that is, the quotation) in a |\catcite|. By default,
+% |0em|.
+% \vitem|\catcitehindent| \DescribeMacro{\catcitehindent}
+% The indentation of subsequent lines in the citation itself
+% (that is, the quotation) in a |\catcite|. By default,
+% |0em|.
+% \vitem|\catcitesty| \DescribeMacro{\catcitesty} The style
+% in which the citation itself (that is, the quotation) will
+% be printed in |\catcite|. By default, |\itshape|.
+% \vitem|\catsrcindent| \DescribeMacro{\catsrcindent} The
+% indentation of the first line of the source
+% in a |\catcite|. By default, |2em|.
+% \vitem|\catsrchindent| \DescribeMacro{\catsrchindent}
+% The indentation of subsequent lines in the source
+% in a |\catcite|. By default, |2em|.
+% \vitem|\catsrcsty| \DescribeMacro{\catsrcsty} The style in
+% which the source will be printed in |\catcite|. By
+% default, empty.
+% \end{description}
+%
+% Finally, the list settings are all from |paralist|, so
+% that package's documentation should be consulted for
+% changing the defaults set up for them.
+%
+% These options are sufficient to manipulate |catechis|
+% into behaving however you'd like.
+%
+% \section{Implementation}
+%
+% Start by requiring |paralist|, to take care of our custom
+% enumerates.
+% \begin{macrocode}
+\RequirePackage{paralist}
+ \setdefaultenum{(a)}{(1)}{(i)}{(A)}
+ \setdefaultleftmargin{3.8em}{}{}{}{}{}
+% \end{macrocode}
+% Now we create the indentations and styles for the default
+% question counter, the questions themselves, and the
+% answers. We also set sensible defaults.
+% \begin{macrocode}
+\newlength{\catquesindent}\setlength{\catquesindent}{0em}
+\newlength{\catqueshindent}\setlength{\catqueshindent}{2em}
+\newlength{\catansindent}\setlength{\catansindent}{2em}
+\newlength{\catanshindent}\setlength{\catanshindent}{2em}
+\newlength{\catquesnumwd}\setlength{\catquesnumwd}{2em}
+\newcounter{catquesnum}\setcounter{catquesnum}{0}
+\def\catquesnumsty{\bfseries}
+\def\catquessty{\bfseries}
+\def\catanssty{}
+\renewcommand{\thecatquesnum}{\arabic{catquesnum}.}
+% \end{macrocode}
+% Here, we define the catechism question macro. Nothing
+% much surprising here.
+% \begin{macrocode}
+\def\catques#1#2{%
+ \stepcounter{catquesnum}%
+ {\parindent=\catquesindent\hangindent=\catqueshindent\hangafter=1%
+ {\par\leavevmode\hbox to\catquesnumwd{\catquesnumsty\thecatquesnum}%
+ \catquessty #1}\par}%
+ {\parindent=\catansindent\hangindent=\catanshindent\hangafter=1%
+ {\par\catanssty #2}\par}%
+}%
+% \end{macrocode}
+% Define the catechism comments, and set sensible defaults
+% for the settings.
+% \begin{macrocode}
+\def\catcommentsty{\itshape}
+\newlength{\commindent}\setlength{\commindent}{2em}
+\newlength{\commhindent}\setlength{\commhindent}{2em}
+\def\catcomment#1{%
+ {\parindent=\commindent\hangindent=\commhindent\hangafter=1%
+ {\par\catcommentsty #1}\par}
+}%
+% \end{macrocode}
+% Define the catechism explications (longer than comments,
+% allowing paragraph breaks), and set sensible defaults for
+% their settings.
+% \begin{macrocode}
+\def\catexplicsty{\small}
+\newlength{\explicindent}\setlength{\explicindent}{4em}
+\newlength{\explichindent}\setlength{\explichindent}{2em}
+\long\def\catexplic#1{%
+ {\par\everypar={\parindent=\explicindent\hangindent=\explichindent\hangafter=1}%
+ {\par\catexplicsty\ #1}\par}%
+}%
+% \end{macrocode}
+% Because lists always seem to run roughshod over
+% indentation settings, and because it's easier to do this
+% than to write custom lists just for this package, we
+% define |\restoreindents| to fix settings after a list in a
+% |\catexplic|.
+% \begin{macrocode}
+\def\restoreindents{%
+ \par%
+ \everypar={%
+ \parindent=\explicindent%
+ \hangindent=\explichindent%
+ \hangafter=1%
+ }%
+ \par%
+}%
+% \end{macrocode}
+% Define the commands to produce citation titles, and set
+% sensible defaults.
+% \begin{macrocode}
+\def\catcitetitlesty{\Large\scshape}%
+\def\catcitetitleword{Citations}%
+\def\catcitetitle{%
+ \begin{center}%
+ \catcitetitlesty\catcitetitleword%
+ \end{center}%
+}%
+% \end{macrocode}
+% Define actual citations macros and lengths.
+% \begin{macrocode}
+\def\catcitesty{\itshape}%
+\def\catsrcsty{}%
+\newlength{\catciteindent}\setlength{\catciteindent}{0em}%
+\newlength{\catcitehindent}\setlength{\catcitehindent}{0em}%
+\newlength{\catsrcindent}\setlength{\catsrcindent}{2em}%
+\newlength{\catsrchindent}\setlength{\catsrchindent}{2em}%
+\def\catcite#1#2{%
+ {\parindent=\catciteindent\hangindent=\catcitehindent\hangafter=1%
+ {\par\catcitesty #1}\par}%
+ {\parindent=\catsrcindent\hangindent=\catsrchindent\hangafter=1%
+ {\par\catsrcsty#2}\par}%
+}%
+\let\scripture=\catcite
+% \end{macrocode}
+%
+% And that's it. Happy \TeX{}ing!
+%
+% \PrintIndex