summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/etexdir/etex_gen.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/etexdir/etex_gen.tex')
-rw-r--r--Build/source/texk/web2c/etexdir/etex_gen.tex286
1 files changed, 0 insertions, 286 deletions
diff --git a/Build/source/texk/web2c/etexdir/etex_gen.tex b/Build/source/texk/web2c/etexdir/etex_gen.tex
deleted file mode 100644
index c9dd037c4e2..00000000000
--- a/Build/source/texk/web2c/etexdir/etex_gen.tex
+++ /dev/null
@@ -1,286 +0,0 @@
-% etex_gen.tex --- How to generate e-TeX --- last modified 06 Mar 1998
-
-\font\eighttt= cmtt8
-\font\eightrm= cmr8
-\font\rtitlefont= cmr7 scaled\magstep5
-\font\ititlefont= cmmi7 scaled\magstep5
-\def\titlefont{\rtitlefont \textfont1=\ititlefont}
-\def\eTeX{$\varepsilon$-\TeX}
-\def\NTS{NTS}
-\let\mc=\eightrm
-\rm
-\let\mainfont=\tenrm
-
-\def\.#1{\hbox{\tt#1}}
-\def\\#1{\hbox{\it#1\/\hskip.05em}} % italic type for identifiers
-
-\parskip 2pt plus 1pt
-\baselineskip 12pt plus .25pt
-
-\output{\shipout\box255\global\advance\pageno by 1} % for the title page only
-\null
-\vfill
-\centerline{\titlefont How to generate \eTeX}
-\vskip 6pt
-\centerline{({\sl Version 2, March 1998\/})}
-\vskip 18pt
-\centerline{by The \NTS\ Team}
-\vskip 6pt
-\centerline{Peter Breitenlohner, Max-Planck-Institut f\"ur Physik, M\"unchen}
-\vskip 6pt
-\centerline{Philip Taylor, RHBNC, University of London}
-\vfill
-\centerline{\vbox{\hsize 4in
-\noindent Given an implementation of \TeX82 for a particular system, this
-report describes how to generate a corresponding implementation of
-\eTeX.}}
-\vskip 24pt
-{\baselineskip 9pt
-\eightrm\noindent
-The preparation of this report was supported in part by DANTE,
-Deutschsprachige Anwendervereinigung \TeX\ e.V.\hfil\break
-`\TeX' is a trademark of the American Mathematical Society.
-
-}\pageno=0\eject
-
-\output{\shipout\vbox{ % for subsequent pages
- \baselineskip0pt\lineskip0pt
- \hbox to\hsize{\strut
- \ifodd\pageno \hfil\eightrm\firstmark\hfil
- \mainfont\the\pageno
- \else\mainfont\the\pageno\hfil
- \eightrm\firstmark\hfil\fi}
- \vskip 10pt
- \box255}
- \global\advance\pageno by 1}
-\let\runninghead=\mark
-\outer\def\section#1.{\noindent{\bf#1.}\quad
- \runninghead{\uppercase{#1} }\ignorespaces}
-
-\section Introduction.
-Let us first review the process of generating an implementation of
-\TeX82 for a particular system from the source files as, e.g., described
-in the \.{WEB} manual [1]. The system-independent source file
-\.{tex.web} must remain unmodified. All changes to \.{tex.web}
-necessary for a particular operating system and\slash or compiler are to
-be collected in a system-dependent change file, typically named
-\.{tex.ch}. Both files \.{tex.web} and \.{tex.ch} are effectively
-merged when input by the \.{WEB} system programs \.{WEAVE} and
-\.{TANGLE}. When \.{WEAVE} processes this merged input, a file
-\.{tex.tex} is produced. Further processing by \TeX\ yields a `pretty
-printed' version of the input together with an index.
-
-When \.{TANGLE} processes the merged input, a string pool file
-\.{tex.pool} and a Pascal file \.{tex.pas} (or similar) are produced.
-The Pascal file can then be further processed by a suitable compiler
-and\slash or language converter such as \.{web2c}, and eventually yields
-an executable program.
-
-There are actually three versions of the program: First there is
-\.{INITEX} with its capability to initialize all of \TeX's tables and to
-write them in compact form to a format file. Next there is the
-production version \.{VIRTEX} requiring a format file as input. Finally
-there is \.{TRIPTEX}, a version of \.{INITEX} with special values for
-some of \TeX's parameters, for the \.{TRIP} test [2] that should be used
-to validate a \TeX\ implementation. Depending on the capabilities of
-the compiler, these three versions of the program are generated from
-three slightly different change files or they are generated from one
-change file with different compiler options. They might even be one and
-the same executable program used with different run time options.
-
-\vskip 24pt plus 24pt
-\section Generating \eTeX.
-The process of generating \eTeX\ is essentially the same as that of
-generating \TeX\ as described above. Conceptually there is a
-system-independent source file \.{etex.web} and a system-dependent change
-file \.{etex.sys}. Processing these two files by \.{TANGLE} yields a
-string pool file \.{etex.pool} as well as a Pascal file \.{etex.pas},
-whilst processing by \.{WEAVE} produces a \TeX\ source file, \.{etex.tex}.
-
-It may, however, be necessary to increase some of the constants defined
-in \.{TANGLE} and \.{WEAVE}. The following values should suffice in
-most cases:
-$$
-\vcenter{\halign{$#$\hfil\qquad&#\hfil\cr
-\\{max\_bytes}\times\\{ww}=100~000&\.{TANGLE} and \.{WEAVE}\cr
-\\{max\_texts}=2~500&\.{TANGLE} and \.{WEAVE}\cr
-\\{max\_toks}\times\\{zz}=180~000&\.{TANGLE}\cr
-\\{max\_names}=5~000&\.{TANGLE}\cr
-\\{max\_scraps}=3~000&\.{WEAVE}\cr
-\\{stack\_size}=300&\.{WEAVE}\cr
-}}
-$$
-
-The source file \.{etex.web} for \eTeX\ does not, however, exist as a
-physical file. It is the hypothetical file obtained by applying the
-changes in the actual source file \.{etex.ch} to \.{tex.web}. Thus
-\.{etex.web} inherits the bulk of code from \.{tex.web}, whilst the
-system-independent source file \.{etex.ch} for \eTeX\ defines the
-differences between \.{etex.web} and \.{tex.web}. In order to generate
-an implementation of \eTeX\ two change files have to be applied to
-\.{tex.web}, one after the other (the actual file names may differ):
-$$
-\vcenter{\halign{#\hfil&\qquad\.{#}\hfil&\qquad#\hfil\cr
-0.&tex.web&system-independent \.{WEB} source for \TeX\cr
-1.&etex.ch&system-independent changes for \eTeX\cr
-2.&etex.sys&system-dependent changes for \eTeX\cr
-}}
-$$
-
-The process of merging several change files into \.{tex.web} should
-certainly not be performed by hand. There are programs such as \.{TIE}
-and \.{PATCHWEB} that perform this process automatically. If no such
-program is available, a \TeX\ program \.{WEBMERGE} can be used.
-\.{WEBMERGE} reads \.{tex.web} and up to nine change files and produces
-a merged change file that can then be processed, together with
-\.{tex.web}, by \.{TANGLE} and \.{WEAVE}. [On systems such as VMS, use
-of \.{WEBMERGE} can leave a large number of temporary files
-lying around; this can be avoided by setting a version limit (e.g.~1) on any
-existing versions of those files, or by setting a version limit on the
-directory in which they will be created. On other systems, it will probably
-leave one large temporary file.]
-
-Every implementor of \eTeX\ is responsible for creating and maintaining
-a suitable \.{etex.sys} in the same way as every implementor of \TeX\
-is responsible for creating and maintaining \.{tex.ch}. Since the bulk
-of code in \.{etex.web} is identical to that in \.{tex.web} the bulk of
-the system-dependent changes in \.{etex.sys} for a particular system
-will be identical to those in \.{tex.ch} for the same system. In the
-following we try to give some hints where \.{etex.sys} for a particular
-system might deviate from the corresponding \.{tex.ch}.
-
-First, it might be necessary to increase the size of \TeX's string pool
-in order to accommodate \eTeX's additional strings (message texts as
-well as multi-letter control sequences). If this turns out to be
-necessary for \eTeX\ it would certainly not be harmful to do it for
-\TeX\ as well. \TeX\ and \eTeX\ use three constants related to the
-string pool: \\{max\_strings} the maximal number of strings,
-\\{pool\_size} the maximal number of string characters, and
-\\{string\_vacancies} the minimal number of available string characters
-in addition to those occupied by strings from the pool file. It is,
-therefore, sufficient to increase \\{pool\_size} (or reduce
-\\{string\_vacancies}) by the number of \eTeX's additional string
-characters and to increase \\{max\_strings} by the number of \eTeX's
-additional strings. The latter will, however, be unnecessary for most
-implementations as \\{max\_strings} is usually increased substantially
-beyond its standard value in order to accommodate large \TeX\ macro
-packages.
-
-For Version~2 of \eTeX, there are about 100 additional strings with
-about 1500 additional string characters. The precise numbers can be
-obtained by running \.{POOLTYPE} on \TeX's and \eTeX's pool files
-(\.{POOLTYPE} reports the total number of strings and string characters
-in a pool file).
-
-Next, \.{etex.sys} may contain a system-dependent modification of the
-\\{eTeX\_banner} string. The modified \\{eTeX\_banner} string must
-contain `\.{e-TeX}' as well as the \eTeX\ version number. Note,
-however, that the \\{banner} string modified by \.{tex.ch} will not be
-referenced by \eTeX\ unless the implementor intentionally changes that
-aspect of \eTeX's functionality: therefore \.{etex.sys} can modify the
-\\{banner} string in the same way as does \.{tex.ch}.
-
-Then, \.{etex.sys} might deviate from \.{tex.ch} in order to use a
-different pool file name and\slash or format file extension (see below).
-
-Finally, \.{etex.sys} will necessarily deviate whenever \.{etex.ch}
-and \.{tex.ch} try to change the same piece of \.{WEB} code or when the
-system-independent \eTeX\ changes from \.{etex.ch} and the
-system-dependent \TeX\ changes from \.{tex.ch} interfere in some other way.
-In case of any such interference implementors must first of all determine
-how to combine the respective changes from \.{etex.ch} and \.{tex.ch}
-in order to obtain \eTeX's functionality for a particular system.
-Obviously, this process cannot be automated since it requires human
-insight.
-
-The \NTS\ team has tried to formulate \.{etex.ch} such that
-interferences with system-dependent change files \.{tex.ch} are
-unlikely. Suggestions by implementors how any remaining such
-interferences could be avoided by a reformulation of \.{etex.ch} will
-be taken into serious consideration. Such interferences can be further
-reduced by reformulating the system-dependent change file \.{tex.ch} for
-\TeX, e.g.\ by reducing the range of change entries from entire modules
-to the pieces of code that are actually changed.
-
-Implementors might prefer to maintain the system-dependent change file
-\.{etex.sys} not as a physical file but as a hypothetical file defined
-through its deviation from \.{tex.ch}. If there are no interferences of
-the kind mentioned above, then the effect of applying the changes from
-the hypothetical \.{etex.sys} to the hypothetical \.{etex.web} can be
-achieved by applying 3 change files, one after the other, to \.{tex.web}
-(using some tool such as \.{TIE}, \.{PATCHWEB}, or \.{WEBMERGE}):
-$$
-\vcenter{\halign{#\hfil&\qquad\.{#}\hfil&\qquad#\hfil\cr
-0.&tex.web&system-independent \.{WEB} source for \TeX\cr
-1.&etex.ch&system-independent changes for \eTeX\cr
-2.&tex.ch&system-dependent changes for \TeX\cr
-3.&tex.ech&additional system-dependent changes for \eTeX\cr
-}}
-$$
-The third change file \.{tex.ech} will be rather short and contains just
-the differences between \.{etex.sys} and \.{tex.ch}. It is recommended
-that implementors try to remove all interferences between \.{etex.ch}
-and \.{tex.ch} and use this method to generate \eTeX.
-
-As with \TeX\ there are three versions of \eTeX: \.{e-INITEX},
-\.{e-VIRTEX}, and \.{e-TRIPTEX}. Depending on the implementation they
-will again be generated from the three slightly different versions of
-\.{tex.ch} or with different compiler options or they may be one and the
-same program used with different run time options.
-
-\vskip 24pt plus 24pt
-\section \eTeX\ modes.
-In order to ensure maximal compatibility with \TeX, \eTeX\ can run in
-either compatibility mode or extended mode. The possibility of this
-choice is, of course, an extended feature of \eTeX. Once \eTeX\ has
-chosen compatibility mode it is, however, a legitimate implementation of
-\TeX\ (assuming the \TeX\ implementation itself is legitimate). The
-only differences between \eTeX\ in compatibility mode and \TeX\ are
-those allowed by D.~E.~Knuth [2] between different implementations of
-\TeX.
-
-An \.{e-TRIP} test suite [3] defines the criteria by which a program can
-qualify to use the name `\eTeX'. Part of the \.{e-TRIP} test consists
-of the standard \.{TRIP} test for \.{e-TRIPTEX} in compatibility and
-extended mode.
-
-\eTeX\ can therefore be used instead of \TeX\ without the necessity to
-maintain both programs. For the case that both programs should
-nevertheless co-exist on a system, it might be a good idea to name the
-pool file for \eTeX\ \.{etex.pool} instead of \.{tex.pool} and to use
-an extension other than \.{.fmt}, e.g., \.{.efmt} for \eTeX\ format
-files. (Format files for \TeX\ and \eTeX\ are incompatible). All this
-will require additional changes in the file \.{tex.ech}.
-
-When \.{INITEX} or \.{VIRTEX} start, they inspect the first non-blank
-character from the command line or in response to the \.{**} prompt.
-This may be an \.{\&} immediately followed by the name of a format file
-to be loaded. Otherwise \.{VIRTEX} loads a default format, whereas
-\.{INITEX} starts without loading a format.
-
-When \.{e-INITEX} or \.{e-VIRTEX} start, they inspect the first
-non-blank character from the command line or in response to the \.{**}
-prompt. This may again be an \.{\&} immediately followed by the name of
-a format file to be loaded; otherwise \.{e-VIRTEX} loads a default
-format. For \.{e-INITEX} the first non-blank character may be an \.{*}
-immediately followed by what would normally be the input for \.{INITEX}
-(without intervening blanks). \.{e-INITEX} enters extended mode in
-response to the \.{*}, or compatibility mode otherwise. This mode is
-recorded in format files produced by \.{e-INITEX} and entered again when
-such a format is loaded (by either \.{e-INITEX} or \.{e-VIRTEX}).
-
-\vskip 24pt plus 24pt
-\section References.
-\item {[1]}
-{\sl The \.{WEB} system of structured documentation\/},
-by Donald E.~Knuth,\hfil\break Stanford Computer Science Report~980.
-
-\item {[2]}
-{\sl A torture test for \TeX\/},
-by Donald E.~Knuth, Stanford Computer Science Report~1027.
-
-\item {[3]}
-{\sl A torture test for \eTeX\/},
-by The \NTS\ Team (Peter Breitenlohner and Bernd Raichle).
-
-\end