A torture test for ε-TEX

(Version 1, October 1996)

by The NTS Team

Peter Breitenlohner, Max-Planck-Institut für Physik, München Bernd Raichle, Institut für Informatik, Universität Stuttgart

Programs that claim to be implementations of ε-TEX are supposed to be able to process the test routines described in this report, producing the outputs described in this report.

The preparation of this report was supported in part by DANTE, Deutschsprachige Anwendervereinigung TEX e.V. ‘TEX’ is a trademark of the American Mathematical Society.

Introduction. The program TEX82 by D.E. Knuth is in the public domain, and its algorithms are published; he has done this since he does not want to discourage its use by placing proprietary restrictions on the software. However, he doesn’t want faulty imitations to masquerade as TEX processors, since users want TEX to produce identical results on different machines. He has copyrighted the programs so that he has some chance to forbid unauthorized copies; he explicitly authorizes copying of correct TEX implementations, and not of incorrect ones! In order to determine, what is a correct implementation of TEX, he has devised a test suite for TEX, the TRIP test [1].

The program ε-TEX by ‘The NTS Team’ extends the capabilities of TEX by adding a relatively small amount (less than 10 per cent) of code; it is in the public domain, and its algorithms (beyond those of TEX) are published. This report has been inspired by and is based on the TRIP manual. It describes the e-TRIP test, a test suite that allows one to determine whether what one has is a correct implementation of ε-TEX.

If somebody claims to have a correct implementation of ε-TEX, we will not believe it until we see that the e-TRIP test is performed properly. We propose, in fact, that a program must meet two criteria before it can justifiably be called ε-TEX: (1) The person who wrote it must be happy with the way it works at his or her installation; and (2) the program must produce the correct results from the e-TRIP test. Hence we are planning to do whatever we can to suppress any systems that call themselves ε-TEX without meeting conditions (1) and (2). We have copyrighted the programs so that we have some chance to forbid unauthorized copies; we explicitly authorize copying of correct ε-TEX implementations, and not of incorrect ones!

The process of generating an ε-TEX implementation for a particular system [2] is based on that of generating a TEX implementation for the same system. Moreover, when ε-TEX is used in compatibility mode, it is supposed to be 100 per cent compatible with TEX. Thus a correct ε-TEX implementation, when running in compatibility mode, must pass the TRIP test. In fact, the first part of the e-TRIP test for a particular implementation of ε-TEX consists in performing the standard TRIP test (a) for ε-TEX in compatibility mode and (b) for ε-TEX in extended mode. The deviations in the test output from step (a) should, of course, be limited to those explicitly allowed by Knuth and described in Appendix A, item 5 of the TRIP manual. Any additional deviations in the test output from step (b) must be accounted for by ε-TEX’s additional algorithms and are described in detail in this report. Once an ε-TEX implementation has passed these preliminary tests, it should be subjected to the second part of the e-TRIP test. There the extended features and algorithms of ε-TEX are tested under normal circumstances as well as in situations a normal user would never dream of (in the spirit of the TRIP test).

The remainder of this report consists of appendices, whose contents ought to be described briefly here: Appendix A explains in detail how to carry out the first part of the test of ε-TEX, given copies of the

files described in the TRIP manual.

Appendix B explains how to carry out the ε-TEX specific test, given copies of the files described in the other appendices.

Appendix C is eTRIP.TEX, a fiendish test file for ε-TEX.

Appendix D is eTRIP.PL, the property-list description of a special font called etrip.

Appendix E is eTRIPIN.LOG, a correct transcript file eTRIP.LOG that results if e-TRIPTEX is applied to eTRIP.TEX. This run of e-TRIPTEX also creates a binary format file called eTRIP.FMT or similar.)

Appendix F is a correct transcript file eTRIP.LOG that results if e-TRIPTEX or any other version of ε-TEX is applied to eTRIP.TEX with format eTRIP.FMT.

Appendix G is eTRIP.FOT, an abbreviated version of Appendix F that appears on the user’s terminal during the run that produces eTRIP.LOG.

References.

[1] A torture test for TEX, by Donald E. Knuth, Stanford Computer Science Report 1027.

[2] How to generate ε-TEX, by The NTS Team (Peter Breitenlohner and Phil Taylor).

[3] The WEB system of structured documentation, by Donald E. Knuth, Stanford Computer Science Report 980.

[4] TEXware, by Donald E. Knuth and David R. Fuchs, Stanford Computer Science Report 1097.

2 APPENDIX A: HOW TO TEST ε-TEX (PART 1)

Appendix A: How to test ε-TEX (part 1).

0. Let’s assume that you have copies of the files TRIP.TEX, TRIP.PL, TRIPIN.LOG, TRIP.LOG, TRIP.TYP, and TRIP.FOT as described in Appendices B, C, D, E, F, and G of the TRIP manual [1] (in a safe place so that these “master” files will not be clobbered). Furthermore, let’s suppose that you have a working WEB system [3], and that you have working programs PLtoTF and DVItype, as described in the TEXware report [4]. Finally let’s assume that you are able to generate ε-TEX as described in [2].

1. Use PLtoTF to convert TRIP.PL into TRIP.TFM; install TRIP.TFM in the standard file area for TEX font metric files (or set a suitable environment variable or similar such that these files will be found by the program).

2. Generate e-TRIPTEX, a special version of e-INITEX. The parameters for e-TRIPTEX should agree with those for TRIPTEX (as described in [1]), except that you should set pool size to a value ≥ 32000 and max strings to a value ≥ 3200.

3. Perform the TRIP test as described in Appendix A, items 3–7 of [1], with e-TRIPTEX as prepared in step 2. The program will run in compatibility mode and should therefore be fully compatible with TRIPTEX as described in [1]; apart from the allowed differences listed in item 5, the test output should deviate from the master files in the following two ε-TEX-specific points (and only in these):

a) The name and version by which the program announces itself will be different; the extension of the format file produced during the first e-TRIPTEX run may be different.

b) The message ‘entering compatibility mode’ will appear on the terminal and in the TRIP.LOG

files.

4. Perform steps 3–7 of the TRIP test once again with e-TRIPTEX. During the first run type ‘*\input trip’ instead of ‘\input trip’. As a consequence e-TRIPTEX will run in extended mode and the test output should differ from that of step 3 above in the following respects (and only in these):

a) The date and/or time will naturally be different.

b) The input ‘*\input trip’ instead of ‘\input trip’ is recorded in the first TRIP.LOG file; the word

    ‘compatibility’ is replaced by ‘extended’.

c) If the date has changed, the number of string characters dumped by the first e-TRIPTEX run may vary by ±2.

d) Both e-TRIPTEX runs report 34 additional multiletter control sequences (in the TRIP.LOG files).

e) The second e-TRIPTEX run reports different memory usage statistics during the output of pages;

there will be the three (non consecutive) lines

        Memory usage before: 151&313; after: 102&278; still untouched: 1613
        Memory usage before: 851&436; after: 290&417; still untouched: 175
        Memory usage before: 330&428; after: 292&415; still untouched: 175

instead of

        Memory usage before: 159&313; after: 102&278; still untouched: 1613
        Memory usage before: 895&436; after: 290&417; still untouched: 175
        Memory usage before: 334&428; after: 292&415; still untouched: 175

The first and third of these appear on the terminal and in the TRIP.LOG file, the second one in TRIP.LOG only. Next the second run reports the unfinished group(s) when the program terminates; there are three additional lines (the first of them blank) on the terminal and in the TRIP.LOG file

        ### 1: semi simple group entered at line 429 (begingroup)
        ### 0: bottom level

The second TRIP.LOG contains six additional lines

        {restoring \predisplaydirection=0}

and ten lines displaying an \hbox contain the additional text ‘, display’. Finally the second TRIP.LOG reports the use of 7 additional save (s) stack positions.

APPENDIX B: HOW TO TEST ε-TEX (PART 2) 3

Appendix B: How to test ε-TEX (part 2).

5. Assume that you have copies of the “master” files eTRIP.TEX, eTRIP.PL, eTRIPIN.LOG, eTRIP.LOG, and eTRIP.FOT, as in Appendices C, D, E, F, and G (again in a safe place).

6. Use PLtoTF to convert eTRIP.PL into eTRIP.TFM; install eTRIP.TFM in the standard file area for TEX font metric files (or set a suitable environment variable or similar).

7. Run e-TRIPTEX; in response to the ‘**’ prompt, type ‘*etrip’. You should get an output file eTRIP.LOG that matches the file eTRIPIN.LOG (Appendix E). Contrary to the analogous step in the TRIP test (steps 3 and 4 above) there should be no error messages; lines in the output saying “Emergency stop” would indicate that you have performed this test with a standard TEX or with ε-TEX in compatibility mode.

8. Run e-TRIPTEX again; this time type ‘&etrip␣etrip’. You should get an output eTRIP.LOG. Furthermore, your terminal should receive output that matches eTRIP.FOT (Appendix G). Once again, the terminal will be getting no output during the middle part of this test.

9. Compare the eTRIP.LOG file from step 8 with the “master” eTRIP.LOG file of step 5. There should be no lines saying “Emergency stop” (see above) or “Bug in your e-TeX implementation”; there should be perfect agreement between these files except in the following respects:

a) The dates and possibly the file names will naturally be different.

b) Glue settings in the displays of TEX boxes are subject to system-dependent rounding, so slight deviations are permissible. However, such deviations apply only to the ‘glue set’ values that appear at the end of an \hbox or \vbox line; all other numbers should agree exactly, since they are computed with integer arithmetic in a prescribed system-independent manner.

c) The amount of space in kerns that are marked “for accent” are, similarly, subject to systemdependent rounding.

d) If you had different values for stack size, buf size, etc., the corresponding capacity values will be different when they are printed out at the end.

e) Help messages may be different; indeed, the author of TEX encourages non-English help messages in versions of TEX for people who don’t understand English as well as some other language. Similarly, ε-TEX could well be used with non-English help messages.

f) The total number and length of strings at the end may well be different.

g) If your ε-TEX uses a different memory allocation or packing scheme or DVI output logic, the memory usage statistics may change.

Appendix C: The eTRIP.TEX file. The contents of the test routine are prefixed here with line numbers, for ease in comparing this file with the error messages printed later; the line numbers aren’t actually present.

 1 %%; This is `etrip.tex' for e-TeX v3.14159-1.1 as of October 18, 1996.
 2 %%;
 3 %%; This is a diabolical test file for e-TeX, an extension of TeX82.
 4 %%; It is not as diabolical as `trip.tex', Knuth's torture test for TeX.
 5 %%;
 6 %%; ==>> Do not use this TeX code and its macros as an example  <<==
 7 %%; ==>> how you can make use of the new e-TeX features!  It is <<==
 8 %%; ==>> meant to test these extensions and often uses slightly <<==
 9 %%; ==>> wrong e-TeX input to produce errors and warnings.      <<==
10 %%;
11 \catcode`\{=1\catcode`\}=2\catcode`\#=6
12 \def\etripdate   {96/10/18}
13 \def\texversion  {3.14159}
14 \def\etripversion{1.1}

15 %

16 \message{This is the e-Trip test [\etripdate] for
17  e-TeX v\texversion-\etripversion.}

18 %

19 % --- Make sure that e-Trip is run in e-TeX extended mode
20 \def\stop#1{\message{Emergency stop: #1!}}
21 \expandafter\ifx\csname eTeXversion\endcsname\relax
22 \stop{You aren't using e-TeX in extended mode}
23 \message{(Do not forget to give an asterisk `*' as the first non-blank}
24 \message{character to make e-IniTeX enter extended mode.)}
25 \expandafter\end
26 \fi
27 %     Check for beta test versions, \eTeXrevision has a leading `-'
28 \def\1#1-#2\relax{\ifx\relax#2\relax \edef\1{\the\eTeXversion#1}%
29 \else {\count0=-1\advance\count0\eTeXversion
30  \xdef\1{\number\count0 #2beta}}\fi}
31 \expandafter\1\eTeXrevision-\relax
32 \message{(You are using e-TeX version/revision \1)}
33 \ifx\1\etripversion \else
34 \stop{I have expected e-TeX v3.14159...-\etripversion}
35 \expandafter\end
36 \fi

37 %

38 % --- a special branch for e-IniTeX
39 \ifx\einitex\undefined \def\einitex{}

40 %

41 \message{e-IniTeX: Assigning category codes,}
42 \catcode`\$=3\catcode`\&=4
43 \catcode`\^=7\catcode`\^^I=10\catcode`\_=8
44 \message{tracing switches}
45 \tracingstats=4\tracinglostchars=2
46 \message{other codes,}
47 \endlinechar=`\^^M \newlinechar=`\^^J

48 %

49 \message{definitions for e-VirTeX e-Trip test run,}
50 \def\error{\immediate\write15{Bug in your e-TeX implementation!}%

51  \immediate\write15 }
52 \def\typeout{\immediate\write15 }
53 \def\space{ }

54 %

55 \message{constants and registers,}
56 \chardef\zero=0\chardef\one=1\chardef\two=2
57 \countdef\ctmp=255

58 %

59 \message{fonts,}
60 \fontdimen12\nullfont=13pt
61 \font\trip=etrip \trip
62 \textfont0=\trip \textfont1=\trip
63 \font\smalltrip=etrip scaled 500\relax % our symbols font
64 \fontdimen22\smalltrip=7pt
65 \textfont2=\smalltrip \scriptfont2=\smalltrip
66 \scriptscriptfont2=\smalltrip
67 \font\bigtrip=etrip at 20pt\relax % our extension font
68 \textfont3=\bigtrip \scriptfont3=\bigtrip
69 \scriptscriptfont3=\bigtrip

70 %

71 \message{some math characters,}
72 \delcode`\[="161361 % small (family 1, character "61 (a)), large (3,"61)
73 \delcode`\|="142342 % small (family 1, character "42 (B)), large (3,"42)
74 \delcode`\]="162362 % small (family 1, character "62 (b)), large (3,"62)

75 %

76 \message{some math parameters,}
77 \thinmuskip=18mu plus 3.6mu
78 \medmuskip=27mu plus 9mu minus 18mu
79 \thickmuskip=36mu minus 7.2mu

80 %

81 \message{enable e-TeX enhancements (TeXXeT),}
82 \TeXXeTstate=1
83 \message{everyjob ...dumped.}
84 \everyjob={\message{e-IniTeX: e-Trip format loaded.}}
85 \expandafter\dump
86 \fi

87 %

88 % -- Do the rest in silent, almost all of it:
89 \batchmode

90 %

91 % -- Check that all e-TeX enhancements are switched off
92 \ifnum\TeXXeTstate=0 \else
93 \error{dumped e-TeX enhancement state registers aren't switch off}
94 \fi

95 % 96 %

97 % ============================== input/output: new csnames

98 %

99 % -- Check table of equivalents and the routines |id_lookup|,
100 %    |print_cmd_chr| for all new e-TeX control sequences
101 % -- Check new primitive \unexpanded (first test)
102 \typeout{Checking input/output of new csnames:}
103 \def\1{\eTeXversion \eTeXrevision \showgroups \showtokens

104 \tracingassigns \tracinggroups \tracingifs \tracingscantokens
105 \currentgrouplevel \currentgrouptype \middle \lastnodetype
106 \TeXXeTstate \beginL \endL \beginR \endR \predisplaydirection
107 \marks \topmarks \firstmarks \botmarks
108 \splitfirstmarks \splittopmarks
109 \protected \unexpanded \detokenize \scantokens \readline
110 \unless \ifdefined \ifcsname \everyeof \middle}
111 % loop through the list, count the number of csnames,
112 % insert the \newlinechar after the 2nd, 4th, 6th, ...
113 \ctmp=0\def\3{}
114 \def\2#1{\ifx\relax#1\else
115 \advance\ctmp\one
116 \edef\3{\unexpanded\expandafter{\3 #1}\ifodd\ctmp\else ^^J\fi}%
117 \expandafter\2\fi}
118 \expandafter\2\1\relax
119 \typeout{e-TeX has \number\ctmp\space new csnames:}%
120 \show\3

121 % 122 %

123 % ============================== create and output nodes

124 %

125 % -- Check |new_...| routines and |short_display|, |show_node_list|
126 %    for all new e-TeX node types and subtypes
127 % -- Check for new primitives disabled when read.
128 \typeout{Checking creation and printing for new node types:}
129 \tracingonline=1
130 \showboxbreadth=255\showboxdepth=255
131 \setbox0=\vbox{\hsize=0pt\TeXXeTstate=1\relax
132 %% []\trip a[]b[]p$q [] t$u[][]    % <== \endR\endL at end
133 a\beginL b\beginR p$q\left[\mathpunct{r}\middle|s\right]t$u
134 %% \trip aMb
135 $$aMb$$    % \hbox ..., display
136 %% [][]\trip p[]q$st$u[]    % <== \beginL\beginR at beginning
137 p\endR q\mathsurround=12.3pt$st$u    % <== \endL at end
138 %% \trip rMs
139 $$rMs$$    % \hbox ..., display
140 %% []\trip tp[]u    % <== \beginL at beginning
141 tp\endL u
142 %% \trip rMs
143 $$rMs$$    % \hbox ..., display
144 %% \trip tp    % <== no \mark(s), no \(begin/end)(L/R)!
145 tp\mark{0old}\marks0{0}\marks1{1}\marks15{15}\marks255{255}%
146 \marks-1{-1}\marks256{256}% Bad number (-1) ...and (256).
147 \TeXXeTstate=0\relax
148 \beginL\beginR\endL\endR % Improper \(begin/end)(L/R)
149 }\showbox0

150 % 151 %

152 % ============================== \interactionmode

153 %

154 % -- Check new special register \interactionmode
155 \begingroup \ctmp=\interactionmode % save current value
156 \nonstopmode

157 \typeout{Checking \string\interactionmode:}
158 % test inquiry using \interactionmode
159 \def\3{\typeout{current interactionmode (l.\number\inputlineno): %
160 \ifcase\interactionmode batch\or nonstop\or scroll\or
161  errorstop\else UNKNOWN!\fi}}
162 \def\1#1{\relax\ifnum#1=\interactionmode \3 \else
163 \typeout{wrong interactionmode: %
164  \interactionmode\space should be \number#1!}\fi}
165 \batchmode     \1 0
166 \nonstopmode   \1 1
167 \scrollmode    \1 2
168 \errorstopmode \1 3
169 % test setting |interaction_mode| using this special register
170 \def\2#1{\interactionmode=#1\relax \1{#1}}
171 \nonstopmode
172 % generate two errors:
173 \interactionmode=-1 \1 1 % nonstop
174 \interactionmode=4  \1 1 % nonstop
175 \2 2 \2 2 \2 1 \2 1 \2 3 \2 3 \2 0 \2 0
176 \1 0{\interactionmode=3}\1 3 % global assignment!
177 % Test for the correct call of |new_interaction|, i.e.
178 % correct setting of |selector|:
179 \interactionmode=1 \message{1 (l.\number\inputlineno)}% log+term
180 \interactionmode=0 \message{0 (l.\number\inputlineno)}% log only
181 \interactionmode=1 \message{1 (l.\number\inputlineno)}% log+term
182 % Some tests with TeX's old command and register assignments
183 \batchmode \1 0 \2 3 \scrollmode \1 2 \2 1
184 \2 \ctmp
185 \endgroup

186 % 187 %

188 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% STILL INCOMPLETE!!!
189 % %%%%% Missing:
190 % %%%%%   Test for all new primitives

191 %

192 % -- Check TeX--XeT's new primitives - incorrect matching & conversion
193 \typeout{Checking TeX--XeT enhancements:}
194 % (extra `endL/R' nodes are converted to `kern 0.0' nodes)
195 \setbox0=\vbox{\TeXXeTstate=1
196 \parfillskip=0pt plus1fil\hsize=10pt\parindent=.5pt
197 \beginL\kern1pt\par
198 \beginR\kern2pt\par
199 \beginL\beginR\kern3pt\penalty0\hbox{}\kern3pt\endL\endR\endL\par
200 \endL\kern4pt\endR\par}
201 %%\showbox0

202 %

203 \showboxbreadth=10\showboxdepth=10
204 \tracingonline=1\tracingoutput=1
205 \end
206 \error{e-VirTeX: can't happen in e-trip test!}
207 %% End of file `etrip.tex'.

Appendix D: The eTRIP.PL file. At the moment the eTRIP.PL file is just a copy of TRIP.PL as described in Appendix C of [1]. Appendix E: The eTRIPIN.LOG file. When e-TRIPTEX makes the eTRIP.FMT file, it also creates a file called eTRIP.LOG that looks like this.

This is e-TeX, Version 3.14159-1.1 (INITEX)  23 OCT 1996 21:18
entering extended mode
***etrip
(etrip.tex This is the e-Trip test [96/10/18] for e-TeX v3.14159-1.1.
(You are using e-TeX version/revision 1.1)
e-IniTeX: Assigning category codes, tracing switches other codes,
definitions for e-VirTeX e-Trip test run, constants and registers,
fonts, some math characters, some math parameters,
enable e-TeX enhancements (TeXXeT), everyjob ...dumped. )
Beginning to dump on file etrip.fmt
 (preloaded format=etrip 96.10.23)
1382 strings of total length 24297
198 memory locations dumped; current usage is 32&160
371 multiletter control sequences
\font\nullfont=nullfont
\font\trip=etrip
\font\smalltrip=etrip at 5.0pt
\font\bigtrip=etrip at 20.0pt
2279 words of font info for 3 preloaded fonts
0 hyphenation exceptions
Hyphenation trie of length 256 has 0 ops out of 500
No pages of output.

Appendix F: The eTRIP.LOG file. Here is the major output of the e-TRIP test; it is generated by running

e-TRIPTEX and loading eTRIP.FMT, then reading eTRIP.TEX.
This is e-TeX, Version 3.14159-1.1 (preloaded format=etrip 96.10.23)  23 OCT 1996 21:18
entering extended mode
**&etrip etrip
(etrip.tex e-IniTeX: e-Trip format loaded.
This is the e-Trip test [96/10/18] for e-TeX v3.14159-1.1.
(You are using e-TeX version/revision 1.1)
Checking input/output of new csnames:
e-TeX has 34 new csnames:
> \3=macro:
-> \eTeXversion  \eTeXrevision
 \showgroups  \showtokens
 \tracingassigns  \tracinggroups
 \tracingifs  \tracingscantokens
 \currentgrouplevel  \currentgrouptype
 \middle  \lastnodetype
 \TeXXeTstate  \beginL
 \endL  \beginR
 \endR  \predisplaydirection
 \marks  \topmarks
 \firstmarks  \botmarks
 \splitfirstmarks  \splittopmarks
 \protected  \unexpanded
 \detokenize  \scantokens
 \readline  \unless
 \ifdefined  \ifcsname
 \everyeof  \middle
.
l.120 \show\3

Checking creation and printing for new node types:
Overfull \hbox (38.99965pt too wide) in paragraph at lines 133--135
[]\trip a[]b[]p$q [] t$u[][]
\hbox(17.0+3.00002)x0.0
.\hbox(0.0+0.0)x0.0
.\trip a
.\beginL
.\trip b
.\beginR
.\trip p
.\mathon
.\trip q
.\glue(\thinmuskip) 4.99988 plus 0.99997
.\hbox(17.0+3.00002)x23.9999
..\hbox(14.00002+2.0)x6.00002, shifted -0.99998
...\bigtrip a
..\trip r
..\glue(\thinmuskip) 4.99988 plus 0.99997
..\hbox(16.0+4.00002)x6.0, shifted -1.0
...\bigtrip B
..\trip s
..\vbox(7.0+11.0)x7.0, shifted -9.0
...\hbox(7.0+1.0)x3.0
....\trip A
...\hbox(8.0+2.0)x3.0
....\trip B
.\glue(\thinmuskip) 4.99988 plus 0.99997
.\trip t
.\mathoff
.\trip r (ligature u|)
.\penalty 10000
.\glue(\parfillskip) 0.0
.\endR
.\endL
.\glue(\rightskip) 0.0

Overfull \hbox (11.0pt too wide) detected at line 135
\trip aMb
\hbox(8.0+2.0)x0.0
.\trip a
.\trip M
.\trip b

Overfull \hbox (24.6pt too wide) in paragraph at lines 135--139
[][]\trip p[]q$st$u[]
\hbox(0.0+0.0)x0.0
.\beginL
.\beginR
.\trip p
.\endR
.\trip q (ligature |)
.\trip q
.\mathon, surrounded 12.3
.\trip s
.\trip t
.\mathoff, surrounded 12.3
.\trip r (ligature u|)
.\penalty 10000
.\glue(\parfillskip) 0.0
.\endL
.\glue(\rightskip) 0.0

Overfull \hbox (6.0pt too wide) detected at line 139
\trip rMs
\hbox(0.0+0.0)x0.0
.\trip r
.\trip M
.\trip s

Overfull \hbox (3.0pt too wide) in paragraph at lines 139--143
[]\trip tp[]u
\hbox(0.0+0.0)x0.0
.\beginL
.\trip t
.\kern3.0
.\trip q (ligature )
.\trip p
.\endL
.\trip r (ligature u|)
.\penalty 10000
.\glue(\parfillskip) 0.0
.\glue(\rightskip) 0.0

Overfull \hbox (6.0pt too wide) detected at line 143
\trip rMs
\hbox(0.0+0.0)x0.0
.\trip r
.\trip M
.\trip s
! Bad register code (-1).
<to be read again>
                   {
l.146   \marks-1{
                 -1}\marks256{256}% Bad number (-1) ...and (2...
A register number must be between 0 and 255.
I changed this one to zero.

! Bad register code (256).
<to be read again>
                   {
l.146   \marks-1{-1}\marks256{
                              256}% Bad number (-1) ...and (2...
A register number must be between 0 and 255.
I changed this one to zero.
! Improper \beginL.
l.148   \beginL
               \beginR\endL\endR % Improper \(begin/end)(L/R)
Sorry, this optional e-TeX feature has been disabled.
! Improper \beginR.
l.148   \beginL\beginR
                      \endL\endR % Improper \(begin/end)(L/R)
Sorry, this optional e-TeX feature has been disabled.
! Improper \endL.
l.148   \beginL\beginR\endL
                           \endR % Improper \(begin/end)(L/R)
Sorry, this optional e-TeX feature has been disabled.
! Improper \endR.
l.148   \beginL\beginR\endL\endR
                                 % Improper \(begin/end)(L/R)
Sorry, this optional e-TeX feature has been disabled.

Overfull \hbox (3.0pt too wide) in paragraph at lines 143--149
\trip tp
\hbox(0.0+0.0)x0.0
.\trip t
.\kern3.0
.\trip q (ligature )
.\trip p
.\penalty 10000
.\glue(\parfillskip) 0.0
.\glue(\rightskip) 0.0
> \box0=
\vbox(30.00002+0.0)x0.0
.\hbox(17.0+3.00002)x0.0
..\hbox(0.0+0.0)x0.0
..\trip a
..\beginL
..\trip b
..\beginR
..\trip p
..\mathon
..\trip q
..\glue(\thinmuskip) 4.99988 plus 0.99997
..\hbox(17.0+3.00002)x23.9999
...\hbox(14.00002+2.0)x6.00002, shifted -0.99998
....\bigtrip a
...\trip r
...\glue(\thinmuskip) 4.99988 plus 0.99997
...\hbox(16.0+4.00002)x6.0, shifted -1.0
....\bigtrip B
...\trip s
...\vbox(7.0+11.0)x7.0, shifted -9.0
....\hbox(7.0+1.0)x3.0
.....\trip A
....\hbox(8.0+2.0)x3.0
.....\trip B
..\glue(\thinmuskip) 4.99988 plus 0.99997
..\trip t
..\mathoff
..\trip r (ligature u|)

..\penalty 10000
..\glue(\parfillskip) 0.0
..\endR
..\endL
..\glue(\rightskip) 0.0
.\penalty 0
.\glue(\abovedisplayskip) 0.0
.\glue(\lineskip) 0.0
.\hbox(8.0+2.0)x0.0
..\beginM
..\kern0.0
..\hbox(8.0+2.0)x0.0, display
...\trip a
...\trip M
...\trip b
..\kern0.0
..\endM
.\penalty 0
.\glue(\belowdisplayskip) 0.0
.\glue(\lineskip) 0.0
.\hbox(0.0+0.0)x0.0
..\beginL
..\beginR
..\trip p
..\endR
..\trip q (ligature |)
..\trip q
..\mathon, surrounded 12.3
..\trip s
..\trip t
..\mathoff, surrounded 12.3
..\trip r (ligature u|)
..\penalty 10000
..\glue(\parfillskip) 0.0
..\endL
..\glue(\rightskip) 0.0
.\penalty 0
.\glue(\abovedisplayskip) 0.0
.\glue(\baselineskip) 0.0
.\hbox(0.0+0.0)x0.0
..\beginM
..\kern0.0
..\hbox(0.0+0.0)x0.0, display
...\trip r
...\trip M
...\trip s
..\kern0.0
..\endM
.\penalty 0
.\glue(\belowdisplayskip) 0.0
.\glue(\baselineskip) 0.0
.\hbox(0.0+0.0)x0.0
..\beginL
..\trip t
..\kern3.0
..\trip q (ligature )
..\trip p
..\endL
..\trip r (ligature u|)
..\penalty 10000
..\glue(\parfillskip) 0.0
..\glue(\rightskip) 0.0
.\penalty 0
.\glue(\abovedisplayskip) 0.0
.\glue(\baselineskip) 0.0
.\hbox(0.0+0.0)x0.0, display
..\trip r
..\trip M
..\trip s
.\penalty 0
.\glue(\belowdisplayskip) 0.0

.\glue(\baselineskip) 0.0
.\hbox(0.0+0.0)x0.0
..\trip t
..\kern3.0
..\trip q (ligature )
..\trip p
..\penalty 10000
..\glue(\parfillskip) 0.0
..\glue(\rightskip) 0.0
.\mark{0old}
.\mark{0}
.\marks1{1}
.\marks15{15}
.\marks255{255}
.\mark{-1}
.\mark{256}
! OK.
l.149 }\showbox0

Checking \interactionmode:
current interactionmode (l.165): batch
current interactionmode (l.166): nonstop
current interactionmode (l.167): scroll
current interactionmode (l.168): errorstop
! Bad interaction mode (-1).
l.173   \interactionmode=-1
                            \1 1 % nonstop
Modes are 0=batch, 1=nonstop, 2=scroll, and
3=errorstop. Proceed, and I'll ignore this case.
current interactionmode (l.173): nonstop
! Bad interaction mode (4).
l.174   \interactionmode=4
                            \1 1 % nonstop
Modes are 0=batch, 1=nonstop, 2=scroll, and
3=errorstop. Proceed, and I'll ignore this case.
current interactionmode (l.174): nonstop
current interactionmode (l.175): scroll
current interactionmode (l.175): scroll
current interactionmode (l.175): nonstop
current interactionmode (l.175): nonstop
current interactionmode (l.175): errorstop
current interactionmode (l.175): errorstop
current interactionmode (l.175): batch
current interactionmode (l.175): batch
current interactionmode (l.176): batch
current interactionmode (l.176): errorstop
1 (l.179)
0 (l.180)
1 (l.181)
current interactionmode (l.183): batch

current interactionmode (l.183): errorstop
current interactionmode (l.183): scroll
current interactionmode (l.183): nonstop
current interactionmode (l.184): batch
Checking TeX--XeT enhancements:
\endL or \endR problem (0 missing, 1 extra) in paragraph at lines 199--1
99
[][][][][][]
\hbox(0.0+0.0)x10.0, glue set 3.5fil
.\hbox(0.0+0.0)x0.5
.\beginL
.\beginR
.\kern 3.0
.\penalty 0
.\hbox(0.0+0.0)x0.0
.\kern 3.0
.\kern 0.0
.\endR
.\endL
.\penalty 10000
.\glue(\parfillskip) 0.0 plus 1.0fil
.\glue(\rightskip) 0.0

\endL or \endR problem (0 missing, 2 extra) in paragraph at lines 200--2
00
[]
\hbox(0.0+0.0)x10.0, glue set 5.5fil
.\hbox(0.0+0.0)x0.5
.\kern 0.0
.\kern 4.0
.\kern 0.0
.\penalty 10000
.\glue(\parfillskip) 0.0 plus 1.0fil
.\glue(\rightskip) 0.0
 )
Here is how much of TeX's memory you used:
 4 strings out of 1718
 36 string characters out of 8703
 1646 words of memory out of 3000
 372 multiletter control sequences out of 2100
 2286 words of font info for 3 fonts, out of 20000 for 75
 0 hyphenation exceptions out of 307
 5i,4n,2p,89b,27s stack positions out of 200i,40n,60p,500b,600s
No pages of output.

Appendix G: The eTRIP.FOT file. This shows what appeared on the terminal while Appendix F was being produced.

This is e-TeX, Version 3.14159-1.1 (INITEX)
**&etrip etrip
entering extended mode
(etrip.tex e-IniTeX: e-Trip format loaded.
This is the e-Trip test [96/10/18] for e-TeX v3.14159-1.1.
(You are using e-TeX version/revision 1.1)
Checking \interactionmode:
current interactionmode (l.166): nonstop
current interactionmode (l.167): scroll
current interactionmode (l.168): errorstop
! Bad interaction mode (-1).
l.173   \interactionmode=-1
                            \1 1 % nonstop
current interactionmode (l.173): nonstop
! Bad interaction mode (4).
l.174   \interactionmode=4
                            \1 1 % nonstop
current interactionmode (l.174): nonstop
current interactionmode (l.175): scroll
current interactionmode (l.175): scroll
current interactionmode (l.175): nonstop
current interactionmode (l.175): nonstop
current interactionmode (l.175): errorstop
current interactionmode (l.175): errorstop
current interactionmode (l.176): errorstop
1 (l.179)
1 (l.181)
current interactionmode (l.183): errorstop
current interactionmode (l.183): scroll
current interactionmode (l.183): nonstop