summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/catechis/catechis.sty
blob: cc94a2957e1ebe305c43a1747154ab2516234fcb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
% \iffalse
% +AMDG  This document was begun on 9 November 2007, the 
% commemoration of St. Theodore the Martyr, and it is humbly 
% dedicated to him and to the Immaculate Heart of Mary 
% for their prayers, and to the Sacred Heart of Jesus 
% for His mercy.  Also to St. Peter Damien, Hammer of 
% heretics, and to St. Pius V, and St. Thomas Aquinas; pray 
% for us!
% 
% This document is copyright 2008 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.
% 
% This work consists of the files catechis.ins, catechis.sty, and
% test.tex, along with README.
% \fi
%
% \maketitle
% \begin{abstract}
% The |catechis| package is a simple package which defines a number of highly 
% customizable macros for writing catechisms.  These include a numbered 
% question environment; a command for comments and one for scripture
% citations; and special commands and lengths which can be easily 
% altered for each, thus making, for example, the indentation of each question 
% and answer easily altered according to situation and taste.
% \end{abstract}
% 
% \tableofcontents
% 
% \section{Introduction}
% 
% There is no package which provides appropriate commands for writing 
% catechism questions and explanations.  One-off hacks are, of course, quite 
% easy to produce:
% \begin{quote}
% |\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{quote}
% 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 (which itself it totally antithetical 
% to \LaTeX\ principles); and far too wordy.  What is desired is something 
% more along the lines of the following:
% \begin{quote}
% |\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{quote}
% The |catechis| package was designed to provide just these such commands, 
% with significant further additions useful for catechism writing, as well.
% 
% This document was produced in accordance with the \LaTeX\ \textsc{docstrip} 
% utility.
%
% Any questions, comments, and improvements can be sent to the package author, 
% Donald Goodman, at dgoodmaniii at gmail dot com.
% 
% \section{Basic Usage}
% 
% Basic usage is\ldots well, it's basic.  There's one basic command which 
% answers most catechism needs: \DescribeMacro{\catques}|\catques|.  
% \cmd{\catques} is, as the name implies, the means of formatting most 
% catechism questions.  Its usage is simple:
% \begin{quote}
% \cs{catques}\marg{question text}\marg{answer text}
% \end{quote}
% And that's all there is to it.  A question number will be generated, the 
% question itself will be formatted, then a line break, and then the answer 
% will be formatted.  And you're done.  The above, for example, looks like 
% this:
% \begin{quote}
% \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{quote}
% Minus the indentation added by the |quote| environment I've wrapped it in 
% here, of course.
%
% That is, in a nutshell, all there is to the basic usage of the |catechis| 
% package.
%
% \subsection{The List Hacks}
%
% The package also includes some ugly hacks on |enumerate| which,
% though ugly, do what they are supposed to do.  That is, they alter the
% indentation and spacing of the |enumerate| environments to make it
% conform with those in traditional catechisms that have fallen under my
% gaze.  What these means, practically, is merely the following:
% \begin{enumerate}
% \item The labels for the environments are altered appropriately;
% rather than beginning with arabic numerals, it begins with lower-case
% letters, then moves on to arabic numerals, then to romanettes.
% \item The punctuation is different; first level is followed by a
% period, second is enclosed in parentheses, third is followed by a
% period.
% \item The indentation is altered to make it work better with the
% question indentation used.
% \end{enumerate}
% So enjoy the |enumerate|s, though they're really not anything
% remarkable.
%
% \subsection{Customization of Basic Usage}
%
% However, there's much more to it than that \emph{if the user wants there to 
% be}.  In the tradition of Peter Wilson,\footnote{Author of a number of highly 
% customizable and versatile packages and classes, from |tocbibind| and 
% |epigraph| to the monumental |memoir| class, which has a manual well worth 
% the reading even if the class will not be used.  His packages are 
% masterpieces; no comparison is meant (or possible) between them and this 
% rather hackish and inelegant one.} I endeavored to make the 
% package as customizable as possible.  Thus, more or less all of the 
% formatting decisions (namely, all except those which are universal among all 
% works of the type) have been placed inside command names or specially named 
% lengths, to be altered by standard \LaTeX\ |\renewcommand|s or 
% |\setlength|s.  Use of these commands can easily be found from any number of 
% basic \LaTeX\ tutorials.\footnote{The most useful, this author found, was 
% the nearly ubiquitous \textit{The Not-so-short Introduction to \LaTeXe}, 
% available from CTAN.}
%
% For example, if you don't want the question number to be in bold (the 
% default), you just have to redefine the macro\DescribeMacro{\quesnumweight} 
% | \quesnumweight|, and it will take on the weight you put there.  If you 
% wanted normal weight, just say:
% \begin{quote}
% |\renewcommand\quesnumweight{}|
% \end{quote}
% Your question number will now be weightless; that is, normal weight, not 
% bolded.  You've overridden the default.  This command, like all such 
% commands, will only take effect on those |\catques| commands issued 
% \emph{after} the formatting command is issued.
% 
% But though your question number will then be formatted as you like, you may 
% not like the question itself.  You may want the question itself to also be 
% normal weight.  Use the macro\DescribeMacro{\questionweight} 
% | \questionweight|.  If you want to italicize them, redefine the macros 
% \DescribeMacro{\quesnumstyle}|\quesnumstyle| and 
% \DescribeMacro{\questionstyle}|\questionstyle|.  To do this, simply place the 
% name of the command you want to work on the unit in the argument of the 
% macro; no braces are needed, being added by the package itself.  Thus, issue 
% the simple command |\renewcommand\questionstyle{\textit}|, and the question 
% will become italicized.
%
% Formatting the answer is predictable:  use the macros 
% \DescribeMacro{\answeight}|\answeight| and 
% \DescribeMacro{\ansstyle}|\ansstyle| in the same way.
%
% If you want to change the spacing involved, you must begin to use 
% |\setlength| commands instead, but the principle is identical.  Say, for 
% example, that you don't like the amount of space put in between the questions 
% by default (1em plus 2pt minus 2pt).  All you have to do is change the 
% length named \DescribeMacro{\questionskip}|\questionskip|.  |\questionskip| 
% is rubber by default, because otherwise the package would produce horrible 
% |overfull vbox| errors every time it was used; this cannot be overriden 
% without changing the internal definitions of the package itself.  I did this 
% so that unsuspecting newby users, God bless them, wouldn't unknowingly make 
% it impossible for \LaTeX\ to properly justify their pages.  Thus, that 
% plus 2pt minus 2pt rubber length is unchangeable.  I may change this in 
% future releases, but for now, it's there for good.
%
% On the other hand, all other lengths are, by default, rigid, though they 
% can be made rubber by defining them as such.  If, for example, you want to 
% change the space in between the questions and answers, just give a new 
% length to \DescribeMacro{\answerskip}|\answerskip|, which defaults to 0em.  
% 
% For the indentations, the lengths are again broken into those for questions 
% and those for answers.  Plus, indentation styles are provided, to allow for 
% either hanging or normal indentation.  First, the question indents.
% 
% The question indents depend upon the \emph{style} of indentation for their 
% implementation.  By ``style'' I mean just ``hanging'' or ``normal.''  The 
% default for questions is ``hanging''; that's how the second line of the 
% question is indented inward while the first line is flush with the margin.  
% If you don't like this behavior, then simply redefine the command 
% \DescribeMacro{\quesindentstyle}|\quesindentstyle| from |\hangindent| (the 
% default) to |\parindent| (normal, paragraph-style indentation).  For the 
% answers, use \DescribeMacro{\ansindentstyle}|\ansindentstyle|, which defaults 
% to |\parindent|, rather than to |\hangindent| like its question counterpart.
%
% Next, you have to modify the lengths (maybe).  First, the basic answer 
% indentation.  By default, the answers are indented by a specific amount, 
% namely \DescribeMacro{\defanswerindent}|\defanswerindent| minus 
% \DescribeMacro{\answerindent}|\answerindent|.  This was to allow for the 
% indentation to be easily set to be equal to the question number plus the 
% space prior to the beginning of the question text.  |\defanswerindent| is 
% set to precisely that length, and |\answerindent| is initialized at 0.  If 
% you want, for example, the answers to be flush to the left margin along with 
% the question number, simply define |\answerindent| to cancel out 
% |\defanswerindent|:
% \begin{quote}
% |\settowidth\answerindent{\quesnumweight{\quesnumstyle{\thequesnum.  }}}%|
% \end{quote}
% I wish it weren't that complicated, but that's what it takes; hopefully I'll 
% be able to make it more intuitive later.  For some reason simply issuing 
% |\setlength\answerindent{\the\defanswerindent}| does not work; I hope to 
% resolve this question soon.
%
% Otherwise, however, simply set |\answerindent| equal to whatever you want to 
% \emph{subtract} from |\defanswerindent|, the default.  If you want the 
% indentation to be larger, make sure you define your |\answerindent| as a 
% negative length.
%
% Now for the paragraph indentations for questions and answers.  We've already 
% seen how to set indentation ``style.''  To change actual indentation length 
% (whether hanging or normal) use the 
% \DescribeMacro{\quesparindent}|\quesparindent| (which modifies an internal 
% variable, |\defquesparindent|, in the same way as |\answerindent| does) and 
% \DescribeMacro{\ansparindent}|\ansparindent|, which works independently.  
% By default, |\defquesparindent| is set to equal the width of the question 
% number plus the space preceeding the beginning of actual question text; 
% since |\answerindent| takes care of this already for answers, it is initially 
% set to zero.  To cancel out |\defquesparindent|, simply redefine it as for 
% cancelling |\defanswerindent| (replacing |\answerindent| with 
% |\quesparindent|, of course).  |\ansparindent| can be increased or decreased 
% in the usual way.
% 
% The right indentation of the answers can also be changed with the 
% predictably named length \DescribeMacro{\rtanswerindent}|\rtanswerindent|.  
% It can be changed in the normal manner.
%
% The |enumerate|s are not particularly customizable; this is because
% I found altering the default \LaTeX\ code for them unbelievably hairy.
% Even as they are, they are remarkably ugly, and include one hack for
% getting the margins lined up properly that is quite probably the
% absolute worst piece of programming I've ever done.  But struggle as I
% might (for hours) I couldn't get it to work without it, so\ldots there
% we are.  
% 
% \DescribeMacro{\listmarg}
% Still, there is one length which by necessity is customizable:
% |\listmarg|.  This governs the left margin of the first level of the
% |enumerate|.  Right now it's set as the difference between the value
% of |\defquesparindent| and the default indentation of the first level
% of |enumerate|.  That is, |\leftmargini| (the indentation of the first
% level of a list) is defined as:
% \begin{quote}
% |\setlength\leftmargin{\the\defquesparindent+\the\listmarg}|
% \end{quote}
% So if you change the value of |\defquesparindent|, you've changed
% the indentation of the lists.  To repair this, you can either redefine
% |\@listi| entirely, or just |\leftmargini| individually, or you can
% simply alter the value of |\listmarg|.  I recommend the latter; as
% it's more removed from internals, you're unable to accidentally
% hose the indentation on your non-catechism |enumerate|s.
% 
% So, if you want to alter the value of |\defquesparindent| and want
% that of |\listmarg| to match, try just running it and seeing how it
% works.  Then redefine |\listmarg| as you think is necessary.  It's
% that simple.  Okay, so it's not simple; but it's much better than it
% was previously, I can tell you.
%
% That essentially completes the discussion of the basic command of the 
% |catechis| package.  Now we may discuss some of its more advanced features.
% 
% \section{Advanced Features}
%
% \subsection{Comments}
%
% \DescribeMacro{\catcomment}
% Oftentimes in catechisms the answer, while giving the basic truth
% behind the subject, doesn't give enough information.  For this sort of
% situation the |\catcomment| command was prepared.  Basically, |\catcomment|
% places a comment (by default, in normal weight italic) wherever it
% happens to be issued, with the same left and right indentation as its
% parent element.
%
% It's important that |\catcomment|s be issued as part of their parent
% element (normally, a |\catques| answer); that is, it should be issued
% \emph{before} the closing brace (|}|) of whatever it's commenting on.
% Otherwise, the spacing will probably look quite odd.  This is because
% |\catcomment| doesn't issue any |\par|s; it's literally part of whatever
% it's issued in.  But that's for the code
% section.\footnote{\textit{See} section \ref{sect:code}, at
% \pageref{sect:code}.}
% 
% By default, as said above, |\catcomment|s are set in normal weight
% italic; their indentation will be identical to that of the parent
% element.  I have not included any way to alter the indentation easily,
% as I didn't see any reasonable explanation for doing so.  I'm willing,
% of course, to take contrary arguments.
% 
% \DescribeMacro{\commentstyle}\DescribeMacro{\commentweight}
% The macros |\commentweight| and |\commentstyle| can both be 
% redefined to format the comments to your needs and tastes.  They are 
% redefined in the usual way.
% 
% \subsection{Citations Lists}
% 
% Most catechisms also include citation lists (usually Scriptural,
% entirely or nearly so) to justify their points, especially on the more
% important questions.  So |catechis| includes a way to typeset such
% entries, as well.
%
% \DescribeMacro{\citetitle}\DescribeMacro{citeword}
% The |\citetitle| command would normally be issued at the beginning
% of the section including citations.  By default, it simply skips
% down 1em, then prints what's contained in the macro |\citeword| (by
% default, this is simply ``Scripture'') in small caps, centered, and
% then turns things back over to the user.  If you want something
% other than ``Scripture'' to be printed as the title, simply redefine
% |\citeword| to something else (say, ``Citations'') by issuing the
% following:
% \begin{quote}
% |\renewcommand\citeword{Citations}|
% \end{quote}
%
% \DescribeMacro{\citetitlestyle}\DescribeMacro{\citetitleweight}
% To alter the style in which the |\citetitle| is printed, just
% redefine the macros |\citetitleweight| and |\citetitlestyle|.  By
% default, |\citetitleweight| is set to nothing (that is, normal
% weight) and |\citetitlestyle| to |\textsc|.
% 
% \DescribeMacro{\scripture}
% Next, you simply issue the |\scripture| command repeatedly, once for
% each citation in your list.  (In retrospect, this really should have
% been something more like |\citation|, but I'm afraid of conflicts with
% \textsc{Bib}\TeX, about which I know nothing.)  |\scripture| takes
% two arguments, the first the citation itself and the second its
% source.  It simply fills the current line with space, starts a new
% one, prints its first argument, fills the final line of that argument
% with space, and then prints its second argument left justified.  So
% the command should be formatted like so:
% \begin{quote}
% \cs{scripture}\marg{citation text}\marg{source text}
% \end{quote}
% 
% Yes, you guessed it; the formatting can be customized.  By default,
% the citation is printed in normal weight italics, and the source is
% printed in normal weight Roman.  You can changed each one of these
% easily by redefining commands.
% 
% \DescribeMacro{\citeweight}\DescribeMacro{\citestyle}
% \DescribeMacro{\citesize}
% The three macros in the left margin control the formatting of the
% citations.  This time, however, the size can be individually
% controlled.  This is because I was able to use |\par|s internally in
% the macros without hosing all the other formatting, since the
% citations are all set aside on their own and not dependent on their
% parent element.  So enjoy; just redefine the commands as usual.
%
% \DescribeMacro{\sourceweight}\DescribeMacro{\sourcestyle}
% \DescribeMacro{\sourcesize}
% The three macros in the left margin at this paragraph control the
% formatting of the source.  It's pretty tight, huh?  Really, though,
% there isn't much to say; I'm only continuing to write so that this
% paragraph will fill up enough to offset the margin space used by by
% those commands.
% 
% So that's the package.  Please refer to Section \ref{sect:examp} for
% visual examples of the default behavior of these macros.  I pray
% that this package be useful to you and lead to the edification and
% salvation of souls.
% 
% \section{Examples}
% \label{sect:examp}
% 
% This section is intended to demonstrate the default behavior of the
% macros.  It also demonstrates the heavily modified |enumerate|
% environment that is employed, but not described here because it
% involves no new macros but those in standard \LaTeX.  So here it
% goes.
% \setcounter{quesnum}{0}
% 
% \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 Heaven.}
% \catques{Are you going to write any actual examples, or just copy
% them all from other catechisms?}{Wait for it; I'm going to write
% some of my own.  The two above are from the Baltimore Catechism,
% verbatim or nearly so, for those who don't know.}
% \catques{Did you make a package for writing catechisms?  For 
% serious?}{Yes, I did.  I had a number of reasons for this:
% \begin{enumerate}
% \item I wanted to typeset one or two for myself.
% \catcomment{This although I've already done so in a very hacked,
% difficult to read and difficult to write style.  But at least I'm
% (hopefully) making it easier for others.}
% \begin{enumerate}
% \item There's one in \textit{Thomistic Salvation}.
% \catcomment{And it's not half bad.  I think it addresses the issues it
% was meant to address pretty thoroughly, in a basic, catechism sort of
% way.}
% \item There's also one in \textit{Officium Parvum}.\label{testlabel}
% \catcomment{This one could use some work.  But it still isn't
% terrible.}
% \end{enumerate}
% \item It's a part of my plan to make a complete Catholic 
% desktop (though what that plan is, exactly, is still somewhat 
% up in the air).
% \catcomment{I'm trying to flesh this idea out a little more.  It will
% at least contain a couple of \LaTeX\ packages and a multilingual
% Scripture-searching tool; hopefully also a Catholic calendar desklet
% and similar items.}
% \end{enumerate}
% } % 
% 
% \catques{All right, I guess so.  But it still seems weird.}{Maybe.  
% But I think (hope) it'll bear fruit.
% \catcomment{And I'm very hopeful.  Hope is, after all, one of the
% three theological virtues, and mentioned repeatedly in the Scriptures
% as necessary for us to have.}
% }% 
% 
% \catques{Here's a really long question that I'm trying to make 
% wrap onto another line so that we can see how that will behave.  
% Will it behave well?}{Yes, it will behave well.  The algorithm 
% is reasonably obedient and well-behaved.}
% \catques{What about the Scripture citations you often see in
% catechisms?  Can this hooty-falooty package of yours handle those?}{%
% I'm glad you asked.  Yes, this package can easily handle those.
% \catcomment{Even in conjunction with a catcomment, you'll notice;
% versatility (and ease of goal) is always the key.}
% \citetitle
% \scripture{In the beginning was the Word, and the Word was with God,
% and the Word was God.}{St.~John 1:1.}
% \scripture{Where wast thou when I laid up the foundations of the 
% earth? tell me if thou hast understanding.}{Job 38:4}
% }%
% \catques{Finally, how do the labels work with the hacked
% |enumerate|s?}{Well, they work all right, thanks to |varioref|; in fact, 
% here's one:  \ref{testlabel}.}
% \catques{I want to see some double-digit question numbers.}{I'm
% working on it; only one more question to go.}
% \catques{Finally; do they indent properly and all, at least with the
% defaults?}{Yes, they indent exactly as one would expect.
% \catcomment{Although in this, my first real foray into serious
% \LaTeX\ programming, I found that very little works as expected, and
% one must have a very thorough knowledge of internals to avoid being
% surprised and having to work quite hard to figure out some unexpected
% results.}
% }
%
% \section{Implementation}
% \label{sect:code}
% 
% Here's the specifications of the code.  Bear with me; I'm really
% only an amateur \LaTeX\ programmer (the code will reveal this to
% anyone with real experience), so it's probably pretty sloppy.
% 
% First we name the package. 
%    \begin{macrocode}
\ProvidesPackage{catechis}
%    \end{macrocode}
% 
% Then we call the packages that we're going to require.  I call
% |calc| and |ifthen| reflexively; neither are used extensively, but
% both some.  |varioref| is needed for hacking |enumerate|; I needed
% its |\labelformat| command.
%    \begin{macrocode}
\RequirePackage{calc}
\RequirePackage{ifthen}
\RequirePackage{varioref}
%    \end{macrocode}
% 
% Now we delcare some default settings that may be redeclared by the
% user; the user just has to |\renewcommand| them.  These are almost all
% visual formatting issues best hidden from the author.
%    \begin{macrocode}
\newcommand\quesnumweight{\textbf}% 
\newcommand\questionweight{\textbf}%
\newcommand\answeight{}%
\newcommand\quesnumstyle{}% 
\newcommand\questionstyle{}%
\newcommand\ansstyle{}%
\newcommand\quesindentstyle{\hangindent}%
\newcommand\ansindentstyle{\parindent}%
\newcommand\commentweight{}\newcommand\commentstyle{\textit}%
\newcommand\citeweight{}\newcommand\citestyle{\textit}% 
\newcommand\sourceweight{}\newcommand\sourcestyle{}% 
\newcommand\citetitleweight{}\newcommand\citetitlestyle{\textsc}
\newcommand\citeword{Scripture}
\newcommand\citesize{\small}
\newcommand\sourcesize{\small}
%    \end{macrocode}
% 
% Now we declare the necessary lengths.  Once again, these are
% formatting issues best hidden from the author.
%    \begin{macrocode}
\newlength\questionskip
\setlength\questionskip{1em} % Space b/f questions; in macros, rubber
\newlength\answerskip
\setlength\answerskip{0pt} % Space before answers
\newlength\answerindent\newlength\rtanswerindent
\setlength\rtanswerindent{0em} % Right indentation of answers
\newlength\defanswerindent % Used internally only, below
\newlength\defquesparindent % Default question parindent
\newlength\quesparindent % Customizable question parindent
\newlength\ansparindent % Customizable answer parindent
\setlength\ansparindent{0em} % Initialize to zero
\newlength\listindent\newlength\listmarg
\newlength\perwidth\settowidth\perwidth{.}%
%    \end{macrocode}
%
% Now we delcare the counter for the questions.  Obvious enough.
%    \begin{macrocode}
\newcounter{quesnum}
%    \end{macrocode}
% 
% Now we begin to define the commands for the catechism questions.
% The first is, obviously, |\catques|; within |\catques| we also
% redefine all the |enumerate| macros, so that it won't hose the
% |enumerate|s in other, non-catechism parts of the document.
%    \begin{macrocode}
\newcommand\catques[2]{%
\refstepcounter{quesnum}%
\renewcommand\theenumi{\alph{enumi}}%
\labelformat{enumi}{\thequesnum(\theenumi)}%
\renewcommand\theenumii{\arabic{enumii}}%
\labelformat{enumii}{\thequesnum(\theenumi)(\theenumii)}%
\renewcommand\theenumiii{\roman{enumiii}}%
\labelformat{enumiii}{\thequesnum(\theenumi)(\theenumii)(\theenumiii)}%
\renewcommand\theenumiv{\Alph{enumiv}}%
\labelformat{enumiv}{\thequesnum(\theenumi)(\theenumii)(\theenumiii)%
(\theenumiv)}%
\setlength\leftmarginiii{2em}%
\setlength\leftmarginiv{2em}%
\renewcommand\@listi{%
\setlength\listmarg{\the\labelsep+\the\labelwidth + \the\perwidth}
\setlength\leftmargin{\the\defquesparindent + \the\listmarg}%
\setlength\parsep{0em}%
\setlength\itemsep{0em plus 2pt minus 2pt}%
\setlength\topsep{0em}
\setlength\partopsep{0em}
\setlength\parskip{0em}
}% end redef of \@listi
\renewcommand\@listii{%
\setlength\leftmargin{0em+\the\labelwidth}%
\setlength\parsep{0em}%
\setlength\itemsep{0em plus 2pt minus 2pt}%
\setlength\topsep{0em}
\setlength\partopsep{0em}
\setlength\parskip{0em}
}% end redef of \@listii
\renewcommand\@listiii{%
\setlength\leftmargin{0em+\the\labelwidth}%
\setlength\parsep{0em}%
\setlength\itemsep{0em plus 2pt minus 2pt}%
\setlength\topsep{0em}
\setlength\partopsep{0em}
\setlength\parskip{0em}
}% end redef of \@listiii
\renewcommand\@listiv{%
\setlength\leftmargin{0em+\the\labelwidth}%
\setlength\parsep{0em}%
\setlength\itemsep{0em plus 2pt minus 2pt}%
\setlength\topsep{0em}
\setlength\partopsep{0em}
\setlength\parskip{0em}
}% end redef of \@listiv
\begingroup\par\setlength\parskip{\the\questionskip plus 2pt minus 2pt}%
\settowidth\defquesparindent{% This sucks; but for some reason the
% indentation eats closing spaces, so...
\quesnumweight{\quesnumstyle{\thequesnum.  }}}%
\ifthenelse{\quesindentstyle=\hangindent}{%
\setlength\parindent{0pt}}{\hangafter=1}%
\setlength\quesindentstyle{\the\defquesparindent-\the\quesparindent}%
\quesnumweight{\quesnumstyle{\thequesnum\@.}}  %
\questionweight{\questionstyle{#1}}\hfill\par\endgroup%
\begingroup\par\setlength\parskip{\the\answerskip}%
\ifthenelse{%
\ansindentstyle=\hangindent}{%
\setlength\parindent{0pt}}{\hangafter=1}%
\setlength\ansindentstyle{\the\ansparindent}%
\settowidth\defanswerindent{%
\quesnumweight{\quesnumstyle{\thequesnum.  }}}%
\setlength\leftskip{\the\defanswerindent-\the\answerindent}%
\setlength\rightskip{\the\rtanswerindent}%
\answeight{\ansstyle{#2}}\hfill\par\endgroup%
}%
%    \end{macrocode}
% My, wasn't that messy?  Now, on to the |\catcomment| command.
% Now we define the |\catcomment| command.  It's pretty simple,
% actually, thanks to lacking the identation issues that |\cateques| was
% so plagued by.
%    \begin{macrocode}
\newcommand\catcomment[1]{%
\hspace*{\stretch{1}}\\\small\commentweight{\commentstyle{#1}}%
\hspace*{\stretch{1}}\normalsize%
}%
%    \end{macrocode}
%
% Now we begin the commands for citing Scriptural citations.  In
% lists, that is.  Not too complex, either.
%    \begin{macrocode}
\newcommand\citetitle{%
\vspace*{1em}%
\begin{center}\citetitleweight{\citetitlestyle{\citeword}}\end{center}
}% end the \citetitle command
\newcommand\scripture[2]{%
\par\citesize\citeweight{\citestyle{#1}}\nolinebreak[1]%
\quad\hspace*{\fill}\mbox{\sourcesize\sourceweight{\sourcestyle{#2}}}%
\par\normalsize%
}% end the \scripture command
%    \end{macrocode}
% 
% \printindex