1 % \iffalse meta-comment
4 % The LaTeX3 Project and any individual authors listed elsewhere
7 % This file is part of the LaTeX base system.
8 % -------------------------------------------
10 % It may be distributed and/or modified under the
11 % conditions of the LaTeX Project Public License, either version 1.3c
12 % of this license or (at your option) any later version.
13 % The latest version of this license is in
14 % http://www.latex-project.org/lppl.txt
15 % and version 1.3c or later is part of all distributions of LaTeX
16 % version 2005/12/01 or later.
18 % This file has the LPPL maintenance status "maintained".
20 % The list of all files belonging to the LaTeX base distribution is
21 % given in the file `manifest.txt'. See also `legal.txt' for additional
24 % The list of derived (unpacked) files belonging to the distribution
25 % and covered by LPPL is defined by the unpacking scripts (with
26 % extension .ins) which are part of the distribution.
30 % This document will typeset the LaTeX sources as a single document.
31 % This will produce quite a large file (roughly 555 pages) and may
34 % Some notes on processing this document are contained at the end
35 % of this document, after \end{document}
39 % First a special index style for makeindex
42 \begin{filecontents
}{source2e.ist
}
47 "
\n \
\begin{theindex
} \n \
\makeatletter\
\scan@allowedfalse
\n"
49 "
\n\n \
\end{theindex
}\n"
50 item_x1 "\
\efill \n \
\subitem "
51 item_x2 "\
\efill \n \
\subsubitem "
55 % The next lines will produce some warnings when
56 % running Makeindex as they try to cover two different
57 % versions of the program:
58 lethead_prefix "
{\
\bfseries\
\hfil "
59 lethead_suffix "\
\hfil}\
\nopagebreak\n"
61 heading_prefix "
{\
\bfseries\
\hfil "
62 heading_suffix "\
\hfil}\
\nopagebreak\n"
65 % and just for source2e:
66 % Remove R so I is treated in sequence I J K not I II III
67 page_precedence "rnaA"
72 \documentclass{ltxdoc
}
76 % Do not index some TeX primitives, and some common plain TeX commands.
78 \DoNotIndex{\def,
\long,
\edef,
\xdef,
\gdef,
\let,
\global}
79 \DoNotIndex{\if,
\ifnum,
\ifdim,
\ifcat,
\ifmmode,
\ifvmode,
\ifhmode,
%
80 \iftrue,
\iffalse,
\ifvoid,
\ifx,
\ifeof,
\ifcase,
\else,
\or,
\fi}
81 \DoNotIndex{\box,
\copy,
\setbox,
\unvbox,
\unhbox,
\hbox,
%
83 \DoNotIndex{\@empty,
\immediate,
\write}
84 \DoNotIndex{\egroup,
\bgroup,
\expandafter,
\begingroup,
\endgroup}
85 \DoNotIndex{\divide,
\advance,
\multiply,
\count,
\dimen}
86 \DoNotIndex{\relax,
\space,
\string}
87 \DoNotIndex{\csname,
\endcsname,\@spaces,
\openin,
\openout,
%
89 \DoNotIndex{\catcode,
\endinput}
90 \DoNotIndex{\jobname,
\message,
\read,
\the,
\m@ne,
\noexpand}
91 \DoNotIndex{\hsize,
\vsize,
\hskip,
\vskip,
\kern,
\hfil,
\hfill,
\hss}
92 \DoNotIndex{\m@ne,
\z@,
\z@skip,\@ne,
\tw@,
\p@
}
93 \DoNotIndex{\dp,
\wd,
\ht,
\vss,
\unskip}
95 % Set up the Index and Change History to use \part
96 \IndexPrologue{\part*
{Index
}%
97 \markboth{Index
}{Index
}%
98 \addcontentsline{toc
}{part
}{Index
}%
99 The italic numbers denote the pages where the
100 corresponding entry is described,
101 numbers underlined point to the definition,
102 all others indicate the places where it is used.
}
104 \GlossaryPrologue{\part*
{Change History
}%
105 % Allow control names to be hyphenated here...
106 {\GlossaryParms\ttfamily\hyphenchar\font=`\-
}%
107 \markboth{Change History
}{Change History
}%
108 \addcontentsline{toc
}{part
}{Change History
}}
110 % The standard \changes command modified slightly to better cope with
111 % this multiple file document.
113 \def\changes@
#1#2#3{%
114 \let\protect\@unexpandable@protect
115 \edef\@tempa
{\noexpand\glossary{#2\space\currentfile\space#1\levelchar
116 \ifx\saved@macroname\@empty
124 \string\verb\quotechar*
%
125 \verbatimchar\saved@macroname
129 \@tempa
\endgroup\@esphack
}
132 % Produce a Change Log and (2 column) Index.
136 \setcounter{IndexColumns
}{2}
138 % Needed for documentation in ltoutenc.dtx
139 \usepackage{textcomp
}
142 \title{The
\LaTeXe\ Sources
}
152 % This command will be used to input the patch file
153 % if that file exists.
154 \newcommand{\includeltpatch}{%
155 \def\currentfile{ltpatch.ltx
}
158 \xdef\filekey{\filekey,
\thepart=
{\ttfamily\currentfile}}}%
159 Things we did wrong
\ldots
160 \IndexInput{ltpatch.ltx
}}
164 % Get the date from ltvers.dtx
166 \let\patchdate=\@empty
168 \def\ProvidesFile#1\fmtversion#2{\date{#2}\endinput}
170 \global\let\X@date=\@date
172 % Add the patch version if available.
173 \long\def\Xdef#1#2#3\def#4#5{%
177 \InputIfFileExists{ltpatch.ltx
}
178 {\let\def\Xdef}{\global\let\includeltpatch\relax}
183 \ifx\patchdate\Xpatch\else
184 \edef\@date
{\@date
\space Patch level
\patchdate}
187 \@warning
{ltpatch.ltx does not match ltvers.dtx!
}
188 \let\includeltpatch\relax
192 \pagenumbering{roman
}
193 \MaintainedByLaTeXTeam{latex
}
195 \renewcommand\maketitle{}
201 \pagenumbering{arabic
}
203 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
205 % Each of the following \DocInclude lines includes a file with extension
206 % .dtx. Each of these files may be typeset separately. For instance
208 % will typeset the source of the LaTeX box commands.
210 % If this file is processed, each of these separate dtx files will be
211 % contained as a part of a single document. Using ltxdoc.cfg you can
212 % then optionally produce a combined index and/or change history for
213 % the entire source of the format file. Note that such a document will
214 % be quite large (about 555 pages).
217 \DocInclude{ltdirchk
} % System dependent initialisation
219 \DocInclude{ltplain
} % LaTeX version of Knuth's plain.tex
221 \DocInclude{ltvers
} % Current version date
223 \DocInclude{ltdefns
} % Initial definitions.
225 \DocInclude{ltalloc
} % Allocation of counters and others.
227 \DocInclude{ltcntrl
} % Program control macros.
229 \DocInclude{lterror
} % Error handling.
231 \DocInclude{ltpar
} % Paragraphs.
233 \DocInclude{ltspace
} % Spacing, line and page breaking.
235 \DocInclude{ltlogos
} % Logos.
237 \DocInclude{ltfiles
} % \input files and related commands
239 \DocInclude{ltoutenc
} % Output encoding interface
241 \DocInclude{ltcounts
} % Counters
243 \DocInclude{ltlength
} % Lengths
245 \DocInclude{ltfssbas
} % NFSS Base macros
247 \DocInclude{ltfsstrc
} % NFSS Tracing (and tracefnt.sty)
249 \DocInclude{ltfsscmp
} % NFSS1 Compatibility
251 \DocInclude{ltfssdcl
} % NFSS Declarative interface
253 \DocInclude{ltfssini
} % NFSS Initialisation
255 \DocInclude{fontdef
} % fonttext.ltx/fontmath.ltx
257 \DocInclude{preload
} % preload.ltx
259 \DocInclude{ltfntcmd
} % \textrm etc
261 \DocInclude{ltpageno
} % Page numbering
263 \DocInclude{ltxref
} % Cross referencing
265 \DocInclude{ltmiscen
} % Miscellaneous environment definitions.
267 \DocInclude{ltmath
} % Mathematics set up.
269 \DocInclude{ltlists
} % List and related environments
271 \DocInclude{ltboxes
} % Parbox and friends
273 \DocInclude{lttab
} % Tabbing tabular and array
275 \DocInclude{ltpictur
} % Picture mode
277 \DocInclude{ltthm
} % Theorem environments
279 \DocInclude{ltsect
} % Sectioning
281 \DocInclude{ltfloat
} % Floats
283 \DocInclude{ltidxglo
} % Index and Glossary
285 \DocInclude{ltbibl
} % Bibliography
287 \DocInclude{ltpage
} % \pagestyle \raggedbottom \sloppy
289 \DocInclude{ltoutput
} % Output routine
291 \DocInclude{ltclass
} % Package & Class interface
293 \DocInclude{lthyphen
} % Hyphenation (hyphen.ltx).
295 \DocInclude{ltluatex
} % Luatex support
297 \DocInclude{ltfinal
} % Last minute initialisations and dump
299 \includeltpatch % Corrections distributed after the full release
301 % Stop here if ltxdoc.cfg says \AtEndOfClass{\OnlyDescription}
302 \StopEventually{\end{document}}
313 \string # Produce change log with^^J
%
314 makeindex -s gglo.ist -o source2e.gls source2e.glo
}
321 % makeindex needs a symbol between the parts of composite page numbers
322 % but we dont want one, so:
324 \string # Produce index with^^J
%
325 makeindex -s source2e.ist source2e.idx
}
330 \def-
{\futurelet\temp\indexdash}
331 \def\indexdash{\ifx\temp-
\endash\fi}
336 % Make sure that the index is not printed twice
337 % (ltxdoc.cfg might have a second \PrintIndex command)
338 \let\PrintChanges\relax
339 \let\PrintIndex\relax
344 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
346 To use this file to produce a fully indexed source code
347 you need to execute the following (or equivalent) commands:
351 makeindex -s source2e.ist source2e.idx
352 makeindex -s gglo.ist -o source2e.gls source2e.glo
358 The makeindex style source2e.ist is used in place of the usual
359 doc gind.ist to ensure that I is used in the sequence I J K
360 not I II II, which would be the default makeindex behaviour.
362 The third run with latex is only required to get the table of
363 contents entries for the change log and index. You may speed things up
364 by using the
\includeonly mechanism so as not to typeset the source
365 files on the second run. This involves changing the file
367 between the latex runs.
369 The following unix script automates this.
370 (It could easily be ported to scripts for DOS or VMS,
371 rm is ReMove a file, and echo "..." > file writes ... to "file".)
374 After this script (after the second ==============) is a similar script
375 that will produce the documentation for all the files in the base
376 distribution that are *not* included in source2e.dvi. This second script
377 was requested, but before using it, beware it will take a long time!
378 It may however be modified as required, eg to not typeset the fdd files
384 rm -f source2e.gls source2e.ind source2e.toc
387 # Create new standard ltxdoc.cfg file
388 # Pass the (possibly empty) list of arguments supplied on the
389 # command line to article class.
391 # If you use A4 paper, running this script with argument
393 # may save about
30 pages.
395 echo "
\PassOptionsToClass{$*
}{article
}" > ltxdoc.cfg
398 # Now LaTeX the file with this cfg file.
403 # Make the Change log and Glossary.
405 makeindex -s source2e.ist source2e.idx
406 makeindex -s gglo.ist -o source2e.gls source2e.glo
409 # Second run: append
\includeonly{} to ltxdoc.cfg to speed up things
410 # (this run needed only to get changes and index listed in .toc file)
412 # Note that the index will not be made incorrect by the insertion
413 # of the table of contents as the front matter uses a different page
416 echo "
\includeonly{}" >> ltxdoc.cfg
421 # Third and final run, to put everything together.
422 # First restore the cfg file:
424 echo "
\PassOptionsToClass{$*
}{article
}" > ltxdoc.cfg
431 # Running this script will process all the dtx fdd and *guide.tex
432 # and ltnews*.tex files in the LaTeX distribution, except the dtx
433 # files included in source2e.tex.
434 # (The shell first script in the comments of source2e.tex will
437 # Any command line arguments (eg
a4paper) are taken as options to the
440 # This script is likely to take ages!
442 echo "
\PassOptionsToClass{$*
}{article
}" > ltxdoc.cfg
443 echo "
\batchmode" >> ltxdoc.cfg
445 # The next four lines produce full indexes and change logs
446 # you may not want those.
447 echo "
\AtBeginDocument{\RecordChanges}" >> ltxdoc.cfg
448 echo "
\AtEndDocument{\PrintChanges}" >> ltxdoc.cfg
449 echo "
\AtBeginDocument{\CodelineIndex\EnableCrossrefs}" >> ltxdoc.cfg
450 echo "
\AtEndDocument{\PrintIndex}" >> ltxdoc.cfg
452 # If you do not want any code listings, just documentation, then instead
453 # of the above four lines, uncomment the following:
454 # echo "
\AtBeginDocument{\OnlyDescription}" >> ltxdoc.cfg
456 echo "
\PassOptionsToClass{$*
}{article
}" > ltxguide.cfg
457 echo "
\batchmode" >> ltxguide.cfg
459 cp ltxguide.cfg ltnews.cfg
462 for i in *dtx *fdd *guide.tex ltnews*.tex
466 if (grep "Include
{$B
}" source2e.tex >/dev/null ; )
471 if (latex $i > /dev/null)
475 echo makeindex -s gind.ist $B.idx
476 makeindex -s gind.ist $B.idx > /dev/null
2> /dev/null
477 echo makeindex -s gglo.ist -o $B.gls $B.glo
478 makeindex -s gglo.ist -o $B.gls $B.glo > /dev/null
2> /dev/null
482 echo "!!! LaTeX ERROR: $i. (See $B.log.)"