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
|
===============
M D W T O O L S
===============
--- Licence note ---
mdwtools package release note
Copyright (c) 1996 Mark Wooding, except doafter, which is Copyright (c) 1996
Peter Schmitt and Mark Wooding.
These programs are free software; you can redistribute them and/or modify
them under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
These programs are distributed in the hope that they will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with these programs; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
--- What it's all about ---
This is a bunch of LaTeX 2e packages which have made my life as a LaTeX user
easier, so I thought I'd share them. I'm mainly an ARM assembler hacker
(which explains why my TeX code looks so horrible), although I have been
known to write documentation for programs. This may explain the sort of
things these packages do, and where I'm coming from.
--- Licencing ---
The packages are made available under the GNU General Public Licence (not the
usual LaTeX agreement). A copy of this licence is supplied in the file
COPYING. You should read this document if you haven't read it already, even
if it's just for educational value. I'm not actually sure how good a thing
the GNU GPL actually is, so I'm sort of testing the water. The idea that
this is how all software should be distributed still fills me with a certain
amount of trepidation.
--- What's in the box ---
You should have received the following files in whatever sort of archive
thing this suite came in:
README -- You've got this file for sure, because it's this one
COPYING -- A textual version of the GNU General Public Licence
at.dtx -- Documentation and code for `at.sty' package
cmtt.dtx -- Documentation and code for `cmtt.sty'package and
associated files
doafter.dtx -- Documentation and code for `doafter.sty' package; the
code is also used in `syntax.sty' and `mdwtab.sty'
mdwlist.dtx -- Documentation and code for `mdwlist.sty' package
mdwmath.dtx -- Documentation and code for `mdwmath.sty' package
mdwtab.dtx -- Documentation and code for `mdwtab.sty' and `mathenv.sty'
packages
footnote.dtx -- Documentation and code for `footnote.sty' package; the
code is used in `mdwtab.sty'
sverb.dtx -- Documentation and code for `sverb.stx' package
syntax.dtx -- Documentation and code for `syntax.dtx' package
mdwtools.ins -- Installation script for all the packages
gpl.tex -- LaTeX version of the GNU General Public Licence
mdwtools.tex -- Definitions for typesetting the documentation
If you're missing any of these files, complain at whoever gave the rest of
them to you, and get them quickly. However, if you're lucky, you may have
received some other files:
at.sty -- Unpacked `at.sty' package
cmtt.sty -- Unpacked `cmtt.sty' package
mTTenc.def -- Unpacked encoding definition file for `cmtt.sty'
mTTcmtt.fd -- Unpacked font definition file for `cmtt.sty'
doafter.sty -- Unpacked `doafter.sty' package for LaTeX
doafter.tex -- Unpacked `doafter.tex' package for Plain TeX
mathenv.sty -- Unpacked `mathenv.sty' package
mdwlist.sty -- Unpacked `mdwlist.sty' package
mdwmath.sty -- Unpacked `mdwmath.sty' package
mdwtab.sty -- Unpacked `mdwtab.sty' package
footnote.sty -- Unpackad `savenot.dty' package
sverb.sty -- Unpacked `sverb.sty' package
syntax.sty -- Unpacked `syntax.sty' package
at.dvi -- Typeset documentation for `at.sty'
cmtt.dvi -- Typeset documentation for `cmtt.sty' and co.
doafter.dvi -- Typeset documentation for `doafter.sty'
mdwlist.dtx -- Typeset documentation for `mdwlist.sty'
mdwmath.dvi -- Typeset documentation for `mdwmath.sty'
mdwtab.dvi -- Typeset documentation for `mdwtab.sty' and `mathenv.sty'
footnote.dvi -- Typeset documentation for `footnote.sty'
sverb.dvi -- Typeset documentation for `sverb.sty'
syntax.dvi -- Typeset documentation for `syntax.sty'
If you've already got these, then great, because you don't have to generate
them. If you haven't, it's not a big deal. You might also have a bunch of
files with extensions like `.log', `.aux', `.tmp', `.ilg' and so on. These
files are really not at all interesting, and you might as well get rid of
them now.
--- What the packages do ---
Before we can get anywhere, you need to know what the packages do, roughly
speaking. Here's a quick rundown:
at.sty -- Allows you to use `@' as a sort of `command-introducing'
character, a bit like `\' is already. This gives you
a lot more short command names which you can assign to
common constructions. For example, you can set up
@/<text>/ as a command to put <text> in italics.
cmtt.sty -- Provides an `mTT' encoding for the Computer Modern
Typewriter font, which solves lots of messy problems.
doafter.sty -- Provides a TeX programmer's utility
\doafter <token> <group>
which does the <token> after the group is complete,
including any \aftergroup things. The code was originally
written by Peter Schmitt in answer to a `challenge' I made
on comp.text.tex;I tweaked it a bit to make it work
slightly better. doafter.tex is a plain TeX version of
the same macro.
mathenv.sty -- Contains a collection of mathematical environments with
a theme of aligning things in columns. There's a
rewritten version of `eqnarray' which is much more
powerful than the old one, and it gets the spacing right.
This package requires `mdwtab.sty' in order to work. It
is extracted from `mdwtab.dtx'. In general, the AmS
things to a better job, although it seems that the mathenv
matrix and script handling environments give prettier
results than the AmS equivalents (at least to my eyes).
mdwlist.sty -- Various list related environments. There's a more
versatile `description' environment, and some stuff for
making `compacted' lists (with no extra space between
items).
mdwmath.sty -- Contains a few trivial definitions for mathematical
things. The main thing is that the \sqrt command for
doing square roots has been improved -- there's a \sqrt*
command which stops the line being drawn over the formula
being square-rooted, and the positioning of the root
index (the optional argument) has been improved.
mdwtab.sty -- A complete ground-up rewrite of LaTeX's `tabular' and
`array' environments. Has lots of advantages over
the standard version, and over the version in `array.sty'.
It works correctly with all the table-related packages in
the Tools bundle (longtable, delarray, hhline, tabularx
and dcolumn). This package includes most of the code
from `doafter.sty' and `footnote.sty' (it doesn't load
the packages -- it has its own copies built-in, although
you won't waste memory if you do load these packages).
To generate `mdwtab.sty', you require `mdwtab.dtx',
`doafter.dtx' and `footnote.dtx'; the last two provide
the shared code.
footnote.sty -- Provides commands for saving executing footnotes; the
author has noticed several packages which attempt to
enable footnotes in tables, all of which eat an extra
token list register. This is an attempt to offer shared
code to do the job, saving space and effort. It also
provides a `footnote' environment which allows verbatim
text.
sverb.sty -- A bunch of macros for doing verbatim things. Required
for typesetting all the documentation for the other
packages.
syntax.sty -- A load of commands for describing syntax. There's an
environment for typesetting BNF grammars. But best of
all, there's a load of commands and environments for
drawing syntax diagrams. Required for typesetting all
the documentation for the other packages. If you're
extracting syntax.sty from syntax.dtx, you also need
doafter.dtx.
With the exception of the dependencies listed above, the packages will all
work independently of each other. If you want to typeset the documentation,
you'll need `sverb.sty' and `syntax.sty'. Typesetting the documentation
isn't essential, although it will probably help if you can see what the
various commands actually do.
--- Extracting the packages ---
If you don't have the various .sty files already, you'll need to extract them
from the .dtx files. This requires docstrip.tex, which should be part of
your base LaTeX 2e distribution. If you have docstrip vsersion 2.3d, which
is available with the December 1995 release of LaTeX, things will go rather
faster. If your LaTeX release is much older than this, you should upgrade,
because the packages need a fairly new LaTeX anyway. (I could do something
about this, but I won't, because I want to encourage everyone to upgrade.)
If everything's set up correctly, all you should need to do is say
tex mdwtools.ins
or
latex mdwtools.ins
or whatever incantation is necessary to run TeX or LaTeX on the supplied
`mdwtools.ins' file on your system.
TeX will grind away at the files for a bit, and then say `Done' at you. (This
could take a while, so be patient.) You will then have a mdwtools.log file,
which you can throw away, and a collection of sparkly new .sty files, which
you should put somewhere where TeX can find them easily.
--- Typesetting the documentation ---
If you want to typeset the documentation for a package, you'll need the
`mdwtools.tex' file provided, and the `syntax.sty' and `sverb.sty' packages.
You'll also need the `.dtx' file for the package you want documentation on,
and any packages it generated.
For example, if you want documentation on `mathenv.sty', you need:
mdwtools.tex -- Shared defintions for all the documentation files
syntax.sty -- Syntax typesetting commands
sverb.sty -- Verbatim text handling commands
mathenv.sty -- So the documentation can use it to demonstrate its
features
mdwtab.sty -- Required by `mathenv.sty'
mdwtab.dtx -- The documentation file from which `mathenv.sty' was
extracted, and therefore the file which contains the
documentation you want to read
Make sure you've got all the files, and then run LaTeX on the .dtx file you
want to read.
TeX will start hammering away for a very short while, and then stop and ask
you whether you want to build the indexing files. Generating index files
takes a lot longer (I'd guess that it doubled the amount of time taken to
typeset the `.dtx' file) so I don't recommend it unless:
* you've got a very fast processor, or
* you're very interested in how the package works internally, or
* you just like everything to be complete, or
* you're a masochist.
Even so, there's no point writing indexing information the first time you
run LaTeX on a file, because the table of contents hasn't been created yet,
and when you LaTeX the file the second time, all the references will change.
If you want the index files anyway, type `y' when you're asked. Otherwise,
type 'n'. You know you want to type `n' really...
If you want to do the job properly, you need to run LaTeX a second time
to read in the contents table. /This/ is the correct time to turn on
indexing, if you really want it.
If you did build the index files, you should now sort the index by saying
makeindex -s gind.ist <name>.idx
where <name> is the same as the name of the `.dtx' file. The `gind.ist' file
should have come with LaTeX. Having done this, you should run the `.dtx'
file though LaTeX one final time, to insert the formatted index.
You can now print or preview the generated `.dvi' file using whatever tools
you usually use for such things.
--- What changed? ---
Here's a list of what changed in the various releases.
Version Changes
1.00 * First general releases of everything.
1.01 * Fixed typos in various bits of documentation.
* (mdwtab.sty) Added enhanced \cline command. Added
hhline.sty to list of supported table-related packages.
(I guess it always worked -- I just forgot about it.)
Made some of the section titles a little sillier ;-)
* (mathenv.sty) Added some new random environments, mainly
because I saw some more interesting examples in /The/
/TeXbook/ and had an idea... Now support nesting of
various environments, albeit rather imperfectly.
* (at.sty) Made @-commands really properly robust. Fixed
some lies in the documentation. Removed some truly insane
bits of old code here too. Made package sort of
cooperate with amsmath's use of @-commands -- suggestions
for improvement welcomed.
* (mdwtools.tex) Fixed /really/ stupid mistake in which made
typesetting the documentation about fifty times slower
than it should have been (bashes self on head several
times). Changed the structure here a bit too, to handle
document classes as well as packages. Made TeX much
quieter while it's typesetting the documentation.
* (sverb.sty) Fixed duff paragraph formatting in listing
environment and \verbinput command (due to the `wrong
sort' of grouping). (My excuse for missing this one is
that my standard document class sets \parskip=0pt.)
* (mdwtools.ins) Fixed this in line with the documentation
which hints that it should work with older docstrips.
It's a bit hacky but it works.
1.02 * (gpl.tex) Fixed some bugs which made typesetting go wrong
in larger documents. Restructured preamble so that it
can be typeset on its own. Put in eplicit item numbers
in the enumerate environments, for more obvious conformance
to the original.
* (mdwtab.sty) Lots of changes here, many suggested by
David Carlisle (so oodles of thanks to him for taking
an interest in my humble hackings). Fixed bugs, including
one which put entirely incorrect interline spacing in
`p' type columns. Redone the handling of [t] and [b]
tables with top and bottom rules, and removed the
`\rulefudge' parameter which is no longer necessary.
Miscellaneous other changes.
* (mdwtab.dtx) Tidied up some nastinesses in the
documentation, and removed the `\over' commands from the
maths demos, to keep certain people happy. Floated a few
more of the demonstrations to make page breaking better.
There's a danger that some of the demos are drifting too
far away from their text, but it's not too bad yet.
* (syntax.sty) Used \doafter here to fix some colour handling
problems.
* (syntax.sty) Tidied up the `grammar' environment quite a
bit (it now uses `\item', rather than trying to emulate it
internally), and fixed some vicious bugs in it and some
other code.
* (doafter.sty etc.) A new addition, to make the various
packages handle colour properly. Mainly written by
Peter Scmitt, actually, I just fiddled with it a little.
Then Peter gave me a better version, and I've tried to
upgrade this one.
* (footnote.sty) A new addition, to offer some shared things
for handling footnotes. It also enables footnotes in
parboxes, which used to be difficult, and provides a
`footnote' environment which allows verbatim text.
* (mdwlist.sty} A new addition, providing miscellanous
list-related macros. It's a sort of mixed bag of things
I've had lying around various document preambles, combined
with some ideas from the Companion.
* (at.sty) Rewritten command name parser to be much nicer.
Added support for digits within @-command names (subject
to being enabled by an option). This is in response to
requests in comp.text.tex for digits in command names.
* (mathenv.sty) Totally overhauled the matrix spacing rules.
Added `script' environment. Improved numbering things,
with `\eqnumber'.
* (mdwtools.tex) Some minor changes here to fix some buglets.
Played with some more float parameters, to discourage
float pages a bit more. Then revamped completely, turned
into a docced program (although it isn't docstripped),
rewritten title generation, and made much more
customisable.
1.02a * (mdwtab.sty) Added support for table beautification in
longtable. Documented how to do this.
1.03 * (mdwtab.sty) Completely redone the paragraph-cell handling:
list environments now work properly inside tables (without
funny extra space appearing at the top and bottom). Also
fixed a bug in the newline handling, which ignored negative
interrow space in the \\ command.
* (syntax.sty) Changed the underscore handling, and some
other bits, to fit in rather better with LaTeX's output
encoding system. It's nastier and hackier inside, but it
works better with things like the DC fonts. Also stopped
re-lowercasing of `~' from escaping and messing everything
up for everyone. Improved underscore appearance by
lowering it some more.
* (syntax.sty) Replaced some `2's with `\tw@'s. Added a
comment about dvips's inaccurate positioning of rules.
* (sverb.sty) Made non-* environments build end text from
the name of the current environment, rather than having it
hardcoded. Also stopped `unignore' environments being
a group.
* (sverb.dtx) Removed some porkies from the documentation.
* (mdwtab.sty) Fixed some miscellaneous typos. Removed
`\rulefudge' from the table of tweakables, because it
was withdrawn in release 1.02.
* (cmtt.dtx) New package, for handling the `cmtt' font
better. It introduces a special encoding for the font,
and provides a command which allows you to use all the
characters without the disadvantages of verbatim text.
* (other changes) Improved distribution building and
testing stuff which you can't see because I'm not
releasing it.
1.04 * (syntax.sty) Provided some new commands for playing with
interword spacing in `tt' fonts.
* (doafter.dtx and footnote.dtx) Added some docstrip guards
around the meta-comments, so that the charactertable and
the GPL header aren't put into other packages.
Unfortunately the version of docstrip which understands
this hasn't been released yet...
* RCSified everything, so I can find old revisions, and I'm
less likely to destroy everything.
* (footnote.dtx) Added a check for AMS environments doing
measuring passes, to avoid duplicated footnotes. (Spotted
by Roberto Bagnara.)
1.05 * (mdwtab.dtx) Fixed stupid bug in paragraph cells which
left 1000pt high table rows. (Spotted by Rowland.)
* (mdwtab.dtx) Fixed horizontal spacing problems with
empty paragraph cells.
* (mdwlist.dtx) Allowed compact lists and resumed lists
to pass arguments on to the underlying environments.
* (syntax.dtx) Fix bug affecting underscore handling in
syntax abbreviations.
--- Future plans ---
doafter.sty Add Peter Schmitt's testing for implicit/explicit braces,
as a package or docstrip option. (This extra testing is
a significant chunk of code, and I don't think it's worth
burdening the standard version with it. Peter agrees with
me.)
mathenv.sty Do postprocessing on display maths environments to position
the equations and equation numbers properly, so they don't
overlap (like the AMS environments do, although more
robustly). Once this is done, I think I'll have a reasonable
case for saying that this provides an alternative to the
AMS environments, although quite what the advantage is I
don't know: mdwtab.sty isn't exactly small.
Work is currently `in progress' on this one.
mdwtab.sty Consider doing postprocessing on tables (yuk) in a blkarray
sort of way.
footnote.sty Merge with Robin Fairbairn's package of the same name. Allow
different rules for continued notes (suggested by Donald
Arseneau, after a news article by Jonathan Wand).
New packages I'm currently working on a little something for typesetting
poetry properly (centring poems horizontally based on the
longest line, etc.), handling footnotes properly, doing
line numbering etc. If anyone has any wishes for this,
little things a tyro like me ought to know, or knows that
it's already done better than I could manage, then let me
know.
--- Contacting the author ---
The author can be reached by email at mdw@excessus.demon.co.uk. This is his
personal dial-up account, paid for privately, so don't expect replies after
five minutes or anything like that.
If you do have any comments regarding the code, its documentation, or
anything else to do with these packages, don't leave me guessing -- let me
know. While I won't guarantee to do anything about your comments, chances
are that I'll right any wrongs and rescue any damsels in distress (oh, no,
wrong spiel).
-----------------------------------------------------------------------------
|