summaryrefslogtreecommitdiff
path: root/macros/latex-dev/base/source2e.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex-dev/base/source2e.tex')
-rw-r--r--macros/latex-dev/base/source2e.tex503
1 files changed, 503 insertions, 0 deletions
diff --git a/macros/latex-dev/base/source2e.tex b/macros/latex-dev/base/source2e.tex
new file mode 100644
index 0000000000..79b9a7f5db
--- /dev/null
+++ b/macros/latex-dev/base/source2e.tex
@@ -0,0 +1,503 @@
+% \iffalse meta-comment
+%
+% Copyright 1993-2016
+% The LaTeX3 Project and any individual authors listed elsewhere
+% in this file.
+%
+% This file is part of the LaTeX base system.
+% -------------------------------------------
+%
+% It may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% https://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This file has the LPPL maintenance status "maintained".
+%
+% The list of all files belonging to the LaTeX base distribution is
+% given in the file `manifest.txt'. See also `legal.txt' for additional
+% information.
+%
+% The list of derived (unpacked) files belonging to the distribution
+% and covered by LPPL is defined by the unpacking scripts (with
+% extension .ins) which are part of the distribution.
+%
+% \fi
+
+% This document will typeset the LaTeX sources as a single document.
+% This will produce quite a large file (roughly 555 pages) and may
+% take a long time.
+%
+% Some notes on processing this document are contained at the end
+% of this document, after \end{document}
+%
+% DPC 1997/11/17
+%
+% First a special index style for makeindex
+%
+
+\begin{filecontents}{source2e.ist}
+actual '='
+quote '!'
+level '>'
+preamble
+"\n \\begin{theindex} \n \\makeatletter\\scan@allowedfalse\n"
+postamble
+"\n\n \\end{theindex}\n"
+item_x1 "\\efill \n \\subitem "
+item_x2 "\\efill \n \\subsubitem "
+delim_0 "\\pfill "
+delim_1 "\\pfill "
+delim_2 "\\pfill "
+% The next lines will produce some warnings when
+% running Makeindex as they try to cover two different
+% versions of the program:
+lethead_prefix "{\\bfseries\\hfil "
+lethead_suffix "\\hfil}\\nopagebreak\n"
+lethead_flag 1
+heading_prefix "{\\bfseries\\hfil "
+heading_suffix "\\hfil}\\nopagebreak\n"
+headings_flag 1
+
+% and just for source2e:
+% Remove R so I is treated in sequence I J K not I II III
+page_precedence "rnaA"
+\end{filecontents}
+
+
+
+\documentclass{ltxdoc}
+
+\listfiles
+
+% Do not index some TeX primitives, and some common plain TeX commands.
+
+\DoNotIndex{\def,\long,\edef,\xdef,\gdef,\let,\global}
+\DoNotIndex{\if,\ifnum,\ifdim,\ifcat,\ifmmode,\ifvmode,\ifhmode,%
+ \iftrue,\iffalse,\ifvoid,\ifx,\ifeof,\ifcase,\else,\or,\fi}
+\DoNotIndex{\box,\copy,\setbox,\unvbox,\unhbox,\hbox,%
+ \vbox,\vtop,\vcenter}
+\DoNotIndex{\@empty,\immediate,\write}
+\DoNotIndex{\egroup,\bgroup,\expandafter,\begingroup,\endgroup}
+\DoNotIndex{\divide,\advance,\multiply,\count,\dimen}
+\DoNotIndex{\relax,\space,\string}
+\DoNotIndex{\csname,\endcsname,\@spaces,\openin,\openout,%
+ \closein,\closeout}
+\DoNotIndex{\catcode,\endinput}
+\DoNotIndex{\jobname,\message,\read,\the,\m@ne,\noexpand}
+\DoNotIndex{\hsize,\vsize,\hskip,\vskip,\kern,\hfil,\hfill,\hss}
+\DoNotIndex{\m@ne,\z@,\z@skip,\@ne,\tw@,\p@}
+\DoNotIndex{\dp,\wd,\ht,\vss,\unskip}
+
+% Set up the Index and Change History to use \part
+\IndexPrologue{\part*{Index}%
+ \markboth{Index}{Index}%
+ \addcontentsline{toc}{part}{Index}%
+ The italic numbers denote the pages where the
+ corresponding entry is described,
+ numbers underlined point to the definition,
+ all others indicate the places where it is used.}
+
+\GlossaryPrologue{\part*{Change History}%
+% Allow control names to be hyphenated here...
+ {\GlossaryParms\ttfamily\hyphenchar\font=`\-}%
+ \markboth{Change History}{Change History}%
+ \addcontentsline{toc}{part}{Change History}}
+
+% The standard \changes command modified slightly to better cope with
+% this multiple file document.
+\makeatletter
+\def\@changes@iso@date#1/#2/#3/#4\space{#1\if\relax#2\relax\else-#2-#3\fi\space}
+\def\changes@#1#2#3{%
+ \let\protect\@unexpandable@protect
+ \edef\@tempa{\noexpand\glossary{\@changes@iso@date#2///\space
+ \currentfile\space#1\levelchar
+ \ifx\saved@macroname\@empty
+ \space
+ \actualchar
+ \generalname
+ \else
+ \expandafter\@gobble
+ \saved@macroname
+ \actualchar
+ \string\verb\quotechar*%
+ \verbatimchar\saved@macroname
+ \verbatimchar
+ \fi
+ :\levelchar #3}}%
+ \@tempa\endgroup\@esphack}
+
+% Move whole block up so that the file key is not so close
+% to bottom of US letter page.
+\addtolength\topmargin{-2\baselineskip}
+
+
+% Codelines are allowed to run over a bit without showing up as overfull
+%
+\renewcommand*\MacroFont{\fontencoding\encodingdefault
+ \fontfamily\ttdefault
+ \fontseries\mddefault
+ \fontshape\updefault
+ \small
+ \hfuzz 6pt\relax}
+
+% Section numbers now reach eg 74.17.2 which need more space
+\renewcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.8em}}
+\renewcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.4em}}
+\makeatother
+
+% Produce a Change Log and (2 column) Index.
+\RecordChanges
+\CodelineIndex
+\EnableCrossrefs
+\setcounter{IndexColumns}{2}
+
+% Needed for documentation in ltoutenc.dtx
+\usepackage{textcomp}
+
+\begin{document}
+ \title{The \LaTeXe\ Sources}
+ \author{%
+ Johannes Braams\\
+ David Carlisle\\
+ Alan Jeffrey\\
+ Leslie Lamport\\
+ Frank Mittelbach\\
+ Chris Rowley\\
+ Rainer Sch\"opf}
+
+% This command will be used to input the patch file
+% if that file exists.
+\newcommand{\includeltpatch}{%
+ \def\currentfile{ltpatch.ltx}
+ \part{ltpatch}
+ {\let\ttfamily\relax
+ \xdef\filekey{\filekey, \thepart={\ttfamily\currentfile}}}%
+ Things we did wrong\ldots
+ \IndexInput{ltpatch.ltx}}
+
+
+
+% Get the date and patch level from ltvers.dtx
+\makeatletter
+\let\patchdate=\@empty
+\begingroup
+ \def\ProvidesFile#1\fmtversion#2#3\patch@level#4{%
+ \date{#2}\xdef\patchdate{#4}\endinput}
+ \input{ltvers.dtx}
+\global\let\X@date=\@date
+
+% Add the patch version if available.
+ \long\def\Xdef#1#2#3\def#4#5{%
+ \xdef\X@date{#2}%
+ \xdef\patchdate{#5}%
+ \endinput}%
+ \InputIfFileExists{ltpatch.ltx}
+ {\let\def\Xdef}{\global\let\includeltpatch\relax}
+\endgroup
+
+\ifx\@date\X@date
+ \def\Xpatch{0}
+ \ifx\patchdate\Xpatch\else
+ \edef\@date{\@date\space Patch level \patchdate}
+ \fi
+\else
+ \@warning{ltpatch.ltx does not match ltvers.dtx!}
+ \let\includeltpatch\relax
+\fi
+\makeatother
+
+ \pagenumbering{roman}
+
+ \MaintainedByLaTeXTeam{latex}
+ \maketitle
+ \renewcommand\maketitle{}
+
+ \tableofcontents
+
+ \clearpage
+
+ \pagenumbering{arabic}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Each of the following \DocInclude lines includes a file with extension
+% .dtx. Each of these files may be typeset separately. For instance
+% latex ltboxes.dtx
+% will typeset the source of the LaTeX box commands.
+%
+% If this file is processed, each of these separate dtx files will be
+% contained as a part of a single document. Using ltxdoc.cfg you can
+% then optionally produce a combined index and/or change history for
+% the entire source of the format file. Note that such a document will
+% be quite large (about 555 pages).
+%
+
+ \DocInclude{ltdirchk} % System dependent initialisation
+
+ \DocInclude{ltplain} % LaTeX version of Knuth's plain.tex
+
+ \DocInclude{ltvers} % Current version date
+
+ \DocInclude{ltdefns} % Initial definitions.
+
+ \DocInclude{ltalloc} % Allocation of counters and others.
+
+ \DocInclude{ltcntrl} % Program control macros.
+
+ \DocInclude{lterror} % Error handling.
+
+ \DocInclude{ltpar} % Paragraphs.
+
+ \DocInclude{ltspace} % Spacing, line and page breaking.
+
+ \DocInclude{ltlogos} % Logos.
+
+ \DocInclude{ltfiles} % \input files and related commands
+
+ \DocInclude{ltoutenc} % Output encoding interface
+
+ \DocInclude{ltcounts} % Counters
+
+ \DocInclude{ltlength} % Lengths
+
+ \DocInclude{ltfssbas} % NFSS Base macros
+
+ \DocInclude{ltfsstrc} % NFSS Tracing (and tracefnt.sty)
+
+ \DocInclude{ltfsscmp} % NFSS1 Compatibility
+
+ \DocInclude{ltfssdcl} % NFSS Declarative interface
+
+ \DocInclude{ltfssini} % NFSS Initialisation
+
+ \DocInclude{fontdef} % fonttext.ltx/fontmath.ltx
+
+ \DocInclude{preload} % preload.ltx
+
+ \DocInclude{ltfntcmd} % \textrm etc
+
+ \DocInclude{ltpageno} % Page numbering
+
+ \DocInclude{ltxref} % Cross referencing
+
+ \DocInclude{ltmiscen} % Miscellaneous environment definitions.
+
+ \DocInclude{ltmath} % Mathematics set up.
+
+ \DocInclude{ltlists} % List and related environments
+
+ \DocInclude{ltboxes} % Parbox and friends
+
+ \DocInclude{lttab} % Tabbing tabular and array
+
+ \DocInclude{ltpictur} % Picture mode
+
+ \DocInclude{ltthm} % Theorem environments
+
+ \DocInclude{ltsect} % Sectioning
+
+ \DocInclude{ltfloat} % Floats
+
+ \DocInclude{ltidxglo} % Index and Glossary
+
+ \DocInclude{ltbibl} % Bibliography
+
+ \DocInclude{ltpage} % \pagestyle \raggedbottom \sloppy
+
+ \DocInclude{ltoutput} % Output routine
+
+ \DocInclude{ltclass} % Package & Class interface
+
+ \DocInclude{lthyphen} % Hyphenation (hyphen.ltx).
+
+ \DocInclude{ltluatex} % Luatex support
+
+ \DocInclude{ltfinal} % Last minute initialisations and dump
+
+ \includeltpatch % Corrections distributed after the full release
+
+% Stop here if ltxdoc.cfg says \AtEndOfClass{\OnlyDescription}
+\StopEventually{\end{document}}
+
+\clearpage
+\pagestyle{headings}
+
+% Make TeX shut up.
+\hbadness=10000
+\newcount\hbadness
+\hfuzz=\maxdimen
+
+\typeout{%
+ \string # Produce change log with^^J%
+ makeindex -s gglo.ist -o source2e.gls source2e.glo}
+
+
+\PrintChanges
+
+\clearpage
+
+% makeindex needs a symbol between the parts of composite page numbers
+% but we dont want one, so:
+\typeout{%
+ \string # Produce index with^^J%
+ makeindex -s source2e.ist source2e.idx}
+
+\begingroup
+\def\endash{--}
+\catcode`\-\active
+\def-{\futurelet\temp\indexdash}
+\def\indexdash{\ifx\temp-\endash\fi}
+
+\PrintIndex
+\endgroup
+
+% Make sure that the index is not printed twice
+% (ltxdoc.cfg might have a second \PrintIndex command)
+\let\PrintChanges\relax
+\let\PrintIndex\relax
+
+\end{document}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+To use this file to produce a fully indexed source code
+you need to execute the following (or equivalent) commands:
+
+ latex source2e.tex
+
+ makeindex -s source2e.ist source2e.idx
+ makeindex -s gglo.ist -o source2e.gls source2e.glo
+
+ latex source2e.tex
+ latex source2e.tex
+
+
+The makeindex style source2e.ist is used in place of the usual
+doc gind.ist to ensure that I is used in the sequence I J K
+not I II II, which would be the default makeindex behaviour.
+
+The third run with latex is only required to get the table of
+contents entries for the change log and index. You may speed things up
+by using the \includeonly mechanism so as not to typeset the source
+files on the second run. This involves changing the file
+ltxdoc.cfg
+between the latex runs.
+
+The following unix script automates this.
+ (It could easily be ported to scripts for DOS or VMS,
+ rm is ReMove a file, and echo "..." > file writes ... to "file".)
+
+
+After this script (after the second ==============) is a similar script
+that will produce the documentation for all the files in the base
+distribution that are *not* included in source2e.dvi. This second script
+was requested, but before using it, beware it will take a long time!
+It may however be modified as required, eg to not typeset the fdd files
+or whatever...
+
+==============
+#!/bin/sh
+
+rm -f source2e.gls source2e.ind source2e.toc
+
+# First run:
+# Create new standard ltxdoc.cfg file
+# Pass the (possibly empty) list of arguments supplied on the
+# command line to article class.
+#
+# If you use A4 paper, running this script with argument
+# a4paper
+# may save about 30 pages.
+#
+echo "\PassOptionsToClass{$*}{article}" > ltxdoc.cfg
+
+
+# Now LaTeX the file with this cfg file.
+#
+pdflatex source2e.tex
+
+
+# Make the Change log and Glossary.
+#
+makeindex -s source2e.ist source2e.idx
+makeindex -s gglo.ist -o source2e.gls source2e.glo
+
+
+# Second run: append \includeonly{} to ltxdoc.cfg to speed up things
+# (this run needed only to get changes and index listed in .toc file)
+#
+# Note that the index will not be made incorrect by the insertion
+# of the table of contents as the front matter uses a different page
+# numbering scheme.
+#
+echo "\includeonly{}" >> ltxdoc.cfg
+
+pdflatex source2e.tex
+
+
+# Third and final run, to put everything together.
+# First restore the cfg file:
+#
+echo "\PassOptionsToClass{$*}{article}" > ltxdoc.cfg
+pdflatex source2e.tex
+
+
+==============
+#!/bin/sh
+
+# Running this script will process all the dtx fdd and *guide.tex
+# and ltnews*.tex files in the LaTeX distribution, except the dtx
+# files included in source2e.tex.
+# (The shell first script in the comments of source2e.tex will
+# process those.)
+
+# Any command line arguments (eg a4paper) are taken as options to the
+# article class.
+
+# This script is likely to take ages!
+
+echo "\PassOptionsToClass{$*}{article}" > ltxdoc.cfg
+echo "\batchmode" >> ltxdoc.cfg
+
+# The next four lines produce full indexes and change logs
+# you may not want those.
+echo "\AtBeginDocument{\RecordChanges}" >> ltxdoc.cfg
+echo "\AtEndDocument{\PrintChanges}" >> ltxdoc.cfg
+echo "\AtBeginDocument{\CodelineIndex\EnableCrossrefs}" >> ltxdoc.cfg
+echo "\AtEndDocument{\PrintIndex}" >> ltxdoc.cfg
+
+# If you do not want any code listings, just documentation, then instead
+# of the above four lines, uncomment the following:
+# echo "\AtBeginDocument{\OnlyDescription}" >> ltxdoc.cfg
+
+
+for i in *dtx *fdd
+do
+B=`basename $i .dtx`
+
+if (grep "Include{$B}" source2e.tex >/dev/null ; )
+then
+echo In source2e: $i
+else
+echo pdflatex $i
+ if (pdflatex $i > /dev/null)
+ then
+ echo pdflatex $i
+ pdflatex $i > /dev/null
+ echo makeindex -s gind.ist $B.idx
+ makeindex -s gind.ist $B.idx > /dev/null 2> /dev/null
+ echo makeindex -s gglo.ist -o $B.gls $B.glo
+ makeindex -s gglo.ist -o $B.gls $B.glo > /dev/null 2> /dev/null
+ echo pdflatex $i
+ pdflatex $i > /dev/null
+ else
+ echo "!!! LaTeX ERROR: $i. (See $B.log.)"
+ fi
+fi
+
+done