# Direc­tory tex-archive/macros/latex/contrib/mdwtools

                            ===============

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
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
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

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
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

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

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

Make sure you've got all the files, and then run LaTeX on the .dtx file you

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
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.

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

* (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
are that I'll right any wrongs and rescue any damsels in distress (oh, no,
wrong spiel).

-----------------------------------------------------------------------------
`

## Files

Name Size Date Notes
COPYING 17982 1998-03-03 01:00
at.dtx 23598 1998-03-03 01:00
at.pdf 153409 2008-06-23 17:19
at.sty 5797 1999-03-25 01:00
cmtt.dtx 18707 1998-03-03 01:00
cmtt.pdf 150575 2008-06-23 17:19
cmtt.sty 3190 1999-03-25 01:00
doafter.dtx 17230 1998-03-03 01:00
doafter.pdf 156786 2008-06-23 17:19
doafter.sty 3590 1999-03-25 01:00
doafter.tex 3506 1999-03-25 01:00
foot­note.dtx 21814 1998-03-03 01:00
foot­note.pdf 158844 2008-06-23 17:23
foot­note.sty 6005 1999-03-25 01:00
gpl.tex 20941 1998-03-03 01:00
mTTcmtt.fd 2780 1999-03-25 01:00
mTTenc.def 2719 1999-03-25 01:00
ma­th­env.sty 12798 1999-03-25 01:00
ma­th­env.tex 4299 1998-02-12 01:00
md­wlist.dtx 25791 1998-06-09 02:00
md­wlist.pdf 160701 2008-06-23 17:19
md­wlist.sty 4169 1999-03-25 01:00
md­w­math.dtx 29359 1998-03-03 01:00
md­w­math.pdf 145444 2008-06-23 17:19
md­w­math.sty 4417 1999-03-25 01:00
mdwtab.dtx 174486 1998-06-09 02:00
mdwtab.pdf 528384 2008-06-23 17:19
mdwtab.sty 28112 1999-03-25 01:00
mdw­tools.ins 2338 1998-03-03 01:00
mdw­tools.tex 35056 1998-03-03 01:00
sverb.dtx 35346 1998-03-03 01:00
sverb.pdf 205809 2008-06-23 17:19
sverb.sty 8811 1999-03-25 01:00
syn­tax.dtx 87940 1999-03-25 01:00
syn­tax.pdf 311275 2008-06-23 17:19
syn­tax.sty 19268 1999-03-25 01:00

Down­load the con­tents of this pack­age in one zip archive (1.8M).

## mdw­tools – Mis­cel­la­neous tools by Mark Wood­ing

This col­lec­tion of tools in­cludes:

 Pack­age De­tails mdw­tools Ver­sion 1.05.4 Li­cense GNU Gen­eral Public Li­cense Main­tainer Mark Wood­ing Con­tained in TeX Live as mdw­tools MiKTeX as mdw­tools Topics sup­port for type­set­ting math­e­mat­ics foot­note sup­port syn­tax of com­puter sci­ence con­structs gen­eral notes (not in­clud­ing end­notes or foot­notes) ta­ble type­set­ting ver­ba­tim type­set­ting, etc. list sup­port sup­port for de­vel­op­ment of (La)TeX macros