Update LuaTeX testfiles for ^@ change
[latex2e.git] / latex2e-20170101 / base / source2e.tex
blob8abcd3abdce6385eb76303316cdf54d2f33aa0cc
1 % \iffalse meta-comment
3 % Copyright 1993-2016
4 % The LaTeX3 Project and any individual authors listed elsewhere
5 % in this file.
6 %
7 % This file is part of the LaTeX base system.
8 % -------------------------------------------
9 %
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
22 % information.
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.
28 % \fi
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
32 % take a long time.
34 % Some notes on processing this document are contained at the end
35 % of this document, after \end{document}
37 % DPC 1997/11/17
39 % First a special index style for makeindex
42 \begin{filecontents}{source2e.ist}
43 actual '='
44 quote '!'
45 level '>'
46 preamble
47 "\n \\begin{theindex} \n \\makeatletter\\scan@allowedfalse\n"
48 postamble
49 "\n\n \\end{theindex}\n"
50 item_x1 "\\efill \n \\subitem "
51 item_x2 "\\efill \n \\subsubitem "
52 delim_0 "\\pfill "
53 delim_1 "\\pfill "
54 delim_2 "\\pfill "
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"
60 lethead_flag 1
61 heading_prefix "{\\bfseries\\hfil "
62 heading_suffix "\\hfil}\\nopagebreak\n"
63 headings_flag 1
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"
68 \end{filecontents}
72 \documentclass{ltxdoc}
74 \listfiles
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,%
82 \vbox,\vtop,\vcenter}
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,%
88 \closein,\closeout}
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.
112 \makeatletter
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
117 \space
118 \actualchar
119 \generalname
120 \else
121 \expandafter\@gobble
122 \saved@macroname
123 \actualchar
124 \string\verb\quotechar*%
125 \verbatimchar\saved@macroname
126 \verbatimchar
128 :\levelchar #3}}%
129 \@tempa\endgroup\@esphack}
131 % Section numbers now reach eg 74.17.2 which need more space
132 \renewcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.8em}}
133 \renewcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.4em}}
134 \makeatother
136 % Produce a Change Log and (2 column) Index.
137 \RecordChanges
138 \CodelineIndex
139 \EnableCrossrefs
140 \setcounter{IndexColumns}{2}
142 % Needed for documentation in ltoutenc.dtx
143 \usepackage{textcomp}
145 \begin{document}
146 \title{The \LaTeXe\ Sources}
147 \author{%
148 Johannes Braams\\
149 David Carlisle\\
150 Alan Jeffrey\\
151 Leslie Lamport\\
152 Frank Mittelbach\\
153 Chris Rowley\\
154 Rainer Sch\"opf}
156 % This command will be used to input the patch file
157 % if that file exists.
158 \newcommand{\includeltpatch}{%
159 \def\currentfile{ltpatch.ltx}
160 \part{ltpatch}
161 {\let\ttfamily\relax
162 \xdef\filekey{\filekey, \thepart={\ttfamily\currentfile}}}%
163 Things we did wrong\ldots
164 \IndexInput{ltpatch.ltx}}
168 % Get the date and patch level from ltvers.dtx
169 \makeatletter
170 \let\patchdate=\@empty
171 \begingroup
172 \def\ProvidesFile#1\fmtversion#2#3\patch@level#4{%
173 \date{#2}\xdef\patchdate{#4}\endinput}
174 \input{ltvers.dtx}
175 \global\let\X@date=\@date
177 % Add the patch version if available.
178 \long\def\Xdef#1#2#3\def#4#5{%
179 \xdef\X@date{#2}%
180 \xdef\patchdate{#5}%
181 \endinput}%
182 \InputIfFileExists{ltpatch.ltx}
183 {\let\def\Xdef}{\global\let\includeltpatch\relax}
184 \endgroup
186 \ifx\@date\X@date
187 \def\Xpatch{0}
188 \ifx\patchdate\Xpatch\else
189 \edef\@date{\@date\space Patch level \patchdate}
191 \else
192 \@warning{ltpatch.ltx does not match ltvers.dtx!}
193 \let\includeltpatch\relax
195 \makeatother
197 \pagenumbering{roman}
198 \MaintainedByLaTeXTeam{latex}
199 \maketitle
200 \renewcommand\maketitle{}
202 \tableofcontents
204 \clearpage
206 \pagenumbering{arabic}
208 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
210 % Each of the following \DocInclude lines includes a file with extension
211 % .dtx. Each of these files may be typeset separately. For instance
212 % latex ltboxes.dtx
213 % will typeset the source of the LaTeX box commands.
215 % If this file is processed, each of these separate dtx files will be
216 % contained as a part of a single document. Using ltxdoc.cfg you can
217 % then optionally produce a combined index and/or change history for
218 % the entire source of the format file. Note that such a document will
219 % be quite large (about 555 pages).
222 \DocInclude{ltdirchk} % System dependent initialisation
224 \DocInclude{ltplain} % LaTeX version of Knuth's plain.tex
226 \DocInclude{ltvers} % Current version date
228 \DocInclude{ltdefns} % Initial definitions.
230 \DocInclude{ltalloc} % Allocation of counters and others.
232 \DocInclude{ltcntrl} % Program control macros.
234 \DocInclude{lterror} % Error handling.
236 \DocInclude{ltpar} % Paragraphs.
238 \DocInclude{ltspace} % Spacing, line and page breaking.
240 \DocInclude{ltlogos} % Logos.
242 \DocInclude{ltfiles} % \input files and related commands
244 \DocInclude{ltoutenc} % Output encoding interface
246 \DocInclude{ltcounts} % Counters
248 \DocInclude{ltlength} % Lengths
250 \DocInclude{ltfssbas} % NFSS Base macros
252 \DocInclude{ltfsstrc} % NFSS Tracing (and tracefnt.sty)
254 \DocInclude{ltfsscmp} % NFSS1 Compatibility
256 \DocInclude{ltfssdcl} % NFSS Declarative interface
258 \DocInclude{ltfssini} % NFSS Initialisation
260 \DocInclude{fontdef} % fonttext.ltx/fontmath.ltx
262 \DocInclude{preload} % preload.ltx
264 \DocInclude{ltfntcmd} % \textrm etc
266 \DocInclude{ltpageno} % Page numbering
268 \DocInclude{ltxref} % Cross referencing
270 \DocInclude{ltmiscen} % Miscellaneous environment definitions.
272 \DocInclude{ltmath} % Mathematics set up.
274 \DocInclude{ltlists} % List and related environments
276 \DocInclude{ltboxes} % Parbox and friends
278 \DocInclude{lttab} % Tabbing tabular and array
280 \DocInclude{ltpictur} % Picture mode
282 \DocInclude{ltthm} % Theorem environments
284 \DocInclude{ltsect} % Sectioning
286 \DocInclude{ltfloat} % Floats
288 \DocInclude{ltidxglo} % Index and Glossary
290 \DocInclude{ltbibl} % Bibliography
292 \DocInclude{ltpage} % \pagestyle \raggedbottom \sloppy
294 \DocInclude{ltoutput} % Output routine
296 \DocInclude{ltclass} % Package & Class interface
298 \DocInclude{lthyphen} % Hyphenation (hyphen.ltx).
300 \DocInclude{ltluatex} % Luatex support
302 \DocInclude{ltfinal} % Last minute initialisations and dump
304 \includeltpatch % Corrections distributed after the full release
306 % Stop here if ltxdoc.cfg says \AtEndOfClass{\OnlyDescription}
307 \StopEventually{\end{document}}
309 \clearpage
310 \pagestyle{headings}
312 % Make TeX shut up.
313 \hbadness=10000
314 \newcount\hbadness
315 \hfuzz=\maxdimen
317 \typeout{%
318 \string # Produce change log with^^J%
319 makeindex -s gglo.ist -o source2e.gls source2e.glo}
322 \PrintChanges
324 \clearpage
326 % makeindex needs a symbol between the parts of composite page numbers
327 % but we dont want one, so:
328 \typeout{%
329 \string # Produce index with^^J%
330 makeindex -s source2e.ist source2e.idx}
332 \begingroup
333 \def\endash{--}
334 \catcode`\-\active
335 \def-{\futurelet\temp\indexdash}
336 \def\indexdash{\ifx\temp-\endash\fi}
338 \PrintIndex
339 \endgroup
341 % Make sure that the index is not printed twice
342 % (ltxdoc.cfg might have a second \PrintIndex command)
343 \let\PrintChanges\relax
344 \let\PrintIndex\relax
346 \end{document}
349 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
351 To use this file to produce a fully indexed source code
352 you need to execute the following (or equivalent) commands:
354 latex source2e.tex
356 makeindex -s source2e.ist source2e.idx
357 makeindex -s gglo.ist -o source2e.gls source2e.glo
359 latex source2e.tex
360 latex source2e.tex
363 The makeindex style source2e.ist is used in place of the usual
364 doc gind.ist to ensure that I is used in the sequence I J K
365 not I II II, which would be the default makeindex behaviour.
367 The third run with latex is only required to get the table of
368 contents entries for the change log and index. You may speed things up
369 by using the \includeonly mechanism so as not to typeset the source
370 files on the second run. This involves changing the file
371 ltxdoc.cfg
372 between the latex runs.
374 The following unix script automates this.
375 (It could easily be ported to scripts for DOS or VMS,
376 rm is ReMove a file, and echo "..." > file writes ... to "file".)
379 After this script (after the second ==============) is a similar script
380 that will produce the documentation for all the files in the base
381 distribution that are *not* included in source2e.dvi. This second script
382 was requested, but before using it, beware it will take a long time!
383 It may however be modified as required, eg to not typeset the fdd files
384 or whatever...
386 ==============
387 #!/bin/sh
389 rm -f source2e.gls source2e.ind source2e.toc
391 # First run:
392 # Create new standard ltxdoc.cfg file
393 # Pass the (possibly empty) list of arguments supplied on the
394 # command line to article class.
396 # If you use A4 paper, running this script with argument
397 # a4paper
398 # may save about 30 pages.
400 echo "\PassOptionsToClass{$*}{article}" > ltxdoc.cfg
403 # Now LaTeX the file with this cfg file.
405 latex source2e.tex
408 # Make the Change log and Glossary.
410 makeindex -s source2e.ist source2e.idx
411 makeindex -s gglo.ist -o source2e.gls source2e.glo
414 # Second run: append \includeonly{} to ltxdoc.cfg to speed up things
415 # (this run needed only to get changes and index listed in .toc file)
417 # Note that the index will not be made incorrect by the insertion
418 # of the table of contents as the front matter uses a different page
419 # numbering scheme.
421 echo "\includeonly{}" >> ltxdoc.cfg
423 latex source2e.tex
426 # Third and final run, to put everything together.
427 # First restore the cfg file:
429 echo "\PassOptionsToClass{$*}{article}" > ltxdoc.cfg
430 latex source2e.tex
433 ==============
434 #!/bin/sh
436 # Running this script will process all the dtx fdd and *guide.tex
437 # and ltnews*.tex files in the LaTeX distribution, except the dtx
438 # files included in source2e.tex.
439 # (The shell first script in the comments of source2e.tex will
440 # process those.)
442 # Any command line arguments (eg a4paper) are taken as options to the
443 # article class.
445 # This script is likely to take ages!
447 echo "\PassOptionsToClass{$*}{article}" > ltxdoc.cfg
448 echo "\batchmode" >> ltxdoc.cfg
450 # The next four lines produce full indexes and change logs
451 # you may not want those.
452 echo "\AtBeginDocument{\RecordChanges}" >> ltxdoc.cfg
453 echo "\AtEndDocument{\PrintChanges}" >> ltxdoc.cfg
454 echo "\AtBeginDocument{\CodelineIndex\EnableCrossrefs}" >> ltxdoc.cfg
455 echo "\AtEndDocument{\PrintIndex}" >> ltxdoc.cfg
457 # If you do not want any code listings, just documentation, then instead
458 # of the above four lines, uncomment the following:
459 # echo "\AtBeginDocument{\OnlyDescription}" >> ltxdoc.cfg
461 echo "\PassOptionsToClass{$*}{article}" > ltxguide.cfg
462 echo "\batchmode" >> ltxguide.cfg
464 cp ltxguide.cfg ltnews.cfg
467 for i in *dtx *fdd *guide.tex ltnews*.tex
469 B=`basename $i .dtx`
471 if (grep "Include{$B}" source2e.tex >/dev/null ; )
472 then
473 echo In source2e: $i
474 else
475 echo latex $i
476 if (latex $i > /dev/null)
477 then
478 echo latex $i
479 latex $i > /dev/null
480 echo makeindex -s gind.ist $B.idx
481 makeindex -s gind.ist $B.idx > /dev/null 2> /dev/null
482 echo makeindex -s gglo.ist -o $B.gls $B.glo
483 makeindex -s gglo.ist -o $B.gls $B.glo > /dev/null 2> /dev/null
484 echo latex $i
485 latex $i > /dev/null
486 else
487 echo "!!! LaTeX ERROR: $i. (See $B.log.)"
491 done