Frequently Asked Question List for TeX
dtx files)
LaTeX2e, and many contributed LaTeX macro packages, are written
in a literate programming style, with source and
documentation in the
same file. This format in fact originated before the
days of the LaTeX project as one of the “Mainz” series of
packages. A documented source file conventionally has the suffix
dtx, and will normally be “stripped” before use with
LaTeX; an installation (ins) file is normally provided,
to automate this process of removing comments for speed of loading.
If the ins file is available, you may process it
with LaTeX to produce the package (and, often, auxiliary files).
Output should look something like:
Generating file(s) ./foo.sty
Processing file foo.dtx (package) -> foo.sty
File foo.dtx ended by \endinput.
Lines processed: 2336
Comments removed: 1336
Comments passed: 2
Codelines passed: 972
The lines Processing ... ended by \endinput may
be repeated if the dtx file provides more than one
“unpacked” file.
To read the comments “as a document”, you can run LaTeX on the
dtx file to produce a nicely formatted version of the
documented code. (Most LaTeX packages on CTAN, nowadays, already
have PDF of the result of processing the dtx file,
as “documentation”.)
Several packages may be included in one dtx file, with
conditional sections, and there are facilities for indexes of macros,
etc. All of this mélange is sorted out by directives in the
ins file; conventional indexing utilities may be necessary
for “full” output.
Anyone may write dtx files; the format is explained in
The LaTeX Companion, and a tutorial is available
from CTAN (which comes with skeleton dtx and
ins files).
Composition of dtx files is supported in Emacs by
AUC-TeX.
The (unix-based) script dtxgen generates a proforma basic
dtx file, which could be useful when starting a new
project.
Another route to an dtx file is to write the
documentation and the code separately, and then to combine them using
the makedtx system. This technique has particular value in
that the documentation file can be used separately to generate
HTML output; it is often quite difficult to make
LaTeX to HTML conversion tools deal
with dtx files, since they use an unusual class file.
The sty2dtx system goes one step further: it attempts to
create a dtx file from a “normal” sty file
with comments. It works well, in some circumstances, but can become
confused by comments that aspire to “structure” (e.g., tabular
material, as in many older packages’ file headers).
The dtx files are not used by LaTeX after they have been
processed to produce sty or cls (or whatever)
files. They need not be kept with the working system; however, for
many packages the dtx file is the primary source of
documentation, so you may want to keep dtx files elsewhere.
An interesting sideline to the story of dtx files is the
docmfp package, which extends the model of the doc
package to
MetaFont and MetaPost,
thus permitting documented distribution of bundles containing code for
MetaFont and MetaPost together with related LaTeX code.
FAQ ID: Q-dtx