summaryrefslogtreecommitdiff
path: root/Master/texmf-doc
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2005-12-29 00:34:36 +0000
committerKarl Berry <karl@freefriends.org>2005-12-29 00:34:36 +0000
commit41ceff5a615ab4e3d46b1c94bd26d9dcf9d6c1f8 (patch)
treec710ef0b82f65ae0f818e6ea8f10c2f40f2decf3 /Master/texmf-doc
parent2293d6885b754133151c14be7e01ad81baf0afbf (diff)
doc/english/i-l
git-svn-id: svn://tug.org/texlive/trunk@21 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-doc')
-rw-r--r--Master/texmf-doc/doc/english/impatient/Makefile15
-rw-r--r--Master/texmf-doc/doc/english/impatient/README36
-rw-r--r--Master/texmf-doc/doc/english/impatient/backm.tex92
-rw-r--r--Master/texmf-doc/doc/english/impatient/book.ccs94
-rw-r--r--Master/texmf-doc/doc/english/impatient/book.pdfbin0 -> 1421239 bytes
-rw-r--r--Master/texmf-doc/doc/english/impatient/book.sdx1691
-rw-r--r--Master/texmf-doc/doc/english/impatient/book.tex47
-rw-r--r--Master/texmf-doc/doc/english/impatient/capsule.tex1134
-rw-r--r--Master/texmf-doc/doc/english/impatient/concepts.tex4097
-rw-r--r--Master/texmf-doc/doc/english/impatient/config.tex0
-rw-r--r--Master/texmf-doc/doc/english/impatient/copyrght.tex48
-rw-r--r--Master/texmf-doc/doc/english/impatient/eplain.tex1196
-rw-r--r--Master/texmf-doc/doc/english/impatient/errata.future237
-rw-r--r--Master/texmf-doc/doc/english/impatient/errors.tex325
-rw-r--r--Master/texmf-doc/doc/english/impatient/examples.tex56
-rw-r--r--Master/texmf-doc/doc/english/impatient/fdl.tex463
-rw-r--r--Master/texmf-doc/doc/english/impatient/fonts.tex241
-rw-r--r--Master/texmf-doc/doc/english/impatient/frontm.tex82
-rw-r--r--Master/texmf-doc/doc/english/impatient/genops.tex2827
-rw-r--r--Master/texmf-doc/doc/english/impatient/index.tex39
-rw-r--r--Master/texmf-doc/doc/english/impatient/index1.icn90
-rw-r--r--Master/texmf-doc/doc/english/impatient/index2.icn239
-rw-r--r--Master/texmf-doc/doc/english/impatient/macros.tex2295
-rw-r--r--Master/texmf-doc/doc/english/impatient/math.tex2190
-rw-r--r--Master/texmf-doc/doc/english/impatient/modes.tex2078
-rw-r--r--Master/texmf-doc/doc/english/impatient/pages.tex1153
-rw-r--r--Master/texmf-doc/doc/english/impatient/paras.tex2166
-rw-r--r--Master/texmf-doc/doc/english/impatient/preface.tex157
-rw-r--r--Master/texmf-doc/doc/english/impatient/read1st.tex45
-rw-r--r--Master/texmf-doc/doc/english/impatient/tips.tex1011
-rw-r--r--Master/texmf-doc/doc/english/impatient/usebook.tex243
-rw-r--r--Master/texmf-doc/doc/english/impatient/usermacs.tex1168
-rw-r--r--Master/texmf-doc/doc/english/impatient/usingtex.tex822
-rw-r--r--Master/texmf-doc/doc/english/impatient/xmptext.tex449
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/README69
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/cm85.bug1860
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata.eight610
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata.five1108
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata.four1052
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata.nine226
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata.one751
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata.seven821
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata.six528
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata.ten1289
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata.tex736
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata.three1898
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata.two491
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata1.tex751
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata2.tex491
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata3.tex1898
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata4.tex1052
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata5.tex1108
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata6.tex528
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata7.tex821
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata8.tex525
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errata9.tex226
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/errorlog.tex2924
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/index.html60
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/logmac.tex107
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/mf84.bug2279
-rw-r--r--Master/texmf-doc/doc/english/knuth/errata/tex82.bug9006
-rw-r--r--Master/texmf-doc/doc/english/knuth/errorlog.tex2914
-rw-r--r--Master/texmf-doc/doc/english/knuth/expr.mf5
-rw-r--r--Master/texmf-doc/doc/english/knuth/index.html193
-rw-r--r--Master/texmf-doc/doc/english/knuth/io.mf23
-rw-r--r--Master/texmf-doc/doc/english/knuth/mfman.mf2474
-rw-r--r--Master/texmf-doc/doc/english/knuth/primes.web414
-rw-r--r--Master/texmf-doc/doc/english/knuth/story.tex18
-rw-r--r--Master/texmf-doc/doc/english/knuth/trap.mf170
-rw-r--r--Master/texmf-doc/doc/english/knuth/trap.pl490
-rw-r--r--Master/texmf-doc/doc/english/knuth/trapman.tex400
-rw-r--r--Master/texmf-doc/doc/english/knuth/trip.pl833
-rw-r--r--Master/texmf-doc/doc/english/knuth/trip.tex448
-rw-r--r--Master/texmf-doc/doc/english/knuth/tripman.tex413
-rw-r--r--Master/texmf-doc/doc/english/knuth/web.tex1477
-rw-r--r--Master/texmf-doc/doc/english/knuth/webman.tex1672
-rw-r--r--Master/texmf-doc/doc/english/l2tabu-english/l2tabuen.pdfbin0 -> 305712 bytes
-rw-r--r--Master/texmf-doc/doc/english/l2tabu-english/l2tabuen.tex1800
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/1-4-1.ltx26
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/1-4-10.pic16
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/1-4-11.pic30
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/1-4-12.ltx288
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/1-4-2.ltx12
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/1-4-3.ltx45
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/1-4-4.ltx20
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/1-4-5.ltx28
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/1-4-6.ltx21
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/1-4-7.ltx17
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/1-4-8.ltx174
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/1-4-9.pic21
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/10-1-1.ltx28
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/10-1-2.ltx48
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/10-1-3.ltx48
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/10-1-4.inl8
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/10-1-5.inl21
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/10-5-1.ltx86
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/11-3-1.ltx23
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/11-6-1.inl2
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/12-0-1.mp15
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/12-0-10.ltx46
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/12-0-11.ltx93
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/12-0-12.ltx111
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/12-0-2.mp59
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/12-0-3.mp24
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/12-0-4.mp34
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/12-0-5.ltx22
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/12-0-6.ltx16
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/12-0-7.ltx22
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/12-0-8.ltx28
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/12-0-9.ltx60
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-2-1.inl5
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-2-10.inl5
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-2-11.inl5
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-2-12.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-2-13.inl5
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-2-14.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-2-15.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-2-16.inl4
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-2-17.inl5
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-2-18.inl5
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-2-19.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-2-2.inl9
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-2-20.inl7
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-2-3.inl10
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-2-4.inl10
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-2-5.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-2-6.inl4
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-2-7.inl10
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-2-8.inl10
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-2-9.inl5
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-3-1.inl5
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-3-10.ltx21
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-3-11.ltx72
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-3-12.ltx18
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-3-13.inl7
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-3-14.ltx16
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-3-15.inl9
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-3-16.inl14
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-3-17.inl11
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-3-2.inl5
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-3-3.inl3
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-3-4.inl7
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-3-5.inl7
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-3-6.inl10
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-3-7.inl9
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-3-8.inl13
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/2-3-9.inl7
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-1-1.mp7
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-1-2.mp8
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-1-3.mp7
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-1-4.mp14
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-1-5.mp13
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-1-6.mp13
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-1-7.mp18
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-1-8.mp30
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-1-9.mp87
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-2-1.mp15
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-2-2.mp23
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-2-3.mp26
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-3-1.mp11
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-3-10.mp18
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-3-11.mp17
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-3-12.mp23
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-3-13.mp27
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-3-14.mp20
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-3-15.mp24
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-3-16.mp30
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-3-17.mp33
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-3-18.mp21
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-3-19.mp23
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-3-2.mp11
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-3-3.mp19
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-3-4.mp18
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-3-5.mp21
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-3-6.mp47
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-3-7.mp19
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-3-8.mp18
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-3-9.mp15
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-4-1.ltx21
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-4-2.ltx14
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-4-3.ltx27
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-4-4.ltx49
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-4-5.ltx17
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/3-4-6.ltx25
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-10-1.inl8
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-10-10.ltx152
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-10-11.ltx83
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-10-2.inl8
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-10-3.inl8
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-10-4.inl8
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-10-5.ltx46
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-10-6.inl11
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-10-7.ltx20
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-10-8.inl28
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-10-9.inl80
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-2-1.inl5
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-2-2.inl4
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-2-3.inl5
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-2-4.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-2-5.inl13
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-3-1.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-3-2.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-4-1.inl4
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-4-10.inl8
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-4-11.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-4-12.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-4-2.inl5
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-4-3.inl4
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-4-4.inl8
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-4-5.inl10
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-4-6.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-4-7.inl10
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-4-8.inl9
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-4-9.inl10
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-5-1.inl2
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-5-10.inl11
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-5-11.inl12
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-5-12.inl16
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-5-13.ltx50
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-5-14.ltx17
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-5-15.ltx22
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-5-16.ltx30
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-5-2.inl5
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-5-3.ltx16
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-5-4.inl7
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-5-5.inl3
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-5-6.inl5
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-5-7.inl2
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-5-8.inl5
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-5-9.inl3
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-1.inl9
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-10.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-11.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-12.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-13.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-14.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-15.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-16.inl7
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-17.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-18.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-19.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-2.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-20.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-21.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-22.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-23.inl5
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-24.inl7
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-25.inl7
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-26.ltx35
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-27.inl14
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-28.inl9
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-29.inl11
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-3.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-30.inl14
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-31.ltx19
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-32.ltx30
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-33.inl15
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-34.inl5
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-35.inl9
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-36.inl11
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-37.inl11
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-38.inl18
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-39.ltx26
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-4.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-40.ltx34
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-41.inl16
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-42.inl24
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-43.inl13
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-44.inl15
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-45.inl5
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-46.inl17
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-5.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-6.inl7
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-7.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-8.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-6-9.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-7-1.ltx18
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-7-2.ltx21
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-7-3.ltx17
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-7-4.ltx52
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-8-1.inl4
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-8-2.inl7
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-8-3.ltx17
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-8-4.ltx60
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-8-5.ltx84
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-9-1.inl4
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-9-10.ltx152
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/4-9-2.inl5
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-2-1.ltx15
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-3-1.ltx15
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-3-2.ltx17
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-3-3.ltx14
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-3-4.ltx14
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-3-5.ltx15
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-3-6.ltx14
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-3-7.ltx15
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-3-8.ltx18
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-3-9.ltx23
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-4-1.ltx21
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-4-2.ltx17
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-4-3.ltx15
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-4-4.ltx19
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-1.ltx20
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-10.ltx32
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-11.ltx14
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-12.ltx20
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-13.ltx25
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-14.ltx25
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-15.ltx15
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-16.ltx15
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-17.ltx31
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-18.ltx23
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-19.ltx23
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-2.ltx21
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-20.ltx23
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-21.ltx20
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-22.ltx22
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-23.ltx21
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-24.ltx21
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-25.ltx18
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-26.ltx23
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-27.ltx22
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-28.ltx20
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-29.ltx22
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-3.ltx19
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-30.ltx20
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-31.ltx22
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-32.ltx14
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-33.ltx25
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-34.ltx27
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-35.ltx28
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-4.ltx34
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-5.ltx21
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-6.ltx31
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-7.ltx14
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-8.ltx21
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/5-5-9.ltx27
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-1.ltx13
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-10.ltx16
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-11.ltx14
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-12.ltx12
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-13.ltx16
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-14.ltx15
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-15.ltx15
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-16.ltx15
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-17.ltx14
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-18.ltx13
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-19.ltx17
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-2.ltx17
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-20.ltx17
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-21.ltx19
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-22.ltx16
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-23.ltx19
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-24.ltx14
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-3.ltx17
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-4.ltx15
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-5.ltx18
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-6.ltx13
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-7.ltx15
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-8.ltx15
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-2-9.ltx30
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-3-1.ltx16
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-3-10.ltx14
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-3-11.ltx27
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-3-12.ltx17
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-3-13.ltx19
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-3-14.ltx19
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-3-2.ltx15
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-3-3.ltx53
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-3-4.ltx17
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-3-5.ltx18
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-3-6.ltx18
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-3-7.ltx17
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-3-8.ltx13
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-3-9.ltx15
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-4-1.ltx19
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-4-2.ltx25
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-4-3.ltx38
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-5-1.ltx34
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-6-1.ltx47
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-6-2.ltx38
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-6-3.ltx36
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-6-4.ltx33
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-6-5.ltx42
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-6-6.ltx46
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-6-7.ltx99
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-7-1.ltx90
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-7-1.m420
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-7-2.ltx80
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-7-2.m422
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-7-3.ltx75
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-7-3.m422
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-7-4.ltx169
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/6-7-4.m423
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-2-1.mx119
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-2-1.mx21
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-2-1.ptx98
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-2-2.ltx17
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-2-3.ltx19
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-2-4.ltx19
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-2-5.ltx39
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-2-6.ltx36
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-3-1.abc6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-3-2.ltx29
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-3-3.abc8
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-3-4.abc6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-3-5.abc8
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-3-6.abc6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-3-7.abc7
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-3-8.abc7
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-3-9.abc7
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-4-1.mpp7
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-4-10.mx127
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-4-10.mx21
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-4-10.ptx82
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-4-2.mpp6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-4-3.mpp5
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-4-4.mpp6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-4-5.mpp3
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-4-6.mpp8
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-4-7.mpp5
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-4-8.mpp11
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/7-4-9.mpp6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-1-1.ltx19
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-1-2.ltx22
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-1-3.ltx43
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-1-4.ltx21
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-2-1.ltx37
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-2-2.ltx18
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-2-3.ltx29
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-3-1.ltx14
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-3-2.ltx49
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-3-3.ltx26
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-4-1.ltx25
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-4-2.ltx24
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-5-1.inl9
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-6-1.inl13
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-6-2.inl8
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-6-3.inl10
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-6-4.inl4
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-6-5.inl2
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-6-6.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-6-7.inl9
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-6-8.inl8
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-7-1.acr27
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-7-1.dwn30
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-7-1.ltx90
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-7-2.ltx69
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-7-3.ltx15
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/8-7-4.ltx21
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-2-1.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-2-2.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-2-3.inl8
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-2-4.inl10
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-2-5.inl8
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-2-6.inl6
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-2-7.inl9
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-2-8.ltx26
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-2-9.ltx23
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-3-1.inl17
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-3-10.inl18
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-3-11.inl16
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-3-12.inl18
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-3-13.inl12
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-3-14.inl18
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-3-15.inl14
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-3-16.inl16
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-3-17.inl14
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-3-18.inl14
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-3-19.inl14
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-3-2.inl17
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-3-20.inl21
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-3-3.inl12
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-3-4.inl12
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-3-5.inl13
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-3-6.inl16
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-3-7.inl17
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-3-8.inl17
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/9-3-9.inl16
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/A-1-1.inl15
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/Makefile2
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/README17
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/ages.dat458
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/bar.ini19
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/chap.dat12
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/clef.ini16
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/config.ps.gzbin0 -> 384 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/decade.dat19
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/feature.ini22
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/graves.dat25
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/inputs/graphics.cfg8
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/inputs/header.tex212
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/inputs/mfpic.sty4
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/inputs/ppex.cls59
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/key.ini23
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/langs.dat16
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/langs2.dat16
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/langs3.dat16
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/macro.ini45
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/mpp.tex206
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/note.ini57
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/notecc.ini66
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/pot.dat90
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/script.ini58
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/scriptcc.ini58
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/stones.dat25
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/students.dat4
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/veracx.mx151
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/veracx.tex22
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/yearm.dat171
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/years.dat171
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/years.men171
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/years.wom171
-rw-r--r--Master/texmf-doc/doc/english/latex-graphics-companion/yearw.dat171
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apa/README.apa18
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa-raw.xml1054
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa.dtd190
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa.ltx109
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa.tex546
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa.xml171
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apa/phys332-1.eps419
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apa/phys332-2.eps556
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apa/teched.html47
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apa/teched.java187
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apb/InvitationSAX.classbin0 -> 1961 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apb/InvitationSAX.java53
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apb/MySAXApp.classbin0 -> 747 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apb/MySAXApp.java16
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apb/README.apb56
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apb/bibliotest1.xml116
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apb/bibliotest2.xml114
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apb/biblioxml1.dtd144
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apb/biblioxml2.dtd194
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apb/colorcir.eps109
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apb/inv2.tex24
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apb/invitation.sty49
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apb/invitation2.dtd15
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apb/invitation2.xml20
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apb/latexmath.dtd11
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apb/latexmml.dtd57
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apb/minilatex.dtd179
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apb/minilatex.xsl342
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apb/minilatexexa.tex120
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apb/minilatexexa.xml138
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apb/mybiblio.dtd24
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apb/utf82latin1.sh24
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apc/ISOcyr1.pen84
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apc/README.apc24
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apc/invitation.sty46
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apc/invitationfr.dtd14
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apc/invitationfr.sty46
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apc/invitationfr.tex25
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apc/invitationfr.xml30
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apc/invlat1fr.xsl67
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apc/utf8.html36
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apc/utf8.xml33
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apc/utf8.xsl36
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/apc/utf8tei.xml48
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/Makefile62
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/Makefile.ex210
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/Makefile.ex362
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/README.ch337
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/colorcir.eps109
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex20.tex25
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex21.tex27
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex22.tex29
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex2bib.tex16
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30.lof2
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30.lot2
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30.tex43
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/contents.pl30
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/ex30.css31
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/ex30.html139
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/index.html139
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/index.pl23
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/internals.pl10
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/labels.pl21
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/sections.pl36
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31.ptr9
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31.tex27
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/Timg1.gifbin0 -> 1873 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/WARNINGS1
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/contents.pl10
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/ex31.css31
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/ex31.html90
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/figure.pl1
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/images.pl16
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/images.tex136
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/img1.gifbin0 -> 10042 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/index.pl49
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/internals.pl14
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/labels.pl33
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/sections.pl11
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32.ptr9
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32.tex27
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/contents.pl10
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/ex32.css31
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/ex32.html111
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/index.pl40
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/internals.pl10
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/labels.pl29
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/sections.pl11
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/table.pl2
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex3bib.tex6
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa.lof2
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa.lot2
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa.tex62
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/images.pl18
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/images.tex132
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/img1.gifbin0 -> 6865 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/img2.gifbin0 -> 2056 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/index.html84
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/internals.pl18
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/l2hexa.css31
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/l2hexa.html84
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/labels.pl33
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node1.html88
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node2.html77
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node3.html77
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node4.html115
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node5.html128
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node6.html78
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node7.html85
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node8.html84
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/myinit.pl8
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS.css4
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS.tex54
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/WARNINGS2
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/images.pl139
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/images.tex276
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img1.gifbin0 -> 271 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img10.gifbin0 -> 485 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img11.gifbin0 -> 161 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img12.gifbin0 -> 160 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img13.gifbin0 -> 527 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img14.gifbin0 -> 354 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img15.gifbin0 -> 346 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img16.gifbin0 -> 342 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img17.gifbin0 -> 232 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img18.gifbin0 -> 237 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img19.gifbin0 -> 1265 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img2.gifbin0 -> 73 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img20.gifbin0 -> 1940 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img21.gifbin0 -> 4526 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img3.gifbin0 -> 1067 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img4.gifbin0 -> 219 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img5.gifbin0 -> 138 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img6.gifbin0 -> 678 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img7.gifbin0 -> 135 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img8.gifbin0 -> 857 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img9.gifbin0 -> 154 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/index.html279
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/internals.pl30
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/labels.pl61
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/node1.html72
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/sampleAMS.css31
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/sampleAMS.html279
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath.tex54
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/WARNINGS2
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/images.pl132
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/images.tex254
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img1.gifbin0 -> 271 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img10.gifbin0 -> 161 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img11.gifbin0 -> 779 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img12.gifbin0 -> 160 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img13.gifbin0 -> 527 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img14.gifbin0 -> 354 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img15.gifbin0 -> 346 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img16.gifbin0 -> 342 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img17.gifbin0 -> 232 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img18.gifbin0 -> 237 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img19.gifbin0 -> 1265 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img2.gifbin0 -> 73 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img20.gifbin0 -> 1940 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img3.gifbin0 -> 1286 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img4.gifbin0 -> 138 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img5.gifbin0 -> 675 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img6.gifbin0 -> 135 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img7.gifbin0 -> 855 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img8.gifbin0 -> 154 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img9.gifbin0 -> 490 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/index.html235
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/internals.pl14
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/labels.pl29
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/node1.html72
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/sampleMath.css31
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/sampleMath.html235
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages.tex64
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/WARNINGS4
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/images.pl66
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/images.tex213
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img1.gifbin0 -> 4314 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img2.gifbin0 -> 160 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img3.gifbin0 -> 527 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img4.gifbin0 -> 354 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img5.gifbin0 -> 346 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img6.gifbin0 -> 342 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img7.gifbin0 -> 232 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img8.gifbin0 -> 3312 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img9.gifbin0 -> 50 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/index.html169
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/internals.pl30
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/labels.pl61
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/node1.html73
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/sampleMathImages.css31
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/sampleMathImages.html169
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb.tex64
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/Timg8.gifbin0 -> 630 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/Timg9.gifbin0 -> 35 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/WARNINGS2
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/images.pl68
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/images.tex213
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img1.gifbin0 -> 4314 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img2.gifbin0 -> 160 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img3.gifbin0 -> 527 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img4.gifbin0 -> 354 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img5.gifbin0 -> 346 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img6.gifbin0 -> 342 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img7.gifbin0 -> 232 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img8.gifbin0 -> 3304 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img9.gifbin0 -> 42 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/index.html171
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/internals.pl30
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/labels.pl61
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/node1.html73
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/sampleMathThumb.css31
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/sampleMathThumb.html171
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/ch3bis/tac2dim.eps201
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/intro/lwc.eepic95
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/intro/lwc.fig103
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2html/Makefile.ex210
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2html/Makefile.ex362
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2html/README.ch372
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2html/colorcir.eps109
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex20.tex25
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex21.tex27
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex22.tex29
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex2bib.tex16
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex30.tex43
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex31.tex27
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex32.tex27
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex3bib.tex6
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2html/l2hexa.tex62
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2html/myinit.pl8
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleAMS.css4
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleAMS.tex54
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleMath.tex54
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleMathImages.tex64
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleMathThumb.tex64
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2html/tac2dim.eps201
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/amaya.mml104
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsae.dtd259
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsbe.dtd183
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsce.dtd43
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsne.dtd187
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsoe.dtd77
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsre.dtd304
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isogrk3e.dtd55
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isomfrke.dtd63
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isomopfe.dtd37
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isomscre.dtd63
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isonume.dtd86
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoteche.dtd238
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/l2xdemo.cfg41
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/l2xdemo.tex29
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/l2xdemo.xml40
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/l2xmath.cfg31
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mathml.dsl1346
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mathml.dtd924
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mathmltools.dsl97
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mathmlx.dsl181
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mmaliase.dtd78
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mmlent.dtd114
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mtdemo.tex10
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/stix.mml66
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/techexpl.mml100
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/test.dtd62
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/test.xml16
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/tmp.tmp2
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try.cfg11
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try2.cfg18
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try3.cfg8
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try4.cfg14
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try5.cfg16
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/webeq.mml111
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/latex2xml/xml.dcl179
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xml/README.ch626
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xml/catalog2
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xml/emptyexample.xml15
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xml/invitation.dtd14
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xml/invitation.xml30
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xml/wrong.xml15
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xml/xml.dcl179
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/README.ch7124
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS.pm893
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/Output.pm225
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/Refs.pm216
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/SGMLS.pm893
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog5
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog.dsssl4
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog.xml2
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/dsssl.cat3
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/dsssl.dtd134
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/empty.dsl8
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/empty.xsl2
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/emptyexample.xml15
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/entable-alt.xml243
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/entable.xml2639
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/fot.dtd507
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/frisotab1exa1.xsl17
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/frisotab1exa2.xsl48
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv1html.pl61
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2css.html.save44
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2html.pl61
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2lat.pl76
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv3.xml21
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invcss.html.save44
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfo1.fo4
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfo1.xsl118
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfop.pdf247
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invhtml.dsl90
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invhtml2.xsl42
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invit.css31
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.dsl66
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.dtd12
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.sty30
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.tex.save27
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.xml24
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation1.tex22
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.dtd15
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.html39
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.xml21
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitationfr.sty49
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invlat1.xsl66
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invptex.pdfbin0 -> 4618 bytes
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invtab1.dsl82
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invtab2.dsl75
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotab1to2-bis.xsl22
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotab1to2.xsl42
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotabexa1.xsl20
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotabexa2.xsl73
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sectionexa.xml22
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sectionexa.xsl73
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sgmlspl.pl317
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/skel.pl178
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/style-sheet.dtd41
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatest.xml3
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatest.xsl41
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatestnok.xsl41
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatestok.xsl31
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/test-SGMLS.pl13
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/writefiles.xml9
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/wrong.xml15
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/xml.dcl179
-rw-r--r--Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/xslexa1.xsl20
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/LaTeX-info.html47
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/baselineskip.html31
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/boldmath.html42
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/caption.html19
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/declarations.html51
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ellipses.html23
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/emph.html24
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ensuremath.html23
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/externals.html189
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/fonts2e.html51
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/fragile.html59
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/frenchsp.html16
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/index.html98
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/input.html95
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/item.html30
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/lefteqn.html41
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/lists.html58
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-111.html25
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-115.html82
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-117.html45
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-118.html25
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-119.html39
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-13.html62
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-130.html67
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-131.html24
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-137.html30
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-138.html31
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-140.html20
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-141.html70
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-142.html19
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-143.html149
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-164.html68
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-165.html24
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-169.html26
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-17.html51
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-170.html41
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-171.html32
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-172.html24
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-173.html18
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-174.html25
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-175.html22
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-176.html26
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-177.html55
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-178.html44
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-179.html35
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-18.html88
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-180.html40
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-181.html27
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-182.html26
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-183.html17
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-184.html17
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-185.html17
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-186.html17
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-187.html20
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-188.html16
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-189.html17
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-19.html50
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-190.html17
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-191.html28
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-192.html30
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-195.html20
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-198.html23
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-199.html22
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-2.html328
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-20.html35
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-200.html44
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-201.html18
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-202.html68
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-203.html34
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-204.html20
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-205.html42
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-206.html17
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-207.html26
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-21.html20
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-210.html18
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-211.html32
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-212.html18
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-213.html16
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-214.html28
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-216.html22
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-217.html22
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-218.html25
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-22.html46
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-220.html17
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-221.html19
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-222.html52
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-223.html50
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-224.html35
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-225.html45
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-226.html26
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-227.html17
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-228.html29
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-229.html27
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-230.html26
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-231.html31
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-232.html28
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-233.html16
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-234.html31
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-235.html21
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-236.html21
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-237.html37
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-238.html18
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-239.html27
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-240.html16
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-241.html27
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-242.html15
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-243.html14
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-244.html30
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-245.html31
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-246.html18
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-247.html19
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-248.html21
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-249.html18
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-250.html41
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-251.html22
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-252.html48
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-253.html15
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-254.html16
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-255.html14
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-256.html25
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-257.html29
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-258.html25
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-259.html20
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-260.html95
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-261.html17
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-262.html62
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-263.html33
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-264.html33
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-265.html35
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-266.html17
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-267.html52
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-268.html42
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-269.html19
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-27.html65
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-271.html22
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-275.html17
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-276.html15
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-277.html25
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-279.html19
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-280.html18
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-281.html22
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-282.html17
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-283.html21
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-284.html18
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-286.html23
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-287.html29
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-288.html26
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-289.html22
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-29.html28
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-291.html22
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-293.html17
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-294.html35
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-296.html30
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-297.html26
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-298.html25
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-299.html17
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-3.html88
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-30.html42
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-300.html25
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-301.html25
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-302.html33
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-303.html27
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-304.html21
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-305.html21
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-306.html37
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-307.html35
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-308.html20
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-309.html14
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-31.html32
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-310.html20
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-311.html29
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-312.html23
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-313.html18
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-314.html25
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-315.html21
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-316.html18
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-317.html15
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-318.html21
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-319.html23
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-323.html19
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-324.html30
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-328.html16
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-329.html24
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-330.html16
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-331.html20
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-332.html18
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-335.html28
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-336.html28
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-337.html23
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-338.html22
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-339.html27
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-340.html25
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-341.html31
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-342.html39
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-345.html20
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-346.html17
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-347.html29
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-37.html24
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-39.html25
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-401.html96
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-402.html41
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-403.html116
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-404.html75
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-405.html72
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-406.html58
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-407.html90
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-408.html79
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-409.html76
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-420.html26
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-421.html54
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-43.html107
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-430.html25
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-431.html47
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-432.html27
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-433.html26
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-434.html30
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-58.html60
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-67.html49
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-68.html149
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-73.html78
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-77.html21
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-78.html29
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-79.html43
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-81.html20
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-82.html31
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-86.html111
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-87.html21
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-88.html22
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-89.html27
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-90.html21
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-91.html78
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-93.html22
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-97.html20
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-98.html23
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-99.html40
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/ltx-tar.html102
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/mathfonts.html87
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/mirror.html125
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/parskip.html27
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/refs.html53
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/stackrel.html90
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/textwidth.html21
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/toc.html26
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/trivlist.html30
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/unitlength.html24
-rw-r--r--Master/texmf-doc/doc/english/latex2e-html/versions.html83
-rw-r--r--Master/texmf-doc/doc/english/lshort-english/CHANGES401
-rw-r--r--Master/texmf-doc/doc/english/lshort-english/README76
-rw-r--r--Master/texmf-doc/doc/english/lshort-english/lshort-4.17.src.tar.gzbin0 -> 201487 bytes
-rw-r--r--Master/texmf-doc/doc/english/lshort-english/lshort.pdfbin0 -> 1807090 bytes
1105 files changed, 122247 insertions, 0 deletions
diff --git a/Master/texmf-doc/doc/english/impatient/Makefile b/Master/texmf-doc/doc/english/impatient/Makefile
new file mode 100644
index 00000000000..63c0d7841ce
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/Makefile
@@ -0,0 +1,15 @@
+# public domain
+all: book.dvi book.pdf #book.html
+
+book.dvi: fdl.tex preface.tex
+ tex '\nonstopmode\input book'
+book.pdf: fdl.tex preface.tex
+ pdftex '\nonstopmode\input book'
+book.html:
+ httex book.tex
+
+dist: all
+ rm -f x.tex
+ tar czf impatient.tgz Makefile README *.icn \
+ *.tex book.aux book.idx book.toc book.ccs book.sdx \
+ book.dvi book.pdf
diff --git a/Master/texmf-doc/doc/english/impatient/README b/Master/texmf-doc/doc/english/impatient/README
new file mode 100644
index 00000000000..94afe54d034
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/README
@@ -0,0 +1,36 @@
+This is the README file for version 1.0 of the free edition of the book
+TeX for the Impatient, released under the GNU Free Documentation License.
+(This README file itself is public domain.)
+
+Primary distribution point:
+ ftp://tug.org/tex/impatient
+ aka http://tug.org/ftp/tex/impatient/
+It will also be available from CTAN.
+
+Information about the free edition is included at the end of the preface
+and on the copyright page.
+
+We'd be interested in hearing about any projects undertaken with this
+material. See errata.future for some relatively small ideas for
+enhancements.
+
+TeX for the Impatient is now a GNU project, and the development sources,
+contact information, and other project details are available at
+http://savannah.gnu.org/projects/teximpatient.
+
+Some random thoughts for people thinking of working with the source:
+
+- You may want to translate the source into some more standard format; we
+used many homegrown macros to make typing and markup easier.
+
+- You may also want to redo the index creation to use makeindex or some
+other standard program, instead of our homegrown Icon programs. Until the
+index can be easily regenerated, the page breaks can't change without
+the index becoming useless.
+
+- Printing the GFDL required many kludges, a true Eplain-compatible
+version is needed (which in turn would require using the current eplain
+to print the book).
+
+
+Happy TeX'ing.
diff --git a/Master/texmf-doc/doc/english/impatient/backm.tex b/Master/texmf-doc/doc/english/impatient/backm.tex
new file mode 100644
index 00000000000..11d1502718f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/backm.tex
@@ -0,0 +1,92 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+% See file fdl.tex for copying conditions.
+%
+% Backmatter.
+
+\input macros
+
+\ifcompletebook
+ \noheadlinetrue\pagebreak
+ \ifodd\pageno\else \noheadlinetrue\pagebreak \fi
+\fi
+
+\edgetabsfalse
+
+% About the authors.
+%
+\backsinkage
+\leftline{\sectionfonts About the authors}
+\vskip\belowsectionskip
+
+\noindent Paul W. Abrahams, Sc.D., CCP, is a consulting computer
+scientist and a past president of the Association for Computing
+Machinery. His specialties are programming languages, software systems
+design and implementation, and technical writing. He received his
+doctorate from the Massachusetts Institute of Technology in 1963 in
+mathematics, studying artificial intelligence under Marvin Minsky and
+John McCarthy. He is one of the designers of the first {\sc LISP}
+system and the designer of the {\sc CIMS PL/I} system, developed when he
+was a professor at New York University. More recently, he has designed
+{\sc SPLASH}, a Systems Programming LAnguage for Software Hackers. Paul
+resides in Deerfield, Massachusetts, where he writes, hacks, hikes,
+hunts wild mushrooms, and listens to classical music.
+
+Kathryn A. Hargreaves received her M.S. degree in computer science from
+the University of Massachusetts, Boston, in August 1989. Her
+specialities are digital typography and human vision. She developed a
+set of programs to produce high-quality, freely distributable digital
+type for the Free Software Foundation and also worked with
+Robert~A. Morris as an Adjunct Research Associate. In 1986 she completed
+the Reentry Program in Computer Science for Women and Minorities at the
+University of California at Berkeley, where she also worked in the \TeX\
+research group under Michael Harrison. She has studied letterform design
+with Don Adleta, Andr\'e G\"urtler, and Christian Mengelt at the Rhode
+Island School of Design. A journeyman typographer, she has worked at
+Headliners\slash Identicolor, San Francisco, and Future Studio, Los
+Angeles, two leading typographical firms. She also holds an M.F.A. in
+Painting\slash Sculpture\slash Graphic Arts from the University of
+California at Los Angeles. Kathy paints watercolors, designs
+letterforms, plays piano, and reads feminist film criticism.
+
+Like Kathy, Karl Berry received his M.S. degree in computer science from
+the University of Massachusetts, Boston, in August 1989. He also
+worked for the Free Software Foundation, did research with Morris,
+and has studied with Adleta, G\"urtler, and Mengelt. He has been
+working with \TeX\ since 1983 and has installed and maintained the \TeX\
+system at a number of universities. He was the maintainer of the Web2c
+system developed by Tim Morgan for a number of years, among other \TeX\
+projects. He became the president of the \TeX\ Users Group in 2003.
+
+\noheadlinetrue\pagebreak
+
+
+% Colophon.
+%
+\backsinkage
+\leftline{\sectionfonts Colophon}
+\vskip\belowsectionskip
+
+\noindent This book was composed using \TeX\ (of course), developed by
+Donald~E. Knuth. The main text is set in Computer Modern, also designed
+by Knuth. The heads of the original book were set in Zapf Humanist (the
+Bitstream version of Optima), designed by Hermann Zapf.
+
+The paper was Amherst Ultra Matte 45 lb. The printing and binding were
+done by Arcadia Graphics-Halliday. The phototypeset output was produced
+at Type 2000,~Inc., in Mill Valley, California. Proofs were made on an
+Apple LaserWriter Plus and on a Hewlett Packard LaserJet~II\null.
+
+Cross-referencing, indexing, and the table of contents were done
+mechanically, using the macros of \chapterref{eplain} together with
+additional macros custom-written for this book. The production of the
+index was supported by an additional program written in Icon.
+
+
+\noheadlinetrue
+\iftrue
+ \pagebreak
+ \printconceptpage
+\fi
+
+\byebye
diff --git a/Master/texmf-doc/doc/english/impatient/book.ccs b/Master/texmf-doc/doc/english/impatient/book.ccs
new file mode 100644
index 00000000000..6a8a3412257
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/book.ccs
@@ -0,0 +1,94 @@
+\doconcept{active character}{43}
+\doconcept{alignment}{44}
+\doconcept{anatomy of T\kern -.1667em\lower .5ex\hbox {E}\kern -.125emX\hbox {}\hbox {}}{46}
+\doconcept{argument}{48}
+\doconcept{ASCII}{49}
+\doconcept{assignment}{49}
+\doconcept{badness}{50}
+\doconcept{baseline}{51}
+\doconcept{box}{51}
+\doconcept{category code}{53}
+\doconcept{character}{55}
+\doconcept{class}{56}
+\doconcept{command}{56}
+\doconcept{conditional test}{57}
+\doconcept{control sequence}{57}
+\doconcept{control symbol}{58}
+\doconcept{control word}{58}
+\doconcept{decimal constant}{58}
+\doconcept{delimiter}{58}
+\doconcept{demerits}{60}
+\doconcept{depth}{60}
+\doconcept{dimension}{60}
+\doconcept{display math}{61}
+\doconcept{escape character}{61}
+\doconcept{family}{62}
+\doconcept{file}{62}
+\doconcept{file name}{63}
+\doconcept{font}{64}
+\doconcept{footer}{65}
+\doconcept{format file}{65}
+\doconcept{global}{65}
+\doconcept{glue}{66}
+\doconcept{group}{68}
+\doconcept{hbox}{69}
+\doconcept{header}{69}
+\doconcept{height}{69}
+\doconcept{horizontal list}{69}
+\doconcept{horizontal mode}{69}
+\doconcept{hyphenation}{70}
+\doconcept{input stream}{70}
+\doconcept{insertion}{70}
+\doconcept{interline glue}{70}
+\doconcept{item}{71}
+\doconcept{justified text}{71}
+\doconcept{kern}{71}
+\doconcept{leaders}{72}
+\doconcept{ligature}{73}
+\doconcept{line break}{74}
+\doconcept{list}{75}
+\doconcept{log file}{75}
+\doconcept{macro}{75}
+\doconcept{magnification}{78}
+\doconcept{margins}{79}
+\doconcept{mark}{79}
+\doconcept{math mode}{80}
+\doconcept{mathcode}{80}
+\doconcept{mathematical unit}{81}
+\doconcept{mode}{81}
+\doconcept{muglue}{82}
+\doconcept{number}{82}
+\doconcept{ordinary mode}{83}
+\doconcept{outer}{83}
+\doconcept{output routine}{83}
+\doconcept{output stream}{84}
+\doconcept{page}{84}
+\doconcept{page break}{85}
+\doconcept{page builder}{86}
+\doconcept{page layout}{86}
+\doconcept{paragraph}{86}
+\doconcept{parameter}{87}
+\doconcept{penalty}{88}
+\doconcept{plain T\kern -.1667em\lower .5ex\hbox {E}\kern -.125emX\hbox {}\hbox {}}{88}
+\doconcept{primitive}{88}
+\doconcept{reference point}{88}
+\doconcept{register}{89}
+\doconcept{restricted mode}{90}
+\doconcept{rule}{90}
+\doconcept{script size}{91}
+\doconcept{scriptscript size}{91}
+\doconcept{shrink}{91}
+\doconcept{space}{91}
+\doconcept{stretch}{92}
+\doconcept{strut}{92}
+\doconcept{style}{92}
+\doconcept{T\kern -.1667em\lower .5ex\hbox {E}\kern -.125emX\hbox {}\hbox {}\ M\kern -.11em\lower .5ex\hbox {E}\kern -.125em X\hbox {}}{93}
+\doconcept{text math}{93}
+\doconcept{text size}{93}
+\doconcept{token}{93}
+\doconcept{unit of measure}{93}
+\doconcept{vbox}{94}
+\doconcept{vertical list}{94}
+\doconcept{vertical mode}{94}
+\doconcept{whatsit}{94}
+\doconcept{width}{95}
diff --git a/Master/texmf-doc/doc/english/impatient/book.pdf b/Master/texmf-doc/doc/english/impatient/book.pdf
new file mode 100644
index 00000000000..988068a123e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/book.pdf
Binary files differ
diff --git a/Master/texmf-doc/doc/english/impatient/book.sdx b/Master/texmf-doc/doc/english/impatient/book.sdx
new file mode 100644
index 00000000000..c78157987a5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/book.sdx
@@ -0,0 +1,1691 @@
+\indexgroup +
+\indexentry {0}{\visiblespace}{T}{\ic \pp{3}\c 53}
+\indexentry {0}{\visiblespace}{C}{\ic 104\c 105\c 313}
+\indexentry {0}{\char `\!}{T}{\ic 13}
+\indexentry {0}{\char `\!}{C}{\ic \pp{214}\c 313}
+\indexentry {0}{\char `\"}{C}{\ic \pp{100}\c 313}
+\indexentry {0}{\char `\#}{T}{\ic 26\c \pp{45}\c \pp{75}\c 314}
+\indexentry {1}{category code of}{N}{\ic 53}
+\indexentry {1}{in ordinary text}{N}{\ic 15}
+\indexentry {0}{\char `\#}{C}{\ic 15\c \pp{98}\c 314}
+\indexentry {0}{\char `\$}{T}{\ic 16\c 26\c 93\c 314}
+\indexentry {1}{category code of}{N}{\ic 53}
+\indexentry {1}{in ordinary text}{N}{\ic 15}
+\indexentry {0}{\char `\$}{C}{\ic 15\c \pp{98}\c 314}
+\indexentry {0}{\$\$}{T}{\ic 16\c 61}
+\indexentry {0}{\char `\%}{T}{\ic 13\c 26\c 314}
+\indexentry {1}{category code of}{N}{\ic 53}
+\indexentry {1}{in ordinary text}{N}{\ic 15}
+\indexentry {1}{to eliminate unwanted spaces}{N}{\ic 270}
+\indexentry {1}{writing out}{N}{\ic 292}
+\indexentry {0}{\char `\%}{C}{\ic 15\c \pp{98}\c 314}
+\indexentry {0}{\char `\&}{T}{\ic 26\c 44\c 45\c 314}
+\indexentry {1}{category code of}{N}{\ic 53}
+\indexentry {1}{in ordinary text}{N}{\ic 15}
+\indexentry {0}{\char `\&}{C}{\ic 15\c \pp{98}\c 314}
+\indexentry {0}{\char `\'}{T}{\ic \pp{188}\c 314}
+\indexentry {0}{\char `\'}{C}{\ic \pp{100}\c 314}
+\indexentry {0}{\char `\)}{T}{\ic 59}
+\indexentry {0}{\char `\*}{C}{\ic \pp{190}\c 314}
+\indexentry {0}{\char `\+}{C}{\ic 44--45\c \pp{176}\c 314}
+\indexentry {0}{\char `\,}{C}{\ic \pp{214}\c 314}
+\indexentry {0}{\char `\-}{T}{\ic 14}
+\indexentry {1}{leads to {\tt\\hyphenpenalty}}{N}{\ic 125}
+\indexentry {0}{\char `\-}{C}{\ic 70\c \pp{126}\c 314}
+\indexentry {1}{in line breaking}{N}{\ic 74\c 268}
+\indexentry {0}{--}{T}{\ic 14}
+\indexentry {0}{---}{T}{\ic 14}
+\indexentry {0}{\char `\.}{T}{\ic 13}
+\indexentry {0}{\char `\.}{C}{\ic \pp{100}\c 314}
+\indexentry {0}{\char `\/}{T}{\ic 59}
+\indexentry {0}{\char `\/}{C}{\ic \pp{106}\c 314}
+\indexentry {0}{\char `\;}{C}{\ic \pp{214}\c 314}
+\indexentry {0}{\char `\=}{T}{\ic 191}
+\indexentry {0}{\char `\=}{C}{\ic \pp{100}\c 314}
+\indexentry {0}{\char `\>}{C}{\ic \pp{214}\c 314}
+\indexentry {0}{\char `\?}{T}{\ic 13}
+\indexentry {0}{\char `\[}{T}{\ic 59}
+\indexentry {0}{\char `\\}{T}{\ic 26\c 57\c 61\c 314}
+\indexentry {1}{category code of}{N}{\ic 53}
+\indexentry {1}{in ordinary text}{N}{\ic 15}
+\indexentry {0}{\char `\]}{T}{\ic 59}
+\indexentry {0}{\char `\^}{T}{\ic 26\c \pp{197}\c 314}
+\indexentry {1}{category code of}{N}{\ic 53}
+\indexentry {1}{in ordinary text}{N}{\ic 15}
+\indexentry {0}{\char `\^}{C}{\ic \pp{100}\c 314}
+\indexentry {0}{\twocarets ?}{T}{\ic 53}
+\indexentry {0}{\twocarets @}{T}{\ic 53}
+\indexentry {0}{\twocarets A}{T}{\ic 53\c 54}
+\indexentry {0}{\twocarets I}{T}{\ic 53\c 55}
+\indexentry {0}{\twocarets J}{T}{\ic 55}
+\indexentry {0}{\twocarets K}{T}{\ic 53\c 54}
+\indexentry {0}{\twocarets L}{T}{\ic 53\c 292\c 314}
+\indexentry {0}{\twocarets M}{T}{\ic 55\c \pp{105}\c 291\c 314}
+\indexentry {1}{category code of}{N}{\ic 53}
+\indexentry {0}{\char `\_}{T}{\ic 26\c \pp{197}\c 314}
+\indexentry {1}{category code of}{N}{\ic 53}
+\indexentry {1}{in ordinary text}{N}{\ic 15}
+\indexentry {0}{\char `\_}{C}{\ic 15\c \pp{98}\c 314}
+\indexentry {0}{\char `\`}{C}{\ic \pp{100}\c 314}
+\indexentry {0}{\char `\{}{T}{\ic 26\c \pp{227}\c 314}
+\indexentry {1}{category code of}{N}{\ic 53}
+\indexentry {1}{in ordinary text}{N}{\ic 15}
+\indexentry {1}{starting a group}{N}{\ic 15\c 68}
+\indexentry {1}{with {\tt\\expandafter}}{N}{\ic 233}
+\indexentry {0}{\char `\{}{C}{\ic 59\c \pp{191}\c 314}
+\indexentry {0}{\char `\|}{T}{\ic 189}
+\indexentry {0}{\char `\|}{C}{\ic \pp{188}\c 314}
+\indexentry {0}{\char `\}}{T}{\ic 26\c \pp{227}\c 314}
+\indexentry {1}{category code of}{N}{\ic 53}
+\indexentry {1}{ending a group}{N}{\ic 15\c 68}
+\indexentry {1}{in ordinary text}{N}{\ic 15}
+\indexentry {0}{\char `\}}{C}{\ic 59\c \pp{191}\c 314}
+\indexentry {0}{\char `\~}{T}{\ic 13\c 26\c 53\c \pp{105}\c 268\c 314}
+\indexentry {1}{in line breaking}{N}{\ic 74}
+\indexentry {1}{in ordinary text}{N}{\ic 15}
+\indexentry {0}{\char `\~}{C}{\ic \pp{100}\c 314}
+\indexgroup A
+\secondprinting{\vskip\baselineskip}
+\indexentry {0}{aa}{C}{\ic \pp{97}\c 314}
+\indexentry {0}{AA}{C}{\ic \pp{97}\c 314}
+\indexentry {0}{above}{C}{\ic \pp{200}\c 314}
+\indexentry {0}{abovecolumnspenalty}{C}{\ic \pp{308}}
+\indexentry {0}{abovedisplayshortskip}{C}{\ic \pp{217}\c 271\c 314}
+\indexentry {0}{abovedisplayskip}{C}{\ic \pp{217}\c 271\c 315}
+\indexentry {0}{abovewithdelims}{T}{\ic 58}
+\indexentry {0}{abovewithdelims}{C}{\ic \pp{201}\c 315}
+\indexentry {0}{accent}{C}{\ic \pp{100}\c 315}
+\indexentry {0}{accents}{N}{\ic 26\c 100\c 199}
+\indexentry {1}{aligning}{N}{\ic 212--213}
+\indexentry {0}{active}{C}{\ic 43\c \pp{251}\c 315}
+\indexentry {0}{active characters}{N}{\ic \pp{43--44}\c 53\c 54}
+\indexentry {0}{acute}{C}{\ic \pp{199}\c 315}
+\indexentry {0}{acute accent}{N}{\ic 100\c 199}
+\indexentry {0}{adjdemerits}{C}{\ic \pp{125}\c 315}
+\indexentry {0}{advance}{C}{\ic \pp{245}\c 315}
+\indexentry {0}{advancepageno}{C}{\ic \pp{142}\c 315}
+\indexentry {0}{ae}{C}{\ic \pp{97}\c 315}
+\indexentry {0}{AE}{C}{\ic \pp{97}\c 315}
+\indexentry {0}{afterassignment}{C}{\ic \pp{229}\c 315}
+\indexentry {0}{aftergroup}{C}{\ic \pp{229}\c 307\c 315}
+\indexentry {0}{aleph}{C}{\ic \pp{188}\c 315}
+\indexentry {0}{alignments}{N}{\ic \pp{44--46}}
+\indexentry {1}{commands for}{N}{\ic 176--185}
+\indexentry {1}{outer control sequence in}{N}{\ic 279}
+\indexentry {1}{space between rows of}{N}{\ic 135}
+\indexentry {1}{tab character for}{N}{\ic 53}
+\indexentry {1}{using \b\tt\\offinterlineskip\e\ in}{N}{\ic 135}
+\indexentry {0}{allowbreak}{C}{\ic \pp{121}\c \pp{136}\c 315}
+\indexentry {0}{alpha}{C}{\ic \pp{187}\c 315}
+\indexentry {0}{amalg}{C}{\ic \pp{189}\c 315}
+\indexentry {0}{\AMSTeX}{N}{\ic \r8\c 18}
+\indexentry {0}{AMSTeX}{C}{\ic \pp{294}}
+\indexentry {0}{\anatomy}{N}{\ic 16\c \pp{46--47}}
+\indexentry {0}{angle}{C}{\ic \pp{188}\c 315}
+\indexentry {0}{approx}{C}{\ic \pp{190}\c 191\c 315}
+\indexentry {0}{arccos}{C}{\ic \pp{193}\c 315}
+\indexentry {0}{arcsin}{C}{\ic \pp{193}\c 315}
+\indexentry {0}{arctan}{C}{\ic \pp{193}\c 315}
+\indexentry {0}{arg}{C}{\ic \pp{193}\c 315}
+\indexentry {0}{\<argument>}{N}{\ic 4}
+\indexentry {0}{arguments}{N}{\ic 4\c 11\c \pp{48--49}}
+\indexentry {0}{arithmetic}{N}{\ic 245--246}
+\indexentry {0}{arrows}{N}{\ic 175\c 192--193\c 202}
+\indexentry {0}{arrowvert}{C}{\ic \pp{212}\c 315}
+\indexentry {0}{Arrowvert}{C}{\ic \pp{212}\c 315}
+\indexentry {0}{\ascii}{N}{\ic \pp{49} \c 53\c 55\c 64}
+\indexentry {0}{assignments}{N}{\ic \pp{49--50}\c 87}
+\indexentry {1}{of boxes}{N}{\ic 164}
+\indexentry {1}{of registers}{N}{\ic 242}
+\indexentry {0}{ast}{C}{\ic \pp{189}\c 315}
+\indexentry {0}{asymp}{C}{\ic \pp{190}\c 191\c 315}
+\indexentry {0}{atop}{C}{\ic \pp{200}\c 315}
+\indexentry {0}{atopwithdelims}{C}{\ic 58\c \pp{201}\c 315}
+\indexentry {0}{auxiliary files}{N}{\ic 226}
+\indexentry {0}{axis}{N}{\ic 213}
+\indexgroup B
+\indexentry {0}{\char `\b}{C}{\ic \pp{199}\c 315}
+\indexentry {0}{backslash}{N}{\ic 227}
+\indexentry {0}{backslash}{C}{\ic 59\c \pp{188}\c 315}
+\indexentry {0}{badness}{N}{\ic \pp{50}\c 60}
+\indexentry {0}{badness}{C}{\ic 18\c \pp{170}\c 315}
+\indexentry {0}{bar}{C}{\ic \pp{199}\c 316}
+\indexentry {0}{bar accent}{N}{\ic 199}
+\indexentry {0}{bar-under accent}{N}{\ic 199}
+\indexentry {0}{baselines}{N}{\ic 28\c \pp{51}\c 88}
+\indexentry {0}{baselineskip}{C}{\ic 70\c \pp{133--134}\c 135\c 316}
+\indexentry {1}{and {\tt\\smallskipamount}, etc.}{N}{\ic 155}
+\indexentry {1}{and preserving end of page}{N}{\ic 267}
+\indexentry {0}{batchmode}{C}{\ic \pp{253}\c 316}
+\indexentry {0}{begingroup}{C}{\ic \pp{227}\c 316}
+\indexentry {0}{beginsection}{C}{\ic \pp{129}\c 316}
+\indexentry {0}{belowdisplayshortskip}{C}{\ic \pp{217}\c 316}
+\indexentry {0}{belowdisplayskip}{C}{\ic \pp{217}\c 316}
+\indexentry {0}{beta}{N}{\ic 188}
+\indexentry {0}{beta}{C}{\ic \pp{187}\c 316}
+\indexentry {0}{bf}{C}{\ic \pp{103}\c 316}
+\indexentry {0}{bffam}{C}{\ic \pp{210}\c 316}
+\indexentry {0}{bgroup}{C}{\ic \pp{227}\c 316}
+\indexentry {0}{bibliographies}{N}{\ic 14}
+\indexentry {0}{\BibTeX}{N}{\ic 19}
+\indexentry {0}{BibTeX}{C}{\ic \pp{294}}
+\indexentry {0}{big}{C}{\ic \pp{211}\c 316}
+\indexentry {0}{Big}{C}{\ic \pp{211}\c 316}
+\indexentry {0}{bigbreak}{C}{\ic \pp{137}\c 316}
+\indexentry {0}{bigcap}{C}{\ic \pp{194}\c 316}
+\indexentry {0}{bigcirc}{C}{\ic \pp{189}\c 316}
+\indexentry {0}{bigcup}{C}{\ic \pp{194}\c 316}
+\indexentry {0}{bigg}{C}{\ic \pp{211}\c 316}
+\indexentry {0}{Bigg}{C}{\ic \pp{211}\c 316}
+\indexentry {0}{biggl}{C}{\ic \pp{211}\c 316}
+\indexentry {0}{Biggl}{C}{\ic \pp{211}\c 316}
+\indexentry {0}{biggm}{C}{\ic \pp{211}\c 316}
+\indexentry {0}{Biggm}{C}{\ic \pp{211}\c 316}
+\indexentry {0}{biggr}{C}{\ic \pp{211}\c 316}
+\indexentry {0}{Biggr}{C}{\ic \pp{211}\c 316}
+\indexentry {0}{bigl}{C}{\ic 58\c \pp{211}\c 316}
+\indexentry {0}{Bigl}{C}{\ic \pp{211}\c 316}
+\indexentry {0}{bigm}{C}{\ic 189\c \pp{211}\c 316}
+\indexentry {0}{Bigm}{C}{\ic \pp{211}\c 316}
+\indexentry {0}{bigodot}{C}{\ic \pp{194}\c 316}
+\indexentry {0}{bigoplus}{C}{\ic \pp{194}\c 316}
+\indexentry {0}{bigotimes}{C}{\ic \pp{194}\c 316}
+\indexentry {0}{bigr}{C}{\ic 58\c \pp{211}\c 316}
+\indexentry {0}{Bigr}{C}{\ic \pp{211}\c 316}
+\indexentry {0}{bigskip}{C}{\ic 137\c \pp{154}\c 317}
+\indexentry {0}{bigskipamount}{C}{\ic \pp{155}\c 317}
+\indexentry {0}{bigsqcup}{C}{\ic \pp{194}\c 317}
+\indexentry {0}{bigtriangledown}{C}{\ic \pp{189}\c 317}
+\indexentry {0}{bigtriangleup}{C}{\ic \pp{189}\c 317}
+\indexentry {0}{biguplus}{C}{\ic \pp{194}\c 317}
+\indexentry {0}{bigvee}{C}{\ic \pp{194}\c 317}
+\indexentry {0}{bigwedge}{C}{\ic \pp{194}\c 317}
+\indexentry {0}{binoppenalty}{C}{\ic \pp{126}\c 317}
+\indexentry {0}{blackbox}{C}{\ic \pp{294}}
+\indexentry {0}{bmod}{C}{\ic \pp{193}\c 317}
+\indexentry {0}{bordermatrix}{C}{\ic \pp{205}\c 317}
+\indexentry {0}{bot}{C}{\ic \pp{188}\c 317}
+\indexentry {0}{botmark}{C}{\ic 79\c 80\c \pp{144}\c 317}
+\indexentry {0}{bottom margin}{N}{\ic 66}
+\indexentry {0}{bowtie}{C}{\ic \pp{190}\c 317}
+\indexentry {0}{box}{C}{\ic \pp{164}\c 165\c 317}
+\indexentry {0}{box commands}{N}{\ic 160--171}
+\indexentry {0}{box registers}{N}{\ic 52\c 89\c 164--166\c 167}
+\indexentry {1}{reserved by \b\tt\\newbox\e}{N}{\ic 244}
+\indexentry {0}{boxes}{N}{\ic 17\c \pp{51--53}}
+\indexentry {1}{baselines of}{N}{\ic 51}
+\indexentry {1}{copying}{N}{\ic 164\c 165}
+\indexentry {1}{depth of}{N}{\ic 60}
+\indexentry {1}{drawing}{N}{\ic 30}
+\indexentry {1}{empty}{N}{\ic 169}
+\indexentry {1}{extracting contents of}{N}{\ic 165}
+\indexentry {1}{glue with}{N}{\ic 66}
+\indexentry {1}{height of}{N}{\ic 69}
+\indexentry {1}{invisible}{N}{\ic 92}
+\indexentry {1}{last box in a list}{N}{\ic 171}
+\indexentry {1}{overfull}{N}{\ic 170--171\c 268--270}
+\indexentry {1}{phantom}{N}{\ic 168--169}
+\indexentry {1}{reference point of}{N}{\ic 88}
+\indexentry {1}{shifting}{N}{\ic 166--167}
+\indexentry {1}{testing if void}{N}{\ic 238}
+\indexentry {1}{underfull}{N}{\ic 170--171\c 268--270}
+\indexentry {1}{width of}{N}{\ic 95}
+\indexentry {0}{boxmaxdepth}{C}{\ic 52\c 162\c \pp{163}\c 317}
+\indexentry {0}{box255}{C}{\ic 84\c 90\c 144\c 148}
+\indexentry {0}{brace}{C}{\ic \pp{200}\c 317}
+\indexentry {0}{braces}{N}{\ic 202\c 211}
+\indexentry {1}{mismatched}{N}{\ic 275}
+\indexentry {1}{space after}{N}{\ic 270}
+\indexentry {0}{bracevert}{C}{\ic \pp{212}\c 317}
+\indexentry {0}{brack}{C}{\ic \pp{200}\c 317}
+\indexentry {0}{break}{C}{\ic 74\c \pp{120}\c \pp{136}\c 317}
+\indexentry {1}{correcting line breaks with}{N}{\ic 268}
+\indexentry {1}{end of line as}{N}{\ic 278}
+\indexentry {0}{breve}{C}{\ic \pp{199}\c 317}
+\indexentry {0}{breve accent}{N}{\ic 100\c 199}
+\indexentry {0}{brokenpenalty}{C}{\ic \pp{139}\c 317}
+\indexentry {0}{buildrel}{C}{\ic \pp{202}\c 317}
+\indexentry {0}{bullet}{C}{\ic \pp{189}\c 317}
+\indexentry {0}{bye}{C}{\ic \pp{246}\c 317}
+\indexgroup C
+\indexentry {0}{\char `\c}{C}{\ic \pp{100}\c 317}
+\indexentry {0}{cal}{C}{\ic \pp{209}\c 317}
+\indexentry {0}{cap}{C}{\ic \pp{189}\c 317}
+\indexentry {0}{card suits}{N}{\ic 26\c 188}
+\indexentry {0}{case conversion}{N}{\ic 103--104}
+\indexentry {0}{case testing}{N}{\ic 239}
+\indexentry {0}{cases}{C}{\ic \pp{201}\c 317}
+\indexentry {0}{catcode}{C}{\ic 43\c 53\c 61\c \pp{251}\c 317}
+\indexentry {0}{category codes}{N}{\ic \pp{53--55}}
+\indexentry {1}{attached during input}{N}{\ic 55}
+\indexentry {1}{cause of unwanted spaces}{N}{\ic 270}
+\indexentry {1}{changing}{N}{\ic 280}
+\indexentry {1}{for verbatim text}{N}{\ic 277}
+\indexentry {1}{in \b\tt\\catcode\e\ table}{N}{\ic 251}
+\indexentry {1}{of active characters}{N}{\ic 43}
+\indexentry {1}{testing}{N}{\ic 235}
+\indexentry {1}{useful definitions for}{N}{\ic 291}
+\indexentry {0}{cdot}{C}{\ic \pp{189}\c 196\c 317}
+\indexentry {0}{cdotp}{C}{\ic \pp{196}\c 317}
+\indexentry {0}{cdots}{C}{\ic \pp{203}\c 317}
+\indexentry {0}{cedilla accent}{N}{\ic 100}
+\indexentry {0}{center}{C}{\ic \pp{306}}
+\indexentry {0}{centered text}{N}{\ic 68\c 71\c 306--307}
+\indexentry {0}{centereddisplays}{C}{\ic \pp{295}}
+\indexentry {0}{centering}{N}{\ic 32\c 108--109}
+\indexentry {0}{centerline}{C}{\ic 68\c \pp{108}\c 317}
+\indexentry {0}{centimeter}{N}{\ic 60}
+\indexentry {0}{char}{C}{\ic 53\c 56\c \pp{99}\c 318}
+\indexentry {0}{character tokens}{N}{\ic 292}
+\indexentry {0}{characters}{N}{\ic 49\c \pp{55--56}\c 99}
+\indexentry {1}{\ascii\ codes for}{N}{\ic 82}
+\indexentry {1}{category code of}{N}{\ic 53}
+\indexentry {1}{defined by \b\tt\\chardef\e}{N}{\ic 232}
+\indexentry {1}{special}{N}{\ic 26}
+\indexentry {0}{\<charcode>}{N}{\ic 4}
+\indexentry {0}{chardef}{C}{\ic \pp{232}\c 234\c 318}
+\indexentry {0}{check}{C}{\ic \pp{199}\c 318}
+\indexentry {0}{check accent}{N}{\ic 100\c 199}
+\indexentry {0}{chi}{C}{\ic \pp{187}\c 318}
+\indexentry {0}{choose}{C}{\ic \pp{200}\c 318}
+\indexentry {0}{cicero}{N}{\ic 60}
+\indexentry {0}{circ}{C}{\ic \pp{189}\c 318}
+\indexentry {0}{circumflex accent}{N}{\ic 100}
+\indexentry {0}{class}{N}{\ic \pp{56}\c 210\c 218}
+\indexentry {1}{of a delimiter}{N}{\ic 59}
+\indexentry {0}{cleaders}{C}{\ic 72--73\c \pp{174}\c 318}
+\indexentry {0}{cleartabs}{C}{\ic \pp{177}\c 318}
+\indexentry {0}{closein}{C}{\ic 63\c \pp{248}\c 318}
+\indexentry {0}{closeout}{C}{\ic 63\c \pp{249}\c 318}
+\indexentry {1}{whatsit produced by}{N}{\ic 95}
+\indexentry {1}{with {\tt\\immediate}}{N}{\ic 250}
+\indexentry {0}{closing}{N}{\ic 191}
+\indexentry {0}{club line}{N}{\ic 138}
+\indexentry {0}{clubpenalty}{C}{\ic \pp{138}\c 318}
+\indexentry {0}{clubsuit}{C}{\ic \pp{188}\c 318}
+\indexentry {0}{cmex10}{T}{\ic 212}
+\indexentry {0}{cmtt10}{T}{\ic 109}
+\indexentry {0}{colon}{C}{\ic \pp{196}\c 318}
+\indexentry {0}{combinations, notation for}{N}{\ic 201}
+\indexentry {0}{commands}{N}{\ic 3\c 10--11\c \pp{56}}
+\indexentry {1}{arguments of}{N}{\ic 48}
+\indexentry {1}{versus control sequences}{N}{\ic 11}
+\indexentry {0}{comments}{N}{\ic \pp{13}\c 22\c 53}
+\indexentry {0}{Computer Modern fonts}{N}{\ic 34\c 49\c 64\c 109}
+\indexentry {0}{computer programs, typesetting}{N}{\ic 122\c 277\c 280}
+\indexentry {0}{conditional tests}{N}{\ic \pp{57}\c 235--240}
+\indexentry {0}{cong}{C}{\ic \pp{190}\c 191\c 318}
+\indexentry {0}{control characters}{N}{\ic 7\c 49\c 55}
+\indexentry {0}{control sequences}{N}{\ic 10--11\c \pp{57}}
+\indexentry {1}{absorbing spaces}{N}{\ic 10}
+\indexentry {1}{as tokens}{N}{\ic 16}
+\indexentry {1}{converting to strings}{N}{\ic 226}
+\indexentry {1}{defining with \b\tt\\let\e}{N}{\ic 232}
+\indexentry {1}{versus commands}{N}{\ic 11}
+\indexentry {0}{control space}{N}{\ic 10\c 104\c 270}
+\indexentry {0}{control symbols}{N}{\ic 10\c 57\c \pp{58}}
+\indexentry {0}{control words}{N}{\ic 10\c 57\c \pp{58}}
+\indexentry {0}{controlling \TeX}{N}{\ic 252--253}
+\indexentry {0}{coprod}{C}{\ic \pp{194}\c 318}
+\indexentry {0}{copy}{C}{\ic \pp{164}\c 318}
+\indexentry {0}{copyright}{C}{\ic \pp{98}\c 318}
+\indexentry {0}{cos}{C}{\ic \pp{193}\c 318}
+\indexentry {0}{cosh}{C}{\ic \pp{193}\c 318}
+\indexentry {0}{cot}{C}{\ic \pp{193}\c 318}
+\indexentry {0}{coth}{C}{\ic \pp{193}\c 318}
+\indexentry {0}{count}{C}{\ic 48\c \pp{242}\c 246\c 318}
+\indexentry {0}{count registers}{N}{\ic 89\c 242}
+\indexentry {1}{reserved by \b\tt\\newcount\e}{N}{\ic 244}
+\indexentry {0}{countdef}{C}{\ic \pp{245}\c 318}
+\indexentry {0}{count0}{C}{\ic 142}
+\indexentry {0}{cr}{C}{\ic 44--46\c \pp{180}\c 318}
+\indexentry {0}{cramped variants}{N}{\ic 93}
+\indexentry {0}{crcr}{C}{\ic \pp{180}\c 318}
+\indexentry {0}{cross-references}{N}{\ic 302}
+\indexentry {0}{csc}{C}{\ic \pp{193}\c 318}
+\indexentry {0}{csname}{C}{\ic 226\c \pp{233}\c 318}
+\indexentry {1}{expanded by {\tt\\edef} rules}{N}{\ic 231}
+\indexentry {0}{cup}{C}{\ic \pp{189}\c 318}
+\indexgroup D
+\indexentry {0}{\char `\d}{C}{\ic \pp{100}\c 318}
+\indexentry {0}{dag}{C}{\ic \pp{98}\c 318}
+\indexentry {0}{dagger}{C}{\ic \pp{189}\c 318}
+\indexentry {0}{dashes}{N}{\ic 14\c 22}
+\indexentry {0}{dashv}{C}{\ic \pp{190}\c 318}
+\indexentry {0}{date}{N}{\ic 225\c 297}
+\indexentry {0}{day}{C}{\ic \pp{225}\c 297\c 318}
+\indexentry {0}{ddag}{C}{\ic \pp{98}\c 318}
+\indexentry {0}{ddagger}{C}{\ic \pp{189}\c 318}
+\indexentry {0}{ddot}{C}{\ic \pp{199}\c 319}
+\indexentry {0}{ddots}{C}{\ic \pp{203}\c 319}
+\indexentry {0}{deadcycles}{C}{\ic \pp{148}\c 319}
+\indexentry {0}{debugging}{N}{\ic 253--261}
+\indexentry {0}{decimal constant}{N}{\ic \pp{58}\c 83}
+\indexentry {0}{decimal point}{N}{\ic 83}
+\indexentry {0}{def}{C}{\ic 57\c \pp{230}\c 319}
+\indexentry {1}{making global}{N}{\ic 66}
+\indexentry {0}{defaulthyphenchar}{C}{\ic \pp{129}\c 319}
+\indexentry {0}{defaultskewchar}{C}{\ic \pp{213}\c 319}
+\indexentry {0}{deg}{C}{\ic \pp{193}\c 319}
+\indexentry {0}{delcode}{C}{\ic 59\c 207\c \pp{251}\c 319}
+\indexentry {0}{delimited arguments}{N}{\ic 48}
+\indexentry {0}{delimiter}{C}{\ic 59\c \pp{204}\c 319}
+\indexentry {0}{delimiter codes}{N}{\ic 59--60\c 207\c 251}
+\indexentry {0}{delimiterfactor}{C}{\ic \pp{205}\c 319}
+\indexentry {0}{delimiters}{N}{\ic \pp{58--60}\c 191--192\c 204--205}
+\indexentry {1}{enlarging}{N}{\ic 211}
+\indexentry {1}{height of}{N}{\ic 205}
+\indexentry {1}{null, space for}{N}{\ic 217}
+\indexentry {1}{parts of}{N}{\ic 212}
+\indexentry {0}{delimitershortfall}{C}{\ic \pp{205}\c 319}
+\indexentry {0}{delta}{C}{\ic \pp{187}\c 319}
+\indexentry {0}{Delta}{C}{\ic \pp{187}\c 319}
+\indexentry {0}{demerits}{N}{\ic \pp{60}\c 74}
+\indexentry {0}{depth}{N}{\ic 51\c \pp{60}\c 167}
+\indexentry {0}{description lists}{N}{\ic 30}
+\indexentry {0}{design size}{N}{\ic 78}
+\indexentry {0}{det}{C}{\ic \pp{193}\c 197\c 319}
+\indexentry {0}{device drivers}{N}{\ic 8\c 64\c 222\c 250}
+\indexentry {1}{instructions from \b\tt\\special\e}{N}{\ic 250}
+\indexentry {1}{page origin known to}{N}{\ic 141}
+\indexentry {0}{diacritical marks}{N}{\see{accents}}
+\indexentry {0}{diagnostic aids}{N}{\ic 253--261}
+\indexentry {0}{diamond}{C}{\ic \pp{189}\c 319}
+\indexentry {0}{diamondsuit}{C}{\ic \pp{188}\c 319}
+\indexentry {0}{\didotpt}{N}{\ic 60}
+\indexentry {0}{dim}{C}{\ic \pp{193}\c 319}
+\indexentry {0}{dimen}{C}{\ic \pp{242}\c 246\c 319}
+\indexentry {0}{\<dimen>}{N}{\ic 4\c 276}
+\indexentry {0}{dimendef}{C}{\ic \pp{245}\c 319}
+\indexentry {0}{dimension registers}{N}{\ic 89\c 242}
+\indexentry {1}{reserved by \b\tt\\newdimen\e}{N}{\ic 244}
+\indexentry {0}{dimensions}{N}{\ic \pp{60--61}}
+\indexentry {1}{comparing}{N}{\ic 237}
+\indexentry {1}{maximum}{N}{\ic 244}
+\indexentry {1}{negative}{N}{\ic 61}
+\indexentry {1}{of box registers}{N}{\ic 167}
+\indexentry {0}{discretionary}{C}{\ic \pp{127}\c 319}
+\indexentry {0}{discretionary hyphens}{N}{\ic 70\c 74\c 125\c 126}
+\indexentry {1}{bad line breaks, correcting with}{N}{\ic 268}
+\indexentry {1}{overfull boxes, correcting with}{N}{\ic 269}
+\indexentry {0}{display math}{N}{\ic 16\c \pp{61}}
+\indexentry {0}{display math mode}{N}{\ic 80\c 81}
+\indexentry {0}{display style}{N}{\ic 93\c 194\c 198}
+\indexentry {0}{displayindent}{C}{\ic \pp{216}\c 319}
+\indexentry {0}{displaylimits}{C}{\ic \pp{195}\c 319}
+\indexentry {0}{displaylines}{C}{\ic \pp{208}\c 297\c 319}
+\indexentry {0}{displays}{N}{}
+\indexentry {1}{actions for every display}{N}{\ic 218}
+\indexentry {1}{multiline}{N}{\ic 208--209}
+\indexentry {1}{spacing parameters for}{N}{\ic 216--217}
+\indexentry {0}{displays, formatting}{N}{\ic 295}
+\indexentry {0}{displaysetup}{C}{\ic 296}
+\indexentry {0}{displaystyle}{C}{\ic 93\c \pp{198}\c 319}
+\indexentry {0}{displaywidowpenalty}{C}{\ic \pp{138}\c 319}
+\indexentry {0}{displaywidth}{C}{\ic \pp{216}\c 319}
+\indexentry {0}{div}{C}{\ic \pp{189}\c 319}
+\indexentry {0}{divide}{C}{\ic \pp{246}\c 319}
+\indexentry {0}{dot}{C}{\ic \pp{199}\c 319}
+\indexentry {0}{dot accent}{N}{\ic 100\c 199}
+\indexentry {0}{doteq}{C}{\ic \pp{190}\c 319}
+\indexentry {0}{dotfill}{C}{\ic \pp{175}\c 319}
+\indexentry {0}{dotless letters}{N}{\ic 100}
+\indexentry {0}{dots}{N}{\ic 99\c 203}
+\indexentry {0}{dots}{C}{\ic \pp{99}\c 319}
+\indexentry {0}{double columns}{N}{\ic 309}
+\indexentry {0}{double dot accent}{N}{\ic 199}
+\indexentry {0}{double spacing}{N}{\ic 134}
+\indexentry {0}{doublehyphendemerits}{C}{\ic \pp{125}\c 320}
+\indexentry {0}{downarrow}{C}{\ic 59\c \pp{192}\c 320}
+\indexentry {0}{Downarrow}{C}{\ic 59\c \pp{192}\c 320}
+\indexentry {0}{downbracefill}{C}{\ic \pp{211}\c 320}
+\indexentry {0}{dp}{C}{\ic \pp{167}\c 320}
+\indexentry {0}{drawing lines}{N}{\see{rules}}
+\indexentry {0}{drivers}{N}{\see{device drivers}}
+\indexentry {0}{dump}{C}{\ic 65\c \pp{263}\c 320}
+\indexentry {0}{\dvifile}{N}{\ic 8}
+\indexentry {1}{as a result file}{N}{\ic 62}
+\indexentry {1}{boxes recorded in log file}{N}{\ic 258}
+\indexentry {1}{converted by driver}{N}{\ic 65}
+\indexentry {1}{created by \TeX's intestines}{N}{\ic 16\c 47}
+\indexentry {1}{material from output routine}{N}{\ic 83\c 84\c 85}
+\indexentry {1}{material inserted by \b\tt\\special\e}{N}{\ic 95}
+\indexentry {1}{receives boxes from \b\tt\\shipout\e}{N}{\ic 148}
+\indexentry {1}{whatsits in}{N}{\ic 95}
+\indexgroup E
+\indexentry {0}{edef}{C}{\ic \pp{230}\c 320}
+\indexentry {1}{expansion of {\tt\\'\it c} in}{N}{\ic 82}
+\indexentry {1}{making global}{N}{\ic 66}
+\indexentry {0}{egroup}{C}{\ic \pp{227}\c 320}
+\indexentry {0}{ehrule}{C}{\ic \pp{292}}
+\indexentry {0}{eject}{C}{\ic \pp{137}\c 266\c 320}
+\indexentry {0}{El Paso}{N}{\ic 93}
+\indexentry {0}{ell}{C}{\ic \pp{188}\c 320}
+\indexentry {0}{ellipsis}{N}{\ic 99}
+\indexentry {0}{else}{C}{\ic 57\c \pp{239}\c 320}
+\indexentry {0}{em}{T}{\ic 60}
+\indexentry {0}{emergencystretch}{C}{\ic 18\c 123\c \pp{124}\c 268\c 320}
+\indexentry {0}{empty}{C}{\ic \pp{241}\c 320}
+\indexentry {0}{emptyset}{C}{\ic \pp{188}\c 320}
+\indexentry {0}{en}{N}{\ic 154}
+\indexentry {0}{end}{C}{\ic \pp{247}\c 320}
+\indexentry {0}{end of file, testing for}{N}{\ic 239}
+\indexentry {0}{end of line}{N}{\ic 53\c 91\c 105}
+\indexentry {0}{endcsname}{C}{\ic 320}
+\indexentry {0}{endgraf}{C}{\ic \pp{111}\c 320}
+\indexentry {0}{endgroup}{C}{\ic \pp{227}\c 320}
+\indexentry {0}{ending the job}{N}{\ic 246}
+\indexentry {0}{endinput}{C}{\ic \pp{247}\c 320}
+\indexentry {0}{endinsert}{C}{\ic \pp{147}\c 320}
+\indexentry {0}{endline}{C}{\ic \pp{180}\c 320}
+\indexentry {0}{endlinechar}{C}{\ic \pp{252}\c 281\c 320}
+\indexentry {0}{enskip}{C}{\ic \pp{154}\c 320}
+\indexentry {0}{enspace}{C}{\ic \pp{154}\c 320}
+\indexentry {0}{entry (column or row)}{N}{\ic 44\c 178--179}
+\indexentry {0}{enumerations}{N}{\ic 298--300}
+\indexentry {0}{environment}{C}{\ic \pp{305}}
+\indexentry {0}{environments}{N}{\ic 304}
+\indexentry {0}{eplain.tex}{T}{\ic 19\c 291--311}
+\indexentry {0}{epsilon}{C}{\ic \pp{187}\c 320}
+\indexentry {0}{eq}{C}{\ic \pp{295}}
+\indexentry {0}{eqalign}{C}{\ic \pp{208}\c 320}
+\indexentry {0}{eqalignno}{C}{\ic \pp{208}\c 297\c 320}
+\indexentry {0}{eqdef}{C}{\ic \pp{304}}
+\indexentry {0}{eqn}{C}{\ic \pp{295}}
+\indexentry {0}{eqno}{C}{\ic \pp{207}\c 320}
+\indexentry {0}{eqprint}{C}{\ic \pp{304}}
+\indexentry {0}{eqref}{C}{\ic \pp{304}}
+\indexentry {0}{equation numbers}{N}{\ic 208}
+\indexentry {0}{equations, labelling}{N}{\ic 304}
+\indexentry {0}{equiv}{C}{\ic \pp{190}\c 191\c 320}
+\indexentry {0}{errhelp}{C}{\ic \pp{261}\c 262\c 320}
+\indexentry {0}{errmessage}{C}{\ic \pp{261}\c 320}
+\indexentry {1}{expanded by {\tt\\edef} rules}{N}{\ic 231}
+\indexentry {0}{error messages}{N}{\ic 9\c 261--262\c 283--288}
+\indexentry {0}{errorcontextlines}{C}{\ic 18\c \pp{262}\c 288\c 320}
+\indexentry {0}{errorstopmode}{C}{\ic \pp{252}\c 321}
+\indexentry {0}{escape character}{N}{\ic 57\c 58\c \pp{61}}
+\indexentry {1}{category code of}{N}{\ic 53}
+\indexentry {1}{represented by \b\tt\\escapechar\e}{N}{\ic 226}
+\indexentry {0}{escapechar}{C}{\ic 61\c \pp{226}\c 250\c 321}
+\indexentry {0}{eta}{C}{\ic \pp{187}\c 321}
+\indexentry {0}{European alphabets}{N}{\ic 97}
+\indexentry {0}{European languages}{N}{\ic 74\c 128}
+\indexentry {0}{everycr}{C}{\ic 180\c \pp{185}\c 321}
+\indexentry {0}{everydisplay}{C}{\ic \pp{218}\c 296\c 299\c 321}
+\indexentry {0}{everyfootnote}{C}{\ic \pp{309}}
+\indexentry {0}{everyhbox}{C}{\ic \pp{164}\c 321}
+\indexentry {0}{everyjob}{C}{\ic \pp{263}\c 321}
+\indexentry {0}{everymath}{C}{\ic \pp{218}\c 321}
+\indexentry {0}{everypar}{C}{\ic 87\c 110\c \pp{113}\c 321}
+\indexentry {1}{for hanging indentation}{N}{\ic 117}
+\indexentry {1}{for setting \b\tt\\looseness\e}{N}{\ic 124}
+\indexentry {0}{everyvbox}{C}{\ic \pp{164}\c 321}
+\indexentry {0}{evrule}{C}{\ic \pp{292}}
+\indexentry {0}{ex}{T}{\ic 60}
+\indexentry {0}{exclamation point}{N}{\ic 13}
+\indexentry {0}{exhyphenpenalty}{C}{\ic \pp{125}\c 321}
+\indexentry {0}{exists}{C}{\ic \pp{188}\c 321}
+\indexentry {0}{exp}{C}{\ic \pp{193}\c 321}
+\indexentry {0}{expandafter}{C}{\ic 231\c \pp{233}\c 321}
+\indexentry {0}{expanding tokens}{N}{\ic 16}
+\indexentry {0}{extra space}{N}{\ic 214\c 258}
+\indexentry {0}{eyes}{N}{\ic 16\c \pp{46}\seealso{\anatomy}}
+\indexgroup F
+\indexentry {0}{factor}{N}{\ic 61}
+\indexentry {0}{fam}{C}{\ic \pp{210}\c 321}
+\indexentry {0}{family}{N}{\ic \pp{62}}
+\indexentry {1}{as part of mathcode}{N}{\ic 80}
+\indexentry {1}{given by \b\tt\\fam\e}{N}{\ic 210}
+\indexentry {1}{reserved by \b\tt\\newfam\e}{N}{\ic 244}
+\indexentry {1}{script size in}{N}{\ic 91}
+\indexentry {1}{scriptscript size in}{N}{\ic 91}
+\indexentry {1}{text size in}{N}{\ic 93}
+\indexentry {1}{variable}{N}{\ic 81}
+\indexentry {0}{fi}{C}{\ic 57\c \pp{240}\c 321}
+\indexentry {0}{fil}{T}{\ic 61\c 67}
+\indexentry {0}{filbreak}{C}{\ic \pp{137}\c 266\c 321}
+\indexentry {0}{file names}{N}{\ic \pp{63}}
+\indexentry {0}{files}{N}{\ic \pp{62--63}\c 247--251}
+\indexentry {1}{testing for existence of}{N}{\ic 295}
+\indexentry {0}{fill}{N}{\ic 175}
+\indexentry {0}{fill}{T}{\ic 61\c 67}
+\indexentry {0}{filll}{T}{\ic 61\c 67}
+\indexentry {0}{finalhyphendemerits}{C}{\ic \pp{126}\c 321}
+\indexentry {0}{firstmark}{C}{\ic 79\c 80\c \pp{144}\c 321}
+\indexentry {0}{fivebf}{C}{\ic \pp{102}\c 321}
+\indexentry {0}{fivei}{C}{\ic \pp{102}\c 321}
+\indexentry {0}{fiverm}{C}{\ic \pp{102}\c 321}
+\indexentry {0}{fivesy}{C}{\ic \pp{102}\c 321}
+\indexentry {0}{flat}{C}{\ic \pp{188}\c 321}
+\indexentry {0}{floating material}{N}{\ic 139\c 146}
+\indexentry {0}{floatingpenalty}{C}{\ic \pp{139}\c 321}
+\indexentry {0}{flush left}{N}{\ic 32\c 68\c 108--109\c 306--307}
+\indexentry {0}{flush right}{N}{\ic 32\c 68\c 108--109\c 306--307}
+\indexentry {0}{flushleft}{C}{\ic \pp{306}}
+\indexentry {0}{flushright}{C}{\ic \pp{306}}
+\indexentry {0}{fmtname}{C}{\ic \pp{225}\c 321}
+\indexentry {0}{fmtversion}{C}{\ic \pp{225}\c 321}
+\indexentry {0}{folio}{C}{\ic \pp{143}\c 321}
+\indexentry {0}{font}{C}{\ic 129\c 213\c \pp{221}\c 293\c 321}
+\indexentry {0}{font files}{N}{\ic 8}
+\indexentry {0}{fontdimen}{C}{\ic \pp{222}\c 293\c 321}
+\indexentry {0}{fontname}{C}{\ic \pp{227}\c 321}
+\indexentry {0}{fonts}{N}{\ic 26\c \pp{64--65}\c 102\c 209}
+\indexentry {1}{composite}{N}{\ic 276--277}
+\indexentry {1}{families of}{N}{\ic 62}
+\indexentry {1}{hyphenation characters for}{N}{\ic 129}
+\indexentry {1}{names of}{N}{\ic 227}
+\indexentry {1}{naming and modifying}{N}{\ic 221--224}
+\indexentry {1}{parameters of}{N}{\ic 222}
+\indexentry {0}{footers}{N}{\ic \pp{65}\c 86}
+\indexentry {1}{marks used in}{N}{\ic 79}
+\indexentry {1}{multiple-line}{N}{\ic 274--275}
+\indexentry {0}{footline}{C}{\ic 65\c 86\c \pp{143}\c 274\c 322}
+\indexentry {0}{footnote}{C}{\ic 70\c \pp{145}\c 147\c 322}
+\indexentry {0}{footnotemarkseparation}{C}{\ic \pp{309}}
+\indexentry {0}{footnotes}{N}{\ic 22\c 309}
+\indexentry {1}{using \b\tt\\textindent\e\ with}{N}{\ic 112}
+\indexentry {0}{for}{C}{\ic 293}
+\indexentry {0}{for loop}{N}{\ic 293}
+\indexentry {0}{forall}{C}{\ic \pp{188}\c 322}
+\indexentry {0}{forbidden control sequence}{N}{\ic 279}
+\indexentry {0}{foreign languages}{N}{\ic 18\seealso{European languages}}
+\indexentry {0}{form feed}{N}{\ic 53}
+\indexentry {0}{format file}{N}{\ic \pp{65}\c 263}
+\indexentry {0}{frac}{C}{\ic \pp{294}}
+\indexentry {0}{fractions}{N}{\ic 200--202}
+\indexentry {1}{produced by \b\tt\\over\e}{N}{\ic 200}
+\indexentry {1}{slashed form}{N}{\ic 294}
+\indexentry {0}{frenchspacing}{C}{\ic 14\c \pp{106}\c 322}
+\indexentry {0}{frown}{C}{\ic \pp{190}\c 322}
+\indexentry {0}{functions, names of}{N}{\ic 193--194}
+\indexentry {0}{futurelet}{C}{\ic \pp{232}\c 322}
+\indexgroup G
+\indexentry {0}{gamma}{C}{\ic \pp{187}\c 322}
+\indexentry {0}{Gamma}{C}{\ic \pp{187}\c 322}
+\indexentry {0}{gcd}{C}{\ic \pp{193}\c 322}
+\indexentry {0}{gdef}{C}{\ic 66\c 228\c \pp{231}\c 322}
+\indexentry {0}{ge}{C}{\ic \pp{190}\c 191\c 322}
+\indexentry {0}{generaldisplay}{C}{\ic 296}
+\indexentry {0}{geq}{C}{\ic \pp{190}\c 191\c 322}
+\indexentry {0}{gets}{C}{\ic \pp{192}\c 322}
+\indexentry {0}{\gffile}{N}{\ic 8\c 65}
+\indexentry {0}{gg}{C}{\ic \pp{190}\c 322}
+\indexentry {0}{global}{N}{\ic \pp{65--66}}
+\indexentry {0}{global}{C}{\ic 65\c \pp{228}\c 229\c 322}
+\indexentry {0}{globaldefs}{C}{\ic 65\c \pp{228}\c 281\c 322}
+\indexentry {0}{glue}{N}{\ic 17\c \pp{66--68}\c 215}
+\indexentry {1}{creating space with}{N}{\ic 91}
+\indexentry {1}{infinitely shrinkable}{N}{\ic 68}
+\indexentry {1}{infinitely stretchable}{N}{\ic 157--158}
+\indexentry {1}{last glue item in a list}{N}{\ic 171}
+\indexentry {1}{mathematical}{N}{\ic 82}
+\indexentry {1}{negative}{N}{\ic 159}
+\indexentry {0}{glue registers}{N}{\ic 89}
+\indexentry {0}{\<glue>}{N}{\ic 4}
+\indexentry {0}{gobble}{C}{\ic \pp{291}}
+\indexentry {0}{gobblethree}{C}{\ic \pp{291}}
+\indexentry {0}{gobbletwo}{C}{\ic \pp{291}}
+\indexentry {0}{goodbreak}{C}{\ic \pp{137}\c 322}
+\indexentry {0}{grave}{C}{\ic \pp{199}\c 322}
+\indexentry {0}{grave accent}{N}{\ic 100\c 199}
+\indexentry {0}{Greek letters}{N}{\ic 187--188\c 210}
+\indexentry {0}{groups}{N}{\ic 15--16\c 53\c \pp{68--69}\c 227--229}
+\indexentry {0}{gullet}{N}{\ic 46\c \pp{47}\c 53}
+\indexgroup H
+\indexentry {0}{\char `\H}{C}{\ic \pp{100}\c 322}
+\indexentry {0}{halign}{C}{\ic 45--46\c \pp{178}\c 180\c 322}
+\indexentry {1}{grouping for}{N}{\ic 16}
+\indexentry {1}{illegal in math mode}{N}{\ic 297}
+\indexentry {1}{inherently vertical}{N}{\ic 69}
+\indexentry {0}{hang}{C}{\ic \pp{117}\c 272\c 322}
+\indexentry {0}{hangafter}{C}{\ic \pp{117}\c 118\c 322}
+\indexentry {0}{hangindent}{C}{\ic 87\c \pp{117}\c 118\c 272\c 322}
+\indexentry {0}{hanging indentation}{N}{\ic 117}
+\indexentry {0}{hat}{C}{\ic \pp{199}\c 322}
+\indexentry {0}{hat accent}{N}{\ic 199}
+\indexentry {0}{hbadness}{C}{\ic 123\c \pp{170}\c 322}
+\indexentry {0}{hbar}{C}{\ic \pp{188}\c 322}
+\indexentry {0}{hbox}{N}{}
+\indexentry {1}{constructing with \b\tt\\hbox\e}{N}{\ic 161}
+\indexentry {0}{hbox}{C}{\ic 51\c \pp{160}\c 268\c 322}
+\indexentry {1}{overfull box from}{N}{\ic 269--270}
+\indexentry {0}{hboxes}{N}{\ic 51\c \pp{69}}
+\indexentry {1}{constructing with \b\tt\\hbox\e}{N}{\ic 160}
+\indexentry {1}{controlling line breaks}{N}{\ic 74}
+\indexentry {1}{horizontal mode for}{N}{\ic 69}
+\indexentry {1}{testing for}{N}{\ic 238}
+\indexentry {0}{headers}{N}{\ic \pp{69}\c 86}
+\indexentry {1}{marks used in}{N}{\ic 79}
+\indexentry {1}{multiple-line}{N}{\ic 274--275}
+\indexentry {0}{headline}{C}{\ic 69\c 86\c \pp{143}\c 274\c 322}
+\indexentry {0}{heartsuit}{C}{\ic \pp{188}\c 322}
+\indexentry {0}{height}{N}{\ic 51\c \pp{69}\c 167}
+\indexentry {0}{help message}{N}{\ic 262}
+\indexentry {0}{help text}{N}{\ic 262}
+\indexentry {0}{hexadecimal digit}{N}{\ic 55}
+\indexentry {0}{hexadecimal numbers}{N}{\ic 82}
+\indexentry {0}{hfil}{C}{\ic \pp{157}\c 159\c 160\c 270\c 322}
+\indexentry {0}{hfill}{C}{\ic \pp{157}\c 322}
+\indexentry {0}{hfilneg}{C}{\ic \pp{159}\c 322}
+\indexentry {0}{hfuzz}{C}{\ic 123\c \pp{171}\c 269\c 322}
+\indexentry {0}{hglue}{C}{\ic \pp{156}\c 157\c 323}
+\indexentry {0}{hidewidth}{C}{\ic \pp{184}\c 323}
+\indexentry {0}{hoffset}{C}{\ic 79\c 86\c \pp{140}\c 323}
+\indexentry {0}{holdinginserts}{C}{\ic 18\c \pp{149}\c 323}
+\indexentry {0}{hom}{C}{\ic \pp{193}\c 323}
+\indexentry {0}{hookleftarrow}{C}{\ic \pp{192}\c 323}
+\indexentry {0}{hookrightarrow}{C}{\ic \pp{192}\c 323}
+\indexentry {0}{horizontal braces}{N}{\ic 211}
+\indexentry {0}{horizontal glue}{N}{\ic 155\c 156}
+\indexentry {0}{horizontal lists}{N}{\ic 51\c 66\c \pp{69}}
+\indexentry {1}{can't contain vertical commands}{N}{\ic 69}
+\indexentry {1}{hboxes formed from}{N}{\ic 69}
+\indexentry {1}{penalties in}{N}{\ic 88}
+\indexentry {1}{rule in}{N}{\ic 90}
+\indexentry {0}{horizontal mode}{N}{\ic \pp{69--70}\c 81}
+\indexentry {1}{rules in}{N}{\ic 173}
+\indexentry {1}{testing for}{N}{\ic 238}
+\indexentry {0}{horizontal rules}{N}{\ic 90--91\c 172--173}
+\indexentry {0}{horizontal skip}{N}{\ic 155}
+\indexentry {0}{horizontal space}{N}{\ic 153--154\c 155--159}
+\indexentry {0}{horizontal tab}{N}{\ic 53}
+\indexentry {0}{hphantom}{C}{\ic \pp{169}\c 323}
+\indexentry {0}{hrule}{C}{\ic 90--91\c \pp{172}\c 273\c 323}
+\indexentry {1}{inherently vertical}{N}{\ic 69}
+\indexentry {0}{hrulefill}{C}{\ic \pp{175}\c 323}
+\indexentry {0}{hsize}{C}{\ic 79\c 86\c \pp{114}\c \pp{140}\c 323}
+\indexentry {1}{set by {\tt\\magnification}}{N}{\ic 223}
+\indexentry {0}{hskip}{C}{\ic 66\c \pp{155}\c 323}
+\indexentry {0}{hss}{C}{\ic \pp{158}\c 269\c 323}
+\indexentry {0}{ht}{C}{\ic \pp{167}\c 323}
+\indexentry {0}{Hungarian umlaut accent}{N}{\ic 100}
+\indexentry {0}{hyphenation}{N}{\ic 32\c \pp{70}\c 126--129\c 139}
+\indexentry {1}{German}{N}{\ic 127}
+\indexentry {1}{penalties for}{N}{\ic 125--126}
+\indexentry {0}{hyphenation}{C}{\ic 70\c \pp{127}\c 323}
+\indexentry {0}{hyphenation rules}{N}{\ic 128}
+\indexentry {0}{hyphenchar}{C}{\ic \pp{129}\c 234\c 323}
+\indexentry {0}{hyphenpenalty}{C}{\ic \pp{125}\c 139\c 323}
+\indexentry {0}{hypotheses}{N}{\ic 131}
+\indexgroup I
+\indexentry {0}{\char `\i}{C}{\ic \pp{100}\c 323}
+\indexentry {0}{ialign}{C}{\ic \pp{180}\c 323}
+\indexentry {0}{if}{C}{\ic \pp{235}\c 323}
+\indexentry {0}{ifcase}{C}{\ic \pp{239}\c 323}
+\indexentry {0}{ifcat}{C}{\ic \pp{235}\c 323}
+\indexentry {0}{ifdim}{C}{\ic \pp{237}\c 323}
+\indexentry {0}{ifempty}{C}{\ic \pp{293}}
+\indexentry {0}{ifeof}{C}{\ic \pp{239}\c 323}
+\indexentry {0}{ifeqno}{C}{\ic \pp{295}}
+\indexentry {0}{iff}{C}{\ic \pp{192}\c 323}
+\indexentry {0}{iffalse}{C}{\ic \pp{239}\c 323}
+\indexentry {0}{ifhbox}{C}{\ic \pp{238}\c 323}
+\indexentry {0}{ifhmode}{C}{\ic \pp{238}\c 323}
+\indexentry {0}{ifinner}{C}{\ic \pp{238}\c 323}
+\indexentry {0}{ifleqno}{C}{\ic \pp{295}}
+\indexentry {0}{ifmmode}{C}{\ic \pp{238}\c 323}
+\indexentry {0}{ifnum}{C}{\ic \pp{237}\c 323}
+\indexentry {0}{ifodd}{C}{\ic \pp{237}\c 324}
+\indexentry {0}{iftrue}{C}{\ic \pp{239}\c 324}
+\indexentry {0}{ifvbox}{C}{\ic \pp{238}\c 324}
+\indexentry {0}{ifvmode}{C}{\ic \pp{238}\c 324}
+\indexentry {0}{ifvoid}{C}{\ic 147\c \pp{238}\c 324}
+\indexentry {0}{ifx}{C}{\ic \pp{236}\c 324}
+\indexentry {0}{ignored characters}{N}{\ic 53}
+\indexentry {0}{ignorespaces}{C}{\ic \pp{252}\c 324}
+\indexentry {0}{Im}{C}{\ic \pp{188}\c 324}
+\indexentry {0}{imath}{C}{\ic 100\c \pp{188}\c 324}
+\indexentry {0}{immediate}{C}{\ic 63\c 95\c 249\c \pp{250}\c 324}
+\indexentry {0}{in}{C}{\ic \pp{190}\c 324}
+\indexentry {0}{inch}{N}{\ic 60}
+\indexentry {0}{incomplete conditional}{N}{\ic 279}
+\indexentry {0}{indent}{C}{\ic 87\c \pp{111}\c 324}
+\indexentry {0}{indentation}{N}{\ic 24\c 111--119}
+\indexentry {0}{inf}{C}{\ic \pp{193}\c 324}
+\indexentry {0}{infty}{C}{\ic \pp{188}\c 324}
+\indexentry {0}{initex}{T}{\ic 65\c 263}
+\indexentry {0}{input}{C}{\ic 7\c 46\c 62\c \pp{247}\c 324}
+\indexentry {0}{input characters}{N}{\ic 280}
+\indexentry {0}{input files}{N}{\ic 9\c 46\c 247--248}
+\indexentry {1}{embedded}{N}{\ic 9}
+\indexentry {0}{input lines}{N}{\ic 252}
+\indexentry {0}{input streams}{N}{\ic \pp{70}}
+\indexentry {1}{opening}{N}{\ic 248}
+\indexentry {1}{reading with \b\tt\\read\e}{N}{\ic 62\c 248}
+\indexentry {1}{reserved by \b\tt\\newread\e}{N}{\ic 244}
+\indexentry {0}{input, preparing}{N}{\ic 10}
+\indexentry {0}{inputlineno}{C}{\ic \pp{247}\c 324}
+\indexentry {0}{insert}{C}{\ic 70\c \pp{147}\c 324}
+\indexentry {0}{<inserted text>}{T}{\ic 286}
+\indexentry {0}{insertions}{N}{\ic \pp{70}}
+\indexentry {1}{commands for}{N}{\ic 146--148}
+\indexentry {1}{forced out by \b\tt\\supereject\e}{N}{\ic 137}
+\indexentry {1}{numbers reserved by \b\tt\\newinsert\e}{N}{\ic 244}
+\indexentry {1}{penalties for}{N}{\ic 139}
+\indexentry {0}{insertpenalties}{C}{\ic \pp{139}\c 324}
+\indexentry {0}{int}{C}{\ic \pp{194}\c 195\c 196\c 324}
+\indexentry {1}{limits after}{N}{\ic 195}
+\indexentry {0}{interline glue}{N}{\ic 52\c \pp{70}\c 133--134}
+\indexentry {0}{interlinepenalty}{C}{\ic \pp{138}\c 324}
+\indexentry {0}{internal mode}{N}{}
+\indexentry {1}{testing for}{N}{\ic 238}
+\indexentry {0}{internal vertical mode}{N}{\ic 81\c 94}
+\indexentry {0}{interword spacing}{N}{\ic 50\c 106\c 107}
+\indexentry {0}{intestines}{N}{\ic 16\c 46\c \pp{47}\seealso{\anatomy}}
+\indexentry {0}{invalid character}{N}{\ic 53\c 54}
+\indexentry {0}{iota}{C}{\ic \pp{187}\c 324}
+\indexentry {0}{it}{C}{\ic \pp{103}\c 324}
+\indexentry {0}{italic correction}{N}{\ic 106}
+\indexentry {0}{item}{C}{\ic \pp{130}\c 324}
+\indexentry {0}{itemitem}{C}{\ic \pp{130}\c 324}
+\indexentry {0}{itemized lists}{N}{\ic 32\c 130\c 298--300}
+\indexentry {0}{items}{N}{\ic \pp{71}}
+\indexentry {0}{itfam}{C}{\ic \pp{210}\c 324}
+\indexgroup J
+\indexentry {0}{\char `\j}{C}{\ic \pp{100}\c 324}
+\indexentry {0}{jmath}{C}{\ic 100\c \pp{188}\c 324}
+\indexentry {0}{jobname}{C}{\ic \pp{225}\c 324}
+\indexentry {0}{jot}{C}{\ic \pp{215}\c 324}
+\indexentry {0}{justification}{N}{\ic \pp{71}\c 108--109\c 116}
+\indexgroup K
+\indexentry {0}{kappa}{C}{\ic \pp{187}\c 324}
+\indexentry {0}{ker}{C}{\ic \pp{193}\c 324}
+\indexentry {0}{kern}{C}{\ic \pp{157}\c 324}
+\indexentry {0}{kerns}{N}{\ic \pp{71--72}\c 157}
+\indexentry {1}{as list items}{N}{\ic 51}
+\indexentry {1}{creating space with}{N}{\ic 91}
+\indexentry {1}{in math formulas}{N}{\ic 215}
+\indexentry {1}{last kern in a list}{N}{\ic 171}
+\indexentry {0}{Knuth, Donald E.}{N}{\ic 18\c 294}
+\indexgroup L
+\indexentry {0}{\char `\l}{C}{\ic \pp{97}\c 324}
+\indexentry {0}{\char `\L}{C}{\ic \pp{97}\c 324}
+\indexentry {0}{lambda}{C}{\ic \pp{187}\c 324}
+\indexentry {0}{Lambda}{C}{\ic \pp{187}\c 324}
+\indexentry {0}{Lamport, Leslie}{N}{\ic 18}
+\indexentry {0}{land}{C}{\ic \pp{189}\c 325}
+\indexentry {0}{langle}{C}{\ic 59\c \pp{191}\c 325}
+\indexentry {0}{language}{C}{\ic 18\c 95\c \pp{128}\c 325}
+\indexentry {0}{lastbox}{C}{\ic \pp{171}\c 172\c 325}
+\indexentry {0}{lastkern}{C}{\ic \pp{171}\c 234\c 325}
+\indexentry {0}{lastpenalty}{C}{\ic \pp{171}\c 234\c 325}
+\indexentry {0}{lastskip}{C}{\ic \pp{171}\c 234\c 325}
+\indexentry {0}{\LaTeX}{N}{\ic \r8\c 18\c 225}
+\indexentry {0}{LaTeX}{C}{\ic \pp{294}}
+\indexentry {0}{lbrace}{C}{\ic 59\c \pp{191}\c 325}
+\indexentry {0}{lbrack}{C}{\ic 59\c \pp{98}\c \pp{191}\c 325}
+\indexentry {0}{lccode}{C}{\ic \pp{103}\c 325}
+\indexentry {0}{lceil}{C}{\ic 59\c \pp{191}\c 325}
+\indexentry {0}{ldotp}{C}{\ic \pp{196}\c 325}
+\indexentry {0}{ldots}{C}{\ic \pp{203}\c 325}
+\indexentry {0}{le}{C}{\ic \pp{190}\c 191\c 325}
+\indexentry {0}{leaders}{N}{\ic \pp{72--73}\c 174--176}
+\indexentry {0}{leaders}{C}{\ic 72--73\c \pp{174}\c 325}
+\indexentry {0}{left}{C}{\ic 58\c \pp{204}\c 325}
+\indexentry {0}{leftarrow}{C}{\ic \pp{192}\c 325}
+\indexentry {0}{Leftarrow}{C}{\ic \pp{192}\c 325}
+\indexentry {0}{leftarrowfill}{C}{\ic \pp{175}\c 325}
+\indexentry {0}{leftdisplays}{C}{\ic \pp{295}\c \pp{296}\c \pp{297}}
+\indexentry {0}{leftharpoondown}{C}{\ic \pp{192}\c 325}
+\indexentry {0}{leftharpoonup}{C}{\ic \pp{192}\c 325}
+\indexentry {0}{lefthyphenmin}{C}{\ic 18\c \pp{128}\c 325}
+\indexentry {0}{leftline}{C}{\ic 68\c \pp{108}\c 325}
+\indexentry {0}{leftrightarrow}{C}{\ic \pp{192}\c 325}
+\indexentry {0}{Leftrightarrow}{C}{\ic \pp{192}\c 325}
+\indexentry {0}{leftskip}{C}{\ic 71\c \pp{115}\c 272\c 325}
+\indexentry {0}{lemmas}{N}{\ic 32\c 131}
+\indexentry {0}{leq}{C}{\ic \pp{190}\c 191\c 325}
+\indexentry {0}{leqalignno}{C}{\ic \pp{208}\c 297\c 325}
+\indexentry {0}{leqno}{C}{\ic \pp{207}\c 325}
+\indexentry {0}{let}{C}{\ic 57\c \pp{232}\c 325}
+\indexentry {0}{letreturn}{C}{\ic \pp{291}\c 293}
+\indexentry {0}{letter}{N}{\ic 53\c 56}
+\indexentry {0}{letter}{C}{\ic \pp{291}}
+\indexentry {0}{lfloor}{C}{\ic 59\c \pp{191}\c 325}
+\indexentry {0}{lg}{C}{\ic \pp{193}\c 325}
+\indexentry {0}{lgroup}{C}{\ic \pp{204}\c 326}
+\indexentry {0}{li}{C}{\ic \pp{298}}
+\indexentry {0}{ligatures}{N}{\ic \pp{73--74}\c 97--98\c 101}
+\indexentry {0}{lim}{C}{\ic \pp{193}\c 197\c 326}
+\indexentry {0}{liminf}{C}{\ic \pp{193}\c 326}
+\indexentry {0}{limits}{N}{\ic 194}
+\indexentry {0}{limits}{C}{\ic \pp{195}\c 326}
+\indexentry {0}{limsup}{C}{\ic \pp{193}\c 326}
+\indexentry {0}{line}{C}{\ic \pp{109}\c 326}
+\indexentry {0}{line breaking}{N}{\ic 17\c 47\c 272}
+\indexentry {1}{tracing}{N}{\ic 259}
+\indexentry {0}{line breaks}{N}{\ic \pp{74--75}\c 120--129}
+\indexentry {1}{and paragraph shape}{N}{\ic 114--120}
+\indexentry {1}{bad}{N}{\ic 268}
+\indexentry {1}{badness for}{N}{\ic 50}
+\indexentry {1}{deleting}{N}{\ic 13}
+\indexentry {1}{demerits for}{N}{\ic 60}
+\indexentry {1}{encouraging or discouraging}{N}{\ic 120--122}
+\indexentry {1}{in math formulas}{N}{\ic 121}
+\indexentry {1}{kerns at}{N}{\ic 157}
+\indexentry {1}{parameters affecting}{N}{\ic 123--126}
+\indexentry {0}{line length}{N}{\ic 114}
+\indexentry {0}{line spacing}{N}{\ic 133}
+\indexentry {0}{linepenalty}{C}{\ic \pp{125}\c 326}
+\indexentry {0}{lineskip}{C}{\ic 70\c \pp{133--134}\c 326}
+\indexentry {0}{lineskiplimit}{C}{\ic 70\c \pp{133--134}\c 326}
+\indexentry {0}{listcompact}{C}{\ic \pp{298}}
+\indexentry {0}{listing}{C}{\ic \pp{300}}
+\indexentry {0}{lists}{N}{\ic \pp{75}}
+\indexentry {0}{ll}{C}{\ic \pp{190}\c 326}
+\indexentry {0}{llap}{C}{\ic \pp{109}\c 326}
+\indexentry {0}{lmoustache}{C}{\ic \pp{212}\c 326}
+\indexentry {0}{ln}{C}{\ic \pp{193}\c 326}
+\indexentry {0}{lnot}{C}{\ic \pp{188}\c 189\c 326}
+\indexentry {0}{local information}{N}{\ic \pp{7}\c 9\c 128}
+\indexentry {0}{log}{C}{\ic \pp{193}\c 326}
+\indexentry {0}{log file}{N}{\ic \pp{75}\c 313}
+\indexentry {1}{as a result file}{N}{\ic 62}
+\indexentry {1}{error messages}{N}{\ic 283}
+\indexentry {1}{tracing statistics in}{N}{\ic 260}
+\indexentry {1}{written by \b\tt\\wlog\e}{N}{\ic 261}
+\indexentry {1}{written by \b\tt\\write\e}{N}{\ic 250}
+\indexentry {0}{loggingall}{C}{\ic \pp{292}}
+\indexentry {0}{logos}{N}{\ic 64}
+\indexentry {0}{long}{C}{\ic \pp{231}\c 236\c 326}
+\indexentry {0}{longleftarrow}{C}{\ic \pp{192}\c 326}
+\indexentry {0}{Longleftarrow}{C}{\ic \pp{192}\c 326}
+\indexentry {0}{longleftrightarrow}{C}{\ic \pp{192}\c 326}
+\indexentry {0}{Longleftrightarrow}{C}{\ic \pp{192}\c 326}
+\indexentry {0}{longmapsto}{C}{\ic \pp{192}\c 326}
+\indexentry {0}{longrightarrow}{C}{\ic \pp{192}\c 326}
+\indexentry {0}{Longrightarrow}{C}{\ic \pp{192}\c 326}
+\indexentry {0}{loop}{C}{\ic \pp{240}\c 326}
+\indexentry {0}{loops}{N}{\ic 240--241}
+\indexentry {0}{looseness}{C}{\ic 87\c \pp{124}\c 267\c 326}
+\indexentry {0}{lor}{C}{\ic \pp{189}\c 326}
+\indexentry {0}{lower}{C}{\ic 52\c \pp{166}\c 326}
+\indexentry {0}{lower limits}{N}{\ic 197}
+\indexentry {0}{lowercase}{N}{}
+\indexentry {1}{conversion to}{N}{\ic 103--104}
+\indexentry {0}{lowercase}{C}{\ic \pp{104}\c 326}
+\indexentry {0}{lq}{C}{\ic \pp{98}\c 326}
+\indexgroup M
+\indexentry {0}{macron accent}{N}{\ic 100}
+\indexentry {0}{macros}{N}{\ic \pp{75--78}\c 230--241}
+\indexentry {1}{arguments of}{N}{\ic 48\c 280}
+\indexentry {1}{controlling expansion of}{N}{\ic 233--235}
+\indexentry {1}{defining}{N}{\ic 230--232}
+\indexentry {1}{expanded in \TeX's stomach}{N}{\ic 47}
+\indexentry {1}{global}{N}{\ic 66}
+\indexentry {1}{in auxiliary files}{N}{\ic 7}
+\indexentry {1}{making readable}{N}{\ic 281}
+\indexentry {1}{named by active characters}{N}{\ic 43}
+\indexentry {1}{outer}{N}{\ic 83\c 279}
+\indexentry {1}{parameters of}{N}{\ic 48\c 53\c 75--77\c 280}
+\indexentry {1}{tracing}{N}{\ic 258}
+\indexentry {1}{using \b\tt\\begingroup\e\ and \b\tt\\endgroup\e\ in}{N}{\ic 227}
+\indexentry {1}{using \b\tt\\bgroup\e\ and \b\tt\\egroup\e\ in}{N}{\ic 228}
+\indexentry {0}{mag}{C}{\ic 61\c 78\c \pp{223}\c 326}
+\indexentry {0}{magnification}{N}{\ic 8\c 61\c \pp{78}}
+\indexentry {0}{magnification}{C}{\ic \pp{223}\c 326}
+\indexentry {0}{magstep}{C}{\ic 78\c \pp{223}\c 326}
+\indexentry {0}{magstephalf}{C}{\ic 78\c 223\c \pp{224}\c 327}
+\indexentry {0}{main vertical list}{N}{\ic 84}
+\indexentry {0}{makeactive}{C}{\ic \pp{291}}
+\indexentry {0}{makeblankbox}{C}{\ic \pp{294}}
+\indexentry {0}{makecolumns}{C}{\ic \pp{307}}
+\indexentry {0}{makefootline}{C}{\ic 274}
+\indexentry {0}{makeheadline}{C}{\ic 274}
+\indexentry {0}{mapsto}{C}{\ic \pp{192}\c 327}
+\indexentry {0}{margins}{N}{\ic 24\c \pp{79}\c 86}
+\indexentry {0}{mark}{C}{\ic 79\c 80\c \pp{144}\c 327}
+\indexentry {0}{mark text}{N}{\ic 79\c 144}
+\indexentry {0}{marks}{N}{\ic \pp{79--80}\c 144--145}
+\indexentry {1}{for split lists}{N}{\ic 144}
+\indexentry {1}{with headers or footers}{N}{\ic 86}
+\indexentry {0}{math}{N}{\ic 16\c 38\c 40\c 187--219}
+\indexentry {1}{accents}{N}{\ic 199}
+\indexentry {0}{math characters}{N}{\ic 232}
+\indexentry {1}{described by mathcodes}{N}{\ic 80}
+\indexentry {0}{math display}{N}{\ic 138\c 271}
+\indexentry {0}{math extensions}{N}{\ic 62}
+\indexentry {0}{math mode}{N}{\ic \pp{80}\c 81}
+\indexentry {1}{testing for}{N}{\ic 238}
+\indexentry {0}{math shift}{N}{\ic 53}
+\indexentry {0}{math symbols}{N}{\ic 64\c 198}
+\indexentry {0}{mathaccent}{C}{\ic \pp{199}\c 327}
+\indexentry {0}{mathbin}{C}{\ic \pp{218}\c 327}
+\indexentry {0}{mathchar}{C}{\ic \pp{99}\c 327}
+\indexentry {0}{mathchardef}{C}{\ic \pp{232}\c 234\c 327}
+\indexentry {0}{mathchoice}{C}{\ic \pp{198}\c 327}
+\indexentry {0}{mathclose}{C}{\ic \pp{218}\c 327}
+\indexentry {0}{mathcode}{C}{\ic 81\c 205\c \pp{251}\c 252\c 327}
+\indexentry {0}{mathcodes}{N}{\ic \pp{80--81}\c 232}
+\indexentry {1}{class encoded in}{N}{\ic 56}
+\indexentry {0}{mathematical units}{N}{\ic \pp{81}\c 82}
+\indexentry {0}{mathinner}{C}{\ic \pp{218}\c 327}
+\indexentry {0}{mathop}{C}{\ic \pp{218}\c 327}
+\indexentry {0}{mathopen}{C}{\ic \pp{218}\c 327}
+\indexentry {0}{mathord}{C}{\ic \pp{218}\c 327}
+\indexentry {0}{mathpalette}{C}{\ic \pp{198}\c 327}
+\indexentry {0}{mathpunct}{C}{\ic \pp{218}\c 327}
+\indexentry {0}{mathrel}{C}{\ic \pp{218}\c 327}
+\indexentry {0}{mathstrut}{C}{\ic 92\c \pp{168}\c 327}
+\indexentry {0}{mathsurround}{C}{\ic \pp{217}\c 327}
+\indexentry {0}{matrix}{N}{\ic 205}
+\indexentry {0}{matrix}{C}{\ic \pp{205}\c 327}
+\indexentry {0}{max}{C}{\ic \pp{193}\c 327}
+\indexentry {0}{maxdeadcycles}{C}{\ic \pp{148}\c 327}
+\indexentry {0}{maxdepth}{C}{\ic \pp{141}\c 150\c 327}
+\indexentry {0}{maxdimen}{C}{\ic \pp{244}\c 327}
+\indexentry {0}{meaning}{C}{\ic \pp{226}\c 327}
+\indexentry {0}{medbreak}{C}{\ic \pp{137}\c 327}
+\indexentry {0}{medmuskip}{C}{\ic \pp{214}\c 327}
+\indexentry {0}{medskip}{C}{\ic 137\c \pp{154}\c 327}
+\indexentry {0}{medskipamount}{C}{\ic \pp{155}\c 327}
+\indexentry {0}{message}{C}{\ic \pp{261}\c 327}
+\indexentry {1}{expanded by {\tt\\edef} rules}{N}{\ic 231}
+\indexentry {0}{messages, sending}{N}{\ic 261--262}
+\indexentry {0}{\Metafont}{N}{\ic \r7\c 34}
+\indexentry {0}{metrics file}{N}{\ic 8\c 59\c 221}
+\indexentry {1}{default hyphen in}{N}{\ic 129}
+\indexentry {1}{default skew character in}{N}{\ic 213}
+\indexentry {1}{italic correction in}{N}{\ic 106}
+\indexentry {0}{MF}{C}{\ic \pp{294}}
+\indexentry {0}{mid}{C}{\ic \pp{190}\c 327}
+\indexentry {0}{midinsert}{C}{\ic 70\c \pp{146}\c 147\c 328}
+\indexentry {0}{millimeter}{N}{\ic 60}
+\indexentry {0}{min}{C}{\ic \pp{193}\c 328}
+\indexentry {0}{mit}{C}{\ic \pp{209}\c 328}
+\indexentry {0}{mkern}{C}{\ic \pp{215}\c 328}
+\indexentry {0}{models}{C}{\ic \pp{190}\c 328}
+\indexentry {0}{modes}{N}{\ic 17\c \pp{81--82}}
+\indexentry {0}{modulus}{N}{\ic 193\c 194}
+\indexentry {0}{month}{C}{\ic \pp{225}\c 297\c 328}
+\indexentry {0}{monthname}{C}{\ic \pp{297}}
+\indexentry {0}{mouth}{N}{\ic 16\c \pp{46}\seealso{\anatomy}}
+\indexentry {0}{moveleft}{C}{\ic 52\c 161\c \pp{166}\c 328}
+\indexentry {0}{moveright}{C}{\ic 52\c 161\c \pp{166}\c 328}
+\indexentry {0}{mp}{C}{\ic \pp{189}\c 328}
+\indexentry {0}{mskip}{C}{\ic 82\c \pp{215}\c 328}
+\indexentry {0}{mu}{T}{\ic 82\c 243}
+\indexentry {0}{mu}{C}{\ic \pp{187}\c 328}
+\indexentry {0}{muglue}{N}{\ic \pp{82}}
+\indexentry {0}{muglue registers}{N}{\ic 89}
+\indexentry {0}{multiply}{C}{\ic \pp{246}\c 328}
+\indexentry {0}{multispan}{C}{\ic \pp{182}\c 328}
+\indexentry {0}{mushrooms}{N}{\ic 36}
+\indexentry {0}{music symbols}{N}{\ic 26\c 188}
+\indexentry {0}{muskip}{C}{\ic \pp{242}\c 246\c 328}
+\indexentry {0}{muskip registers}{N}{\ic 243}
+\indexentry {1}{reserved by \b\tt\\newmuskip\e}{N}{\ic 244}
+\indexentry {0}{muskipdef}{C}{\ic \pp{245}\c 328}
+\indexgroup N
+\indexentry {0}{nabla}{C}{\ic \pp{188}\c 328}
+\indexentry {0}{narrower}{C}{\ic \pp{114}\c 272\c 328}
+\indexentry {0}{natural}{C}{\ic \pp{188}\c 328}
+\indexentry {0}{ne}{C}{\ic \pp{190}\c 328}
+\indexentry {0}{nearrow}{C}{\ic \pp{192}\c 328}
+\indexentry {0}{neg}{C}{\ic \pp{188}\c 189\c 328}
+\indexentry {0}{negthinspace}{C}{\ic \pp{153}\c 328}
+\indexentry {0}{neq}{C}{\ic \pp{190}\c 328}
+\indexentry {0}{newbox}{C}{\ic 53\c 89\c \pp{244}\c 328}
+\indexentry {0}{newcount}{C}{\ic 89\c 242\c \pp{244}\c 328}
+\indexentry {0}{newdimen}{C}{\ic 89\c \pp{244}\c 328}
+\indexentry {0}{newfam}{C}{\ic 62\c \pp{244}\c 328}
+\indexentry {0}{newhelp}{C}{\ic \pp{262}\c 305\c 328}
+\indexentry {0}{newif}{C}{\ic \pp{240}\c 328}
+\indexentry {0}{newinsert}{C}{\ic 147\c \pp{244}\c 328}
+\indexentry {0}{newlanguage}{C}{\ic 18\c \pp{244}\c 328}
+\indexentry {0}{newlinechar}{C}{\ic \pp{250}\c 261\c 262\c 328}
+\indexentry {0}{newmuskip}{C}{\ic 89\c \pp{244}\c 328}
+\indexentry {0}{newread}{C}{\ic 63\c \pp{244}\c 328}
+\indexentry {0}{newskip}{C}{\ic 89\c \pp{244}\c 329}
+\indexentry {0}{\newTeX}{N}{\ic 18\c 156}
+\indexentry {0}{newtoks}{C}{\ic 89\c \pp{244}\c 329}
+\indexentry {0}{newwrite}{C}{\ic 63\c \pp{244}\c 329}
+\indexentry {0}{ni}{C}{\ic \pp{190}\c 329}
+\indexentry {0}{noalign}{C}{\ic 46\c 180\c \pp{183}\c 329}
+\indexentry {0}{noboundary}{C}{\ic 18\c 73\c \pp{101}\c 329}
+\indexentry {0}{nobreak}{C}{\ic 74\c \pp{121}\c \pp{136}\c 266\c 329}
+\indexentry {0}{noexpand}{C}{\ic 231\c \pp{234}\c 329}
+\indexentry {0}{noindent}{C}{\ic 87\c \pp{112}\c 329}
+\indexentry {0}{nointerlineskip}{C}{\ic \pp{135}\c 329}
+\indexentry {0}{nolimits}{C}{\ic \pp{195}\c 329}
+\indexentry {0}{nonfrenchspacing}{C}{\ic \pp{106}\c 329}
+\indexentry {0}{nonscript}{C}{\ic \pp{215}\c 218\c 329}
+\indexentry {0}{nonstopmode}{C}{\ic \pp{253}\c 329}
+\indexentry {0}{nopagenumbers}{C}{\ic \pp{142}\c 329}
+\indexentry {0}{normalbaselines}{C}{\ic \pp{134}\c 329}
+\indexentry {0}{normalbaselineskip}{C}{\ic \pp{134}\c 329}
+\indexentry {0}{normalbottom}{C}{\ic \pp{137}\c 329}
+\indexentry {0}{normallineskip}{C}{\ic \pp{134}\c 329}
+\indexentry {0}{normallineskiplimit}{C}{\ic \pp{134}\c 329}
+\indexentry {0}{not}{C}{\ic 329}
+\indexentry {0}{notin}{C}{\ic \pp{190}\c 329}
+\indexentry {0}{nu}{C}{\ic \pp{187}\c 329}
+\indexentry {0}{null}{C}{\ic \pp{169}\c 329}
+\indexentry {0}{nulldelimiterspace}{C}{\ic 60\c 204\c \pp{217}\c 329}
+\indexentry {0}{nullfont}{C}{\ic \pp{102}\c 329}
+\indexentry {0}{number}{C}{\ic 83\c \pp{224}\c 329}
+\indexentry {0}{\<number>}{N}{\ic 4}
+\indexentry {0}{numberedfootnote}{C}{\ic \pp{309}}
+\indexentry {0}{numberedlist}{C}{\ic \pp{298}}
+\indexentry {0}{numberedmarker}{C}{\ic \pp{299}}
+\indexentry {0}{numbername}{C}{\ic \pp{295}}
+\indexentry {0}{numbers}{N}{\ic \pp{82--83}}
+\indexentry {1}{comparing}{N}{\ic 237}
+\indexentry {1}{converting to characters}{N}{\ic 224}
+\indexentry {1}{testing for odd/even}{N}{\ic 237}
+\indexentry {0}{nwarrow}{C}{\ic \pp{192}\c 329}
+\indexgroup O
+\secondprinting{\vskip.33\baselineskip}
+\indexentry {0}{\char `\o}{C}{\ic \pp{97}\c 330}
+\indexentry {0}{\char `\O}{C}{\ic \pp{97}\c 330}
+\indexentry {0}{obeylines}{C}{\ic \pp{122}\c 278\c 293\c 330}
+\indexentry {0}{obeyspaces}{C}{\ic \pp{107}\c 122\c 278\c 293\c 330}
+\indexentry {0}{obeywhitespace}{C}{\ic 107\c 278\c \pp{293}}
+\indexentry {0}{octal numbers}{N}{\ic 82}
+\indexentry {0}{odot}{C}{\ic \pp{189}\c 330}
+\indexentry {0}{oe}{C}{\ic \pp{97}\c 330}
+\indexentry {0}{OE}{C}{\ic \pp{97}\c 330}
+\indexentry {0}{offinterlineskip}{C}{\ic 92\c \pp{135}\c 167\c 330}
+\indexentry {0}{oint}{C}{\ic \pp{194}\c 330}
+\indexentry {0}{oldstyle}{C}{\ic \pp{209}\c 330}
+\indexentry {0}{omega}{C}{\ic \pp{187}\c 330}
+\indexentry {0}{Omega}{C}{\ic \pp{187}\c 330}
+\indexentry {0}{omicron}{N}{\ic 188}
+\indexentry {0}{ominus}{C}{\ic \pp{189}\c 330}
+\indexentry {0}{omit}{C}{\ic \pp{181}\c 330}
+\indexentry {0}{openin}{C}{\ic 63\c \pp{247}\c 248\c 330}
+\indexentry {0}{opening}{N}{\ic 191}
+\indexentry {0}{openout}{C}{\ic 63\c \pp{249}\c 330}
+\indexentry {1}{whatsit produced by}{N}{\ic 95}
+\indexentry {1}{with {\tt\\immediate}}{N}{\ic 250}
+\indexentry {0}{openup}{C}{\ic \pp{135}\c 183\c 330}
+\indexentry {0}{operating system}{N}{\ic 62\c 63}
+\indexentry {0}{operations}{N}{\ic 189--190}
+\indexentry {0}{operators}{N}{\ic 126}
+\indexentry {1}{large}{N}{\ic 194--196}
+\indexentry {0}{oplus}{C}{\ic \pp{189}\c 330}
+\indexentry {0}{or}{C}{\ic 330}
+\indexentry {0}{ordinary horizontal mode}{N}{\ic 69\c 81}
+\indexentry {0}{ordinary mode}{N}{\ic \pp{83}}
+\indexentry {0}{ordinary symbol}{N}{\ic 188}
+\indexentry {0}{ordinary vertical mode}{N}{\ic 81\c 94}
+\indexentry {0}{origin}{N}{\see{page origin}}
+\indexentry {0}{oslash}{C}{\ic \pp{189}\c 330}
+\indexentry {0}{other}{C}{\ic \pp{291}}
+\indexentry {0}{other characters}{N}{\ic 53\c 56}
+\indexentry {0}{otimes}{C}{\ic \pp{189}\c 330}
+\indexentry {0}{outer}{N}{\ic \pp{83}\c 232}
+\indexentry {0}{outer}{C}{\ic 83\c \pp{232}\c 236\c 279\c 330}
+\indexentry {0}{output}{C}{\ic 84\c \pp{148}\c 330}
+\indexentry {0}{output devices}{N}{\ic 8}
+\indexentry {0}{output files}{N}{\ic 249--251}
+\indexentry {0}{output routine}{N}{\ic \pp{83--84}\c 147\c 148--149}
+\indexentry {1}{default in \plainTeX}{N}{\ic 148}
+\indexentry {1}{insertions, treatment of}{N}{\ic 70}
+\indexentry {1}{meaning of \b\tt\\insertpenalties\e\ in}{N}{\ic 139}
+\indexentry {0}{output streams}{N}{\ic 63\c \pp{84}}
+\indexentry {1}{closing}{N}{\ic 249}
+\indexentry {1}{opening}{N}{\ic 249}
+\indexentry {1}{reserved by \b\tt\\newwrite\e}{N}{\ic 244}
+\indexentry {1}{writing}{N}{\ic 249}
+\indexentry {0}{<output>}{T}{\ic 288}
+\indexentry {0}{outputpenalty}{C}{\ic \pp{149}\c 330}
+\indexentry {0}{over}{C}{\ic \pp{200}\c 204\c 330}
+\indexentry {0}{overbrace}{C}{\ic \pp{202}\c 212\c 330}
+\indexentry {0}{overfull boxes}{N}{\ic 124\c 268--270}
+\indexentry {0}{overfullrule}{C}{\ic \pp{170}\c 330}
+\indexentry {0}{overlapping text}{N}{\ic 109}
+\indexentry {0}{overleftarrow}{C}{\ic \pp{202}\c 330}
+\indexentry {0}{overline}{C}{\ic \pp{202}\c 330}
+\indexentry {0}{overprinting}{N}{\ic 109}
+\indexentry {0}{overrightarrow}{C}{\ic \pp{202}\c 330}
+\indexentry {0}{overwithdelims}{C}{\ic 58\c \pp{201}\c 330}
+\indexentry {0}{owns}{C}{\ic \pp{190}\c 330}
+\indexgroup P
+\secondprinting{\vskip1.5\baselineskip}
+\indexentry {0}{\char `\P}{C}{\ic \pp{98}\c 331}
+\indexentry {0}{page breaks}{N}{\ic \pp{85--86}\c 136--140}
+\indexentry {1}{bad}{N}{\ic 265--268}
+\indexentry {1}{badness for}{N}{\ic 50}
+\indexentry {1}{encouraging or discouraging}{N}{\ic 136--138}
+\indexentry {1}{glue at}{N}{\ic 268}
+\indexentry {1}{in split lists}{N}{\ic 149}
+\indexentry {1}{inserted by \TeX's stomach}{N}{\ic 17}
+\indexentry {1}{insertions at}{N}{\ic 70}
+\indexentry {1}{kerns at}{N}{\ic 157}
+\indexentry {1}{parameters for}{N}{\ic 138--140}
+\indexentry {1}{tracing}{N}{\ic 259}
+\indexentry {0}{page builder}{N}{\ic 84\c \pp{86}}
+\indexentry {0}{page dimensions}{N}{\ic 140}
+\indexentry {0}{page footers}{N}{\see{footers}}
+\indexentry {0}{page headers}{N}{\see{headers}}
+\indexentry {0}{page layout}{N}{\ic \pp{86}}
+\indexentry {0}{page numbering}{N}{\ic 90\c 142--143}
+\indexentry {0}{page origin}{N}{\ic 140}
+\indexentry {0}{pagedepth}{C}{\ic \pp{139}\c 331}
+\indexentry {0}{pagefilllstretch}{C}{\ic \pp{140}\c 331}
+\indexentry {0}{pagefillstretch}{C}{\ic \pp{140}\c 331}
+\indexentry {0}{pagefilstretch}{C}{\ic \pp{140}\c 331}
+\indexentry {0}{pagegoal}{C}{\ic \pp{139}\c 140\c 149\c 331}
+\indexentry {0}{pageinsert}{C}{\ic 70\c \pp{146}\c 147\c 331}
+\indexentry {0}{pageno}{C}{\ic \pp{142}\c 143\c 331}
+\indexentry {0}{pages}{N}{\ic 17\c \pp{84--85}}
+\indexentry {1}{assembled in \TeX's stomach}{N}{\ic 47}
+\indexentry {0}{pageshrink}{C}{\ic \pp{140}\c 331}
+\indexentry {0}{pagestretch}{C}{\ic \pp{140}\c 331}
+\indexentry {0}{pagetotal}{C}{\ic \pp{139}\c 331}
+\indexentry {0}{Palatino fonts}{N}{\ic 34\c 64}
+\indexentry {0}{par}{C}{\ic 86\c \pp{110}\c 111\c 331}
+\indexentry {1}{ending a paragraph with}{N}{\ic 86}
+\indexentry {1}{from empty line}{N}{\ic 91\c 105}
+\indexentry {1}{in macro arguments}{N}{\ic 231}
+\indexentry {1}{when changing paragraph shape}{N}{\ic 272}
+\indexentry {0}{paragraph skip}{N}{\ic 141}
+\indexentry {0}{paragraphs}{N}{\ic \pp{86--87}}
+\indexentry {1}{ending}{N}{\ic 12\c 22}
+\indexentry {1}{glue at end of}{N}{\ic 111}
+\indexentry {1}{glue between}{N}{\ic 141}
+\indexentry {1}{indenting}{N}{\see{indentation}}
+\indexentry {1}{narrow}{N}{\ic 24\c 114}
+\indexentry {1}{shaping}{N}{\ic 110--120\c 272}
+\indexentry {1}{starting}{N}{\ic 110}
+\indexentry {0}{parallel}{C}{\ic \pp{190}\c 331}
+\indexentry {0}{parameters}{N}{\ic \pp{87--88}}
+\indexentry {1}{and arguments}{N}{\ic 48}
+\indexentry {1}{as commands}{N}{\ic 4\c 12}
+\indexentry {1}{assignments to}{N}{\ic 49}
+\indexentry {1}{delimited}{N}{\ic 77}
+\indexentry {1}{indicated by \b\tt\#\e}{N}{\ic 53}
+\indexentry {1}{like registers}{N}{\ic 89}
+\indexentry {1}{undelimited}{N}{\ic 76}
+\indexentry {1}{using \b\tt\\the\e\ with}{N}{\ic 234}
+\indexentry {0}{parentheses}{N}{\ic 58\c 204}
+\indexentry {0}{parfillskip}{C}{\ic \pp{111}\c 331}
+\indexentry {0}{parindent}{C}{\ic 4\c 87\c \pp{113}\c 331}
+\indexentry {1}{indentation for itemized lists}{N}{\ic 130}
+\indexentry {0}{parshape}{C}{\ic 87\c 117\c \pp{118}\c 331}
+\indexentry {0}{parskip}{C}{\ic 111\c 112\c 113\c \pp{141}\c 267\c 269\c 331}
+\indexentry {0}{partial}{C}{\ic \pp{188}\c 331}
+\indexentry {0}{Patashnik, Oren}{N}{\ic 19}
+\indexentry {0}{pausing}{C}{\ic \pp{253}\c 331}
+\indexentry {0}{penalties}{N}{\ic \pp{88}}
+\indexentry {1}{in horizontal lists}{N}{\ic 74}
+\indexentry {1}{in vertical lists}{N}{\ic 85}
+\indexentry {1}{last penalty in a list}{N}{\ic 171}
+\indexentry {0}{penalty}{C}{\ic \pp{121}\c \pp{136}\c 331}
+\indexentry {0}{percentchar}{C}{\ic 292}
+\indexentry {0}{period}{N}{\ic 12\c 13}
+\indexentry {0}{perp}{C}{\ic \pp{190}\c 331}
+\indexentry {0}{phantom}{C}{\ic \pp{168}\c 331}
+\indexentry {0}{phantoms}{N}{\ic 168--169}
+\indexentry {0}{phi}{C}{\ic \pp{187}\c 331}
+\indexentry {0}{Phi}{C}{\ic \pp{187}\c 331}
+\indexentry {0}{pi}{C}{\ic \pp{187}\c 331}
+\indexentry {0}{Pi}{C}{\ic \pp{187}\c 194\c 331}
+\indexentry {0}{pica}{N}{\ic 60}
+\indexentry {0}{pixel file}{N}{\ic 65}
+\indexentry {0}{\pkfile}{N}{\ic 8\c 65}
+\indexentry {0}{plainoutput}{C}{\ic \pp{148}\c 331}
+\indexentry {0}{\plainTeX}{N}{\ic 3\c 8\c 9\c \pp{88}}
+\indexentry {1}{font families in}{N}{\ic 62}
+\indexentry {0}{pm}{C}{\ic \pp{189}\c 332}
+\indexentry {0}{pmatrix}{C}{\ic \pp{205}\c 332}
+\indexentry {0}{pmod}{C}{\ic \pp{194}\c 332}
+\indexentry {0}{poetry, typesetting}{N}{\ic 122}
+\indexentry {0}{point}{N}{\ic 60}
+\indexentry {0}{postdisplaypenalty}{C}{\ic \pp{138}\c 332}
+\indexentry {0}{pound sterling}{N}{\ic 98}
+\indexentry {0}{Pr}{C}{\ic \pp{193}\c 332}
+\indexentry {0}{preamble}{N}{\ic \pp{45}\c 178\c 179}
+\indexentry {0}{prec}{C}{\ic \pp{190}\c 191\c 332}
+\indexentry {0}{preceq}{C}{\ic \pp{190}\c 191\c 332}
+\indexentry {0}{predisplaypenalty}{C}{\ic \pp{138}\c 332}
+\indexentry {0}{predisplaysize}{C}{\ic \pp{216}\c 332}
+\indexentry {0}{preloaded}{N}{\ic 65}
+\indexentry {0}{pretolerance}{C}{\ic \pp{123}\c 332}
+\indexentry {0}{prevdepth}{C}{\ic 133\c \pp{134}\c 332}
+\indexentry {0}{prevgraf}{C}{\ic \pp{120}\c 332}
+\indexentry {0}{previewer}{N}{\ic 8}
+\indexentry {0}{prime}{C}{\ic \pp{188}\c 332}
+\indexentry {0}{primitive}{N}{\ic \pp{88}}
+\indexentry {1}{command}{N}{\ic 3\c 48\c 313}
+\indexentry {1}{control sequence}{N}{\ic 57}
+\indexentry {0}{printable characters}{N}{\ic 49}
+\indexentry {0}{printers}{N}{\ic 8}
+\indexentry {0}{proclaim}{C}{\ic \pp{131}\c 332}
+\indexentry {0}{prod}{C}{\ic \pp{194}\c 332}
+\indexentry {0}{programming features}{N}{\ic 221}
+\indexentry {0}{propto}{C}{\ic \pp{190}\c 332}
+\indexentry {0}{psi}{C}{\ic \pp{187}\c 332}
+\indexentry {0}{Psi}{C}{\ic \pp{187}\c 332}
+\indexentry {0}{punctuation}{N}{\ic 13\c 22}
+\indexentry {0}{punctuation in math formulas}{N}{\ic 196}
+\indexentry {0}{\pxlfile}{N}{\ic 8}
+\indexgroup Q
+\indexentry {0}{qquad}{C}{\ic \pp{154}\c 332}
+\indexentry {0}{quad}{C}{\ic \pp{154}\c 332}
+\indexentry {0}{question mark}{N}{\ic 13}
+\indexentry {0}{quotation marks}{N}{\ic 14\c 22}
+\indexgroup R
+\indexentry {0}{radical}{C}{\ic \pp{207}\c 332}
+\indexentry {0}{ragged left}{N}{\ic 71\c 115}
+\indexentry {0}{ragged right}{N}{\ic 71\c 116}
+\indexentry {0}{raggedbottom}{C}{\ic \pp{137}\c 332}
+\indexentry {0}{raggedright}{C}{\ic 71\c \pp{116}\c 269\c 332}
+\indexentry {0}{raise}{C}{\ic 52\c \pp{166}\c 332}
+\indexentry {0}{rangle}{C}{\ic 59\c \pp{191}\c 332}
+\indexentry {0}{rbrace}{C}{\ic 59\c \pp{191}\c 332}
+\indexentry {0}{rbrack}{C}{\ic 59\c \pp{98}\c \pp{191}\c 332}
+\indexentry {0}{rceil}{C}{\ic 59\c \pp{191}\c 332}
+\indexentry {0}{Re}{C}{\ic \pp{188}\c 332}
+\indexentry {0}{read}{C}{\ic 62\c \pp{248}\c 332}
+\indexentry {0}{reading a file}{N}{\ic 248}
+\indexentry {0}{readreffile}{C}{\ic \pp{303}}
+\indexentry {0}{readtocfile}{C}{\ic \pp{301}}
+\indexentry {0}{recent contributions}{N}{\ic 84}
+\indexentry {0}{recursive macros}{N}{\see{macros, recursive}}
+\indexentry {0}{reference mark}{N}{\ic 145}
+\indexentry {0}{reference point}{N}{\ic 51--52\c \pp{88}}
+\indexentry {0}{\<register>}{N}{\ic 4}
+\indexentry {0}{registers}{N}{\ic \pp{89--90}\c 242--246}
+\indexentry {1}{arithmetic in}{N}{\ic 245--246}
+\indexentry {1}{assignment to}{N}{\ic 49}
+\indexentry {1}{parameters as}{N}{\ic 4\c 12\c 88}
+\indexentry {1}{reserving}{N}{\ic 244--245}
+\indexentry {1}{with \b\tt\\the\e}{N}{\ic 234}
+\indexentry {0}{relations}{N}{\ic 126\c 190--191}
+\indexentry {1}{putting formulas above}{N}{\ic 202}
+\indexentry {0}{relax}{C}{\ic 9\c \pp{241}\c 332}
+\indexentry {0}{relpenalty}{C}{\ic \pp{126}\c 332}
+\indexentry {0}{repeat}{C}{\ic \pp{240}\c 333}
+\indexentry {0}{repeated actions}{N}{\ic 240--241}
+\indexentry {0}{resident fonts}{N}{\ic 222}
+\indexentry {0}{restricted horizontal mode}{N}{\ic 69\c 81}
+\indexentry {0}{restricted mode}{N}{\ic \pp{90}}
+\indexentry {1}{horizontal}{N}{\ic 272}
+\indexentry {0}{result file}{N}{\ic 62}
+\indexentry {0}{revision bars}{N}{\ic \r7\c 30}
+\indexentry {0}{rfloor}{C}{\ic 59\c \pp{191}\c 333}
+\indexentry {0}{rgroup}{C}{\ic \pp{204}\c 333}
+\indexentry {0}{rho}{C}{\ic \pp{187}\c 333}
+\indexentry {0}{right}{C}{\ic 58\c \pp{204}\c 333}
+\indexentry {0}{right margin}{N}{\ic 66}
+\indexentry {0}{rightarrow}{C}{\ic \pp{192}\c 333}
+\indexentry {0}{Rightarrow}{C}{\ic \pp{192}\c 333}
+\indexentry {0}{rightarrowfill}{C}{\ic \pp{175}\c 333}
+\indexentry {0}{rightharpoondown}{C}{\ic \pp{192}\c 333}
+\indexentry {0}{rightharpoonup}{C}{\ic \pp{192}\c 333}
+\indexentry {0}{righthyphenmin}{C}{\ic 18\c \pp{128}\c 333}
+\indexentry {0}{rightleftharpoons}{C}{\ic \pp{192}\c 333}
+\indexentry {0}{rightline}{C}{\ic 68\c \pp{108}\c 333}
+\indexentry {0}{rightskip}{C}{\ic 71\c \pp{115}\c 333}
+\indexentry {0}{rlap}{C}{\ic \pp{109}\c 333}
+\indexentry {0}{rm}{C}{\ic \pp{103}\c 333}
+\indexentry {0}{rmoustache}{C}{\ic \pp{212}\c 333}
+\indexentry {0}{Roman numerals}{N}{\ic 224}
+\indexentry {0}{romannumeral}{C}{\ic 83\c \pp{224}\c 333}
+\indexentry {0}{root}{C}{\ic \pp{207}\c 333}
+\indexentry {0}{row}{N}{\ic 179}
+\indexentry {0}{rq}{C}{\ic \pp{98}\c 333}
+\indexentry {0}{rules}{N}{\ic \pp{90--91}\c 172--173\c 273}
+\indexentry {1}{thickness of}{N}{\ic 292}
+\indexentry {0}{running \TeX}{N}{\ic 9\c 252--253}
+\indexgroup S
+\indexentry {0}{\char `\S}{C}{\ic \pp{98}\c 333}
+\indexentry {0}{sb}{C}{\ic \pp{197}\c 333}
+\indexentry {0}{scale factor}{N}{\ic 223}
+\indexentry {0}{scaled point}{N}{\ic 60}
+\indexentry {0}{script size}{N}{\ic 62\c \pp{91}}
+\indexentry {0}{script style}{N}{\ic 93\c 197\c 198\c 210}
+\indexentry {0}{scriptfont}{C}{\ic 62\c \pp{210}\c 333}
+\indexentry {0}{scriptscript size}{N}{\ic 62\c \pp{91}}
+\indexentry {0}{scriptscript style}{N}{\ic 93\c 197\c 198\c 210}
+\indexentry {0}{scriptscriptfont}{C}{\ic 62\c \pp{210}\c 333}
+\indexentry {0}{scriptscriptstyle}{C}{\ic 93\c 197\c \pp{198}\c 333}
+\indexentry {0}{scriptspace}{C}{\ic \pp{218}\c 333}
+\indexentry {0}{scriptstyle}{C}{\ic 93\c 197\c \pp{198}\c 333}
+\indexentry {0}{scrollmode}{C}{\ic \pp{252}\c 333}
+\indexentry {0}{searrow}{C}{\ic \pp{192}\c 333}
+\indexentry {0}{sec}{C}{\ic \pp{193}\c 333}
+\indexentry {0}{section headings}{N}{\ic 129}
+\indexentry {0}{setbox}{C}{\ic \pp{164}\c 333}
+\indexentry {0}{setlanguage}{C}{\ic 18\c 95\c \pp{128}\c 334}
+\indexentry {0}{setminus}{C}{\ic \pp{189}\c 334}
+\indexentry {0}{settabs}{C}{\ic 44--45\c \pp{176}\c 334}
+\indexentry {0}{setuplistinghook}{C}{\ic \pp{300}}
+\indexentry {0}{sevenbf}{C}{\ic \pp{102}\c 334}
+\indexentry {0}{seveni}{C}{\ic \pp{102}\c 334}
+\indexentry {0}{sevenrm}{C}{\ic \pp{102}\c 334}
+\indexentry {0}{sevensy}{C}{\ic \pp{102}\c 334}
+\indexentry {0}{sfcode}{C}{\ic \pp{107}\c 334}
+\indexentry {0}{shape file}{N}{\ic 8\c 65\c 78}
+\indexentry {0}{sharp}{C}{\ic \pp{188}\c 334}
+\indexentry {0}{shipout}{C}{\ic 63\c 84\c \pp{148}\c 260\c 334}
+\indexentry {1}{{\tt\\count} registers displayed at}{N}{\ic 142}
+\indexentry {0}{show}{C}{\ic \pp{253}\c 280\c 334}
+\indexentry {0}{showbox}{C}{\ic \pp{253}\c 256\c 261\c 334}
+\indexentry {0}{showboxbreadth}{C}{\ic 254\c 258\c \pp{261}\c 334}
+\indexentry {0}{showboxdepth}{C}{\ic 254\c 258\c \pp{261}\c 334}
+\indexentry {0}{showhyphens}{C}{\ic \pp{128}\c 334}
+\indexentry {0}{showlists}{C}{\ic \pp{253}\c 256\c 261\c 334}
+\indexentry {0}{showthe}{C}{\ic 90\c \pp{253}\c 334}
+\indexentry {0}{shrink}{N}{\ic 66--68\c \pp{91}}
+\indexentry {0}{sigma}{C}{\ic \pp{187}\c 334}
+\indexentry {0}{Sigma}{C}{\ic \pp{187}\c 194\c 334}
+\indexentry {0}{sim}{C}{\ic \pp{190}\c 191\c 334}
+\indexentry {0}{simeq}{C}{\ic \pp{190}\c 191\c 334}
+\indexentry {0}{sin}{C}{\ic \pp{193}\c 334}
+\indexentry {0}{singlecolumn}{C}{\ic \pp{309}}
+\indexentry {0}{sinh}{C}{\ic \pp{193}\c 334}
+\indexentry {0}{skew}{C}{\ic \pp{212}\c 334}
+\indexentry {0}{skewchar}{C}{\ic \pp{213}\c 234\c 334}
+\indexentry {0}{skip}{C}{\ic \pp{242}\c 246\c 334}
+\indexentry {0}{skip registers}{N}{\ic 243}
+\indexentry {1}{reserved by \b\tt\\newskip\e}{N}{\ic 244}
+\indexentry {0}{skipdef}{C}{\ic \pp{245}\c 334}
+\indexentry {0}{sl}{C}{\ic \pp{103}\c 334}
+\indexentry {0}{slash}{C}{\ic 74\c \pp{122}\c 334}
+\indexentry {0}{slfam}{C}{\ic \pp{210}\c 334}
+\indexentry {0}{smallbreak}{C}{\ic \pp{137}\c 334}
+\indexentry {0}{smallint}{C}{\ic \pp{194}\c 334}
+\indexentry {0}{smallskip}{C}{\ic 137\c \pp{154}\c 334}
+\indexentry {0}{smallskipamount}{C}{\ic \pp{155}\c 335}
+\indexentry {0}{smash}{C}{\ic \pp{169}\c 335}
+\indexentry {0}{smile}{C}{\ic \pp{190}\c 335}
+\indexentry {0}{solidus}{N}{\ic 74\c 122}
+\indexentry {0}{source file}{N}{\ic 62}
+\indexentry {0}{sp}{C}{\ic \pp{197}\c 335}
+\indexentry {0}{space}{N}{\ic \pp{91--92}}
+\indexentry {1}{in math formulas}{N}{\ic 214--216}
+\indexentry {1}{lost}{N}{\ic 270}
+\indexentry {1}{producing}{N}{\ic 153--159}
+\indexentry {1}{unwanted}{N}{\ic 270--271}
+\indexentry {0}{space}{C}{\ic \pp{105}\c 281\c 335}
+\indexentry {0}{space characters}{N}{\ic 22\c 293}
+\indexentry {1}{category code of}{N}{\ic 53}
+\indexentry {0}{space factor}{N}{\ic 107}
+\indexentry {0}{spacefactor}{C}{\ic \pp{107}\c 335}
+\indexentry {0}{spaces}{N}{\ic 12--13}
+\indexentry {1}{interword}{N}{\ic 66\c 104--108}
+\indexentry {1}{visible}{N}{\ic \pp{3}}
+\indexentry {0}{spaceskip}{C}{\ic \pp{107}\c 335}
+\indexentry {0}{spacesub}{C}{\ic \pp{293}}
+\indexentry {0}{spacing}{N}{}
+\indexentry {1}{adjusting with kerns}{N}{\ic 71}
+\indexentry {1}{interline}{N}{\ic 28}
+\indexentry {0}{spadesuit}{C}{\ic \pp{188}\c 335}
+\indexentry {0}{span}{C}{\ic \pp{181}\c 335}
+\indexentry {0}{special}{C}{\ic 95\c \pp{250}\c 335}
+\indexentry {0}{special characters}{N}{\ic 98}
+\indexentry {0}{special symbols}{N}{\ic 62\c 97}
+\indexentry {0}{Spivak, Michael~D.}{N}{\ic 18}
+\indexentry {0}{splitbotmark}{C}{\ic 80\c \pp{144}\c 335}
+\indexentry {0}{splitfirstmark}{C}{\ic 80\c \pp{144}\c 335}
+\indexentry {0}{splitmaxdepth}{C}{\ic \pp{150}\c 335}
+\indexentry {0}{splittopskip}{C}{\ic \pp{150}\c 335}
+\indexentry {0}{sqcap}{C}{\ic \pp{189}\c 335}
+\indexentry {0}{sqcup}{C}{\ic \pp{189}\c 335}
+\indexentry {0}{sqrt}{C}{\ic \pp{206}\c 335}
+\indexentry {0}{sqsubseteq}{C}{\ic \pp{190}\c 191\c 335}
+\indexentry {0}{sqsupseteq}{C}{\ic \pp{190}\c 191\c 335}
+\indexentry {0}{ss}{C}{\ic \pp{97}\c 335}
+\indexentry {0}{stacking subformulas}{N}{\ic 200--202}
+\indexentry {0}{star}{C}{\ic \pp{189}\c 335}
+\indexentry {0}{stomach}{N}{\ic 16\c 46\c \pp{47}\seealso{\anatomy}}
+\indexentry {0}{stretch}{N}{\ic 66--68\c \pp{92}}
+\indexentry {0}{string}{C}{\ic \pp{226}\c 233\c 335}
+\indexentry {0}{strut}{C}{\ic 46\c 92\c \pp{167}\c 168\c 335}
+\indexentry {0}{struts}{N}{\ic \pp{92}\c 135\c 167--168}
+\indexentry {1}{in vertical alignments}{N}{\ic 179}
+\indexentry {0}{styles}{N}{\ic \pp{92--93}\c 198--199}
+\indexentry {0}{subscripts}{N}{\ic 53\c 197}
+\indexentry {0}{subset}{C}{\ic \pp{190}\c 191\c 335}
+\indexentry {0}{subseteq}{C}{\ic \pp{190}\c 191\c 335}
+\indexentry {0}{succ}{C}{\ic \pp{190}\c 191\c 335}
+\indexentry {0}{succeq}{C}{\ic \pp{190}\c 191\c 335}
+\indexentry {0}{sum}{C}{\ic \pp{194}\c 335}
+\indexentry {0}{sup}{C}{\ic \pp{193}\c 335}
+\indexentry {0}{supereject}{C}{\ic \pp{137}\c 335}
+\indexentry {0}{superscripts}{N}{\ic 53\c 197}
+\indexentry {0}{supset}{C}{\ic \pp{190}\c 191\c 335}
+\indexentry {0}{supseteq}{C}{\ic \pp{190}\c 191\c 335}
+\indexentry {0}{surd}{C}{\ic \pp{188}\c 336}
+\indexentry {0}{swarrow}{C}{\ic \pp{192}\c 336}
+\indexgroup T
+\indexentry {0}{\char `\t}{C}{\ic \pp{100}\c 336}
+\indexentry {0}{tabalign}{C}{\ic \pp{176}\c 336}
+\indexentry {0}{tabbing alignments}{N}{\ic 176--177}
+\indexentry {0}{table of contents}{N}{\ic 301}
+\indexentry {0}{tables}{N}{\ic 44--46\seealso{alignments}}
+\indexentry {0}{tabs}{N}{\ic 53\c 176}
+\indexentry {0}{tabskip}{C}{\ic 46\c \pp{184}\c 336}
+\indexentry {0}{tan}{C}{\ic \pp{193}\c 336}
+\indexentry {0}{tanh}{C}{\ic \pp{193}\c 336}
+\indexentry {0}{tau}{C}{\ic \pp{187}\c 336}
+\indexentry {0}{template}{N}{\ic \pp{45}\c 178--182}
+\indexentry {0}{tenbf}{C}{\ic \pp{102}\c 336}
+\indexentry {0}{tenex}{C}{\ic \pp{102}\c 336}
+\indexentry {0}{teni}{C}{\ic \pp{102}\c 336}
+\indexentry {0}{tenit}{C}{\ic \pp{102}\c 336}
+\indexentry {0}{tenrm}{C}{\ic \pp{102}\c 336}
+\indexentry {0}{tensl}{C}{\ic \pp{102}\c 336}
+\indexentry {0}{tensy}{C}{\ic \pp{102}\c 336}
+\indexentry {0}{tentt}{C}{\ic \pp{102}\c 336}
+\indexentry {0}{terminal}{N}{\ic 254}
+\indexentry {0}{testfileexistence}{C}{\ic \pp{295}}
+\indexentry {0}{TeX}{C}{\ic \pp{98}\c 336}
+\indexentry {0}{\texbook}{N}{\ic \r8\c 43}
+\indexentry {0}{\TeXMeX}{N}{\ic \pp{93}}
+\indexentry {0}{text editor}{N}{\ic 7}
+\indexentry {0}{text math}{N}{\ic 16\c \pp{93}}
+\indexentry {0}{text math mode}{N}{\ic 80\c 81}
+\indexentry {0}{text size}{N}{\ic 62\c \pp{93}}
+\indexentry {0}{text style}{N}{\ic 93\c 194\c 198\c 210}
+\indexentry {0}{textfont}{C}{\ic 62\c \pp{210}\c 336}
+\indexentry {0}{textindent}{C}{\ic \pp{112}\c 336}
+\indexentry {0}{textstyle}{C}{\ic 93\c \pp{198}\c 336}
+\indexentry {0}{\tfmfile}{N}{\ic 8\c 64\c 72\c 221}
+\indexentry {0}{the}{C}{\ic 226\c \pp{234}\c 242\c 243\c 336}
+\indexentry {0}{theorems}{N}{\ic 32\c 131}
+\indexentry {0}{theta}{C}{\ic \pp{187}\c 336}
+\indexentry {0}{Theta}{C}{\ic \pp{187}\c 336}
+\indexentry {0}{thickmuskip}{C}{\ic \pp{214}\c 336}
+\indexentry {0}{thinmuskip}{C}{\ic \pp{214}\c 336}
+\indexentry {0}{thinspace}{C}{\ic \pp{153}\c 336}
+\indexentry {0}{tie}{N}{\ic 13\c 74\c 105}
+\indexentry {0}{tie-after accent}{N}{\ic 100}
+\indexentry {0}{tilde}{C}{\ic \pp{199}\c 336}
+\indexentry {0}{tilde accent}{N}{\ic 100\c 199}
+\indexentry {0}{time}{C}{\ic \pp{224}\c 297\c 336}
+\indexentry {0}{time of day}{N}{\ic 224\c 297}
+\indexentry {0}{times}{C}{\ic \pp{189}\c 336}
+\indexentry {0}{timestamp}{C}{\ic \pp{297}}
+\indexentry {0}{timestring}{C}{\ic \pp{297}}
+\indexentry {0}{to}{C}{\ic \pp{192}\c 336}
+\indexentry {0}{<to be read again>}{T}{\ic 285}
+\indexentry {0}{token registers}{N}{\ic 89\c 243}
+\indexentry {1}{reserved by \b\tt\\newtoks\e}{N}{\ic 244}
+\indexentry {0}{tokens}{N}{\ic 16\c \pp{93}}
+\indexentry {1}{as commands}{N}{\ic 56}
+\indexentry {1}{assembled from characters}{N}{\ic 47}
+\indexentry {1}{displayed by \b\tt\\show\e}{N}{\ic 253}
+\indexentry {1}{passed to \TeX's stomach}{N}{\ic 47}
+\indexentry {1}{showing the meaning of}{N}{\ic 226}
+\indexentry {0}{toks}{C}{\ic \pp{242}\c 336}
+\indexentry {0}{toksdef}{C}{\ic \pp{245}\c 336}
+\indexentry {0}{tokstostring}{C}{\ic \pp{292}}
+\indexentry {0}{tolerance}{C}{\ic \pp{123}\c 124\c 336}
+\indexentry {0}{top}{C}{\ic \pp{188}\c 336}
+\indexentry {0}{topglue}{C}{\ic 18\c \pp{156}\c 268\c 336}
+\indexentry {0}{topinsert}{C}{\ic 70\c \pp{146}\c 147\c 336}
+\indexentry {0}{topmark}{C}{\ic 79\c \pp{144}\c 336}
+\indexentry {0}{topskip}{C}{\ic \pp{141}\c 150\c 336}
+\indexentry {0}{tracing}{N}{\ic 253--261}
+\indexentry {0}{tracingall}{C}{\ic \pp{261}\c 337}
+\indexentry {0}{tracingboxes}{C}{\ic \pp{292}}
+\indexentry {0}{tracingcommands}{C}{\ic \pp{257}\c 337}
+\indexentry {0}{tracinglostchars}{C}{\ic \pp{257}\c 337}
+\indexentry {0}{tracingmacros}{C}{\ic \pp{258}\c 337}
+\indexentry {0}{tracingonline}{C}{\ic 254\c \pp{256}\c 257\c 258\c 259\c 260\c 261\c 337}
+\indexentry {0}{tracingoutput}{C}{\ic \pp{258}\c 261\c 337}
+\indexentry {0}{tracingpages}{C}{\ic \pp{259}\c 337}
+\indexentry {0}{tracingparagraphs}{C}{\ic \pp{259}\c 337}
+\indexentry {0}{tracingrestores}{C}{\ic \pp{260}\c 337}
+\indexentry {0}{tracingstats}{C}{\ic \pp{260}\c 337}
+\indexentry {0}{triangle}{C}{\ic \pp{188}\c 337}
+\indexentry {0}{triangleleft}{C}{\ic \pp{189}\c 337}
+\indexentry {0}{triangleright}{C}{\ic \pp{189}\c 337}
+\indexentry {0}{true}{T}{\ic 78}
+\indexentry {0}{tt}{C}{\ic \pp{103}\c 337}
+\indexentry {0}{ttfam}{C}{\ic \pp{210}\c 337}
+\indexentry {0}{ttraggedright}{C}{\ic \pp{116}\c 337}
+\indexentry {0}{\TUG}{N}{\ic 19}
+\indexentry {0}{TUGBoat}{N}{\ic 19}
+\indexentry {0}{type styles}{N}{\ic 103\c 210}
+\indexentry {0}{typewriter font}{N}{\ic 109}
+\indexgroup U
+\indexentry {0}{\char `\u}{C}{\ic \pp{100}\c 337}
+\indexentry {0}{uccode}{C}{\ic \pp{103}\c 337}
+\indexentry {0}{uchyph}{C}{\ic \pp{128}\c 337}
+\indexentry {0}{umlaut accent}{N}{\ic 100}
+\indexentry {0}{unbox}{C}{\ic 172}
+\indexentry {0}{uncatcodespecials}{C}{\ic \pp{291}}
+\indexentry {0}{undelimited arguments}{N}{\ic 48}
+\indexentry {0}{underbar}{C}{\ic \pp{163}\c 337}
+\indexentry {0}{underbrace}{C}{\ic \pp{202}\c 212\c 337}
+\indexentry {0}{underdot accent}{N}{\ic 100}
+\indexentry {0}{underfull boxes}{N}{\ic 268--270}
+\indexentry {0}{underline}{C}{\ic \pp{202}\c 337}
+\indexentry {0}{unhbox}{C}{\ic \pp{165}\c 337}
+\indexentry {0}{unhcopy}{C}{\ic \pp{165}\c 337}
+\indexentry {0}{units of measure}{N}{\ic 60\c 61\c \pp{93}}
+\indexentry {0}{unkern}{C}{\ic \pp{172}\c 337}
+\indexentry {0}{unnumberedlist}{C}{\ic \pp{298}}
+\indexentry {0}{unpenalty}{C}{\ic \pp{172}\c 337}
+\indexentry {0}{unskip}{C}{\ic \pp{172}\c 337}
+\indexentry {0}{unvbox}{C}{\ic \pp{165}\c 337}
+\indexentry {0}{unvcopy}{C}{\ic \pp{165}\c 337}
+\indexentry {0}{unwanted space}{N}{\ic 12}
+\indexentry {0}{uparrow}{C}{\ic 59\c \pp{192}\c 338}
+\indexentry {0}{Uparrow}{C}{\ic 59\c \pp{192}\c 338}
+\indexentry {0}{upbracefill}{C}{\ic \pp{211}\c 338}
+\indexentry {0}{updownarrow}{C}{\ic 59\c \pp{192}\c 338}
+\indexentry {0}{Updownarrow}{C}{\ic 59\c \pp{192}\c 338}
+\indexentry {0}{uplus}{C}{\ic \pp{189}\c 338}
+\indexentry {0}{upper limits}{N}{\ic 197}
+\indexentry {0}{uppercase}{N}{}
+\indexentry {1}{conversion to}{N}{\ic 103--104}
+\indexentry {0}{uppercase}{C}{\ic \pp{104}\c 338}
+\indexentry {0}{upsilon}{C}{\ic \pp{187}\c 338}
+\indexentry {0}{Upsilon}{C}{\ic \pp{187}\c 338}
+\indexgroup V
+\indexentry {0}{\char `\v}{C}{\ic \pp{100}\c 338}
+\indexentry {0}{vadjust}{C}{\ic \pp{120}\c 266\c 267\c 338}
+\indexentry {0}{valign}{C}{\ic 46\c \pp{179}\c 338}
+\indexentry {1}{grouping for}{N}{\ic 16}
+\indexentry {1}{inherently horizontal}{N}{\ic 94}
+\indexentry {1}{used in {\tt\\makecolumns}}{N}{\ic 308}
+\indexentry {0}{varepsilon}{C}{\ic \pp{187}\c 338}
+\indexentry {0}{varphi}{C}{\ic \pp{187}\c 338}
+\indexentry {0}{varpi}{C}{\ic \pp{187}\c 338}
+\indexentry {0}{varrho}{C}{\ic \pp{187}\c 338}
+\indexentry {0}{varsigma}{C}{\ic \pp{187}\c 338}
+\indexentry {0}{vartheta}{C}{\ic \pp{187}\c 338}
+\indexentry {0}{vbadness}{C}{\ic \pp{170}\c 338}
+\indexentry {0}{vbox}{C}{\ic 51\c 52\c 94\c \pp{161}\c 338}
+\indexentry {1}{fixing page breaks with}{N}{\ic 265}
+\indexentry {1}{overfull box from}{N}{\ic 269--270}
+\indexentry {0}{vboxes}{N}{\ic 51\c \pp{94}}
+\indexentry {1}{interline glue for}{N}{\ic 133}
+\indexentry {1}{testing for}{N}{\ic 238}
+\indexentry {1}{vertical mode for}{N}{\ic 94}
+\indexentry {1}{width determined by \b\tt\\hsize\e}{N}{\ic 114}
+\indexentry {0}{vcenter}{C}{\ic \pp{213}\c 297\c 338}
+\indexentry {0}{vdash}{C}{\ic \pp{190}\c 338}
+\indexentry {0}{vdots}{C}{\ic \pp{203}\c 338}
+\indexentry {0}{vec}{C}{\ic \pp{199}\c 338}
+\indexentry {0}{vector accent}{N}{\ic 199}
+\indexentry {0}{vee}{C}{\ic \pp{189}\c 338}
+\indexentry {0}{verbatim text}{N}{\ic 277}
+\indexentry {0}{verse, typesetting}{N}{\ic 122}
+\indexentry {0}{version number}{N}{\ic 225}
+\indexentry {0}{vert}{C}{\ic 59\c \pp{188}\c 338}
+\indexentry {0}{Vert}{C}{\ic 59\c \pp{188}\c 189\c 338}
+\indexentry {0}{vertical glue}{N}{\ic 155\c 156}
+\indexentry {0}{vertical lists}{N}{\ic 51\c 66\c \pp{94}}
+\indexentry {1}{can't contain horizontal commands}{N}{\ic 94}
+\indexentry {1}{inserting in paragraphs}{N}{\ic 120}
+\indexentry {1}{penalties in}{N}{\ic 88}
+\indexentry {1}{rule in}{N}{\ic 90}
+\indexentry {1}{vboxes formed from}{N}{\ic 94}
+\indexentry {0}{vertical mode}{N}{\ic 81\c \pp{94}}
+\indexentry {1}{rules in}{N}{\ic 173}
+\indexentry {1}{testing for}{N}{\ic 238}
+\indexentry {0}{vertical rules}{N}{\ic 90--91\c 172--173}
+\indexentry {0}{vertical skip}{N}{\ic 155}
+\indexentry {0}{vertical space}{N}{\ic 154--159}
+\indexentry {1}{reserving at top of page}{N}{\ic 267}
+\indexentry {0}{vfil}{C}{\ic \pp{157}\c 270\c 338}
+\indexentry {1}{filling a vbox}{N}{\ic 162}
+\indexentry {1}{needed with {\tt\\eject}}{N}{\ic 137}
+\indexentry {0}{vfill}{C}{\ic \pp{157}\c 266\c 338}
+\indexentry {0}{vfilneg}{C}{\ic \pp{159}\c 338}
+\indexentry {0}{vfootnote}{C}{\ic \pp{145}\c 147\c 309\c 338}
+\indexentry {0}{vfuzz}{C}{\ic \pp{171}\c 269\c 338}
+\indexentry {0}{vglue}{C}{\ic \pp{156}\c 157\c 338}
+\indexentry {0}{virtex}{T}{\ic 65\c 263}
+\indexentry {0}{visible space}{N}{\ic 104}
+\indexentry {0}{voffset}{C}{\ic 79\c 86\c \pp{140}\c 274\c 339}
+\indexentry {0}{vphantom}{C}{\ic \pp{169}\c 339}
+\indexentry {0}{vrule}{C}{\ic 90--91\c \pp{172}\c 273\c 339}
+\indexentry {1}{inherently horizontal}{N}{\ic 94}
+\indexentry {0}{vsize}{C}{\ic 79\c 86\c \pp{140}\c 274\c 339}
+\indexentry {1}{set by {\tt\\magnification}}{N}{\ic 223}
+\indexentry {0}{vskip}{C}{\ic 66\c \pp{155}\c 339}
+\indexentry {0}{vsplit}{C}{\ic 144\c \pp{149}\c 339}
+\indexentry {0}{vss}{C}{\ic \pp{158}\c 269\c 339}
+\indexentry {0}{vtop}{C}{\ic 51\c 52\c 94\c \pp{161}\c 339}
+\indexgroup W
+\indexentry {0}{wd}{C}{\ic \pp{167}\c 339}
+\indexentry {0}{wedge}{C}{\ic \pp{189}\c 339}
+\indexentry {0}{whatsit}{N}{\ic \pp{94--95}\c 128}
+\indexentry {0}{whitespace, preserving}{N}{\ic 278}
+\indexentry {0}{wide hat accent}{N}{\ic 199}
+\indexentry {0}{wide tilde accent}{N}{\ic 199}
+\indexentry {0}{widehat}{C}{\ic \pp{199}\c 339}
+\indexentry {0}{widetilde}{C}{\ic \pp{199}\c 339}
+\indexentry {0}{widow line}{N}{\ic 138}
+\indexentry {0}{widowpenalty}{C}{\ic \pp{138}\c 339}
+\indexentry {0}{width}{N}{\ic 51\c \pp{95}\c 167}
+\indexentry {0}{wlog}{C}{\ic \pp{261}\c 339}
+\indexentry {1}{expanded by {\tt\\edef} rules}{N}{\ic 231}
+\indexentry {0}{words run together}{N}{\ic 270}
+\indexentry {0}{wp}{C}{\ic \pp{188}\c 339}
+\indexentry {0}{wr}{C}{\ic \pp{189}\c 339}
+\indexentry {0}{write}{C}{\ic \pp{249}\c 339}
+\indexentry {1}{expanded by {\tt\\edef} rules}{N}{\ic 231}
+\indexentry {1}{expanded during {\tt\\shipout}}{N}{\ic 148}
+\indexentry {1}{expansion of {\tt\\'\it c} in}{N}{\ic 82}
+\indexentry {1}{output stream for}{N}{\ic 63}
+\indexentry {1}{whatsit produced by}{N}{\ic 95}
+\indexentry {1}{with {\tt\\immediate}}{N}{\ic 250}
+\indexentry {1}{writing \b\tt\%\e\ with}{N}{\ic 292}
+\indexentry {0}{<write>}{T}{\ic 288}
+\indexentry {0}{writetocentry}{C}{\ic \pp{301}}
+\indexentry {0}{writing a file}{N}{\ic 249}
+\indexgroup X
+\indexentry {0}{xdef}{C}{\ic 66\c 228\c \pp{231}\c 339}
+\indexentry {0}{xi}{C}{\ic \pp{187}\c 339}
+\indexentry {0}{Xi}{C}{\ic \pp{187}\c 339}
+\indexentry {0}{xleaders}{C}{\ic 72--73\c \pp{174}\c 339}
+\indexentry {0}{xrdef}{C}{\ic \pp{302}}
+\indexentry {0}{xref}{C}{\ic \pp{302}}
+\indexentry {0}{xrefn}{C}{\ic \pp{302}}
+\indexentry {0}{xspaceskip}{C}{\ic \pp{107}\c 339}
+\indexgroup Y
+\indexentry {0}{year}{C}{\ic \pp{225}\c 297\c 339}
+\indexgroup Z
+\indexentry {0}{Zapf, Hermann}{N}{\ic 34}
+\indexentry {0}{zeta}{C}{\ic \pp{187}\c 339}
diff --git a/Master/texmf-doc/doc/english/impatient/book.tex b/Master/texmf-doc/doc/english/impatient/book.tex
new file mode 100644
index 00000000000..9d656f7c998
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/book.tex
@@ -0,0 +1,47 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+% See file fdl.tex for copying conditions.
+
+% Top-level control.
+%
+\input macros
+% Here we override part of the configuration
+% since we're doing a full run.
+\rewritetocfiletrue % always do a table of contents
+\xrefwarningtrue
+\completebooktrue
+\edgetabsfalse
+\input frontm
+% (not for web) \edgetabstrue
+\settabdepth{\bigtab}
+\input usebook
+\input usingtex
+\input examples
+\nextedgetab
+\input concepts
+\nextedgetab
+\settabdepth{\smalltab}
+\input paras
+\nextedgetab
+\input pages
+\nextedgetab
+\input modes
+\nextedgetab
+\input math
+\nextedgetab
+\input genops
+\nextedgetab
+\settabdepth{\bigtab}
+\input tips
+\input errors
+\input usermacs
+\nextedgetab
+\input capsule
+\nextedgetab
+\backmatter
+\input fdl
+\input index
+\edgetabsfalse
+\input backm
+
+\bye
diff --git a/Master/texmf-doc/doc/english/impatient/capsule.tex b/Master/texmf-doc/doc/english/impatient/capsule.tex
new file mode 100644
index 00000000000..59e9a2bef09
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/capsule.tex
@@ -0,0 +1,1134 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+% See file fdl.tex for copying conditions.
+
+\input macros
+\chapter{Capsule summary \linebreak of commands}
+
+\chapterdef{capsule}
+
+This section contains one-line descriptions of the primitive \TeX\
+commands and the \TeX\ commands defined in \plainTeX. These include both
+control sequences and
+special characters.
+We've omitted those commands that are only intended for internal use
+in the
+\plainTeX\ definition (\knuth{Appendix~B}).
+Note that ordinary characters
+such as `|a|' or `|6|' are also commands, and indeed the most common
+ones \seeconcept{character}.
+
+To keep the descriptions brief, we've adopted
+certain conventions:
+
+\ulist
+
+\li An asterisk in front of a command indicates that the command is primitive,
+^^{primitive//command} i.e., built into the \TeX\ computer program
+\seeconcept{primitive}.
+
+\li The words ``music'', ``punctuation'', ``function'',
+``symbol'', ``relation'', ``delimiter'', or ``operator'' in a command
+description imply that the command is only legal in math modes.
+
+\li The verb ``display'' applies to information
+that \TeX\ sends to the ^{log file}, unless otherwise indicated. If
+|\tracingonline| is positive, \TeX\ also sends that output to the
+terminal. We use the noun ``display'' to refer to math displays (see
+\xref{display math}), i.e., material between |$$|'s.
+
+\li The phrase ``produce $x$'' indicates that the command will typeset
+$x$ and put the result in a box.
+We sometimes omit ``produce'' when the omission is unlikely to
+cause confusion. For example, we describe |\alpha| as ``math Greek
+letter $\alpha$'', not ``produce the math Greek letter $\alpha$''.
+\margin{Remove explanations of ``space'' and ``glue''}
+
+\endulist
+
+\begincapsum
+
+{\catcode `@ = \letter
+\caplineout {\\\visiblespace} {interword space}*{\@space}}%
+ {\catcode `\ =\other\ctsidxref{ }}
+\capcs ! {negative thin space for math}{}{\@shriek}
+\capcs " {umlaut accent for text, as in \"o}{}{\@quote}
+\capactwo # {introduce a macro parameter, or indicate where the text of
+ an entry goes in an alignment preamble}{}{@msharp:@asharp}
+\capcs # {produce \# character from current font}{}{\@pound}
+\capac $ {begin or end a math formula}{}{mathform}
+\capcs $ {produce \$ character from current font}{}{\@bucks}
+\capac % {begin a comment}*{comments}
+\capcs % {produce \% character from current font}{}{\@percent}
+\capac & {separate templates and entries in an alignment}{}{@and}
+\capcs & {produce \& character from current font}{}{\@and}
+\capac ' {prime symbol for math, as in $p'$}{}{@prime}
+\capcs ' {acute accent for text, as in \'e}{}{\@prime}
+\capcs * {multiplication symbol that allows a line break}{}{\@star}
+\capcs + {begin tabbed line}{}{\@plus}
+\capcs , {thin space for math}{}{\@comma}
+\capcs - {specify a legal hyphenation point}*{\@minus}
+\capcs . {dot accent for text, as in \.n}{}{\@dot}
+\capcs / {italic correction for the previous character}*{\@slash}
+\capcs ; {thick space for math}{}{\@semi}
+\capcs = {macron accent for text, as in \=r}{}{\@equal}
+\capac \ {begin a control sequence}*{@backslash}
+\capcs > {medium space for math}{}{\@greater}
+\capac ^ {produce a specified subformula as a superscript}{}{@hat}
+\capcs ^ {circumflex accent for text, as in \^o}{}{\@hat}
+{\catcode `@ = \letter
+\caplineout {\twocarets L}{equivalent to the |\\par| primitive}
+ {}{\@par}\ttidxref{^^L}
+\caplineout {\twocarets M}{an end-of-line}*{@newline}\ttidxref{^^M}
+}%
+\capac _ {produce a specified subformula as a subscript}{}{@underscore}
+\capcs _ {underscore: \_}{}{\@underscore}
+%x \capac ` {in a \<number> context, \ascii\ code for character that follows}*{@lquote}
+\capcs ` {grave accent for text, as in \`e}{}{\@lquote}
+\capac { {start a group}{}{@lbrace}
+\capcs { {left brace delimiter for math: $\{$}{}{\@lbrace}
+\capcs | {parallel lines for math: $\Vert$}{}{\@bar}
+\capac } {end a group}{}{@rbrace}
+\capcs } {right brace delimiter for math: $\}$}{}{\@rbrace}
+\capac ~ {interword space at which a line will not break}{}{@not}
+\capcs ~ {tilde accent for text, as in \~a}{}{\@not}
+\capcs aa {Scandinavian letter: \aa}{}{}
+\capcs AA {Scandinavian letter: \AA}{}{}
+\capcs above {produce a fraction with a bar of specified thickness}*{}
+\capcs abovedisplayshortskip {glue \TeX\ inserts before a display when the
+ previous line fits in the display's indentation, by
+ default 0\pt\ plus 3\pt}*{}
+\capcs abovedisplayskip {glue \TeX\ inserts before a display when the previous
+ line doesn't fit in the display's indentation, by default 12\pt\
+ plus 3\pt\ minus 9\pt}*{}
+\capcs abovewithdelims {produce a fraction with a bar of specified thickness
+ and surrounded by specified delimiters}*{}
+\capcs accent {put specified accent over the next character}*{}
+\capcs active {category code for active characters, viz., the number $13$}{}{}
+\capcs acute {acute accent for math, as in $\acute x$}{}{}
+\capcs adjdemerits {additional demerits for a line break which would result in
+ adjacent lines with incompatible word spacing, by default~10000}*{}
+\capcs advance {add a number to a |\\count| register}*{}
+\capcs advancepageno {if |\\pageno| is positive, add one;
+ if it's negative, subtract one}{}{}
+\capcs ae {\ae\ ligature}{}{}
+\capcs AE {\AE\ ligature}{}{}
+\capcs afterassignment {wait to expand the following token until
+ the next assignment is done}*{}
+\capcs aftergroup {wait to expand the following token until the end
+ of the current group}*{}
+\capcs aleph {only Hebrew letter for math: $\aleph$}{}{}
+\capcstwo allowbreak {do |\\penalty0|, i.e., allow a line or page break
+ where one could not ordinarily occur}{}{hallowbreak:vallowbreak}
+\capcs alpha {math Greek letter $\alpha$}{}{}
+\capcs amalg {amalgamation operator: $\amalg$}{}{}
+\capcs angle {angle symbol: $\angle$}{}{}
+\capcs approx {approximation relation: $\approx$}{}{}
+\capcs arccos {arc cosine function: $\arccos$}{}{}
+\capcs arcsin {arc sine function: $\arcsin$}{}{}
+\capcs arctan {arc tangent function: $\arctan$}{}{}
+\capcs arg {argument (phase) function: $\arg$}{}{}
+\capcs arrowvert {vertical portion of an extensible double arrow}{}{}
+\capcs Arrowvert {vertical portion of an extensible single arrow}{}{}
+\capcs ast {asterisk operator: $\ast$}{}{}
+\capcs asymp {asymptote relation: $\asymp$}{}{}
+\capcs atop {produce a fraction without a fraction bar}*{}
+\capcs atopwithdelims {produce a fraction without a fraction bar and
+ surrounded by specified delimiters}*{}
+\capcs b {bar-under accent for math, as in $\b x$}{}{}
+\capcs backslash {backslash symbol: $\backslash$}{}{}
+\capcs badness {the badness of the glue setting in the last box
+ made}*{}
+\capcs bar {bar accent for math, as in $\bar x$}{}{}
+\capcs baselineskip {glue for the normal vertical distance from one baseline
+ to the next, by default 12\pt}*{}
+\capcs batchmode {don't stop at errors and don't output to terminal}*{}
+\capcs begingroup {start a group to be ended by |\\endgroup|}*{}
+\capcs beginsection {begin a major subdivision of a document}{}%
+ {\@beginsection}
+\capcs belowdisplayshortskip {glue \TeX\ inserts after a display when the
+ previous line fits in the display's indentation,
+ by default 7\pt\ plus 0.3\pt\ minus 4\pt}*{}
+\capcs belowdisplayskip {glue \TeX\ inserts after a display when the previous
+ line doesn't fit in the display's indentation,
+ by default 12\pt\ plus 3\pt\ minus 9\pt}*{}
+\capcs beta {math Greek letter $\beta$}{}{}
+\capcs bf {use boldface, i.e., do |\\tenbf\\fam=\\bffam|}{}{}
+\capcs bffam {boldface family for math}{}{}
+\capcs bgroup {implicit beginning-of-group character}{}{}
+\capcs big {make the specified delimiter larger than an ordinary one, but
+ still small enough for text}{}{}
+\capcs Big {make the specified delimiter about 11.5\pt\ tall}{}{}
+\capcs bigbreak {indicate desirable page break with |\\penalty-200|
+ and produce |\\bigskipamount| glue}{}{}
+\capcs bigcap {large cap operator (no, it doesn't produce a large
+ capital letter!): $\bigcap$}{}{}
+\capcs bigcirc {large circle operator: $\bigcirc$}{}{}
+\capcs bigcup {large cup operator: $\bigcup$}{}{}
+\capcs bigg {make the specified delimiter about 14.5\pt\ tall}{}{}
+\capcs Bigg {make specified delimiter about 17.5\pt\ tall}{}{}
+\capcs biggl {sized like |\\bigg|, but spaced as an opening}{}{}
+\capcs Biggl {sized like |\\Bigg|, but spaced as an opening}{}{}
+\capcs biggm {sized like |\\bigg|, but spaced as a relation}{}{}
+\capcs Biggm {sized like |\\Bigg|, but spaced as a relation}{}{}
+\capcs biggr {sized like |\\bigg|, but spaced as a closing}{}{}
+\capcs Biggr {sized like |\\Bigg|, but spaced as a closing}{}{}
+\capcs bigl {sized like |\\big|, but spaced as an opening}{}{}
+\capcs Bigl {sized like |\\Big|, but spaced as an opening}{}{}
+\capcs bigm {sized like |\\big|, but spaced as a relation}{}{}
+\capcs Bigm {sized like |\\Big|, but spaced as a relation}{}{}
+\capcs bigodot {large circled dot operator: $\bigodot$}{}{}
+\capcs bigoplus {large circled plus operator: $\bigoplus$}{}{}
+\capcs bigotimes {large circled times operator: $\bigotimes$}{}{}
+\capcs bigr {sized like |\\big|, but spaced as a closing}{}{}
+\capcs Bigr {sized like |\\Big|, but spaced as a closing}{}{}
+\capcs bigskip {produce |\\bigskipamount| glue}{}{}
+\capcs bigskipamount {glue for a big vertical skip, by default 12\pt\
+ plus 4\pt\ minus 4\pt}{}{}
+\capcs bigsqcup {large square cup operator: $\bigsqcup$}{}{}
+\capcs bigtriangledown {triangle operator pointing downward:
+ $\bigtriangledown$}{}{}
+\capcs bigtriangleup {triangle operator pointing upward: $\bigtriangleup$}{}{}
+\capcs biguplus {large cupped plus operator: $\biguplus$}{}{}
+\capcs bigvee {large logical ``or'' operator: $\bigvee$}{}{}
+\capcs bigwedge {large logical ``and'' operator: $\bigwedge$}{}{}
+\capcs binoppenalty {additional penalty for breaking after a binary math
+ operator, by default~700}*{}
+\capcs bmod {modulus operator, as in $n \bmod 2$}{}{}
+\capcs bordermatrix {produce matrix with labelled rows and columns}{}{}
+\capcs bot {lattice bottom symbol: $\bot$}{}{}
+\capcs botmark {the last mark item on the page just boxed}*{}
+\capcs bowtie {bowtie relation: $\bowtie$}{}{}
+\capcs box {append the box in a specified box register
+ to the current list, and void the register}*{}
+\capcs boxmaxdepth {maximum depth of vboxes, by default |\\maxdimen|}*{}
+\capcs brace {|\char36 n\\brace k\char36| produces
+ braced notation: $n \brace k$}{}{}
+\capcs bracevert {vertical portion of extensible large brace}{}{}
+\capcs brack {|\char36 n\\brack k\char36| produces bracketed notation: $n \brack k$}{}{}
+\capcstwo break {do |\\penalty-10000|, i.e., force a line or page
+ break}{}{hbreak:vbreak}
+\capcs breve {breve accent for math, as in $\breve x$}{}{}
+\capcs brokenpenalty {penalty for line break at a discretionary item, by
+ default~100}*{}
+\capcs buildrel {produce specified formula over the specified relation}{}{}
+\capcs bullet {bullet operation: $\bullet$}{}{}
+\capcs bye {|\\vfill| the last page with blank space, |\\supereject| it,
+ and |\\end| the job}{}{\@bye}
+\capcs c {cedilla accent for text, as in \c c}{}{}
+\capcs cal {use calligraphic font for uppercase letters in math,
+ as in $\cal XYZ$}{}{}
+\capcs cap {cap operator: $\cap$}{}{}
+\capcs cases {produce cases for math, as in $\bigl\{{\cdots\atop\cdots}$}{}{}
+\capcs catcode {the category code of a specified character}*{}
+\capcs cdot {centered dot operator: $\cdot$}{}{}
+\capcs cdotp {centered dot punctuation: $\cdotp$}{}{}
+\capcs cdots {centered dots for math: $\cdots$}{}{}
+\capcs centerline {produce line with its text centered}{}{}
+\capcs char {produce the character from the current font with the specified
+ code}*{}
+\capcs chardef {define a specified control sequence to be a character's
+ code, a number between 0 and $255$}*{}
+\capcs check {check accent for math, as in $\check x$}{}{}
+\capcs chi {math Greek letter $\chi$}{}{}
+\capcs choose {|\char36 n\\choose k\char36| produces combinatorial notation:
+ $n \choose k$}{}{}
+\capcs circ {circle operation: $\circ$}{}{}
+\capcs cleaders {produce leaders with half of leftover space before
+ the first box, and half after the last}*{}
+\capcs cleartabs {clear all the tabs for tabbing alignments}{}{}
+\capcs closein {close a specified input stream}*{}
+\capcs closeout {close a specified output stream}*{}
+\capcs clubpenalty {additional penalty for a single line remaining before
+ a page break, by default~150}*{}
+\capcs clubsuit {club suit symbol: $\clubsuit$}{}{}
+\capcs colon {colon punctation symbol for math: $:$}{}{}
+\capcs cong {congruence relation: $\cong$}{}{}
+\capcs coprod {coproduct operator: $\coprod$}{}{}
+\capcs copy {like |\\box|, but don't void the register}*{}
+\capcs copyright {copyright mark: \copyright}{}{}
+\capcs cos {cosine function: $\cos$}{}{}
+\capcs cosh {hyperbolic cosine function: $\cosh$}{}{}
+\capcs cot {cotangent function : $\cot$}{}{}
+\capcs coth {hyperbolic cotangent function: $\coth$}{}{}
+\capcs count {the specified integer register}*{}
+\capcs countdef {define a specified control sequence to be a number
+ corresponding to a |\\count| register}*{}
+\capcs cr {end a row (or column) within an alignment}*{}
+\capcs crcr {does nothing if the last command was |\\cr| or |\\noalign|;
+ otherwise, equivalent to |\\cr|}*{}
+\capcs csc {cosecant function: $\csc$}{}{}
+\capcs csname {start a control sequence name to be ended by |\\endcsname|}*{}
+\capcs cup {cup operator: $\cup$}{}{}
+\capcs d {underdot accent for text, as in \d r}{}{}
+\capcs dag {dagger symbol for text: \dag}{}{}
+\capcs dagger {dagger operator for math: $\dagger$}{}{}
+\capcs dashv {right turnstile relation: $\dashv$}{}{}
+\capcs day {current day of the month, as a number}*{}
+\capcs ddag {double dagger symbol for text: \ddag}{}{}
+\capcs ddagger {double dagger operator for math: $\ddagger$}{}{}
+\capcs ddot {double dot accent for math: $\ddot x$}{}{}
+\capcs ddots {diagonal dots for math: \smash{$\ddots$}}{}{}
+\capcs deadcycles {number of |\\output| initiations since the last
+ |\\shipout|}*{}
+\capcs def {define a control sequence to be a macro}*{}
+\capcs defaulthyphenchar {default hyphenation character code}*{}
+\capcs defaultskewchar {default accent skewing character code}*{}
+\capcs deg {degree function: $\deg$}{}{}
+\capcs delcode {the delimiter code of a specified character}*{}
+\capcs delimiter {produce a specified delimiter}*{}
+\capcs delimiterfactor {1000 times the ratio of the minimum size of a
+ delimiter to the size that would completely cover the formula, by
+ default~901}*{}
+\capcs delimitershortfall {minimum difference between formula height and
+ delimiter height, by default 5\pt}*{}
+\capcs delta {math Greek letter $\delta$}{}{}
+\capcs Delta {math Greek letter $\Delta$}{}{}
+\capcs det {determinant function: $\det$}{}{}
+\capcs diamond {diamond operator: $\diamond$}{}{}
+\capcs diamondsuit {diamond suit symbol: $\diamondsuit$}{}{}
+\capcs dim {dimension function: $\dim$}{}{}
+\capcs dimen {the specified dimension register}*{}
+\capcs dimendef {define a specified control sequence to be a number
+ corresponding to a |\\dimen| register}*{}
+\capcs discretionary {specify three texts, the first two for before and
+ after a line break, the third for no line break}*{}
+\capcs displayindent {\TeX\ sets this to the indentation of a display}*{}
+\capcs displaylimits {place limits above and below operators only in display
+ styles}*{}
+\capcs displaylines {produce specified multiline display with each
+ line centered}{}{}
+\capcs displaystyle {use displaystyle size in a formula}*{}
+\capcs displaywidowpenalty {penalty for a single line beginning a page
+ just before a display, by default~50}*{}
+\capcs displaywidth {\TeX\ sets this to the width of a display}*{}
+\capcs div {division operator: $\div$}{}{}
+\capcs divide {divide a specified |\\count| register by a specified integer}*{}
+\capcs dot {dot accent for math, as in $\dot x$}{}{}
+\capcs doteq {dotted equality relation: $\doteq$}{}{}
+\capcs dotfill {fill enclosing horizontal space with dots}{}{}
+\capcs dots {ellipsis for sequences: $x_1$, \dots, $x_n$}{}{}
+\capcs doublehyphendemerits {demerits for two consecutive lines ending
+ with hyphens, by default~10000}*{}
+\capcs downarrow {relation: $\downarrow$}{}{}
+\capcs Downarrow {relation: $\Downarrow$}{}{}
+\capcs downbracefill {fill enclosing hbox with a downwards facing brace:
+ \hbox to 3.5em{\downbracefill}}{}{}
+\capcs dp {the depth of the box in a specified box register}*{}
+\capcs dump {end the job and produce a format file}*{}
+\capcs edef {define a control sequence to be a macro, immediately expanding the
+ replacement text}*{}
+\capcs egroup {implicit end-of-group character}{}{}
+\capcs eject {end current paragraph and force a page break,
+ stretching out current page}{}{}
+\capcs ell {script letter for math: $\ell$}{}{}
+\capcs else {false or default case alternative for a conditional}*{\@else}
+\capcs emergencystretch {additional stretch added to every line if
+ |\\tol\-er\-ance| is not satisfied}*{}
+\capcs empty {macro that expands to nothing}{}{}
+\capcs emptyset {empty set symbol: $\emptyset$}{}{}
+\capcs end {|\\output| the last page and end the job}*{}
+\capcs endcsname {end a control sequence name started by
+ |\\csname|}*{}
+\capcs endgraf {equivalent to the |\\par| primitive}{}{}
+\capcs endgroup {end a group started by |\\begingroup|}*{}
+\capcs endinput {terminate input from the current file}*{}
+\capcs endinsert {end insertion}{}{}
+\capcs endline {equivalent to the |\\cr| primitive}{}{}
+\capcs endlinechar {character \TeX\ inserts at the end of each input
+ line, by default |\twocarets M|}*{}
+\capcs enskip {horizontal glue with width \frac1/2\em}{}{}
+\capcs enspace {kern \frac1/2\em}{}{}
+\capcs epsilon {math Greek letter $\epsilon$}{}{}
+\capcs eqalign {produce specified multiline display whose indicated parts
+ are vertically aligned}{}{}
+\capcs eqalignno {produce specified multiline display
+ with equation numbers whose indicated parts are vertically aligned}{}{}
+\capcs eqno {put a specified equation number on the right of a display}*{}
+\capcs equiv {equivalence relation: $\equiv$}{}{}
+\capcs errhelp {token list whose expansion \TeX\ displays when the user asks
+ for help in response to an |\\errmessage|}*{}
+\capcs errmessage {give specified error message}*{}
+\capcs errorcontextlines {the number of lines of context \TeX\
+ displays at an error, by default~5}*{}
+\capcs errorstopmode {stop for interaction at error messages}*{}
+\capcs escapechar {character with which \TeX\ precedes control sequence
+ names that are displayed}*{}
+\capcs eta {math Greek letter $\eta$}{}{}
+\capcs everycr {token list \TeX\ expands after a |\\cr|, or a |\\crcr|
+ not following |\\cr| or |\\noalign|}*{}
+\capcs everydisplay {token list \TeX\ expands when a math display begins}*{}
+\capcs everyhbox {token list \TeX\ expands when an hbox begins}*{}
+\capcs everyjob {token list \TeX\ expands when a job begins}*{}
+\capcs everymath {token list \TeX\ expands when text math mode
+ begins}*{}
+\capcs everypar {token list \TeX\ expands when a paragraph begins}*{}
+\capcs everyvbox {token list \TeX\ expands when a vbox begins }*{}
+\capcs exhyphenpenalty {additional penalty for a line break after
+ an explicit hyphen, by default~50}*{}
+\capcs exists {``there exists'' symbol: $\exists$}{}{}
+\capcs exp {exponential function: $\exp$}{}{}
+\capcs expandafter {expand the next token only after expanding the token
+ following it}*{}
+\capcs fam {font family \TeX\ uses for characters with class seven
+ (i.e., variables) in math}*{}
+\capcs fi {end a conditional}*{\@fi}
+\capcs filbreak {force a page break unless the text up to another |\\filbreak|
+ also fits on the page}{}{}
+\capcs finalhyphendemerits {penalty for the second to last line breaking at a
+ hyphen, by default~5000}*{}
+\capcs firstmark {first mark item on the page just boxed}*{}
+\capcs fivebf {use $5$-point bold font, |cmbx5|}{}{}
+\capcs fivei {use $5$-point math italic font, |cmmi5|}{}{}
+\capcs fiverm {use $5$-point roman font, |cmr5|}{}{}
+\capcs fivesy {use $5$-point symbol font, |cmsy5|}{}{}
+\capcs flat {flat symbol for music: $\flat$}{}{}
+\capcs floatingpenalty {penalty for insertions that are split across
+ pages, by default~0}*{}
+\capcs fmtname {name of the current format}{}{}
+\capcs fmtversion {version number of the current format}{}{}
+\capcs folio {produce |\\pageno| as characters;
+ in roman numerals if it's negative}{}{}
+\capcs font {define a specified control sequence to select a font}*{}
+\capcs fontdimen {a specified parameter of a specified font}*{}
+\capcs fontname {produce the filename of a specified font as characters}*{}
+\capcs footline {token list that produces line at the bottom of each page}{}{}
+\capcs footnote {produce a specified footnote
+ with a specified reference mark}{}{}
+\capcs forall {``for all'' symbol: $\forall$}{}{}
+\capcs frenchspacing {make interword spacing independent of punctuation}{}{}
+\capcs frown {frown relation: $\frown$}{}{}
+\capcs futurelet {assign the third following token to a specified control
+ sequence, then expand the second following token}*{}
+\capcs gamma {math Greek letter $\gamma$}{}{}
+\capcs Gamma {math Greek letter $\Gamma$}{}{}
+\capcs gcd {greatest common denominator function: $\gcd$}{}{}
+\capcs gdef {equivalent to |\\global\\def|, i.e., globally define a macro}*{}
+\capcs ge {greater than or equal relation: $\ge$}{}{}
+\capcs geq {equivalent to |\\ge|}{}{}
+\capcs gets {gets relation: $\gets$}{}{}
+\capcs gg {much greater than relation: $\gg$}{}{}
+\capcs global {make the following definition global}*{}
+\capcs globaldefs {overrides |\\global| prefixes on assignments}*{}
+\capcs goodbreak {indicate desirable page break with |\\penalty-500|}{}{}
+\capcs grave {grave accent for math, as in $\grave x$}{}{}
+\capcs H {Hungarian umlaut accent for text, as in \H o}{}{}
+\capcs halign {align text in columns}*{}
+\capcs hang {indent the current paragraph by |\\parindent|}{}{}
+\capcs hangafter {starting line number for hanging indentation}*{}
+\capcs hangindent {space for hanging indentation}*{}
+\capcs hat {hat accent for math, as in $\hat x$}{}{}
+\capcs hbadness {badness threshold for reporting underfull or overfull
+ hboxes, by default 1000}*{}
+\capcs hbar {math symbol: $\hbar$}{}{}
+\capcs hbox {produce a specified hbox}*{}
+\capcs headline {token list that produces the line at the
+ top of every page}{}{}
+\capcs heartsuit {heart suit symbol: $\heartsuit$}{}{}
+\capcs hfil {produce infinitely stretchable horizontal glue}*{}
+\capcs hfill {produce horizontal glue even more infinitely stretchable
+ than that produced by |\\hfil|}*{}
+\capcs hfilneg {produce infinitely negative stretchable horizontal glue}*{}
+\capcs hfuzz {space threshold for reporting overfull hboxes, by default
+ 0.1\pt}*{}
+\capcs hglue {produce horizontal glue that doesn't disappear at line
+ breaks}{}{}
+\capcs hidewidth {ignore width of an entry in an alignment, so that it
+ extends out from its box in the direction of the |\\hidewidth|}{}{}
+\capcs hoffset {page offset relative to one inch from the paper's left edge}*{}
+\capcs holdinginserts {if positive, do not remove insertions from the
+ current page}*{}
+\capcs hom {homology function: $\hom$}{}{}
+\capcs hookleftarrow {relation: $\hookleftarrow$}{}{}
+\capcs hookrightarrow {relation: $\hookrightarrow$}{}{}
+\capcs hphantom {produce an invisible formula with zero height and depth but
+ natural width}{}{}
+\capcs hrule {produce a horizontal rule; legal only in vertical modes}*{}
+\capcs hrulefill {fill enclosing space with a horizontal rule}{}{}
+\capcs hsize {line length, by default 6.5\thinspace in}*{}
+\capcs hskip {produce specified horizontal glue}*{}
+\capcs hss {produce horizontal glue that is infinitely stretchable and
+ infinitely shrinkable}*{}
+\capcs ht {the height of the box in a specified box register}*{}
+\capcs hyphenation {add specified words to the
+ hyphenation exception dictionary}*{}
+\capcs hyphenchar {the hyphenation character in a specified font}*{}
+\capcs hyphenpenalty {additional penalty for a line break at a hyphen, by
+ default~50}*{}
+\capcs i {dotless letter `\i' for use with accents}{}{}
+\capcs ialign {start an |\\halign| with the |\\tabskip| glue zero and
+ |\\everycr| empty}{}{}
+\capcs if {test if two specified tokens have the same character code}*{\@if}
+\capcs ifcase {expand case $n$ for specified value $n$}*{\@ifcase}
+\capcs ifcat {test if two specified tokens have the same category
+ code}*{\@ifcat}
+\capcs ifdim {test for a specified relationship between two specified
+ dimensions}*{\@ifdim}
+\capcs ifeof {test for being at the end of a specified file}*{\@ifeof}
+\capcs iff {if and only if relation: $\iff$}{}{}
+\capcs iffalse {test that is always false}*{\@iffalse}
+\capcs ifhbox {test if a specified box register contains an hbox}*{\@ifhbox}
+\capcs ifhmode {test if \TeX\ is in a horizontal mode}*{\@ifhmode}
+\capcs ifinner {test if \TeX\ is in an internal mode}*{\@ifinner}
+\capcs ifmmode {test if \TeX\ is in a math mode}*{\@ifmmode}
+\capcs ifnum {test for a specified relationship
+ between two specified numbers}*{\@ifnum}
+\capcs ifodd {test if a specified number is odd}*{\@ifodd}
+\capcs iftrue {test that is always true}*{\@iftrue}
+\capcs ifvbox {test if a specified box register contains a vbox}*{\@ifvbox}
+\capcs ifvmode {test if \TeX\ is in a vertical mode}*{\@ifvmode}
+\capcs ifvoid {test if a specified box register is void}*{\@ifvoid}
+\capcs ifx {test if two tokens are the same, or if
+ two macros have the same top-level definition}*{\@ifx}
+\capcs ignorespaces {ignore any following space tokens}*{}
+\capcs Im {complex imaginary part symbol: $\Im$}{}{}
+\capcs imath {dotless letter `$\imath$' for use with math accents}{}{}
+\capcs immediate {perform the specified file operation without delay}*{}
+\capcs in {containment relation: $\in$}{}{}
+\capcs indent {produce an empty box of width |\\parindent| and enter
+ horizontal mode}*{}
+\capcs inf {inferior function: $\inf$}{}{}
+\capcs infty {infinity symbol: $\infty$}{}{}
+\capcs input {begin to read from a specified file}*{}
+\capcs inputlineno {the current line number of the current input file}*{}
+\capcs insert {produce an insertion of a specified class}*{}
+\capcs insertpenalties {sum of penalties due to insertions}*{}
+\capcs int {integral symbol: $\int$}{}{}
+\capcs interlinepenalty {additional penalty for a page break
+ between lines of a paragraph, by default~0}*{}
+\capcs iota {math Greek letter $\iota$}{}{}
+\capcs it {use italics, i.e., do |\\tenit\\fam=\\itfam|}{}{}
+\capcs item {begin a paragraph with hanging indentation of |\\parindent|
+ and preceded by a specified label}{}{}
+\capcs itemitem {like |\\item|, but with indentation of |2\\parindent|}{}{}
+\capcs itfam {italic family for math}{}{}
+\capcs j {dotless letter `\j', for use with accents}{}{}
+\capcs jmath {dotless letter `$\jmath$' for use with math accents}{}{}
+\capcs jobname {base name of the file with which \TeX\ was invoked}*{}
+\capcs jot {unit of measure for opening up displays}{}{}
+\capcs kappa {math Greek letter $\kappa$}{}{}
+\capcs ker {kernel function: $\ker$}{}{}
+\capcs kern {produce a specified amount of space at which
+ a break is not allowed}*{}
+\capcs l {Polish letter: \l}{}{}
+\capcs L {Polish letter: \L}{}{}
+\capcs lambda {math Greek letter $\lambda$}{}{}
+\capcs Lambda {math Greek letter $\Lambda$}{}{}
+\capcs land {logical ``and'' operator: $\land$}{}{}
+\capcs langle {left angle delimiter: $\langle$}{}{}
+\capcs language {the current set of hyphenation patterns}*{}
+\capcs lastbox {retrieve and remove the last item from the current list, if
+ it's a box}*{}
+\capcs lastkern {retrieve the last item from the current list, if it's a
+ kern}*{}
+\capcs lastpenalty {retrieve the last item from the current list, if it's a
+ penalty}*{}
+\capcs lastskip {retrieve the last item from the current list, if it's
+ glue}*{}
+\capcs lbrace {left brace delimiter: $\lbrace$}{}{}
+\capcs lbrack {left bracket delimiter: $\lbrack$}{}{}
+\capcs lccode {the character code for the lowercase form of a letter}*{}
+\capcs lceil {left ceiling delimiter: $\lceil$}{}{}
+\capcs ldotp {dot on baseline as punctuation: $\ldotp$}{}{}
+\capcs ldots {dots on baseline for math: $\ldots$}{}{}
+\capcs le {less than or equal relation: $\le$}{}{}
+\capcs leaders {fill a specified horizontal or vertical space by repeating a
+ specified box or rule}*{}
+\capcs left {produce the specified delimiter, sizing it to cover the
+ following subformula ended by |\\right|}*{}
+\capcs leftarrow {relation: $\leftarrow$}{}{}
+\capcs Leftarrow {relation: $\Leftarrow$}{}{}
+\capcs leftarrowfill {fill enclosing hbox with a |\\leftarrow|:
+ \hbox to 3.5em{\leftarrowfill}}{}{}
+\capcs leftharpoondown {relation: $\leftharpoondown$}{}{}
+\capcs leftharpoonup {relation: $\leftharpoonup$}{}{}
+\capcs lefthyphenmin {size of the smallest word fragment \TeX\ allows
+ before a hyphen at the beginning of a word, by default~2}*{}
+\capcs leftline {produce line with its text pushed to left margin}{}{}
+\capcs leftrightarrow {relation: $\leftrightarrow$}{}{}
+\capcs Leftrightarrow {relation: $\Leftrightarrow$}{}{}
+\capcs leftskip {glue \TeX\ inserts at the left of each line}*{}
+\capcs leq {equivalent to |\\le|}{}{}
+\capcs leqalignno {produce specified multiline display with equation numbers
+ on the left whose indicated parts are vertically aligned}{}{}
+\capcs leqno {put a specified equation number on the left of a display}*{}
+\capcs let {define a control sequence to be the next token}*{}
+\capcs lfloor {left floor delimiter: $\lfloor$}{}{}
+\capcs lg {logarithm function: $\lg$}{}{}
+\capcs lgroup {left group delimiter (the smallest size is shown here):
+ $\Big\lgroup$}{}{}
+\capcs lim {limit function: $\lim$}{}{}
+\capcs liminf {inferior limit function: $\liminf$}{}{}
+\capcs limits {place superscript above and subscript below a
+ large operator}*{}
+\capcs limsup {superior limit function: $\limsup$}{}{}
+\capcs line {produce a justified line of type}{}{}
+\capcs linepenalty {penalty for line breaking added to each line,
+ by default~10}*{}
+\capcs lineskip {vertical glue from one baseline to the next if the
+ lines are closer together than |\\lineskiplimit|, by default 1\pt}*{}
+\capcs lineskiplimit {threshold for using |\\lineskip| instead of
+ |\\base\-line\-skip|, by default 0\pt}*{}
+\capcs ll {much less than relation: $\ll$}{}{}
+\capcs llap {produce text (with no width) extending to the left
+ of the current position}{}{}
+\capcs lmoustache {top half of a large brace: $\big\lmoustache$}{}{}
+\capcs ln {natural logarithm function: $\ln$}{}{}
+\capcs lnot {logical ``not'' symbol: $\lnot$}{}{}
+\capcs log {logarithm function: $\log$}{}{}
+\capcs long {allow |\\par| tokens in the argument(s) of
+ the following definition}*{}
+\capcs longleftarrow {relation: $\longleftarrow$}{}{}
+\capcs Longleftarrow {relation: $\Longleftarrow$}{}{}
+\capcs longleftrightarrow {relation: $\longleftrightarrow$}{}{}
+\capcs Longleftrightarrow {relation: $\Longleftrightarrow$}{}{}
+\capcs longmapsto {relation: $\longmapsto$}{}{}
+\capcs longrightarrow {relation: $\longrightarrow$}{}{}
+\capcs Longrightarrow {relation: $\Longrightarrow$}{}{}
+\capcs loop {start a loop to be ended by |\\repeat|}{}{}
+\capcs looseness {difference between the number of lines you want a
+ paragraph to be relative to the optimal number}*{}
+\capcs lor {logical ``or'' operator: $\lor$}{}{}
+\capcs lower {lower a specified box by a specified amount}*{}
+\capcs lowercase {convert uppercase letters in the specified text
+ to lowercase}*{}
+\capcs lq {left quote character for text: \lq}{}{}
+\capcs mag {$1000$ times the ratio for enlarging all dimensions}*{}
+\capcs magnification {like |\\mag|, but don't enlarge the page size}{}{}
+\capcs magstep {$1000 \cdot 1.2^n$ for a specified $n$}{}{}
+\capcs magstephalf {$1000\cdot\sqrt{1.2}$}{}{}
+\capcs mapsto {relation: $\mapsto$}{}{}
+\capcs mark {produce a mark item with a specified text}*{}
+\capcs mathaccent {put specified math accent over the next character}*{}
+\capcs mathbin {space a specified subformula as a binary operator}*{}
+\capcs mathchar {produce the math character with the specified mathcode}*{}
+\capcs mathchardef {define a specified control sequence to be a mathcode,
+ a number between 0 and $2^{15}-1$}*{}
+\capcs mathchoice {select one of four specified math subformulas
+ depending on the current style}*{}
+\capcs mathclose {space a specified subformula as a closing delimiter}*{}
+\capcs mathcode {the mathcode of a specified character}*{}
+\capcs mathinner {space a specified subformula as an inner formula, e.g., a
+ fraction}*{}
+\capcs mathop {space a specified subformula as a large math operator}*{}
+\capcs mathopen {space a specified subformula as an opening delimiter}*{}
+\capcs mathord {space a specified subformula as an ordinary character}*{}
+\capcs mathpalette {produce a |\\mathchoice| which expands a specified
+ control sequence depending on the current style}{}{}
+\capcs mathpunct {space a specified subformula as punctuation}*{}
+\capcs mathrel {space a specified subformula as a relation}*{}
+\capcs mathstrut {produce an invisible box with the height and depth of a
+ left parenthesis and no width}{}{}
+\capcs mathsurround {space \TeX\ kerns before and after math in text}*{}
+\capcs matrix {produce a specified matrix}{}{}
+\capcs max {maximum function: $\max$}{}{}
+\capcs maxdeadcycles {value of |\\deadcycles| at which \TeX\ complains,
+ and then uses its own output routine, by default~25}*{}
+\capcs maxdepth {maximum depth of the bottom box on a page,
+ by default 4\pt}*{}
+\capcs maxdimen {largest dimension acceptable to \TeX}{}{}
+\capcs meaning {produce the human-understandable meaning of a specified
+ token as characters}*{}
+\capcs medbreak {indicate desirable page
+ break with |\\penalty-100| and produce |\\medskipamount| glue}{}{}
+\capcs medmuskip {glue for a medium math space, by default 4\mud\ plus 2\mud\
+ minus 4\mud}*{}
+\capcs medskip {produce |\\medskipamount| glue}{}{}
+\capcs medskipamount {glue for a medium vertical skip, by default 6\pt
+ plus 2\pt\ minus 2\pt}{}{}
+\capcs message {show expansion of the specified text on the terminal}*{}
+\capcs mid {middle relation: $\mid$}{}{}
+\capcs midinsert {produce the specified text at the current position if
+ possible, otherwise at the top of the next page}{}{}
+\capcs min {minimum function: $\min$}{}{}
+\capcs mit {use math italics, i.e., do |\\fam=1|}{}{}
+\capcs mkern {produce a specified kern in units of |mu| for math}*{}
+\capcs models {models relation: $\models$}{}{}
+\capcs month {current month, as a number}*{}
+\capcs moveleft {move a specified box left by a specified space; legal
+ only in vertical modes}*{}
+\capcs moveright {move a specified box right by a specified space; legal
+ only in vertical modes}*{}
+\capcs mp {minus and plus operator: $\mp$}{}{}
+\capcs mskip {produce specified glue in units of |mu| for math}*{}
+\capcs mu {math Greek letter $\mu$}{}{}
+\capcs multiply {multiply a specified |\\count| register by a specified
+ integer}*{}
+\capcs multispan {make next alignment entry span a specified number of
+ columns (or rows)}{}{}
+\capcs muskip {the specified muglue register}*{}
+\capcs muskipdef {define a specified control sequence to be a number
+ corresponding to a |\\muskip| register}*{}
+\capcs nabla {backwards difference symbol: $\nabla$}{}{}
+\capcs narrower {make both left and right margins narrower by
+ |\\parindent|}{}{}
+\capcs natural {natural symbol for music: $\natural$}{}{}
+\capcs nearrow {northeast arrow relation: $\nearrow$}{}{}
+\capcs ne {not equal relation: $\ne$}{}{}
+\capcs neg {logical ``not'' symbol: $\neg$}{}{}
+\capcs negthinspace {kern $-\frac1/6$\em}{}{}
+\capcs neq {not equal relation: $\neq$}{}{}
+\capcs newbox {reserve and name a |\\box| register}{}{\@newbox}
+\capcs newcount {reserve and name a |\\count| register}{}{\@newcount}
+\capcs newdimen {reserve and name a |\\dimen| register}{}{\@newdimen}
+\capcs newfam {reserve and name a math family}{}{\@newfam}
+\capcs newhelp {name a specified help message}{}{\@newhelp}
+\capcs newif {define a new conditional with the specified name}{}{\@newif}
+\capcs newinsert {name an insertion class, and reserve a
+ corresponding |\\box|, |\\count|, |\\dimen|, and |\\skip| registers}
+ {}{\@newinsert}
+\capcs newlanguage {reserve and name a |\\language|}{}{\@newlanguage}
+\capcs newlinechar {end-of-line character for |\\write|, etc.}*{}
+\capcs newmuskip {reserve and name a |\\muskip| register}{}{\@newmuskip}
+\capcs newread {reserve and name an input stream}{}{\@newread}
+\capcs newskip {reserve and name a |\\skip| register}{}{\@newskip}
+\capcs newtoks {reserve and name a |\\toks| register}{}{\@newtoks}
+\capcs newwrite {reserve and name an output stream}{}{\@newwrite}
+\capcs ni {``reverse in'' relation: $\ni$}{}{}
+\capcs noalign {insert material between rows (or columns) of an
+ alignment}*{}
+\capcs noboundary {inhibit ligatures or kerns involving the current font's
+ |boundarychar|}*{}
+\capcstwo nobreak {do |\\penalty10000|, i.e.,
+ inhibit a line or page break}{}{hnobreak:vnobreak}
+\capcs noexpand {suppress expansion of the next token}*{}
+\capcs noindent {enter horizontal mode without indenting the paragraph}*{}
+\capcs nointerlineskip {inhibit interline glue before the next line}{}{}
+\capcs nolimits {place superscript and subscript after large operators}*{}
+\capcs nonfrenchspacing {make interword spacing depend on punctuation}{}{}
+\capcs nonscript {inhibit any following glue or kern when
+ in script and scriptscript styles}*{}
+\capcs nonstopmode {don't stop at errors, even those about missing files}*{}
+\capcs nopagenumbers {inhibit printing of page numbers, i.e., do
+ |\\footline = {\\hfil}|}{}{}
+\capcs normalbaselines {set |\\baselineskip|, |\\line\-skip|, and
+ |\\line\-skip\-limit| to the normal values for the current type size}{}{}
+\capcs normalbaselineskip {value of |\\baselineskip| for the
+ current type size}{}{}
+\capcs normalbottom {make the bottom margin be the same from page to page}{}{}
+\capcs normallineskip {value of |\\lineskip| for the current type
+ size}{}{}
+\capcs normallineskiplimit {value of |\\lineskiplimit| for the
+ current type size}{}{}
+\capcs not {a slash with zero width for constructing negations of math
+ relations, as in $\not=$}{}{}
+\capcs notin {noninclusion relation: $\notin$}{}{}
+\capcs nu {math Greek letter $\nu$}{}{}
+\capcs null {expands to an empty hbox}{}{}
+\capcs nulldelimiterspace {space produced by a null delimiter, by
+ default 1.2\pt}*{}
+\capcs nullfont {primitive font with no characters in it}*{}
+\capcs number {produce a specified number as characters}*{}
+\capcs nwarrow {northwest arrow relation: $\nwarrow$}{}{}
+\capcs o {Danish letter: \o}{}{}
+\capcs O {Danish letter: \O}{}{}
+\capcs obeylines {make each end-of-line in the input file
+ equivalent to |\\par|}{}{}
+\capcs obeyspaces {produce space in the output for each space character in the
+ input}{}{}
+\capcs odot {centered dot operation: $\odot$}{}{}
+\capcs oe {\oe\ ligature}{}{}
+\capcs OE {\OE\ ligature}{}{}
+\capcs offinterlineskip {inhibit interline glue from now on}{}{}
+\capcs oint {contour integral operator: $\oint$}{}{}
+\capcs oldstyle {use old style digits: {\oldstyle1234567890}}{}{}
+\capcs omega {math Greek letter $\omega$}{}{}
+\capcs Omega {math Greek letter $\Omega$}{}{}
+\capcs ominus {circled minus operator: $\ominus$}{}{}
+\capcs omit {skip a column's (or row's) template in an alignment}*{}
+\capcs openin {prepare a specified input stream to read from a file}*{}
+\capcs openout {prepare a specified output stream to write to a file}*{}
+\capcs openup {increase |\\baselineskip|, |\\lineskip|, and
+ |\\lineskiplimit| by a specified amount}{}{}
+\capcs oplus {circled plus operator: $\oplus$}{}{}
+\capcs or {separate the cases of an |\\ifcase|}*{\@or}
+\capcs oslash {circled slash operator: $\oslash$}{}{}
+\capcs otimes {circled times operator: $\otimes$}{}{}
+\capcs outer {make the following macro definition illegal in contexts in
+ which tokens are absorbed at high speed}*{}
+\capcs output {token list \TeX\ expands when it finds a page break}*{}
+\capcs outputpenalty {if the page break occurred at a penalty, the value
+ of that penalty; otherwise zero}*{}
+\capcs over {produce a fraction with a bar of default thickness}*{}
+\capcs overbrace {produce a brace covering the top of a formula,
+ as in $\overbrace{h+w}{}$}{}{}
+\capcs overfullrule {width of the rule appended to an overfull box}*{}
+\capcs overleftarrow {produce a left arrow covering the top of
+ a formula, as in $\overleftarrow{r+a}$}{}{}
+\capcs overline {produce a line covering the top of a formula,
+ as in $\overline{2b}$}*{}
+\capcs overrightarrow {produce a right arrow covering the top of a
+ formula, as in $\overrightarrow{i+t}$}{}{}
+\capcs overwithdelims {produce a fraction with a bar of the default thickness
+ and surrounded by specified delimiters}*{}
+\capcs owns {owns relation: $\owns$}{}{}
+\capcs P {paragraph character for text: \P}{}{}
+\capcs pagedepth {\TeX\ sets this to the current depth of the current
+ page}*{}
+\capcs pagefilllstretch {\TeX\ sets this to the amount of |filll| stretch on
+ the current page}*{}
+\capcs pagefillstretch {\TeX\ sets this to the amount of |fill| stretch on
+ the current page}*{}
+\capcs pagefilstretch {\TeX\ sets this to the amount of |fil| stretch on the
+ current page}*{}
+\capcs pagegoal {\TeX\ sets this to the desired height for the current page
+ (i.e., |\\vsize| when the first box is put on the page)}*{}
+\capcs pageinsert {produce the specified text on the following page, and use up
+ the full page}{}{}
+\capcs pageno {the register |\\count0|, which contains the
+ (possibly negative) page number}{}{}
+\capcs pageshrink {\TeX\ sets this to the total amount of shrinkability
+ on the current page}*{}
+\capcs pagestretch {\TeX\ sets this to the total amount of stretchability
+ on the current page}*{}
+\capcs pagetotal {\TeX\ sets this to the natural height of the current
+ page}*{}
+\capcs par {finish paragraph and terminate horizontal mode}*{\@par}
+\capcs parallel {parallel relation: $\parallel$}{}{}
+\capcs parfillskip {horizontal glue \TeX\ inserts at the end of a
+ paragraph}*{}
+\capcs parindent {horizontal space \TeX\ inserts at the start of a
+ paragraph}*{}
+\capcs parshape {specify the width and length of each line
+ in the next paragraph}*{}
+\capcs parskip {vertical glue \TeX\ inserts before a paragraph}*{}
+\capcs partial {partial derivative symbol: $\partial$}{}{}
+\capcs pausing {if positive, stop after reading each line of input for a
+ possible replacement}*{}
+\capcstwo penalty {produce penalty (or bonus, if negative) for breaking
+ line or page here}*{hpenalty:vpenalty}
+\capcs perp {perpendicular relation: $\perp$}{}{}
+\capcs phantom {produce an invisible formula with the
+ dimensions of a specified subformula}{}{}
+\capcs phi {math Greek letter $\phi$}{}{}
+\capcs Phi {math Greek letter $\Phi$}{}{}
+\capcs pi {math Greek letter $\pi$}{}{}
+\capcs Pi {math Greek letter $\Pi$}{}{}
+\capcs plainoutput {\plainTeX's |\\output| routine}{}{}
+\capcs pm {plus and minus operator: $\pm$}{}{}
+\capcs pmatrix {produce a parenthesized matrix}{}{}
+\capcs pmod {parenthesized modulus notation to put at the end of a formula, as
+ in $x \equiv y+1 \pmod 2$}{}{}
+\capcs postdisplaypenalty {additional penalty for a line break
+ just after a display, by default~0}*{}
+\capcs Pr {probability function: $\Pr$}{}{}
+\capcs prec {precedes relation: $\prec$}{}{}
+\capcs preceq {precedes or equals relation: $\preceq$}{}{}
+\capcs predisplaypenalty {additional penalty for a line break just
+ before a display, by default~0}*{}
+\capcs predisplaysize {\TeX\ sets this to the width of the
+ line preceding a display}*{}
+\capcs pretolerance {badness tolerance for line breaks without
+ hyphenation, by default~100}*{}
+\capcs prevdepth {depth of the last nonrule box on the
+ current vertical list}*{}
+\capcs prevgraf {\TeX\ sets this to the number
+ of lines in the paragraph so far (in horizontal mode)
+ or in the previous paragraph (in vertical mode)}*{}
+\capcs prime {prime math symbol, as in $r^\prime$}{}{}
+\capcs proclaim {begin a theorem, lemma, hypothesis, $\ldots$}{}{\@proclaim}
+\capcs prod {large product operator: $\prod$}{}{}
+\capcs propto {proportional to relation: $\propto$}{}{}
+\capcs psi {math Greek letter $\psi$}{}{}
+\capcs Psi {math Greek letter $\Psi$}{}{}
+\capcs qquad {produce horizontal glue with width 2\em}{}{}
+\capcs quad {produce horizontal glue with width 1\em}{}{}
+\capcs radical {produce a specified radical symbol}*{}
+\capcs raggedbottom {allow the bottom margin to vary from page to page}{}{}
+\capcs raggedright {allow the right margin to vary from line to line}{}{}
+\capcs raise {raise a specified box by a specified amount}*{}
+\capcs rangle {right angle delimiter: $\rangle$}{}{}
+\capcs rbrace {right brace delimiter: $\rbrace$}{}{}
+\capcs rbrack {right bracket delimiter: $\rbrack$}{}{}
+\capcs rceil {right ceiling delimiter: $\rceil$}{}{}
+\capcs Re {complex real part symbol: $\Re$}{}{}
+\capcs read {read a line from a specified input stream}*{}
+\capcs relax {do nothing}*{}
+\capcs relpenalty {additional penalty for breaking after a relation,
+ by default~500}*{}
+\capcs repeat {end a loop started with |\\loop|}{}{\@repeat}
+\capcs rfloor {right floor delimiter: $\rfloor$}{}{}
+\capcs rgroup {right group delimiter (the smallest size is shown here):
+ $\Big\rgroup$}{}{}
+\capcs rho {math Greek letter $\rho$}{}{}
+\capcs right {produce the specified delimiter at the right end of a
+ subformula started with |\\left|}*{}
+\capcs rightarrow {relation: $\rightarrow$}{}{}
+\capcs Rightarrow {relation: $\Rightarrow$}{}{}
+\capcs rightarrowfill {fill enclosing hbox with a |\\rightarrow|:
+ \hbox to 3.5em{\rightarrowfill}}{}{}
+\capcs rightharpoondown {relation: $\rightharpoondown$}{}{}
+\capcs rightharpoonup {relation: $\rightharpoonup$}{}{}
+\capcs rightleftharpoons {relation: $\rightleftharpoons$}{}{}
+\capcs rightline {produce line with its text pushed to right margin}{}{}
+\capcs rightskip {glue \TeX\ inserts at the right of each line}*{}
+\capcs righthyphenmin {size of the smallest word fragment \TeX\ allows
+ after a hyphen at the end of a word, by default~3}*{}
+\capcs rlap {produce text (with no width) extending to the right
+ of the current position}{}{}
+\capcs rm {use roman type, i.e., do |\\tenrm\\fam=0|}{}{}
+\capcs rmoustache {bottom half of a large brace: $\big\rmoustache$}{}{}
+\capcs romannumeral {produce the lowercase roman numeral representation of a
+ specified number as characters}{}{}
+\capcs root {produce a specified root of a specified subformula, as in
+ $\root 3 \of 2$}{}{}
+\capcs rq {right quote character for text: \rq}{}{}
+\capcs S {section character for text: \S}{}{}
+\capcs sb {implicit subscript character}{}{}
+\capcs scriptfont {the script style font in a specified math family}*{}
+\capcs scriptscriptfont {the scriptscript style font in a specified
+ math family}*{}
+\capcs scriptscriptstyle {use scriptscriptstyle size in a formula}*{}
+\capcs scriptspace {additional space \TeX\ kerns after a subscript or
+ superscript, by default 0.5\pt}*{}
+\capcs scriptstyle {use scriptstyle size in a formula}*{}
+\capcs scrollmode {don't stop at most errors, but do stop at errors
+ about missing files}*{}
+\capcs searrow {southeast arrow relation: $\searrow$}{}{}
+\capcs sec {secant function: $\sec$}{}{}
+\capcs setbox {define a specified box register to be a box}*{}
+\capcs setlanguage {change to a specified set of hyphenation rules, but
+ don't change |\\language|}{*}{}
+\capcs setminus {set difference operator: $\setminus$}{}{}
+\capcs settabs {define the tabs for a tabbing alignment}{}{}
+\capcs sevenbf {use $7$-point bold font, |cmbx7|}{}{}
+\capcs seveni {use $7$-point math italic font, |cmmi5|}{}{}
+\capcs sevenrm {use $7$-point roman font, |cmr7|}{}{}
+\capcs sevensy {use $7$-point symbol font, |cmsy7|}{}{}
+\capcs sfcode {the space factor code of a specified character}*{}
+\capcs sharp {sharp symbol for music: $\sharp$}{}{}
+\capcs shipout {output a box to the |.dvi| file}*{}
+\capcs show {show, in the log and
+ on the terminal, the meaning of a specified token}*{}
+\capcs showbox {display the contents of a specified box register}*{}
+\capcs showboxbreadth {maximum number of items shown on each nesting
+ level, by default~5}*{}
+\capcs showboxdepth {maximum nesting level shown, by default~3}*{}
+\capcs showhyphens {show, in the log
+ and on the terminal, hyphenations in the specified text}{}{}
+\capcs showlists {display all lists being worked on}*{}
+\capcs showthe {show, in the log
+ and on the terminal, what |\\the| would produce}*{}
+\capcs sigma {math Greek letter $\sigma$}{}{}
+\capcs Sigma {math Greek letter $\Sigma$}{}{}
+\capcs sim {similarity relation: $\sim$}{}{}
+\capcs simeq {similar or equal relation: $\simeq$}{}{}
+\capcs sin {sine function: $\sin$}{}{}
+\capcs sinh {hyperbolic sine function: $\sinh$}{}{}
+\capcs skew {shift a specified accent by a specified amount
+ on a specified accented character}{}{}
+\capcs skewchar {character in a specified font used for positioning accents}*{}
+\capcs skip {the specified glue register}*{}
+\capcs skipdef {define a specified control sequence to be a number
+ corresponding to a |\\skip| register}*{}
+\capcs sl {use slanted type, i.e., do |\\tensl\\fam=\\slfam|}{}{}
+\capcs slash {\slash\ character that allows a line break}{}{}
+\capcs slfam {slanted family for math}{}{}
+\capcs smallbreak {indicate somewhat desirable page break
+ with |\\penalty-50| and produce |\\smallskipamount| glue}{}{}
+\capcs smallint {small integral symbol: $\smallint$}{}{}
+\capcs smallskip {produce |\\smallskipamount| glue}{}{}
+\capcs smallskipamount {glue for a small vertical skip, by default 3\pt\
+ plus 1\pt\ minus 1\pt}{}{}
+\capcs smash {produce formula with zero height and depth}{}{}
+\capcs smile {smile relation: $\smile$}{}{}
+\capcs sp {implicit superscript character}{}{}
+\capcs space {produce normal interword glue}{}{}
+\capcs spacefactor {modifies stretch and shrink of interword glue
+ if not 1000}*{}
+\capcs spaceskip {if nonzero and |\\spacefactor|${}<2000$, overrides
+ the normal interword glue}*{}
+\capcs spadesuit {spade suit symbol: $\spadesuit$}{}{}
+\capcs span {either combine entries in an alignment body or expand tokens in a
+ preamble}*{}
+\capcs special {write tokens to the |.dvi| file to be interpreted by a
+ DVI-reading program}*{}
+\capcs splitbotmark {last mark item in a box resulting from |\\vsplit|}*{}
+\capcs splitfirstmark {first mark item in a box resulting from
+ |\\vsplit|}*{}
+\capcs splitmaxdepth {maximum depth of a box resulting from |\\vsplit|}*{}
+\capcs splittopskip {glue \TeX\ inserts at the top of a box resulting from
+ |\\vsplit|}*{}
+\capcs sqcap {square cap operator: $\sqcap$}{}{}
+\capcs sqcup {square cup operator: $\sqcup$}{}{}
+\capcs sqrt {produce square root of a subformula, as in $\sqrt 2$}{}{}
+\capcs sqsubseteq {square subset or equal relation: $\sqsubseteq$}{}{}
+\capcs sqsupseteq {square superset or equal relation: $\sqsupseteq$}{}{}
+\capcs ss {German letter: \ss}{}{}
+\capcs star {star operator: $\star$}{}{}
+\capcs string {produce a specified token, most commonly a control
+ sequence, as characters}*{}
+\capcs strut {box with zero width, but height and depth of a standard
+ line, from baseline to baseline, in the current font}{}{}
+\capcs subset {subset relation: $\subset$}{}{}
+\capcs subseteq {subset or equal relation: $\subseteq$}{}{}
+\capcs succ {successor relation: $\succ$}{}{}
+\capcs succeq {successor or equal relation: $\succeq$}{}{}
+\capcs sum {large summation operator: $\sum$}{}{}
+\capcs sup {superior function: $\sup$}{}{}
+\capcs supereject {force a page break, and output all insertions}{}{}
+\capcs supset {superset relation: $\supset$}{}{}
+\capcs supseteq {superset or equal relation: $\supseteq$}{}{}
+\capcs surd {surd symbol: $\surd$}{}{}
+\capcs swarrow {southwest arrow relation: $\swarrow$}{}{}
+\capcs t {tie-after accent for text, as in \t uu}{}{}
+\capcs tabalign {equivalent to |\\+|, except it's not |\\outer|}{}{}
+\capcs tabskip {glue between columns (or rows) of an alignment}*{}
+\capcs tan {tangent function: $\tan$}{}{}
+\capcs tanh {hyperbolic tangent function: $\tanh$}{}{}
+\capcs tau {math Greek letter $\tau$}{}{}
+\capcs tenbf {use $10$-point bold font, |cmbx10|}{}{}
+\capcs tenex {use $10$-point math extension font, |cmex10|}{}{}
+\capcs teni {use $10$-point math italic font, |cmmi10|}{}{}
+\capcs tenit {use $10$-point text italic font, |cmti10|}{}{}
+\capcs tenrm {use $10$-point roman text font, |cmr10|}{}{}
+\capcs tensl {use $10$-point slanted roman font, |cmsl10|}{}{}
+\capcs tensy {use $10$-point math symbol font, |cmsy10|}{}{}
+\capcs tentt {use $10$-point typewriter font, |cmtt10|}{}{}
+\capcs TeX {produce the \TeX\ logo}{}{}
+\capcs textfont {the text style font in a specified math family}*{}
+\capcs textindent {like |\\item|, but doesn't do hanging indentation}{}{}
+\capcs textstyle {use textstyle size in a formula}*{}
+\capcs the {give the value of a specified token}*{}
+\capcs theta {math Greek letter $\theta$}{}{}
+\capcs Theta {math Greek letter $\Theta$}{}{}
+\capcs thickmuskip {glue for a thick math space, by default 5\mud\ plus 5\mud}*{}
+\capcs thinmuskip {glue for a thin math space, by default 3\mud}*{}
+\capcs thinspace {kern \frac1/6\em}{}{}
+\capcs tilde {tilde accent for math, as in $\tilde x$}{}{}
+\capcs time {the time of day, in minutes since midnight}*{}
+\capcs times {times operator: $\times$}{}{}
+\capcs toks {the specified token register}*{}
+\capcs toksdef {define a specified control sequence to be a number
+ corresponding to a |\\toks| register}*{}
+\capcs tolerance {badness tolerance for line breaks with hyphenation}*{}
+\margin{{\tt\\topglue} command added; recent addition to \TeX}
+\capcs to {mapping relation: $\to$}{}{}
+\capcs top {lattice top symbol: $\top$}{}{}
+\capcs topglue {produce specified vertical glue at the
+ top of a page}{}{}
+\capcs topinsert {produce the specified text at top of a page}{}{}
+\capcs topmark {|\\botmark| before the current page was boxed}*{}
+\capcs topskip {glue between the headline and the first line of text
+ on a page, by default 10\pt}*{}
+\capcs tracingall {turn on maximal tracing}{}{}
+\capcs tracingcommands {display execution of commands}*{}
+\capcs tracinglostchars {display characters that are asked for, but not
+ defined}*{}
+\capcs tracingmacros {display macro expansions}*{}
+\capcs tracingonline {show diagnostic output on the terminal as well as in
+ the log file}*{}
+\capcs tracingoutput {display contents of shipped-out boxes}*{}
+\capcs tracingpages {display page break calculations}*{}
+\capcs tracingparagraphs {display line break calculations}*{}
+\capcs tracingrestores {display values restored at the end
+ of a group}*{}
+\capcs tracingstats {display memory usage statistics}*{}
+\capcs triangle {triangle symbol: $\triangle$}{}{}
+\capcs triangleleft {left triangle operator: $\triangleleft$}{}{}
+\capcs triangleright {right triangle operator: $\triangleright$}{}{}
+\capcs tt {use typewriter type, i.e., do |\\tentt\\fam=\\ttfam|}{}{}
+\capcs ttfam {typewriter family for math}{}{}
+\capcs ttraggedright {use typewriter type and allow right margins of
+ paragraphs to vary from line to line}{}{}
+\capcs u {breve accent for text, as in \u r}{}{}
+\capcs uccode {the character code for the uppercase form of a letter}*{}
+\capcs uchyph {if positive, consider hyphenating words that start with a
+ capital letter}*{}
+\capcs underbar {underline the specified text without avoiding
+ any descenders, as in \underbar{fog}}{}{}
+\capcs underbrace {produce a brace covering the bottom of a formula, as in
+ $\underbrace{x+x}{}$}{}{}
+\capcs underline {underline a math formula below the descenders, as in
+ $\underline{x+y}$}*{}
+\capcs unhbox {append the contents of the box
+ in a specified box
+ register to the current list, and void the register; legal only in
+ horizontal modes}*{}
+\capcs unhcopy {like |\\unhbox|, but doesn't void the register}*{}
+\capcs unkern {if the last item on the current list is a kern, remove it}*{}
+\capcs unpenalty {if the last item on the current list is a penalty, remove
+ it}*{}
+\capcs unskip {if the last item on the current list is glue, remove it}*{}
+\capcs unvbox {append the contents of the box
+ in a specified box
+ register to the current list, and void the register; legal only in
+ vertical modes}*{}
+\capcs unvcopy {like |\\unvbox|, but doesn't void the register}*{}
+\capcs uparrow {relation: $\uparrow$}{}{}
+\capcs Uparrow {relation: $\Uparrow$}{}{}
+\capcs upbracefill {fill enclosing hbox with an upwards facing brace:
+ \hbox to 3.5em{\upbracefill}}{}{}
+\capcs updownarrow {relation: $\updownarrow$}{}{}
+\capcs Updownarrow {relation: $\Updownarrow$}{}{}
+\capcs uplus {cupped plus operator: $\uplus$}{}{}
+\capcs uppercase {convert lowercase letters in the specified text
+ to uppercase}*{}
+\capcs upsilon {math Greek letter $\upsilon$}{}{}
+\capcs Upsilon {math Greek letter $\Upsilon$}{}{}
+\capcs v {check accent for text, as in \v o}{}{}
+\capcs vadjust {produce vertical mode material after the current line}*{}
+\capcs valign {align text in rows}*{}
+\capcs varepsilon {variant math Greek letter $\varepsilon$}{}{}
+\capcs varphi {variant math Greek letter $\varphi$}{}{}
+\capcs varpi {variant math Greek letter $\varpi$}{}{}
+\capcs varrho {variant math Greek letter $\varrho$}{}{}
+\capcs varsigma {variant Greek letter $\varsigma$}{}{}
+\capcs vartheta {variant math Greek letter $\vartheta$}{}{}
+\capcs vbadness {badness threshold for reporting underfull or overfull
+ vboxes, by default~1000}*{}
+\capcs vbox {produce a vbox whose baseline is that of the bottom box
+ enclosed}*{}
+\capcs vcenter {center the specified text on the math axis}*{}
+\capcs vdash {left turnstile symbol: $\vdash$}{}{}
+\capcs vdots {vertical dots for math: \smash{$\vdots$}}{}{}
+\capcs vec {vector accent for math, as in $\vec x$}{}{}
+\capcs vee {logical ``or'' operator: $\vee$}{}{}
+\capcs vert {bar relation: $\vert$}{}{}
+\capcs Vert {double bar relation: $\Vert$}{}{}
+\capcs vfil {produce infinitely stretchable vertical glue}*{}
+\capcs vfill {produce even more infinitely stretchable vertical glue
+than that produced by |\\vfil|}*{}
+\capcs vfilneg {produce infinitely negative stretchable vertical glue}*{}
+\capcs vfootnote {produce a specified footnote with a specified
+ reference mark, but don't produce the reference mark in the text}{}{}
+\capcs vfuzz {space threshold for reporting overfull vboxes, by default
+ 0.1\pt}*{}
+\capcs vglue {produce specified vertical glue
+ that doesn't disappear at page breaks}{}{}
+\capcs voffset {vertical offset relative to one inch from the
+ paper's top edge}*{}
+\capcs vphantom {produce an invisible formula with zero width but natural
+ height and depth}{}{}
+\capcs vrule {produce a vertical rule; legal only in horizontal modes}*{}
+\capcs vsize {page height, by default 8.9\thinspace in}*{}
+\capcs vskip {produce specified vertical glue}*{}
+\capcs vsplit {break the contents of a specified box
+ register to the specified height}*{}
+\capcs vss {produce vertical glue that is infinitely stretchable and
+ infinitely shrinkable}*{}
+\capcs vtop {produce a vbox whose baseline is that of the top box enclosed}*{}
+\capcs wd {the width of the box in a specified box register}*{}
+\capcs wedge {logical ``and'' operator: $\wedge$}{}{}
+\capcs widehat {math accent, as in $\widehat {y+z+a}$}{}{}
+\capcs widetilde {math accent $\widetilde {b+c+d}$}{}{}
+\capcs widowpenalty {penalty for a single line beginning a page,
+ by default~150}*{}
+\capcs wlog {|\\write| the specified token list in the log file}{}{}
+\capcs wp {Weierstra\ss\ `p' symbol: $\wp$}{}{}
+\capcs wr {wreath product operator: $\wr$}{}{}
+\capcs write {write a line to a specified output stream}*{}
+\capcs xdef {equivalent to |\\global\\edef|, i.e., globally define a
+ macro, immediately expanding the replacement text}*{}
+\capcs xi {math Greek letter $\xi$}{}{}
+\capcs Xi {math Greek letter $\Xi$}{}{}
+\capcs xleaders {produce leaders with leftover space distributed equally
+ between the leader boxes}*{}
+\capcs xspaceskip {if nonzero and |\\spacefactor|${}\ge2000$,
+ overrides the normal interword glue}*{}
+\capcs year {the current year, as a number}*{}
+\capcs zeta {math Greek letter $\zeta$}{}{}
+
+\endcapsum
+\endchapter
+\byebye
diff --git a/Master/texmf-doc/doc/english/impatient/concepts.tex b/Master/texmf-doc/doc/english/impatient/concepts.tex
new file mode 100644
index 00000000000..ad5f4cc42d2
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/concepts.tex
@@ -0,0 +1,4097 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+% See file fdl.tex for copying conditions.
+
+\input macros
+\chapter{Concepts}
+
+\chapterdef{concepts}
+
+This part of the book contains definitions and explanations of
+the concepts that we use in describing \TeX.
+The concepts include both
+technical terms that we use in explaining the commands and
+important topics that don't fit elsewhere in the book.
+
+The concepts are arranged alphabetically.
+The inside back cover of the book contains a complete list of
+concepts and the pages on which they are explained.
+We suggest that you make a copy of the inside back cover and keep it nearby
+so that you'll be able to identify and look up an unfamiliar
+concept immediately.
+As far as possible, we've kept our terminology consistent with that of
+\texbook.\idxref{\texbook}
+
+\beginconcepts
+
+\conceptindex{active characters}
+\concept {active character}
+
+An \defterm{active character} is a \refterm{character}
+that has a definition, e.g., a macro definition, associated with it.
+^^{macros//named by active characters}
+You can think of an active character as a special kind of control sequence.
+When \TeX\ encounters an active character, it
+executes the definition associated with the character.
+If \TeX\ encounters an active character that does not have
+an associated definition, it will complain about an
+undefined control sequence.
+
+An active character has a \refterm{category code} of $13$ (the value
+of ^|\active|).
+To define an active character, you should first
+use the ^|\catcode| command
+\ctsref{\catcode} to make it active
+and then provide the definition of the character, using
+a command such as |\def|, |\let|, or |\chardef|.
+The definition of an active character has the same form as
+the definition of a \refterm{control sequence}.
+^^{category codes//of active characters}
+If you try to define the macro for an active character
+before you make the character active, \TeX\ will complain about a
+missing control sequence.
+
+For example, the tilde character (|~|) is defined as an active character
+in \plainTeX. It
+produces a space between two words but links those words so that
+\TeX\ will not turn the space into a \refterm{line break}.
+\refterm{\PlainTeX:\plainTeX} defines `|~|' by the commands:
+
+\csdisplay
+\catcode `~ = \active \def~{\penalty10000\!visiblespace}
+|
+(The |\penalty| inhibits a line break and the `|\!visiblespace|'
+inserts a space.)
+\endconcept
+
+
+\conceptindex{alignments}
+\concept alignment
+
+\bix^^{tables}
+An \defterm{alignment} is a construct for aligning material, such as a
+table, in columns or rows. To form an alignment you need to
+(a)~describe the layout of the columns or rows and (b)~tell \TeX\ what
+material goes into the columns or rows. A tabbing alignment or a
+horizontal alignment is organized as a sequence of rows; a vertical
+alignment is organized as a sequence of columns. We first describe
+tabbing and horizontal alignments and then more briefly describe
+vertical alignments.
+
+Tabbing alignments are defined by \plainTeX. They are simpler but less
+flexible than horizontal alignments. Tabbing and horizontal alignments
+differ principally in how you describe their layouts.
+
+\bix^^|\settabs|
+\bix\ctsidxref{+}
+\bix\ctsidxref{cr}
+
+To construct a tabbing alignment you first issue a |\settabs| command
+\ctsref{\settabs} that specifies how \TeX\ should divide the available
+horizontal space into columns. Then you provide a sequence of rows for
+the table. Each row consists of a |\+| control sequence \ctsref{\@plus}
+followed by a list of ``entries'', i.e., row\slash column intersections.
+^^{entry (column or row)}
+Adjacent entries in a row are separated by an ampersand (|&|).
+\xrdef{@and}
+\ttidxref{&}
+The end of a row is indicated by ^|\cr| after its
+last entry.
+If a row has fewer entries than there are columns in the alignment,
+\TeX\ effectively fills out the row with blank entries.
+
+As long as it's preceded by a |\settabs| command, you can put a row of a
+tabbing alignment anywhere in your document. In particular, you can put
+other things between the rows of a tabbing alignment or describe several
+tabbing alignments with a single |\settabs|. Here's an example of a
+tabbing alignment:
+
+\xrdef{tabbedexample}\csdisplay
+{\hsize = 1.7 in \settabs 2 \columns
+\+cattle&herd\cr
+\+fish&school\cr
+\+lions&pride\cr}
+|
+The |\settabs 2 \columns| command in this example \ctsref{\settabs}
+tells \TeX\ to produce two equally wide columns.
+The line length is $1.7$ inches.
+The typeset alignment looks like this:
+
+{\def\+{\tabalign}% so it isn't \outer.
+\vdisplay{%
+\hsize 1.7 in \settabs 2 \columns
+\+cattle&herd\cr
+\+fish&school\cr
+\+lions&pride\cr}
+}%
+
+\margin{Missing explanation added here.}
+There's another form of tabbing alignment in which you specify the column
+widths with a template. The column widths in the template
+determine the column widths in the rest of the alignment:
+\csdisplay
+{\settabs\+cattle\quad&school\cr
+\+cattle&herd\cr
+\+fish&school\cr
+\+lions&pride\cr}
+|
+Here's the result:
+{\def\+{\tabalign}% so it isn't \outer.
+\vdisplay{%
+\settabs\+cattle\quad&school\cr
+\+cattle&herd\cr
+\+fish&school\cr
+\+lions&pride\cr}
+}%
+
+\eix^^|\settabs|
+\eix\ctsidxref{+}
+\bix^^|\halign|
+Horizontal alignments are constructed with |\halign| \ctsref\halign.
+\TeX\ adjusts the column widths of a horizontal alignment according to
+what is in the columns. When \TeX\ encounters the |\halign| command
+that begins a horizontal alignment, it first examines all the rows of
+the alignment to see how wide the entries are. It then sets each column
+width to accommodate the widest entry in that column.
+
+A horizontal alignment governed by |\halign| consists of a
+``\pix^{preamble}'' that indicates the row layout followed by the rows
+themselves.
+\ulist
+\li The preamble consists of a sequence of \pix^{template}s, one for each
+column. The template for a column specifies how the text for that
+column should be typeset. Each template must include a single |#|
+character
+\ttidxref{#}\xrdef{@asharp}
+to indicate where \TeX\ should substitute the text of an entry into the
+template. The templates are separated by ampersands (|&|), \ttidxref{&}
+and the end of the preamble is indicated by |\cr|. By providing an
+appropriate template you can obtain effects such as centering a column,
+left or right justifying a column, or setting a column in a particular
+\refterm{font}.
+
+\li The rows have the same form as in a tabbing alignment, except that
+you omit the |\+| at the beginning of each row.
+As before, entries are separated by |&| and the end of the row
+is indicated by |\cr|.
+\TeX\ treats each entry as a
+\refterm{group}, so any
+font-setting command or other \refterm{assignment}
+in a column template is in effect only for the entries in that column.
+\endulist
+\noindent The preamble and the rows must all be enclosed in the braces
+that follow |\halign|. Each |\halign| alignment must include
+its own preamble.
+
+For example, the horizontal alignment:
+\csdisplay
+\tabskip=2pc
+\halign{\hfil#\hfil &\hfil#\hfil &\hfil#\hfil \cr
+ &&\it Table\cr
+\noalign{\kern -2pt}
+ \it Creature&\it Victual&\it Position\cr
+\noalign{\kern 2pt}
+ Alice&crumpet&left\cr
+ Dormouse&muffin&middle\cr
+ Hatter&tea&right\cr}
+|
+
+\noindent produces the result:
+
+\xrdef{halignexample}
+\vdisplay{%
+\tabskip=2pc \halign{\hfil#\hfil &\hfil#\hfil &\hfil#\hfil \cr
+ &&\it Table\cr
+\noalign{\kern -2pt}
+ \it Creature&\it Victual&\it Position\cr
+\noalign{\kern 2pt}
+ Alice&crumpet&left\cr
+ Dormouse&muffin&middle\cr
+ Hatter&tea&right\cr}
+}%
+\noindent The ^|\tabskip| \ctsref{\tabskip} in this example
+tells \TeX\ to insert |2pc| of
+\refterm{glue} between the columns.
+The ^|\noalign| \ctsref{\noalign} commands tell \TeX\ to insert
+\refterm{vertical mode} material between two rows.
+In this example we've
+used |\noalign| to produce some extra space between the title rows and
+the data rows, and also to bring ``Table'' and ``Position'' closer together.
+(You can also use |\noalign| before the first row or after the
+last row.)
+\eix^^|\halign|
+
+You can construct a vertical alignment with the ^|\valign| command
+\ctsref{\valign}. A vertical alignment is organized as a series of
+columns rather than as a series of rows. A vertical alignment follows
+the same rules as a horizontal alignment except that the roles of rows
+and columns are interchanged. For example, the vertical alignment:
+
+\csdisplay
+{\hsize=0.6in \parindent=0pt
+\valign{#\strut&#\strut&#\strut\cr
+ one&two&three\cr
+ four&five&six\cr
+ seven&eight&nine\cr
+ ten&eleven\cr}}
+|
+\noindent yields:
+\vdisplay{%
+{\hsize=0.6in \parindent=\listleftindent % Because lists and displays
+ % are not indented just by \parindent.
+\valign{#\strut&#\strut&#\strut\cr
+ one&two&three\cr
+ four&five&six\cr
+ seven&eight&nine\cr
+ ten&eleven\cr}}
+}
+The ^|\strut| commands \ctsref{\strut}
+in the template are necessary to get the entries in each row
+to line up properly, i.e., to have a common \refterm{baseline},
+and to keep the distance between baselines uniform.
+\eix\ctsidxref{cr}
+\eix^^{tables}
+
+\endconcept
+
+
+\concept{\anatomy}
+
+\texbook\ describes the way that {\TeX} processes its input in terms of \TeX's
+``digestive tract''---its ``^{eyes}'', ``^{mouth}'',
+``^{gullet}'', ``^{stomach}'', and ``^{intestines}''. Knowing how this
+processing works can be helpful when you're trying to understand subtle
+aspects of \TeX's behavior as it's digesting a document.
+
+\ulist
+
+\li Using its ``\pix^{eyes}'', \TeX\ reads \refterm{characters:character} from
+^{input files} and passes them to its mouth. Since an input file
+can contain ^|\input| commands \ctsref{\input},
+\TeX\ can in effect ``shift its gaze'' from one file to another.
+
+\li Using its ``\pix^{mouth}'', {\TeX} assembles the characters into
+\refterm{tokens:token} and passes them to its gullet.
+Each token is either a \refterm{control sequence} or a single
+character. A control sequence always starts with an \refterm{escape
+character}. Note that spaces and ends-of-line are characters in their
+own right, although \TeX\ compresses a sequence of input spaces into a single
+space token. See \knuth{pages~46--47} for the rules by which \TeX\ assembles
+characters into tokens.
+^^{tokens//assembled from characters}
+
+\li Using its ``\pix^{gullet}'', {\TeX} expands any macros, conditionals, and
+^^{macros//expanded in \TeX's stomach}
+^^{tokens//passed to \TeX's stomach}
+similar constructs that it finds (see \knuth{pages~212--216}) and passes
+the resulting sequence of \refterm{tokens:token}
+to \TeX's stomach. Expanding one token
+may yield other tokens that in turn need to be expanded. {\TeX} carries
+out this expansion from left to right unless the order is modified by
+a command such as |\expandafter| \ctsref{\expandafter}.
+In other words, \TeX's gullet always expands the leftmost un\-ex\-panded
+token that it has not yet sent to \TeX's stomach.
+
+\li Using its ``\pix^{stomach}'', {\TeX} processes the tokens in
+groups.
+Each group contains a primitive command followed by its arguments, if any.
+Most of the commands are of the ``typeset this character'' variety,
+so their groups consist of just one token.
+Obeying the instructions given by the commands,
+\TeX's stomach assembles larger and larger
+units, starting with
+characters and ending with pages,
+and passes the pages to \TeX's intestines.
+^^{pages//assembled in \TeX's stomach}
+\TeX's stomach handles the tasks of \refterm{line break}ing---%
+^^{line breaking}
+i.e., breaking each paragraph into a sequence of lines---%
+and of \refterm{page break}ing---i.e., breaking a continuous sequence of lines
+and other vertical mode material
+into pages.
+
+\li Using its ``\pix^{intestines}'', \TeX\ transforms the pages produced by its
+stomach into a form intended for processing
+by other programs. It then sends the transformed output to the
+\dvifile.
+^^{\dvifile//created by \TeX's intestines}
+
+\endulist
+
+Most of the time you can think of the processes that take place in \TeX's
+eyes, mouth, gullet, stomach, and intestines
+as happening one after the other. But the
+truth of the matter is that commands executed in \TeX's stomach can
+influence the earlier stages of digestion. For instance, when \TeX's stomach
+encounters the |\input| command \ctsref{\input},
+its eyes start reading from a different
+file; when \TeX's stomach encounters a |\catcode| command
+ \ctsref{\catcode} specifying a category code
+for a character $c$, the interpretation of $c$ by \TeX's mouth is affected.
+And when
+\TeX's stomach encounters a \refterm{macro} definition, the expansions carried
+out in \TeX's gullet are affected.
+
+You can understand how the processes interact by imagining that each
+process eagerly gobbles up the output of its predecessor as soon as it
+becomes available. For instance, once \TeX's stomach has seen
+the last character of the filename in an |\input| command, \TeX's gaze
+immediately shifts to the first character of the specified input file.
+\endconcept
+
+\pagebreak
+\conceptindex{arguments}
+\concept argument
+
+^^{commands//arguments of}
+An \defterm{argument} contains text that is passed to a
+\refterm{command}.
+The arguments of a command complete the description of what
+the command is supposed to do.
+The command can either be a \refterm{primitive} command or a
+\refterm{macro}.
+
+Each primitive command ^^{primitive//command}
+has its own convention about the form of its
+arguments. For instance, the sequence of \refterm{tokens:token}:
+
+\csdisplay
+\hskip 3pc plus 1em
+|
+consists of the command `|\hskip|' and the arguments
+`|3pc plus 1em|'. But if you were to write:
+
+\csdisplay
+\count11 3pc plus 1em
+|
+you'd get an entirely different effect.
+\TeX\ would treat `|\count11|' as a command with argument `|3|',
+followed by the ordinary text tokens `|pc plus 1em|'
+(because count registers expect a number to be assigned to them)%
+---probably not what
+you intended. The effect of the command, by the way, would be to
+assign $3$ to count register $11$ (see the discussion of ^|\count|,
+\xref\count).
+
+Macros, on the other hand, all follow the same convention
+for their arguments.
+^^{macros//arguments of}
+Each argument passed to a macro
+corresponds to a \refterm{parameter}
+^^{parameters//and arguments}
+in the definition of that
+macro. ^^{macros//parameters of}
+A macro parameter is either ``delimited'' or ``undelimited''.
+The macro definition determines the number and nature of the macro parameters
+and therefore the number and nature of the macro arguments.
+
+The difference between a delimited argument and an undelimited argument
+lies in the way that \TeX\ decides where the argument ends.
+^^{delimited arguments}
+^^{undelimited arguments}
+\ulist
+\li A delimited argument consists of the tokens
+from the start of the argument up to, but not including, the
+particular sequence of tokens that serves as the delimiter for that argument.
+The delimiter is specified in the macro definition. Thus you
+supply a delimited argument to a macro by writing the argument itself
+followed by the delimiter. A delimited argument can be empty, i.e., have
+no text at all in it. Any braces in a delimited argument must be paired
+properly, i.e., every left brace must have a corresponding right brace
+and vice versa.
+
+\li An undelimited argument consists of a single token or a sequence of
+tokens enclosed in braces, like this:
+`|{Here is {the} text.}|'. Despite appearances, the outer braces don't
+form a \refterm{group}---\TeX\ uses them only to determine what the
+argument is. Any inner braces, such as the ones around `|the|', must be
+paired properly. If you make a mistake and put in too many right
+braces, \TeX\ will complain about an unexpected right brace. \TeX\ will
+also complain if you put in too many left braces, but you'll probably
+get \emph{that} complaint long after the place where you intended to
+end the argument (see \xref{mismatched}).
+\endulist
+\noindent
+See \conceptcit{macro} for more information
+about parameters and arguments. You'll find the precise rules pertaining
+to delimited and undelimited arguments in \knuth{pages~203--204}.
+\endconcept
+
+
+\concept{ASCII}
+
+\defterm{\ascii} is the abbreviation of ``American Standard Code for
+Information Interchange''. There are $256$ \ascii\
+^{characters}, each with its own code number, but
+the meanings of only the first~$128$ have been standardized. You can
+find these meanings in an \ascii\ ``code table'' such as the one on
+\knuth{page~367}. Characters $32$--$126$ are ``printable characters'',
+^^{printable characters} such as letters, numbers, and punctuation
+marks. The remaining characters are ``^{control characters}'' that are
+typically used (in the computer industry, not in \TeX) to control
+input\slash output and data communications devices. For instance,
+\ascii\ code $84$ corresponds to the letter `T', while \ascii\
+code~$12$ corresponds to the ``form feed'' function (interpreted by most
+printers as ``start a new page''). Although the \ascii\ standard
+specifies meanings for the control characters, many manufacturers of
+equipment such as modems and printers have used the control characters
+for purposes other than the standard ones.
+
+The meaning of a
+character in \TeX\ is usually consistent with its meaning in standard \ascii,
+and \refterm{fonts:font} that contain \ascii\
+printable characters usually have those characters in the same positions as
+their \ascii\ counterparts.
+But some fonts, notably those used for math, replace the \ascii\
+printable characters by other characters unrelated to the \ascii\ characters.
+For instance, the Computer Modern math font
+^^{Computer Modern fonts}
+|cmsy10| has the math symbol
+`{$\forall$}' in place of the \ascii\ digit `8'.
+
+
+\endconcept
+
+\conceptindex{assignments}
+\concept assignment
+
+An \defterm{assignment} is a construct that tells \TeX\ to assign a
+value to a register,
+^^{registers//assignment to}
+to one of its internal
+\refterm{parameters:parameter},
+^^{parameters//assignments to}
+to an entry in one of its internal tables,
+or to a \refterm{control sequence}. Some examples of assignments are:
+
+\csdisplay
+\tolerance = 2000
+\advance\count12 by 17
+\lineskip = 4pt plus 2pt
+\everycr = {\hskip 3pt \relax}
+\catcode\`@ = 11
+\let\graf = \par
+\font\myfont = cmbx12
+|
+
+The first assignment indicates that \TeX\ should assign the numeric value
+|2000| to the numeric parameter |\tolerance|, i.e., make the value of
+|\tolerance| be $2000$. The other assignments are similar. The `|=|'
+and the spaces are optional, so you could also write the first
+assignment more tersely as:
+
+\csdisplay
+\tolerance2000
+|
+
+See \knuth{pages~276--277} for the detailed syntax of assignments.
+\endconcept
+
+
+\concept badness
+
+The \defterm{badness} of a line is a measure of how far the interword
+spaces ^^{interword spacing}
+in the line deviate from their natural values,
+i.e., the values specified in the \refterm{fonts:font} used in the line.
+The greater the
+deviation, the greater the badness. Similarly, the badness of a page is
+a measure of how far the spaces between the boxes that
+make up the page deviate from their ideal values. (Ordinarily, most of these
+boxes are single lines of paragraphs.)
+
+More precisely, the badness
+is a measure of how much the \refterm{glue} associated with these spaces needs
+to stretch or shrink to fill the line or page exactly.
+\TeX\ computes the badness as approximately $100$
+times the cube of the ratio by which it must stretch or shrink the glue
+in order to compose a line or a page of the required size.
+^^{line breaks//badness for}^^{page breaks//badness for}
+For example, stretching the glue by twice its stated stretch yields a ratio of
+$2$ and a badness of $800$; stretching it by half its stated stretch yields
+a ratio of $.5$ and a badness of $13$.
+\TeX\ treats a badness greater than $10000$ as
+equal to $10000$.
+
+\TeX\ uses the badness of a line when it's breaking a paragraph into lines
+\seeconcept{line break}. It uses this information in two stages:
+
+\olist
+\li When \TeX\ is choosing line breaks,
+it will eventually accept lines whose badness is less than or equal to
+the value of |\tolerance| (\xref \tolerance). If \TeX\ cannot avoid setting
+a line whose badness exceeds this
+value, it will set it as an underfull or overfull \refterm{hbox}.
+\TeX\ will set
+an overfull or underfull hbox only as a last resort, i.e., only if there's no
+other way to break the paragraph into lines.
+\li Assuming that all lines are tolerably bad, \TeX\ uses the badness of lines
+in order to evaluate the different ways of breaking the paragraph into lines.
+During this evaluation it associates ``demerits'' with each potential line.
+The badness increases the number of \refterm{demerits}.
+\TeX\ then
+breaks the paragraph into lines in a way that minimizes the
+total demerits for the paragraph.
+Most
+often \TeX\ arranges the paragraph in a way that minimizes the badness of the
+worst line. See \knuth{pages~97--98} for the details of how \TeX\
+breaks a paragraph into lines.
+\endolist
+
+\TeX's procedure for assembling a sequence of lines and other vertical
+mode material into pages is similar to its procedure for line breaking.
+However, assembling pages is
+not as complicated because \TeX\ only considers one page at a time
+when it looks for page breaks.
+Thus the only decision it must make is where to end the current page.
+In contrast, when \TeX\ is choosing line breaks it
+considers several of them simultaneously.
+(Most word processors choose line breaks one at a time,
+and thus don't do as good a job at it as \TeX\ does.)
+See \knuth{pages~111--113} for the details of how \TeX\ chooses its
+page breaks.
+\endconcept
+
+
+\conceptindex{baselines}
+\concept baseline
+
+The \defterm{baseline} of a \refterm{box} is an imaginary line that runs
+across the box.
+^^{boxes//baselines of}
+When \TeX\ is
+assembling the boxes of a \refterm{horizontal list} into a larger box,
+it lines up the boxes in the list so that their baselines coincide.
+As an analogy, think of writing on a pad of ruled paper. Each letter
+that you write has
+an implicit baseline.
+In order to line up the letters horizontally,
+you place them on the pad so that their baselines
+agree with the light guidelines that are printed on the pad.
+
+A box can and often does extend below its baseline.
+For instance, the letter `g' extends below the baseline of its box because
+it has a descender (the bottom loop of the `g').
+\endconcept
+
+
+\conceptindex{boxes}
+\concept box
+
+A \defterm{box} is a rectangle of material to be typeset. A single
+\refterm{character} is a box by itself,
+and an entire page is also a box.
+\TeX\ forms a page as a nest of boxes within boxes within boxes. The
+outermost box is the page itself, the innermost boxes are mostly
+single characters, and single lines are boxes that are
+somewhere in the middle.
+
+\TeX\ carries out most of its box-building activities implicitly as it
+constructs paragraphs and pages.
+You can construct boxes explicitly
+using a number of \TeX\ \refterm{commands}, notably
+^|\hbox| \ctsref{\hbox},
+^|\vbox| \ctsref{\vbox}, and
+^|\vtop| \ctsref{\vtop}.
+The ^|\hbox| command
+constructs a box by appending smaller boxes horizontally from left to right;
+it operates on a \refterm{horizontal list} and yields
+an \refterm{hbox} ^^{hboxes} (horizontal box).
+^^{horizontal lists}
+The ^|\vbox| and |\vtop| commands
+construct a box by appending smaller boxes vertically from top to bottom;
+^^{vboxes}
+they operate on a \refterm{vertical list}
+and yield a \refterm{vbox} ^^{vboxes} (vertical box).
+^^{vertical lists}
+These horizontal and vertical lists can include not just smaller boxes but
+several other kinds of entities as well, e.g., \refterm{glue} and
+kerns.
+^^{kerns//as list items}
+
+A box has \refterm{height}, \refterm{depth}, and \refterm{width},
+^^{height} ^^{depth} ^^{width}
+like this:
+\vdisplay{\offinterlineskip\sevenrm
+ \halign{#&#&\kern3pt \hfil#\hfil\cr
+ &\hrulefill\cr
+ &\vrule
+ \vtop to .7in{\vss \hbox to .9in{\hss baseline\hss}\vskip4pt}%
+ \vrule
+ &\labelledheight{.7in}{height}\cr
+ %
+ \vbox to 0pt{
+ \vss
+ \hbox{reference point \hbox to 15pt{\rightarrowfill}%
+ \hskip3pt}%
+ \kern-4.5pt}&{\box\refpoint}\hrulefill\cr
+ %
+ \omit
+ &\vrule\hfil\vrule
+ &\labelledheight{.4in}{depth}\cr
+ %
+ &\hrulefill\cr
+ %
+ \noalign{\vskip3pt}%
+ &\leftarrowfill { width }\rightarrowfill\cr
+}}
+
+^^{baselines}
+The \refterm{baseline} is like one of
+the light guidelines on a pad of ruled paper.
+The boxes for letters such as `g'
+extend below the baseline; the boxes for letters such as `h' don't.
+The height of a box is the distance that the box extends above its
+baseline, while its depth is the distance that it extends below its
+baseline. \bix^^{reference point}
+The \minref{reference point}
+of a box is the place where its baseline intersects its left edge.
+
+{\tighten
+\TeX\ builds an hbox $H$ from a horizontal list by assuming
+a reference point for $H$ and then appending the items in the list to $H$
+one by one from left to right.
+Each box in the list is placed so that its baseline coincides with the
+baseline of $H$\kern-2pt,
+i.e., the component boxes are lined up horizontally.%
+\footnote{If a box is moved up or down with ^|\raise| or
+^|\lower|, \TeX\ uses its reference point before the move when
+placing it.}
+The height of $H$ is the
+height of the tallest box in the list, and the depth of $H$ is the depth
+of the deepest box in the list.
+The width of $H$ is the sum of the
+widths of all the items in the list.
+If any of these items are \refterm{glue} and \TeX\ needs to stretch or shrink
+the glue,
+the width of $H$ will be larger or smaller accordingly.
+See \knuth{page~77} for the~details.
+\par}
+
+Similarly, \TeX\ builds a vbox $V$ from a vertical list by assuming a
+temporary reference point for $V$ and then appending the items in the
+list to $V$ one by one from top to bottom. Each box in the list is
+placed so that its reference point is lined up vertically with the
+reference point of \Vperiod.\footnote{If a box is moved left or right with
+^|\moveleft| or ^|\moveright|, \TeX\ uses its reference point before the
+move when placing it.} As each box other than the first one is added to
+\Vcomma, \TeX\ puts \minref{interline glue} just above it. (This
+^{interline glue} has no analogue for hboxes.) The width of $V$ is the
+width of the widest box in the list, and the vertical extent (height
+plus depth) of $V$ is the sum of the vertical extents of all the
+items in the list.
+
+\bix^^|\vbox|
+\bix^^|\vtop|
+The difference between |\vbox| and |\vtop| is in how they partition
+the vertical extent of $V$ into a height and a depth.
+Choosing the reference point of $V$ determines that partition.
+\ulist
+\li For |\vbox|, \TeX\ places the reference point on a horizontal line
+with the reference point of the last component box
+or rule of \Vcomma, except
+that if the last box (or rule) is followed by glue or a kern, \TeX\ places the
+reference point at the very bottom of \Vperiod.%
+\footnote{The depth is limited by
+the parameter ^|\boxmaxdepth| \ctsref{\boxmaxdepth}.}
+
+\li For |\vtop|, \TeX\ places the reference point on a horizontal line
+with the reference point of the first component box or rule of \Vcomma,
+except that if the first box (or rule)
+is preceded by glue or a kern, \TeX\ places
+the reference point at the very top of \Vperiod.
+
+\endulist
+\noindent
+Roughly speaking, then, |\vbox| puts the reference point near the bottom
+of the vbox and |\vtop| puts it near the top.
+When you want to align a
+row of vboxes so that their tops line up horizontally,
+you should usually use |\vtop| rather than |\vbox|.
+See \knuth{pages~78 and 80--81} for the
+details of how \TeX\ builds vboxes.
+\eix^^|\vbox|
+\eix^^|\vtop|
+\eix^^{reference point}
+
+You have quite a lot of freedom in constructing boxes. The typeset
+material in a box can extend beyond the boundaries of the box as it does
+for some letters (mostly italic or slanted ones). The component boxes
+of a larger box can overlap. A box can have negative width, depth, or
+height, though boxes like that are not often needed.
+
+You can save a box in a box \refterm{register} and retrieve it later.
+Before using a box register,
+^^{box registers}
+you should reserve it and give it a name
+with the ^|\newbox| command \ctsref{\@newbox}. See
+\conceptcit{register} for more information about box
+registers.
+\endconcept
+
+
+\conceptindex{category codes}
+\concept {category code}
+
+The \defterm{category code} of a \refterm{character} determines that
+character's role in \TeX.
+^^{characters//category code of}
+For instance, \TeX\ assigns a certain role to
+letters, another to space characters, and so forth. \TeX\ attaches a
+code to each character that it reads. When \TeX\ reads the
+letter `|r|', for example, it ordinarily
+attaches the category code $11$ (letter)
+to it. For simple \TeX\ applications you won't need to worry about
+category codes, but they become important when you are trying to achieve
+special effects.
+
+Category codes apply only to characters that \TeX\ reads from input
+files. Once a character has gotten past \TeX's ^{gullet}
+\seeconcept{\anatomy} and been interpreted, its category code no
+longer matters. A character that you produce with the ^|\char| command
+\ctsref{\char} does not have a category code because |\char|
+is an instruction to \TeX\ to produce a certain character in a certain
+\refterm{font}. For instance, the ^{\ascii} code for `|\|'
+(the usual escape character) is $92$. If
+you type `|\char92 grok|', it is \emph{not} equivalent to |\grok|.
+Instead it tells \TeX\ to
+typeset `$c$grok', where $c$ is the character in position $92$
+of the code table for the current font.
+
+You can use the ^|\catcode| command \ctsref{\catcode} to reassign the
+category code of any character. By changing category codes you can
+change the roles of various characters. For instance, if you type
+`|\catcode`\@ = 11|', the category code of the at sign (|@|) will be set
+to ``letter''. You then can use `|@|' in the name of a control
+sequence.
+
+Here is a list of the category codes as they're defined in
+\refterm{\plainTeX} (see \xref{twocarets} for an explanation of
+the |^^| notation),
+together with the characters in each category:
+
+\xrdef{catcodes}
+\vskip\abovedisplayskip
+%k \vskip 0pt plus 2pt % to fix bad page break
+{%k \interlinepenalty = 10000
+\halign{\indent\hfil\strut#&\qquad#\hfil\cr
+\it Code&\it Meaning\cr
+\noalign{\vskip\tinyskipamount}
+0&Escape character \quad |\| ^^{escape character//category code of}
+ {\recat!ttidxref[\//category code of]]
+ \cr
+1&Beginning of group \quad |{| ^^{groups}
+ {\recat!ttidxref[{//category code of]]
+ \cr
+2&End of group \quad |}|
+ {\recat!ttidxref[}//category code of]]
+ \cr
+3&Math shift \quad |$| ^^{math shift}
+ {\recat!ttidxref[$//category code of]]
+ \cr
+4&Alignment tab \quad |&| ^^{tabs} ^^{alignments//tab character for}
+ \ttidxref{&//category code of} \cr
+5&End of line \quad |^^M| \tequiv \ascii\ \asciichar{return}
+ ^^{end of line} \ttidxref{^^M//category code of}\cr
+6&Macro parameter \quad |#|
+ ^^{macros//parameters of}
+ ^^{parameters//indicated by \b\tt\#\e}
+ \ttidxref{#//category code of} \cr
+7&Superscript \quad |^| and |^^K| ^^{superscripts}
+ \ttidxref{^^K}
+ \ttidxref{^//category code of} \cr
+8&Subscript \quad |_| and |^^A| ^^{subscripts}
+ \ttidxref{^^A}
+ \ttidxref{_//category code of} \cr
+9&Ignored character \quad |^^@| \tequiv \ascii\ \asciichar{null}
+ ^^{ignored characters} \indexchar ^^@ \cr
+10&Space \quad \visiblespace\ and |^^I| \tequiv \ascii\
+ \asciichar{horizontal\ tab}
+ ^^{horizontal tab}
+ ^^{space characters//category code of} \indexchar ^^I
+ {\recat!ttidxref[ ]]
+ \cr
+11&Letter \quad |A| \dots |Z| and |a| \dots |z| ^^{letter}\cr
+12&Other character \quad (everything not listed above or below)
+ ^^{other characters}\cr
+13&Active character \quad |~| and |^^L| \tequiv\ascii\ \asciichar{form\ feed}
+ ^^{active characters} ^^{form feed} \indexchar ~ \indexchar ^^L \cr
+14&Comment character \quad |%| ^^{comments}
+ {\recat!ttidxref[%//category code of]]
+ \cr
+15&Invalid character \quad |^^?| \tequiv \ascii\ \asciichar{delete}
+ ^^{invalid character} \indexchar ^^? \cr
+}}
+\vskip\belowdisplayskip
+%k \vskip 0pt plus 2pt % to fix bad page break
+
+\noindent Except for categories $11$--$13$,
+all the characters in a particular category produce the same effect.
+\margin{Misleading material removed.}
+For instance, suppose
+that you type:
+\csdisplay
+\catcode`\[ = 1 \catcode`\] = 2
+|
+Then the left and right bracket characters become
+beginning-of-group and end-of-group characters equivalent to
+the left and right brace characters. With these definitions `|[a b]|'
+is a valid group, and so are \hbox{`|[a b}|'} and~\hbox{`|{a b]|'}.
+
+The characters in categories $11$ (letter) and $12$
+(other character) act as \refterm{commands:command}
+that mean
+``produce a \refterm{box} containing this character
+typeset in the current font''.
+The only distinction between letters and ``other'' characters is
+that letters can appear in \refterm{control word}s but
+``other'' characters~can't.
+
+A character in category $13$ (active) acts like a control sequence
+all by itself. \TeX\ complains if it encounters an active character that
+doesn't have a definition associated with it.
+^^{active characters}
+
+If \TeX\ encounters an ^{invalid character} (category $15$)
+in your input, it will complain about it.
+
+The `|^^K|' and `|^^A|' characters have been included in categories
+$8$ (subscript) and $9$ (superscript), even though these meanings
+don't follow the standard \refterm{\ascii} interpretation.
+That's because some keyboards, notably some at Stanford
+University where \TeX\ originated,
+have down arrow and up arrow keys that generate these characters.
+\ttidxref{^^A}
+\ttidxref{^^K}
+
+There's a subtle point about the way \TeX\ assigns category codes that
+can trip you up if you're not aware of it. \TeX\ sometimes needs to
+look at a character twice as it does its initial scan: first to find the
+end of some preceding construct, e.g., a control sequence, and later to
+turn that character into a token. \TeX\ doesn't assign the category
+code until its \emph{second} look at the character. For example:
+
+\csdisplay
+\def\foo{\catcode`\$ = 11 }% Make $ be a letter.
+\foo$ % Produces a `$'.
+\foo$ % Undefined control sequence `foo$'.
+|
+\noindent
+This bit of \TeX\ code produces `\$' in the typeset output. When
+\TeX\ first sees the `|$|' on the second line,
+it's looking for the end of a control sequence name. Since
+the `|$|' isn't yet a letter, it marks the end of `|\foo|'. Next,
+\TeX\ expands the `|\foo|' macro and changes the category code of `|$|'
+to $11$ (letter). Then \TeX\ reads the `|$|' ``for real''. Since
+`|$|' is now a letter, \TeX\ produces a box
+containing the `|$|' character in the current font.
+When \TeX\ sees the third line, it treats `|$|' as a letter and thus
+considers it to be part of the control sequence name.
+As a result it complains about an undefined control sequence |\foo$|.
+
+\TeX\ behaves this way even when the terminating character is an
+end of line. For example, suppose that the macro |\fum| activates the
+end-of-line character. Then if |\fum| appears on a line $\ell$ by
+itself, \TeX\ will first interpret the end of line of $\ell$ as
+the end of the |\fum| control sequence and then will \emph{reinterpret}
+the end of line of $\ell$ as an active character.
+\endconcept
+
+
+\conceptindex{characters}
+\concept character
+
+{\tighten
+\TeX\ works with \defterm{characters} in two contexts:
+as input characters, which it reads, and as output characters,
+which it typesets.
+\TeX\ transforms most input characters
+into the output characters that depict them.
+For example, it normally
+transforms the input letter `|h|' into the letter `h' typeset in the current
+font.
+That is not the case, however, for an input character such as `|$|' that has a
+special meaning.
+\par}
+
+\TeX\ gets its input characters by reading them from input files (or from your
+terminal) and by expanding \refterm{macros:macro}. These are the
+\emph{only} ways that \TeX\ can acquire an input character.
+Each input character has a code number corresponding to its position in the
+\refterm{\ascii} code table. ^^{\ascii}
+For instance, the letter `|T|' has \ascii\ code~$84$.
+
+When \TeX\ reads
+a character, it attaches a \refterm{category code}
+^^{category codes//attached during input}
+to it. The category code affects how \TeX\ interprets the
+character once it has been read in. \TeX\ determines
+(and remembers) the category codes of the characters in a macro when it
+reads the macro's definition. As \TeX\ reads characters with its eyes
+\seeconcept{\anatomy} it does some ``filtering'',
+such as condensing
+sequences of spaces to a single space. See \knuth{pages~46--48} for the
+details of this filtering.
+
+The \ascii\
+``^{control characters}'' have codes $0$--$31$ and $127$--$255$.
+They either don't
+show up or cause strange behavior on most terminals if you try to
+display them. Nonetheless they are sometimes needed in \TeX\ input,
+so \TeX\ has a special notation for them.
+\xrdef{twocarets}
+If you type `|^^|$c$', where $c$ is any character, you get the character
+whose \ascii\ code is either $64$ greater or $64$ less than $c$'s
+\ascii\ code. The largest acceptable code value using this notation
+is $127$, so the notation is unambiguous.
+Three particularly common instances of this
+notation are `|^^M|' (the \ascii\ \asciichar{return} character),
+`|^^J|' (the \ascii\ \asciichar{line\ feed} character) and `|^^I|'
+(the \ascii\ \asciichar{horizontal\ tab} character).
+\ttidxref{^^M}\ttidxref{^^J}\ttidxref{^^I}
+
+{\tighten
+\TeX\ also has another notation for indicating \ascii\ code values
+that works for all character codes from $0$ to $255$.
+\xrdef{hexchars}
+If you type `|^^|$xy$', where $x$
+and $y$ are any of the ^{hexadecimal digit}s `|0123456789abcdef|',
+you get the single character with the specified code.
+(Lowercase letters are required here.)
+\TeX\ opts for the ``hexadecimal digits''
+interpretation whenever it has a choice, so you must not follow a character
+like `|^^a|' with a lowercase hexadecimal digit---if you do, you'll get the
+wrong interpretation.
+If you need to use this
+notation you'll find it handy to have a table of \ascii\ codes.
+\par}
+
+An output character is a character to be typeset.
+A command for producing an output character has the meaning
+``Produce a \refterm{box} containing
+character number $n$ from the current \refterm{font}'',
+where $n$ is determined by the command.
+\TeX\ produces your typeset document by combining such boxes with
+other typographical \hbox{elements} and arranging them
+on the page.
+
+An input character whose category code is $11$ (^{letter}) or $12$ (other)
+^^{other characters}
+acts as a command to produce the corresponding output character. In
+addition you can get \TeX\ to produce character $n$ by issuing the
+command `|\char |$n$' \ctsref{\char}, ^^|\char| where $n$ is a
+\refterm{number} between $0$ and $255$. The commands `|h|',
+|\char`h|, and |\char104| all have the same effect. ($104$ is the
+\ascii\ code for `h'.)
+
+\endconcept
+
+
+\concept class
+
+The \defterm{class} of a \refterm{character} specifies that character's
+role in math formulas. The class of a character is encoded in its
+\refterm{mathcode}. ^^{mathcodes//class encoded in} For example, the
+equals sign `|=|' is in class $3$ (Relation). \TeX\ uses its knowledge
+of character classes to decide how much space to put between different
+components of a math formula. \margin{clarifying material added} For
+example, here's a math formula shown first as \TeX\ normally prints it
+and then with the class of each character randomly changed:
+$$\strut a+(b-a)=a \qquad
+ \mathopen{a}\mathord{+}\mathrel{(}\mathclose{b}\mathclose{-}
+ \mathop{a}\mathopen{)}\mathord{=}\mathopen{a}$$
+
+See \xrefpg\mathord\ of this book for a list of the classes and
+\knuth{page~154} for their meanings.
+
+\endconcept
+
+
+\conceptindex{commands}
+\concept command
+
+A \defterm{command} instructs \TeX\ to carry out a certain action.
+Every \refterm{token} that reaches \TeX's stomach \seeconcept{\anatomy}
+acts as a command, except for those that are parts of arguments to
+other commands (see below).
+^^{tokens//as commands}
+A command can be invoked by a
+\refterm{control sequence}, by an \refterm{active character}, or by an
+ordinary character. It might seem odd that \TeX\ treats an ordinary
+character as a command, but in fact that's what it does:
+when \TeX\ sees
+an ordinary character
+it constructs a \refterm{box} containing that character typeset in
+the current font.
+
+A command can have arguments.
+The arguments of a command are single tokens or
+groups of tokens that complete the description of what
+the command is supposed to do.
+For example, the command `|\vskip 1in|' tells \TeX\ to skip
+$1$ inch vertically. It has an argument `|1in|',
+which consists of three tokens.
+The description of what |\vskip| is supposed to do would be incomplete
+without specifying how far it is supposed to skip.
+The tokens in the arguments to a command are not themselves considered
+to be commands.
+
+Some examples of different kinds of \TeX\ commands are:
+\ulist\compact
+\li Ordinary characters, such as `|W|', which instructs \TeX\
+to produce a box containing a typeset `W'
+\li Font-setting commands,
+such as |\bf|, which begins boldface type
+\li Accents, such as |\`|, which produces a grave accent as in `\`e'
+\li Special symbols and ligatures, such as |\P| (\P) and |\ae| (\ae)
+\li Parameters, such as |\parskip|, the amount of glue that
+\TeX\ puts between paragraphs
+\li Math symbols, such as |\alpha| ($\alpha$) and |\in| ($\in$)
+\li Math operators, such as |\over|, which produces a fraction
+\endulist
+\endconcept
+
+
+\conceptindex{conditional tests}
+\concept {conditional test}
+
+A \defterm{conditional test} is a command that tests whether or not a certain
+condition is true and
+causes \TeX\ either to expand or to skip some text, depending on
+the outcome.
+The general form of a conditional test is either:
+\display{
+{\tt \\if}$\alpha$\<true text>{\tt \\else}\<false text>{\tt \\fi}}
+^^|\else|^^|\fi|
+\noindent or:\hfil\
+\display{
+{\tt \\if}$\alpha$\<true text>{\tt \\fi}}
+\noindent where $\alpha$ specifies the particular test.
+For example, |\ifvmode| tests the condition that \TeX\
+is currently in a \refterm{vertical mode}.
+If the condition is true, \TeX\ expands \<true text>.
+If the condition is false, \TeX\ expands \<false text> (if it's present).
+Conditional tests are interpreted in \TeX's gullet
+\seeconcept{\anatomy}, so any expandable \minref{token}s in
+the interpreted text are expanded after the test has been resolved.
+The
+various conditional tests are explained in \headcit{Conditional tests}%
+{conds}.
+
+\endconcept
+
+
+\conceptindex{control sequences}
+\concept{control sequence}
+
+A \defterm{control sequence} is a name for a \TeX\ \refterm{command}.
+A control sequence always starts with an ^{escape character}, usually
+a backslash (|\|).
+\indexchar \
+A control sequence takes one of two forms:
+
+\ulist
+
+\li A \refterm{control word} is a control sequence consisting of an
+\refterm{escape character} followed by one or more letters.
+^^{control words}
+The control
+word ends when \TeX\ sees a nonletter. For instance, when \TeX\ reads
+`\hbox{|\hfill!visiblespace,!visiblespace!.the|}', it sees six
+\refterm{tokens:token}:
+the control sequence `|\hfill|', comma, space, `|t|', `|h|', `|e|'. The
+space after `|\hfill|' ends the control sequence and
+is absorbed by \TeX\ when it scans the control sequence.
+(For the text `|\hfill,!visiblespace!.the|', on the other hand,
+the comma both ends the control sequence and counts as a character in its
+own right.)
+
+\li A \refterm{control symbol}
+^^{control symbols}
+is a control sequence consisting of an
+^{escape character} followed by any character other than a letter---%
+even a space or an end of line.
+A control symbol is self-delimited, i.e., \TeX\ knows where it ends without
+having to look at what character comes after it.
+The character after a control symbol is never absorbed by
+the control symbol.
+\endulist
+\noindent See \xrefpg{spaces} for more information about spaces after control
+sequences.
+
+\TeX\ provides a great many predefined control sequences. The
+\refterm{primitive} control sequences are built into the \TeX\ computer
+program and thus are available in all forms of \TeX.
+^^{primitive//control sequence}
+Other
+predefined control sequences are provided by \refterm{\plainTeX}, the
+form of \TeX\ described in this book.
+
+You can augment the predefined control sequences with ones of your own,
+using commands such as ^|\def| and ^|\let| to define them.
+\chapterref{eplain} of this book contains a
+collection of control sequence definitions that you may find
+useful. In addition, your computing facility may
+be able to provide a collection of
+locally developed \TeX\ macros.
+\endconcept
+
+
+\conceptindex{control symbols}
+\concept{control symbol}
+
+A \defterm{control symbol} is a \refterm{control sequence} that consists
+of an \refterm{escape character} followed by any character other than a
+letter---even a space or end of line.
+^^{escape character}
+\endconcept
+
+
+\conceptindex{control words}
+\concept{control word}
+
+A \defterm{control word} is a \refterm{control sequence} that consists
+of an \refterm{escape character} followed by one or more
+letters.\footnote{A ``letter'' here has the strict meaning of a
+character with category code $11$.}
+\TeX\
+ignores any spaces or ends-of-line that follow a control word, except to
+note that they end the control word.
+^^{escape character}
+\endconcept
+
+
+
+\concept {decimal constant}
+
+See \conceptcit{number}.
+\endconcept
+
+\conceptindex{delimiters}
+\concept delimiter
+
+A \defterm{delimiter} is a character
+that is intended to be used as
+a visible boundary of a math formula.
+The essential property of a delimiter is that \TeX\ can adjust
+its size according
+to the vertical size (\refterm{height} plus \refterm{depth})
+of the subformula.
+However, \TeX\ performs the adjustment only if the delimiter
+appears in a ``delimiter context'', namely, as an argument to
+one of the commands ^|\left|,
+^|\right|,
+|\over!-with!-delims|,
+|\atop!-with!-delims|,
+or |\above!-with!-delims|
+^^|\overwithdelims|
+^^|\atopwithdelims|
+^^|abovewithdelims|
+\margin{Footnote deleted}
+(see \pp\xrefn{\overwithdelims},~\xrefn{\left}).
+The delimiter contexts also include any \refterm{argument}
+to a \refterm{macro} that uses the argument in a delimiter context.
+
+For example, the left and right
+parentheses are delimiters.
+If you use ^{parentheses} in a delimiter context
+around a formula, \TeX\ makes the parentheses big
+enough to enclose the \refterm{box} that contains the formula (as long as the
+\refterm{fonts:font} you're using have big enough parentheses).
+For example:
+\csdisplay
+$$ \left( a \over b \right) $$
+|
+yields:
+\centereddisplays $$\left (a \over b \right ) $$
+Here \TeX\ has made the parentheses big enough to accommodate the fraction.
+But if you write, instead:
+\csdisplay
+$$({a \over b})$$
+|
+you'll get:
+$$({a \over b})$$
+Since the parentheses aren't in a delimiter context,
+they are \emph{not} enlarged.
+
+Delimiters come in pairs:
+an opening delimiter at the left of the subformula
+and a closing delimiter at its right.
+You can explicitly choose a larger height for a
+delimiter with the commands ^|\bigl|, ^|\bigr|, and their
+relatives \ctsref{\bigl}.\footnote
+{\PlainTeX\ defines the various |\big| commands by using |\left| and |\right|
+to provide a delimiter context. It sets the size by
+constructing an empty formula with the desired height.}
+For instance, in order to get the
+displayed formula:
+$$\bigl(f(x) - x \bigr) \bigl(f(y) - y \bigr)$$
+
+\noindent in which the outer parentheses are a little bigger than the inner
+ones, you should write:
+
+\csdisplay
+$$\bigl( f(x) - x \bigr) \bigl( f(y) - y \bigr)$$
+|
+
+The $22$ \plainTeX\ delimiters, shown at their normal size, are:
+\display{%
+$( \>) \>[ \>] \>\{ \>\}
+\>\lfloor \>\rfloor \>\lceil \>\rceil
+\>\langle \>\rangle \>/ \>\backslash
+\>\vert \>\Vert
+\>\uparrow \>\downarrow \>\updownarrow
+\>\Uparrow \>\Downarrow \>\Updownarrow$}
+^^|)| ^^|)| ^^|[| ^^|]| ^^|\lbrack| ^^|\rbrack|
+^^|\{| ^^|\}| ^^|\lbrace| ^^|\rbrace|
+^^|\lfloor| ^^|\rfloor| ^^|\lceil| ^^|\rceil|
+^^|\langle| ^^|\rangle| ^^|/| ^^|\backslash|
+^^|\vert| ^^|\Vert|
+^^|\uparrow| ^^|\downarrow| ^^|\updownarrow|
+^^|\Uparrow| ^^|\Downarrow| ^^|\Updownarrow|
+\noindent
+Here they are at the largest size provided explicitly by \plainTeX\
+ (the |\Biggl|, |\Biggr|, etc., versions):
+\nobreak\vskip .5\abovedisplayskip
+\display{%
+$\Biggl( \>\Biggr) \>\Biggl[ \>\Biggr]
+\>\Biggl\{ \>\Biggr\} \>\Biggl\lfloor \>\Biggr\rfloor
+\>\Biggl\lceil \>\Biggr\rceil
+\>\Biggl\langle \>\Biggr\rangle
+\>\Biggm/ \>\Biggm\backslash
+\>\Biggm\vert \>\Biggm\Vert
+\>\Biggm\uparrow \>\Biggm\downarrow \>\Biggm\updownarrow
+\>\Biggm\Uparrow \>\Biggm\Downarrow \>\Biggm\Updownarrow$}
+\vskip .5\belowdisplayskip
+\noindent
+The delimiters (except for `|(|', `|)|', and
+`|/|')
+are among the symbols listed on
+pages~\xrefn{\lbrace}--\xrefn{\Uparrow}.
+They are listed in one place on \knuth{page~146}.
+
+A delimiter can belong to any class.
+^^{class//of a delimiter}
+For a delimiter that you enlarge with
+|\bigl|, |\bigr|, etc., the class is determined by the command:
+``opener'' for |l|-commands, ``closer'' for |r|-commands,
+``relation'' for |m|-commands, and ``ordinary symbol'' for |g|-commands,
+e.g., |\Big|.
+
+You can obtain a delimiter in two different ways:
+\olist
+\li You can make a character be a delimiter by assigning it a
+nonnegative delimiter code
+\bix^^{delimiter codes}
+(see below) with the ^|\delcode| command (\xref\delcode).
+Thereafter the character acts as a delimiter whenever you use it in a
+delimiter context.\footnote{%
+It's possible to use a character with a nonnegative delimiter code in
+a context where it isn't a delimiter. In this case \TeX\ doesn't perform the
+search; instead it just uses the character in the ordinary way
+(see \knuth{page~156}).}
+\li You can produce a delimiter explicitly with the ^|\delimiter| command
+(\xref\delimiter), in analogy to the way that you can produce an ordinary
+character with the |\char| command or a math character with the |\mathchar|
+command.
+The |\delimiter| command uses the same delimiter codes that are used in a
+|\delcode| table entry, but with an extra digit in front to indicate a
+class.
+It's rare to use |\delimiter| outside of a macro definition.
+\endolist
+
+A delimiter code tells
+\TeX\ how to search for an appropriate output character to represent
+a delimiter.
+The rules for this search are rather complicated
+(see \knuth{pages~156 and 442}).
+A complete understanding of these rules requires knowing
+about the organization of font ^{metrics file}s, a topic that is not just beyond
+the scope of this book but beyond the scope of \texbook\ as well.
+
+In essence the search works like this. The delimiter code specifies a
+``small'' output character and a ``large'' output character by
+providing a \refterm{font} position and a font \refterm{family} for each
+(see \xref\delcode).
+Using this information, \TeX\ can find (or construct)
+larger and larger versions of the delimiter. \TeX\ first tries
+different sizes (from small to large)
+of the ``small'' character in the ``small'' font
+and then
+different sizes (also from small to large)
+of the ``large'' character in the ``large'' font,
+seeking one whose height plus depth is sufficiently large.
+If none of the characters it finds are large
+enough, it uses the largest one that it finds.
+It's possible that
+the small character, the large character, or both have been left unspecified
+(indicated by a zero in the appropriate part of the delimiter code).
+If only one character
+has been specified, \TeX\ uses that one. If neither has been specified,
+it replaces the delimiter by a space of width ^|\nulldelimiterspace|.
+\eix^^{delimiter codes}
+
+\endconcept
+
+
+\concept demerits
+
+\TeX\ uses \refterm{demerits} as a measure of how undesirable a line is
+when it's breaking a paragraph into lines \seeconcept{line break}.
+^^{line breaks//demerits for}
+The demerits of a line are affected both by the \refterm{badness} of the line
+and by \refterm{penalties:penalty} associated with the line.
+^^{badness}
+\TeX's goal in choosing a particular arrangement of lines is to minimize the
+total demerits for the paragraph, which it computes by adding up the demerits
+for the individual lines.
+See \knuth{pages~97--98} for the details of how \TeX\
+breaks a paragraph into lines.
+\TeX\ does not use demerits when it's choosing page breaks; instead, it uses
+a similar measure known as the ``cost'' of a particular page break.
+\endconcept
+
+\concept depth
+
+^^{boxes//depth of}
+The \defterm{depth} of a \refterm{box} is the distance that the box extends
+below its \refterm{baseline}.
+\endconcept
+
+
+\conceptindex{dimensions}
+\concept dimension
+
+A \defterm{dimension} specifies a distance, that is, a linear measure of
+space. You use dimensions to specify sizes of things, such as the length
+of a line. Printers in English-speaking countries traditionally measure
+distance in points and picas, while printers in continental Europe
+traditionally measure distance in did\^ot points and ciceros. You can
+use these units or others, such as inches, that may be more
+familiar to you. The font-independent
+^{units of measure} that \TeX\ understands are:
+
+\xrdef{dimdefs}
+\nobreak\vskip\abovedisplayskip
+\halign{\indent\hfil\tt #\qquad&#\hfil\cr
+pt&^{point} (72.27 points = 1 inch)\cr
+pc&^{pica} (1 pica = 12 points)\cr
+bp&big point (72 big points = 1 inch)\cr
+in&^{inch}\cr
+cm&^{centimeter} (2.54 centimeters = 1 inch)\cr
+mm&^{millimeter} (10 millimeters = 1 centimeter)\cr
+dd&^{\didotpt} (1157 {\didotpt}s = 1238 points)\cr
+cc&^{cicero} (1 cicero = 12 {\didotpt}s)\cr
+sp&^{scaled point} (65536 scaled points = 1 point)\cr
+}
+\vskip\belowdisplayskip
+
+Two additional units of measure are associated with every font: `^|ex|',
+a vertical measure usually about the height of the letter `x'
+in the font, and `^|em|', a
+horizontal measure usually equal to the point size of the font and
+about the width of the letter `M' in the font. Finally,
+\TeX\ provides three ``infinite'' units of measure: `^|fil|', `^|fill|', and
+`^|filll|', in increasing order of~strength.
+
+A dimension is written as a ^{factor}, i.e, a multiplier,
+followed by a unit of measure.
+^^{units of measure}
+The factor can be either a whole \refterm{number} or
+a \refterm{decimal constant} containing a decimal point
+or decimal comma.
+The factor can be preceded by a plus or minus sign, so a dimension
+can be positive or negative.
+^^{dimensions//negative}
+The unit of measure must be there, even if the number is
+zero. Spaces between the number and the unit of measure are permitted
+but not required. You'll find a precise definition of a
+dimension on \knuth{page~270}. Here are some examples of dimensions:
+
+\csdisplay
+5.9in 0pt -2,5 pc 2fil
+|
+The last of these represents a first-order infinite distance.
+
+An infinite distance outweighs any finite distance or any weaker infinite
+distance. If you add |10in| to |.001fil|, you get |.001fil|; if you add
+|2fil| to |-1fill| you get |-1fill|; and so forth.
+\TeX\ accepts infinite distances
+only when you are specifying the \refterm{stretch} and \refterm{shrink}
+of \refterm{glue}.
+
+\TeX\ multiplies all dimensions in your document by a
+\refterm{magnification} factor $f/1000$,
+where $f$ is the value of the ^|\mag| parameter.
+^^{magnification}
+Since the default value of
+|\mag| is $1000$, the normal case is that your document is
+typeset just as specified. You can specify a dimension as it will be
+measured in the final document independent of magnification by putting
+`|true|' in front of the unit. For instance, `|\kern 8 true pt|'
+produces a kern of $8$ points whatever the magnification.
+\endconcept
+
+
+\concept {display math}
+
+The term \defterm{display math} refers to a math formula that \TeX\
+places on a line by itself with extra space above and below
+so as to set it off from the surrounding text.
+A display math formula is enclosed by `|$$|'s.
+\ttidxref{$$}
+\TeX\ reads display math in display math \refterm{mode}.
+\endconcept
+
+
+\concept{escape character}
+
+An \defterm{escape character} introduces a control sequence. The escape
+character in \refterm{\plainTeX} is the backslash (|\|).
+\indexchar \
+You can change the escape character from $c_1$ to $c_2$
+by reassigning the category codes of $c_1$ and $c_2$
+with the ^|\catcode| command \ctsref{\catcode}.
+You can also define additional escape characters similarly.
+If you want to typeset material containing literal escape characters, you must
+either
+(a) define a control sequence that stands for the printed escape character or
+(b) temporarily
+disable the escape character by changing its category code, using the
+method shown on \xrefpg{verbatim}. The definition:
+
+\csdisplay
+\def\\{$\backslash$}
+|
+is one way of creating a control sequence that stands for `$\backslash$'
+(a backslash typeset in a math font).
+
+You can use the ^|\escapechar| parameter \ctsref{\escapechar} to specify
+how the escape character is represented in synthesized control sequences,
+e.g., those created by |\string| and |\message|.
+
+
+\endconcept
+
+
+\concept family
+
+A \defterm{family} is a group of three related \refterm{fonts:font} used
+when \TeX\ is in \refterm{math mode}.
+^^{fonts//families of}
+Outside of math mode, families
+have no effect. The three fonts in a family are used for normal symbols
+(\refterm{text size}), subscripts and superscripts (\refterm{script
+size}), and sub-subscripts, super-superscripts, etc.\
+(\refterm{scriptscript size}).
+^^{text size}
+^^{script size}
+^^{scriptscript size}
+For example, the numeral `|2|' set in
+these three fonts would give you `$2$', `$\scriptstyle 2$', and
+`$\scriptscriptstyle 2$' (in \plainTeX).
+Ordinarily you would set up the
+three fonts in a family as different point sizes of the same typeface,
+but nothing prevents you from using different typefaces for the three
+fonts as well or using the same font twice in a family.
+
+{\tighten
+\TeX\ provides for up to sixteen families, numbered $0$--$15$. For
+example, family $0$ in \refterm{\plainTeX} consists of $10$-point roman
+for text, $7$-point roman for script, and $5$-point roman for
+scriptscript.
+^^{\plainTeX//font families in}
+\PlainTeX\ also defines family $1$ to consist of math
+italic fonts and reserves families $2$ and $3$ for ^{special symbols} and
+^{math extensions} respectively.\footnote{Families $2$ and $3$ are special
+in that their font metric files must include parameters for math
+spacing.} If you need to define a family for yourself, you should use
+the ^|\newfam| command \ctsref{\@newfam} to get the number of a family that
+isn't in use, and the ^|\textfont|, ^|\scriptfont|,
+and ^|\scriptscriptfont| commands \ctsref{\scriptscriptfont}
+to assign fonts to that family.
+\par}
+
+\endconcept
+
+
+\conceptindex{files}
+\concept file
+
+A \defterm{file} is a stream of information that \TeX\ interprets or
+creates. Files are managed by the ^{operating system} that supervises your
+\TeX\ run. \TeX\ deals with files in four different contexts:
+\olist
+\li A ``^{source file}'' is one that \TeX\ reads with its ``eyes''
+\seeconcept{\anatomy} and interprets according to its ordinary rules.
+Your primary input file---the one you specify after `|**|' or
+on the command line when
+you invoke \TeX---is a source file, and so is any file that you call for
+with an ^|\input| command \ctsref \input.
+
+\li A ``^{result file}'' is one that contains the results of
+running \TeX. A \TeX\ run creates two result files: the
+\dvifile\ and the log file.
+^^{\dvifile//as a result file}
+^^{log file//as a result file}
+The \dvifile\ contains the information needed to print your document;
+the
+log file contains a record of what happened during the run, including any
+error messages that \TeX\ generated.
+If your primary source file is named
+|screed.tex|, your \dvifile\ and log file will be named |screed.dvi|
+and |screed.log|.\footnote{This is the usual convention, but
+particular implementations of \TeX\ are free to change it.}
+
+\li To read from a file with the ^|\read|
+command \ctsref{\read} you need to associate the file with an input stream.
+^^{input streams//reading with \b\tt\\read\e}
+You can have up to $16$ input streams active
+at once, numbered $0$--$15$.
+The |\read| command reads a single line and makes it the value of a
+designated \refterm{control sequence}, so reading with
+|\read| is very different from reading with ^|\input| (which brings in an
+entire file).
+\TeX\ takes any input stream number not between
+$0$ and $15$ to refer to the terminal,
+so `|\read16|', say, reads the next line that you type at the terminal.
+
+\li To write to a file with the |\write|
+command \ctsref \write\ you need to associate the file
+with an output stream.
+^^|\write//output stream for|
+^^{output streams}
+You can have up to $16$ output streams active
+at once, numbered $0$--$15$.
+Input and output streams are independent.
+Anything sent to an output stream with a negative number goes to the log
+file; anything sent to an output stream with a number greater than $15$
+goes both to the log file and to the terminal.
+Thus `|\write16|', say, writes a line on the terminal and also sends
+that line
+to the log~file.
+
+\endolist
+
+You must open a stream file before you can use it.
+An input stream file is opened with an ^|\openin|
+command \ctsref \openin\ and an output stream file is opened with an
+^|\openout| command \ctsref\openout.
+For tidiness
+you should close a stream file when you're done with it, although
+\TeX\ will do that at the end of the run if you don't.
+The two commands for closing a stream file are ^|\closein| \ctsref\closein\
+and ^|\closeout| \ctsref\closeout.
+An advantage of closing a stream when
+you're done with it is that you can then reuse the stream for a different file.
+Doing this can be essential when you're reading a long sequence of files.
+
+Although you can assign numbers yourself to input and output streams,
+it's better to do it with the ^|\newread| and
+^|\newwrite| \ctsref{\@newwrite} commands.
+You can have more than one stream associated with a particular file,
+but you'll get (probably undiagnosed) garbage unless all of the streams
+are input streams. Associating more than one stream with an input file
+can be useful when you want to use the same input file for two different
+purposes.
+
+\TeX\ ordinarily defers the actions of opening, writing to, or closing
+an output stream until it ships out a page with ^|\shipout|
+(see \knuth{page~227}
+for the details). This behavior applies even to messages written to the
+terminal with |\write|. But you can get \TeX\ to perform an action
+on an output stream immediately by preceding the action command with
+^|\immediate| \ctsref\immediate. For example:
+\csdisplay
+\immediate\write16{Do not pass GO!! Do not collect $200!!}
+|
+\endconcept
+
+
+\conceptindex{file names}
+\concept {file name}
+
+A \defterm{file name} names a
+\refterm{file} that is known to the ^{operating system}
+that in turn
+supervises your \TeX\ run. The syntax of a file name does \emph{not}
+follow the usual rules of \TeX\ syntax, and in fact it is different
+in different implementations of \TeX.
+In particular, most \TeX\ implementations consider a file name to be
+terminated by a blank or an end of line. Thus \TeX\ is likely to
+misinterpret `|{\input chapter2}|'
+by taking the right brace as part of the file name.
+As a general rule, you should follow a file name by a blank or the
+end of the line as in `|{\input chapter2!visiblespace}|'.
+
+\endconcept
+
+
+\eject
+\conceptindex{fonts}
+\concept font
+
+A \defterm{font} in \TeX\ is a collection of up to $256$ output
+characters, usually having the same typeface design, style (roman,
+italic, bold, condensed, etc.),
+and point size.\footnote{\PlainTeX\ uses a special
+font for constructing ^{math symbols} in which the characters have
+different sizes. Other special fonts are often useful for applications
+such as typesetting ^{logos}.} The ^{Computer Modern fonts} that
+generally come with \TeX\ have only $128$ characters. The colophon on
+the last page of this book describes the typefaces that we used to set
+this book.
+
+For instance, here is the alphabet in the Palatino Roman $10$ point font:
+^^{Palatino fonts}
+\vskip\abovedisplayskip{\narrower\tenpal
+\noindent ABCDEFGHIJKLMNOPQRSTUVWXYZ\hfil\break
+abcdefghijklmnopqrstuvwxyz\par
+}\vskip\belowdisplayskip
+\noindent
+And here it is in the Computer Modern Bold Extended $12$
+point font:
+^^{Computer Modern fonts}
+\vskip\abovedisplayskip{\narrower\font\twelvebf=cmbx12\twelvebf
+\noindent ABCDEFGHIJKLMNOPQRSTUVWXYZ\hfil\break
+abcdefghijklmnopqrstuvwxyz\par
+}\vskip\belowdisplayskip
+The characters in a font are numbered.
+The numbering usually agrees with the ^{\ascii} numbering
+for those characters that exist in the \ascii\ character set.
+The code table for each font indicates what the character
+with code $n$ looks like in that font.
+Some fonts, such as the ones used for mathematical symbols, have no
+letters at all in them. You can produce a \refterm{box} containing the
+character numbered $n$, typeset in the current font, by writing `|\char |$n$'
+ \ctsref{\char}.
+
+In order to use a font in your document,
+you must first name it with a control sequence and load it. Thereafter you
+can select it by typing
+that control sequence whenever you want to use it.
+\PlainTeX\ provides a number of fonts that are already named and~loaded.
+
+You name and load a font as a single operation, using a
+command such as `|\font\twelvebf=cmbx12|'. Here `|\twelvebf|' is the
+control sequence that you use to name the font
+and `|cmbx12|' identifies the font metrics file
+|cmbx12.tfm|
+in your computer's file system.
+You then can start to use the font by typing
+`|\twelvebf|'. After that, the font will be in effect until
+either (a)~you select another font or (b)~you terminate the
+\refterm{group}, if any, in which you started the
+font. For example, the input:
+
+\csdisplay
+{\twelvebf white rabbits like carrots}
+|
+will cause the |cmbx12| font to be in effect just for the
+text `|white rabbits like carrots|'.
+
+You can use \TeX\ with fonts other than
+Computer Modern (look at the example on \xrefpg{palatino} and
+at the page headers).
+The files for such fonts need to be
+installed in your computer's file system in a place where \TeX\ can find
+them. \TeX\ and its companion programs generally need two files for each font:
+one to give its metrics (|cmbx12.tfm|,
+^^{\tfmfile}
+for example) and another to
+give the shape of the characters (|cmbx12.pk|, for example).
+\TeX\ itself uses only the metrics
+file. Another program, the device driver,
+^^{device drivers}
+converts the \dvifile\
+^^{\dvifile//converted by driver}
+produced by \TeX\ to a form that your printer
+or other output device can handle. The driver
+uses the shape file (if it exists).
+
+The font metrics file contains the information that \TeX\ needs in
+order to allocate space for each typeset character.
+Thus it includes the size of each character, the ligatures and
+kerns that pertain to sequences of adjacent characters, and so on.
+What the metrics file
+\emph{doesn't} include is any information about the shapes
+of the characters in the font.
+
+{\tighten
+The shape (pixel) file \xrdef{shape}
+^^{pixel file}^^{shape file}
+may be in any of several
+formats. The extension part of the name (the part after the dot)
+tells the driver which format the shape file is in. For example,
+|cmbx12.pk| ^^{\pkfile} might be the shape file for font |cmbx12| in
+packed format, while |cmbx12.gf| ^^{\gffile} might be the shape file
+for font |cmbx12| in generic font format.
+A shape file may not be needed for a font that's resident in your
+output device.
+\par}
+
+\endconcept
+
+
+\conceptindex{footers}
+\concept footer
+
+A \defterm{footer} is material that \TeX\ puts at the bottom of every page,
+below the text of that page.
+The default footer in \plainTeX\ is a centered page number.
+Ordinarily a footer consists of a single line, which you can set by
+assigning a token list to ^|\footline| \ctsref\footline.
+See \xrefpg{bighead} for a method of producing multiline footers.
+
+\endconcept
+
+%k \vskip 0pt plus 2pt % to solve page break problem
+
+\concept {format file}
+
+{\tighten
+A \defterm{format file} is a file that contains an image of
+\TeX's memory in a form in which it can be reloaded quickly.
+A format file can be created with the ^|\dump| command \ctsref\dump.
+The image contains a complete record
+of the definitions (of \refterm{fonts:font}, \refterm{macros:macro}, etc.)
+that were present when the dump took place.
+By using ^|virtex|, a special ``virgin'' form of \TeX,
+you can then reload the format file at high speed and
+continue in the same state that \TeX\ was in at the time of the dump.
+The advantage of a format file over an ordinary input
+file containing the same information is that \TeX\ can load it much
+faster.
+\par}
+
+Format files can only be created by ^|initex|, another special
+form of \TeX\ intended just for that purpose.
+Neither |virtex| nor |initex| has any
+facilities other than the primitives built into the
+\TeX\ program itself.
+
+A ^{preloaded} form of \TeX\ is one that has a format file already
+loaded and is ready to accept user input.
+The form of \TeX\ that's called |tex|
+often has the \plainTeX\ definitions preloaded.
+(\PlainTeX\ is ordinarily available in two other forms as well:
+as a format file and as a \TeX\ source file.
+In some environments, |tex| is equivalent to calling |virtex|
+and then loading |plain|.)
+Creating preloaded forms of \TeX\ requires a special program;
+it cannot be done using only the facilities of \TeX\ itself.
+
+\endconcept
+
+\concept global
+
+A \defterm{global} definition is effective
+until the end of the
+document or until it is overridden by another definition,
+even when it occurs within a \refterm{group}.
+Thus a global definition is unaffected by group boundaries.
+You can make any definition global by prefixing it with the |\global|
+command \ctsref{\global} unless ^|\globaldefs| \ctsref\globaldefs{}
+is negative.
+^^|\global|
+
+There's a special way of making a \refterm{macro} definition global.
+^^{macros//global}
+Normally you define a macro using either the |\def| command
+or the |\edef| command \ctsref{\edef}.
+^^|\edef//making global|
+^^|\def//making global|
+If you use |\gdef| or |\xdef|
+instead of |\def| and |\edef| respectively, the macro definition will
+be global. That is, `^|\gdef|' is equivalent to `|\global\def|' and
+`^|\xdef|' is equivalent to `|\global\edef|'.
+\endconcept
+
+
+\concept glue
+
+\bix^^{stretch}
+\bix^^{shrink}
+\defterm{Glue} is blank space that can stretch or shrink.
+Glue gives \TeX\ the flexibility that it needs in order to produce
+handsome
+documents. Glue comes in two flavors: horizontal glue and vertical glue.
+Horizontal glue occurs within \refterm{horizontal lists:horizontal list},
+while vertical glue occurs within \refterm{vertical lists:vertical list}.
+^^{horizontal lists}
+^^{vertical lists}
+You
+can produce a glue item either implicitly, e.g., with an interword space, or
+explicitly, e.g., with the ^|\hskip| command.
+^^{spaces//interword}
+\TeX\ itself produces many glue
+items as it typesets your document.
+We'll just describe horizontal glue---vertical glue is analogous.
+
+When \TeX\ assembles a list of boxes and glue into a larger
+unit,
+^^{boxes//glue with}
+it adjusts the size of the glue to meet the space requirements of the
+larger unit. For instance, \TeX\ ensures that the ^{right margin} of a page
+is uniform by adjusting the horizontal glue within lines.
+Similarly, it ensures that different pages have the
+same ^{bottom margin}
+by adjusting the glue between blocks of text such as paragraphs and
+math displays
+(where the change is least likely to be conspicuous).
+
+A glue item has a natural space---the size it ``wants to be''. Glue
+also has two other attributes: its \refterm{stretch} and its
+\refterm{shrink}. You can produce a specific amount of horizontal glue
+with the ^|\hskip| \refterm{command} \ctsref{\hskip}. The command
+|\hskip 6pt plus 2pt minus 3pt|
+produces a horizontal glue item whose natural
+size is $6$ points, whose stretch is $2$ points, and whose shrink is
+$3$ points. Similarly, you can produce a specific amount of vertical
+glue with the ^|\vskip| command \ctsref{\vskip}.
+
+The best way to understand what stretch and shrink are about
+is to see an example of glue at work.
+Suppose you're constructing an \refterm{hbox} from three boxes and two glue
+items, as in this picture:
+\gluepicture
+ 29 {\picbox 4 \gluebox 6 4 1 6 \picbox 5 \gluebox 10 8 3 10 \picbox 4 }
+\noindent
+The units of measurement here could be points, millimeters, or anything else.
+If the hbox is allowed to assume its natural width, then each glue item in the
+box also assumes its natural width. The total width of the hbox is then the
+sum of the widths of its parts, namely, $29$ units.
+
+Next, suppose that the hbox is required to be wider than $29$ units, say
+$35$ units. This
+could happen, for example, if the hbox is required to occupy an entire
+line and the line width is $35$ units.
+Since the boxes can't change their width,
+\TeX\ produces the necessary extra space by making the glue items wider.
+The picture now looks like this:
+\gluepicture
+ 35 {\picbox 4 \gluebox 6 4 2 8 \picbox 5 \gluebox 10 8 6 14 \picbox 4 }
+The glue items don't become wider equally; they became wider in proportion to
+their stretch. Since the second glue item
+has twice as much stretch as the first one,
+it gets wider by four units while the first glue item gets wider by only
+two units.
+Glue can be stretched as far as necessary, although \TeX\ is
+somewhat reluctant to
+stretch it beyond the amount of stretch given in its definition.
+
+Finally, suppose that the hbox is required to be narrower than $29$ units, say
+$25$ units. In this case \TeX\ makes the glue items narrower.
+The picture looks like this:
+\gluepicture
+ 25 {\picbox 4 \gluebox 6 4 2 5 \picbox 5 \gluebox 10 8 6 7 \picbox 4 }
+The glue items become narrower in proportion to their shrink.
+The first glue item becomes narrower by one unit, while the second glue item
+becomes narrower by three units. Glue cannot shrink by a distance
+less than the amount of shrink
+given in its definition even though the distance it can stretch is
+unlimited. In this important sense the shrink and
+the stretch behave differently.
+
+A good rule of thumb for glue is to set the natural size to the amount
+of space that looks best, the stretch to the largest amount of space
+that \TeX\ can add before the document starts to look bad, and the
+shrink to the largest amount of space that \TeX\ can take away before
+the document starts to look bad. You may need to set the values by
+experiment.
+
+You can produce glue that is infinitely stretchable by specifying
+its stretch in units of `^|fil|', `^|fill|', or `^|filll|'. Glue measured in
+`|fill|' is infinitely more stretchable than glue measured in `|fil|', and
+glue measured in `|filll|' is infinitely more stretchable than glue measured
+in `|fill|'. You should rarely have any need for `|filll|' glue. Glue whose
+stretch is |2fil| has twice as much stretch as glue whose stretch is |1fil|,
+and similarly for the other kinds of infinitely stretchable glue.
+
+When \TeX\ is
+apportioning extra space among glue items, the infinitely stretchable
+ones, if there
+are any, get all of it. Infinitely stretchable glue is particularly useful for
+setting text flush left, flush right, or centered:
+
+\ulist\compact
+\li To set text ^{flush left}, put infinitely stretchable
+horizontal glue to the right of it.
+That glue will consume all the
+extra space that's available on the line.
+You can use the ^|\leftline| command \ctsref{\leftline}
+or the |\raggedright| command \ctsref{\raggedright} to do~this.
+\li To set text ^{flush right}, put infinitely
+stretchable horizontal glue to the left of it.
+As before, that glue will consume all the extra space on the line.
+You can use the ^|\rightline| command \ctsref{\rightline} to do~this.
+\li To set ^{centered text}, put identical infinitely stretchable
+horizontal glue items
+on both sides of it.
+These two glue items will divide all the extra space on the line
+equally between them.
+You can use the ^|\centerline| command \ctsref{\centerline} to do~this.
+\endulist
+
+You can also specify infinitely shrinkable glue
+^^{glue//infinitely shrinkable}
+in a similar way. Infinitely shrinkable glue can act as negative space.
+Note that |fil|, etc., can be used only
+to specify the stretch and shrink of glue---they can't be used to specify
+its natural size.
+\eix^^{stretch}
+\eix^^{shrink}
+\endconcept
+
+
+\conceptindex{groups}
+\concept group
+
+A \defterm{group} is a part of your manuscript that \TeX\ treats as a unit.
+You indicate a group by enclosing it in the braces
+`|{|' and `|}|' (or any other characters with the appropriate
+\refterm{category codes}).
+^^|{//starting a group|
+^^|}//ending a group|
+
+The most important property of a group is that any nonglobal
+definition or assignment that you make inside a group disappears when
+the group ends. For instance, if you write:
+
+\csdisplay
+Please don't pour {\it any} more tea into my hat.
+|
+the |\it| \refterm{control sequence} causes \TeX\ to set the word
+`|any|' in italic type but does not affect the rest of the text.
+As another example, if you use the |\hsize| parameter
+\ctsref{\hsize} to change the line length within a group, the line length
+reverts to its previous value once \TeX\ has gotten past the group.
+
+Groups are also useful as a way of controlling spacing. For instance, if you
+write:
+
+\csdisplay
+\TeX for the Impatient and the Outpatient too.
+|
+\noindent
+you'll get:
+\display{%
+\TeX for the Impatient and the Outpatient too.
+}
+\noindent
+since the control sequence |\TeX| (which produces the \TeX\
+logo) absorbs the following space.
+What you probably want is:
+\display{%
+{\TeX} for the Impatient and the Outpatient too.
+}
+\noindent
+One way to get it is to enclose `|\TeX|' in a group:
+\csdisplay
+{\TeX} for the Impatient and the Outpatient too.
+|
+The right brace prevents the control sequence from absorbing the space.
+\endconcept
+
+
+\conceptindex{hboxes}
+\concept hbox
+
+An \defterm{hbox} (horizontal box) is a \refterm{box} that \TeX\
+constructs by placing the items of a \refterm{horizontal list} one after
+another, left to right.
+^^{horizontal lists//hboxes formed from}
+An hbox, taken as a unit, is neither
+inherently horizontal nor inherently vertical, i.e., it can appear as an
+item of either a horizontal list or a \refterm{vertical list}. You can
+construct an hbox with the |\hbox| command \ctsref{\hbox}.
+\endconcept
+
+
+\conceptindex{headers}
+\concept header
+
+A \defterm{header} is material that \TeX\ puts at the top of every page,
+above the text of that page.
+The header for a simple report
+might consist of the title on the left side of
+the page and the text ``Page $n$'' on the right side of the page.
+Ordinarily a header consists of a single line, which you can set by
+assigning a token list to ^|\headline| \ctsref\headline.
+The default \plainTeX\ header is blank.
+It's possible to produce multiline headers too; see \xrefpg{bighead} for
+how to do it.
+\endconcept
+
+
+\concept height
+
+The \defterm{height} of a \refterm{box} is the distance that the box
+extends above its \refterm{baseline}.
+^^{boxes//height of}
+\endconcept
+
+
+\conceptindex{horizontal lists}
+\concept{horizontal list}
+
+A \defterm{horizontal list} is a list of items
+that \TeX\ has produced while it is
+in one of its \refterm{horizontal modes:horizontal mode}, i.e., assembling
+either a paragraph or an hbox. See ``horizontal mode'' below.
+\endconcept
+
+
+\concept {horizontal mode}
+
+^^{hboxes//horizontal mode for}
+When \TeX\ is assembling a paragraph or an \refterm{hbox}, it is in one
+of two \defterm{horizontal modes}: ^{ordinary horizontal
+mode} for assembling paragraphs and ^{restricted horizontal mode} for
+assembling hboxes. Whenever \TeX\ is in a horizontal mode its stomach
+\seeconcept{\anatomy} is constructing a \refterm{horizontal
+list} of items (boxes, glue, penalties, etc.).
+\TeX\ typesets the items in the list
+one after another, left to right.
+
+A horizontal list can't contain any
+items produced by inherently vertical commands, e.g., |\vskip|.
+^^{horizontal lists//can't contain vertical commands}
+
+\ulist
+\li If \TeX\ is assembling a horizontal list in ordinary horizontal mode and
+encounters an inherently vertical command, \TeX\ ends the paragraph and
+enters \refterm{vertical mode}.
+
+\li If \TeX\ is assembling a horizontal list in restricted horizontal
+mode and encounters an inherently vertical command, it complains.
+\endulist Two commands that you might at first think are inherently
+horizontal are in fact inherently vertical: |\halign| \ctsref{\halign}
+and |\hrule| \ctsref{\hrule}.
+^^|\hrule//inherently vertical|
+^^|\halign//inherently vertical|
+See \knuth{page~286} for a list
+of the inherently vertical commands.
+
+{\tighten
+You should be aware of a subtle but important property of restricted
+horizontal mode: \emph{you can't enter restricted horizontal mode
+when you're in ordinary horizontal mode}. What this means in practice is that
+when \TeX\ is assembling an hbox it
+won't handle paragraph-like text, i.e., text for which it does
+\refterm{line breaking}. You can get
+around this restriction by enclosing the paragraph-like text in a
+\refterm{vbox} within the hbox. The same method works if you want to
+put, say, a horizontal \refterm{alignment} inside an~hbox.
+}% end scope of tighten
+
+\endconcept
+
+
+\concept{hyphenation}
+
+\TeX\ automatically hyphenates words as it is processing your document.
+\TeX\ is not eager to insert hyphens, preferring instead to find good
+line breaks by adjusting the spacing between words and moving words
+from one line to another.
+\TeX\ is clever enough to understand
+hyphens that are already in words.
+
+You can control \TeX's hyphenation in several ways:
+\ulist
+\li You can tell \TeX\ to
+allow a hyphen in a particular place by inserting a
+discretionary hyphen
+^^{discretionary hyphens}
+with the ^|\-| command \ctsref{\@minus}.
+\li You can tell \TeX\ how to
+hyphenate particular words throughout your document with the ^|\hyphenation|
+command \ctsref{\hyphenation}.
+\li You can enclose a word in an \refterm{hbox}, thus preventing \TeX\
+from hyphenating it.
+\li You can set the value of penalties such as |\hyphenpenalty|
+\ctsref\hyphenpenalty.
+\endulist
+\noindent If a word contains an explicit or discretionary hyphen,
+\TeX\ will never break it elsewhere.
+\endconcept
+
+
+\conceptindex{input streams}
+\concept {input stream}
+
+See \conceptcit{file}.
+\endconcept
+
+\conceptindex{insertions}
+\concept insertion
+
+\looseness = -1
+An \defterm{insertion} is a vertical list containing material
+to be inserted into
+a page when \TeX\ has finished building that page.\footnote
+{\tighten
+\TeX\ itself doesn't
+insert the material---it just makes the material available to
+the output routine, which is then responsible for transferring
+it to the composed page.
+^^{output routine//insertions, treatment of}
+The only immediate effect of the ^|\insert| command
+\ctsref{\insert} is to change \TeX's page break calculations so that it
+will leave room on the page for the inserted material. Later, when
+\TeX\ actually breaks the page, it divides the inserted material into
+two groups: the material that fits on the current page and the material
+that doesn't.
+^^{page breaks//insertions at}
+The material that fits on the page is placed into box registers,
+one per insertion,
+and the material that doesn't fit is carried over to the next page.
+This procedure allows \TeX\ to do such
+things as distributing parts of a long footnote over several consecutive
+pages.} Examples of such insertions are footnotes and figures. The
+\refterm{\plainTeX} commands for
+creating insertions are ^|\footnote|, ^|\topinsert|, |\mid!-insert|,
+^^|\midinsert|
+and ^|\pageinsert|, as well as the primitive ^|\insert| command
+itself (\pp\xrefn\footnote--\xrefn{endofinsert}).
+\TeX's mechanism for handling insertions is rather complicated;
+see \knuth{pages~122--125} for the details.
+\endconcept
+
+
+\concept {interline glue}
+
+\defterm{Interline glue} is the glue that \TeX\ inserts in front of every
+\refterm{box} in a \refterm{vertical list} except for the first one.
+The interline glue is ordinarily specified so as to maintain a constant
+distance between the baselines of the boxes.
+Its value is jointly determined by the ^|\baselineskip|,
+^|\lineskip|, and ^|\lineskiplimit| parameters \ctsref{\baselineskip}.
+\endconcept
+
+
+\conceptindex{items}
+\concept item
+
+The term \defterm{item} is often used to refer to a component of
+a horizontal, vertical, or math list, i.e., a list of items that
+\TeX\ is building while it is in a horizontal, vertical, or math mode.
+\endconcept
+
+
+
+\conceptindex{justification}
+\concept {justified text}
+
+\defterm{Justified text} is text that has been typeset so that both
+margins are even. Unjustified text, on the other hand, has been typeset
+with ``ragged'' margins on one or both sides.
+Documents typed on old-fashioned typewriters almost always have
+ragged right margins.
+Although documents produced by \TeX\ are
+justified by default, you can if you wish produce documents (or
+sequences of lines) that have ^{ragged right}---or ^{ragged left}---margins.
+You can also get \TeX\ to center a sequence of lines, thus making both
+margins ragged.
+^^{centered text}
+You can use the
+^|\leftskip|, ^|\rightskip|, and ^|\raggedright| commands
+(\pp \xrefn{\leftskip},~\xrefn{\raggedright}) for these purposes.
+
+When \TeX\ is producing justified text, it usually
+needs to stretch or shrink the glue within each line to make the margins
+come out even. When \TeX\ is producing unjustified text, on the other
+hand, it usually leaves the glue within each line at its natural width.
+Many typographers prefer unjustified text because its interword
+spacing is more uniform.
+\endconcept
+
+
+\conceptindex{kerns}
+\concept kern
+
+^^{spacing//adjusting with kerns}
+A \defterm{kern} indicates a change to the normal spacing between
+the items of a vertical or horizontal list.
+A kern can be either positive or negative. By
+putting a positive kern between two items, you push them further apart
+by the amount of the kern. By putting a negative kern between two
+items, you bring them closer together by the amount of the kern. For
+instance, this text:
+\csdisplay
+11\quad 1\kern1pt 1\quad 1\kern-.75pt 1
+|
+produces letter pairs that look like this:
+\display{11\quad 1\kern1pt 1\quad 1\kern-.75pt 1}
+You can use kerns in vertical mode to adjust the space between
+particular pairs of lines.
+
+A kern of size $d$ is very similar to a \refterm{glue} item that has
+size $d$ and no stretch or shrink. Both the kern and the glue insert or
+remove space between neighboring items. The essential difference is
+that \TeX\ considers two boxes with only kerns between them to be tied
+together. That is, \TeX\ won't break a line or a page at a kern unless
+the kern is immediately followed by glue. Bear this difference in mind
+when you're deciding whether to use a kern or a glue item for a
+particular purpose.
+
+\TeX\ automatically inserts kerns between particular pairs of adjacent
+letters, thus adjusting the space between those letters and enhancing
+the appearance of your typeset document.
+For instance, the Computer Modern $10$-point roman font contains a kern
+for the pair `To' that brings the left edge of the `o' under the
+`T'. Without the kern, you'd get \hbox{``T{o}p''} rather than ``Top''---%
+the difference is slight but noticeable.
+The metrics file
+(^{\tfmfile})
+for each \refterm{font} specifies the placement and size of the
+kerns that \TeX\ automatically inserts when it is setting text in that~font.
+\margin{paragraph deleted to save space; most of the material was
+already in this section.}
+
+\endconcept
+
+
+\concept leaders
+
+You can use \defterm{leaders} to fill a space with copies of
+a pattern, e.g.,
+to put repeated dots between a title and a page number in a table of contents.
+A leader is a single copy of the pattern.
+The specification of leaders contains three pieces of information:
+\olist\compact
+\li what a single leader is
+\li how much space needs to be filled
+\li how the copies of the pattern should be arranged within the space
+\endolist
+
+\bix^^|\leaders|
+\bix^^|\cleaders|
+\bix^^|\xleaders|
+{\tighten
+\TeX\ has three commands for specifying leaders:
+|\leaders|, \hbox{|\cleaders|}, and |\xleaders| (\xref\leaders). The
+\refterm{argument} of each command specifies the leader.
+The command must be followed by \refterm{glue}; the size of the glue
+specifies how much space is to be filled. The choice of command determines
+how the leaders are arranged within the space.}
+
+Here's an example showing how |\leaders| works:
+\csdisplay
+\def\dotting{\leaders\hbox to 1em{\hfil.\hfil}\hfil}
+\line{The Political Process\dotting 18}
+\line{Bail Bonds\dotting 26}
+|
+Here we've put the leaders and their associated glue into a \refterm{macro}
+definition so that we can conveniently
+use them in two places. This input produces:
+
+\vdisplay{\advance\hsize by -\parindent
+\def\dotting{\leaders\hbox to 1em{\hfil{.}\hfil}\hfill}%
+\line{The Political Process{\dotting}18}
+\line{Bail Bonds{\dotting}26}
+}
+
+The \refterm{hbox} following |\leaders| specifies
+the leader, namely, an hbox 1\em\ wide containing a dot
+at its center.
+The space is filled with copies of this box,
+effectively filling it
+with dots whose centers are 1\em{} apart.
+The following |\hfil| (the one at the
+end of the macro definition) is glue that
+specifies the space to be filled.
+In this case it's whatever space is needed to fill out the line.
+By choosing |\leaders| rather than |\cleaders| or |\xleaders| we've insured
+that the dots on different lines line up with each other.
+
+In general, the space to be filled acts as a window
+on the repeated copies of the leader.
+\TeX\ inserts as many copies as possible, but some space is
+usually left over---either because of where the leaders fall
+within the window or because
+the width of the window isn't an exact multiple of the width of the
+leader.
+The difference among the three commands is in how they arrange the leaders
+within the window and how they distribute any leftover space:
+
+\ulist
+\li For |\leaders|, \TeX\ first produces a row of copies of the leader.
+It then aligns the start of this row with the left end of the innermost
+box $B$ that is to contain the result of the |\leaders| command.
+In the two-line example above, $B$ is a box produced by |\line|.
+Those leaders that fit entirely in the window are placed into $B$,
+and the leftover space at the left and right ends is left empty.
+The picture is like this:
+\vdisplay{%
+\def\dotting{\leaders\hbox to 1em{\hfil{.}\hfil}\hfill}%
+\def\pp{The Political Process}
+\line{\dotting}
+\line{\hphantom\pp\hfil$\Downarrow$\hfil\hphantom{18}}
+\vskip 4pt
+\setbox0 = \hbox{\pp}
+\setbox1 = \hbox{18}
+\dimen0 = \hsize \advance\dimen0 by -\wd0 \advance \dimen0 by -\wd1
+\advance\dimen0 by -0.8pt
+\hbadness=10000
+\line{\pp
+ \vrule\vbox{\hrule width \dimen0\vskip 2pt
+ \hbox to \dimen0{\hfil window\strut\hfil}
+ \vskip 2pt\hrule width \dimen0}%
+ \vrule 18}
+\line{\hphantom\pp\hfil$\Downarrow$\hfil\hphantom{18}}
+\vskip 2pt
+\line{\pp{\dotting}18}
+}
+\vskip\medskipamount
+{\tighten
+\noindent
+This procedure ensures that in the two-line example on the previous page,
+the dots in the two lines
+are vertically aligned (since the \refterm{reference points:reference point}
+of the hboxes produced by |\line| are vertically aligned).
+\par}
+
+\li For |\cleaders|, \TeX\ centers the leaders within the window
+by dividing the leftover space between the two ends of the window.
+The leftover space is always less than the width of a single leader.
+
+\li For |\xleaders|, \TeX\ distributes the
+leftover space evenly within the window.
+In other words, if the leftover space is $w$ and the
+leader is repeated $n$ times,
+\TeX\ puts space of width $w/(n+1)$ between adjacent leaders and
+at the two ends of the leaders.
+The effect is usually to spread out the leaders a little bit.
+The leftover space for |\xleaders|, like that for |\cleaders|,
+is always less than the width of a single leader.
+\endulist
+
+So far we've assumed that the leaders consist of hboxes arranged
+horizontally. Two variations are possible:
+\olist
+\li You can use a
+rule instead of an hbox for the leader.
+\TeX\ makes the rule as wide as necessary to extend
+across the glue (and the three commands are equivalent).
+\li You
+can produce vertical leaders that run down the page by including them in
+a \refterm{vertical list} rather than a \refterm{horizontal list}. In
+this case you need vertical glue following the leaders.
+\endolist
+\noindent
+See \knuth{pages~223--225} for the precise rules that \TeX\ uses
+in typesetting leaders.
+\eix^^|\leaders|
+\eix^^|\cleaders|
+\eix^^|\xleaders|
+\endconcept
+
+
+\conceptindex{ligatures}
+\concept ligature
+
+A \defterm{ligature} is a single character that replaces a
+particular sequence of adjacent characters in a typeset document.
+For example, the word `|office|' is typeset as \hbox{``office''},
+not \hbox{``of{f}ice''}, by high-quality typesetting systems.
+Knowledge of ligatures is built into the
+\refterm{fonts:font} that you use, so there's nothing explicit you need do
+in order to get \TeX\ to produce them. (You could defeat the ligature
+in ``office'', as we did just above, by writing `|of{f}ice|' in your input.)
+\TeX\ is also capable of using its ligature mechanism to typeset the
+first or last letter of a word differently than the same letter as it would
+appear in the middle of a word.
+You can defeat this effect (if you ever encounter it) by using the
+^|\noboundary| command (\xref\noboundary).
+
+Sometimes you may need a ligature from a European language.
+^^{European languages}
+\TeX\ won't
+produce these automatically unless you're using a font designed for that
+language. A number of these ligatures, e.g., `\AE', are available as
+commands (see ``Letters and ligatures for European alphabets'',
+\xref{fornlets}).
+\endconcept
+
+
+\conceptindex{line breaks}
+\concept{line break}
+
+A \defterm{line break} is a place in your document where \TeX\ ends
+a line as it typesets a paragraph.
+When \TeX\ processes your document, it collects the contents of each
+paragraph in a \refterm{horizontal list}.
+When it has collected an entire paragraph,
+it analyzes the list to find what it considers to be the best possible
+line breaks. \TeX\ associates ``^{demerits}'' with various symptoms of
+unattractive line breaks---lines that have too much or too little
+space between words, consecutive lines that end in hyphens, and so forth. It
+then chooses the line breaks so as to minimize the total number of demerits.
+See \knuth{pages~96--101} for a full description of \TeX's line-breaking rules.
+
+You can control \TeX's choice of line breaks in several ways:
+\ulist
+
+\li You can insert a \refterm{penalty} (\xref{hpenalty}) somewhere in
+the horizontal list that \TeX\ builds as it forms a paragraph.
+^^{penalties//in horizontal lists}
+A
+positive penalty discourages \TeX\ from breaking the line there, while a
+negative penalty---a bonus, in other words---encourages \TeX\ to break
+the line there. A penalty of $10000$ or more prevents a line break,
+while a penalty of $-10000$ or less forces a line break. You can get
+the same effects with the ^|\break| and
+^|\nobreak| commands (\pp\xrefn{hbreak},~\xrefn{hnobreak}).
+
+\li You can tell \TeX\ to allow a hyphen in a particular place by
+inserting a discretionary hyphen
+^^{discretionary hyphens}
+with the |\-| command \ctsref{\@minus}, or
+otherwise control how \TeX\ hyphenates your document \seeconcept
+{hyphenation}.
+^^|\-//in line breaking|
+
+\li You can tell \TeX\ to allow a line break after a ^{solidus} (/) between
+two words by inserting ^|\slash| \ctsref{\slash}
+between them, e.g., `|fur!-longs\slash fortnight|'.
+
+\li You can tell \TeX\ not to break a line between two particular words by
+inserting a ^{tie} (|~|) between those words.
+^^|~//in line breaking|
+
+\li You can adjust the penalties associated with line breaking by
+assigning different values to \TeX's line-breaking
+\refterm{parameters:parameter}.
+
+\li You can enclose a word or sequence of words in an \refterm{hbox},
+thus preventing \TeX\ from breaking the line anywhere within the hbox.
+^^{hboxes//controlling line breaks}
+\endulist
+
+It's useful to know the places where \TeX\ can break a line:
+\ulist
+\li at glue, provided that:
+\olist
+\li the item preceding the glue is one of the following:
+a box, a discretionary item (e.g., a discretionary hyphen),
+the end of a math formula,
+a whatsit,
+or vertical material produced by |\mark| or |\vadjust|
+or |\insert|
+\li the glue is not part of a math formula
+\endolist
+\noindent
+When \TeX\ breaks a line at glue, it makes the break at the left edge
+of the glue space and forgets about the rest of the glue.
+\li at a kern that's immediately followed by glue,
+provided that this kern isn't within a math formula
+\li at the end of a math formula that's immediately followed by glue
+\li at a penalty, even one within a math formula
+\li at a discretionary break
+\endulist
+When \TeX\ breaks a line, it discards any
+sequence of glue, kerns, and penalty items that follows the break point.
+If such a sequence is followed by the beginning of a math formula, it
+also discards any kern produced by the beginning of the formula.
+\endconcept
+
+
+\conceptindex{lists}
+\concept list
+
+A \defterm{list} is a sequence of \refterm{items:item}
+(\refterm{boxes:box}, \refterm{glue}, \refterm{kerns:kern}, etc.)
+that comprise the contents of an hbox, a vbox,
+or a math formula.
+See \conceptcit{horizontal list}, \conceptcit{vertical list}.
+
+\endconcept
+
+
+\concept {log file}
+
+See \conceptcit{file}.
+\endconcept
+
+
+\conceptindex{macros}
+\concept macro
+
+{% Use a brace here so that definitions of explanatory macros remain local.
+% The closing brace is at the end of the concept.
+A \defterm{macro} is a definition that gives a name to a pattern of
+\TeX\ input text.\footnote{More precisely, the definition gives a name
+to a sequence of tokens.} The name can be either a \refterm{control
+sequence} or an \refterm{active character}. The pattern is called the
+``replacement text''. The primary command for defining macros is the
+|\def| control sequence.
+
+\def\arctheta{\cos \theta + i \sin \theta}
+As a simple example, suppose that you have a document in which
+the sequence `$\cos \theta + i \sin \theta$' occurs many times.
+Instead of writing it out each time, you can define a macro for it:
+\csdisplay
+\def\arctheta{\cos \theta + i \sin \theta}
+|
+Now whenever you need this sequence, you can just ``call'' the macro
+by writing `|\arctheta|'
+and you'll get it. For example, `|$e^{\arctheta}$|' will give you
+`$e^{\arctheta}$'.
+
+\bix^^{macros//parameters of}
+But the real power of macros lies in the fact that a macro can have
+parameters. When you call a macro that has parameters, you provide
+arguments that are substituted for those parameters. For example, suppose
+you write:
+\pix\indexchar #
+\def\arc#1{\cos #1 + i \sin #1}
+\csdisplay
+\def\arc#1{\cos #1 + i \sin #1}
+|
+
+The notation |#1| \xrdef{@msharp} indicates the first parameter
+of the macro, which in this case has only one parameter. You now can
+produce a similar form, such as `$\arc{2t}$', with the macro call `|\arc
+{2t}|'.
+
+More generally, a macro can have up to nine parameters, which you
+indicate as `|#1|', `|#2|', etc\null. in the macro definition. \TeX\
+provides two kinds of parameters: delimited parameters and undelimited
+parameters. Briefly, a delimited parameter has an \refterm{argument}
+that's delimited, or ended, by a
+specified sequence of tokens (the delimiter), while an undelimited
+parameter has an argument that doesn't need a delimiter to end it.
+First we'll explain how macros work when they have only undelimited
+parameters, and then we'll explain how they work when
+they have delimited parameters.
+
+^^{parameters//undelimited}
+If a macro has only undelimited parameters, those parameters must appear
+one after another in the macro definition \emph{with nothing between
+them or between the last parameter and the left brace in front of the
+replacement text}.
+A call on such a macro consists of the macro name followed by
+the arguments of the call, one for each parameter. Each argument is
+either:
+
+\ulist \compact
+\li a single \refterm{token} other than a left or right brace, or
+
+\li a sequence of tokens enclosed between a left brace and
+a matching right brace.\footnote{The
+argument can have nested pairs of braces within it, and each of these
+pairs can indicate either a \refterm{group} or a further macro
+argument.}
+\endulist
+
+When \TeX\ encounters a macro, it expands the macro in its gullet
+\seeconcept{\anatomy}
+by substituting each argument for the corresponding
+parameter in the replacement text. The resulting text may contain other macro
+calls. When \TeX\ encounters such an embedded macro call, it expands
+that call immediately without looking at what follows the
+call.\footnote{In computer science terminology, the expansion is ``depth
+first'' rather than ``breadth first''. Note that you can modify the
+order of expansion with commands such as |\expandafter|.} When \TeX's
+gullet gets to a \refterm{primitive} \refterm{command} that
+cannot be further expanded, \TeX\ passes that command to \TeX's stomach.
+The order of expansion is sometimes critical, so in order to help
+you understand it we'll give you an example of \TeX\ at work.
+
+Suppose you provide \TeX\ with the following input:
+\csdisplay
+\def\a#1#2{\b#2#1\kern 2pt #1}
+\def\b{bb}
+\def\c{\char49 cc}
+\def\d{dd}
+\a\c{e\d} % Call on \a.
+|
+Then the argument corresponding to |#1| is |\c|,
+and the argument corresponding to |#2| is |e\d|.
+\TeX\ expands the macro call in the following steps:
+
+{\vskip\abovedisplayskip\obeylines % ugly
+|\b e\d\c\kern 2pt \c|
+|bbe\d\c\kern 2pt \c|
+|\d\c\kern 2pt \c|\quad(`|b|', `|b|', `|e|' sent to stomach)
+|dd\c\kern 2pt \c|
+|\c\kern 2pt \c|\quad(`|d|', `|d|' sent to stomach)
+|\char49 cc\kern 2pt \c|
+|\c|\quad(`|\char|', `|4|', `|9|', `|c|', `|c|', %
+`|\kern|', `|2|', `|p|', `|t|' sent to stomach)
+|\char49 cc|
+(`|\char49|', `|c|', `|c|' sent to stomach)
+\vskip\belowdisplayskip}
+
+\noindent Note that the letters `|b|', `|c|', `|d|', and `|e|' and the
+control sequences `|\kern|' and `|\char|' are all primitive
+commands that cannot be expanded further.
+
+\bix^^{parameters//delimited}
+A macro can also have ``delimited parameters'', which can be mixed with
+the undelimited ones in any combination. The idea of a delimited
+parameter is that \TeX\ finds the corresponding argument by looking for
+a certain sequence of tokens that marks the end of the argument---the
+delimiter. That is, when \TeX\ is looking for such an argument, it
+takes the argument to be all the tokens from \TeX's current position up
+to but not including the delimiter.
+
+You indicate a delimited parameter by writing `|#|$n$' ($n$
+must be between $0$
+and $9$) followed by one or more tokens that act as the delimiter. The
+delimiter extends up to the next `|#|' or `|{|'---which makes sense
+since `|#|' starts another parameter and `|{|' starts the replacement text.
+
+The delimiter can't be `|#|' or `|{|', so you can tell a delimited
+parameter from an undelimited one by looking at what comes after it.
+
+If the character after the parameter is `|#|' or `|{|', you've got an
+undelimited parameter; otherwise you've got a delimited one. Note
+the difference in arguments for the two kinds of parameters---an
+undelimited parameter is matched either by a single token or by
+a sequence of tokens enclosed in braces, while a
+delimited parameter is matched by any number of tokens, even zero.
+
+An example of a macro that uses two delimited parameters is:
+\def\diet#1 #2.{On #1 we eat #2!}
+\csdisplay
+\def\diet#1 #2.{On #1 we eat #2!!}
+|
+Here the first parameter is delimited by a single space
+and the second parameter is delimited by a period. If you write:
+\csdisplay
+\diet Tuesday turnips.
+|
+you'll get the text ``\diet Tuesday turnips.''.
+But if the delimiting tokens are enclosed in a group, \TeX\ doesn't consider
+them as delimiting. So if you write:
+\csdisplay
+\diet {Sunday mornings} pancakes.
+|
+you'll get the text `\diet {Sunday mornings} pancakes.'
+even though there's a space between `|Sunday|' and `|morning|'.
+When you use a space as a delimiter,
+an end-of-line character ordinarily also delimits the argument
+since \TeX\ converts the end-of-line to a space before the macro
+mechanism ever sees it.
+\eix^^{parameters//delimited}
+\eix^^{macros//parameters of}
+
+Once in a while you might need to define a macro that has `|#|' as a
+meaningful character within it.
+You're most likely to need to do this when you're defining a macro
+that in turn defines a second macro.
+What then do you do about
+the parameters of the second macro to avoid getting \TeX\ confused?
+The answer is that you write
+two `|#|'s for every one that you want
+when the first macro is expanded. For example, suppose you
+write the macro definition:
+\def\first#1{\def\second##1{#1/##1}}
+\csdisplay
+\def\first#1{\def\second##1{#1/##1}}
+|
+Then the call `|\first{One}|' defines `|\second|' as:
+\csdisplay
+\def\second#1{One/#1}
+|
+and the subsequent call `|\second{Two}|' produces the text
+\def\second#1{One/#1}%
+`\second {Two}'.
+
+A number of commands provide additional ways of defining macros
+(see pp.~\xrefn{mac1}--\xrefn{mac2}).
+For the complete rules pertaining to macros, see \knuth{Chapter~20}.
+}% close brace at the start of the `macro' concept.
+\endconcept
+
+
+\concept magnification
+
+When \TeX\ typesets your document, it multiplies all dimensions
+by a
+\refterm{magnification} factor $f/1000$,
+where $f$ is the value of the ^|\mag| parameter \ctsref\mag.
+Since the default value of |\mag| is $1000$, the normal case is that
+your document is typeset just as specified.
+Increasing the magnification is often useful when you're typesetting a document
+that will later be photoreduced.
+
+You can also apply magnification to a single \refterm{font} so as to get
+a smaller or larger version of that font than its ``^{design size}''. You
+need to provide the device driver with a ^{shape file}
+\seeconcept{font} for
+each magnification of a font that you're using---%
+unless the fonts are built into your printer and your device driver
+knows about them.
+When you're defining a font with
+the |\font| command \ctsref{\font}, you can specify a magnification with
+the word `|scaled|'. For example:
+
+\csdisplay
+\font\largerbold = cmbx10 scaled 2000
+|
+defines `|\largerbold|' as a font that is
+twice as big as |cmbx10| (Computer Modern
+Bold Extended $10$-point) and has the character shapes
+uniformly enlarged by a factor of~$2$.
+
+Many computer centers find it convenient to provide fonts scaled by a ratio
+of $1.2$, corresponding to magnification values of $1200$, $1440$, etc.
+\TeX\ has special names for these values:
+^^|\magstep|
+`|\magstep1|' for $1200$,
+`|\magstep2|' for $1440$, and so forth up to `|\magstep5|'. The special
+value `^|\magstephalf|' corresponds to magnification by $\sqrt{1.2}$, which
+is visually halfway between `|\magstep0|' (no magnification) and
+`|\magstep1|'. For example:
+
+\csdisplay
+\font\bigbold = cmbx10 scaled \magstephalf
+|
+
+You can specify a \refterm{dimension} as it will be
+measured in the final document independent of magnification by putting
+`^|true|' in front of the unit. For instance, `|\kern 8 true pt|'
+produces a kern of $8$ points whatever the magnification.
+
+\endconcept
+
+\concept margins
+
+The \refterm{margins}
+of a page define a rectangle that normally
+contains the printed matter on the page.
+You can get \TeX\ to print material outside of this rectangle,
+but only by taking some explicit action that moves the material there.
+\TeX\ considers headers and footers to lie outside the margins.
+
+The rectangle is defined in terms of its upper-left corner, its width, and
+its depth. The location of the upper-left corner is defined by
+the ^|\hoffset|
+and ^|\voffset| parameters
+\ctsref\voffset. The default is to place that corner one inch from the top
+and one inch from the left side of the page, corresponding to a value of
+zero for both |\hoffset| and |\voffset|.%
+\footnote{This seems to us to be an odd convention.
+It would have been more natural to have the $(0,0)$
+point for |\hoffset| and |\voffset| be at the upper-left corner of the
+paper and to have set their default values to one inch.}
+The width of the rectangle is given by ^|\hsize| and the depth by ^|\vsize|.
+
+The implications of these conventions are:
+\ulist\compact
+\li The left margin is given by |\hoffset|\tplus|1in|.
+\li The right margin is given by the width of the paper minus
+ |\hoffset|\tplus|1in|\tplus|\hsize|.
+\li The top margin is given by |\voffset|\tplus|1in|.
+\li The bottom margin is given by the length of the paper minus
+ |\voff!-set|\tplus|1in|\tplus|\vsize|.
+\endulist
+From this information you can see what parameters you need to
+change in order to change the margins.
+
+Any changes that you make to |\hoffset|, |\voffset|, or |\vsize| become
+effective the next time \TeX\ starts a page. In other words, if you change
+them within a page, the change will affect only the \emph{following} pages.
+If you change |\hsize|, the change will become effective immediately.
+\endconcept
+
+
+\conceptindex{marks}
+\concept mark
+
+A \defterm{mark} is an item that you can insert into a
+horizontal, vertical, or math list and later recover from within your
+output routine. Marks are useful for purposes such as
+keeping track of topics to appear in page headers.
+Each mark has a list of tokens---the ``^{mark text}''---associated with it.
+The ^|\mark| command \ctsref{\mark} expects such a token list as its argument,
+and appends an item containing that token list (after
+expansion) to whatever list \TeX\ is
+currently building. The ^|\topmark|, ^|\firstmark|, and ^|\botmark| commands
+\ctsref{\topmark} can be used to retrieve various marks on a page.
+These commands are most often used in page headers and footers.
+^^{footers//marks used in}
+^^{headers//marks used in}
+
+\margin{This example of {\tt\\mark} replaces the previous explanatory
+paragraph.}
+Here is a simplified example.
+Suppose you define a section heading macro as follows:
+\csdisplay
+\def\section#1{\medskip{\bf#1}\smallskip\mark{#1}}
+% #1 is the name of the section
+|
+^^|\mark|
+This macro, when called, will produce a section heading in boldface and
+will also record the name of the section as a mark.
+You can now define the header for each printed page
+as follows:
+\csdisplay
+\headline = {\ifodd\pageno \hfil\botmark\quad\folio
+ \else \folio\quad\firstmark\hfil \fi}
+|
+Each even (left-hand) page will now have the page number followed by the
+name of the first section on that page, while each odd (right-hand) page
+will have the page number followed by the name of the last section on
+that page. Special cases, e.g., no sections starting on a page, will
+generally come out correctly because of how ^|\firstmark|
+and ^|\botmark| work.
+
+When you split a page using the |\vsplit| command \ctsref{\vsplit} you can
+retrieve the mark texts of the first and last marks of the split-off
+portion with the ^|\splitfirstmark| and ^|\splitbotmark| commands
+\ctsref{\splitfirstmark}.
+
+See \knuth{pages~258--260} for a more precise explanation of how
+to create and retrieve marks.
+\endconcept
+
+
+\concept math mode
+
+{\tighten
+A \defterm{math mode} is a \refterm{mode} that \TeX\ is in when it is
+building a math formula. \TeX\ has two different math modes: ^{text
+math mode} for building a formula to be embedded within a line of text,
+and ^{display math mode} for building a formula to appear on a line by
+itself. You indicate text math mode by enclosing the formula in
+|$|'s, and display math mode by enclosing the formula in
+|$$|'s.
+%\TeX\ will accept most \refterm{commands:command} in
+%math mode. If it encounters a command in math mode that doesn't make
+%sense in a formula, it will complain.
+An important property of both
+math modes is that \emph{input spaces don't count}. See
+\knuth{pages~290--293} for details on how \TeX\ responds to different
+commands in math mode.
+\par}
+
+\endconcept
+
+
+\conceptindex{mathcodes}
+\concept mathcode
+
+A \defterm{mathcode} is a number that \TeX\ uses to identify and
+describe a math character,
+^^{math characters//described by mathcodes}
+i.e., a character that has a
+particular role in a math formula. A mathcode conveys three pieces of
+information about a character: its \refterm{font} position, its
+\refterm{family}, and its \refterm{class}.
+Each of the $256$ possible
+input characters has a mathcode, which is defined by the \TeX\ program
+but can be changed.
+
+^^{family//as part of mathcode}
+\TeX\ has sixteen families of fonts, numbered $0$--$15$. Each
+family contains three fonts: one for \refterm{text size}, one for
+\refterm{script size}, and one for \refterm{scriptscript size}. \TeX\
+chooses the size of a particular character, and therefore its font,
+according to the context. The class of a character specifies its role
+in a formula (see \knuth{page~154}). For example, the equals sign `|=|'
+is in class $3$ (Relation). \TeX\ uses its knowledge of character
+classes when it is deciding how much space to put between different
+components of a math formula.
+
+The best way to understand what mathcodes are all about is to see how
+\TeX\ uses them. So we'll show you what \TeX\ does with a
+character token $t$ of \refterm{category code}~11 or~12 in a math
+formula:
+
+\olist\compact
+\li It looks up the character's mathcode.
+\li It determines a family $f$ from the mathcode.
+\li It determines the size $s$ from the context.
+\li It selects a font $F$ by picking the font for size $s$ in family $f$.
+\li It determines a character number $n$ from the mathcode.
+\li It selects as the character $c$ to be typeset the character
+at position $n$ of font $F$.
+\li It adjusts the spacing around $c$ according to the class of $t$ and
+the surrounding context.
+\li It typesets the character $c$.
+\endolist
+
+The context dependence in
+items (3) and (7) implies that \TeX\ cannot typeset a math character
+until it has seen the entire formula containing the
+math character. For example, in the formula
+`|$a\over b$|', \TeX\ doesn't know what size the `|a|' should be until it
+has seen the |\over|.
+
+{\tighten
+The mathcode of a character is encoded according to the formula $4096c
++ 256f + n$, where $c$ is the class of the character, $f$ is its
+\refterm{family}, and $n$ is its \refterm{\ascii\ character} code within
+the family. You can change \TeX's interpretation of an input character
+in math mode by assigning a value to the ^|\mathcode|
+table entry \ctsref{\mathcode}
+for that character. The character must have a
+\refterm{category code} of $11$ (letter) or $12$ (other) for \TeX\ to
+look at its |\mathcode|.
+}\par
+
+^^{family//variable}
+You can define a mathematical character to have a ``variable'' family by
+giving it a class of $7$. Whenever \TeX\ encounters that character in a
+math formula, it takes the family of the character to be the current
+value of the |\fam| parameter \ctsref{\fam}. A variable family enables
+you to specify the font of ordinary text in a math formula. For
+instance, if the roman characters are in family $0$, the assignment
+|\fam = 0|
+will cause ordinary text in a math formula to be set in roman type
+rather than in something else like math italic type. If the value of
+|\fam| is not in the range from $0$ to $15$, \TeX\ takes the value to be
+$0$, thus making classes $0$ and $7$ equivalent.
+\TeX\ sets |\fam| to $-1$ whenever it enters math mode.
+\endconcept
+
+
+\conceptindex{mathematical units}
+\concept{mathematical unit}
+
+A \defterm{mathematical unit}, denoted by `|mu|', is a unit of distance
+that is used to specify \refterm{glue} in math formulas. See
+\conceptcit{muglue}.
+\endconcept
+
+
+\conceptindex{modes}
+\concept mode
+
+When \TeX\ is processing your input in its stomach \seeconcept{\anatomy},
+it is in one of six \defterm{modes}:
+\ulist\compact
+\li ^{ordinary horizontal mode} (assembling a paragraph)
+\li ^{restricted horizontal mode} (assembling an \refterm{hbox})
+\li ^{ordinary vertical mode} (assembling a page)
+\li ^{internal vertical mode} (assembling a \refterm{vbox})
+\li ^{text math mode} (assembling a formula that appears in text)
+\li ^{display math mode}
+(assembling a formula that appears on a line by~itself)
+^^{horizontal mode}^^{vertical mode}^^{math mode}
+\endulist
+The mode describes the kind of entity that \TeX\ is putting together.
+
+Because you can embed one kind of entity within another, e.g., a vbox
+within a math formula, \TeX\ keeps track not just of one mode but of a
+whole list of modes (what computer scientists call a ``stack'').
+Suppose that \TeX\ is in mode $M$ and encounters something that
+puts it into a new mode \Mprimeperiod. When it finishes its work in
+mode \Mprimecomma, it resumes what it was doing in mode \Mperiod.
+
+\endconcept
+
+
+\concept muglue
+
+\defterm{Muglue} is a kind of \refterm{glue} that you can use only in math
+formulas. It is measured in ^|mu| (\refterm{mathematical
+units:mathematical unit}).
+^^{mathematical units}^^{glue//mathematical}
+One |mu| is equal to \frac1/{18} em, where
+the size of an em is taken from \refterm{family} 2 of the math fonts.
+\TeX\ automatically adjusts the size of muglue according to the context.
+For instance, a glue size of |2mu| is normally smaller within a
+subscript than it is within ordinary text.
+You must use the ^|\mskip| command to produce muglue.
+For example, `|\mskip 4mu plus 5mu|' produces mathematical glue with
+natural space of four |mu| and \refterm{stretch} of five |mu|.
+
+\endconcept
+
+
+\conceptindex{numbers}
+\concept number
+
+In \TeX, a \defterm{number} is a positive or negative integer.
+You can write a number in \TeX\ in four different ways:
+\olist\compact
+\li as an ordinary decimal integer, e.g., |52|
+\li as an octal number, e.g., |'14| ^^{octal numbers}
+\li as a hexadecimal number, e.g., |"FF0| ^^{hexadecimal numbers}
+\li as the code for an \refterm{\ascii\ character}, e.g., |`)|
+or |`\)|
+\endolist
+\noindent
+Any of these forms can be preceded by `|+|' or `|-|'.
+
+An octal number can have only the digits |0|--|7|.
+^^{octal numbers}
+A hexadecimal number can have digits |0|--|9| and
+|A|--|F|, representing
+values from $0$ to $15$.
+^^{hexadecimal numbers}
+You can't, alas, use lowercase letters when you write a hexadecimal number.
+If you need an explanation of octal and hexadecimal numbers,
+you'll find one on \knuth{pages~43--44}.
+
+A decimal, octal, or hexadecimal number
+ends at the first character that can't be part of the number.
+Thus a decimal number ends when \TeX\ sees, say, a letter, even though a
+letter between `|A|' and `|F|' would not end a hexadecimal number.
+You can end a number with one or more spaces and
+\TeX\ will ordinarily ignore them.\footnote{
+When you're defining a macro that ends in a number, you should always
+put a space after that number; otherwise \TeX\ may later combine that
+number with something else.}
+
+The fourth form above specifies a number as the
+\minref{\ascii} code for a character.
+^^{characters//\ascii\ codes for}
+\TeX\ ignores spaces after this form of number also.
+You can write a number in this form either as |`|$c$ or as |`\|$c$.
+The second form, though longer, has the advantage that you can use it
+with \emph{any} character, even `|\|', `|%|', or `|^^M|'.
+It does have one rather technical disadvantage: when \TeX\ is expanding
+a token sequence for a command such as |\edef| or |\write|,
+^^|\edef//expansion of {\tt\\'\it c} in|
+^^|\write//expansion of {\tt\\'\it c} in|
+occurrences of `|\|$c$' within numbers will also be expanded if they can be.
+That's rarely the effect you want.
+
+The following are all valid representations of the decimal number
+$78$:
+\csdisplay
+78 +078 "4E '116 `N `\N
+|
+
+
+You can't use a number in text by itself since a number isn't
+a command.
+However, you can insert the decimal form of a number in text
+by putting a ^|\number| command (\xref\number) in front of it
+or the roman numeral form by putting a ^|\romannumeral| command
+in front of it.
+
+You can also use ^{decimal constant}s, i.e., numbers with a fractional part,
+for specifying dimensions \seeconcept{dimension}.
+A decimal constant has a ^{decimal point}, which
+can be the first character of the constant.
+You can use a comma instead of a period to represent the decimal point.
+A decimal constant can be preceded by a plus or minus sign.
+Thus `|.5in|',
+`|-3.22pt|', and `|+1,5\baselineskip|' are valid dimensions.
+You can't, however, use decimal constants
+in any context \emph{other} than as the ``factor'' part of a dimension,
+i.e., its multiplier.
+
+
+\endconcept
+
+
+\concept{ordinary mode}
+
+An \defterm{ordinary mode} is a \refterm{mode} that \TeX\ is in when it is
+assembling a paragraph into lines or assembling lines
+into a page. See \conceptcit{horizontal mode}, \conceptcit{vertical mode}.
+\endconcept
+
+
+\concept outer
+
+\bix^^{macros//outer}
+An \defterm{outer} macro is one that you can't use in certain contexts
+where \TeX\ is processing tokens at high speed.
+The purpose of making a command outer is to enable \TeX\ to catch
+errors before it's gone too far.
+When you define a macro, you can make it outer with the
+^|\outer| command \ctsref\outer.
+
+You cannot use an outer macro in any of the following contexts:
+\ulist\compact
+\li within an argument to a macro
+\li in the parameter text or replacement text of a definition
+\li in the preamble to an alignment
+\li in the unexecuted part of a conditional test
+\endulist
+\noindent
+An outer context is a context in which you can use an outer macro,
+i.e., it's any context other than the ones just listed.
+
+For example, the following input would be a forbidden use of an
+outer macro:
+\csdisplay
+\leftline{\proclaim Assertion 2. That which is not inner
+ is outer.}
+|
+The |\proclaim| macro (\xref{\@proclaim}) is defined in \plainTeX\
+to be outer, but it's being used here in a macro argument to |\leftline|.
+\eix^^{macros//outer}
+
+\endconcept
+
+
+\concept {output routine}
+
+When \TeX\ has accumulated
+at least enough material to fill up a page, it chooses a breakpoint
+and places the material before the breakpoint in |\box255|. It then
+calls the
+current \defterm{output routine}, which processes the material and eventually
+sends it to the \dvifile.
+^^{\dvifile//material from output routine}
+The output routine can perform further
+processing, such as inserting headers, footers, and footnotes.
+\refterm{\PlainTeX:\plainTeX} provides
+a default output routine that inserts a centered page number
+at the bottom of each page.
+By providing a different output routine you can achieve such
+effects as double-column output.
+You can think of the output routine as having a single responsibility:
+disposing of the material in |\box255| one way or another.
+
+The current output routine is defined by the value of ^|\output|
+\ctsref{\output}, which is a list of \refterm{tokens:token}. When \TeX\
+is ready to produce a page, it just expands the token list.
+
+You can make some simple changes to the actions of the \plainTeX\
+output routine without actually modifying it. For example, by assigning
+a list of \refterm{tokens:token} to |\headline| or
+|\footline| \ctsref{\footline} you can have \TeX\ produce a different
+header or footer than it ordinarily would.
+
+The output routine is also
+responsible for collecting any \refterm{insertions:insertion};
+combining those insertions and any
+``decorations'' such as headers and
+footers with the main contents of the page and packaging all
+of this material in a box; and
+eventually sending that box to the \dvifile\
+^^{\dvifile//material from output routine}
+with the ^|\shipout|
+command \ctsref{\shipout}.
+Although this is what an output routine most often does,
+a special-purpose output routine might behave differently.
+\endconcept
+
+
+\conceptindex{output streams}
+\concept {output stream}
+
+\margin{This concept was out of order.}
+See \conceptcit{file}.
+\endconcept
+
+
+\conceptindex{pages}
+\concept page
+
+\TeX\ processes a document by assembling \defterm{pages} one at a time
+and passing them to the output routine.
+As it proceeds through your document, \TeX\ maintains a list of lines
+and other
+items to be placed on the page. (The lines are actually hboxes.)
+This list is called the ``^{main vertical list}''.
+Periodically \TeX\ goes through a process called ``exercising the
+^{page builder}''.
+The items added to the main vertical list between exercises of the
+page builder are called ``^{recent contributions}''.
+
+The page builder first examines the main vertical list to see if it's
+necessary to ship out a page yet, either because the items on the main
+vertical list won't all fit on the page or because of an explicit item,
+such as |\eject| \ctsref\eject, that tells \TeX\ to end the page.
+If it's not necessary to ship out a page, then the page builder is done
+for the time being.
+
+Otherwise the page builder analyzes the main vertical
+list to find what it considers to be the best possible page break.
+It associates penalties with various kinds of unattractive page
+breaks---a break that would leave an
+isolated line at the top or bottom of a page, a break just before a
+math display, and so forth. It then
+chooses the least costly page break,
+where the cost of a break is increased by any penalty associated with that
+break and by the badness of the page that would result
+(see \knuth{page~111} for the cost formula). If it finds several
+equally costly page breaks, it chooses the last one.
+
+{\tighten
+Once the page builder has chosen a page break,
+it places the items on the list that are before that break
+into ^|\box255| and leaves the remaining ones for the next page.
+It then calls the output routine. |\box255| acts as a mailbox, with the
+page builder as the sender and the output routine as the receiver.
+Ordinarily the output routine processes |\box255|, adds
+other items, such as insertions, headers, and footers, to the page, and
+ships out the page to the \dvifile\
+^^{\dvifile//material from output routine}
+with a |\shipout| command.
+(Specialized output routines may behave differently.)
+From \TeX's standpoint, it doesn't matter whether or not the output
+routine ships out a page;
+the only
+responsibility of the output routine is to process |\box255| one way or
+another.
+\par}
+
+{\tighten
+It's important to realize that the best place to break a page isn't
+necessarily the last possible place to break the page.
+Penalties and other considerations may cause the page break
+to come earlier.
+Furthermore, \TeX\ appends items to the main vertical list in batches,
+not just singly.
+The lines of a paragraph are an example of such a batch.
+For these reasons the page builder usually has items left over when it
+breaks a page.
+These leftover items then form the beginning of the main vertical list
+for the next page (possibly in the middle of a batch).
+Because items are carried over from one page to another,
+you can't assume that as \TeX\ is processing
+input, the current page number accurately reflects the page on which the
+corresponding output will appear. See \knuth{pages~110--114} for a full
+description of \TeX's page-breaking rules.
+\par}
+
+\endconcept
+
+
+\conceptindex{page breaks}
+\concept{page break}
+
+A \defterm{page break} is a place in your document where \TeX\ ends a
+page and (except at the end of the document) starts a new one.
+See \conceptcit{page} for the process that \TeX\ goes through in choosing
+a page break.
+
+You can control \TeX's choice of page breaks in several ways:
+\ulist
+\li You can insert a penalty (\xref{vpenalty})
+^^{penalties//in vertical lists}
+between two items in the main vertical list. A positive
+penalty discourages \TeX\ from breaking the page
+there, while a negative penalty---a bonus, in other words---%
+encourages \TeX\ to break the page there. A penalty of $10000$
+or more prevents a
+page break, while a penalty of $-10000$ or less forces a page break.
+You can get the same effects with the |\break| and
+|\nobreak| commands \ctsref{vbreak}.
+
+\li You can adjust the penalties associated with page breaking
+by assigning different values to \TeX's page-breaking
+\refterm{parameters:parameter}.
+
+\li You can enclose a sequence of paragraphs
+or other items in the main vertical list within a \refterm{vbox},
+thus preventing \TeX\ from breaking the page anywhere within the sequence.
+\endulist
+
+Once \TeX\ has chosen a page break, it places the portion of the main vertical
+list that precedes the break into |\box255|.
+It then calls the current \refterm{output routine}
+to process |\box255| and eventually ships its contents to the \dvifile.
+^^{\dvifile//material from output routine}
+The output routine must
+also handle \refterm{insertions}, such as footnotes, that \TeX\ has accumulated
+while processing the page.
+
+It's useful to know the places where \TeX\ can break a page:
+\ulist
+\li At glue, provided that the item preceding the glue is
+a box, a whatsit, a mark, or an insertion.
+When \TeX\ breaks a page at glue, it makes the break at the top
+of the glue space and forgets about the rest of the glue.
+\li At a kern that's immediately followed by glue.
+\li At a penalty, possibly between the lines of a paragraph.
+\endulist
+When \TeX\ breaks a page, it discards any
+sequence of glue, kerns, and penalty items that follows the break point.
+
+
+\endconcept
+
+
+\concept page builder
+
+See \conceptcit{page}.
+\endconcept
+
+
+\concept {page layout}
+
+\bix^^{margins}
+\bix^^{headers}
+\bix^^{footers}
+When you're designing a document, you need to decide on its
+\defterm{page layout}: the page size,
+the margins on all four sides, the headers and footers, if any,
+that appear at the top and bottom of the page,
+and the amount of space between the body of the text and the headers or
+footers. \TeX\ has defaults for all of these. It assumes an $8 \frac1/2$-%
+by-$11$-inch page with margins of approximately one inch
+on all four sides, no header,
+and a footer consisting of a centered page number.
+
+The margins are determined jointly by the four parameters
+^|\hoffset|, ^|\voffset|, ^|\hsize|, and ^|\vsize| (see
+``margins'', \xrefpg{margins},
+for advice on how to adjust them).
+\eix^^{margins}
+The header normally consists of a single line that appears at the top of each
+page, within the top margin area. You can set it by assigning
+a \refterm{token} list to the ^|\headline| parameter (\xref{\headline}).
+Similarly,
+the footer normally consists of a single line that appears at the bottom
+of each
+page, within the bottom margin area. You can set it by assigning
+a \refterm{token} list to the ^|\footline| parameter (\xref{\footline}).
+For example, the input:
+\csdisplay
+\headline = {Baby's First Document\dotfill Page\folio}
+\footline = {\hfil}
+|
+produces a header line like this on each page:
+\vdisplay{
+\dimen0 = \hsize
+\advance \dimen0 by -\parindent
+\hbox to \dimen0{Baby's First Document\dotfill Page 19}}
+\noindent
+and no footer line.
+
+You can use marks to place the current topic of a section
+of text into the header or footer.
+^^{marks//with headers or footers}
+See \conceptcit{mark} for an explanation of how to do this.
+\eix^^{headers}
+\eix^^{footers}
+\endconcept
+
+\conceptindex{paragraphs}
+\concept paragraph
+
+Intuitively, a \defterm{paragraph} is a sequence of input lines that's
+ended by a blank line, by a ^|\par| command \ctsref{\@par},
+^^|\par//ending a paragraph with|
+or by an intrinsically vertical command, such as |\vskip|.
+More precisely, a paragraph is a sequence of commands that \TeX\ processes
+in ordinary horizontal mode.
+When \TeX\ has collected an entire paragraph, it forms it into a sequence of
+lines by choosing line breaks \seeconcept{line break}.
+The result is a list of hboxes with glue, interline penalties,
+and interspersed vertical material between them.
+Each hbox is a single line, and the glue is the interline glue.
+
+\eject
+\TeX\ starts a paragraph when it's in a vertical mode
+and encounters an inherently horizontal command.
+In particular, it's in a vertical mode when it's just finished a paragraph,
+so the horizontal material on the line after a blank input line starts the
+next paragraph in a natural way.
+There are many kinds of inherently horizontal commands, but the most common
+kind is an ordinary character, e.g., a letter.
+
+\looseness = -1
+The ^|\indent| and ^|\noindent| commands
+(\pp\xrefn{\indent},~\xrefn{\noindent})
+are also inherently horizontal commands that tell
+\TeX\ either to indent or not to indent the beginning of a paragraph.
+Any other horizontal command in vertical
+mode causes \TeX\ to do an implicit |\indent|.
+Once \TeX\ has started a paragraph, it's in ordinary horizontal mode.
+It first obeys any commands that are in ^|\everypar|.
+It then proceeds to collect items for the paragraph until it gets a signal
+that the paragraph is ended.
+At the end of the paragraph it
+resets the paragraph shape parameters ^|\parshape|, |\hang!-indent|,
+^^|\hangindent|
+and ^|\looseness|.
+
+\TeX\ ordinarily translates a blank line into |\par|.
+It also
+inserts a |\par| into the input whenever it's in horizontal mode and
+sees an intrinsically vertical command.
+So ultimately the thing that ends a paragraph is always a |\par| command.
+
+When \TeX\ receives a |\par| command, it first
+fills out\footnote{%
+More precisely, it executes the commands:
+\csdisplay
+\unskip \penalty10000 \hskip\parfillskip
+|
+thus appending items for these commands
+to the end of the current horizontal list.}
+the paragraph it's working on.
+It then breaks the paragraph into lines,
+adds the resulting list of items to the enclosing vertical list,
+and exercises the page builder
+(in the case where the enclosing vertical list is the main vertical list).
+If the paragraph was ended by an intrinsically vertical command,
+\TeX\ then executes that command.
+
+\endconcept
+
+\conceptindex{parameters}
+\concept parameter
+
+The term \defterm{parameter} has two different meanings---it can refer
+either to a \TeX\ parameter or to a macro parameter.
+
+A \TeX\ parameter is a \refterm{control sequence} that names
+a value.
+The value of a parameter can be a \refterm{number}, a \refterm{dimension},
+an amount of \refterm{glue} or muglue, or a \refterm{token list}.
+For example, the ^|\parindent| parameter
+specifies the distance that \TeX\ skips at the start of an
+indented paragraph.
+
+You can use the control sequence for a parameter either to retrieve the value
+of the parameter or to set that value. \TeX\ interprets the control sequence
+as a request for a value if it appears in a context where a value is expected,
+and as an \refterm{assignment} otherwise.
+^^{assignments}
+For example:
+\csdisplay
+\hskip\parindent
+|
+produces horizontal \refterm{glue} whose natural size is given by |\parindent|,
+while:
+\csdisplay
+\parindent = 2pc % (or \parindent 2pc)
+|
+sets |\parindent| to a length of two picas. The assignment:
+\csdisplay
+\parindent = 1.5\parindent
+|
+uses |\parindent| in both ways. Its effect is to multiply the value of
+|\parindent| by $1.5$.
+
+You can think of a parameter as a built-in \refterm{register}.
+^^{registers//parameters as}
+You'll find a complete list of the \TeX\ parameters on \knuth{pages~272--275}.
+
+A \refterm{macro} parameter is a placeholder for text that is to be
+plugged into the definition of a macro. See \conceptcit{macro}
+for more information about this kind of parameter.
+
+\endconcept
+
+
+\conceptindex{penalties}
+\concept penalty
+
+A \defterm{penalty} is an item that you can include in a
+horizontal, vertical, or math list
+in order to discourage \TeX\ from breaking the list
+at that point or encourage \TeX\ to break the list there.
+^^{horizontal lists//penalties in}
+^^{vertical lists//penalties in}
+A positive penalty indicates a bad break point, while
+a negative penalty indicates a good break point.
+Breaking an
+ordinary horizontal
+list produces a \refterm{line break}, while breaking an
+ordinary vertical list produces
+a \refterm{page break}.
+(A penalty has no effect in restricted horizontal or
+internal vertical \refterm{mode}.)
+
+You can use the
+|\penalty| command (\pp\xrefn{hpenalty},~\xrefn{vpenalty})
+to insert a penalty explicitly.
+A penalty of $10000$ or more prevents a break, while a penalty of
+$-10000$ or less forces a break.
+\endconcept
+
+
+\concept{\plainTeX}
+
+\defterm{\PlainTeX} is the form of \TeX\ described in this
+book and in \texbook. \PlainTeX\ is part of the standard \TeX\
+system, so documents that use only the facilities of \plainTeX\ can
+usually be transferred from one installation to another without
+difficulty.
+
+\PlainTeX\ consists of the \refterm{primitive} commands together with a
+large collection of macros and
+other definitions. These additional definitions are given in
+\knuth{Appendix~B}. They should also be in the file |plain.tex|
+somewhere in your computer system.
+\endconcept
+
+
+\concept{primitive}
+
+A \defterm{primitive} \refterm{command} is one whose definition is built
+into the \TeX\ computer program. In contrast, a command that is not
+primitive is defined by a \refterm{macro} or some other form of
+definition written in \TeX\ itself. The commands in \refterm{\plainTeX}
+consist of the primitive commands together with
+other commands defined in terms of the
+primitive ones.
+\endconcept
+
+
+\concept {reference point}
+
+^^{baselines}
+^^{boxes//reference point of}
+The \defterm{reference point} of a \refterm{box} is the point where the
+left edge of the box intersects its \refterm{baseline}. When \TeX\ is
+processing a \refterm{horizontal:horizontal list} or \refterm{vertical
+list}, it uses the reference points of the boxes in the list to line up
+those boxes horizontally or vertically \seeconcept{box}.
+\endconcept
+
+\conceptindex{registers}
+\concept register
+
+A \defterm{register} is a named location for storing a value.
+It is much like a variable in a programming language.
+\TeX\ has five kinds of registers, as shown in the following table:
+
+\vdisplay{\tabskip 10pt\halign{\tt #\hfil &#\hfil\cr
+{\it Register type}&{\it Contents}\cr
+box&a \refterm{box} \idxref{box registers}\cr
+count&a \refterm{number} \idxref{count registers}\cr
+dimen&a \refterm{dimension} \idxref{dimension registers}\cr
+muskip&\refterm{muglue} \idxref{muglue registers}\cr
+skip&\refterm{glue} \idxref{glue registers}\cr
+toks&a \refterm{token} list\idxref{token registers}\cr}}
+
+The registers of each type are numbered from $0$ to $255$.
+You can access register $n$ of category $c$ by using the form `|\|$cn$',
+e.g., |\muskip192|.
+You can use a register
+anywhere that information of the appropriate type is called for. For
+instance, you can use |\count12|
+in any context calling for a number or |\skip0|
+in any context calling for glue.
+
+You put information into a register by \refterm{assigning:assignment}
+something to it:
+
+\csdisplay
+\setbox3 = \hbox{lagomorphs are not mesomorphs}
+\count255 = -1
+|
+The first assignment constructs an hbox and assigns it to
+box register~$3$.
+You can
+subsequently use `|\box3|' wherever a box is called for, and you will
+get just that hbox.\footnote{But note carefully: using a box register
+also empties it so that its contents become void. The other kinds of
+registers don't behave that way. You can use the |\copy| command
+\ctsref{\copy} to retrieve the contents of a box register without
+emptying it.}
+The second assignment assigns $-1$ to count register~$255$.
+
+A register of a given type, e.g., a glue register, behaves just like
+a parameter of that type.
+^^{parameters//like registers}
+You retrieve its value or assign to it
+just as you would with a \refterm{parameter}.
+Some \TeX\ parameters, e.g., |\pageno|,
+are implemented as registers, in fact.
+
+\PlainTeX\
+uses many registers for its own purposes, so you should not just
+pick an arbitrary
+register number when you need a register. Instead you should ask
+\TeX\ to reserve a register by using one of the commands
+^|\newbox|, ^|\newcount|, ^|\newdimen|, ^|\newmuskip|, ^|\newskip|,
+or ^|\newtoks|
+\ctsref{\@newbox}. These commands are outer, so you can't
+use them in a macro definition.
+If you could,
+you'd use up a register every time the macro was called and probably run out
+of registers before long.
+
+Nonetheless you can with some caution use any register temporarily
+within a \refterm{group}, even one that \TeX\ is using for something
+else.
+After \TeX\ finishes executing the commands in a group,
+it restores the contents of every register
+to what they were before it started executing the group.
+When you use an explicitly numbered register inside a group,
+you must be sure that the register isn't modified by any
+\refterm{macro}
+that you might call within the group.
+Be especially careful
+about using arbitrary registers in a group that calls macros
+that you didn't write yourself.
+
+{\tighten
+\TeX\ reserves certain registers for special purposes: |\count0| through
+|\count9| for page numbering information and
+^^{page numbering}
+^|\box255| for the contents
+of a page just before it is offered to the \refterm{output routine}.
+Registers |\dimen0|--|\dimen9|, |\skip0|--|\skip9|,
+|\muskip0|--|\mu!-skip9|, |\box0|--|\box9|,
+and the |255| registers other than |\box255|
+are generally available as ``scratch'' registers.
+Thus \plainTeX\ provides only one scratch register, |\count255|, for
+counts.
+See \knuth{pages~122 and 346} for conventions to follow
+in choosing register numbers.
+\par}
+
+You can examine the contents of registers during a \TeX\ run with the
+^|\showthe| command \ctsref\showthe, e.g., with `|\showthe\dimen0|'.
+\endconcept
+
+
+\concept{restricted mode}
+
+A \defterm{restricted mode} is a \refterm{mode} that \TeX\ is in when it is
+assembling an \refterm{hbox} or a \refterm{vbox}.
+We follow \texbook\ in using the term ``internal vertical mode''
+for what you might expect to be ``restricted vertical mode''.
+See \conceptcit{horizontal
+mode} and \conceptcit{vertical mode}.\endconcept
+
+
+\conceptindex{rules}
+\concept rule
+
+A \defterm{rule} is a solid black rectangle.
+A rule, like a \refterm{box},
+has \refterm{width}, \refterm{height}, and \refterm{depth}.
+The vertical dimension of the rectangle
+is the sum of its height and its depth.
+An ordinary horizontal or vertical straight line is a special case of a rule.
+
+\bix^^{horizontal rules}
+\bix^^{vertical rules}
+\bix^^|\hrule|
+\bix^^|\vrule|
+A rule can be either horizontal or vertical. The distinction between a
+horizontal rule and a vertical one has to do with how you produce the
+rule, since a vertical rule can be short and fat (and therefore look
+like a horizontal line), while a horizontal rule can be tall and skinny
+(and therefore look like a vertical line). \TeX's notion of a rule is
+more general than that of typographers, who think of a rule as a line
+and would not usually call a square black box a rule.
+
+You can produce a horizontal rule using the
+|\hrule| command and a vertical rule using
+the |\vrule| command \ctsref{\vrule}.
+For example, the control sequence |\hrule| by itself
+produces a thin rule that runs across the page, like this:
+
+{\offinterlineskip
+\nobreak\medskip
+\hrule
+\medskip}
+
+The command `|\vrule height .25in|' produces a vertical rule
+that runs $.25$~inches down the page like this:
+\nobreak\vskip \abovedisplayskip
+\leftline{\vrule height .25in}
+\vskip \belowdisplayskip
+
+There are two differences between horizontal rules and vertical rules:
+\olist
+\li For a horizontal rule, \TeX\ defaults the width to the width of the
+smallest \refterm{box} or \refterm{alignment} that encloses it. For a
+vertical rule, \TeX\ defaults the height and depth in the same way. (The
+default is the size that you get if you don't give a size explicitly for that
+dimension.)
+
+^^{horizontal lists//rule in}
+^^{vertical lists//rule in}
+\li
+{\tighten
+A horizontal rule is an inherently vertical item that cannot participate in
+a \refterm{horizontal list},
+while a vertical
+rule is an inherently horizontal item
+that cannot participate in a \refterm{vertical list}. This behavior
+may seem strange at first but there is good reason for it:
+a horizontal rule ordinarily runs visually from left
+to right and thus separates items in a vertical list,
+while a vertical rule ordinarily runs visually from top to bottom
+and thus separates items in a horizontal list.
+%(Look at the rules that are shown above.)
+\par}
+\endolist
+
+{\tighten
+If you construct a rule with three explicit dimensions, it will look the
+same whether you make it a horizontal rule or a vertical rule.
+For example, the command `|\vrule height1pt depth2pt width3in|' produces this
+horizontal-looking rule:
+\par}
+
+{\offinterlineskip
+\nobreak\medskip\nobreak\vskip3pt
+\leftline{\vrule height1pt depth2pt width3in}
+\medskip}
+
+You'll find a precise statement of \TeX's treatment of rules on
+\knuth{pages~221--222}.
+\eix^^{horizontal rules}
+\eix^^{vertical rules}
+\eix^^|\hrule|
+\eix^^|\vrule|
+\endconcept
+
+
+\concept {script size}
+
+\defterm{Script size} describes one of the three related
+\refterm{fonts:font} in a family.
+^^{family//script size in}
+Script size is smaller than \refterm{text size} but larger than
+\refterm{scriptscript size}. \TeX\ uses script size for subscripts and
+superscripts, as well as for the numerators and denominators of
+fractions in text.
+\endconcept
+
+
+\concept {scriptscript size}
+
+\defterm{Scriptscript size} describes the smallest of the three related
+\refterm{fonts:font} in a family.
+^^{family//scriptscript size in}
+\TeX\ uses \refterm{scriptscript size} for second-order subscripts,
+superscripts, numerators, and denominators. For example, \TeX\ will use
+scriptscript size for a subscript on a subscript or for a superscript on
+a scriptsize numerator.
+\endconcept
+
+\concept shrink
+
+See \conceptcit{glue}.
+\endconcept
+
+\concept space
+
+You can cause \TeX\ to put \defterm{space} between two items in
+several~ways:
+
+\olist
+^^{end of line}
+\li You can write something that \TeX\ treats as a space
+\refterm{token}: one or more blank characters, the end of a line (the
+end-of-line character acts like a space), or any \refterm{command} that
+expands into a space token. \TeX\ generally treats several consecutive
+spaces as equivalent to a single one, including the case where the
+spaces include a single end-of-line. (An empty line
+indicates the end of a paragraph; it
+causes \TeX\ to generate a |\par| token.)
+^^|\par//from empty line|
+\TeX\ adjusts the size of
+this kind of space to suit the length required by the context.
+
+^^{glue//creating space with}
+\li You can write a skip command that produces the glue
+you specify in the command. The glue can
+\refterm{stretch} or \refterm{shrink},
+producing more or less space. You can have vertical glue as
+well as horizontal glue. Glue disappears whenever it is next to a
+line or page break.
+
+^^{kerns//creating space with}
+\li You can write a \refterm{kern}. A kern produces a fixed amount of
+space that does not stretch or shrink and does not disappear at a line
+or page break (unless it is immediately followed by glue). The most
+common use of a kern is to establish a fixed spatial relationship
+between two adjacent \refterm{boxes}.
+\endolist
+
+Glue and kerns can have negative values. Negative glue or a negative kern
+between adjacent items brings those items closer together.
+\endconcept
+
+
+\concept stretch
+
+See \conceptcit{glue}.
+\endconcept
+
+
+\conceptindex{struts}
+\concept strut
+
+{\tighten
+A \defterm{strut} is an invisible \refterm{box}
+^^{boxes//invisible}
+whose width is zero and whose height and depth are slightly more than
+those of a ``normal''
+line of type in the context. Struts are useful for obtaining
+uniform vertical spacing when \TeX's
+usual line spacing is disabled, e.g., within a math formula
+or within a horizontal alignment where you've specified ^|\offinterlineskip|.
+Because a strut is taller and deeper than everything else on its line,
+it determines the height and depth of the line.
+You can produce a strut with
+the ^|\strut| command \ctsref{\strut} or the ^|\mathstrut| command
+\ctsref\mathstrut.
+You can use |\strut| anywhere, but you can only use |\mathstrut| when
+\TeX\ is in math \refterm{mode}. A strut in \plainTeX\ has height 8.5\pt\ and
+depth 3.5\pt, while a math strut has the height and depth of a left
+parenthesis in the current \refterm{style} (so it's smaller for
+subscripts and superscripts).
+\par}
+
+Here's an example showing how you might use a strut:
+\csdisplay
+\vbox{\hsize = 3in \raggedright
+ \strut Here is the first of two paragraphs that we're
+ setting in a much narrower line length.\strut}
+\vbox{\hsize = 3in \raggedright
+ \strut Here is the second of two paragraphs that we're
+ setting in a much narrower line length.\strut}
+|
+This input yields:
+\display{\vbox{
+\vbox{\hsize = 3in \raggedright
+\strut Here is the first of two paragraphs that we're setting
+in a much narrower line length.\strut}
+\vbox{\hsize = 3in \raggedright
+\strut Here is the second of two paragraphs that we're setting
+in a much narrower line length.\strut}
+}}
+\noindent
+Without the struts the \refterm{vboxes:vbox} would be too close
+together. Similarly, in the formula:
+\csdisplay
+$\overline{x\mathstrut} \otimes \overline{t\mathstrut}$
+|
+the math struts cause both bars to be set at the same height even
+though the `$x$' and the `$t$' have different heights:
+\display{
+$\overline{x\mathstrut} \otimes \overline{t\mathstrut}$
+}
+\vskip -\belowdisplayskip
+\endconcept
+\nobreak
+
+\conceptindex{styles}
+\concept {style}
+
+Material in a math formula is set in one of eight \defterm{styles},
+depending on the context. Knowing about styles can be useful if you want to
+set part of a formula in a different size of type than the one
+that \TeX\ has chosen according to its usual rules.
+
+\eject
+The four primary styles are:
+
+\vdisplay{%
+\halign{\refterm{# style}\hfil&\hskip .25in(for #)\hfil\cr
+display&formulas displayed on a line by themselves\cr
+text&formulas embedded in ordinary text\cr
+script&superscripts and subscripts\cr
+scriptscript&superscripts on superscripts, etc.\cr
+}}
+
+The other four styles are so-called ^{cramped variants}. In these
+variants superscripts aren't raised as high as usual, and so the formula
+needs less vertical space than it otherwise would. See
+\knuth{pages~140--141} for the details of how \TeX\ selects the style.
+
+\TeX\ chooses a size of type according to the style:
+
+\ulist\compact
+^^{display style}^^{text style}
+\li Display style and text style are set in \refterm{text size}, like
+`$\rm this$'.
+
+^^{script style}
+\li Script style is set in \refterm{script size}, like `$\scriptstyle
+\rm this$'.
+
+^^{scriptscript style}
+\li Scriptscript style is set in \refterm{scriptscript size}, like
+`$\scriptscriptstyle \rm this$'.
+\endulist
+
+See \conceptcit{family} for more information about these three sizes.
+
+\TeX\ doesn't have a ``scriptscriptscript'' style because such a style
+would usually have to be set in a size of type too small to read. \TeX\
+therefore sets third-order subscripts, superscripts, etc., using the
+scriptscript style.
+
+Once in a while you may find that \TeX\ has set a formula in a different style
+than the one you'd prefer. You can override \TeX's choice with the
+^|\textstyle|, ^|\displaystyle|, ^|\scriptstyle|, and ^|\scriptscriptstyle|
+commands \ctsref{\textstyle}.
+\endconcept
+
+\concept {\TeXMeX}
+
+(a)~A variant of \TeX\ used for mathematical typesetting in
+Central American countries.
+(b)~A spicy cuisine favored by the \TeX\-ni\-cians of ^{El Paso}.
+\endconcept
+
+
+\concept {text math}
+
+We use the term \defterm{text math} to refer to a math formula set within a
+line of text, i.e., enclosed in |$|'s.
+\ttidxref{$}
+\TeX\ sets text math in text math \refterm{mode}.
+\endconcept
+
+
+\concept {text size}
+
+\defterm{Text size} describes the largest of the three related
+\refterm{fonts:font} in a \refterm{family}.
+^^{family//text size in}
+\TeX\ uses text size for ordinary symbols appearing in
+\refterm{math mode}.
+\endconcept
+
+
+\conceptindex{tokens}
+\concept token
+
+A \defterm{token} is either a single character tagged with a
+\refterm{category code}, or a \refterm{control sequence}. \TeX\ reads
+characters from a file using its eyes \seeconcept{\anatomy}
+and groups the characters into tokens using its mouth. When a token
+reaches \TeX's stomach, \TeX\ interprets it as a \refterm{command}
+unless it's part of an argument of a preceding command.
+\endconcept
+
+
+\conceptindex{units of measure}
+\concept {unit of measure}
+
+See \conceptcit{dimension}.
+\endconcept
+
+\conceptindex{vboxes}
+\concept vbox
+
+^^{vertical lists//vboxes formed from}
+A \defterm{vbox} (vertical box) is a \refterm{box} that \TeX\ constructs
+by placing the items of a \refterm{vertical list} one after another, top
+to bottom. A vbox, taken as a unit, is neither inherently horizontal
+nor inherently vertical, i.e., it can appear as an item of either a
+vertical list or a \refterm{horizontal list}. You can construct a vbox
+with the ^|\vbox| or the ^|\vtop| command
+\ctsref{\vtop}. The difference is that for |\vbox|,
+the \refterm{reference point}
+of the constructed vbox is derived from that of the last (and
+usually bottommost) constituent list item, but for |\vtop|, it's that of the
+first (and usually topmost) constituent list item.
+\endconcept
+
+
+\conceptindex{vertical lists}
+\concept{vertical list}
+
+A \defterm{vertical list} is a list of items
+that \TeX\ has produced while it is
+in one of its vertical modes, i.e.,
+assembling either a
+\refterm{vbox} or a page. See ``vertical mode'' below.
+
+\endconcept
+
+
+\concept{vertical mode}
+
+^^{vboxes//vertical mode for} When \TeX\ is assembling either a
+\refterm{vbox} or the main vertical list from which pages are derived,
+it is in one of two \defterm{vertical modes}: ^{ordinary
+vertical mode} for assembling the main vertical list, and ^{internal
+vertical mode} for assembling vboxes. Whenever \TeX\ is in a vertical mode
+its stomach \seeconcept{\anatomy} is constructing a \refterm{vertical
+list} of items (boxes, glue, penalties, etc.).
+\TeX\ typesets the items in the list
+one below another, top to bottom.
+
+A vertical list can't contain any items produced by
+inherently horizontal commands, e.g.,
+^^{vertical lists//can't contain horizontal commands}
+|\hskip| or an ordinary (nonspace) character.
+\footnote{\TeX\ \emph{ignores} any space characters
+that it encounters while it's in a vertical mode.}
+
+\ulist
+\li If \TeX\ is assembling a vertical list in ordinary vertical mode and
+encounters an inherently horizontal command, it switches to ordinary
+\refterm{horizontal mode}.
+\li If \TeX\ is assembling a vertical list in internal vertical mode and
+encounters an inherently horizontal command, it complains.
+\endulist
+
+Two commands that you might at first think are inherently vertical are
+in fact inherently horizontal: |\valign| \ctsref{\valign} and |\vrule|
+\ctsref{\vrule}.
+^^|\valign//inherently horizontal|
+^^|\vrule//inherently horizontal|
+See \knuth{page~283} for a list of the
+inherently horizontal commands.
+
+It's particularly important to be aware that \TeX\ considers an ordinary
+character other than a space character to be inherently horizontal. If
+\TeX\ suddenly starts a new paragraph when you weren't expecting it,
+a likely cause is a
+character that \TeX\ encountered while in vertical mode.
+You can convince \TeX\
+not to treat that character as inherently horizontal by enclosing it in
+an \refterm{hbox} since the |\hbox| command, despite its name, is
+neither inherently horizontal nor inherently vertical.
+\endconcept
+
+
+\concept whatsit
+
+A \defterm{whatsit} is an item of information that
+tells \TeX\ to carry out some action
+that doesn't fit into its ordinary scheme of things.
+A whatsit can appear in a horizontal or vertical list, just like a box
+or a glue item.
+\TeX\ typesets a whatsit
+as a \refterm{box} having zero width, height, and depth---in other
+words, a box that contains nothing and occupies no space.
+
+Three sorts of whatsits are built into \TeX:
+\ulist
+\li The |\openout|, |\closeout|, and |\write| commands
+(\p\xrefn{\openout})
+% (2nd) removed \xref to \write, since it's on the same page
+produce a whatsit for operating on an output file.
+^^|\openout//whatsit produced by|
+^^|\write//whatsit produced by|
+^^|\closeout//whatsit produced by|
+\TeX\ postpones the operation until it next ships out a page
+to the {\dvifile}
+^^{\dvifile//whatsits in}
+(unless the operation is preceded by ^|\immediate|).
+\TeX\ uses a whatsit for these commands because they don't have anything
+to do with what it's typesetting when it encounters them.
+\li The ^|\special| command \ctsref{\special} tells \TeX\ to
+insert certain text directly into the \dvifile.
+As with the |\write| command, \TeX\ postpones the insertion
+until it next ships out a page to the {\dvifile}.
+^^{\dvifile//material inserted by \b\tt\\special\e}
+A typical use of |\special| would be to
+name a graphics file that the device driver should incorporate into
+your final output.
+\li When you change languages with the ^|\language| or ^|\setlanguage|
+commands \ctsref{\language},
+\TeX\ inserts a whatsit that instructs it to use a
+certain set of hyphenation rules later on when it's breaking a paragraph
+into lines.
+\endulist
+\noindent
+A particular implementation of \TeX\ may provide additional whatsits.
+\endconcept
+
+
+\concept width
+
+^^{boxes//width of}
+The \defterm{width} of a \refterm{box} is the amount of horizontal space
+that it occupies, i.e., the distance from its left edge to its
+right edge. The typeset material in a box can be wider than the box itself.
+\endconcept
+
+\endconcepts
+
+\endchapter
+\byebye
diff --git a/Master/texmf-doc/doc/english/impatient/config.tex b/Master/texmf-doc/doc/english/impatient/config.tex
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/config.tex
diff --git a/Master/texmf-doc/doc/english/impatient/copyrght.tex b/Master/texmf-doc/doc/english/impatient/copyrght.tex
new file mode 100644
index 00000000000..2fe8addc6c9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/copyrght.tex
@@ -0,0 +1,48 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+% See file fdl.tex for copying conditions.
+
+\input macros
+
+
+% Copyright page.
+%
+\noheadlinetrue
+\sinkage
+
+\noindent `\TeX' is a trademark of the American Mathematical Society.
+
+\noindent `\Metafont' is a trademark of Addison-Wesley Publishing Company.
+
+\bigskip
+\noindent This book, \thisbook, contains both tutorial and reference
+information on all features of both plain and primitive \TeX.
+
+\bigskip
+
+\noindent Copyright \copyright{} 2003 Paul~W. Abrahams,
+Kathryn~A. Hargreaves, and Karl Berry.
+
+\bigskip
+\noindent Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version
+1.1 or any later version published by the Free Software Foundation; with
+no Invariant Sections, with no Front-Cover texts, and with no Back-Cover
+texts. A copy of the license is included in the chapter entitled ``GNU
+Free Documentation License''.
+
+\medskip\noindent
+Under the terms of the GFDL, anyone is allowed to modify and
+redistribute this material, and it is our hope that others will find it
+useful to do so. That includes translations, either to other natural
+languages, or to other computer source or output formats.
+
+\medskip\noindent
+In our interpretation of the GFDL, you may also extract text from this
+book for use in a new document, as long as the new document is also
+under the GFDL, and as long as proper credit is given (as provided for
+in the license).
+
+
+\pagebreak
+\byebye
diff --git a/Master/texmf-doc/doc/english/impatient/eplain.tex b/Master/texmf-doc/doc/english/impatient/eplain.tex
new file mode 100644
index 00000000000..19ad8cf59f6
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/eplain.tex
@@ -0,0 +1,1196 @@
+%% @texfile{
+%% author = "Karl Berry et al.",
+%% version = "1.9a",
+%% date = "28jul03",
+%% filename = "eplain.tex",
+%% email = "karl@cs.umb.edu",
+%% codetable = "ISO/ASCII",
+%% supported = "yes",
+%% docstring = "This file defines macros that expand on plain TeX, and
+%% is used in the production of the book TeX for the Impatient. It was
+%% originally version 1.9 from 11mar91, and differs only in this header
+%% material. Sadly, newer versions of eplain have more
+%% incompatibilities with the features we used to produce TFTI. Of
+%% course new documents should use the latest eplain, available from
+%% http://tug.org/eplain and from http://www.ctan.org/macros/eplain.
+%% ",
+%% }
+\def\makeactive#1{\catcode`#1 = \active \ignorespaces}%
+\chardef\letter = 11
+\chardef\other = 12
+\catcode`@ = \letter
+\def\uncatcodespecials{%
+ \def\do##1{\catcode`##1 = \other}%
+ \dospecials
+}%
+{%
+ \makeactive\^^M
+ \long\gdef\letreturn#1{\let^^M = #1}%
+}%
+\def\gobble#1{}%
+\def\gobbletwo#1#2{}%
+\def\gobblethree#1#2#3{}%
+\def\@gobblemeaning#1:->{}%
+\def\sanitize{\expandafter\@gobblemeaning\meaning}%
+\def\futurenonspacelet#1{\def\cs{#1}%
+ \afterassignment\@stepone\let\nexttoken=
+}%
+\def\\{\let\@stoken= }%
+\\ % now \@stoken is a space token (\\ is a control symbol, so that
+\def\@stepone{\expandafter\futurelet\cs\@steptwo}%
+\def\@steptwo{\expandafter\ifx\cs\@stoken\let\@@next=\@stepthree
+ \else\let\@@next=\nexttoken\fi \@@next}%
+\def\@stepthree{\afterassignment\@stepone\let\@@next= }%
+\let\@plainwlog = \wlog
+\let\wlog = \gobble
+\newlinechar = `^^J
+\def\loggingall{\tracingcommands\tw@\tracingstats\tw@
+ \tracingpages\@ne\tracingoutput\@ne\tracinglostchars\@ne
+ \tracingmacros\tw@\tracingparagraphs\@ne\tracingrestores\@ne
+ \showboxbreadth\maxdimen\showboxdepth\maxdimen
+}%
+\def\tracingboxes{\showboxbreadth = \maxdimen \showboxdepth = \maxdimen}%
+\newdimen\hruledefaultheight \hruledefaultheight = 0.4pt
+\newdimen\hruledefaultdepth \hruledefaultdepth = 0.0pt
+\newdimen\vruledefaultwidth \vruledefaultwidth = 0.4pt
+\def\ehrule{\hrule height\hruledefaultheight depth\hruledefaultdepth}%
+\def\evrule{\vrule width\vruledefaultwidth}%
+\begingroup
+ \catcode`\{ = 12 \catcode`\} = 12
+ \catcode`\[ = 1 \catcode`\] = 2
+ \gdef\lbracechar[{]%
+ \gdef\rbracechar[}]%
+ \catcode`\% = \other
+ \gdef\percentchar[%]\endgroup
+\def^^L{\par}%
+\let\@ifempty = \iffalse
+\ifx\@undefinedmessage\@undefined
+ \def\@undefinedmessage
+ {No .aux file; I won't warn you about undefined labels.}%
+\fi
+%% @texfile{
+%% author = "Karl Berry and Oren Patashnik",
+%% version = "0.99h",
+%% date = "24 Apr 1991",
+%% filename = "btxmac.tex",
+%% address = "Please use electronic mail",
+%% checksum = "812 4053 30557",
+%% email = "opbibtex@neon.stanford.edu",
+%% codetable = "ISO/ASCII",
+%% supported = "yes",
+%% docstring = "Defines macros that make BibTeX work with plain TeX",
+%% }
+\edef\cite{\the\catcode`@}%
+\catcode`@ = 11
+\let\@oldatcatcode = \cite
+\chardef\@letter = 11
+\chardef\@other = 12
+\def\@innerdef#1#2{\edef#1{\expandafter\noexpand\csname #2\endcsname}}%
+\@innerdef\@innernewcount{newcount}%
+\@innerdef\@innernewdimen{newdimen}%
+\@innerdef\@innernewif{newif}%
+\@innerdef\@innernewwrite{newwrite}%
+\def\@gobble#1{}%
+\ifx\inputlineno\@undefined
+ \let\@linenumber = \empty % Pre-3.0.
+\else
+ \def\@linenumber{\the\inputlineno:\space}%
+\fi
+\def\@getoptionalarg#1{\let\temp = #1\futurelet\next\@bracketcheck}%
+\def\@bracketcheck{\begingroup
+ \if [\next
+ \aftergroup\@@getoptionalarg
+ \else
+ \global\let\@optionalarg = \empty
+ \aftergroup\temp
+ \fi
+\endgroup}%
+\def\@@getoptionalarg[#1]{%
+ \def\@optionalarg{#1}%
+ \temp
+}%
+\def\@tokstostring#1{\@ttsA#1 \@ttsmarkA}%
+\def\@ttsA#1 #2\@ttsmarkA{%
+ \@ifempty{#1}\else
+ \@ttsB #1\@ttsmarkB
+ \@ifempty{#2}\else
+ \@spacesub\@ttsA#2\@ttsmarkA
+ \fi
+ \fi
+}%
+\def\@ttsB#1{%
+ \ifx #1\@ttsmarkB\else
+ \string #1%
+ \expandafter\@ttsB
+ \fi
+}%
+\def\@ttsmarkB{\@ttsmarkB}% should never be expanded
+\def\@spacesub{+}%
+\def\@ifempty#1{\@@ifempty #1\@emptymarkA\@emptymarkB}%
+\def\@@ifempty#1#2\@emptymarkB{\ifx #1\@emptymarkA}%
+\def\@emptymarkA{\@emptymarkA}% Again, so \ifx won't complain.
+\def\@nnil{\@nil}%
+\def\@fornoop#1\@@#2#3{}%
+\def\@for#1:=#2\do#3{%
+ \edef\@fortmp{#2}%
+ \ifx\@fortmp\empty \else
+ \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}%
+ \fi
+}%
+\def\@forloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx #4\@nnil \else
+ #5\def#4{#2}\ifx #4\@nnil \else#5\@iforloop #3\@@#4{#5}\fi\fi
+}%
+\def\@iforloop#1,#2\@@#3#4{\def#3{#1}\ifx #3\@nnil
+ \let\@nextwhile=\@fornoop \else
+ #4\relax\let\@nextwhile=\@iforloop\fi\@nextwhile#2\@@#3{#4}%
+}%
+\@innernewif\if@fileexists
+\def\@testfileexistence{\@getoptionalarg\@finishtestfileexistence}%
+\def\@finishtestfileexistence#1{%
+ \begingroup
+ \def\extension{#1}%
+ \immediate\openin0 =
+ \ifx\@optionalarg\empty\jobname\else\@optionalarg\fi
+ \ifx\extension\empty \else .#1\fi
+ \space
+ \ifeof 0
+ \global\@fileexistsfalse
+ \else
+ \global\@fileexiststrue
+ \fi
+ \immediate\closein0
+ \endgroup
+}%
+\toks0 = {%
+\def\bibliographystyle#1{%
+ \@readauxfile
+ \@writeaux{\string\bibstyle{#1}}%
+}%
+\let\bibstyle = \@gobble
+\def\bibliography#1{%
+ \@readauxfile
+ \@writeaux{\string\bibdata{#1}}%
+ \@testfileexistence{bbl}%
+ \if@fileexists
+ \@readbblfile
+ \fi
+}%
+\let\bibdata = \@gobble
+\def\nocite#1{%
+ \@readauxfile
+ \@writeaux{\string\citation{#1}}%
+}%
+\@innernewif\if@notfirstcitation
+\def\cite{\begingroup\catcode`_ = \@letter \@getoptionalarg\@cite}%
+\def\@cite#1{%
+ \nocite{#1}%
+ \printcitestart
+ \@notfirstcitationfalse
+ \@for \@citation :=#1\do
+ {%
+ \expandafter\@onecitation\@citation\@@
+ }%
+ \ifx\empty\@optionalarg\else
+ \printcitenote{\@optionalarg}%
+ \fi
+ \printcitefinish
+ \endgroup
+}%
+\def\@onecitation#1\@@{%
+ \if@notfirstcitation
+ \printbetweencitations
+ \fi
+ \expandafter \ifx \csname\@citelabel{#1}\endcsname \relax
+ \if@citewarning
+ \message{\@linenumber Undefined citation `#1'.}%
+ \fi
+ \expandafter\gdef\csname\@citelabel{#1}\endcsname{%
+ {\tt \nobreak\hskip0pt#1\nobreak\hskip0pt}}%
+ \fi
+ \csname\@citelabel{#1}\endcsname
+ \@notfirstcitationtrue
+}%
+\def\@citelabel#1{\@tokstostring{b@#1}}%
+\def\@citedef#1{%
+ \begingroup
+ \@resetnumerals
+ \@finishcitedef{#1}%
+}%
+\def\@finishcitedef#1#2{%
+ \expandafter\gdef\csname\@citelabel{#1}\endcsname{#2}%
+ \endgroup
+}%
+\def\@resetnumerals{%
+ \catcode`0 = \@other \catcode`1 = \@other \catcode`2 = \@other
+ \catcode`3 = \@other \catcode`4 = \@other \catcode`5 = \@other
+ \catcode`6 = \@other \catcode`7 = \@other \catcode`8 = \@other
+ \catcode`9 = \@other \catcode`" = \@other \catcode`' = \@other
+ \catcode`` = \@other \catcode`, = \@other \catcode`. = \@other
+}%
+\def\@readbblfile{%
+ \@innernewcount\@itemnum
+ \begingroup
+ \def\begin##1##2{%
+ \setbox0 = \hbox{\biblabelcontents{##2}}%
+ \biblabelwidth = \wd0
+ }%
+ \def\end##1{}% ##1 is `thebibliography' again.
+ \@itemnum = 0
+ \def\bibitem{\futurelet\next\@bibitem}%
+ \def\@bibitem{%
+ \begingroup \if [\next
+ \aftergroup\@alphabibitem
+ \else
+ \aftergroup\@numberedbibitem
+ \fi \endgroup
+ }%
+ \def\@alphabibitem[##1]##2{%
+ \expandafter \xdef\csname\@citelabel{##2}\endcsname {##1}%
+ \@finishbibitem{##2}%
+ }%
+ \def\@numberedbibitem##1{%
+ \advance\@itemnum by 1
+ \expandafter \xdef\csname\@citelabel{##1}\endcsname{\number\@itemnum}%
+ \@finishbibitem{##1}%
+ }%
+ \def\@finishbibitem##1{%
+ \biblabelprint{\csname\@citelabel{##1}\endcsname}%
+ \@writeaux{\string\@citedef{##1}{\csname\@citelabel{##1}\endcsname}}%
+ \ignorespaces
+ }%
+ \let\em = \bblem
+ \let\newblock = \bblnewblock
+ \let\sc = \bblsc
+ \frenchspacing
+ \clubpenalty = 4000 \widowpenalty = 4000
+ \tolerance = 10000 \hfuzz = .5pt
+ \everypar = {\hangindent = \biblabelwidth
+ \advance\hangindent by \biblabelextrahang}%
+ \bblrm
+ \parskip = 1.5ex plus .5ex minus .5ex
+ \biblabelextrahang = .5em
+ \bblhook
+ \input \jobname.bbl
+ \endgroup
+}%
+\@innernewdimen\biblabelwidth
+\@innernewdimen\biblabelextrahang
+\def\biblabelprint#1{%
+ \noindent\hbox to \biblabelwidth{\biblabelcontents{#1}\hss}\enspace}%
+\def\biblabelcontents#1{\bblrm [#1]}%
+\def\bblrm{\rm}%
+\def\bblem{\it}%
+\def\bblsc{\ifx\@scfont\@undefined
+ \font\@scfont = cmcsc10
+ \fi
+ \@scfont
+}%
+\def\bblnewblock{\hskip .11em plus .33em minus .07em}%
+\let\bblhook = \empty
+\def\printcitestart{[}% left bracket
+\def\printcitefinish{]}% right bracket
+\def\printbetweencitations{, }% comma, space
+\def\printcitenote#1{, #1}% comma, space, note (if it exists)
+\let\citation = \@gobble
+\@innernewcount\@numparams
+\def\newcommand#1{%
+ \def\@commandname{#1}%
+ \futurelet\@next\@continuenewcommand
+}%
+\def\@continuenewcommand{\begingroup
+ \if [\@next
+ \aftergroup\@newcommandwithargs
+ \else
+ \global\@numparams = 0
+ \aftergroup\@newcommand
+ \fi
+\endgroup}%
+\def\@newcommandwithargs[#1]{%
+ \global\@numparams = #1
+ \@newcommand
+}%
+\def\@newcommand#1{%
+ \def\@startdef{\expandafter\edef\@commandname}%
+ \ifnum\@numparams=0
+ \let\@paramdef = \empty
+ \else
+ \ifnum\@numparams>9
+ \errmessage{\the\@numparams\space is too many parameters}%
+ \else
+ \ifnum\@numparams<0
+ \errmessage{\the\@numparams\space is too few parameters}%
+ \else
+ \edef\@paramdef{%
+ \ifcase\@numparams
+ \empty No arguments.
+ \or ####1%
+ \or ####1####2%
+ \or ####1####2####3%
+ \or ####1####2####3####4%
+ \or ####1####2####3####4####5%
+ \or ####1####2####3####4####5####6%
+ \or ####1####2####3####4####5####6####7%
+ \or ####1####2####3####4####5####6####7####8%
+ \or ####1####2####3####4####5####6####7####8####9%
+ \fi
+ }%
+ \fi
+ \fi
+ \fi
+ \expandafter\@startdef\@paramdef{#1}%
+}%
+}%
+\ifx\nobibtex\@undefined \the\toks0 \fi
+\def\@readauxfile{%
+ \if@auxfiledone \else % remember: \@auxfiledonetrue if \noauxfile is defined
+ \global\@auxfiledonetrue
+ \@testfileexistence{aux}%
+ \if@fileexists
+ \begingroup
+ \endlinechar = -1
+ \@setletters
+ \input \jobname.aux
+ \endgroup
+ \else
+ \message{\@undefinedmessage}%
+ \global\@citewarningfalse
+ \fi
+ \immediate\openout\@auxfile = \jobname.aux
+ \fi
+}%
+\newif\if@auxfiledone
+\ifx\noauxfile\@undefined \else \@auxfiledonetrue\fi
+\def\@setletters{%
+ \count255 = 0
+ \edef\temp{\ifx\inputlineno\@undefined 128\else 256\fi}%
+ \loop
+ \ifnum\catcode\count255 = \@other
+ \catcode\count255 = \@letter
+ \fi
+ \advance\count255 by 1
+ \ifnum\count255<\temp
+ \repeat
+ \catcode`\_ = \@letter
+}%
+\@innernewwrite\@auxfile
+\def\@writeaux#1{\ifx\noauxfile\@undefined \write\@auxfile{#1}\fi}%
+\ifx\@undefinedmessage\@undefined
+ \def\@undefinedmessage{No .aux file; I won't give you warnings about
+ undefined citations.}%
+\fi
+\@innernewif\if@citewarning
+\ifx\noauxfile\@undefined \@citewarningtrue\fi
+\catcode`@ = \@oldatcatcode
+\let\auxfile = \@auxfile
+\let\for = \@for
+\let\getoptionalarg = \@getoptionalarg
+\let\ifempty = \@ifempty
+\def\iffileexists{\if@fileexists}%
+\let\innerdef = \@innerdef
+\let\innernewcount = \@innernewcount
+\let\innernewdimen = \@innernewdimen
+\let\innernewif = \@innernewif
+\let\innernewwrite = \@innernewwrite
+\let\linenumber = \@linenumber
+\let\readauxfile = \@readauxfile
+\let\spacesub = \@spacesub
+\let\testfileexistence = \@testfileexistence
+\let\tokstostring = \@tokstostring
+\let\writeaux = \@writeaux
+\def\innerinnerdef#1{\expandafter\innerdef\csname inner#1\endcsname{#1}}%
+\innerinnerdef{newbox}%
+\innerinnerdef{newfam}%
+\innerinnerdef{newhelp}%
+\innerinnerdef{newinsert}%
+\innerinnerdef{newlanguage}%
+\innerinnerdef{newmuskip}%
+\innerinnerdef{newread}%
+\innerinnerdef{newskip}%
+\innerinnerdef{newtoks}%
+\def\immediatewriteaux#1{%
+ \ifx\noauxfile\@undefined
+ \immediate\write\@auxfile{#1}%
+ \fi
+}%
+\begingroup
+ \makeactive\^^M \makeactive\ % No spaces or ^^M's from here on.
+\gdef\obeywhitespace{%
+\makeactive\^^M\def^^M{\par\futurelet\next\@finishobeyedreturn}%
+\makeactive\ \def {\ }%
+\aftergroup\@removebox%
+\futurelet\next\@finishobeywhitespace%
+}%
+\gdef\@finishobeywhitespace{{%
+\ifx\next %
+\aftergroup\@obeywhitespaceloop%
+\else\ifx\next^^M%
+\aftergroup\gobble%
+\fi\fi}}%
+\gdef\@finishobeyedreturn{%
+\ifx\next^^M\vskip\blanklineskipamount\fi%
+\indent%
+}%
+\endgroup
+\def\@obeywhitespaceloop#1{\futurelet\next\@finishobeywhitespace}%
+\def\@removebox{%
+ \setbox0 = \lastbox
+ \ifdim\wd0=\parindent
+ \setbox2 = \hbox{\unhbox0}%
+ \ifdim\wd2=0pt
+ \ignorespaces
+ \else
+ \box2 % Put it back: it wasn't empty.
+ \fi
+ \else
+ \box0 % Put it back: it wasn't the right width.
+ \fi
+}%
+\newskip\blanklineskipamount
+\blanklineskipamount = 0pt
+\def\frac#1/#2{\leavevmode
+ \kern.1em \raise .5ex \hbox{\the\scriptfont0 #1}%
+ \kern-.1em $/$%
+ \kern-.15em \lower .25ex \hbox{\the\scriptfont0 #2}%
+}%
+\def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\null}%
+\def\LaTeX{L\kern -.26em \raise .6ex \hbox{\sevenrm A}\kern -.15em \TeX}%
+\def\AMSTeX{$\cal A\kern -.1667em
+ \lower .5ex\hbox{$\cal M$}%
+ \kern -.125em S$-\TeX
+}%
+\def\BibTeX{{\rm B\kern-.05em{\sevenrm I\kern-.025em B}\kern-.08em
+ T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}%
+\font\mflogo = logo10
+\def\MF{{\mflogo META}{\tenrm \-}{\mflogo FONT}}%
+\def\blackbox{\vrule height .8ex width .6ex depth -.2ex }% square bullet
+\def\makeblankbox#1#2{%
+ \ifvoid0
+ \errmessage{Box 0 is void}%
+ \errhelp = \@makeblankboxhelp
+ \fi
+ \hbox{\lower\dp0
+ \vbox{\hidehrule{#1}{#2}%
+ \kern -#1% overlap rules
+ \hbox to \wd0{\hidevrule{#1}{#2}%
+ \raise\ht0\vbox to #1{}% vrule height
+ \lower\dp0\vtop to #1{}% vrule depth
+ \hfil\hidevrule{#2}{#1}%
+ }%
+ \kern-#1\hidehrule{#2}{#1}%
+ }%
+ }%
+}%
+\newhelp\@makeblankboxhelp{Assigning to the dimensions of a void^^J%
+ box has no effect. Do `\string\setbox0=\string\null' before you^^J%
+ define its dimensions.}%
+\def\hidehrule#1#2{\kern-#1\hrule height#1 depth#2 \kern-#2}%
+\def\hidevrule#1#2{%
+ \kern-#1%
+ \dimen0=#1\advance\dimen0 by #2%
+ \vrule width\dimen0
+ \kern-#2%
+}%
+\newdimen\boxitspace \boxitspace = 3pt
+\def\boxit#1{%
+ \vbox{%
+ \hrule
+ \hbox{%
+ \vrule
+ \kern\boxitspace
+ \vbox{\kern\boxitspace \parindent = 0pt #1\kern\boxitspace}%
+ \kern\boxitspace
+ \vrule
+ }%
+ \hrule
+ }%
+}%
+\def\numbername#1{\ifcase#1%
+ zero%
+ \or one%
+ \or two%
+ \or three%
+ \or four%
+ \or five%
+ \or six%
+ \or seven%
+ \or eight%
+ \or nine%
+ \or ten%
+ \or #1%
+ \fi
+}%
+\def\environment#1{%
+ \ifx\@groupname\@undefined\else
+ \errhelp = \@unnamedendgrouphelp
+ \errmessage{`\@groupname' was not closed by \string\endenvironment}%
+ \fi
+ \def\@groupname{#1}%
+ \begingroup
+ \let\@groupname = \@undefined
+}%
+\def\endenvironment#1{%
+ \endgroup
+ \def\@thearg{#1}%
+ \ifx\@groupname\@thearg
+ \else
+ \ifx\@groupname\@undefined
+ \errhelp = \@isolatedendenvironmenthelp
+ \errmessage{Isolated \string\endenvironment\space for `#1'}%
+ \else
+ \errhelp = \@mismatchedenvironmenthelp
+ \errmessage{Environment `#1' ended, but `\@groupname' started}%
+ \endgroup % Probably a typo in the names.
+ \fi
+ \fi
+ \let\@groupname = \@undefined
+}%
+\newhelp\@unnamedendgrouphelp{Most likely, you just forgot an^^J%
+ \string\endenvironment. Maybe you should try inserting another^^J%
+ \string\endgroup to recover.}%
+\newhelp\@isolatedendenvironmenthelp{You ended an environment X, but^^J%
+ no \string\environment\space to start it is anywhere in sight.^^J%
+ You might also be at an \string\endenvironment\space that would match^^J%
+ a \string\begingroup, i.e., you forgot an \string\endgroup.}%
+\newhelp\@mismatchedenvironmenthelp{You started an environment X, but^^J%
+ you ended it with Y. Maybe you made a typo in one or the other^^J%
+ of the names.}%
+\newif\ifenvironment
+\def\checkenv{\ifenvironment \errhelp = \@interwovenenvhelp
+ \errmessage{Interwoven environments}%
+ \endgroup \fi
+}%
+\newhelp\@interwovenenvhelp{Perhaps you forgot to end the previous^^J%
+ environment? I'm finishing off the current group,^^J%
+ hoping that will fix it.}%
+\newif\ifeqno
+\newif\ifleqno
+\def\eq{\the\@eqtoks}%
+\def\eqn{\the\@eqnotoks}%
+\newtoks\@eqtoks
+\newtoks\@eqnotoks
+\long\def\displaysetup#1$${%
+ \@ddisplaytest#1\eqdef\eqdef\@ddisplaytest
+ \expandafter\@displaytest\the\toks0\eqno\eqno\@displaytest
+}%
+\def\@removetrailingspaces#1 #2 \endmark{#1}%
+\long\def\@ddisplaytest#1\eqdef#2\eqdef#3\@ddisplaytest{%
+ \if !\noexpand#3!%
+ \toks0 = {#1}%
+ \else
+ \toks2 = {#1}%
+ \begingroup
+ \def\temp{\@removetrailingspaces #2}%
+ \def\\{ }%
+ \xdef\temp{{\expandafter\temp\\ \endmark}}%
+ \endgroup
+ \toks4 = \expandafter\expandafter\expandafter{\expandafter\eqdef\temp}%
+ \edef\@setupeq{\toks0 = {\the\toks2 \the\toks4}}%
+ \@setupeq
+ \fi
+}%
+\long\def\@displaytest#1\eqno#2\eqno#3\@displaytest{%
+ \if !\noexpand#3!%
+ \@ldisplaytest#1\leqno\leqno\@ldisplaytest
+ \else
+ \eqnotrue
+ \leqnofalse
+ \@eqnotoks = {#2}%
+ \@eqtoks = {#1}%
+ \fi
+ \generaldisplay$$%
+}%
+\long\def\@ldisplaytest#1\leqno#2\leqno#3\@ldisplaytest{%
+ \@eqtoks = {#1}%
+ \if !\noexpand#3!%
+ \eqnofalse
+ \else
+ \eqnotrue
+ \leqnotrue
+ \@eqnotoks = {#2}%
+ \fi
+}%
+\newdimen\leftdisplayindent
+\newtoks\previouseverydisplay
+\newtoks\displayhook
+\def\leftdisplays{%
+ \previouseverydisplay = \everydisplay
+ \everydisplay = {\the\previouseverydisplay \the\displayhook \displaysetup}%
+ \def\generaldisplay{%
+ \leftline{%
+ \strut
+ \indent \hskip\leftskip \hskip\leftdisplayindent
+ \dimen0 = \parindent \advance\dimen0 by \leftskip
+ \advance\dimen0 by \leftdisplayindent
+ \advance\displaywidth by -\dimen0
+ \@redefinealignmentdisplays
+ \ifeqno\ifleqno
+ \kern-\dimen0\rlap{$\displaystyle\eqn$}\kern\dimen0
+ \fi\fi
+ $\displaystyle\eq$%
+ \ifeqno\ifleqno\else
+ \hfill $\displaystyle\eqn$%
+ \fi\fi
+ }%
+ }%
+}%
+\def\@redefinealignmentdisplays{%
+ \def\displaylines##1{\displ@y
+ \vcenter{%
+ \let\oldeqprint = \eqprint
+ \def\eqprint{\hfill\oldeqprint}%
+ \halign{\hbox to\displaywidth{$\@lign\displaystyle####\hfil$}\crcr
+ ##1\crcr}}}%
+ \def\eqalignno##1{\displ@y
+ \vcenter{%
+ \halign to\displaywidth{%
+ $\@lign\displaystyle{####}$\tabskip\z@skip
+ &$\@lign\displaystyle{{}####}$\hfil\tabskip\centering
+ &\llap{$\@lign####$}\tabskip\z@skip\crcr
+ ##1\crcr}}}%
+ \def\leqalignno##1{\displ@y
+ \vcenter{%
+ \halign to\displaywidth{%
+ $\@lign\displaystyle{####}$\tabskip\z@skip
+ &$\@lign\displaystyle{{}####}$\hfil\tabskip\centering
+ &\kern-\displaywidth
+ \rlap{\kern-\parindent\kern-\leftskip$\@lign####$}%
+ \tabskip\displaywidth\crcr
+ ##1\crcr}}}%
+}%
+\def\centereddisplays{\let\displaysetup = \relax}%
+\def\monthname{%
+ \ifcase\month
+ \or Jan\or Feb\or Mar\or Apr\or May\or Jun%
+ \or Jul\or Aug\or Sep\or Oct\or Nov\or Dec%
+ \fi
+}%
+\def\fullmonthname{%
+ \ifcase\month
+ \or January\or February\or March\or April\or May\or June%
+ \or July\or August\or September\or October\or November\or December%
+ \fi
+}%
+\def\timestring{\begingroup
+ \count0 = \time
+ \divide\count0 by 60
+ \count2 = \count0 % The hour, from zero to 23.
+ \count4 = \time
+ \multiply\count0 by 60
+ \advance\count4 by -\count0 % The minute, from zero to 59.
+ \ifnum\count4<10
+ \toks1 = {0}%
+ \else
+ \toks1 = {}%
+ \fi
+ \ifnum\count2<12
+ \toks0 = {a.m.}%
+ \else
+ \toks0 = {p.m.}%
+ \advance\count2 by -12
+ \fi
+ \ifnum\count2=0
+ \count2 = 12
+ \fi
+ \number\count2:\the\toks1 \number\count4 \thinspace \the\toks0
+\endgroup}%
+\def\timestamp{\number\day\space\monthname\space\number\year\quad\timestring}%
+\newskip\abovelistskip \abovelistskip = .5\baselineskip
+\newskip\interitemskip \interitemskip = 0pt
+\newskip\belowlistskip \belowlistskip = .5\baselineskip
+\newdimen\listleftindent \listleftindent = 0pt
+\newdimen\listrightindent \listrightindent = 0pt
+\def\listcompact{\interitemskip = 0pt \relax}%
+\newdimen\@listindent
+\def\beginlist{%
+ \@listindent = \parindent
+ \advance\@listindent by \listleftindent
+ \everydisplay = \expandafter{\the\everydisplay
+ \advance\displayindent by \@listindent
+ \advance\displaywidth by -\@listindent
+ \advance\displaywidth by -\listrightindent}%
+ \nobreak\vskip\abovelistskip
+ \advance\leftskip by \@listindent
+ \advance\rightskip by \listrightindent
+}%
+\def\printitem{%
+ \par
+ \vskip-\parskip
+ \noindent
+ \llap{\marker \enspace}%
+}%
+\def\endlist{\vskip\belowlistskip}%
+\newcount\numberedlistdepth
+\newcount\itemnumber
+\newcount\itemletter
+\def\numberedmarker{%
+ \ifcase\numberedlistdepth
+ (impossible)%
+ \or \itemnumberout)%
+ \or \itemletterout)%
+ \else *%
+ \fi
+}%
+\def\numberedlist{\environment{@numbered-list}%
+ \advance\numberedlistdepth by 1
+ \itemnumber = 1
+ \itemletter = `a
+ \beginlist
+ \let\marker = \numberedmarker
+ \def\li{%
+ \ifnum\itemnumber=1\else
+ \vskip\interitemskip
+ \fi
+ \printitem
+ \advance\itemnumber by 1
+ \advance\itemletter by 1
+ }%
+}%
+\def\itemnumberout{\number\itemnumber}%
+\def\itemletterout{\char\itemletter}%
+\def\endnumberedlist{%
+ \par
+ \endenvironment{@numbered-list}%
+ \endlist
+}%
+\newcount\unorderedlistdepth
+\def\unorderedmarker{%
+ \ifcase\unorderedlistdepth
+ (impossible)%
+ \or \blackbox
+ \or ---%
+ \else *%
+ \fi
+}%
+\def\unorderedlist{\environment{@unordered-list}%
+ \advance\unorderedlistdepth by 1
+ \beginlist
+ \itemnumber = 1
+ \let\marker = \unorderedmarker
+ \def\li{%
+ \ifnum\itemnumber=1\else
+ \vskip\interitemskip
+ \fi
+ \printitem
+ \advance\itemnumber by 1
+ }%
+}%
+\def\endunorderedlist{%
+ \par
+ \endenvironment{@unordered-list}%
+ \endlist
+}%
+\def\listing#1{%
+ \par \begingroup
+ \@setuplisting
+ \setuplistinghook
+ \input #1
+ \endgroup
+}%
+\let\setuplistinghook = \empty
+\def\@setuplisting{%
+ \uncatcodespecials
+ \obeywhitespace
+ \makeactive\`
+ \makeactive\^^I
+ \def^^L{\vfill\eject}%
+ \tt
+}%
+{%
+ \makeactive\`
+ \gdef`{\relax\lq}% Defeat ligatures.
+}%
+{%
+ \makeactive\^^I
+ \tt
+ \gdef^^I{\hskip8\fontdimen2\font \relax}%
+}%
+\newif\if@tocfileopened
+\newwrite\tocfile
+\def\opentocfile{%
+ \if@tocfileopened\else
+ \global\@tocfileopenedtrue
+ \immediate\openout\tocfile = \jobname.toc
+ \fi
+}%
+\def\writetocentry#1#2{\writenumberedtocentry{#1}{#2}\empty}%
+\def\writenumberedtocentry#1#2#3{%
+ \ifrewritetocfile
+ \opentocfile
+ \toks0 = {\expandafter\noexpand \csname toc#1entry\endcsname}%
+ \def\temp{#2}%
+ \def\cs{#3}%
+ \edef\@wr{%
+ \write\tocfile{%
+ \the\toks0
+ {\sanitize\temp}%
+ \ifx \empty\cs\else{#3}\fi
+ {\noexpand\folio}%
+ }%
+ }%
+ \@wr
+ \fi
+ \ignorespaces
+}%
+\newif\ifrewritetocfile \rewritetocfiletrue
+\def\readtocfile{%
+ \testfileexistence{toc}%
+ \if@fileexists
+ \input \jobname.toc
+ \ifrewritetocfile
+ \opentocfile
+ \fi
+ \fi
+}%
+\def\tocchapterentry#1#2{\line{\bf #1 \dotfill\ #2}}%
+\def\tocsectionentry#1#2{\line{\quad\sl #1 \dotfill\ \rm #2}}%
+\def\tocsubsectionentry#1#2{\line{\qquad\rm #1 \dotfill\ #2}}%
+\def\xrdef#1{%
+ \@readauxfile
+ \begingroup
+ \xrlabel{#1}%
+ \edef\@wr{\@writexrdef{\the\xrlabeltoks}}%
+ \@wr
+ \endgroup
+ \ignorespaces
+}%
+\def\@writexrdef#1{%
+ \@writeaux{%
+ \string\gdef\expandafter\string\csname#1\endcsname {\noexpand\folio}%
+ }%
+}%
+\newtoks\xrlabeltoks
+\def\xrlabel#1{%
+ \begingroup
+ \escapechar = `\_
+ \edef\tts{\tokstostring{#1_}}%
+ \global\xrlabeltoks = \expandafter{\tts}%
+ \endgroup
+}%
+\let\ifxrefwarning = \iftrue
+\def\xrefwarningtrue{\@citewarningtrue \let\ifxrefwarning = \iftrue}%
+\def\xrefwarningfalse{\@citewarningfalse let\ifxrefwarning = \iffalse}%
+\def\xrefn#1{%
+ \@readauxfile
+ \xrlabel{#1}% \xrlabeltoks now has the control sequence name.
+ \toks0 = \expandafter{\csname\the\xrlabeltoks\endcsname}%
+ \expandafter \ifx\the\toks0\relax
+ \if@citewarning
+ \message{\linenumber Undefined label `\tokstostring{#1}'.}%
+ \fi
+ \begingroup
+ \let\spacesub = \space
+ \expandafter\xdef\the\toks0{`{\tt \tokstostring{#1}}'}%
+ \endgroup
+ \fi
+ \the\toks0 % Always produce something.
+}%
+\def\xref#1{p.\thinspace\xrefn{#1}}%
+\newcount\eqnumber
+\def\eqdefn#1{%
+ \@readauxfile
+ \global\advance\eqnumber by 1
+ \begingroup
+ \xrlabel{#1}% \xrlabeltoks now has the control sequence name.
+ \edef\@wr{\@writeeqdef{\the\xrlabeltoks}{\the\eqnumber}}%
+ \@wr
+ \endgroup
+ \expandafter\xdef\csname\the\xrlabeltoks\endcsname{\the\eqnumber}%
+ \ignorespaces
+}%
+\def\@writeeqdef#1#2{%
+ \immediatewriteaux{%
+ \string\gdef\expandafter\string\csname#1\endcsname{#2}%
+ }%
+}%
+\def\eqdef#1{%
+ \@maybedisableeqno
+ \eqno \eqdefn{#1}\eqprint{\the\eqnumber}%
+ \@mayberestoreeqno
+ \ignorespaces
+}%
+\let\@mayberestoreeqno = \empty
+\def\@maybedisableeqno{%
+ \ifinner
+ \global\let\eqno = \relax
+ \global\let\@mayberestoreeqno = \@restoreeqno
+ \fi
+}%
+\let\@primitiveeqno = \eqno
+\def\@restoreeqno{%
+ \global\let\eqno = \@primitiveeqno
+ \global\let\@mayberestoreeqno = \empty
+}%
+\def\eqref#1{%
+ \@readauxfile
+ \xrlabel{#1}% \xrlabeltoks now has the control sequence name.
+ \toks0 = \expandafter{\csname\the\xrlabeltoks\endcsname}%
+ \expandafter \ifx\the\toks0\relax
+ \if@citewarning
+ \message{\linenumber Undefined equation label `\tokstostring{#1}'.}%
+ \fi
+ \begingroup
+ \let\spacesub = \space
+ \expandafter\xdef\the\toks0{`{\tt \tokstostring{#1}}'}%
+ \endgroup
+ \fi
+ \eqprint{\the\toks0}%
+}%
+\def\eqprint#1{(#1)}%
+\begingroup
+ \catcode `\^^M = \active %
+ \globaldefs = 1 %
+ \def\flushleft{\beforejustify %
+ \aftergroup\@endflushleft %
+ \def^^M{\null\hfil\break}%
+ \def\@eateol^^M{}%
+ \@eateol %
+ }%
+ \def\flushright{\beforejustify %
+ \aftergroup\@endflushright %
+ \def^^M{\break\null\hfil}%
+ \def\@eateol^^M{\hfil\null}%
+ \@eateol %
+ }%
+ \def\center {\beforejustify %
+ \aftergroup\@endcenter %
+ \def^^M{\hfil\break\null\hfil}%
+ \def\@eateol^^M{\hfil\null}%
+ \@eateol %
+ }%
+\endgroup
+\def\@endflushleft{\unpenalty{\parfillskip = 0pt plus 1 fil\par}\ignorespaces}%
+\def\@endflushright{% Remove the \hfil\null\break we just put on.
+ \unskip \setbox0=\lastbox \unpenalty
+ {\parfillskip = 0pt \par}\ignorespaces
+}%
+\def\@endcenter{% Remove the \hfil\null\break we just put on.
+ \unskip \setbox0=\lastbox \unpenalty
+ {\parfillskip = 0pt plus 1fil \par}\ignorespaces
+}%
+\def\beforejustify{%
+ \par\noindent
+ \catcode`\^^M = \active
+ \checkenv \environmenttrue
+}%
+\newcount\abovecolumnspenalty \abovecolumnspenalty = 10000
+\newcount\@linestogo % Lines remaining to process.
+\newcount\@linestogoincolumn % Lines remaining in column.
+\newcount\@columndepth % Number of lines in a column.
+\newdimen\@columnwidth % Width of each column.
+\newtoks\crtok \crtok = {\cr}%
+\newcount\currentcolumn
+\def\makecolumns#1/#2: {\par \begingroup
+ \@columndepth = #1
+ \advance\@columndepth by #2
+ \advance\@columndepth by -1
+ \divide \@columndepth by #2
+ \@linestogoincolumn = \@columndepth
+ \@linestogo = #1
+ \currentcolumn = 1
+ \def\@endcolumnactions{%
+ \ifnum \@linestogo<2
+ \the\crtok \egroup \endgroup \par % End \valign and \makecolumns.
+ \else
+ \global\advance\@linestogo by -1
+ \ifnum\@linestogoincolumn<2
+ \global\advance\currentcolumn by 1
+ \global\@linestogoincolumn = \@columndepth
+ \the\crtok
+ \else
+ &\global\advance\@linestogoincolumn by -1
+ \fi
+ \fi
+ }%
+ \makeactive\^^M
+ \letreturn \@endcolumnactions
+ \@columnwidth = \hsize
+ \advance\@columnwidth by -\parindent
+ \divide\@columnwidth by #2
+ \penalty\abovecolumnspenalty
+ \noindent % It's not a paragraph (usually).
+ \valign\bgroup
+ &\hbox to \@columnwidth{\strut \hsize = \@columnwidth ##\hfil}\cr
+}%
+\newcount\footnotenumber
+\newdimen\footnotemarkseparation \footnotemarkseparation = .5em
+\newskip\interfootnoteskip \interfootnoteskip = 0pt
+\newtoks\everyfootnote
+\newdimen\footnoterulewidth \footnoterulewidth = 2true in
+\newdimen\footnoteruleheight \footnoteruleheight = 0.4pt
+\newdimen\belowfootnoterulespace \belowfootnoterulespace = 2.6pt
+\let\@plainfootnote = \footnote
+\let\@plainvfootnote = \vfootnote
+\def\vfootnote#1{\insert\footins\bgroup
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\ht\strutbox % top baseline for broken footnotes
+ \advance\splittopskip by \interfootnoteskip
+ \splitmaxdepth\dp\strutbox
+ \floatingpenalty\@MM
+ \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip
+ \everypar = {}%
+ \the\everyfootnote
+ \vskip\interfootnoteskip
+ \indent\llap{#1\kern\footnotemarkseparation}\footstrut\futurelet\next\fo@t
+}%
+\def\footnoterule{\dimen0 = \footnoteruleheight
+ \advance\dimen0 by \belowfootnoterulespace
+ \kern-\dimen0
+ \hrule width\footnoterulewidth height\footnoteruleheight depth0pt
+ \kern\belowfootnoterulespace
+ \vskip-\interfootnoteskip
+}%
+\def\numberedfootnote{%
+ \global\advance\footnotenumber by 1
+ \@plainfootnote{$^{\number\footnotenumber}$}%
+}%
+\newdimen\paperheight \paperheight = 11in
+\def\topmargin{\afterassignment\@finishtopmargin \dimen0}%
+\def\@finishtopmargin{%
+ \dimen2 = \voffset % Remember the old \voffset.
+ \voffset = \dimen0 \advance\voffset by -1in
+ \advance\dimen2 by -\voffset % Compute the change in \voffset.
+ \advance\vsize by \dimen2 % Change type area accordingly.
+}%
+\def\advancetopmargin{%
+ \dimen0 = 0pt \afterassignment\@finishadvancetopmargin \advance\dimen0
+}%
+\def\@finishadvancetopmargin{%
+ \advance\voffset by \dimen0
+ \advance\vsize by -\dimen0
+}%
+\def\bottommargin{\afterassignment\@finishbottommargin \dimen0}%
+\def\@finishbottommargin{%
+ \@computebottommargin % Result in \dimen2.
+ \advance\dimen2 by -\dimen0 % Compute the change in the bottom margin.
+ \advance\vsize by \dimen2 % Change the type area.
+}%
+\def\advancebottommargin{%
+ \dimen0 = 0pt \afterassignment\@finishadvancebottommargin \advance\dimen0
+}%
+\def\@finishadvancebottommargin{%
+ \advance\vsize by -\dimen0
+}%
+\def\@computebottommargin{%
+ \dimen2 = \paperheight % The total paper size.
+ \advance\dimen2 by -\vsize % Less the text size.
+ \advance\dimen2 by -\voffset % Less the offset at the top.
+ \advance\dimen2 by -1in % Less the default offset.
+}%
+\newdimen\paperwidth \paperwidth = 8.5in
+\def\leftmargin{\afterassignment\@finishleftmargin \dimen0}%
+\def\@finishleftmargin{%
+ \dimen2 = \hoffset % Remember the old \hoffset.
+ \hoffset = \dimen0 \advance\hoffset by -1in
+ \advance\dimen2 by -\hoffset % Compute the change in \hoffset.
+ \advance\hsize by \dimen2 % Change type area accordingly.
+}%
+\def\advanceleftmargin{%
+ \dimen0 = 0pt \afterassignment\@finishadvanceleftmargin \advance\dimen0
+}%
+\def\@finishadvanceleftmargin{%
+ \advance\hoffset by \dimen0
+ \advance\hsize by -\dimen0
+}%
+\def\rightmargin{\afterassignment\@finishrightmargin \dimen0}%
+\def\@finishrightmargin{%
+ \@computerightmargin % Result in \dimen2.
+ \advance\dimen2 by -\dimen0 % Compute the change in the right margin.
+ \advance\hsize by \dimen2 % Change the type area.
+}%
+\def\advancerightmargin{%
+ \dimen0 = 0pt \afterassignment\@finishadvancerightmargin \advance\dimen0
+}%
+\def\@finishadvancerightmargin{%
+ \advance\hsize by -\dimen0
+}%
+\def\@computerightmargin{%
+ \dimen2 = \paperwidth % The total paper size.
+ \advance\dimen2 by -\hsize % Less the text size.
+ \advance\dimen2 by -\hoffset % Less the offset at the left.
+ \advance\dimen2 by -1in % Less the default offset.
+}%
+\newskip\abovedoublecolumnskip \abovedoublecolumnskip = \bigskipamount
+\newskip\belowdoublecolumnskip \belowdoublecolumnskip = \bigskipamount
+\newdimen\gutter \gutter = 2pc
+\newdimen\doublecolumnhsize
+\newbox\@partialpage \newdimen\singlecolumnhsize \newdimen\singlecolumnvsize
+\newtoks\previousoutput
+\def\doublecolumns{%
+ \doublecolumnhsize = \hsize % If \hsize changed, get the new value.
+ \par % Shouldn't start in horizontal mode.
+ \previousoutput = \expandafter{\the\output}%
+ \advance\doublecolumnhsize by -\gutter
+ \divide\doublecolumnhsize by 2
+ \output = {%
+ \global\setbox\@partialpage =
+ \vbox{\unvbox255\vskip\abovedoublecolumnskip}%
+ }%
+ \pagegoal = \pagetotal
+ \break % Now expand the \output just above.
+ \output = {\doublecolumnoutput}%
+ \singlecolumnhsize = \hsize
+ \singlecolumnvsize = \vsize
+ \hsize = \doublecolumnhsize
+ \vsize = 2\vsize
+}%
+\def\@doublecolumnsplit{%
+ \splittopskip = \topskip
+ \splitmaxdepth = \maxdepth
+ \dimen0 = \singlecolumnvsize
+ \advance\dimen0 by -\ht\@partialpage
+ \advance\dimen0 by -\ht\footins
+ \ifvoid\footins\else \advance\dimen0 by -\skip\footins \fi
+ \advance\dimen0 by -\ht\topins
+ \ifvoid\topins\else \advance\dimen0 by -\skip\topins \fi
+ \begingroup
+ \vbadness = 10000
+ \global\setbox1 = \vsplit255 to \dimen0
+ \wd1 = \hsize
+ \global\setbox3 = \vsplit255 to \dimen0
+ \wd3 = \hsize
+ \endgroup
+ \global\setbox4 = \vbox{\unvbox255 \penalty\outputpenalty}%
+ \global\setbox255
+ = \vbox{%
+ \unvbox\@partialpage
+ \hbox to \singlecolumnhsize{\box1\hfil\box3}%
+ }%
+}%
+\def\doublecolumnoutput{%
+ \@doublecolumnsplit
+ \hsize = \singlecolumnhsize % Local to the \output group.
+ \vsize = \singlecolumnvsize
+ \the\previousoutput
+ \unvbox4
+}%
+\def\singlecolumn{%
+ \par % Shouldn't start in horizontal mode.
+ \output = {\global\setbox1 = \box255}%
+ \pagegoal = \pagetotal
+ \break % Exercise the page builder, i.e., \output.
+ \setbox255 = \box1 % Retrieve what the fake \output set.
+ \begingroup
+ \singlecolumnvsize = \ht\@partialpage
+ \advance\singlecolumnvsize by \ht\footins
+ \ifvoid\footins\else \advance\singlecolumnvsize by \skip\footins\fi
+ \advance\singlecolumnvsize by \ht\topins
+ \ifvoid\topins\else \advance\singlecolumnvsize by \skip\topins\fi
+ \dimen0 = \ht255 \divide\dimen0 by 2
+ \advance\singlecolumnvsize by \dimen0
+ \advance\singlecolumnvsize by .5\baselineskip
+ \@doublecolumnsplit
+ \endgroup
+ \hsize = \singlecolumnhsize
+ \vsize = \singlecolumnvsize
+ \output = \expandafter{\the\previousoutput}%
+ \unvbox255
+ \vskip\belowdoublecolumnskip
+ \nointerlineskip
+}%
+\let\wlog = \@plainwlog
+\catcode`@ = \other
+\def\fmtname{eplain}%
+\def\eplain{t}%
+{\edef\plainversion{\fmtversion}%
+ \xdef\fmtversion{1.9: 26 April 1991 (and plain \plainversion)}%
+}%
diff --git a/Master/texmf-doc/doc/english/impatient/errata.future b/Master/texmf-doc/doc/english/impatient/errata.future
new file mode 100644
index 00000000000..9751dfebc34
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/errata.future
@@ -0,0 +1,237 @@
+(Ideas for future changes. Did not make these in the free edition since
+I didn't want to change the page breaks because I didn't want to install
+Icon so I could regenerate the index -- aside from lack of time and
+inclination. :)
+
+
+* The default values should probably be in roman everywhere. I don't
+think `6pt plus 1pt minus 2pt' looks bad in roman any more, which was
+the original impetus for printing them in typewriter, as I recall.
+It is pretty random right now. (Numbers are usually printed in roman,
+for example.)
+
+* The index might look better printed without the commas after the term.
+Also, there should be some way to indicate usages of control sequences,
+as opposed to explanations. We could do what Knuth did, and print the
+entries in another font (typewriter would be appropriate, perhaps). We
+could also just have a subentry `examples' or `using' or something.
+
+* `\langle f' and `l\rangle' are too close. I don't know if the macros
+can be hacked to add more space for just those characters.
+
+* The way (short) lists are punctuated is inconsistent. In (at least)
+four places (pp.3,18,56,265) the items are capitalized and end with
+period. In most others (2,72,74,81,83,234) they are not capitalized and
+have no ending punctuation. And in two (76,238) they are not capitalized
+and end with a period. I realize that the same form is not always
+appropriate, but this is not true very often. Personally, I prefer a
+form like:
+
+\list
+\item item 1,
+\item item 2,
+\item last item.
+\endlist
+
+but whatever.
+
+* In most places where we say `.dvi' we aren't really talking about the
+file extension. `{\sc DVI}' would be more appropriate.
+
+* The Preface, Brief Contents, and Contents chapter opening pages start
+too high and too far to the left. This is probably a consequence of
+\chapter changing and \shortchapter not.
+
+
+(The rest of the changes are by page number.)
+
+1 Section 13 is also designed to be accessed randomly. Also, wouldn't it
+be better to use section names as well as numbers?
+
+7 (first para) local information tells you => local information will
+tell you, since they couldn't have found it yet.
+
+9 (first para) by typing something => by first typing something, since
+they have to do more to input screed.
+(bottom) unclosed left parenthesis => unmatched left parenthesis.
+
+10 The third in the subsection (with ``typeset me'') looks like it has
+extra space in it.
+
+12 (bottom) supposed to produce => supposed to do, because the macro
+might not be supposed to produce anything at all.
+
+16 Say that TeX does its own spacing in formulas. This is probably the
+most crucial fact about doing math in TeX. Index `spacing, in formulas'
+and `formulas, spacing in'.
+(math formulas) can appear in text ... or set off => can appear in
+text ... or can appear set off, for structure.
+enclose a text formula in => enclose a text formula within
+
+17 (last para) The kind of entity TeX is assembling determines the mode
+it's in, it doesn't define it. I tend to think of it in the other
+direction: the mode TeX is in determines the entity TeX is assembling.
+
+21 (last para) It would be clearer to actually define \xmpheader in the
+first example and then use it. As it is, it's not entirely clear which
+commands in the first example go into it.
+(bottom) is defined in plain TeX => is either a primitive or defined
+in plain TeX.
+
+22 You use the en-dash in the place where an em-dash should be in the
+last sentence.
+
+23 (three instances near the top) The comments should have periods at
+the end and be capitalized properly. We are remarkably inconsistent on
+this throughout. In some cases, the comments aren't complete sentences,
+so periods are unnecessary. But sometimes, as here, they are complete
+sentences, so we should have periods. And sometimes they're sentences
+and not capitalized.
+
+24 If we didn't put space between these paragraphs, you would have a
+hard time => If we hadn't ..., you would have had ..., to remove the
+time warp.
+
+25 % The left brace start => % The { starts, to shorten the line.
+(middle) % Skips like this => % Skips like that, because one of the
+skips was just given.
+
+26 fonts won't give you => fonts don't give you
+page 100 and page 97 => pages 97 and 100
+
+32 (bottom) try to use these commands => try to use those commands,
+since the commands are above the comment.
+Also, they can get lists with more levels than one by using the Eplain
+list stuff, instead of programming it themselves, alas.
+
+34 The title might be better as `Using non-Computer Modern fonts' or
+something, since we haven't said what the first source is.
+
+37 (towards the top) => Use \vtop for short multiline entries => Use
+\vtop to get whole paragraphs, since ``multiline entries'' is a pretty
+stupid term (that I wrote).
+(towards the bottom) % without the kern, the `f' and `l' would be too
+close => % Without the kern, the `f' and `l' would be a ligature.
+
+44 (after example input) Put the page reference (p.176) after the
+`\settabs 2 \columns'.
+
+45 (towards the bottom) treats each entry as a group => puts each entry
+into a group, because alignment entries are certainly other things
+besides groups.
+
+46 (top) The \tabskip (p.184) => The \tabskip parameter (p.184), and
+(top) The \noalign (p.183) commands => The \noalign commands (p.183),
+because it reads better; also, we say `the \strut commands (p.167)'
+below.
+(third para) Two consecutive sentences start with ``A vertical
+alignment''. The second one could probably be ``It''.
+
+51 I guess the box picture never got fixed. (The `reference point' moved
+up quite a bit, and the arrow moved up a little. Also, the `baseline'
+could be moved down.)
+
+52 (first two paragraphs): the height/depth of hboxes takes \raise and
+\lower into account, and the width of vboxes takes \moveleft and
+\moveright into account.
+(the list) the box (or rule) => the box or rule, because the rule
+case isn't subordinate or anything. This is in both items.
+
+53 In `cgrok', the `c' is too close to the `grok'. I realize it
+shouldn't be a full space, but right now they're practically touching.
+Italic correction? Explicit space?
+
+54 (first line) It would be nice to say the names of categories 11--13.
+(third para from top) Chars in categories 11 and 12 don't mean
+``produce a box containing this character typeset in the current font''.
+They don't produce a box, for one thing. And they don't typeset ``this
+character'', either. They typeset whatever is in the font at their
+character code. I don't know how you want to explain this, but I think
+this is seriously wrong.
+(example) control sequence `foo$' => control sequence `\foo$'
+
+55 (second para) Same problem with characters vs. character code. The
+input letter `h' is not transformed into the letter `h' typeset in the
+current font. It's transformed into the character at position 104.
+The locution now makes it sound as if TeX somehow searches the font for
+the letter `h'.
+(next para) We should say that the input character's ``code number'' is
+the ``character code''. As it is, we never define the latter (I don't
+think).
+(two more paras) An example showing the 64 less/greater stuff would be
+nice.
+
+56 (under class) is in class 3 => has class 3, because the class is
+really an attribute of a character, not an external set of characters.
+(before class example) Wouldn't ``arbitrarily changed'' be better
+than ``randomly changed''? (Unless you really used a random number
+generator.)
+(first para of command concept): same problem with characters. TeX
+doesn't construct a box containing that character typeset in the current
+font.
+
+57 (under control sequence) with an escape character, usually a
+backslash (\) => with an escape character, which is usually the
+backslash character, since \ isn't always an escape character.
+
+58 (control word) It seems a bit inconsistent to footnote ``letter''
+here, and not in either of the previous two concepts.
+(delimiter) In `... to one of the commands \left, \right, \overwithdelims,
+... (see pp. 201,204)', either the 201 and 204 or the command names
+should be switched, since it's \left and \right that are on 204.
+(next para) fonts you're using have big enough parens => fonts you're
+using can construct big enough parens, because of extensible characters.
+Also, it isn't clear that the delimiters produced by \bigl et al. have
+fixed size.
+
+59 (before the list) The terms l-commands and r-commands need some
+explanation.
+
+60 (first line) `the ``small'' character in the ``small'' font' is
+misleading. We've already said the small char is in the small font. As
+it is, when, a couple sentences below, we say that small character can
+be left undefined, it sounds like the small font can't be left
+undefined.
+(demerits) `cost' should be a concept.
+
+62 (second para) Put a tie between `family' and `1'.
+
+65 (under format file) can be created => is created, because there's no
+other way to make one.
+(last line) two refs to page 228.
+
+66 (example) the shrinks are 1 and 3, whereas the shrinks on the next
+page are 2 and 6. Might as well make them all the same.
+
+69 {\TeX} => \TeX{} (if we must keep this horrible example).
+
+71 The item concept is pretty useless as it is; it would be nice to say
+what the possible items were, and clearly distinguish items from tokens,
+etc.
+
+72 (towards the bottom) insured that the dots => made the dots, because
+we've done something active than ``insure''.
+
+73 (ligature) the '' and , in office'', aren't kerned. You put
+``office'' in an \hbox for some reason.
+
+80 (math mode) Should say that display math gives you space above and
+below the formula.
+
+84 (page) between exercises => between exercisings?
+
+86 (page layout) We don't give the default space between the body of the
+text and the headers or footers.
+
+217 \mathsurround should make an index entry for `formulas, spacing
+around' or something like that.
+
+224 I think `Converting information to tokens' is really a misnomer.
+How about just calling it `Conversions' and making `Environmental
+information' its own section.
+
+263 `Ending the job' should be next to `Initializing TeX'.
+
+294 Have an index entry for `logos'.
+
+298 \unnumberedlist has become \unorderedlist.
diff --git a/Master/texmf-doc/doc/english/impatient/errors.tex b/Master/texmf-doc/doc/english/impatient/errors.tex
new file mode 100644
index 00000000000..f2e59773363
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/errors.tex
@@ -0,0 +1,325 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+% See file fdl.tex for copying conditions.
+
+\input macros
+\chapter{Making sense \linebreak of error messages}
+
+\chapterdef{errors}
+
+\codefuzz = 4pc % for this chapter only (in scope of \chapter)
+\bix^^{error messages}
+Interpreting \TeX's error messages can sometimes
+be like going to your physician
+with a complaint that you're feeling fatigued and being handed,
+in response,
+a breakdown of your blood chemistry. The explanation of your distress
+is probably there, but it's not easy to figure out what it is.
+A few simple rules will go a long way in helping you to understand \TeX's
+error messages and get the most benefit from them.
+
+Your first goal should be
+to understand what you did that caused \TeX\ to complain.
+Your second goal (if you're working interactively)
+should be to catch as many errors as you can in a single run.
+
+Let's look at an example. Suppose that your input
+contains the line:
+\csdisplay
+We skip \quid a little bit.
+|
+You meant to type `|\quad|', but you typed `|\quid|' instead.
+Here's what you'll get from \TeX\ in response:
+\csdisplay
+!! Undefined control sequence.
+l.291 We skip \quid
+ a little bit.
+?
+|
+This message will appear both at your terminal and in your log file.
+^^{log file//error messages}
+The first line, which always starts with an exclamation point (|!!|),
+tells you what the problem is. The last two lines before the `|?|' prompt
+(which in this case are also
+the next two lines) tell you how far \TeX\ has gotten
+when it found the error.
+It found the error on line $291$ of the current input file,
+and the break between the two message lines indicates
+\TeX's precise position within line $291$, namely, just after |\quid|.
+The current input file is the one just after the most recent unclosed
+left parenthesis in the terminal output of your run (see \xref{infiles}).
+
+This particular error, an undefined control
+sequence, is one of the most common ones you can get.
+If you respond to the prompt with another~`|?|',
+\TeX\ will display the following message:
+{\hfuzz = 2in
+\csdisplay
+Type <return> to proceed, S to scroll future error messages,
+R to run without stopping, Q to run quietly,
+I to insert something, E to edit your file,
+1 or ... or 9 to ignore the next 1 to 9 tokens of input,
+H for help, X to quit.
+|
+}%
+Here's what these alternatives mean:
+\ulist
+\li If you type \asciichar{return},
+\TeX\ will continue processing your document.
+In this case it will just ignore the |\quid|.
+\li If you type `|S|' (or `|s|'---uppercase and lowercase are equivalent
+here), \TeX\ will process your document without stopping \emph{except}
+if it encounters a missing file. Error messages will still appear at your
+terminal and in the log file.
+\li If you type `|R|' or `|r|',
+you'll get the same effect as `|S|' except that
+\TeX\ won't even stop for missing files.
+\li If you type `|Q|' or `|q|',
+\TeX\ will continue processing your document but
+will neither stop for errors nor display them at your terminal. The
+errors will still show up in the log file.
+\li If you type `|X|' or `|x|',
+\TeX\ will clean up as best it can, discard the page
+it's working on, and quit. You can still print or view the
+pages that \TeX\ has already processed.
+\li If you type `|E|' or `|e|', \TeX\ will clean up and terminate
+as it would for `|X|' or `|x|' and then enter your text editor,
+positioning you at the erroneous line.
+(Not all systems support this option.)
+\li If you type `|H|' or `|h|',
+you'll get a further explanation of the error displayed
+at your terminal and
+possibly some advice about what to do about it. This explanation will also
+appear in your log file. For the undefined control sequence above,
+you'll get:
+{\hfuzz = 2in
+\csdisplay
+The control sequence at the end of the top line
+of your error message was never \def'ed. If you have
+misspelled it (e.g., `\hobx'), type `I' and the correct
+spelling (e.g., `I\hbox'). Otherwise just continue,
+and I'll forget about whatever was undefined.
+|
+}
+\li If you type `|?|', you'll get this same message again.
+\endulist
+\noindent
+The other two alternatives, typing `|I|' or a small integer, provide ways of
+getting \TeX\ back on the track so that your error won't cause further errors
+later in your document:
+\ulist
+\li If you type `|I|' or `|i|'
+followed by some text, then \TeX\ will insert
+that text as though it had occurred just after the point of the error,
+at the innermost level where \TeX\ is working.
+In the case of the example above, that means at \TeX's
+position in your original input, namely, just after `|\quid|'.
+Later you'll see an example that shows
+the difference between inserting something at the innermost level and
+inserting it into your original input. In the example above of the undefined
+control sequence, if you type:
+\csdisplay
+I\quad
+|
+\TeX\ will carry out the |\quad| command and produce a quad space
+where you intended to have one.
+\li If you type a positive integer less than $100$ (not less than $10$ as the
+message misleadingly suggests),
+\TeX\ will delete that number of tokens from the innermost
+level where it is working.
+(If you type an integer greater than or equal to $100$, \TeX\ will
+delete $10$ tokens!)
+\endulist
+
+Here's an example of another common error:
+\csdisplay
+Skip across \hskip 3cn by 3 centimeters.
+|
+The error message for this is:
+\csdisplay
+!! Illegal unit of measure (pt inserted).
+<to be read again>
+ c
+<to be read again>
+ n
+l.340 Skip across \hskip 3cn
+ by 3 centimeters.
+|
+^^|<to be read again>|
+In this case \TeX\ has observed that `|3|' is followed by something that
+isn't a proper unit of measure, and so it's assumed the unit of measure to be
+points. \TeX\ will read the tokens of `|cn|' again and insert them into
+your input, which is not what you want. In this case you can get a better
+result by first typing `|2|' to bypass the `|cn|'.
+You'll get the message:
+\csdisplay
+<recently read> n
+
+l.340 Skip across \hskip 3cn
+ by 3 centimeters.
+|
+
+Now you can type
+`|I\hskip 3cm|' to get the skip you wanted (in addition to the |3pt| skip
+that you've already gotten).\footnote
+{By typing `|I\unskip\hskip 3cm|' you can get rid of the |3pt| skip.}
+
+If you type something that's only valid in math mode, \TeX\ will switch over
+to math mode for you whether or not that's what you really wanted.
+For example:
+\csdisplay
+So \spadesuit s are trumps.
+|
+Here's \TeX's error message:
+\csdisplay
+!! Missing $ inserted.
+<inserted text>
+ $
+<to be read again>
+ \spadesuit
+l.330 So \spadesuit
+ s are trumps.
+|
+Since the |\spadesuit| symbol is only allowed in math mode,
+\TeX\ has inserted a `|$|' in front of it.
+After \TeX\ inserts a token, it's positioned in \emph{front} of
+that token, in this case the `|$|', ready to read it.
+Typing `|2|' will cause \TeX\ to skip both the `|$|'
+and the `|\spadesuit|' tokens, leaving it ready to process the `|s|'
+in `|s are trumps.|'.
+(If you just let \TeX\ continue, it will typeset `|s are trumps|'
+in math mode.)
+
+Here's an example where \TeX's error diagnostic is downright wrong:
+\csdisplay
+\hbox{One \vskip 1in two.}
+|
+The error message is:
+\csdisplay
+!! Missing } inserted.
+<inserted text>
+ }
+<to be read again>
+ \vskip
+l.29 \hbox{One \vskip
+ 1in two.}
+|
+^^|<inserted text>|
+The problem is that you can't use |\vskip| when \TeX\ is in
+restricted horizontal mode, i.e, constructing an hbox.
+But instead of rejecting the |\vskip|, \TeX\ has inserted a right brace
+in front of it in an attempt to close out the hbox.
+If you accept \TeX's correction, \TeX\ will complain again
+when it gets to the correct right brace later on. It will also complain
+about anything before that right brace that isn't allowed in vertical mode.
+These additional complaints will be particularly confusing
+because the errors they indicate are bogus, a
+result of the propagated effects of the inappropriate
+insertion of the right brace.
+Your best bet is to type `|5|', skipping past all the tokens
+in `|}\vskip 1in|'.
+
+Here's a similar example in which the error message is longer
+than any we've seen so far:
+\csdisplay
+\leftline{Skip \smallskip a little further.} But no more.
+|
+The mistake here is that |\smallskip| only works in a vertical mode.
+The error message is something like:
+\csdisplay
+!! Missing } inserted.
+<inserted text>
+ }
+<to be read again>
+ \vskip
+\smallskip ->\vskip
+ \smallskipamount
+<argument> Skip \smallskip
+ a little further.
+\leftline #1->\line {#1
+ \hss }
+l.93 ...Skip \smallskip a little further.}
+ But no more.
+|
+The error messages here give you a tour through the macros that are used in
+\plainTeX's implementation of |\leftline|---macros
+that you probably don't care about.
+The first line tells you that \TeX\ intends to cure the problem by
+inserting a right brace.
+\TeX\ hasn't actually read the
+right brace yet, so you can delete it if you choose to.
+Each component of the message after the first line
+(the one with the `!') occupies a pair of lines.
+Here's what the successive pairs of lines mean:
+\olist
+\li The first pair indicates that \TeX\ has inserted, but not yet read,
+a right brace.
+\li The next pair indicates that after reading the right brace, \TeX\ will
+again read a `|\vskip|' command (gotten from the macro definition
+of |\smallskip|).
+\li The third pair indicates that \TeX\ was expanding the |\smallskip|
+macro when it found the error. The pair also displays the definition of
+|\smallskip| and indicates how far \TeX\ has gotten in expanding and
+executing that definition. Specifically, it's just attempted
+unsuccessfully to execute the |\vskip| command. In general, a
+diagnostic line that starts with a control sequence followed by `|->|'
+indicates that \TeX\ has been expanding and executing a macro by that
+name.
+\li The fourth pair indicates that \TeX\ was processing a macro argument
+when it found the |\smallskip| and also indicates \TeX's position in that
+argument, i.e., it's just processed the |\smallskip| (unsuccessfully).
+By looking ahead to the next pair of lines
+we can see that the argument was passed to
+|\leftline|.
+\li The fifth pair indicates that \TeX\ was expanding
+the |\leftline|
+macro when it found the error.
+(In this example the error occurred while \TeX\ was
+in the middle of interpreting several
+macro definitions at different levels of expansion.)
+Its position after |#1| indicates that the last thing it saw was the
+first (and in this case the only) argument to |\leftline|.
+\li The last pair indicates where \TeX\ is positioned in your input file.
+Note that this position is well beyond the position where it's
+inserting the right brace and reading `|\vskip|' again.
+That's because \TeX\ has already read the entire argument to |\leftline|
+from your input file, even though it's only processed part of that argument.
+The dots at the beginning of the pair indicate a preceding part of the
+input line that isn't shown. This preceding part, in fact, includes
+the |\leftline| control sequence that made the |\vskip| illegal.
+\endolist
+\noindent
+In a long message like this, you'll generally find only the first line and the
+last pair of lines to be useful; but it sometimes helps to know what the other
+lines are about. Any text that you insert or delete will be
+inserted or deleted at the
+innermost level. In this example the insertion or deletion would occur
+just before the
+inserted right brace.
+Note in particular that in this case \TeX\ puts any text you might insert
+\emph{not} into your input text but into a macro definition
+several levels down. (The original macro definition is of course not modified.)
+
+You can use the ^|\errorcontextlines| command \ctsref{\errorcontextlines}
+to limit the
+number of pairs of error context lines that \TeX\ produces.
+If you're not interested in all the information that \TeX\ is giving you,
+you can set |\error!-contextlines| to $0$. That will give you just the first
+and last pairs of lines.
+
+Finally,
+we'll mention two other indicators that can appear at the start of a pair
+of error message lines:
+\ulist
+\li ^|<output>| indicates that \TeX\ was in the middle of its output routine
+when this error occurred.
+\li ^|<write>| indicates that \TeX\ was in the middle of executing a
+|\write| command when this error occurred.
+\TeX\ will detect such an error when it is actually doing the |\write|
+(during a |\shipout|), rather than when it first encounters the |\write|.
+\endulist
+
+
+\eix^^{error messages}
+\endchapter
+\byebye
diff --git a/Master/texmf-doc/doc/english/impatient/examples.tex b/Master/texmf-doc/doc/english/impatient/examples.tex
new file mode 100644
index 00000000000..1b244362d61
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/examples.tex
@@ -0,0 +1,56 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+% See file fdl.tex for copying conditions.
+
+\input macros
+\chapter{Examples}
+
+\chapterdef{examples}
+
+This section of the book contains a set of examples
+to help get you started and to show you how to do various things with \TeX.
+Each example has \TeX\ output on the left-hand page and the \TeX \
+input that led to that output on the right-hand page.
+You can use these examples both as forms to imitate and
+as a way of finding the
+\TeX\ commands that you need in order to achieve a particular effect.
+However, these examples can illustrate only a few of the
+about $900$ \TeX\ commands.
+
+Some of the examples are self-descriptive---that is, they discuss the very
+features of \TeX\ that they are illustrating. These discussions are
+necessarily sketchy because there isn't room in the examples for all the
+information you'd need. The capsule summary of commands
+(\chapterref{capsule})
+and the index will help you
+locate the complete explanation of every \TeX\ feature shown in the
+examples.
+
+Because we've designed the examples to illustrate
+many things at once, some examples contain a great variety of
+typographical effects. These examples generally are \emph{not} good
+models of typographical practice. For instance, Example~8 has some of its
+equation numbers on the left and some on the right. You'd never want to
+do that in a real publication.
+
+\xrdef{xmphead}
+Each example except for the first one starts with a macro (see
+\xref{macro}) named |\xmpheader|. We've used |\xmpheader| in order to
+conserve space in the input, since without it each example would have
+several lines of material you'd already seen.
+|\xmpheader| produces the title of an example and the
+extra space that goes with it. You can see in the first example
+what |\xmpheader| does, so you can imitate it if you wish.
+Except for |\xmpheader|, every command that we use in these examples is
+defined in \plainTeX.
+
+% The first example does the necessary eject here.
+{%
+ \let\bye = \relax % We don't want to obey \bye in the example input.
+ % These switches can't be done by a macro since \bye is outer.
+ \doexamples {xmptext}% Typeset the actual examples.
+}%
+
+
+\endchapter
+\byebye
diff --git a/Master/texmf-doc/doc/english/impatient/fdl.tex b/Master/texmf-doc/doc/english/impatient/fdl.tex
new file mode 100644
index 00000000000..4ae17d2d753
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/fdl.tex
@@ -0,0 +1,463 @@
+% This file is a chapter. It must be included in a larger document to work
+% properly.
+
+\chapter{GNU Free Documentation \linebreak License}
+
+\begingroup
+% pseudo-latex since that's what the original source used.
+\let\label=\eqdefn
+\def\eqprint#1{#1\relax}
+\def\\{\hfil\break}
+\let\ref=\eqref
+
+% we have to have section numbers since we have internal references.
+\def\fdlkludge{\begingroup
+ \count255=\eqnumber \advance\count255 by 1
+ \the\count255.
+\endgroup}
+
+Version 1.2, November 2002
+
+ Copyright \copyright\ 2000,2001,2002 Free Software Foundation, Inc.\\
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\\
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+\section{PREAMBLE}
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document ``free'' in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of ``copyleft'', which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+\section{APPLICABILITY AND DEFINITIONS}
+
+\label{applicability}
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The ``Document'', below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as ``you''. You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A ``Modified Version'' of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A ``Secondary Section'' is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject. (Thus, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The ``Invariant Sections'' are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The ``Cover Texts'' are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A ``Transparent'' copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not ``Transparent'' is called ``Opaque''.
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, \LaTeX\ input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification. Examples of
+transparent image formats include PNG, XCF and JPG. Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The ``Title Page'' means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, ``Title Page'' means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+A section ``Entitled XYZ'' means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as ``Acknowledgements'',
+``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title''
+of such a section when you modify the Document means that it remains a
+section ``Entitled XYZ'' according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+
+\section{VERBATIM COPYING}
+
+\label{verbatim}
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in
+section~\ref{copying}.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+\section{COPYING IN QUANTITY}
+
+\label{copying}
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+
+\section{MODIFICATIONS}
+
+\label{modifications}
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections~\ref{verbatim} and \ref{copying} above,
+provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+%\begin{enumerate}
+\smallskip
+\itemletter = `A
+\def\item{\vskip\interitemskip \char\itemletter. \advance\itemletter by 1}
+\item Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+\item List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has fewer than five),
+ unless they release you from this requirement.
+\item State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+\item Preserve all the copyright notices of the Document.
+\item Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+\item Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+\item Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+\item Include an unaltered copy of this License.
+\item Preserve the section Entitled ``History'', Preserve its Title, and add
+ to it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section Entitled ``History'' in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+\item Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the ``History'' section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+\item For any section Entitled ``Acknowledgements'' or ``Dedications'',
+ Preserve the Title of the section, and preserve in the section all
+ the substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+\item Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+\item Delete any section Entitled ``Endorsements''. Such a section
+ may not be included in the Modified Version.
+\item Do not retitle any existing section to be Entitled ``Endorsements''
+ or to conflict in title with any Invariant Section.
+\item Preserve any Warranty Disclaimers.
+
+\smallskip
+%\end{enumerate}
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled ``Endorsements'', provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+\section{COMBINING DOCUMENTS}
+
+\label{combining}
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section~\ref{modifications}
+above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled ``History''
+in the various original documents, forming one section Entitled
+``History''; likewise combine any sections Entitled ``Acknowledgements'',
+and any sections Entitled ``Dedications''. You must delete all sections
+Entitled ``Endorsements''.
+
+
+\section{COLLECTIONS OF DOCUMENTS}
+
+\label{collections}
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+
+\section{AGGREGATION WITH INDEPENDENT WORKS}
+
+\label{aggregation}
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an ``aggregate'' if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section~\ref{copying} is applicable to
+these copies of the Document, then if the Document is less than one half
+of the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+\section{TRANSLATION}
+
+\label{translation}
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of
+section~\ref{modifications}.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled ``Acknowledgements'',
+``Dedications'', or ``History'', the requirement
+(section~\ref{modifications}) to Preserve
+its Title (section~\ref{applicability}) will typically require
+changing the actual title.
+
+
+\section{TERMINATION}
+
+\label{termination}
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+
+\section{FUTURE REVISIONS OF THIS LICENSE}
+
+\label{future}
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License ``or any later version'' applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+
+% this section title is so long, it messes up everything.
+% don't put it in the headline and don't write it to the toc
+\let\markinfo=\gobble
+\let\writetocentry=\gobbletwo
+\section{\vtop{\noindent ADDENDUM: How to use this License
+ \\for your documents\hfil}}
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+%\begin{quote}
+\smallskip
+{\narrower\obeylines\eightrm\baselineskip=10pt
+ Copyright \copyright\ YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+\par}
+%\end{quote}
+\smallskip
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the ``with...Texts.'' line with this:
+
+\smallskip
+{\narrower\obeylines\eightrm\baselineskip=10pt
+ with the Invariant Sections being LIST THEIR TITLES, with the
+ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+\par}
+\smallskip
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+
+\endgroup
+
+\endchapter\byebye
diff --git a/Master/texmf-doc/doc/english/impatient/fonts.tex b/Master/texmf-doc/doc/english/impatient/fonts.tex
new file mode 100644
index 00000000000..ad10cf4e455
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/fonts.tex
@@ -0,0 +1,241 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+% See file fdl.tex for copying conditions.
+
+% Fonts for TeX for the Impatient.
+
+% This file is being distributed with the macros because the macro file
+% refers to it. We used a combination of Bitstream and standard TeX
+% fonts for the original printed book, but for the free edition, we
+% stick to Computer Modern.
+% -----------------------------------------------------------------------
+%
+% We used Computer Modern for the main text and math, and Zapf Humanist
+% (i.e., Optima) for heads. (bs00015 is Optima Roman, 16 italic, 17
+% bold, 18 bold italic.)
+%
+% First we define all of the fonts we use for any purpose, in terms of the
+% font files. Later we define fonts functionally, using \let or \def.
+
+% Computer Modern fonts.
+%
+\font\fiverm = cmr5
+\font\eightrm = cmr8
+\font\ninerm = cmr9 % Glue pictures, small caps for ASCII.
+%\font\tenrm = xcmr10 % with our kerning
+\font\tenrm = cmr10 % don't have the xcmr10 source any more
+\font\oldtenrm = cmr10 % straight CM
+\font\twelverm = cmr12
+\font\twentysixrm = cmr10 at 26pt
+%
+\font\eightit = cmti8
+\font\nineit = cmti9
+\font\tenit = cmti10
+%
+\font\eighttt = cmtt8
+\font\eleventt = cmtt10 at 11pt
+\font\twelvett = cmtt10 scaled \magstep2
+%
+\font\tenbt = cmtt10
+%
+\font\elevensf = cmss10 scaled\magstephalf
+\font\fourteensf = cmss10 scaled\magstep2
+%
+\font\eightbf = cmbx8
+\font\tenbf = cmbx10
+\font\elevenbf = cmbx10 scaled \magstephalf
+\font\twelvebf = cmbx12
+\font\thirtysixbf = cmbx10 at 36pt
+%
+\font\tenbi = cmbxti10
+\font\elevenbi= cmbxti10 scaled \magstephalf
+\font\fourteenbi= cmbxti10 scaled \magstep2
+%
+\font\tensc = cmcsc10
+\font\eightsl = cmsl8
+\font\eighti = cmmi8
+\font\eightsy = cmsy8
+
+% % Optima fonts.
+% %
+% \font\eightopt = bs0015 at 8pt
+% \font\nineopt = bs0015 at 9pt
+% \font\twelveopt = bs0015 at 12pt
+% \font\twentysixopt = bs0015 at 26pt
+% \font\nineoptit = bs0016 at 9pt
+% \font\tenoptit = bs0016 at 10pt
+% \font\tenoptbf = bs0017 at 10pt
+% \font\thirtysixoptbf = bs0017 at 36pt
+% \font\tenbt = bs00175 at 10pt
+% \font\tenoptbi = bs0018 at 10pt
+% \font\elevenoptbi = bs0018 at 11pt
+% \font\fourteenoptbi = bs0018 at 14pt
+
+% Palatino fonts.
+%
+\font\tenpal = pplr
+%\font\tenpal = bs0023
+%\font\tenpalit = bs0024
+%\font\tenpalbf = bs0025
+%\font\tenpalbi = bs0026
+
+% Logo and picture fonts.
+%
+\font\eightlogo = logo8
+\font\logosl = logosl10
+\font\handfont = pzdr
+
+% The following changes are to avoid driver overflow
+\ifmsdos
+ \font\cnum = cnum % 36-pt bold Optima, numbers only (just for MS-DOS)
+ \let\chapternumeralfont = \cnum
+ %\let\thirtysixoptbf = \twentysixopt
+ %\font\sevensy = cmsy8
+ %\font\seveni = cmmi8
+\fi
+
+\def\undefinedfont{\errmessage{Undefined font}}
+
+% This should only be called when \rm et al. are going to be defined
+% directly.
+%
+\def\clearfonts{\let\rm = \undefinedfont \let\bf = \undefinedfont
+ \let\it = \undefinedfont \let\bi = \undefinedfont
+ \let\tt = \undefinedfont \let\bt = \undefinedfont
+ \let\sc = \undefinedfont
+ \let\ss = \undefinedfont
+}
+
+% We only need to assign to \fam if the font is going to be used in math
+% mode, which isn't the case with any of these. \rm, \it, \sl, \bf, and
+% \tt are defined in plain.
+%
+\def\bi{\tenbi}
+
+\def\mapquotes{\catcode`` = \active \catcode`' = \active}
+{\mapquotes
+ \gdef\bt{% The font change also draws \ ` ' from a different font.
+ \tenbt
+ \def\\{{\tentt \char92}}%
+ \def`{{\tentt \char96}}\def'{{\tentt \char39}}%
+ }
+}
+
+\def\bti{\tenbi}
+\def\sc{\tensc}
+
+% Text fonts.
+%
+\def\textfonts{%
+ \def\rm{\fam0\tenrm}%
+ \textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm
+ \textfont1=\teni \scriptfont1=\seveni \scriptscriptfont1=\fivei
+ \textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy
+ \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
+ \def\it{\fam\itfam\tenit}\textfont\itfam=\tenit
+ \def\sl{\fam\slfam\tensl}\textfont\slfam=\tensl
+ \def\bf{\fam\bffam\tenbf}\textfont\bffam=\tenbf
+ \scriptfont\bffam=\sevenbf \scriptscriptfont\bffam=\fivebf
+ \def\tt{\fam\ttfam\tentt}\textfont\ttfam=\tentt
+ \let\sc = \tensc
+ \setbox\strutbox=\hbox{\vrule height8.5pt depth3.5pt width\z@}%
+ \normalbaselineskip=12pt
+ \normalbaselines \rm
+}
+
+
+% Footnote fonts. We generally use eight point.
+%
+\def\footnotefonts{%
+ \def\rm{\fam0\eightrm}%
+ \textfont0=\eightrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm
+ \textfont1=\eighti \scriptfont1=\seveni \scriptscriptfont1=\fivei
+ \textfont2=\eightsy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy
+ \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
+ \def\it{\fam\itfam\eightit}\textfont\itfam=\eightit
+ \def\sl{\fam\slfam\eightsl}\textfont\slfam=\eightsl
+ \def\bf{\fam\bffam\eightbf}\textfont\bffam=\eightbf
+ \scriptfont\bffam=\sevenbf \scriptscriptfont\bffam=\fivebf
+ \def\tt{\fam\ttfam\eighttt}\textfont\ttfam=\eighttt
+ \let\sc = \eightsc
+ \setbox\strutbox=\hbox{\vrule height7pt depth2pt width\z@}%
+ \normalbaselineskip=9pt
+ \normalbaselines \rm
+}
+
+% Fonts for the example titles. They are defined in the first example,
+% also.
+%
+
+\def\exampletitlefonts{\clearfonts
+ \let\bf = \elevenbf
+ \let\bi = \elevenbi
+ \baselineskip = 13pt \bf
+}
+
+% Fonts for the subsection titles.
+%
+\def\subsectionfonts{\clearfonts \let\sf = \elevensf
+ \baselineskip = 12pt \sf
+}
+
+
+% Fonts for the section titles.
+%
+\def\sectionfonts{\clearfonts \let\sf = \fourteensf
+ \baselineskip = 16pt \sf
+}
+
+% Fonts for the chapter titles.
+%
+\let\chapternumeralfont = \thirtysixbf
+
+\def\chapterfonts{\clearfonts \let\bf = \twentysixrm
+ \baselineskip = 32pt \bf
+}
+
+% Fonts for the table of contents.
+%
+\def\shorttocfonts{\clearfonts \let\rm = \twelverm
+ \baselineskip = 20pt \rm
+}
+
+\def\tocfonts{\clearfonts \let\rm = \ninerm
+ \let\it = \tenit \let\bf = \tenbf
+ \baselineskip = 12pt \rm
+}
+
+% Fonts for the index.
+%
+
+\def\indexfonts{\clearfonts
+ \let\rm = \eightrm
+ \let\it = \eightit
+ \let\tt = \eighttt
+ \let\sc = \tensc
+ \let\sl = \eightsl
+ \textfont2 = \eightsy % For \AMSTeX.
+ \let\mflogo = \eightlogo % For \Metafont.
+ \normalbaselineskip = 10pt \normallineskip = 1.5pt \normalbaselines
+ \setbox\strutbox=\hbox{\vrule height 7.5pt depth2.5pt width0pt}%
+ \rm
+}
+
+% Fonts for the inside back cover.
+%
+\def\conceptpagefonts{\clearfonts
+ \let\rm = \ninerm
+ \let\sc = \eightrm
+ \let\sl = \nineit
+ \baselineskip = 12pt
+ \rm
+}
+
+% We don't want any automatic hyphenation within the code font
+
+\hyphenchar\tentt = -1
+\hyphenchar\eighttt = -1
+
+
+
+\textfonts
diff --git a/Master/texmf-doc/doc/english/impatient/frontm.tex b/Master/texmf-doc/doc/english/impatient/frontm.tex
new file mode 100644
index 00000000000..40a0189f5b5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/frontm.tex
@@ -0,0 +1,82 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+% See file fdl.tex for copying conditions.
+%
+% Front matter.
+
+\input macros
+
+
+% Frontmatter is numbered i, ii, ...
+\pageno = -1
+
+
+% Bastard title.
+%
+% \sinkage
+\leftline{\chapterfonts \TeX\ for the Impatient}
+
+\noheadlinetrue\pagebreak
+
+
+% Title spread.
+%
+%(title page, lhs)
+%\noheadlinetrue\pagebreak
+\blankpage
+
+%(title page, rhs)
+%\noheadlinetrue\pagebreak
+\blankpage
+
+
+{\input copyrght }
+\noheadlinetrue
+
+
+% Dedication.
+%
+\sinkage
+{\it \flushright
+ For Jodi.
+ ---{\sc p.w.a.}
+
+ In memory of my father,
+ who had faith in me.
+ ---{\sc k.a.h.}
+
+ For Dan.
+ ---{\sc k.b.}
+}
+\pagebreak
+
+% From here on, the convention is that every frontchapter does its own
+% ending pagebreak and encloses its fonts in a group if necessary.
+
+% The preface should start on a right-hand page.
+
+\blankpage
+{\input preface }
+
+% Contents.
+%
+% We never want to empty the file after doing the brief contents.
+%
+\rewritetocfilefalse
+%
+\blankpage
+\frontchapter{Brief\linebreak contents}
+
+\shortcontents
+
+
+\ifcompletebook \global\rewritetocfiletrue \fi
+
+\frontchapter{Contents}
+
+\contents
+
+\blankpage
+{\input read1st }
+
+\byebye
diff --git a/Master/texmf-doc/doc/english/impatient/genops.tex b/Master/texmf-doc/doc/english/impatient/genops.tex
new file mode 100644
index 00000000000..46bc83a1a88
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/genops.tex
@@ -0,0 +1,2827 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+% See file fdl.tex for copying conditions.
+
+\input macros
+\chapter {Commands for \linebreak general operations}
+
+\chapterdef{general}
+
+This section covers
+\TeX's ^{programming features} and
+everything else that doesn't fit into the categories
+of commands in the previous chapters.
+For an explanation of the conventions used in this section,
+see \headcit{Descriptions of the commands}{cmddesc}.
+
+\begindescriptions
+
+%==========================================================================
+\section {Naming and modifying fonts}
+
+\begindesc
+\bix^^{fonts//naming and modifying}
+\cts font {}
+\aux\cts font {\<control sequence> = \<fontname>}
+\aux\cts font {\<control sequence> = \<fontname> {\bt scaled} \<number>}
+\aux\cts font {\<control sequence> = \<fontname> {\bt at} \<dimen>}
+\explain
+Used alone, the |\font| control sequence designates the current font.
+|\font| isn't a true command when it's used alone,
+since it then can appear only as an argument to another command.
+
+For the other three forms of |\font|,
+\<font\-name> names a set of files that define a font.
+These forms of |\font| are commands. Each of these forms has two effects:
+{\tighten
+\olist
+\li It defines \<control sequence> as a name that selects
+the font \<font\-name>, possibly magnified (see below).
+\li It causes \TeX\ to load the font ^{metrics file}
+(^{\tfmfile}) for \<fontname>.
+\endolist
+}% end tighten
+
+\noindent
+The name of a font file usually indicates its design size.
+For example, |cmr10| indicates Computer Modern roman with a
+design size of $10$ points.
+The design size of a font is recorded in its metrics file.
+
+If neither |scaled| \<number> nor |at| \<dimen>
+is present, the font is used
+at its design size---the size at which it usually looks best.
+Otherwise, a magnified version of the font is loaded:
+\ulist
+\li If |scaled| \<number>
+is present, the font is magnified by a factor of $\hbox{\<number>}/1000$.
+\li If |at| \<dimen> is present, the font is scaled to \<dimen> by magnifying
+it by $\hbox{\<dimen>}/ds$, where $ds$ is the design size of
+\<fontname>.
+\<dimen> and $ds$ are nearly always given in points.
+\endulist
+\noindent
+Magnifications of less than $1$ are possible; they reduce the size.
+
+You usually need to provide a shape file (\xref{shape}) for each
+magnification of a font that you load.
+However, some ^{device drivers} can utilize fonts that are resident
+in a printer. ^^{resident fonts}
+Such fonts don't need shape files.
+
+See \conceptcit{font} and
+\conceptcit{magnification} for further information.
+
+\example
+\font\tentt = cmtt10
+\font\bigttfont = cmtt10 scaled \magstep2
+\font\eleventtfont = cmtt10 at 11pt
+First we use {\tentt regular CM typewriter}.
+Then we use {\eleventtfont eleven-point CM typewriter}.
+Finally we use {\bigttfont big CM typewriter}.
+|
+\produces
+\font\regttfont = cmtt10
+\font\bigttfont = cmtt10 scaled \magstep 2
+\font\eleventtfont = cmtt10 at 11pt
+First we use {\regttfont regular CM typewriter}.
+Then we use {\eleventtfont eleven-point CM typewriter}.
+Finally we use {\bigttfont big CM typewriter}.
+\endexample
+\enddesc
+
+\begindesc
+\cts fontdimen {\<number> \<font>\param{dimen}}
+\explain
+^^{fonts//parameters of}
+These parameters specify various dimensions associated with
+the font named by the control sequence \<font>
+(as distinguished from the \<font\-name> that names the font files).
+Values of these parameters are specified in the metrics
+file for \<font>, but you can
+retrieve or change their values during a \TeX\ run.
+The numbers and meanings of the parameters are:
+\display{\halign{\hfil#\hfil\quad&#\hfil\cr
+\it Number&\it Meaning\cr
+\noalign{\vskip 1\jot}%
+1&slant per point\cr
+2&interword space\cr
+3&interword stretch\cr
+4&interword shrink\cr
+5&x-height (size of |1ex|)\cr
+6&quad width (size of |1em|)\cr
+7&extra space\cr}}
+\noindent
+\TeX\ uses the slant per point for positioning accents.
+It uses the interword parameters for producing interword spaces
+(see |\spaceskip|, \xref\spaceskip) and the extra space parameter
+for the additional space after a period (see |\xspaceskip|,
+\xref\xspaceskip).
+The values of these parameters for the
+\plainTeX\ fonts are enumerated on \knuth{page~433}.
+Math symbol fonts have $15$ additional parameters, which we won't discuss here.
+
+Beware:
+assignments to these parameters are \emph{not} undone at the end
+of a group.
+If you want to change these parameters locally, you'll need to
+save and restore their original settings explicitly.
+\example
+Here's a line printed normally.\par
+\fontdimen2\font = 3\fontdimen2\font
+% Triple the interword spacing.
+\noindent Here's a really spaced-out line.
+|
+\produces
+Here's a line printed normally.\par
+\dimen0 = \fontdimen2\font % to undo global assignment
+\fontdimen2\font = 3\fontdimen2\font
+% triple the interword spacing
+\noindent Here's a really spaced-out line.
+\fontdimen2\font = \dimen0
+\endexample
+\enddesc
+
+\begindesc
+\cts magnification {{\bt =} \<number>}
+\cts mag {\param{number}}
+\explain
+\margin{{\tt\\mag} and {\tt\\magnification} combined.}
+An assignment to |\magnification| establishes
+the ``^{scale factor}'' $f$ that determines
+the \minref{magnification} ratio of your document \seeconcept{magnification}.
+The assignment to |\magni!-fication| must occur before the first page
+of your document has been shipped out.
+
+The assignment sets $f$ to \<number> and also
+sets |\hsize| and |\vsize|
+^^|\hsize//set by {\tt\\magnification}|
+^^|\vsize//set by {\tt\\magnification}|
+respectively to |6.5true in| and |8.9true in|,
+the values appropriate for an $8 \frac1/2$-%
+by-$11$-inch page.
+$f$ must be between $0$ and $32768$.
+The \minref{magnification} ratio of the
+document is $f/1000$.
+A scale factor
+of $1000$ provides unit magnification, i.e., it leaves the size of your
+document
+unchanged. It's customary to use powers of $1.2$ as scale factors, and
+most libraries of fonts are based on such factors. You can use the
+^|\magstep| and ^|\magstephalf| commands to specify magnifications by
+these factors.
+
+|\magnification| is not a parameter. You can't use it
+to \emph{retrieve} the scale factor. If you write something like
+|\dimen0 = \mag!-nifi!-cation|, \TeX\ will complain about it.
+
+The |\mag| parameter contains the scale factor.
+Changing the value of |\mag| rescales the page dimensions, which is not
+usually what you want.
+Therefore it's usually better to change the magnification by
+assigning to |\magnification| rather than to |\mag|.
+
+\example
+\magnification = \magstep2
+% magnify fonts by 1.44 (=1.2x1.2)
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts magstep {\<number>}
+\explain
+This command expands to the \minref{magnification} ratio needed to
+magnify everything in your document
+(other than |true| dimensions)
+by $1.2^r$, where $r$ is
+the value of \<number>. \<number> must be between $0$ and $5$.
+\example
+\magnification = \magstep1 % Magnify by ratio of 1.2.
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts magstephalf {}
+\explain
+This command expands to the \minref{magnification} ratio needed to
+magnify everything in your document
+(other than |true| dimensions)
+by $\sqrt{1.2}$,
+i.e., halfway between $1$ and $1.2$.
+\example
+\magnification = \magstephalf
+|
+\endexample
+\eix^^{fonts//naming and modifying}
+\enddesc
+
+%==========================================================================
+\section {Converting information to tokens}
+
+\subsection {Numbers}
+
+\begindesc
+\xrdef{convert}
+\bix^^{numbers//converting to characters}
+%
+\cts number {\<number>}
+\explain
+This command produces the representation of a \minref{number}
+as a sequence of
+character \minref{token}s. The number can be either an explicit integer,
+a \<number> parameter, or a \<number> register.
+\example
+\number 24 \quad \count13 = -10000 \number\count13
+|
+\produces
+\number 24 \quad \count13 = -10000 \number\count13
+\endexample
+\enddesc
+
+\begindesc
+^^{Roman numerals}
+\easy\cts romannumeral {\<number>}
+\explain
+This command produces the roman numeral representation of a \minref{number}
+as a sequence of
+character \minref{token}s. The number can be either an explicit integer,
+a \<number> parameter, or a \<number> register.
+If the number is zero or negative, |\romannumeral| produces
+no tokens.
+\example
+\romannumeral 24 \quad (\romannumeral -16)\quad
+\count13 = 6000 \romannumeral\count13
+|
+\produces
+\romannumeral 24 \quad (\romannumeral -16)\quad
+\count13 = 6000 \romannumeral\count13
+\endexample
+
+\eix^^{numbers//converting to characters}
+\enddesc
+
+%==========================================================================
+\subsection {Environmental information}
+
+\begindesc
+^^{time of day}
+\cts time {\param{number}}
+\explain
+\TeX\ sets this parameter to the
+number of minutes that have elapsed since midnight (of the current day).
+At noon, for instance, |\time| is $720$.
+This command and the next three make use of the time and date as
+recorded in your computer.
+\TeX\ retrieves them just once, at the beginning of your run, so |\time|
+at the end of the run always has the same value as |\time| at the
+beginning of the run (unless you've explicitly changed it).
+\enddesc
+
+\bix^^{date}
+\begindesc
+\cts day {\param{number}}
+\explain
+\TeX\ sets this parameter to the current day of the month. It is
+a number between $1$ and $31$.
+|\day| is set at the beginning of your run (see the comments on
+|\time| above).
+\enddesc
+
+\begindesc
+\cts month {\param{number}}
+\explain
+\TeX\ sets this parameter to the current month. It is
+a number between $1$ and $12$.
+|\month| is set at the beginning of your run (see the comments on
+|\time| above).
+\enddesc
+
+\begindesc
+\cts year {\param{number}}
+\explain
+\TeX\ sets this parameter to the current year ({\sc A.D.}).
+It is a number such as $1991$.
+|\year| is set at the beginning of your run (see the comments on
+|\time| above).
+
+\eix^^{date}
+\enddesc
+
+\begindesc
+^^{version number}
+\cts fmtname {}
+\cts fmtversion {}
+\explain
+These commands produce the name and version number
+of the \TeX\ format,
+e.g., \minref{\plainTeX} or ^{\LaTeX}, that you're using.
+\example
+This book was produced with the \fmtname\ format,
+version~\fmtversion.
+|
+\produces
+This book was produced with the \fmtname\ format,
+version~\fmtversion.
+\endexample
+\enddesc
+
+\begindesc
+\cts jobname {}
+\explain
+This command produces the base
+name of the file with which \TeX\ was invoked.
+For example, if your main input file is |hatter.tex|,
+|\jobname| will expand to |hatter|.
+|\jobname| is most useful when you're
+creating an auxiliary file to be associated with a document.
+^^{auxiliary files}
+\example
+\newwrite\indexfile \openout\indexfile = \jobname.idx
+% For input file `hatter.tex', open index file `hatter.idx'.
+|
+\endexample\enddesc
+
+%==========================================================================
+\subsection {Values of variables}
+
+\begindesc
+\cts meaning {\<token>}
+\explain
+^^{tokens//showing the meaning of}
+This command produces
+the meaning of \<token>. It is useful for diagnostic output.
+You can use the ^|\the| command (\xref\the) in a similar way
+to get information about the values of \minref{register}s and other
+\TeX\ entities.
+\example
+[{\tt \meaning\eject}] [\meaning\tenrm] [\meaning Y]
+|
+\produces
+[{\tt \meaning\eject}] [\meaning\tenrm] [\meaning Y]
+\endexample\enddesc
+
+\begindesc
+\cts string {\<control sequence>}
+\explain
+^^{control sequences//converting to strings}
+This command produces
+the characters that form the name of \<control sequence>,
+including the \minref{escape character}.
+The escape character is represented by the current value of
+^|\escapechar|.
+^^{escape character//represented by \b\tt\\escapechar\e}
+\TeX\ gives the characters in the list a category code of $12$ (other).
+
+You can perform the reverse operation with
+the ^|\csname| command (\xref \csname),
+which turns a string into a control sequence.
+\example
+the control sequence {\tt \string\bigbreak}
+|
+\produces
+the control sequence {\tt \string\bigbreak}
+\endexample\enddesc
+
+\begindesc
+\cts escapechar {\param{number}}
+\explain
+This parameter specifies the \ascii\ code \minrefs{\ascii} of the
+character that \TeX\ uses to represent the \minref{escape character}
+^^{escape character//represented by \b\tt\\escapechar\e}
+when it's
+converting a control sequence name to a sequence of character tokens.
+This conversion occurs when you use the |\string| command and also when
+\TeX\ is producing diagnostic messages. The default value of the escape
+character is $92$, the {\ascii} character code for a ^{backslash}.
+If |\escapechar| is not in the range $0$--$255$,
+\TeX\ does not include an escape character in the result of the conversion.
+\example
+\escapechar = `!!
+the control sequence {\tt \string\bigbreak}
+|
+\produces
+\escapechar = `!
+the control sequence {\tt \string\bigbreak}
+\endexample
+\enddesc
+
+\begindesc
+\cts fontname {\<font>}
+\explain
+^^{fonts//names of}
+This command produces the filename
+for \<font>. The filename is the \<font\-name> that was used to define
+\<font>.
+\example
+\font\myfive=cmr5 [\fontname\myfive]
+|
+\produces
+\font\myfive=cmr5 [\fontname\myfive]
+\endexample
+\enddesc
+
+
+%==========================================================================
+\section {Grouping}
+
+\begindesc
+\bix^^{groups}
+%
+\cts begingroup {}
+\cts endgroup {}
+\explain
+These two commands begin and end a \minref{group}.
+A |\begingroup| does not match up with a right brace,
+nor an |\endgroup| with a left brace.
+
+\TeX\ treats |\begingroup| and |\endgroup| like any other
+\minref{control sequence} when it's scanning its input. In particular,
+you can define a \minref{macro} that contains a |\begingroup|
+but not an |\endgroup|, and conversely.
+^^{macros//using \b\tt\\begingroup\e\ and \b\tt\\endgroup\e\ in}
+This technique is often useful
+when you're defining paired macros, one of which establishes
+an environment and the other of which terminates that environment.
+You can't, however, use |\begingroup| and |\endgroup| as substitutes for
+braces other than the ones that surround a group.
+\example
+\def\a{One \begingroup \it two }
+\def\enda{\endgroup four}
+\a three \enda
+|
+\produces
+\def\a{One \begingroup \it two }
+\def\enda{\endgroup four}
+\a three \enda
+\endexample
+\enddesc
+
+\begindesc
+\makecolumns 4/2:
+\easy%
+\ctsact { \xrdef{@lbrace}
+\cts bgroup {}
+\ctsact } \xrdef{@rbrace}
+\cts egroup {}
+\explain
+The left and right braces are commands that begin and end a
+\minref{group}.
+The |\bgroup| and |\egroup| \minref{control sequence}s are equivalent
+to `|{|' and `|}|', except that
+\TeX\ treats |\bgroup| and |\egroup| like any other
+\minref{control sequence} when it's scanning its input.
+
+|\bgroup| and |\egroup| can be useful when you're
+defining paired macros, one of which
+starts a brace-delimited construct (not necessarily a group)
+and the other one of which ends that construct.
+^^{macros//using \b\tt\\bgroup\e\ and \b\tt\\egroup\e\ in}
+You can't define such macros using ordinary braces---if you try,
+your macro definitions will contain unmatched braces
+and will therefore be unacceptable to \TeX.
+Usually you should use these commands only when you can't use
+ordinary braces.
+
+\example
+Braces define the {\it boundaries\/} of a group.
+|
+\produces
+Braces define the {\it boundaries\/} of a group.
+\nextexample
+\def\a{One \vbox\bgroup}
+% You couldn't use { instead of \bgroup here because
+% TeX would not recognize the end of the macro
+\def\enda#1{{#1\egroup} two}
+% This one is a little tricky, since the \egroup actually
+% matches a left brace and the following right brace
+% matches the \bgroup. But it works!!
+\a \enda{\hrule width 1in}
+|
+\produces
+\def\a{One \vbox\bgroup}
+% You couldn't use { instead of \bgroup here because
+% TeX would not recognize the end of the macro
+\def\enda#1{{#1\egroup} two}
+% This one is a little tricky, since the \egroup actually
+% matches a left brace and the following right brace
+% matches the \bgroup. But it works!
+\a \enda{\hrule width 1in}
+\endexample
+\enddesc
+
+\begindesc
+\cts global {}
+\explain
+This command makes the following definition
+or \minref{assignment} \minref{global} \seeconcept{global} so that it
+becomes effective independent of \minref{group} boundaries.
+You can apply a |\global| prefix to any kind of definition
+or \minref{assignment},
+including a \minref{macro} definition or a \minref{register} assignment.
+\example
+{\global\let\la = \leftarrow}
+$a \la b$
+|
+\produces
+% for safety's sake we fake this one!
+\let\la = \leftarrow
+$a \la b$
+\endexample
+\enddesc
+
+\begindesc
+\cts globaldefs {\param{number}}
+\explain
+This parameter controls whether or not \TeX\ takes definitions
+and other assignments to be
+\minref{global}:
+\ulist
+\li If |\globaldefs| is zero (as it is by default), a definition is global
+if and only if it is preceded by |\global| either explicitly or implicitly.
+(The ^|\gdef| and ^|\xdef| commands (\xref\gdef) have an implicit
+|\global| prefix).
+\li If |\globaldefs| is greater than zero, all assignments and
+definitions are implicitly prefixed by ^|\global|.
+\li If |\globaldefs| is less than zero, all ^|\global| prefixes are ignored.
+\endulist
+\enddesc
+
+\begindesc
+\margin{Order of {\tt\\aftergroup} and {\tt\\afterassignment} changed.}
+\cts aftergroup {\<token>}
+\explain
+When \TeX\ encounters this command during input,
+it saves \<token>.
+After the end of the current \minref{group},
+it inserts \<token> back into the input and expands it.
+If a group contains several |\aftergroup|s, the corresponding tokens
+are \emph{all} inserted following the end of the group, in the order
+in which they originally appeared.
+
+The example that follows shows how you can use |\aftergroup| to postpone
+processing a token that you generate within a \minref{conditional test}.
+\example
+\def\neg{negative} \def\pos{positive}
+% These definitions are needed because \aftergroup applies
+% to a single token, not to a sequence of tokens or even
+% to a brace-delimited text.
+\def\arith#1{Is $#1>0$? \begingroup
+ \ifnum #1>-1 Yes\aftergroup\pos
+ \else No\aftergroup\neg\fi
+ , it's \endgroup. }
+\arith 2
+\arith {-1}
+|
+\produces
+\def\neg{negative} \def\pos{positive}
+% These definitions are needed because \aftergroup applies
+% to a single token, not a sequence of tokens or even
+% a group.
+\def\arith#1{Is $#1>0$? \begingroup
+ \ifnum #1>-1 Yes\aftergroup\pos
+ \else No\aftergroup\neg\fi
+ , it's \endgroup. }
+\arith 2
+\arith {-1}
+\endexample
+\eix^^{groups}
+\enddesc
+
+\begindesc
+\cts afterassignment {\<token>}
+\explain
+When \TeX\ encounters this command it saves \<token> in a special
+place. After it next performs an \minref{assignment}, it inserts
+\<token> into the input and expands it. If you call |\afterassignment|
+more than once before an assignment, only the last call has any effect.
+One use of |\afterassignment|
+is in writing \minref{macro}s for commands intended to be written
+in the
+form of assignments, as in the example below.
+
+See \knuth{page~279} for a precise description
+of the behavior of |\afterassignment|.
+\example
+\def\setme{\afterassignment\setmeA\count255}
+\def\setmeA{$\number\count255\advance\count255 by 10
+ +10=\number\count255$}
+Some arithmetic: \setme = 27
+% After expanding \setme, TeX sets \count255 to 27 and
+% then calls \setmeA.
+|
+\produces
+\def\setme{\afterassignment\setmeA\count255}
+\def\setmeA{$\number\count255\advance\count255 by 10
++10=\number\count255$}
+Some arithmetic: \setme = 27
+% After expanding \setme, TeX sets \count255 to 27 and
+% then calls \setmeA.
+\endexample
+\enddesc
+
+
+%==========================================================================
+\section {Macros}
+
+%==========================================================================
+\subsection {Defining macros}
+
+\begindesc
+\bix^^{macros}
+\bix^^{macros//defining}
+\xrdef{mac1}% begin the section on macros
+%
+\cts def {\<control sequence> \<parameter text> \rqbraces{\<replacement text>}}
+\explain
+This command defines \<control sequence> as a \minref{macro} with the
+specified \<parameter text> and \<replacement text>.
+See \xrefpg{macro} for a full explanation of how to write a macro
+definition.
+\example
+\def\add#1+#2=?{#1+#2&=
+ \count255=#1 \advance\count255 by #2 \number\count255\cr}
+$$\eqalign{
+ \add 27+9=?
+ \add -5+-8=?}$$
+|
+\dproduces
+\def\add#1+#2=?{#1+#2&=
+ \count255=#1 \advance\count255 by #2 \number\count255\cr}
+$$\eqalign{
+ \add 27+9=?
+ \add -5+-8=?}$$
+\endexample
+\enddesc
+
+\begindesc
+\cts edef {\<control sequence> \<parameter text> \rqbraces{\<replacement text>}}
+\explain
+This command defines a macro in the same general way as |\def|.
+The difference is that \TeX\ expands the \<replacement text>
+of an |\edef| immediately (but still without executing anything).
+Thus any definitions within the \<replacement text> are expanded, but
+assignments and commands that produce things such as boxes and glue
+are left as is. For example, an |\hbox| command within
+the \<replacement text> of an |\edef| remains as a command and is not
+turned into a box as \TeX\ is processing the definition.
+It isn't always obvious what's expanded and what isn't, but you'll
+find a complete list of expandable control sequences on
+\knuth{pages~212--215}.
+
+You can inhibit the expansion of a control sequence that would otherwise
+be expanded by using |\no!-expand| (\xref\noexpand). ^^|\noexpand|
+You can postpone the expansion of a control sequence by using
+^|\expandafter| (\xref\expandafter).
+
+The |\write|, |\message|, |\errmessage|, |\wlog|, and |\csname|
+commands expand their
+token lists using the same rules that |\edef| uses to expand its
+replacement text.
+^^|\write//expanded by {\tt\\edef} rules|
+^^|\message//expanded by {\tt\\edef} rules|
+^^|\errmessage//expanded by {\tt\\edef} rules|
+^^|\wlog//expanded by {\tt\\edef} rules|
+^^|\csname//expanded by {\tt\\edef} rules|
+\example
+\def\aa{xy} \count255 = 1
+\edef\bb{w\ifnum \count255 > 0\aa\fi z}
+% equivalent to \def\bb{wxyz}
+\def\aa{} \count255 = 0 % leaves \bb unaffected
+\bb
+|
+\produces
+\def\aa{xy} \count255 = 1
+\edef\bb{w\ifnum \count255 > 0\aa\fi z}
+% equivalent to \def\bb{wxyz}
+\def\aa{} \count255 = 0 % leaves \bb unaffected
+\bb
+\endexample
+\enddesc
+
+\begindesc
+\cts gdef {\<control sequence> \<parameter text> \rqbraces{\<replacement text>}}
+\explain
+This command is equivalent to |\global\def|.
+\enddesc
+
+\begindesc
+\cts xdef {\<control sequence> \<parameter text> \rqbraces{\<replacement text>}}
+\explain
+This command is equivalent to |\global\edef|.
+\enddesc
+
+\begindesc
+\cts long {}
+\explain
+This command is used as a prefix to a \minref{macro} definition.
+It tells \TeX\ that the arguments to the macro are permitted to include
+|\par| tokens (\xref{\@par}), which normally indicate the end of a paragraph.
+^^|\par//in macro arguments|
+If \TeX\
+tries to expand a macro defined without |\long| and any of
+the macro's arguments include a |\par| token,
+\TeX\ will complain about a runaway argument. The purpose
+of this behavior is to provide you with some protection against unterminated
+macro arguments.
+|\long| gives you a way of bypassing the protection.
+\example
+\long\def\aa#1{\par\hrule\smallskip#1\par\smallskip\hrule}
+\aa{This is the first line.\par
+This is the second line.}
+% without \long, TeX would complain
+|
+\produces
+\medskip
+\long\def\aa#1{\par\hrule\smallskip#1\par\smallskip\hrule}
+\aa{This is the first line.\par
+This is the second line.}
+% without \long, TeX would complain
+\endexample
+\enddesc
+
+\begindesc
+\cts outer {}
+\explain
+\null ^^{outer}
+This command is used as a prefix to a \minref{macro} definition.
+It tells \TeX\ that the macro is outer (\xref{outer})
+and cannot be used in certain contexts.
+If the macro is used in a forbidden context, \TeX\ will complain.
+
+\example
+\outer\def\chapterhead#1{%
+ \eject\topglue 2in \centerline{\bf #1}\bigskip}
+% Using \chapterhead in a forbidden context causes an
+% error message.
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts chardef {\<control sequence>=\<charcode>}
+\explain
+^^{characters//defined by \b\tt\\chardef\e}
+This command defines \<control sequence>
+to be \<charcode>.
+Although |\chardef| is most often used to define characters, you can also
+use it to give a name to a number in the range $0$--$255$ even when you
+aren't using that number as a character code.
+\example
+\chardef\percent = `\% 21\percent, {\it 19\percent}
+% Get the percent character in roman and in italic
+|
+\produces
+\chardef\percent = `\%
+21\percent, {\it 19\percent}
+% You'll get the percent character in roman and in italic
+\endexample
+\enddesc
+
+\begindesc
+^^{math characters}
+^^{mathcodes}
+\cts mathchardef {\<control sequence>=\<mathcode>}
+\explain
+This command defines \<control sequence> as a math character
+with the given \minrefs{mathcode}\<mathcode>.
+The control sequence will only be legal in math mode.
+\example
+\mathchardef\alphachar = "010B % As in plain TeX.
+$\alphachar$
+|
+\produces
+\mathchardef\alphachar = "010B % As in plain TeX.
+$\alphachar$
+\endexample
+\eix^^{macros//defining}
+\enddesc
+
+%==========================================================================
+\subsection {Other definitions}
+
+\begindesc
+\cts let {\<control sequence> = \<token>}
+\explain
+^^{control sequences//defining with \b\tt\\let\e}
+\minrefs{token}
+This command causes
+\<control sequence> to acquire the current meaning of \<token>.
+Even if you redefine \<token> later, the meaning of \<control sequence>
+will not change. Although \<token> is most commonly a control sequence,
+it can also be a \minref{character} token.
+\enddesc
+
+\begindesc
+\cts futurelet {\<control sequence> \<token$_1$> \<token$_2$>}
+\explain
+This command tells \TeX\ to make \<token$_2$> the meaning of
+\<control sequence> (as would be done with |\let|), and then to
+process \<token$_1$> and \<token$_2$> normally.
+|\futurelet| is useful at the end of macro definitions
+because it gives you a way of looking beyond the token that \TeX\
+is about to process before it processes it.
+\example
+\def\predict#1{\toks0={#1}\futurelet\next\printer}
+% \next will acquire the punctuation mark after the
+% argument to \predict
+\def\printer#1{A \punc\ lies ahead for \the\toks0. }
+\def\punc{%
+ \ifx\next;semicolon\else
+ \ifx\next,comma\else
+ ``\next''\fi\fi}
+\predict{March}; \predict{April}, \predict{July}/
+|
+\produces
+\def\predict#1{\toks0={#1}\futurelet\next\printer}
+\def\printer#1{A \punc\ lies ahead for \the\toks0. }
+\def\punc{%
+ \ifx\next;semicolon\else
+ \ifx\next,comma\else
+ ``\next''\fi\fi
+ }
+\predict{March};
+\predict{April},
+\predict{July}/
+\endexample
+\enddesc
+
+\begindesc
+\cts csname {\<token list> {\bt \\endcsname}}
+\xrdef{\endcsname}
+\explain
+This command produces a control sequence from \<token list>.
+It provides a way of synthesizing control sequences,
+including ones that you can't normally write.
+\<token list> can itself include control sequences; it is expanded
+in the same way as the replacement text of an |\edef| definition (\xref\edef).
+If the final expansion
+yields anything that isn't a character, \TeX\ will complain.
+|\csname| goes from a list of tokens to a control sequence;
+you can go the other way with ^|\string| \ctsref\string.
+\example
+\def\capTe{Te}
+This book purports to be about \csname\capTe X\endcsname.
+|
+\produces
+\def\capTe{Te}
+This book purports to be about \csname\capTe X\endcsname.
+\endexample
+\enddesc
+
+%==========================================================================
+\subsection {Controlling expansion}
+
+\begindesc
+\bix^^{macros//controlling expansion of}
+\cts expandafter {\<token$_1$> \<token$_2$>}
+\explain
+This command tells \TeX\ to expand \<token$_1$> according to its rules
+for \minref{macro} expansion \emph{after} it has expanded \<token$_2$>
+by one level. It's useful when \<token$_1$> is something like `|{|'
+^^|{//with {\tt\\expandafter}|
+or ^|\string| that inhibits expansion of \<token$_2$>,
+but you want to expand \<token$_2$> nevertheless.
+\example
+\def\aa{xyz}
+\tt % Use this font so `\' prints that way.
+[\string\aa] [\expandafter\string\aa]
+[\expandafter\string\csname TeX\endcsname]
+|
+\produces
+\def\aa{xyz}
+\tt
+[\string\aa] [\expandafter\string\aa]
+[\expandafter\string\csname TeX\endcsname]
+\endexample
+\enddesc
+
+\begindesc
+\cts noexpand {\<token>}
+\explain
+This command tells \TeX\ to
+suppress expansion of \<token> if \<token> is a
+\minref{control sequence} that can be expanded.
+If \<token> can't be expanded, e.g., it's a letter,
+\TeX\ acts as though the |\noexpand| wasn't there
+and processes \<token> normally.
+In other words the expansion of `|\noexpand|\<token>'
+is simply \<token> no matter what \<token> happens to be.
+\example
+\def\bunny{rabbit}
+\edef\magic{Pull the \noexpand\bunny\ out of the hat!! }
+% Without \noexpand, \bunny would always be replaced
+% by `rabbit'
+\let\oldbunny=\bunny \def\bunny{lagomorph} \magic
+\let\bunny=\oldbunny \magic
+|
+\produces
+\def\bunny{rabbit}
+\edef\magic{Pull the \noexpand\bunny\ out of the hat! }
+% Without \noexpand, \bunny would always be replaced
+% by `rabbit'
+\let\oldbunny=\bunny \def\bunny{lagomorph} \magic
+\let\bunny=\oldbunny \magic
+\endexample
+\enddesc
+
+\begindesc
+\cts the {\<token>}
+\explain
+This command generally expands to a list of \minref{character} tokens
+that represents \<token>. \<token> can be any of the following:
+
+\ulist\compact
+\li a \TeX\ \minref{parameter}, e.g., |\parindent| or |\deadcycles|
+^^{parameters//using \b\tt\\the\e\ with}
+\li a \minref{register}, e.g., |\count0|
+^^{registers//with \b\tt\\the\e}
+\margin{Item for special registers removed}
+\li a code associated with an input character, e.g., |\catcode`(|
+\li a font parameter, e.g., |\fontdimen3\sevenbf|
+\li the ^|\hyphenchar| or ^|\skewchar| of a font, e.g.,
+|\skewchar\teni|
+\li ^|\lastpenalty|, ^|\lastskip|, or ^|\lastkern| (values derived from
+the last item on the current horizontal \minrefs{horizontal list}
+or \minref{vertical list})
+\li a control sequence defined by ^|\chardef| or
+^|\mathchardef|
+\endulist
+
+\noindent
+In addition, |\the| can expand to noncharacter tokens in the following two
+cases:
+\ulist\compact
+\li |\the| \<font>, which expands to the most recently defined
+control sequence that selects
+the same font as the control sequence \<font>
+\li |\the| \<token variable>, which expands to a copy of the value of the
+variable, e.g., |\the\everypar|
+\endulist
+
+See \knuth{pages~214--215} for a more detailed description of what
+|\the| does in various cases.
+\example
+The vertical size is currently \the\vsize.
+The category code of `(' is \the\catcode `(.
+|
+\produces
+The vertical size is currently \the\vsize.
+The category code of `(' is \the\catcode `(.
+\endexample
+\enddesc
+
+{\tighten
+\see \headcit{Converting information to tokens}{convert},
+|\showthe| (\xref\showthe).
+\par}
+
+\eix^^{macros//controlling expansion of}
+
+%==========================================================================
+\subsection {Conditional tests}
+
+\begindesc
+\xrdef{conds}
+\bix^^{conditional tests}
+%
+\ctspecial if {\<token$_1$> \<token$_2$>}\ctsxrdef{@if}
+\explain
+{\emergencystretch=1em
+This command tests if \<token$_1$> and \<token$_2$>
+have the same \minref{character} code, independent of their
+\minref{category code}s.
+Before performing the test, \TeX\ expands tokens following the |\if|
+until it obtains two tokens that can't be expanded further.
+These two tokens become \<token$_1$> and \<token$_2$>.
+The expansion
+includes replacing a control sequence |\let| equal to a character token
+by that character token.
+A \minref{control sequence} that can't be further expanded is
+considered to have character code $256$.\par}
+\example
+\def\first{abc}
+\if\first true\else false\fi;
+% ``c'' is left over from the expansion of \first.
+% It lands in the unexecuted ``true'' part.
+\if a\first\ true\else false\fi;
+% Here ``bc'' is left over from the expansion of \first
+\if \hbox\relax true\else false\fi
+% Unexpandable control sequences test equal with ``if''
+|
+\produces
+\def\first{abc}
+\if\first true\else false\fi;
+% ``c'' is left over from the expansion of \first.
+% It lands in the unexecuted ``true'' part.
+\if a\first\ true\else false\fi;
+% Here ``bc'' is left over from the expansion of \first
+\if \hbox\relax true\else false\fi
+% Unexpandable control sequences test equal with ``if''
+\endexample
+\enddesc
+
+\begindesc
+\ctspecial ifcat {\<token$_1$> \<token$_2$>}\ctsxrdef{@ifcat}
+\explain
+^^{category codes//testing}
+This command tests if \<token$_1$> and \<token$_2$>
+have the same \minref{category code}.
+Before performing the test, \TeX\ expands tokens following the |\ifcat|
+until it obtains two tokens that can't be expanded further.
+These two tokens become \<token$_1$> and \<token$_2$>.
+The expansion
+includes replacing a control sequence |\let| equal to a character token
+by that character token.
+A \minref{control sequence} that can't be further expanded is
+considered to have category code $16$.
+\example
+\ifcat axtrue\else false\fi;
+\ifcat ]}true\else false\fi;
+\ifcat \hbox\day true\else false\fi;
+\def\first{12345}
+\ifcat (\first true\else false\fi
+% ``2345'' lands in the true branch of the test
+|
+\produces
+\ifcat axtrue\else false\fi;
+\ifcat ]}true\else false\fi;
+\ifcat \hbox\day true\else false\fi;
+\def\first{12345}
+\ifcat (\first true\else false\fi
+% ``2345'' lands in the true branch of the test
+\endexample
+\enddesc
+
+\begindesc
+\ctspecial ifx {\<token$_1$> \<token$_2$>}\ctsxrdef{@ifx}
+\explain
+This command tests if \<token$_1$> and \<token$_2$> agree.
+Unlike |\if| and |\ifcat|, |\ifx| does \emph{not} expand the tokens
+following |\ifx|, so \<token$_1$> and \<token$_2$> are the two
+tokens immediately after |\ifx|.
+There are three cases:
+\olist
+\li If one token is a \minref{macro} and the other one isn't,
+the tokens don't agree.
+\li If neither token is a macro, the tokens agree if:
+\olist
+\li both tokens are characters (or control sequences denoting characters) and
+their \minref{character} codes and \minref{category code}s agree, or
+\li both tokens refer to the same \TeX\ command,
+font, etc.
+\endolist
+\li If both tokens are macros, the tokens agree if:
+\olist\compact
+\li their ``first level'' expansions, i.e.,
+their replacement texts, are identical, and
+\li they have the same status with respect to ^|\long| (\xref\long)
+and ^|\outer| (\xref\outer).
+\endolist
+Note in particular that \emph{any two undefined control
+sequences agree}.
+\endolist
+\noindent
+This test is generally more useful than |\if|.
+\example
+\ifx\alice\rabbit true\else false\fi;
+% true since neither \rabbit nor \alice is defined
+\def\a{a}%
+\ifx a\a true\else false\fi;
+% false since one token is a macro and the other isn't
+\def\first{\a}\def\second{\aa}\def\aa{a}%
+\ifx \first\second true\else false\fi;
+% false since top level expansions aren't the same
+\def\third#1:{(#1)}\def\fourth#1?{(#1)}%
+\ifx\third\fourth true\else false\fi
+% false since parameter texts differ
+|
+\produces
+\ifx\alice\rabbit true\else false\fi;
+% true since neither \rabbit nor \alice is defined
+\def\a{a}%
+\ifx a\a true\else false\fi;
+% false since one token is a macro and the other isn't
+\def\first{\a}\def\second{\aa}\def\aa{a}%
+\ifx \first\second true\else false\fi;
+% false since top level expansions aren't the same
+\def\third#1:{(#1)}\def\fourth#1?{(#1)}%
+\ifx\third\fourth true\else false\fi
+% false since parameter texts differ
+\endexample
+\enddesc
+
+\begindesc
+\ctspecial ifnum {\<number$_1$> \<relation> \<number$_2$>}\ctsxrdef{@ifnum}
+\explain
+^^{numbers//comparing}
+This command tests if \<number$_1$> and \<number$_2$>
+satisfy \<relation>, which must be either `|<|', `|=|', or `|>|'.
+The numbers can be constants such as |127|, count registers such as
+|\pageno| or |\count22|, or numerical parameters such as |\hbadness|.
+Before performing the test, \TeX\ expands tokens following the |\ifnum|
+until it obtains a sequence of tokens having
+the form \<number$_1$> \<relation> \<number$_2$>, followed by a token
+that can't be part of \<number$_2$>.
+\example
+\count255 = 19 \ifnum \count255 > 12 true\else false\fi
+|
+\produces
+\count255 = 19 \ifnum \count255 > 12 true\else false\fi
+\endexample
+\enddesc
+
+\begindesc
+\ctspecial ifodd {\<number>}\ctsxrdef{@ifodd}
+\explain
+^^{numbers//testing for odd/even}
+This command tests if \<number> is odd.
+Before performing the test, \TeX\ expands tokens following the |\ifodd|
+until it obtains a sequence of tokens having the form \<number>,
+followed by a token that can't be part of \<number>.
+\example
+\count255 = 19
+\ifodd 5 true\else false\fi
+|
+\produces
+\ifodd 5 true\else false\fi
+\endexample
+\enddesc
+
+\begindesc
+\ctspecial ifdim {\<dimen$_1$> \<relation> \<dimen$_2$>}\ctsxrdef{@ifdim}
+\explain
+^^{dimensions//comparing}
+This command tests if \<dimen$_1$> and \<dimen$_2$>
+satisfy \<relation>, which must be either `|<|', `|=|', or `|>|'.
+The dimensions can be constants such as |1in|, dimension registers
+such as |\dimen6|, or dimension parameters such as |\parindent|.
+Before performing the test, \TeX\ expands tokens following the |\ifdim|
+until it obtains a sequence of tokens having
+the form \<dimen$_1$> \<relation> \<dimen$_2$>, followed by a token
+that can't be part of \<dimen$_2$>.
+
+\example
+\dimen0 = 1000pt \ifdim \dimen0 > 3in true\else false\fi
+|
+\produces
+\dimen0 = 1000pt \ifdim \dimen0 > 3in true\else false\fi
+\endexample
+\enddesc
+
+\begindesc
+\ctspecial ifhmode {}\ctsxrdef{@ifhmode}
+\ctspecial ifvmode {}\ctsxrdef{@ifvmode}
+\ctspecial ifmmode {}\ctsxrdef{@ifmmode}
+\ctspecial ifinner {}\ctsxrdef{@ifinner}
+\explain
+^^{horizontal mode//testing for}
+^^{vertical mode//testing for}
+^^{math mode//testing for}
+^^{internal mode//testing for}
+These commands test what \minref{mode} \TeX\ is in:
+\ulist
+\li |\ifhmode| is true if \TeX\ is in ordinary or restricted horizontal mode.
+\li |\ifvmode| is true if \TeX\ is in ordinary or internal vertical mode.
+\li |\ifmmode| is true if \TeX\ is in text math or display math mode.
+\li |\ifinner| is true if \TeX\ is in an ``internal'' mode:
+restricted horizontal, internal vertical, or text math.
+\endulist
+\example
+\def\modes{{\bf
+ \ifhmode
+ \ifinner IH\else H\fi
+ \else\ifvmode
+ \ifinner \hbox{IV}\else \hbox{V}\fi
+ \else\ifmmode \hbox{M}\else
+ error\fi\fi\fi}}
+Formula $\modes$; then \modes,
+ \hbox{next \modes\ and \vbox{\modes}}.
+\par\modes
+|
+\produces
+\def\modes{{\bf
+ \ifhmode
+ \ifinner IH\else H\fi
+ \else\ifvmode
+ \ifinner \hbox{IV}\fi
+ \else\ifmmode \hbox{M}\else
+ error\fi\fi\fi}}
+Formula $\modes$; then \modes,
+ \hbox{next \modes\ and \vbox{\modes}}.
+\par\noindent{\bf V} % sorry folks, we have to fake this one
+\endexample
+\enddesc
+
+\begindesc
+\ctspecial ifhbox {\<register>}\ctsxrdef{@ifhbox}
+\ctspecial ifvbox {\<register>}\ctsxrdef{@ifvbox}
+\ctspecial ifvoid {\<register>}\ctsxrdef{@ifvoid}
+\explain
+^^{hboxes//testing for}
+^^{vboxes//testing for}
+^^{boxes//testing if void}
+These commands test the contents of
+the box register numbered \<reg\-ister>.
+Let \<register> be $n$. Then:
+\ulist
+\li |\ifhbox| is true if |\box|$\,n$ is an \minref{hbox}.
+\li |\ifvbox| is true if |\box|$\,n$ is an \minref{vbox}.
+\li |\ifvoid| is true if |\box|$\,n$ is void, i.e, doesn't have
+a box in it.
+\endulist
+\example
+\setbox0 = \vbox{} % empty but not void
+\setbox1 = \hbox{a}
+\setbox2 = \box1 % makes box1 void
+\ifvbox0 true\else false\fi;
+\ifhbox2 true\else false\fi;
+\ifvoid1 true\else false\fi
+|
+\produces
+\setbox0 = \vbox{}
+\setbox1 = \hbox{a}
+\setbox2 = \box1 % empties box1
+\ifvbox0 true\else false\fi;
+\ifhbox2 true\else false\fi;
+\ifvoid1 true\else false\fi
+\endexample
+\enddesc
+
+\begindesc
+\ctspecial ifeof {\<number>}\ctsxrdef{@ifeof}
+\explain
+^^{end of file, testing for}
+\minrefs{file}
+This command tests an input stream for end of file.
+It is true if input stream \<number> has not been opened,
+or has been opened and the associated file has been entirely read in
+(or doesn't exist).
+\enddesc
+
+\begindesc
+\ctspecial ifcase
+{\<number>\<case$_0$ text> {\bt \\or }\<case$_1$ text> {\bt \\or}
+ $\ldots$ {\bt \\or} \<case$_n$ text>\hfil\break
+\hglue 3pc{\bt \\else} \<otherwise text> {\bt \\fi}}
+\ctsxrdef{@ifcase}
+\ctsxrdef{@or}
+\explain
+^^{case testing}
+This command introduces a test with numbered multiple cases.
+If \<num\-ber> has the value $k$, \TeX\ will expand \<case$_k$ text> if
+it exists, and \<other\-wise text> if it doesn't. You can omit the |\else|---%
+in this case, \TeX\ won't expand anything if none of the cases are satisfied.
+\example
+\def\whichday#1{\ifcase #1<day 0>\or Sunday\or Monday%
+ \or Tuesday\or Wednesday\or Thursday\or Friday%
+ \or Saturday\else Nonday\fi
+ \ is day \##1. }
+\whichday2 \whichday3 \whichday9
+|
+\produces
+\def\whichday#1{\ifcase #1<day 0>\or Sunday\or Monday%
+ \or Tuesday\or Wednesday\or Thursday\or Friday%
+ \or Saturday\else Nonday\fi
+ \ is day \##1. }
+\whichday2 \whichday3 \whichday9
+\endexample
+\enddesc
+
+\begindesc
+\ctspecial iftrue {}\ctsxrdef{@iftrue}
+\ctspecial iffalse {}\ctsxrdef{@iffalse}
+\explain
+These commands are equivalent to tests that are always true or always
+false. The main use of these commands is in defining macros that keep
+track of the result of a test.
+\example
+\def\isbigger{\let\bigger=\iftrue}
+\def\isnotbigger{\let\bigger=\iffalse}
+% These \let's MUST be buried in macros!! If they aren't,
+% TeX erroneously tries to match them with \fi.
+\def\test#1#2{\ifnum #1>#2 \isbigger\else\isnotbigger\fi}
+\test{3}{6}
+\bigger$3>6$\else$3\le6$\fi
+|
+\produces
+\def\isbigger{\let\bigger=\iftrue}
+\def\isnotbigger{\let\bigger=\iffalse}
+% These \let's MUST be buried in macros!
+% If they aren't, TeX erroneously tries to match them with \fi
+\def\test#1#2{\ifnum #1>#2 \isbigger\else\isnotbigger\fi}
+\test{3}{6}
+\bigger$3>6$\else$3\le6$\fi
+\endexample
+\enddesc
+
+\begindesc
+\ctspecial else {} \ctsxrdef{@else}
+\explain
+This command introduces the ``false'' alternative of a conditional test.
+\enddesc
+
+\begindesc
+\ctspecial fi {} \ctsxrdef{@fi}
+\explain
+This command ends the text of a conditional test.
+\enddesc
+
+\begindesc
+\ctspecial newif {{\bt \\if}\<test name>}\ctsxrdef{@newif}
+\explain
+This command names a trio of control sequences with names |\alpha!-true|,
+|\alphafalse|,
+and |\ifalpha|, where |alpha| is \<test name>.
+You can use them to define your own tests by
+creating a logical variable that records
+true\slash false information:
+\ulist\compact
+\li |\alphatrue| sets the logical variable |alpha| true.
+\li |\alphafalse| sets the logical variable |alpha| false
+\li |\ifalpha| is a conditional test that is true if the logical
+variable |alpha| is true and false otherwise.
+\endulist
+The logical variable |alpha| doesn't really exist, but \TeX\ behaves as
+though it did. After |\newif\ifalpha|, the logical variable is initially
+false.
+
+|\newif| is an outer command, so you can't use it inside a macro
+definition.
+\example
+\newif\iflong \longtrue
+\iflong Rabbits have long ears.
+\else Rabbits don't have long ears.\fi
+|
+\produces
+\newif\iflong
+\longtrue
+\iflong Rabbits have long ears.\else Rabbits don't have long ears.\fi
+\endexample
+\eix^^{conditional tests}
+\enddesc
+
+
+%==========================================================================
+\subsection {Repeated actions}
+
+{\def\test{{\bt \\if}$\Omega$}%
+\begindesc
+\bix^^{repeated actions}
+\bix^^{loops}
+\cts loop {$\alpha$ {\test} $\beta$ {\bt \\repeat}}
+\ctspecial repeat {}\ctsxrdef{@repeat}
+\explain
+These commands provide a looping construct for \TeX.
+Here $\alpha$ and $\beta$ are arbitrary sequences of commands
+and \test\ is any of the conditional tests described in
+\headcit{Conditional tests}{conds}.
+The |\repeat| replaces the |\fi| corresponding to the test,
+so you must not write an explicit |\fi| to terminate the test.
+Nor, unfortunately, can you associate an |\else| with the test.
+If you want to use the test in the opposite sense, you need to
+rearrange the test or
+define an auxiliary test with |\newif| (see above) and use that
+test in the sense you want (see the second example below).
+
+\TeX\ expands |\loop| as follows:
+\olist
+\li $\alpha$ is expanded.
+\li {\test} is performed. If the result is false, the loop is terminated.
+\li $\beta$ is expanded.
+\li The cycle is repeated.
+\endolist
+\example
+\count255 = 6
+\loop
+ \number\count255\
+ \ifnum\count255 > 0
+ \advance\count255 by -1
+\repeat
+|
+\produces
+\count255 = 6
+\loop
+ \number\count255\
+ \ifnum\count255 > 0
+ \advance\count255 by -1
+\repeat
+\nextexample
+\newif\ifnotdone % \newif uses \count255 in its definition
+\count255=6
+\loop
+ \number\count255\
+ \ifnum\count255 < 1 \notdonefalse\else\notdonetrue\fi
+ \ifnotdone
+ \advance\count255 by -1
+\repeat
+|
+\produces
+\newif\ifnotdone
+\count255=6
+\loop
+ \number\count255\
+ \ifnum\count255 < 1 \notdonefalse\else\notdonetrue\fi
+ \ifnotdone
+ \advance\count255 by -1
+\repeat
+%
+\eix^^{repeated actions}
+\eix^^{loops}
+%
+\endexample
+\enddesc
+} % end scope of definition of \test
+
+%==========================================================================
+\subsection {Doing nothing}
+
+\begindesc
+\cts relax {}
+\explain
+This command tells \TeX\ to do nothing. It's useful in a context where
+you need to provide a command but there's nothing that you want \TeX\ to do.
+\example
+\def\medspace{\hskip 12pt\relax}
+% The \relax guards against the possibility that
+% The next tokens are `plus' or `minus'.
+|
+
+\endexample
+\enddesc
+
+\begindesc
+\cts empty {}
+\explain
+This command expands to no tokens at all.
+It differs from |\relax| in that it disappears after macro expansion.
+%
+\xrdef{mac2}% end the section on macros
+\eix^^{macros}
+\enddesc
+
+%==========================================================================
+\section {Registers}
+
+%==========================================================================
+\subsection {Using registers}
+
+\begindesc
+\bix^^{registers}
+\makecolumns 11/2:
+\cts count {\<register> {\bt =} \<number>}
+\cts dimen {\<register> {\bt =} \<dimen>}
+\cts skip {\<register> {\bt =} \<glue>}
+\cts muskip {\<register> {\bt =} \<muglue>}
+\cts toks {\<register> {\bt =} \<token variable>}
+\aux\cts toks {\<register> {\bt =} \rqbraces{\<token list>}}
+\aux\cts count {\<register>}
+\aux\cts dimen {\<register>}
+\aux\cts skip {\<register>}
+\aux\cts muskip {\<register>}
+\aux\cts toks {\<register>}
+\explain
+^^{assignments//of registers}
+The first six commands listed here assign something to a register.
+The |=|'s in the assignments are optional.
+The remaining five control sequences are not true commands
+because they can only appear as part of an argument.
+They yield the contents of the specified register.
+Although you can't use these control sequences by themselves as commands
+in text, you can use ^|\the| to convert them to text so that
+you can typeset their values.
+
+You can name and reserve registers
+with the ^|\newcount| command and its relatives
+(\xref{\@newcount}).
+Using these commands is a safe way to obtain registers that
+are known not to have any conflicting usage.
+
+^^{count registers}
+A |\count| register contains an integer, which can be either positive or
+negative.
+Integers can be as large as you're ever likely to need them to be.\footnote
+{Here's the only exercise in this book: find out what's the largest
+integer that \TeX\ will accept.}
+\TeX\ uses count registers $0$--$9$ to keep track of the
+page number (see \knuth{page~119}).
+|\count255| is the only count register available for use
+without a reservation.
+\example
+\count255 = 17 \number\count255
+|
+\produces
+\count255 = 17 \number\count255
+\endexample
+
+\medskip\noindent
+^^{dimension registers}
+A |\dimen| register contains a dimension.
+Registers |\dimen0| through |\dimen9| and |\dimen255| are available
+for scratch use.
+
+\example
+\dimen0 = 2.5in
+\hbox to \dimen0{$\Leftarrow$\hfil$\Rightarrow$}
+|
+\produces
+\dimen0 = 2.5in
+\hbox to \dimen0{$\Leftarrow$\hfil$\Rightarrow$}
+\doruler{\8\8\8}3{in}
+\endexample
+
+\medskip\noindent
+^^{skip registers}
+A |\skip| register contains the dimensions of glue.
+Unlike a |\dimen| register, it
+records an amount of shrink and stretch as well as a natural size.
+Registers |\skip0| through |\skip9| and |\skip255| are available
+for use without a reservation.
+
+\example
+\skip2 = 2in
+$\Rightarrow$\hskip \skip2 $\Leftarrow$
+|
+\produces
+\skip2 = 2in
+$\Rightarrow$\hskip \skip2 $\Leftarrow$\par
+\noindent\hphantom{$\Rightarrow$}\ruler{\8\8}2{in}
+\endexample
+
+\medskip\noindent
+^^{muskip registers}
+A |\muskip| register is like a |\skip| register,
+but the glue in it is always measured in ^|mu|
+\seeconcept{mathematical unit}.
+The size of a |mu| depends on the current font.
+For example, it's usually a little
+smaller in a subscript than in ordinary text.
+Registers |\muskip0| through |\muskip9| and |\muskip255| are available
+for use without a reservation.
+
+\example
+\muskip0 = 24mu % An em and a half, no stretch or shrink.
+$\mathop{a \mskip\muskip0 b}\limits^{a \mskip\muskip0 b}$
+% Note the difference in spacing.
+|
+\produces
+\muskip0 = 24mu % an em and a half
+$\mathop{a \mskip\muskip0 b}\limits^{a \mskip\muskip0 b}$
+% Note the difference in spacing
+\endexample
+
+\medskip\noindent
+^^{token registers}
+You can assign either a token variable
+(a register or a parameter) or a token list
+to a |\toks| register.
+When you assign a token list to a token register,
+the tokens in the token list are \emph{not} expanded.
+
+Once the tokens in a token list have been inserted into text
+using ^|\the|, they are
+expanded just like tokens that were read in directly.
+They have the category codes that they received when \TeX\ first
+saw them in the~\hbox{input}.
+
+\example
+\toks0 = {the \oystereaters\ were at the seashore}
+% This assignment doesn't expand \oystereaters.
+\def\oystereaters{Walrus and Carpenter}
+\toks1 = \toks0
+% the same tokens are now in \toks0 and \toks1
+Alice inquired as to whether \the\toks1.
+|
+\produces
+\toks0 = {the \oystereaters\ were at the seashore}
+% This assignment doesn't expand \oystereaters
+\def\oystereaters{Walrus and Carpenter}
+\toks1 = \toks0
+% the same tokens are now in \toks0 and \toks1
+Alice inquired as to whether \the\toks1.
+\endexample
+\enddesc
+
+\begindesc
+\cts maxdimen {}
+\explain
+^^{dimensions//maximum}
+This control sequence yields a \<dimen> that is the
+largest dimension acceptable to \TeX\ (nearly 18 feet).
+It is not a true command because it can only appear as part of an argument
+to another command.
+\example
+\maxdepth = \maxdimen % Remove restrictions on \maxdepth.
+|
+\endexample
+\enddesc
+
+\see |\advance| (\xref\advance), |\multiply|,
+|\divide| (\xref\divide), |\set!-box|, |\box| (\xref\box).
+
+%==========================================================================
+\subsection {Naming and reserving registers, etc.}
+
+\begindesc
+\bix^^{registers//reserving}
+\makecolumns 11/2:
+\ctspecial newcount \ctsxrdef{@newcount}
+\ctspecial newdimen \ctsxrdef{@newdimen}
+\ctspecial newskip \ctsxrdef{@newskip}
+\ctspecial newmuskip \ctsxrdef{@newmuskip}
+\ctspecial newtoks \ctsxrdef{@newtoks}
+\ctspecial newbox \ctsxrdef{@newbox}
+\ctspecial newread \ctsxrdef{@newread}
+\ctspecial newwrite \ctsxrdef{@newwrite}
+\ctspecial newfam \ctsxrdef{@newfam}
+\ctspecial newinsert \ctsxrdef{@newinsert}
+\ctspecial newlanguage \ctsxrdef{@newlanguage}
+\explain
+These commands
+reserve and name an entity of the indicated type:
+\ulist
+{\tolerance = 5000
+\fontdimen3\the\font = 2\fontdimen3\the\font % allow spaces to stretch more
+\li |\new!-count|, |\newdimen|, |\newskip|, |\new!-mu!-skip|, |\new!-toks|,
+and |\new!-box| each reserve a \minref{register} of the indicated type.
+}
+^^{count registers//reserved by \b\tt\\newcount\e}
+^^{dimension registers//reserved by \b\tt\\newdimen\e}
+^^{skip registers//reserved by \b\tt\\newskip\e}
+^^{muskip registers//reserved by \b\tt\\newmuskip\e}
+^^{token registers//reserved by \b\tt\\newtoks\e}
+^^{box registers//reserved by \b\tt\\newbox\e}
+\li |\newread| and |\newwrite| reserve an input stream and
+an output stream \minrefs{input stream}\minrefs{output stream}
+respectively.
+^^{input streams//reserved by \b\tt\\newread\e}
+^^{output streams//reserved by \b\tt\\newwrite\e}
+\li |\newfam| reserves a \minref{family} of math fonts.
+^^{family//reserved by \b\tt\\newfam\e}
+\li |\newinsert| reserves an insertion type.
+(Reserving an insertion type involves reserving several different registers.)
+^^{insertions//numbers reserved by \b\tt\\newinsert\e}
+\li |\newlanguage| reserves a set of hyphenation patterns.
+\endulist
+You should use these commands whenever you need one of these entities,
+other than in a very local region,
+in order to avoid numbering conflicts.
+
+There's an important difference among these commands:
+\ulist
+\li The control sequences defined by
+|\newcount|, |\newdimen|, |\newskip|, |\newmuskip|, and |\newtoks|
+each designate an entity of the appropriate type.
+For instance, after the command:
+\csdisplay
+\newdimen\listdimen
+|
+the control sequence |\listdimen| can be used as a dimension.
+\li The control sequences defined by
+|\newbox|, |\newread|, |\newwrite|, |\newfam|, |\newinsert|,
+and |\newlanguage| each
+evaluate to the \emph{number} of an entity of the appropriate type.
+For instance, after the command:
+\csdisplay
+\newbox\figbox
+|
+the control sequence |\figbox| must be used in conjunction with
+a |\box|-like command, e.g.:
+\csdisplay
+\setbox\figbox = \vbox{!dots}
+|
+\endulist
+\enddesc
+
+\begindesc
+\cts countdef {\<control sequence> {\bt =} \<register>}
+\cts dimendef {\<control sequence> {\bt =} \<register>}
+\cts skipdef {\<control sequence> {\bt =} \<register>}
+\cts muskipdef {\<control sequence> {\bt =} \<register>}
+\cts toksdef {\<control sequence> {\bt =} \<register>}
+\explain
+These commands define \<control sequence> to refer to the
+\minref{register} of the indicated category whose number is \<register>.
+Normally you should use the commands in the previous group
+(|\newcount|, etc.) in preference to these commands in order to avoid
+numbering conflicts. The commands in the previous group are
+defined in terms of the commands \hbox{in this group}.
+\example
+\countdef\hatters = 19 % \hatters now refers to \count19
+\toksdef\hares = 200 % \hares now refers to \toks200
+|
+\endexample
+\enddesc
+
+\see |\newif| (\xref{\@newif}), |\newhelp| (\xref{\@newhelp}).
+\eix^^{registers//reserving}
+
+%==========================================================================
+\subsection {Doing arithmetic in registers}
+
+\begindesc
+\bix^^{arithmetic}
+\bix^^{registers//arithmetic in}
+%
+\cts advance {\<count register> {\bt by} \<number>}
+\aux\cts advance {\<dimen register> {\bt by} \<dimen>}
+\aux\cts advance {\<skip register> {\bt by} \<glue>}
+\aux\cts advance {\<muskip register> {\bt by} \<muglue>}
+\explain
+This command adds a compatible quantity to a register. For \<glue>
+or \<muglue> all three components (natural value, stretch, and shrink)
+\minrefs{glue} are added.
+Any of the quantities can be negative. For purposes of these calculations
+(and other assignments as well), \<glue> can be converted to a
+\<dimen> by dropping the stretch and shrink, and a \<dimen> can be converted
+to a \<number> by taking its value in scaled points
+\seeconcept{dimension}.
+You can omit the word |by| in these commands---\TeX\ will understand them
+anyway.
+\example
+\count0 = 18 \advance\count0 by -1 \number\count0\par
+\skip0 = .5in \advance\skip0 by 0in plus 1in % add stretch
+\hbox to 2in{a\hskip\skip0 b}
+|
+\produces
+\count0 = 18 \advance\count0 by -1 \number\count0\par
+\skip0 = .5in \advance\skip0 by 0in plus 1in % add stretch
+\hbox to 2in{a\hskip\skip0 b}
+\doruler{\8\8}2{in}
+\endexample
+\enddesc
+
+\begindesc
+\cts multiply {\<register> {\bt by} \<number>}
+\cts divide {\<register> {\bt by} \<number>}
+\explain
+These commands multiply and divide the value in \<register>
+by \<number> (which can be negative).
+The register can be a ^|\count|, ^|\dimen|, ^|\skip|, or ^|\muskip|
+register.
+For a ^|\skip| or ^|\muskip| register (\xref\skip),
+all three components of the \minref{glue} in the register are modified.
+You can omit the word |by| in these commands---\TeX\ will understand them
+anyway.
+
+You can also obtain a multiple of a \<dimen> by preceding it by a \<number>
+\minrefs{number}
+or decimal constant, e.g.,
+|-2.5\dimen2|.
+You can also use this notation for \<glue>, but watch out---the result
+is a \<dimen>, not \<glue>.
+Thus |2\baselineskip| yields a \<dimen> that is twice the natural size
+of |\baselineskip|, with no stretch or shrink.
+\example
+\count0 = 9\multiply \count0 by 8 \number\count0 ;
+\divide \count0 by 12 \number\count0 \par
+\skip0 = 20pt plus 2pt minus 3pt \multiply \skip0 by 3
+Multiplied value of skip0 is \the\skip0.\par
+\dimen0 = .5in \multiply\dimen0 by 6
+\hbox to \dimen0{a\hfil b}
+|
+\produces
+\count0 = 9\multiply \count0 by 8 \number\count0 ;
+\divide \count0 by 12 \number\count0 \par
+\skip0 = 20pt plus 2pt minus 3pt \multiply \skip0 by 3
+Multiplied value of skip0 is \the\skip0.\par
+\dimen0 = .5in \multiply\dimen0 by 6
+\hbox to \dimen0{a\hfil b}
+\doruler{\8\8\8}3{in}
+\endexample
+
+\eix^^{arithmetic}
+\eix^^{registers//arithmetic in}
+\eix^^{registers}
+\enddesc
+
+%==========================================================================
+\section {Ending the job}
+
+\begindesc
+^^{ending the job}
+\easy\ctspecial bye \ctsxrdef{@bye}
+\explain
+This command tells \TeX\ to fill out and produce the last page, print
+any held-over \minref{insertion}s, and end the job.
+It is the usual way to end your input file.
+\enddesc
+
+\begindesc
+\cts end {}
+\explain
+This command tells \TeX\ to produce the last page and end the job.
+It does not fill out the page, however,
+so it's usually better to use |\bye| rather than |\end|.
+\enddesc
+
+%==========================================================================
+\section {Input and output}
+
+%==========================================================================
+\subsection {Operations on input files}
+
+\begindesc
+\bix^^{files}
+\bix^^{input files}
+\easy\cts input {\<filename>}
+\explain
+\minrefs{file}\minrefs{file name}
+This command tells \TeX\ to read its input from file \<filename>.
+When that file is exhausted, \TeX\ returns to reading from its previous
+input source. You can nest input files to any level you like
+(within reason).
+
+When you're typesetting a large document, it's usually a good idea to
+structure your main file as a sequence of |\input| commands that refer
+to the subsidiary parts of the document. That way you can process the
+individual parts easily as you're working on drafts. It's also a good
+practice to put all of your \minref{macro} definitions into a separate file and
+summon that file with an |\input| command as the first action in your
+main file.
+
+\TeX\ uses different rules for scanning file names than it does for scanning
+\minref{token}s in general (see \xref{file name}).
+If your implementation expects file names to have extensions (usually
+indicated by a preceding dot), then \TeX\ provides a default extension
+of |.tex|.
+\example
+\input macros.tex
+\input chap1 % equivalent to chap1.tex
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts endinput {}
+\explain
+This command tells \TeX\ to stop reading input from the current file when it
+next reaches the end of a line.
+\enddesc
+
+\begindesc
+\cts inputlineno {}
+\explain
+This command yields a number (not a string) giving the line number of the
+current line, defined to be the number that would appear in an error message
+if an error occurred at this point.
+\enddesc
+
+\begindesc
+\cts openin {\<number> {\bt =} \<filename>}
+\explain
+This command tells \TeX\ to open the file named \<filename>
+and make it available for reading via the input stream
+designated by \<number>.
+^^{input streams//opening}
+\<number> must be between $0$ and $15$.
+Once you've opened a file and connected it to an input stream,
+you can read from the file using the |\read| command
+with the input stream's number.
+
+You can associate more than one input stream with the same
+file. You can then read from several different positions within
+the file, one for each input stream.
+
+You should allocate stream numbers for |\openin| using
+|\new!-read| (\xref{\@newread}).
+\example
+\newread\auxfile \openin\auxfile = addenda.aux
+% \auxfile now denotes the number of this opening
+% of addenda.aux.
+|
+\endexample
+\enddesc
+
+\begindesc\secondprinting{\vglue-.5\baselineskip\vskip0pt}
+\cts closein {\<number>}
+\explain
+This command tells \TeX\ to close the \minref{input stream} numbered
+\<number>, i.e.,
+end the association between the input stream and its file.
+The input stream with this number then becomes available for use with a
+different file.
+You should close an input stream once you're finished using its file.
+\example
+\closein\auxfile
+|
+\endexample
+\enddesc
+
+\begindesc\secondprinting{\vglue-.5\baselineskip\vskip0pt}
+\cts read {\<number> {\bt to} \<control sequence>}
+\explain
+^^{input streams//reading with \b\tt\\read\e}
+^^{reading a file}
+This command tells \TeX\ to read a line from the file
+associated with the \minref{input stream}
+designated by \<number> and assign the tokens on that line to
+\<control sequence>. The \minref{control sequence} then becomes a
+parameterless \minref{macro}. No macro expansion takes place
+during the reading operation. If the line contains any unmatched
+left braces, \TeX\ will read additional lines until the braces are
+all matched. If \TeX\ reaches the end of the file without matching all the
+braces, it will complain.
+
+If \<number> is greater than $15$ or hasn't been associated with a file
+using ^|\openin|, \TeX\ prompts you with `\<control sequence> |=|'
+on your terminal and waits for you to type a line of input.
+It then assigns the input line to \<control sequence>.
+If \<number> is less than zero, it reads a line of input from your
+terminal but omits the prompt.
+\example
+\read\auxfile to \holder
+% Expanding \holder will produce the line just read.
+|
+\endexample
+\eix^^{input files}
+\enddesc
+
+\secondprinting{\vfill\eject}
+
+
+%==========================================================================
+\subsection {Operations on output files}
+
+\bix^^{output files}
+\begindesc
+\cts openout {\<number> {\bt =} \<filename>}
+\explain
+^^{output streams//opening}
+This command tells \TeX\ to open the file named \<filename>
+and make it available for writing via the \minref{output stream}
+designated by \<number>.
+\<number> must be between $0$ and $15$.
+Once you've opened a file and connected it to an output stream,
+you can write to the file using the |\write| command
+with the output stream's number.
+
+An |\openout| generates a whatsit that becomes part of a box.
+The |\openout| does not take effect until \TeX\ ships out that box
+to the \dvifile,
+unless you've preceded the |\openout| with ^|\immediate|.
+
+\TeX\ won't complain if you associate more than one output stream with the
+same file, but you'll get garbage in the file if you try it!
+
+You should allocate stream numbers for |\openout| using
+|\newwrite| (\xref{\@newwrite}).
+\example
+\newwrite\auxfile \openout\auxfile = addenda.aux
+% \auxfile now denotes the number of this opening
+% of addenda.aux.
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts closeout {\<number>}
+\explain
+^^{output streams//closing}
+This command tells \TeX\ to close the \minref{output stream} numbered
+\<number>. i.e.,
+end the association between the output stream and its file.
+The output stream with this number then becomes available for use with a
+different file.
+You should close an output stream once you're finished using its file.
+
+A |\closeout| generates a whatsit that becomes part of a box.
+The |\closeout| does not take effect until \TeX\ ships out that box
+to the \dvifile,
+unless you've preceded the |\closeout| with ^|\immediate|.
+\example
+\closeout\auxfile
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts write {\<number> \rqbraces{\<token list>}}
+\explain
+^^{output streams//writing}
+^^{writing a file}
+This command tells \TeX\ to write \<token list> to the file
+associated with the \minref{output stream}
+designated by \<number>.
+It generates a whatsit that becomes part of a box.
+The actual writing does not take place until \TeX\ ships out that box
+to the \dvifile,
+unless you've preceded the |\write| with ^|\immediate|.
+
+For a |\write| that is not immediate, \TeX\ does not expand macros in
+\<token list> until the token list is actually written to the file.
+The macro expansions follow the same rules as |\edef| (\xref\edef).
+In particular, any control sequence that is not
+the name of a macro is written as
+^|\escapechar| followed by the control sequence name
+and a space. Any `|#|' tokens
+in \<token list> are doubled, i.e., written as `|##|'.
+
+If \<number> is not in the range from $0$ to $15$, \TeX\ writes
+\<token list> to the log file.
+^^{log file//written by \b\tt\\write\e}
+If \<number> is greater than $15$ or isn't associated with an output
+stream, \TeX\ also writes \<token list> to the terminal.
+\example
+\def\aa{a a}
+\write\auxfile{\hbox{$x#y$} \aa}
+% Writes the string `\hbox {$x##y$} a a' to \auxfile.
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts immediate {}
+\explain
+This command should precede an |\openout|, |\closeout|, or |\write|.
+^^|\write//with {\tt\\immediate}|
+^^|\openout//with {\tt\\immediate}|
+^^|\closeout//with {\tt\\immediate}|
+It tells \TeX\ to perform the specified file operation without delay.
+\example
+\immediate\write 16{I'm stuck!!}
+% has the same effect as \message
+|
+\endexample\enddesc
+
+\begindesc
+\cts special {\rqbraces{\<token list>}}
+\explain
+This command tells \TeX\ to
+write \<token list> directly to the \dvifile\ when it next
+ships out a page.
+A typical use of |\special| would be to tell the device driver to incorporate
+the contents of a named graphics file into the output page.
+^^{device drivers//instructions from \b\tt\\special\e}
+The |\special| command produces a whatsit that associates
+\<token list> with a particular position on the page, namely,
+the position that a zero-size box would have had if such a box
+had appeared instead of the |\special| command.
+Any use you might make of |\special| depends strictly on
+the ^{device drivers} that you have available.
+\example
+\special{graphic expic}
+% Display the graphics file `expic' here.
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts newlinechar {\param{number}}
+\explain
+This parameter contains a character that indicates a new line on
+output. When \TeX\ encounters this character
+while reading the argument of
+a |\write|, |\message|, or
+|\errmessage| command, it starts a new line.
+If |\newlinechar| is not in the range $0$--$255$,
+there is no character that indicates
+a new line on output.
+\PlainTeX\ sets |\newlinechar| to $-1$.
+\example
+\newlinechar = `\^^J
+\message{This message appears^^Jon two lines.}
+|
+\logproduces
+This message appears
+on two lines.
+|
+\endexample
+\enddesc
+
+\see |\newread|, |\newwrite| (\xref{\@newwrite}).
+\eix^^{files}
+\eix^^{output files}
+
+%==========================================================================
+\subsection {Interpreting input characters}
+
+\begindesc
+\cts catcode {\<charcode> \tblentry{number}}
+\explain
+^^{category codes//in \b\tt\\catcode\e\ table}
+This table entry contains the \minref{category code} of the character
+whose \ascii\ code is \<charcode>.
+The category codes are listed on \xrefpg{catcodes}.
+By changing the category code of a character you can get \TeX\ to treat
+that character differently.
+\example
+\catcode `\[ = 1 \catcode `\] = 2
+% Make [ and ] act like left and right braces.
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts active {}
+\explain
+This command contains the
+category code for an active character, namely, the number $13$.
+\example
+\catcode `\@ = \active % Make @ an active character.
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts mathcode {\<charcode> \tblentry{number}}
+\explain
+This table entry contains the \minref{mathcode} of the character
+whose \ascii\ code is \<charcode> \seeconcept{mathcode}.
+The mathcode specifies that character's interpretation in math mode.
+\example
+\mathcode\> = "313E % as in plain TeX
+% The > character has class 3 (relation), family 1 (math
+% italic), and character code "3E
+|
+\endexample
+\enddesc
+
+\begindesc
+\margin{{\tt\\delcode} was explained in two places. This explanation
+combines them. (The other place was in the math section.)}
+\cts delcode {\<charcode>\tblentry{number}}
+\explain
+^^{delimiter codes}
+This table entry specifies the \minref{delimiter} code for the input character
+whose \ascii\ code is \<charcode>.
+The delimiter code tells \TeX\ how to find the best output character to use
+for typesetting the indicated input character as a delimiter.
+
+\<number> is normally written in hexadecimal notation.
+Suppose that \<number> is the hexadecimal number $s_1s_2s_3\,
+l_1l_2l_3$. Then when the character is used as a delimiter,
+\TeX\ takes the character to have small variant
+$s_1s_2s_3$ and large variant $l_1l_2l_3$. Here $s_1s_2s_3$ indicates
+the math character found in position $s_2s_3$ of family $s_1$, and
+similarly for $l_1l_2l_3$. This is the same convention as the one
+used for ^|\mathcode| (\xref \mathcode),
+except that |\mathcode| also specifies a class.
+\example
+\delcode `( = "028300 % As in plain TeX.
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts endlinechar {\param{number}}
+\explain
+This parameter
+contains the character code for the character that
+\TeX\ appends to the end of each input line.
+^^{input lines}
+A value not in the range $0$--$255$
+indicates that no character should be appended.
+\PlainTeX\ leaves |\end!-line!-char| at
+|`\^^M| (the {\ascii} code for \asciichar{return}).
+\enddesc
+
+\begindesc
+\cts ignorespaces {}
+\explain
+This command tells \TeX\ to read and expand tokens until it finds one that
+is not a space \minref{token}, ignoring any space tokens
+that it finds on the way.
+|\ignorespaces| is often useful at the end of a \minref{macro} as a way
+of making the macro insensitive to any spaces or ends of line
+that might follow calls on it.
+(An empty line after |\ignorespaces| still produces a |\par| token,
+however.)
+\example
+\def\aa#1{yes #1\ignorespaces}
+\aa{may}
+be
+|
+\produces
+\def\aa#1{yes #1\ignorespaces}
+\aa{may}
+be
+\endexample
+\enddesc
+
+%==========================================================================
+\section {Controlling interaction with \TeX}
+
+\begindesc
+\bix^^{controlling \TeX}
+\bix^^{running \TeX}
+\cts errorstopmode {}
+\explain
+This command tells \TeX\
+to stop for interaction whenever it finds an error.
+This is the normal mode of operation.
+\enddesc
+
+\begindesc
+\cts scrollmode {}
+\explain
+This command tells \TeX\
+not to stop for most errors,
+but to continue displaying the error messages on your terminal.
+Typing `|S|' or `|s|' in response to an error message puts you
+into scroll mode.
+\enddesc
+
+\begindesc
+\cts nonstopmode {}
+\explain
+This command tells \TeX\
+not to stop for errors, even those pertaining to files that
+it can't find, but to continue displaying the error messages on your terminal.
+Typing `|R|' or `|r|' in response to an error message puts you
+into nonstop mode.
+\enddesc
+
+\begindesc
+\cts batchmode {}
+\explain
+This command tells \TeX\
+not to stop for errors and to suppress all further output to your terminal.
+Typing `|Q|' or `|q|' in response to an error message puts you
+into batch mode.
+\enddesc
+
+\begindesc
+\cts pausing {\param{number}}
+\explain
+If this parameter is greater than zero, \TeX\ will pause
+at each line of input to give you an opportunity to
+replace it with a different line. If you type in a replacement,
+\TeX\ will use that line instead of the original one; if you respond
+with \asciichar{return}, \TeX\ will use the original line.
+
+Setting |\pausing| to $1$ can be useful as a way of patching a document as
+\TeX\ is processing it. For example,
+you can use this facility to insert ^|\show| commands (see below).
+\eix^^{running \TeX}
+\eix^^{controlling \TeX}
+\enddesc
+
+%==========================================================================
+\section {Diagnostic aids}
+
+\subsection{Displaying internal data}
+
+\begindesc
+\bix^^{tracing}
+\bix^^{debugging}
+\bix^^{diagnostic aids}
+\cts show {\<token>}
+\cts showthe {\<argument>}
+\cts showbox {\<number>}
+\cts showlists {}
+\explain
+These commands record information in the log of your \TeX\ run:
+\ulist
+\li |\show| records the meaning of \<token>.\minrefs{token}
+^^{tokens//displayed by \b\tt\\show\e}
+\li |\showthe| records
+ whatever tokens would be produced by
+|\the| \<arg\-u\-ment> (see \xref \the).
+\li |\showbox| records the contents of the \minref{box}
+\minref{register} numbered \<num\-ber>.
+The number of
+leading dots in the log indicates the number of
+levels of nesting of inner boxes.
+\li |\showlists| records
+the contents of each list that \TeX\ is currently constructing.
+(These lists are nested one within another.)
+See \knuth{pages~88--89} for further information about interpreting
+the output of |\showlists|.
+\endulist
+For |\show| and |\showthe|, \TeX\ also displays the information at your
+^{terminal}.
+For |\showbox| and |\showlists|, \TeX\ displays the information at your
+terminal only
+if ^|\tracingonline| (\xref \tracingonline) is greater than zero;
+if ^|\tracingonline| is zero or less (the default case),
+the information is not displayed.
+
+Whenever \TeX\ encounters a |\show|-type command it
+stops for interaction. The request for interaction does \emph{not}
+indicate an error, but it does give you an opportunity to ask \TeX\ to
+show you something else. If you don't want to see anything else, just
+press \asciichar{return}.
+
+You can control the amount of output produced by |\showbox| by setting
+|\show!-box!-breadth| and |\show!-box!-depth| (\xref\showboxbreadth).
+^^|\showboxbreadth| ^^|\showboxdepth|
+These parameters respectively have default values of $5$
+and $3$, which is why
+just five items appear for each box described
+in the log output below. (The `|..etc.|' indicates additional items
+within the boxes that aren't displayed.)
+\example
+\show a
+\show \hbox
+\show \medskip
+\show &
+|
+\logproduces
+> the letter a.
+> \hbox=\hbox.
+> \medskip=macro:
+->\vskip \medskipamount .
+> alignment tab character &.
+|
+\nextexample
+\showthe\medskipamount
+\toks27={\hbox{Joe's\quad\ Diner}}
+\showthe\toks27
+|
+\logproduces
+> 6.0pt plus 2.0pt minus 2.0pt.
+> \hbox {Joe's\quad \ Diner}.
+|
+\nextexample
+\setbox 3=\vbox{\hbox{A red dog.}\hrule A black cat.}
+\showbox 3
+|
+\logproduces
+> \box3=
+\vbox(16.23332+0.0)x53.05565
+.\hbox(6.94444+1.94444)x46.41675
+..\tenrm A
+..\glue 3.33333 plus 1.66498 minus 1.11221
+..\tenrm r
+..\tenrm e
+..\tenrm d
+..etc.
+.\rule(0.4+0.0)x*
+.\hbox(6.94444+0.0)x53.05565
+..\tenrm A
+..\glue 3.33333 plus 1.66498 minus 1.11221
+..\tenrm b
+..\tenrm l
+..\tenrm a
+..etc.
+|
+\endexample
+\vfil\eject
+\example
+\vbox{A \hbox
+ {formula
+ $x \over y\showlists$}}
+|
+\logproduces
+### math mode entered at line 3
+\mathord
+.\fam1 y
+this will be denominator of:
+\fraction, thickness = default
+\\mathord
+\.\fam1 x
+### restricted horizontal mode entered at line 2
+\tenrm f
+\tenrm o
+\tenrm r
+\tenrm m
+\kern-0.27779
+\tenrm u
+\tenrm l
+\tenrm a
+\glue 3.33333 plus 1.66666 minus 1.11111
+spacefactor 1000
+### horizontal mode entered at line 1
+\hbox(0.0+0.0)x20.0
+\tenrm A
+\glue 3.33333 plus 1.66498 minus 1.11221
+spacefactor 999
+### internal vertical mode entered at line 1
+prevdepth ignored
+### vertical mode entered at line 0
+prevdepth ignored
+|
+\endexample
+\enddesc
+
+\see |\showboxbreadth|, |\showboxdepth| \ctsref\showboxbreadth.
+
+\subsection{Specifying what is traced}
+
+\begindesc
+\cts tracingonline {\param{number}}
+\explain
+If this parameter is greater than zero,
+\TeX\ will display the results of tracing
+(including ^|\showbox| and ^|\showlists|)
+at your terminal in addition to recording them in the log file.
+\enddesc
+
+\begindesc
+\cts tracingcommands {\param{number}}
+\explain
+If this parameter is $1$ or greater,
+\TeX\ will record in the log file most commands that it executes.
+If ^|\tracingonline| is greater than zero, this information will also appear
+at your terminal.
+Typesetting the first character of a word counts as a command,
+but (for the purposes of the trace only)
+the actions of typesetting the subsequent characters
+and any punctuation following them
+do not count as commands.
+If |\tracingcommands| is $2$ or greater,
+\TeX\ will also record commands that are expanded
+rather than executed, e.g., conditional tests and their outcomes.
+\example
+\tracingcommands = 1 If $x+y>0$ we quit.\par
+On the other hand, \tracingcommands = 0
+|
+\logproduces
+{vertical mode: the letter I}
+{horizontal mode: the letter I}
+{blank space }
+{math shift character $}
+{math mode: the letter x}
+{the character +}
+{the letter y}
+{the character >}
+{the character 0}
+{math shift character $}
+{horizontal mode: blank space }
+{the letter w}
+{blank space }
+{the letter q}
+{blank space }
+{\par}
+{vertical mode: the letter O}
+{horizontal mode: the letter O}
+{blank space }
+{the letter t}
+{blank space }
+{the letter o}
+{blank space }
+{the letter h}
+{blank space }
+{\tracingcommands}
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts tracinglostchars {\param{number}}
+\explain
+If this parameter is greater than zero,
+\TeX\ will record an indication in the log file of each time
+that it drops an output character because that character does not exist
+in the current font.
+If ^|\tracingonline| is greater than zero, this information will also appear
+at your terminal.
+\PlainTeX\ defaults it to $1$ (unlike the others).
+\example
+\tracinglostchars = 1
+A {\nullfont few} characters.
+|
+\logproduces
+Missing character: There is no f in font nullfont!!
+Missing character: There is no e in font nullfont!!
+Missing character: There is no w in font nullfont!!
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts tracingmacros {\param{number}}
+\explain
+If this parameter is $1$ or greater,
+\TeX\ will record in the log file the expansion and arguments
+of every macro that it executes.
+^^{macros//tracing}
+If |\tracingmacros| is $2$ or greater,
+\TeX\ will record, in addition,
+every expansion of a \minref{token} list such as
+|\output| or |\everycr|.
+If ^|\tracingonline| is greater than zero, this information will also appear
+at your terminal.
+\example
+\def\a{first \b, then \c}
+\def\b{b} \def\c{c}
+\tracingmacros = 2
+Call \a once.
+|
+\logproduces
+\a ->first \b , then \c
+
+\b ->b
+
+\c ->c
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts tracingoutput {\param{number}}
+\explain
+If this parameter is greater than zero,
+\TeX\ will record in the log file the contents of every box that
+it sends to the \dvifile.
+^^{\dvifile//boxes recorded in log file}
+If ^|\tracingonline| is greater than zero, this information will also appear
+at your terminal.
+The number of leading dots in each line of the trace output indicates
+the nesting level of the box at that line.
+You can control the amount of tracing by setting
+^|\showboxbreadth| and ^|\showboxdepth| (\xref\showboxbreadth).
+
+Setting |\tracingoutput| to $1$ can be particularly helpful when you're trying
+to determine why you've gotten ^{extra space} on a page.
+
+\example
+% This is the entire file.
+\tracingoutput = 1 \nopagenumbers
+One-line page. \bye
+|
+\logproduces
+Completed box being shipped out [1]
+\vbox(667.20255+0.0)x469.75499
+.\vbox(0.0+0.0)x469.75499, glue set 13.99998fil
+..\glue -22.5
+..\hbox(8.5+0.0)x469.75499, glue set 469.75499fil
+...\vbox(8.5+0.0)x0.0
+...\glue 0.0 plus 1.0fil
+..\glue 0.0 plus 1.0fil minus 1.0fil
+.\vbox(643.20255+0.0)x469.75499, glue set 631.2581fill
+..\glue(\topskip) 3.05556
+..\hbox(6.94444+1.94444)x469.75499, glue set 386.9771fil
+...\hbox(0.0+0.0)x20.0
+...\tenrm O
+...\tenrm n
+...\tenrm e
+...\tenrm -
+...etc.
+..\glue 0.0 plus 1.0fil
+..\glue 0.0 plus 1.0fill
+.\glue(\baselineskip) 24.0
+.\hbox(0.0+0.0)x469.75499, glue set 469.75499fil
+..\glue 0.0 plus 1.0fil
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts tracingpages {\param{number}}
+\explain
+If this parameter is greater than zero,
+\TeX\ will record in the log file its calculations of the cost of
+various page breaks that it tries.
+^^{page breaks//tracing}
+If |\tracing!-online| ^^|\tracingonline|
+is greater than zero, this information will also appear
+at your terminal.
+\TeX\ produces a line of this output
+whenever it first places a box or \minref{insertion}
+on the current page list, and also whenever it processes a potential
+break point for the page.
+Examining this output can be helpful when you're trying to determine
+the cause of a bad page break.
+See \knuth{pages~112--114} for an illustration and explanation of
+this output.
+
+Some production forms of \TeX\ ignore the value of |\tracingpages|
+so that they can run faster.
+If you need to use this parameter, be sure to use a form that
+responds to it.
+\enddesc
+
+\begindesc
+\cts tracingparagraphs {\param{number}}
+\explain
+If this parameter is greater than zero,
+\TeX\ will record in the log file its calculations of the cost of
+various line breaks that it tries.
+^^{line breaking//tracing}
+If ^|\tracingonline| is greater than zero, this information will also appear
+at your terminal.
+\TeX\ produces this output when it reaches the end of each paragraph.
+See \knuth{pages~98--99} for an illustration and explanation of
+this output.
+
+Some production forms of \TeX\ ignore the value of |\tracing!-para!-graphs|
+so that they can run faster.
+If you need to use this parameter, be sure to use a form that
+responds to it.
+\enddesc
+
+\begindesc
+\cts tracingrestores {\param{number}}
+\explain
+If this parameter is greater than zero,
+\TeX\ will record in the log file
+the values that it restores when it encounters the end of a \minref{group}.
+If ^|\tracingonline| is greater than zero, this information will also appear
+at your terminal.
+
+Some production forms of \TeX\ ignore the value of |\tracing!-restores|
+so that they can run faster.
+If you need to use this parameter, be sure to use a form that
+responds to it.
+\enddesc
+
+\begindesc
+\cts tracingstats {\param{number}}
+\explain
+If this parameter is $1$ or greater, \TeX\ will
+include a report on the resources that it used to run your job
+(see \knuth{page~300} for a list and explanation of these resources).
+Moreover, if |\tracingstats| is $2$ or greater,
+\TeX\ will report on its memory usage whenever it does a
+^|\shipout| (\xref \shipout) for a page.
+The report appears at the end of the log file.
+^^{log file//tracing statistics in}
+If ^|\tracingonline| is greater than zero, the information will also appear
+at your terminal.
+If you're having trouble with \TeX\ exceeding one of its
+capacities, the information provided by |\tracingstats| may help you
+pinpoint the cause of the difficulty.
+
+Some production forms of \TeX\ ignore the value of |\tracingstats|
+so that they can run faster.
+If you need to use this parameter, be sure to use a form that
+responds to it.
+
+The following example shows a sample of
+the tracing output you'd get on one implementation
+of \TeX. It may be different on other implementations.
+{\codefuzz = 1in
+\example
+\tracingstats=1
+|
+\logproduces
+Here is how much of TeX's memory you used:
+ 4 strings out of 5540
+ 60 string characters out of 72328
+ 5956 words of memory out of 262141
+ 921 multiletter control sequences out of 9500
+ 14794 words of font info for 50 fonts, out of 72000 for 255
+ 14 hyphenation exceptions out of 607
+ 7i,4n,1p,68b,22s stack positions out of 300i,40n,60p,3000b,4000s
+|
+\endexample
+}% end scope of codefuzz
+\enddesc
+
+\begindesc
+\cts tracingall {}
+\explain
+This command tells \TeX\ to
+turn on every available form of tracing.
+It also sets ^|\tracingonline| to $1$ so that the trace output will appear
+at your terminal.
+\enddesc
+
+\begindesc
+\cts showboxbreadth {\param{number}}
+\explain
+This parameter specifies the maximum number of list items
+that \TeX\ displays for one level of one box when it is producing
+the output for ^|\showbox| or ^|\tracingoutput|.
+\PlainTeX\ sets |\showboxbreadth| to $5$.
+\enddesc
+
+\begindesc
+\cts showboxdepth {\param{number}}
+\explain
+This parameter specifies the
+level of the deepest list that \TeX\ displays when
+it is producing the output for ^|\showbox| or ^|\showlists|.
+\PlainTeX\ sets |\showboxdepth| is $3$.
+\eix^^{tracing}
+\eix^^{debugging}
+\eix^^{diagnostic aids}
+\enddesc
+
+%==========================================================================
+\subsection {Sending messages}
+
+\begindesc
+\bix^^{messages, sending}
+\bix^^{error messages}
+\cts message {\rqbraces{\<token list>}}
+\cts errmessage {\rqbraces{\<token list>}}
+\explain
+These commands display the message given by \<token list> on your
+terminal and also enter it into the log. Any \minref{macro}s in the
+message are expanded, but no commands are executed. This is the same rule
+that \TeX\ uses for |\edef| (\xref \edef).
+
+For |\errmessage|, \TeX\ pauses
+in the same way that it does for one of its own error messages
+and displays the |\errhelp| tokens if you ask for help.
+
+You can generate multiline messages by using the ^|\newlinechar|
+character (\xref \newlinechar).
+\example
+\message{Starting a new section.}
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts wlog {\rqbraces{\<token list>}}
+\explain
+This command writes \<token list> on the log file.
+^^{log file//written by \b\tt\\wlog\e}
+\minrefs{log file}
+\TeX\ expands \<token list> according to the same rules that it uses
+for |\edef| (\xref\edef).
+\example
+\wlog{Take two aspirins and call me in the morning.}
+|
+\logproduces
+Take two aspirins and call me in the morning.
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts errhelp {\param{token list}}
+\explain
+This parameter contains the token list that \TeX\ displays
+when you ask for help in response to an |\errmessage| command.
+We recommend that when
+you're generating an error message with |\errmessage|, you
+set |\errhelp| to a string that describes the nature of the
+error and use |\newhelp| to produce that string.
+You can use the ^|\newlinechar| character to produce multiline messages.
+\enddesc
+
+\begindesc
+\ctspecial newhelp \ctsxrdef{@newhelp} {\<control sequence>
+ \rqbraces{\<help text>}}
+\explain
+This command assigns the ^{help message} given by \<help text> to
+\<control sequence>. It provides an efficient way of defining
+the ^{help text} that further explains an error message.
+Before issuing the error message with the |\errmessage| command,
+you should assign \<control sequence> to ^|\errhelp|. The help text
+will then appear if the user types `|H|'
+or `|h|' in response to the error message.
+\example
+\newhelp\pain{Your input includes a token that I find^^J
+ to be offensive. Don't bother me again with this^^J
+ document until you've removed it.}
+\errhelp = \pain \newlinechar = `\^^J
+% ^^J will start a new line
+\errmessage{I do not appreciate receiving this token}
+|
+\logproduces
+!! I do not appreciate receiving this token.
+l.8 ...t appreciate receiving this token.}
+
+? H
+\Your input includes a token that I find
+ to be offensive. Don't bother me again with this
+ document until you've removed it.
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts errorcontextlines {\param{number}}
+\explain
+This parameter determines the number of pairs of context lines,
+not counting the top and bottom pairs, that \TeX\ prints when it
+encounters an error. By setting it to $0$ you can get rid of long
+error messages.
+You can still force out the full context by typing something like:
+\csdisplay
+I\errorcontextlines=100\oops
+|
+in response to an error,
+since the undefined control sequence |\oops| will cause another error.
+\PlainTeX\ sets |\error!-context!-lines| to $5$.
+\enddesc
+
+\see |\write| (\xref \write), |\escapechar| (\xref \escapechar).
+\eix^^{messages, sending}
+\eix^^{error messages}
+
+%==========================================================================
+\section {Initializing \TeX}
+
+\begindesc
+\cts dump {}
+\explain
+This command, which must not appear inside a group, dumps the
+contents of \TeX's memory
+to a ^{format file} (\xref{format file}).
+By using ^|virtex|, a special ``virgin'' form of \TeX,
+you can then reload the format file at high speed and
+continue in the same state that \TeX\ was in at the time of the dump.
+|\dump| also ends the run. Since |\dump| can only be used
+in ^|initex|, not in production forms of \TeX, it is only useful
+to people who are installing \TeX.
+\enddesc
+
+\begindesc
+\cts everyjob {\param{token list}}
+\explain
+This parameter contains a \minref{token} list that \TeX\ expands at the
+start of every job. Because an assignment to |\everyjob| cannot affect
+the current run (by the time you've done the assignment it's already too
+late), it is only useful to people who are preparing format files.
+\enddesc
+
+
+\enddescriptions \endchapter \byebye
diff --git a/Master/texmf-doc/doc/english/impatient/index.tex b/Master/texmf-doc/doc/english/impatient/index.tex
new file mode 100644
index 00000000000..54e2e04b384
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/index.tex
@@ -0,0 +1,39 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+% See file fdl.tex for copying conditions.
+
+\input macros
+\chapter{Index}
+
+\par
+\kern-\baselineskip
+
+\noindent In the entries of this index, a page number in italics
+indicates a principal or defining entry.
+
+\par
+% Let's try to collect indexing cross-references here.
+%
+\idxsee{diacritical marks}{accents}
+\idxsee{drawing lines}{rules}
+\idxsee{drivers}{device drivers}
+\idxsee{eyes}{\anatomy}
+\idxsee{foreign languages}{European languages}
+\idxsee{intestines}{\anatomy}
+\idxsee{mouth}{\anatomy}
+\idxsee{page footers}{footers}
+\idxsee{page headers}{headers}
+\idxsee{paragraphs//indenting}{indentation}
+\idxsee{recursive macros}{macros, recursive}
+\idxsee{stomach}{\anatomy}
+\idxsee{tables}{alignments}
+\beginindex
+
+\let\+ = 0 % This can't occur in a macro...
+
+\input book.sdx
+
+\endindex
+
+\endchapter
+\byebye
diff --git a/Master/texmf-doc/doc/english/impatient/index1.icn b/Master/texmf-doc/doc/english/impatient/index1.icn
new file mode 100644
index 00000000000..29cc4a6ed61
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/index1.icn
@@ -0,0 +1,90 @@
+# This Icon program carries out the first phase of preparing the index for
+# TeX for the Impatient. The input is the .idx file produced by TeX using
+# our macros. The output should be piped through a sort and then to the
+# index2 program.
+#
+# This program was written by Paul Abrahams and is public domain.
+#
+# An index entry has the form:
+# term::type::page suffix
+# where `term' is the index term, `type' is T, N, or C,
+# `page' is either a folio number or *s, where s is a see-string,
+# and `suffix' is either empty or P, E, B, PE, or PB.
+# P indicates a principal entry, B and E begin and end a page range.
+
+
+global printable, specials
+record index_item(term, type, pages)
+record pgrec(number, pflag)
+
+procedure main(a)
+ local idx, fn, entry
+ fn := a[1]
+ printable := &ascii[33:-1]
+ specials := string(printable -- (&ucase ++ &lcase ++ &digits))
+ every entry := !&input do
+ write(key(entry), "@@@", entry)
+ write(&errout, "First indexing pass is complete.")
+ return
+end
+
+procedure key(entry)
+ local symb, symb1, type, page
+ static collate, hi, sortsequence
+ initial {
+ collate := specials || &ucase || &digits
+ sortsequence := printable -- &lcase
+ hi := repl(char(128), 26)
+ }
+ entry ? (symb := tab(find("::")), move(2), type := move(1),
+ move(2), page := tab(many('-0123456789*')))
+ symb := remove_leading_specials(symb)
+ symb1 := map(symb, &lcase, &ucase)
+ return map(map_term(symb1, type), collate, sortsequence) ||
+ map(symb, &ucase, hi) || char(1) || page_key(page)
+end
+
+procedure remove_leading_specials(s)
+# remove leading period, backslash, or less-than
+ local a, b, c, k
+ static kills
+ initial {kills := '\\.<'}
+
+# a one-character special is left unchanged
+ c := s[1:upto("//", s) | 0]
+ if *c = 1 & any(kills, c) then
+ return s
+
+ k := 1
+ while s ? (a := tab(k), b:= tab(upto(kills)),
+ tab(many(kills)), c := tab(0)) do
+ {s := a || b || c; k +:= *b}
+ return s
+end
+
+procedure map_term(t, c)
+# t is an index term, c is "N", "T", or "C"
+# Encode NTC as char(1), char(2), char(3)
+# Replace each // by the NTC code, then follow t by the NTC code and 1
+ local code
+
+ code := char(find(c, "NTC") | 4)
+ while t[find("//", t)+:2] := code
+ return t || code || char(1)
+end
+
+procedure page_key(p)
+# convert p, which may be negative, to a character string key
+# Negative numbers must sort with the smallest closest to 0.
+# A see-string always starts with *; we replace the * with ~
+# so that see references always come last. (They are usually unique.)
+ if p == "*" then
+ return "~"
+ p := integer(p)
+ return (
+ if p < 0 then
+ "-" || right(-p, 4, "0")
+ else
+ right(p, 5, 0)
+ )
+end
diff --git a/Master/texmf-doc/doc/english/impatient/index2.icn b/Master/texmf-doc/doc/english/impatient/index2.icn
new file mode 100644
index 00000000000..19913c42880
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/index2.icn
@@ -0,0 +1,239 @@
+# This Icon program is the second pass of the indexing process for TeX for the
+# Impatient. It must be preceded by index1 and by a sort of the intermediate
+# file.
+
+# This program was written by Paul Abrahams and is public domain.
+
+record topic_entry(term, type, groupchar, pages, level)
+record pgrec(number, flags)
+record term_list_record(term_list, start)
+procedure main(a)
+ local gen, pages, term, topic
+ local groupchar
+
+ write(&errout, "Second indexing pass has started.")
+
+# Each pass through this loop produces the entry for a single topic
+# or subtopic, including both the text of the topic and its pages.
+
+ every topic := get_topic_info() do {
+
+# If we're starting a new group (initial character), produce the macro
+# for it.
+ if topic.level = 1 then { # only primary topics affect the group
+ if not(\groupchar == topic.groupchar) then
+ write("\\indexgroup ", groupchar := topic.groupchar)
+ }
+ else
+ topic.type := "N" # subtopics are always printed normally
+
+# Write the index term
+ writes("\\indexentry {", topic.level - 1, "}{",
+ edit_term(topic.term), "}{", topic.type, "}{")
+
+# Write the list of pages
+ write(edit_pages(topic.pages, topic.term), "}")
+ }
+end
+
+procedure get_topic_info()
+ local page, type, full_term, flags # info in an index item
+ local term # the index term to be printed (part of full_term)
+ local item_text # holds an input item to be parsed
+ local topic # the topic we're now working on
+ local term_list_info # returned term_list_record from get_term_list
+ local term_list # list of index terms extracted from the input item
+ local first # position of first thing in term_list to print
+ local t # loop variable
+ local term1 # first term in full_term, usually the only one
+
+ term_list := []
+
+# At the start of each pass through this loop, `topic' contains the text of
+# the index topic most recently seen together with the pages seen so far for
+# that index topic.
+
+ every !&input ? (tab(find("@@@")\1), move(3), item_text := tab(0)) do {
+
+# Dissect the original index item, discarding the key
+
+ item_text ? (full_term := tab(find("::")), move(2),
+ type := tab(find("::")), move(2),
+ page := tab(many('-0123456789*')), flags := tab(0))
+# a page of * indicates a see-also
+
+ term_list_info := get_term_list(full_term, term_list)
+ term_list := term_list_info.term_list
+ if type == (\topic).type then # no change of type
+ first := term_list_info.start
+ else
+ first := 1 # change of type, so all terms are different
+ term1 := term_list[\first]
+
+# If we've finished the current topic, produce it and start the next one
+
+ if \first then {
+ suspend \topic
+ topic := topic_entry(term1, type, find_groupchar(term1), [], first)
+ every t := !term_list[first + 1:0] do {
+ suspend topic
+ topic.term := t; topic.type := "N"; topic.level +:= 1
+ } }
+ put(topic.pages,
+ if page == "*" then
+ flags # flags here is the see-also
+ else
+ pgrec(page, cset(flags)))
+ }
+ suspend topic
+ fail
+end
+
+procedure edit_term(term)
+# This procedure edits `term' into a proper argument for \indexterm
+
+ if term == " " then
+ term := "\\visiblespace"
+ else if *term = 1 then
+ term := "\\char `\\" || term
+ else if match("^^", term) then
+ term := "\\twocarets " || term[3:0]
+ else if term == "$$" then
+ term := "\\$\\$"
+# $$ is the only other 2-character sequence that has to be protected.
+ return term
+end
+
+procedure edit_pages(l, term)
+# edit_pages removes duplicate pages from the page list, produces the
+# macro call for a principal entry, and coalesces page ranges.
+# It also converts negative numbers to roman numerals.
+# Each element of l is a pgrec, except that the last (and possibly only)
+# element may be a see-also string starting with *.
+# The result is a list of strings
+ local pg, n, m, pf, see_also, pagelist
+ local l1, k
+
+# If the last element of l is a string, remove it and set it aside.
+# It's a see-also.
+ if type(l[-1]) == "string" then
+ {see_also := l[-1]; l := l[1:-1]}
+
+
+# First pass through the page list, coalescing duplicates and combining
+# their flags.
+
+ l1 := []
+ while *l > 0 do {
+ pg := pop(l); n := pg.number; pf := pg.flags
+
+# Loop over pages 2..k within a group
+
+ while n = l[1].number do
+ pf ++:= pop(l).flags
+
+ if *(pf ** 'BE') = 2 then # delete B and E if they both occur
+ pf --:= 'BE'
+ put(l1, pgrec(n, pf))
+ }
+
+# Now l1 has no duplicates and no trivial page ranges. Replace each
+# page range by a single entry, inverting the order for negative page
+# numbers since those indicate roman numerals.
+# When we're done, l1 has a list of strings rather than a list of pgrecs.
+
+ l := l1; l1 := []
+ while *l > 0 do {
+ pg := pop(l); n := pg.number; pf := pg.flags
+ if *(pf ** 'E') > 0 then {
+ every write(errfiles(), "Unmatched end of page range, page ",
+ integer(n), ", index term `", term, "'!")
+ pf --:= 'E'
+ }
+ if *(pf ** 'B') > 0 then { # beginning a page range
+ every k := 1 to *l do {
+ pf ++:= l[k].flags
+ if *(pf ** 'E') > 0 then break
+ }
+ if *(pf ** 'E') = 0 then {
+ every write(errfiles(), "Unmatched beginning of page range, page ",
+ integer(n), ", index term `", term, "'!")
+ pf := pg.flags
+ }
+ else {
+ m := l[k].number
+ if m < 0 then { # roman numerals
+ m := "\\r" || -m
+ n := "\\r" || -n
+ }
+ n := string(n || "--" || m)
+ l := l[k+ 1:0]
+ } }
+ else if n < 0 then
+ n := "\\r" || -n
+ if *(pf ** 'P') > 0 then
+ n := "\\pp{" || n || "}"
+ put(l1, n)
+ }
+
+# Now l1 is a list of page numbers and page ranges.
+# If it's empty and we have a see-also, make it a \see and return it.
+
+ if *l1 = 0 then
+ return "\\see{" || \see_also || "}" | ""
+
+# Turn l1 into a string and insert the comma commands \ic and \c
+# \ic goes at the beginning, \c between the remaining elements.
+
+ pagelist := "\\ic " || pop(l1) | ""
+ every pagelist ||:= "\\c " || !l1
+
+# Now attach the see-also to pagelist if we had one and return the result
+
+ return pagelist || ("\\seealso{" || \see_also || "}" | "")
+end
+
+procedure find_groupchar(t)
+# This procedure finds the character that heads the group containing
+# the index term `t'. We want all special characters in a single group
+# and all digits in a single group.
+# A term that begins with `\<c' or `\c' or `.c' is grouped as `c'.
+ local c
+ static printable, specials
+ initial {
+ printable := &ascii[33:-1]
+ specials := string(printable -- (&ucase ++ &lcase ++ &digits))
+ }
+
+ return map(
+ if t ? (tab(many('\\.<')), c := move(1)) then c
+ else if any(specials, t[1]) then "+"
+ else if any(&digits, t[1]) then "0"
+ else t[1] | "",
+ &lcase, &ucase)
+end
+
+procedure get_term_list(ft, tl)
+# `ft' is the full term just read in, `tl' is the current term list
+# return a record containing all the terms and the position of the first
+# one that's different from the previous full term
+ local tl1, pos, pos1, first, k
+
+ tl1 := []
+ pos := 1
+ every pos1 := (find("//", ft) | 0) do
+ {put(tl1, ft[pos:pos1]); pos := pos1 + 2}
+
+ first := &null
+ every k := 1 to *tl1 do
+ if not(tl1[k] == tl[k]) then
+ {first := k; break}
+ return term_list_record(tl1, first)
+end
+
+procedure errfiles()
+ static errf
+ initial
+ errf := open("index.err", "w")
+ suspend &errout | errf
+end
diff --git a/Master/texmf-doc/doc/english/impatient/macros.tex b/Master/texmf-doc/doc/english/impatient/macros.tex
new file mode 100644
index 00000000000..e3a84adac70
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/macros.tex
@@ -0,0 +1,2295 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+% See file fdl.tex for copying conditions.
+%
+% Macros for typesetting TeX for the Impatient.
+%
+% These macros are being distributed without any warranty whatsoever.
+% The level of commentary is that which we, the authors, found necessary
+% for our own purposes.
+%
+% ==========================================================================
+%
+% The macros use the term `chapter' for what in the book is called
+% a `section', `section' for the book's `subsection', etc. For purposes of
+% defining macros it's convenient to think of the book as divided into
+% chapters, but because of the nonsequential nature of the book we don't
+% want to tell the readers that they are reading chapters.
+
+
+% An embedded file should end with \byebye.
+%
+\begingroup
+\ifx \macsin\relax
+ % In frontm.tex, we do \input macros several times, and we still want
+ % the \byebye at the end to end the job.
+ % So we \input inside a group in frontm, and make the assignment to
+ % \endinput local.
+ \aftergroup\let\aftergroup\byebye\aftergroup\endinput
+ \aftergroup\endinput % Don't read this file again.
+\else
+ \global\let\byebye = \end
+ \global\let\macsin = \relax
+\fi
+\endgroup
+
+% This must come before config.tex.
+\input eplain
+
+% Define configuration switches and then read their values.
+%
+\newif\ifcenterpage \centerpagetrue
+\newif\ifcompletebook
+\newif\iffinal % true for the 2000dpi copy
+\newif\ifmsdos
+\newif\ifedgetabs \edgetabstrue
+\newif\ifdvi \dvitrue % true if we want a .dvi file
+
+%\xrefwarningfalse
+
+% The config file contains settings for flags, e.g.,
+% \completebookfalse
+% It can be empty as long as it exists.
+\input config
+\ifcompletebook \else\rewritetocfilefalse \fi
+\edef\tempfile{\ifmsdos g:temp \else x \fi}
+\ifx\setmodes\undefined\else\setmodes\fi % modify from command line input
+
+% Certain defaults are forced by certain others.
+%
+\iffinal \centerpagetrue \edgetabstrue\fi
+
+% Initial definitions. (These should come before \input fonts.)
+%
+\catcode`\@ = \letter % For the macro file only.
+
+% We don't want register allocation information in the log,
+% so we redefine the relevant macro from plain.tex.
+
+\def\alloc@#1#2#3#4#5{\global\advance\count1#1 by 1
+ \ch@ck#1#4#2%
+ \allocationnumber=\count1#1 \global#3#5=\allocationnumber
+}
+
+% The fonts. This should come before defining the new character control
+% sequences that follow.
+%
+\input fonts
+
+\hyphenation{script-script base-line-skip no-base-line-skip line-skip
+ line-skip-limit max-dead-cycles output-penalty no-inter-line-skip
+ show-box-depth show-box-breadth if-hmode if-vmode if-mmode
+ back-spaces back-space par-indent tracing-on-line}
+
+{
+ \catcode`\| = 0
+ \catcode`\\ = \other
+ |global|let|bsc = \ % \bsc is a true backslash character.
+}
+
+\let\\ = \bsc
+
+\def\bslash{$\backslash$} % backslash suitable for printing
+\let\shriek = !
+\let\vbar = |
+{
+ \catcode `\[ = 1 \catcode `\] = 2
+ \catcode `\{ = \other \catcode `\} = \other
+ \global\let\lbracechar = {
+ \global\let\rbracechar = }
+]
+\def\blbrace{{\bt \{}}
+\def\brbrace{{\bt \}}}
+
+{
+ \catcode`\ =\other% Notice no spaces at beginning of next line.
+\gdef\otherspace{ }
+}
+
+\let\mathlbrace = \{ \let\mathrbrace = \}
+{
+ \catcode `\[ = 1 \catcode `\] = 2
+ \catcode `\{ = \other \catcode `\} = \other
+ \gdef\{[\ifmmode\mathlbrace\else [\bt {]\fi]
+ \gdef\}[\ifmmode\mathrbrace\else [\bt }]\fi]
+]
+
+
+% These are for debugging (less drastically than \tracingall or \loggingall).
+%
+\def\tron{\tracingmacros=2 \tracingcommands=2 \tracingonline=1}
+\def\troff{\tracingmacros=0 \tracingcommands=0}
+
+% \pagebreak should always cause a break, even if the resulting
+% page is empty.
+%
+\def\pagebreak{\null\vfill\eject}
+
+% \linebreak causes a line break in chapter headings, but outside of that
+% context we don't want it to do anything.
+%
+\let\linebreak = \relax
+
+
+% Parameters.
+%
+\parskip = 0pt plus 0.3pt
+\newdimen\codefuzz \codefuzz = 10pt % for \csdisplay, \example
+\hbadness = 4000
+\vbadness = 8000
+\hfuzz = 0.1pt % as in plain TeX
+\vfuzz = 0.1pt % as in plain TeX
+\exhyphenpenalty = 0 % we don't mind these
+\widowpenalty = 10000 % these are very bad
+\clubpenalty = 10000 % these are very bad too
+
+% Page margins.
+%
+% Note that the \newdimens can't be within an \if or a \def
+% because \newdimen is an \outer macro (thanks to DEK).
+%
+\newdimen\insidemargin \newdimen\outsidemargin
+\newdimen\topmargin \newdimen\bottommargin
+\newdimen\headmargin
+\newdimen\totalwidth \newdimen\totalheight
+\newdimen\oddoffset \newdimen\evenoffset
+\newif\ifnoheadline
+
+% \totalwidth and \totalheight are the actual trim size of the book.
+% \insidemargin, \outsidemargin, \topmargin, and \bottommargin are margins
+% with respect to the pages of the book, not the draft 8 1/2 x 11 pages.
+%
+
+% This makes it so that we only have to cut twice on a page.
+% 8.5" = 51.19125pc exactly.
+% \totalwidth should = \outsidemargin + \insidemargin + \hsize.
+%
+\totalwidth = 7.375in % 44.4159375pc = 7 3/8".
+\outsidemargin = 8pc
+\insidemargin = 10pc
+\hsize = \totalwidth
+\advance \hsize by -\outsidemargin
+\advance \hsize by -\insidemargin
+% \hsize should now be 26.4159375pc
+
+% Now that we know \hsize, we can set \parfillskip to eliminate (most)
+% widows.
+%
+\parfillskip = .75\hsize plus .06\hsize minus .75\hsize
+
+
+% \oddoffset and \evenoffset are the \hoffset values needed to
+% align the left edge of the virtual page with the left edge of the
+% draft paper (not the left edge of the book pages).
+%
+% The -1in below comes from the default margin, which the DVI driver must
+% set at 1in. Odd pages are on the left, even on the right.
+%
+% First, align the left edge of the virtual page with the left edge of the
+% draft page.
+%
+\oddoffset = -1in
+\advance\oddoffset by \insidemargin
+%
+\evenoffset = -1in
+\advance\evenoffset by \outsidemargin
+
+% For centered pages, move the virtual page right by half the trim width.
+%
+\ifcenterpage
+ \dimen0 = 8.5in
+ \advance\dimen0 by -\totalwidth
+ \divide\dimen0 by 2
+ \advance\oddoffset by \dimen0
+ \advance\evenoffset by \dimen0
+
+% For uncentered even-numbered pages, align the right edge of the virtual
+% page with the right edge of the draft paper so that we can remove the trim
+% of two-sided pages with a single cut.
+%
+\else
+ \advance\evenoffset by 8.5in
+ \advance\evenoffset by -\totalwidth
+\fi
+
+\hoffset = \oddoffset % First page is numbered one.
+
+% Now for the vertical, which is simpler, since it doesn't vary from
+% page to page.
+% 11" = 66.2475pc exactly.
+% \totalheight should = \topmargin + \bottommargin + \vsize.
+%
+\totalheight = 9.25in % 9 1/4" = 55.708125pc
+\topmargin = 6pc % Distance from top of page to baseline of text line 1
+\bottommargin = 6pc % Distance from last line to bottom of page.
+\topskip = 2pc % Distance from top of \box255 to baseline of text line 1
+% \vsize Distance from top of \box255 to last line of text.
+% \headmargin Distance from top of \box255 to top of page
+% We'll place the headline just above \box255
+
+\headmargin = \topmargin \advance \headmargin by -\topskip
+
+\vsize = \totalheight
+\advance \vsize by -\headmargin
+\advance \vsize by -\bottommargin
+% \vsize should now be 46.708125pc
+
+\voffset = -1in % align top of logical page with top of physical page
+\advance \voffset by \headmargin
+\ifcenterpage
+ \dimen0 = 11in
+ \advance\dimen0 by -\totalheight
+ \divide\dimen0 by 2
+ \advance\voffset by \dimen0
+\fi
+
+\topskip = 2pc % Distance from headline to first line of text.
+
+
+% Other formatting parameters.
+%
+% The basic increments we'll use in the layout.
+%
+\def\setskip#1 = #2 {%
+ \dimen0 = #2\baselineskip
+ \csname #1skipamount\endcsname =
+ \dimen0 plus .33\dimen0 minus .25\dimen0
+ \ignorespaces
+}
+\newskip\greaterskipamount
+\newskip\greatskipamount
+\newskip\biggerskipamount
+\newskip\medbigskipamount
+\newskip\medsmallskipamount
+\newskip\tinyskipamount
+
+\setskip greater = 2.5
+\setskip great = 2.0
+\setskip bigger = 1.5
+\setskip big = 1.0
+\setskip medbig = .75
+\setskip med = .5
+\setskip medsmall = .375
+\setskip small = .25
+\setskip tiny = .125
+
+\parindent = 1em
+\newdimen\normalindent \normalindent = \parindent
+
+\footnotemarkseparation = .16666em
+
+\abovelistskip = \smallskipamount
+\interitemskip = \tinyskipamount
+\belowlistskip = \smallskipamount
+\listleftindent = \parindent
+
+% Displays involve text and math. We don't want as much flexibility in
+% the glue as plain.tex sets.
+%
+\abovedisplayskip = \medsmallskipamount
+\abovedisplayshortskip = 0pt plus 2pt
+\belowdisplayskip = \medsmallskipamount
+\belowdisplayshortskip = \belowdisplayskip
+
+\newskip\intercapsuleskip \intercapsuleskip = .75\tinyskipamount plus 0.4pt
+\newdimen\capsulehangindent \capsulehangindent = 2pc
+
+\newskip\aboveconceptskip \aboveconceptskip = \bigskipamount
+
+
+\newskip\abovesectionskip \abovesectionskip = \greaterskipamount
+% No stretch or shrink below heads, according to A-W.
+\newskip\belowsectionskip \belowsectionskip = 1\biggerskipamount
+
+\newskip\abovesubsectionskip \abovesubsectionskip = \greatskipamount
+\newskip\belowsubsectionskip \belowsubsectionskip = 1\bigskipamount
+
+\newskip\abovedescriptionskip \abovedescriptionskip = \biggerskipamount
+\newskip\belowdescriptionskip \belowdescriptionskip = \medskipamount
+
+\newskip\explainskip \explainskip = \tinyskipamount
+\newskip\exampleskip \exampleskip = \smallskipamount
+
+\def\interexampleskip{\vskip\medsmallskipamount}
+\def\tinyskip{\vskip\tinyskipamount}
+
+% Space in which a symbol is shown in a columnated list of commands.
+\newdimen\symbolspace \symbolspace = 14pt
+
+% \colsindent is the indentation before material arranged in columns and
+% displayed, as in the list of Greek letters.
+\newskip\colsindent \colsindent = \parindent
+
+% The indentation for page lists in the index that don't fit on one line.
+\newdimen\indexpageindent \indexpageindent = 1pc
+
+% The indentation for subsidiary entries in the index. (Should be less
+% than \indexpageindent.)
+\newdimen\indexlevelindent \indexlevelindent = .5pc
+
+\newskip\codebaselineskip \codebaselineskip = \baselineskip
+
+% Fill the previous page with blank space before a command.
+%
+\def\cmdbreak{\par\nobreak\vfil\penalty 1000\vfilneg\par}
+
+% Penalties.
+%
+\newcount\conceptpenalty \conceptpenalty = -1500
+\newcount\intercmdnamepenalty \intercmdnamepenalty = 300
+\newcount\@intercmdnamepenalty \@intercmdnamepenalty = \intercmdnamepenalty
+
+
+
+% The output routine.
+%
+\output = {%
+ \onepageout
+ %
+ % Odd pages are right-hand pages.
+ %
+ % Note \pageno has been incremented when we get here -- it now refers
+ % to the page number of the page about to be typeset, not the page
+ % that we just shipped out.
+ %
+ \ifodd\pageno % \onepageout advances \pageno.
+ \global\hoffset = \oddoffset
+ \global\intercmdnamepenalty = 10000
+ \else
+ \global\hoffset = \evenoffset
+ \global\intercmdnamepenalty = \@intercmdnamepenalty
+ \fi
+}
+
+\ifdvi\else\output={%
+ \setbox0=\box255\deadcycles=0
+ \advancepageno
+ \global\advance \truepage by 1
+ \ifnum\outputpenalty>-20000\else \dosupereject \fi
+ }
+\fi
+
+\def\onepageout{%
+ \shipout\vbox{%
+ \offinterlineskip % The page should have vertically abutting boxes.
+ \ifodd\pageno
+ \cropmargin = \insidemargin
+ \else
+ \cropmargin = \outsidemargin
+ \fi
+ \addcropmarks % Does not affect the position.
+ \ifcenterpage \addtruepage \fi
+ %
+ \ifedgetabs \ifodd\pageno \ifnoheadline\else
+ \edgetabs % Does not affect the position.
+ \fi\fi\fi
+ %
+ \vbox to 0pt{\vskip-\headmargin \vskip-3.5pc
+ \rightline{\sevenrm\timestamp}\vss}%
+ %
+ \smash{\line{\the\headline}}% Simplified \makeheadline.
+ \pagebody
+ \vskip 2\normalbaselineskip
+ % The footline is needed on one page (for an example).
+ \line{\the\footline}%
+ }%
+ % Now the rest from \plainoutput:
+ \advancepageno
+ \global\advance\truepage by 1
+ \ifnum\outputpenalty>-20000\else \dosupereject \fi
+}
+
+\footline = {\hfil}
+
+% The headline always includes the name of the current chapter. This
+% goes on the inside. If more information, such as the concept we're
+% explaining, is included, it goes on the outside.
+%
+\headline = {%
+ % Produce the timestamp
+ \ifnoheadline
+ \hfil
+ \global\noheadlinefalse
+ \else
+ \let\\ = \ignorespaces
+ \ifodd \pageno % Right-hand page.
+ {\tenit \firstmark}\hfil {\tenbf \folio}%
+ \else % Left-hand page.
+ {\tenbf \folio}%
+ \hfil
+ {\tenit
+ \chaptername
+ \ifnum\pageno>0\ifback\else
+ \quad $\backslash$\quad\S\the\chapterno
+ \fi\fi
+ }%
+ \fi
+ \fi
+}
+
+% Sizes for cropmarks:
+%
+\newdimen\cropthick \cropthick = 0.4pt
+\newdimen\crophsize \crophsize = 1pc
+\newdimen\cropvsize \cropvsize = 1pc
+\newdimen\cropoffset \cropoffset = .0625in
+
+% Each of the following macros generates a quarter of a cropmark as
+% a zero-size box at the center point of the cropmark.
+% We want the cropmarks to be centered with respect to their thicknesses.
+
+\def\vcropdown {\hbox to 0pt{%
+ \kern -.5\cropthick
+ \vbox to 0pt{%
+ \vskip \cropoffset
+ \hrule width\cropthick depth\cropvsize height0pt
+ \vss}%
+ \kern -.5\cropthick}%
+}
+
+\def\vcropup {\hbox to 0pt{%
+ \kern -.5\cropthick
+ \vbox to 0pt{%
+ \vss
+ \hrule width\cropthick depth\cropvsize height0pt
+ \vskip \cropoffset}%
+ \kern -.5\cropthick}%
+}
+
+\def\hcropright{\rlap{\kern\cropoffset\smash{%
+ \vrule width\crophsize depth .5\cropthick height .5\cropthick}}}
+
+\def\hcropleft{\llap{\smash{%
+ \vrule width\crophsize depth .5\cropthick height .5\cropthick}%
+ \kern\cropoffset}}
+
+% \cropmargin will be set to the left margin on the current page.
+%
+\newdimen\cropmargin
+\def\cropline#1{\moveleft\cropmargin\hbox to \totalwidth{#1}}
+
+% \addcropmarks adds the cropmarks to a page while leaving everything else
+% alone. It assumes we're positioned at the top of the page.
+
+\def\addcropmarks{%
+ \vbox to 0pt{%
+ \offinterlineskip % contextually redundant but precautionary
+ \vskip -\headmargin % to get to logical top of page
+ \ifcenterpage
+ \cropline{\hcropleft\vcropup \hfil \vcropup\hcropright}
+ \else
+ \cropline{\hfil \vcropdown}%
+ \fi
+ \vskip\totalheight
+ \ifcenterpage
+ \cropline{\hcropleft\vcropdown \hfil \vcropdown\hcropright}%
+ \else
+ \cropline{\hcropright\hfil\hcropleft\vcropup\vcropdown\hcropright}%
+ \fi
+ \vss
+}}
+
+% \addtruepage adds a small page number near the upper right cropmark.
+%
+\newcount\truepage \truepage = 1
+\def\addtruepage{%
+ \vbox to 0pt{\vskip -\headmargin\vskip -2pc
+ \moveleft\cropmargin\hbox to \totalwidth{%
+ \twelvebf
+ \quad\TeX\ for the Impatient\hss
+ N\raise 3.3pt\hbox{o} \the\truepage\quad}%
+ \vss}%
+}
+
+
+% The mark information is output by \markinfo.
+%
+% We can use a different mark, e.g., a shorter heading, by calling
+% \changemark.
+%
+\newtoks\shortmark \shortmark = {}
+\newif\ifchangemark
+
+\def\markinfo#1{%
+ \ifchangemark
+ \mark{\the\shortmark}\changemarkfalse
+ \else
+ \mark{#1}%
+ \fi
+}
+
+\def\changemark#1{\shortmark = {#1}\changemarktrue}
+
+
+% ``Tabs'' down the side of the book.
+% Say \nextedgetab to move the thing down to the next.
+% Say \edgetabsfalse to turn them off.
+%
+\newcount\numtabs \numtabs = 7
+\newdimen\edgetabjump \edgetabjump = 0pt
+\def\nextedgetab{%
+ \advance\edgetabjump by \edgetabdepth
+}
+
+\def\settabdepth#1{%
+ \edgetabdepth = #1
+ \setbox\tabbox = \vbox to \edgetabdepth{%
+ \leaders
+ \vbox{\vskip \edgespacing
+ \hrule width\edgetabwidth height0pt depth\edgethick}%
+ \vfil}
+}
+
+\newskip\bigtab \newskip\smalltab
+\newskip\edgetabdepth
+\newbox\tabbox
+
+\bigtab = \totalheight \divide\bigtab by \numtabs
+\smalltab = .4\bigtab % five smalls make two bigs
+
+\newdimen\edgetabin \edgetabin = .25in
+\newdimen\edgetabbleed \edgetabbleed = .25in
+\newdimen\edgetabwidth
+ \edgetabwidth = \edgetabin
+ \advance \edgetabwidth by \edgetabbleed
+\newdimen\edgethick \edgethick = .3pt % line thickness
+\newdimen\edgespacing \edgespacing = .9pt % line spacing
+
+
+\def\edgetabs{\vbox to 0pt{%
+ \vskip-\headmargin
+ \vskip\edgetabjump
+ \hbox{%
+ \hskip \hsize
+ \hskip\outsidemargin
+ \hskip-\edgetabin
+ \copy\tabbox
+ }%
+ \vss
+}}
+
+
+% We can simplify \pagecontents (which is called by \pagebody) somewhat,
+% since we don't have \topinserts.
+%
+\def\pagecontents{%
+ \unvbox255 % The main page contents.
+ %
+ \ifvoid\footins\else % Footnotes are present.
+ \vskip\skip\footins
+ \footnoterule
+ \unvbox\footins
+ \fi
+}
+
+
+% The command chapters had a mini-index at the bottom of right-hand
+% pages. These definitions are the way to put entries into it.
+%
+% \minref generates a reference for the mini-index, and prints the
+% reference on the page, also.
+%
+\def\minref#1{%
+ #1% Print it on the page.
+ % That's it, now.
+}
+
+% Mini-index entry without printing the argument on the page.
+% Just ignore the argument now.
+%
+\def\minrefs#1{%
+ \ignorespaces
+}
+
+% This is used for producing the concept mini-index.
+%
+\def\minrefsdelim#1\endmark{\minrefs{#1}}
+
+% One last insertion-oriented thing:
+% we always want numbered footnotes, as defined in eplain.
+% We'll do them in 8-point type.
+%
+\let\@plainfootnote = \footnote
+\let\footnote = \numberedfootnote
+\everyfootnote = {\footnotefonts}
+
+
+% The \margin macro produces a marginal note at the same level as its call.
+% It should only be used in a paragraph or in the main vertical list.
+% It is nullified when we're printing the final copy.
+%
+\def\margin#1{%
+ \ifhmode
+ \vadjust{\printmarginnote{#1}}%
+ \else
+ \dimen0 = \prevdepth
+ \prevdepth = -1000pt
+ \printmarginnote{#1}%
+ \prevdepth = \dimen0
+ \fi
+ \ignorespaces
+}
+
+\def\printmarginnote#1{%
+ \hbox to 0pt{%
+ \hskip 1.1\hsize
+ \vbox to 0pt{%
+ \everypar = {}% Don't inherit hanging indentation.
+ \hsize = 1in \rightskip = 0pt plus 1fil \noindent \sevenrm
+ \let\tt = \eighttt
+ \parfillskip = 0pt plus 1fil
+ \baselineskip = 8pt #1%
+ \vss
+ }%
+ \hss
+ }%
+}
+
+%\iffinal
+\iftrue
+ \def\margin#1{\ignorespaces}
+\fi
+
+
+% Stuff to preserve page breaks inserted for the 2nd printing.
+% This macro takes one ``argument''.
+%
+\def\secondprinting{\afterassignment\finishsecondprinting \toks0 = }
+\def\finishsecondprinting{\the\toks0}
+
+
+
+% Parts of the book.
+%
+%
+% Chapters.
+%
+\let\chaptername = \empty
+\newcount\chapterno
+
+\def\chaprule{\vrule depth3\baselineskip height1.5pc width1pt}
+
+% Chapter openings should not have headlines.
+% The text of each chapter starts on a right-hand page in the final
+% book. The facing page has an illustration. This means that if the
+% previous chapter ended on a left-hand (i.e., even) page, we have to
+% eject an extra blank page.
+%
+\outer\def\chapter#1 \par{%
+ \ifcompletebook % Don't do the blank pages for proof copies.
+ \blankpage % the illustration page
+ % The first real chapter starts on page 1.
+ \ifnum\pageno < 0 \pageno = 1 \fi
+ \fi
+ %
+ \def\chaptername{#1}%
+ \advance\chapterno by 1
+ %
+ \setbox0 = \hbox{\chapternumeralfont
+ \kern1pt
+ \expandafter\kernchapno\the\chapterno\empty
+ \kern3pt}%
+ \vglue 0pt % But we get a \topskip of 2pc now.
+ \nointerlineskip
+ \leftline{%
+ \ifback\else
+ \vtop{%
+ \copy0
+ \vskip6pt
+ \hrule width\wd0 height2.2pc
+ }%
+ \kern 16pt
+ \fi
+ \chapterfonts % to get \baselineskip now
+ \chaprule
+ \kern 6pt
+ \vtop{%
+ \def\linebreak{\hfil\break}%
+ \noindent \chaptername}%
+ }%
+ \vskip 6pc plus.5pc minus.5pc
+ \noheadlinetrue
+ \toks0=\expandafter{\chaptername}
+ \edef\writechaptertoc{%
+ \noexpand\writenumberedtocentry{chapter}{\the\toks0}{\the\chapterno}%
+ }%
+ \writechaptertoc
+ %
+ % Use chaptername as first A-head (or only one).
+ \mark{\chaptername}%
+ \footnotenumber = 0 % Number footnotes from 1 in each chapter.
+ \beginit{CHAPTER}%
+ \noindent
+ \ignorespaces
+}
+
+\def\endchapter{%
+ \mark{\chaptername}% Use chapter name on last blank recto page
+ \vfil\eject % be sure everything's out before testing for recto
+ \ifodd\pageno
+ \message{Chapter ends on a verso page.}%
+ \blankpage
+ \fi
+ \endit{CHAPTER}%
+}
+%
+% \blankpage creates a blank page with no headline.
+% In the final book, it just advances the page number.
+% For the web edition, the blank pages serve no purpose except to keep
+% the indexing correct. I didn't want to rerun the index.
+%
+\def\blankpage{%
+ \iffinal
+ \advancepageno
+ \global \advance \truepage by 1
+ \else
+ \noheadlinetrue\pagebreak
+ \fi
+}
+
+% This hokey little macro kerns between the numerals in the chapter
+% number. We want to kern more between `11' then otherwise; also, we
+% want to remove the extra space before the chapter number, and after
+% `11'.
+%
+\def\kernchapno#1#2{%
+ \ifx\empty#2\else \kern-3pt \fi
+ #1%
+ \ifx\empty#2\else
+ \if1#2%
+ \kern-.1em
+ \else
+ \kern-.05em
+ \fi
+ \fi
+ #2%
+ \if 1#2\kern-.1em\fi
+}
+
+% Sections.
+%
+\newif\ifheading % Avoid breaking after a heading.
+
+% get section numbers for the fdl only, since it has internal references.
+\let\fdlkludge=\empty
+
+% The heading flag is turned on by headings and turned off
+% at the start of a description.
+%
+\outer\def\section#1 \par{%
+ \par % be sure we're in vertical mode
+ \saveskip = \lastskip % will be 0 if no skip
+ \cmdbreak
+ \combineskips\abovesectionskip
+ \dimen0 = 2.5\baselineskip \advance\dimen0 by -\topskip
+ \vskip -\dimen0
+ \vglue \dimen0
+ %
+ {\sectionfonts \leftline{\fdlkludge #1}}%
+ %
+ \markinfo{#1}%
+ \writetocentry{section}{#1}%
+ \nobreak
+ % Don't go into horizontal mode within the command descriptions.
+ %
+ \vskip\belowsectionskip
+ \ifcommands \else \noindent \fi
+ \headingtrue
+ \everypar = {\headingfalse \global\everypar = {}}%
+ % only gets executed for \par in horizontal mode
+ \ignorespaces
+}
+
+
+% Subsections. We don't want a break at the glue if we were preceded by
+% a \nobreak.
+%
+\def\subsection#1 \par{%
+ \par % be sure we're in vertical mode
+ \saveskip = \lastskip % will be 0 if no skip
+ \ifheading % Did we just have \section?
+ \nobreak
+ \fi
+ \combineskips\abovesubsectionskip
+ \dimen0 = 2.5\baselineskip \advance\dimen0 by -\topskip
+ \vskip -\dimen0
+ \vglue \dimen0
+ %
+ {\subsectionfonts
+ \leftline{\vrule width.5em height1.2ex depth.2ex \enspace #1}}%
+ \writetocentry{subsection}{#1}%
+ \nobreak
+ % Don't go into horizontal mode within the command descriptions.
+ \vskip\belowsubsectionskip
+ \ifcommands \else \noindent \fi
+ \headingtrue
+ \everypar = {\headingfalse \global\everypar = {}}%
+ % only gets executed for \par in horizontal mode
+ \ignorespaces
+}
+
+% \combineskips combines the current skip (#1) with the previous skip
+% (which must be in \saveskip), and effectively skips by the larger of
+% the two.
+%
+\newskip\saveskip
+\def\combineskips#1{\ifdim\saveskip<#1\vskip-\saveskip \vskip#1\fi}
+
+
+
+% List macros.
+%
+
+% We want to use different names than eplain.
+%
+\let\ulist = \unorderedlist
+\let\endulist = \endunorderedlist
+%
+\let\olist = \numberedlist
+\let\endolist = \endnumberedlist
+
+\let\compact = \listcompact
+
+% The \noindent here keeps us from getting indentation on the first line.
+% It also makes the display into a `short' display, FYI.
+% The \belowdisplayskip and \abovedisplayskip glue are inserted by the
+% display.
+%
+\long\def\display#1{%
+ \ifvmode \noindent \fi
+ $$\vtop{\everypar = {}\hsize = \displaywidth
+ \parfillskip = 0pt plus 1fil % don't worry about widows
+ \noindent #1\par\global\savedepth = \prevdepth}$$%
+ \endgraf
+ \prevdepth = \savedepth
+}
+
+% \vdisplay is like \display, except it's for vertical mode material. Use it
+% to avoid an unwanted initial lineskip.
+%
+\long\def\vdisplay#1{%
+ \ifvmode \noindent \fi
+ $$\vtop{\everypar = {}\hsize = \displaywidth
+ \parfillskip = 0pt plus 1fil % don't worry about widows
+ #1\par\global\savedepth = \prevdepth}$$%
+ \endgraf
+ \prevdepth = \savedepth
+}
+
+
+
+% Indexing.
+% Derived from Knuth's manmac macros.
+%
+\newwrite\index
+
+\immediate\openout\index = \jobname.idx
+\newif\ifsilent
+
+% We need ^ to be active temporarily, while we define it.
+%
+{ \catcode`\^ = \active
+%
+\gdef^{%
+ \ifmmode
+ \let \nextaction = \sp
+ \else
+ \let \nextaction = \beginindexref
+ \begingroup
+ \catcode `| = \other \catcode `^ = \other
+ \fi
+ \nextaction
+}}
+
+\def\beginindexref{\futurelet\next\checksilence}
+
+{% And for here, we need ^ to be deactivated
+\catcode `^ = \other
+
+\gdef\checksilence{%
+ \if ^\next
+ \silenttrue \let\nextaction = \secondhat
+ \else
+ \silentfalse \let\nextaction = \checkbar
+ \fi
+ \nextaction
+}
+
+% Eat the `^' that we saw would be the next token.
+%
+\gdef\secondhat^{\checkbar}
+
+} % end scope where ^ is \other
+
+\def\checkbar{\futurelet\next\iswitch}
+
+% Here we start reading the text of the actual index entry;
+% we've determined whether it's silent or not.
+%
+% We handle the following cases:
+% ^{alpha} and ^^{alpha}
+% ^|alpha| and ^^|alpha|
+% ^|\alpha| and ^^|\alpha|
+%
+% When this is called, \next is either `|' or `{'.
+%
+\def\iswitch{%
+ \ifx |\next
+ \let \nextaction = \checkbackslash
+ \else
+ \let \nextaction = \normalidx
+ \fi
+ \nextaction
+}
+
+\def\checkbackslash|{%
+ % within |...| we allow anything (but another |)
+ \deactivate \catcode `\ = \other
+ \futurelet\next\litidx
+}
+
+% The thing after the ^ is a |. We have further checking to do -- is
+% the next character a \?
+%
+{ % reverse \ and /
+\catcode`\/ = 0
+\catcode`\\ = \other
+/gdef/litidx{%
+ /if \/next
+ /expandafter/litidxA
+ /else
+ /expandafter/litidxB
+ /fi
+}
+
+% The thing being indexed starts with a \.
+%
+/gdef/litidxA \#1|{%
+ /ctsidxref{#1}%
+ /litidxswitch{/\#1}%
+}
+
+% The thing being indexed is just a word.
+%
+/gdef/litidxB #1|{%
+ /ttidxref{#1}%
+ /litidxswitch{#1}%
+}
+}% end reversal of \ and /
+
+% The thing after the ^ is not a |.
+%
+\def\normalidx#1{%
+ \ifsilent
+ \aftergroup\ignorespaces
+ \else
+ #1%
+ \fi
+ \idxref{#1}%
+ \endgroup % group started by \iswitch.
+}
+
+\def\litidxswitch#1{%
+ \ifsilent
+ \aftergroup\ignorespaces
+ \else
+ {\tt #1}%
+ \fi
+ \endgroup % group started by \iswitch.
+}
+
+
+
+% Indexing macros for external use.
+
+% \idxref generates an index entry for #1. If #1 contains any control
+% sequences, they are treated literally.
+%
+\def\idxref#1{\indexwrite{#1}N\ignorespaces}
+
+
+% For creating an index entry for control space.
+{\catcode `\ =\other
+\gdef\blankidxref{\ctsidxref{ }}
+}
+
+% I removed this macro from eplain because \csname works as well, but
+% since the macros below are already written to use it ...
+\def\@tokstostring#1{\@ttsA#1 \@ttsmarkA}%
+\let\tokstostring=\@tokstostring
+\def\@ttsA#1 #2\@ttsmarkA{%
+ \@ifempty{#1}\else
+ \@ttsB #1\@ttsmarkB
+ \@ifempty{#2}\else
+ \@spacesub\@ttsA#2\@ttsmarkA
+ \fi
+ \fi
+}%
+\def\@ttsB#1{%
+ \ifx #1\@ttsmarkB\else
+ \string #1%
+ \expandafter\@ttsB
+ \fi
+}%
+\def\@ttsmarkB{\@ttsmarkB}% should never be expanded
+%
+\def\@spacesub{+}%
+\let\spacesub = \@spacesub
+%
+\def\@ifempty#1{\@@ifempty #1\@emptymarkA\@emptymarkB}%
+\def\@@ifempty#1#2\@emptymarkB{\ifx #1\@emptymarkA}%
+\def\@emptymarkA{\@emptymarkA}% Again, so \ifx won't complain.
+
+% #1 is the index term, #2 is the reference as in
+% Diacritical mark, see accent.
+
+\def\idxsee#1#2{%
+ \begingroup
+ \def\spacesub{\otherspace}%
+ \edef\nextaction{\write\index{\tokstostring{#1}::N::*\tokstostring{#2}}}%
+ \nextaction
+ \ignorespaces
+\endgroup}
+
+
+% \ttidxref generates an index entry for #1 in the program font.
+% If #1 contains any control sequences, they are treated literally.
+%
+\def\ttidxref#1{\indexwrite{#1}T\ignorespaces}
+
+
+% \ctsidxref generates an index entry for a control sequence. #1
+% should not have a preceding backslash, so that the proper call for
+% indexing \alpha is \ctsidxref{alpha}.
+%
+\def\ctsidxref #1{\indexwrite{#1}C\ignorespaces}
+
+% \indexchar is needed to generate index entries for three especially
+% difficult single characters: {, }, and \. They are blank-delimited.
+%
+\def\indexchar{\begingroup \deactivate \indexcharA}
+\def\indexcharA#1 {\indexwrite{#1}T\endgroup}
+
+% \pix indicates that the next index entry is a principal one.
+%
+\newif\ifpix
+\def\pix{\global\pixtrue}
+
+% \bix and \eix indicate that the next index entry begins or ends a
+% range of pages.
+%
+\newif\ifbix \def\bix{\bixtrue}
+\newif\ifeix \def\eix{\eixtrue}
+
+% #1 is the text of the entry, #2 is N (normal), T (typewriter) or
+% C (control sequence) or `cs' for now.
+%
+\def\indexwrite#1#2{\begingroup
+ \def\spacesub{\otherspace}%
+ \edef\tts{\tokstostring{#1}}%
+ \edef\nextaction{\write\index{\tts::#2::\noexpand\number\noexpand\pageno
+ \ifpix P\fi\ifbix B\fi\ifeix E\fi}}%
+ \nextaction
+ \global\pixfalse \global\bixfalse \global\eixfalse
+\endgroup}
+
+{\catcode `\^ = \other \gdef\twocarets{^^}}
+
+
+% For generating index entries with weird characters, we need to deactivate
+% them: { } blank \ and substitute [ ] ! for { } \ . \recat does this.
+% It should be enclosed in a group (which must end in `]').
+\def\recat{%
+ \aftergroup\ignorespaces
+ \catcode `\! = 0 \catcode `[ = 1 \catcode `] = 2
+ \catcode `\ = \other \deactivate
+}
+
+
+
+% Macros for the front matter.
+%
+% Space at the top of the frontmatter pages.
+%
+\def\sinkage{\vglue 7pc \relax}
+
+% And at the top of the backmatter pages.
+%
+\def\backsinkage{\vglue 2pc \relax}
+
+% \frontchapter doesn't care if we're on an even page or an odd page.
+%
+\def\frontchapter#1 \par{%
+ \def\chaptername{#1}%
+ \leftline{%
+ \chapterfonts
+ \chaprule
+ \kern 6pt
+ \vtop{%
+ \def\linebreak{\hfil\break}%
+ \noindent \chaptername}%
+ }%
+ \vskip 4pc
+ \noheadlinetrue
+ % Use chaptername as first A-head (or only one)
+ \mark{\chaptername}%
+ \noheadlinetrue
+ \noindent \ignorespaces
+}
+
+
+% We are called from inside a group, so we can redefine the \toc... macros.
+%
+\def\shortcontents{{%
+ \firsttoctrue
+ \backfalse
+ \shorttocfonts
+ \let\tocchapterentry = \shorttocchapter
+ \let\tocsectionentry = \gobblethree
+ \let\tocsubsectionentry = \gobblethree
+ \halign{\hfil\strut##&\strut ##\hfil\cr
+ \readtocfile
+ \crcr}}%
+ \pagebreak
+ \global\backfalse
+}
+
+% #1 is the chapter name, #2 the chapter number, #3 the page number.
+%
+\def\shorttocchapter#1#2#3{%
+ \ifback\else#2\quad $\backslash$\quad\fi&#1\qquad
+ \raise3pt\hbox{\vrule height2pt width4pt depth2pt}$\,\,$#3\cr
+}
+
+% Yes, we read the entire contents (several pages) as one alignment.
+%
+\def\contents{{%
+ \firsttoctrue
+ \backfalse
+ \tocfonts
+ \interlinepenalty = 100
+ \halign{\hfil\strut##&\strut ##\hfil\cr
+ \readtocfile
+ \crcr}}%
+ \pagebreak
+ % We want to end the contents on a recto page, even if it's blank
+ \ifodd\pageno\pagebreak\fi % leaves us on an even page.
+ \global\backfalse
+}
+
+\newif\iffirsttoc
+
+\def\tocchapterentry#1#2#3{%
+ \iffirsttoc
+ \global\firsttocfalse
+ \else
+ \noalign{\penalty-1000 \bigskip\smallskip}%
+ \fi
+ %
+ \ifback\else\bf#2\quad $\backslash$\quad\fi
+ &\bf#1\qquad\raise3pt\hbox{\vrule height2pt width4pt depth2pt}%
+ $\,\,$#3\cr
+ \noalign{\nobreak\vskip2pt}%
+}
+
+\def\tocsectionentry#1#2#3{%
+ \noalign{\penalty-500 \vskip\medsmallskipamount}%
+ &\it #1\quad \openbox$\,\,$\rm #3\cr
+}
+
+\def\tocsubsectionentry#1#2#3{%
+ &\qquad #1\quad $\cdot\,$#3\cr
+}
+
+\def\openbox{\ht0 = 1.75pt \dp0 = 1.75pt \wd0 = 3.5pt
+ \raise 2.75pt \makeblankbox{.2pt}{.2pt}%
+}
+
+\newif\ifback
+% \ifback is true when we're doing the table of contents and are about
+% to do the back matter. It is also true just before we do the back matter
+% chapters (really, only the index).
+%
+\def\backmatter{\write\tocfile{\noexpand\setback}\backtrue}
+\def\setback{\noalign{\bigskip\global\backtrue}}
+
+
+
+% Macros for the examples chapter.
+%
+% \doexamples is called with the name of the examples file
+% Each example is ended by ::: (including the last one)
+% A line starting with ~ is executed in the output (without the ~)
+% but dropped from the input.
+%
+% Within the input, ! is an escape character, but {} are not recognized.
+% This provides a limited control sequence capability, which is sufficient
+% for delimited macros and therefore for cross-references (see \xrefdelim).
+% !! stands for !.
+%
+\def\endmark{:::}
+
+\newif\ifnotatend \newif\ifnotatendfile \newif\iftildeline
+\newread\exfileA \newread\exfileB \newwrite\exfileC
+\newcount\examplenumber
+
+\def\doexamples#1{%
+ % Here we assume that two read-only openings of the same file are OK.
+ \immediate\openin\exfileA = #1
+ \immediate\openin\exfileB = #1
+ \loop
+ \advance\examplenumber by 1
+ \reader
+ \ifx\holder\empty \notatendfilefalse \else \notatendfiletrue \fi
+ \ifnotatendfile
+ \dooneexample
+ \repeat
+}
+
+
+% We want control sequences to be executed as the input of each example
+% is formatted, but we don't want to execute them for the output of each
+% example until we generate that output with an \input command.
+% Therefore, we treat ! differently for \holder, which produces example
+% input, and \holderA, which produces example output.
+%
+% We can't say \global\immediate\read, but \immediate is implied with \read.
+%
+\def\reader{{\deactivate
+ \catcode`\! = \other % To execute control sequences on \input.
+ \catcode`\^^M = 9 \global\read\exfileA to \holder
+ %
+ \catcode`\! = 0 % To execute control sequences right away.
+ \obeyspaces \global\read\exfileB to \holderA
+ }%
+}
+
+\def\dooneexample{{%
+ % We want to mention \! in one of the examples:
+ \edef\examplenum{\numbername\examplenumber}%
+
+ \immediate\openout\exfileC = \tempfile
+
+ \catcode`\| = \other % No literal code in these examples.
+ \chardef\! = `\! % !! means a literal ! character.
+
+
+ % Collect the input page, as it is to be printed, in a box
+ % At the same time, write out each line to \exfileC
+ % We make the box 0pt tall to avoid problems with overfull pages.
+ \setbox\xmpinput = \vbox to 0pt{%
+ %
+ \baselineskip = \codebaselineskip
+ \loop
+ \ifx\endmark\holder \notatendfalse \else\notatendtrue \fi
+ \ifnotatend
+ \expandafter\tildecheck\holder \empty \marker
+ \iftildeline\else
+ \leftline{\tt\frenchspacing \holderA \thinspace}%
+ \immediate\write\exfileC{\holder}%
+ \fi
+ \reader
+ \repeat
+ \vss % reduce height to 0pt
+ }% end \vtop
+
+ \immediate\closeout\exfileC
+
+ {%
+ \maxdepth = \maxdimen % allow long input
+ \vfill\eject
+ \catcode`\! = 0
+ \restoreplainTeX
+ {%
+ \let\eject = \relax \input\tempfile
+ % Every example ends with \bye, but \bye is disabled in the main text.
+ \vfill\par\penalty-10000
+ \global\footline = {\hfil}%
+ }%
+ \box\xmpinput
+ }%
+}}
+
+{
+ \catcode `\~ = \other % So the \ifx works.
+ \gdef\tildecheck#1#2\marker{%
+ \ifx #1~%
+ \immediate\write\exfileC {#2}\tildelinetrue
+ \else
+ \tildelinefalse
+ \fi
+ }
+}
+
+% This definition is more or less repeated verbatim in the first example
+% in xmptext.tex.
+%
+\def\xmpheader #1/#2{%
+ {\exampletitlefonts \leftline{Example #1:\quad \bi#2}}%
+ \vglue .5\baselineskip
+ \count255 = \pageno
+ \xdef\examplepage{\number\count255}%
+ \markinfo{Example #1: #2}
+ \ifrewritetocfile
+ \write\tocfile{\string\tocsectionentry{#2}{}{\examplepage}}%
+ \fi
+}
+% Let's number examples automatically; it makes it easier to move them
+% around and add new ones.
+
+\def\xmpnum{\number\examplenumber}
+
+\newbox\xmpinput
+
+
+% \negthin lets us put `\!' in examples.
+
+\def\negthin{\ifmmode \mskip-\thinmuskip \else \char`\\ \char`\! \fi}
+
+\def\xmpheaddef{see \xref{xmphead}}
+
+\def\restoreplainTeX{%
+ % Restore plain TeX's parameters (except for \hsize and \hoffset).
+ \parindent = 20pt
+ \parskip = 0pt plus 1pt
+ \parfillskip = 0pt plus 1fil
+ \hfuzz = 0.1pt
+ \hbadness = 1000
+ \abovedisplayskip=12pt plus 3pt minus 9pt
+ \abovedisplayshortskip=0pt plus 3pt
+ \belowdisplayskip=12pt plus 3pt minus 9pt
+ \belowdisplayshortskip=7pt plus 3pt minus 4pt
+ \everymath = {}%
+ \everydisplay = {}%
+ \centereddisplays
+ \let\vfootnote = \@plainvfootnote
+ \let\footnote = \@plainfootnote
+ \let\tenrm = \oldtenrm
+ \textfont0 = \tenrm
+ \rm
+ \ignorespaces
+}%
+
+
+
+% Macros for the concepts chapter.
+%
+%
+% Start off the chapter.
+%
+\def\beginconcepts{\openout\conceptfile = \jobname.ccs }
+\def\endconcepts{\closeout\conceptfile}
+
+\newwrite\conceptfile
+
+% \concept produces a concept heading and also generates a crossreference
+% suitable for the mini-index. It even works for concepts with several words
+% or containing control sequences like `\ascii'.
+%
+\def\concept#1 \par{%
+ \par
+ %k \cmdbreak
+ \penalty\conceptpenalty\vskip\aboveconceptskip
+ %k \vskip 0pt plus 1pt % allow a little more stretch
+ \noindent
+ % generate the index entry
+ \ifconceptindex \else \global\indextoks = {\idxref{#1}}\fi
+ \conceptindexfalse
+ \pix\bix\the\indextoks
+ %
+ {\bt \let\it=\bti \unskip\null #1.\hskip1em plus.2em minus.2em }%
+ \markinfo{#1}%
+ \xrdef{#1}%
+ \write\conceptfile{\string\doconcept{#1}{\number\pageno}}%
+ \beginit{CONCEPT}%
+ \nobreak
+ \ignorespaces
+}
+
+\def\endconcept{%
+ \par % always go to vertical mode here
+ \eix\the\indextoks
+ \endit{CONCEPT}%
+ \ignorespaces
+}
+
+\def\doconcept#1#2{\hbox{#1\quad #2}}
+
+% Sometimes we want to index a concept under some other name than the
+% concept name, e.g., indexing `delimiter' as `delimiters'. The
+% \conceptindex macro lets us do this.
+%
+\newif\ifconceptindex
+\newtoks\indextoks
+\def\conceptindex#1{%
+ \conceptindextrue
+ \global\indextoks = {\idxref{#1}}%
+ \ignorespaces
+}
+
+
+% Commands for cross-referencing within the concepts chapter.
+% Each refterm has the form {a} or {a:b}, where b is the term to
+% actually reference (e.g., \refterm{\PlainTeX:\plainTeX}).
+%
+\def\refterm#1{%
+ \reftermA #1:\endmark % Parse the stuff.
+ \expandafter\minrefsdelim\termtoref\endmark
+ \relax % Cancel the \ignorespaces.
+}%
+\def\reftermA#1:{\reftermfirst{#1}\futurelet\next\reftermB}
+\def\reftermB#1\endmark{\ifx\endmark \next \else \reftermsecond#1\fi}
+
+\def\reftermfirst#1{#1\def\termtoref{#1}}
+\def\reftermsecond#1:{\def\termtoref{#1}}%
+
+% The defining sentence for a concept.
+%
+\def\defterm#1{{\it #1\/}}
+
+
+% This macro prints the single page that will go on the back cover.
+%
+\def\printconceptpage{%
+ % Make sure this is considered an odd page.
+ \ifodd\pageno\else\blankpage\fi
+ \noheadlinetrue
+ \advance\hsize by 2pc
+ \vglue2pc % Plus a \topskip of 2pc.
+ {\sectionfonts \leftline{List of concepts}}%
+ \vskip\belowsectionskip
+ {\conceptpagefonts
+ \parindent=0pt
+ \makecolumns 94/3:
+ \input \jobname.ccs
+ \vfil
+ % Put the `logo' at the bottom of the page.
+ \rightline{\thisbook}%
+ }%
+ \eject
+}
+
+
+
+% Macros for the commands chapters.
+%
+% \ifcommands is true when we're within \begindescriptions ...
+
+\newif\ifcommands
+
+
+% \begindescriptions should be called to start the actual control sequences.
+%
+\outer\def\begindescriptions{\beginit{DESCRIPTIONS}%
+ % The following definitions are local to this chapter.
+ %
+ \let\example = \commandexample
+ \let\endexample = \endcommandexample
+ \interlinepenalty = 50
+ %
+ \commandstrue
+ \ignorespaces
+}
+
+% The \endgroup that \enddescriptions does must come after the page
+% break, so the last page of descriptions will get a mini-index.
+%
+\def\enddescriptions{%
+ \vskip -\lastskip % undo the skip created by \enddesc
+ \endit{DESCRIPTIONS}%
+ \ignorespaces
+}
+
+
+% Begin or end the description of a control sequence or group thereof.
+%
+\def\begindesc{%
+ \par % force vertical mode
+ \saveskip = \lastskip % will be 0 if no skip
+ \ifheading % Did we just have \section or \subsection?
+ \nobreak
+ \else
+ \cmdbreak
+ \fi
+ \combineskips\abovedescriptionskip
+ \headingfalse
+ \beginit{DESCRIPTION}%
+ \beginit{COMMANDS}%
+ % Each command name is set as a paragraph (for reasons I don't
+ % remember, \leftline doesn't work because of the way the manuscript
+ % was typed), and so \clubpenalty will be the penalty at the
+ % interline glue (see p.96).
+ \clubpenalty = \intercmdnamepenalty
+ \parfillskip = 0pt plus 1fil
+ \ignorespaces
+}
+
+\def\enddesc{%
+ \nobreak % if we need a break, we'll get it from the next group opener
+ \vskip\belowdescriptionskip
+ \endit{DESCRIPTION}%
+ \ignorespaces
+}
+
+% Begin the explanation of a control sequence. Don't break at the
+% space above the explanation, or the interline glue before the first line.
+%
+\def\explain{%
+ \par
+ \endit{COMMANDS}%
+ \nobreak \vskip\explainskip
+ \interlinepenalty = 50
+ \nobreak \noindent
+ \ignorespaces
+}
+
+% Here is how \example looks in the text:
+% \example
+% ...
+% |
+% \produces
+% ...
+% \endexample
+%
+% repeated an indefinite number of times.
+%
+% We want to set the code of an example in a box so as to prevent it from
+% being broken across pages. By using \vtop we assure that the code is the
+% right distance from the `Example:' line. In order to keep the `produces:'
+% the right distance from the last code line, we save the depth of that code
+% line and then fool TeX into thinking that the \vtop has that depth by
+% assigning it to \prevdepth. If we didn't do this, the last line of the code
+% would be too close to the `produces:' (as indeed it was in earlier versions
+% of the book.
+%
+\newdimen\savedepth
+
+{\makeactive|
+\gdef\commandexample{% a.k.a. \example, inside \begindescriptions.
+ \cmdbreak\vskip\exampleskip
+ \leftline{\it Example:}%
+ \nobreak % At the interline glue.
+ \beginit{EXAMPLE}%
+ \parfillskip = 0pt plus 1fil
+ \hbox\bgroup\hskip\parindent\vtop\bgroup
+ \begincs
+ \let | = \endcode
+ \advance\hsize by -\parindent
+ \parindent = 0pt
+ \bgroup\obeywhitespace
+}}%
+
+\def\endcode{%
+ \egroup % end \obeywhitespace group
+ \par\global\savedepth=\prevdepth
+ \egroup % end inner \vbox
+ \egroup % end outer \hbox
+ \prevdepth = \savedepth
+ \ignorespaces
+}
+
+% \dproduces should be used when the following material is a math
+% display.
+%
+\newif\ifexampledisplay
+\def\dproduces{\global\exampledisplaytrue \produces}
+
+\newif\ifproduces
+
+% \produces puts its material into a vbox so it won't be broken.
+% The material starts in VERTICAL MODE! It uses the plainTeX conventions
+% except that \parindent is 0pt.
+
+\def\produces{%
+ \producestrue
+ \ifodd\pageno \par \nobreak \else \cmdbreak\fi
+ \vskip\tinyskipamount
+ \noindent {\it produces\ifexamplelog\ in the log\examplelogfalse\fi :}%
+ \vadjust{\nobreak}% At the interline glue.
+ \ifexampledisplay
+ \centereddisplays
+ \else
+ \par\nobreak
+ \advance\hsize by -\parindent
+ \savedepth = \prevdepth
+ \nointerlineskip
+ \hbox\bgroup\hskip\normalindent
+ \vtop\bgroup \restoreplainTeX \parindent = 0pt
+ \prevdepth = \savedepth
+ \fi
+}%
+
+% we need another ``produces'' form for when a command puts things in
+% the log. In this case, the produces text also ends with a |.
+%
+\newif\ifexamplelog
+{\makeactive|
+\gdef\logproduces{\examplelogtrue\produces
+ \begincs
+ \def |{\endcode\producesfalse}%
+ % Every line is set as a paragraph, so we get one \parindent for free.
+ % But we also did \advance\leftskip in \produces, so now we have two.
+ % We only want one.
+ \advance\leftskip by -\parindent
+ \bgroup\obeywhitespace
+}}%
+
+\def\nextexample{\endexample\interexampleskip\example}
+
+\def\endcommandexample{%
+ \par % force vertical mode, set previous paragraph
+ \ifproduces \ifexampledisplay \global\exampledisplayfalse \else
+ \global\savedepth = \prevdepth
+ \egroup % Matches the \vtop in either the \produces or the \example.
+ \egroup % Matches the \hbox in \producesbox.
+ \global\producesfalse
+ \par
+ \prevdepth = \savedepth
+ \fi\fi
+ \endit{EXAMPLE}%
+ \ignorespaces
+}
+
+\def\see{%
+ \ifodd\pageno\nobreak\fi % don't put at the top of a verso page
+ \vskip -\lastskip % should be \belowdescriptionskip
+ \bigskip
+ \noindent
+ {\tenbi \spaceskip = 3.33pt plus 2pt minus 1.1pt
+ \parfillskip = 0pt plus 1fil
+ See also: %k \hskip 1em plus .5em minus .25em
+ }%
+ \ignorespaces
+}%
+
+
+\newif\ifxref \xreftrue
+
+% \aux acts as a prefix to a \cts command, specifying that a
+% cross-reference should not be generated.
+%
+\def\aux{\xreffalse}
+
+% So does \easy, which prints a hand, pointing at the control sequence.
+% (The hand font doesn't define an em.)
+%
+\newif\ifeasy
+\let\easy = \easytrue
+\def\testeasy{\ifeasy\llap{\hand\ \kern 6pt}\easyfalse\fi}
+
+% \cts typesets the beginning of a control sequence description, and
+% generates an index entry and cross-reference definition for it. The
+% control sequence name must be delimited by a blank, since there may be
+% parameters that follow. The control sequence name can contain special
+% characters; they are deactivated. The initial \ must be omitted.
+%
+\def\cts{\begingroup \deactivate \ctsA}
+\def\ctsA#1 {\endgroup \ctsB{#1}}
+\def\ctsB#1#2{%
+ \ctsbasic{\\#1}{#2}%
+ \ifxref \ctsxrdef{#1}\else \xreftrue \fi
+ \pix\ctsidxref{#1}%
+}
+
+% \ctsx is like \cts, but separates the control sequence name and the
+% text by more space. (`x' for `extra')
+%
+\def\ctsx{\begingroup \deactivate \ctsxA}
+\def\ctsxA#1 {\endgroup \ctsxB{#1}}
+\def\ctsxB#1#2{%
+ \ctsbasic{\\#1}{\quad #2}%
+ \ifxref \ctsxrdef{#1}\else \xreftrue \fi
+ \pix\ctsidxref{#1}%
+}
+
+
+% \ctscol is like \cts, but doesn't start a new paragraph. It's used in
+% in columns of cs's and their explanations.
+%
+\def\ctscol#1 #2{%
+ {\bt \\#1}\quad #2%
+ \ifxref \ctsxrdef{#1}\else \xreftrue \fi
+ \pix\ctsidxref{#1}%
+}
+
+% \ctsbasic does the actual printing of a cs name. It's needed on its
+% own for `\ '. It does not generate any index or cross-reference
+% entries. #1 is the command name, #2 some (possibly empty) text to go
+% next to it.
+%
+\def\ctsbasic#1#2{%
+ \par
+ \nobreak % At the \parskip glue the \noindent will produce.
+ \noindent\testeasy {{\bt #1}\space #2}%
+}
+
+% \ctsxrdef generates a control sequence cross-reference definition.
+% For example, `\ctsxrdef{@star}' generates a cross-reference definition
+% for `\@star'.
+%
+\def\ctsxrdef#1{\expandafter\xrdef\csname#1\endcsname}
+
+% \ctsact prints an active character #1 and generates an index entry
+% for it. #1 is blank-delimited. \ctsact does not generate a
+% cross-reference definition.
+%
+\def\ctsact{\begingroup \deactivate \ctsactA}
+\def\ctsactA#1 {\endgroup
+ \ctsbasic{#1}{}%
+ \pix\ttidxref{#1}}
+
+% \ctspecial prints a control sequence #1 and generates an index
+% entry for it. #1 is blank-delimited. \ctspecial does not
+% automatically generate a cross-reference definition, and so it's used
+% for things like \newbox and \%.
+%
+\def\ctspecial{\begingroup \deactivate \ctspecialA}
+\def\ctspecialA#1 {\endgroup
+ \ctsbasic{\\#1}{}%
+ \pix\ctsidxref{#1}%
+}
+
+% \ctspecialx is like \ctspecial, but leaves more space after its
+% argument. We want ` and ' to come from cmtt, instead of Optima, so we
+% call \mapquotes before reading the argument. This only affects the \`
+% and \' descriptions.
+%
+\def\ctspecialx{\begingroup \deactivate \mapquotes \ctspecialxA}
+\def\ctspecialxA#1 {\endgroup
+ \ctsbasic{\\#1}{}\quad
+ \pix\ctsidxref{#1}%
+}
+
+% \ctsdisplay has a blank-delimited argument consisting of a control
+% sequence such as alpha. It produces $\alpha$ followed by \alpha.
+%
+\def\ctsdisplay#1 {\basicdisplay {$\csname #1\endcsname$}{\\#1}%
+ \ifxref\ctsxrdef{#1}\else\xreftrue\fi \pix\ctsidxref {#1}}
+
+% \ctsdoubledisplay has a blank-delimited argument consisting of a
+% control sequence such as bigvee. It produces $\bigvee$ and
+% $\big\bigvee$ followed by \bigvee.
+%
+\def\ctsdoubledisplay#1 {
+ {%
+ \symbolspace = 42pt
+ \basicdisplay{$\csname #1\endcsname\quad
+ \displaystyle\csname #1\endcsname$\ddstrut}%
+ {\\#1}%
+ }%
+ \ifxref\ctsxrdef{#1}\else\xreftrue\fi
+ \pix\ctsidxref{#1}%
+}
+\def\ddstrut{\vrule width0pt height15pt depth11pt}
+
+% \ctsydisplay displays a control symbol. #1 is a single character,
+% which may be active. #2 is the cross-reference label,
+% blank-delimited.
+%
+\def\ctsydisplay{\begingroup \deactivate\catcode`\|=\other \ctsydisplayA}
+\def\ctsydisplayA#1 #2 {\endgroup
+ \basicdisplay{$\csname\string#1\endcsname$}{\\#1}%
+ \ifxref \ctsxrdef{#2}\else \xreftrue \fi
+ \pix\ctsidxref{#1}%
+}
+
+% \actdisplay displays an active character. #1 is the character, and
+% #2 is the cross-reference label, blank-delimited.
+%
+\def\actdisplay{\begingroup\catcode `\|=\other\actdisplayA}
+\def\actdisplayA#1 #2 {\endgroup
+ \basicdisplay{$#1$}{\string#1}%
+ \ifxref \xrdef{#2}\else \xreftrue \fi
+ \pix\ttidxref{#1}%
+}
+
+% \basicdisplay does the actual typesetting of a control sequence name.
+% for inside displays.
+%
+\def\basicdisplay#1#2{\testeasy\hbox to \symbolspace{#1\hfil}{\bt #2}}
+
+% Printing parameter and table entry headings.
+%
+\def\param#1{\printparam{#1}{parameter}}
+\def\tblentry#1{\printparam{#1}{table entry}}
+\def\printparam#1#2{\hskip1.5em [\kern3pt \<#1> #2\kern2pt]}
+
+% Required braces.
+%
+\def\rqbraces#1{\{\hskip2pt#1\hskip2pt\}}
+
+% Printing rulers.
+%
+\def\1{\vrule height 0pt depth 2pt}
+\def\2{\vrule height 0pt depth 4pt}
+\def\3{\vrule height 0pt depth 6pt}
+\def\4{\vrule height 0pt depth 8pt}
+\def\ruler#1#2#3{{$\vcenter{\hrule\hbox{\4#1}}\,\,\rm#2\,{#3}$}}
+\def\doruler{\par \noindent\ruler}
+\def\tick#1{\hbox to .125in{\hfil#1}}
+\def\8{\tick\1\tick\2\tick\1\tick\3\tick\1\tick\2\tick\1\tick\4}
+
+% Macros for the capsule summary chapter.
+%
+\def\begincapsum{\beginit{CAPSULE SUMMARY}%
+ \let\bt = \tentt
+ \bigskip
+}
+
+\def\endcapsum{\endit{CAPSULE SUMMARY}}
+
+\newbox\@primitivebox \setbox\@primitivebox = \hbox{\tt *}
+\newif\ifcs
+
+\def\capline{\begingroup \deactivate\catcode `\| = \other \caplineA}
+\def\caplineA#1 {\endgroup
+ \begingroup
+ \catcode `@ = \letter % for constructing labels
+ \caplineB{#1}%
+}
+
+% Parameters of \caplineB:
+% #1 name of control sequence
+% #2 description
+% #3 * or empty
+% #4 xref or xref1:xref2 or empty
+
+\def\caplineB#1#2#3#4{%
+ \ifempty {#4}\temptrue\else\tempfalse\fi
+ % \iftemp needed to avoid \if ... \else ... \fi nesting problems
+ \ifcs
+ \toks0 = {\caplineout{\\#1}{#2}{#3}}%
+ \iftemp
+ \toks1 = \expandafter{\csname #1\endcsname}%
+ \else
+ \toks1 = {#4}%
+ \fi
+ \edef\nextaction{\the\toks0 {\the\toks1}}%
+ \nextaction
+ \ctsidxref {#1}%
+ \else
+ % The \space makes one-character entries line up nicely.
+ \caplineout{\space #1}{#2}{#3}{#4}%
+ \ttidxref {#1}%
+ \fi
+ \endgroup
+}
+
+\newif\iftemp
+
+
+% In a few cases we have two cross-references for a single control
+% sequence.
+%
+\newif\ifcstwo
+
+\def\capac{\cstwofalse\csfalse\capline}
+\def\capactwo{\cstwotrue\csfalse\capline}
+\def\capcs{\cstwofalse\cstrue\capline}
+\def\capcstwo{\cstwotrue\cstrue\capline}
+
+% \caplineout produces an output line (or several lines) for the capsule
+% summary. #1 is the command text, #2 is the description, #3 is either * or
+% empty, and #4 is the cross-reference label.
+%
+\def\caplineout#1#2#3#4{%
+ \setbox0 = \ifempty {#3}\box\voidb@x \else \copy\@primitivebox\fi
+ \vskip\intercapsuleskip
+ % If we use \vbox here, a multi-line summary at the top of a page
+ % will cause \topskip to disappear.
+ %
+ \vtop{\noindent \hangindent = \capsulehangindent
+ \spaceskip = 3.33pt plus 2pt minus 1.5pt
+ \rightskip = 0pt plus 4em % a little more stretch
+ \parfillskip = 0pt plus 1fil
+ \llap{\box0}{\bt #1}% Bold typewriter for the cs name.
+ \quad \hskip 0pt plus 1pt minus 1pt
+ #2\unskip\
+ (\ifcstwo \tworefs #4:\else \xref{#4}\fi)%
+ }%
+ \par
+}
+
+\def\tworefs#1:#2:{\xref{#1}, \xref{#2}}
+
+
+
+% Macros for printing the index.
+%
+% Set up to print it.
+%
+\def\beginindex{%
+ \doublecolumns
+ \beginit{THE INDEX}
+ \markinfo{\chaptername}%
+ \indexfonts
+ \parindent = 0pt
+ \def\pp##1{{\it ##1}} % Principal entry.
+ \def\c{,\thinspace\allowbreak}%
+ \def\ic{,\quad}
+ \def\see##1{.\quad{\it See} ##1 }
+ \def\seealso##1{\hfil\break{\it See also} ##1 }
+ \let\r = \romannumeral
+
+ \raggedright
+}
+
+\def\endindex{\endit{THE INDEX}\singlecolumn}
+
+
+% #1 is the level of this index entry minus 1 (i.e., 0 for a main
+% entry), #2 is the index term, #3 is the kind of term
+% (T for ttfont, C for control sequence, N for normal), and
+% #4 is the list of pages. The page list can have \pp (principal
+% entry)in it, and each page is separated by \c.
+%
+\def\indexentry#1#2#3#4{%
+ \beginit{INDEX ENTRY}%
+ \leftskip = #1\indexpageindent
+ \par
+ \leavevmode
+ \hangindent = \indexlevelindent
+ \ifx #3T%
+ {\tt #2}% Typewriter.
+ \else \ifx #3C%
+ {\tt \llap{\\}#2}% Control sequence.
+ \else
+ % in normal entries, \b and \e enclose a group. ({ and } don't work.)
+ {\let \b = \bgroup \let \e = \egroup #2}%
+ \fi\fi
+ #4% The list of pages.
+ \par
+ \endit{INDEX ENTRY}%
+}
+
+% Nah, let's forget printing the initial.
+%
+\def\indexgroup#1{%
+ \bigskip
+}
+
+
+
+% Code formatting.
+%
+%
+% Turn off normally special characters.
+%
+\def\deactivate{%
+ \catcode`\\ = \other \catcode`\{ = \other \catcode`\} = \other
+ \catcode`\$ = \other \catcode`\& = \other \catcode`\# = \other
+ \catcode`\% = \other \catcode`\~ = \other \catcode`\^ = \other
+ \catcode`\_ = \other
+}
+
+% It is convenient to have |...| mean print the ... verbatim, except for !.
+% (But | should just be a vertical bar in math mode.) This should be
+% used only for inline code; returns inside |...| become spaces.
+%
+\catcode`\| = \active
+\def|{%
+ \ifmmode
+ \vert
+ \else
+ \begingroup
+ \obeyspaces
+ \begincs
+ \let| = \endgroup
+ \fi
+}
+
+% \csdisplay is similar, but it inserts glue before and after.
+% It also is ended by |, so we have to redefine that.
+%
+\def\csdisplay{%
+ \par
+ \nobreak % don't break above displays
+ \vskip\abovedisplayskip
+ \begingroup
+ \interlinepenalty = 10000
+ \obeywhitespace
+ \begincs
+ \def|{\endgroup\vskip\belowdisplayskip \noindent\ignorespaces}%
+}
+
+% \begincs does the setup for verbatim printing. It does not confine
+% its effects to a group.
+%
+\def\begincs{%
+ \hfuzz = \codefuzz
+ \parfillskip = 0pt plus 1fil
+ \parskip = 0pt % don't stretch interparagraph space within code displays
+ \catcode`\! = 0
+ \let\! = \exclam
+ \let\| = \verticalbar
+ \let\$ = $%
+ \let\. = \empty % Use !. to end a control sequence to be executed.
+ \def\-{\discretionary{-}{}{}}% but allow explicit discretionary hyphens
+ \tt \deactivate
+}
+
+
+\chardef\exclam = `\!
+\chardef\verticalbar = `\|
+
+% In math mode we want vertical bars and exclamation points to be
+% regular characters again.
+%
+\everymath = {\setmathchars}
+\everydisplay = {\setmathchars}
+\leftdisplays
+
+\def\setmathchars{%
+ \catcode`\| = \other \catcode`\! = \other
+ \let\{ = \lbrace \let\} = \rbrace
+}
+
+
+
+
+% Some miscellanous macros.
+%
+\def\anatomy{anatomy of \TeX}
+\def\ascii{{\ninerm ASCII}}
+\def\asciichar#1{$\langle \rm #1\rangle$}
+\def\bblfile{{\tt .bbl} file}
+\def\bibfile{{\tt .bib} file}
+\def\bstfile{{\tt .bst} file}
+\def\didotpt{did\^ot point}
+\def\dvifile{{\tt .dvi} file}
+\def\em{\thinspace {\rm em}}
+\def\emph#1{{\it #1}\itcorr} % Emphasize.
+\def\ftp{{\tt ftp}}
+\def\gffile{{\tt .gf} file}
+\def\hand{{\handfont A}}
+\def\ifatest{{\tt \\if} test}
+\chardef\inches = "7D
+\def\knuth#1{#1 of \texbook}
+\let\Metafont = \MF
+\def\Mperiod.{$M$\kern-1.6pt.}
+\def\Mprimecomma,{$M'$\kern-3.5pt,}
+\def\Mprimeperiod.{$M'$\kern-2.5pt.}
+\def\mud{\thinspace {\rm mu}} % can't use \mu; it'a a Greek letter!
+\def\newTeX{new \TeX}
+\def\p{p.\thinspace}
+\def\pkfile{{\tt .pk} file}
+\def\plainTeX{plain \TeX}
+\def\PlainTeX{Plain \TeX}
+\def\pp{p\p}
+\def\pt{\thinspace {\rm pt}}
+\def\pxlfile{{\tt .pxl} file}
+\def\tequiv{\unskip $\>\equiv\>$} % equivalence in text
+\def\texbook{{\sl The \TeX book}\itcorr}
+\let\tex@ = \TeX
+\def\TeX{\tex@\null}
+\def\TeXMeX{\TeX\ M\kern-.11em\lower .5ex\hbox{E}\kern-.125em X\null}%
+\def\tfmfile{{\tt .tfm} file}
+\def\thisbook{{\sl \TeX\ for the Impatient\/}}
+\let\ths = \thinspace
+\def\tminus{\unskip\allowbreak $\>-\>$\allowbreak} % minus in text
+\def\tplus{\unskip\allowbreak $\>+\>$\allowbreak} % plus in text
+\def\TUG{\TeX{} Users Group}
+\def\Vcomma,{$V$\kern-2pt,}
+\def\visiblespace{{\tentt \char'040}}
+\def\Vperiod.{$V$\kern-2pt.}
+\let\vs=\visiblespace
+\def\xrefpg#1{page~\xrefn{#1}}
+
+% \tighten attempts to shorten the number of lines occupied by a paragraph.
+\def\tighten{\looseness=-1
+ \spaceskip = .9\fontdimen2\font plus \fontdimen3\font
+ minus 1.1\fontdimen4\font
+}
+
+% \itcorr can be used at the end of a macro that puts its argument in
+% italics in order to produce an italic correction just when it's needed.
+% It won't look inside a following macro call, however.
+
+\def\itcorr{\futurelet\next\itcorrA}
+\def\itcorrA{\ifx.\next\else\ifx,\next\else\/\fi\fi}
+
+
+% Arrange N items in three columns.
+% A right brace is needed at the end of the list to match the \bgroup.
+%
+\def\threecolumns{\nobreak\vskip\abovedisplayskip\dothreecolumns}
+
+\def\dothreecolumns#1 {\bgroup
+ \parindent = 0pt
+ \makecolumns #1/3:
+}
+
+% We don't want to make < an active character because then it cannot be used
+% in \ifnum tests. So, \<foo> denotes a nonterminal `foo'.
+%
+\def\<#1>{$\langle${\rm\it \kern-.2pt #1\kern.65pt}$\rangle$}
+
+\let\beginit = \environment
+\let\endit = \endenvironment
+
+\def\eatpar#1\par{}
+
+% \needspace breaks out the page if there's less than #1 left on it.
+
+\def\needspace#1{%
+ \saveskip = \lastskip
+ \par % force vertical mode
+ \vfil
+ \penalty 1000
+ \vskip #1
+ \penalty9999
+ \par % exercise the page builder
+ \vskip -#1 plus -1fil
+ \vskip -\saveskip \vskip \saveskip % to restore \lastskip
+}
+
+
+
+
+% Expanded cross-referencing for various parts of the books.
+%
+
+% Sometimes it is clearer to refer to a cross-reference as a control
+% sequence.
+%
+\def\ctsref{\begingroup \catcode`\@ = \letter \@ctsref}
+\def\@ctsref#1{(\xref{#1})\endgroup}
+
+\def\xrefdelim[#1]{page~\xrefn{#1}} % this form doesn't need braces
+
+% This command comes at the beginning of chapters, after the \chapter
+% command and before the text. Hence the \par in the template
+% and the \noindent
+%
+\def\chapterdef#1#2\par{%
+ \@writeaux{%
+ \string\gdef\expandafter\string
+ \csname#1_C\endcsname{\the\chapterno}}%
+ \noindent
+}
+
+\def\chapternum#1{%
+ \def\csn{#1_C}%
+ \expandafter\ifx\csname\csn\endcsname \relax
+ \expandafter\def\csname\csn\endcsname{`#1'}%
+ \ifxrefwarning
+ \message{Undefined chapter `#1'.}%
+ \fi
+ \fi
+ \csname\csn\endcsname
+}
+
+\def\chapterref#1{Section~\chapternum{#1}}
+
+\def\headcit#1#2{``{\rm #1}'' (\xref{#2})}
+
+\def\conceptcit#1{\headcit{#1}{#1}}
+
+\def\seeconcept#1{(see ``{\rm #1}'', \xref{#1})}
+
+
+
+
+% Special types of pictures.
+%
+% Glue pictures:
+%
+\newdimen\glueboxwidth
+\newdimen\boxdepth \boxdepth = 3.5pc
+\newskip\underlabel \underlabel= .1\boxdepth % space under `width n'.
+\def\squeezeglue{\glueboxwidth = .725\glueboxwidth}
+
+\def\labelledbox#1 #2 #3{\vtop{%
+ \hrule
+ \hbox{%
+ \vrule
+ \hbox to #1{\hfil \vbox to #2{\vfil#3\vskip\underlabel}\hfil}%
+ \vrule
+ }%
+ \hrule
+}}%
+
+% Make a picture of a box.
+%
+\def\picbox#1 {%
+ \glueboxwidth = #1pc \squeezeglue
+ \vtop{%
+ \hbox to \glueboxwidth{\strut \hfil {\it box}\hfil}%
+ \labelledbox % Have to have spaces after the arguments.
+ {\glueboxwidth}
+ {\boxdepth}
+ {\halign{\hfil##\hfil\cr width #1\cr}}%
+ }%
+}
+
+% And of glue.
+%
+\def\gluebox#1 #2 #3 #4 {\vtop{%
+ \glueboxwidth = #4pc \squeezeglue
+ \hbox to \glueboxwidth{\strut \hfil {\it glue}\hfil}%
+ \nointerlineskip
+ \kern2pt % to move the brace down a bit
+ \hbox{$\overbrace{\hbox{\hskip\glueboxwidth}}$}%
+ \kern-3pt % The \overbrace puts in 3pt below itself.
+ \nointerlineskip
+ \vbox to \boxdepth{%
+ \hsize = \glueboxwidth
+ \vskip 2pt
+ \advance\baselineskip by -2pt
+ \centerline{\strut size #1}%
+ \centerline{stretch #2}%
+ \centerline{shrink #3}%
+ \centerline{width #4}%
+ \vss
+ }%
+ \kern 1.5pt % I don't know why this is needed.
+ \nointerlineskip
+ \hbox{$\underbrace{\hbox{\hskip\glueboxwidth}}$}%
+}}
+
+\def\gluepicture#1 #2{{\ninerm
+ \medskip
+ \vtop{%
+ \setbox0 = \hbox{#2}% The glue and box pictures.
+ \glueboxwidth = \wd0
+ \leftline{\box0}%
+ \kern 6pt
+ \hbox to \glueboxwidth{\leftarrowfill{ width #1 }\rightarrowfill}%
+ }%
+ \medskip
+}}
+
+% Box pictures.
+%
+% Set up a `reference point' and the macro for a labelled height, for use
+% in forming pictures of boxes.
+%
+\newbox\refpoint
+
+\setbox\refpoint = \vbox to 0pt{%
+ \kern-2.6pt
+ \hbox to 0pt{\kern-2.2pt $\bullet$\hss}
+ \vss
+}%
+
+\def\labelledheight#1#2{%
+\vtop to #1{\offinterlineskip
+ \setbox0=\hbox{#2}\skip0=\wd0
+ \hbox to \skip0{\hss\tenex\char"78\hss}\kern-4pt
+ {\cleaders\hbox to \skip0{\hss\tenex\char"3F\hss}\vfil}%
+ \vskip1pt\box0\vskip1pt
+ {\cleaders\hbox to \skip0{\hss\tenex\char"3F\hss}\vfil}%
+ \kern -6pt\boxmaxdepth 0pt\hbox to \skip0{\hss\tenex\char"79\hss}}}
+
+
+
+% Paul's updates -- no longer needed; we have converged.
+%
+%\input paulmacs
+
+% Read the cross-reference definitions.
+%
+\readauxfile
+
+\catcode`\@ = \other % Make @ an `other' character again.
+\catcode`\^ = \active % Make ^'s do indexing outside of math mode.
diff --git a/Master/texmf-doc/doc/english/impatient/math.tex b/Master/texmf-doc/doc/english/impatient/math.tex
new file mode 100644
index 00000000000..31d7f1aa157
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/math.tex
@@ -0,0 +1,2190 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+% See file fdl.tex for copying conditions.
+
+\input macros
+\chapter {Commands \linebreak for composing \linebreak math formulas}
+
+\bix^^{math}
+\chapterdef{math}
+
+This section covers commands for constructing math formulas.
+For an explanation of the conventions used in this section,
+see \headcit{Descriptions of the commands}{cmddesc}.
+
+\begindescriptions
+%==========================================================================
+\section {Simple parts of formulas}
+
+%==========================================================================
+\subsection {Greek letters}
+
+\begindesc
+\bix^^{Greek letters}
+\dothreecolumns 40
+\easy\ctsdisplay alpha {}
+\ctsdisplay beta {}
+\ctsdisplay chi {}
+\ctsdisplay delta {}
+\ctsdisplay Delta {}
+\ctsdisplay epsilon {}
+\ctsdisplay varepsilon {}
+\ctsdisplay eta {}
+\ctsdisplay gamma {}
+\ctsdisplay Gamma {}
+\ctsdisplay iota {}
+\ctsdisplay kappa {}
+\ctsdisplay lambda {}
+\ctsdisplay Lambda {}
+\ctsdisplay mu {}
+\ctsdisplay nu {}
+\ctsdisplay omega {}
+\ctsdisplay Omega {}
+\ctsdisplay phi {}
+\ctsdisplay varphi {}
+\ctsdisplay Phi {}
+\ctsdisplay pi {}
+\ctsdisplay varpi {}
+\ctsdisplay Pi {}
+\ctsdisplay psi {}
+\ctsdisplay Psi {}
+\ctsdisplay rho {}
+\ctsdisplay varrho {}
+\ctsdisplay sigma {}
+\ctsdisplay varsigma {}
+\ctsdisplay Sigma {}
+\ctsdisplay tau {}
+\ctsdisplay theta {}
+\ctsdisplay vartheta {}
+\ctsdisplay Theta {}
+\ctsdisplay upsilon {}
+\ctsdisplay Upsilon {}
+\ctsdisplay xi {}
+\ctsdisplay Xi {}
+\ctsdisplay zeta {}
+\egroup
+\explain
+These commands produce Greek letters suitable for mathematics.
+You can only use them
+within a math formula, so if you need a Greek letter within ordinary
+text you must enclose it in dollar signs (|$|). \TeX\ does not have
+commands for Greek letters that look like their roman
+counterparts, since you can get them by using those roman
+counterparts. For example, you can get a lowercase
+^{omicron} in a formula by writing the letter `o', i.e.,
+`|{\rm o}|' or an uppercase ^{beta} (`B') by writing
+`|{\rm B}|'.
+
+Don't confuse the following letters:
+\ulist \compact
+\li |\upsilon| (`$\upsilon$'), |{\rm v}| (`v'), and |\nu| (`$\nu$').
+\li |\varsigma| (`$\varsigma$') and |\zeta| (`$\zeta$').
+\endulist
+
+You can get slanted capital Greek letters by using the math italic
+(|\mit|) \minref{font}.
+
+\TeX\ treats Greek letters as ordinary symbols when it's figuring how
+much space to put around them.
+
+\example
+If $\rho$ and $\theta$ are both positive, then $f(\theta)
+-{\mit \Gamma}_{\theta} < f(\rho)-{\mit \Gamma}_{\rho}$.
+|
+\produces
+If $\rho$ and $\theta$ are both positive, then
+$f(\theta)-{\mit \Gamma}_{\theta} < f(\rho)-{\mit \Gamma}_{\rho}$.
+\endexample
+\eix^^{Greek letters}
+\enddesc
+
+%==========================================================================
+\subsection {Miscellaneous ordinary math symbols}
+
+\begindesc
+\xrdef{specsyms}
+\dothreecolumns 34
+\easy\ctsdisplay infty {}
+\ctsdisplay Re {}
+\ctsdisplay Im {}
+\ctsdisplay angle {}
+\ctsdisplay triangle {}
+\ctsdisplay backslash {}
+\ctsdisplay vert {}
+\ctsydisplay | @bar {}
+\ctsdisplay Vert {}
+\ctsdisplay emptyset {}
+\ctsdisplay bot {}
+\ctsdisplay top {}
+\ctsdisplay exists {}
+\ctsdisplay forall {}
+\ctsdisplay hbar {}
+\ctsdisplay ell {}
+\ctsdisplay aleph {}
+\ctsdisplay imath {}
+\ctsdisplay jmath {}
+\ctsdisplay nabla {}
+\ctsdisplay neg {}
+\ctsdisplay lnot {}
+\actdisplay ' @prime \ (apostrophe)
+\ctsdisplay prime {}
+\ctsdisplay partial {}
+\ctsdisplay surd {}
+\ctsdisplay wp {}
+\ctsdisplay flat {}
+\ctsdisplay sharp {}
+\ctsdisplay natural {}
+\ctsdisplay clubsuit {}
+\ctsdisplay diamondsuit {}
+\ctsdisplay heartsuit {}
+\ctsdisplay spadesuit {}
+\egroup
+\explain
+^^{music symbols} ^^{card suits}
+These commands produce various symbols. They are called
+``^{ordinary symbol}s'' to distinguish them from other classes of
+symbols such as relations. You can only use
+an ordinary symbol
+within a math formula, so if you need an ordinary symbol within ordinary text
+you must enclose it in dollar signs (|$|).
+
+The commands |\imath| and |\jmath| are useful when you need to put an
+accent on top of an `$i$' or a `$j$'.
+
+An apostrophe (|'|) is a short way of writing a superscript |\prime|. (The
+|\prime| command by itself generates a big ugly prime.)
+
+The |\!|| and ^|\Vert| commands are synonymous, as
+are the ^|\neg| and ^|\lnot| commands.
+\margin{explanation of {\tt\\vert} added}
+The |\vert| command produces the same result as `|!||'.
+\indexchar |
+
+The symbols produced by |\backslash|, |\vert|, and |\Vert|
+are \minref{delimiter}s. These symbols can be produced in larger sizes
+by using ^|\bigm| et al.\ (\xref \bigm).
+
+\example
+The Knave of $\heartsuit$s, he stole some tarts.
+|
+\produces
+The Knave of $\heartsuit$s, he stole some tarts.
+\nextexample
+If $\hat\imath < \hat\jmath$ then $i' \leq j^\prime$.
+|
+\produces
+If $\hat\imath < \hat\jmath$ then $i' \leq j^\prime$.
+\nextexample
+$${{x-a}\over{x+a}}\biggm\backslash{{y-b}\over{y+b}}$$
+|
+\dproduces
+$${{x-a}\over{x+a}}\biggm\backslash{{y-b}\over{y+b}}$$
+\endexample
+\enddesc
+
+%==========================================================================
+\subsection {Binary operations}
+
+\begindesc
+\bix^^{operations}
+\xrdef{binops}
+\dothreecolumns 34
+\easy\ctsdisplay vee {}
+\ctsdisplay wedge {}
+\ctsdisplay amalg {}
+\ctsdisplay cap {}
+\ctsdisplay cup {}
+\ctsdisplay uplus {}
+\ctsdisplay sqcap {}
+\ctsdisplay sqcup {}
+\ctsdisplay dagger {}
+\ctsdisplay ddagger {}
+\ctsdisplay land {}
+\ctsdisplay lor {}
+\ctsdisplay cdot {}
+\ctsdisplay diamond {}
+\ctsdisplay bullet {}
+\ctsdisplay circ {}
+\ctsdisplay bigcirc {}
+\ctsdisplay odot {}
+\ctsdisplay ominus {}
+\ctsdisplay oplus {}
+\ctsdisplay oslash {}
+\ctsdisplay otimes {}
+\ctsdisplay pm {}
+\ctsdisplay mp {}
+\ctsdisplay triangleleft {}
+\ctsdisplay triangleright {}
+\ctsdisplay bigtriangledown {}
+\ctsdisplay bigtriangleup {}
+\ctsdisplay ast {}
+\ctsdisplay star {}
+\ctsdisplay times {}
+\ctsdisplay div {}
+\ctsdisplay setminus {}
+\ctsdisplay wr {}
+\egroup
+\explain
+These commands produce the symbols for various binary operations.
+Binary operations are one of \TeX's \minref{class}es of math symbols.
+\TeX\ puts different amounts of space around different classes of math
+symbols. When \TeX\ needs to break a line of text within a math
+formula, \minrefs{line break} it will consider placing the break
+after a binary operation---but only if
+the operation is at the outermost level of
+the formula, i.e., not enclosed in~a~group.
+
+In addition to these commands, \TeX\ also treats `|+|' and `|-|'
+as binary operations. It considers `|/|' to be an ordinary symbol,
+despite the fact that mathematically it is a binary operation,
+because it looks better with less space around it.
+
+\example
+$$z = x \div y \quad \hbox{if and only if} \quad
+z \times y = x \;\hbox{and}\; y \neq 0$$
+|
+\dproduces
+$$z = x \div y \quad \hbox{if and only if} \quad
+z \times y = x \;\hbox{and}\; y \neq 0$$
+\endexample
+\enddesc
+
+\begindesc
+\ctspecial * \ctsxrdef{@star}
+\explain
+The |\*| command indicates a discretionary multiplication symbol
+($\times$), which is a binary operation. This multiplication symbol
+behaves like a discretionary hyphen when it appears in a formula within
+text\minrefs{text math}. That is, \TeX\ will typeset the |\times|
+symbol \emph{only} if the formula needs to be broken at that point.
+There's no point in using |\*| in a displayed formula \minrefs{display
+math} since \TeX\ never breaks displayed formulas on its own.
+
+\example
+Let $c = a\*b$. In the case that $c=0$ or $c=1$, let
+$\Delta$ be $(\hbox{the smallest $q$})\*(\hbox{the
+largest $q$})$ in the set of approximate $\tau$-values.
+|
+\produces
+Let $c = a\*b$. In the case that $c=0$ or $c=1$, let
+$\Delta$ be $(\hbox{the smallest $q$})\*(\hbox{the
+largest $q$})$ in the set of approximate $\tau$-values.
+
+\eix^^{operations}
+\endexample
+\enddesc
+
+%==========================================================================
+\subsection {Relations}
+
+\begindesc
+\xrdef {relations}
+\bix^^{relations}
+\dothreecolumns 39
+\easy\ctsdisplay asymp {}
+\ctsdisplay cong {}
+\ctsdisplay dashv {}
+\ctsdisplay vdash {}
+\ctsdisplay perp {}
+\ctsdisplay mid {}
+\ctsdisplay parallel {}
+\ctsdisplay doteq {}
+\ctsdisplay equiv {}
+\ctsdisplay ge {}
+\ctsdisplay geq {}
+\ctsdisplay le {}
+\ctsdisplay leq {}
+\ctsdisplay gg {}
+\ctsdisplay ll {}
+\ctsdisplay models {}
+\ctsdisplay ne {}
+\ctsdisplay neq {}
+\ctsdisplay notin {}
+\ctsdisplay in {}
+\ctsdisplay ni {}
+\ctsdisplay owns {}
+\ctsdisplay prec {}
+\ctsdisplay preceq {}
+\ctsdisplay succ {}
+\ctsdisplay succeq {}
+\ctsdisplay bowtie {}
+\ctsdisplay propto {}
+\ctsdisplay approx {}
+\ctsdisplay sim {}
+\ctsdisplay simeq {}
+\ctsdisplay frown {}
+\ctsdisplay smile {}
+\ctsdisplay subset {}
+\ctsdisplay subseteq {}
+\ctsdisplay supset {}
+\ctsdisplay supseteq {}
+\ctsdisplay sqsubseteq {}
+\ctsdisplay sqsupseteq {}
+\egroup
+\explain
+These commands produce the symbols for various relations.
+Relations are one of \TeX's \minref{class}es of math symbols.
+\TeX\ puts different amounts of space
+around different \minref{class}es of math symbols.
+When \TeX\ needs to break a line of text
+within a math formula, \minrefs{line break} it will consider
+placing the break after a relation---but only if
+the relation is at the outermost level of the formula,
+i.e., not enclosed in a group.
+
+In addition to the commands listed here, \TeX\ treats `^|=|' and the
+``arrow'' commands (\xref{arrows}) as relations.
+
+Certain relations have more than one command that you can use
+to produce them:
+\ulist \compact
+\li `$\ge$' (|\ge| and |\geq|).
+\li `$\le$' (|\le| and |\leq|).
+\li `$\ne$' (|\ne|, |\neq|, and |\not=|).
+\li `$\ni$' (|\ni| and |\owns|).
+\endulist
+
+\xrdef{\not}
+You can produce negated relations by prefixing them with |\not|, as follows:
+
+\nobreak
+\threecolumns 21
+\basicdisplay {$\not\asymp$}{\\not\\asymp}\ctsidxref{asymp}
+\basicdisplay {$\not\cong$}{\\not\\cong}\ctsidxref{cong}
+\basicdisplay {$\not\equiv$}{\\not\\equiv}\ctsidxref{equiv}
+\basicdisplay {$\not=$}{\\not=}\ttidxref{=}
+\basicdisplay {$\not\ge$}{\\not\\ge}\ctsidxref{ge}
+\basicdisplay {$\not\geq$}{\\not\\geq}\ctsidxref{geq}
+\basicdisplay {$\not\le$}{\\not\\le}\ctsidxref{le}
+\basicdisplay {$\not\leq$}{\\not\\leq}\ctsidxref{leq}
+\basicdisplay {$\not\prec$}{\\not\\prec}\ctsidxref{prec}
+\basicdisplay {$\not\preceq$}{\\not\\preceq}\ctsidxref{preceq}
+\basicdisplay {$\not\succ$}{\\not\\succ}\ctsidxref{succ}
+\basicdisplay {$\not\succeq$}{\\not\\succeq}\ctsidxref{succeq}
+\basicdisplay {$\not\approx$}{\\not\\approx}\ctsidxref{approx}
+\basicdisplay {$\not\sim$}{\\not\\sim}\ctsidxref{sim}
+\basicdisplay {$\not\simeq$}{\\not\\simeq}\ctsidxref{simeq}
+\basicdisplay {$\not\subset$}{\\not\\subset}\ctsidxref{subset}
+\basicdisplay {$\not\subseteq$}{\\not\\subseteq}\ctsidxref{subseteq}
+\basicdisplay {$\not\supset$}{\\not\\supset}\ctsidxref{supset}
+\basicdisplay {$\not\supseteq$}{\\not\\supseteq}\ctsidxref{supseteq}
+\basicdisplay {$\not\sqsubseteq$}{\\not\\sqsubseteq}%
+ \ctsidxref{sqsubseteq}
+\basicdisplay {$\not\sqsupseteq$}{\\not\\sqsupseteq}%
+ \ctsidxref{sqsupseteq}
+\egroup
+
+\example
+We can show that $AB \perp AC$, and that
+$\triangle ABF \not\sim \triangle ACF$.
+|
+\produces
+We can show that $AB \perp AC$, and that
+$\triangle ABF \not\sim \triangle ACF$.
+
+\eix^^{relations}
+\endexample
+\enddesc
+
+%==========================================================================
+\subsection {Left and right delimiters}
+
+\begindesc
+\bix^^{delimiters}
+%
+\dothreecolumns 12
+\easy\ctsdisplay lbrace {}
+\ctsydisplay { @lbrace {}
+\ctsdisplay rbrace {}
+\ctsydisplay } @rbrace {}
+\ctsdisplay lbrack {}
+\ctsdisplay rbrack {}
+\ctsdisplay langle {}
+\ctsdisplay rangle {}
+\ctsdisplay lceil {}
+\ctsdisplay rceil {}
+\ctsdisplay lfloor {}
+\ctsdisplay rfloor {}
+\egroup
+\explain
+These commands produce left and right \minref{delimiter}s.
+Mathematicians use delimiters to indicate the boundaries between parts
+of a formula. Left delimiters are also called ``^{opening}s'', and
+right delimiters are also called ``^{closing}s''. Openings and closings
+are two of \TeX's \minref{class}es of math symbols. \TeX\ puts
+different amounts of space around different \minref{class}es of math
+symbols. You might expect the space that \TeX\ puts around openings and
+closings to be symmetrical, but in fact it isn't.
+
+Some left and right delimiters have more than one command that you can
+use to produce them:
+
+\ulist\compact
+\li `$\{$' (|\lbrace| and |\{|)
+\li `$\}$' (|\rbrace| and |\}|)
+\li `$[$' (|\lbrack| and `|[|')
+\li `$]$' (|\rbrack| and `|]|')
+\endulist
+\noindent You can also use the left and right bracket characters
+(in either form) outside of math mode.
+
+In addition to these commands, \TeX\ treats `|(|' as a left
+delimiter and `|)|' as a right delimiter.
+
+You can have \TeX\
+choose the size for a delimiter by using |\left| and |\right| (\xref\left).
+Alternatively,
+you can get a delimiter of a specific size by using one of the |\big|$x$
+commands (see |\big| et al., \xref{\big}).
+
+\example
+The set $\{\,x \mid x>0\,\}$ is empty.
+|
+\produces
+The set $\{\,x \mid x>0\,\}$ is empty.
+
+\eix^^{delimiters}
+\endexample
+\enddesc
+
+%==========================================================================
+\subsection {Arrows}
+
+\begindesc
+\bix^^{arrows}
+\xrdef{arrows}
+%
+{\symbolspace=24pt \makecolumns 34/2:
+\easy%
+\ctsdisplay leftarrow {}
+\ctsdisplay gets {}
+\ctsdisplay Leftarrow {}
+\ctsdisplay rightarrow {}
+\ctsdisplay to {}
+\ctsdisplay Rightarrow {}
+\ctsdisplay leftrightarrow {}
+\ctsdisplay Leftrightarrow {}
+\ctsdisplay longleftarrow {}
+\ctsdisplay Longleftarrow {}
+\ctsdisplay longrightarrow {}
+\ctsdisplay Longrightarrow {}
+\ctsdisplay longleftrightarrow {}
+\ctsdisplay Longleftrightarrow {}
+\basicdisplay {$\Longleftrightarrow$}{\\iff}\pix\ctsidxref{iff}\xrdef{\iff}
+\ctsdisplay hookleftarrow {}
+\ctsdisplay hookrightarrow {}
+\ctsdisplay leftharpoondown {}
+\ctsdisplay rightharpoondown {}
+\ctsdisplay leftharpoonup {}
+\ctsdisplay rightharpoonup {}
+\ctsdisplay rightleftharpoons {}
+\ctsdisplay mapsto {}
+\ctsdisplay longmapsto {}
+\ctsdisplay downarrow {}
+\ctsdisplay Downarrow {}
+\ctsdisplay uparrow {}
+\ctsdisplay Uparrow {}
+\ctsdisplay updownarrow {}
+\ctsdisplay Updownarrow {}
+\ctsdisplay nearrow {}
+\ctsdisplay searrow {}
+\ctsdisplay nwarrow {}
+\ctsdisplay swarrow {}
+}
+\explain
+These commands provide arrows of different kinds. They
+are classified as relations (\xref{relations}).
+The vertical arrows in the list are also \minref{delimiter}s, so you can make
+them larger by using |\big| et al.\ (\xref \big).
+
+The command |\iff| differs from |\Longleftrightarrow| in that
+it produces extra space to the left and right of the arrow.
+
+You can place symbols or other legends on top of a left or right arrow
+with |\buildrel| (\xref \buildrel).
+
+\example
+$$f(x)\mapsto f(y) \iff x \mapsto y$$
+|
+\dproduces
+$$f(x)\mapsto f(y) \iff x \mapsto y$$
+
+\eix^^{arrows}
+\endexample
+\enddesc
+
+%==========================================================================
+\subsection {Named mathematical functions}
+
+\begindesc
+\xrdef{namedfns}
+\bix^^{functions, names of}
+{\symbolspace = 36pt
+\threecolumns 32
+\easy\ctsdisplay cos {}
+\ctsdisplay sin {}
+\ctsdisplay tan {}
+\ctsdisplay cot {}
+\ctsdisplay csc {}
+\ctsdisplay sec {}
+\ctsdisplay arccos {}
+\ctsdisplay arcsin {}
+\ctsdisplay arctan {}
+\ctsdisplay cosh {}
+\ctsdisplay coth {}
+\ctsdisplay sinh {}
+\ctsdisplay tanh {}
+\ctsdisplay det {}
+\ctsdisplay dim {}
+\ctsdisplay exp {}
+\ctsdisplay ln {}
+\ctsdisplay log {}
+\ctsdisplay lg {}
+\ctsdisplay arg {}
+\ctsdisplay deg {}
+\ctsdisplay gcd {}
+\ctsdisplay hom {}
+\ctsdisplay ker {}
+\ctsdisplay inf {}
+\ctsdisplay sup {}
+\ctsdisplay lim {}
+\ctsdisplay liminf {}
+\ctsdisplay limsup {}
+\ctsdisplay max {}
+\ctsdisplay min {}
+\ctsdisplay Pr {}
+\egroup}
+\explain
+These commands set the names of various mathematical functions
+in roman type, as is customary.
+If you apply a superscript or subscript to one of these commands,
+\TeX\ will in most cases typeset it in the usual place.
+In display style, \TeX\ typesets superscripts and subscripts
+on |\det|, |\gcd|, |\inf|, |\lim|, |\liminf|,
+|\limsup|, |\max|, |\min|, |\Pr|, and |\sup|
+as though they were limits,
+i.e., directly above or directly below the function name.
+
+\example
+$\cos^2 x + \sin^2 x = 1\qquad\max_{a \in A} g(a) = 1$
+|
+\produces
+$\cos^2 x + \sin^2 x = 1\qquad\max_{a \in A} g(a) = 1$
+\endexample\enddesc
+
+\begindesc
+\cts bmod {}
+\explain
+This command produces a binary operation for indicating a ^{modulus}
+within a formula.
+\example
+$$x = (y+1) \bmod 2$$
+|
+\dproduces
+$$x = (y+1) \bmod 2$$
+\endexample
+\enddesc
+
+\begindesc
+\cts pmod {}
+\explain
+This command provides a notation for indicating a ^{modulus} in parentheses
+at the end of a formula.
+\example
+$$x \equiv y+1 \pmod 2$$
+|
+\dproduces
+$$x \equiv y+1 \pmod 2$$
+
+\eix^^{functions, names of}
+\endexample
+\enddesc
+
+%==========================================================================
+\subsection {Large operators}
+
+\begindesc
+\bix^^{operators//large}
+\threecolumns 15
+\easy\ctsdoubledisplay bigcap {}
+\ctsdoubledisplay bigcup {}
+\ctsdoubledisplay bigodot {}
+\ctsdoubledisplay bigoplus {}
+\ctsdoubledisplay bigotimes {}
+\ctsdoubledisplay bigsqcup {}
+\ctsdoubledisplay biguplus {}
+\ctsdoubledisplay bigvee {}
+\ctsdoubledisplay bigwedge {}
+\ctsdoubledisplay coprod {}
+{\symbolspace = 42pt\basicdisplay {\hskip 26pt$\smallint$}%
+ {\\smallint}\ddstrut}%
+ \xrdef{\smallint} \pix\ctsidxref{smallint}
+\ctsdoubledisplay int {}
+\ctsdoubledisplay oint {}
+\ctsdoubledisplay prod {}
+\ctsdoubledisplay sum {}
+}
+\explain
+These commands produce various large operator symbols.
+\TeX\ produces the smaller size when it's in ^{text style}
+\minrefs{math mode} and the larger size when it's in ^{display style}.
+Operators are one of \TeX's \minref{class}es of math symbols.
+\TeX\ puts different amounts of space
+around different classes of math symbols.
+
+The large operator symbols with `|big|' in their names are different
+from the corresponding binary operations (see \xref{binops}) such as
+|\cap| ($\cap$) since they usually appear at the beginning
+of a formula. \TeX\ uses different spacing for a large operator
+than it does for a binary operation.
+
+Don't confuse `$\sum$' (|\sum|) with `$\Sigma$'^^|\Sigma| (|\Sigma|)
+or confuse `$\prod$' (|\prod|) with `$\Pi$' ^^|\Pi| (|\Pi|).
+|\Sigma| and |\Pi| produce capital Greek letters, which are smaller and
+have a different appearance.
+
+A large operator can have ^{limits}. The lower limit is specified as a
+subscript and the upper limit as a superscript.
+
+\example
+$$\bigcap_{k=1}^r (a_k \cup b_k)$$
+|
+\dproduces
+$$\bigcap_{k=1}^r (a_k \cup b_k)$$
+\endexample
+\interexampleskip
+\example
+$${\int_0^\pi \sin^2 ax\,dx} = {\pi \over 2}$$
+|
+\dproduces
+$${\int_0^\pi \sin^2 ax\,dx} = {\pi \over 2}$$
+\endexample
+\enddesc
+
+\begindesc
+\cts limits {}
+\explain
+When it's in text style, \TeX\ normally places limits after a large operator.
+This command tells \TeX\ to place
+limits above and below a large operator rather than after it.
+
+If you specify more than one of |\limits|, |\nolimits|,
+and |\display!-limits|, the last command rules.
+
+\example
+Suppose that $\bigcap\limits_{i=1}^Nq_i$ contains at least
+two elements.
+|
+\produces
+Suppose that $\bigcap\limits_{i=1}^Nq_i$ contains at least
+two elements.
+\endexample
+\enddesc
+
+\begindesc
+\cts nolimits {}
+\explain
+When it's in display
+style, \TeX\ normally places limits above and below a large operator.
+(The |\int| operator is an exception---\TeX\
+places limits for |\int| after the operator in all cases.)
+^^|\int//limits after|
+This command tells \TeX\ to place
+limits after a large operator rather than above and below it.
+
+If you specify more than one of |\limits|, |\nolimits|,
+and |\display!-limits|, the last command rules.
+
+\example
+$$\bigcap\nolimits_{i=1}^Nq_i$$
+|
+\dproduces
+$$\bigcap\nolimits_{i=1}^Nq_i$$
+\endexample
+\enddesc
+
+\begindesc
+\cts displaylimits {}
+\explain
+This command tells \TeX\ to
+follow its normal rules for placement of limits:
+\olist\compact
+\li Limits on ^|\int| are placed after the operator.
+\li Limits on other large operators are placed after the
+operator in text style.
+\li Limits on other large operators are placed above and below the operator
+in display style.
+\endolist
+It's usually simpler to use |\limits| or |\nolimits|
+to produce a specific effect, but |\display!-limits| is sometimes
+useful in \minref{macro} definitions.
+
+Note that \plainTeX\ defines ^|\int| as a macro that sets |\nolimits|,
+so |\int\displaylimits| in text style restores the |\limits|
+convention.
+
+If you specify more than one of |\limits|, |\nolimits|,
+and |\display!-limits|, the last command rules.
+
+\example
+$$a(\lambda) = {1 \over {2\pi}} \int\displaylimits
+_{-\infty}^{+\infty} f(x)e^{-i\lambda x}\,dx$$
+|
+\dproduces
+$$a(\lambda) = {1 \over {2\pi}} \int\displaylimits
+_{-\infty}^{+\infty} f(x)e^{-i\lambda x}\,dx$$
+
+\eix^^{operators//large}
+\endexample
+\enddesc
+
+
+%==========================================================================
+\subsection {Punctuation}
+
+\begindesc
+\bix^^{punctuation in math formulas}
+\cts cdotp {}
+\cts ldotp {}
+\explain
+These two commands respectively produce a centered dot and a dot
+positioned on the \minref{baseline}. They are valid only in math
+\minref{mode}. \TeX\ treats them as punctuation, putting no extra space in
+front of them but a little extra space after them.
+In contrast, \TeX\ puts an equal amount of space on both sides
+of a centered dot generated by the ^|\cdot| command (\xref \cdot).
+\example
+$x \cdotp y \quad x \ldotp y \quad x \cdot y$
+|
+\produces
+$x \cdotp y \quad x \ldotp y \quad x \cdot y$
+\endexample
+\enddesc
+
+\begindesc
+\cts colon {}
+\explain
+This command produces a colon punctation symbol.
+It is valid only in math mode.
+The difference between |\colon| and the colon character (|:|) is that
+`|:|' is an operator, so \TeX\ puts extra space to the left of it whereas
+it doesn't put extra space to the left of |\colon|.
+\example
+$f \colon t \quad f : t$
+|
+\produces
+$f \colon t \quad f : t$
+
+\eix^^{punctuation in math formulas}
+\endexample
+\enddesc
+
+
+%==========================================================================
+\secondprinting{\vfill\eject\null\vglue-30pt\vskip0pt}
+\section {Superscripts and subscripts}
+
+\begindesc
+\margin{Two groups of commands have been combined here.}
+\bix^^{superscripts}
+\bix^^{subscripts}
+\secondprinting{\vglue-12pt}
+\makecolumns 4/2:
+\easy\ctsact _ \xrdef{@underscore} {\<argument>}
+\cts sb {\<argument>}
+\ctsact ^ \xrdef{@hat} {\<argument>}
+\cts sp {\<argument>}
+\secondprinting{\vglue-4pt}
+\explain
+The commands in each column are equivalent. The commands in the first
+column typeset \<argument> as a subscript, and those in the second
+column typeset \<argument> as a superscript. The |\sb| and |\sp|
+commands are mainly useful if you're working on a terminal that lacks an
+underscore or caret, or if you've redefined `|_|' or `|^|' and need
+access to the original definition. These commands are also used for
+setting lower and upper limits on summations and integrals. ^^{lower
+limits} ^^{upper limits}
+
+If a subscript or superscript is not a single \minref{token}, you need
+to enclose it in a \minref{group}. \TeX\ does not prioritize subscripts
+or superscripts, so it will reject formulas such as |a_i_j|, |a^i^j|, or
+|a^i_j|.
+
+Subscripts and superscripts are normally typeset in ^{script style}, or
+in ^{scriptscript style} if they are second-order, e.g., a subscript on
+a subscript or a superscript on a a subscript. You can set \emph{any}
+text in a math formula in a script or scriptscript \minref{style} with
+the ^|\scriptstyle| and ^|\scriptscriptstyle| commands (\xref
+\scriptscriptstyle).
+
+You can apply a subscript or superscript to any of the commands that
+produce named mathematical functions in roman type (see
+\xref{namedfns}). In certain cases (again, see \xref{namedfns}) the
+subscript or superscript appears directly above or under the function
+name as shown in the examples of ^|\lim| and ^|\det| below.
+
+\example
+$x_3 \quad t_{\max} \quad a_{i_k} \quad \sum_{i=1}^n{q_i}
+ \quad x^3\quad e^{t \cos\theta}\quad r^{x^2}\quad
+ \int_0^\infty{f(x)\,dx}$
+$$\lim_{x\leftarrow0}f(x)\qquad\det^{z\in A}\qquad\sin^2t$$
+|
+\produces
+\secondprinting{\divide\abovedisplayskip by 2}
+$x_3 \quad t_{\max} \quad a_{i_k} \quad \sum_{i=1}^n{q_i}
+ \quad x^3\quad e^{t \cos\theta}\quad r^{x^2}\quad
+ \int_0^\infty{f(x)\,dx}$
+$$\lim_{x \leftarrow 0} f(x)\qquad
+ \det^{z \in A}\qquad \sin^2 t$$
+
+\eix^^{superscripts}
+\eix^^{subscripts}
+\endexample
+\enddesc
+
+\secondprinting{\vfill\eject}
+
+%==========================================================================
+\subsection {Selecting and using styles}
+
+\begindesc
+\bix^^{styles}
+\cts textstyle {}
+\cts scriptstyle {}
+\cts scriptscriptstyle {}
+\cts displaystyle {}
+\explain
+^^{text style} ^^{script style} ^^{scriptscript style} ^^{display style}
+These commands override the normal \minref{style} and hence the
+font that \TeX\ uses in setting a formula. Like
+font-setting commands such as |\it|, they are in
+effect until the end of the group containing them.
+They are useful when \TeX's choice of style is inappropriate for the formula
+you happen to be setting.
+\example
+$t+{\scriptstyle t + {\scriptscriptstyle t}}$
+|
+\produces
+$t+{\scriptstyle t + {\scriptscriptstyle t}}$
+\endexample
+\enddesc
+
+
+\begindesc
+\cts mathchoice {%
+ \rqbraces{\<math$_1$>}
+ \rqbraces{\<math$_2$>}
+ \rqbraces{\<math$_3$>}
+ \rqbraces{\<math$_4$>}}
+\explain
+This command tells \TeX\ to typeset one of the subformulas
+\<math$_1$>, \<math$_2$>, \<math$_3$>, or \<math$_4$>, making its choice
+according to the current \minref{style}.
+That is, if \TeX\ is in
+display style it sets the |\mathchoice| as \<math$_1$>; in text style it sets
+it as \<math$_2$>; in script style it sets it as \<math$_3$>;
+and in scriptscript style it sets it as \<math$_4$>.
+\example
+\def\mc{{\mathchoice{D}{T}{S}{SS}}}
+The strange formula $\mc_{\mc_\mc}$ illustrates a
+mathchoice.
+|
+\produces
+\def\mc{{\mathchoice{D}{T}{S}{SS}}}
+The strange formula $\mc_{\mc_\mc}$ illustrates a
+mathchoice.
+\endexample
+\enddesc
+
+\begindesc
+\cts mathpalette {\<argument$_1$> \<argument$_2$>}
+\explain
+^^{math symbols}
+This command provides a convenient way of
+producing a math construct that works in all four \minref{style}s.
+To use it, you'll normally need to define an additional macro,
+which we'll call |\build|.
+The call on |\math!-palette| should then have the form
+|\mathpalette|\allowbreak|\build|\<argument>.
+
+|\build| tests what style \TeX\ is in and typesets \<argu\-ment> accordingly.
+It should be defined to have two parameters.
+When you call |\math!-palette|, it will in turn call |\build|,
+with |#1| being a
+command that selects the current style and |#2| being \<argument>.
+Thus, within the definition of |\build| you can typeset something
+in the current style by preceding it with `|#1|'.
+See \knuth{page~360} for examples of using |\mathpalette|
+and \knuth{page~151} for a further explanation of how it works.
+
+\eix^^{styles}
+\enddesc
+
+%==========================================================================
+\section {Compound symbols}
+
+%==========================================================================
+\subsection {Math accents}
+
+\begindesc
+\xrdef{mathaccent}
+^^{accents}
+^^{math//accents}
+%
+\easy\ctsx acute {^{acute accent} as in $\acute x$}
+\ctsx b {^{bar-under accent} as in $\b x$}
+\ctsx bar {^{bar accent} as in $\bar x$}
+\ctsx breve {^{breve accent} as in $\breve x$}
+\ctsx check {^{check accent} as in $\check x$}
+\ctsx ddot {^{double dot accent} as in $\ddot x$}
+\ctsx dot {^{dot accent} as in $\dot x$}
+\ctsx grave {^{grave accent} as in $\grave x$}
+\ctsx hat {^{hat accent} as in $\hat x$}
+\ctsx widehat {^{wide hat accent} as in $\widehat {x+y}$}
+\ctsx tilde {^{tilde accent} as in $\tilde x$}
+\ctsx widetilde {^{wide tilde accent} as in $\widetilde {z+a}$}
+\ctsx vec {^{vector accent} as in $\vec x$}
+\explain
+These commands produce accent marks in math formulas. You'll ordinarily
+need to leave a space after any one of them.
+A wide accent can be applied to a multicharacter subformula;
+\TeX\ will center the accent over the subformula.
+The other accents are usefully applied only to a single character.
+
+\example
+$\dot t^n \qquad \widetilde{v_1 + v_2}$
+|
+\produces
+$\dot t^n \qquad \widetilde{v_1 + v_2}$
+\endexample
+
+\begindesc
+\cts mathaccent {\<mathcode>}
+\explain
+This command tells \TeX\ to typeset a math accent
+whose family and character code are given by \<mathcode>. (\TeX\ ignores
+the class of the \minref{mathcode}.)
+See \knuth{Appendix~G} for the details of how \TeX\ positions such an accent.
+The usual way to use |\mathaccent| is to put it in a macro definition
+that gives a name to a math accent.
+\example
+\def\acute{\mathaccent "7013}
+|
+\endexample
+\enddesc
+
+\see ``Accents'' (\xref {accents}).
+\enddesc
+
+%==========================================================================
+\subsection {Fractions and other stacking operations}
+
+\begindesc
+\bix^^{fractions}
+\bix^^{stacking subformulas}
+\easy\cts over {}
+\cts atop {}
+\cts above {\<dimen>}
+\cts choose {}
+\cts brace {}
+\cts brack {}
+\explain
+{\def\fri{\<formula$_1$>}%
+\def\frii{\<formula$_2$>}%
+These commands stack one subformula on top of another one. We will explain how
+|\over| works, and then relate the other commands to it.
+
+|\over| is the command that you'd normally use to produce a fraction.
+^^{fractions//produced by \b\tt\\over\e}
+If you write something in one of the following forms:
+\csdisplay
+$$!fri\over!frii$$
+$!fri\over!frii$
+\left!<delim>!fri\over!frii\right!<delim>
+{!fri\over!frii}
+|
+you'll get a fraction with numerator \fri\ and denominator \<for\-mu\-la$_2$>,
+i.e., \fri\ over \frii.
+In the first three of
+these forms the |\over| is not implicitly contained in a group;
+it absorbs
+everything to its left and to its right until it comes to a boundary,
+namely, the beginning or end of a group.
+
+You can't use |\over| or any of the other commands in this group
+more than once in a formula.
+Thus a formula such as:
+\csdisplay
+$$a \over n \choose k$$
+|
+isn't legal.
+This is not a severe restriction because
+you can always enclose one of the commands in braces.
+The reason for the restriction is that if you had two of these commands
+in a single formula, \TeX\ wouldn't know how to group them.
+
+The other commands are similar to |\over|, with the following exceptions:
+\ulist\compact
+\li |\atop| leaves out the fraction bar.
+\li |\above| provides a fraction bar of thickness \<dimen>.
+\li |\choose|
+leaves out the fraction bar and encloses the construct in parentheses.
+(It's called ``choose'' because $n \choose k$ is the notation for the
+number of ways of choosing $k$ things out of $n$ things.)
+\li |\brace| leaves out the fraction bar and encloses the construct in braces.
+\li |\brack|
+leaves out the fraction bar and encloses the construct in brackets.
+\endulist
+}%
+\example
+$${n+1 \over n-1} \qquad {n+1 \atop n-1} \qquad
+ {n+1 \above 2pt n-1} \qquad {n+1 \choose n-1} \qquad
+ {n+1 \brace n-1} \qquad {n+1 \brack n-1}$$
+|
+\dproduces
+$${n+1 \over n-1} \qquad {n+1 \atop n-1} \qquad
+ {n+1 \above 2pt n-1} \qquad {n+1 \choose n-1} \qquad
+ {n+1 \brace n-1} \qquad {n+1 \brack n-1}$$
+\endexample
+\enddesc
+
+\begindesc
+\cts overwithdelims {\<delim$_1$> \<delim$_2$>}
+\cts atopwithdelims {\<delim$_1$> \<delim$_2$>}
+\cts abovewithdelims {\<delim$_1$> \<delim$_2$> \<dimen>}
+\explain
+Each of these commands stacks one subformula on top of another one and
+surrounds the entire construct with \<delim$_1$> on the left and
+\<delim$_2$> on the right. These commands follow the same rules as
+|\over|, |\atop|, and |\above|. The \<dimen> in |\abovewithdelims|
+specifies the thickness of the fraction bar.
+\example
+$${m \overwithdelims () n}\qquad
+ {m \atopwithdelims !|!| n}\qquad
+ {m \abovewithdelims \{\} 2pt n}$$
+|
+\dproduces
+$${m \overwithdelims () n}\qquad
+ {m \atopwithdelims || n}\qquad
+ {m \abovewithdelims \{\} 2pt n}$$
+\endexample
+\enddesc
+
+\begindesc
+\cts cases {}
+\explain
+^^{combinations, notation for}
+This command produces the mathematical form that denotes a choice among
+several cases.
+Each case has two parts, separated by `|&|'.
+\TeX\ treats the first part as a math formula
+and the second part as ordinary text. Each
+case must be followed by |\cr|.
+
+\example
+$$g(x,y) = \cases{f(x,y),&if $x<y$\cr
+ f(y,x),&if $x>y$\cr
+ 0,&otherwise.\cr}$$
+|
+\dproduces
+$$g(x,y) = \cases{f(x,y),&if $x<y$\cr
+ f(y,x),&if $x>y$\cr
+ 0,&otherwise.\cr}$$
+\endexample
+\enddesc
+
+\begindesc
+\cts underbrace {\<argument>}
+\cts overbrace {\<argument>}
+\cts underline {\<argument>}
+\cts overline {\<argument>}
+\cts overleftarrow {\<argument>}
+\cts overrightarrow {\<argument>}
+\explain
+These commands place extensible ^{braces}, lines, or ^{arrows}
+over or under the subformula given by \<argument>.
+\TeX\ will make these constructs as wide as they need to be for
+the context.
+When \TeX\ produces the extended braces, lines, or arrows, it considers
+only the dimensions of the \minref{box} containing \<argument>.
+If you use more than one of these commands in a single formula, the
+braces, lines, or arrows they produce
+may not line up properly with each other.
+You can use the |\mathstrut| command (\xref \mathstrut)
+to overcome this difficulty.
+\example
+$$\displaylines{
+\underbrace{x \circ y}\qquad \overbrace{x \circ y}\qquad
+\underline{x \circ y}\qquad \overline{x \circ y}\qquad
+\overleftarrow{x \circ y}\qquad
+\overrightarrow{x \circ y}\cr
+{\overline r + \overline t}\qquad
+{\overline {r \mathstrut} + \overline {t \mathstrut}}\cr
+}$$
+|
+\dproduces
+$$\displaylines{
+\underbrace{x \circ y}\qquad \overbrace{x \circ y}\qquad
+\underline{x \circ y}\qquad \overline{x \circ y}\qquad
+\overleftarrow{x \circ y}\qquad
+\overrightarrow{x \circ y}\cr
+{\overline r + \overline t}\qquad
+{\overline {r \mathstrut} + \overline {t \mathstrut}}\cr
+}$$
+\endexample
+\enddesc
+
+\begindesc\secondprinting{\vglue-.5\baselineskip\vskip0pt}
+\cts buildrel {\<formula> {\bt \\over} \<relation>}
+\explain
+^^{relations//putting formulas above}
+This command produces a \minref{box} in which \<formula>
+is placed on top of \<relation>. \TeX\ treats the result as a relation
+for spacing purposes \seeconcept{class}.
+\example
+$\buildrel \rm def \over \equiv$
+|
+\produces
+$\buildrel \rm def \over \equiv$
+
+\eix^^{fractions}
+\eix^^{stacking subformulas}
+\endexample
+\enddesc
+
+\secondprinting{\vfill\eject}
+
+
+%==========================================================================
+\subsection {Dots}
+
+\begindesc
+\bix^^{dots}
+\easy\cts ldots {}
+\cts cdots {}
+\explain
+These commands produce three ^{dots} in a row. For |\ldots|, the dots
+are on the baseline; for |\cdots|, the dots are centered with respect to
+the axis (see the explanation of |\vcenter|, \xref\vcenter).
+
+\example
+$t_1 + t_2 + \cdots + t_n \qquad x_1,x_2, \ldots\,, x_r$
+|
+\produces
+$t_1 + t_2 + \cdots + t_n \qquad x_1,x_2, \ldots\,, x_r$
+\endexample
+\enddesc
+
+\begindesc
+\easy\cts vdots {}
+\explain
+This command produces three vertical dots.
+\example
+$$\eqalign{f(\alpha_1)& = f(\beta_1)\cr
+ \noalign{\kern -4pt}%
+ &\phantom{a}\vdots\cr % moves the dots right a bit
+ f(\alpha_k)& = f(\beta_k)\cr}$$
+|
+\dproduces
+$$\eqalign{f(\alpha_1)& = f(\beta_1)\cr
+ \noalign{\kern -4pt}%
+ &\phantom{a}\vdots\cr
+ f(\alpha_k)& = f(\beta_k)\cr}$$
+\endexample
+\enddesc
+
+\begindesc
+\cts ddots {}
+\explain
+This command produces three dots on a diagonal.
+Its most common use is to indicate repetition along the diagonal of a matrix.
+\example
+$$\pmatrix{0&\ldots&0\cr
+ \vdots&\ddots&\vdots\cr
+ 0&\ldots&0\cr}$$
+|
+\dproduces
+$$\pmatrix{0&\ldots&0\cr
+ \vdots&\ddots&\vdots\cr
+ 0&\ldots&0\cr}$$
+
+\eix^^{dots}
+\endexample
+\enddesc
+
+\see |\dots| \ctsref\dots.
+
+%==========================================================================
+\subsection {Delimiters}
+
+\begindesc
+\bix^^{delimiters}
+%
+\cts lgroup {}
+\cts rgroup {}
+\explain
+These commands produce large left and right ^{parentheses}
+that are defined as opening and closing \minref{delimiter}s.
+The smallest available size for these delimiters is |\Big|.
+If you use smaller sizes, you'll get weird characters.
+\example
+$$\lgroup\dots\rgroup\qquad\bigg\lgroup\dots\bigg\rgroup$$
+|
+\dproduces
+$$\lgroup\dots\rgroup\qquad\bigg\lgroup\dots\bigg\rgroup$$
+\endexample
+\enddesc
+
+\begindesc
+\margin{{\tt\\vert} and {\tt\\Vert} were explained elsewhere.}
+\easy\cts left {}
+\cts right {}
+\explain
+These commands must be used together in the pattern:
+\display
+{{\bt \\left} \<delim$_1$> \<subformula> {\bt \\right} \<delim$_2$>}
+This construct causes \TeX\ to produce \<subformula>,
+enclosed in the \minref{delimiter}s \<delim$_1$> and \<delim$_2$>.
+The vertical size of the delimiter is adjusted to fit the
+vertical size (height plus depth) of \<subformula>. \<delim$_1$> and
+\<delim$_2$> need not correspond.
+For instance, you could use `|]|' as a left delimiter
+and `|(|' as a right delimiter in a single use of |\left|
+and |\right|.
+
+|\left| and |\right| have the important property that they define a
+group, i.e., they act like left and right braces. This grouping
+property is particularly useful when you put ^|\over| (\xref{\over}) or
+a related command between |\left| and |\right|, since you don't need to
+put braces around the fraction constructed by |\over|.
+
+If you want a left delimiter but not a right delimiter, you can use `|.|' in
+place of the delimiter you don't want and it will turn into empty space
+(of width ^|\nulldelimiterspace|).
+\example
+$$\left\Vert\matrix{a&b\cr c&d\cr}\right\Vert
+ \qquad \left\uparrow q_1\atop q_2\right.$$
+|
+\dproduces
+$$\left\Vert\matrix{a&b\cr c&d\cr}\right\Vert
+ \qquad \left\uparrow q_1\atop q_2\right.$$
+\endexample
+\enddesc
+
+\begindesc
+\cts delimiter {\<number>}
+\explain
+This command produces a delimiter whose characteristics are given by
+\<number>. \<number> is normally written in hexadecimal notation.
+You can use the |\delimiter| command instead of a character in any context
+where \TeX\ expects a delimiter (although the command is rarely used
+outside of a macro definition).
+Suppose that \<number> is the hexadecimal number $cs_1s_2s_3
+l_1l_2l_3$. Then \TeX\ takes the delimiter to have
+\minref{class} $c$, small variant
+$s_1s_2s_3$, and large variant $l_1l_2l_3$. Here $s_1s_2s_3$ indicates
+the math character found in position $s_2s_3$ of family $s_1$, and
+similarly for $l_1l_2l_3$. This is the same convention as the one
+used for ^|\mathcode| (\xref\mathcode).
+\example
+\def\vert{\delimiter "026A30C} % As in plain TeX.
+|
+\endexample
+\enddesc
+
+
+\begindesc
+\margin{{\tt\\delcode} was explained in two places. The
+combined explanation is now in `General operations'.}
+\cts delimiterfactor {\param{number}}
+\cts delimitershortfall {\param{number}}
+\explain
+^^{delimiters//height of}
+These parameters together tell \TeX\ how the height of a \minref{delimiter}
+should be related to the vertical size of the subformula
+with which the delimiter is associated.
+|\delimiterfactor| gives the minimum
+ratio of the delimiter size to the vertical size of the subformula, and
+|\delimitershortfall| gives the maximum by which the height of the
+delimiter will be reduced from that of the vertical size of the subformula.
+
+Suppose that the \minref{box} containing the subformula
+has height $h$ and depth $d$, and let $y=2\,\max(h,d)$.
+Let the value of |\delimiterfactor| be $f$ and the value of
+|\delimitershortfall| be $\delta$.
+Then \TeX\ takes the minimum delimiter size to be at least $y \cdot
+f/1000$ and at least $y-\delta$. In particular, if |\delimiterfactor|
+is exactly $1000$ then \TeX\ will try to make a delimiter at least as tall
+as the formula to which it is attached.
+See \knuth{page~152 and page~446 (Rule 19)}
+for the exact details of how \TeX\ uses these parameters.
+\PlainTeX\ sets |\delimiter!-factor| to $901$ and
+|\delimiter!-shortfall| to |5pt|.
+\enddesc
+
+\see |\delcode| (\xref\delcode), |\vert|, |\Vert|,
+and |\backslash| (\xref\vert).
+\eix^^{delimiters}
+
+%==========================================================================
+\subsection {Matrices}
+
+\begindesc
+\cts matrix
+ {{\bt \rqbraces{\<line> \\cr $\ldots$ \<line> \\cr}}}
+\cts pmatrix
+ {{\bt \rqbraces{\<line> \\cr $\ldots$ \<line> \\cr}}}
+\cts bordermatrix
+ {{\bt \rqbraces{\<line> \\cr $\ldots$ \<line> \\cr}}}
+\explain
+Each of these three commands produces a ^{matrix}.
+The elements of each row of the input matrix
+are separated by `|&|' and each row in turn is ended
+by |\cr|.
+(This is the same form that is used for an
+\minref{alignment}.)
+The commands differ in the following ways:
+\ulist\compact
+\li |\matrix| produces a matrix without any surrounding or inserted
+\minref{delimiter}s.
+\li |\pmatrix| produces a matrix surrounded by parentheses.
+\li |\bordermatrix| produces a matrix in which the first row and the first
+column are treated as labels. (The first element of the first row is
+usually left blank.) The rest of the matrix is enclosed in
+parentheses.
+\endulist
+\TeX\ can make the parentheses for |\pmatrix| and |\bordermatrix| as large as
+they need to be by inserting vertical extensions. If you want a matrix
+to be surrounded by delimiters other than parentheses, you should use
+|\matrix| in conjunction with |\left| and |\right| (\xref \left).
+
+\example
+$$\displaylines{
+ \matrix{t_{11}&t_{12}&t_{13}\cr
+ t_{21}&t_{22}&t_{23}\cr
+ t_{31}&t_{32}&t_{33}\cr}\qquad
+\left\{\matrix{t_{11}&t_{12}&t_{13}\cr
+ t_{21}&t_{22}&t_{23}\cr
+ t_{31}&t_{32}&t_{33}\cr}\right\}\cr
+\pmatrix{t_{11}&t_{12}&t_{13}\cr
+ t_{21}&t_{22}&t_{23}\cr
+ t_{31}&t_{32}&t_{33}\cr}\qquad
+\bordermatrix{&c_1&c_2&c_3\cr
+ r_1&t_{11}&t_{12}&t_{13}\cr
+ r_2&t_{21}&t_{22}&t_{23}\cr
+ r_3&t_{31}&t_{32}&t_{33}\cr}\cr}$$
+|
+\dproduces
+$$\displaylines{
+ \matrix{t_{11}&t_{12}&t_{13}\cr
+ t_{21}&t_{22}&t_{23}\cr
+ t_{31}&t_{32}&t_{33}\cr}\qquad
+\left\{\matrix{t_{11}&t_{12}&t_{13}\cr
+ t_{21}&t_{22}&t_{23}\cr
+ t_{31}&t_{32}&t_{33}\cr}\right\}\cr
+\pmatrix{t_{11}&t_{12}&t_{13}\cr
+ t_{21}&t_{22}&t_{23}\cr
+ t_{31}&t_{32}&t_{33}\cr}\qquad
+\bordermatrix{&c_1&c_2&c_3\cr
+ r_1&t_{11}&t_{12}&t_{13}\cr
+ r_2&t_{21}&t_{22}&t_{23}\cr
+ r_3&t_{31}&t_{32}&t_{33}\cr}\cr}$$
+\endexample
+\enddesc
+
+%==========================================================================
+\subsection {Roots and radicals}
+
+\begindesc
+\easy\cts sqrt {\<argument>}
+\explain
+This command produces the notation for the square root of \<argument>.
+\example
+$$x = {-b\pm\sqrt{b^2-4ac} \over 2a}$$
+|
+\dproduces
+$$x = {-b\pm\sqrt{b^2-4ac} \over 2a}$$
+\endexample
+\enddesc
+
+\begindesc
+\easy\cts root {\<argument$_1$> {\bt \\of} \<argument$_2$>}
+\explain
+This command produces the notation for a root of \<argument$_2$>, where the
+root is given by \<argument$_1$>.
+\example
+$\root \alpha \of {r \cos \theta}$
+|
+\produces
+$\root \alpha \of {r \cos \theta}$
+\endexample
+\enddesc
+
+\begindesc
+\cts radical {\<number>}
+\explain
+This command produces a radical sign
+whose characteristics are given by
+\<number>. It uses the same representation as the delimiter code
+^^{delimiter codes}
+in the ^|\delcode| command (\xref \delcode).
+
+\example
+\def\sqrt{\radical "270370} % as in plain TeX
+|
+\endexample
+\enddesc
+
+%==========================================================================
+\section {Equation numbers}
+
+\begindesc
+\easy\cts eqno {}
+\cts leqno {}
+\explain
+These commands attach an equation number to a displayed formula.
+|\eqno| puts the equation number on the right and |\leqno| puts it on
+the left.
+The commands must be given at the end of the formula.
+If you have a multiline display and you want to number more than one
+of the lines, use the |\eq!-alignno| or |\leq!-alignno| command
+(\xref \eqalignno).
+
+These commands are valid only in display math mode.
+
+\example
+$$e^{i\theta} = \cos \theta + i \sin \theta\eqno{(11)}$$
+|
+\produces
+$$e^{i\theta} = \cos \theta + i \sin \theta\eqno{(11)}$$
+\endexample
+\example
+$$\cos^2 \theta + \sin^2 \theta = 1\leqno{(12)}$$
+|
+\produces
+\abovedisplayskip = -\baselineskip
+$$\cos^2 \theta + \sin^2 \theta = 1\leqno{(12)}$$
+\endexample
+\enddesc
+
+
+%==========================================================================
+\section {Multiline displays}
+
+\begindesc
+\bix^^{displays//multiline}
+\cts displaylines
+ {{\bt \rqbraces{\<line>\ths\\cr$\ldots$\<line>\ths\\cr}}}
+\explain
+This command produces a multiline math display in which each line is
+centered independently of the other lines.
+You can use the |\noalign| command (\xref \noalign) to change the amount
+of space between two lines of a multiline display.
+
+If you want to attach equation numbers to some or all of the equations
+in a multiline math display, you should use |\eqalignno| or
+|\leqalignno|.
+\example
+$$\displaylines{(x+a)^2 = x^2+2ax+a^2\cr
+ (x+a)(x-a) = x^2-a^2\cr}$$
+|
+\dproduces\centereddisplays
+$$\displaylines{
+(x+a)^2 = x^2+2ax+a^2\cr
+(x+a)(x-a) = x^2-a^2\cr
+}$$
+\endexample
+\enddesc
+
+\begindesc
+\cts eqalign {}
+ {{\bt \rqbraces{\<line> \\cr $\ldots$ \<line> \\cr}}}
+\cts eqalignno {}
+ {{\bt \rqbraces{\<line> \\cr $\ldots$ \<line> \\cr}}}
+\cts leqalignno {}
+ {{\bt \rqbraces{\<line> \\cr $\ldots$ \<line> \\cr}}}
+\explain
+^^{equation numbers}
+These commands produce a multiline math display
+in which certain corresponding parts of the lines are lined up vertically.
+The |\eqalignno| and |\leqalignno| commands also let you
+provide equation numbers for some or all of the lines.
+|\eqalignno| puts the equation numbers on the right and
+|\leqalignno| puts them on the left.
+
+Each line in the display is ended by |\cr|. Each of the parts to be aligned
+(most often an equals sign) is preceded by
+`|&|'. An `|&|' also precedes each equation number, which comes at the
+end of a line.
+You can put more than one of these commands in a single display in order
+to produce several groups of equations. In this case, only the rightmost
+or leftmost group can be produced by |\eqalignno| or |\leqalignno|.
+
+You can use the |\noalign| command (\xref \noalign) to change the amount
+of space between two lines of a multiline display.
+\example
+$$\left\{\eqalign{f_1(t) &= 2t\cr f_2(t) &= t^3\cr
+ f_3(t) &= t^2-1\cr}\right\}
+ \left\{\eqalign{g_1(t) &= t\cr g_2(t) &= 1}\right\}$$
+|
+\dproduces
+$$\left\{\eqalign{f_1(t) &= 2t\cr f_2(t) &= t^3\cr
+ f_3(t) &= t^2-1\cr}\right\}
+\left\{\eqalign{g_1(t) &= t\cr g_2(t) &= 1}\right\}$$
+\nextexample
+$$\eqalignno{
+\sigma^2&=E(x-\mu)^2&(12)\cr
+ &={1 \over n}\sum_{i=0}^n (x_i - \mu)^2&\cr
+ &=E(x^2)-\mu^2\cr}$$
+|
+\produces
+\abovedisplayskip = -\baselineskip
+$$\eqalignno{
+\sigma^2&=E(x-\mu)^2&(12)\cr
+ &={1 \over n}\sum_{i=0}^n (x_i - \mu)^2&\cr
+ &=E(x^2)-\mu^2\cr}$$
+\nextexample
+$$\leqalignno{
+\sigma^2&=E(x-\mu)^2&(6)\cr
+ &=E(x^2)-\mu^2&(7)\cr}$$
+|
+\produces
+\abovedisplayskip = -\baselineskip
+$$\leqalignno{
+\sigma^2&=E(x-\mu)^2&(6)\cr
+ &=E(x^2)-\mu^2&(7)\cr}$$
+\nextexample
+$$\eqalignno{
+ &(x+a)^2 = x^2+2ax+a^2&(19)\cr
+ &(x+a)(x-a) = x^2-a^2\cr}$$
+% same effect as \displaylines but with an equation number
+|
+\dproduces
+$$\eqalignno{
+&(x+a)^2 = x^2+2ax+a^2&(19)\cr
+&(x+a)(x-a) = x^2-a^2\cr
+}$$
+% same effect as \displaylines but with an equation number
+
+\eix^^{displays//multiline}
+\endexample
+\enddesc
+
+%==========================================================================
+\section {Fonts in math formulas}
+
+\begindesc
+^^{fonts}
+\xrdef{mathfonts}
+%
+\easy\ctsx cal {use calligraphic uppercase font}
+\ctsx mit {use math italic font}
+\ctsx oldstyle {use old style digit font}
+\explain
+These commands cause \TeX\ to typeset the following text in the
+specified font. You can only use them in \minref{math mode}.
+The |\mit| command is useful for producing slanted capital ^{Greek letters}.
+You can also use the commands given in
+\headcit{Selecting fonts}{selfont} to change fonts in math mode.
+\example
+${\cal XYZ} \quad
+{\mit AaBb\Gamma \Delta \Sigma} \quad
+{\oldstyle 0123456789}$
+|
+\produces
+${\cal XYZ} \quad
+{\mit AaBb\Gamma \Delta \Sigma} \quad
+{\oldstyle 0123456789}$
+\endexample
+\enddesc
+
+^^{type styles}
+\begindesc
+\ctsx itfam {family for italic type}
+\ctsx bffam {family for boldface type}
+\ctsx slfam {family for slanted type}
+\ctsx ttfam {family for typewriter type}
+\explain
+These commands define type families \minrefs{family} for use in
+\minref{math mode}. Their principal use is in defining the
+|\it|, |\bf|, |\sl|, and |\tt| commands so that they work in math mode.
+\enddesc
+
+\begindesc
+\cts fam {\param{number}}
+\explain
+When \TeX\ is in \minref{math mode}, it ordinarily typesets a character
+using the font family ^^{class} given in its \minref{mathcode}.
+^^{family//given by \b\tt\\fam\e}
+However, when \TeX\ is in math mode and encounters a character whose
+\minref{class} is $7$ (Variable), it typesets that character using
+the font \minref{family} given by the value of |\fam|, provided that the
+value of |\fam| is between $0$ and $15$.
+If the value of |\fam| isn't in that range, \TeX\ uses the family in
+the character's mathcode as in the ordinary case.
+\TeX\ sets |\fam| to $-1$ whenever it enters math mode.
+Outside of math mode, |\fam| has no effect.
+
+By assigning a value to
+|\fam| you can change the way that \TeX\ typesets ordinary
+characters such as variables.
+For instance, by setting |\fam| to |\ttfam|, you cause \TeX\ to typeset
+variables using a typewriter font.
+\PlainTeX\ defines |\tt| as a \minref{macro} that, among other things,
+sets |\fam| to |\ttfam|.
+\example
+\def\bf{\fam\bffam\tenbf} % As in plain TeX.
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts textfont {\<family>\param{fontname}}
+\cts scriptfont {\<family>\param{fontname}}
+\cts scriptscriptfont {\<family>\param{fontname}}
+\explain
+^^{text style}
+^^{script style}
+^^{scriptscript style}
+Each of these parameters specifies the font that \TeX\ is to use for
+typesetting the indicated \minref{style} in the indicated \minref{family}.
+These choices have no effect outside of \minref{math mode}.
+\example
+\scriptfont2 = \sevensy % As in plain TeX.
+|
+\endexample
+\enddesc
+
+\see ``Type styles'' (\xref{seltype}).
+%==========================================================================
+\section {Constructing math symbols}
+
+%==========================================================================
+\subsection {Making delimiters bigger}
+
+\begindesc
+\makecolumns 16/4:
+\easy\cts big {}
+\cts bigl {}
+\cts bigm {}
+\cts bigr {}
+\cts Big {}
+\cts Bigl {}
+\cts Bigm {}
+\cts Bigr {}
+\cts bigg {}
+\cts biggl {}
+\cts biggm {}
+\cts biggr {}
+\cts Bigg {}
+\cts Biggl {}
+\cts Biggm {}
+\cts Biggr {}
+\explain
+^^{delimiters//enlarging}
+These commands make \minref{delimiter}s bigger than their normal size.
+The commands in the four columns
+produce successively larger sizes. The difference between |\big|,
+|\bigl|, |\bigr|, and |bigm| has to do with the \minref{class} of the
+enlarged delimiter:
+\ulist\compact
+\li |\big| produces an ordinary symbol.
+\li |\bigl| produces an opening symbol.
+\li |\bigr| produces a closing symbol.
+\li |\bigm| produces a relation symbol.
+\endulist
+\noindent
+\TeX\ uses the class of a symbol in order to decide how much space to put
+around that symbol.
+
+These commands, unlike |\left| and |\right|,
+do \emph{not} define a group.
+
+\example
+$$(x) \quad \bigl(x\bigr) \quad \Bigl(x\Bigr) \quad
+ \biggl(x\biggr) \quad \Biggl(x\Biggr)\qquad
+[x] \quad \bigl[x\bigr] \quad \Bigl[x\Bigr] \quad
+ \biggl[x\biggr] \quad \Biggl[x\Biggr]$$
+|
+\dproduces
+$$(x) \quad \bigl(x\bigr) \quad \Bigl(x\Bigr) \quad
+\biggl(x\biggr) \quad \Biggl(x\Biggr)\qquad
+[x] \quad \bigl[x\bigr] \quad \Bigl[x\Bigr] \quad
+\biggl[x\biggr] \quad \Biggl[x\Biggr]$$
+\endexample
+\enddesc
+
+%==========================================================================
+\subsection {Parts of large symbols}
+
+\begindesc
+\cts downbracefill {}
+\cts upbracefill {}
+\explain
+These commands respectively produce upward-pointing
+and downward-pointing extensible ^{horizontal braces}. ^^{braces}
+\TeX\ will make the braces as wide as necessary.
+These commands
+are used in the definitions of ^|\overbrace| and ^|\underbrace|
+(\xref \overbrace).
+\example
+$$\hbox to 1in{\downbracefill} \quad
+ \hbox to 1in{\upbracefill}$$
+|
+\dproduces
+$$\hbox to 1in{\downbracefill} \quad
+ \hbox to 1in{\upbracefill}$$
+\endexample
+\enddesc
+
+\begindesc
+\cts arrowvert {}
+\cts Arrowvert {}
+\cts lmoustache {}
+\cts rmoustache {}
+\cts bracevert {}
+\explain
+These commands produce portions of certain large
+delimiters
+^^{delimiters//parts of}
+and can themselves be used as delimiters.
+They refer to characters in the ^|cmex10| math font.
+\example
+$$\cdots \Big\arrowvert \cdots \Big\Arrowvert \cdots
+ \Big\lmoustache \cdots \Big\rmoustache \cdots
+ \Big\bracevert \cdots$$
+|
+\dproduces
+$$\cdots \Big\arrowvert \cdots \Big\Arrowvert \cdots
+ \Big\lmoustache \cdots \Big\rmoustache \cdots
+ \Big\bracevert \cdots$$
+\endexample
+\enddesc
+
+
+%==========================================================================
+\section {Aligning parts of a formula}
+
+%==========================================================================
+\subsection {Aligning accents}
+
+\begindesc
+\bix^^{accents//aligning}
+\cts skew {\<number> \<argument$_1$> \<argument$_2$>}
+\explain
+This command shifts the accent \<argument$_1$> by
+\<number> \minref{mathematical unit}s to the right of its normal position
+with respect to \<argu\-ment$_2$>.
+The most common use of this command is for
+modifying the position of an accent that's over
+another accent.
+\example
+$$\skew 2\bar{\bar z}\quad\skew 3\tilde{\tilde y}\quad
+ \skew 4\tilde{\hat x}$$
+|
+\dproduces
+$$\skew 2\bar{\bar z}\quad\skew 3\tilde{\tilde y}\quad
+ \skew 4\tilde{\hat x}$$
+\endexample
+\enddesc
+
+\begindesc
+\cts skewchar {\<font>\param{number}}
+\explain
+The |\skewchar| of a font
+is the character in the font whose kerns,
+as defined in the font's metrics file, determine the positions
+of math accents. That is, suppose that \TeX\ is applying a math accent
+to the character `|x|'. \TeX\ checks if the character pair
+`|x\skewchar|' has a kern; if so, it moves the accent by the amount of
+that kern. The complete algorithm that \TeX\ uses to position math
+accents (which involves many more things) is in \knuth{Appendix~G}.
+
+If the value of |\skewchar| is not in the range $0$--$255$,
+\TeX\ takes the kern value to be zero.
+
+Note that \<font> is a control sequence
+that names a font, not a \<font\-name> that names font files.
+Beware:
+an assignment to |\skewchar| is \emph{not} undone at the end
+of a group.
+If you want to change |\skewchar| locally, you'll need to
+save and restore its original value explicitly.
+\enddesc
+
+\begindesc
+\cts defaultskewchar {\param{number}}
+\explain
+When \TeX\ reads the metrics file
+^^{metrics file//default skew character in}
+for a font in response to a
+^|\font| command, it sets the font's ^|\skewchar| to
+|\default!-skewchar|.
+If the value of |\default!-skewchar| is
+not in the range $0$--$255$, \TeX\ does not assign any
+skew characters by default.
+\PlainTeX\ sets |\defaultskewchar| to $-1$, and it's usually best
+to leave it there.
+\margin{Misleading example deleted.}
+\eix^^{accents//aligning}
+\enddesc
+
+%==========================================================================
+\subsection {Aligning material vertically}
+
+\begindesc
+\cts vcenter {\rqbraces{\<vertical mode material>}}
+\ctsbasic {\\vcenter to \<dimen> \rqbraces{\<vertical mode material>}}{}
+\ctsbasic {\\vcenter spread \<dimen> \rqbraces{\<vertical mode material>}}{}
+\explain
+Every math formula has an invisible
+``^{axis}'' that \TeX\ treats as a kind of
+horizontal centering line for that formula.
+For instance, the axis of a formula consisting of a
+fraction is at the center of the fraction bar.
+The |\vcenter| command tells \TeX\ to place the \<vertical mode material>
+in a \minref{vbox} and to center the vbox
+with respect to the axis of the formula it is currently constructing.
+
+The first form of the command
+centers the material as given. The second and third
+forms expand or shrink the material vertically as in the |\vbox| command
+(\xref \vbox).
+
+\example
+$${n \choose k} \buildrel \rm def \over \equiv \>
+\vcenter{\hsize 1.5 in \noindent the number of
+combinations of $n$ things taken $k$ at a time}$$
+|
+\dproduces
+$${n \choose k} \buildrel \rm def \over \equiv \>
+\vcenter{\hsize 1.5 in \noindent the number of
+combinations of $n$ things taken $k$ at a time}$$
+\endexample
+\enddesc
+
+%==========================================================================
+\section {Producing spaces}
+
+%==========================================================================
+\subsection {Fixed-width math spaces}
+
+\begindesc
+\bix^^{space//in math formulas}
+\ctspecial ! \ctsxrdef{@shriek}
+\ctspecial , \ctsxrdef{@comma}
+\ctspecial > \ctsxrdef{@greater}
+\ctspecial ; \ctsxrdef{@semi}
+\explain
+These commands produce various amounts of ^{extra space} in formulas. They
+are defined in terms of \minref{mathematical unit}s, so \TeX\ adjusts
+the amount of space according to the current \minref{style}.
+\ulist
+\li |\!!| produces a negative thin space, i.e., it reduces the space
+between its neighboring subformulas by the amount of a thin space.
+\li |\,| produces a thin space.
+\li |\>| produces a medium space.
+\li |\;| produces a thick space.
+\endulist
+\example
+$$00\quad0\!!0\quad0\,0\quad0\>0\quad0\;0\quad
+{\scriptstyle 00\quad0\!!0\quad0\,0\quad0\>0\quad0\;0}$$
+|
+\dproduces
+$$00\quad0\!0\quad0\,0\quad0\>0\quad0\;0\quad
+{\scriptstyle 00\quad0\!0\quad0\,0\quad0\>0\quad0\;0}$$
+\endexample
+\enddesc
+
+\begindesc
+\cts thinmuskip {\param{muglue}}
+\cts medmuskip {\param{muglue}}
+\cts thickmuskip {\param{muglue}}
+\explain
+These parameters define thin, medium, and thick spaces in
+math mode.
+\example
+$00\quad0\mskip\thinmuskip0\quad0\mskip\medmuskip0
+ \quad0\mskip\thickmuskip0$
+|
+\produces
+$00\quad0\mskip\thinmuskip0\quad0\mskip\medmuskip0
+ \quad0\mskip\thickmuskip0$
+\endexample
+\enddesc
+
+\begindesc
+\cts jot {\param{dimen}}
+\explain
+This parameter defines a distance that is equal to three points (unless
+you change it).
+The |\jot| is a convenient unit of measure for opening up \hbox{math displays}.
+\enddesc
+
+%==========================================================================
+\subsection {Variable-width math spaces}
+
+\begindesc
+\cts mkern {\<mudimen>}
+\explain
+^^{kerns//in math formulas}
+This command
+produces a \minref{kern}, i.e., blank space, of width \<mudimen>.
+The kern is measured
+in \minref{mathematical unit}s, which vary according to the style.
+Aside from its unit of measurement, this command behaves just like
+|\kern| (\xref \kern) does in horizontal mode.
+
+\example
+$0\mkern13mu 0 \qquad {\scriptscriptstyle 0 \mkern13mu 0}$
+|
+\produces
+$0\mkern13mu 0 \qquad {\scriptscriptstyle 0 \mkern13mu 0}$
+\endexample
+\enddesc
+
+\begindesc
+\cts mskip {\<mudimen$_1$> {\bt plus} \<mudimen$_2$> {\bt minus}
+ \<mudimen$_3$>}
+\explain
+^^{glue}
+This command produces horizontal \minref{glue}
+that has natural width \<mu\-dimen$_1$>, stretch \<mudimen$_2$>,
+and shrink \<mudimen$_3$>.
+The glue is measured in \minref{mathematical unit}s, which vary according
+to the style. Aside from its units of measurement, this command behaves
+just like |\hskip| (\xref \hskip).
+
+\example
+$0\mskip 13mu 0 \quad {\scriptscriptstyle 0 \mskip 13mu 0}$
+|
+\produces
+$0\mskip 13mu 0 \quad {\scriptscriptstyle 0 \mskip 13mu 0}$
+\endexample
+\enddesc
+
+\begindesc
+\cts nonscript {}
+\explain
+When \TeX\ is currently typesetting in script or scriptscript
+\minref{style} and encounters this command
+immediately in front of glue or a kern,
+it cancels the glue or kern.
+|\nonscript| has no effect in the other styles.
+
+This command provides a way of ``tightening up'' the spacing in
+script and scriptscript styles, which generally are set in smaller type.
+It is of little use outside of macro definitions.
+\example
+\def\ab{a\nonscript\; b}
+$\ab^{\ab}$
+|
+\produces
+\def\ab{a\nonscript\; b}
+$\ab^{\ab}$
+\endexample
+\enddesc
+
+\see |\kern| (\xref\kern), |\hskip| (\xref\hskip).
+\eix^^{space//in math formulas}
+
+
+%==========================================================================
+\subsection {Spacing parameters for displays}
+
+\begindesc
+\bix^^{displays//spacing parameters for}
+\cts displaywidth {\param{dimen}}
+\explain
+This parameter specifies the maximum width that
+\TeX\ allows for a math display. If \TeX\ cannot fit the display
+into a space of this width, it sets an overfull \minref{hbox}
+and complains.
+\TeX\ sets the value of |\displaywidth| when it encounters the `|$$|'
+that starts the display. This initial value is
+|\hsize| (\xref \hsize) unless it's overridden by changes to the
+paragraph shape.
+See \knuth{pages~188--189} for a more detailed explanation of this parameter.
+\enddesc
+
+\begindesc
+\cts displayindent {\param{dimen}}
+\explain
+This parameter specifies the space by which \TeX\ indents a
+math display.
+\TeX\ sets the value of |\displayindent| when it encounters the `|$$|'
+that starts the display. Usually this initial value is zero,
+but if the paragraph shape indicates that the display should
+be shifted by an amount $s$,
+\TeX\ will set |\displayindent| to $s$.
+See \knuth{pages~188--189} for a more detailed explanation of this parameter.
+\enddesc
+
+\begindesc
+\cts predisplaysize {\param{dimen}}
+\explain
+\TeX\ sets this parameter to the width of the line preceding
+a math display.
+\TeX\ uses |\predisplaysize| to determine whether or not
+the display starts to
+the left of where the previous line ends, i.e., whether or not it visually
+overlaps the previous line.
+If there is overlap, it uses the |\abovedisplayskip| and
+|\belowdisplayskip| glue in setting the display;
+otherwise it uses the |\abovedisplay!-shortskip| and
+|\belowdisplay!-shortskip| glue.
+See \knuth{pages~188--189} for a more detailed explanation of this parameter.
+\enddesc
+
+\begindesc
+\cts abovedisplayskip {\param{glue}}
+\explain
+This parameter specifies the amount of vertical glue that
+\TeX\ inserts before a display when the display starts to
+the left of where the previous line ends, i.e., when it visually
+overlaps the previous line.
+\PlainTeX\ sets |\abovedisplayskip| to |12pt plus3pt minus9pt|.
+See \knuth{pages~188--189} for a more detailed explanation of this parameter.
+\enddesc
+
+\begindesc
+\cts belowdisplayskip {\param{glue}}
+\explain
+This parameter specifies the amount of vertical glue that
+\TeX\ inserts after a display when the display starts to
+the left of where the previous line ends, i.e., when it visually
+overlaps the previous line.
+\PlainTeX\ sets |\belowdisplay!-skip| to |12pt plus3pt minus9pt|.
+See \knuth{pages~188--189} for a more detailed explanation of this parameter.
+\enddesc
+
+\begindesc
+\cts abovedisplayshortskip {\param{glue}}
+\explain
+This parameter specifies the amount of vertical glue that
+\TeX\ inserts before a math display
+when the display starts to
+the right of where the previous line ends, i.e., when it does not visually
+overlap the previous line.
+\PlainTeX\ sets |\abovedisplay!-shortskip| to |0pt plus3pt|.
+See \knuth{pages~188--189} for a more detailed explanation of this parameter.
+\enddesc
+
+\begindesc
+\cts belowdisplayshortskip {\param{glue}}
+\explain
+This parameter specifies the amount of vertical glue that
+\TeX\ inserts after a display
+when the display starts to
+the right of where the previous line ends, i.e., when it does not visually
+overlap the previous line.
+\PlainTeX\ sets |\belowdisplay!-shortskip| to |7pt plus3pt minus4pt|.
+See \knuth{pages~188--189} for a more detailed explanation of this parameter.
+
+\eix^^{displays//spacing parameters for}
+\enddesc
+
+
+%==========================================================================
+\subsection {Other spacing parameters for math}
+
+\begindesc
+\cts mathsurround {\param{dimen}}
+\explain
+This parameter specifies the amount of space that \TeX\
+inserts before and after a math formula in text mode (i.e., a formula
+surrounded by single |$|'s). See \knuth{page~162} for further details about
+its behavior.
+\PlainTeX\ leaves |\mathsurround| at |0pt|.
+\enddesc
+
+\begindesc
+\cts nulldelimiterspace {\param{dimen}}
+\explain
+^^{delimiters//null, space for}
+This parameter specifies the width of the
+space produced by a null \minref{delimiter}.
+\PlainTeX\ sets |\nulldelimiterspace| to |1.2pt|.
+\enddesc
+
+\begindesc
+\cts scriptspace {\param{dimen}}
+\explain
+This parameter specifies the amount of space that \TeX\
+inserts before and after a subscript or superscript.
+The |\nonscript| command (\xref\nonscript) ^^|\nonscript|
+after a subscript or superscript cancels this space.
+\PlainTeX\ sets |\script!-space| to |0.5pt|.
+\enddesc
+
+%==========================================================================
+\section {Categorizing math constructs}
+
+\begindesc
+\makecolumns 7/2:
+\cts mathord {}
+\cts mathop {}
+\cts mathbin {}
+\cts mathrel {}
+\cts mathopen {}
+\cts mathclose {}
+\cts mathpunct {}
+\explain
+These commands tell \TeX\ to treat the construct that follows as belonging
+to a particular ^{class} (see \knuth{page~154} for the definition
+of the classes). They are listed here in the order of the class numbers,
+from $0$ to $6$. Their primary
+effect is to adjust the spacing around the construct
+to be whatever it is for the specified class.
+
+\example
+$\mathop{\rm minmax}\limits_{t \in A \cup B}\,t$
+% By treating minmax as a math operator, we can get TeX to
+% put something underneath it.
+|
+\produces
+$\mathop{\rm minmax}\limits_{t \in A \cup B}\,t$
+\endexample
+\enddesc
+
+\begindesc
+\cts mathinner {}
+\explain
+This command tells \TeX\ to treat the construct that follows
+as an ``inner formula'', e.g., a fraction, for spacing purposes.
+It resembles the class commands given just above.
+\enddesc
+
+%==========================================================================
+\section {Special actions for math formulas}
+
+\begindesc
+\cts everymath {\param{token list}}
+\cts everydisplay {\param{token list}}
+\explain
+^^{displays//actions for every display}
+These parameters specify \minref{token} lists that \TeX\ inserts
+at the start of every text math or display math formula, respectively.
+You can
+take special actions at the start of each math formula by
+assigning those actions to |\everymath| or
+|\everydisplay|. Don't forget that if you want both kinds of formulas to
+be affected, you need to set \emph{both} parameters.
+\example
+\everydisplay={\heartsuit\quad}
+\everymath = {\clubsuit}
+$3$ is greater than $2$ for large values of $3$.
+$$4>3$$
+|
+\produces
+\everydisplay={\heartsuit\quad}
+\everymath = {\clubsuit}
+$3$ is greater than $2$ for large values of $3$.
+$$4>3$$
+\endexample
+\enddesc
+
+\enddescriptions
+\eix^^{math}
+\endchapter
+\byebye
diff --git a/Master/texmf-doc/doc/english/impatient/modes.tex b/Master/texmf-doc/doc/english/impatient/modes.tex
new file mode 100644
index 00000000000..1adce6a950a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/modes.tex
@@ -0,0 +1,2078 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+% See file fdl.tex for copying conditions.
+
+\input macros
+\chapter {Commands for \linebreak horizontal and \linebreak vertical modes}
+
+\chapterdef{hvmodes}
+
+This section covers commands that have corresponding or identical
+forms for both horizontal and vertical modes.
+These commands provide boxes, spaces, rules, leaders,
+and alignments.
+For an explanation of the conventions used in this section,
+see \headcit{Descriptions of the commands}{cmddesc}.
+
+\begindescriptions
+
+%==========================================================================
+\section {Producing space}
+
+%==========================================================================
+
+\subsection {Fixed-width horizontal space}
+
+\begindesc
+\bix^^{space//producing}
+\bix^^{horizontal space}
+\cts thinspace {}
+\explain
+This command produces a positive \minref{kern}
+whose width is one-sixth of an em
+(\xref{dimdefs})
+i.e., it causes \TeX\ to move its position right by that amount.
+It is useful
+when you have a nested quotation, for example,
+and you want to separate the levels of quotes.
+\TeX\ won't break a line at
+a |\thinspace|.\minrefs{line break}
+
+\example
+``\thinspace`A quote.'\thinspace''\par
+24,\thinspace 29--31,\thinspace 45,\thinspace 102
+|
+\produces
+``\thinspace`A quote.'\thinspace''\par
+24,\thinspace 29--31,\thinspace 45,\thinspace 102
+\endexample
+\enddesc
+
+\begindesc
+\cts negthinspace {}
+\explain
+This command
+produces a negative kern whose width is one-sixth of an em
+(\xref{dimdefs}),
+i.e., it causes \TeX\ to move its position left by that amount.
+It is useful for bringing together characters that are a little too
+far apart.
+\TeX\ won't break a line at a |\negthinspace|.\minrefs{line break}
+\example
+The horror, the horror\negthinspace, the horror of it all!!
+|
+\produces
+The horror, the horror\negthinspace, the horror of it all!
+\endexample
+\enddesc
+
+\begindesc
+\cts enspace {}
+\explain
+This command produces a \minref{kern} whose width is one ^{en}
+(half of an em, see \xrefpg{dimdefs}).
+\TeX\ won't break a line
+at an |\enspace| unless it's followed by glue.
+In a bulleted list, the bullets are usually separated from the following
+text by an |\enspace|.
+\example
+Lemma 1.\enspace There exists a white rabbit.
+|
+\produces
+Lemma 1.\enspace There exists a white rabbit.
+\endexample
+% the enspace here follows the \proclaim convention (Knuth p. 355).
+\enddesc
+
+\begindesc
+\easy\cts enskip {}
+\cts quad {}
+\cts qquad {}
+\explain
+^^{en}
+Each of these commands
+produces a glob of horizontal \minref{glue}
+that can neither stretch nor shrink.
+\TeX\ can break a line \minrefs{line break} at such glue.
+The width of these glues (which are relative to the current font)
+are as follows for |cmr10|, the default \plainTeX\ font:
+\medskip
+
+\def\distance#1{\hbox{\strut $\rightarrow$\vrule\hskip #1\vrule$\leftarrow$}}
+
+{\def\l#1{\hfil$#1$\thinspace em}
+\tabskip 3pc \halign{#&#&\hfil#\hfil\cr
+{\it Command}&{\it Space}&{\it Illustration}\cr
+\noalign{\vskip 4pt}
+|\enskip|&\l{\frac 1/2}&\distance{.5em}\cr
+|\quad|&\l1&\distance{1em}\cr
+|\qquad|&\l2&\distance{2em}\cr
+}}
+\example
+en\enskip skip; quad\quad skip; qquad\qquad skip
+|
+\produces
+en\enskip skip; quad\quad skip; qquad\qquad skip
+\endexample
+\eix^^{horizontal space}
+\enddesc
+
+%==========================================================================
+\subsection {Fixed-length vertical space}
+
+\begindesc
+\bix^^{vertical space}
+\easy\cts smallskip {}
+\cts medskip {}
+\cts bigskip {}
+\explain
+These commands produce successively larger
+amounts of vertical space:
+\display{{\def\bar{\kern 2pt\hrule width 5pc}
+\def\lbl#1{\hbox to 5pc{\hfil #1skip\hfil}}
+\leavevmode
+\vtop{\lbl{small}\bar\smallskip\bar}\quad
+\vtop{\lbl{med}\bar\medskip\bar}\quad\vtop{\lbl{big}\bar\bigskip\bar}}}
+\noindent
+|\smallskip| skips by $3$ points and can stretch or
+shrink by $1$ point. |\med!-skip| is equivalent to two |\smallskip|s
+and |\bigskip| is equivalent to two |\medskip|s.
+
+These commands end a paragraph since they are inherently vertical.
+The skips that they produce
+are in addition to the normal interparagraph skip.
+\example
+Hop \smallskip skip \medskip and \bigskip jump.
+|
+\produces
+Hop \smallskip skip \medskip and \bigskip jump.
+\endexample
+\enddesc
+
+\begindesc
+\cts smallskipamount {\param{glue}}
+\cts medskipamount {\param{glue}}
+\cts bigskipamount {\param{glue}}
+\explain
+These parameters specify the amounts of glue produced by
+the |\small!-skip|, |\med!-skip|, and |\big!-skip| commands.
+By changing these parameters you change the effect of the commands.
+The default values (for \plainTeX)
+correspond to a quarter of a linespace, half a linespace,
+and a full linespace.
+We recommend that you maintain this ratio by changing
+these values whenever
+you change |\baselineskip| (\xref\baselineskip).
+^^|\baselineskip//and {\tt\\smallskipamount}, etc.|
+\eix^^{vertical space}
+
+\enddesc
+
+%==========================================================================
+\subsection {Variable-size space}
+
+\begindesc
+\easy\cts hskip {\<dimen$_1$> {\bt plus} \<dimen$_2$> {\bt minus} \<dimen$_3$>}
+\cts vskip {\<dimen$_1$> {\bt plus} \<dimen$_2$> {\bt minus} \<dimen$_3$>}
+^^{vertical skip}^^{vertical glue}
+^^{horizontal skip}^^{horizontal glue}
+\bix^^{horizontal space}
+\bix^^{vertical space}
+\explain
+These commands produce horizontal and vertical glue respectively.
+In the simplest and most common case when only \<dimen$_1$> is present,
+|\hskip| skips to the right by \<dimen$_1$>
+and |\vskip| skips down the page by \<dimen$_1$>.
+More generally, these commands
+produce \minref{glue} whose natural size is
+\<dimen$_1$>, whose stretch is \<dimen$_2$>, and whose shrink is \<dimen$_3$>.
+Either the |plus| \<dimen$_2$>, the |minus |\<dimen$_3$>,
+or both can be omitted.
+If both are present, the |plus| must come before the |minus|.
+An omitted value
+is taken to be zero. Any of the \<dimen>s can be negative.
+
+You can use |\hskip| in math mode, but you can't use |mu| units
+\seeconcept{mathematical unit}
+for any of the dimensions. If you want |mu| units, use |\mskip|
+(\xref\mskip) instead.
+
+\example
+\hbox to 2in{one\hskip 0pt plus .5in two}
+|
+\produces
+\hbox to 2in{one\hskip 0pt plus 2in two}
+
+\doruler{\8\8}2{in}
+\nextexample
+\hbox to 2in{Help me!! I can't fit
+{\hskip 0pt minus 2in} inside this box!!}
+|
+\produces
+\hbox to 2in{Help me! I can't fit
+{\hskip 0pt minus 2in} inside this box!}
+
+\doruler{\8\8}2{in}
+\nextexample
+\vbox to 4pc{\offinterlineskip% Just show effects of \vskip.
+ \hbox{one}\vskip 0pc plus 1pc \hbox{two}
+ \vskip .5pc \hbox{three}}
+|
+\produces
+\smallskip
+\vbox to 4pc{\offinterlineskip% Just show effects of \vskip.
+ \hbox{one}\vskip 0pc plus 1pc \hbox{two}
+ \vskip .5pc \hbox{three}}
+\endexample
+\enddesc
+
+\begindesc
+\cts hglue {\<glue>}
+\cts vglue {\<glue>}
+^^{vertical glue}
+^^{horizontal glue}
+\explain
+The |\hglue| command produces horizontal \minref{glue} that won't disappear at
+a line break; the |\vglue| command
+produces vertical \minref{glue} that won't disappear at a page break.
+In other respects these commands are just like |\hskip| and |\vskip|.
+You can use |\vglue| to produce blank space at the top of a page,
+e.g., above a title on the first page of a document, but
+^|\topglue| (next) is usually better for this purpose.
+\enddesc
+
+\begindesc
+\cts topglue {\<glue>}
+\explain
+\margin{Command added; recent addition to \TeX}
+This command\footnote{|\topglue| was added to \TeX\ in version 3.0,
+later than the other enhancements introduced by ^{\newTeX}
+(\xref{newtex}). It is first described in the \emph{eighteenth\/}
+edition of \texbook.} causes the space from the top of the page to the
+top of the first box on the page to be \<glue> precisely.
+The top of the page is considered to be at the baseline of an
+imaginary line of text just above the top line of the page.
+More precisely, it's a distance |\topskip| above the origin as given by
+|\hoffset| and |\voffset|.
+
+This command is useful because \TeX\ ordinarily adjusts the glue
+produced by |\topskip| in a complex way. By using |\topglue| you can
+control the position of the first box on the page without worrying about
+those adjustments.
+
+\enddesc
+
+\begindesc
+\cts kern {\<dimen>}
+\explain
+The effect of this command depends on the mode that \TeX\ is in when
+it encounters it:
+\ulist
+
+\li In a horizontal mode, \TeX\ moves its position to the right (for a positive
+kern) or to the left (for a negative kern).
+
+\li In a vertical mode, \TeX\ moves its position down the page (for a positive
+kern) or up the page (for a negative kern).
+
+\endulist
+\noindent
+Thus a positive kern produces empty space while a negative kern
+causes \TeX\ to back up over something that it's already produced.
+This notion of a kern ^^{kerns}
+is different from the notion of a kern in some computerized
+typesetting systems---in \TeX, positive kerns push two letters \emph{apart}
+instead of bringing them closer together.
+
+A kern is similar to
+\minref{glue}, except that (a)~a kern can neither stretch nor shrink,
+and (b)~\TeX\ will only break a line or a page at a kern if the kern
+is followed by glue and is not part of a math formula.
+If \TeX\ finds a kern at the
+end of a line or a page, it discards the kern.
+If you want to get the effect of a kern that never disappears,
+use ^|\hglue| or ^|\vglue|.
+
+You can use |\kern| in math mode, but you can't use |mu| units
+\seeconcept{mathematical unit}
+for \<dimen>. If you want |mu| units, use |\mkern|
+(\xref\mkern) instead.
+^^{line breaks//kerns at}
+^^{page breaks//kerns at}
+
+\example
+\centerline{$\Downarrow$}\kern 3pt % a vertical kern
+\centerline{$\Longrightarrow$\kern 6pt % a horizontal kern
+ {\bf Heed my warning!!}\kern 6pt % another horizontal kern
+ $\Longleftarrow$}
+\kern 3pt % another vertical kern
+\centerline{$\Uparrow$}
+|
+\produces
+\centerline{$\Downarrow$}\kern 3pt % a vertical kern
+\centerline{$\Longrightarrow$\kern 6pt % a horizontal kern
+ {\bf Heed my warning!}\kern 6pt % another horizontal kern
+ $\Longleftarrow$}
+\kern 3pt % another vertical kern
+\centerline{$\Uparrow$}
+\endexample
+\enddesc
+
+\begindesc
+\makecolumns 4/2:
+\cts hfil {}
+\cts hfill {}
+\cts vfil {}
+\cts vfill {}
+\explain
+\bix^^{glue//infinitely stretchable}
+These commands produce infinitely stretchable horizontal
+and vertical glue that
+overwhelms any finite stretch that may be present.
+|\hfil| and |\hfill| produce horizontal glue, while
+|\vfil| and |\vfill| produce vertical glue.
+
+|\hfill| is infinitely larger than |\hfil|.
+If both |\hfill| and |\hfil| appear in the same \minref{box},
+the |\hfill| will consume all the available extra space
+and the |\hfil| will be effectively ignored.
+|\hfill| can in turn be overwhelmed by |\hskip 0pt plus 1filll|.
+The glue produced by
+|\hfil| and |\hfill| never shrinks.
+
+The behavior of |\vfil| and |\vfill| is analogous.
+
+\example
+\hbox to 2in{Left\hfil Middle \hfil Right}
+|
+\produces
+\hbox to 2in{Left\hfil Middle \hfil Right}
+
+\doruler{\8\8}2{in}
+\nextexample
+\hbox to 2in{Left\hfil Middle \hfill Right}
+|
+\produces
+\hbox to 2in{Left\hfil Middle \hfill Right}
+
+\doruler{\8\8}2{in}
+\nextexample
+\leftline{%
+\vbox to 4pc{%
+ \hbox{Top}\vfil\hbox{Middle}\vfil \hbox{Bottom}}\quad
+\vbox to 4pc{%
+ \hbox{Top}\vfil\hbox{Middle}\vfill\hbox{Bottom}}}
+|
+\produces
+\smallskip
+\leftline{%
+\vbox to 4pc{%
+ \hbox{Top}\vfil\hbox{Middle}\vfil \hbox{Bottom}}\quad
+\vbox to 4pc{%
+ \hbox{Top}\vfil\hbox{Middle}\vfill\hbox{Bottom}}}
+\endexample
+
+\eix^^{glue//infinitely stretchable}
+\enddesc
+
+\begindesc
+\cts hss {}
+\cts vss {}
+\explain
+These commands produce horizontal and vertical glue
+that is both infinitely stretchable and
+infinitely shrinkable. The glue can shrink
+to a negative distance, producing the effect of backspacing along a line
+(for |\hss|) or moving back up a page (for |\vss|).
+
+\example
+\line{text\hfil\hbox to 0pt{margin\hss}}
+% `margin\hss' shrinks to the zero width of the hbox.
+|
+\produces
+\line{text\hfil\hbox to 0pt{margin\hss}}
+\nextexample
+\vbox to 1pc{\hrule width 6pc % Top of box.
+ \hbox{1} \vskip 1pc\hbox to 2pc{\hfil 2}
+ % The \vss absorbs the extra distance produced by \vskip.
+ \vss \hbox to 3pc{\hfil 3}
+ \hrule width 6pc}% Bottom of box.
+|
+\produces
+\medskip
+\vbox to 1pc{\hrule width 6pc % top of box
+ \hbox{1} \vskip 1pc\hbox to 2pc{\hfil 2}
+ \vss \hbox to 3pc{\hfil 3}
+ \hrule width 6pc}% bottom of box
+\vskip 2.5pc
+\endexample
+\enddesc
+
+\begindesc
+\cts hfilneg {}
+\cts vfilneg {}
+\explain
+^^{glue//negative}
+These commands cancel the effect of a preceding |\hfil|
+or |\vfil|. While |\hfil| and |\vfil|
+produce infinitely stretchable positive \minref{glue}, |\hfilneg|
+and |\vfilneg| produce infinitely stretchable negative glue.
+(Thus, $n$ |\hfilneg|s cancel $n$ ^|\hfil|s, and similarly for
+|\vfilneg|.)
+The main use of |\hfilneg| and |\vfilneg|
+is to counteract the effect of an |\hfil| or |\vfil|
+inserted by a \minref{macro}.
+
+|\hfilneg| and |\vfilneg| have
+the curious property that if they are the only infinitely stretchable
+glue in a box, they produce exactly the same effect as |\hfil|
+and |\vfil|.
+
+\example
+\leftline{\hfil on the right\hfilneg}
+% Cancel the \hfil that \leftline produces to the right
+% of its argument.
+|
+\produces
+\leftline{\hfil on the right \hfilneg}
+% Cancel the \hfil that \leftline produces to the right
+% of its argument.
+%
+\nextexample
+\def\a{\hbox to 1pc{\hfil 2}\vfil}
+\vbox to 4pc{\hbox{1} \vfil \a
+ \vfilneg \hbox to 2pc{\hfil 3}}
+|
+\produces
+\smallskip
+\def\a{\hbox to 1pc{\hfil 2}\vfil}
+\vbox to 4pc{\hbox{1} \vfil \a
+ \vfilneg \hbox to 2pc{\hfil 3}}
+\endexample\enddesc
+
+{\emergencystretch=2em
+\see |\hbadness| and |\vbadness| (\xref \vbadness),
+|\hfuzz| and |\vfuzz| (\xref \vfuzz),
+\conceptcit{leaders}.\par}
+\eix^^{space//producing}
+\eix^^{horizontal space}
+\eix^^{vertical space}
+
+%==========================================================================
+\section {Manipulating boxes}
+
+%==========================================================================
+\subsection {Constructing hboxes and vboxes}
+
+\begindesc
+\bix^^{box commands}
+^^{hboxes//constructing with \b\tt\\hbox\e}
+%
+\cts hbox {\rqbraces{\<horizontal mode material>}}
+\aux\cts hbox {{\bt to} \<dimen> \rqbraces{\<horizontal mode material>}}
+\aux\cts hbox {{\bt spread} \<dimen> \rqbraces{\<horizontal mode material>}}
+\explain
+This command produces an hbox
+(horizontal \minref{box}) containing \<horizontal mode material>.
+The braces around \<horizontal mode material> define a group.
+\TeX\ doesn't break the \<horizontal mode material> into lines,
+since it's in restricted horizontal mode when it's assembling the box.
+\TeX\ won't change the size of the box once it's been produced.
+
+|\hbox| is often useful when you want to keep some text all on one line.
+If your use of |\hbox| prevents \TeX\ from breaking lines in an acceptable
+way, \TeX\ will complain about an overfull hbox.
+
+The width of the hbox depends on the arguments to |\hbox|:
+\ulist\compact
+\li If you specify only \<horizontal mode material>,
+the hbox will have its natural \minref{width}.
+\li If you specify |to| \<dimen>, the width of the hbox will be \<dimen>.
+\li If you specify |spread| \<dimen>, the width of the hbox will be
+its natural width plus \<dimen>, i.e., the hbox will be spread out by
+\<dimen>.
+\endulist
+
+The ^|\hfil| command (\xref\hfil) is useful for filling out an
+hbox with empty space when the material in the box isn't as wide as
+the width of the box.
+\example
+\hbox{ugly suburban sprawl}
+\hbox to 2in{ugly \hfil suburban \hfil sprawl}
+\hbox spread 1in {ugly \hfil suburban \hfil sprawl}
+% Without \hfil in the two preceding lines,
+% you'd get `underfull hbox'es.
+|
+\produces
+\hbox{ugly suburban sprawl}
+\hbox to 2in{ugly \hfil suburban \hfil sprawl}
+\hbox spread 1in {ugly \hfil suburban \hfil sprawl}
+% Without \hfil in the two preceding lines,
+% you'd get `underfull hbox'es.
+
+\doruler{\8\8\8}3{in}
+\endexample
+\enddesc
+
+\begindesc
+\cts vtop {\<vertical mode material>}
+\aux\cts vtop {{\bt to} \<dimen> \rqbraces{\<vertical mode material>}}
+\aux\cts vtop {{\bt spread} \<dimen> \rqbraces{\<vertical mode material>}}
+\cts vbox {\rqbraces{\<vertical mode material>}}
+\aux\cts vbox {{\bt to} \<dimen> \rqbraces{\<vertical mode material>}}
+\aux\cts vbox {{\bt spread} \<dimen> \rqbraces{\<vertical mode material>}}
+\explain
+^^{hbox//constructing with \b\tt\\hbox\e}
+These commands
+produce a \minref{vbox} (vertical \minref{box})
+containing \<vertical mode material>.
+The braces around \<vertical mode material> define a group.
+\TeX\ is in internal vertical mode when it's assembling the box.
+\TeX\ won't change the size of the box once it's been produced.
+
+The difference between |\vtop| and |\vbox| lies in where \TeX\ puts
+the reference point of the constructed vbox.
+Ordinarily, the reference point gotten from |\vtop| tends to be at or near
+the top of the constructed vbox,
+while
+the reference point gotten from |\vbox| tends to be at or near
+the bottom of the constructed vbox.
+Thus a row of vboxes all constructed with |\vtop|
+will tend to have their tops nearly in a line,
+while a row of vboxes all constructed with |\vbox|
+will tend to have their bottoms nearly in a line.
+
+|\vtop| and |\vbox| are often useful
+when you want to keep some text together on a single page.
+(For this purpose, it usually doesn't matter which command you use.)
+If your use of these commands
+prevents \TeX\ from breaking pages in an acceptable
+way, \TeX\ will complain that it's found an overfull or underfull vbox while
+|\output| is active.
+
+The height of a vbox depends on
+the arguments to |\vtop| or |\vbox|.
+For |\vbox|, \TeX\ determines the height as follows:
+\ulist\compact
+\li If you specify only \<vertical mode material>,
+the vbox will have its natural height.
+\li If you specify |to| \<dimen>,
+the height of the vbox will be \<dimen>.
+\li If you specify |spread| \<dimen>, the height of the vbox will be
+its natural height plus \<dimen>, i.e.,
+the height of the vbox will be stretched vertically by \<dimen>.
+\endulist
+\noindent
+For |\vtop|,
+\TeX\ constructs the box using its rules for |\vbox| and then
+apportions the vertical extent between the height and the depth as
+described below.
+
+Ordinarily, the width of a constructed vbox is the width of the widest
+item inside it.\footnote
+{More precisely, it's the distance from the reference point to the rightmost
+edge of the constructed vbox. Therefore,
+if you move any of the items right using ^|\moveright| or
+^|\moveleft| (with a negative distance),
+the constructed vbox might be wider.}
+The rules for apportioning the vertical extent between the
+height and the depth are more complicated:
+\ulist
+\li For |\vtop|,
+the height is the height of its first item, if that item is a box or rule.
+Otherwise the height is zero. The depth is whatever vertical
+extent remains after the height is subtracted.
+\li For |\vbox|,
+the depth is the depth of its last item, if that item is a box or rule.
+Otherwise the depth is zero. The height is whatever vertical
+extent remains after the depth is subtracted.%
+\footnote{In fact, there's a further complication.
+Suppose that after the depth has been determined
+using the two rules just given, the depth turns out to be greater than
+^|\boxmaxdepth|.
+Then the depth is reduced to |\boxmaxdepth| and the height is adjusted
+accordingly.}
+\endulist
+
+The |\vfil| command (\xref\vfil) is useful for filling out a vbox
+^^|\vfil//filling a vbox|
+with empty space when the material in the box isn't as tall as
+the vertical extent of the box.
+\example
+\hbox{\hsize = 10pc \raggedright\parindent = 1em
+\vtop{In this example, we see how to use vboxes to
+produce the effect of double columns. Each vbox
+contains two paragraphs, typeset according to \TeX's
+usual rules except that it's ragged right.\par
+This isn't really the best way to get true double
+columns because the columns}
+\hskip 2pc
+\vtop{\noindent
+aren't balanced and we haven't done anything to choose
+the column break automatically or even to fix up the
+last line of the first column.\par
+However, the technique of putting running text into a
+vbox is very useful for placing that text where you
+want it on the page.}}
+|
+\produces
+\hbox{\hsize = 10pc \raggedright\parindent = 1em
+\vtop{In this example, we see how to use vboxes to
+produce the effect of double columns. Each vbox
+contains two paragraphs, typeset according to \TeX's
+usual rules except that it's ragged right.\par
+This isn't really the best way to get true double
+columns because the columns}
+\hskip 2pc
+\vtop{\noindent
+aren't balanced and we haven't done anything to choose
+the column break automatically or even to fix up the
+last line of the first column.\par
+However, the technique of putting running text into a
+vbox is very useful for placing that text where you
+want it on the page.}}
+\nextexample
+\hbox{\hsize = 1in \raggedright\parindent = 0pt
+\vtop to .75in{\hrule This box is .75in deep. \vfil\hrule}
+\qquad
+\vtop{\hrule This box is at its natural depth. \vfil\hrule}
+\qquad
+\vtop spread .2in{\hrule This box is .2in deeper than
+ its natural depth.\vfil\hrule}}
+|
+\produces
+\hbox{\hsize = 1in \raggedright\parindent=0pt
+\vtop to .75in{\hrule This box is .75in deep. \vfil\hrule}
+\qquad
+\vtop{\hrule This box is at its natural depth. \vfil\hrule}
+\qquad
+\vtop spread .2in{\hrule This box is .2in deeper than
+ its natural depth.\vfil\hrule}}
+\nextexample
+% See how \vbox lines up boxes at their bottoms
+% instead of at their tops.
+\hbox{\hsize = 1in \raggedright
+\vbox to .5in{\hrule This box is .5in deep.\vfil\hrule}
+\qquad
+\vbox to .75in{\hrule This box is .75in deep.\vfil\hrule}}
+|
+\produces
+\hbox{\hsize = 1in \raggedright
+\vbox to .5in{\hrule This box is .5in deep.\vfil\hrule}
+\qquad
+\vbox to .75in{\hrule This box is .75in deep.\vfil\hrule}}
+\vskip 16pt % to avoid running into the next command description
+\endexample
+\enddesc
+
+\begindesc
+\margin{Two commands interchanged here.}
+\cts boxmaxdepth {\param{dimen}}
+\explain
+This parameter contains a dimension $D$.
+\TeX\ will not construct a box whose depth exceeds $D$.
+If you produce a box whose depth $d$ would exceed $D$,
+\TeX\ will transfer the
+excess depth to the height of the box, effectively moving the
+\minref{reference point} of the box down by $d-D$.
+If you set |\boxmaxdepth| to zero, \TeX\ will line up a row of vboxes
+so that their bottom boundaries all lie on the same horizontal line.
+\PlainTeX\ sets |\boxmaxdepth| to |\maxdimen| \ctsref{\maxdimen},
+so |\boxmaxdepth| won't affect your boxes unless you change it.
+\enddesc
+
+\begindesc
+\cts underbar {\<argument>}
+\explain
+This command puts \<argument> into an \minref{hbox}
+and underlines it without regard to anything that protrudes below the
+\minref{baseline} of the box.
+\example
+\underbar{Why not learn \TeX?}
+|
+\produces
+\underbar{Why not learn \TeX?}
+\endexample
+\enddesc
+
+\begindesc
+\cts everyhbox {\param{token list}}
+\cts everyvbox {\param{token list}}
+\explain
+These parameters contain token lists that \TeX\ expands at the start of
+every \minref{hbox} or \minref{vbox} that it constructs.
+Any items resulting from the expansion then become
+the beginning of the list of items for the box.
+By default these token lists are empty.
+\enddesc
+
+%==========================================================================
+\subsection {Setting and retrieving the contents of boxes}
+
+\begindesc
+\bix^^{box registers}
+%
+\cts setbox {\<register>\thinspace{\bt =}\thinspace\<box>}
+\cts box {\<register>}
+\explain
+^^{assignments//of boxes}
+These commands respectively set and retrieve the contents
+of the box register
+whose number is \<register>.
+Note that you set a box register a little differently than
+you set the other kinds of registers: you use
+|\setbox|$\,n$~|=| rather than |\box|$\,n$~|=|.
+
+\emph{Retrieving the contents of a box register
+with these commands has the side effect of emptying it,
+so that the box register become void.} If you don't want that to happen,
+you can use |\copy| (see below) to retrieve the contents.
+You should use |\box| in preference to |\copy|
+when you don't care about what's in a box register after you've used it,
+so as not to exhaust \TeX's memory by filling it with obsolete boxes.
+\example
+\setbox0 = \hbox{mushroom}
+\setbox1 = \vbox{\copy0\box0\box0}
+\box1
+|
+\produces
+\setbox0 = \hbox{mushroom}
+\setbox1 = \vbox{\copy0\box0\box0}
+\box1
+\endexample
+\enddesc
+
+\begindesc
+\cts copy {\<register>}
+\explain
+^^{boxes//copying}\minrefs{box}
+This command
+produces a copy of box register \<register>.
+This command is useful when you want to retrieve the contents of a box
+register but don't want to destroy the contents.
+(Retrieving the register contents with ^|\box| makes the register void.)
+\example
+\setbox0 = \hbox{good }
+Have a \copy0 \box0 \box0 day!!
+|
+\produces
+\setbox0 = \hbox{good }
+Have a \copy0 \box0 \box0 day!
+\endexample
+\enddesc
+
+\begindesc
+\cts unhbox {\<register>}
+\cts unvbox {\<register>}
+^^{boxes//extracting contents of}
+\explain
+These commands produce the list contained in box register \<register> and make
+that box register void.
+|\unhbox| applies to box registers containing
+hboxes and |\unvbox| applies to box registers containing vboxes.
+You should use these commands in preference to |\unhcopy| and |\unvcopy|
+(see below)
+when you don't care about what's in the box register after you've used it,
+so as not to exhaust \TeX's memory by filling it with obsolete boxes.
+\example
+\setbox0=\hbox{The Mock Turtle sighed deeply, and
+drew the back of one flapper across his eyes. }
+\setbox1=\hbox{He tried to speak, but sobs choked
+ his voice. }
+\unhbox0 \unhbox1
+% \box0 \box1 would set two hboxes side by side
+% (and produce a badly overfull line).
+\box1 % produces nothing
+|
+\produces
+\setbox0=\hbox{The Mock Turtle sighed deeply, and
+drew the back of one flapper across his eyes. }
+\setbox1=\hbox{He tried to speak, but sobs choked
+ his voice. }
+\unhbox0 \unhbox1
+% \hbox0 \hbox1 would set two hboxes side by side
+% (and produce a badly overfull line).
+\box1 % Produces nothing.
+\endexample
+\enddesc
+
+\begindesc
+\cts unhcopy {\<register>}
+\cts unvcopy {\<register>}
+^^{boxes//extracting contents of}
+^^{boxes//copying }\minrefs{box}
+\explain
+These commands produce the list contained in box register \<register> and
+leave the contents of the register undisturbed.
+|\unhcopy| applies to box registers containing hboxes
+and |\unvcopy| applies to box registers containing vboxes.
+\example
+\setbox0=\hbox{The Mock Turtle sighed deeply, and
+drew the back of one flapper across his eyes. }
+\setbox1=\hbox{He tried to speak, but sobs choked his
+ voice. }
+\unhcopy0 \unhcopy1\par\noindent
+% \box0 \box1 would set two hboxes side by side
+% (and produce a badly overfull line).
+\box1 % Produces an hbox (which can't be broken).
+|
+\produces
+\setbox0=\hbox{The Mock Turtle sighed deeply, and
+drew the back of one flapper across his eyes. }
+\setbox1=\hbox{He tried to speak, but sobs choked his
+ voice. }
+\unhcopy0 \unhcopy1\par\noindent
+% \hbox0 \hbox1 would set two hboxes side by side
+% (and produce a badly overfull line).
+\box1 % produces an hbox (which can't be broken)
+\endexample
+\enddesc
+
+\see |\wd|, |\dp|, |\ht| (\xref\ht).
+\eix^^{box registers}
+
+%==========================================================================
+\subsection {Shifting boxes}
+
+\begindesc
+\cts moveleft {\<dimen> \<box>}
+\cts moveright {\<dimen> \<box>}
+\bix^^{boxes//shifting}
+\minrefs{box}
+\explain
+These commands move \<box> left or right by \<dimen> (which can be
+negative). You can only apply |\moveleft| and |\moveright| to a box
+that's in a \minref{vertical list}.
+\example
+\vbox{\vbox{Phoebe}\vbox{walked}%
+\moveleft 20pt\vbox{a}\moveright 20pt\vbox{crooked}%
+\vbox{mile.}}
+|
+\produces
+\hfuzz = \maxdimen
+\vbox{\vbox{Phoebe}\vbox{walked}%
+\moveleft 20pt\vbox{a}\moveright 20pt\vbox{crooked}%
+\vbox{mile.}}
+\endexample
+\enddesc
+
+\begindesc
+\cts lower {\<dimen> \<box>}
+\cts raise {\<dimen> \<box>}
+\explain
+These commands move \<box> up or down by \<dimen>
+(which can be negative).
+You can only apply |\raise| and |\lower| to a box
+that's in a \minref{horizontal list}.
+\example
+Are you feeling \lower 6pt \hbox{depressed} about the
+ \raise 6pt \hbox{bump} on your nose?
+|
+\produces
+Are you feeling \lower 6pt \hbox{depressed} about the
+ \raise 6pt \hbox{bump} on your nose?
+\endexample
+
+\eix^^{boxes//shifting}
+\enddesc
+
+%==========================================================================
+\subsection {Dimensions of box registers}
+
+\begindesc
+\bix^^{box registers}
+\bix^^{dimensions//of box registers}
+\cts ht {\<register>\param{dimen}}
+\cts dp {\<register>\param{dimen}}
+\cts wd {\<register>\param{dimen}}
+\explain
+These parameters refer to the ^{height}, ^{depth}, and ^{width}
+respectively of \minref{box} \minref{register} \<register>.
+You can use them to find out the dimensions of a box.
+You can also change the dimensions of a box, but it's a tricky business;
+if you want to be adventurous you can
+learn all about it from \knuth{pages~388--389}.
+\example
+\setbox0 = \vtop{\hbox{a}\hbox{beige}\hbox{bunny}}%
+The box has width \the\wd0, height \the\ht0,
+and depth \the\dp0.
+|
+\produces
+\setbox0 = \vtop{\hbox{a}\hbox{beige}\hbox{bunny}}%
+The box has width \the\wd0, height \the\ht0,
+and depth \the\dp0.
+\endexample
+\eix^^{box registers}
+\eix^^{dimensions//of box registers}
+\enddesc
+
+%==========================================================================
+\subsection {Struts, phantoms, and empty boxes}
+
+\begindesc
+\margin{This subsection is a merger of two previous subsections.
+The commands have also been reordered.}
+\bix^^{struts}
+\cts strut {}
+\explain
+This command produces a box whose width is zero
+and whose height (|8.5pt|) and depth (|3.5pt|)
+are those of a more or less typical line of type in |cmr10|,
+the default \plainTeX\ font.
+Its main use is in forcing lines to have the same height
+when you've disabled \TeX's interline glue with
+|\offinter!-lineskip| ^^|\offinterlineskip| or a similar command,
+e.g., when you're constructing an alignment.
+If the natural height of a line is
+too short, you can bring it up to standard by including a |\strut|
+in the line. The strut will force the height and depth of the line
+to be larger, but it won't print anything or consume any horizontal
+space.
+
+If you're setting type in a font that's bigger or smaller than |cmr10|,
+you should redefine |\strut| for that context.
+\example
+\noindent % So we're in horizontal mode.
+\offinterlineskip % So we get the inherent spacing.
+% The periods in this vbox are not vertically equidistant.
+\vtop{\hbox{.}\hbox{.(}\hbox{.x}
+ \hbox{.\vrule height 4pt depth 0pt}}\qquad
+% The periods in this vbox are vertically equidistant
+% because of the struts.
+\vtop{\hbox{.\strut}\hbox{.(\strut}\hbox{.x\strut}
+ \hbox{.\vrule height 4pt depth 0pt\strut}}
+|
+
+\produces
+\noindent % So we're in horizontal mode.
+\offinterlineskip % So we get the inherent spacing.
+% The periods in this vbox are not vertically equidistant.
+\vtop{\hbox{.}\hbox{.(}\hbox{.x}
+ \hbox{.\vrule height 4pt depth 0pt}}\qquad
+% The periods in this vbox are vertically equidistant
+% because of the struts.
+\vtop{\hbox{.\strut}\hbox{.(\strut}\hbox{.x\strut}
+ \hbox{.\vrule height 4pt depth 0pt\strut}}
+\endexample
+\enddesc
+
+\begindesc
+\cts mathstrut {}
+\explain
+This command produces a phantom formula whose width is zero
+and whose height and depth are the same as those of a left parenthesis.
+|\mathstrut| is in fact defined as `|\vphantom(|'.
+Its main use is for getting radicals, underbars, and overbars to line
+up with other radicals, underbars, and overbars in a formula.
+It is much like ^|\strut| (\xref \strut),
+except that it adjusts itself to the different \minref{style}s
+that can occur in math formulas.
+\example
+$$\displaylines{
+\overline{a_1a_2} \land \overline{b_1b_2}
+\quad{\rm versus}\quad \overline{a_1a_2\mathstrut}
+ \land \overline{b_1b_2\mathstrut}\cr
+\sqrt{\epsilon} + \sqrt{\xi} \quad{\rm versus}\quad
+\sqrt{\epsilon\mathstrut} + \sqrt{\xi\mathstrut}\cr}$$
+|
+\dproduces
+\kern 4pt
+$$\displaylines{
+\overline{a_1a_2} \land \overline{b_1b_2}
+\quad{\rm versus}\quad \overline{a_1a_2\mathstrut}
+ \land \overline{b_1b_2\mathstrut}\cr
+\sqrt{\epsilon} + \sqrt{\xi} \quad{\rm versus}\quad
+\sqrt{\epsilon\mathstrut} + \sqrt{\xi\mathstrut}\cr}$$
+\endexample
+\eix^^{struts}
+\enddesc
+
+\begindesc
+\cts phantom {\<argument>}
+\explain
+\bix^^{boxes//phantom}
+\bix^^{phantoms}
+This command produces an empty \minref{box}
+having the same size and placement
+that \<argument> would have were it typeset.
+One use of |\phantom| is for reserving space for a symbol that for some
+reason needs to be drawn in by hand.
+\example
+$1\phantom{9}2$
+|
+\produces
+$1\phantom{9}2$
+\endexample
+\enddesc
+
+\begindesc
+\cts hphantom {\<argument>}
+\cts vphantom {\<argument>}
+\explain
+These commands produce phantom boxes\minrefs{box}\ that
+don't print anything:
+\ulist\compact
+\li |\hphantom| produces a box with the same width as \<argument>
+but zero height and depth.
+\li |\vphantom| produces a box with the same height and depth as \<argu\-ment>
+but zero width.
+\endulist
+\noindent
+Their main purpose is to force a subformula to have a certain minimum
+horizontal or vertical dimension.
+\example
+$$\left[\vphantom{u\over v}t\right] \star
+ \left[{u\over v}\right]\quad
+ \{\hphantom{xx}\}$$
+|
+\dproduces
+\kern 4pt
+$$\left[\vphantom{u\over v}t\right] \star
+ \left[{u\over v}\right]\quad
+ \{\hphantom{xx}\}$$
+\endexample
+\enddesc
+
+\begindesc
+\cts smash {\<argument>}
+\explain
+This command typesets \<argument>,
+but forces the height and depth of its containing \minref{box} to be zero.
+You can use |\smash| and |\vphantom| in combination to give a subformula
+any height and depth that you wish.
+\example
+$${\smash{r_m \brace r_n}\vphantom{r}} \Longrightarrow r$$
+|
+\dproduces
+\kern 4pt
+$${\smash{r_m \brace r_n}\vphantom{r}} \Longrightarrow r$$
+\endexample
+\eix^^{boxes//phantom}
+\eix^^{phantoms}
+\enddesc
+
+\begindesc
+^^{boxes//empty}
+\cts null {}
+\explain
+This command produces an empty \minref{hbox}.
+\example
+\setbox0 = \null
+The null box \null has width \the\wd0, height \the\ht0,
+and depth \the\dp0.
+|
+\produces
+\setbox0 = \null
+The null box \null has width \the\wd0, height \the\ht0,
+and depth \the\dp0.
+\endexample
+\enddesc
+
+
+%==========================================================================
+\subsection {Parameters pertaining to malformed boxes}
+
+\begindesc
+\bix^^{boxes//overfull}
+\bix^^{boxes//underfull}
+\cts overfullrule {\param{dimen}}
+\explain
+This parameter specifies the width of the rule
+that \TeX\ appends to an overfull \minref{hbox}.
+\PlainTeX\ sets it to |5pt|.
+\enddesc
+
+\begindesc
+\cts hbadness {\param{number}}
+\cts vbadness {\param{number}}
+\explain
+These parameters specify the thresholds of horizontal and vertical
+\minref{badness} for reporting underfull or overfull boxes.
+|\hbadness| applies to hboxes and |\vbadness| applies to vboxes.
+If the badness of a constructed box exceeds the threshold,
+\TeX\ will report an error. If you raise the thresholds
+(the \plainTeX\ defaults are both $1000$),
+\TeX\ will be less likely to complain.
+Note that the settings of |\hbadness| and |\vbadness| have no effect on
+the appearance of your typeset document; they only affect the error
+messages that you get.
+See \knuth{page~302} for a precise description
+of how \TeX\ decides when to complain about an overfull or underfull
+box.
+
+\margin{The material on tolerance was inappropriate here and has been
+removed. A new example replaces it.}
+\example
+\hbadness = 10000 % Suppress any hbadness complaints.
+\hbox to 2in{a b}\par
+\hbadness = 500 % Report hbadness exceeding 500.
+\hbox to 2in{a\hskip 0pt plus .5in b}
+|
+\logproduces
+Underfull \hbox (badness 5091) detected at line 4
+\tenrm a b
+
+\hbox(6.94444+0.0)x144.54, glue set 3.70787
+.\tenrm a
+.\glue 0.0 plus 36.135
+.\tenrm b
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts badness {}
+\explain
+This command yields the numerical value of the badness of the \minref{box}
+(either horizontal or vertical) that \TeX\ has most recently produced.
+If the box was overfull, |\badness| will be $1000000$; in all other cases
+it will be between $0$ and $10000$.
+\enddesc
+
+\begindesc
+\cts hfuzz {\param{dimen}}
+\cts vfuzz {\param{dimen}}
+\explain
+These parameters specify the amount that
+a \minref{box} can exceed its natural size before \TeX\ considers it to be
+overfull. ^^{boxes//overfull}
+|\hfuzz| applies to hboxes and |\vfuzz| applies to vboxes.
+\PlainTeX\ sets both parameters to |0.1pt|.
+\example
+\hfuzz = .5in
+\hbox to 2in{This box is longer than two inches.}
+% No error results
+|
+\produces
+\hfuzz = .5in
+\hbox to 2in{This box is longer than two inches.}
+% No error results
+\doruler{\8\8\8}3{in}
+\endexample
+
+\eix^^{boxes//overfull}
+\eix^^{boxes//underfull}
+\eix^^{box commands}
+\enddesc
+
+\see |\tolerance| \ctsref{\tolerance}.
+%==========================================================================
+\section {Retrieving the last item from a list}
+
+\begindesc
+^^{boxes//last box in a list}
+^^{kerns//last kern in a list}
+^^{penalties//last penalty in a list}
+^^{glue//last glue item in a list}
+\margin{This section has been moved in its entirety from the chapter
+(`Commands for general operations')}
+\cts lastkern {}
+\cts lastskip {}
+\cts lastpenalty {}
+\cts lastbox {}
+\explain
+These control sequences yield the value of the last item on the current
+list. They aren't true commands because they can only appear as
+part of an argument.
+If the last item on the list isn't of the indicated type,
+they yield a zero value (or an empty box, in the case of |\lastbox|).
+For example,
+if the last item on the current list is a \minref{kern},
+|\lastkern| yields the dimension of that kern; if it
+isn't a kern, it yields a dimension of $0$.
+
+Using |\lastbox| has the additional effect of removing the last box from
+the list.
+If you want the original |\last!-box| to remain on the list, you
+have to add a copy of it to the list.
+|\last!-box| is not permitted in a math list or in the main
+vertical~list.
+
+These control sequences are
+most useful after macro calls that might have inserted entities of
+the indicated kinds.
+
+\example
+\def\a{two\kern 15pt}
+one \a\a\hskip 2\lastkern three\par
+% Get three times as much space before `three'.
+\def\a{\hbox{two}}
+one \a
+\setbox0 = \lastbox % Removes `two'.
+three \box0.
+|
+\produces
+\def\a{two\kern 15pt}
+one \a\a\hskip 2\lastkern three\par
+% get three times as much space before `three'
+\def\a{\hbox{two}}
+one \a
+\setbox0 = \lastbox % removes `two'
+three \box0.
+\endexample
+\enddesc
+
+\begindesc
+\cts unkern {}
+\cts unskip {}
+\cts unpenalty {}
+\explain
+If the last item on the current list is of type \minref{kern},
+\minref{glue}, or \minref{penalty} respectively, these commands remove it
+from that list. If the item isn't of the right type, these commands have
+no effect. Like ^|\lastbox|, you can't apply them to lists in math mode or to
+the main vertical list.
+These commands
+are most useful after a macro call that is known to have inserted
+a specific item that you don't want there.
+\TeX\ doesn't provide an ^|\unbox| command because |\lastbox| produces
+nearly the same effect.
+\enddesc
+
+
+%==========================================================================
+\section {Rules and leaders}
+
+\begindesc
+\bix^^{rules}
+\bix^^{horizontal rules}
+\bix^^{vertical rules}
+%
+\cts hrule {}
+\aux\cts hrule {\bt height \<dimen> width \<dimen> depth \<dimen>}
+\cts vrule {}
+\aux\cts vrule {{\bt width \<dimen> height \<dimen> depth \<dimen>}}
+\explain
+The |\hrule| command produces a horizontal rule; the |\vrule| command
+produces a vertical rule. You can specify any or all of the width,
+height, and depth of the rule---\TeX\ supplies default values for those
+that you omit. You can give the dimensions of the rule in any order;
+the forms listed above show just two of the possible combinations. You
+can even give a dimension of a given kind more than once---if you do,
+the last one is the one that counts.
+
+If you don't specify the width of a horizontal rule, the rule is
+extended horizontally to the boundaries of the innermost \minref{box} or
+\minref{alignment} that contains the rule. If you don't specify the
+height of a horizontal rule, it defaults to |0.4pt|; if you don't
+specify the depth of a horizontal rule, it defaults to |0pt|.
+
+If you don't specify the width of a vertical rule, it defaults to
+|0.4pt|. If you don't specify the height or the depth of a vertical
+rule, the rule is extended to the boundary of the innermost \minref{box}
+or \minref{alignment} that contains the rule.
+
+\TeX\ treats a horizontal rule as an inherently vertical item
+and a vertical rule as an inherently horizontal item.
+Thus a horizontal rule is legal only in a \minref{vertical mode},
+while a vertical rule is legal only in a \minref{horizontal mode}.
+^^{horizontal mode//rules in}
+^^{vertical mode//rules in}
+If this seems surprising, visualize it---a horizontal rule runs
+from left to right and separates vertical items in a sequence, while
+a vertical rule runs up and down and
+separates horizontal items in a sequence.
+
+\example
+\hrule\smallskip
+\hrule width 2in \smallskip
+\hrule width 3in height 2pt \smallskip
+\hrule width 3in depth 2pt
+|
+\produces
+\medskip
+\hrule\smallskip
+\hrule width 2in \smallskip
+\hrule width 3in height 2pt \smallskip
+\hrule width 3in depth 2pt
+\nextexample
+% Here you can see how the baseline relates to the
+% height and depth of an \hrule.
+\leftline{
+ \vbox{\hrule width .6in height 5pt depth 0pt}
+ \vbox{\hrule width .6in height 0pt depth 8pt}
+ \vbox{\hrule width .6in height 5pt depth 8pt}
+ \vbox{\hbox{ baseline}\kern 3pt \hrule width .6in}
+}
+|
+\produces
+\medskip
+\leftline{
+ \vbox{\hrule width .6in height 5pt depth 0pt}
+ \vbox{\hrule width .6in height 0pt depth 8pt}
+ \vbox{\hrule width .6in height 5pt depth 8pt}
+ \vbox{\hbox{ baseline}\kern 3pt \hrule width .6in}
+}
+\nextexample
+\hbox{( {\vrule} {\vrule width 8pt} )}
+\hbox {( {\vrule height 13pt depth 0pt}
+ {\vrule height 13pt depth 7pt} x)}
+% the parentheses define the height and depth of each of the
+% two preceding boxes; the `x' sits on the baseline
+|
+\produces
+\medskip
+\hbox{( {\vrule} {\vrule width 8pt} )}
+\hbox {( {\vrule height 13pt depth 0pt}
+ {\vrule height 13pt depth 7pt} x)}
+\endexample
+
+\eix^^{rules}
+\eix^^{horizontal rules}
+\eix^^{vertical rules}
+\enddesc
+
+\begindesc
+\bix^^{leaders}
+\easy\cts leaders {\<box or rule> \<skip command>}
+\cts cleaders {\<box or rule> \<skip command>}
+\cts xleaders {\<box or rule> \<skip command>}
+\explain
+These commands produce \minref{leaders}, i.e., they fill a
+horizontal or vertical space with
+copies of a pattern \seeconcept{leaders}.
+The \<box> or \<rule> specifies a leader,
+i.e., a single copy of the pattern,
+while the \<skip command> specifies a
+window to be filled with a
+row or a column of the leaders.
+The pattern is repeated as many times as will fit into the window.
+If \<skip command> is a horizontal skip, the window
+contains a row of leaders and \TeX\ must be in a horizontal mode;
+if \<skip command> is a vertical skip, the window
+contains a column of leaders and \TeX\ must be in a vertical mode.
+
+The commands differ in how they arrange the repeated pattern in the space
+and where they put any leftover space:
+
+\ulist\compact
+\li For |\leaders|, \TeX\ aligns a row of leaders with the left end of
+the innermost \minref{box} $B$ that is to contain the result of the
+|\leaders| command.
+It aligns a column of leaders with the top of $B$.
+Those leaders that fall entirely within the window are retained.
+Any leftover space at the top and bottom of the window is left empty.
+\li For |\cleaders|, the leaders are centered within the window.
+\li For |\xleaders| the pattern is uniformly distributed throughout the window.
+If the leftover space is $l$ and the leader is repeated $n$ times,
+\TeX\ puts space of width or height $l/(n+1)$ between adjacent leaders and
+at the two ends (left and right or top and bottom) of the leaders.
+\endulist
+
+\example
+\def\pattern{\hbox to 15pt{\hfil.\hfil}}
+\line{Down the Rabbit-Hole {\leaders\pattern\hfil} 1}
+\line{The Pool of Tears {\leaders\pattern\hfil} 9}
+\line{A Caucus-Race and a Long Tale {\cleaders\pattern
+ \hfil} 19}
+\line{Pig and Pepper {\xleaders\pattern\hfil} 27}
+|
+\produces
+\def\pattern{\hbox to 15pt{\hfil.\hfil}}\par
+\line{Down the Rabbit-Hole {\leaders\pattern\hfil} 1}
+\line{The Pool of Tears {\leaders\pattern\hfil} 9}
+\line{A Caucus-Race and a Long Tale {\cleaders\pattern
+ \hfil} 19}
+\line{Pig and Pepper {\xleaders\pattern\hfil} 27}
+\nextexample
+\def\bulletfill{\vbox to 3ex{\vfil\hbox{$\bullet$}\vfil}}%
+\def\mybox{\vbox to 1in}
+\def\myrule{\hrule width 4pt}\hsize=2in
+\hrule \line{%
+ \mybox{\myrule depth 8pt \leaders\bulletfill\vfill}
+ \hfil
+ \mybox{\myrule depth 15pt \leaders\bulletfill\vfill}
+ \hfil
+ \mybox{\myrule depth 18pt \cleaders\bulletfill\vfill}
+ \hfil
+ \mybox{\myrule depth 12pt \xleaders\bulletfill\vfill}%
+}\hrule
+|
+\produces
+\medskip
+\def\bulletfill{\vbox to 3ex{\vfil\hbox{$\bullet$}\vfil}}%
+\def\mybox{\vbox to 1in}\def\myrule{\hrule width 4pt}\hsize=2in
+\hrule \line{%
+ \mybox{\myrule depth 8pt \leaders\bulletfill\vfill}
+ \hfil
+ \mybox{\myrule depth 15pt \leaders\bulletfill\vfill}
+ \hfil
+ \mybox{\myrule depth 18pt \cleaders\bulletfill\vfill}
+ \hfil
+ \mybox{\myrule depth 12pt \xleaders\bulletfill\vfill}%
+}\hrule
+\endexample\enddesc
+
+\begindesc
+\cts dotfill {}
+\cts hrulefill {}
+\explain
+^^{fill}
+These commands respectively fill the enclosing horizontal space with
+a row of dots on the baseline and with
+a horizontal line on the baseline.
+It's usually a good idea to leave a space between
+|\dotfill| or |\hrulefill|
+and any text that precedes or follows it (see the example below).
+\example
+\hbox to 3in{Start {\dotfill} Finish}
+\hbox to 3in{Swedish {\hrulefill} Finnish}
+|
+\produces
+\par\hbox to 3in{Start {\dotfill} Finish}
+\hbox to 3in{Swedish {\hrulefill} Finnish}
+\endexample\enddesc
+
+\begindesc
+\cts leftarrowfill {}
+\cts rightarrowfill {}
+\explain
+^^{fill}
+These commands fill the enclosing horizontal space with
+left-pointing or right-pointing ^{arrows}.
+\example
+\hbox to 3in{\vrule \rightarrowfill \ 3 in
+ \leftarrowfill\vrule}
+|
+\produces
+\medskip
+\hbox to 3in{\vrule \rightarrowfill \ 3 in
+ \leftarrowfill\vrule}
+\endexample
+
+\eix^^{leaders}
+\enddesc
+
+%==========================================================================
+\section {Alignments}
+
+%==========================================================================
+\subsection {Tabbing alignments}
+
+\begindesc
+\bix^^{tabbing alignments}
+\bix^^{alignments//commands for}
+%
+\ctspecial + {{\bt \<text>\thinspace\&\thinspace\<text>%
+ \thinspace\& $\cdots$ \\cr}}
+\ctsxrdef{@plus}
+\cts tabalign {}
+\explain
+These commands begin a single line in a tabbed \minref{alignment}.
+The only difference between |\+| and |\tabalign| is that
+|\+| is an outer macro---you can't use it when \TeX\ is reading tokens at
+high speed \seeconcept{outer}.
+
+If you place an `|&|' at a position
+to the right of all existing tabs in a tabbing alignment,
+the `|&|' establishes a new tab at that position.
+\example
+\cleartabs % Nullify any previous \settabs.
+\+ {\bf if }$a[i] < a[i+1]$ &{\bf then}&\cr
+\+&&$a[i] := a[i+1]$;\cr
+\+&&{\it found }$:=$ {\bf true};\cr
+\+&{\bf else}\cr
+\+&&{\it found }$:=$ {\bf false};\cr
+\+&{\bf end if};\cr
+|
+\produces
+\cleartabs % Nullify any previous \settabs.
+\+ {\bf if }$a[i] < a[i+1]$ &{\bf then}&\cr
+\+&&$a[i] := a[i+1]$;\cr
+\+&&{\it found }$:=$ {\bf true};\cr
+\+&{\bf else}\cr
+\+&&{\it found }$:=$ {\bf false};\cr
+\+&{\bf end if};\cr
+\endexample
+\enddesc
+
+\begindesc
+\cts settabs {\<number> {\bt \\columns}}
+\aux\cts settabs {{\bt \\+} \<sample line> {\bt \\cr}}
+\explain
+The first form of
+this command defines a set of tab stops ^^{tabs}
+for a tabbing \minref{alignment}.
+It tells \TeX\ to set the tab stops so as to divide each line into
+\<number> equal parts. \TeX\ takes the length of a line to be
+|\hsize|, as usual. You can make the alignment narrower by decreasing
+|\hsize|.
+\margin{paragraph ``The tab settings $\ldots$'' moved to below.}
+\example
+{\hsize = 3in \settabs 3 \columns
+\+$1$&one&first\cr
+\+$2$&two&second\cr
+\+$3$&three&third\cr}
+|
+\produces
+{\hsize = 3in \settabs 3 \columns
+\+$1$ & one & first\cr
+\+$2$ & two & second\cr
+\+$3$ & three & third\cr}
+
+\noindent\doruler{\8\8\8}3{in}
+\smallskip
+\endexample
+
+The second form of this command defines tab stops by setting the tab stops
+at the positions indicated by the `|&|'s in the sample line.
+The sample line itself does not appear in the output. When you
+use this form you'll usually want to put material into the sample line that is
+somewhat wider than the widest corresponding material in the alignment,
+in order to produce space between the columns.
+That's what we've done in the
+example below. The material following the last tab
+stop is irrelevant, since \TeX\ does not need to position
+anything at the place where the |\cr|~appears.
+
+The tab settings established by |\settabs| remain in effect until
+you issue a new |\settabs| command or end a group containing
+the |\settabs| command.
+This is true for both forms of the command.
+
+\example
+% The first line establishes the template.
+\settabs \+$1$\qquad & three\quad & seventh\cr
+\+$1$&one&first\cr
+\+$2$&two&second\cr
+\+$3$&three&third\cr
+|
+\produces
+\settabs \+$1$\qquad & three\quad & seventh\cr % the sample line
+\+$1$&one&first\cr
+\+$2$&two&second\cr
+\+$3$&three&third\cr
+\smallskip
+\endexample
+\enddesc
+
+\begindesc
+
+\cts cleartabs {}
+\explain
+This command clears all the tabs to the right of the current column.
+Its main use is in applications such as typesetting computer programs
+in which the tab positions change from line to line.
+\enddesc
+
+\see |\cr|, |\endline|, |\crcr| (\xref \endline).
+\eix^^{tabbing alignments}
+
+%==========================================================================
+\subsection {General alignments}
+
+\begindesc
+\cts halign {{\bt \rqbraces{\<preamble> \\cr \<row> \\cr $\ldots$ \<row> \\cr}}}
+ \xrdef{@and}\xrdef{@pound}
+\aux\cts halign {{\bt to \<dimen>%
+ \rqbraces{\<preamble> \\cr \<row> \\cr $\ldots$ \<row> \\cr}}}
+\aux\cts halign {{\bt spread \<dimen>%
+ \rqbraces{\<preamble> \\cr \<row> \\cr $\ldots$ \<row> \\cr}}}
+\explain
+This command produces a horizontal \minref{alignment} consisting of a
+sequence of rows, where each row in turn contains a sequence of column
+entries. \TeX\ adjusts the widths of the column entries to accommodate
+the widest one in each column.
+
+A horizontal alignment can only appear when \TeX\ is in a vertical
+\minref{mode}. We recommend that you first study alignments in general
+(\xref{alignment}) before you attempt to use this command.
+
+An alignment consists of a ^{preamble}
+followed by the text to be aligned. The preamble,
+which describes the layout of the rows that follow, consists of a
+sequence of column templates, separated by `|&|' and ended
+by |\cr|.
+\bix^^{template}
+\bix^^{entry (column or row)}
+Each row consists of a sequence of column
+entries, also separated by `|&|' and ended by |\cr|. Within
+a template, `|#|' indicates where \TeX\ should insert the
+corresponding text of a column entry.
+In contrast, |\settabs| uses a fixed implicit template of `|#|',
+i.e., it just inserts the text as is.
+
+\TeX\ typesets each column entry in restricted horizontal mode,
+i.e., as the contents of an \minref{hbox},
+and implicitly encloses it in a group.
+
+The |to| form of this command instructs \TeX\
+to make the width of the alignment be \<dimen>,
+adjusting the space between columns as necessary.
+The |spread| form of this command instructs \TeX\
+to make the alignment wider by \<dimen> than its natural width.
+These forms are like the corresponding forms of |\hbox| \ctsref\hbox.
+
+See |\tabskip| \ctsref\tabskip{} for an example using the
+|to| form.
+
+\example
+\tabskip = 1em \halign{%
+ \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr
+ United States&Washington&dollar&1.00\cr
+ France&Paris&franc&0.174\cr
+ Israel&Jerusalem&shekel&0.507\cr
+ Japan&Tokyo&yen&0.0829\cr}
+|
+\produces
+\tabskip = 1em \halign{%
+ \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr
+ United States&Washington&dollar&1.00\cr
+ France&Paris&franc&0.174\cr
+ Israel&Jerusalem&shekel&0.507\cr
+ Japan&Tokyo&yen&0.0829\cr}
+\endexample
+\enddesc
+
+\begindesc
+{\tighten
+\cts valign {{\bt \rqbraces{\<preamble>\\cr \<column>\\cr $\ldots$
+ \<column>\\cr}}}
+\aux\cts valign {{\bt to \<dimen>%
+ \rqbraces{\<preamble>\\cr \<column>\\cr $\ldots$ \<column>\\cr}}}
+\aux\cts valign {{\bt spread \<dimen>%
+ \rqbraces{\<preamble>\\cr \<column>\\cr $\ldots$ \<column>\\cr}}}
+\par}
+\explain
+This command produces a vertical \minref{alignment}
+consisting of
+a sequence of columns, where each column in turn contains a sequence
+of row entries.
+\TeX\ adjusts the heights of the row entries to accommodate the tallest one
+in each row.
+
+A vertical alignment
+can only appear when \TeX\ is in a horizontal \minref{mode}.
+Because vertical alignments are (a)~conceptually somewhat difficult and
+(b)~not often used, we recommend that you learn about
+alignments in general
+(\xref{alignment}) and the |\halign| command (see above) before
+you attempt to use the |\valign| command.
+
+An alignment consists of a ^{preamble}
+followed by the text to be aligned. The preamble,
+which describes the layout of the columns that follow,
+consists of a
+sequence of row templates, separated by `|&|' and ended
+by |\cr|.
+\bix^^{template}
+Each column consists of a sequence of ^{row}
+entries, also separated by `|&|' and ended by |\cr|. Within
+a template, `|#|' indicates where \TeX\ should insert the
+corresponding text of a row entry.
+
+\TeX\ typesets each row entry in internal vertical
+mode, i.e., as the contents of a \minref{vbox},
+and implicitly encloses the entry in a group.
+It always gives the vbox zero depth.
+Any text or other horizontal mode material in a row entry then puts \TeX\
+into ordinary horizontal mode.
+(This is just an application of the general rules for \TeX's behavior
+in internal vertical mode.)
+The usual paragraphing parameters apply in this case:
+the row entry has an initial
+indentation of |\parindent| (\xref\parindent) and
+its lines have the
+|\leftskip| and |\rightskip| (\xref\leftskip) \minref{glue}
+appended to~them.
+
+Note in particular that a row entry containing text has
+a width of |\hsize| (\xref\hsize). Unless you reset
+|\hsize| to the row width that you want, you're likely to
+encounter overfull \minref{hbox}es, or find that
+the first column takes up the width of the entire page, or both.
+\eix^^{entry (column or row)}
+
+Normally, you need to include a \minref{strut}
+^^{struts//in vertical alignments}
+in each
+template so that the rows don't come out crooked as a result
+of the varying heights of the entries in the alignment. You
+can produce a strut with the |\strut| command.
+
+The |to| form of this command instructs \TeX\
+to make the vertical extent of the alignment be \<dimen>,
+adjusting the space between rows as necessary.
+The |spread| form of this command instructs \TeX\
+to make the alignment taller by \<dimen> than its natural height.
+These forms are like the corresponding forms of |\vbox| \ctsref\vbox.
+
+\example
+{\hsize=1in \parindent=0pt
+\valign{#\strut&#\strut&#\strut&#\strut\cr
+ bernaise&curry&hoisin&hollandaise\cr
+ ketchup&marinara&mayonnaise&mustard\cr
+ rarebit&tartar\cr}}
+|
+\produces
+{\hsize=1in \parindent=0pt \leftskip=0pt
+\valign{#\strut&#\strut&#\strut&#\strut\cr
+ bernaise&curry&hoisin&hollandaise\cr
+ ketchup&marinara&mayonnaise&mustard\cr
+ rarebit&tartar\cr}}
+\nextexample
+% same thing but without struts (shows why you need them)
+{\hsize=1in \parindent=0pt
+\valign{#&#&#&#\cr
+ bernaise&curry&hoisin&hollandaise\cr
+ ketchup&marinara&mayonnaise&mustard\cr
+ rarebit&tartar\cr}}
+|
+\produces
+{\hsize=1in \parindent=0pt \leftskip=0pt
+\valign{#&#&#&#\cr
+ bernaise&curry&hoisin&hollandaise\cr
+ ketchup&marinara&mayonnaise&mustard\cr
+ rarebit&tartar\cr}}
+\endexample
+\enddesc
+
+\begindesc
+\cts ialign {}
+\explain
+This command behaves just like ^|\halign|,
+except that it first sets the |\tabskip| glue to zero and
+sets |\everycr| empty.
+\enddesc
+
+\begindesc
+\cts cr {}
+\explain
+This command ends the preamble of a horizontal or vertical
+alignment, a row of a horizontal or tabbing alignment,
+or a column of a vertical alignment.
+You can cause \TeX\ to take certain actions whenever it sees a |\cr|
+by setting the value of the ^|\everycr| parameter \ctsref\everycr.
+\enddesc
+
+\begindesc
+\cts endline {}
+\explain
+This command is a synonym for the ^|\cr| command. It is useful when
+you've redefined |\cr| but still need access to the original definition.
+\enddesc
+
+\begindesc
+\cts crcr {}
+\explain
+This command behaves just like ^|\cr|, except that \TeX\ ignores it if
+it comes immediately after a |\cr| or a ^|\noalign|.
+Its main application is as a safety measure to avoid a misleading error
+message caused by a \minref{macro} that expects an argument ending in |\cr|.
+If you put |\crcr| after the `|#|$n$' that denotes such an argument
+in the macro's definition, the
+macro will work properly whether or not the argument ends with |\cr|.
+\enddesc
+
+\begindesc
+\cts omit {}
+\explain
+This command tells \TeX\ to ignore a template in a horizontal or vertical
+\minref{alignment} while processing a particular column or row entry
+respectively.
+|\omit| must appear as the first item in a column or row entry; in effect,
+it overrides the template from the preamble with the simple
+template `|#|'.
+
+
+\example
+\tabskip = 2em\halign{%
+ \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr
+ United States&Washington&dollar&1.00\cr
+ \omit \dotfill France\dotfill&Paris&franc&0.174\cr
+ Israel&Jerusalem&shekel&0.507\cr
+ Japan&Tokyo&yen&0.0829\cr}
+|
+\produces
+\tabskip = 2em\halign{%
+ \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr
+ United States&Washington&dollar&1.00\cr
+ \omit \dotfill France\dotfill&Paris&franc&0.174\cr
+ Israel&Jerusalem&shekel&0.507\cr
+ Japan&Tokyo&yen&0.0829\cr}
+\nextexample
+{\hsize=1.2in \parindent=0pt
+\valign{(#)\strut&(#)\strut&(#)\strut&(#)\strut\cr
+ bernaise&curry&hoisin&hollandaise\cr
+ ketchup&\omit\strut{\bf MARINARA!!}&mayonnaise&mustard\cr
+ rarebit&tartar\cr}}
+|
+\produces
+{\hsize=1.2in \parindent=0pt \leftskip=0pt
+\valign{(#)\strut&(#)\strut&(#)\strut&(#)\strut\cr
+ bernaise&curry&hoisin&hollandaise\cr
+ ketchup&\omit\strut{\bf MARINARA!}&mayonnaise&mustard\cr
+ rarebit&tartar\cr}}
+\endexample
+\enddesc
+
+\begindesc
+\cts span {}
+\explain
+The meaning of this command depends on whether it appears in a preamble
+or in an alignment entry.
+\ulist
+\li Normally, \TeX\ does not expand tokens in the preamble
+when it reads them.
+Putting |\span| in front of a token in the preamble causes
+that token to be expanded immediately according to \TeX's usual rules
+of \minref{macro} expansion.
+\li Putting |\span| instead of `|&|' between two column or row entries
+causes those columns or rows to be combined.
+For a horizontal alignment,
+the width of the combined column is the sum of the
+widths of the component columns.
+For a vertical alignment,
+the height of the combined row is the sum of the
+heights of the component rows.
+The template of the combined column or combined row forms a single group,
+so font-setting commands preceding a |\span| affect everything up to
+the next `|&|'.
+\endulist
+\noindent
+|\span| is rarely useful by itself outside of a template,
+but it provides the basic mechanism
+for defining ^|\multispan|.
+\enddesc
+
+\begindesc
+\cts multispan {\<number>}
+\explain
+This command tells \TeX\ that the following
+\<number> columns in a row of a horizontal alignment,
+or
+\<number> rows in a column of a vertical alignment,
+should be combined into a single column or row (as with
+|\span|) and that their templates should be omitted (as with |\omit|).
+
+\example
+\tabskip = 13pt\halign{%
+ \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr
+ United States&Washington&dollar&1.00\cr
+ France&Paris&franc&0.174\cr
+ Israel&Jerusalem &
+ \multispan 2 \hfil\it(no information)\hfil \cr
+ Japan&Tokyo&yen&0.0829\cr}
+|
+\produces
+\tabskip = 13pt\halign{%
+ \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr
+ United States&Washington&dollar&1.00\cr
+ France&Paris&franc&0.174\cr
+ Israel&Jerusalem &
+ \multispan 2 \hfil\it(no information)\hfil \cr
+ Japan&Tokyo&yen&0.0829\cr}
+\nextexample
+{\hsize=1.2in \parindent=0pt
+\valign{(#)\strut&(#)\strut&(#)\strut&(#)\strut\cr
+ bernaise&curry&hoisin&hollandaise\cr
+ \multispan 3$$\left\{{{\rm ketchup}\atop{\rm marinara}}
+ \right\}$$&mustard\cr
+ rarebit&tartar\cr}}
+|
+\produces
+{\hsize=1.2in \parindent=0pt \leftskip=0pt
+\valign{(#)\strut&(#)\strut&(#)\strut&(#)\strut\cr
+ bernaise&curry&hoisin&hollandaise\cr
+ \multispan 3$$\left\{{{\rm ketchup}\atop{\rm marinara}}
+ \right\}$$&mustard\cr
+ rarebit&tartar\cr}}
+\endexample
+
+\eix^^{template}
+\enddesc
+
+\begindesc
+\cts noalign {\rqbraces{\<vertical mode material>}}
+\aux\cts noalign {\rqbraces{\<horizontal mode material>}}
+\explain
+This command inserts
+\<vertical mode material>
+after the current row of a horizontal \minref{alignment} or
+\<horizontal mode material> after the current column of a vertical
+\minref{alignment}.
+The material can be text, glue, a rule, or anything else.
+
+The most common use of |\noalign|
+is to put extra space after a row or column.
+If you want to put extra space after \emph{every\/} row of a horizontal
+alignment, use ^|\openup| (\xref\openup).
+
+\example
+\halign{%
+ \hfil\it#\hfil\tabskip=2em&\hfil#\hfil&#&
+ \hfil\$#\tabskip=0em\cr
+ % The \tabskip changes prevent the rule below
+ % from sticking out.
+ United States&Washington&dollar&1.00\cr
+ France&Paris&franc&0.174\cr
+ \noalign{\smallskip\hrule\smallskip}
+ Israel&Jerusalem&shekel&0.507\cr
+ Japan&Tokyo&yen&0.0829\cr}
+|
+\produces
+\halign{%
+ \hfil\it#\hfil\tabskip=2em&\hfil#\hfil&#&
+ \hfil\$#\tabskip=0em\cr
+ % The \tabskip changes prevent the rule below
+ % from sticking out.
+ United States&Washington&dollar&1.00\cr
+ France&Paris&franc&0.174\cr
+ \noalign{\smallskip\hrule\smallskip}
+ Israel&Jerusalem&shekel&0.507\cr
+ Japan&Tokyo&yen&0.0829\cr}
+\nextexample
+{\hsize=1in \parindent=0pt
+\valign{#\strut&#\strut&#\strut&#\strut\cr
+ \noalign{\vrule width 2pt\quad}
+ bernaise&curry&hoisin&hollandaise\cr
+ \noalign{\vrule width 2pt\quad}
+ ketchup&marinara&mayonnaise&mustard\cr
+ \noalign{\vrule width 2pt\quad}
+ rarebit&tartar\cr
+ \noalign{\vrule width 2pt\quad}}}
+|
+\produces
+\medskip
+{\hsize=1in \parindent=0pt
+\valign{#\strut&#\strut&#\strut&#\strut\cr
+ \noalign{\vrule width 2pt\quad}
+ bernaise&curry&hoisin&hollandaise\cr
+ \noalign{\vrule width 2pt\quad}
+ ketchup&marinara&mayonnaise&mustard\cr
+ \noalign{\vrule width 2pt\quad}
+ rarebit&tartar\cr
+ \noalign{\vrule width 2pt\quad}}}
+\endexample
+\enddesc
+
+\begindesc
+\cts tabskip {\param{glue}}
+\explain
+This parameter specifies the amount of horizontal or vertical glue
+that \TeX\ puts between the
+columns of a horizontal alignment or between the
+rows of a vertical alignment.
+\TeX\ also puts the |\tabskip| glue
+to the left of the first column and to the right of the last column
+of a horizontal alignment, and
+above the first row
+and below the last row of a vertical alignment.
+You can change |\tabskip| within a template---%
+the change will affect the glue associated with all the following
+|&|'s as well as the glue after the last row or column.
+\example
+\halign to 3.5in{%
+ \hfil\it#\tabskip = 2em plus 8pt
+ \hfil&\hfil#\hfil&#\tabskip = 1em
+ &\hfil\$#\tabskip = 0em\cr
+ United States&Washington&dollar&1.00\cr
+ France&Paris&franc&0.174\cr
+ Israel&Jerusalem&shekel&0.507\cr
+ Japan&Tokyo&yen&0.0829\cr}
+|
+\produces
+\halign to 3.5in{%
+ \hfil\it#\tabskip = 2em plus 8pt
+ \hfil&\hfil#\hfil&#\tabskip = 1em
+ &\hfil\$#\tabskip = 0em\cr
+ United States&Washington&dollar&1.00\cr
+ France&Paris&franc&0.174\cr
+ Israel&Jerusalem&shekel&0.507\cr
+ Japan&Tokyo&yen&0.0829\cr}
+\nextexample
+{\hsize = 1in \parindent=0pt \tabskip=5pt
+\valign{#\strut&#\strut\tabskip = 3pt
+ &#\strut&#\strut\cr
+ bernaise&curry&hoisin&hollandaise\cr
+ ketchup&marinara&mayonnaise&mustard\cr
+ rarebit&tartar\cr}}
+|
+\produces
+{\hsize = 1in \parindent=0pt \tabskip=5pt
+\valign{#\strut&#\strut\tabskip = 3pt
+ &#\strut&#\strut\cr
+ bernaise&curry&hoisin&hollandaise\cr
+ ketchup&marinara&mayonnaise&mustard\cr
+ rarebit&tartar\cr}}
+\endexample
+\enddesc
+
+\begindesc
+\cts hidewidth {}
+\explain
+This command tells \TeX\ to ignore the width of the next column entry in a
+horizontal alignment. It's useful when you have an entry that is longer
+than most of the others in the same column,
+and you'd rather have that entry stick out of the column than
+make all the entries
+in the column wider. If the |\hidewidth| is at the left of the
+entry, the entry sticks out to the left; if the |\hidewidth| is at the
+right of the entry, the entry sticks out to the~right.
+\example
+\tabskip = 25pt\halign{%
+ \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr
+ United States&\hidewidth Washington&
+ dollar&1.00\cr
+ France&Paris&franc&0.174\cr
+ Israel&Jerusalem&shekel&0.507\cr
+ Japan&Tokyo&yen&0.0829\cr}
+|
+\produces
+\tabskip = 25pt\halign{%
+ \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr
+ United States&\hidewidth Washington&
+ dollar&1.00\cr
+ France&Paris&franc&0.174\cr
+ Israel&Jerusalem&shekel&0.507\cr
+ Japan&Tokyo&yen&0.0829\cr}
+\endexample
+\enddesc
+
+\begindesc
+\cts everycr {\param{token list}}
+\explain
+\TeX\ expands \<token list> whenever it executes
+a |\cr|---at the end of every preamble,
+at the end of every row of a horizontal alignment,
+and at the end of every column of a vertical alignment.
+The |\everycr| commands are expanded just after the |\cr|.
+Thus you can cause \TeX\ to
+execute certain commands at the end of a preamble, row, or column by
+assigning a list of those commands to |\everycr|.
+
+The |\everycr| tokens shouldn't include any commands other than |\no!-align|.
+That's because
+the |\everycr| tokens will reappear after the last
+|\cr| of the alignment. A command other than
+|\noalign| will then make \TeX\ think that it's starting a new
+row or column.
+\TeX\ will complain about a missing |\cr|, insert
+a |\cr|, insert the |\everycr| tokens again, and repeat these actions
+indefinitely.
+\example
+\everycr={\noalign{\smallskip\hrule\smallskip}}
+\halign{#\tabskip = 11pt&\hfil#\hfil&\hfil#\hfil
+ \tabskip = 0pt\cr
+ $1$&one&first\cr
+ $2$&two&second\cr
+ $3$&three&third\cr}
+|
+\produces
+\medskip
+\everycr={\noalign{\smallskip\hrule\smallskip}}
+\halign{#\tabskip = 11pt&\hfil#\hfil&\hfil#\hfil
+ \tabskip = 0pt\cr
+ $1$&one&first\cr
+ $2$&two&second\cr
+ $3$&three&third\cr}
+\endexample
+
+\eix^^{alignments//commands for}
+\enddesc
+
+\enddescriptions
+
+
+\endchapter
+\byebye
diff --git a/Master/texmf-doc/doc/english/impatient/pages.tex b/Master/texmf-doc/doc/english/impatient/pages.tex
new file mode 100644
index 00000000000..230802e9b5f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/pages.tex
@@ -0,0 +1,1153 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+% See file fdl.tex for copying conditions.
+
+\input macros
+\chapter {Commands for \linebreak composing pages}
+
+\chapterdef{pages}
+
+This section covers commands that deal with
+pages, their components, and the output routine.
+For an explanation of the conventions used in this section,
+see \headcit{Descriptions of the commands}{cmddesc}.
+
+\begindescriptions
+
+%==========================================================================
+\section {Interline and interparagraph spaces}
+
+\begindesc
+\cts baselineskip {\param{glue}}
+\cts lineskiplimit {\param{dimen}}
+\cts lineskip {\param{glue}}
+\explain
+^^{line spacing}
+\bix^^{interline glue}
+\bix^^|\baselineskip|
+\bix^^|\lineskip|
+\bix^^|\lineskiplimit|
+These three parameters jointly determine how much space \TeX\ leaves between
+consecutive \minref{box}es of an ordinary \minref{vertical list},
+e.g., the lines of a paragraph.
+This space is called ``\minref{interline glue}''.
+It is also inserted between the component boxes of a vbox constructed in
+internal vertical mode.
+^^{vboxes//interline glue for}
+
+In the usual case, when the boxes aren't abnormally high or deep, \TeX\
+makes the distance from the baseline of one box to the baseline of the
+next one equal to |\baselineskip|. It does this by inserting interline
+glue equal to |\baselineskip| minus the depth of the upper box (as given
+by ^|\prevdepth|) and the height of the lower box. But if this
+interline glue would be less than |\lineskiplimit|, indicating that the
+two boxes are too close together, \TeX\ inserts the |\lineskip| glue
+instead.\footnote
+{\TeX\ actually accounts for the beginning of a
+vertical list by setting |\prevdepth| to $-1000$\pt\ and testing
+|\prevdepth| before \emph{every} box. If |\prevdepth|$\>\le-1000$\pt\
+it does not insert any interline glue.} See \knuth{pages~79--80} for a
+precise description.
+
+Note that |\baselineskip| and |\lineskip| measure \emph{different
+things}: the distance between baselines on the one hand and the distance
+between the bottom of one box and the top of the next box on the other
+hand. See \knuth{page~78} for further details. The first example below
+shows the effects of |\lineskiplimit|.
+
+You can obtain the effect of ^{double spacing} by doubling the value
+of |\baselineskip| as illustrated in the second example below.
+A change to |\baselineskip| at any point before the end of a paragraph affects
+the entire paragraph.
+
+\example
+\baselineskip = 11pt \lineskiplimit = 1pt
+\lineskip = 2pt plus .5pt
+Sometimes you'll need to typeset a paragraph that has
+tall material, such as a mathematical formula, embedded
+within it. An example of such a formula is $n \choose k$.
+Note the extra space above and below this line as
+compared with the other lines.
+(If the formula didn't project below the line,
+we'd only get extra space above the line.)
+|
+\produces
+\baselineskip = 11pt \lineskiplimit = 1pt
+\lineskip = 2pt plus .5pt
+Sometimes you'll need to typeset a paragraph that has
+tall material, such as a mathematical formula, embedded
+within it. An example of such a formula is $n \choose k$.
+Note the extra space above and below this line as
+compared with the other lines.
+(If the formula didn't project below the line,
+we'd only get extra space above the line.)
+\endexample
+
+\example
+\baselineskip = 2\baselineskip % Start double spacing.
+|
+\endexample
+
+\eix^^{interline glue}
+\eix^^|\baselineskip|
+\eix^^|\lineskip|
+\eix^^|\lineskiplimit|
+\enddesc
+
+\begindesc
+\cts prevdepth {\param{dimen}}
+\explain
+When \TeX\ adds a box to a vertical list, it sets |\prevdepth| to the
+depth of that box. \TeX\ sets |\prevdepth| to $-1000$\pt\ at the start
+of a vertical list, indicating that the usual interline glue should be
+suppressed.
+\enddesc
+
+\begindesc
+\cts normalbaselineskip {\param{glue}}
+\cts normallineskiplimit {\param{dimen}}
+\cts normallineskip {\param{glue}}
+\cts normalbaselines {}
+\explain
+The three parameters contain values for |\base!-line!-skip|,
+|\line!-skip|, and |\line!-skip!-limit| respectively.
+^^|\baselineskip| ^^|\lineskip| ^^|\lineskiplimit|
+The |\normalbaselines| command sets |\base!-line!-skip|,
+|\line!-skip|, and |\line!-skip!-limit| to the values contained in the
+three parameters.
+\enddesc
+
+\begindesc
+\cts offinterlineskip {}
+\explain
+This command tells \TeX\ to stop inserting interline glue from
+now on. Unless you want it to be in effect for the rest of the document
+(which you probably don't), you should enclose it in a group
+together with the text you want it to affect.
+Its main purpose is to let you do interline spacing yourself,
+e.g., using ^{struts},
+without interference from \TeX's normal interline glue.
+|\offinterlineskip| is often useful when
+you're constructing a horizontal \minref{alignment}.
+^^{alignments//using \b\tt\\offinterlineskip\e\ in}
+\example
+\def\entry#1:#2 {\strut\quad#1\quad&\quad#2\quad\cr}
+\offinterlineskip \tabskip = 0pt \halign{%
+\vrule\quad\hfil#\hfil\quad\vrule&
+ \quad\hfil#\hfil\quad\vrule\cr
+\noalign{\hrule}
+\vphantom{\vrule height 2pt}&\cr \noalign{\hrule}
+\entry \it Opera:\it Composer
+\vphantom{\vrule height 2pt}&\cr \noalign{\hrule}
+\vphantom{\vrule height 2pt}&\cr
+\entry Fidelio:Beethoven
+\entry Peter Grimes:Britten
+\entry Don Giovanni:Mozart
+\vphantom{\vrule height 2pt}&\cr \noalign{\hrule}}
+|
+\produces
+\medskip
+\def\entry#1:#2 {\strut\quad#1\quad&\quad#2\quad\cr}
+\offinterlineskip \tabskip = 0pt \halign{%
+\vrule\quad\hfil#\hfil\quad\vrule&
+ \quad\hfil#\hfil\quad\vrule\cr
+\noalign{\hrule}
+\vphantom{\vrule height 2pt}&\cr \noalign{\hrule}
+\entry \it Opera:\it Composer
+\vphantom{\vrule height 2pt}&\cr \noalign{\hrule}
+\vphantom{\vrule height 2pt}&\cr
+\entry Fidelio:Beethoven
+\entry Peter Grimes:Britten
+\entry Don Giovanni:Mozart
+\vphantom{\vrule height 2pt}&\cr \noalign{\hrule}}
+\endexample
+\enddesc
+
+\begindesc
+\cts nointerlineskip {}
+\explain
+This command tells \TeX\ not to insert interline glue in front of the
+next line.
+It has no effect on subsequent lines.
+\enddesc
+
+\begindesc
+\cts openup {\<dimen>}
+\explain
+This command increases ^|\baselineskip| by \<dimen>.
+An |\openup| command before the end of a paragraph affects
+the entire paragraph, so you shouldn't use |\openup| to
+change |\baseline!-skip| within a paragraph. |\openup| is
+most useful for typesetting tables and math displays---a
+little extra space between rows often makes them more readable.
+^^{alignments//space between rows of}
+\example
+Alice picked up the White King very gently, and lifted him
+across more slowly than she had lifted the Queen; but before
+she put him on the table, she thought she might well dust
+him a little, he was so covered with ashes.
+\openup .5\baselineskip % 1.5 linespacing.
+|
+\produces
+Alice picked up the White King very gently, and lifted him
+across more slowly than she had lifted the Queen; but before
+she put him on the table, she thought she might well dust
+him a little, he was so covered with ashes.
+\openup .5\baselineskip %1.5 linespacing
+\endexample\enddesc
+
+%==========================================================================
+\section {Page breaks}
+
+%==========================================================================
+\subsection {Encouraging or discouraging page breaks}
+
+\begindesc
+\bix^^{page breaks}
+\bix^^{page breaks//encouraging or discouraging}
+\ctspecial break {} \xrdef{vbreak}
+\explain
+%
+\margin{Four commands identical to ones for line breaks (\xref{hbreak})
+have been added to correct an omission. The descriptions are exactly parallel.}
+%
+This command forces a page break.
+Unless you do something to fill out the page, you're likely to
+get an underfull vbox.
+|\break| can also be used in horizontal mode.
+\enddesc
+
+\begindesc
+\ctspecial nobreak {} \xrdef{vnobreak}
+\explain
+This command prevents a page break where it
+otherwise might occur.
+|\nobreak| can also be used in horizontal mode.
+\enddesc
+
+\begindesc
+\ctspecial allowbreak {} \xrdef{vallowbreak}
+\explain
+This command tells \TeX\ to
+allow a page break where one could not ordinarily occur.
+|\allowbreak| can also be used in horizontal mode.
+\enddesc
+
+\begindesc
+\ctspecial penalty {\<number>} \xrdef{vpenalty}
+\explain
+This command produces a \minref{penalty} item.
+The penalty item makes \TeX\ more or less willing to break a page
+at the point where that item occurs.
+A negative penalty, i.e., a bonus, encourages a page break;
+a positive penalty discourages a page break.
+A penalty of $10000$ or more prevents a break altogether,
+while a penalty of $-10000$ or less forces a break.
+|\penalty| can also be used in horizontal mode.
+\example
+\def\break{\penalty-10000 } % as in plain TeX
+\def\nobreak{\penalty10000 } % as in plain TeX
+\def\allowbreak{\penalty0 } % as in plain TeX
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts goodbreak {}
+\explain
+This command ends a paragraph and also indicates to \TeX\ that
+this is a good place to break the page.
+\enddesc
+
+\begindesc
+\cts smallbreak {}
+\cts medbreak {}
+\cts bigbreak {}
+\explain
+These commands indicate increasingly desirable places for \TeX\ to
+break a page. They also cause \TeX\ to
+insert a ^|\smallskip|, ^|\medskip|, or
+^|\bigskip| (\xref \smallskip) if the page break doesn't actually
+happen. \TeX\ suppresses this skip if it occurs just after an
+equal or larger skip.
+\enddesc
+
+\begindesc
+\easy\cts eject {}
+\cts supereject {}
+\explain
+These commands force a page break at the current position
+and end the current paragraph.
+If you don't precede them with |\vfil| (\xref \vfil),
+^^|\vfil//needed with {\tt\\eject}|
+\TeX\ will try to stretch out the page contents
+(and will probably complain about an underfull vbox).
+The |\supereject| command, in addition,
+instructs the \plainTeX\ output routine to
+force out any leftover insertions,
+^^{insertions//forced out by \b\tt\\supereject\e}
+such as long footnotes,
+so that they are produced before any more input
+is processed. Thus |\supereject| is a good command to use at the end of each
+chapter or other major unit of your document.
+\enddesc
+
+\begindesc
+\cts filbreak {}
+\explain
+This command provides a kind of conditional page break.
+It tells \TeX\ to
+break the page---but not if the text up to a later |\filbreak| also
+fits on the same page.
+By enclosing a paragraph in a pair of |\filbreak|s,
+you can ensure that \TeX\ will keep a paragraph on a single page if it can.
+You should not use |\filbreak| within a paragraph, since it
+forces \TeX\ into vertical mode and thus ends the paragraph.
+See \xrefpg{filbreak} for more advice on this subject.
+\enddesc
+
+\begindesc
+\cts raggedbottom {}
+\cts normalbottom {}
+\explain
+Normally \TeX\ tries hard to ensure that all pages have the same depth,
+i.e., that their bottom margins are equal.
+The |\raggedbottom| command tells \TeX\ to
+allow some variability among the bottom margins on different pages.
+It's often appropriate to use |\raggedbottom| when you have material that
+contains large blocks of material that should not be split across pages.
+The |\normalbottom| command cancels the effect of |\raggedbottom|.
+
+\eix^^{page breaks//encouraging or discouraging}
+\enddesc
+
+%==========================================================================
+\subsection {Page breaking parameters}
+
+\bix^^{page breaks//parameters for}
+\begindesc
+\cts interlinepenalty {\param{number}}
+\explain
+This parameter specifies the \minref{penalty} for
+breaking a page between the lines of a paragraph.
+By setting it to $10000$ you can force all page breaks to occur
+between paragraphs, provided that the pages have enough stretch so
+that \TeX\ can still compose them decently.
+\PlainTeX\ leaves |\inter!-linepenalty| at~$0$.
+\enddesc
+
+\begindesc
+\cts clubpenalty {\param{number}}
+\explain
+^^{club line}
+This parameter specifies the \minref{penalty} for
+breaking a page just after the first line of a paragraph.
+A line by itself at the bottom of a page is called a ``club line''.
+\PlainTeX\ sets |\clubpenalty| to $150$.
+\enddesc
+
+\begindesc
+\cts widowpenalty {\param{number}}
+\explain
+^^{widow line}
+This parameter specifies the \minref{penalty} for
+breaking a page just before the last line of a paragraph.
+A line by itself at the top of a page is called a ``widow line''.
+\PlainTeX\ sets |\widowpenalty| to $150$.
+\enddesc
+
+\begindesc
+\cts displaywidowpenalty {\param{number}}
+\explain
+^^{widow line}^^{math display}
+This parameter specifies the \minref{penalty} for
+breaking a page just before the last line of a partial paragraph
+that immediately precedes a math display.
+\PlainTeX\ sets |\displaywidowpenalty| to $50$.
+
+\enddesc
+
+\begindesc
+\cts predisplaypenalty {\param{number}}
+\explain
+^^{math display}
+This parameter specifies the \minref{penalty} for
+breaking a page just before a math display.
+\PlainTeX\ sets |\predisplaypenalty| to $10000$.
+\enddesc
+
+\begindesc
+\cts postdisplaypenalty {\param{number}}
+\explain
+^^{math display}
+This parameter specifies the \minref{penalty} for
+breaking a page just after a math display.
+\PlainTeX\ leaves |\postdisplaypenalty| at $0$.
+\enddesc
+
+\begindesc
+\cts brokenpenalty {\param{number}}
+\explain
+This parameter specifies the \minref{penalty} for
+breaking a page just after a line that ends in
+a discretionary item (usually a hyphen).
+^^{hyphenation}
+|\brokenpenalty| applies to page breaking, while
+^|\hyphenpenalty| \ctsref{\hyphenpenalty} applies to line breaking.
+\PlainTeX\ sets |\brokenpenalty| to $100$.
+\enddesc
+
+\begindesc
+\cts insertpenalties {\param{number}}
+\explain
+\bix^^{insertions//penalties for}
+\bix^^{floating material}
+This parameter contains the sum of certain penalties \minrefs{penalty}
+that \TeX\ accumulates as it is placing insertions onto the
+current page.
+These penalties are incurred when \TeX\ is processing an |\insert|
+command
+and discovers that a previous insertion of the same kind on this page has
+been split, leaving part of it for subsequent pages.
+See \knuth{pages~123--125} for the details of this
+calculation.
+
+\margin{Material moved from a footnote to the main text.}
+|\insertpenalties| has an entirely different meaning during an
+^^{output routine//meaning of \b\tt\\insertpenalties\e\ in}
+output routine---it's the number of insertions that have been seen
+but that don't fit on the current page (see \knuth{page~125}).
+\enddesc
+
+\begindesc
+\cts floatingpenalty {\param{number}}
+\explain
+This parameter specifies the \minref{penalty} that
+\TeX\ adds to |\insertpenalties|
+^^|\insertpenalties|
+when the page builder is adding an insertion to the current page
+and discovers that a previous insertion of the same kind on this page has
+been split, leaving part of it for subsequent pages.
+\PlainTeX\ leaves |\floatingpenalty| at~$0$.
+\eix^^{insertions//penalties for}
+\eix^^{floating material}
+
+\enddesc
+
+\begindesc
+\cts pagegoal {\param{dimen}}
+\explain
+This parameter specifies the
+desired height for the current page.
+\TeX\ sets
+|\pagegoal| to the current value of |\vsize|
+when it first puts a box or an insertion on the current page.
+You can shorten a page while \TeX\ is working on it by
+changing the value of |\pagegoal|---even if the new value is
+less than the height of the material already on that page.
+\TeX\ will just put the extra material on the next page.
+But remember---|\pagegoal| is reset to |\vsize| again when \TeX\
+starts the next page.
+\enddesc
+
+\begindesc
+\cts pagetotal {\param{dimen}}
+\explain
+This parameter specifies the
+accumulated natural height of the current page.
+\TeX\ updates |\pagetotal| as it adds
+items to the main \minref{vertical list}.
+
+
+\enddesc
+
+\begindesc
+\cts pagedepth {\param{dimen}}
+\explain
+This parameter specifies the depth of the current page.
+\TeX\ updates |\pagedepth| as it adds
+items to the main \minref{vertical list}.
+\enddesc
+
+\begindesc
+\cts pageshrink {\param{dimen}}
+\explain
+This parameter specifies the amount of \minref{shrink}
+in the accumulated \minref{glue} on the current page.
+\TeX\ updates |\pageshrink| as it adds
+items to the main \minref{vertical list}.
+\enddesc
+
+\begindesc
+\cts pagestretch {\param{dimen}}
+\cts pagefilstretch {\param{dimen}}
+\cts pagefillstretch {\param{dimen}}
+\cts pagefilllstretch {\param{dimen}}
+\explain
+These four parameters together specify the amount of \minref{stretch}
+in the \minref{glue} on the current page. The amount of stretch has
+the form
+{\def\f#1{\hbox{\tt fi#1}}%
+$n_0 + n_1\f{l} + n_2\f{ll} + n_3\f{lll}$}, with the four parameters
+giving the values of the four $n_i$.
+\TeX\ updates these parameters as it adds
+items to the main \minref{vertical list}.
+
+\eix^^{page breaks//parameters for}
+\eix^^{page breaks}
+\enddesc
+
+%==========================================================================
+\section{Page layout}
+
+\subsection {Page description parameters}
+
+\begindesc
+\bix^^{page dimensions}
+\margin{This command was also described in the `Paragraphs' section.
+The combined description now appears there.}
+\aux\cts hsize {\param{dimen}}
+\explain
+This parameter specifies the current line length.
+See \xrefpg{\hsize} for a more complete explanation.
+\enddesc
+
+\begindesc
+\cts vsize {\param{dimen}}
+\explain
+This parameter specifies the current vertical extent of a page.
+\TeX\ examines it only when it is starting a page. Thus if you change
+|\vsize| in the
+middle of a page, your change won't affect anything until the following page.
+If you want to change the vertical extent of a page when
+you're in the middle of it, you should assign the new
+height to ^|\pagegoal| (\xref \pagegoal) instead. (If you
+want the change to affect the following pages too, you should
+change \emph{both} |\vsize| and |\pagegoal|.)
+\PlainTeX\ sets |\vsize| to |8.9in|.
+\eix^^{page dimensions}
+\enddesc
+
+\begindesc
+\cts hoffset {\param{dimen}}
+\cts voffset {\param{dimen}}
+\margin{These commands were moved up from later in the subsection.}
+^^{page origin}
+\idxsee{origin}{page origin}
+\explain
+\TeX\ normally takes the ``origin'' of a page, that is, the point where
+it starts printing, as being one inch down from the top of the page and one
+inch to the right of the left end of the page.\footnote{
+\TeX\ itself is indifferent to where the origin of the page is,
+but this information has to be built into the device drivers
+^^{device drivers//page origin known to}
+that convert \dvifile s into printable form so that different devices
+will yield the same results.}
+The values of |\hoffset| and
+|\voffset| give the horizontal and vertical offset of the actual origin
+from this point. Thus if |\hoffset| and |\voffset| are both
+zero, \TeX\ uses its normal origin.
+\example
+\hoffset = -.3in
+ % Start printing .7 inches from left edge of paper.
+\voffset = 1in
+ % Start printing 2 inches from top edge of paper.
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts topskip {\param{glue}}
+\explain
+\TeX\ inserts glue at the top of each
+page in order to ensure that the baseline of the first box on the page
+always is the same distance $d$ from the top of the page.
+|\topskip| determines the amount of that glue,
+called the ``|\topskip| glue'', by specifying
+what $d$ should be (provided that the first box
+on the page isn't too tall).
+$d$ is given by the natural size of the |\topskip| glue.
+If the height of the first box on the page exceeds $d$,
+so that the glue would be negative, \TeX\ simply inserts no
+|\topskip| glue at all on that page.
+
+To understand better the effect of these rules, assume that |\topskip|
+has no stretch or shrink and that the first item on the page is indeed a box.
+Then if the height of that box is no greater than |\topskip|,
+its baseline will be |\topskip|
+from the top of the page independently of its height. On the other hand,
+if the height of the box is $e$ greater than |\topskip|, its baseline will be
+|\topskip|\tplus$e$ from the top of the page.
+See \knuth{pages~113--114} for the remaining details of how
+|\topskip| works.
+\PlainTeX\ sets |\topskip| to |10pt|.
+\enddesc
+
+
+\begindesc
+\cts parskip {\param{glue}}
+\explain
+This parameter specifies the ``^{paragraph skip}'', i.e., the
+vertical glue that \TeX\ inserts at the start of a paragraph.
+^^{paragraphs//glue between}
+See |\par| (\xref{\@par}) for more information about what happens
+when \TeX\ starts a paragraph.
+\PlainTeX\ sets |\parskip| to |0pt plus 0.1pt|.
+\enddesc
+
+\begindesc
+\cts maxdepth {\param{dimen}}
+\explain
+This parameter specifies the maximum depth of the bottom \minref{box} on
+a page. It is related to |\boxmaxdepth| (\xref \boxmaxdepth). If the
+depth of the bottom box on a page exceeds |\maxdepth|, \TeX\ moves the
+box's reference point down so that it's
+|\maxdepth| from the bottom of that box.
+Without this adjustment, the bottom box on
+a page could extend well into the bottom margin or even off
+the page entirely. \PlainTeX\ sets |\maxdepth| to |4pt|.
+\enddesc
+
+%==========================================================================
+\subsection{Page numbers}
+
+\begindesc
+\bix^^{page numbering}
+\cts pageno {\param{number}}
+\explain
+This parameter contains the current page number as an integer. The page
+number is normally negative for front-matter pages that are numbered
+with small roman numerals instead of arabic numerals. If you change the
+page number within a page,
+the changed number will be used in any headers or footers that
+appear on that page.
+The actual
+printing of page numbers is handled by \TeX's \minref{output routine},
+which you can modify.
+
+\PlainTeX\ keeps the page number in the \minref{register} ^|\count0|.
+(|\pageno| is, in fact, a synonym for |\count0|.)
+Whenever it ships out a page to the \dvifile,
+^^|\shipout//{\tt\\count} registers displayed at|
+\TeX\ displays the current value of |\count0| on your
+terminal so that you can tell which page it is working on.
+It's possible to use registers |\count1|--|\count9| for nested
+levels of page numbers (you must program this yourself).
+If any of these registers are nonzero, \TeX\ displays them on your
+terminal also.\footnote{
+More precisely, it displays all registers in sequence from
+|\count0| to |\count9|, but omits trailing zero registers.
+For instance, if the values of |\count0|--|\count3|
+are $(17, 0 , 0, 7)$ and the others are $0$,
+\TeX\ displays the page number as {\tt [17.0.0.7]}.}
+\example
+This explanation appears on page \number\pageno\
+of our book.
+|
+\produces
+This explanation appears on page \number\pageno\
+of our book.
+
+\nextexample
+\pageno = 30 % Number the next page as 30.
+Don't look for this explanation on page \number\pageno.
+|
+\produces
+Don't look for this explanation on page 30.
+\endexample
+\enddesc
+
+\begindesc
+\cts advancepageno {}
+\explain
+This command adds $1$ to the page number
+$n$ in |\pageno| if $n\ge0$
+and subtracts $1$ from it if $n<0$.
+\enddesc
+
+\begindesc
+\easy\cts nopagenumbers {}
+\explain
+By default, \plainTeX\ produces a footer containing a centered page number.
+This command tells \TeX\ to produce a blank footer instead.
+\enddesc
+
+\begindesc
+\cts folio {}
+\explain
+This command produces the current page number, whose value is the number
+$n$ contained in ^|\pageno|.
+If $n\ge0$,
+\TeX\ produces $n$ as a decimal number,
+while if $n<0$,
+\TeX\ produces $-n$ in lowercase roman numerals.
+\example
+This explanation appears on page \folio\ of the book.
+|
+\produces
+This explanation appears on page \folio\ of the book.
+\endexample
+
+\eix^^{page numbering}
+\enddesc
+
+
+%==========================================================================
+\subsection{Header and footer lines}
+
+\begindesc\secondprinting{\vglue-.75\baselineskip\vskip0pt}
+\cts headline {\param{token list}}
+\cts footline {\param{token list}}
+\explain
+These parameters
+contain, respectively, the current headline (header) and the current
+footline (footer).
+The \plainTeX\ output routine
+places the headline at the top of each page and the footline
+at the bottom of each page.
+The default headline is empty and the default footline is a centered
+page number.
+
+The headline and footline should both
+be as wide as |\hsize| (use |\hfil|, \xref{\hfil}, for this
+if necessary).
+You should always include a font-setting command in these lines, since
+the current font is unpredictable when \TeX\ is calling the
+output routine. If you don't set the font explicitly,
+you'll get whatever font \TeX\ was using when it broke the page.
+
+You shouldn't try to use |\headline| or |\footline|
+to produce multiline headers or footers.
+Although \TeX\ won't complain, it will give you something that's very ugly.
+See \xrefpg{bighead} for a method of creating multiline headers or
+footers.
+\example
+\headline = {\tenrm My First Reader\hfil Page \folio}
+|
+\produces
+\pageno = 10
+\line{\tenrm \noindent My First Reader\hfil Page \folio}
+\par ({\it at the top of page \folio}\/)
+\nextexample
+\footline = {\tenit\ifodd\pageno\hfil\folio
+ \else\folio\hfil\fi}
+% Produce the page number in ten-point italic at
+% the outside bottom corner of each page.
+|
+\endexample\enddesc
+
+\secondprinting{\vfill\eject}
+
+
+%==========================================================================
+\subsection {Marks}
+
+\begindesc
+\cts mark {\rqbraces{\<text>}}
+\explain
+\bix^^{marks}
+This command causes \TeX\ to append a mark
+containing \<mark text>
+to whatever list it is currently constructing.
+Generally you shouldn't use |\mark| within an
+``inner'' construct such as a math formula or a \minref{box}
+you've built with an |\hbox|, |\vbox|, or |\vtop| command, because
+\TeX\ won't see the mark when it's constructing the main box of the page. But
+if you use |\mark| in ordinary horizontal \minref{mode}
+or directly in an hbox that's part of the main vertical list,
+the mark migrates out
+to the main \minref{vertical list}.
+See \knuth{pages~259--260} for examples showing how |\mark| can be used.
+\enddesc
+
+\begindesc
+\cts firstmark {}
+\cts botmark {}
+\cts topmark {}
+\explain
+These commands expand to the mark text in an item generated by an earlier
+^|\mark| command.
+The mark text has the form of a token list.
+\TeX\ sets the values of these commands when it
+finishes placing the contents of a page into ^|\box255|,
+just before calling the \minref{output routine}
+as part of its \minref{page break}ing actions. \TeX\ determines
+these values as follows:
+\ulist\compact
+\li |\firstmark| contains the tokens of the first mark on the page.
+\li |\botmark| contains the tokens of the last mark on the page.
+\li |\topmark| contains the tokens of the mark that is in effect at
+the very top of the page.
+That mark is the last mark
+that \emph{preceded} the page,
+i.e., the |\botmark| of the previous page.
+It is empty if no marks preceded the page.
+\endulist
+\noindent
+If a page has no marks on it, \TeX\ will set |\firstmark| and |\botmark| to
+the same mark as |\topmark|, i.e., the most recent preceding mark.
+The table at the bottom of \knuth{page~258} illustrates the relation among
+|\firstmark|, |\botmark|, and |\topmark|.
+\enddesc
+
+\begindesc
+\cts splitfirstmark {}
+\cts splitbotmark {}
+\explain
+^^{marks//for split lists}
+These commands expand to the ^{mark text} generated by an earlier
+^|\mark| command that produced an item in the item list of a vbox $V$.
+The mark text has the form of a token list.
+When \TeX\
+splits $V$ in response to a ^|\vsplit| command (\xref \vsplit),
+it sets the values of these commands as follows:
+\ulist\compact
+\li |\splitfirstmark| contains the tokens of the first mark in
+the item list of $V$.
+\li |\splitbotmark| contains the tokens of the last mark in
+the item list of $V$.
+\endulist
+These commands produce no tokens if there was no preceding |\vsplit|,
+or if the most recent preceding |\vsplit| didn't contain any marks.
+\eix^^{marks}
+\enddesc
+
+%==========================================================================
+\section {Insertions}
+
+\subsection {Footnotes}
+
+\begindesc
+\easy\cts footnote {\<argument$_1$> \<argument$_2$>}
+\cts vfootnote {\<argument$_1$> \<argument$_2$>}
+\explain
+These commands produce footnotes.
+\<argument$_1$> is the ``^{reference mark}''
+for the footnote and \<argument$_2$> is its text.
+The text can be several paragraphs long if necessary and can contain
+constructs such as math displays, but it shouldn't contain any
+\minref{insertion}s (such as other footnotes).
+
+You shouldn't use these commands inside a subformula of a math formula,
+in a box within a box being contributed to a page,
+or in an insertion of any kind.
+If you're unsure whether these restrictions apply, you can be safe by
+only using |\footnote| and |\vfootnote| directly within a paragraph or
+between paragraphs.
+
+These restrictions aren't as severe as they seem because you can use
+|\vfootnote| to footnote most anything.
+Both |\foot!-note| and |\vfoot!-note| insert the reference mark in front of the
+footnote itself, but |\vfoot!-note| doesn't insert the reference mark into the
+text.
+Thus, when you use |\vfoot!-note| you can
+explicitly insert the reference mark
+wherever it belongs without concern about the context
+and place the |\vfootnote| in the next paragraph.
+If you find that the footnote lands on
+the page following the one where it belongs, move the |\vfootnote| back
+to the previous paragraph.
+There are rare circumstances where you'll need to
+alter the text of your document in order to get a footnote to appear on
+the same page as its reference mark.
+\example
+To quote the mathematician P\'olya is a ploy.\footnote
+*{This is an example of an anagram, but not a strict one.}
+|
+\produces
+To quote the mathematician P\'olya is a ploy.*
+\par\line{\hskip .5in \vdots\hfil}
+\nointerlineskip \bigskip
+\footnoterule\par\parindent = 12pt
+\textindent{*}This is
+an example of an anagram, but not a strict one.
+\endexample
+\example
+$$f(t)=\sigma\sigma t\;\raise 1ex \hbox{\dag}$$
+\vfootnote \dag{The $\sigma\sigma$ notation was explained in
+the previous section.}
+|
+\produces
+$$f(t)=\sigma\sigma t\>\raise 1ex \hbox{\dag}$$
+\par\line{\hskip .5in \vdots\hfil}
+\nointerlineskip \bigskip
+\footnoterule\par\parindent = 12pt
+\textindent{\dag}{The $\sigma\sigma$ notation was explained in
+the previous section.}
+\endexample
+\enddesc
+
+%==========================================================================
+\subsection {General insertions}
+
+\begindesc
+\bix^^{insertions//commands for}
+\cts topinsert {\<vertical mode material> {\bt \\endinsert}}
+\cts midinsert {\<vertical mode material> {\bt \\endinsert}}
+\cts pageinsert {\<vertical mode material> {\bt \\endinsert}}
+\explain
+These commands produce different forms of insertions that
+instruct
+(or allow) \TeX\ to relocate the \<vertical mode material>:
+\ulist
+\li |\topinsert| attempts to put the material at the top of the current page.
+If it won't fit there, |\topinsert|
+will move the material to the next available top of page.
+\li |\midinsert| attempts to put the material at the current position.
+If it won't fit there, |\midinsert|
+will move the material to the next available top of page.
+\li |\pageinsert| puts the material by itself on the next page.
+To avoid an underfull page, be sure to end the inserted material with
+|\vfil| or fill out the excess space some other way.
+% Knuth doesn't say this, but I tried an experiment that verified it.
+% Nor does he say explicitly that an insertion does a \par.
+\endulist
+\noindent
+The \<vertical mode material>
+is said to be ``floating'' ^^{floating material} because \TeX\
+can move it from one place to another.
+Insertions are very useful for material such as figures and tables because
+you can position such material where you want it without knowing where the
+page breaks will fall.
+
+Each of these commands implicitly ends the current paragraph, so
+you should use them only between paragraphs.
+You should not use them within a box or within another insertion.
+If you have several insertions competing for
+the same space, \TeX\ will retain their relative order.
+\example
+\pageinsert
+% This text will appear on the following page, by itself.
+This page is reserved for a picture of the Queen of Hearts
+sharing a plate of oysters with the Walrus and
+the Carpenter.
+\endinsert
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts endinsert {}
+\explain
+This command ends an insertion started by
+|\topinsert|, |\midinsert|, or |\pageinsert|.
+\enddesc
+
+\begindesc
+\cts insert {\<number> \rqbraces{\<vertical mode material>}}
+\explain
+\minrefs{insertion}
+This primitive command provides the
+underlying mechanism for constructing insertions, but
+it is hardly ever used outside of a \minref{macro} definition.
+The definitions of the
+|\foot!-note|, |\vfoot!-note|,
+|\top!-insert|, |\mid!-insert|, and |\page!-insert| commands are
+all built around |\insert|.
+^^|\topinsert|
+^^|\midinsert| ^^|\pageinsert| ^^|\footnote| ^^|\vfootnote|
+
+When you design insertions for a document, you should assign a different
+integer code\footnote
+{\texbook{} uses the term ``class'' for a code.
+We use a different term to avoid confusion with the other meaning of
+``class'' (\xref{class}).}
+$n$ to each kind of insertion,
+using the ^|\newinsert| command (\xref{\@newinsert}) to obtain the
+integer codes.
+The |\insert| command itself appends the \<vertical mode material>
+to the current horizontal or \minref{vertical list}.
+Your \minref{output routine} is responsible for
+moving the inserted material from where it resides in |\box|$\,n$
+to an output page.
+^^{output routine}
+
+\TeX\ groups together all insertions having the same code
+number. Each insertion
+code $n$ has four \minref{register}s associated with it:
+\ulist
+\li |\box|$\,n$ is where \TeX\ accumulates the material for insertions
+with code $n$. When \TeX\ breaks a page, it puts into |\box|$\,n$
+as much insertion $n$ material as will fit on the page.
+Your output routine should then move this material to the actual page.
+You can use ^|\ifvoid| \ctsref{\@ifvoid}
+to test if there is any material in |\box|$\,n$.
+If not all the material fits, \TeX\ saves the leftovers for the next page.
+\li |\count|$\,n$ is a magnification factor $f.$ When \TeX\ is computing
+the vertical space occupied on the page
+by insertion $n$ material, it multiplies the
+vertical extent of this material by $f/1000$.
+Thus you would ordinarily set $f$ to $500$ for a double-column insertion
+and to $0$ for a marginal~note.
+\li |\dimen|$\,n$ specifies the maximum amount
+of insertion $n$ material that \TeX\ will put on a single page.
+\li |\skip|$\,n$ specifies extra space that \TeX\ allocates on the page
+if the page contains any insertion $n$ material.
+This space is in addition to the space occupied by the insertion itself.
+For example, it would account for the space on a page above the footnotes
+(if there are~any).
+\endulist
+\noindent
+\TeX\ sets |\box|$\,n$, and you should set the other three registers
+so that \TeX\ can correctly compute the vertical space required by the
+insertion.
+See \knuth{pages~122--125} for further details of how \TeX\ processes this
+command and of how insertions interact with page breaking.
+\xrdef{endofinsert}
+\enddesc
+
+\see |\floatingpenalty| (\xref \floatingpenalty).
+\eix^^{insertions//commands for}
+
+
+%==========================================================================
+\section{Modifying the output routine}
+
+\bix^^{output routine}
+\begindesc
+\cts output {\param{token list}}
+\explain
+This parameter contains the current \minref{output routine}, i.e.,
+the token list that \TeX\ expands when it finds a page break.
+\TeX\ puts the page into ^|\box255|, so |\output| is responsible
+for doing something with |\box255|---either shipping it out or
+putting it somewhere else.
+The output routine is also responsible for attaching things such as
+headers and footers.
+\enddesc
+
+\begindesc
+\cts plainoutput {}
+\explain
+This command invokes \plainTeX's output routine.
+^^{output routine//default in \plainTeX}
+\PlainTeX\ defines ^|\output| as
+a token list containing the single token |\plainoutput|.
+\enddesc
+
+\begindesc
+\cts shipout {\<box>}
+\explain
+This command instructs \TeX\ to send \<box> to the \dvifile.
+^^{\dvifile//receives boxes from \b\tt\\shipout\e}
+\TeX\ expands any |\write| command in \<box> as part of |\shipout|.
+^^|\write//expanded during {\tt\\shipout}|
+The principal use of |\shipout| is in the output routine, but you can
+use it anywhere.
+\enddesc
+
+\begindesc
+\cts deadcycles {\param{number}}
+\explain
+This parameter contains the number of times that \TeX\ has initiated
+the \minref{output routine} since the last time it did a
+^^|\shipout| |\ship!-out|.\footnote{
+More precisely, \TeX\ sets |\dead!-cyles| to $0$ whenever it executes
+|\ship!-out|
+and increments it by $1$ whenever it executes |\output|.}
+If |\deadcycles| gets too big, you've probably gotten
+\TeX\ into a loop, e.g., one where the page builder is trying the same page
+break over and over again.
+\enddesc
+
+\begindesc
+\cts maxdeadcycles {\param{number}}
+\explain
+If the value of |\deadcycles| exceeds the value of |\maxdeadcycles|,
+\TeX\ assumes that the output routine has gotten into a loop.
+\TeX\ then complains and runs its own simple output routine,
+equivalent to |\shipout!allowbreak\box255|,
+that is likely to break the loop.
+\PlainTeX\ sets |\maxdeadcycles| \hbox{to $25$}.
+\enddesc
+
+\begindesc
+\cts outputpenalty {\param{number}}
+\explain
+\TeX\ sets this parameter when it breaks a page. If the breakpoint was at a
+\minref{penalty} item, \TeX\ removes the penalty item and
+sets |\outputpenalty| to the penalty value at
+the breakpoint; otherwise it sets |\outputpenalty| \hbox{to $0$}.
+
+Suppose that you are undoing a page break
+in order to break the page at a different place than the one that \TeX\
+has just chosen. In order to reconstruct the page, you need to recreate
+the penalty at \TeX's chosen breakpoint.
+You can accomplish this with the command
+|\penalty!allowbreak\outputpenalty|.
+\enddesc
+
+\begindesc
+\cts holdinginserts {\param{number}}
+\explain
+If this parameter is greater than $0$ when \TeX\
+is processing a page break, \TeX\ will refrain from processing insertions.
+Setting this parameter to $1$
+can be useful when you're writing an output routine
+that needs to reprocess the contents of the page, e.g.,
+an output routine that uses a value of |\vsize| (\xref \vsize) different from
+the one used by the page builder.
+
+\eix^^{output routine}
+\enddesc
+
+%==========================================================================
+\section {Splitting vertical lists}
+
+\begindesc
+\cts vsplit {\<number> {\bt to} \<dimen>}
+\explain
+This command causes \TeX\ to split the \minref{box} numbered
+\<number>, which we'll call $B_2$, into two parts.
+It uses the same algorithm that it would use if $B_2$ was a page
+and it was breaking that page;
+the division point then corresponds to the page break that it would find.
+The box $B_2$ must be a vbox, not an hbox.
+% we avoid starting the previous sentence with a symbol, a copyediting no-no.
+\TeX\ puts the material preceding the division point into
+another box $B_1$ and leaves the material after the division point in $B_2$.
+The |\vsplit| command then produces $B_1$.
+Normally you'd assign $B_1$ to a different
+box register, as in the example below.
+If the division point is at the end of $B_2$,
+$B_2$ will be empty after the |\vsplit|.
+
+\TeX\ employs its usual page-breaking algorithm
+^^{page breaks//in split lists}
+for the split.
+It uses \<dimen> for ^|\pagegoal|, the desired height of $B_1$.
+The vertical extent of $B_1$ may not be exactly
+\<dimen> because \TeX\ may not be able to achieve its page goal perfectly.
+\TeX\ does not consider insertions in calculating the split,
+so insertions in the original vertical list of $B_2$ will be retained
+but won't affect the split point.
+
+\example
+\setbox 20 = \vsplit 30 to 7in
+% Split off the first seven inches or so of material from
+% box 30 and place that material in box 20.
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts splitmaxdepth {\param{dimen}}
+\explain
+This parameter specifies the
+maximum allowable depth of a box resulting from a |\vsplit|.
+|\splitmaxdepth| plays the
+same role that ^|\maxdepth| (\xref \maxdepth) plays for a page.
+\enddesc
+
+\begindesc
+\cts splittopskip {\param{glue}}
+\explain
+This parameter specifies the glue that \TeX\ inserts at the top of
+a box resulting from a |\vsplit|.
+|\splittopskip| plays the
+same role that ^|\topskip| (\xref \topskip) plays for a page.
+\enddesc
+
+\see |\splitbotmark|, |\splitfirstmark| (\xref \splitfirstmark).
+
+\enddescriptions \endchapter \byebye
diff --git a/Master/texmf-doc/doc/english/impatient/paras.tex b/Master/texmf-doc/doc/english/impatient/paras.tex
new file mode 100644
index 00000000000..81501f57721
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/paras.tex
@@ -0,0 +1,2166 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+% See file fdl.tex for copying conditions.
+
+\input macros
+\chapter {Commands \linebreak for composing \linebreak paragraphs}
+
+\chapterdef{paras}
+
+This section covers commands that
+deal with characters, words, lines, and entire paragraphs.
+For an explanation of the conventions used in this section,
+see \headcit{Descriptions of the commands}{cmddesc}.
+
+\begindescriptions
+
+\section {Characters and accents}
+
+%==========================================================================
+\subsection {Letters and ligatures for European alphabets}
+
+\begindesc
+\xrdef{fornlets}
+\bix^^{ligatures}
+^^{special symbols}
+^^{European alphabets}
+%
+\ctsx AA {Scandinavian letter \AA}
+\ctsx aa {Scandinavian letter \aa}
+\ctsx AE {\AE\ ligature}
+\ctsx ae {\ae\ ligature}
+\ctsx L {Polish letter \L}
+\ctsx l {Polish letter \l}
+\ctsx O {Danish/Norwegian letter \O}
+\ctsx o {Danish/Norwegian letter \o}
+\ctsx OE {\OE\ ligature}
+\ctsx oe {\oe\ ligature}
+\ctsx ss {German letter \ss}
+\explain
+These commands produce various letters and ligatures from European
+alphabets.
+They are useful for occasional words and phrases in these
+languages---but if you need to typeset a large amount of text in a European
+language, you should probably be using a version of \TeX\ adapted
+to that language.\footnote{The \TeX\ Users Group (\xref{resources}) can
+provide you with information about European language versions of \TeX.}
+
+You'll need a space after these commands when you use them within a word,
+so that
+\TeX\ will treat the following letters as part of the word
+rather than as part of the command.
+You needn't be in \minref{math mode} to use these commands.
+\example
+{\it les \oe vres de Moli\`ere}
+|
+\produces
+{\it les \oe vres de Moli\`ere}
+\endexample
+\eix^^{ligatures}
+\enddesc
+
+%==========================================================================
+\subsection {Special symbols}
+
+\begindesc
+^^{special characters}
+%
+\easy\ctspecialx # \ctsxrdef{@pound} {pound sign \#}
+\ctspecialx $ \ctsxrdef{@bucks} {dollar sign \$}
+\ctspecialx % \ctsxrdef{@percent} {percent sign \%}
+\ctspecialx & \ctsxrdef{@and} {ampersand \&}
+\ctspecialx _ \ctsxrdef{@underscore} {underscore \_}
+\ctsx lq {left quote \lq}
+\ctsx rq {right quote \rq}
+\aux\ctsx lbrack left bracket [
+\aux\ctsx rbrack right bracket ]
+\ctsx dag {dagger symbol \dag}
+\ctsx ddag {double dagger symbol \ddag}
+\ctsx copyright {copyright symbol \copyright}
+\ctsx P {paragraph symbol \P}
+\ctsx S {section symbol \S}
+\explain
+These commands produce various special characters and marks. The first
+five commands are necessary because \TeX\ by default
+attaches special meanings to
+the characters (|#|, |$|, |%|, |&|, |_|).
+You needn't be in \minref{math mode} to use these commands.
+
+You can use the dollar sign in the Computer Modern
+italic fonts to get the ^{pound
+sterling} symbol, as shown in the example below.
+
+\example
+\dag It'll only cost you \$9.98 over here, but in England
+it's {\it \$}24.98.
+|
+\produces
+\dag It'll only cost you \$9.98 over here, but in England
+it's {\it \$}24.98.
+\endexample
+\enddesc
+
+\begindesc
+\cts TeX {}
+\explain
+This command produces the \TeX\ logo. Remember to follow it by
+|\!vs| or to enclose it in a \minref{group} when you want a space
+after it.
+
+\example
+A book about \TeX\ is in your hands.
+|
+\produces
+A book about \TeX\ is in your hands.
+\endexample
+\enddesc
+
+\begindesc
+\cts dots {}
+\explain
+^^{dots}
+This command produces an ^{ellipsis}, i.e., three dots, in ordinary text.
+It's intended for use in mathematical writing; for an ellipsis
+between ordinary words, you should use |$\ldots$| \ctsref{\ldots} instead.
+Since |\dots| includes its own space, you shouldn't follow it by
+|\!vs|.
+\example
+The sequence $x_1$, $x_2$, \dots, $x_\infty$
+does not terminate.
+|
+\produces
+The sequence $x_1$, $x_2$, \dots, $x_\infty$
+does not terminate.
+\endexample
+\enddesc
+
+\see ``Miscellaneous ordinary math symbols'' (\xref{specsyms}).
+%==========================================================================
+\subsection {Arbitrary characters}
+
+\begindesc
+\bix^^{characters}
+\cts char {\<charcode>}
+\explain
+This command produces the character located at position \<charcode>
+of the current font.
+\example
+{\char65} {\char `A} {\char `\A}
+|
+\produces
+{\char65} {\char `A} {\char `\A}
+\endexample
+\enddesc
+
+\begindesc
+\cts mathchar {\<mathcode>}
+\explain
+This command produces the math character whose class, family, and
+font position are given by \<mathcode>.
+It is only legal in math mode.
+\example
+\def\digger{\mathchar "027F} % Like \spadesuit in plain TeX.
+% Class 0, family 2, font position "7F.
+$\digger$
+|
+\produces
+\def\digger{\mathchar "027F}
+% class 0, family 2, font position "7F
+$\digger$
+\endexample
+\enddesc
+
+\see |\delimiter| (\xref\delimiter).
+\eix^^{characters}
+
+%==========================================================================
+\subsection {Accents}
+
+\begindesc
+^^{accents}
+\xrdef{accents}
+%
+\ctspecialx ' \ctsxrdef{@prime} {^{acute accent} as in \'e}
+\ctspecialx . \ctsxrdef{@dot} {^{dot accent} as in \.n}
+\ctspecialx = \ctsxrdef{@equal} {^{macron accent} as in \=r}
+\ctspecialx ^ \ctsxrdef{@hat} {^{circumflex accent} as in \^o}
+\ctspecialx ` \ctsxrdef{@lquote} {^{grave accent} as in \`e}
+\ctspecialx " \ctsxrdef{@quote} {^{umlaut accent} as in \"o}
+\ctspecialx ~ \ctsxrdef{@not} {^{tilde accent} as in \~a}
+\ctsx c {^{cedilla accent} as in \c c}
+\ctsx d {^{underdot accent} as in \d r}
+\ctsx H {^{Hungarian umlaut accent} as in \H o}
+\ctsx t {^{tie-after accent} as in \t uu}
+\ctsx u {^{breve accent} as in \u r}
+\ctsx v {^{check accent} as in \v o}
+\explain
+These commands produce accent marks in ordinary text. You'll usually
+need to leave a space after the ones denoted by a single letter
+(see ``Spaces'', \xref{spaces}).
+
+\example
+Add a soup\c con of \'elan to my pin\~a colada.
+|
+\produces
+Add a soup\c con of \'elan to my pin\~a colada.
+\endexample
+
+\margin{`see also' moved to end of group, replacing the one there.}
+\enddesc
+
+\begindesc
+\cts i {}
+\cts j {}
+\explain
+These commands produce dotless versions of the letters `i' and `j'.
+You should use them instead of the ordinary `i' and `j' when you are putting
+an accent above those letters in ordinary text.
+^^{dotless letters}
+Use the ^|\imath| and ^|\jmath| commands (\xref\imath)
+for dotless `i's and `j's in math formulas.
+\example
+long `i' as in l\=\i fe \quad \v\j
+|
+\produces
+long `i' as in l\=\i fe \quad \v\j
+\endexample
+\enddesc
+
+\begindesc
+\cts accent {\<charcode>}
+\explain
+^^{accents}
+This command puts an accent over the character following this command.
+The accent is the character at position \<charcode> in the current font.
+\TeX\ assumes that the accent has been designed to fit over a character
+$1$\thinspace ex high in the same font as the accent. If the
+character to be accented
+is taller or shorter, \TeX\ adjusts the position accordingly. You can
+change \minref{font}s between the accent and the next character, thus
+drawing the accent character and the character to be accented
+from different fonts. If
+the accent character isn't really intended to be
+an accent, \TeX\ won't complain; it
+will just typeset something ridiculous.
+\example
+l'H\accent94 otel des Invalides
+% Position 94 of font cmr10 has a circumflex accent.
+|
+\produces
+l'H\accent94 otel des Invalides
+% Position 94 of font cmr10 has a circumflex accent.
+\endexample
+\see Math accents (\xref{mathaccent}).
+\enddesc
+%==========================================================================
+\subsection {Defeating boundary ligatures}
+
+\begindesc
+\bix^^{ligatures}
+\cts noboundary {}
+\explain
+You can defeat a ligature
+or kern that \TeX\ applies to the
+first or last character of a word by putting |\noboundary| just before
+or just after the word.
+Certain fonts intended for languages other than English
+contain a special boundary
+character that \TeX\ puts at the beginning
+and end of each word.
+The boundary character occupies no space and is invisible when printed.
+It enables \TeX\ to provide different typographical
+treatment to characters at the beginning or end of a word,
+since
+the boundary character can be part of a sequence of
+characters to be kerned or replaced by a ligature.
+(None of the standard \TeX\ fonts contain this boundary character.)
+The effect of |\noboundary| is to delete the
+boundary character if it's there, thus preventing \TeX\
+from recognizing the ligature or kern.
+\eix^^{ligatures}
+\enddesc
+
+%==========================================================================
+\section {Selecting fonts}
+
+\xrdef{selfont}
+
+%==========================================================================
+\subsection {Particular fonts}
+
+\begindesc
+^^{fonts}
+%
+\ctsx fivebf {use $5$-point bold font}
+\ctsx fivei {use $5$-point math italic font}
+\ctsx fiverm {use $5$-point roman font}
+\ctsx fivesy {use $5$-point math symbol font}
+\ctsx sevenbf {use $7$-point bold font}
+\ctsx seveni {use $7$-point math italic font}
+\ctsx sevenrm {use $7$-point roman font}
+\ctsx sevensy {use $7$-point math symbol font}
+\ctsx tenbf {use $10$-point bold text font}
+\ctsx tenex {use $10$-point math extension font}
+\ctsx teni {use $10$-point math italic font}
+\ctsx tenrm {use $10$-point roman text font}
+\ctsx tensl {use $10$-point slanted roman font}
+\ctsx tensy {use $10$-point math symbol font}
+\ctsx tenit {use $10$-point italic font}
+\ctsx tentt {use $10$-point typewriter font}
+\explain
+These commands cause \TeX\ to typeset the following text in the
+specified font. Normally you would enclose
+one of these font-selecting commands in a
+group, together with the text to be set in the selected font.
+Outside of a group a font-selecting command is
+effective until the end of the document
+(unless you override it with another such command).
+\example
+See how I've reduced my weight---from
+120 lbs.\ to {\sevenrm 140 lbs}.
+|
+\produces
+See how I've reduced my weight---from
+120 lbs.\ to {\sevenrm 140 lbs}.
+\endexample
+\enddesc
+
+\begindesc
+\cts nullfont {}
+\explain
+This command selects a font, built into \TeX,
+that has no characters in it. \TeX\ uses it
+as a replacement for an undefined font in a family of math fonts.
+\enddesc
+
+%==========================================================================
+\subsection {Type styles}
+
+\xrdef{seltype}
+\begindesc
+^^{type styles}
+\easy\ctsx bf {use boldface type}
+\ctsx it {use italic type}
+\ctsx rm {use roman type}
+\ctsx sl {use slanted type}
+\ctsx tt {use typewriter type}
+\explain
+These commands select a type style without changing the typeface or
+the point size.\footnote{
+\TeX\ does not provide predefined commands for changing just the point
+size, e.g., |\eightpoint|.
+Supporting such commands would require a great number of fonts,
+most of which would never be used.
+Such commands were, however, used in typesetting \texbook.}
+Normally you would enclose
+one of these type style commands in a
+group, together with the text to be set in the selected font.
+Outside of a group a type style command is
+effective until the end of the document
+(unless you override it with another such command).
+\example
+The Dormouse was {\it not} amused.
+|
+\produces
+The Dormouse was {\it not} amused.
+\endexample
+\enddesc
+
+\see ``Fonts in math formulas'' (\xref{mathfonts}).
+%==========================================================================
+\section {Uppercase and lowercase}
+
+\begindesc
+\bix^^{case conversion}
+\bix^^{uppercase//conversion to}
+\bix^^{lowercase//conversion to}
+\cts lccode {\<charcode> \tblentry{number}}
+\cts uccode {\<charcode> \tblentry{number}}
+\explain
+The |\lccode| and |\uccode| values for the $256$ possible input
+characters specify the correspondence between the lowercase and
+uppercase forms of letters. These values are used by the |\lowercase|
+and |\uppercase| commands respectively and by \TeX's hyphenation
+algorithm.
+
+\TeX\ initializes the values of |\lccode| and |\uccode| as follows:
+
+\ulist\compact
+\li The |\lccode| of a lowercase letter is the {\ascii} code for that letter.
+\li The |\lccode| of an uppercase letter is the {\ascii} code for the
+corresponding lowercase letter.
+\li The |\uccode| of an uppercase letter is the {\ascii} code for that letter.
+\li The |\uccode| of a lowercase letter is the {\ascii} code for the
+corresponding uppercase letter.
+\li The |\lccode| and |\uccode| of a nonletter are both zero.
+\endulist
+
+Most of the time there's no reason to change these values,
+but you might want to change them if you're using a language
+that has more letters than English.
+\example
+\char\uccode`s \char\lccode`a \char\lccode`M
+|
+\produces
+\char\uccode`s \char\lccode`a \char\lccode`M
+\endexample
+\enddesc
+
+\begindesc
+\cts lowercase {\rqbraces{\<token list>}}
+\cts uppercase {\rqbraces{\<token list>}}
+\explain ^^{case conversion}
+These commands convert the letters in \<token list>,
+i.e., those tokens with category code $11$, to their lowercase
+and uppercase forms.
+The conversion of a letter is defined by its |\lccode| (for lowercase)
+or |\uccode| (for uppercase) table value.
+Tokens in the list that are not letters are not affected---even if the
+tokens are \minref{macro} calls or other commands that expand into letters.
+\example
+\def\x{Cd} \lowercase{Ab\x} \uppercase{Ab\x}
+|
+\produces
+\def\x{Cd} \lowercase{Ab\x} \uppercase{Ab\x}
+
+\eix^^{case conversion}
+\eix^^{uppercase//conversion to}
+\eix^^{lowercase//conversion to}
+\endexample
+\enddesc
+
+%==========================================================================
+\section {Interword spacing}
+
+\begindesc
+\bix^^{spaces//interword}
+\easy\ctsbasic {\\\vs}{}
+\blankidxref\ctsxrdef{@space}
+\explain
+This command explicitly produces an interword
+space called a ``^{control space}''.
+A control space is useful when a
+letter occurs immediately after a control sequence, or in any other
+circumstance where you don't want two tokens to be run together in the
+output.
+The amount of space produced by |\!vs|
+is independent of preceding punctuation, i.e., its space factor
+(\xref\spacefactor) is $1000$.
+
+Incidentally, if you want to print the `\vs' ^^{visible space}
+character that we've used here to denote a space, you can get it by typing
+|{\tt \char `\ }|.
+
+\example
+The Dormouse was a \TeX\ expert, but he never let on.
+|
+\produces
+The Dormouse was a \TeX\ expert, but he never let on.
+\endexample
+\enddesc
+
+\begindesc
+\cts space {}
+\explain
+This command is equivalent to an input space character.
+It differs from ^|\ | in that its
+width \emph{can} be affected by preceding punctuation.
+\example
+Yes.\space No.\space Maybe.\par
+Yes.\!vs!.No.\!vs!.Maybe.
+
+|
+\produces
+Yes.\space No.\space Maybe.\par
+Yes.\ No.\ Maybe.
+\endexample
+\enddesc
+
+\begindesc
+\ctsact ^^M \xrdef{@newline}
+\explain
+This construct produces the ^{end of line} character.
+It normally has two effects when \TeX\ encounters it in
+your input:
+\olist
+\li It acts as a command, producing either an input space
+(if it comes at the end of a nonblank line)
+or a |\par| token (if it comes at the end of a blank line).
+^^|\par//from empty line|
+\li It ends the input line, causing \TeX\ to ignore the remaining
+characters on the line.
+\endolist
+\noindent
+However, |^^M| does \emph{not} end the line when it appears in the
+context |`\^^M|, denoting the ASCII code for control-M (the number $13$).
+You can change the meaning of |^^M|
+by giving it a different \minref{category code}.
+See \xrefpg{twocarets} for a more general explanation of the |^^| notation.
+\example
+Hello.^^MGoodbye.
+Goodbye again.\par
+The \char `\^^M\ character.\par
+% The fl ligature is at position 13 of font cmr10
+\number `\^^M\ is the end of line code.\par
+Again, \number `^^M is the end of line code,
+isn't it? % 32 is the ASCII code for a space
+|
+\produces
+{\catcode `\^ = 7 % disable indexing use within this display
+Hello.^^MGoodbye
+Goodbye again.\par
+The \char `\^^M\ character.\par
+\number `\^^M\ is the end of line code.\par
+Again, \number `^^M is the end of line code,
+isn't it?}
+\endexample
+\enddesc
+
+\begindesc
+\easy\ctsact ~ \xrdef{@not}
+\explain
+The \minref{active character} `|~|', called a ``^{tie}'',
+produces a normal interword space
+between two words and links those words so that
+a line break will not occur between them.
+You should use a tie in any context where a line break would be confusing,
+e.g., before a middle initial, after an abbreviation such as ``Dr.'',
+or after ``Fig.'' in ``Fig.~8''.
+
+\example
+P.D.Q.~Bach (1807--1742), the youngest and most
+imitative son of Johann~S. Bach, composed the
+{\sl Concerto for Horn and Hardart}.
+|
+\produces
+\margin{The inversion of dates is deliberate---cf. Peter Schickele.}
+P.D.Q.~Bach (1807--1742), the youngest and most
+imitative son of Johann~S. Bach, composed the
+{\sl Concerto for Horn and Hardart}.
+\endexample\enddesc
+
+\begindesc
+\easy\ctspecial / \ctsxrdef{@slash}
+\explain
+Every character in a \TeX\ \minref{font}
+has an ``^{italic correction}'' associated with it, although
+the italic correction
+is normally zero for a character in an unslanted (upright) font.
+The italic correction specifies the extra space that's needed
+when you're switching from a slanted font (not necessarily
+an italic font) to an unslanted font.
+The extra
+space is needed because a slanted character projects into the
+space that follows it, making the space look too small when the
+next character is unslanted.
+The metrics file for a font includes the italic correction of each
+character in the font.
+^^{metrics file//italic correction in}
+
+The |\/| command
+produces an ^{italic correction} for the preceding character.
+You should insert an italic correction when you're switching from
+a slanted font to an unslanted font,
+except when the next character is a period or comma.
+\example
+However, {\it somebody} ate {\it something}: that's clear.
+
+However, {\it somebody\/} ate {\it something\/}:
+that's clear.
+|
+\produces
+However, {\it somebody} ate {\it something}: that's clear.
+
+However, {\it somebody\/} ate {\it something\/}:
+that's clear.
+\endexample
+\enddesc
+
+\begindesc
+\cts frenchspacing {}
+\cts nonfrenchspacing {}
+\explain
+^^{interword spacing}
+\TeX\ normally adjusts the spacing between words to account for
+punctuation marks. For example, it inserts extra space at the end of a
+sentence and adds some stretch to the \minref{glue} following any
+punctuation mark there. The |\frenchspacing| command tells \TeX\ to make
+the interword spacing independent of punctuation, while the
+|\nonfrenchspacing| command tells \TeX\ to use its normal spacing rules.
+If you don't specify
+|\frenchspacing|, you'll get \TeX's normal spacing.
+
+See \xrefpg{periodspacing} for advice on how to control \TeX's treatment
+of punctuation at the end of sentences.
+
+\example
+{\frenchspacing An example: two sentences. Right? No.\par}
+{An example: two sentences. Right? No. \par}%
+|
+\produces
+{\frenchspacing An example: two sentences. Right? No.\par}
+{An example: two sentences. Right? No. \par}%
+\endexample
+
+\enddesc
+
+\begindesc
+\cts obeyspaces {}
+\explain
+\TeX\ normally condenses a sequence of several spaces to a single space.
+|\obeyspaces| instructs \TeX\ to produce a space in the output
+for each space in the input.
+|\obeyspaces| does not cause spaces at the beginning of a line
+to show up, however; for that we recommend the |\obey!-white!-space|
+command defined in |eplain.tex|
+(\xref{ewhitesp}).
+^^|\obeywhitespace|
+|\obeyspaces| is often useful when you're typesetting something,
+computer input for example,
+in a monospaced font (one in which each character takes up the
+same amount of space)
+and you want to show exactly what each line of input looks like.
+
+You can use the |\obeylines| command (\xref{\obeylines}) to get \TeX\
+to follow the line boundaries of your input. |\obeylines| is often
+used in combination with |\obeyspaces|.
+\example
+These spaces are closed up
+{\obeyspaces but these are not }.
+|
+\produces
+These spaces are closed up
+{\obeyspaces but these are not }.
+\endexample
+\enddesc
+
+\begindesc
+\cts spacefactor {\param{number}}
+\cts spaceskip {\param{glue}}
+\cts xspaceskip {\param{glue}}
+\cts sfcode {\<charcode> \tblentry{number}}
+\explain
+These primitive \minref{parameter}s affect how much space \TeX\
+puts between two adjacent words, i.e., the ^{interword spacing}.
+The normal interword spacing is supplied by the current font.
+As \TeX\ is processing a \minref{horizontal list}, it keeps track of the
+^{space factor} $f$ in |\spacefactor|.
+As it processes each input character $c$, it updates $f$ according to the
+value of $f_c$, the space factor code of $c$ (see below).
+For most characters, $f_c$ is $1000$ and \TeX\ sets $f$ to $1000$.
+(The initial value of $f$ is also $1000$.)
+When \TeX\ sees an interword space, it adjusts the size of that space
+by multiplying the stretch and shrink of that space by
+$f/1000$ and $1000/f$ respectively.
+Thus:
+\olist\compact
+\li If $f=1000$, the interword space keeps its normal value.
+\li If $f<1000$, the interword space gets less \minref{stretch}
+and more \minref{shrink}.
+\li If $f>1000$, the interword space gets more \minref{stretch}
+and less \minref{shrink}.
+\endolist
+% > changed to \ge on the next line after second edition was typeset.
+% Correction made by A-W production.
+In addition, if $f\ge2000$ the interword space is further increased by the
+``extra space'' parameter associated with the current font.
+
+Each
+input character $c$ has an entry in the |\sfcode| (space factor code)
+table.
+The |\sfcode| table entry is independent of the font.
+Usually \TeX\ just sets $f$ to $f_c$ after it processes $c$.
+However:
+\ulist
+\li If $f_c$ is zero, \TeX\ leaves $f$ unchanged.
+Thus a character such as `|)|' in \plainTeX,
+for which $f_c$ is zero, is essentially transparent to
+the interword space calculation.
+\li If $f<1000<f_c$, \TeX\ sets $f$ to $1000$ rather than to $f_c$,
+i.e., it refuses to raise $f$ very rapidly.
+\endulist
+The |\sfcode| value for a period is normally $3000$,
+which is why \TeX\ usually puts extra space after a period
+% > to \ge here, too, as above.
+(see the rule above for the case $f\ge2000$).
+Noncharacter items in a horizontal list, e.g., vertical rules,
+generally act like characters with a space factor of $1000$.
+
+You can change the space factor explicitly by assigning
+a different numerical value to |\spacefactor|.
+You can also override the normal
+interword spacing by assigning a different numerical
+value to |\xspaceskip| or to |\spaceskip|:
+\ulist
+\li |\xspaceskip| specifies the glue to be used when $f\ge2000$;
+in the case where
+|\xspaceskip| is zero, the normal rules apply.
+\li |\spaceskip| specifies the glue to be used when $f<2000$ or when
+\hbox{|\xspaceskip|} is zero; if |\spaceskip| is zero, the normal rules apply.
+The stretch and shrink of
+the |\spaceskip| glue, like that of the ordinary interword glue,
+is modified according to the value of $f$.
+\endulist
+
+See \knuth{page~76} for the precise rules that \TeX\ uses in calculating
+interword \minref{glue}, and \knuth{pages~285--287} for the adjustments
+made to |\spacefactor| after various items in a horizontal list.
+\eix^^{spaces//interword}
+\enddesc
+
+%==========================================================================
+\section {Centering and justifying lines}
+
+\begindesc
+\bix^^{centering}
+\bix^^{flush left}
+\bix^^{flush right}
+\bix^^{justification}
+\easy\cts centerline {\<argument>}
+\cts leftline {\<argument>}
+\cts rightline {\<argument>}
+\explain
+The |\centerline| command produces an \minref{hbox} exactly as wide
+as the current line and places \<argument> at the center of the box.
+The |\leftline| and |\rightline| commands are analogous; they
+place \<argument> at the left end or at the right end of the box.
+If you want to apply one of these commands to
+several consecutive lines, you must apply
+it to each one individually.
+See \xrefpg{eplaincenter} for an alternate approach.
+
+Don't use these commands within a paragraph---if you do,
+\TeX\ probably won't be able to break the paragraph into lines and
+will complain about an overfull hbox.
+\example
+\centerline{Grand Central Station}
+\leftline{left of Karl Marx}
+\rightline{right of Genghis Khan}
+|
+\produces
+\centerline{Grand Central Station}
+\leftline{left of Karl Marx}
+\rightline{right of Genghis Khan}
+
+\eix^^{centering}
+\eix^^{flush left}
+\eix^^{flush right}
+\eix^^{justification}
+
+\endexample
+\enddesc
+
+\begindesc
+\easy\cts line {\<argument>}
+\explain
+This command produces an \minref{hbox} containing \<argument>.
+The hbox is exactly as wide as the current line, i.e., it
+extends from the right margin to the left margin.
+\example
+\line{ugly \hfil suburban \hfil sprawl}
+% Without \hfil you'd get an `underfull box' from this.
+|
+\produces
+\line{ugly \hfil suburban \hfil sprawl}%
+\endexample
+
+\enddesc
+
+\begindesc
+^^{overlapping text}
+\cts llap {\<argument>}
+\cts rlap {\<argument>}
+\explain
+These commands enable you to produce text that overlaps
+whatever happens to be to the left or to the right of the current
+position. |\llap| backspaces by the width of \<argument> and then
+typesets \<argument>. |\rlap| is similar, except that it typesets
+\<argument> first and then backspaces. |\llap| and |\rlap| are useful for
+placing text outside of the current margins.
+Both |\llap| and |\rlap| do their work by creating
+a \minref{box} of zero~width.
+
+You can also use |\llap| or |\rlap| to construct special characters by
+^{overprinting}, but don't try it unless you're sure that the characters
+you're using have the same width (which is the case for a monospaced
+font such as ^|cmtt10|, the Computer Modern $10$-point ^{typewriter font}).
+^^{Computer Modern fonts}
+\example
+\noindent\llap{off left }\line{\vrule $\Leftarrow$
+left margin of examples\hfil right margin of examples
+$\Rightarrow$\vrule}\rlap{ off right}
+|
+\produces
+\noindent\llap{off left }\line{\vrule $\Leftarrow$
+left margin of examples\hfil right margin of examples
+$\Rightarrow$\vrule}\rlap{ off right}
+\endexample
+
+%\example
+%{\tt O\llap{!|}}
+%|
+%\produces
+%{\cm \tt O\llap{\char `|}}
+%\endexample
+
+\nobreak % don't lose the \see
+\enddesc
+
+\see |\hsize| (\xref{\hsize}).
+
+%==========================================================================
+\section {Shaping paragraphs}
+
+\subsection {Starting, ending, and indenting paragraphs}
+
+\begindesc
+\bix^^{paragraphs//shaping}
+\ctspecial par \ctsxrdef{@par}
+\explain
+This command ends a paragraph and puts \TeX\ into \minref{vertical mode},
+ready to add more items to the page. Since \TeX\ converts a blank line in
+your input file into a |\par| \minref{token}, you don't ordinarily need to
+type an explicit |\par| in order to end a paragraph.
+
+An important point is that |\par| doesn't tell
+\TeX\ to start a paragraph; it only tells \TeX\ to end a paragraph.
+\TeX\ starts a paragraph when it is in ordinary vertical mode (which it
+is after a |\par|) and encounters an inherently horizontal item such as
+a letter. As part of its ceremony for starting a paragraph, \TeX\
+^^{paragraphs//starting}
+inserts an amount of vertical space given by the parameter |\parskip|
+(\xref{\parskip}) and indents the paragraph by a horizontal space given
+by |\parindent| (\xref{\parindent}).
+
+You can usually cancel any interparagraph space produced by a |\par| by giving
+the command |\vskip -\lastskip|. It can often
+be helpful to do this when you're writing a \minref{macro} that is
+supposed to work the same way whether or not it is preceded by a blank
+line.
+
+You can get \TeX\ to take some special action at the start of each paragraph
+by placing the instructions in ^|\everypar| (\xref\everypar).
+
+See \knuth{pages~283 and 286} for the precise effect of |\par|.
+
+\example
+\parindent = 2em
+``Can you row?'' the Sheep asked, handing Alice a pair of
+knitting-needles as she was speaking.\par ``Yes, a little%
+---but not on land---and not with needles---'' Alice was
+starting to say, when suddenly the needles turned into oars.
+|
+\produces
+\parindent = 2em
+``Can you row?'' the Sheep asked, handing Alice a pair of
+knitting-needles as she was speaking.\par ``Yes, a little%
+---but not on land---and not with needles---'' Alice was
+starting to say, when suddenly the needles turned into oars.
+\endexample
+\enddesc
+
+\begindesc
+\cts endgraf {}
+\explain
+This command is a synonym for the ^|\par| primitive command.
+It is useful when you've redefined ^|\par| but still want access to the
+original definition of |\par|.
+\enddesc
+
+\begindesc
+\cts parfillskip {\param{glue}}
+\explain
+^^{paragraphs//glue at end of}
+This parameter specifies the horizontal glue that
+\TeX\ inserts at the end of a paragraph.
+The default value of |\parfillskip| is |0pt plus 1fil|,
+which causes the last line of a paragraph to be
+filled out with blank space. A value of |0pt| forces
+\TeX\ to end the last line of a paragraph at the right margin.
+\enddesc
+
+\bix^^{indentation}
+\begindesc
+\easy\cts indent {}
+\explain
+If \TeX\ is in vertical mode, as it is after ending a paragraph,
+this command inserts the ^|\parskip| interparagraph glue,
+puts \TeX\ into horizontal mode, starts a paragraph, and
+indents that paragraph by |\parindent|.
+If \TeX\ is already in horizontal mode, this command merely produces
+a blank space of width |\parindent|.
+Two |\indent|s in a row
+produce two indentations.
+^^{indentation}
+
+As the example below shows, an |\indent| at a point where \TeX\
+would start a paragraph anyway is redundant.
+When \TeX\ is in vertical mode and sees a letter or some other
+inherently horizontal command, it starts a paragraph by
+switching to horizontal mode,
+doing an |\indent|, and processing the horizontal command.
+
+\example
+\parindent = 2em This is the first in a series of three
+paragraphs that show how you can control indentation. Note
+that it has the same indentation as the next paragraph.\par
+\indent This is the second in a series of three paragraphs.
+It has \indent an embedded indentation.\par
+\indent\indent This doubly indented paragraph
+is the third in the series.
+|
+\produces
+\parindent = 2em This is the first in a series of three
+paragraphs that show how you can control indentation. Note
+that it has the same indentation as the next paragraph.\par
+\indent This is the second in a series of three paragraphs.
+It has \indent an embedded indentation.\par
+\indent\indent This doubly indented paragraph
+is the third in the series.
+\endexample
+\enddesc
+
+
+\begindesc
+\easy\cts noindent {}
+\explain
+If \TeX\ is in vertical mode, as it is after ending a paragraph,
+this command inserts the ^|\parskip| interparagraph glue,
+puts \TeX\ into horizontal mode, and starts an unindented paragraph.
+It has no effect in horizontal mode, i.e., within a paragraph.
+Starting a paragraph with |\noindent| thus cancels
+the indentation by |\parindent|
+that would normally occur there.
+^^{indentation}
+
+A common use of |\noindent| is to cancel the indentation of
+the first line of a
+paragraph when the paragraph follows some displayed material.
+
+\example
+\parindent = 1em
+Tied round the neck of the bottle was a label with the
+words \smallskip \centerline{EAT ME}\smallskip
+\noindent beautifully printed on it in large letters.
+|
+\produces
+\parindent = 1em
+Tied round the neck of the bottle was a label with the
+words \smallskip \centerline{EAT ME}\smallskip
+\noindent beautifully printed on it in large letters.
+\endexample
+\enddesc
+
+\margin{{\tt\\textindent} moved here from later in the section.}
+\begindesc
+\cts textindent {\<argument>}
+\explain
+^^{indentation}
+This command tells \TeX\ to start a paragraph and indent it by
+|\par!-indent|,
+as usual.
+\TeX\ then right-justifies \<argument> within the indentation
+and
+follows it with an en space (half an em).
+\PlainTeX\ uses this command to typeset footnotes (\xref\footnote)
+^^{footnotes//using \b\tt\\textindent\e\ with}
+and items in lists (see |\item|, \xref\item).
+
+\example
+\parindent = 20pt \textindent{\raise 1pt\hbox{$\bullet$}}%
+You are allowed to use bullets in \TeX\ even if
+you don't join the militia, and many peace-loving
+typographers do so.
+|
+\produces
+\parindent = 20pt \textindent{\raise 1pt\hbox{$\bullet$}}%
+You are allowed to use bullets in \TeX\ even if
+you don't join the militia, and many peace-loving
+typographers do so.
+\endexample\enddesc
+
+\begindesc
+\cts parindent {\param{dimen}}
+\explain
+This \minref{parameter} specifies the amount by which
+the first line of each paragraph is to be indented. ^^{indentation}
+As the example below shows, it's a bad idea to set both |\parindent|
+and ^|\parskip| to zero since then the paragraph breaks are
+no longer apparent.
+\example
+\parindent = 2em This paragraph is indented by 2 ems.
+\par \parindent=0pt This paragraph is not indented at all.
+\par Since we haven't reset the paragraph indentation,
+this paragraph isn't indented either.
+|
+\produces
+\parindent = 2em This paragraph is indented by 2 ems.
+\par \parindent=0pt This paragraph is not indented at all.
+\par Since we haven't reset the paragraph indentation,
+this paragraph isn't indented either.
+\endexample\enddesc
+
+\begindesc
+\cts everypar {\param{token list}}
+\explain
+\TeX\ performs the commands in \<token list> whenever it
+enters horizontal mode, e.g., when it starts a paragraph.
+By default |\everypar| is empty, but you can
+take extra actions at the start of every paragraph by putting
+the commands for those actions into a token list
+%
+% This \vglue makes the example overwrite the example, but since we are
+% not reprinting this page, it doesn't matter. For reasons I did not
+% attempt to track down, a page break happened before the example,
+% unlike in the first printing.
+%
+\secondprinting{\vglue-48pt}
+and assigning that token list to |\everypar|.
+\example
+\everypar = {$\Longrightarrow$\enspace}
+Now pay attention!!\par
+I said, ``Pay attention!!''.\par
+I'll say it again!! Pay attention!!
+|
+\produces
+\everypar = {$\Longrightarrow$\enspace}
+Now pay attention!\par
+I said, ``Pay attention!''.\par
+I'll say it again! Pay attention!
+\endexample
+\enddesc
+\secondprinting{\vfill\eject}
+
+%==========================================================================
+\subsection {Shaping entire paragraphs}
+
+\begindesc
+\margin{This command was also described in the `Pages' chapter. The
+description here now combines the two earlier descriptions.}
+\bix^^{line breaks//and paragraph shape}
+\easy\cts hsize {\param{dimen}}
+\explain
+This \minref{parameter} specifies the current ^{line length},
+i.e., the usual width of lines in a paragraph
+starting at the left margin.
+A great many \TeX\ commands, e.g., |\centerline| (\xref{\centerline})
+and |\hrule| (\xref{\hrule}), implicitly use the value of
+|\hsize|. By changing |\hsize| within a group
+you can change the width of the constructs produced by such commands.
+
+If you
+set |\hsize| within a \minref{vbox} that contains text, the vbox will
+have whatever width you've given to |\hsize|.
+^^{vboxes//width determined by \b\tt\\hsize\e}
+
+\PlainTeX\ sets |\hsize| to |6.5in|.
+
+\example
+{\hsize = 3.5in % Set this paragraph 3.5 inches wide.
+The hedgehog was engaged in a fight with another hedgehog,
+which seemed to Alice an excellent opportunity for
+croqueting one of them with the other.\par}%
+|
+\produces
+{\hsize = 3.5in
+The hedgehog was engaged in a fight with another hedgehog,
+which seemed to Alice an excellent opportunity for croqueting
+one of them with the other.\par}%
+
+\doruler{\8\8\8\tick\1\tick\2\tick\1\tick\3}{3.5}{in}
+\nextexample
+\leftline{\raggedright\vtop{\hsize = 1.5in
+Here is some text that we put into a paragraph that is
+an inch and a half wide.}\qquad
+\vtop{\hsize = 1.5in Here is some more text that
+we put into another paragraph that is an inch and a
+half wide.}}
+|
+\produces
+\leftline{\raggedright\vtop{\hsize = 1.5in
+Here is some text that we put into a paragraph that is
+an inch and a half wide.}\qquad
+\vtop{\hsize = 1.5in Here is some more text that
+we put into another paragraph that is an inch and a
+half wide.}}
+\endexample
+\enddesc
+
+\begindesc
+\easy\cts narrower {}
+\explain
+^^{paragraphs//narrow}
+This command makes paragraphs narrower, increasing the left and right
+margins by |\parindent|, the
+current paragraph ^{indentation}.
+It achieves this by increasing
+both |\leftskip| and |\rightskip| by |\parindent|.
+Normally you place |\narrower| at the
+beginning of a \minref{group} containing the paragraphs that you want to
+make narrower. If you forget to enclose |\narrower| within a group,
+you'll find that all the rest of your document will have narrow
+paragraphs.
+
+|\narrower| affects just those paragraphs that end after you invoke it.
+If you end a |\narrower| group before you've ended
+a paragraph, \TeX\ won't make that paragraph narrower.
+
+\example
+{\parindent = 12pt \narrower\narrower\narrower
+This is a short paragraph. Its margins are indented
+three times as much as they would be
+had we used just one ``narrower'' command.\par}
+|
+\produces
+{\parindent = 12pt \narrower\narrower\narrower
+This is a short paragraph. Its margins are indented
+three times as much as they would be
+had we used just one ``narrower'' command.\par}
+\endexample\enddesc
+
+\begindesc
+\cts leftskip {\param{glue}}
+\cts rightskip {\param{glue}}
+\explain
+These parameters tell \TeX\ how much glue to place
+at the left and at the right end of each line of the current
+paragraph. We'll just explain how |\leftskip| works since |\rightskip|
+is analogous.
+
+^^{indentation} You can increase the left margin by setting |\leftskip|
+to a fixed nonzero \minref{dimension}. If you give |\leftskip| some
+stretch, you can produce ^{ragged left} text, i.e.,
+text that has an uneven left margin.
+
+Ordinarily, you should enclose any \minref{assignment} to |\leftskip|
+in a \minref{group} together with the affected text
+in order to keep its effect from continuing to
+the end of your document. However, it's pointless to change
+|\leftskip|'s value inside a group that is in turn
+contained within a paragraph---the value of |\leftskip| at the
+\emph{end} of a paragraph
+is what determines how \TeX\ breaks the paragraph into lines. \minrefs{line
+break}
+
+\example
+{\leftskip = 1in The White Rabbit trotted slowly back
+again, looking anxiously about as it went, as if it had
+lost something. {\leftskip = 10in % has no effect
+It muttered to itself, ``The Duchess!! The Duchess!! She'll
+get me executed as sure as ferrets are ferrets!!''}\par}%
+|
+\produces
+{\leftskip = 1in The White Rabbit trotted slowly back
+again, looking anxiously about as it went, as if it had
+lost something. {\leftskip = 10in % has no effect
+It muttered to itself, ``The Duchess! The Duchess!
+She'll get me executed as sure as ferrets are ferrets!''}\par}%
+\nextexample
+\pretolerance = 10000 % Don't hyphenate.
+\rightskip = .5in plus 2em
+The White Rabbit trotted slowly back again, looking
+anxiously about as it went, as if it had lost something.
+It muttered to itself, ``The Duchess!! The Duchess!! She'll
+get me executed as sure as ferrets are ferrets!!''
+|
+\produces
+\pretolerance = 10000 % Don't hyphenate.
+\rightskip = .5in plus 2em
+The White Rabbit trotted slowly back again, looking
+anxiously about as it went, as if it had lost something.
+It muttered to itself, ``The Duchess! The Duchess! She'll
+get me executed as sure as ferrets are ferrets!''
+\endexample
+\enddesc
+
+\begindesc
+\easy\cts raggedright {}
+\cts ttraggedright {}
+\explain
+These commands cause \TeX\ to typeset your document
+``^{ragged right}''. Interword spaces all
+have their natural size, i.e., they all have the same width and
+don't stretch or shrink.
+Consequently the right margin is generally not even.
+The alternative, which is \TeX's default, is to typeset your document
+justified,
+^^{justification}
+i.e., with uniform left and right margins.
+In justified text, interword spaces are stretched in order to
+make the right margin even.
+Some typographers prefer ragged right because
+it avoids distracting ``rivers'' of white space on the printed page.
+\minrefs{justified text}
+
+You should use the |\ttraggedright| command when typesetting text in a
+monospaced font and the |\raggedright| command when typesetting text in any
+other font.
+
+Most of the time you'll want to apply these commands to an entire document,
+but you can limit their effects by enclosing them
+in a \minref{group}.
+\example
+\raggedright ``You couldn't have it if you {\it did\/}
+want it,'' the Queen said. ``The rule is, jam tomorrow
+and jam yesterday---but never jam {\it today\/}.''
+``It {\it must\/} come sometimes to `jam today,%
+thinspace'' Alice objected. ``No, it can't'', said the
+Queen. ``It's jam every {\it other\/} day: today isn't
+any {\it other\/} day.''
+|
+\produces
+\raggedright ``You couldn't have it if you {\it did\/}
+want it,'' the Queen said. ``The rule is, jam tomorrow
+and jam yesterday---but never jam {\it today\/}.''
+``It {\it must\/} come sometimes to `jam today,%
+'\thinspace'' Alice objected. ``No, it can't'', said the
+Queen. ``It's jam every {\it other\/} day: today isn't
+any {\it other\/} day.''
+\endexample
+\enddesc
+
+\begindesc
+\cts hang {}
+\explain
+This command indents the second and subsequent lines of a paragraph
+by |\parindent|, the paragraph ^{indentation}
+(\xref{\parindent}).
+Since the first line is already indented by |\parindent|
+(unless you've cancelled the indentation with |\noindent|), the
+entire paragraph appears to be indented by |\parindent|.
+
+\example
+\parindent=24pt \hang ``I said you {\it looked} like an
+egg, Sir,'' Alice gently explained to Humpty Dumpty. ``And
+some eggs are very pretty, you know,'' she added.
+|
+\produces
+\parindent=24pt \hang ``I said you {\it looked} like an
+egg, Sir,'' Alice gently explained to Humpty Dumpty. ``And
+some eggs are very pretty, you know,'' she added.
+\endexample
+\enddesc
+
+\begindesc
+\cts hangafter {\param{number}}
+\cts hangindent {\param{dimen}}
+
+\explain
+These two \minref{parameter}s jointly
+specify ``^{hanging indentation}'' for a paragraph.
+The hanging indentation indicates to \TeX\ that certain lines
+of the paragraph should
+be indented and the remaining lines should have their normal width.
+^^{indentation}
+|\hangafter| determines which lines
+are indented, while |\hangindent| determines the amount of indentation
+and whether it occurs on the left or on the right:
+
+\ulist
+\li Let $n$ be the value of |\hangafter|. If $n < 0$,
+the first $-n$ lines of the paragraph will be indented.
+If $n\ge0$, all but the first $n$ lines of the paragraph will be
+indented.
+
+\li Let $x$ be the value of |\hangindent|.
+If $x\ge0$, the lines will be indented
+by $x$ on the left. If $x<0$ the lines will be indented by $-x$ on
+the right.
+\endulist
+
+When you specify hanging indentation, it applies
+only to the next paragraph (if you're in vertical mode) or to
+the current paragraph (if you're in horizontal mode).
+\TeX\ uses the values of |\hangafter| and |\hangindent| at the end of a
+paragraph, when it breaks that paragraph into lines.\minrefs{line
+break}
+
+Unlike most of the other paragraph-shaping parameters,
+|\hangafter| and |\hangindent| are reset to their default values
+at the start of each paragraph, namely,
+$1$ for |\hangafter| and $0$ for |\hangindent|.
+If you want to typeset a sequence of paragraphs with hanging
+indentation, use |\everypar| (\xref{\everypar}).
+^^|\everypar//for hanging indentation|
+If you specify |\hangafter| and |\hangindent| as well as ^|\parshape|,
+\TeX\ ignores the |\hangafter| and |\hangindent|.
+
+\example
+\hangindent=6pc \hangafter=-2
+This is an example of a paragraph with hanging indentation.
+In this case, the first two lines are indented on the left,
+but after that we return to unindented text.
+|
+\produces
+\hangindent=6pc \hangafter=-2
+This is an example of a paragraph with hanging indentation.
+In this case, the first two lines are indented on the left,
+but after that we return to unindented text.
+\nextexample
+\hangindent=-6pc \hangafter=1
+This is another example of a paragraph with hanging
+indentation. Here, all lines after the first have been
+indented on the right. The first line, on the other
+hand, has been left unindented.
+|
+\produces
+\hangindent=-6pc \hangafter=1
+This is another example of a paragraph with hanging
+indentation. Here, all lines after the first have been
+indented on the right. The first line, on the other
+hand, has been left unindented.
+\endexample
+\enddesc
+
+\margin{{\tt\\textindent} has been moved to earlier in this section.}
+
+\begindesc
+\cts parshape {$n\; i_1 l_1\; i_2 l_2\; \ldots \;i_n l_n$}
+\explain
+This command specifies the shape of the first $n$ lines of a paragraph---
+the next paragraph if you're in vertical mode and the current paragraph
+if you're in horizontal mode.
+The $i$'s and $l$'s are all
+dimensions. The first line is indented by $i_1$ and has length $l_1$,
+the second line is indented by $i_2$ and has length $l_2$, and so forth.
+If the paragraph has more than $n$ lines, the last indentation\slash
+length pair is used for the extra lines.
+To achieve special effects such as the one
+shown here, you usually have to experiment a lot, insert kerns here and
+there, and choose your words to fit the shape.
+
+|\parshape|, like ^|\hangafter| and ^|\hangindent|, is effective only for one
+paragraph.
+If you specify |\hangafter| and |\hangindent| as well as |\par!-shape|,
+\TeX\ ignores the ^|\hangafter| and ^|\hangindent|.
+\ifodd\pageno\vfill\eject\fi % so the wineglass is on a single page.
+
+\example
+% A small font and close interline spacing make this work
+\smallskip\font\sixrm=cmr6 \sixrm \baselineskip=7pt
+\fontdimen3\font = 1.8pt \fontdimen4\font = 0.9pt
+\noindent \hfuzz 0.1pt
+\parshape 30 0pt 120pt 1pt 118pt 2pt 116pt 4pt 112pt 6pt
+108pt 9pt 102pt 12pt 96pt 15pt 90pt 19pt 84pt 23pt 77pt
+27pt 68pt 30.5pt 60pt 35pt 52pt 39pt 45pt 43pt 36pt 48pt
+27pt 51.5pt 21pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt 53pt
+16.75pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt
+53pt 14.6pt 48pt 24pt 45pt 30.67pt 36.5pt 51pt 23pt 76.3pt
+The wines of France and California may be the best
+known, but they are not the only fine wines. Spanish
+wines are often underestimated, and quite old ones may
+be available at reasonable prices. For Spanish wines
+the vintage is not so critical, but the climate of the
+Bordeaux region varies greatly from year to year. Some
+vintages are not as good as others,
+so these years ought to be
+s\kern -.1pt p\kern -.1pt e\kern -.1pt c\hfil ially
+n\kern .1pt o\kern .1pt t\kern .1pt e\kern .1pt d\hfil:
+1962, 1964, 1966. 1958, 1959, 1960, 1961, 1964,
+1966 are also good California vintages.
+Good luck finding them!!
+|
+%\margin{Wineglass text replaced because of permissions problem.}
+\produces
+% A small font and close interline spacing make this work
+\smallskip\font\sixrm=cmr6 \sixrm \baselineskip=7pt
+\fontdimen3\font = 1.8pt \fontdimen4\font = 0.9pt
+\noindent \hfuzz 0.1pt
+\parshape 30 0pt 120pt 1pt 118pt 2pt 116pt 4pt 112pt 6pt 108pt 9pt 102pt
+12pt 96pt 15pt 90pt 19pt 84pt 23pt 77pt 27pt 68pt 30.5pt 60pt 35pt 52pt
+39pt 45pt 43pt 36pt 48pt 27pt 51.5pt 21pt 53pt 16.75pt 53pt 16.75pt
+53pt 16.75pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt
+53pt 16.75pt 53pt 14.6pt 48pt 24pt 45pt 30.67pt 36.5pt 51pt 23pt 76.3pt
+The wines of France and California may be the best
+known, but they are not the only fine wines. Spanish
+wines are often underestimated, and quite old ones may
+be available at reasonable prices. For Spanish wines
+the vintage is not so critical, but the climate of the
+Bordeaux region varies greatly from year to year. Some
+vintages are not as good as others,
+so these years ought to be
+s\kern -.1pt p\kern -.1pt e\kern -.1pt c\hfil ially
+n\kern .1pt o\kern .1pt t\kern .1pt e\kern .1pt d\hfil:
+1962, 1964, 1966. 1958, 1959, 1960, 1961, 1964,
+1966 are also good California vintages.
+Good luck finding them!
+\endexample
+\eix^^{indentation}
+\enddesc
+
+\begindesc
+\cts prevgraf {\param{number}}
+\explain
+In horizontal mode, this parameter specifies the
+number of lines in the paragraph so far; in vertical mode,
+it specifies the number of lines in the previous paragraph.
+\TeX\ only sets |\prevgraf| after it has finished breaking some text into
+lines, i.e., at a math display or at the end of a paragraph.
+See \knuth{page~103} for more details about it.
+\enddesc
+
+\begindesc
+\cts vadjust {\rqbraces{\<vertical mode material>}}
+\explain
+This command inserts the specified \<vertical mode material> just after the
+output line containing the position where the command occurs.
+^^{vertical lists//inserting in paragraphs}
+You can use it, for instance, to cause a page eject or to insert extra
+space after a certain line.
+
+\example
+Some of these words are \vadjust{\kern8pt\hrule} to be
+found above the line and others are to be found below it.
+|
+\produces
+Some of these words are \vadjust{\kern8pt
+\hbox to \hsize{\hfil\vbox{\advance\hsize by -\parindent
+\hrule width \hsize}}}
+to be found above the line and others are to be found below it.
+\endexample
+\enddesc
+
+\see |\parindent| (\xref\parindent),
+|\parskip| (\xref\parskip), |\everypar| (\xref\everypar).
+\eix^^{line breaks//and paragraph shape}
+\eix^^{paragraphs//shaping}
+
+%==========================================================================
+\section {Line breaks}
+
+%==========================================================================
+\subsection {Encouraging or discouraging line breaks}
+
+\begindesc
+\bix^^{line breaks}
+\bix^^{line breaks//encouraging or discouraging}
+\ctspecial break {} \xrdef{hbreak}
+\explain
+This command forces a line break.
+Unless you do something to fill out the line, you're likely to
+get an ``underfull hbox'' complaint.
+|\break| can also be used in vertical mode.
+\example
+Fill out this line\hfil\break and start another one.\par
+% Use \hfil here to fill out the line.
+This line is underfull---we ended it\break prematurely.
+% This line causes an `underfull hbox' complaint.
+|
+\produces
+\hbadness = 10000 % avoid hbadness message
+Fill out this line\hfil\break and start another one.\par
+% Use \hfil here to fill out the line.
+This line is underfull---we ended it\break prematurely.
+% This line causes an `underfull hbox' complaint.
+\endexample\enddesc
+
+\begindesc
+\ctspecial nobreak {} \xrdef{hnobreak}
+\explain
+This command prevents a line break where it
+otherwise might occur.
+|\nobreak| can also be used in vertical mode.
+\example
+Sometimes you'll encounter a situation where
+a certain space\nobreak\qquad must not get lost.
+|
+\produces
+Sometimes you'll encounter a situation where
+a certain space\nobreak\qquad must not get lost.
+\endexample
+\enddesc
+
+\begindesc
+\ctspecial allowbreak {} \xrdef{hallowbreak}
+\explain
+This command tells \TeX\ to
+allow a line break where one could not ordinarily occur.
+It's most often useful within a math formula, since \TeX\
+is reluctant to break lines there. ^^{line breaks//in math formulas}
+|\allowbreak| can also be used in vertical mode.
+\example
+Under most circumstances we can state with some confidence
+that $2+2\allowbreak=4$, but skeptics may disagree.
+\par For such moronic automata, it is not difficult to
+analyze the input/\allowbreak output behavior in the limit.
+|
+\produces
+Under most circumstances we can state with some confidence
+that $2+2\allowbreak=4$, but skeptics may disagree.
+\par For such moronic automata, it is not difficult to
+analyze the input/\allowbreak output behavior in the limit.
+\endexample\enddesc
+
+\begindesc
+\ctspecial penalty {\<number>} \xrdef{hpenalty}
+\explain
+This command produces a \minref{penalty} item.
+The penalty item makes \TeX\ more or less willing to break a line
+at the point where that item occurs.
+A negative penalty, i.e., a bonus, encourages a line break;
+a positive penalty discourages a line break.
+A penalty of $10000$ or more prevents a break altogether,
+while a penalty of $-10000$ or less forces a break.
+|\penalty| can also be used in vertical mode.
+\secondprinting{\vfill\eject}
+\example
+\def\break{\penalty -10000 } % as in plain TeX
+\def\nobreak{\penalty 10000 } % as in plain TeX
+\def\allowbreak{\penalty 0 } % as in plain TeX
+|
+\endexample
+\enddesc
+
+\secondprinting{\vglue-\baselineskip\vskip0pt}
+\begindesc
+\cts obeylines {}
+\explain
+\TeX\ normally treats an end of line as a space.
+|\obeylines| instructs \TeX\ to treat each end of line as
+an end of paragraph, thus forcing a line break.
+|\obeylines| is often useful when you're typesetting verse or
+computer programs.
+^^{verse, typesetting}^^{poetry, typesetting}^^{computer programs, typesetting}
+If any of your lines are longer than the effective line length
+(|\hsize|\tminus|\parindent|),
+however,
+you may get an extra line break within those lines.
+
+Because \TeX\ inserts the |\parskip| glue (\xref\parskip)
+between lines controlled by |\obeylines| (since it thinks each line is a
+paragraph), you should normally set |\parskip| to zero when you're using
+|\obeylines|.
+
+You can use the ^|\obeyspaces| command (\xref{\obeyspaces}) to get
+\TeX\ to take spaces within a line literally. |\obeylines| and |\obeyspaces|
+are often used together.
+\example
+\obeylines
+``Beware the Jabberwock, my son!!
+\quad The jaws that bite, the claws that catch!!
+Beware the Jubjub bird, and shun
+\quad The frumious Bandersnatch!!''
+|
+\produces
+\obeylines
+``Beware the Jabberwock, my son!
+\quad The jaws that bite, the claws that catch!
+Beware the Jubjub bird, and shun
+\quad The frumious Bandersnatch!''
+\endexample
+\enddesc
+
+\secondprinting{\vglue-\baselineskip\vskip0pt}
+
+\begindesc
+\easy\cts slash {}
+\explain
+This command produces a ^{solidus} (/) and also tells \TeX\ that it can
+break the line after the solidus, if necessary.
+\example
+Her oldest cat, while apparently friendly to most people,
+had a Jekyll\slash Hyde personality when it came to mice.
+|
+\produces
+Her oldest cat, while apparently friendly to most people,
+had a Jekyll\slash Hyde personality when it came to mice.
+\endexample
+\eix^^{line breaks//encouraging or discouraging}
+\enddesc
+
+\secondprinting{\vfill\eject}
+
+
+%==========================================================================
+\subsection {Line breaking parameters}
+
+\begindesc
+\bix^^{line breaks//parameters affecting}
+%
+\cts pretolerance {\param{number}}
+\cts tolerance {\param{number}}
+\explain
+These parameters determine the \minref{badness} that \TeX\ will tolerate
+on each line when it is choosing line breaks
+for a paragraph.
+The badness is a measure of how far the interword spacing deviates from
+the ideal.
+|\pretolerance| specifies the tolerable badness for
+line breaks without hyphenation;
+|\tolerance| specifies the tolerable badness for line breaks with
+hyphenation.
+The tolerable badness can be exceeded in either of two ways:
+a line is too tight (the interword spaces are too
+small) or it is too loose (the interword spaces are too big).
+
+\ulist
+\li If \TeX\ must set a line too loosely, it
+complains about an ``underfull hbox''.
+\li If \TeX\ must set a line too rightly,
+it lets the line run past the right margin and
+complains about an ``overfull \minref{hbox}''.
+\endulist
+
+\noindent \TeX\ chooses line breaks in the following steps:
+\olist
+\li It attempts to choose line breaks without hyphenating.
+If none of the
+resulting lines have a badness exceeding |\pretolerance|, the
+line breaks are acceptable and the paragraph can now be set.
+\li Otherwise, it tries another set of line breaks, this
+time allowing hyphenation. If none of the resulting lines have a badness
+exceeding |\tolerance|, the new set of line breaks is
+acceptable and the paragraph can now be set.
+\li Otherwise, it adds ^|\emergencystretch| (see below) to the stretch
+of each line and tries again.
+\li If none of these attempts have produced an acceptable
+set of line breaks,
+it sets the paragraph with one or more overfull hboxes
+and complains about them.
+\endolist
+
+\PlainTeX\ sets |\tolerance| to $200$ and |\pretolerance| to $100$.
+If you set |\tolerance| to $10000$, \TeX\
+becomes infinitely tolerant and accepts any spacing, no matter how bad
+(unless it encounters a word that won't fit on a line, even with
+hyphenation). Thus by changing |\tolerance| you can avoid
+overfull and underfull hboxes, but at the cost of making the spacing worse.
+By making |\pretolerance| larger you can get \TeX\ to avoid hyphenation
+(and also run faster),
+again at the cost of possibly worse spacing.
+If you set |\pretolerance| to $-1$,
+\TeX\ will not even try to set the paragraph without hyphenation.
+
+The ^|\hbadness| parameter (\xref \hbadness) determines the level of badness
+that \TeX\ will tolerate before it complains, but |\hbadness| does not affect
+the way that \TeX\ typesets your document.
+The ^|\hfuzz| parameter (\xref \hfuzz) determines the amount that
+an hbox can exceed its specified width before \TeX\ considers it to be
+erroneous.
+\enddesc
+
+\begindesc
+\cts emergencystretch {\param{dimen}}
+\explain
+By setting this parameter to be greater than zero,
+you can make it easier for \TeX\
+to typeset your document without generating overfull hboxes.
+^^{overfull boxes}
+This is a better alternative than setting |\tolerance=10000|,
+since that tends to produce really ugly lines.
+If \TeX\ can't typeset a paragraph without exceeding ^|\tolerance|,
+it will try again, adding |\emergencystretch| to the stretch of each
+line.
+The effect of the change is to scale down the badness of each
+line, enabling \TeX\ to make spaces wider than they would otherwise be
+and thus choose line breaks that are as
+good as possible under the circumstances.
+\enddesc
+
+\begindesc
+\cts looseness {\param{number}}
+\explain
+\minrefs{line break}
+This parameter gives you a way
+to change the total number of lines in a paragraph from what they
+optimally would be.
+|\looseness| is so named because it's a
+measure of how loose the paragraph is, i.e., how much extra space there is in
+it.
+
+Normally, |\looseness| is $0$ and
+\TeX\ chooses line breaks in its usual way. But if
+|\looseness| is, say, $3$, \TeX\ does the following:
+\olist
+\li It chooses line breaks normally, resulting in a paragraph of $n$ lines.
+\li It discards these line breaks and
+tries to find a new set of line breaks that gives the paragraph $n+3$ lines.
+(Without the previous step, \TeX\ wouldn't know the value of $n$.)
+\li If the previous attempt results in lines whose badness exceeds
+|\tol!-er!-ance|,
+^^|\tolerance|
+it tries to get $n+2$ lines---and if that also fails,
+$n+1$ lines, and finally $n$ lines again.
+\endolist
+\noindent
+Similarly, if looseness is $-n$,
+\TeX\ attempts to set the paragraph with $n$
+fewer lines than normal.
+The easiest way for \TeX\ to make a paragraph one line longer is to put
+a single word on the excess line. You can prevent this by
+putting a tie (\xref{@not}) between the last two words of the paragraph.
+
+Setting |\looseness| is the best way to force a paragraph
+to occupy a given number of lines.
+Setting it to a negative value is useful when you're trying to
+increase the amount of text you can fit on a page.
+Similarly, setting it to a positive
+value is useful when you're trying to
+decrease the amount of text on a page.
+
+\TeX\ sets |\looseness| to $0$ when it ends a paragraph, after breaking
+the paragraph into lines.
+If you want to change the looseness of several paragraphs, you must do it
+individually for each one or put the change into |\everypar|
+\ctsref\everypar.
+^^|\everypar//for setting \b\tt\\looseness\e|
+\enddesc
+
+\begindesc
+\cts linepenalty {\param{number}}
+\explain
+\minrefs{line break}
+This parameter specifies \minref{demerits} that \TeX\ assesses for each line
+break when it is breaking a paragraph into lines.
+The penalty is independent of where the line break occurs.
+Increasing the value
+of this parameter causes \TeX\ to try harder to set a paragraph with a
+minimum number of lines, even at the cost of other aesthetic considerations
+such as avoiding overly tight interword spacing.
+Demerits are in units of \minref{badness} squared, so
+you need to assign a rather large value to this parameter (in the
+thousands) for it to have any effect.
+\PlainTeX\ sets |\linepenalty| to $10$.
+\enddesc
+
+\begindesc
+\cts adjdemerits {\param{number}}
+\explain
+\minrefs{line break}
+^^{hyphenation//penalties for}
+{\tighten
+This parameter specifies additional \minref{demerits} that \TeX\ attaches to a
+breakpoint between two adjacent lines that are
+``visually incompatible''.
+Such a pair of lines makes a paragraph appear uneven.
+Incompatibility is evaluated in terms of the tightness or looseness
+of lines:
+}
+\olist\compact
+\li A line is tight if its \minref{glue} needs to shrink by at least $50\%$.
+\li A line is decent if its badness is $12$ or less.
+\li A line is loose if its glue needs to stretch by more than $50\%$.
+\li A line is very loose if its glue needs to stretch so much
+that its badness exceeds $100$.
+\endolist
+Two adjacent lines are visually incompatible
+if their categories are not adjacent, e.g., a tight line is next to a loose one
+or a decent line is next to a very loose one.
+
+Demerits are in units of \minref{badness} squared, so
+you need to assign a rather large value to this parameter (in the
+thousands) for it to have any effect.
+\PlainTeX\ sets |\adjdemerits| to~$10000$.
+\enddesc
+
+\begindesc
+\bix^^{hyphenation//penalties for}
+\cts exhyphenpenalty {\param{number}}
+\explain
+\minrefs{line break}
+This parameter specifies the \minref{penalty} that \TeX\ attaches to a
+breakpoint at an explicit hyphen such as the one in
+``helter-skelter''. Increasing this parameter has the effect of discouraging
+\TeX\ from ending a line at an explicit hyphen.
+\PlainTeX\ sets |\exhyphenpenalty| to $50$.
+\enddesc
+
+\begindesc
+\cts hyphenpenalty {\param{number}}
+\explain
+\minrefs{line break}
+This parameter specifies the \minref{penalty} that \TeX\ attaches to a
+breakpoint at an implicit hyphen.
+Implicit hyphens can come from \TeX's hyphenation dictionary or
+from ^{discretionary hyphens} that you've inserted with |\-|~(\xref{\@minus}).
+^^|-//leads to {\tt\\hyphenpenalty}|
+Increasing this parameter has the effect of discouraging
+\TeX\ from hyphenating words.
+\PlainTeX\ sets |\hyphenpenalty| to $50$.
+\enddesc
+
+\begindesc
+\cts doublehyphendemerits {\param{number}}
+\explain
+\minrefs{line break}
+{\tighten
+This parameter specifies additional \minref{demerits} that \TeX\
+attaches to a breakpoint when that breakpoint leads to
+two consecutive lines that end in a hyphen.
+Increasing the value of this parameter has the effect of discouraging
+\TeX\ from hyphenating two lines in a row.
+Demerits are in units of \minref{badness} squared, so
+you need to assign a rather large value to this parameter (in the
+thousands) for it to have any effect.
+\PlainTeX\ sets |\doublehyphendemerits| to $10000$.
+}
+\enddesc
+
+\begindesc
+\cts finalhyphendemerits {\param{number}}
+\explain
+\minrefs{line break}
+{\tighten
+This parameter specifies additional \minref{demerits} that \TeX\
+attaches to a breakpoint that causes
+the next to last line of a paragraph to end with a hyphen.
+Such a hyphen is generally considered to be unaesthetic
+because of the possible blank space from a short last line beneath it.
+Increasing the value of this parameter has the effect of discouraging
+\TeX\ from ending the next to the last line with a hyphen.
+Demerits are in units of \minref{badness} squared, so
+you need to assign a rather large value to this parameter (in the
+thousands) for it to have any effect.
+\PlainTeX\ sets |\finalhyphendemerits| to $5000$.
+}
+\eix^^{hyphenation//penalties for}
+\enddesc
+
+\begindesc
+\cts binoppenalty {\param{number}}
+\explain
+^^{operators}
+This parameter specifies the penalty for breaking a math formula
+after a binary operator when the formula appears in a paragraph.
+\PlainTeX\ sets |\binoppenalty| to $700$.
+\enddesc
+
+\begindesc
+\cts relpenalty {\param{number}}
+\explain
+^^{relations}
+This parameter specifies the penalty for breaking a math formula
+after a relation when the formula appears in a paragraph.
+\PlainTeX\ sets |\rel!-penal!-ty| to~$500$.
+
+\eix^^{line breaks//parameters affecting}
+\enddesc
+
+%==========================================================================
+\subsection {Hyphenation}
+
+\begindesc
+\bix^^{hyphenation}
+%
+\easy\ctspecial - \ctsxrdef{@minus}
+\explain
+The |\-| command inserts a ``discretionary hyphen''
+^^{discretionary hyphens}
+into a word.
+The discretionary hyphen allows \TeX\ to hyphenate the word at that
+place. \TeX\ isn't obliged to hyphenate there---it does so
+only if it needs to. This command is useful when a word
+that occurs in one or two places in your document
+needs to be hyphenated,
+but \TeX\ can't find an appropriate hyphenation point on its own.
+\example
+Alice was exceedingly reluctant to shake hands first
+with either Twee\-dle\-dum or Twee\-dle\-dee, for
+fear of hurting the other one's feelings.
+|
+\produces
+Alice was exceedingly reluctant to shake hands first
+with either Twee\-dle\-dum or Twee\-dle\-dee, for
+fear of hurting the other one's feelings.
+\endexample
+\enddesc
+
+\begindesc
+\cts discretionary {\rqbraces{\<pre-break text>}
+ \rqbraces{\<post-break text>}
+ \rqbraces{\<no-break text>}}
+\explain
+\minrefs{line break}
+^^{hyphenation}
+This command specifies a ``discretionary break'', namely,
+a place where \TeX\ can break a line.
+It also tells \TeX\ what text to put on either side of the break.
+\ulist
+\li If \TeX\ does not break there, it uses the \<no-break text>.
+\li If \TeX\ does break there, it puts the \<pre-break text> just before
+the break and the \<post-break text> just after the break.
+\endulist
+\noindent
+Just as with |\-|,
+\TeX\ isn't obligated to break a line at a discretionary break.
+In fact, |\-| is ordinarily equivalent to |\discretionary!allowbreak{-}{}{}|.
+
+\TeX\ sometimes inserts discretionary breaks on its own.
+For example, it inserts |\discretionary!allowbreak{}{}{}| after
+an explicit hyphen or dash.
+
+{\hyphenchar\tentt=-1 % needed to avoid weirdnesses
+\example
+% An ordinary discretionary hyphen (equivalent to \-):
+\discretionary{-}{}{}
+% A place where TeX can break a line, but should not
+% insert a space if the line isn't broken there, e.g.,
+% after a dash:
+\discretionary{}{}{}
+% Accounts for German usage: `flicken', but `flik-
+% ken':
+German ``fli\discretionary{k-}{k}{ck}en''
+|
+^^{hyphenation//German}
+\endexample}
+
+\enddesc
+
+\begindesc
+\cts hyphenation {\rqbraces{\<word>\thinspace\vs\ $\ldots$\ \vs
+ \thinspace\<word>}}
+\explain
+\TeX\ keeps a dictionary of exceptions to its ^{hyphenation} rules.
+Each dictionary entry indicates how a particular word should
+be hyphenated.
+The |\hyphenation| command adds words to the dictionary.
+Its argument is a sequence of words separated by blanks.
+Uppercase and lowercase letters are equivalent.
+The hyphens in each word indicate the places
+where \TeX\ can hyphenate that word.
+A word with no hyphens in it will never be hyphenated.
+However, you can still override the hyphenation dictionary by
+using |\-| in a particular occurrence of a word.
+You need to provide all the grammatical forms of a word
+that you want \TeX\ to handle, e.g., both the singular and the plural.
+
+\example
+\hyphenation{Gry-phon my-co-phagy}
+\hyphenation{man-u-script man-u-scripts piz-za}
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts uchyph {\param{number}}
+\explain
+A positive value of |\uchyph| (uppercase hyphenation)
+permits hyphenation of words, such as proper names,
+that start with a capital letter.
+A zero or negative
+value inhibits such hyphenation. \PlainTeX\ sets |\uchyph| to $1$,
+so \TeX\ normally tries to hyphenate words that start with a capital letter.
+\enddesc
+
+\begindesc
+\cts showhyphens {\rqbraces{\<word>\thinspace\vs\ $\ldots$\ \vs
+ \thinspace\<word>}}
+\explain
+This command isn't normally used in documents, but you can use it at
+your terminal to see how \TeX\ would hyphenate some random set of words.
+The words, with hyphenations indicated, appear both in the log and at
+your terminal. You'll get a complaint about an underfull hbox---just
+ignore it.
+\example
+\showhyphens{threshold quizzical draughts argumentative}
+|
+\logproduces
+Underfull \hbox (badness 10000) detected at line 0
+[] \tenrm thresh-old quizzi-cal draughts ar-gu-men-ta-tive
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts language {\param{number}}
+\explain
+Different languages have different sets of hyphenation rules.
+This parameter determines the set of ^{hyphenation rules} that \TeX\ uses.
+By changing |\language| you can get \TeX\
+to hyphenate portions of text or entire documents according to the
+hyphenation rules appropriate to a particular language.
+^^{European languages}
+Your ^{local information} about \TeX\ will tell you if any
+additional sets of hyphenation rules are available (besides the
+ones for English)
+and what the appropriate values of |\language| are.
+The default value of |\language| is $0$.
+
+\TeX\ sets the current language to $0$ at the start of every paragraph,
+and compares |\language| to the current language whenever it adds
+a character to the current paragraph.
+If they are not the same, \TeX\ adds a ^{whatsit} indicating the
+language change.
+This whatsit is the clue in later processing that the language rules
+should change.
+\enddesc
+
+\begindesc
+\cts setlanguage {\<number>}
+\explain
+This command sets the current language to \<number>
+by inserting the same whatsit that you'd get by changing ^|\language|.
+However, it does not change the value of |\language|.
+\enddesc
+
+\begindesc
+\cts lefthyphenmin {\param{number}}
+\cts righthyphenmin {\param{number}}
+\explain
+These parameters specify the smallest word fragments that \TeX\ allows
+at the left and at the right end of a hyphenated word.
+\PlainTeX\ defaults them to $2$ and $3$ respectively;
+these are the recommended values for English.
+\enddesc
+
+\begindesc
+\bix^^{fonts//hyphenation characters for}
+\cts hyphenchar {\<font>\param{number}}
+\explain
+\TeX\ doesn't necessarily use the `-' character at hyphenation points.
+Instead, it uses the |\hyphenchar| of the current font, which is usually
+`-' but need not be. If a font has a negative |\hyphenchar| value,
+\TeX\ won't hyphenate words in that font.
+
+Note that \<font> is a control sequence
+that names a font, not a \<font\-name> that names font files.
+Beware:
+an assignment to |\hyphenchar| is \emph{not} undone at the end
+of a group.
+If you want to change |\hyphenchar| locally, you'll need to
+save and restore its original value explicitly.
+
+\example
+\hyphenchar\tenrm = `-
+ % Set hyphenation for tenrm font to `-'.
+\hyphenchar\tentt = -1
+ % Don't hyphenate words in font tentt.
+|
+\endexample
+\enddesc
+
+\begindesc
+\cts defaulthyphenchar {\param{number}}
+\explain
+When \TeX\ reads the metrics file
+^^{metrics file//default hyphen in}
+for a font in response to a
+^|\font| command, it sets the font's ^|\hyphenchar| to
+|\default!-hyphen!-char|.
+If the value of |\default!-hyphen!-char| is
+not in the range $0$--$255$ when you load a font,
+\TeX\ won't hyphenate any words in that font unless you
+override the decision by setting the font's |\hyphenchar| later on.
+\PlainTeX\ sets |\default!-hyphen!-char| to $45$, the \ascii\ code
+for `|-|'.
+\example
+\defaulthyphenchar = `-
+ % Assume `-' is the hyphen, unless overridden.
+\defaulthyphenchar = -1
+ % Don't hyphenate, unless overridden.
+|
+\endexample
+
+\eix^^{fonts//hyphenation characters for}
+\enddesc
+
+\see |\pretolerance| (\xref \pretolerance).
+\eix^^{hyphenation}
+\eix^^{line breaks}
+
+%==========================================================================
+\section {Section headings, lists, and theorems}
+
+\begindesc
+^^{section headings}
+\easy\ctspecial beginsection {\<argument>\thinspace{\bt\\par}}
+ \ctsxrdef{@beginsection}
+\explain
+You can use this command to begin a major subdivision of your document.
+\<argument> is intended to serve as a section title.
+|\beginsection| surrounds \<argument>
+by extra vertical space and sets it in
+boldface, left-justified.
+You can produce the |\par| that ends \<argument> with a blank line.
+\let\message = \gobble % Don't bother to tell us about Pig and Pepper.
+\example
+$\ldots$ till she had brought herself down to nine
+inches high.
+
+\beginsection Section 6. Pig and Pepper
+
+For a minute or two she stood looking at the house $\ldots$
+|
+\produces
+$\ldots$ till she had brought herself down to nine
+inches high.
+
+\beginsection Section 6. Pig and Pepper
+
+For a minute or two she stood looking at the house $\ldots$
+\endexample
+\enddesc
+
+\begindesc
+\cts item {\<argument>}
+\cts itemitem {\<argument>}
+\explain
+^^{itemized lists}
+These commands are useful for creating ^{itemized lists}. The entire paragraph
+following \<argument> is indented by |\parindent|
+^^|\parindent//indentation for itemized lists|
+(for |\item|) or by |2\parindent| (for |\itemitem|).
+(See \xrefpg{\parindent} for an explanation of |\parindent|.)
+Then \<argument>,
+followed by an en space, is placed just to
+the left of the text of the
+first line of the paragraph so that it falls within the paragraph indentation
+as specified by |\parindent|.
+
+If you want to include more than one
+paragraph in an item, put |\item{}| in front of the additional paragraphs.
+\example
+{\parindent = 18pt
+\noindent Here is what we require:
+\item{1.}Three eggs in their shells,
+but with the yolks removed.
+\item{2.}Two separate glass cups containing:
+\itemitem{(a)}One-half cup {\it used} motor oil.
+\itemitem{(b)}One cup port wine, preferably French.
+\item{3.}Juice and skin of one turnip.}
+|
+\produces
+{\parindent = 18pt
+\noindent Here is what we require:
+\item{1.}Three eggs in their shells,
+but with the yolks removed.
+\item{2.}Two separate glass cups containing:
+\itemitem{(a)}One-half cup {\it used} motor oil.
+\itemitem{(b)}One cup port wine, preferably French.
+\item{3.}Juice and skin of one turnip.}
+\endexample
+\enddesc
+
+\begindesc
+\easy\ctspecial proclaim {\<argument>{\tt.}\vs\thinspace
+ \<general text>\thinspace{\bt\\par}}
+ \ctsxrdef{@proclaim}
+\explain
+^^{theorems}
+^^{lemmas}
+^^{hypotheses}
+This command ``proclaims'' a theorem, lemma, hypothesis, etc.
+It sets \<argument> in boldface type and the following paragraph in
+italics. \<arg\-u\-ment> must be followed by a period and a space token,
+which serve
+to set off \<argument> from \<general text>.
+\<general text> consists of the text up to the next paragraph
+boundary, except that you can include multiple paragraphs by putting them
+within braces and ending a paragraph after the closing right brace.
+\example
+\proclaim Theorem 1.
+What I say is not to be believed.
+
+\proclaim Corollary 1. Theorem 1 is false.\par
+|
+\produces
+\proclaim Theorem 1.
+What I say is not to be believed.
+
+\proclaim Corollary 1. Theorem 1 is false.\par
+\endexample
+\enddesc
+
+\enddescriptions
+\endchapter
+\byebye
diff --git a/Master/texmf-doc/doc/english/impatient/preface.tex b/Master/texmf-doc/doc/english/impatient/preface.tex
new file mode 100644
index 00000000000..b48193d749a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/preface.tex
@@ -0,0 +1,157 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+% See file fdl.tex for copying conditions.
+
+\input macros
+\frontchapter{Preface}
+
+{\tighten
+Donald Knuth's \TeX, a computerized typesetting system,
+provides nearly everything
+needed for high-quality typesetting of mathematical
+notations as well as of ordinary text.
+It is particularly notable for its flexibility, its superb hyphenation, and its
+ability to choose aesthetically satisfying line breaks.
+Because
+of its extraordinary capabilities, \TeX\ has become the leading typesetting
+system for mathematics, science, and engineering and has been adopted as
+a standard by the American Mathematical Society. A companion program,
+^{\Metafont},
+can construct arbitrary letterforms including, in particular, any symbols that
+might be needed in mathematics.
+Both \TeX\ and \Metafont\ are widely available within the
+scientific and engineering community and have been implemented on a
+variety of computers.
+\TeX\ isn't perfect---it lacks integrated support for graphics, and
+some effects such as ^{revision bars} are very difficult to produce---%
+but these drawbacks are far outweighed by its advantages.
+\par}
+
+\thisbook\/ is intended to serve scientists, mathematicians, and
+technical typists for whom \TeX\ is a useful tool rather than a primary
+interest, as well as computer people who have a strong interest in \TeX\
+for its own sake. We also intend it to serve both newcomers to \TeX\
+and those who are already familiar with \TeX. We assume that our
+readers are comfortable working with computers and that they want to get
+the information they need as quickly as possible. Our aim is to provide
+that information clearly, concisely, and accessibly.
+
+{\tighten This book therefore provides a bright searchlight, a stout
+walking-stick, and detailed maps for exploring and using \TeX. It will
+enable you to master \TeX\ at a rapid pace through inquiry and
+experiment, but it will not lead you by the hand through the entire
+\TeX\ system. Our approach is to provide you with a handbook for \TeX\
+that makes it easy for you to retrieve whatever information you need.
+We explain both the full repertoire of \TeX\ commands and the concepts
+that underlie them. You won't have to waste your time plowing through
+material that you neither need nor want. \par}
+
+In the early sections we also provide you with enough orientation so
+that you can get started if you haven't used \TeX\ before. We assume
+that you have access to a \TeX\ implementation and that you know how to
+use a text editor, but we don't assume much else about your background.
+Because this book is organized for ready reference, you'll continue to
+find it useful as you become more familiar with \TeX. If you prefer to
+start with a carefully guided tour, we recommend that you first read
+Knuth's ^{\texbook} (see \xrefpg{resources} for a citation), passing
+over the ``dangerous bend'' sections, and then return to this book for
+additional information and for reference as you start to use \TeX. (The
+dangerous bend sections of \texbook\ cover advanced topics.)
+
+The structure of \TeX\ is really quite simple: a \TeX\ input document
+consists of ordinary text interspersed with commands that give \TeX\
+further instructions on how to typeset your document. Things like math
+formulas contain many such commands, while expository text contains
+relatively few of them.
+
+The time-consuming part of learning \TeX\ is learning the commands and
+the concepts underlying their descriptions. Thus we've devoted most of
+the book to defining and explaining the commands and the concepts.
+We've also provided examples showing \TeX\ typeset output and the
+corresponding input, hints on solving common problems, information about
+error messages, and so forth. We've supplied extensive cross-references
+by page number and a complete index.
+
+We've arranged the descriptions of the commands so that you can look
+them up either by function or alphabetically. The functional
+arrangement is what you need when you know what you want to do but you
+don't know what command might do it for you. The alphabetical arrangement
+is what you need when you know the name of a command but you don't know exactly
+what it does.
+
+We must caution you that we haven't tried to provide a complete
+definition of \TeX. For that you'll need ^{\texbook}, which is the
+original source of information on \TeX. \texbook\ also contains a lot
+of information about the fine points of using \TeX, particularly on the
+subject of composing math formulas. We recommend it highly.
+
+In 1989 Knuth made a major revision to \TeX\ in order to adapt it to
+$8$-bit character sets, needed to support typesetting for languages
+other than English. The description of \TeX\ in this book incorporates
+that revision (see \xref{newtex}).
+
+{\tighten You may be using a specialized form of \TeX\ such as ^{\LaTeX}
+or ^{\AMSTeX} (see \xref{resources}). Although these specialized forms
+are self-contained, you may still want to use some of the facilities of
+\TeX\ itself now and then in order to gain the finer control that only
+\TeX\ can provide. This book can help you to learn what you need to
+know about those facilities without having to learn about a lot of other
+things that you aren't interested~in. \par}
+
+Two of us (K.A.H. and K.B.) were generously supported by the
+University of Massachusetts at Boston during the preparation of this
+book. In particular, Rick Martin kept the machines running, and
+Robert~A. Morris and Betty O'Neil made the machines available. Paul
+English of Interleaf helped us produce proofs for a cover design.
+
+We wish to thank the reviewers of our book: Richard Furuta of the
+University of Maryland, John Gourlay of Arbortext, Inc., Jill Carter
+Knuth, and Richard Rubinstein of the Digital Equipment Corporation. We
+took to heart their perceptive and unsparing criticisms of the original
+manuscript, and the book has benefitted greatly from their insights.
+
+We are particularly grateful to our editor, Peter Gordon of
+Addison-Wesley. This book was really his idea, and throughout its
+development he has been a source of encouragement and valuable
+advice. We thank his assistant at Addison-Wesley, Helen Goldstein, for
+her help in so many ways, and Loren Stevens of Addison-Wesley for her
+skill and energy in shepherding this book through the production
+process. Were it not for our copyeditor, Janice Byer, a number of small
+but irritating errors would have remained in this book. We appreciate
+her sensitivity and taste in correcting what needed to be corrected
+while leaving what did not need to be corrected alone. Finally, we wish
+to thank Jim Byrnes of Prometheus Inc. for making this collaboration
+possible by introducing us to each other.
+\vskip1.5\baselineskip
+
+\line{\it Deerfield, Massachusetts\hfil\rm P.\thinspace W.\thinspace A.}
+\line{\it Manomet, Massachusetts\hfil\rm K.\thinspace A.\thinspace H.,
+ K.\thinspace B.}
+
+\vskip2\baselineskip
+
+\noindent {\bf Preface to the free edition:} This book was originally
+published in 1990 by Addison-Wesley. In 2003, it was declared out of
+print and Addison-Wesley generously reverted all rights to us, the
+authors. We decided to make the book available in source form, under
+the GNU Free Documentation License, as our way of supporting the
+community which supported the book in the first place. See the
+copyright page for more information on the licensing.
+
+The illustrations which were part of the original book are not included
+here. Some of the fonts have also been changed; now, only
+freely-available fonts are used. We left the cropmarks and galley
+information on the pages, to serve as identification. An old version of
+Eplain was used to produce it; see the {\tt eplain.tex} file for
+details.
+
+We don't plan to make any further changes or additions to the book
+ourselves, except for correction of any outright errors reported to us,
+and perhaps inclusion of the illustrations.
+
+Our distribution of the book is at {\tt
+ftp://tug.org/tex/impatient}. You can reach us by email at {\tt
+impatient@tug.org}.
+
+\pagebreak
+\byebye
diff --git a/Master/texmf-doc/doc/english/impatient/read1st.tex b/Master/texmf-doc/doc/english/impatient/read1st.tex
new file mode 100644
index 00000000000..fddaed637e6
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/read1st.tex
@@ -0,0 +1,45 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+% See file fdl.tex for copying conditions.
+
+\input macros
+\frontchapter{Read this first}
+
+% We don't need anything but \rm here.
+{\font\rm = cmr10 scaled \magstephalf \baselineskip = 1.1\baselineskip
+If you're new to \TeX:
+\ulist
+\li Read Sections \chapternum{usebook}--\chapternum{usingtex} first.
+\li Look at the examples in \chapterref{examples}
+for things that resemble what you want to do.
+Look up any related commands in ``Capsule summary of commands'',
+\chapterref{capsule}.
+Use the page references there to find the more complete descriptions of
+those commands and others that are similar.
+\li Look up unfamiliar words in ``Concepts'', \chapterref{concepts},
+using the list on the back cover of the book to find the
+explanation quickly.
+\li Experiment and explore.
+\endulist
+\bigskip
+\noindent
+If you're already familiar with \TeX, or if you're editing or
+otherwise modifying a \TeX\ document that someone else has created:
+\ulist
+\li For a quick reminder of what a command does, look in
+\chapterref{capsule}, ``Capsule summary of commands''. It's
+alphabetized and has page references for more complete descriptions of
+the commands.
+\li Use the functional groupings of command descriptions
+to find those related to a
+particular command that you already know, or to find a command that serves a
+particular purpose.
+\li Use \chapterref{concepts}, ``Concepts'', to get an explanation of
+any concept that you don't understand, or need to understand more
+precisely, or have forgotten.
+Use the list on the inside back cover of the book to find a concept quickly.
+\endulist
+}
+\pagebreak
+
+\byebye
diff --git a/Master/texmf-doc/doc/english/impatient/tips.tex b/Master/texmf-doc/doc/english/impatient/tips.tex
new file mode 100644
index 00000000000..b55408f71d4
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/tips.tex
@@ -0,0 +1,1011 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+% See file fdl.tex for copying conditions.
+
+\input macros
+\chapter{Tips and techniques}
+
+\chapterdef{tips}
+
+\TeX\ is a complex program that occasionally works its will in
+mysterious ways. In this section we offer some tips on solving
+problems that you might encounter and explain some handy techniques.
+
+
+\section Correcting bad page breaks
+
+\bix^^{page breaks//bad}
+Sometimes \TeX\ breaks a page right in the middle of material that you
+want to keep together---for example,
+a section heading and the text that follows it,
+or a short list of related items. There are two ways to correct the
+situation:
+\ulist\compact
+\li You can force the material to be kept together.
+\li You can force a page break at a different place.
+\endulist
+
+The simplest way to force \TeX\ to keep material together on a page is
+to enclose the material in a vbox using the |\vbox| command \ctsref{\vbox}.
+^^|\vbox//fixing page breaks with|
+A vbox is ordinarily better than an hbox for this purpose because most
+often the material to be kept together,
+e.g., a sequence of paragraphs, will be vertical mode material.
+You should
+precede and follow the vbox by an implicit or explicit paragraph command
+(either a blank line or |\par|); otherwise
+\TeX\ may try to make the vbox part of an an adjacent paragraph.
+The vbox method has an important limitation:
+you can't apply it to portions of text smaller than a paragraph.
+
+You can sometimes keep the lines of a single paragraph together by enclosing
+the paragraph in a group and assigning |\interlinepenalty|
+\ctsref{\interlinepenalty}
+a value of $10000$ at the start of the group (or elsewhere before the
+end of the paragraph).
+This method causes \TeX\ to consider page breaks within that paragraph to be
+infinitely undesirable.
+However, if all the page breaks that \TeX\ can find are infinitely undesirable,
+it may break the page within the paragraph anyway.
+
+A ^|\nobreak| command (\xref{vnobreak})
+after the end of a paragraph prevents \TeX\
+from breaking the page at the following item
+(unless that item happens to be a penalty of less than $10000$).
+This is also the best way to prevent a page break after a heading,
+since a heading usually behaves like a paragraph.
+The |\nobreak| must follow the blank line or |\par| that ends
+the paragraph so that \TeX\ won't treat the |\nobreak| as part of the
+paragraph.
+For the |\nobreak| to be effective, it must also come before
+any legal breakpoint at the end of the paragraph.
+The glue that \TeX\ inserts
+before the next paragraph is such a breakpoint,
+and so is any vertical glue that you insert explicitly after a paragraph.
+Thus the |\nobreak| should usually be
+the very first thing after the end of the paragraph or heading.
+
+You can use the ^|\eject| command \ctsref{\eject}
+to force \TeX\ to break a page at a
+particular place. Within a paragraph, you can use the combination
+`|\vadjust{\vfill\eject}|'
+\ctsref{\vadjust}
+^^|\vadjust|
+to force a break after the next complete output line.
+The reason for preceding |\eject| by ^|\vfill|
+\ctsref{\vfill} is to
+get \TeX\ to fill out the page with blank space.
+However, using |\eject| to fix page break problems
+has a major disadvantage:
+if the page boundaries in your document change,
+the page breaks that you've inserted may no longer be where you want them.
+
+If you don't provide \TeX\ with a |\vfill| command to fill out the page
+after an |\eject|,
+\TeX\ redistributes the extra blank space as best it can and then usually
+complains that ``an
+underfull |\vbox| (badness $10000$) has occurred while |\output| is active.''
+You may encounter a similar problem with
+any of the methods mentioned above for enclosing
+material that you want to keep together.
+
+The ^|\filbreak| command \ctsref\filbreak{}
+\xrdef{filbreak}
+provides a way of keeping the lines of one or more paragraphs
+(or other vertical mode material) together on
+a page. If you enclose a paragraph in |\filbreak|s, \TeX\ will effectively
+ignore the |\filbreak|s if the paragraph fits on the current page and
+break the page before the first |\filbreak| if the paragraph doesn't fit.
+If you put |\filbreak|s around each paragraph in a sequence of paragraphs,
+like this:
+{\obeylines\display{
+{\tt \\filbreak}
+\<paragraph>
+{\tt \\filbreak}
+\<paragraph>
+{\tt \\filbreak}
+\leavevmode\indent\vdots
+\<paragraph>
+{\tt \\filbreak}
+}}
+\vfil\eject
+\noindent
+\TeX\ will keep the lines of each paragraph together on a page.
+If \TeX{} breaks a page at a |\filbreak|, it will fill the bottom of the
+page with blank space.
+
+Sometimes you can get \TeX\ to modify the length of a page by changing
+the ^|\looseness| parameter \ctsref\looseness{} for one or more paragraphs.
+Setting |\looseness| negative within a paragraph causes \TeX\ to try to squeeze
+the paragraph into fewer lines; setting it positive causes \TeX\ to try to
+expand the paragraph into more lines. The disadvantage of changing |\looseness|
+is that the interword spacing in the affected region won't be optimal.
+You can get further information about \TeX's attempted line breaks by
+setting |\tracingpages| (\xref\tracingpages) to $1$.
+
+
+\section Preserving the end of a page
+
+Sometimes you need to modify something on a single page and you want to avoid
+reprinting the entire document. If your modification doesn't
+change the page length too much, there's hope. You need to fix the end
+of the page so that it falls in the same place;
+the methods are similar to the ones for fixing a bad page break.
+
+If the original end of page came between paragraphs, you can
+force a page break at the same place
+using any of the methods we've described above. Otherwise,
+you must force \emph{both} a line break and a page break at a particular
+place. If the new page is shorter than the old one, the sequence:
+\csdisplay
+\vadjust{\vfill\eject}\break
+|
+^^|\vadjust|
+should do the trick.
+But if the new page is longer,
+the problem is far more difficult because \TeX\ has probably already
+squeezed the page as tightly as it can. Your only hopes in this case are
+to set ^|\looseness| \ctsref\looseness{} to a negative value,
+to shorten some of the vertical skips on the page, to add some shrink to
+^|\parskip| (\xref\parskip) if it was nonzero, or, as a last resort,
+to decrease |\baselineskip| \ctsref{\baselineskip} ever so slightly.
+^^|\baselineskip//and preserving end of page|
+
+\section Leaving space at the top of a page
+
+\null
+^^{vertical space//reserving at top of page}
+You can usually use the |\vskip| command \ctsref\vskip{}
+to leave vertical space on a page.
+That doesn't work at the top of a page, however, since
+\TeX\ discards glue, kerns, and penalties that occur just after a page break.
+^^{page breaks//glue at}
+Use the ^|\topglue| command \ctsref\topglue\ instead; it produces glue that
+never disappears.
+\eix^^{page breaks//bad}
+
+
+
+\section Correcting bad line breaks
+
+\null
+\bix^^{line breaks//bad}
+If \TeX\ breaks a line in the middle of material that you wanted to keep
+on a single line, there are several ways to correct the situation:
+\ulist\compact
+\li You can force a break in a nearby place with the
+|\break| command (\xref{hbreak}).
+^^|\break//correcting line breaks with|
+\li You can insert a tie (|~|) between two words
+(see \xref{@not}) to prevent a break between them.\ttidxref{~}
+\li You can tell \TeX\ about hyphenations that it wouldn't
+otherwise consider by
+inserting one or more discretionary hyphens in various words
+(see |\-|, \xref{\@minus}).
+\ctsidxref{-//in line breaking}
+^^{discretionary hyphens//bad line breaks, correcting with}
+\li You can enclose several words in an hbox using the ^|\hbox|
+command \ctsref{\hbox}.
+\endulist
+
+The disadvantage of all of these methods, except for inserting discretionary
+hyphens, is that they may make it impossible for \TeX\ to find a
+satisfactory set of line breaks. Should that happen, \TeX\ will
+set one or more underfull or overfull boxes and complain about it.
+^^{underfull boxes} ^^{overfull boxes}
+The hbox method has a further disadvantage: because \TeX\ sets an hbox
+as a single unit without considering its context, the interword space
+within the hbox may not be consistent with the interword space in the rest of
+the line.
+\eix^^{line breaks//bad}
+
+
+\section Correcting overfull or underfull boxes
+
+\null
+\bix^^{overfull boxes}
+\bix^^{underfull boxes}
+\bix^^{boxes//overfull}
+\bix^^{boxes//underfull}
+If \TeX\ complains about an overfull box, it means you've put
+more material into a box than that box has room for.
+Similarly, if \TeX\ complains about an underfull box, it means you
+haven't put enough material into the box. You can encounter
+these complaints under many different circumstances, so let's look at the more
+common ones:
+
+\ulist
+\li An overfull hbox that's a line of a paragraph indicates that the line was
+too long and that
+\TeX\ couldn't rearrange the paragraph
+to make the line shorter. If you set ^|\emergencystretch|
+\ctsref{\emergencystretch} to some nonzero
+value, that may cure the problem by allowing \TeX\ to put more space between
+words. Another solution is to set |\tolerance| \ctsref{\tolerance}
+to $10000$, but that's likely
+to yield lines with far too much space in them. Yet another solution is to
+insert a discretionary hyphen
+^^{discretionary hyphens//overfull boxes, correcting with}
+in a critical word that \TeX\ didn't know how to hyphenate.
+If all else fails, you might try rewording the paragraph.
+A solution that is rarely satisfactory is increasing ^|\hfuzz| \ctsref\hfuzz,
+allowing \TeX\ to construct lines that project beyond the right margin.
+
+\li An underfull hbox that's a line of a paragraph indicates that the line was
+too short and that \TeX\ couldn't rearrange the paragraph to
+make the line longer.
+\TeX\ will set such a line by stretching its interword spaces
+beyond their normal
+limits. Two of the cures for overfull lines mentioned above
+also apply to underfull lines:
+inserting discretionary hyphens and rewording the paragraph.
+Underfull lines
+won't trouble you if you're using ragged right formatting, which you can get
+with the ^|\raggedright| command \ctsref\raggedright.
+
+\li The complaint:
+\csdisplay
+Underfull \vbox (badness 10000) has occurred
+ while \output is active
+|
+indicates that \TeX\ didn't have enough material to fill up a page. The
+likely cause is that you've been using vboxes to keep material together
+and \TeX\ has encountered a vbox near the bottom of a page that wouldn't fit on
+that page.
+It has put the vbox on the next page, but in doing so has left too much
+empty space in the current page.
+In this case you'll either have to insert some more space
+elsewhere on the current page or break up the vbox into smaller parts.
+
+Another possible cause of this complaint is having a long paragraph
+that occupies an entire page without a break.
+Since \TeX\ won't ordinarily vary the spacing between lines,
+it may be unable to fill a gap at the bottom of the page
+amounting to a fraction of the line spacing.
+This can happen if |\vsize| \ctsref{\vsize}, the page length,
+is not an even multiple of |\baselineskip| \ctsref{\baselineskip},
+the space between consecutive
+baselines.
+
+Yet another cause of this complaint,
+similar to the previous one, is setting ^|\parskip| \ctsref{\parskip},
+the interparagraph glue, to a value that doesn't have any
+stretch or shrink. You can fix these last two problems by increasing ^|\vfuzz|
+\ctsref\vfuzz.
+
+\li The complaint
+\csdisplay
+Overfull \vbox (296.30745pt too high) has occurred
+ while \output is active
+|
+indicates that you constructed a vbox that was longer than the page. You'll
+just have to make it shorter.
+
+\li
+\bix^^|\hbox//overfull box from|
+\bix^^|\vbox//overfull box from|
+The only cures for an overfull hbox or vbox that you've constructed
+with the |\hbox| or |\vbox| commands
+(\pp\xrefn\hbox, \xrefn\vbox)
+are to take something out of the box, to insert some negative glue
+with ^|\hss| or ^|\vss| (\xref\hss), or to increase the size
+of the box.
+
+\li If you encounter an underfull hbox or vbox that you've constructed
+with |\hbox| or |\vbox|,
+you're usually best off to fill out the box with ^|\hfil|
+or ^|\vfil| (\xref\hfil).
+\eix^^|\hbox//overfull box from|
+\eix^^|\vbox//overfull box from|
+
+\endulist
+\eix^^{boxes//overfull}
+\eix^^{boxes//underfull}
+\eix^^{overfull boxes}
+\eix^^{underfull boxes}
+
+
+\section Recovering lost interword spaces
+
+\null
+^^{space//lost}
+^^{words run together}
+If you find that \TeX\ has run two words together, the likely cause is a
+control sequence that's absorbed the spaces after it.
+Put a ^{control space} (|\!visiblespace|) after the control
+sequence.
+
+
+\section Avoiding unwanted interword spaces
+
+\null
+\bix^^{space//unwanted}\xrdef{unwantedspace}
+If you get a space in your document where you don't want and don't
+expect one, the most likely cause, in our experience,
+is an end of line or a space following a brace.
+^^{braces//space after}
+(If you're doing fancy things with category codes,
+^^{category codes//cause of unwanted spaces}
+you've introduced lots of other likely causes.)
+\TeX\ ordinarily translates an end-of-line into a space,
+and it considers a space after a right or left brace to be significant.
+
+If the unwanted space is caused by a space after a brace within
+an input line, then remove that space.
+If the unwanted space is caused by a brace at the end of an input line,
+put a `|%|' immediately after the brace.
+{\recat!ttidxref[%//to eliminate unwanted spaces]]
+The `|%|' starts a comment, but this comment needn't
+have any text.
+
+A macro definition can also
+introduce unwanted spaces if you haven't written it
+carefully. If you're getting unwanted spaces when you call a macro, check
+its definition to be sure that you don't have an unintended space after a
+brace and that you haven't ended a line of the definition immediately
+after a brace.
+People often end lines of macro definitions after braces in order to make
+the definitions more readable.
+To be safe, put a `|%|' after any brace that ends a line of a macro
+definition.
+It may not be needed, but it won't do any harm.\footnote{
+Admittedly there are rare cases where you really do want an end of line
+after a brace.}
+
+When you're having trouble locating the source of an unwanted space,
+try setting |\tracingcommands| \ctsref{\tracingcommands} to $2$.
+You'll get a |{blank space}| command in the log file for each space
+that \TeX\ sees.
+
+It helps to know \TeX's rules for spaces:
+
+\olist
+\li Spaces are ignored at the beginnings of input lines.
+\li Spaces at the ends of input lines are ignored under \emph{all}
+circumstances, although the end of line itself is treated like a space.
+(A completely blank line, however, generates a |\par| token.)
+\li Multiple spaces are treated like a single space, but
+only if they appear together in your input.
+Thus a space following the arguments of a macro call is not combined
+with a final space produced by the macro call. Instead, you get two spaces.
+\li Spaces are ignored after control words.
+\li Spaces are in effect ignored after numbers, dimensions,
+and the `|plus|' and `|minus|' in glue specifications.%
+\footnote{Actually, \TeX\ ignores only a
+single space in these places.
+Since multiple spaces ordinarily reduce to a single space, however, the
+effect is that of ignoring any number of spaces.}
+\endolist
+\noindent If you've changed the category code of the space or the end-of-line
+character, all bets are off.
+\eix^^{space//unwanted}
+
+
+\section Avoiding excess space around a display
+
+\null
+^^{math display}
+If you're getting too much space above a math display, it may be because
+you've left a blank line in your input above the display.
+The blank line starts a new paragraph and puts \TeX\ into
+vertical mode. When
+\TeX\ sees a `|$|' in vertical mode, it switches back to horizontal mode
+and inserts the interparagraph glue (|\parskip|) followed by
+the interline glue (|\baselineskip|).
+Then, when it starts the display itself,
+it inserts \emph{more} glue (either ^|\abovedisplayskip|
+or ^|\abovedisplayshortskip|, depending on the length of the preceding
+line).
+This last glue is the only glue that you want.
+To avoid getting the interparagraph glue as well, don't leave a blank line above a
+math display or otherwise
+end a paragraph (with |\par|, say) just before a math display.
+
+Similarly,
+if you're getting too much space below a math display, it may be because
+you've left a blank line in your input below the display.
+Just remove it.
+
+
+\section Avoiding excess space after a paragraph
+
+If you get too much vertical space after a paragraph that was produced by a
+macro, you may be getting the interparagraph glue produced by the macro,
+an empty paragraph, and then more interparagraph glue.
+You can get rid of the second paragraph skip by inserting:
+\csdisplay
+\vskip -\parskip
+\vskip -\baselineskip
+|
+just after the macro call.
+If you always get this problem with a certain macro, you can put these
+lines at the end of the macro definition instead.
+You may also be able to cure the problem by never leaving a blank line
+after the macro call---if you want a blank line just to make your input
+more readable, start it with a `|%|'.
+
+
+\section Changing the paragraph shape
+
+\null
+\bix^^{paragraphs//shaping}
+Several \TeX\ parameters---^|\hangindent|, ^|\leftskip|, etc.---%
+affect the way that \TeX\ shapes paragraphs and breaks them into lines.
+^^{line breaking}
+These parameters are used indirectly in \plainTeX{} commands such as
+^|\narrower| and ^|\hang|; you can also assign to them directly.
+If you've used one of these commands (or changed one of these parameters),
+but the command or parameter change
+does not seem to be having any effect on a paragraph,
+the problem may be that you've ended a group before you've ended the
+paragraph. For example:
+\csdisplay
+{\narrower She very soon came to an open field, with
+a wood on the other side of it: it looked much darker
+than the last wood, and Alice felt a little timid
+about going into it.}
+|
+This paragraph won't be set narrower because the right brace at the end
+terminates the |\narrower| group before \TeX\ has had a chance to
+break the paragraph into lines. Instead, put a |\par| before the
+right brace; then you'll get the effect you want.
+^^|\par//when changing paragraph shape|
+\eix^^{paragraphs//shaping}
+
+
+\section Putting paragraphs into a box
+
+Suppose you have a few paragraphs of text that you want to put in a
+particular place on the page. The obvious way to do it is to enclose
+the paragraphs in an hbox of an appropriate size, and then place the hbox
+where you want it to be. Alas, the obvious way doesn't work because
+\TeX\ won't do line breaking in restricted horizontal mode.
+^^{restricted mode//horizontal}
+If you try it,
+you'll get a misleading error message that suggests you're
+missing the end of a group.
+The way around this restriction is to write:
+\csdisplay
+\vbox{\hsize = !<dimen> !dots !<paragraphs> !dots}
+|
+where \<dimen> is the line length that you want for the paragraphs.
+This is what you need to do, in particular, when you want to enclose some
+paragraphs in a box (a box enclosed in ruled lines, not a \TeX\ box).
+
+\section Drawing lines
+
+\null
+\bix^^{rules}
+You can use the ^|\hrule| and ^|\vrule| commands (\xref\hrule)
+to draw lines, i.e., rules. You'll need to
+know (a)~where you can use each command and
+(b)~how \TeX\ determines the lengths of rules when
+you haven't given the lengths explicitly.
+\ulist
+\li You can only use |\hrule| when \TeX\ is in a vertical mode and |\vrule|
+when \TeX\ is in a horizontal mode.
+This requirement means that
+you can't put a horizontal rule into an hbox or a vertical rule
+into a vbox.
+You can, however, construct a horizontal rule that looks vertical by
+specifying all three dimensions and making it tall and skinny.
+Similarly, you can construct a vertical rule that looks horizontal
+by making it short and fat.
+
+\li A horizontal rule inside a vbox
+has the same width as does the vbox if you haven't
+given the width of the rule explicitly.
+Vertical rules
+inside hboxes behave analogously.
+If your rules are coming out too long or too short,
+check the dimensions of the enclosing box.
+\endulist
+
+As an example, suppose we want to produce:
+\display{%
+\hbox{\vrule
+ \vbox{\hrule\vskip 3pt
+ \hbox{\hskip 3pt
+ \vbox{\hsize .7in\raggedright
+ \noindent Help! Let me out of here!}%
+ \hskip 3pt}
+ \vskip 3pt\hrule}%
+\vrule}}
+The following input will do it:
+\csdisplay
+\hbox{\vrule
+ \vbox{\hrule \vskip 3pt
+ \hbox{\hskip 3pt
+ \vbox{\hsize = .7in \raggedright
+ \noindent Help!! Let me out of here!!}%
+ \hskip 3pt}%
+ \vskip 3pt \hrule}%
+\vrule}
+|
+We need to put the text into a vbox in order to get \TeX\ to process it
+as a paragraph.
+The four levels of boxing are really
+necessary---if you doubt it, try to run this example with fewer levels.
+\eix^^{rules}
+
+
+\section Creating multiline headers or footers
+
+\null
+\xrdef{bighead}
+\bix^^{headers//multiple-line}
+\bix^^{footers//multiple-line}
+You can use
+the ^|\headline| and ^|\footline| commands
+(\xref\footline) to produce headers and footers, but they don't work properly
+for headers and footers having more than one line. However, you can get
+multiline headers and footers by redefining some of the subsidiary
+macros in \TeX's output routine.
+
+For a multiline header, you need to do three things:
+\olist\compact
+\li Redefine the ^|\makeheadline| macro that's called from \TeX's
+output routine.
+\li Increase ^|\voffset| by the amount of vertical space consumed by the
+extra lines.
+\li Decrease ^|\vsize| by the same amount.
+\endolist
+\noindent The following example shows how you might do this:
+\csdisplay
+\advance\voffset by 2\baselineskip
+\advance\vsize by -2\baselineskip
+\def\makeheadline{\vbox to 0pt{\vss\noindent
+ Header line 1\hfil Page \folio\break
+ Header line 2\hfil\break
+ Header line 3\hfil}%
+ \vskip\baselineskip}
+|
+You can usually follow the pattern of this definition quite closely, just
+substituting your own header lines and choosing an appropriate multiple
+of |\baselineskip| (one less than the number of lines in the header).
+
+For a multiline footer, the method is similar:
+\olist
+\li Redefine the ^|\makefootline| macro that's called from \TeX's
+output routine.
+\li Decrease ^|\vsize| by the amount of vertical space consumed by the
+extra lines.
+\endolist
+\noindent The following example shows how you might do this:
+\csdisplay
+\advance\vsize by -2\baselineskip
+\def\makefootline{%
+ \lineskip = 24pt
+ \vbox{\raggedright\noindent
+ Footer line 1\hfil\break
+ Footer line 2\hfil\break
+ Footer line 3\hfil}}
+|
+Again, you can usually follow the pattern of this definition quite closely.
+The value of |\lineskip| determines the amount of space between the
+baseline of the last line
+of the main text on the page and the baseline of the first line of the footer.
+\eix^^{headers//multiple-line}
+\eix^^{footers//multiple-line}
+
+
+\section Finding mismatched braces
+
+\bix^^{braces//mismatched}
+\xrdef{mismatched}
+Most times when your \TeX\ input suffers from mismatched braces, you'll
+get a diagnostic from \TeX\ fairly near the place where you actually
+made the mistake.
+But one of the most frustrating errors you can get from a \TeX\ run,
+just before \TeX\ quits, is
+the following:
+\csdisplay
+(\end occurred inside a group at level 1)
+|
+This indicates that there is an extra left brace
+or a missing right brace somewhere
+in your document, but it gives you no hint at all
+about where the problem might be. So how can you find it?
+
+A debugging trick we've found useful
+is to insert the following line or its equivalent
+at five or six places equally spaced within the document (and not within
+a known group):
+\csdisplay
+}% a fake ending
+|
+Let's assume the problem is an extra left brace.
+If the extra left brace
+is, say, between the third and fourth fake ending,
+you'll get error messages from the first three fake endings but not from
+the fourth one. The reason is that \TeX\ will ignore the first three
+fake endings after complaining about them,
+but the fourth fake ending will match
+the extra left brace.
+Thus you know that the extra left brace
+is somewhere between the third and fourth
+fake ending.
+If the region of the error
+is still too large for you to find it,
+just remove the original set of fake endings and
+repeat the process within that region.
+If the problem is a missing right brace rather than an extra left brace,
+you should be able to track it down once you've found its mate.
+
+This method doesn't work under all circumstances. In particular, it doesn't
+work if your document consists of several really large groups. But often
+you can find some variation on this method that will lead you to that
+elusive brace.
+
+If all else fails, try shortening your input by removing
+the last half of the file
+(after stashing away the original version first!) or inserting a
+|\bye| command in the middle.
+If the error persists, you know it's in the first half; if it goes away,
+you know it's in the second half.
+By repeating this process you'll eventually find the error.
+\eix^^{braces//mismatched}
+
+
+\section Setting dimensions
+
+\null
+\bix^^{\<dimen>}
+The simplest way to set a dimension is to specify it directly, e.g.:
+\csdisplay
+\hsize = 6in
+|
+You can also specify a dimension in terms of other dimensions or as a mixture
+of different units, but it's a little more work. There are two ways
+to construct a dimension as such a combination:
+\olist\compact
+\li You can add a dimension to a dimension parameter or to a dimension
+register.
+For example:
+\csdisplay
+\hsize = 6in \advance\hsize by 3pc % 6in + 3pc
+|
+\li You can indicate a dimension as a multiple of a dimension
+or glue parameter or register.
+In this case, \TeX\ converts glue to a dimension by throwing away
+the stretch and shrink. For example:
+\csdisplay
+\parindent = .15\hsize
+\advance\vsize by -2\parskip
+|
+\endolist
+\eix^^{\<dimen>}
+
+
+\section Creating composite fonts
+
+\null
+\bix^^{fonts//composite}
+It's sometimes useful to create a ``composite font'',
+named by a control sequence $\cal F$, in which all the characters
+are taken from a font $f_1$ except for a few that are
+borrowed from another font $f_2$.
+You can then set text in the composite font by using $\cal F$ just as
+you'd use any other font identifier.
+
+You can create such a composite font by defining $\cal F$ as a macro.
+In the definition of $\cal F$, you first select font $f_1$ and then
+define control sequences that produce the borrowed characters,
+set in $f_2$.
+For example, suppose that you want to
+create a composite font |\britrm| which has all the characters of |cmr10|
+except for the dollar sign, for which you want to borrow
+the pound sterling symbol
+from font |cmti10|.
+The pound sterling symbol in |cmti10| happens to be in the same font position
+as the dollar sign in |cmr10|.
+Here's how to do it:
+\csdisplay
+\def\britrm{%
+ \tenrm % \tenrm names the cmr10 font
+ \def\${{\tenit\char `\$}}% \tenit names the cmti10 font.
+}
+|
+Now whenever you start the font named |\britrm|,
+|\$| will produce a pound sterling symbol.
+
+You can also get the same effect by changing the category codes
+of the characters in question to make those characters active and then
+providing a definition for the character. For example:
+\csdisplay
+\catcode `* = \active
+\def*{{\tentt \char `\*}}
+|
+In this case the asterisk will be taken from the |\tentt| font.
+If you then type the input line:
+\csdisplay
+Debbie was the * of the show.
+|
+it will be set as:
+{\font\tentt=cmtt10%
+\catcode `* = \active
+\def*{{\tentt \char `\*}}%
+\display{Debbie was the * of the show.}}
+\noindent
+
+\eix^^{fonts//composite}
+
+
+\section Reproducing text verbatim
+
+\null
+^^{verbatim text}\xrdef{verbatim}
+Verbatim text is text that is reproduced in a typeset
+document just as it appeared in the input.
+The most common use of verbatim text is in typesetting
+computer input,
+including both computer programs and input to \TeX\ itself.
+^^{computer programs, typesetting}
+Computer input is not easy to produce verbatim for two reasons:
+\olist\compact
+\li Some characters (control symbols, escape characters, braces,
+etc.) have
+special meanings to \TeX.
+\li Ends of line and multiple spaces are translated to single spaces.
+\endolist
+\noindent
+In order to produce verbatim text, you have to cancel the special meanings
+and disable the translation. This is best done with macros.
+
+To cancel the special meanings, you need to change the category codes
+of those characters that have special meanings.
+^^{category codes//for verbatim text}
+The following macro illustrates how you might do it:
+\csdisplay
+\chardef \other = 12
+\def\deactivate{%
+ \catcode`\\ = \other \catcode`\{ = \other
+ \catcode`\} = \other \catcode`\$ = \other
+ \catcode`\& = \other \catcode`\# = \other
+ \catcode`\% = \other \catcode`\~ = \other
+ \catcode`\^ = \other \catcode`\_ = \other
+}
+|
+But beware! Once you've changed the category codes in this way, you've lost
+the ability to use control sequences since there's no longer an escape
+character. You need some way of getting back to the normal mode of
+operation. We'll explain how to do that in a moment, after considering
+the other problem: disabling the translation of spaces and ends of line.
+
+\PlainTeX\ has two commands that together nearly solve the problem:
+^|\obeyspaces| \ctsref{\obeyspaces} and ^|\obeylines| \ctsref{\obeylines}.
+The two things that they don't do are to preserve spaces at the start of
+a line
+and to preserve blank lines.
+For that you need stronger measures---which are provided by
+the ^|\obeywhitespace| macro that we are about to define.
+
+\TeX\ normally insists on collecting lines into paragraphs. One way to
+convince it to take line boundaries literally is to turn individual lines
+into paragraphs.\footnote{%
+Another way is to turn the end of line character into a |\break|
+command and provide infinite glue at the end of each line.
+^^|\break//end of line as|
+}
+You can do this by redefining the end of line character to produce
+the |\par| control sequence. The following three macro definitions
+show how:
+
+^^{whitespace, preserving}
+\xrdef{\obeywhitespace}
+\csdisplay
+\def\makeactive#1{\catcode`#1 = \active \ignorespaces}
+{% The group delimits the text over which ^^M is active.
+ \makeactive\^^M %
+ \gdef\obeywhitespace{%
+ % Use \gdef so the definition survives the group.
+ \makeactive\^^M %
+ \let^^M = \newline %
+ \aftergroup\removebox % Kill extra paragraph at end.
+ \obeyspaces %
+ }%
+}
+\def\newline{\par\indent}
+\def\removebox{\setbox0=\lastbox}
+
+|
+A subtle point about the definition of |\obeywhitespace| is that
+|^^M| must be made active both
+when |\obeywhitespace| is being \emph{defined} and when
+it is being \emph{used}.
+
+In order to be able to get back to normal operation after verbatim text,
+you need to choose a character that
+appears rarely if at all in the verbatim text. This character serves as
+a temporary escape character.
+The vertical bar (|!||) is sometimes a good choice.
+With this choice, the macros:
+\csdisplay
+\def\verbatim{\par\begingroup\deactivate\obeywhitespace
+ \catcode `\!| = 0 % Make !| the new escape character.
+}
+
+\def\endverbatim{\endgroup\endpar}
+
+\def\!|{!|}
+|
+will do the trick. Within the verbatim text, you can use a double
+vertical bar (|!|!||) to denote a single one, and you end the verbatim text
+with |!|endverbatim|.
+
+There are many variations on this technique:
+\ulist
+\li If a programming language has keywords, you can turn
+each keyword into a command that typesets
+that keyword in boldface. Each keyword in the input should then be
+preceded by the temporary escape character.
+\li If you have a character (again, let's assume it's the vertical bar)
+that
+\emph{never} appears in the verbatim text, you can make it active and
+cause it to end the verbatim text. The macro definitions then go like
+this:
+\csdisplay
+{\catcode `\!| = \active
+\gdef\verbatim{%
+ \par\begingroup\deactivate\obeywhitespace
+ \catcode `!| = \active
+ \def !|{\endgroup\par}%
+}}
+|
+\endulist
+
+The ideas presented here provide only a simple approach to typesetting
+computer programs.
+Verbatim reproduction is often not as revealing or easy to read as a version
+that uses typographical conventions to reflect the syntax
+and even the semantics of the program.
+If you'd like to pursue this subject further, we recommend the following book:
+
+\smallskip{\narrower\noindent
+Baecker, Ronald M., and Marcus, Aaron, {\sl Human Factors
+and Typography for More Readable Programs}. Reading, Mass.:
+Addison-Wesley, 1990.\par}
+
+
+\section Using outer macros
+
+\null
+^^{forbidden control sequence}^^{incomplete conditional}
+If \TeX\ complains about a ``forbidden control sequence'',
+you've probably used an outer macro in a non-outer context
+\seeconcept{outer}.
+^^{macros//outer}
+An outer macro is one whose definition is
+preceded by ^|\outer|.
+An outer macro can't be used in a macro argument, in a macro definition,
+in the preamble of an alignment, or in conditional
+text, i.e., text that will be expanded only when a conditional test
+has a particular outcome.
+^^{alignments//outer control sequence in}
+Certain macros have been defined as outer because they aren't
+intended to be used in these contexts and such a use is probably an error.
+The only ways around this problem are to redefine the
+macro or to move its use to an acceptable context.
+
+Using an outer macro in an improper context can also cause
+\TeX\ to complain about a runaway situation or an incomplete conditional.
+The problem can be hard to diagnose because the error message
+gives no hint as to what it is.
+If you get such an error message, look around for a call on an outer macro.
+You may not always know that a particular macro is outer, but the
+command `^|\show||\a|' \ctsref{\show}
+will show you the definition of |\a| and also tell you
+if |\a| is outer.
+
+
+\section Changing category codes
+
+\null
+\bix^^{category codes//changing}
+Sometimes it's useful to make local changes to the category code of a
+character in some part of your document. For instance, you might be
+typesetting a computer program
+^^{computer programs, typesetting}
+or something else that uses normally active
+characters for special purposes. You'd then want to deactivate those
+characters so that \TeX\ will treat them as being like any other character.
+
+If you make such a local change to the category code of a character,
+you may sometimes be dismayed to find that
+\TeX\ seems to be paying no attention whatsoever to your change.
+Two aspects of \TeX's behavior are likely causes:
+\olist
+\li \TeX\ determines the category code of an input character
+^^{input characters}
+and attaches it to the character when it reads in the character.
+Let's say you read in a tilde (|~|) and later
+change the category code of tildes,
+but make the change
+before \TeX's stomach has actually processed that \emph{particular\/}
+tilde \seeconcept{\anatomy}.
+\TeX\ will still respond to that
+tilde using the category code as it was before the change.
+This difficulty typically arises
+when the tilde is part of an argument to a macro
+and the macro itself changes the category code of tilde.
+
+\li When \TeX\ is matching a call of a macro to the definition of that macro,
+it matches not just the characters in the parameter pattern but also their
+category codes.
+^^{macros//arguments of}
+^^{macros//parameters of}
+If the category code of a pattern character isn't equal to
+the category code of the same character in the call, \TeX\ won't consider
+the characters as matching.
+This effect can produce mysterious results because it
+\emph{looks} as though the pattern should match.
+For example, if you've defined a macro:
+\csdisplay
+\def\eurodate#1/#2/#3{#2.#1.#3}
+|
+then the slash character must have the same category code when you
+call |\eurodate| as it had when you defined |\eurodate|.
+\endolist
+If the problem arises because the troublesome character is an argument to
+a macro, then
+the usual cure is to redefine the macro as a pair
+of macros |\mstart| and |\mfinish|, where
+|\mstart| is to be called before the argument text
+and |\mfinish| is to be called after it.
+|\mstart| then sets up the category codes and |\mfinish| undoes the change,
+perhaps just by ending a group.
+\eix^^{category codes//changing}
+
+
+\section Making macro files more readable
+
+\null
+\bix^^{macros//making readable}
+You can make a file of macros more readable by
+setting the category codes of space to $9$ (ignored
+character) and ^|\endlinechar| \ctsref{\endlinechar} to $-1$
+at the beginning of the file.
+Then you can use spaces and ends of line freely in the
+macro definitions without getting
+unwanted spaces when you call the macros.
+The ignored characters won't generate spaces, but they'll still
+act as terminators for control sequences.
+If you really do want a space, you can still get it with the ^|\space|
+command \ctsref\space.
+
+Of course you'll need to restore the category codes of space and end of line
+to their normal values ($10$ and $5$, respectively) at the end of the file.
+You can do this either by enclosing the entire file in a group or by
+restoring the values explicitly. If you choose to enclose the file in a group,
+then you should also set ^|\globaldefs| to $1$ so that
+all the macro definitions will be global and thus visible outside of the group.
+
+A miniature example of a macro file of this form is:
+
+\csdisplay
+\catcode `\ = 9 \endlinechar = -1
+
+\def \makeblankbox #1 #2 {
+ \hbox{\lower \dp0 \vbox{\hidehrule {#1} {#2}
+ \kern -#1 % overlap rules
+ \hbox to \wd0{\hidevrule {#1} {#2}%
+ \raise \ht0 \vbox to #1{} % vrule height
+ \lower \dp0 \vtop to #1{} % vrule depth
+ \hfil \hidevrule {#2} {#1} }
+ \kern -#1 \hidehrule {#2} {#1} } }
+
+\def\hidehrule #1 #2 {
+ \kern -#1 \hrule height#1 depth#2 \kern -#2 }
+\def\hidevrule #1 #2 {
+ \kern -#1 {\dimen0 = #1 \advance \dimen0 by #2
+ \vrule width \dimen0 } \kern -#2 }
+
+\catcode `\ = 10 \endlinechar = `\^^M
+|
+\noindent
+Without the changed category codes,
+these macros would have to be written much more compactly, using fewer
+spaces and more `|%|'s at the ends of lines.
+\eix^^{macros//making readable}
+
+\endchapter\byebye
diff --git a/Master/texmf-doc/doc/english/impatient/usebook.tex b/Master/texmf-doc/doc/english/impatient/usebook.tex
new file mode 100644
index 00000000000..e9d01c6841f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/usebook.tex
@@ -0,0 +1,243 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+% See file fdl.tex for copying conditions.
+
+\input macros
+\chapter{Using this book}
+
+\chapterdef{usebook}
+
+This book is a do-it-yourself guide and handbook for \TeX.
+Here in this section we tell you how to use the book to maximum advantage.
+
+We recommend that you first either read or skim in sequence Sections
+\chapternum{usebook} through \chapternum{examples},
+which tell you what you need to know in order to get started using \TeX.
+If you've already had experience using \TeX, it will still be helpful
+to know what kinds of information are in these sections of the book.
+Sections~\chapternum{concepts}--\chapternum{tips}, which
+occupy most of
+the rest of the book, are designed to be accessed randomly.
+Nevertheless, if you're the kind of person who likes to read reference manuals,
+you'll find that it \emph{is} possible to proceed sequentially if you're
+willing to take a lot of detours at first.
+
+In \chapterref{usingtex}, ``Using \TeX'',
+we explain how to produce a \TeX\ document from a
+\TeX{} input file.
+We also describe the conventions for preparing that input file,
+explain a little about how \TeX{} works, and tell you about additional
+resources that are available.
+Reading this section will help you understand
+the examples in the next section.
+
+\chapterref{examples}, ``Examples'',
+contains a sequence of
+examples that illustrate the use of \TeX.
+Each example consists of a page of output
+together with the input that we used to create it.
+These examples will orient you and help you
+locate the more detailed material that you'll need as you go.
+By seeing which commands are used in the input, you'll know
+where to look for more detailed information on how to achieve
+the effects shown in the output.
+The
+examples can also serve as models for simple documents, although we must
+caution you that
+because we've tried to pack a variety of \TeX\ commands into a small
+number of pages,
+the examples are not necessarily illustrations of good or complete
+document~design.
+
+As you read the explanation of a command, you may encounter
+some unfamiliar technical terms.
+In \chapterref{concepts}, ``Concepts'',
+we define and explain these terms.
+We also discuss other topics that aren't covered
+elsewhere in the book.
+The inside back cover of the book contains a list of all the
+concepts and the pages where they are described.
+We suggest that you make a copy of this list and keep it nearby
+so that you'll be able to identify and look up an unfamiliar
+concept immediately.
+
+\TeX's commands are its primary vocabulary,
+and the largest part of this book is
+devoted to explaining them. In Sections~\chapternum{paras}
+through~\chapternum{general} we describe the commands.
+You'll find general information about the command descriptions
+on \xrefpg{cmddesc}.
+The command descriptions are arranged
+functionally, rather like a thesaurus, so if you know what you want to
+do but you don't know which command does it for you, you can use the
+table of contents to guide you to the right group of commands.
+Commands that we think are both particularly useful and easy to understand
+are indicated with a pointing~hand~(\hand).
+
+\chapterref{capsule}, ``Capsule summary of commands'', is a
+specialized index that complements the more complete descriptions
+in Sections~\chapternum{paras}--\chapternum{general}.
+It lists \TeX's commands
+alphabetically, with a brief explanation of each command
+and a reference to the page
+where it is described more completely. The capsule summary
+will help you when you just want a quick reminder of what a command
+does.
+
+\TeX\ is a complex program that occasionally works its will in
+mysterious ways.
+In \chapterref{tips}, ``Tips and techniques'',
+we provide advice on solving a variety of specific
+problems that you may encounter from time to time.
+And if you're stumped by
+\TeX's error messages, you'll find succor in \chapterref{errors},
+``Making sense of error messages''.
+
+The gray tabs on the side of the book will help you locate parts of the
+book quickly. They divide the book into the following major parts:
+\olist
+\li general explanations and examples
+\li concepts
+\li descriptions of commands (five shorter tabs)
+\li advice, error messages, and the |eplain.tex| macros
+\li capsule summary of commands
+\li index
+\endolist
+
+In many places we have provided page references to
+^{\texbook} (see \xrefpg{resources} for a citation).
+These references apply to the seventeenth edition of \texbook.
+For other editions, some references may be off by a page or two.
+
+
+\section Syntactic conventions
+
+In any book about preparing input for a computer,
+it's necessary to indicate clearly the literal characters that should be typed
+and to distinguish those characters from the explanatory text.
+We use the Computer Modern typewriter font for {\tt literal input
+like this}, and also for the names of \TeX{} commands.
+When there's any possibility of confusion, we enclose \TeX\
+input in single quotation marks, `{\tt like this}'.
+However, we occasionally use parentheses when we're indicating single
+characters such as (|`|) (you can see why).
+
+For the sake of your eyes we usually just put spaces
+where you should put spaces. In some places where
+we need to emphasize the space, however,
+we use a `\visiblespace' character
+{\catcode `\ =\other\pix^^| |}%
+to indicate it.
+Naturally enough, this character is called a \emph{visible space}.
+\pix^^{spaces//visible}
+
+
+\section Descriptions of the commands
+
+\xrdef{cmddesc}
+Sections~\chapternum{paras}--\chapternum{general} contain
+a description of what nearly every \TeX\ command does. ^^{commands}
+Both the primitive commands ^^{primitive//command}
+and those of ^{\plainTeX} are covered.
+The primitive commands are those built into the \TeX\ computer program, while
+the \plainTeX{} commands are defined in a standard file of
+auxiliary definitions (see \xref\plainTeX).
+The only commands we've omitted are those that are used purely locally
+in the definition of \plainTeX\ (\knuth{Appendix~B}).
+The commands are organized as follows:
+\ulist\compact
+\li ``Commands for composing paragraphs'', \chapterref{paras},
+deal with characters, words, lines, and entire paragraphs.
+\li ``Commands for composing pages'', \chapterref{pages},
+deal with pages, their components, and the output routine.
+\li ``Commands for horizontal and vertical modes'', \chapterref{hvmodes},
+have corresponding or identical
+forms for both horizontal modes (paragraphs and hboxes) and vertical
+modes (pages and vboxes).
+These commands provide boxes, spaces, rules, leaders,
+and alignments.
+\li ``Commands for composing math formulas'', \chapterref{math},
+provide capabilities for constructing math formulas.
+\li ``Commands for general operations'', \chapterref{general},
+provide
+\TeX's programming features and
+everything else that doesn't fit into any of the other sections.
+\endulist
+You should think of these categories as being suggestive rather than
+rigorous, because the commands don't really fit neatly into these
+(or any other) categories.
+
+Within each section, the descriptions of the commands are organized
+by function. When several commands are closely related, they are described as
+a group; otherwise, each command has its own explanation.
+The description of each command
+includes one or more examples and the output
+produced by each example when examples are appropriate (for
+some commands they aren't).
+When you are looking at a subsection containing functionally related
+commands, be sure to check the end of a subsection for a ``see also''
+item that refers you to related commands that are described elsewhere.
+
+Some commands are closely related to certain concepts.
+For instance, the |\halign| and |\valign| commands are related to
+``alignment'', the |\def|
+command is related to ``macro'',
+and the |\hbox| and |\vbox| commands are related to ``box''.
+In these cases we've usually given a bare-bones des\-crip\-tion of the
+commands themselves and explained the underlying ideas
+in the concept.
+
+The examples associated with the commands have been typeset with
+^|\parindent|, the paragraph indentation, set to zero so that
+paragraphs are normally unindented.
+This convention makes the examples easier to read.
+In those examples where the paragraph indentation is essential,
+we've set it explicitly to a nonzero value.
+
+The pointing hand in front of a command or a group of commands indicates
+that we judged this command or group of commands to be particularly useful
+and easy to understand.
+
+Many commands expect ^{arguments} of one kind or another
+(\xref{arg1}). The arguments of
+a command give \TeX\ additional information that it needs in order to
+carry out the command. Each argument is indicated by an italicized
+term in angle brackets that indicates what kind of argument it~is:
+
+\display{%
+\halign{\<#>\quad&#\hfil\cr
+argument&a single token or some text enclosed in braces\cr
+charcode&a character code, i.e., an integer between $0$ and $255$\cr
+dimen&a dimension, i.e., a length\cr
+glue&glue (with optional stretch and shrink)\cr
+number&an optionally signed integer (whole number)\cr
+register&a register number between $0$ and $255$\cr
+}}
+^^{\<dimen>}
+^^{\<argument>}
+^^{\<charcode>}
+^^{\<glue>}
+^^{\<number>}
+^^{\<register>}
+
+\noindent
+All of these terms are explained in more detail in \chapterref{concepts}.
+In addition, we sometimes use terms such as \<token list> that are either
+self-explanatory or explained in the description of the command.
+Some commands have special formats that require either braces or
+particular words.
+These are set in the same bold font that we use
+for the command headings.
+
+Some commands are parameters (\xref{introparms}) or table entries.
+^^{parameters//as commands}
+This is indicated in the command's listing.
+You can either use a parameter as an argument or assign a value to it.
+The same holds for table entries.
+We use the term ``parameter'' to refer to entities such as |\pageno|
+that are actually registers but behave just like parameters.
+^^{registers//parameters as}
+
+
+\endchapter
+\byebye
diff --git a/Master/texmf-doc/doc/english/impatient/usermacs.tex b/Master/texmf-doc/doc/english/impatient/usermacs.tex
new file mode 100644
index 00000000000..71d8d64bc26
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/usermacs.tex
@@ -0,0 +1,1168 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+% See file fdl.tex for copying conditions.
+
+\input macros
+\chapter{A compendium \linebreak of useful macros}
+
+\chapterdef{eplain}
+
+This section describes |eplain.tex|, a collection of macros and other
+definitions that extend plain \TeX.
+\bix^^|eplain.tex|
+The descriptions of the various macros explain their purposes,
+but usually do not explain how they
+work or provide explicit details on
+how to use them. That information is contained in the source files for
+|eplain.tex| and in the documentation that comes with it.
+See \headcit{Resources}{resources} for how to obtain |eplain.tex|.
+
+
+\section{Preliminaries}
+
+We start with some macros for changing category codes and convenient
+definitions for two of the commonly used ones.
+^^{category codes//useful definitions for}
+
+\pix^^|\makeactive|
+\pix^^|\letter|
+\pix^^|\other|
+\pix^^|\uncatcodespecials|
+
+\csdisplay
+\def\makeactive#1{\catcode`#1 = \active \ignorespaces}%
+\chardef\letter = 11 \chardef\other = 12
+\def\uncatcodespecials{%
+ \def\do##1{\catcode`##1 = \other}%
+ \dospecials}% Defined in plain.
+|
+
+In order to define `|^^M|' as an active character, you need to encase
+the definition in a group and invoke some extra machinery.
+\ttidxref{^^M}
+The \pix^|\letreturn| macro lets you define `|^^M|' without that
+extra machinery (which you can see in the definition below).
+
+\csdisplay
+{\makeactive\^^M \long\gdef\letreturn#1{\let^^M = #1}}%
+|
+
+These macros consume one, two, or three arguments.
+
+\pix^^|\gobble|
+\pix^^|\gobbletwo|
+\pix^^|\gobblethree|
+\csdisplay
+\def\gobble#1{}\def\gobbletwo#1#2{}%
+\def\gobblethree#1#2#3{}%
+|
+
+Now we establish some conventions for reading the rest of the file.
+Within the file we allow ``private'' control sequences that contain
+`|@|' in their names.
+These control sequences aren't accessible outside of this file (unless
+you change the category code of `|@|' again).
+\xrdef{eplainconv}
+
+\csdisplay
+\catcode`@ = \letter % Allow control sequences with @.
+\let\@plainwlog = \wlog % Don't log register allocations.
+\let\wlog = \gobble
+\newlinechar = `^^J
+|
+
+The next two macros provide convenient forms of diagnostic output.
+\pix^|\loggingall| turns on all tracing, but causes the trace
+output to appear only in the log file and not at your terminal.
+\pix^|\tracingboxes| causes boxes to be displayed completely when
+they're traced. (\TeX\ normally shows only three levels of boxing
+and five items within each box.)
+
+
+\csdisplay
+\def\loggingall{\tracingcommands\tw@\tracingstats\tw@
+ \tracingpages\@ne\tracingoutput\@ne
+ \tracinglostchars\@ne\tracingmacros\tw@
+ \tracingparagraphs\@ne\tracingrestores\@ne
+ \showboxbreadth\maxdimen\showboxdepth\maxdimen}%
+\def\tracingboxes{\showboxbreadth = \maxdimen
+ \showboxdepth = \maxdimen}%
+|
+
+
+The default thickness of rules is $0.4$\pt.
+You can produce rules of any default thickness you choose by redefining
+|\vruledefaultwidth|, |\hruledefaultheight|, and |\hruledefaultdepth|
+and then using
+\pix^^|\ehrule|
+|\eh!-rule|
+and \pix^|\evrule|
+instead of |\hrule| and |\vrule|. (The `e' stands for
+``eplain''.)
+^^{rules//thickness of}
+If you give an explicit
+dimension (e.g., |\ehrule height 16pt|), \TeX\ will use it.
+
+\csdisplay
+\newdimen\hruledefaultheight \hruledefaultheight = 0.4pt
+\newdimen\hruledefaultdepth \hruledefaultdepth = 0.0pt
+\newdimen\vruledefaultwidth \vruledefaultwidth = 0.4pt
+\def\ehrule{\hrule height\hruledefaultheight
+ depth\hruledefaultdepth}%
+\def\evrule{\vrule width\vruledefaultwidth}%
+|
+
+The |\%| convention for writing a `|%|' character doesn't work when you
+want to include that character in the token list of |\write|.
+^^|\write//writing \b\tt\%\e\ with|
+^^|%//writing out|
+You can use ^|\percentchar| to achieve this.
+We also redefine ^|^^L| to be nonouter so that you can use it in a
+macro definition or argument.
+
+\csdisplay
+{\catcode`\% = \other \gdef\percentchar{%}}%
+ \def^^L{\par
+}%
+|
+
+\pix^|\tokstostring| converts its argument into a list of ^{character
+tokens}.
+It uses only expansions that are handled in \TeX's gullet.
+This property is necessary
+for it to work with |\edef|. It is used by the cross-referencing
+macros (\xref{xrefs}).
+
+In order to split the argument up at spaces, we have to use two
+subsidiary macros. |\@ttsA| finds the spaces, and |\@ttsB| handles a
+token sequence without any spaces. Each space is replaced by the
+expansion of \pix^|\spacesub|.
+
+\csdisplay
+\def\tokstostring#1{\@ttsA#1 \ttsmarkA}%
+\def\@ttsA#1 #2\ttsmarkA{\ifempty{#1}\else
+ \@ttsB #1\@ttsmarkB
+ \ifempty{#2}\else
+ \spacesub\@ttsA#2\ttsmarkA\fi\fi}%
+\def\@ttsB#1{\ifx #1\@ttsmarkB\else
+ \string #1%
+ \expandafter\@ttsB\fi}%
+\def\@ttsmarkB{\@ttsmarkB}% should never be expanded
+\def\spacesub{+}%
+|
+
+\noindent
+\pix^|\ifempty| tests if its argument is empty.
+
+\csdisplay
+\def\ifempty#1{\@ifempty #1\@emptymarkA\@emptymarkB}%
+\def\@ifempty#1#2\@emptymarkB{\ifx #1\@emptymarkA}%
+\def\@emptymarkA{\@emptymarkA}%
+|
+
+The ^|\for| macro implements a \TeX\ version of the ^{for loop} in
+traditional programming languages. These macros come directly from
+\LaTeX.
+
+\csdisplay
+\def\for#1:=#2\do#3{\edef\@fortmp{#2}%
+ \ifx\@fortmp\empty \else
+ \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}\fi}%
+\def\@nnil{\@nil}%
+\def\@fornoop#1\@@#2#3{}%
+\def\@forloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx #4\@nnil
+ \else #5\def#4{#2} ifx #4\@nnil \else
+ #5\@iforloop #3\@@#4{#5}\fi\fi}%
+\def\@iforloop#1,#2\@@#3#4{\def#3{#1}\ifx #3\@nnil
+ \let\@nextwhile=\@fornoop \else #4\relax
+ \let\@nextwhile=\@iforloop\fi
+ \@nextwhile#2\@@#3{#4}}%
+|
+
+\pix^|\obeywhitespace| is useful for reproducing line breaks, blank lines,
+and spaces in your input. It combines the effects of |\obey!-lines| and
+|\obey!-spaces|,
+^^|\obeylines| ^^|\obeyspaces|
+and also causes spaces at the start of a line to
+be printed. Tab characters are not affected by this; they still produce
+normal glue.
+\xrdef{ewhitesp}
+^^{space characters}
+^^|\fontdimen|
+^^|\font|
+^^|\letreturn|
+
+\csdisplay
+\def\alwaysspace{\hglue\fontdimen2\the\font \relax}%
+{\makeactive\^^M \makeactive\ %
+\gdef\obeywhitespace{%
+\makeactive\^^M\def^^M{\par\indent}%
+\aftergroup\@removebox% Kill extra paragraph at end.
+\makeactive\ \let =\alwaysspace}}%
+\def\@removebox{\setbox0=\lastbox}
+|
+
+\pix^|\frac| is a good way to print fractions in text when you don't
+want to use |\over| and
+``1/2'' just doesn't look right. This macro is the answer to
+\knuth{Exercise~11.6}.^^{fractions//slashed form}
+
+\csdisplay
+\def\frac#1/#2{\leavevmode
+ \kern.1em \raise .5ex \hbox{\the\scriptfont0 #1}%
+ \kern-.1em $/$%
+ \kern-.15em \lower .25ex \hbox{\the\scriptfont0 #2}}%
+|
+
+The following macros produce logos that are useful in the \TeX\ world.
+The \AMSTeX\ logo is from \knuth{page~420}. The \LaTeX\ logo is
+slightly modified from the one in |latex.tex| (we use a different font
+for the `A'); similarly, the \BibTeX\ logo uses |\sevenrm| instead of a
+true caps-and-small-caps font. The |.mf| source file for the \MF\ logo
+is given in the \MF\ manual:
+\smallskip
+{\narrower\noindent
+^{Knuth, Donald E.},{\sl The {\logosl METAFONT}book}.
+ Reading, Mass.: Addison-Wesley, 1986.\par}
+\smallskip
+\pix^^|\LaTeX|
+\pix^^|\AMSTeX|
+\pix^^|\BibTeX|
+\pix^^|\MF|
+
+\csdisplay
+\def\LaTeX{L\kern-.26em \raise.6ex\hbox{\fiverm A}%
+ \kern-.15em TeX}%
+\def\AMSTeX{$\cal A\kern-.1667em \lower.5ex\hbox{$\cal M$}%
+ \kern-.125em S$-\TeX}%
+\def\BibTeX{{\rm B\kern-.05em {\sevenrm I\kern-.025em B}%
+ \kern-.08em T\kern-.1667em \lower.7ex\hbox{E}%
+ \kern-.125emX}}%
+\font\mflogo = logo10
+\def\MF{{\mflogo META}{\tenrm \-}{\mflogo FONT}}%
+|
+
+The next two macros produce boxes. \pix^|\blackbox| produces a ``square
+bullet'', used in the list macros (\xref{listmacs}).
+\pix^|\makeblankbox| (from \knuth{page~311}) produces an unfilled
+rectangle, with the thickness of the border rules given by the
+arguments.
+
+\csdisplay
+\def\blackbox{\vrule height .8ex width .6ex depth -.2ex}%
+\def\makeblankbox#1#2{%
+ \hbox{\lower\dp0\vbox{\hidehrule{#1}{#2}%
+ \kern -#1% overlap rules
+ \hbox to \wd0{\hidevrule{#1}{#2}%
+ \raise\ht0\vbox to #1{}% vrule height
+ \lower\dp0\vtop to #1{}% vrule depth
+ \hfil\hidevrule{#2}{#1}}%
+ \kern-#1\hidehrule{#2}{#1}}}}%
+\def\hidehrule#1#2{\kern-#1\hrule height#1 depth#2
+ \kern-#2}%
+\def\hidevrule#1#2{\kern-#1{\dimen0 = #1
+ \advance\dimen0 by #2 \vrule width\dimen0}\kern-#2}%
+|
+
+\pix^|\numbername| produces the written-out form of a number. (If the
+number is greater than ten, the macro just reproduces the numerals
+of its argument.)
+
+\csdisplay
+\def\numbername#1{\ifcase#1%
+ zero\or one\or two\or three\or four\or five%
+ \or six\or seven\or eight\or nine\or ten\or #1\fi}%
+|
+
+\pix^|\testfileexistence| determines whether a file |\jobname.#1| is
+non\-empty and sets |\if!-fileexists| appropriately.
+^^{files//testing for existence of}
+The file name in the argument need not end in a space token since
+the macro provides the space token.
+
+\csdisplay
+\newif\iffileexists
+\def\testfileexistence#1{\begingroup
+ \immediate\openin0 = \jobname.#1\space
+ \ifeof 0\global\fileexistsfalse
+ \else \global\fileexiststrue\fi
+ \immediate\closein0
+ \endgroup}%
+|
+
+
+\section Displays
+
+By default, \TeX\ centers displayed material (the material between
+|$$|'s). ^^{displays, formatting} \pix^|\leftdisplays| causes displays
+to be left-justified by default. You can return to centered displays
+with \pix^|\centereddisplays|.
+
+The macros here are more general than they need to be just for doing
+left-justified displays. For every display,
+\pix^|\ifeqno| will be true if an |\eqno| occurred in the display.
+\pix^|\ifleqno| will be true if an |\leqno| occurred. If either
+kind of equation number occurred, \pix^|\eqn| produces the text of the
+equation number. \pix^|\eq| always produces the text of the
+equation itself.
+
+These macros are based on the code on \knuth{page~376}.
+
+\csdisplay
+\newif\ifeqno \newif\ifleqno
+\newtoks\@eqtoks \newtoks\@eqnotoks
+\def\eq{\the\@eqtoks}\def\eqn{\the\@eqnotoks}%
+\def\displaysetup#1$${%
+ \@displaytest#1\eqno\eqno\@displaytest}%
+\def\@displaytest#1\eqno#2\eqno#3\@displaytest{%
+ \if !#3!% No \eqno, check for \leqno:
+ \@ldisplaytest#1\leqno\leqno\@ldisplaytest
+ \else
+ \eqnotrue \leqnofalse % Have \eqno, not \leqno.
+ \@eqnotoks = {#2}\@eqtoks = {#1}%
+ \fi
+ \generaldisplay$$}%
+\def\@ldisplaytest#1\leqno#2\leqno#3\@ldisplaytest{%
+ \@eqtoks = {#1}%
+ \if !#3!%
+ \eqnofalse % No \leqno; we're done.
+ \else
+ \eqnotrue \leqnotrue % Have \leqno.
+ \@eqnotoks = {#2}%
+ \fi}%
+|
+
+You can format displays differently by defining your own macro,
+analogous to \pix^|\leftdisplays|.
+The macro definition must
+place a call on |\display!-setup| in |\every!-display| ^^|\everydisplay|
+so as to ensure
+that |\dis!-play!-setup| ^^|\displaysetup| is called at the start of
+every display. The macro definition must also include a definition of
+^|\generaldisplay|.
+
+\csdisplay
+\newtoks\previouseverydisplay
+\def\leftdisplays{%
+ \previouseverydisplay = \everydisplay
+ \everydisplay =
+ {\the\previouseverydisplay \displaysetup}%
+ \def\generaldisplay{%
+ \leftline{%
+ \strut \indent \hskip\leftskip
+ \dimen0 = \parindent
+ \advance\dimen0 by \leftskip
+ \advance\displaywidth by -\dimen0
+ \@redefinealignmentdisplays
+ \ifeqno \ifleqno
+ \kern-\dimen0
+ \rlap{$\displaystyle\eqn$}%
+ \kern\dimen0
+ \fi\fi
+ $\displaystyle{\eq}$%
+ \ifeqno \ifleqno\else
+ \hfill $\displaystyle{\eqn}$%
+ \fi\fi}}}%
+\def\centereddisplays{\let\displaysetup = \relax}%
+|
+
+\filbreak
+\pix^|\leftdisplays| must go to some pains to make sure that
+|\dis!-play!-lines|, ^^|\displaylines|
+^|\eqalignno|, and ^|\leqalignno| still work properly.
+|\eq| is typeset in math mode,
+and |\halign| is illegal in math mode.
+^^|\halign//illegal in math mode|
+We use ^|\vcenter| to change the context so that |\halign| becomes
+legal again. We also remove the |\hfil| commands at the left of the template
+to obtain the flush left formatting. Other than those changes, the macros
+are the same as in |plain.tex|.
+
+\csdisplay
+\def\@redefinealignmentdisplays{%
+ \def\displaylines##1{\displ@y
+ \vcenter{\halign{\hbox to\displaywidth{$\@lign
+ \displaystyle####\hfil$}\crcr##1\crcr}}}%
+ \def\eqalignno##1{\displ@y
+ \vcenter{\halign to\displaywidth{%
+ $\@lign\displaystyle{####}$\tabskip\z@skip
+ &$\@lign\displaystyle{{}####}$
+ \hfil\tabskip\centering
+ &\llap{$\@lign####$}\tabskip\z@skip\crcr
+ ##1\crcr}}}%
+ \def\leqalignno##1{\displ@y
+ \vcenter{\halign to\displaywidth{%
+ $\@lign\displaystyle{####}$\tabskip\z@skip
+ &$\@lign\displaystyle{{}####}
+ $\hfil\tabskip\centering
+ &\kern-\displaywidth
+ \rlap{\kern-\parindent\kern-\leftskip$
+ \@lign####$}%
+ \tabskip\displaywidth\crcr
+ ##1\crcr}}}}%
+|
+
+
+\section Time of day
+
+When \TeX\ starts up, it sets the values of the
+^|\time|, ^|\day|, ^|\month|, and ^|\year| parameters.
+^^{time of day}^^{date}
+\pix^|\monthname|
+produces the name of the month, abbreviated to three letters.
+\pix^|\timestring| produces the current time, as in ``1:14\thinspace
+p.m.''. \pix^|\timestamp| produces the text of the complete date, as
+in ``23 Apr 1964\quad 1:14\thinspace p.m.''.
+
+\csdisplay
+\def\monthname{%
+ \ifcase\month
+ \or Jan\or Feb\or Mar\or Apr\or May\or Jun%
+ \or Jul\or Aug\or Sep\or Oct\or Nov\or Dec%
+ \fi}%
+\def\timestring{\begingroup
+ \count0 = \time \divide\count0 by 60
+ \count2 = \count0 % The hour.
+ \count4 = \time \multiply\count0 by 60
+ \advance\count4 by -\count0 % The minute.
+ \ifnum\count4<10 \toks1 = {0}% Get a leading zero.
+ \else \toks1 = {}%
+ \fi
+ \ifnum\count2<12 \toks0 = {a.m.}%
+ \else \toks0 = {p.m.}%
+ \advance\count2 by -12
+ \fi
+ \ifnum\count2=0 \count2 = 12 \fi % Make midnight `12'.
+ \number\count2:\the\toks1 \number\count4
+ \thinspace \the\toks0
+\endgroup}%
+\def\timestamp{\number\day\space\monthname\space
+ \number\year\quad\timestring}%
+|
+
+
+\section Lists
+
+\null
+\xrdef{listmacs}
+\bix^^{itemized lists}
+\bix^^{enumerations}
+\pix^|\numberedlist| produces numbered lists; |\endnumberedlist| ends
+them.
+\pix^|\unorderedlist| is analogous.
+For either of these, items inside the lists begin
+with \pix^|\li| (``list item''). You can put \pix^|\listcompact|
+at the beginning of a list if
+you don't want any additional space between the items of that list.
+Lists can be nested arbitrarily.
+
+You can control the spacing between the items more generally by
+assigning values to the registers listed below. If the items in
+your lists tend to be long, you might want to make |\interitemskip|
+nonzero.
+The left indentation of each list item is given by |\par!-indent| plus
+|\list!-left!-indent|; the right indentation of each list item
+is given by |\list!-right!-indent|.
+
+\csdisplay
+\newskip\abovelistskip \abovelistskip = .5\baselineskip
+\newskip\interitemskip \interitemskip = 0pt
+\newskip\belowlistskip \belowlistskip = .5\baselineskip
+\newdimen\listleftindent \listleftindent = \parindent
+\newdimen\listrightindent \listrightindent = 0pt
+\def\listcompact{\interitemskip = 0pt \relax}%
+|
+
+Both numbered and unnumbered lists use the macros that follow.
+We don't change |\parindent|, since many existing macros, e.g.,
+|\footnote|, depend on |\parindent|.
+We must account for the
+possibility that items are more than one paragraph long. In this case, all
+paragraphs after the first will be indented.
+We use
+|\leftskip| and |\rightskip| to indent the list items.
+Indentation of displays is accounted for by changes to |\every!-dis!-play|.
+^^|\everydisplay|
+
+\csdisplay
+\newdimen\@listindent
+\def\beginlist{%
+ \@listindent = \parindent
+ \advance\@listindent by \listleftindent
+ \everydisplay = \expandafter{\the\everydisplay
+ % Don't lose user's \everydisplay:
+ \advance\displayindent by \@listindent
+ \advance\displaywidth by -\@listindent
+ \advance\displaywidth by -\listrightindent}%
+ \nobreak\vskip\abovelistskip
+ \parskip = 0pt
+ % \leftskip shifts nested lists to the right on the page.
+ \advance\leftskip by \@listindent
+ \advance\rightskip by \listrightindent}%
+\def\printitem{\par\noindent
+ \llap{\hskip-\listleftindent \marker \enspace}}%
+\def\endlist{\vskip\belowlistskip}%
+|
+
+\noindent
+You can change the way the item labels are typeset by
+redefining the |\numbered!-marker| macro.
+\pix^^|\numberedmarker|
+
+\csdisplay
+\newcount\numberedlistdepth \newcount\itemnumber
+\newcount\itemletter
+\def\numberedmarker{%
+ \ifcase\numberedlistdepth
+ (impossible)%
+ \or \itemnumberout)%
+ \or \itemletterout)%
+ \else *%
+ \fi}%
+|
+
+\noindent Here are the definitions of |\numberedlist| and
+|\unorderedlist|.
+Both definitions have the same structure.
+
+\csdisplay
+\def\numberedlist{\environment{@numbered-list}%
+ \advance\numberedlistdepth by 1
+ \itemnumber = 1 \itemletter = `a
+ \beginlist \let\marker = \numberedmarker
+ \def\li{%
+ \ifnum\itemnumber=1\else \vskip\interitemskip \fi
+ \printitem
+ \advance\itemnumber by 1 \advance\itemletter by 1
+ }}%
+\def\itemnumberout{\number\itemnumber}%
+\def\itemletterout{\char\itemletter}%
+\def\endnumberedlist{\par
+ \endenvironment{@numbered-list}\endlist}%
+!bigskip
+\newcount\unorderedlistdepth
+\def\unorderedmarker{%
+ \ifcase\unorderedlistdepth
+ (impossible)%
+ \or \blackbox
+ \or ---%
+ \else *%
+ \fi}%
+\def\unorderedlist{\environment{@unordered-list}%
+ \advance\unorderedlistdepth by 1
+ \beginlist \itemnumber = 1
+ \let\marker = \unorderedmarker
+ \def\li{%
+ \ifnum\itemnumber=1\else \vskip\interitemskip \fi
+ \printitem \advance\itemnumber by 1
+ }}%
+\def\endunorderedlist{\par
+ \endenvironment{@unordered-list}\endlist}%
+|
+
+\eix^^{itemized lists}
+\eix^^{enumerations}
+
+
+\section Verbatim listing
+
+The \pix^|\listing| macro produces a verbatim listing of a specified
+file in the |\tt| font.
+It is based on the code on \knuth{page~380}.
+Tabs produce a fixed amount of space, and form
+feeds produce a page break. Other control characters produce whatever
+happens to be at that font position, which is generally not very useful.
+By redefining |\setup!-listing!-hook|,
+\pix^^|\setuplistinghook|
+you can take additional actions that are appropriate for your particular
+fonts and\slash or environment before the file is read in.
+
+\csdisplay
+\def\listing#1{%
+ \par \begingroup \@setuplisting \setuplistinghook
+ \input #1 \endgroup}%
+\let\setuplistinghook = \empty
+\def\@setuplisting{%
+ \uncatcodespecials
+ \obeywhitespace \makeactive\` \makeactive\^^I
+ \def^^L{\vfill\eject}\tt}%
+{\makeactive\` \gdef`{\relax\lq}}% Defeat ligatures.
+{\makeactive\^^I\gdef^^I{\hskip8\fontdimen2\tt \relax}}%
+|
+
+
+\section Tables of contents
+
+\null ^^{table of contents}
+The macro \pix^|\writetocentry| writes a macro call to the file
+|\jobname.toc|. The first argument of |\writetocentry|, e.g.,
+``chapter'', is used to compose the name of the called macro. The second
+argument is the text to appear in the table of contents entry.
+|\writetocentry| appends the page number to the macro call. For
+example:
+\csdisplay
+\writetocentry{chapter}{Introduction}
+|
+\noindent
+will produce the line:
+\csdisplay
+\tocchapterentry{Introduction}{2}
+|
+\noindent in the |.toc| file, indicating
+that `Introduction' started on page 2.
+
+You can use |\writenumberedtocentry| to provide a third parameter, such
+as a chapter number. For example:
+\csdisplay
+\writenumberedtocentry{chapter}{The second chapter}{2}
+|
+\noindent will write a line:
+\csdisplay
+\tocchapterentry{The second chapter}{2}{14}
+|
+\noindent
+You can also |\write| to |\tocfile| yourself.
+
+\csdisplay
+\newwrite\tocfile \newif\iftocfileopened
+\def\opentocfile{\iftocfileopened\else
+ \tocfileopenedtrue
+ \immediate\openout\tocfile = \jobname.toc
+\fi}%
+\def\writenumberedtocentry#1#2#3{\ifrewritetocfile
+ \opentocfile
+ \write\tocfile{%
+ \expandafter\noexpand \csname toc#1entry\endcsname
+ {#2}{#3}{\folio}}%
+\ignorespaces\fi}%
+\def\writenumberedtocentry#1#2#3{\ifrewritetocfile
+ \opentocfile
+ \write\tocfile{%
+ \expandafter\noexpand \csname toc#1entry\endcsname
+ {#2}{#3}{\folio}}%
+\ignorespaces\fi}%
+|
+
+To produce a table of contents, read the |.toc| file with
+\pix^|\readtocfile|. You should call |\read!-tocfile| before the first
+|\write!-toc!-entry|. When you're processing the table of contents
+without regenerating it, you should not rewrite
+the |.toc| file---if you do, its contents will be lost.
+The command
+|\rewrite!-tocfile!-false| will prevent the rewrite.
+
+\csdisplay
+\newif\ifrewritetocfile \rewritetocfiletrue
+\def\readtocfile{\testfileexistence{toc}%
+ \iffileexists
+ \input \jobname.toc
+ \ifrewritetocfile \opentocfile \fi
+ \fi}%
+|
+
+Here are some definitions of possible |\toc|\dots|entry| macros. These
+definitions are meant only as examples---running leaders across the line
+is usually not the best way to typeset a table of contents.
+
+\csdisplay
+\def\tocchapterentry#1#2{\line{\bf #1 \dotfill\ #2}}%
+\def\tocsectionentry#1#2{%
+ \line{\quad\sl #1 \dotfill\ \rm #2}}%
+\def\tocsubsectionentry#1#2{%
+ \line{\qquad\rm #1 \dotfill\ #2}}%
+|
+
+
+\section Cross-references
+
+\null ^^{cross-references}
+\xrdef{xrefs}
+The macros that follow provide symbolic
+cross-referencing, so that you can refer to something in another part of
+a document by name instead of by its actual page number.
+\pix^|\xrdef||{foo}| defines a label |foo| to be the current page
+number, and \pix^|\xrefn||{foo}| produces that page number, e.g., $77$.
+More often you'll want to say something like ``see p.\thinspace77'', so
+\pix^|\xref||{foo}| produces ``p.\thinspace 77''. If |foo| is not
+defined, a warning message will be given. |\xrefwarningfalse|
+suppresses the warning.
+
+These macros provide no protection against duplicate definitions. You can
+check for duplicate definitions by sorting the cross-reference file and
+checking, either mechanically or by eye, for adjacent definitions of
+the same symbol.
+
+\csdisplay
+\newif\ifxrefwarning \xrefwarningtrue
+\def\xrdef#1{\begingroup
+ \xrlabel{#1}%
+ \edef\@wr{\@writexrdef{\the\@xrlabeltoks}}%
+ \@wr
+ \endgroup \ignorespaces}%
+\def\@writexrdef#1{\write\reffile{%
+ \string\gdef
+ \expandafter\string\csname#1\endcsname
+ {\noexpand\folio}\percentchar}}%
+\def\xrefnumber#1{%
+ \xrlabel{#1}%
+ % \@xrlabeltoks now has the control sequence name.
+ \toks0 =
+ \expandafter{\csname\the\@xrlabeltoks\endcsname}%
+ \expandafter \ifx\the\toks0\relax
+ \ifxrefwarning \message{Undefined label
+ `\tokstostring{#1}'.}\fi
+ {\let\spacesub = \space
+ \expandafter\xdef\the\toks0
+ {`{\tt \tokstostring{#1}}'}}\fi
+ \the\toks0}%
+\def\xref#1{p.\thinspace\xrefnumber{#1}}%
+\def\xrefn#1{\xrefnumber{#1}}%
+|
+
+This macro turns a label into a list of character tokens in the token
+register |\labeltoks|. A label can include blanks and control sequences in
+it as well as normal characters, but it can't include braces.
+
+\csdisplay
+\newtoks\@xrlabeltoks
+\def\xrlabel#1{\begingroup
+ \escapechar = `\_ \edef\tts{\tokstostring{#1_}}%
+ \global\@xrlabeltoks = \expandafter{\tts}%
+ \endgroup}%
+|
+
+It takes two passes to get the cross-references right, since the
+definitions are written out to the auxiliary file |\jobname.aux|.
+\pix^|\readreffile| reads them back in. If you don't issue this command
+before the first definition, you'll lose all the definitions from the
+previous run.
+
+\csdisplay
+\newwrite\reffile \newif\ifreffileopened
+\def\openreffile{\ifreffileopened\else
+ \reffileopenedtrue
+ \immediate\openout\reffile = \jobname.aux
+ \fi}%
+\def\readreffile{%
+ \testfileexistence{aux}%
+ \iffileexists
+ \begingroup
+ \@setletters
+ \input \jobname.aux
+ \endgroup
+ \else
+ \message{No cross-reference file; I won't give you
+ warnings about undefined labels.}%
+ \xrefwarningfalse
+ \fi
+ \openreffile}%
+\def\@setletters{%
+ \catcode`_ = \letter \catcode`+ = \letter
+ \catcode`- = \letter \catcode`@ = \letter
+ \catcode`0 = \letter \catcode`1 = \letter
+ \catcode`2 = \letter \catcode`3 = \letter
+ \catcode`4 = \letter \catcode`5 = \letter
+ \catcode`6 = \letter \catcode`7 = \letter
+ \catcode`8 = \letter \catcode`9 = \letter
+ \catcode`( = \letter \catcode`) = \letter}%
+|
+
+^^{equations, labelling}
+You can give symbolic names to equations in a similar way, using
+\pix^|\eqdef| and \pix^|\eqref|. |\eqdef| inserts its own |\eqno|
+command, so it must be invoked in a place where |\eqno| is legal.
+
+\csdisplay
+\newcount\eqnumber
+\def\eqdef#1{\global\advance\eqnumber by 1
+ \expandafter\xdef
+ \csname#1eqref\endcsname{\the\eqnumber}%
+ \immediate\write\reffile{\string\def
+ \expandafter\string\csname#1eqref\endcsname
+ {\the\eqnumber}}%
+ \eqno
+ \eqprint{\the\eqnumber}}%
+|
+
+|\eqref| produces ``(equation number)''. You can handle fancier
+formatting by redefining \pix^|\eqprint|. For example, you could redefine
+it so that the equation numbers include
+the chapter number.
+
+\csdisplay
+\def\eqref#1{%
+ \expandafter \ifx \csname#1eqref\endcsname \relax
+ \ifxrefwarning \message{Undefined equation label
+ `#1'.}\fi
+ \expandafter\def\csname#1eqref\endcsname{00}%
+ \else \eqprint{\csname#1eqref\endcsname}%
+ \fi}%
+\def\eqprint#1{(#1)}%
+|
+
+
+\section Environments
+
+\null ^^{environments} These macros let you define your own named groups
+(environments) for parts of your manuscript. Like \TeX\ groups, these
+groups can be nested, and in fact their nesting can be intertwined with
+the nesting of \TeX\ groups. If the names at the beginning and end of
+an environment don't match, you'll get an error message. The macros are
+designed so that the message you get when such an error occurs will give
+you a good chance of localizing the cause of the error easily.
+
+You begin an environment with
+\pix^^|\environment|
+|\envi!-ron!-ment| |{foo}| and end it with |\endenvironment{foo}|, where
+|foo| is the name of the environment. Our macros slightly improve on
+the answer to Exercise~5.7 of \texbook, by doing some checks on
+|\begingroup| and |\endgroup| pairs, as well as making sure
+|\environment| and |\endenvironment| pairs match.
+
+\csdisplay
+\def\environment#1{\ifx\@groupname\undefined\else
+ \errhelp = \@unnamedendgrouphelp
+ \errmessage{`\@groupname' was not closed by
+ \string\endenvironment}\fi
+ \def\@groupname{#1}%
+ \begingroup
+ \let\@groupname = \undefined \ignorespaces}%
+\def\endenvironment#1{\endgroup
+ \def\@thearg{#1}%
+ \ifx\@groupname\@thearg
+ \else
+ \ifx\@groupname\undefined
+ \errhelp = \@isolatedendenvironmenthelp
+ \errmessage{Isolated
+ \string\endenvironment\space for `#1'}%
+ \else
+ \errhelp = \@mismatchedenvironmenthelp
+ \errmessage{Environment `#1' ended,
+ but `\@groupname' started}%
+ \endgroup % Probably a typo in the names.
+ \fi
+ \fi
+ \let\@groupname = \undefined \ignorespaces}%
+|
+
+We also define help messages for each of the errors above.
+^^|\newhelp|
+
+\csdisplay
+\newhelp\@unnamedendgrouphelp{%
+ Most likely, you just forgot an^^J%
+ \string\endenvironment.
+ Maybe you should try inserting another^^J%
+ \string\endgroup to recover.}%
+\newhelp\@isolatedendenvironmenthelp{%
+ You ended an environment X, but^^J%
+ no \string\environment\space to start it
+ is anywhere in sight.^^J%
+ You might also be at an
+ \string\endenvironment\space that would match^^J%
+ a \string\begingroup, i.e., you forgot an
+ \string\endgroup.}%
+\newhelp\@mismatchedenvironmenthelp{%
+ You started an environment X, but^^J%
+ you ended it with Y. Maybe you made a typo
+ in one or the other^^J%
+ of the names.}%
+|
+
+Some environments should not be allowed to occur within
+another environment. Let's call these environments
+``outer environments''. |\check!-env| checks that no outer environment
+is currently in effect and complains if one is. To use |\check!-env|, you
+must issue the command |\environment!-true| at the beginning of every
+outer environment.
+
+\csdisplay
+\newif\ifenvironment
+\def\checkenv{%
+ \ifenvironment
+ \errhelp = \@interwovenenvhelp
+ \errmessage{Interwoven environments}%
+ \endgroup
+ \fi}%
+\newhelp\@interwovenenvhelp{%
+ Perhaps you forgot to end the previous^^J%
+ environment? I'm finishing off the current group,^^J%
+ hoping that will fix it.}%
+|
+
+
+\section Justification
+
+\bix^^{flush left}
+\bix^^{flush right}
+\bix^^{centered text}
+The three macros \pix^|\flushleft|, \pix^|\flushright|, and
+\xrdef{eplaincenter}
+\pix^|\center| justify the text on the following lines in the indicated way.
+The command should appear on a line by itself.
+Both the command and the text should be enclosed in a group---%
+the end of the group indicates the end of the text.
+The entire group is set as a single paragraph, with lines filled out
+on one side or another as appropriate. Blank lines are reproduced.
+
+\csdisplay
+\begingroup
+ \catcode `\^^M = \active
+ \globaldefs = 1 %
+ \def\flushleft{\beforejustify %
+ \aftergroup\@endflushleft %
+ \def^^M{\null\hfil\break}%
+ \def\@eateol^^M{}\@eateol}%
+ \def\flushright{\beforejustify %
+ \aftergroup\@endflushright %
+ \def^^M{\break\null\hfil}%
+ \def\@eateol^^M{\hfil\null}\@eateol}%
+ \def\center {\beforejustify %
+ \aftergroup\@endcenter %
+ \def^^M{\hfil\break\null\hfil}%
+ \def\@eateol^^M{\hfil\null}\@eateol}%
+\endgroup
+|
+
+The following commands are called as a result of the |\after!-group|
+^^|\aftergroup|
+in the definitions of |\flush!-left|, |\flush!-right|, and |\center|.
+They perform the necessary cleanup operations.
+
+\csdisplay
+\def\@endflushleft{\unpenalty
+ {\parfillskip = 0pt plus 1 fil\par}%
+ \ignorespaces}%
+\def\@endflushright{%
+ % Remove the \hfil\null\break we just put on.
+ \unskip \setbox0=\lastbox \unpenalty
+ % We have fil glue at the left of the line;
+ % \parfillskip shouldn't affect that.
+ {\parfillskip = 0pt \par}\ignorespaces}%
+\def\@endcenter{%
+ % Remove the \hfil\null\break we just put on.
+ \unskip \setbox0=\lastbox \unpenalty
+ % We have fil glue at the left of the line;
+ % \parfillskip must balance it.
+ {\parfillskip = 0pt plus 1fil \par}\ignorespaces}%
+\def\beforejustify{%
+ \par\noindent
+ \catcode`\^^M = \active
+ \checkenv \environmenttrue}%
+|
+
+\eix^^{flush left}
+\eix^^{flush right}
+\eix^^{centered text}
+
+
+\section Tables
+
+The \pix^|\makecolumns| macro enables you to give all the entries in a
+table without having to worry about where the columns break. For
+example, if you're typing a long alphabetical list that will be
+formatted in several columns, you usually won't know in advance where
+one column ends and the next begins. Moreover, if another item gets
+added, the column breaks will change.
+
+|\makecolumns| takes two (delimited) arguments: the total number of
+entries in the table and the number of columns in the table. For
+example, `|\makecolumns 37/3:|' specifies a three-column table whose
+entries are the next $37$ lines. You can adjust the positioning of the
+table on the page by changing |\parindent|, which determines the space
+to the left, and |\hsize|, which determines the space from the left
+margin of the page to the right of the block. You can allow a page
+break above the |\valign|
+^^|\valign//used in {\tt\\makecolumns}|
+by changing
+\pix^|\abovecolumnspenalty|.
+
+\csdisplay
+\newcount\abovecolumnspenalty
+\abovecolumnspenalty = 10000
+\newcount\@linestogo % Lines remaining to process.
+\newcount\@linestogoincolumn % Lines remaining in column.
+\newcount\@columndepth % Number of lines in a column.
+\newdimen\@columnwidth % Width of each column.
+\newtoks\crtok \crtok = {\cr}%
+\def\makecolumns#1/#2: {\par \begingroup
+ \@columndepth = #1 \advance\@columndepth by #2
+ \advance\@columndepth by -1
+ \divide \@columndepth by #2
+ \@linestogoincolumn = \@columndepth \@linestogo = #1
+ \def\@endcolumnactions{%
+ \ifnum \@linestogo<2
+ \the\crtok \egroup \endgroup \par
+ % End \valign and \makecolumns.
+ \else
+ \global\advance\@linestogo by -1
+ \ifnum\@linestogoincolumn<2
+ \global\@linestogoincolumn = \@columndepth
+ \the\crtok
+ \else &\global\advance\@linestogoincolumn by -1
+ \fi
+ \fi}%
+ \makeactive\^^M\letreturn\@endcolumnactions
+ \@columnwidth = \hsize
+ \advance\@columnwidth by -\parindent
+ \divide\@columnwidth by #2
+ \penalty\abovecolumnspenalty
+ \noindent % It's not a paragraph (usually).
+ \valign\bgroup
+ &\hbox to \@columnwidth{\strut ##\hfil}\cr
+}% The next end-of-line starts everything going.
+|
+
+
+\section Footnotes
+
+\null ^^{footnotes}
+Footnotes are most commonly typeset by using a raised number as the
+reference mark. We define the \pix^|\numberedfootnote| macro to do
+this. It also redefines ^|\vfootnote| to allow slightly more general
+formatting of footnotes than \plainTeX\ does. The dimension register
+\pix^^|\footnotemarkseparation| |\foot!-note!-mark!-sepa!-ra!-tion|
+controls the space between the footnote mark (e.g., the number) and the
+beginning of the text. The \pix^|\everyfootnote| tokens are inserted
+before producing the footnote.
+
+The \plainTeX\ definitions of |\footnote| and |\vfootnote| are
+preserved in |\@plain!-footnote| and |\@plain!-vfootnote| in case you should
+need them.
+\csdisplay
+\newcount\footnotenumber \newtoks\everyfootnote
+\newdimen\footnotemarkseparation
+\footnotemarkseparation = .5em
+\let\@plainfootnote = \footnote
+\let\@plainvfootnote = \vfootnote
+\def\vfootnote#1{\insert\footins\bgroup
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\ht\strutbox \splitmaxdepth\dp\strutbox
+ \floatingpenalty\@MM
+ \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip
+ \xspaceskip\z@skip
+ \everypar = {}%
+ \the\everyfootnote
+ \indent\llap{#1\kern\footnotemarkseparation}\footstrut
+ \futurelet\next\fo@t}%
+\def\numberedfootnote{\global\advance\footnotenumber by 1
+ \@plainfootnote{$^{\number\footnotenumber}$}}%
+|
+
+
+\section Double columns
+
+\null ^^{double columns} The |\doublecolumns| command begins
+double-column output, while the |\single!-column|
+\pix^^|\singlecolumn|
+command restores
+single-column output. You can switch back and forth between them
+on a single page.
+The glue specified by |\above!-double!-column!-skip| and
+|\below!-double!-column!-skip| is inserted before and after the
+double-column material.
+
+The approach is derived from \knuth{page~417}.
+
+\csdisplay
+\newskip\abovedoublecolumnskip
+\newskip\belowdoublecolumnskip
+\abovedoublecolumnskip = \bigskipamount
+\belowdoublecolumnskip = \bigskipamount
+\newdimen\gutter \gutter = 2pc
+\newdimen\doublecolumnhsize \doublecolumnhsize = \hsize
+\newbox\@partialpage \newdimen\singlecolumnhsize
+\newdimen\singlecolumnvsize \newtoks\previousoutput
+\def\doublecolumns{\par % Don't start in horizontal mode.
+ \previousoutput = \expandafter{\the\output}
+ \advance\doublecolumnhsize by -\gutter
+ \divide\doublecolumnhsize by 2
+ \output = {\global\setbox\@partialpage =
+ \vbox{\unvbox255\vskip\abovedoublecolumnskip}}%
+ \pagegoal = \pagetotal \break % Expands \output above.
+ \output = {\doublecolumnoutput}%
+ \singlecolumnhsize = \hsize
+ \singlecolumnvsize = \vsize
+ \hsize = \doublecolumnhsize \vsize = 2\vsize}%
+|
+
+The |\@double!-column!-split| macro does the actual splitting.
+Insertions are assumed to be single-column material. If you don't want
+this to be the case, you'll have to modify the output routine. After
+|\@double!-column!-split| has done its work, |\box255| will have the
+double-column material. The double-column material will be preceded by
+any single-column material that was typeset before |\doublecolumns| was
+invoked. |\box4| will have the material that didn't fit on the page.
+
+\csdisplay
+\def\@doublecolumnsplit{%
+ \splittopskip = \topskip \splitmaxdepth = \maxdepth
+ \dimen0 = \singlecolumnvsize
+ \advance\dimen0 by -\ht\@partialpage
+ \advance\dimen0 by -\ht\footins
+ \advance\dimen0 by -\skip\footins
+ \advance\dimen0 by -\ht\topins
+ \begingroup
+ \vbadness = 10000
+ \global\setbox1=\vsplit255 to \dimen0 \wd1=\hsize
+ \global\setbox3=\vsplit255 to \dimen0 \wd3=\hsize
+ \endgroup
+ \global\setbox4=\vbox{\unvbox255
+ \penalty\outputpenalty}%
+ \global\setbox255=\vbox{\unvbox\@partialpage
+ \hbox to \singlecolumnhsize{\box1\hfil\box3}%
+ \vfill}}%
+|
+\needspace{.5in}
+|\double!-column!-out!-put| is the real output routine. We call the old
+|\output| to do the work of actually shipping out the box.
+
+\csdisplay
+\def\doublecolumnoutput{\@doublecolumnsplit
+ \hsize = \singlecolumnhsize \vsize = \singlecolumnvsize
+ \previousoutput \unvbox4}%
+|
+
+|\singlecolumn| resumes typesetting in one column. It assumes that
+|\doublecolumns| has been called.
+
+\csdisplay
+\def\singlecolumn{\par % Don't start in horizontal mode.
+ \output = {\global\setbox1 =
+ \vbox{\unvbox255\vskip\abovedoublecolumnskip}}%
+ \pagegoal = \pagetotal \break \setbox255 = \box1
+ {\singlecolumnvsize = \ht255
+ \divide\singlecolumnvsize by 2
+ \advance\singlecolumnvsize by +\ht\@partialpage
+ \advance\singlecolumnvsize by +\ht\footins
+ \advance\singlecolumnvsize by +\skip\footins
+ \advance\singlecolumnvsize by +\ht\topins
+ \@doublecolumnsplit}%
+ \hsize = \singlecolumnhsize
+ \vsize = \singlecolumnvsize
+ \output = \expandafter{\the\previousoutput}%
+ \unvbox255}%
+|
+
+\margin{`Sensible paragraph skips' section deleted}
+
+
+\section Finishing up
+
+We now must undo the changes that we made when we started (see
+\xref{eplainconv}). We also give a version identification, which is
+subsequently available in |\fmt!-name| and |\fmt!-version|.
+
+\csdisplay
+\let\wlog = \@plainwlog \catcode`@ = \other
+\def\fmtname{eplain}%
+{\edef\plainversion{\fmtversion}%
+ \xdef\fmtversion{1.0: 15 May 1990
+ (and plain \plainversion)}%
+}%
+|
+
+\eix^^|eplain.tex|
+
+\endchapter
+\byebye
diff --git a/Master/texmf-doc/doc/english/impatient/usingtex.tex b/Master/texmf-doc/doc/english/impatient/usingtex.tex
new file mode 100644
index 00000000000..35ec5310d23
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/usingtex.tex
@@ -0,0 +1,822 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+% See file fdl.tex for copying conditions.
+
+\input macros
+\chapter{Using \TeX}
+
+\chapterdef{usingtex}
+
+% Avoid underfull box complaint about the empty paragraph
+% that precedes the first section heading.
+%
+\def\par{{\parfillskip = 0pt plus 1fil\endgraf}\let\par=\endgraf}
+\vglue-\abovesectionskip % we've skipped enough already
+\vskip0pt % Make \combineskips work.
+
+\section Turning input into ink
+
+\subsection Programs and files you need
+
+In order to produce a \TeX\ document, you'll need to run the \TeX\
+program and several related programs as well. You'll also need
+supporting files for \TeX\ and possibly for these other programs. In
+this book we can tell you about \TeX, but we can't tell you about the
+other programs and the supporting files except in very general terms
+because they depend on your local \TeX\ environment. The people who
+provide you with \TeX\ should be able to supply you with what we call
+\emph{local information}.
+\pix^^{local information}
+The local information tells you how to
+start up \TeX, how to use the related programs, and how to gain access
+to the supporting files.
+
+Input to \TeX\ consists of a file of ordinary text that you can prepare
+with a ^{text editor}. A \TeX\ input file, unlike an input file for a
+typical word processor, doesn't ordinarily contain any invisible
+^{control characters}.
+Everything that \TeX\ sees is visible to you too if you
+look at a listing of the file.
+
+Your input file may turn out to be little more than a skeleton that
+calls for other input files. \TeX\ users often organize large documents
+such as books this way. You can use the ^|\input| command (\xref\input)
+to embed one input file within another. In particular, you can use
+|\input| to incorporate files containing \emph{macro definitions}---%
+^^{macros//in auxiliary files}
+auxiliary definitions that enhance \TeX's capabilities.
+If any macro files are available at your \TeX\ installation, the local
+information about \TeX\ should tell you how to get at the macro files
+and what they can do for you. The standard form of \TeX,
+the one described in this book, incorporates a
+collection of macros and other definitions known as ^{\plainTeX}
+(\xref{\plainTeX}).
+
+When \TeX\ processes your document, it produces a file called the
+^{\dvifile}. The abbreviation ``|dvi|'' stands for ``device
+independent''. The abbreviation was chosen because the information in
+the \dvifile\ is independent of the device that you use to print or
+display your document.
+
+To print your document or view it with a \emph{previewer},
+^^{previewer}
+you need to process the ^{\dvifile} with
+a \emph{device driver\/} program.
+^^{device drivers}
+(A previewer is a program that
+enables you to see on a screen some approximation of what the typeset
+output will look like.)
+Different output devices usually
+require different device drivers.
+After running the device driver,
+you may also need to transfer the output of the device driver to the
+printer or other output device.
+^^{printers} ^^{output devices}
+The local information about \TeX\ should tell
+you how to get the correct device driver and use it.
+
+Since \TeX\ has no built-in knowledge of particular fonts, it uses
+\emph{font files}
+^^{font files}
+to obtain information about the fonts used in your
+document. The font files should also be part of your local \TeX\
+environment. Each font normally requires two files: one containing the
+dimensions of the characters in the font (the \emph{metrics file})
+^^{metrics file}
+and one containing the shapes of the characters (the \emph{shape file}).
+^^{shape file}
+Magnified versions of a font share the metrics file but have
+different shape files. ^^{magnification} Metrics files are sometimes
+referred to as ^{\tfmfile}s, and the different varieties of shape files
+are sometimes referred to as ^{\pkfile}s, ^{\pxlfile}s, and ^{\gffile}s.
+These names correspond to the names of the files that \TeX\ and its
+companion programs use. For example, |cmr10.tfm| is the metrics file
+for the |cmr10| font (10-point Computer Modern Roman).
+
+\TeX\ itself uses only the metrics file, since it doesn't care what the
+characters look like but only how much space they occupy. The device
+driver ordinarily uses the shape file, since it's responsible for
+creating the printed image of each typeset character. Some device
+drivers need to use the metrics file as well. Some device drivers can
+utilize fonts that are resident in a printer and don't need shape files
+for those fonts.
+\secondprinting{\vfill\eject}
+
+
+\subsection Running {\TeX}
+
+\bix^^{running \TeX}
+You can run \TeX\ on an input file |screed.tex| by typing
+^^{input files}
+something like `|run tex|' or just `|tex|' (check your local information).
+\TeX\ will respond with something like:
+% 4/23/90 is Shakespeare's 426th birthday, and Karl's 26th.
+\csdisplay
+This is TeX, Version 3.0 (preloaded format=plain 90.4.23)
+**
+|
+The ``preloaded format'' here refers to a predigested form of the
+^{\plainTeX} macros that come with \TeX.
+You can now type `|screed|' to get \TeX\ to process your file.
+When it's done, you'll see something like:
+\csdisplay
+(screed.tex [1] [2] [3] )
+Output written on screed.dvi (3 pages, 400 bytes).
+Transcript written on screed.log.
+|
+displayed on your terminal, or printed in the record of your
+run if you're not working at a terminal. Most of this output is
+self-explanatory.
+The numbers in brackets are page numbers that \TeX\ displays when it
+ships out each page of your document to the \dvifile.
+\TeX\ will usually assume an
+extension `|.tex|' to an input file name
+if the input file name you gave doesn't
+have an extension. For some forms of \TeX\ you may be able to
+invoke \TeX\ directly for an input file by typing:
+\csdisplay
+tex screed
+|
+or something like this.
+
+Instead of providing your \TeX\ input from a file, you can type it directly at
+your terminal. To do so, type `^|\relax|' instead of `|screed|' at the
+`|**|' prompt.
+\TeX\ will now prompt you with a `|*|' for each line of input and interpret
+each line of input as it sees it.
+To terminate the input, type a command such as `|\bye|' that tells \TeX\
+you're done.
+Direct input is sometimes a handy way of experimenting with \TeX.
+
+When your input file contains other embedded input files, the displayed
+information indicates when \TeX\ begins and ends processing each
+embedded file.
+^^{input files//embedded}
+\xrdef{infiles}
+\TeX\ displays a left parenthesis and the file name
+when it starts working on a file and displays the corresponding right
+parenthesis when it's done with the file.
+If you get any ^{error messages} in the displayed output, you can match
+them with a file by looking for the most recent unclosed left parenthesis.
+
+For a more complete explanation of how to run \TeX,
+see \knuth{Chapter~6} and your ^{local information}.
+\eix^^{running \TeX}
+
+
+\section Preparing an input file
+
+In this section we explain some of the conventions that you must follow in
+preparing input for \TeX\null. Some of the information given here also
+appears in the examples in \chapterref{examples} of this book.
+^^{input, preparing}
+
+\subsection Commands and control sequences
+
+\bix^^{commands}
+\bix^^{control sequences}
+Input to \TeX\ consists of a sequence of commands that tell \TeX\ how to
+typeset your document. Most characters act as commands of a particularly
+simple kind: ``typeset me''. The letter `|a|', for instance, is a
+command to typeset an `a'. But there's another kind of command---a
+\emph{control sequence}---that gives \TeX\ a more elaborate
+instruction. A control sequence ordinarily starts with a backslash
+(|\|), though you can change that convention if you need to.
+\xrdef{@backslash}
+For instance, the input:
+
+\csdisplay
+She plunged a dagger (\dag) into the villain's heart.
+|
+contains the control sequence |\dag|; it produces the typeset output:
+\display{%
+She plunged a dagger (\dag) into the villain's heart.
+}
+\noindent Everything in this example except for the |\dag| and the spaces
+acts like a ``typeset me'' command. We'll explain more about spaces
+on \xrefpg{spaces}.
+
+There are two kinds of control sequences: \emph{control words}
+^^{control words}
+and \emph{control symbols}:
+^^{control symbols}
+\ulist\compact
+\li A control word consists of a
+backslash followed by one or more letters, e.g., `|\dag|'.
+The first character that isn't a letter marks the end
+of the control word.
+\li A control symbol consists of a backslash followed by a single character
+that isn't a letter, e.g., `|\$|'.
+The character can be a space or even the end of a line (which is a perfectly
+legitimate character).
+\endulist
+\noindent
+A control word (but not a control symbol)
+absorbs any spaces or ends of line that follow it.
+^^{control sequences//absorbing spaces}
+If you don't want to lose a space after a control word,
+follow the control sequence with a ^{control space}
+(|\!visiblespace|) or with `|{}|'. Thus either:
+\csdisplay
+The wonders of \TeX\!visiblespace!.shall never cease!!
+|
+or:\hfil\
+\csdisplay
+The wonders of \TeX{} shall never cease!!
+|
+produces:
+\display{%
+The wonders of \TeX{} shall never cease!
+}
+\noindent rather than:
+\display{%
+The wonders of \TeX shall never cease!
+}
+\noindent
+which is what you'd get if you left out the `|\|\visiblespace'
+or the `|{}|'.
+
+Don't run a control word together with the text that follows it---\TeX\
+won't know where the control word ends. For instance, the |\c| control
+sequence places a cedilla accent on the character that follows it. The
+French word {\it gar\c con\/} must be typed as
+`|gar\c!visiblespace!.con|', not `|gar\ccon|'; if you write the latter,
+\TeX\ will complain about an undefined control sequence |\ccon|.
+
+A control symbol, on the other hand, doesn't absorb anything that
+follows it. Thus you must type `\$13.56' as `|\$13.56|', not
+`|\$!vs13.56|'; the latter form would produce `\hbox{\$ 13.56}'.
+However, those accenting commands that are named by control symbols are
+defined in such a way that they produce the effect of absorbing a
+following space. Thus, for example, you can type the French word {\it
+d\'eshabiller\/} either as `|d\'eshabiller|' or as
+`|d\'!visiblespace!.eshabiller|'.
+
+Every control sequence is also a command,
+but not the other way around.
+^^{commands//versus control sequences}
+^^{control sequences//versus commands}
+For instance, the letter `|N|'
+is a command, but it isn't a control sequence.
+In this book we ordinarily use ``command'' rather than
+``control sequence'' when either term would do.
+We use ``control sequence'' when we want to emphasize aspects of \TeX\
+syntax that don't apply to commands in general.
+
+\eix^^{control sequences}
+\eix^^{commands}
+
+
+\subsection Arguments
+
+\xrdef{arg1}
+Some commands need to be followed by one or more
+\emph{arguments} ^^{arguments}
+that help to determine what the command does.
+For instance, the |\vskip| command, which
+tells \TeX\ to skip down (or up) the page,
+expects an argument specifying how much space to skip. To skip
+down two inches, you would type `|\vskip 2in|', where |2in|
+is the argument of |\vskip|.
+
+Different commands expect different kinds of arguments. Many commands
+expect dimensions, such as the |2in| in the example above.
+Some commands, particularly those defined by macros,
+expect arguments that are either a single character or some
+text enclosed in braces.
+Yet others require that their arguments be enclosed in braces, i.e.,
+they don't accept single-character arguments.
+The description of each command in this book tells you what kinds of arguments,
+if any, the command expects.
+In some cases, required braces define a group (see \xref{bracegroup}).
+
+\secondprinting{\vfill\eject}
+
+
+\subsection Parameters
+
+\xrdef{introparms}
+Some commands are parameters (\xref{parameter}).
+^^{parameters//as commands}
+You can use a parameter in either of two ways:
+\olist
+\li You can use the value of a parameter
+as an argument to another command. For example, the command
+\hbox{|\vskip\parskip|}
+causes a vertical skip by the value of the |\parskip| (paragraph skip)
+glue parameter.
+\li You can change the value of the parameter by assigning
+something to it. For example, the assignment \hbox{|\hbadness=200|}
+causes the value of the |\hbadness| number parameter to be $200$.
+\endolist
+\noindent
+We also use the term ``parameter'' to refer to entities such as |\pageno|
+that are actually registers but behave just like parameters.
+^^{registers//parameters as}
+
+Some commands are names of tables. These commands are used like
+parameters, except that they require an additional argument that
+specifies a particular entry in the table. For example, |\catcode| names
+a table of category codes (\xref{category code}). Thus
+the command
+\hbox{|\catcode`~=13|} sets the category code of the `|~|'
+character to $13$.
+
+
+\subsection Spaces
+
+\xrdef{spaces}
+\bix^^{spaces}
+You can freely use extra spaces in your input. Under nearly all circumstances
+\TeX\ treats several spaces in a row as being equivalent to a
+single space. For instance, it doesn't matter whether you put one space
+or two spaces after a ^{period} in your input. Whichever you do, \TeX\
+performs its end-of-sentence maneuvers and leaves the appropriate
+(in most cases) amount of space after the period.
+\TeX\ also treats the end of an input line as equivalent to a space.
+Thus you can end your input lines wherever it's convenient---%
+\TeX\ makes input
+lines into
+paragraphs in the same way no matter where the line breaks are in your
+input.
+
+A blank line in your input marks the end of a paragraph.
+^^{paragraphs//ending}
+Several blank lines are equivalent to a single one.
+
+\TeX\ ignores input spaces within math formulas (see below). Thus you can
+include or omit spaces anywhere within a math formula---\TeX\ doesn't care.
+Even within a math formula, however,
+you must not run a control word together with a following letter.
+
+If you are defining your own macros, you need to be particularly careful about
+where you put ends of line in their definitions.
+It's all too easy to define a macro that produces an
+^{unwanted space} in addition to whatever else it's supposed to produce.
+We discuss this problem elsewhere since it's somewhat
+technical; see \xrefpg{unwantedspace}.
+
+A space or its equivalent between two words in your input doesn't simply turn
+into a space character in your output.
+A few of these input spaces turn into ends of lines
+in the output,
+since input lines generally don't correspond to output lines.
+The others turn into spaces of variable width called ``glue'' (\xref{glue}),
+which has a natural size (the size it ``wants to be'')
+but can stretch or shrink.
+When \TeX\ is typesetting a paragraph
+that is supposed to have an even right margin (the usual
+case), it adjusts the widths of the glue in each line
+to get the lines to end at the margin.
+(The last line of a paragraph is an exception, since it isn't ordinarily
+required to end at the right margin.)
+
+You can prevent an input space from turning into an end of line by using a
+^{tie} (^|~|).
+For example, you wouldn't want \TeX\ to put a line break between the
+`Fig.' and `8' of `Fig.~8'.
+By typing `|Fig.~8|' you can prevent such a line break.
+\eix^^{spaces}
+\needspace{2in}
+
+\subsection Comments
+
+\xrdef{comments}
+\pix\bix^^{comments}
+You can include comments in your \TeX\ input.
+When \TeX\ sees a comment it just passes over it, so
+what's in a comment doesn't affect your typeset document in any way.
+Comments are useful for
+providing extra information about what's in your input file.
+For example:
+\csdisplay
+% ========= Start of Section `Hedgehog' =========
+|
+
+{\indexchar % }%
+A comment starts with a percent sign (|%|) and extends to the end of the
+input line.
+\TeX\ ignores not just the comment but the end of the line as well, so
+comments have another very
+important use: connecting two lines so that the end of line
+^^{line breaks//deleting}
+between them is invisible to \TeX\ and doesn't generate
+an output space or an end of line.
+For instance, if you type:
+\csdisplay
+A fool with a spread%
+sheet is still a fool.
+|
+you'll get:
+\display{
+A fool with a spread%
+sheet is still a fool.
+}
+\eix^^{comments}
+
+
+\subsection Punctuation
+
+\null
+\xrdef{periodspacing}
+\TeX\ normally adds some extra space after what it thinks is a
+^{punctuation} mark at the end of a sentence,
+namely, `^|.|', `^|?|', or `|!!|' \indexchar !
+^^{period} ^^{question mark} ^^{exclamation point}
+followed by an input space.
+\TeX\ doesn't add
+the extra space if the punctuation mark follows
+a capital letter, though, because it assumes the capital
+letter to be an initial in someone's name.
+You can force the extra space where it wouldn't otherwise occur by
+typing something like:
+\csdisplay
+A computer from IBM\null?
+|
+The |\null| doesn't produce any output, but it does prevent \TeX\
+from associating the capital `M' with the question mark.
+On the other hand, you can cancel the
+extra space where it doesn't belong by typing a control space
+after the punctuation mark, e.g.:
+\csdisplay
+Proc.\!visiblespace!.Royal Acad.\!visiblespace!.of Twits
+|
+so that you'll get:
+\display{Proc.\ Royal Acad.\ of Twits}
+\noindent rather than:
+\display{Proc. Royal Acad. of Twits}
+
+Some people prefer not to leave more space after punctuation at the
+end of a sentence. You can get this effect with the
+^|\frenchspacing| command (\xref\frenchspacing).
+|\frenchspacing| is often recommended for ^{bibliographies}.
+
+For single ^{quotation marks}, you should use the left and right
+single quotes
+(|`| and |'|) on your keyboard. For left and right
+double quotation marks, use two left single
+quotes or two right single quotes (|``| or |''|) rather
+than the double quote (|"|) on your keyboard.
+The keyboard double quote
+will in fact give you a right double quotation mark in
+many fonts, but the two right single quotes
+are the preferred \TeX\ style.
+For example:
+
+\vbox{%
+\csdisplay
+There is no `q' in this sentence.
+``Talk, child,'' said the Unicorn.
+She said, ``\thinspace`Enough!!', he said.''
+|
+}%
+These three lines yield:
+\display{\par\restoreplainTeX
+There is no `q' in this sentence.
+\par ``Talk, child,'' said the Unicorn.
+\par She said, ``\thinspace`Enough!', he said.''
+}
+\noindent
+The |\thinspace| in the third input line prevents
+the single quotation mark from coming
+too close to the double quotation marks.
+Without it, you'd just see three
+nearly equally spaced quotation marks in a row.
+
+\TeX\ has three kinds of ^{dashes}:
+\ulist\compact
+\li Short ones (hyphens) like this ( - ). You get them by typing~`^|-|'.
+\li Medium ones (en-dashes) like this ( -- ). You get them by typing~`^|--|'.
+\li Long ones (em-dashes) like this ( --- ). You get them by typing~`^|---|'.
+\endulist
+\noindent
+Typically you'd use hyphens to indicate compound words like
+``will-o'-the-wisp'',
+en-dashes to indicate
+page ranges such as ``pages~81--87'', and em-dashes to indicate
+a break in continuity---like this.
+
+
+\subsection Special characters
+
+Certain characters have special meaning to \TeX, so you shouldn't use them
+in ordinary text. They are:
+
+\csdisplay
+ $ # & % _ ^ ~ { } \
+|
+^^|$//in ordinary text|
+^^|#//in ordinary text|
+^^|&//in ordinary text|
+^^|_//in ordinary text|
+^^|^//in ordinary text|
+^^|~//in ordinary text|
+^^|%//in ordinary text|
+^^|{//in ordinary text|
+^^|}//in ordinary text|
+{\recat!ttidxref[\//in ordinary text]]
+\noindent
+In order to produce them in your typeset document,
+you need to use circumlocutions. For the first five,
+you should instead type:
+^^|\$|
+^^|\#|
+^^|\&|
+^^|\%|
+^^|\_|
+\csdisplay
+ \$ \# \& \% \_
+|
+
+\noindent
+For the others, you need something more elaborate:
+
+\csdisplay
+ \^{!visiblespace} \~{!visiblespace} $\{$ $\}$ $\backslash$
+|
+
+
+\subsection Groups
+
+\bix^^{groups}
+A \emph{group}
+consists of material enclosed in matching left and right braces (|{| and
+|}|).
+^^|{//starting a group|
+^^|}//ending a group|
+By placing a command within a group, you can limit its effects to
+the material within the group.
+For instance, the |\bf| command tells \TeX\ to set
+something in {\bf boldface} type. If you were to put |\bf| into your input
+and do nothing else to counteract it, everything in your document following the
+|\bf| would be set in boldface.
+By enclosing |\bf| in a group,
+you limit its effect to the group. For example, if you type:
+\csdisplay
+We have {\bf a few boldface words} in this sentence.
+|
+\noindent you'll get:
+\display{We have {\bf a few boldface words} in this sentence.}
+
+\noindent You can also use a group to limit the effect of
+an assignment to one of \TeX's parameters.
+These parameters contain values that affect how \TeX\ typesets your document.
+For example, the value of the |\parindent|
+parameter specifies the indentation at the beginning of a paragraph.
+The assignment |\parindent = 15pt|
+sets the indentation to $15$ printer's points.
+By placing this assignment at the beginning
+of a group containing a few paragraphs, you can change
+the indentation of just those paragraphs. If you don't enclose
+the assignment in a group,
+the changed indentation will apply to the rest of the document (or up to the
+next assignment to |\parindent|, if there's a later one).
+
+\xrdef{bracegroup}
+Not all pairs of braces indicate a group.
+In particular, the braces associated with an argument for which the
+braces are \emph{not} required don't indicate a group---they just
+serve to delimit the argument.
+Of those commands that do require braces for their arguments,
+some treat the braces as defining a group
+and the others interpret the argument in some special way that depends on
+the command.\footnote
+{More precisely, for primitive commands either
+the braces define a group or they enclose tokens that aren't processed in
+\TeX's stomach.
+For |\halign| and |\valign| the group has a trivial
+effect because everything within the braces either doesn't reach the stomach
+(because it's in the template) or is enclosed in a further inner group.
+^^|\halign//grouping for|
+^^|\valign//grouping for|
+}
+\eix^^{groups}
+
+
+\subsection Math formulas
+
+\bix^^{math}
+\xrdef{mathform}
+A math formula can appear in text (\emph{text math})
+^^{text math}
+or set off on a line by itself
+with extra vertical space around it (\emph{display math}).
+^^{display math}
+You enclose a text formula in single dollar signs (|$|)
+and a displayed formula in double dollar signs (|$$|).
+\ttidxref{$}\ttidxref{$$}
+For example:
+
+\csdisplay
+If $a<b$, then the relation $$e^a < e^b$$ holds.
+|
+\noindent This input produces:
+\display{\centereddisplays
+If $a<b$, then the relation $$e^a < e^b$$ holds.}
+\smallskip
+\noindent \chapterref{math} describes the commands that are useful
+in math formulas.
+\eix^^{math}
+
+
+\section How \TeX\ works
+
+In order to use \TeX\ effectively, it helps to
+have some idea of how \TeX\ goes about
+its activity of transmuting input into output.
+You can imagine \TeX\ as a kind of organism with ``eyes'',
+``mouth'', ``gullet'',
+``stomach'', and ``intestines''.
+Each part of the organism transforms its input in some way and passes
+the transformed input to the next stage.
+
+The ^{eyes} transform an input file into a sequence of characters.
+The ^{mouth} transforms the sequence of characters into a sequence of
+\emph{tokens},
+^^{tokens}
+where each token is either a single character or a control sequence.
+^^{control sequences//as tokens}
+The gullet expands the tokens into a sequence of
+\emph{primitive commands}, which are also tokens.
+^^{expanding tokens}
+The ^{stomach} carries out the operations specified by the primitive commands,
+producing a sequence of pages.
+Finally, the ^{intestines} transform each page into the form required
+for the \dvifile\ and send it there.
+^^{\dvifile//created by \TeX's intestines}
+These actions are described in more detail
+in \chapterref{concepts} under \conceptcit{\anatomy}.
+^^{\anatomy}
+
+The real typesetting goes on in the stomach.
+The commands instruct \TeX\ to typeset such-and-such a character in
+such-and-such a font, to insert an interword space, to end a paragraph, and
+so on.
+Starting with individual typeset characters and other simple typographic
+elements, \TeX\ builds up a page ^^{pages} as a nest of
+^{boxes} within boxes within boxes \seeconcept{box}.
+Each typeset character occupies a box, and so does an entire page.
+A box can contain not just smaller boxes but also \emph{glue} ^^{glue}
+(\xref{glue}) and a few other things.
+The glue produces
+space between the smaller boxes.
+An important property of glue is that it can stretch and shrink;
+thus \TeX\ can make a box
+larger or smaller by stretching or shrinking
+the glue within~it.
+
+Roughly speaking, a line is a box containing a sequence of character boxes,
+and a page is a box containing a sequence of line boxes.
+There's glue between the words of a line and between the lines of a page.
+\TeX\ stretches or shrinks
+the glue on each line so as to make the right margin
+of the page come out even and the glue on each page
+so as to make the bottom margins of different pages be equal.
+Other kinds of typographical elements can also appear in a line or in a page,
+but we won't go into them here.
+
+As part of the process of assembling pages, \TeX\ needs to break paragraphs
+into lines and lines into pages. The stomach first sees a paragraph as one
+long line, in effect. It inserts \emph{line breaks}
+^^{line breaking}
+in order to transform
+the paragraph into a sequence of lines of the right length, performing a
+rather elaborate analysis in order to choose the set of breaks
+that makes the paragraph look best
+\seeconcept{line break}.
+The stomach carries out a similar
+but simpler process in order to transform a sequence of lines into a page.
+Essentially the stomach accumulates lines until no more lines can fit on the
+page. It then chooses a single place to break the page, putting the lines
+before the break on the current page
+and saving the lines after the break for the
+next page \seeconcept{page break}. ^^{page breaks//inserted by \TeX's stomach}
+
+When \TeX\ is assembling an entity from a list of items (boxes, glue, etc.),
+it is in one of six
+\emph{modes} ^^{modes} (\xref{mode}).
+The kind of entity it is assembling defines the mode that it is in.
+There are two ordinary modes: ordinary horizontal mode for assembling
+paragraphs (before they are broken into lines)
+and ordinary vertical mode for assembling pages.
+There are two restricted modes:
+restricted horizontal mode for appending items horizontally to form
+a horizontal box
+and internal vertical mode for appending items vertically to form
+a vertical box (other than a page).
+Finally, there are two math modes: text math mode for assembling math formulas
+within a paragraph and display math mode for assembling math formulas that are
+displayed on lines by themselves (see ``Math formulas'', \xref{mathform}).
+
+
+\section New \TeX\ versus old {\TeX}
+
+\xrdef{newtex}
+In 1989 Knuth made a major revision to \TeX\ in order to
+adapt it to the
+character sets needed to support typesetting for languages other than
+English.\space ^^{foreign languages}
+The revision included a few minor extra features that could be added
+without disturbing anything else.
+This book describes ``^{\newTeX}''.
+If you're still using an older version
+of \TeX\ (version $2.991$ or earlier),
+you'll want to know what features of {\newTeX} you can't use.
+The following features aren't available in the older versions:
+\ulist\compact
+\li ^|\badness| (\xref\badness)
+\li ^|\emergencystretch| (\xref\emergencystretch)
+\li ^|\errorcontextlines| (\xref\errorcontextlines)
+\li ^|\holdinginserts| (\xref\holdinginserts)
+\li ^|\language|, ^|\setlanguage|, and |\new!-lan!-guage|
+(\pp\xrefn\language, \xrefn{\@newlanguage}) ^^|\newlanguage|
+\li ^|\lefthyphenmin| and ^|\righthyphenmin| (\xref\lefthyphenmin)
+\li ^|\noboundary| (\xref\noboundary)
+\li ^|\topglue| (\xref\topglue)
+\li The |^^|$xy$ notation for hexadecimal digits (\xref{hexchars})
+\endulist
+\noindent
+We recommend that you obtain new \TeX\ if you can.
+
+\section Resources
+
+\xrdef{resources}
+A number of resources are available to help you in using \TeX.
+\texbook\ is the definitive source of information on \TeX:
+
+\smallskip
+{\narrower\noindent
+^{Knuth, Donald E.}, \texbook. Reading, Mass.: Addison-Wesley, 1984.\par}
+\smallskip
+\noindent
+Be sure to get the seventeenth printing (January 1990) or later;
+the earlier printings don't cover the features of new \TeX.
+
+^{\LaTeX} is a very popular collection of commands designed to simplify the use
+of \TeX. It is described in:
+\smallskip
+{\narrower\noindent\frenchspacing\spaceskip = 3.33pt plus 2pt minus 1.2pt
+^{Lamport, Leslie}, {\sl The \LaTeX\ Document Preparation System}.
+Reading, Mass.: Addison-Wesley, 1986.\par}
+\smallskip
+\noindent
+^{\AMSTeX} is the collection of commands adopted by the American Mathematical
+Society as a standard for submitting mathematical man\-u\-scripts
+electronically.
+It is described in:
+\smallskip
+{\narrower\noindent
+^{Spivak, Michael~D.}, {\sl The Joy of \TeX}. Providence, R.I.:
+American Mathematical Society, 1986.
+\par}
+\smallskip
+\noindent
+You can join the ^{\TUG} (TUG), which publishes a newsletter
+called {\it ^{TUGBoat}}.
+TUG is an excellent source not only for information about \TeX\ but also
+for collections of macros, including \AMSTeX.
+Its address is:
+\smallskip
+{\obeylines
+^{\TUG}
+c/o American Mathematical Society
+P.O. Box 9506
+Providence, RI 02940
+U.S.A.
+}
+\smallskip
+\noindent
+Finally, you can obtain copies of the ^|eplain.tex| macros
+described in \chapterref{eplain} as well as the macros used in typesetting
+this book.
+They are available through the Internet network by anonymous \ftp\ from the
+following hosts:
+{\obeylines\display{\tt
+labrea.stanford.edu [36.8.0.47]
+ics.uci.edu [128.195.1.1]
+june.cs.washington.edu [128.95.1.4]}}
+
+The electronic version includes additional macros
+that format input for the
+^{\BibTeX}\ computer program, written by Oren Patashnik at Stanford
+University, ^^{Patashnik, Oren}
+and print the output from that program.
+If you find bugs in the macros, or think of improvements, you can send
+electronic mail to Karl at {\tt karl@cs.umb.edu}.
+
+The macros are also available for US \$10.00 on $5\frac1/4$\inches\
+or $3\frac1/2$\inches\ PC-format diskettes from:
+\smallskip
+{\obeylines
+Paul Abrahams
+214 River Road
+Deerfield, MA 01342
+\vskip\tinyskipamount
+Email: {\tt Abrahams\%Wayne-MTS@um.cc.umich.edu}
+}
+\smallskip
+\noindent
+These addresses are correct as of June 1990; please be aware that they may
+change after that, particularly the electronic addresses.
+
+\endchapter\byebye
diff --git a/Master/texmf-doc/doc/english/impatient/xmptext.tex b/Master/texmf-doc/doc/english/impatient/xmptext.tex
new file mode 100644
index 00000000000..47599421fde
--- /dev/null
+++ b/Master/texmf-doc/doc/english/impatient/xmptext.tex
@@ -0,0 +1,449 @@
+~% This is part of the book TeX for the Impatient.
+~% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
+~% See file fdl.tex for copying conditions.
+% TeX ignores anything on a line after a %
+% The next two lines define fonts for the title
+\font\xmplbx = cmbx10 scaled \magstephalf
+\font\xmplbxti = cmbxti10 scaled \magstephalf
+% Now here's the title.
+\leftline{\xmplbx Example !xmpnum:\quad\xmplbxti Entering simple text}
+\vglue .5\baselineskip % skip an extra half line
+~\count255 = \pageno
+~\xdef\examplepage{\number\count255}
+~\markinfo{Example 1: Entering simple text}
+~\ifrewritetocfile
+~\write\tocfile{\string\tocsectionentry{Entering simple text}{}{\examplepage}}%
+~\fi
+~^^{footnotes} ^^{comments} ^^{punctuation} ^^{quotation marks}
+~^^{space characters} ^^{dashes} ^^{paragraphs//ending}
+~\edef\examplepageno{\number\count255}%
+It's easy to prepare ordinary text for \TeX\ since
+\TeX\ usually doesn't care about how you break up your input into
+lines. It treats the end of a line of text like a space.%
+\footnote \dag{\TeX\ treats a tab like a space too, as we point
+out in this {\it footnote}.} If you don't want a space there,
+put a per%
+cent sign (the comment character) at the end of the line.
+ \TeX\ ignores spaces at the start of a line, and treats more
+than one space as equivalent to a single space,
+even after a period. You indicate a new paragraph by
+skipping a line (or more than one line).
+
+
+When \TeX\ sees a period followed by a space (or the end of the
+line, which is equivalent), it ordinarily assumes you've ended a
+sentence and inserts a little extra space after the period. It
+treats question marks and exclamation points the same way.
+
+ But \TeX's rules for handling periods sometimes need fine
+tuning. \TeX\ assumes that a capital letter before a period
+doesn't end the sentence, so you have to do something a little
+different if, say, you're writing about DNA\null.
+% The \null prevents TeX from perceiving the capital `A'
+% as being next to the period.
+It's a good idea to tie words together in references such as
+``see Fig.~8'' and in names such as V.~I\null. Lenin and in
+$\ldots$ so that \TeX\ will never split them in an awkward place
+between two lines. (The three dots indicate an ellipsis.)
+
+You should put quotations in pairs of left and right
+single ``quotes'' so that you get the correct left and right
+double quotation marks. ``For adjacent single and double
+quotation marks, insert a `thinspace'\thinspace''. You can
+get en-dashes--like so, and em-dashes---like so.
+
+\bye % end the document
+:::
+\xmpheader !xmpnum/{Indentation}% !xmpheaddef
+~^^{indentation} ^^{margins} ^^{paragraphs//narrow}
+\noindent Now let's see how to control indentation. If an
+ordinary word processor can do it, so surely can \TeX. Note
+that this paragraph isn't indented.
+
+Usually you'll either want to indent paragraphs or to leave
+extra space between them. Since we haven't changed anything
+yet, this paragraph is indented.
+
+{\parindent = 0pt \parskip = 6pt
+% The left brace starts a group containing the unindented text.
+Let's do these two paragraphs a different way,
+with no indentation and six printer's points of extra space
+between paragraphs.
+
+So here's another paragraph that we're typesetting without
+indentation. If we didn't put space between these paragraphs,
+you would have a hard time knowing where one ends
+and the next begins.
+\par % The paragraph *must* be ended within the group.
+}% The right brace ends the group containing unindented text.
+
+It's also possible to indent both sides of entire paragraphs.
+The next three paragraphs illustrate this:
+\smallskip % Provide a little extra space here.
+% Skips like this and \vskip below end a paragraph.
+{\narrower
+``We've indented this paragraph on both sides by the paragraph
+indentation. This is often a good way to set long quotations.
+
+``You can do multiple paragraphs this way if you choose. This
+is the second paragraph that's singly indented.''\par}
+
+{\narrower \narrower You can even make paragraphs doubly narrow
+if that's what you need. This is an example of a doubly
+narrowed paragraph.\par}
+\vskip 1pc % Skip down one pica for visual separation.
+In this paragraph we're back to the normal margins, as you can
+see for yourself. We'll let it run on a little longer so that
+the margins are clearly visible.
+
+{\leftskip .5in Now we'll indent the left margin by half
+an inch and leave the right margin at its usual position.\par}
+{\rightskip .5in Finally, we'll indent the right margin by half
+an inch and leave the left margin at its usual position.\par}
+\bye % end the document
+:::
+\xmpheader !xmpnum/{Fonts and special characters}% !xmpheaddef
+\chardef \\ = `\\ % Let \\ denote a backslash.
+~^^{fonts} ^^{characters//special} ^^{accents}
+~^^{music symbols} ^^{card suits}
+~^^|$| ^^|&| ^^|#| ^^|_| ^^|%| ^^|^| ^^|~| ^^|{| ^^|}| \indexchar \
+{\it Here are a few words in an italic font}, {\bf a
+few words in a boldface font}, {\it and a\/ {\bf mixture}
+of the two, with two\/ {\rm roman words} inserted}.
+Where an italic font is followed by a nonitalic font, we've
+inserted an ``italic correction'' ({\tt \\/}) to make the
+spacing look right.
+Here's a {\sevenrm smaller} word---but the standard \TeX\
+fonts won't give you anything smaller than {\fiverm this}.
+
+If you need any of the ten characters:
+\medskip
+\centerline{\$ \quad \& \quad \# \quad \_ \quad \% \quad
+ \char `\^ \quad \char `\~ \quad $\{$ \quad
+ $\}$ \quad $\backslash$}
+% The \quad inserts an em space between characters.
+\medskip
+\noindent you'll need to write them a special way. Look at
+the facing page to see how to do it.
+
+\TeX\ has the accents and letters that you'll need
+for French words such as {\it r\^ ole\/} and {\it \'
+el\` eve\/}, for German words such as {\it Schu\ss\/},
+and for words in several other languages as well.
+You'll find a complete list of \TeX's accents and letters
+of European languages on !xrefdelim[accents] and !xrefdelim[fornlets].
+
+You can also get Greek letters such as ``$\alpha$'' and
+``$\Omega$'' for use in math, card suits such as
+``$\spadesuit$'' and ``$\diamondsuit$'', music symbols
+such as ``$\sharp$'' and ``$\flat$'', and many other special
+symbols that you'll find listed on !xrefdelim[specsyms].
+\TeX\ will only accept these sorts of special symbols in its
+``math mode'', so you'll need to enclose them
+within `{\tt \$}' characters.
+\bye % end the document
+:::
+\xmpheader !xmpnum/{Interline spacing}% !xmpheaddef
+~^^{spacing//interline} ^^{baselines}
+\baselineskip = 2\baselineskip % double spacing
+\parskip = \baselineskip % Skip a line between paragraphs.
+\parindent = 3em % Increase indentation of paragraphs.
+
+% The following macro definition gives us nice inline
+% fractions. You'll find it in our eplain macros.
+\def\frac#1/#2{\leavevmode
+ \kern.1em \raise .5ex \hbox{\the\scriptfont0 #1}%
+ \kern-.1em $/$%
+ \kern-.15em \lower .25ex \hbox{\the\scriptfont0 #2}%
+}%
+
+Once in a while you may want to print a document with extra
+space between the lines. For instance, bills before Congress
+are printed this way so that the legislators can mark them up.
+For the same reason, book publishers usually insist that
+manuscripts be double-spaced. Double spacing is rarely
+appropriate for finished documents, however.
+
+A baseline is an imaginary line that acts like the lines
+on a pad of ruled paper. You can control the interline
+spacing---what printers call ``leading''---%
+by setting the amount of space between baselines. Take a
+look at the input to see how to do it. You could use
+the same method for $1\;1/2$ spacing as well, using {\tt 1.5}
+instead of {\tt 2}. (You can also write $1\frac 1/2$
+a nicer way.)
+% Here we've used the macro definition given above.
+
+For this example we've also increased the paragraph indentation
+and skipped an extra line between paragraphs.
+
+\bye % end the document
+:::
+\xmpheader !xmpnum/{Spacing, rules, and boxes}% !xmpheaddef
+~^^{description lists} ^^{boxes//drawing} ^^{revision bars}
+Here's an example of a ``description list''. In practice you'd
+be better off using a macro to avoid the repetitive constructs
+and to make sure that the subhead widths are wide enough:
+\bigskip
+% Call the indentation for descriptions \descindent
+% and set it to 8 picas.
+\newdimen\descindent \descindent = 8pc
+% Indent paragraphs by \descindent.
+% Skip an additional half line between paragraphs.
+{\noindent \leftskip = \descindent \parskip = .5\baselineskip
+% Move the description to the left of the paragraph.
+\llap{\hbox to \descindent{\bf Queen of Hearts\hfil}}%
+An ill-tempered woman, prone to saying ``Off with his
+head!!''\ at the slightest provocation.\par
+\noindent\llap{\hbox to \descindent{\bf Cheshire Cat\hfil}}%
+A cat with an enormous smile that Alice found
+in a tree.\par
+\noindent\llap{\hbox to \descindent{\bf Mock Turtle\hfil}}%
+A lachrymose creature, quite a storyteller, who was a
+companion to the Gryphon. Reputedly the principal ingredient
+of Mock Turtle Soup.
+\par}
+\bigskip\hrule\bigskip % A line with vertical space around it.
+Here's an example of some words in a ruled box, just as
+Lewis Carroll wrote them:
+\bigskip
+% Put 8pt of space between the text and the surrounding rules.
+\hbox{\vrule\vbox{\hrule
+ \hbox spread 8pt{\hfil\vbox spread 8pt{\vfil
+ \hbox{Who would not give all else for twop}%
+ \hbox{ennyworth only of Beautiful Soup?}%
+ \vfil}\hfil}
+\hrule}\vrule}%
+
+\bigskip\line{\hfil\hbox to 3in{\leaders\hbox{ * }\hfil}\hfil}
+\bigskip
+
+\line{\hskip -4pt\vrule\hfil\vbox{
+Here we've gotten the effect of a revision bar on the material
+in this paragraph. The revision bar might indicate a change.}}
+\bye % end the document
+:::
+\xmpheader !xmpnum/{Odds and ends}% !xmpheaddef
+~^^{hyphenation} ^^{theorems} ^^{lemmas} ^^{itemized lists}
+~^^{flush left} ^^{flush right} ^^{centering}
+\chardef \\ = `\\ % Let \\ denote a backslash.
+\footline{\hfil{\tenit - \folio -}\hfil}
+~\global\footline{\hfil{\tenit - \folio\ -}\hfil}
+% \footline provides a footer line.
+% Here it's a centered, italicized page number.
+\TeX\ knows how to hyphenate words, but it isn't infallible.
+If you are discussing the chemical
+${\it 5}$-[p-(Flouro\-sul\-fonyl)ben\-zoyl]-l,%
+$N^6$-ethe\-no\-adeno\-sine
+and \TeX\ complains to you about an ``overfull hbox'', try
+inserting some ``discretionary hyphens''. The notation
+`{\tt \\-}' tells \TeX\ about a dis\-cre\-tion\-ary hyphen,
+that is, one that it might not have inserted otherwise.
+\medskip
+{\raggedright You can typeset text unjustified, i.e., with
+an uneven right margin. In the old days, before word
+processors were common, typewritten documents were
+unjustified because there was no convenient alternative.
+Some people prefer text to be unjustified so that the
+spacing between words can be uniform. Most books are set
+with justified margins, but not all. \par}
+
+\proclaim Assertion 27. There is an easy way to typeset
+the headings of assertions, lemmas, theorems, etc.
+
+Here's an example of how to typeset an itemized list two
+levels deep. If you need more levels, you'll have to
+program it yourself, alas.
+\smallskip
+\item {1.} This is the first item.
+\item {2.} This is the second item. It consists of two
+paragraphs. We've indented the second paragraph so that
+you can easily see where it starts.
+
+\item{} \indent The second paragraph has three subitems
+underneath it.
+\itemitem {(a)} This is the first subitem.
+\itemitem {(b)} This is the second subitem.
+\itemitem {(c)} This is the third subitem.
+\item {$\bullet$} This is a strange-looking item because it's
+completely different from the others.
+\smallskip
+\leftline{Here's a left-justified line.$\Leftarrow$}
+\rightline{$\Rightarrow$Here's a right-justified line.}
+\centerline{$\Rightarrow$Here's a centered line.$\Leftarrow$}
+% Don't try to use these commands within a paragraph.
+\bye % end the document
+:::
+\xmpheader !xmpnum/{Using fonts from other sources}% !xmpheaddef
+~\xrdef{palatino}
+~\idxref{Palatino fonts}
+~\idxref{Zapf, Hermann}
+~\idxref{Computer Modern fonts} ^^{\Metafont}
+\font\tenrm = pplr % Palatino
+% Define a macro for invoking Palatino.
+\def\pal{\let\rm = \tenrm \baselineskip=12.5pt \rm}
+\pal % Use Palatino from now on.
+
+You aren't restricted to using the Computer Modern fonts that
+come with \TeX. Other fonts are available from many sources,
+and you may prefer them. For instance, we've set this page
+in 10-point Palatino Roman. Palatino was designed by
+Hermann Zapf, considered to be one of the greatest type
+designers of the twentieth century. This page will
+give you some idea of what it looks like.
+
+Fonts can be provided either as outlines or as bitmaps. An
+outline font describes the shapes of the characters, while a
+bitmap font specifies each pixel (dot) that makes up each
+character. A font outline can be used to generate many
+different sizes of the same font. The Metafont program
+that's associated with \TeX\ provides a particularly
+powerful way of generating bitmap fonts, but it's not the
+only way.
+
+The fact that a single outline can generate a great range of
+point sizes for a font tempts many vendors of digital
+typefaces to provide just one set of outlines for a typeface
+such as Palatino Roman. This may be a sensible economic
+decision, but it is an aesthetic sacrifice. Fonts cannot be
+scaled up and down linearly without loss of quality.
+Larger sizes of letters should not, in general, have the
+same proportions as smaller sizes; they just don't look
+right. For example, a font that's linearly scaled down will
+tend to have too little space between strokes, and its
+x-height will be too~small. % tie added to avoid widow word
+
+A type designer can compensate for these changes by
+providing different outlines for different point sizes, but
+it's necessary to go to the expense of designing these
+different outlines. One of the great advantages of Metafont
+is that it's possible to parameterize the descriptions of
+characters in a font. Metafont can then maintain the
+typographical quality of characters over a range of point
+sizes by adjusting the character shapes accordingly.
+\bye % end the document
+:::
+~\idxref{mushrooms}
+\xmpheader !xmpnum/{A ruled table}% !xmpheaddef
+\bigskip
+\offinterlineskip % So the vertical rules are connected.
+% \tablerule constructs a thin rule across the table.
+\def\tablerule{\noalign{\hrule}}
+% \tableskip creates 9pt of space between entries.
+\def\tableskip{\omit&height 9pt&&&\omit\cr}
+% & separates templates for each column. TeX substitutes
+% the text of the entries for #. We must have a strut
+% present in every row of the table; otherwise, the boxes
+% won't butt together properly, and the rules won't join.
+\halign{\tabskip = .7em plus 1em % glue between columns
+% Use \vtop for short multiline entries in the first column.
+% Typeset the lines ragged right, without hyphenation.
+ \vtop{\hsize=6pc\pretolerance = 10000\hbadness = 10000
+ \normalbaselines\noindent\it#\strut}%
+ &\vrule #&#\hfil &\vrule #% the rules and middle column
+% Use \vtop to get whole paragraphs in the last column.
+ &\vtop{\hsize=11pc \parindent=0pt \normalbaselineskip=12pt
+ \normalbaselines \rightskip=3pt plus2em #}\cr
+% The table rows begin here.
+\noalign{\hrule height2pt depth2pt \vskip3pt}
+ % The header row spans all the columns.
+ \multispan5\bf Some Choice Edible Mushrooms\hfil\strut\cr
+\noalign{\vskip3pt} \tablerule
+ \omit&height 3pt&\omit&&\omit\cr
+ \bf Botanical&&\bf Common&&\omit \bf Identifying \hfil\cr
+\noalign{\vskip -2pt}% close up lines of heading
+ \bf Name&&\bf Name &&\omit \bf Characteristics \hfil\cr
+\tableskip Pleurotus ostreatus&&Oyster mushroom&&
+ Grows in shelf\kern 1pt like clusters on stumps or logs,
+ % without the kern, the `f' and `l' would be too close
+ pink-gray oyster-shaped caps, stem short or absent.\cr
+\tableskip Lactarius hygrophoroides&&Milky hygroph&&
+ Butterscotch-brown cap and stem, copious white latex,
+ often on ground in woods near streams.\cr
+\tableskip Morchella esculenta&&White morel&&Conical cap
+ with black pits and white ridges; no gills. Often found
+ near old apple trees and dying elms in the spring.\cr
+\tableskip Boletus edulus&&King bolete&&Reddish-brown to
+ tan cap with yellow pores (white when young),
+ bulbous stem, often near conifers, birch, or~aspen.\cr
+\tableskip \tablerule \noalign{\vskip 2pt} \tablerule
+}\bye
+:::
+\xmpheader !xmpnum/{Typesetting mathematics}% !xmpheaddef
+~^^{math}
+For a spherical triangle with sides $a$, $b$, and $c$, and
+opposite angles $\alpha$, $\beta$, and $\gamma$, we have:
+$$\cos \alpha = -\cos \beta \cos \gamma +
+ \sin \beta \sin \gamma \cos \alpha \quad
+ \hbox{(Law of Cosines)}$$
+and:
+$$\tan {\alpha \over 2} = \sqrt{
+ {- \cos \sigma \cdot \cos(\sigma - \alpha)} \over
+ {\cos (\sigma - \beta) \cdot \cos (\sigma - \gamma)}},\quad
+ \hbox{where $\sigma = {1 \over 2}(a+b+c)$}$$
+We also have:$$\sin x = {{e^{ix}-e^{-ix}}\over 2i}$$
+and:
+$$\int _0 ^\infty {{\sin ax \sin bx}\over{x^2}}\,dx
+% The \, above produces a thin space
+ = {\pi a\over 2}, \quad \hbox{if $a < b$}$$
+
+\noindent The number of combinations ${}_nC_r$ of $n$
+things taken $r$ at a time is:
+$$C(n,r) = {}_nC_r = {n \choose r} =
+ {{n(n-1) \cdots (n-r+1)} \over {r(r-1) \cdots (1)}} =
+ {{n!!}\over {r!!(n-r)!!}}$$
+
+\noindent
+The value of the determinant $D$ of order $n$:
+$$D = \left|\matrix{a_{11}&a_{12}&\ldots&a_{1n}\cr
+ a_{21}&a_{22}&\ldots&a_{2n}\cr
+ \vdots&\vdots&\ddots&\vdots\cr
+ a_{n1}&a_{n2}&\ldots&a_{nn}\cr}\right| $$
+is defined as the sum of $n!!$ terms:
+$$\sum\>(\pm)\>a_{1i}a_{2j} \ldots a_{nk}$$
+% The \> above produces a medium space.
+where $i$, $j$, \dots,~$k$\/ take on all possible values
+between $1$ and $n$, and the sign of the product is
+$+$ if the sequence $i$, $j$, \dots,~$k$\/ is an
+even permutation and $-$ otherwise. Moreover:
+$$Q(\xi) = \lambda_1 y_1^2 \sum_{i=2}^n \sum_{j=2}^n y_i
+b_{ij} y_j,\qquad B = \Vert b_{ij} \Vert = B'$$
+\bye
+:::
+\xmpheader !xmpnum/{More mathematics}% !xmpheaddef
+~^^{math}
+The absolute value of $X$, $|x|$, is defined by:
+$$|x| = \cases{x, &if $x\ge 0$;\cr
+-x,&otherwise.\cr}$$
+Now for some numbered equations.
+It is the case that for $k \ge 0$:
+$$x^{k^2}=\overbrace{x\>x\>\cdots\> x}^{2k\ \rm times}
+ \eqno (1)$$
+
+Here's an example that shows some spacing controls, with
+a number on the left:
+$$[u]!negthin[v][w]\,[x]\>[y]\;[z]\leqno(2a)$$
+The amount of space between the items in brackets
+gradually increases from left to right. (We've made
+the space between the first two items be {\it less\/}
+than the natural space.)
+It is sometimes the case that $$\leqalignno{
+u'_1 + tu''_2 &= u'_2 + tu''_1&(2b)\cr
+\hat\imath &\ne \hat \jmath&(2c)\cr
+\vec {\vphantom{b}a}&\approx \vec b\cr}$$
+% The \vphantom is an invisible rule as tall as a `b'.
+The result is of order $O(n \log\log n)$. Thus
+$$\sum_{i=1}^n x_i = x_1+x_2+\cdots+x_n
+= {\rm Sum}(x_1,x_2,\ldots,x_n). \eqno(3)$$
+and
+$$dx\,dy = r\,dr\,d\theta!negthin.\eqno(4)$$
+The set of all $q$ such that $q\le0$ is written as:
+$$\{\,q\mid q\le0\, \}$$
+Thus
+$$\forall x\exists y\;P(x,y)\Rightarrow
+\exists x\exists y\;P(x,y)$$
+where
+$$P(x,y) \buildrel \rm def \over \equiv
+\hbox{\rm any predicate in $x$ and $y$} . $$
+\bye
+:::
diff --git a/Master/texmf-doc/doc/english/knuth/errata/README b/Master/texmf-doc/doc/english/knuth/errata/README
new file mode 100644
index 00000000000..07c2bd816d7
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/README
@@ -0,0 +1,69 @@
+Notes on the Computer Modern parameters
+
+Dimensions are mostly in units of 1/36pt, because I originally worked
+on graph paper with 36 pixels per point (in 1977). This experience made
+me familiar with such units, so I later decided to make METAFONT produce
+proofmode output at the same scale.
+
+The basic fonts cmr5--cmr17 scale proportionately in most vertical
+dimensions (e.g., the x_height in 5pt is half that in 10pt), but
+horizontally the smaller fonts are more extended and have relatively
+heavier weight (especially in hairlines).
+
+The slanted fonts cmsl8--cmsl12 are identical to their unslanted
+counterparts except that they have slant=1/6.
+
+Font cmdunh10 is the same as cmr10 except that body_height, asc_height,
+cap_height, and fig_height have been drastically increased.
+
+The bold fonts cmbx5--cmbx12 have similar vertical dimensions to the ordinary
+roman (except that the x_height is a bit taller and bar_height is lower);
+they use bolder pen strokes, of course, and they are rather more extended.
+Font cmb10 is like cmbx10 except not extended (i.e., 1em=10pt in cmb10,
+but 1em=11.5pt in cmbx10); it also has slightly shorter cap serifs. Font
+cmbxsl10 is like cmbx10 but slanted.
+
+The typewriter fonts cmtt8--cmtt12 have the same x_heights as their
+roman counterparts, but they have shorter ascenders and longer descenders.
+Their math_axis is based on ascenders only. The stroke weights are
+almost all identical to the corresponding roman stem weight.
+Font cmsltt10 is a slanted version of cmtt10; cmvtt10 is non-monospaced.
+
+The sans serif fonts cmss8--cmss17 are analogous to cmr8--cmr17; they have
+slanted counterparts with slant of 12 degrees. A few other isolated sans
+serif fonts appear in the standard set, as demonstrations of how other
+varieties could be made: There's a demibold condensed version, cmssdc10,
+and a bold extended version, cmssbx10. (The title pages in The TeXbook use
+cmssdc10 at 40pt and a magnified version of cmssbx10 called cminch; to
+save font storage space, cminch is restricted to digits and uppercase
+letters only.) Finally, there's a pair of fonts called cmssq8 and cmssqi8;
+these are in a rather different style (extended, with short ascenders
+and descenders), used for the end-of-chapter quotations in The TeXbook.
+
+The font cmfib8 is another `demonstration' of parameters; it's a serifed
+font whose proportions are based on Fibonacci numbers. Also, the font
+cmff10 is a weird concoction of little use except for testing.
+
+The text italic fonts cmti7--cmti12 have parameters like their roman
+cousins, except that they are more condensed and slightly lighter.
+The math italic fonts cmmi5--cmmi12 are not condensed and not
+quite as light.
+
+Four special italic fonts are provided as demonstrations of further
+possibilities: cmbxti10 is a bold extended text italic; cmmib10 is
+a bold math italic; cmit10 is an italic typewriter font; cmu10 is
+an unslanted italic with the same stem weights as cmr10.
+
+The math symbol fonts, cmsy5--cmsy10, have the same parameters
+as the corresponding math italic; these fonts also have special
+parameters of their own. There's a bold math symbols font for
+demonstration purposes: cmbsy10.
+
+The math extension font, cmex10, has the parameters of cmr10.
+
+The extended ASCII font, cmtex10, has the parameters of cmtt10, except
+that the slant is positive (for a few characters that will be slanted).
+
+And finally there are two caps-and-small-caps fonts, cmcsc10 (to match cmr10)
+and cmtcsc10 (to match cmtt10). These fonts are unusual in having two
+sets of parameters, one for the upper uppercase and one for the lower uppercase.
diff --git a/Master/texmf-doc/doc/english/knuth/errata/cm85.bug b/Master/texmf-doc/doc/english/knuth/errata/cm85.bug
new file mode 100644
index 00000000000..2fd56f503af
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/cm85.bug
@@ -0,0 +1,1860 @@
+This file is a log of changes made to the "new generation" of Computer Modern
+fonts, after the first output proofs were ready. I had a great deal of
+advice from Neenie Billawala, Matthew Carter, and Richard Southall while
+I was making these revisions.
+
+Entries are in chronological order; thus the most recent news appears
+at the bottom of the file.
+
+-------------------------------------------------------------------------------
+ Changes based on the proofsheets of April 26, 1985
+ACCENT.MF:
+ lower the idots, umlauts, and tilde (MC)
+ Polish ell cross: longer stroke in bold
+CMBASE.MF:
+COMLIG.MF:
+ double quotes too close together in bold (MC)
+CSCSPU.MF:
+ SS made from two S's
+GREEKU.MF:
+ Gamma: .25u longer arm
+ Lambda: too narrow (MC,NB)
+ Xi: 1u wider; shorten middle serifs (MC)
+ top and bottom strokes to be arms (NB)
+ Psi: more super; thin the lower curve (MC)
+ add points 3' and 7' for crisp sans
+ Omega: redo the bottom, curl 0 becomes vertical (MC)
+ thin from hair to vair at points 3 and 5
+PUNCT.MF:
+ Monospace period, comma, colon, semicolon made heavier (MC)
+ROMAN.MF:
+ ligs=2 gets ff, fi, etc.; ligs=1 gets only --, '', etc.
+ II kerning introduced
+ kern between a and ' in csc
+ROMAND.MF:
+ 0: med_curve decreased to curve; y2l and y4l raised
+ 1: cap_bar changed to bar in the top stroke
+ sans-serif serifs also use bar as the slab height
+ 2: lighten cap_curve and cap_stem slightly (RS)
+ move point 3 down by .5vair (MC)
+ 4: thin the diagonal still more (NB)
+ bar line moves up one pixel when there's a serif below it
+ 6: move bulb to the right (MC)
+ make the lower left curve more_super (RS,NB)
+ 9: make the upper right curve more_super (RS,NB)
+ROMANL.MF:
+ a: bulb positioned by its center rather than the left (MC)
+ c: right terminals moved closer to the edge (MC,NB)
+ more pull on the inside left (RS)
+ e: less left sidebar in monospace (MC)
+ bold versions to be wider (MC)
+ more pull on inside left (MC,RS)
+ g: lower edge of loop goes one pixel lower
+ varg: point 6 raised above baseline (MC)
+ y0 calculated so that it works when x7l=stem_edge
+ lower arc goes one pixel lower
+ i: monospace version gets more left sidebar (MC)
+ dot moves slightly right (NB)
+ stem'' increased to stem' (MC,RS,NB)
+ slab replaces tiny in correction for dot-too-close
+ j: diminish monospace sidebars (MC)
+ shift slightly to right (MC)
+ k: serif right_jut decreased .8 to .6
+ bug fixed in alpha2 (had y1 not y11)(MC,RS,NB)
+ decreased diagonal weights
+ "if abs(angle(z3-z4)-45)<2:y4:=y3-(x3-x4);fi" rejected; moves y4 down too much
+ n: omit pull inside the arch (MC,RS)
+ introduce stem_shift, shifts this character and others slightly right (MC)
+ o: raise y2l and y4l (RS)
+ s: reduced sidebearing in sans (MC)
+ increased thickness at edges (.35 to .5) (RS)
+ changed to super_arc, and made it more_super (RS)
+ raised the top of upper barb to equal top of the character (RS)
+ removed typo (`tiny' for `fine')
+ reduced flare in upper terminal of sans, and rounded it properly
+ t: width to grow in bold case
+ height made independent of bar_height
+ slightly longer bar (MC)
+ v: decreased left stem (RS)
+ w: decreased stems (MC,RS)
+ monospace version drops middle from 2/3 to .6 and lengthens inner serifs
+ x: decreased left stem
+ y: decreased left stem
+ z: lighter diagonal, longer upper arm (MC,RS,NB)
+ROMANP.MF:
+ $: tau eliminated
+ROMANU.MF:
+ A: decrease right stem (MC)
+ make the bar thinner (MC,NB)
+ bar position based on y0 rather than bar_height
+ C: use cap_band instead of vair' at top and bottom (RS)
+ correct typo: x2l to be reset, not y2l
+ E: middle arm .35u longer, but beak reduced from .7 to .6 (MC)
+ F: top arm .25u longer; middle arm as E (MC)
+ G: same as C; also the bar is raised one pixel
+ J: slightly longer upper left serif
+ K: lower diagonal thinned and moved outward
+ M: monospace version raised still more in middle
+ N: diagonal thinned (MC,RS)
+ O: y2l and y4l raised
+ R: tail should move to the right (MC,RS,NB)
+ bold case gets wider (RS,NB)
+ S: changed as s (RS)
+ V: took stem_corr off the left stem (MC)
+ W: monospace version takes center down from 2/3 to .6, lengthens inner jut
+ X: took stem_corr off the left stem (MC)
+ Y: took stem_corr off the left stem (MC)
+ Z: diagonal made lighter in sans (MC)
+ upper arm made longer (MC,RS)
+ROMLIG.MF:
+ equalize stem weights (RS,NB)
+ROMSPL.MF:
+ ae, oe: incorporate changes of a and e and o
+ ss: more stem weight, less curve weight, less bulb (MC,NB)
+ dotless i,j: see i,j
+ROMSPU.MF:
+ AE: middle arm changes as E (MC)
+ if hefty and monospace, avoid the serif on middle arm
+ bars not aligned if hefty
+ if monospace, middle stem moves to right
+ OE: middle arm changes as in AE (MC)
+ middle stem lightened
+ROMSUB.MF:
+ blankspace: not so close to sides
+SYM.MF:
+CMR10.MF etc:
+ bar_height raised in the quote and bold fonts (MC,NB)
+ comma_depth in cmtt10 increased from 40 to 50 (MC)
+ cap_notch_cut decreased in cmsc10, cmsx10
+ apex_o decreased in cmr10, cmb10, cmbx10, cmbx5, cmcsc10, cmtt10
+ o decreased in cmb10
+ cap_jut decreased from 39 to 34 in cmb10; cap_serif_fit increased 5 to 6
+ cmbx5 gets smaller beak, fudge, cap_ess; more apex_corr
+GENERAL:
+ "robustness" added when points like x8r of "a" are calculated
+ (this affects a,b,d,varg,j,p,q,t,u,dj,ae,6,9,f_stroke)
+ "robustness" also added to avoid curl at end of paths
+ (this affects c,e,s,C,G,S,1,5,ae,oe,breve,parens)
+ "term" subroutine adds robustness for sans-serif terminals
+ (this affects C,G,J,S,f_stroke,j,ss,ae,oe,2,3,5,6,9,$,&,?,@)
+ code revised to use "pos" instead of "penpos" when possible
+ Changes based on the proofsheets of May and June, 1985
+ROMAND.MF:
+ 1: use o instead of apex_o
+ 4: bar line height shouldn't depend on bar_height
+ 5: sans-serif lower terminal position raised; depends on upper left edge
+ bug in arm at top (0 for 90) made all hefty arms too small
+ 9: disappears at link
+ROMANU.MF:
+ B: middle bar positioned by its middle, not its bottom (RS)
+ serifed lobes thickened slightly at bottom (RS)
+ C: lower terminal is tilted the other way
+ C,G: upper terminal in sans-serif is tilted slightly
+ upper barb is darkened
+ J: tilt the lower terminal
+ K: lighten the main diagonal (serif case) (RS)
+ lighten the upper diagonal (sans-serif case) (RS)
+ M: remove apex_corr (RS)
+ N: lighten the diagonal
+ P: too light below counter (RS)
+ Q: sharpen upper right corner of sans-serif tail (RS)
+ top of tail thickened and moved slightly left
+ S: less super at upper left and lower right (MC)
+ barb to go below baseline
+ barbs darkened
+ add weight at top, bottom in sans_serif version (RS)
+ tilt the lower terminal like the upper one
+ top weight needs to be maxed with fine.breadth
+ W: top middle stems allowed to overlap in serifed case
+ second inner serif made no longer than left outer serif (MC)
+ ceiling must become floor, to ensure that x5r>=x4r-mid_corr
+ Z: diagonal still too heavy, because previous change was ineffective
+ beaks made darker
+ better positioning of y2 and y3 when tiny is zero
+CSCSPU.MF:
+ J,SS: changes from J and S
+ROMANL.MF:
+ a: inappropriate uses of "fine" are removed
+ bh introduced to guard against "wild" bar heights
+ thin_join introduced at point 9
+ robustness logic changed so that x8l-x8r<=u
+ c: too much weight constrast between strokes in sans_serif (RS)
+ top terminal lowered to match a
+ bottom terminal tilted the other way
+ d: fine.breadth should have been thin_join as in b, p, q
+ e: 1+xpart changed to xpart
+ bottom terminal tilted the other way
+ g: sans-serif ear to use z0l and z0r
+ h,m,n: left inner serifs stay at jut length
+ i,l: mod_width for better fit at lowres
+ j: reposition stem for better fit (use .5w+2.5u, not w-2.5u)
+ remove bug in "pos" change
+ k: upper diagonal serif lengthened from 1.2jut to 1.4jut (RS)
+ diagonals made still lighter
+ r: thin_join introduced
+ s: barb to go below baseline
+ barbs darkened
+ add weight at top, bottom in sans_serif version (RS)
+ tilt the lower terminal like the upper one (RS)
+ top weight needs to be maxed with fine.breadth
+ t: bar extended still more at right (RS)
+ v: decreased the width by .25width_adj#
+ w: overlap allowed as in W
+ second inner serif made no longer than left outer serif (MC)
+ ceiling must become floor, to ensure that x5r>=x4r-mid_corr
+ x: decreased the width by .5width_adj# (RS)
+ y: sans-serif tail curls up too far (RS)
+ z: beaks too light; decrease the diagonal to compensate (RS)
+ better positioning of y2 and y3 when tiny is zero
+ROMSPL.MF:
+ dotless i and j: as i and j
+ ae and oe: bottom terminal tilted the other way
+ ae: corrected as a
+ROMSPU.MF:
+ AE: x12 based on x1l rather than x1, works better in bold cases (RS)
+ OE: left curve not to be pulled
+GREEKU.MF:
+ Phi and Psi: middle parts must keep away from the serifs
+ROMANP.MF:
+ $: strengthened the terminals in sans-serif case, and tilted them
+ &: opened the eye by moving point 8 left .5u (RS)
+ ?: tilted the sans-serif terminal and moved it down a little more
+PUNCT.MF:
+ %: move the diagonal a bit left at the top
+ ( and ): 3.5( changed to 3(.
+ [ and ]: round changed to ceiling and floor, avoids disappearing brackets
+ @: inner a placed by its edges instead of its stem centers (RS)
+ITALL.MF:
+ f: lower bulb moved left; .5 changed to .6 between bulb and stem
+ k: bug in lower right stroke (missing e's)
+ l: bug in italic correction for math fitting (u not u#)
+ m: avoid hooks in monospace version
+ p: lengthed left serif at bottom from .5jut to .75jut
+ x: bulbs moved .25u further out; .5 used between bulb and stem
+ w: avoid hook in monospace version
+ITALIG.MF:
+ all five: changed like f
+ fi: made 1u less wide
+ fl,ffl: made .5u less wide, bulb now touches the l stem
+ ffi: made .75u less wide
+GREEKL.MF:
+ beta, gamma, zeta, xi, omega, varepsilon: +eps at the tight turns
+ gamma: final diagonal should be more slanted (MC)
+ zeta: as tall as xi, shallower diagonal slant (MC)
+ kappa: bug in lower right stroke (missing e's)
+ xi: raise the bottom diagonal and distort arc slightly (MC)
+ chi: introduce slight curve in main diagonal stroke
+ varphi: too wide at right half bowl (MC)
+ITALMS.MF:
+ wp: bulb smaller, bottom a little more open
+ITALD.MF:
+ 5: changed like 5 in ROMAND
+OLDDIG.MF:
+ 2: top a bit narrower, bottom a bit wider (MC)
+ 5: changed like 5 in ROMAND
+SYM.MF:
+ plus-minus: shift depends on u not asc_height
+SYMBOL.MF:
+ minus-plus: shift depends on u not asc_height
+ up-and-down arrows (characters '154 and '155): taller and deeper
+ clubsuit: wider
+ spadesuit: y1+1 changed to y1+.75 (also in clubsuit)
+ROMAN.MF:
+ eliminated kerning between L and O,C,G,Q,U (also in TEXTIT and CSC)
+MATHEX.MF:
+ font_x_height needed to be set, for positioning of accents
+CMB10.MF:
+ dishing is too much (on all bold fonts)
+CMR5.MF:
+ letter_fit decreased 10 to 5
+CMBX5.MF:
+ fudge should be 1 (cap_stem 8=:7 in aps mode was too much)
+ decrease letter_fit drastically; this means f-ligatures must come back
+ lowercase parameters increased by 2/36
+CMBI10.MF:
+ lowercase serifs too short. (same change to all the italic fonts)
+CMSX10.MF:
+ decrease `ess' (RS)
+CMTC10.MF:
+ fudge is too much in lowercase
+CMCC10.MF:
+ lowercase more extended
+ much less letterspace in caps
+ increase lower.cap_curve, decrease lower.o
+CMSQI8.MF:
+ slope shouldn't be so much (RS)
+ increase `ess' (RS)
+
+GENERAL:
+ serif-abutment corrections changed to +1 instead of +2
+ vround used for vertical rounding
+
+CMBASE.MF:
+ new way to set shrink_fit (0,1,2) for monotonicity with letter_fit
+ letter_fit not included in mono_charwd
+ fine must be positive (else we lose barbs)
+ thin_join must be positive (else h_stroke gives a bad pos)
+ Changes based on the `version 0' test fonts of July 12
+[not showing hundreds of changes to the `typography' of the programs]
+
+Driver files in general:
+Frequency info (from MANUAL.TEX[tex,dek]) was used to order the ligtables
+font_xheight changed to font_x_height (a change to PLAIN.MF)
+
+Program files in general:
+ use `hround' instead of `round' wherever granularity might be wanted
+ less_rounded was taken out; autorounded occasionally put in
+ arm($,$$,...), the value of y$$ was adjusted by eps (lower) or -eps (upper)
+
+Parameter files in general:
+ new 12pt and 17+pt fonts; more sans serif fonts
+ new comment at bottom of all parameter files: `switch to the driver file'
+
+ACCENT.MF:
+ ^: eps subtracted from y1 (helps avoid degenerate equations in ultralowres)
+ '`: eps added to y1
+
+ROMAN.MF:
+ kern entry for gj had the wrong sign
+ kerns for v removed in sans serif
+ new kern for aj in serif case
+ new kern for ar in sans serif
+
+ROMAND.MF:
+ 3: pos3 needed to be maxed with fine.breadth
+ y1r,y9r needed to be adjusted by eps
+ 6,9: keep x1 on the correct side of x2 at lowlowres
+ (this change also affects OLDDIG, ITALD, and ITALMS partial sign)
+
+ROMANP.MF:
+ $: less_tense bulbs
+
+ROMSPL.MF:
+ ss: ensure x5 not > x4l at low resolutions
+
+ROMLIG.MF:
+ itc shouldn't include the slant...
+
+COMLIG.MF:
+ em dash should be one em wide (add letter_fit# to the adjustments)
+
+BIGOP.MF:
+ \displaystyle coproduct sign had 1.2bracket instead of 1.8bracket
+ charlist syntax changed from commas to colons
+
+BIGDEL.MF:
+ extensible double arrow: position wasn't computed as in top and bottom
+ charlist syntax changed from commas to colons
+
+BIGACC.MF:
+ charlist syntax changed from commas to colons
+
+ITALL.MF:
+ c: point 1 made definitely greater than point 2, for lowlowres
+ q: x4 increased by eps, for lowlowres path intersection
+ r: x4 based on w, not 5u
+ s: max(ess,fine.breadth)
+ add eps and 2eps for lowlowres case (cmmi6 at 100/in)
+
+ITALMS.MF:
+ wp: x6r must not be less than x1r at lowlowres
+
+TSETSL.MF:
+ gamma: last time's bugfix from GREEKL needs to be here too
+
+GREEKL.MF:
+ omega: add 2eps to x4-x6
+ lambda: make sure that y3>y4 at lowlowres
+ zeta: make sure that x2>x0 at lowlowres
+ varsigma: make sure that x1>x2 at lowlowres
+
+CMFIB8.MF:
+ decreased serif_fit, cap_serif_fit; increased curve, cap_curve
+
+CMBASE.MF:
+ l,r made newinternals
+ serif darkness and skew switches now done with boolean variables
+ comma and ammoc: 2eps addedto/subtractedfrom position of x@2
+ mod_width now called change_width
+ ess and cap_ess initialized to preserve ratios with stem and cap_stem
+ mode="string" had to be handled properly
+ ^ and ! changed to t_ and o_, as per new PLAIN conventions
+ make cmchar "outer"
+ t_ is now `relaxed' if it is useless
+ soft is now softjoin in PLAIN (we must set join_radius:=u)
+ eps is now in PLAIN
+ vair is vrounded but at least 1; also slab, etc.
+ cal nibs, yscaled by cap_hair not vair
+ autorounding and smoothing turned off
+
+ROMANL.MF:
+ a: `footed' version is .25u tighter at the right
+ b,d,varg,p,q: x4l position relative to .5(w-serif_fit) not 5u
+ e: testpath uses .r not .l (because of cmss10)
+ f: added 1 at right for monospace lowres versions
+ varg: robust sans-serif terminal at tail
+ m: missing `round' in r adjustment caused noninteger chardx
+ r: x4 based on w, not 5.25u
+ s: watch out that ess isn't so small that badpos error occurs (also ROMANU)
+ barbs made longer; based on middle stroke not just h
+ t: sans-serif terminal made more robust in extreme cases
+ w: in non-monospace hefty serif case, the middle point comes to .8h not h
+ y: robust sans-serif terminal at tail
+
+ROMANU.MF:
+ E: good.y used in y9
+
+PUNCT.MF:
+ []: side_thickness needed to be maxed with crisp.breadth
+ +1 or -1 makes lowres versions more distinctive
+ #: tricky part lost at low resolution
+
+SYMBOL.MF:
+ angle brackets: +1 and -1 to make lowres versions more distinctive
+ aleph: eps added so that y5 will be well defined at lowlowres
+
+SYM.MF:
+ integral sign: bulbs need to be in right direction at lowlowres
+
+CALU.MF:
+ A: apex moved slightly down
+ D: less flat at top, slightly lower lobe
+ F: u less right sidebar
+ H: soft corner at upper left
+ I: middle stroke more like J, upper bar a little further right
+ K: introduce t_ in case of aspect_ratio
+ L: darker
+ M: lighter first diagonal; clean the joins
+ N: lighter diagonal; clean bottom right; .5u less right sidebar
+ O: shortened the inner stroke
+ P: stem comes lower
+ Q: tail not so long at left
+ R: not so flat at top; diagonal less tense; tail less high
+ T: narrower, also changed like I, .5u less right sidebar,
+ heavier, not so high at right
+ U: less extreme curve at lower left
+ V: cleaned up at bottom; lighter first diagonal; slightly wider
+ W: changed like V, but double
+ X: new design, less rigid
+ Y: new design based more on V than U
+ Z: tighter at right, heavier at top and bottom
+
+CMSS10.MF:
+ decreased notch_cut and bar_height
+
+%Note: The following can presumably be deleted; I removed it from CMBASE because
+% I don't think it is used any more:
+vardef parallel_pos(expr d,u,v,w) = % point at distance $d$ from $u$,
+ % on the line through $w$ that's parallel to |u..v|
+ pair p_; p_=w+whatever*(u-v)=u+whatever*(u-v) rotated 90;
+ numeric d_; d_=length(u-p_); % distance from $w$ to |u..v|
+ if d_>=d: p_ else: p_+(d+-+d_)*unitvector(v-u) fi enddef;
+ Changes subsequent to `Version 1' as released on October 7, 1985.
+
+1. thin_join should be subject to blacker:
+@x in CMBASE.MF, the font_setup routine
+ define_whole_pixels(letter_fit,thin_join,fine,crisp,tiny);
+ define_whole_vertical_pixels(body_height,asc_height,
+ cap_height,fig_height,x_height,comma_depth,desc_depth,serif_drop);
+ define_whole_blacker_pixels(hair,stem,curve,flare,
+@y
+ define_whole_pixels(letter_fit,fine,crisp,tiny);
+ define_whole_vertical_pixels(body_height,asc_height,
+ cap_height,fig_height,x_height,comma_depth,desc_depth,serif_drop);
+ define_whole_blacker_pixels(thin_join,hair,stem,curve,flare,
+@z
+@x
+ if thin_join=0: thin_join:=1; fi
+@y
+@z
+[Note, December 11: My first correction also introduced the statement
+ if fine<thin_join: fine:=thin_join; fi
+in place of
+ if fine=0: fine:=1; fi
+but I can't understand why I would do such a stupid thing!]
+
+2. A new subroutine needed in CMBASE.MF (for cases with aspect_ratio<>1):
+vardef Vround primary y = y_:=vround y;
+ if y_<min_Vround: min_Vround else: y_ fi enddef;
+newinternal y_,min_Vround;
+
+@x related changes to the font_setup routine (in CMBASE.MF):
+ forsuffixes $=vair,bar,slab,cap_bar,cap_band:
+ $:=vround($.#*hppp+blacker); if $<=1: $:=1; fi endfor
+@y
+ define_whole_vertical_blacker_pixels(vair,bar,slab,cap_bar,cap_band);
+@z
+@x
+ vair':=max(1,vround(vair+vair_corr));
+ vstem:=max(1,vround .8[vair,stem]);
+ cap_vstem:=max(1,vround .8[vair,cap_stem]);
+@y
+ vair':=vround(vair+vair_corr);
+ vstem:=vround .8[vair,stem]; cap_vstem:=vround .8[vair,cap_stem];
+@z
+@x
+ pickup pencircle scaled rule_thickness; rule.nib:=savepen;
+@y
+ min_Vround:=max(fine.breadth,crisp.breadth,tiny.breadth);
+ forsuffixes $=vair,bar,slab,cap_bar,cap_band,vair',vstem,cap_vstem:
+ if $<min_Vround: $:=min_Vround; fi endfor
+ pickup pencircle scaled rule_thickness; rule.nib:=savepen;
+@z
+
+The Vround routine is substituted for vround in the programs for
+ Macron, line 6 (in ACCENT.MF)
+ Variant epsilon, line 5 (in GREEKL.MF)
+ Sigma, line 6 (in GREEKU.MF)
+ Omega, line 14 (in GREEKU.MF)
+ 2, line 6 (in OLDDIG.MF and ROMAND.MF)
+ 7, lines 6 and 8 (in OLDDIG.MF and ROMAND.MF)
+ g, lines 6 and 8 (in ROMANL.MF)
+ s, line 6 (in ROMANL.MF)
+ y, line 9 (in ROMANL.MF)
+ z, line 6 (in ROMANL.MF)
+ &, line 39 (in ROMANP.MF)
+ ?, line 18 (in ROMANP.MF)
+ Spanish open ?, line 17 (in ROMANP.MF)
+ Z, line 6 (in ROMANU.MF)
+ smile and frown, line 4 (in ROMMS.MF)
+
+3. Typo in program for oe ligature.
+@x in file ROMSPL.MF
+else: left_curve=max(tiny.breadth,hround(curve-2stem_corr));
+@y
+else: left_curve=max(fine.breadth,hround(curve-2stem_corr));
+@z
+
+4. Forgotten update to program for SS.
+@x in file CSCSPU.MF
+pickup fine.nib; pos2(max(fine.breadth,s_slab-vround vair_corr),-90);
+pos0(cap_ess,theta); pos7(s_slab,-90);
+x2+x7=2x0=w; x7-x2=if serifs: u else: 0 fi; top y2l=h+o; bot y7r=-o;
+y0=.52h; lft x3l=hround u; rt x6r=hround(w-u);
+x3r-x3l=x6r-x6l=hround .5[s_slab,cap_ess] -fine;
+@y
+numeric ess'; ess'=max(fine.breadth,cap_ess);
+pickup fine.nib; pos2(max(fine.breadth,s_slab-vround vair_corr),-90);
+pos0(ess',theta); pos7(s_slab,-90);
+x2+x7=2x0=w; x7-x2=if serifs: u else: 0 fi; top y2l=h+o; bot y7r=-o;
+y0=.52h; lft x3l=hround u; rt x6r=hround(w-u);
+x3r-x3l=x6r-x6l=hround .5[s_slab,ess']-fine;
+@z
+
+5. Hairline in `k' was overcorrected. (Pavel Curtis)
+@x in file ROMANL.MF
+stem3=max(tiny.breadth,hround(fudged.hair-4stem_corr));
+@y
+stem3=max(tiny.breadth,hround(fudged.hair if hefty:-\\4stem_corr fi));
+@z
+
+6. Too much kerning in "We", etc., in sans-serif fonts
+@x in file ROMAN.MF and TEXSET.MF
+ ligtable "F": "V": "W": "o" kern kk#, "e" kern kk#, "u" kern kk#,
+ "r" kern kk#, "a" kern kk#, "A" kern kkk#,
+@y
+ ligtable "F": "V": "W": if serifs: "o" kern kk#, "e" kern kk#, "u" kern kk#,
+ "r" kern kk#, "a" kern kk#, "A" kern kkk#,
+ else: "o" kern k#, "e" kern k#, "u" kern k#,
+ "r" kern k#, "a" kern k#, "A" kern kk#, fi
+@z
+@x in file TITLE.MF
+ ligtable "F": "V": "W": "A" kern kkk#,
+@y
+ ligtable "F": "V": "W": "A" kern if serifs: kkk# else: kk#\\fi,
+@z
+@x in file CSC.MF
+ ligtable "F": "V": "W": "a" kern kkk#, "A" kern kkk#,
+@y
+ ligtable "F": "V": "W": if serifs: "a" kern kkk#, "A" kern kkk#,
+ else: "a" kern kk#, "A" kern kk#, fi
+@z
+@x in file CSC.MF
+ ligtable "f": "v": "w": "a" kern kkk#,
+@y
+ ligtable "f": "v": "w": "a" kern if serifs: kkk# else: kk#\\fi,
+@z
+
+7. dish serifs need to be more robust when dishing is very small.
+@x in file CMBASE.MF
+ if y$<y$$: dish_out=bot y$; dish_in=dish_out+dish;
+ else: dish_out=top y$; dish_in=dish_out-dish; fi
+ erase fill\\(x@1,dish_out)..(x$,dish_in){right}..(x@@1,dish_out)--cycle;
+@y
+ if y$<y$$: dish_out=bot y$; dish_in=dish_out+dish; let rev_=reverse;
+ else: dish_out=top y$; dish_in=dish_out-dish; let rev_=relax; fi
+ erase fill rev_
+ ((x@1,dish_out)..(x$,dish_in){right}..(x@@1,dish_out)--cycle);
+@z
+
+8. more robustness in case thin_join is too big
+@x in file ROMANL.MF, program for "b"
+pos4(vair,90); pos5(curve,0);
+pos6(vair,-90); penpos7(x3l-x3r,-180);
+rt x3l=1/3[rt x2,edge]; y3=1/8[bar_height,x_height];
+@y
+pos4(vair,90); pos5(curve,0); pos6(vair,-90); penpos7(x3l-x3r,-180);
+rt x3l=max(rt x3l-(lft x3r-tiny.lft x2l),1/3[rt x2,edge]);
+y3=1/8[bar_height,x_height];
+@z
+@x ibid, program for "d"
+pos4(vair,90); pos5(curve,180);
+pos6(vair,270); penpos7(x3r-x3l,360);
+lft x3l=1/3[lft x2,edge]; y3=1/8[bar_height,x_height];
+@y
+pos4(vair,90); pos5(curve,180); pos6(vair,270); penpos7(x3r-x3l,360);
+lft x3l=min(lft x3l-(rt x3r-tiny.rt x2r),1/3[lft x2,edge]);
+y3=1/8[bar_height,x_height];
+@z
+@x ibid, program for variant "g"
+pos4(vair,90); pos5(curve,180);
+pos6(vair,270); penpos7(x3r-x3l,360);
+lft x3l=2/3[lft x2,edge]; y3=bar_height;
+@y
+pos4(vair,90); pos5(curve,180); pos6(vair,270); penpos7(x3r-x3l,360);
+lft x3l=min(lft x3l-(rt x3r-tiny.rt x2r),2/3[lft x2,edge]); y3=bar_height;
+@z
+@x ibid, program for "p"
+rt x3l=1/3[rt x2,edge]; y3=1/8[bar_height,x_height];
+@y
+rt x3l=max(rt x3l-(lft x3r-tiny.lft x2l), 1/3[rt x2,edge]);
+y3=1/8[bar_height,x_height];
+@z
+@x ibid, program for "q"
+lft x3l=2/3[lft x2,edge]; y3=bar_height;
+@y
+lft x3l=min(lft x3l-(rt x3r-tiny.rt x2r),2/3[lft x2,edge]); y3=bar_height;
+@z
+@x ibid, proram for "q"
+x6l=x4l-.2u; bot y6r=-oo;
+lft x7l=1/3[lft x2,edge]; y7=min(y3,y6+y4-y3+.6vair);
+@y
+x6l=x4l-.2u; bot y6r=-oo; y7=min(y3,y6+y4-y3+.6vair);
+lft x7l=min(lft x7l-(rt x7r-tiny.rt x2r),1/3[lft x2,edge]);
+@z
+
+9. More robust "c" and "e" and "C"
+@x in file ROMANL.MF, program for "c"
+ (x,y4l)=whatever[z4r,z5l]; x4l:=x;
+@y
+ (x,y4l)=whatever[z4r,z5l]; x4l:=min(x,x4l+.5u);
+@z
+@x ibid, program for "e"
+ (x,y4l)=whatever[z4r,z5]; x4l:=x;
+@y
+ (x,y4l)=whatever[z4r,z5]; x4l:=min(x,x4l+.5u);
+@z
+@x in file ROMSPL.MF, programs for "ae" and "oe"
+ (x,y14l)=whatever[z14r,z15]; x14l:=x;
+@y
+ (x,y14l)=whatever[z14r,z15]; x14l:=min(x,x14l+.5u);
+@z
+@x in file ROMANU.MF, programs for "C" and "G"
+ (x2l',y2l)=whatever[z2r,z1l]; x2l:=x2l';
+ (x4l',y4l)=whatever[z4r,z5l]; x4l:=x4l';
+@y
+ (x2l',y2l)=whatever[z2r,z1l]; x2l:=min(x2l',x2l+.5u);
+ (x4l',y4l)=whatever[z4r,z5l]; x4l:=min(x4l',x4l+.5u);
+@z
+
+10. More robust foot in "a"
+@x in file ROMANL.MF
+ filldraw stroke z5'e---z10e...z11e{right}; % foot
+@y
+ pos12(shaved_stem,0); x11=x12; top y12=slab+eps;
+ filldraw z5'l---z10l...z11l{right}--z11r
+ --z12r{left}...z10r+.75(z12-z11)---z5'r--cycle; % foot
+@z
+
+11. Barbs less sharp
+@x in file ROMANU.MF, programs for "C" and "G"
+ x6=x1r; top y6=h+o; x1r-x1'=2cap_curve-fine; y1'=y1;
+ path upper_arc; upper_arc=z1{x2-x1,10(y2-y1)}..z2{left};
+ numeric t; t=xpart(upper_arc intersectiontimes (z6--z1'));
+ filldraw z1r--z6--subpath(t,0) of upper_arc--cycle; % barb
+@y [actually "G" had something similar but not identical]
+ pos6(.3[fine.breadth,cap_hair],0); x6r=x1r; top y6=h+o;
+ x1r-x1'=2cap_curve-fine; y1'=y1;
+ path upper_arc; upper_arc=z1{x2-x1,10(y2-y1)}..z2{left};
+ numeric t; t=xpart(upper_arc intersectiontimes (z6l--z1'));
+ filldraw z1r--z6r--z6l--subpath(t,0) of upper_arc--cycle; % barb
+@z
+@x ibid, program for "S"
+ x10=x1l; top y10=top y2l; x9=x8r; bot y9=bot y7r;
+ x1l-x1'=x8'-x8r=1.6cap_curve-fine; y1'=y1; y8'=y8;
+ numeric t; t=xpart(upper_arc intersectiontimes(z10--z1'));
+ filldraw z1l--z10--subpath(t,0) of upper_arc--cycle; % upper barb
+ t:=xpart(lower_arc intersectiontimes(z9--z8'));
+ filldraw z8r--z9--subpath(t,1) of lower_arc--cycle; % lower barb
+@y
+ pos10(.3[fine.breadth,cap_hair],0); pos9(.3[fine.breadth,cap_hair],0);
+ x10r=x1l; top y10=top y2l; x9l=x8r; bot y9=bot y7r;
+ x1l-x1'=x8'-x8r=1.6cap_curve-fine; y1'=y1; y8'=y8;
+ numeric t; t=xpart(upper_arc intersectiontimes(z10l--z1'));
+ filldraw z1l--z10r--z10l--subpath(t,0) of upper_arc--cycle; % upper barb
+ t:=xpart(lower_arc intersectiontimes(z9r--z8'));
+ filldraw z8r--z9l--z9r--subpath(t,1) of lower_arc--cycle; % lower barb
+@z [the same change goes into file CSCSPU.MF, the program for two S's]
+@x in file ROMANL.MF, program for "s"
+ x10=x1l; top y10=top y2l; x9=x8r; bot y9=bot y7r;
+ x1l-x1'=x8'-x8r=1.6curve-fine; y1'=y1; y8'=y8;
+ numeric t; t=xpart(upper_arc intersectiontimes(z10--z1'));
+ filldraw z1l--z10--subpath(t,0) of upper_arc--cycle; % upper barb
+ t:=xpart(lower_arc intersectiontimes(z9--z8'));
+ filldraw z8r--z9--subpath(t,1) of lower_arc--cycle; % lower barb
+@y
+ pos10(.3[fine.breadth,cap_hair],0); pos9(.3[fine.breadth,cap_hair],0);
+ x10r=x1l; top y10=top y2l; x9l=x8r; bot y9=bot y7r;
+ x1l-x1'=x8'-x8r=1.6cap_curve-fine; y1'=y1; y8'=y8;
+ numeric t; t=xpart(upper_arc intersectiontimes(z10l--z1'));
+ filldraw z1l--z10r--z10l--subpath(t,0) of upper_arc--cycle; % upper barb
+ t:=xpart(lower_arc intersectiontimes(z9r--z8'));
+ filldraw z8r--z9l--z9r--subpath(t,1) of lower_arc--cycle; % lower barb
+@z
+
+12. Italic ampersand more robust
+@x in file ITALP
+ & pulled_arc.e(9,10)...{dir(theta+90)}z11e; % bowls, loop, and stem
+@y
+ & {{interim superness:=more_super; pulled_arc.e(9,10)}}
+ ..tension .9 and 1..{dir(theta+100)}z11e; % bowls, loop, and stem
+@z
+
+13. h_stroke more robust (esp in case of typewriter-style m)
+@x in file CMBASE
+ pickup fine.nib; pos@0(thin_join,180);
+@y
+ penpos@0(min(rt x$r-lft x$l,thin_join)-fine,180); pickup fine.nib;
+@z
+
+14. eliminate dishing in conflict with arm.
+Put a new subroutine into CMBASE.MF:
+def nodish_serif(suffix $,$$,@)(expr left_darkness,left_jut)
+ (suffix @@)(expr right_darkness,right_jut) suffix modifier =
+ serif($,$$,@,left_darkness,-left_jut) modifier;
+ serif($,$$,@@,right_darkness,right_jut) modifier; enddef;
+
+Now use this instead of dish_serif in the following places:
+GREEKU: Gamma, upper serif
+ Pi, both upper serifs (fix erroneous comments!)
+SYMBOL: Amalgamation, both lower serifs (fix erroneous comments!)
+ROMANU: B, both serifs
+ D, both serifs
+ E, both serifs
+ F, upper serif
+ L, lower serif
+ P, upper serif
+ R, upper serif
+ T, upper bracketing
+ROMSPU: AE, upper and lower middle serifs
+
+15. Change #2 wasn't quite good enough!
+@x in CMBASE
+ min_Vround:=max(fine.breadth,crisp.breadth,tiny.breadth);
+@y
+ min_Vround:=max(fine.breadth,crisp.breadth,tiny.breadth);
+ if min_Vround<vround min_Vround: min_Vround:=vround min_Vround; fi
+ if flare<vround flare: flare:=vround flare; fi
+@z
+
+16. body_depth# is now called paren_depth#, since body_depth is
+computed differently. (This is a cosmetic change only; it affects
+files CMBASE, PUNCT, SYM, SYMBOL, and ROMMS.)
+
+17. more robust Sigma
+@x in GREEKU, page 9
+top y1=h; bot y2=h-slab; bot y4=0; x3l-x1l=4/11(w-2u); y3=.5h;
+@y
+top y1=h; bot y2=h-slab-eps; bot y4=0; x3l-x1l=4/11(w-2u); y3=.5h;
+@z
+@x in BIGOP, page 7
+top_arm_thickness=rule_thickness;
+@y
+top_arm_thickness=Vround rule_thickness;
+@z
+@x in BIGOP, page 7 (this change needed twice)
+top y1=0; bot y2=-top_arm_thickness; bot y4=-d; y3=-.5d;
+@y
+top y1=0; bot y2=-top_arm_thickness-eps; bot y4=-d; y3=-.5d;
+@z
+
+18. yet another refinement of change #2
+@x in CMBASE
+ forsuffixes $=vair,bar,slab,cap_bar,cap_band,vair',vstem,cap_vstem:
+@y
+ forsuffixes $=vair,bar,slab,cap_bar,cap_band,vair',vstem,cap_vstem,bold:
+@z
+
+19. slightly more robust `k'
+@x in ROMANL
+top y3=x_height; rt x3r=hround(r-letter_fit-.7u-right_jut);
+bot y6=0; rt x6r=hround(r-letter_fit-.3u-right_jut);
+@y
+top y3=x_height; rt x3r=hround(r-letter_fit-.7u-right_jut)+eps;
+bot y6=0; rt x6r=hround(r-letter_fit-.3u-right_jut)+eps;
+@z
+
+20. small parameter changes for consistency
+@x in CMBX6
+dish#:=.9/36pt#; % amount erased at top or bottom of serifs
+@y
+dish#:=.8/36pt#; % amount erased at top or bottom of serifs
+@z
+@x in CMBX5
+dish#:=.75/36pt#; % amount erased at top or bottom of serifs
+@y
+dish#:=.7/36pt#; % amount erased at top or bottom of serifs
+@z
+@x in CMSS9 and CMSSI9 [these two lines are not consecutive in the files!]
+notch_cut#:=23/36pt#; % maximum breadth above or below notches
+cap_notch_cut#:=29/36pt#; % max breadth above/below uppercase notches
+@y
+notch_cut#:=17/36pt#; % maximum breadth above or below notches
+cap_notch_cut#:=24/36pt#; % max breadth above/below uppercase notches
+@z
+@x in CMSS8 and CMSSI8 [these two lines are not consecutive in the files!]
+notch_cut#:=21/36pt#; % maximum breadth above or below notches
+cap_notch_cut#:=27/36pt#; % max breadth above/below uppercase notches
+@y
+notch_cut#:=16/36pt#; % maximum breadth above or below notches
+cap_notch_cut#:=22/36pt#; % max breadth above/below uppercase notches
+@z
+@x in CMTI9
+cap_hair#:=10/36pt#; % uppercase hairline breadth
+@y
+cap_hair#:=11/36pt#; % uppercase hairline breadth
+@z
+@x in CMTI8
+cap_hair#:=9.5/36pt#; % uppercase hairline breadth
+@y
+cap_hair#:=11/36pt#; % uppercase hairline breadth
+@z
+@x in CMTI7
+cap_hair#:=9/36pt#; % uppercase hairline breadth
+@y
+cap_hair#:=10.5/36pt#; % uppercase hairline breadth
+@z
+@x in CMTCSC10
+lower.cap_notch_cut#:=24pt#; % max breadth above/below uppercase notches
+@y
+lower.cap_notch_cut#:=24/36pt#; % max breadth above/below uppercase notches
+@z
+
+21. New parameter file CMFI10 was added; font_identifier is "CMFI".
+Also changed the name `cmit10' to `cmitt10'; font_identifier is "CMITT".
+
+22. Still more changes for robustness (based on resolution h120 x v108).
+@x in ROMAND and ITALD, "5"
+bot y5=vround(.53h-vair); top y6r=vround .61803h+o;
+@y
+bot y5=vround(.53h-vair); top y6r=max(vround .61803h+o,top y6r+y5+eps-y6l);
+@z
+@x in OLDDIG, "5"
+bot y5=vround(.53[-d,h]-vair); top y6r=(vround .61803[-d,h])+o;
+@y
+bot y5=vround(.53[-d,h]-vair);
+top y6r=max((vround .61803[-d,h])+o,top y6r+y5+eps-y6l);
+@z
+@x in ROMANU, "C"
+ bot y1=vround max(.6h,x_height-.5vair); y5=good.y .95(h-y1);
+@y
+ bot y1=min(vround max(.6h,x_height-.5vair),bot y2l-eps);
+ y5=max(good.y .95(h-y1),y4l+eps);
+@z
+@x in ROMANU, "G"
+ bot y1=vround max(.6h,x_height-.5vair);
+@y
+ bot y1=min(vround max(.6h,x_height-.5vair),bot y2l-eps);
+@z
+@x in GREEKL page 6 and TSETSL page 8
+y1=.9h; top y2l=h+oo; top y8r=x_height+oo; y4=y8;
+@y
+top y2l=h+oo; y1=min(.9h,y2r-eps); top y8r=x_height+oo; y4=y8;
+@z
+@x in GREEKL page 16
+x6=x7=w-2u; x8=.5w+.5u; y6=-.3d; y8=-3/4d-oo; bot y7r=-d-oo;
+@y
+x6=x7=w-2u; x8=.5w+.5u; y6=-.3d; bot y7r=-d-oo; y8=max(-3/4d-oo,y7l);
+@z
+@x in ITALL page 12, ITALMS page 6, ITALSP page 4
+lft x5r=hround-.5u; x4=1/3(w-u);
+@y
+x4=1/3(w-u); lft x5r=min(hround-.5u,lft x5r+x4-x5l-eps);
+@z
+@x in ROMANL, "g"
+x11=x13=.5w; bot y13r=-d-oo-1; x14=w-x12; z10'l=z10l;
+@y
+x11=x13=max(.5w,x10+eps); bot y13r=-d-oo-1; x14=w-x12; z10'l=z10l;
+@z
+@x in ROMANL, "s"
+ filldraw stroke z1e..tension.9..{left}z2e; % upper arc and terminal
+ filldraw stroke z7e{left}..z8e; fi % lower arc and terminal
+@y
+ filldraw stroke term.e(2,1,right,.9,4); % upper arc and terminal
+ filldraw stroke term.e(7,8,left,1,4); fi % lower arc and terminal
+@z
+@x in ROMANL, "c"
+ filldraw stroke pulled_super_arc.e(2,3)(.7superpull)
+ & pulled_super_arc.e(3,4)(.5superpull)
+ ..tension .9 and 1..z5e; fi % arc and lower terminal
+@y
+ forsuffixes e=l,r: path p.e; p.e=z4e{right}..tension .9 and 1..z5e;
+ if angle direction 1 of p.e>75:
+ p.e:=z4e{right}..tension atleast.9 and 1..{dir 75}z5e; fi endfor
+ filldraw stroke pulled_super_arc.e(2,3)(.7superpull)
+ & pulled_super_arc.e(3,4)(.5superpull) & p.e; fi % arc and lower terminal
+@z
+@x in ROMSPL, page 5
+lft x8r=hround(stem_edge+.5u+1); x7=max(x8l+eps,.4[lft x8r,x6]);
+@y
+lft x8r=min(hround(stem_edge+.5u+1),lft x8r+x6r-2eps-x8l);
+x7=max(x8l+eps,.4[lft x8r,x6]);
+@z
+@x in ROMAND and OLDDIG, "2"
+ lft x1r=hround .75u; bot y1l=vround .7h; y1r:=good.y y1r; x1l:=good.x x1l;
+@y
+ lft x1r=hround .75u; bot y1l=vround .7h; y1r:=good.y y1r+eps; x1l:=good.x x1l;
+@z
+@x in SYMBOL, page 42 (Fraktur R)
+z=(z20{up}...{right}z21)intersectionpoint(z22l--z22l+(h,0) rotated theta);
+@y
+path p; p=z20{up}...(z21--(w,y21));
+z=p intersectionpoint(z22l--z22l+(h,0) rotated theta);
+@z
+
+23. Another consequence of change 2:
+"vround" should be "Vround" in the BIGDEL programs for extensible arrows
+(five times).
+Also five times in the BIGOP programs for summation, product, coproduct.
+
+24. Cosmetic change to bring CMBASE in line with PLAIN.
+@x in CMBASE.MF
+def pickup secondary q =
+ if numeric q: currentpen:=pen_[q];
+ pen_top:=pen_top_[q]; pen_bot:=pen_bot_[q];
+ pen_lft:=pen_lft_[q]; pen_rt:=pen_rt_[q];
+ currentpen_path:=pen_path_[q];
+ if known breadth_[q]: currentbreadth:=breadth_[q]; fi
+ else: currentpen:=q yscaled aspect_ratio;
+ pen_top:=(ypart penoffset left of currentpen)_o_;
+ pen_bot:=(ypart penoffset right of currentpen)_o_;
+ pen_lft:=xpart penoffset down of currentpen;
+ pen_rt:=xpart penoffset up of currentpen;
+ path currentpen_path;
+ fi enddef;
+@y
+def numeric_pickup_ primary q =
+ currentpen:=pen_[q];
+ pen_lft:=pen_lft_[q]; pen_rt:=pen_rt_[q];
+ pen_top:=pen_top_[q]; pen_bot:=pen_bot_[q];
+ currentpen_path:=pen_path_[q];
+ if known breadth_[q]: currentbreadth:=breadth_[q]; fi enddef;
+@z
+
+25. false italic correction in lambda of texset fonts (Feb 25, 1986)
+@x in TEXSET
+mode_setup; font_setup;
+@y
+mode_setup; font_setup; mono_charic#:=0;
+@z
+@x ibid
+slant:=mono_charic#:=0; % the remaining characters will not be slanted
+@y
+slant:=0; % the remaining characters will not be slanted
+@z
+[now remove the occurrences of `charic:=0;' in TSETSL, as they are unnecessary]
+
+*** The above changes are incorporated into the published book,
+*** Computer Modern Typefaces; this is "Version 2" (released March 5, 1986).
+ Changes subsequent to `Version 2' as published in C&T, Volume E:
+
+@x in GREEKU
+numeric shaved_stem; shaved_stem=hround .9[vair,.85cap_stem];
+@y
+numeric shaved_stem; shaved_stem=hround .9[vair,.85cap_stem];
+if shaved_stem<crisp.breadth: shaved_stem:=crisp.breadth; fi
+@z
+
+@x in CMSS9 [this affects the TFM file to a small extent!]
+fig_height#:=236/36pt#; % height of numerals
+@y
+fig_height#:=212/36pt#; % height of numerals
+@z
+
+@x in CMSSI9 [this affects the TFM file in ten hts and eleven italcorrs]
+fig_height#:=236/36pt#; % height of numerals
+@y
+fig_height#:=212/36pt#; % height of numerals
+@z
+
+@x in CMR17 [no change to TFM file]
+curve#:=41/36pt#; % lowercase curve breadth
+@y
+curve#:=40/36pt#; % lowercase curve breadth
+@z
+@x
+cap_stem#:=40/36pt#; % uppercase stem breadth
+cap_curve#:=48/36pt#; % uppercase curve breadth
+@y
+cap_stem#:=41/36pt#; % uppercase stem breadth
+cap_curve#:=47/36pt#; % uppercase curve breadth
+@z
+@x
+serif_drop#:=17/36pt#; % vertical drop of sloped serifs
+@y
+serif_drop#:=7/36pt#; % vertical drop of sloped serifs
+@z
+
+@x in ROMAND [this fixes the `disappearing hairline' in some lowres 8's]
+ lower_side=hround(.5[hair,stem]+stem_corr);
+@y
+ lower_side=hround(.5[hair,stem]+stem_corr);
+ if lower_side>1.2upper_side: upper_side:=lower_side; fi
+@z
+% Note: the SAME change should also be made in files ITALD and OLDDIG
+
+@x in ITALL [this fixes italic ell especially at low resolutions]
+top y1=h; x1=x2; filldraw stroke z1e--z2e; % stem
+@y
+top y1=h; x1=x2; filldraw stroke z1e--z2'e; % stem
+@z
+
+@x in SYM, the plus-or-minus character
+x1=x2=.5w; lft x3=lft=x5=hround u-eps; x4=x6=w-x3;
+@y
+x1=x2=.5w; lft x3=lft x5=hround u-eps; x4=x6=w-x3;
+@z actually the code worked but it was "infelicitous"
+
+@x in SYMBOL, the minus-or-plus character
+x1=x2=.5w; lft x3=lft=x5=hround u-eps; x4=x6=w-x3;
+@y
+x1=x2=.5w; lft x3=lft x5=hround u-eps; x4=x6=w-x3;
+@z actually the code worked but it was "infelicitous"
+
+@x in ROMANU, letter J [fixes a bug if dish=0 and crisp<tiny and serifs]
+ bulb(3,4,5); % bulb
+@y
+ pickup tiny.nib; bulb(3,4,5); % bulb
+@z
+
+@x in ROMANL, letter w [makes notch_cut more useful]
+ else: fill diag_end(6r,5r,1,1,5l,6l)--.5[z5l,z6l]
+ --.5[z5r,z6r]--cycle;% middle stem
+@y
+ else: fill diag_end(6r,5r,1,1,5l,6l)--.9[z5l,z6l]
+ ..{z5-z6}.1[z5r,z6r]--cycle; % middle stem
+@z the same change applies also to letter W in ROMANU
+
+@x in CMBASE, makes lowres types (especially TT) look better
+ define_blacker_pixels(notch_cut,cap_notch_cut);
+@y
+ define_blacker_pixels(notch_cut,cap_notch_cut);
+ forsuffixes $=notch_cut,cap_notch_cut: if $<3: $:=3; fi endfor
+@z
+
+@x in BIGOP, the \displaystyle coproduct sign
+lft x11=hround u; x1l-x11=x2l-x12=x22-x2r=hround cap_jut;
+@y
+lft x11=hround u; x1l-x11=x2l-x12=x22-x2r=hround 1.6cap_jut;
+@z
+
+@x in ROMANL, the letter m
+lft x1l=hround(2.5u-.5stem); x1l=x1'l=x2l=x2'l;
+lft x3l=hround(.5w-.5stem); x5-x3=x3-x1;
+if not monospace: r:=hround(x5+x1)-l; fi % change width for better fit
+@y
+lft x1l=hround(2.5u-.5stem); x1l=x1'l=x2l=x2'l; % stem, sic
+lft x3l=hround(.5w-.5mfudged.stem); x5-x3=x3-x1;
+if not monospace: r:=hround(x5+x1)+r-w; fi % change width for better fit
+@z
+
+@x a new routine for CMBASE, following change_width
+@y
+def center_on(expr x) = if not monospace: % change width for symmetric fit
+ r:=r+2x-w; w:=2x; fi enddef;
+@z
+@x in SYMBOL, the elementary division operator
+x3-.5dot_size=hround(.5w-.5dot_size); w:=r:=2x3;
+@y
+x3-.5dot_size=hround(.5w-.5dot_size); center_on(x3);
+@z
+Similarly, whenever the construction "w:=r:=2x*" appears, change it to
+"center_on(x*)". This happens in the programs for elementary division operator
+(as noted above), large triangle, large inverted triangle, lattice top,
+lattice bottom, dagger mark, double dagger mark, club/diamond/heart/spade suit
+(all in SYMBOL), plus the diamond operator and universal quantifier in SYM.
+The following additional change needs to be made in the programs
+for lattice top and lattice bottom:
+@x
+x1=x2=good.x .5w; center_on(x1); lft x3=hround u; x4=r-x3;
+@y
+x1=x2=good.x .5w; center_on(x1); lft x3=hround u; x4=w-x3;
+@z
+
+@x in SYMBOL, at end of zero-width slash
+labels(1,2); zero_width; endchar;
+@y
+labels(5,6); zero_width; endchar;
+@z
+
+@x in ROMANU, the letter Q (this change simply labels point 8 on proofs)
+math_fit(-.3cap_height#*slant-.5u#,ic#); penlabels(1,2,3,4,5,6,7); endchar;
+@y
+math_fit(-.3cap_height#*slant-.5u#,ic#);
+penlabels(1,2,3,4,5,6,7,8); endchar;
+@z
+
+@x in ROMANL, the letter i (this change by Jonathan Kew makes the dot rounder)
+if serifs: x3r=max(x1r,x1+.5(dot_diam-tiny)-.2jut) else: x3=x1-.5 fi;
+@y
+if serifs: x3r=max(x1r,hround(x1+.5dot_diam-.2jut)-.5tiny)
+else: x3=x1-.5 fi;
+@z
+
+-----------Improvements made in January 1992
+[No change to TFM files]
+@x in cmbase (improve lowres as suggested by John Hobby)
+def normal_adjust_fit(expr left_adjustment,right_adjustment) =
+ l:=-hround(left_adjustment*hppp)-letter_fit;
+ interim xoffset:=-l;
+ charwd:=charwd+2letter_fit#+left_adjustment+right_adjustment;
+ r:=l+hround(charwd*hppp)-shrink_fit;
+ w:=r-hround(right_adjustment*hppp)-letter_fit;
+ enddef;
+
+def mono_adjust_fit(expr left_adjustment,right_adjustment) =
+ numeric expansion_factor;
+ mono_charwd#=2letter_fit#
+ +expansion_factor*(charwd+left_adjustment+right_adjustment);
+ forsuffixes $=u,jut,cap_jut,beak_jut,apex_corr:
+ $:=$.#*expansion_factor*hppp; endfor
+ l:=-hround(left_adjustment*expansion_factor*hppp)-letter_fit;
+ interim xoffset:=-l;
+ r:=l+mono_charwd-shrink_fit;
+ w:=r-hround(right_adjustment*expansion_factor*hppp)-letter_fit;
+ charwd:=mono_charwd#; charic:=mono_charic#;
+ enddef;
+@y
+def do_expansion(expr expansion_factor) =
+ forsuffixes $=u,jut,cap_jut,beak_jut,apex_corr:
+ $:=$.#*expansion_factor*hppp; endfor
+enddef;
+
+def normal_adjust_fit(expr left_adjustment,right_adjustment) =
+ numeric charwd_in; charwd_in=charwd;
+ l:=-hround(left_adjustment*hppp)-letter_fit;
+ interim xoffset:=-l;
+ charwd:=charwd+2letter_fit#+left_adjustment+right_adjustment;
+ r:=l+hround(charwd*hppp)-shrink_fit;
+ w:=r-hround(right_adjustment*hppp)-letter_fit;
+ do_expansion(w/(charwd_in*hppp));
+ enddef;
+
+def mono_adjust_fit(expr left_adjustment,right_adjustment) =
+ numeric charwd_in; charwd_in=charwd;
+ numeric expansion_factor;
+ mono_charwd#=2letter_fit#
+ +expansion_factor*(charwd+left_adjustment+right_adjustment);
+ l:=-hround(left_adjustment*expansion_factor*hppp)-letter_fit;
+ interim xoffset:=-l;
+ r:=l+mono_charwd-shrink_fit;
+ w:=r-hround(right_adjustment*expansion_factor*hppp)-letter_fit;
+ charwd:=mono_charwd#; charic:=mono_charic#;
+ do_expansion(w/(charwd_in*hppp));
+ enddef;
+@z
+@x in SYM, Downward arrow
+pos3(bar,90); pos4(bar,90);
+lft x1l=hround(.5w-.5rule_thickness); y1+.5rule_thickness=h;
+x0=x1=x2; bot y0=-d; x0-x3=x4-x0=3u+eps;
+y3=y4=y0+.24asc_height+eps;
+pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+@y (make arrowheads heavier, as suggested by Zapf)
+pos3(rule_thickness,90); pos4(rule_thickness,90);
+lft x1l=hround(.5w-.5rule_thickness); y1+.5rule_thickness=h;
+x0=x1=x2; bot y0=-d; x0-x3=x4-x0=if monospace:3u else:4u fi+eps;
+y3=y4=y0+if monospace:.24 else:.36 fi asc_height+eps;
+pos5(rule_thickness,angle(z4-z0)); z5l=z0;
+pos6(rule_thickness,angle(z3-z0)); z6l=z0;
+z9=.2[.5[z3,z4],z0];
+@z
+@x in SYM, Upward arrow
+pos3(bar,90); pos4(bar,90);
+lft x1l=hround(.5w-.5rule_thickness); y1-.5rule_thickness=-d;
+x0=x1=x2; top y0=h; x0-x3=x4-x0=3u+eps;
+y3=y4=y0-.24asc_height-eps;
+pos5(bar,angle(z4-z0)); z5l=z0;
+pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+@y
+pos3(rule_thickness,90); pos4(rule_thickness,90);
+lft x1l=hround(.5w-.5rule_thickness); y1-.5rule_thickness=-d;
+x0=x1=x2; top y0=h; x0-x3=x4-x0=if monospace:3u else:4u fi+eps;
+y3=y4=y0-if monospace:.24 else:.36 fi asc_height-eps;
+pos5(rule_thickness,angle(z4-z0)); z5l=z0;
+pos6(rule_thickness,angle(z3-z0)); z6l=z0;
+z9=.2[.5[z3,z4],z0];
+@z
+@x in SYM, Leftward arrow
+pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis; x1+.5rule_thickness=hround(w-u); lft x0=hround u;
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+@y
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y0=y1=y2=math_axis; x1+.5rule_thickness=hround(w-u); lft x0=hround u;
+y3-y0=y0-y4=if monospace:.24 else:.36 fi asc_height+eps;
+x3=x4=x0+if monospace:3u else:4u fi+eps;
+pos5(rule_thickness,angle(z4-z0)); z5l=z0;
+pos6(rule_thickness,angle(z3-z0)); z6l=z0;
+z9=.2[.5[z3,z4],z0];
+@z
+@x in SYM, Rightward arrow
+pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=hround u; rt x0=hround(w-u);
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-4u-eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+@y
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=hround u; rt x0=hround(w-u);
+y3-y0=y0-y4=if monospace:.24 else:.36 fi asc_height+eps;
+x3=x4=x0-if monospace:3u else:4u fi-eps;
+pos5(rule_thickness,angle(z4-z0)); z5l=z0;
+pos6(rule_thickness,angle(z3-z0)); z6l=z0;
+z9=.2[.5[z3,z4],z0];
+@z
+@x in SYM, Left-and-right arrow
+pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis if monospace:+vround.3asc_height fi; lft x0=hround u;
+if monospace: x1+.5rule_thickness=hround(w-u) else: x1=.5w fi;
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+@y
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y0=y1=y2=math_axis if monospace:+vround.3asc_height fi; lft x0=hround u;
+if monospace: x1+.5rule_thickness=hround(w-u) else: x1=.5w fi;
+y3-y0=y0-y4=if monospace:.24 else:.36 fi asc_height+eps;
+x3=x4=x0+if monospace:3u else:4u fi+eps;
+pos5(rule_thickness,angle(z4-z0)); z5l=z0;
+pos6(rule_thickness,angle(z3-z0)); z6l=z0;
+z9=.2[.5[z3,z4],z0];
+@z
+@x ibid
+pos11(rule_thickness,90); pos12(rule_thickness,90); pos13(bar,0); pos14(bar,0);
+y10=y11=y12=math_axis if monospace:-vround.3asc_height fi;
+rt x10=hround(w-u);
+if monospace: x11-.5rule_thickness=hround u else: x11=.5w fi;
+y13-y10=y10-y14=.24asc_height+eps; x13=x14=x10-3u-eps;
+pos15(bar,angle(z14-z10)); z15l=z10; pos16(bar,angle(z13-z10)); z16l=z10;
+z19=.381966[.5[z13,z14],z10];
+@y
+pos11(rule_thickness,90); pos12(rule_thickness,90);
+pos13(rule_thickness,0); pos14(rule_thickness,0);
+y10=y11=y12=math_axis if monospace:-vround.3asc_height fi;
+rt x10=hround(w-u);
+if monospace: x11-.5rule_thickness=hround u else: x11=.5w fi;
+y13-y10=y10-y14=if monospace:.24 else:.36 fi asc_height+eps;
+x13=x14=x10-if monospace:3u else:4u fi-eps;
+pos15(rule_thickness,angle(z14-z10)); z15l=z10;
+pos16(rule_thickness,angle(z13-z10)); z16l=z10;
+z19=.2[.5[z13,z14],z10];
+@z
+@x in SYMBOL, Up-and-down arrow
+pos3(bar,90); pos4(bar,90);
+lft x1l=hround(.5w-.5rule_thickness); y1=.5[-d,h];
+x0=x1=x2; bot y0=-d-o; x0-x3=x4-x0=3u+eps;
+y3=y4=y0+.24asc_height+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+@y
+pos3(rule_thickness,90); pos4(rule_thickness,90);
+lft x1l=hround(.5w-.5rule_thickness); y1=.5[-d,h];
+x0=x1=x2; bot y0=-d-o; x0-x3=x4-x0=4u+eps;
+y3=y4=y0+.36asc_height+eps;
+pos5(rule_thickness,angle(z4-z0)); z5l=z0;
+pos6(rule_thickness,angle(z3-z0)); z6l=z0;
+z9=.2[.5[z3,z4],z0];
+@z
+@x ibid
+pos13(bar,90); pos14(bar,90);
+x10=x11=x12; top y10=h+o; x10-x13=x14-x10=3u+eps;
+y13=y14=y10-.36asc_height-eps;
+pos15(bar,angle(z14-z10)); z15l=z10;
+pos16(bar,angle(z13-z10)); z16l=z10;
+z19=.381966[.5[z13,z14],z10];
+@y
+pos13(rule_thickness,90); pos14(rule_thickness,90);
+x10=x11=x12; top y10=h+o; x10-x13=x14-x10=4u+eps;
+y13=y14=y10-.24asc_height-eps;
+pos15(rule_thickness,angle(z14-z10)); z15l=z10;
+pos16(rule_thickness,angle(z13-z10)); z16l=z10;
+z19=.2[.5[z13,z14],z10];
+@z
+@x in SYMBOL, Northeast arrow
+pos3(bar,theta); pos4(bar,theta);
+y3=y0; x4=x0; x0-x3=y0-y4=delta+eps;
+pos5(bar,-90); z5l=z0; pos6(bar,-180); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+@y
+pos3(rule_thickness,theta); pos4(rule_thickness,theta);
+z3-z0=(-4u,.36asc_height) rotated theta;
+z4-z0=(-4u,-.36asc_height) rotated theta;
+pos5(rule_thickness,-90); z5l=z0; pos6(rule_thickness,-180); z6l=z0;
+z9=.2[.5[z3,z4],z0];
+@z
+@x in SYMBOL, Southeast arrow
+pos3(bar,theta); pos4(bar,theta);
+x3=x0; y4=y0; y3-y0=x0-x4=delta+eps;
+pos5(bar,180); z5l=z0; pos6(bar,90); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+@y
+pos3(rule_thickness,theta); pos4(rule_thickness,theta);
+z3-z0=(-4u,.36asc_height) rotated theta;
+z4-z0=(-4u,-.36asc_height) rotated theta;
+pos5(rule_thickness,180); z5l=z0; pos6(rule_thickness,90); z6l=z0;
+z9=.2[.5[z3,z4],z0];
+@z
+@x in SYMBOL, Northwest arrow
+pos3(bar,-180+theta); pos4(bar,-180+theta);
+x3=x0; y4=y0; x4-x0=y0-y3=delta+eps;
+pos5(bar,0); z5l=z0; pos6(bar,-90); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+@y
+pos3(rule_thickness,-180+theta); pos4(rule_thickness,-180+theta);
+z4-z0=(4u,.36asc_height) rotated theta;
+z3-z0=(4u,-.36asc_height) rotated theta;
+pos5(rule_thickness,0); z5l=z0; pos6(rule_thickness,-90); z6l=z0;
+z9=.2[.5[z3,z4],z0];
+@z
+@x in SYMBOL, Southwest arrow
+pos3(bar,-180+theta); pos4(bar,-180+theta);
+y3=y0; x4=x0; x3-x0=y4-y0=delta+eps;
+pos5(bar,90); z5l=z0; pos6(bar,0); z6l=z0;
+z9=.381966[.5[z3,z4],z0];
+@y
+pos3(rule_thickness,-180+theta); pos4(rule_thickness,-180+theta);
+z4-z0=(4u,.36asc_height) rotated theta;
+z3-z0=(4u,-.36asc_height) rotated theta;
+pos5(rule_thickness,90); z5l=z0; pos6(rule_thickness,0); z6l=z0;
+z9=.2[.5[z3,z4],z0];
+@z
+@x in ROMMS, Leftward top half arrow
+pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis; x1+.5rule_thickness=hround(w-u); lft x0=hround u;
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+@y
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y0=y1=y2=math_axis; x1+.5rule_thickness=hround(w-u); lft x0=hround u;
+y3-y0=y0-y4=.36asc_height+eps; x3=x4=x0+4u+eps;
+pos5(rule_thickness,angle(z4-z0)); z5l=z0;
+pos6(rule_thickness,angle(z3-z0)); z6l=z0;
+@z
+@x in ROMMS, Leftward bottom half arrow
+pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis; x1+.5rule_thickness=hround(w-u); lft x0=hround u;
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+@y
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y0=y1=y2=math_axis; x1+.5rule_thickness=hround(w-u); lft x0=hround u;
+y3-y0=y0-y4=.36asc_height+eps; x3=x4=x0+4u+eps;
+pos5(rule_thickness,angle(z4-z0)); z5l=z0;
+pos6(rule_thickness,angle(z3-z0)); z6l=z0;
+@z
+@x in ROMMS, Rightward top half arrow
+pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=hround u; rt x0=hround(w-u);
+y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-3u-eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+@y
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=hround u; rt x0=hround(w-u);
+y3-y0=y0-y4=.36asc_height+eps; x3=x4=x0-4u-eps;
+pos5(rule_thickness,angle(z4-z0)); z5l=z0;
+pos6(rule_thickness,angle(z3-z0)); z6l=z0;
+@z
+@x in ROMMS, Rightward bottom half arrow
+pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=hround u; rt x0=hround(w-u);
+y3-y0=y0-y4=.asc_height+eps; x3=x4=x0-3u-eps;
+pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+@y
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=hround u; rt x0=hround(w-u);
+y3-y0=y0-y4=.36asc_height+eps; x3=x4=x0-4u-eps;
+pos5(rule_thickness,angle(z4-z0)); z5l=z0;
+pos6(rule_thickness,angle(z3-z0)); z6l=z0;
+@z
+@x in CALU, Calligraphic F
+top y1=top y6=h; z2=.5[z3,z1]+bend;
+bot y3=-o; y4=.1h; y5=y2; y7=.9h;
+draw flex(z1,z2,z3) softjoin (z3...{x4-x3,5(y4-y3)}z4); % stem
+draw z1-flourish_change{up}...z1---z6...{down}z7; % upper bar
+@y
+top y1=top y6=h; z2=.5[z3,z1]+1.2bend;
+bot y3=-o; y4=.1h; y5=y2; y7=.9h;
+draw flex(z1,z2,z3) softjoin (z3...{x4-x3,5(y4-y3)}z4); % stem
+draw z1-flourish_change{up}...(z1-(u,0))---z6...{down}z7; % upper bar
+@z
+@x in CALU, Calligraphic H
+lft x1=lft x3=0; rt x4=rt x6=.8w; rt x9=w;
+top y1=top y4=h; bot y3=-o; bot y6=bot_flourish_line; y9=y6+.1h;
+z2=.6[z3,z1]+bend; z5=.4[z6,z4]-2bend;
+path p[]; p1=flex(z1,z2,z3); p2=flex(z4,z5,z6);
+p3=(-w,.55h)--(2w,.55h);
+lft z7=p3 intersectionpoint p1; rt z8=p3 intersectionpoint p2;
+draw (z1-flourish_change{up}....z1-(u,0)---z1) softjoin p1; % left stem
+@y
+lft x1=lft x3=.5u; rt x4=rt x6=.8w-.6u; rt x9=w;
+top y1=top y4=h; bot y3=-.06h; bot y6=bot_flourish_line; y9=y6+.1h;
+z2=.6[z3,z1]+bend; z5=.4[z6,z4]-bend;
+path p[]; p1=flex(z1,z2,z3); p2=flex(z4,z5,z6);
+p3=(-w,.45h)--(2w,.45h);
+rt z7+2bend=p3 intersectionpoint p1; rt z8=p3 intersectionpoint p2;
+draw (z1-flourish_change-bend{curl2}....z1-(u,0)---z1) softjoin p1; % left stem
+@z
+@x in CALU, Calligraphic I
+lft x0=0; x1=.9w; x2=x4=.5w; x5=.2w; x6=.75w; rt x7=w;
+@y
+lft x0=0; x1=.9w; x2=x4=.5w; x5=.2w; x6=.8w; rt x7=1.05w;
+@z
+@x in CALU, Calligraphic T
+x1=x3=.5w; lft x4=0; x5=w-x6=.25w; rt x7=w;
+x1=.47w; x3=.5w; lft x4=0; x5=w-x6=.25w; rt x7=1.05w;
+z2=.5[z3,z1]+bend;
+x1-x8=x9-x1=2u; y8=y9=y3;
+z0=1/3[z1,z6];
+draw z0{left}...z2{down}...{left}z8; % stem
+draw z8--z9; % foot
+draw z4{up}...z5{right}...z6{right}...{up}z7; % arms
+math_fit(.5u#-5/7h#*slant,-u#); labels(1,2,3,4,5,6,7,8,9); endchar;
+@y
+x1=.47w; x3=.5w; lft x4=0; x5=.25w; x6=.85w; rt x7=1.05w;
+top y1=h; bot y3=-.1h; y4=3/4h; top y5=top y6=h; top y7=1.05h;
+z2=.3[z3,z1]+bend;
+top y0=y1; x0=x2;
+z8=(2u,.2h);
+draw z0---z2...z3; % stem
+draw z4{curl 2}...z5{right}...z6{right}...{up}z7; % arms
+math_fit(.5u#-5/7h#*slant,-u#); labels(1,2,3,4,5,6,7); endchar;
+@z
+@x in GREEKL, lowercase delta
+pos1(hair,-180); pos2(vair,-90);
+numeric theta; theta=angle(18u,-h);
+pos3(stem,theta+90); pos4(stem,theta+90); pos5(1/4[hair,stem],20);
+pos6(vair,-90); pos7(curve,-180); pos8(vair,-270);
+rt x1l=hround(w-2u+.5hair); x2=.5w; x3r=3u; rt x5r=hround(w-u);
+x4=x6=x8=.5w+.5u; lft x7r=hround(1.5u-.5curve);
+top y2l=h+oo; y1=min(.9h,y2r-eps); top y8r=x_height+oo; y4=y8;
+z4-z3=whatever*(18u,-h); y5=y7=.5[y6,y8]; bot y6=-oo;
+filldraw stroke z1e{x2-x1,3(y2-y1)}...z2e{left}...z3e---z4e
+ ....z5e{down}...pulled_arc.e(6,7) & pulled_arc.e(7,8); % hook and bowl
+math_fit(-.3x_height#*slant+.5curve#-u#,.7x_height#*slant-.5u#);
+penlabels(1,2,3,4,5,6,7,8); endchar;
+@y
+x0=-u; y0=1.1h;
+numeric light_flare; light_flare=2/3[vair,flare];
+x1=w-2u-.5light_flare; y1=h-.5light_flare;
+numeric theta; theta=angle (z1-z0);
+pos1(light_flare,theta-90); pos2(.2[vair,light_flare],-90); pos3(vair,theta);
+x2=x3+u; y2=h;
+x4=x6=.5w+.5u; top y8r=x_height+oo; z4=z8;
+pos6(vair,-90); pos7(stem,-180); pos8(vair,-270);
+pos4(stem,angle(z4-z0)+90); pos5(stem,30);
+z3=.5[.5[z1,z4],z0];
+y5+.1x_height=y7=.5[y6,y8]; bot y6=-oo;
+lft x7r=hround(1.4u-.5stem); rt x5r=hround(w-u);
+filldraw stroke z1e{z0-z1e}....z2e....z3e{(z0-z1)rotated 90}
+ ...z4e{z4e-.8[z4,z0]}
+ ....z5e{down}...pulled_arc.e(6,7) & pulled_arc.e(7,8); % hook and bowl
+filldraw z1r{z1r-z0}...z1l{z0-z1l}--cycle; % bulb
+math_fit(-.3x_height#*slant+.5curve#-u#,.7x_height#*slant-.5u#);
+penlabels(0,1,2,3,4,5,6,7,8); endchar;
+@z
+@x in TSETSL, lowercase delta for extended ASCII
+pos1(hair,-180); pos2(vair,-90);
+numeric theta; theta=angle(18u,-h);
+pos3(stem,theta+90); pos4(stem,theta+90); pos5(1/4[hair,stem],20);
+pos6(vair,-90); pos7(curve,-180); pos8(vair,-270);
+rt x1l=hround(w-2u+.5hair); x2=.5w; x3r=3u; rt x5r=hround(w-u);
+x4=x6=x8=.5w+.5u; lft x7r=hround(1.5u-.5curve);
+top y2l=h+oo; y1=min(.9h,y2r-eps); top y8r=x_height+oo; y4=y8;
+z4-z3=whatever*(18u,-h); y5=y7=.5[y6,y8]; bot y6=-oo;
+filldraw stroke z1e{x2-x1,3(y2-y1)}...z2e{left}...z3e---z4e
+ ....z5e{down}...pulled_arc.e(6,7) & pulled_arc.e(7,8); % hook and bowl
+penlabels(1,2,3,4,5,6,7,8); endchar;
+@y this next line differs from GREEKL, but the other lines agree
+x0=-u; y0=1.05h;
+numeric light_flare; light_flare=2/3[vair,flare];
+x1=w-2u-.5light_flare; y1=h-.5light_flare;
+numeric theta; theta=angle (z1-z0);
+pos1(light_flare,theta-90); pos2(.2[vair,light_flare],-90); pos3(vair,theta);
+x2=x3+u; y2=h;
+x4=x6=.5w+.5u; top y8r=x_height+oo; z4=z8;
+pos6(vair,-90); pos7(stem,-180); pos8(vair,-270);
+pos4(stem,angle(z4-z0)+90); pos5(stem,30);
+z3=.5[.5[z1,z4],z0];
+y5+.1x_height=y7=.5[y6,y8]; bot y6=-oo;
+lft x7r=hround(1.4u-.5stem); rt x5r=hround(w-u);
+filldraw stroke z1e{z0-z1e}....z2e....z3e{(z0-z1)rotated 90}
+ ...z4e{z4e-.8[z4,z0]}
+ ....z5e{down}...pulled_arc.e(6,7) & pulled_arc.e(7,8); % hook and bowl
+filldraw z1r{z1r-z0}...z1l{z0-z1l}--cycle; % bulb
+penlabels(0,1,2,3,4,5,6,7,8); endchar;
+@z
+
+----------- Changes made after the fourth printing (1993) of Volume E
+
+@x in CSCSPU, letter J [fixes a bug if dish=0 and crisp<tiny and serifs]
+ bulb(3,4,5); % bulb
+@y
+ pickup tiny.nib; bulb(3,4,5); % bulb
+@z
+
+@x in BIGDEL, two harmless bugs caught by Robert Hunt
+"Extensible vertical arrow--extension module";
+@y
+cmchar "Extensible vertical arrow--extension module";
+@z
+@x
+"Extensible double vertical arrow--extension module";
+@y
+cmchar "Extensible double vertical arrow--extension module";
+@z
+
+@x in GREEKU, letter Phi (hi-res glitch found by Robert Hunt)
+lft x1l=lft x2l=hround(.5w-.5cap_stem); top y1=h; bot y2=0;
+@y
+lft x1l=lft x2l=hround(.5w-.5shaved_stem); top y1=h; bot y2=0;
+@z
+@x in GREEKU, letter Psi similarly
+lft x1l=lft x2l=hround(.5w-.5cap_stem); top y1=h; bot y2=0;
+@y
+lft x1l=lft x2l=hround(.5w-.5shaved_stem); top y1=h; bot y2=0;
+@z
+
+@x in BIGOP, teststyle integral sign
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5stem);
+@y
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5curve);
+@z
+@x same, displaystyle integral sign
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5stem);
+@y
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5max_size);
+@z
+@x same, textstyle contour integral sign
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5stem);
+@y
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5curve);
+@z
+@x same, displaystyle contour integral sign
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5stem);
+@y
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5max_size);
+@z
+
+@x in ITALMS, the partial differential sign
+path p; p=pulled_super_arc.l(3,4)(pull);
+@y
+path p; {{interim superness:=more_super; p=pulled_super_arc.l(3,4)(pull)}};
+@z
+
+@x in SYMBOL, the elementary division operator
+beginarithchar(oct"004"); pickup rule.nib;
+x3-.5dot_size=hround(.5w-.5dot_size); center_on(x3);
+y3+.5dot_size=vround(math_axis+math_spread[.5x_height,.6x_height]+.5dot_size);
+@y note that pickup rule.nib leaves currentbreadth unchanged
+beginarithchar(oct"004"); pickup fine.nib; pickup rule.nib;
+numeric del; del=dot_size-currentbreadth; % currentbreadth=fine
+x3-.5del=good.x(.5w-.5del); center_on(x3);
+y3+.5del=good.y(math_axis+math_spread[.5x_height,.6x_height]+.5del);
+@z
+
+@x in CMBASE, compute_spread can force even spreads for better rounding
+ spread:=ceiling(spread#*hppp)+eps; enddef;
+@y
+ spread:=2ceiling(spread#*hppp/2)+eps; enddef;
+@z
+
+@x in CMBASE, better diag_ratio routine avoids overflow in hi-res chars
+ numeric a_,b_; b_=b/y; a_=a*a-b_*b_;
+ (a*(c++y*sqrt a_)-b_*c)/a_/y enddef;
+@y
+ numeric a_,b_,c_; b_=b/y; c_=c/y; a_=a*a-b_*b_;
+ (a*(c_++sqrt a_)-b_*c_)/a_ enddef;
+@z
+
+@x in ROMAND, numeral 3, allow hi-res cminch to run without overflow (MacKay)
+x4=1/3[x5,x3l]; z4=z5+whatever*(150u,h);
+@y
+x4=1/3[x5,x3l]; z4=z5+whatever*(15u,.1h);
+@z
+
+@x in ITALP, the Sterling sign (bug caught by Yannis Haralambous)
+lft x6r=hround u; x7=3u; x8=w-3.5u; rt x9r=hround(w-u);
+@y
+lft x6r=hround u; x7=3u; x8=w-3.5u; rt x9l=hround(w-u);
+@z
+
+@x in GREEKL, lowercase omega, I made minor changes for new edition of TAOCP:
+y1+.5hair=h; x1=x2+.75u; pos1(hair,angle(2(x1-x2),y1-y2)+90);
+@y
+y1+.5hair=h; x1=x2+.75u; pos1(hair+dw,angle(2(x1-x2),y1-y2)+90);
+@z
+@x
+x3=.5[x2,x4]; x7+.25u=.5[x6,x8]; rt x8r=hround(w-.5u);
+@y
+x3=.5[x2,x4]; x7-.25u=.5[x6,x8]; rt x8r=hround(w-.5u);
+@z
+
+@x in GREEKL, lowercase beta, I made minor changes for new edition of TAOCP:
+pos3(stem,0); pos4(vair,-90); pos5(hair,-180);
+pos6(vair,-270); pos7(curve,-360); pos8(vair,-450); pos9(hair,-540);
+x0=x1=x9; lft x0l=hround(1.5u-.5hair); x2=x4=x6=x8=.5w+.25u;
+rt x3r=hround(w-1.5u); rt x7r=hround(w-1.5u+.5curve); rt x5l=hround(x4-u);
+bot y0=-d; y1=top y6r=x_height; top y2r=h+oo; y3=.5[y2,y4];
+y5=.5[y4,y6]; top y6r-bot y4r=vstem+eps; bot y8=-oo; y7=y9=.5[y6,y8];
+@y (this change also is made in TSETSL)
+pos3(.8[hair,stem],0); pos4(vair,-90); pos5(hair,-180);
+pos6(vair,-270); pos7(stem,-360); pos8(vair,-450); pos9(hair,-540);
+x0=x1=x9; lft x0l=hround(1.5u-.5hair); x2=x4=x6=x8=.5w-.25u;
+rt x3r=hround(w-1.75u); rt x7r=hround(w-u); rt x5l=hround(x4-u);
+bot y0=-d; y1=top y6r=x_height; top y2r=h+oo; y3=.5[y2,y4];
+y5=.5[y4,y6]; top y6r-bot y4r=vstem+eps; bot y8=-oo; y7=y9=.55[y6,y8];
+@z
+
+@x in ROMANU, less overshoot on uppercase sans serif C (for Vol 2 of TAOCP)
+ top y1r=vround .95h+o; top y2r=h+o; y3=.5h;
+ bot y4r=-o; bot y5r=vround .08h-o; y5l:=good.y y5l; x5l:=good.x x5l;
+@y
+ top y1r=vround .95h+oo; top y2r=h+oo; y3=.5h;
+ bot y4r=-oo; bot y5r=vround .08h-oo; y5l:=good.y y5l; x5l:=good.x x5l;
+@z
+
+@x in ROMANU, likewise for G
+ top y1r=vround .93h+o; top y2r=h+o; y3=.5h;
+ bot y4r=-o; bot y5r=vround .07h-o;
+@y
+ top y1r=vround .93h+oo; top y2r=h+oo; y3=.5h;
+ bot y4r=-oo; bot y5r=vround .07h-oo;
+@z
+
+@x in SYMBOL, spade suit, a cosmetic change that doesn't affect any fonts:
+labels(1,2,3,5,6,10,11,12,13,14,15); endchar;
+@y
+labels(1,2,3,5,6,7,8,9,10,11,12,13,14,15); endchar;
+@z
+
+@x in CMBASE, sloped_serif.l never used $$ except rarely in letter p
+ y@0=max(y@2l-bracket,y$$)-eps;
+@y and in letter p, it was wrong to do so! (but not in any normal font)
+ y@0=y@2l-bracket-eps;
+@z
+@x sloped_serif.r never used $$ in any reasonable way at all
+ y@0=min(y@2l+bracket,y$$)+eps;
+@y
+ y@0=y@2l+bracket+eps;
+@z
+
+in ITALD, programs for 6 and 9: same change as above for partial derivative
+in OLDDIG, programs for 6 and 9: same change as above for partial derivative
+in ROMAND, programs for 6 and 9: same change as above for partial derivative
+in TSETSL, program for partial derivative: same change as above
+
+@x in ROMANL, slight change to cmss10 and cmssbx10 `g' improves meta-ness
+loop_top=Vround .77[vair,fudged.stem];
+@y
+loop_top=if serifs: Vround .77[vair,fudged.stem] else: vair fi;
+@z
+
+@x in CMBASE, recent change shouldn't clobber a_, b_, and c_ of plain.mf
+ numeric a_,b_,c_; b_=b/y; c_=c/y; a_=a*a-b_*b_;
+ (a*(c_++sqrt a_)-b_*c_)/a_ enddef;
+@y
+ numeric aa_,bb_,cc_; bb_=b/y; cc_=c/y; aa_=a*a-bb_*bb_;
+ (a*(cc_++sqrt aa_)-bb_*cc_)/aa_ enddef;
+@z
+
+@x in ITALMS, Arrow (vector) accent
+lft x1=hround .5u; x2=w-x1; y1=y2=good.x .7[x_height,asc_height];
+@y a correction of almost purely academic interest
+lft x1=hround .5u; x2=w-x1; y1=y2=good.y .7[x_height,asc_height];
+@z
+
+the following patches make the arrows more robust, but essentially unchanged
+@x in SYM, Downward arrow
+ --z2r---z1r..z1l---z2l--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+@y
+ ---z1r..z1l---subpath (t,0) of\\(z3r{z9-z3}..z5r)
+@z
+@x in SYM, Upward arrow
+ --z2r---z1r..z1l---z2l--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+@y
+ ---z1r..z1l---subpath (t,0) of\\(z3l{z9-z3}..z5r)
+@z
+@x in SYM, Leftward arrow
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+@y
+ ---z1l..z1r---subpath (t,0) of\\(z3r{z9-z3}..z5r)
+@z
+@x in SYM, Rightward arrow
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+@y
+ ---z1l..z1r---subpath (t,0) of\\(z3l{z9-z3}..z5r)
+@z
+@x in SYM, Left-and-right arrow
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+@y
+ ---z1l..z1r---subpath (t,0) of\\(z3r{z9-z3}..z5r)
+@z
+@x ibid
+ --z12l---z11l..z11r---z12r--subpath (t,0) of\\(z13l{z19-z13}..z15r)
+@y
+ ---z11l..z11r---subpath (t,0) of\\(z13l{z19-z13}..z15r)
+@z
+@x in SYMBOL, Up-and-down arrow
+ --z2r---z1r..z1l---z2l--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+@y
+ ---z1r..z1l---subpath (t,0) of\\(z3r{z9-z3}..z5r)
+@z
+@x ibid
+ --z12r---z11r..z11l---z12l--subpath (t,0) of\\(z13l{z19-z13}..z15r)
+@y
+ ---z11r..z11l---subpath (t,0) of\\(z13l{z19-z13}..z15r)
+@z
+@x in SYMBOL, Northeast arrow
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+@y
+ ---z1l..z1r---subpath (t,0) of\\(z3l{z9-z3}..z5r)
+@z
+@x in SYMBOL, Southeast arrow
+ --z2l---z1l..z1r---z2r
+ --subpath (t,0) of\\(z3l{z9-z3}..z5r)
+@y
+ ---z1l..z1r---subpath (t,0) of\\(z3l{z9-z3}..z5r)
+@z
+@x in SYMBOL, Northwest arrow
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+@y
+ ---z1l..z1r---subpath (t,0) of\\(z3l{z9-z3}..z5r)
+@z
+@x in SYMBOL, Southwest arrow
+ --z2l---z1l..z1r---z2r
+ --subpath (t,0) of\\(z3l{z9-z3}..z5r)
+@y
+ ---z1l..z1r---subpath (t,0) of\\(z3l{z9-z3}..z5r)
+@z
+@x in ROMMS, Leftward top half arrow
+filldraw z0--(x0,y2l)---z1l..z1r---z2r
+ ..subpath (t,0) of\\(z3r..{2(x0-x3),y0-y3}z5r)
+@y
+filldraw z0--(x0,y2l)--z1l{right}..{left}z1r
+ --subpath (t,0) of\\(z3r..{2(x0-x3),y0-y3}z5r)
+@z
+@x in ROMMS, Leftward bottom half arrow
+filldraw z0{2(x4-x0),y4-y0}..z4l
+ --subpath (0,t) of\\(z4r..{2(x0-x4),y0-y4}z6r)
+@y
+ --z1l{right}..{left}z1r--(x0,y2r)--cycle; % arrowhead and stem
+@z
+@x in ROMMS, Rightward top half arrow
+filldraw z0--(x0,y2l)---z1l..z1r---z2r
+ ..subpath (t,0) of\\(z3l..{2(x0-x3),y0-y3}z5r)
+@y
+filldraw z0--(x0,y2l)--z1l{left}..{right}z1r
+ --subpath (t,0) of\\(z3l..{2(x0-x3),y0-y3}z5r)
+@z
+@x in ROMMS, Rightward bottom half arrow
+ ..z2l---z1l..z1r---(x0,y2r)--cycle; % arrowhead and stem
+@y
+ --z1l{left}..{right}z1r--(x0,y2r)--cycle; % arrowhead and stem
+@z
+@x in BIGDEL, Extensible vertical arrow--top
+ --z2r---z1r--z1l---z2l--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+@y
+ --z1r--z1l--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+@z
+@x in BIGDEL, Extensible vertical arrow--bottom
+ --z2r---z1r--z1l---z2l--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+@y
+ --z1r--z1l--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+@z
+
+@x in ROMLIG, the ligature fi
+ x13=x11-.5; top y14r=min(2x_height,h+1); top y11=x_height;
+@y make the center of the dot consistent with ordinary i, in sans-serif fonts
+ x13=x11-.5; top y14r=min(10/7x_height+.5bulb_diam,h)+1; top y11=x_height;
+@z
+@x in ROMLIG, the ligature ffi
+ x23=x21-.5; top y24r=min(2x_height,h+1); top y21=x_height;
+@y same corrections as to fi
+ x23=x21-.5; top y24r=min(10/7x_height+.5bulb_diam,h)+1; top y21=x_height;
+@z
+
+@x in SYMBOL, the circle operator
+lft x6=hround u; x2=w-x6; top y8=h; y2=math_axis;
+@y this correction makes it a circle even at small size, low resolution
+lft x6=hround u; x2=w-x6; top y8=h; y8-y4=x2-x6;
+@z
+@x in SYMBOL, the bullet
+lft x6=hround u; x2=w-x6; top y8=h; y2=math_axis; circle_points;
+@y likewise
+lft x6=hround u; x2=w-x6; top y8=h; y8-y4=x2-x6; circle_points;
+@z
+
+@x in ROMAND, the numeral 2
+ ..z3e{down}.. z4e---z5e--z6e; % stroke
+@y it's more robust to avoid --- next to -- (in case of tiny loops)
+ ..z3e{down}..{z5e-z4e}z4e--z5e--z6e; % stroke
+@z
+@x in OLDDIG, oldstyle numeral 2
+ ..z3e{down}.. z4e---z5e--z6e; % stroke
+@y likewise
+ ..z3e{down}..{z5e-z4e}z4e--z5e--z6e; % stroke
+@z
+
+@x in CSC, after the second font_setup
+extra_endchar:=extra_endchar&"charcode:=charcode+code_offset";
+@y
+extra_endchar:=extra_endchar&"charcode:=charcode+code_offset;";
+@z
+
+@x in ACCENT, in program for Breve
+numeric mid_thickness; mid_thickness=vround 1/3[vair,stem];
+@y
+numeric mid_thickness; mid_thickness=Vround 1/3[vair,stem];
+@z
+
+@x in CMBASE, a more robust arm routine fixes the 7 in cmbx5,6,7,8
+ filldraw z$$l{z@1-z$$l}...darkness[z@1,.5[z@2,z$$l] ]...z@2
+ ---z$l--z$r--z@0--z$$r--cycle; % arm and beak
+@y
+ path p_; p_= z$$l{z@1-z$$l}...darkness[z@1,.5[z@2,z$$l] ]...z@2
+ ---z$l--z$r--z@0--z$$r--cycle;
+ if (y$$>y$) <> (ypart precontrol 1 of p_ > ypart postcontrol 1 of p_):
+ p_:=z$$l{z@1-z$$l}...darkness[z@1,.5[z@2,z$$l] ]
+ ---z$l--z$r--z@0--z$$r--cycle; fi
+ filldraw p_; % arm and beak
+@z
+
+-----------Here I draw the line with respect to further changes
+
+(I sincerely believe there won't be any more!)
+
+I absolutely guarantee that the TFM files will never change again.
+(Otherwise I would consider zeroing the depth of italic 7,
+which I admit is strange... we can live with it.)
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errata.eight b/Master/texmf-doc/doc/english/knuth/errata/errata.eight
new file mode 100644
index 00000000000..f7ceafd9f69
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata.eight
@@ -0,0 +1,610 @@
+% Bugs (sigh) in Computers \& Typesetting
+
+\input manmac
+\font\sltt=cmsltt10
+\font\niness=cmss9
+\font\ninessi=cmssi9
+\proofmodefalse
+\raggedbottom
+\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
+
+\def\today{\number\day\
+ \ifcase\month\or
+ Jan\or Feb\or Mar\or Apr\or May\or Jun\or
+ Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi
+ \ \number\year}
+
+\def\cutpar{{\parfillskip=0pt\par}}
+
+\def\rhead{Bugs in {\tensl Computers \& Typesetting, 1992}}
+\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
+\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
+\newcount\nn
+\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
+\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
+
+\tenpoint
+\noindent This is a list of all corrections made to {\sl Computers \&
+Typesetting\/} between 15 March 1992 and the publication of the final
+printed versions of those books.
+Corrections made to the softcover version of {\sl The \TeX book\/} are
+the same as corrections to Volume~A\null. Corrections to the softcover
+version of {\sl The \slMF\kern1ptbook\/} are the same as corrections
+to Volume~C\null. Changes to Volume~B refer to the fourth printing
+(1991), which differs markedly from earlier printings because it includes
+all the revisions for \TeX3.0. Changes to Volume~D refer to the third
+printing (1991), which differs markedly from earlier printings because
+it includes all the revisions for \MF\kern1pt2.0. Changes to the mini-indexes
+and master indexes of Volumes B and~D are not shown here unless they are
+not obviously derivable from what has been shown.
+\looseness=-1
+
+ % volume A
+
+\bugonpage A23, line 14 (9/1/92)
+
+\tenpoint\noindent
+a command and you type `|tex|' or `|run| |tex|' or something like that.)
+
+\bugonpage A53, line 23 (7/7/92)
+
+\tenpoint\noindent
+{\sl scientiarum imperialis petropolitan\ae\/}
+became {\sl Akademi\t\i a Nauk SSSR, Doklady}.
+
+\bugonpage A146, line 2 from the bottom (2/25/93)
+
+|$\bigl|\|| |\||x|\||-|\||y|\|| \bigr|\||$|\hskip1.25in
+ $\bigl\vert\vert x\vert-\vert y\vert\bigr\vert$
+
+\bugonpage A149, lines 3--5 (2/25/93)
+
+\noindent
+example, we used |\bigl| and |\bigr| to produce $\bigl\vert\vert x\vert-
+\vert y\vert\bigr\vert$ in one of the previous illustrations; |\left| and
+|\right| don't make things any bigger than necessary, so
+`|$\left|\||\left|\||x\right|\||-\left|\||y\right|\||\right|\||$|'
+yields only `$\left\vert
+ \left\vert x\right\vert -\left\vert y\right\vert \right\vert$'.\cutpar
+
+\bugonpage A158, line 18 from the bottom (2/25/93)
+
+\ninepoint
+are four possibilities for each of these fields.
+A field can be
+
+\bugonpage A282, line 9 from the bottom (7/8/92)
+
+\ninepoint\noindent
+category~4) are intercepted by the alignment
+process, en route to \TeX's stomach, so\cutpar
+
+\bugonpage A293, new paragraph after line 15 (4/9/92)
+
+\ninepoint
+\textindent{$\bull$}|\unhbox|\<8-bit number>, |\unhcopy|\<8-bit number>.\enskip
+The specified box register must be void. Nothing happens.
+
+\bugonpage A309, line 23 (7/7/92)
+
+\ninepoint\noindent
+|petropolitan\ae\/} became {\sl Akademi\t\i a Nauk SSSR, Doklady}.|
+
+\bugonpage A320, line 11 (1/26/93)
+
+\ninepoint
+\ansno17.12:
+|$\bigl(x+f(x)\bigr) \big/ \bigl(x-f(x)\bigr)$|. \ Notice especially the\cutpar
+
+\bugonpage A349, second line from the bottom (7/8/92)
+
+\ninepoint\noindent
+expand to a ^\<number> en route to \TeX's
+``stomach''; |\multiply| wouldn't work, because\cutpar
+
+\bugonpage A358, bottom line (2/3/93)
+
+\ninepoint\noindent
+it is easy to define ^|\ldots| and ^|\cdots| macros that
+give the proper spacing in most\cutpar
+
+\bugonpage A370, lines 28 and 29 (9/1/92)
+
+\def\Russiantt#1{{\tt\hbox to.5em{\hss\eighttt\char#1\hss}}}
+\ninepoint\noindent
+example, if \TeX\ is implemented for
+a purely ^{Cyrillic} ^^{Russian} keyboard, the letter `\Russiantt5' should be
+assigned to code \oct{160} and `\Russiantt{`T}' to code \oct{164}, so that
+`\Russiantt5\Russiantt{`T}' still means `|pt|'; or else control\cutpar
+
+\bugonpage A377, lines 17--24 (5/4/92)
+
+\ninepoint
+\begintt
+\def\sanswitch{\let\n@xt\endsanity \ifx\next\endsanity
+ \else\ifcat\noexpand\next\stoken\aftergroup\space\let\n@xt=\eat
+ \else\ifcat\noexpand\next\bgroup\aftergroup{\let\n@xt=\eat
+ \else\ifcat\noexpand\next\egroup\aftergroup}\let\n@xt=\eat
+ \else\let\n@xt=\copytok\fi\fi\fi\fi \n@xt}
+\def\eat{\afterassignment\sanitize \let\next= }
+\long\def\copytok#1{\ifcat\noexpand#1\relax\aftergroup\noexpand\fi
+ \ifcat\noexpand#1\noexpand~\aftergroup\noexpand\fi
+\endtt
+
+\bugonpage A455, line 25 (2/26/93)
+
+\ninepoint\noindent
+rent language'' is set equal to |\language|. Whenever a
+character is added to the cur-\cutpar
+
+\bugonpage A459, second line of entry for ampersand (3/22/92)
+
+\eightpoint\indent\qquad
+{\it231--248}, $\underline{282}$, {\it339}, 344, 385--386, 428.
+
+\bugonpage A461, right column (2/19/93)
+
+\eightpoint
+\newbox\astbox \setbox\astbox=\hbox to0pt{\hss\lower1pt\hbox{*}}
+\def\prim#1{\par\indent\copy\astbox{\tt\char`\\#1}}
+\prim{chardef}, 44, 121, 155, 210, 214, 215, 271,\par
+\indent\qquad $\underline{277}$, 336, {\it343}, {\it345}, {\it356}, 452.\par
+\indent\<chardef token>, $\underline{271}$, 283, 286, 289.
+
+\bugonpage A467, left column (2/25/93)
+
+\eightpoint
+Greek, 127--128, 137, 156, 164, 319,\par
+\indent\qquad 358, 430, 434.
+
+\bugonpage A470, left column (2/25/93)
+
+\eightpoint
+margins, {\sl see\/} |\hoffset|, |\hsize|, |\narrower|.
+
+\bugonpage A471, left column (2/19/93)
+
+\eightpoint
+\prim{mathchardef}, 155, 199, 214, 215, 271,\par
+\indent\qquad 277, 289, 336, {\it358}, {\it394}.\par
+\indent\<mathchardef token>, $\underline{271}$, 289.
+
+\bugonpage A474, right column (3/22/92)
+
+\eightpoint
+pound sterling, 54, {\it339}, 428.
+
+\bugonpage A477, right column (3/22/92)
+
+\eightpoint
+sterling, 54, {\it339}, 428.
+
+\bugonpage A480, left column (4/9/92)
+
+\eightpoint
+\prim{unhbox}, 120, 283, $\underline{285}$, 293, {\it354}, {\it356},
+ {\it399}.\par
+\prim{unhcopy}, 120, 283, $\underline{285}$, 293, {\it353}.
+
+\bugonpage A481, left column (2/25/93)
+
+\eightpoint
+whatsits, 95, 110, 157, 226--229, 455.
+
+\bugonpage A483, lines 15--21 (2/25/93)
+
+{\tt P.O. Box 869\par
+Santa Barbara, CA 93102-0869 USA.\par
+|}|}
+\smallskip\noindent
+Don't delay, write today! That number again is
+
+\smallskip
+{\obeylines
+\TeX\ Users Group
+P.O. Box 869
+Santa Barbara, CA 93102-0869 USA.
+}
+
+ % volume B
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\bugonpage B2, line 10 from the bottom (2/27/93)
+
+\ninepoint\noindent\hskip10pt
+{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
+{\tt This\]is\]TeX,\]Version\]3.1415\char'23}\quad
+$\{\,$printed when \TeX\ starts$\,\}$
+
+\bugonpage B89, line 12 (2/27/93)
+
+\tenpoint
+\noindent\hskip10pt
+In horizontal mode, the \\{prev\_graf} field is used for initial language data.
+
+\bugonpage B89, line 20 (2/27/93)
+
+\ninepoint
+\noindent\hskip20pt
+\\{pg\_field}, \\{ml\_field}: \\{integer}; \ \\{aux\_field}: \\{memory\_word};
+\par
+\noindent [Also delete the definitions of \\{lhmin} and \\{rhmin}, lines
+32 and 33.]
+
+\bugonpage B90, line 13 (2/27/93)
+
+\ninepoint
+\noindent\hskip10pt
+$\\{prev\_depth}\gets\\{ignore\_depth}$; \ $\\{mode\_line}\gets0$; \
+$\\{prev\_graf}\gets0$;
+
+\bugonpage B91, top three lines (2/27/93)
+
+\ninepoint
+\noindent\hskip20pt
+{\bf if\/} $m=\\{hmode}$ {\bf then if\/} $\\{nest}[p].\\{pg\_field}\ne
+ \oct{40600000}$ {\bf then}\par\noindent\hskip40pt
+{\bf begin} \\{print}({\tt\char`\"\](language\char`\"}); \
+ \\{print\_int}(\\{nest}[$p$].\\{pg\_field} {\bf mod} \oct{200000});\par
+\noindent\hskip40pt
+ \\{print}({\tt\char`\":hyphenmin\char`\"}); \
+ \\{print\_int}(\\{nest}[$p$].\\{pg\_field} {\bf div} \oct{20000000}); \
+ \\{print\_char}({\tt\char`\",\char`\"});\par\noindent\hskip40pt
+\\{print\_int}((\\{nest}[$p$].\\{pg\_field} {\bf div} \oct{200000})
+ {\bf mod} \oct{100}); \ \\{print\_char}({\tt\char`\")\char`\"});
+
+\bugonpage B344, lines 21 and 22 (2/27/93)
+
+\tenpoint\noindent\hskip10pt
+This code assumes that a \\{glue\_node} and a \\{penalty\_node} occupy the
+same number of \\{mem}~words.
+
+\bugonpage B344, line 30 (2/27/93)
+
+\ninepoint\noindent\hskip10pt
+$\\{link}(\\{tail})\gets\\{new\_param\_glue}(\\{par\_fill\_skip\_code})$; \
+ $\\{init\_cur\_lang}\gets\\{prev\_graf}$ {\bf mod} \oct{200000};\par
+\noindent\hskip10pt
+$\\{init\_l\_hyf}\gets\\{prev\_graf}$ {\bf div} \oct{20000000}; \
+$\\{init\_r\_hyf}\gets(\\{prev\_graf}$ {\bf div} \oct{200000}) {\bf mod}
+ \oct{100}; \
+\\{pop\_nest};
+
+\bugonpage B353, line 4 (2/27/93)
+
+\tenpoint\noindent\hskip10pt
+Kern nodes do not disappear at a line break unless they are \\{explicit}.
+
+\bugonpage B353, lines 15 and 16 (2/27/93)
+
+\ninepoint\noindent\hskip20pt
+\\{math\_node}: $\\{break\_width}[1]\gets\\{break\_width}[1]-\\{width}(s)$;\par
+\noindent\hskip20pt
+\\{kern\_node}: {\bf if\/} $\\{subtype}(s)\ne\\{explicit}$
+ {\bf then goto} \\{done}\par\noindent\hskip30pt
+{\bf else} $\\{break\_width}[1]\gets\\{break\_width}[1]-\\{width}(s)$;
+
+\bugonpage B354, lines 6 and 7 (2/27/93)
+
+\tenpoint\noindent
+will be the background
+plus $l_1$, so the length from \\{cur\_p} to \\{cur\_p} should be
+$\gamma+l_0+l_1-l$.
+If the post-break text of the discretionary is empty, a break may also
+discard~$q$; in that unusual case we subtract the length of~$q$ and any
+other nodes that will be discarded after the discretionary break.
+
+\bugonpage B354, line 18 (2/27/93)
+
+\ninepoint\noindent\hskip20pt
+{\bf begin} $\langle\,$Add the width of node $s$ to \\{break\_width}{\sevenrm
+ \kern.5em842}$\,\rangle$;
+
+\bugonpage B354, line 22 (2/27/93)
+
+\ninepoint\noindent\hskip10pt
+{\bf if\/} $\\{post\_break}(\\{cur\_p})=\\{null}$ {\bf then}
+ $s\gets\\{link}(v)$;\quad$\{\,$nodes may be discardable after the break$\,\}$
+
+\bugonpage B355, top line (2/27/93)
+
+\ninepoint\noindent
+{\tenbf842.\quad}$\langle\,$Add the width of node $s$ to
+ \\{break\_width}{\sevenrm\kern.5em842}$\,\rangle\equiv$
+
+\bugonpage B355, lines 9--14 (2/27/93)
+
+\ninepoint\noindent\hskip20pt
+$\\{hlist\_node},\\{vlist\_node},\\{rule\_node},\\{kern\_node}$:
+ $\\{break\_width}[1]\gets\\{break\_width}[1]+\\{width}(s)$;\par
+\noindent\hskip20pt
+{\bf othercases} \\{confusion}({\tt\char`\"disc2\char`\"})\par
+\noindent\hskip20pt
+{\bf endcases}
+
+\bugonpage B364, line 10 (2/27/93)
+
+\tenpoint\noindent
+a glue node, penalty node, explicit kern node, or math node.
+
+\bugonpage B366, line 11 from the bottom (2/27/93)
+
+\ninepoint\noindent
+\\{kern\_node}: {\bf if\/} $\\{subtype}(\\{cur\_p})=\\{explicit}$
+ {\bf then} \\{kern\_break}\par\noindent\hskip10pt
+{\bf else} $\\{act\_width}\gets\\{act\_width}+\\{width}(\\{cur\_p})$;
+
+\bugonpage B367, line 21 (2/27/93)
+
+\ninepoint\noindent\hskip20pt
+{\bf else if\/} \\{precedes\_break}(\\{prev\_p}) {\bf then}
+ $\\{try\_break}(0,\\{unhyphenated})$\par\noindent\hskip20pt
+{\bf else if\/} $(\\{type}(\\{prev\_p})=\\{kern\_node})\land
+ (\\{subtype}(\\{prev\_p})\ne\\{explicit})$ {\bf then}
+ $\\{try\_break}(0,\\{unhyphenated})$;
+
+\bugonpage B372, lines 12 and 13 (2/27/93)
+
+\ninepoint\noindent\hskip20pt
+{\bf if\/} $\\{type}(q)=\\{kern\_node}$ {\bf then}\par\noindent\hskip30pt
+{\bf if\/} $\\{subtype}(q)\ne\\{explicit}$ {\bf then goto} \\{done1};
+
+\bugonpage B376, line 3 from the bottom (2/27/93)
+
+\ninepoint\noindent\hskip10pt
+$\\{cur\_lang}\gets\\{init\_cur\_lang}$; \
+$\\{l\_hyf}\gets\\{init\_l\_hyf}$; \
+$\\{r\_hyf}\gets\\{init\_r\_hyf}$;
+
+\bugonpage B377, lines 11 and 12 (2/27/93)
+
+\ninepoint\noindent
+$\\{cur\_lang},\\{init\_cur\_lang}$: \\{ASCII\_code};\quad
+ $\{\,$current hyphenation table of interest$\,\}$\par\noindent
+$\\{l\_hyf},\\{r\_hyf},\\{init\_l\_hyf},\\{init\_r\_hyf}$: \\{integer};\quad
+ $\{\,$limits on fragment sizes$\,\}$
+
+\bugonpage B378, line 5 from the bottom, overriding earlier change (2/27/93)
+
+\ninepoint\noindent\hskip30pt
+{\bf else if} $(\\{type}(s)=\\{kern\_node})\land(\\{subtype}(s)=\\{normal})$
+ {\bf then}\par\noindent\hskip50pt
+{\bf begin} $\\{hb}\gets s$; \ $\\{hyf\_bchar}\gets\\{font\_bchar}[\\{hf}]$; \
+ {\bf end}\par\noindent\hskip40pt
+{\bf else goto} \\{done3};
+
+
+\bugonpage B394, lines 12 and 13 (2/27/93)
+
+\ninepoint\noindent\hskip10pt
+{\bf var} $n$: $0\to64$;\quad$\{\,$length of current word; not always
+ a \\{small\_number}$\,\}$\par\noindent\hskip20pt
+$j$: $0\to64$;\quad$\{\,$an index into \\{hc}$\,\}$
+
+\bugonpage B404, line 21 (2/27/93)
+
+\ninepoint\noindent\hskip10pt
+{\bf var} $k,l$: $0\to64$;\quad$\{\,$indices into \\{hc} and \\{hyf};
+ not always in \\{small\_number} range$\,\}$
+
+\bugonpage B460, lines 21 and 22 (2/27/93)
+
+\ninepoint\noindent\hskip10pt
+\\{push\_nest}; \ $\\{mode}\gets\\{hmode}$; \ $\\{space\_factor}\gets1000$; \
+ \\{set\_cur\_lang}; \ $\\{clang}\gets\\{cur\_lang}$;\par\noindent\hskip10pt
+$\\{prev\_graf}\gets(\\{norm\_min}(\\{left\_hyphen\_min})\ast\oct{100}+
+ \\{norm\_min}(\\{right\_hyphen\_min}))\ast\oct{200000}+\\{cur\_lang}$;
+
+\bugonpage B492, line 6 from the bottom (2/27/93)
+
+\ninepoint\noindent\hskip10pt
+\\{unsave}; \ $\\{prev\_graf}\gets\\{prev\_graf}+3$;\par\noindent\hskip10pt
+\\{push\_nest}; \ $\\{mode}\gets\\{hmode}$; \ $\\{space\_factor}\gets1000$; \
+ \\{set\_cur\_lang}; \ $\\{clang}\gets\\{cur\_lang}$;\par\noindent\hskip10pt
+$\\{prev\_graf}\gets(\\{norm\_min}(\\{left\_hyphen\_min})\ast\oct{100}+
+ \\{norm\_min}(\\{right\_hyphen\_min}))\ast\oct{200000}+\\{cur\_lang}$;
+
+ % volume C
+\hsize=29pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+
+\bugonpage C151, line 11 from the bottom (6/26/93)
+
+\ninepoint\indent
+\qquad scaled $1.42(1+\max(-\\{pen\_lft},\\{pen\_rt},\\{pen\_top},
+ -\\{pen\_bot}))$
+
+\bugonpage C262, line 15 (6/26/93)
+
+\ninepoint\noindent
+|string base_name, base_version; base_name="plain"; base_version="2.71";|
+
+\bugonpage C262, line 29 (6/26/93)
+
+\ninepoint\noindent
+|def |^|gobble|| primary g = enddef; def |^|killtext|| text t = enddef;|
+
+\bugonpage C271, bottom line (6/26/93)
+
+\ninepoint\noindent
+| culldraw p enddef;|
+
+\bugonpage C272, three new lines for top of page (6/26/93)
+
+{\ninepoint\parindent=0pt
+|def |^|culldraw|| expr p = addto pic_ doublepath p.t_ withpen currentpen;|\par
+| cull pic_ dropping(-infinity,0) withweight default_wt_;|\par
+| addto_currentpicture also pic_; pic_:=nullpicture; killtext enddef;|\par
+}
+
+\bugonpage C272, replacement for former line 5 (6/26/93)
+
+\ninepoint\noindent
+| (cut_ scaled (1+max(-pen_lft,pen_rt,pen_top,-pen_bot))|
+
+\bugonpage C296, line 24 (2/3/93)
+
+\ninepoint\noindent
+the definition of |rp| is changed to `|]..tension 4..|',
+and if `|scaled|~|5pt|' is inserted\cutpar
+
+\bugonpage C299, line 3 (5/15/92)
+
+\ninepoint\noindent
+a Bernshte{\u\i}n polynomial of order $n-1$.)
+
+\bugonpage C347, left column (5/15/92)
+
+\eightpoint
+Bernshte{\u\i}n, Serge{\u\i} \thinspace Natanovich, 14.
+
+\bugonpage C348, left column (6/26/93)
+
+\eightpoint
+|culldraw|, {\it271}, $\underline{272}$.
+
+\bugonpage C350, left column (6/26/93)
+
+\eightpoint
+exponential, {\sl see\/} |mexp|.
+
+\bugonpage C352, left column (6/26/93)
+
+\eightpoint
+|killtext|, $\underline{262}$, {\it 272}.
+
+\bugonpage C352, right column (6/26/93)
+
+\eightpoint
+logarithm, {\sl see\/} |mlog|.
+
+\bugonpage C361, lines 14 and 15 (2/25/93)
+
+P.O. Box 869\par
+Santa Barbara, CA 93102-0869 USA.
+
+
+ % Volume D
+\hsize=29pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\bugonpage Dxiv, line 13 (4/19/96)
+
+\noindent preprocessor converts these into numeric constants that are
+256 or more. This\cutpar
+
+\bugonpage Dxiv, line $-1$ (4/19/96)
+
+\ninepoint\noindent This file contains one line per string, starting with
+string number 256, then number 257,\cutpar
+
+\bugonpage Dxv, lines 10 and 11 (4/19/96)
+
+\ninepoint\noindent
+In this case, occurrences of |""| in the |WEB| program will be replaced by
+256; occurrences of |"This longer string"| will be replaced by 257.
+The symbol |@$| stands for the numeric\cutpar
+
+\hsize=35pc
+\bugonpage D2, line $-17$ (8/7/98)
+
+\def\RQ/{{\char'23}} % right quote in a string
+\ninepoint\noindent
+{\bf define} $\\{banner}\equiv\hbox{\tt\RQ/This\]is\]METAFONT,\]%
+ Version\]2.7182\RQ/}$\quad$\{\,$printed when \MF\ starts$\,\}$
+
+\bugonpage D50, line 26 (8/7/98)
+
+\ninepoint\noindent
+\quad{\bf if\/} $b>0$ {\bf then}
+
+\bugonpage D138, line 14 from the bottom (3/6/95)
+
+\tenpoint
+\textindent{$2'$)} Let $Z_k^{(j+1)}={1\over2}(Z_k^{(j)}+Z_{k+1}^{(j)})$, for
+$1\le k\le n-j$, for $1\le j<n$.
+
+\bugonpage D190, D191, D194, D195 (6/26/93)
+
+\noindent[Several changes to the code in sections 415, 416, 424, and 425
+were made to \MF\ version 2.71 in July~1991, too numerous to mention here.
+They are documented in file {\tt mf84.bug} as bug number 560. We also
+delete lines 4 and~5 of page D194.]
+
+\bugonpage D216, line 10 from the bottom (7/15/92)
+
+\tenpoint\noindent
+will be offset by $w_1$ or $w_2$, unless its slope drops to zero
+en route to the eighth octant; in the latter\cutpar
+
+\bugonpage D289, lines 9 and 10 (6/26/93)
+
+\ninepoint\noindent\hskip20pt
+$p\gets\\{dep\_list}(p)$; \ $r\gets\\{inf\_val}$;\par\noindent\hskip20pt
+{\bf repeat if\/} $\\{value}(\\{info}(p))\ge\\{value}(r)$ {\bf then}
+
+\bugonpage D296, lines 8 and 9 from the bottom (9/13/98)
+
+\ninepoint\noindent[Delete these spurious lines.]
+
+\bugonpage D297, mini-index (6/6/98)
+
+\eightpoint the meaning of {\it loc\/} should be `macro'
+
+\bugonpage D310, line 7 (8/7/98)
+
+\ninepoint\noindent
+\quad{\bf if\/} $(\\{loc}=k+1)\land(\\{length}(\\{buffer}[k])=1)$
+ {\bf then} $\\{cur\_mod}:=\\{buffer}[k]$
+
+\bugonpage D363, lines 10 and 11 (3/1/95)
+
+\ninepoint\noindent
+\quad {\bf begin if\/} $(\\{max\_c}[\\{dependent}]$ {\bf div}
+ $\oct{10000}\ge\\{max\_c}[\\{proto\_dependent}])$ {\bf then}
+ $t\gets\\{dependent}$
+
+\bugonpage D512, line 13 (11/23/98)
+
+\ninepoint\noindent
+\quad \\{print\_int}(\\{round\_unscaled}(\\{internal}[\\{year}])); \
+ \\{print\_char}(|"."|);
+
+\bugonpage D518, insert new material between lines 7 and 8 (3/20/95)
+
+\ninepoint\noindent
+\quad {\bf while} $\\{input\_ptr}>0$ {\bf do}\par\noindent
+\qquad {\bf if\/} \\{token\_state} {\bf then} \\{end\_token\_list}
+ {\bf else} \\{end\_file\_reading};\par\noindent
+\quad {\bf while} $\\{loop\_ptr}\ne\\{null}$ {\bf do} \\{stop\_iteration};
+
+\bugonpage D518, line 18 (3/20/95)
+
+\ninepoint\noindent
+\qquad $\\{loop\_ptr}\gets\\{cond\_ptr}$; \
+ $\\{cond\_ptr}\gets\\{link}(\\{cond\_ptr})$; \
+ $\\{free\_node}(\\{loop\_ptr},\\{if\_node\_size})$;
+
+\bugonpage D546, left column (4/11/96)
+
+\eightpoint
+Stern, Moritz Abraham: \ 526.
+
+ % volume E
+\hsize=29pc
+\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}}
+
+
+ \bye
+
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errata.five b/Master/texmf-doc/doc/english/knuth/errata/errata.five
new file mode 100644
index 00000000000..4e2982f109a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata.five
@@ -0,0 +1,1108 @@
+% Bugs (sigh) in Computers \& Typesetting
+
+\input manmac
+\font\sltt=cmsltt10
+\font\niness=cmss9
+\font\ninessi=cmssi9
+\proofmodefalse
+\raggedbottom
+\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
+
+\def\today{\number\day\
+ \ifcase\month\or
+ Jan\or Feb\or Mar\or Apr\or May\or Jun\or
+ Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi
+ \ \number\year}
+
+\def\cutpar{{\parfillskip=0pt\par}}
+
+\def\rhead{Bugs in {\tensl Computers \& Typesetting, 1989}}
+\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
+\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
+\newcount\nn
+\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
+\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
+
+\tenpoint
+\noindent This is a list of all corrections made to {\sl Computers \&
+Typesetting}, Volumes \hbox{A--E}, between 20 February 1989 and
+30 September 1989 (when \TeX\ Version 3.0 and \MF\ Version 2.0 were
+fully defined). Corrections made to
+the softcover version of {\sl The \TeX book\/} are the same as corrections to
+Volume~A\null. Corrections to the softcover version of {\sl The
+\slMF\kern1ptbook\/} are the same as corrections to Volume~C\null.
+Some of these corrections have already been made in reprintings
+of the books. Several minor changes
+to Volumes A~and~C are not shown here because they simply
+make room for the more substantive changes needed to describe the new
+features of \TeX\ Version 3.0 and \MF\ Version 2.0. Hundreds of
+changes will soon be made to Volumes B~and~D because of the upgrades
+to \TeX\ and \MF\/; it will unfortunately be impossible to document all of those
+changes. Therefore, readers who need up-to-date information on the \TeX\ and
+\MF\ programs should refer to the |WEB| source files until new
+printings of Volumes B~and~D are issued.
+
+ % volume A
+
+\buginvol A, in general (9/23/89)
+
+\ninepoint\noindent
+[Change `127' to `255' and `128' to `256' in contexts referring to character
+codes. This happens on pages 37(twice), 39, 41, 43, 44(twice), 48, 93, 154,
+277, 305(twice), 308(twice), 313, and 343. Also change `7-bit' to `8-bit' on
+pages 214 and 277.]
+
+\bugonpage A23, line 16 (9/23/89)
+
+|This is TeX, Version 3.0 (preloaded format=plain 89.7.15)|
+
+\bugonpage A34, new copy for bottom of page (9/23/89)
+
+\ddanger If you use \TeX\ format packages designed by others, your
+error messages may involve many inscrutable two-line levels of macro
+context. By setting ^|\errorcontextlines||=0| at the beginning of your file,
+you can reduce the amount of information that is reported;
+\TeX\ will show only the top and bottom pairs of context lines
+together with up to |\errorcontextlines| additional two-line items. \ (If
+anything has thereby been omitted, you'll also see `|...|'.) \ Chances
+are good that you can spot the source of an error even when most of a
+large context has been suppressed; if not, you can say
+`|I\errorcontextlines=100\oops|' and try again. \ (That will usually
+give you an undefined control sequence error and plenty of context.) \
+Plain \TeX\ sets |\errorcontextlines=5|.
+
+\bugonpage A45, lines 9--15 (9/23/89)
+
+\ninepoint\noindent
+|^^| has an internal code between 64 and 127, \TeX\
+subtracts 64 from the code; if the code is between 0 and 63, \TeX\
+adds~64. Hence code 127 can be typed |^^?|, and
+the dangerous bend sign can be obtained by saying
+|{\manual^^?}|. However, you must change the category code of character
+127 before using it, since this character ordinarily has category~15
+(^{invalid}); say, e.g., |\catcode`\^^?=12|.
+^^{double hat} ^^{hat hat}
+The |^^| notation is different from |\char|, because |^^| combinations are
+like single characters; for example, it would not be permissible to say
+|\catcode`\char127|, but |^^| symbols can even be used as letters within
+control words.
+
+\bugonpage A45, new copy before line 20 (9/23/89)
+
+\danger There's also a special convention in which |^^| is
+followed by {\sl two\/} ``lowercase hexadecimal digits,'' |0|--|9| or |a|--|f|.
+With this convention, all 256 characters are obtainable in a uniform
+way, from |^^00| to |^^ff|. Character 127 is |^^7f|.
+
+\noindent
+[Also remove one of the two dangerous bend signs on line 20.]
+
+\bugonpage A45, bottom paragraph and footnote (9/23/89)
+
+\ddanger People who install \TeX\ systems for use with non-American alphabets
+can make \TeX\ conform to any desired standard. For example, suppose
+you have a ^{Norwegian keyboard} containing the letter {\tt\ae}, which
+^^{Scandinavian letters} ^^{foreign languages}
+comes in as code~241 (say). Your local format package should define
+|\catcode`|{\tt\ae}|=11|; then you could have control sequences like
+|\s|{\tt\ae}|rtrykk|. Your \TeX\ input files could be made readable by
+American installations of \TeX\ that don't have your keyboard, by
+substituting |^^f1| for character~241. \ (For example, the stated control
+sequence would appear as |\s^^f1rtrykk| in the file; your American
+friends should also be provided with the format that you used, with its
+|\catcode`^^f1=11|.) \ Of course you should also arrange your fonts
+so that \TeX's character 241 will print as {\ae}; and you should
+change \TeX's hyphenation algorithm so that it will do correct
+Norwegian hyphenation. The main point is that such changes are not
+extremely difficult; nothing in the design of \TeX\ limits it to the
+American alphabet. Fine printing is obtained by fine tuning to the
+language or languages being used.
+^^{keyboards, non-ASCII}
+
+\ddanger European languages can also be accommodated effectively with
+only a limited character set.
+For example, let's consider Norwegian again, but suppose that\parfillskip=0pt
+
+\noindent [Now continue with the text on line 11 of page 46.]
+
+\bugonpage A47, lines 9--21 (9/23/89)
+
+\ddanger If \TeX\ sees a superscript character (category 7) in any state,
+and if that character is followed by another identical character, and if
+those two equal characters are followed by a character of code
+$c<128$, then they
+are deleted and 64 is added~to or subtracted from the code~$c$.
+\ (Thus, |^^A| is
+replaced by a single character whose code is~1, etc., as explained earlier.) \
+However, if the two superscript characters are immediately followed by two
+of the lowercase hexadecimal digits |0123456789abcdef|, the
+four-character sequence is replaced by a single character having the
+specified hexadecimal code.
+The replacement is carried out also if such a trio or quartet of
+characters is encountered during steps (b) or~(c) of the control-sequence-name
+scanning procedure described above. After the replacement is made, \TeX\
+begins again as if the new character had been present all the time.
+If a superscript character is not the first of such a trio or quartet, it is
+handled by the following rule.
+
+\ddanger If \TeX\ sees a character of categories 1, 2, 3, 4, 6, 8, 11, 12,
+or~13,
+or a character of category~7 that is not the first of a special
+sequence as just
+described, it converts the character to a token by attaching the category
+code, and goes into state~$M$. This is the normal case; almost every
+nonblank character is handled by this rule.
+
+\bugonpage A48, line 15 (9/23/89)
+
+\ninepoint\noindent
+the input line
+`| $x^2$~ \TeX ^^62^^6|'\thinspace?
+
+\bugonpage A54, third line from the bottom (9/23/89)
+
+\ninepoint\noindent
+For example, a well-designed \TeX\ font for ^{French}
+might well treat accents as lig-\cutpar
+
+\bugonpage A76, lines 3--5 from the bottom (9/23/89)
+
+\ninepoint\noindent
+\TeX\ does not assign any value to
+|\sfcode'042|.
+
+\bugonpage A107, new copy for top of page (9/23/89)
+
+\ddanger If you want to avoid overfull boxes at all costs without
+trying to fix them manually, you might be tempted to set
+|tolerance=10000|; this allows arbitrarily bad lines to be acceptable
+in tough situations. But infinite tolerance is a bad idea, because
+\TeX\ doesn't distinguish between terribly bad and preposterously
+horrible lines. Indeed, a tolerance of 10000 encourages \TeX\ to
+concentrate all the badness in one place, making one truly unsightly
+line instead of two moderately bad ones, because a single
+``write-off'' produces fewest total demerits according to the rules.
+There's a much better way to get the desired effect: \TeX\ has a
+parameter called ^|\emergencystretch| that is added to the assumed
+stretchability of every line when badness and demerits are computed,
+in cases where overfull boxes are otherwise unavoidable. If
+|\emergencystretch| is positive, \TeX\ will make a third pass over a
+paragraph before choosing the line breaks, when the first passes did
+not find a way to satisfy the ^|\pretolerance| and ^|\tolerance|.
+The effect of\/ |\emergencystretch| is to scale down the badnesses so
+that large infinities are distinguishable from smaller ones. By
+setting |\emergencystretch| high enough (based on |\hsize|) you can be
+sure that the |\tolerance| is never exceeded; hence overfull boxes
+will never occur unless the line-breaking task is truly impossible.
+
+\bugonpage A116, lines 11--15 (6/7/89)
+
+\danger If you have two or more |\topinsert| or |\pageinsert| commands in
+quick succession, \TeX\ may need to carry them over to several subsequent
+pages; but they will retain their relative order when they are
+carried over. For example, suppose you have pages that are nine inches
+tall, and suppose you have already specified 4~inches of text for some
+page, say page~25. Then suppose you make seven topinserts in a row, of%
+{\parfillskip=0pt\endgraf}\endgroup
+
+\bugonpage A125, lines 13--29 (9/23/89)
+
+\ddanger \looseness=-1
+When the best page break is finally chosen, \TeX\ removes everything after
+the chosen breakpoint from the bottom of the ``current page,'' and puts it
+all back at the top of the ``recent contributions.'' The
+chosen breakpoint itself is placed at the very top of the recent contributions.
+If it is a penalty item, the value of the penalty is recorded in
+^|\outputpenalty| and the penalty in the contribution list is changed
+to $10000$; otherwise |\outputpenalty| is set to 10000.
+The insertions that remain on the current page are of three kinds: For
+each class~$n$ there are unsplit insertions, followed possibly by
+a single split insertion, followed possibly by others. If
+^|\holdinginserts|$\null>0$, all insertions remain in place (so that
+they might be contributed again); otherwise they are all removed from
+the current page list as follows: The unsplit insertions
+are appended to |\box|$\,n$, with no interline glue between them. \
+(^{Struts} should be used, as in the |\vfootnote| macro of
+Appendix~B\null.) \
+If a split insertion is present, it is effectively |\vsplit| to the size
+that was computed previously in Step~4; the top part is treated as an
+unsplit insertion, and the remainder (if any) is converted to an insertion
+as if it had not been split. This remainder, followed by any other floating
+insertions of the same class, is held
+over in a separate place. \ (They will show up on the ``current page'' if
+^|\showlists| is used while an ^|\output| routine is active; the total
+number of such insertions appears in ^|\insertpenalties| during an
+|\output| routine.) %\
+Finally, the remaining items before the best break on the current page are put
+together in a |\vbox|\parfillskip=0pt
+
+\bugonpage A131, line 12 (9/22/89)
+
+\ninepoint\noindent
+work fine; but sometimes you want to have uniformity
+between different members of a\cutpar
+
+\bugonpage A155, lines 3--5 (9/23/89)
+
+\ninepoint\noindent
+when it encounters a character that
+is given explicitly as ^|\char|\<number>.
+
+\bugonpage A214, lines 19--24 (9/23/89)
+
+\ninepoint
+\textindent\bull |\the|\<special register>, where \<special register> is
+one of the integer quantities ^|\prevgraf|, ^|\deadcycles|, ^|\insertpenalties|,
+^|\inputlineno|, ^|\badness|,
+or ^|\parshape| (denoting only the number of lines of\/ |\parshape|); or
+one of the dimensions ^|\pagetotal|, ^|\pagegoal|, ^|\pagestretch|,
+^|\pagefilstretch|, ^|\pagefillstretch|, ^|\pagefilllstretch|, ^|\pageshrink|,
+^|\pagedepth|. In horizontal modes you can also refer to a special integer,
+|\the\spacefactor|; in vertical modes there's a special dimension,
+|\the\prevdepth|.
+
+\bugonpage A229, new copy after line 11 (9/23/89)
+
+\ddanger \TeX\ will report the badness of glue setting in a box if
+you ask for the numeric quantity
+^|\badness| after making a box. For example, you might say
+\begintt
+\setbox0=\line{\trialtexta}
+\ifnum\badness>250 \setbox0=\line{\trialtextb}\fi
+\endtt
+The badness is between 0 and 10000
+unless the box is overfull, when |\badness=1000000|.
+
+\bugonpage A271, lines 17--20 (9/23/89)
+
+\ninepoint
+\beginsyntax
+ \alt<countdef token>\alt^|\count|<8-bit number>\alt<codename><8-bit number>
+ \alt<chardef token>\alt<mathchardef token>\alt^|\parshape|\alt^|\inputlineno|
+ \alt^|\hyphenchar|<font>\alt^|\skewchar|<font>\alt^|\badness|
+\endsyntax
+
+\bugonpage A272, lines 3--4 (9/23/89)
+
+\ninepoint\noindent
+value is between 0~and $2^8-1=255$; a ^\<4-bit number> is similar.
+
+\bugonpage A273, insert after lines 11, 20, 21, 21, 38 (9/23/89)
+
+\ninepoint
+\begindisplay
+|\holdinginserts|\quad(positive if insertions remain dormant in output box)\cr
+|\language|\quad(the current set of hyphenation rules)\cr
+|\lefthyphenmin|\quad(smallest fragment at beginning of hyphenated word)\cr
+|\righthyphenmin|\quad(smallest fragment at end of hyphenated word)\cr
+|\errorcontextlines|\quad(maximum extra context shown when errors occur)\cr
+\enddisplay
+
+\bugonpage A274, insert after line 4 (9/23/89)
+
+\ninepoint\indent
+|\emergencystretch|\quad(reduces badnesses on final pass of line-breaking)
+
+\bugonpage A275, line 13 (9/23/89)
+
+\ninepoint\noindent
+That makes a total of 103 parameters of all five kinds.
+
+\bugonpage A283, line 14 (9/23/89)
+
+\ninepoint
+\beginsyntax
+ \alt^|\noboundary|\alt^|\unhbox|\alt^|\unhcopy|\alt^|\valign|\alt^|\vrule|
+\endsyntax
+
+\bugonpage A286, lines 3--12 from the bottom (9/23/89)
+
+\ninepoint
+\textindent{$\bull$}%
+\<letter>, \<otherchar>, \kern-1pt^|\char|\<8-bit number>, \<chardef token>,
+\kern-1pt^|\noboundary|.\enskip
+The most common commands of all are the character commands that tell
+\TeX\ to append a character to the current horizontal
+list, using the current font.
+If two or more commands of this type occur in succession, \TeX\ processes
+them all as a unit, converting to ligatures and/or
+inserting kerns as directed by the font information. \ (Ligatures and
+kerns may be influenced by invisible ``boundary'' characters at the left
+and right, unless |\noboundary| appears.) \ Each character
+command adjusts ^|\spacefactor|, using
+the ^|\sfcode| table as described in Chapter~12.
+In unrestricted horizontal mode, a
+`|\discretionary{}{}{}|' item is appended after a character whose code is
+the ^|\hyphenchar| of its font, or after a ligature formed from a sequence
+that ends with such a character.
+
+\bugonpage A287, insert after line 19 (9/23/89)
+
+\ninepoint
+\textindent{$\bull$}%
+|\setlanguage|\<number>.\enskip See the conclusion of Appendix H.
+
+\bugonpage A289, lines 9--14 from the bottom (9/23/89)
+
+\ninepoint\noindent
+$2^{15}-1$. This is done by replacing the character number by its
+^|\mathcode| value. If the
+|\mathcode| value turns out to be $32768=\null$\hex{8000}, however,
+ the \<character>
+is replaced by an ^{active character} token having the original character
+code (0 to~255); \TeX\ forgets the original \<character> and expands this
+active character according to the rules of Chapter~20.
+
+\bugonpage A290, insert before 13th line from bottom (9/23/89)
+
+\ninepoint
+\textindent{$\bull$}%
+|\noboundary|. This command is redundant and therefore has no
+effect; boundary ligatures are automatically disabled in math modes.
+
+\bugonpage A296, line 16 from the bottom (9/22/89)
+
+\noindent[There should be a `|^|' just above the `|3|' in the line below.
+This was mistakenly dropped by the printer some time during 1985; it was
+correct in the first two printings and it has always been correct inside the
+computer!]
+
+\bugonpage A309, lines 3--5 (9/23/89)
+
+\ninepoint\noindent
+\hbox to\parindent{\bf\hss8.4.\enspace}\ignorespaces
+|$|$_{3}$ |x|$_{11}$ |^|$_7$ |2|$_{12}$ |$|$_{3}$ |~|$_{13}$ \]$_{10}$
+\cstok{TeX} |b|$_{12}$ |v|$_{12}$ \]$_{10}$. The final space comes from the
+\<return> placed at the end of the line. Code |^^6| yields |v| only
+when not followed by |0|--|9| or |a|--|f|.
+The initial space is ignored, because state~$N$
+governs the beginning of the line.
+
+\bugonpage A314, line 27 (9/23/89)
+
+\ninepoint\noindent
+The English word `eighteen' might deserve similar treatment.
+\TeX's hyphenation algorithm will not make such spelling changes automatically.
+
+\bugonpage A318, line 19 (3/3/89)
+
+\ninepoint
+|\def\clearnotenumber{\notenumber=0\relax}|
+
+\bugonpage A330, line 3 (8/25/89)
+
+\ninepoint\noindent
+\hbox to\parindent{\bf\hss20.10.\enspace}\ignorespaces
+|\def\overpaid{{\count0=\balance|
+
+\bugonpage A336, lines 4--8 from the bottom (9/23/89)
+
+\ninepoint\noindent
+badness rating of a
+box is at most 10000, except that the |\badness| of
+an overfull box is 1000000. |INITEX| initializes |\tolerance| to
+10000, thereby making all line breaks feasible. Penalties of 10000 or more
+prohibit breaks; penalties of $-10000$ or less make breaks mandatory. The
+cost of a page break is 100000, if the badness is 10000 and if the
+associated penalties are less than 10000 in magnitude (see Chapter~15).
+
+\bugonpage A337, lines 2--16 (9/23/89)
+
+\ninepoint\noindent
+ifies characters whose codes differ by~64
+from the codes of |?|, |@|, |A|; this convention applies only to
+characters with ASCII codes less than~128. There are 256 possible characters,
+hence 256 entries in each of the |\catcode|, |\mathcode|,
+|\lccode|, |\uccode|, |\sfcode|, and |\delcode| tables. All
+|\lccode|, |\uccode|, and |\char| values
+must be less than~256. A font has at most 256 characters. There are
+256~|\box| registers, 256~|\count| registers, 256~|\dimen| registers,
+256~|\skip| registers, 256~|\muskip| registers, 256~|\toks| registers,
+256~hyphenation tables.
+The ``at size'' of a font must be less than~$2048\pt$, i.e.,~$2^{11}\pt$.
+Math delimiters are encoded by multiplying the math~code of the ``small
+character'' by~$2^{12}$. The magnitude of
+a~\<dimen> value must be less than~$16384\pt$, i.e.,~$2^{14}\pt$;
+similarly, the \<factor> in a~\<fil dimen> must be less than~$2^{14}$.
+A~|\mathchar| or |\spacefactor| or |\sfcode| value must be less than~$2^{15}$;
+a~|\mathcode| or |\mag| value must be less than or equal to~$2^{15}$,
+and $2^{15}$ denotes an ``active'' math character. There
+are $2^{16}\rm\,sp$ per~pt. A~|\delcode| value
+must be less than~$2^{24}$; a~|\delimiter|, less than $2^{27}$.
+The |\end| command sometimes contributes
+a penalty of $-2^{30}$ to the current page. A~\<dimen> must be less than
+$2^{30}\rm\,sp$ in absolute value; a~\<number> must be
+less than $2^{31}$ in absolute value.
+
+\bugonpage A348, line 12 from the bottom (9/23/89)
+
+\ninepoint\noindent
+^|\showboxbreadth||=5 |^|\showboxdepth||=3 |^|\errorcontextlines||=5|
+
+\bugonpage A364, insert before line 18 from the bottom (9/23/89)
+
+\ninepoint\noindent
+^|\lefthyphenmin||=2 |^|\righthyphenmin||=3 % disallow x- or -xx breaks|
+
+\bugonpage A364, line 5 from the bottom (9/23/89)
+
+\ninepoint\noindent
+|\def|^|\fmtname||{plain}\def\fmtversion{3.0} % identifies the current format|
+
+\bugonpage A369, insert before line 5 from the bottom (9/23/89)
+
+\ninepoint
+Modern keyboards allow 256 codes to be input, not just 128; so \TeX\
+represents characters internally as numbers in the range 0--255 (i.e.,
+\oct{000}--\oct{377}, or \hex{00}--\hex{FF}). Implementations of \TeX\
+differ in which characters they will accept in input files and which
+they will transmit to output files; these subsets can be specified
+independently. A completely permissive version of \TeX\ allows full
+256-character input and output; other versions might ignore all
+but the visible characters of ASCII; still other versions might
+distinguish the tab character (code \oct{011}) from a space on input,
+but might output each tab as a sequence of three characters |^^I|.
+
+\bugonpage A370, lines 3--7 (9/23/89)
+
+\ninepoint\noindent
+close as possible to the ASCII conventions.
+\ (b)~Make sure that codes \oct{041}--\oct{046}, \oct{060}--\oct{071},
+\oct{141}--\oct{146}, and \oct{160}--\oct{171} are present and that
+each unrepresentable
+internal code $<\null$\oct{200} leads to a representable code when \oct{100} is
+added or subtracted; then all 256 codes can be input and output.
+\ (c)~Cooperate with everyone else who shares
+the same constraints, so that you all adopt the same policy.
+\ (See Appendix~J for information about the \TeX\ Users Group.)
+
+\bugonpage A370, bottom line (9/23/89)
+
+\ninepoint\noindent
+doesn't matter if these symbols have their plain
+\TeX\ meanings or not. \ (6)~There is a special convention for
+representing characters 0--255 in the hexadecimal forms
+|^^00|--|^^ff|, explained in Chapter~8. This convention is always
+acceptable as input, when |^| is any character of catcode~7. Text
+output is produced with this convention only when representing
+characters of code $\ge128$ that a \TeX\ installer has chosen not to
+output directly.
+
+\bugonpage A385, line 8 (5/14/89)
+
+\ninepoint
+|\def\beginbox{\setbox0=\hbox\bgroup}|
+
+\bugonpage A400, line 18 from the bottom (9/23/89)
+
+\ninepoint\noindent
+page prematurely if you want to pass a signal. \ (Set
+^|\holdinginserts| positive to pass a signal when the contents of\/
+|\box255| will be sent back through the page builder again, if any
+insertions are present.)
+
+\bugonpage A419, lines 4--6 (9/23/89)
+
+\ninepoint\noindent
+shortened or lengthened anyway;
+book preparation with \TeX, as with type, encourages interaction between
+humans and machines.) \
+The lines of the quotations are set ^{flush right} by using
+^|\obeylines| together with a stretchable ^|\leftskip|:
+
+\bugonpage A444, lines 21--26 (9/23/89)
+
+\ninepoint\noindent
+following one, using the specified family and the current size, then
+insert the ligature character and continue as specified by the font;
+two characters may collapse into one, or a new character may appear.
+Otherwise if the font information
+shows a kern between the current symbol and the next, insert a kern item
+after the current Ord atom and move to the next item after that.
+Otherwise (i.e., if no ligature or kern is specified between the present
+text symbol and the following character), go to Rule~17.
+
+\bugonpage A453, lines 12--14 from the bottom (9/23/89)
+
+\begingroup
+\hyphenpenalty=-1000 \pretolerance=-1 \tolerance=1000
+\doublehyphendemerits=-100000 \finalhyphendemerits=-100000
+\ninepoint\noindent
+Exception: The character
+`|.|'~is treated as if it were a \<letter> of code~0
+when it appears in a pattern. Code~0 (which obviously cannot match a nonzero
+|\lccode|) is used by \TeX\ to represent the
+left or right edge of a word when it is being hyphenated.
+
+\endgroup
+
+\bugonpage A454, lines 7--15 from the bottom (9/23/89)
+
+\begingroup
+\hyphenpenalty=-1000 \pretolerance=-1 \tolerance=1000
+\doublehyphendemerits=-100000 \finalhyphendemerits=-100000
+\ddanger If a trial word $l_1\ldots l_n$ has been found by this process,
+hyphenation will still be abandoned unless $n\ge\lambda+\rho$, where
+$\lambda=\max(1,\hbox{|\lefthyphenmin|})$ and
+$\rho=\max(1,\hbox{|\righthyphenmin|})$.
+\ (Plain \TeX\ takes $\lambda=2$ and $\rho=3$.) \ Furthermore, the items
+immediately following the trial word must consist of zero or more
+characters, ligatures, and implicit kerns, followed immediately by
+either glue or an explicit kern or a penalty item or a whatsit or an
+item of vertical mode material from ^|\mark|, ^|\insert|, or ^|\vadjust|.
+Thus, a box or rule or math formula or discretionary following too closely
+upon the trial word will inhibit hyphenation. (Since \TeX\ inserts
+empty discretionaries after ^{explicit hyphens}, these rules imply that
+already-hyphenated compound words will not be further hyphenated by
+the algorithm.)
+
+\endgroup
+
+\bugonpage A455, new copy after line 13 (9/23/89)
+
+\begingroup
+\hyphenpenalty=-1000 \pretolerance=-1 \tolerance=1000
+\doublehyphendemerits=-100000 \finalhyphendemerits=-100000
+\ddanger \looseness=-1
+So far we have assumed that \TeX\ knows only one style of
+hyphenation at a time; but in fact \TeX\ can remember up to 256
+distinct sets of rules, if you have enough memory in your computer. An
+integer parameter called ^|\language| selects the rules actually used;
+every ^|\hyphenation| and ^|\patterns| specification appends new rules
+to those previously given for the current value of\/ |\language|.
+\ (If\/ |\language| is negative or greater than 255, \TeX\ acts as if
+|\language|$\null=0$.) \ All |\patterns| for all languages must be
+given before a paragraph is typeset, if |INITEX| is used for
+typesetting.
+
+\ddanger \TeX\ is able to work with several languages in the same
+paragraph, because it operates as follows. At the beginning of a
+paragraph the ``current language'' is defined to be~0. Whenever a
+character is added to the current paragraph (i.e., in unrestricted
+horizontal mode), the current language is compared to |\language|; if
+they differ, the current language is reset and a whatsit node
+specifying the new current language is inserted before the character.
+Thus, if you say `|\def\french{\language1...}|' and `|mix| |{\french
+franc/ais}| |with| |English|', \TeX\ will put whatsits before the |f|
+and the~|w|; hence it will use language~1 rules when hyphenating
+|franc/ais|, after which it will revert to language~0. You can insert
+the whatsit yourself (even in restricted horizontal mode) by saying
+^|\setlanguage|\<number>; this changes the current language but it
+does not change |\language|.
+
+\endgroup
+
+\bugonpage A459, right column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\badness|, 214, {\it229}, 271.
+
+\bugonpage A461, right column (9/23/89)
+
+\eightpoint
+caron, {\sl see\/} h\'a\v cek.
+
+\bugonpage A464, line 10 (5/15/89)
+
+\eightpoint
+displays, 87, 103, {\it139--145}, {\it166--167},
+
+\bugonpage A464, right column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\emergencystretch|, $\underline{107}$, 274.
+
+\bugonpage A465, left column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\errorcontextlines|, $\underline{34}$, 273, {\it348}.
+
+\bugonpage A466, entry for `fractions' (9/23/89)
+
+\eightpoint[Add page 332 to this entry.]
+
+\bugonpage A466, entry for `French'' (9/23/89)
+
+\eightpoint[Add page 455 to this entry.]
+
+\bugonpage A467, entry for `hexadecimal' (9/23/89)
+
+\eightpoint[Add pages 45, 47--48 to this entry.]
+
+\bugonpage A467, right column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\holdinginserts|, $\underline{125}$, 273, 400.
+
+\bugonpage A467, bottom line (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\hyphenation|, 277, {\it419}, $\underline{452}$--$\underline{453}$, 455.
+
+\bugonpage A468, right column (9/23/89)
+
+\eightpoint
+infinite badness, 97, 107, 111, 229, 317.
+
+\bugonpage A468, right column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\inputlineno|, 214, 271.
+
+\bugonpage A469, entry for kerns (9/23/89)
+
+\eightpoint[Add pages 286 and 444 to this entry.]
+
+\bugonpage A469, left column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\language| (hyphenation method), 273, $\underline{455}$.
+
+\bugonpage A469, right column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\lefthyphenmin|, 273, {\it364}, $\underline{454}$.
+
+\bugonpage A470, entry for ligatures (9/23/89)
+
+\eightpoint[Add pages 286 and 444 to this entry.]
+
+\bugonpage A472, left column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\noboundary|, 283, $\underline{286}$, 290.
+
+\bugonpage A473, right column (9/23/89)
+
+\eightpoint
+overfull boxes, 27--30, 94, 229, 238,\par
+\indent\qquad 302--303, 307, 400.\par
+\indent\quad avoiding, 107.
+
+\bugonpage A474, left column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\patterns|, 277, $\underline{453}$, 455.
+
+\bugonpage A476, left column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\righthyphenmin|, 273, {\it364}, $\underline{454}$.
+
+\bugonpage A476, right column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\setlanguage|, 287, $\underline{455}$.
+
+\bugonpage A476, right column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\showboxbreadth|, 273, $\underline{302}$, 303, {\it348}.\par
+\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\showboxdepth|, 79, 273, $\underline{302}$, 303, {\it348}.
+
+\bugonpage A479, left column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\tolerance|, {\it29--30}, 91, 94, $\underline{96}$, 107, 272,\par
+\indent\qquad{\it317}, {\it333}, {\it342}, {\it348}, {\it364}, {\it451}.
+
+\bugonpage A481, right column, last six entries (9/23/89)
+
+\def\frac#1/#2{\leavevmode\kern.1em
+ \raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em
+ /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}%
+\eightpoint
+\frac1/2, 67, 332.\par
+1/2, in unslashed form, 141, 186.\par
+\<4-bit number>, $\underline{271}$.\par
+\<8-bit number>, $\underline{271}$, 276--278.\par
+\<15-bit number>, $\underline{271}$, 277, 289, 291.\par
+\<27-bit number>, $\underline{271}$, 289, 291.\par
+
+\bugonpage A483, lines 15 and 21 (9/23/89)
+
+\noindent[Delete these two lines, as TUG's address is no longer c/o AMS.]
+
+ % volume B
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\bugonpage Bvii, top two lines (4/21/89)
+
+{\hsize=29pc
+\tenpoint\noindent
+{\it {\sltt WEB} documentation for four utility programs that are
+often used in conjunction with \TeX: {\sltt POOLtype}, {\sltt TFtoPL},
+{\sltt PLtoTF}, and {\sltt DVItype}.}
+\par}
+
+\bugonpage B2, line 32 (6/20/89)
+
+\ninepoint\noindent\hskip10pt
+{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
+{\tt This\]is\]TeX,\]Version\]2.991\char'23}\quad
+$\{\,$printed when \TeX\ starts$\,\}$
+
+\bugonpage B118, lines 2--4 (3/2/89)
+
+\ninepoint\noindent\hskip10pt
+{\bf begin if\/} $\\{cur\_level}>\\{level\_one}$ {\bf then}\par
+\noindent\hskip20pt{\bf begin} \\{check\_full\_save\_stack}; \
+ $\\{save\_type}(\\{save\_ptr})\gets\\{insert\_token}$;\par
+\noindent\hskip20pt$\\{save\_level}(\\{save\_ptr})\gets\\{level\_zero}$; \
+ $\\{save\_index}(\\{save\_ptr})\gets t$; \ \\{incr}(\\{save\_ptr});\par
+\noindent\hskip20pt{\bf end};
+
+\bugonpage B182, line 13 becomes two lines (6/20/89)
+
+\ninepoint\noindent
+$k,\\{kk}$: \\{small\_number};\quad
+ $\{\,$number of digits in a decimal fraction$\,\}$\par\noindent
+$p,q$: \\{pointer};\quad
+ $\{\,$top of decimal digit stack$\,\}$
+
+\bugonpage B182, line 15 from the bottom (6/20/89)
+
+\ninepoint\noindent\hskip10pt
+{\bf begin} $k\gets0$; $p\gets\\{null}$; \\{get\_token};\quad
+ $\{\,$\\{point\_token} is being re-scanned$\,\}$
+
+\bugonpage B182, line 11 from the bottom (6/20/89)
+
+\ninepoint\noindent\hskip30pt
+{\bf begin} $q\gets\\{get\_avail}$; $\\{link}(q)\gets p$;
+ $\\{info}(q)\gets\\{cur\_tok}-\\{zero\_token}$;
+ $p\gets q$; $\\{incr}(k)$;
+
+\bugonpage B182, line 8 from the bottom (6/20/89)
+
+\ninepoint\noindent
+\\{done1}: {\bf for} $\\{kk}\gets k$ {\bf downto} 1 {\bf do}\par
+\noindent\hskip20pt
+{\bf begin} $\\{dig}[kk-1]\gets\\{info}(p)$; $q\gets p$; $p\gets\\{link}(p)$;
+ $\\{free\_avail}(q)$;\par
+\noindent\hskip20pt{\bf end};\par
+\noindent\hskip10pt$f\gets\\{round\_decimals}(k)$;
+
+\bugonpage B332, lines 11 and 12 from the bottom (4/8/89)
+
+\ninepoint
+\noindent\hskip10pt
+{\bf begin if\/} $\\{cur\_align}=\\{null}$ {\bf then}
+ \\{confusion}({\tt\char'23endv\char'23});\par\noindent\hskip10pt
+$q\gets\\{link}(\\{cur\_align})$; \ {\bf if\/} $q=\\{null}$ {\bf then}
+ \\{confusion}({\tt\char'23endv\char'23});
+
+\bugonpage B466, line 5 becomes three lines (6/7/89)
+
+\ninepoint
+\noindent
+$\\{mmode}+\\{halign}$: {\bf if\/} \\{privileged} {\bf then}\par\noindent
+\hskip20pt{\bf if\/} $\\{cur\_group}=\\{math\_shift\_group}$
+ {\bf then} \\{init\_align}\par\noindent\hskip20pt
+{\bf else} \\{off\_save};
+
+\bugonpage B518, line 25 (8/31/89)
+
+\ninepoint\noindent\hskip10pt
+$\\{undump}(\\{lo\_mem\_stat\_max}+1)(\\{lo\_mem\_max})(\\{rover})$; \
+$p\gets\\{mem\_bot}$; \ $q\gets\\{rover}$;
+
+ % volume C
+\hsize=29pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+
+\buginvol C, in general (9/23/89)
+
+\ninepoint\noindent
+[Change `127' to `255' and `128' to `256' in contexts referring to character
+codes. This happens on pages 188(thrice) and 251.]
+
+\bugonpage C91, lines 12 and 13 (8/31/89)
+
+\begintt
+\mode=cheapo; input newface
+\endtt
+and the same file should also produce a high-resolution font if we start with
+
+\bugonpage C204, line 4 (8/18/89)
+
+\ninepoint\noindent
+so that
+\\{currenttransform} multiplies all $y$~coordinates by
+\\{aspect\_ratio}, when paths are\cutpar
+
+\bugonpage C212, lines 24--27 (9/30/89)
+
+\ninepoint
+\begindisplay
+{\it boundarychar}\quad&the right boundary character for ligatures and kerns\cr
+\enddisplay
+All of these quantities are numeric. They are initially zero at the
+start of a job, except for {\it year\/}, {\it month\/},
+ {\it day\/}, and {\it time\/}, which
+are initialized to the time the run began; furthermore, {\it boundarychar\/} is
+initially~$-1$. A {\it granularity\/} of zero is equivalent to
+ $\hbox{\it granularity\/}=1$.
+A preloaded base file like plain \MF\ will usually give nonzero values to
+several other internal quantities on this list.
+
+\bugonpage C259, lines 16 and 17 from the bottom (5/14/89)
+
+\tenpoint
+\noindent
+|screenchars|; \ |screenstrokes|; \ |imagerules|; \ |gfcorners|; \
+|nodisplays|;\hfil\break
+|notransforms|; \ |input| \<filename>.
+
+\bugonpage C282, the three lines following the chart (9/30/89)
+
+\tenpoint\noindent
+\MF\ can also be configured to accept any or all of the character codes
+128--255.
+However, \MF\ programs that make use of anything in addition to the 95
+standard ASCII characters cannot be expected to run on other systems, so
+the use of extended character sets is discouraged.
+
+\bugonpage C316, bottom 14 lines and top 30 of page C317 (9/30/89)
+
+\ninepoint
+Ligature information and kerning information is specified in short
+``^{ligtable programs}'' of a particularly simple form. Here's an example
+that illustrates most of the features (although it is not a serious
+example of typographic practice):
+\beginlines
+^|ligtable|| "f": "f" =: oct"013", "i" |\||=: oct"020", skipto 1;|
+|ligtable "o": "b": "p": "e" kern .5u#, "o" kern .5u#, "x" kern-.5u#,|
+| 1:: "!" kern u#;|
+\endlines
+This sequence of instructions can be paraphrased as follows:
+\smallskip
+\hangindent 3pc
+Dear \TeX, when you're typesetting an~`f' with this font, and when the
+following character also belongs to this font, look at it closely because
+you might need to do something special: If that following character is
+another~`f', replace the two f's by character code |oct"013"|
+[namely `\char'13'\kern.5pt];
+if it's an `i', retain the `f' but replace the `i' by character code
+|oct"020"| [a dotless `\char'20'\kern.5pt];
+otherwise skip down to label `|1::|' for further instructions.
+When you're typesetting an `o' or~`b' or~`p', if the next input to \TeX\ is
+`e' or~`o', add a half unit
+of space between the letters; if it's an `x', subtract a half unit; if it's an
+exclamation point, add a full unit. The last instruction applies also
+to exclamation points following~`f' (because of the label `|1::|').
+\smallskip\noindent
+When a character code appears in front of a colon, the colon ``labels''
+the starting place for that character's ligature and kerning program,
+which continues to the end of the ligtable statement. A double colon denotes
+a ``local label''; a |skipto| instruction advances to the next matching local
+label, which must appear before 128 ligtable steps intervene. The special
+label \|\||:| can be used to initiate ligtable instructions for an invisible
+``left boundary character'' that is implicitly present just before every
+word; an invisible ``right boundary character'' equal to {\it boundarychar\/} is
+also implicitly present just after every word, if {\it boundarychar\/}
+ lies between
+0 and~255.
+
+The general syntax for ligtable programs is pretty easy to guess from
+these examples, but we ought to exhibit it for completeness:
+\beginsyntax \chardef\\=`\|
+<ligtable command>\is[ligtable]<ligtable program><optional skip>
+<ligtable program>\is<ligtable step>\alt<ligtable program>[,]<ligtable step>
+<optional skip>\is[,] [skipto]<code>\alt<empty>
+<ligtable step>\is<code><ligature op><code>
+ \alt<code>[kern]<numeric expression>
+ \alt<label><ligtable step>
+<ligature op>\is[=:]\alt[\\=:]\alt[\\=:>]\alt[=:\\]\alt[=:\\>]%
+ \alt[\\=:\\]\alt[\\=:\\>]\alt[\\=:\\>>]
+<label>\is<code>[:]\alt<code>[::]\alt[\\\\:]
+<code>\is<numeric expression>\alt<string expression>
+\endsyntax
+A \<code> should have a numeric value between 0 and 255, inclusive,
+after having been rounded to the nearest integer; or it should be a
+string of length~1, in which case it denotes the corresponding
+^{ASCII} code (Appendix~C\null). For example, |"A"| and |64.61| both
+specify the code value 65. Vertical bars to the left or right of `|=:|'
+tell \TeX\ to retain the original left and/or right character that invoked a
+ligature. Additional `|>|' signs tell \TeX\ to advance its focus of attention
+instead of doing any further ligtable operations at the current
+character position.
+
+\bugonpage C338, lines 21 and 22 (9/30/89)
+
+\ninepoint\noindent
+and 127--255 have to be specified with the `|#|' option,
+on non-fancy installations of \TeX,
+and so does code 35 (which is the ASCII code of `|#|' itself).
+
+\bugonpage C346, left column, after line 14 (9/30/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+\||=:|, {\it316}, $\underline{317}$.\par
+\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+\||=:>|, $\underline{317}$.\par
+\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|=:|\|, $\underline{317}$.\par
+\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|=:|\||>|, $\underline{317}$.\par
+\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+\||=:|\|, $\underline{317}$.\par
+\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+\||=:|\||>|, $\underline{317}$.\par
+\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+\||=:|\||>>|, $\underline{317}$.\par
+
+\bugonpage C346, left column, after line 31 (9/30/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|::| (local label), $\underline{317}$.\par
+\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+\|\||:| (left boundary label), $\underline{317}$.\par
+
+\bugonpage C347, left column (9/30/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|boundarychar|, 212, 317.
+
+\bugonpage C352, left column (9/30/89)
+
+\eightpoint[Change `\<ligature replacement>' to `\<ligature op>'.]
+
+\bugonpage C354, left column (9/30/89)
+
+\eightpoint
+\<optional skip>, 217.
+
+\bugonpage C356, left column (9/30/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|skipto|, {\it316}, $\underline{317}$.
+
+ % Volume D
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\bugonpage Dvi, bottom two lines, and top lines of page vii (4/21/89)
+
+{\hsize=29pc \tenpoint
+\textindent\bull ``\MF\/ware'' by Donald~E. Knuth, Tomas~G. Rokicki, and
+Ar\-thur~L. Samuel, Stanford Computer Science Report 1255 (Stanford,
+California, April 1989), 207~pp. \ {\it The {\sltt WEB} programs for
+four utility programs that are often used in conjunction with
+\slMF\kern1pt: {\sltt GFtype}, {\sltt GFtoPK}, {\sltt GFtoDVI},
+and {\sltt MFT}.}
+\par}
+
+\bugonpage D63, line 9 (8/31/89)
+
+\tenpoint\noindent
+\\{mem}, so we
+allow pointers to assume any \\{halfword} value. The minimum memory
+index represents\cutpar
+
+\bugonpage D63, line 28 (8/31/89)
+
+\tenpoint\centerline{$\\{null}=\\{mem\_min}<\\{lo\_mem\_max}<
+\\{hi\_mem\_min}<\\{mem\_top}\le\\{mem\_end}\le\\{mem\_max}$.}
+
+\bugonpage D67, in the July 1987 printing (4/7/89)
+
+\ninepoint\noindent
+[Delete line 7, which has a redundant `{\bf if\/} $r=p$ {\bf then}';
+ move line 8 to the left 10 points for alignment; and restore the following
+ line (which was deleted by mistake after line 8):
+
+ \noindent\hskip10pt
+ $\\{node\_size}(p)\gets q-p$\quad$\{\,$reset the size in case it grew$\,\}$
+
+ \noindent
+ These corrections are needed only in the reprinting made July, 1987.]
+
+\bugonpage D228, in the July 1987 printing (4/7/89)
+
+\ninepoint\noindent
+[Delete lines 14--15, which were inserted erroneously from a previous errata
+list; and restore the following lines (which were deleted by mistake):
+
+\noindent\hskip20pt
+{\bf begin} \\{double}(\\{max\_coef}); \
+\\{double}(\\{x0}); \
+\\{double}(\\{x1}); \
+\\{double}(\\{x2});\par\noindent\hskip20pt
+\\{double}(\\{y0}); \
+\\{double}(\\{y1}); \
+\\{double}(\\{y2});\par\noindent\hskip20pt
+{\bf end}
+
+\noindent
+These corrections are needed only in the reprinting made July, 1987.]
+
+\bugonpage D248, in the July 1987 printing (4/7/89)
+
+\ninepoint\noindent
+[Delete line 16, which begins with `$d\gets\\{take\_fraction}$';
+and restore the following line (which was deleted by mistake after line 22):
+
+\noindent\hskip10pt
+{\bf if\/} $d<\\{alpha}$ {\bf then} $d\gets\\{alpha}$
+
+\noindent
+These corrections are needed only in the reprinting made July, 1987.]
+
+\bugonpage D389, line 10 (6/20/89)
+
+\ninepoint\noindent\hskip20pt
+\\{help1}({\tt\char'23
+The\]expression\]above\]should\]have\]been\]a\]number\]>=3/4.\char'23});
+
+\bugonpage D504, line 25 (8/31/89)
+
+\ninepoint\noindent\hskip10pt
+$\\{undump}(\\{lo\_mem\_stat\_max}+1)(\\{lo\_mem\_max})(\\{rover})$; \
+$p\gets\\{mem\_min}$; \ $q\gets\\{rover}$;
+
+\bugonpage D510, in the July 1987 printing (4/7/89)
+
+\ninepoint\noindent
+[Move the 7th-to-last line, which begins with `\\{internal}[\\{fontmaking}]',
+one line down, and indent it to the right by 10 more points.
+This correction is needed only in the reprinting made July, 1987.]
+
+ % volume E
+\hsize=29pc
+\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}}
+
+\bugonpage Exiii, bottom four lines (5/5/89)
+
+{\hsize=29pc \tenpoint
+\textindent\bull ``Metamarks: Preliminary studies for a Pandora's Box of
+shapes'' by Neenie Billawala,
+Stanford Computer Science Report 1256 (Stanford,
+California, May 1989), 132~pp. \ {\it Lavishly illustrated studies in
+parameter variation, leading to the design of a new family of
+typefaces called Pandora.}
+\par}
+
+\bugonpage E401, bottom line (5/16/89)
+
+\ninepoint\noindent
+{\bf \def\_{\kern.04em\vbox{\hrule width.3em height .6pt}\kern.08em}%
+math\_fit}$(-.3\\{cap\_height}\0*\\{slant}-.5u\0,\\{ic}\0)$;\par\noindent
+{\bf penlabels}$(1,2,3,4,5,6,7,8)$; {\bf endchar\/};
+\smallskip\noindent
+[some points and labels are missing at the tip of the tail on page 400]
+ \bye
+ Now here are some that I will make soon!
+
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errata.four b/Master/texmf-doc/doc/english/knuth/errata/errata.four
new file mode 100644
index 00000000000..11d0435e749
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata.four
@@ -0,0 +1,1052 @@
+% Bugs (sigh) in Computers \& Typesetting
+
+\input manmac
+\font\sltt=cmsltt10
+\font\niness=cmss9
+\font\ninessi=cmssi9
+\proofmodefalse
+\raggedbottom
+\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
+
+\def\today{\number\day\
+ \ifcase\month\or
+ Jan\or Feb\or Mar\or Apr\or May\or Jun\or
+ Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi
+ \ \number\year}
+
+\def\cutpar{{\parfillskip=0pt\par}}
+
+\def\rhead{Bugs in {\tensl Computers \& Typesetting, 1987--1988}}
+\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
+\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
+\newcount\nn
+\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
+\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
+
+\noindent This is a list of all corrections made to {\sl Computers \&
+Typesetting}, Volumes A--E\null, between
+16 June 1987 and 20 February 1989. Corrections made to
+the softcover version of {\sl The \TeX book} are the same as corrections to
+Volume~A\null. Corrections to the softcover version of {\sl The
+\slMF\kern1ptbook\/} are the same as corrections to Volume~C\null.
+Some of these corrections have already been made in reprintings
+of the books. Some of these corrections affect the indexes and
+mini-indexes of Volumes B~and~D in ways not shown here. Corrections
+made up to 15 June 1987 appear in other files.
+ % volume A
+
+\bugonpage A159, line 22 (2/15/88)
+
+\ninepoint\noindent
+`|\nolimits|' if the normal |\displaylimits|
+convention has been overridden; a Rad\cutpar
+
+\bugonpage A213, lines 34--35 (12/23/87)
+
+\ninepoint\noindent
+text will be a single control sequence token, defined to be like |\relax| if
+its meaning is currently undefined.
+
+\bugonpage A299, line 30 (7/6/88)
+
+\ninepoint\indent\tt
+Fatal format file error; I'm stymied.
+
+\bugonpage A326, line 12 (12/12/87)
+
+\ninepoint\noindent
+its natural width. The |\hbox| version also invokes |\everymath|.
+
+\bugonpage A359, line 2 (11/6/88)
+
+\ninepoint\noindent
+|\mathchardef\ldotp="613A\mathchardef\cdotp="6201\mathchardef\colon="603A|
+
+\bugonpage A359, lines 35--38 (5/24/88)
+
+\ninepoint\noindent
+|\def\updownarrow{\delimiter"326C33F } \def\arrowvert{\delimiter"033C000 }|%
+ \par\noindent
+|\def\Updownarrow{\delimiter"326D377 } \def\Arrowvert{\delimiter"033D000 } |%
+ \par\noindent
+|\def\vert{\delimiter"026A30C } \def\Vert{\delimiter"026B30D } |%
+ \par\noindent
+|\def\backslash{\delimiter"026E30F } \def\bracevert{\delimiter"033E000 }|
+
+\bugonpage A364, line 35 (11/6/88)
+
+\ninepoint\noindent
+|\def\fmtname{plain}\def\fmtversion{2.94} % identifies the current format|
+
+\bugonpage A379, line 15 (10/12/87)
+
+\ninepoint
+|\def\deleterightmost#1{\edef#1{\expandafter\xyzzy#1\xyzzy}}|
+
+\bugonpage A383, lines 7--15 from the bottom (1/4/89)
+
+\begintt
+ 209 strings out of 1685
+ 1659 string characters out of 17636
+ 27618 words of memory out of 52821
+ 1172 multiletter control sequences out of 2500
+\endtt
+Consequently there was plenty of room for more macros: $52821-27618=
+25203$ unused cells of main memory, $2500-1172=1328$ of name memory,
+$1685-209=1476$ of string memory, and $17636-1659=15977$ of character memory.
+But a fairly large \TeX\ was being used, and only the macros of
+Appendices B and~E were loaded; in other circumstances it might have
+been necessary to conserve space.
+
+\bugonpage A454, lines 23--29 (8/13/87)
+
+\begingroup
+\hyphenpenalty=-1000 \pretolerance=-1 \tolerance=1000
+\doublehyphendemerits=-100000 \finalhyphendemerits=-100000
+\ddanger If a suitable starting letter is found, let it be in font~$f$.
+Hyphenation is abandoned unless the |\hyphenchar| of~$f$ is between
+0 and~255, and unless a character of that number exists in the font.
+If this test is passed, \TeX\ continues to scan forward
+until coming to something that's not one of the following three
+``admissible items'': (1)~a character in font~$f$ whose |\lccode|
+is nonzero; (2)~a ligature formed entirely from characters of type~(1);
+(3)~an implicit kern. The first inadmissible item terminates this part of
+the process; the trial word consists of all the letters found in admissible
+items. Notice that all of these letters are in font~$f$.
+
+\endgroup % end the special hyphenation conventions
+
+\bugonpage A458, left column, line 19 (2/15/88)
+
+\eightpoint\indent
+|\|\| ( $\Vert$ ), {\it146--147}, {\it171}, $\underline{361}$, 435, 438.
+
+\bugonpage A462, left column, line 7 (10/9/87)
+
+\eightpoint\indent\qquad 152, 178, $\underline{360}$.
+
+\bugonpage A463, left column (4/17/88)
+
+\eightpoint\indent
+\hbox to0pt{\hss\lower1pt\hbox{*}}|\day|, 273, 349, {\it406}.
+
+\bugonpage A464, left column, under Displays (12/8/88)
+
+\eightpoint\indent\quad
+non-centered, 186, 326, 375--376, 420--421.
+
+\bugonpage A465, entry for {\tt\char`\\everymath} (12/12/87)
+
+\eightpoint\indent[Include also a reference to page 326.]
+
+\bugonpage A465, right column (7/6/88)
+
+\eightpoint\indent{\tt Fatal format file error}, 299.
+
+\bugonpage A473, entry for `page builder' (8/13/87)
+
+\eightpoint\indent\quad when exercised, 122, 280--283, 286--287.
+
+\bugonpage A474, left column (12/27/88)
+
+\eightpoint\indent
+\hbox to0pt{\hss\lower1pt\hbox{*}}|\parshape|, 101--102, 214, 271, 277, 283,
+
+\bugonpage A480, right column (2/15/88)
+
+\eightpoint\indent|\vdots| ( $\vdots$ ), {\it177}, $\underline{359}$.
+
+\bugonpage A481, right column (7/3/87)
+
+\eightpoint|\z@|, $\underline{347}$, 348.\par
+|\z@skip|, $\underline{347}$, 348.
+ % volume B
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\bugonpage B2, line 32 (2/20/89)
+
+\ninepoint\noindent\hskip10pt
+{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
+{\tt This\]is\]TeX,\]Version\]2.97\char'23}\quad
+$\{\,$printed when \TeX\ starts$\,\}$
+
+\bugonpage B38, lines 7--9 from the bottom (11/6/88)
+
+\tenpoint\noindent[Delete this paragraph; it is being moved to page B214.]
+
+\bugonpage B38, line 5 from the bottom (12/14/88)
+
+\ninepoint\noindent\kern10pt
+{\bf begin if\/} \\{log\_opened} {\bf then} $\\{selector}\gets\\{term\_and\_log}$
+
+\bugonpage B39, line 5 (12/14/88)
+
+\ninepoint\noindent\kern50pt
+{\bf if\/} \\{log\_opened} {\bf then} \\{error};
+
+\bugonpage B52, line 5 (8/13/87)
+
+\tenpoint\noindent
+cannot be done, i.e., if $\\{hi\_mem\_min}=\\{lo\_mem\_max}+1$,
+we have to quit.
+
+\bugonpage B54, lines 34--35 (7/9/88)
+
+\ninepoint\noindent\kern10pt
+{\bf begin if\/} $\\{hi\_mem\_min}-\\{lo\_mem\_max}\ge1998$
+ {\bf then} $t\gets\\{lo\_mem\_max}+1000$\par\noindent\kern10pt
+{\bf else} $t\gets\\{lo\_mem\_max}+1+(\\{hi\_mem\_min}-\\{lo\_mem\_max})
+\,\mathbin{\bf div}\,2$;\quad\kern-4pt
+$\{\,\\{lo\_mem\_max}+2\le t<\\{hi\_mem\_min}\,\}$
+
+\bugonpage B108, new line after line 8 (5/24/88)
+
+\ninepoint\noindent\kern20pt
+$d$: \\{integer};\quad
+$\{\,$number of characters in incomplete current string$\,\}$
+
+\bugonpage B108, lines 31--33 (5/24/88)
+
+\ninepoint\noindent\kern10pt
+$\\{str\_room}(l)$; $d\gets\\{cur\_length}$;\par\noindent\kern10pt
+{\bf while} $\\{pool\_ptr}>\\{str\_start}[\\{str\_ptr}]$ {\bf do}
+ \par\noindent\kern20pt
+{\bf begin} \\{decr}(\\{pool\_ptr});
+ $\\{str\_pool}[\\{pool\_ptr}+l]\gets\\{str\_pool}[\\{pool\_ptr}]$;
+ \par\noindent\kern20pt
+{\bf end};\quad$\{\,$move current string up to make room for another$\,\}$
+\par\noindent\kern10pt
+{\bf for} $k\gets j$ {\bf to} $j+l-1$ {\bf do} $\\{append\_char}(\\{buffer}[k])$;
+\par\noindent\kern10pt
+$\\{text}(p)\gets\\{make\_string}$; $\\{pool\_ptr}\gets\\{pool\_ptr}+d$;
+
+\bugonpage B115, line 12 (4/28/88)
+
+\ninepoint\noindent\hskip10pt
+$\\{group\_code}=0\to\\{max\_group\_code}$;\quad
+ $\{\,$\\{save\_level} for a level boundary$\,\}$
+
+\bugonpage B141, line 19 (4/28/88)
+
+\ninepoint\noindent
+\\{par\_token}: \\{halfword};\quad
+ $\{\,$token representing `|\par|'$\,\}$
+
+\bugonpage B150, line 24 (4/28/88)
+
+\tenpoint\noindent{\bf 358.\quad}%
+The present point in the program is reached only when the \\{expand}
+routine has inserted\cutpar
+
+\bugonpage B151, mini-index (4/28/88)
+
+\eightpoint\noindent
+Delete the entry for `\\{no\_expand}'; replace it by:
+
+\indent\\{expand}: {\bf procedure}, \S366.
+
+\bugonpage B154, lines 25, 29, 34 respectively (9/20/87)
+
+\ninepoint\noindent\hskip20pt
+$\\{cvl\_backup},\\{radix\_backup},\\{co\_backup}$: \\{small\_number};\quad
+ $\{\,$to save \\{cur\_val\_level}, etc.$\,\}$\par\noindent\hskip10pt
+$\\{co\_backup}\gets\\{cur\_order}$;
+ $\\{backup\_backup}\gets\\{link}(\\{backup\_head})$;\par\noindent\hskip10pt
+$\\{cur\_order}\gets\\{co\_backup}$;
+ $\\{link}(\\{backup\_head})\gets\\{backup\_backup}$;
+
+\bugonpage B155, new entry for mini-index (9/20/87)
+
+\eightpoint\indent
+\\{cur\_order}: \\{glue\_ord}, \S447.
+
+\bugonpage B156, line 28 (12/23/87)
+
+\ninepoint\noindent\hskip20pt
+{\bf begin }$\\{eq\_define}(\\{cur\_cs},\\{relax},256)$;
+
+\bugonpage B157, mini-index (12/23/87)
+
+\eightpoint\noindent
+Delete the entries for `\\{eqtb}' and `\\{frozen\_relax}'; replace them
+by the following:
+
+\indent\\{eq\_define}: {\bf procedure}, \S227.\par
+$\\{relax}=0$, \S207.\par
+
+\bugonpage B162, lines 12--14 (4/30/88)
+
+\ninepoint\noindent\hskip10pt
+{\bf repeat} $\\{link}(\\{temp\_head})\gets\\{null}$;\par\noindent\hskip20pt
+{\bf if\/} $(\\{info}(r)>\\{match\_token}+127)\lor
+ (\\{info}(r)<\\{match\_token})$ {\bf then}
+ $s\gets\\{null}$\par\noindent\hskip20pt
+{\bf else begin} $\\{match\_chr}\gets\\{info}(r)-\\{match\_token}$; \
+ $s\gets\\{link}(r)$; \ $r\gets s$; \ $p\gets\\{temp\_head}$; \
+ $m\gets 0$;
+
+\bugonpage B177, bottom line before mini-index (7/13/88)
+
+\ninepoint\noindent\hskip10pt
+$\\{cur\_val}\gets0$; \
+ $\\{cur\_val\_level}\gets\\{int\_val}$; \
+ $\\{radix}\gets0$; \
+ $\\{cur\_order}\gets0$;
+
+\bugonpage B181, line 31 (4/28/88)
+
+\ninepoint\noindent
+[Change `$x$ units per sp' to `$x$ sp per unit'! This change also
+should be made on line~1 of page B183 and line $-8$ of page B590.]
+
+\bugonpage B188, line 8 (5/25/88)
+
+\ninepoint\noindent
+{\bf function} $\\{str\_toks}(b:\\{pool\_pointer})$: \\{pointer};\quad
+ $\{\,$changes the string \\{str\_pool}$[b\to\\{pool\_ptr}]$ to a token list$\,\}$
+
+\bugonpage B188, line 13 (5/25/88)
+
+\ninepoint\noindent\kern10pt
+{\bf begin} \\{str\_room}(1); $p\gets\\{temp\_head}$;
+ $\\{link}(p)\gets\\{null}$; $k\gets b$;
+
+\bugonpage B188, line 20 (5/25/88)
+
+\ninepoint\noindent\kern10pt
+$\\{pool\_ptr}\gets b$; $\\{str\_toks}\gets p$;
+
+\bugonpage B188, new line after line 28 (5/25/88)
+
+\ninepoint\noindent\kern20pt
+$b$: \\{pool\_pointer};\quad$\{\,$base of temporary string$\,\}$
+
+\bugonpage B188, line 31 (5/25/88)
+
+\ninepoint\noindent\kern10pt
+{\bf else begin} $\\{old\_setting}\gets\\{selector}$;
+ $\\{selector}\gets\\{new\_string}$; $b\gets\\{pool\_ptr}$;
+
+\bugonpage B188, line 41 (5/25/88)
+
+\ninepoint\noindent\kern20pt
+$\\{selector}\gets\\{old\_setting}$; $\\{the\_toks}\gets\\{str\_toks}(b)$;
+
+\bugonpage B190, lines 16--18 (5/25/88)
+
+\ninepoint\noindent\kern20pt
+$b$: \\{pool\_pointer};\quad$\{\,$base of temporary string$\,\}$\par
+\noindent\kern10pt
+{\bf begin} $c\gets\\{cur\_chr}$;
+ $\langle\,$Scan the argument for command $c${\eightrm\kern.5em471}$\,\rangle$;
+\par\noindent\kern10pt
+$\\{old\_setting}\gets\\{selector}$;
+$\\{selector}\gets\\{new\_string}$; $b\gets\\{pool\_ptr}$;
+$\langle\,$Print the result of command~$c${\eightrm\kern.5em472}$\,\rangle$;
+\par\noindent\kern10pt
+$\\{selector}\gets\\{old\_setting}$;
+$\\{link}(\\{garbage})\gets\\{str\_toks}(b)$;
+$\\{ins\_list}(\\{link}(\\{temp\_head}))$;
+
+\bugonpage B210, line 36 (5/25/88)
+
+\ninepoint\noindent\kern10pt
+{\bf begin if} $(\\{pool\_ptr}+\\{name\_length}>\\{pool\_size})
+ \lor(\\{str\_ptr}=\\{max\_strings})\lor(\\{cur\_length}>0)$ {\bf then}
+
+\bugonpage B211, new line of code before the mini-index (12/14/88)
+
+\ninepoint\noindent
+\\{log\_opened}: \\{boolean};\quad$\{\,$has the transcript file been opened?$\,\}$
+
+\bugonpage B212, line 5 (12/14/88)
+
+\ninepoint\noindent\kern10pt
+$\\{job\_name}\gets0$; \ $\\{name\_in\_progress}\gets\\{false}$; \
+$\\{log\_opened}\gets\\{false}$;
+
+\bugonpage B213, line 24 (12/14/88)
+
+\ninepoint\noindent\kern10pt
+$\\{log\_name}\gets\\{a\_make\_name\_string}(\\{log\_file})$; \
+$\\{selector}\gets\\{log\_only}$; \
+$\\{log\_opened}\gets\\{true}$;
+
+\bugonpage B214, lines 2 and 3 (12/14/88)
+
+\tenpoint\noindent
+messages or even to \\{show\_context}.
+The \\{prompt\_file\_name} routine can result in a \\{fatal\_error},
+but the \\{error}
+routine will not be invoked because \\{log\_opened} will be false.
+\par\noindent\hskip10pt
+The normal idea of \\{batch\_mode} is that nothing at all should be written
+on the terminal. However, in the unusual case that
+no log file could be opened, we make an exception and allow
+an explanatory message to be seen.
+
+\bugonpage B214, lines 7--11 reduce to a single line (12/14/88)
+
+\ninepoint\noindent\hskip10pt
+{\bf begin} $\\{selector}\gets\\{term\_only}$;
+
+\bugonpage B224, second-last line (4/28/87)
+
+\ninepoint\noindent
+\\{done}: {\bf if} \\{file\_opened} {\bf then} \\{b\_close}(\\{tfm\_file});\par
+\noindent\hskip10pt $\\{read\_font\_info}\gets g$;
+
+\bugonpage B229, lines 6--8 (11/17/87)
+
+\tenpoint\noindent
+than $2^{27}$.
+If $z<2^{23}$, the individual multiplications $b\cdot z$,
+$c\cdot z$, $d\cdot z$ cannot overflow; otherwise we will divide $z$ by 2,
+4, 8, or 16, to obtain a multiplier less than $2^{23}$, and we can
+compensate for this later. If $z$ has thereby been replaced by
+$z^\prime=z/2^e$, let $\beta=2^{4-e}$; we shall compute
+
+\bugonpage B229, lines 11--12 (11/17/87)
+
+\tenpoint\noindent
+if $a=0$, or the same quantity minus $\alpha=2^{4+e}z^\prime$ if $a=255$.
+This calculation must be done exactly, in order to guarantee portability
+of \TeX\ between computers.
+
+\bugonpage B230, lines 2--5 (11/17/87)
+
+\ninepoint
+\noindent\hskip10pt{\bf begin} $\\{alpha}\gets16$;\par
+\noindent\hskip10pt{\bf while} $z\ge\oct{40000000}$ {\bf do}\par
+\noindent\hskip20pt{\bf begin} $z\gets z\ {\bf div}\ 2$; \
+ $\\{alpha}\gets\\{alpha}+\\{alpha}$; \ {\bf end};\par
+\noindent\hskip10pt$\\{beta}\gets256\ {\bf div}\ \\{alpha}$; \
+ $\\{alpha}\gets\\{alpha}\ast z$;\par
+
+\bugonpage B245, new entry for mini-index (8/7/87)
+
+\eightpoint\indent
+\\{cur\_s}: \\{integer}, \S616.
+
+\bugonpage B254, line 29 (8/7/87)
+
+\ninepoint\noindent
+\\{cur\_s}: \\{integer};\quad
+$\{\,$current depth of output box nesting, initially $-1\,\}$
+
+\bugonpage B254, line 31 (8/7/87)
+
+\ninepoint\noindent
+[Remove the statement `$\\{cur\_s}\gets-1$;' and put it on page B244 at the
+end of line 31.]
+
+\bugonpage B259, line 13 (11/9/87)
+
+\ninepoint\noindent\hskip20pt
+{\bf begin }$\\{rule\_wd}\gets\\{rule\_wd}+10$;\quad
+$\{\,$compensate for floating-point rounding$\,\}$\par\noindent\hskip20pt
+$\\{edge}\gets\\{cur\_h}+\\{rule\_wd}$; $\\{lx}\gets0$;
+$\langle\,$Let \\{cur\_h} be the position of the first box, and set
+
+\bugonpage B259, line 17 (11/9/87)
+
+\ninepoint\noindent\hskip20pt
+$\\{cur\_h}\gets\\{edge}-10$; {\bf goto} \\{next\_p};
+
+\bugonpage B263, line 21 (11/9/87)
+
+\ninepoint\noindent\hskip20pt
+{\bf begin }$\\{rule\_ht}\gets\\{rule\_ht}+10$;\quad
+$\{\,$compensate for floating-point rounding$\,\}$\par\noindent\hskip20pt
+$\\{edge}\gets\\{cur\_v}+\\{rule\_ht}$; $\\{lx}\gets0$;
+$\langle\,$Let \\{cur\_v} be the position of the first box, and set
+
+\bugonpage B263, line 25 (11/9/87)
+
+\ninepoint\noindent\hskip20pt
+$\\{cur\_v}\gets\\{edge}-10$; {\bf goto} \\{next\_p};
+
+\bugonpage B266, line 8 (8/7/87)
+
+\ninepoint\noindent\hskip10pt
+\\{dvi\_out}(\\{eop}); \\{incr}(\\{total\_pages}); $\\{cur\_s}\gets-1$;
+
+\bugonpage B266, new code between lines 31 and 32 (8/7/87)
+
+\ninepoint
+\noindent\hskip10pt{\bf while} $\\{cur\_s}>-1$ {\bf do}\par
+\noindent\hskip20pt{\bf begin if} $\\{cur\_s}>0$ {\bf then}
+ \\{dvi\_out}(\\{pop})\par
+\noindent\hskip20pt{\bf else begin} \\{dvi\_out}(\\{eop});
+ \\{incr}(\\{total\_pages})\par
+\noindent\hskip30pt{\bf end};\par
+\noindent\hskip20pt\\{decr}(\\{cur\_s});\par
+\noindent\hskip20pt{\bf end};\par
+
+\bugonpage B285, line 21 (4/28/88)
+
+\noindent\tenpoint
+is subsidiary to the \\{nucleus} field of some noad; the dot is replaced by
+`|_|' or `|^|' or `|/|' or `|\|' if $p$ is\cutpar
+
+\bugonpage B338, second-last line (8/19/87)
+
+\ninepoint\noindent\kern10pt
+$q\gets\\{link}(\\{head})$; $s\gets\\{head}$;
+
+\bugonpage B339, line 4 (8/19/87)
+
+\ninepoint\noindent\kern20pt
+$s\gets q$; $q\gets\\{link}(q)$;
+
+\bugonpage B339, new code to insert after line 10 (8/19/87)
+
+\ninepoint
+\noindent\kern10pt{\bf if} $o\ne0$ {\bf then}\par
+\noindent\kern20pt{\bf begin} $r\gets\\{link}(q)$; $\\{link}(q)\gets\\{null}$;
+ $q\gets\\{hpack}(q,\\{natural})$;\par
+\noindent\kern20pt$\\{shift\_amount}(q)\gets o$; $\\{link}(q)\gets r$;
+ $\\{link}(s)\gets q$;\par
+\noindent\kern20pt{\bf end};\par
+\noindent[These new lines also imply changes to the index that aren't
+ shown in this errata list.]
+
+\bugonpage B387, line 2 (5/24/88)
+
+\tenpoint\noindent
+is quite short. In the following code we set \\{hc}$[\\{hn}+2]$ to the
+impossible value 128, in order to\cutpar
+
+\bugonpage B387, line 8 (5/24/88)
+
+\ninepoint\noindent\kern10pt
+$\\{hc}[0]\gets127$; $\\{hc}[\\{hn}+1]\gets127$;
+ $\\{hc}[\\{hn}+2]\gets128$;\quad$\{\,$insert delimiters$\,\}$
+
+\bugonpage B390, lines 17--18 (5/24/88)
+
+\ninepoint\noindent\kern10pt
+$\langle\,$Enter as many hyphenation exceptions as are listed, until coming
+ to a right brace; then {\bf return\eightrm\kern.5em961}$\,\rangle$;
+
+\smallskip[The same change applies to lines 20--21, and
+to page~582.]
+
+\bugonpage B396, new line after line 34 (5/24/88)
+
+\ninepoint\noindent\kern10pt
+$\\{trie\_link}(\\{trie\_size})\gets0$;
+$\\{trie\_back}(0)\gets\\{trie\_size}$;\quad
+$\{\,$wrap around$\,\}$
+
+\bugonpage B396, bottom line (12/12/87)
+
+\ninepoint\noindent\hskip10pt
+$\\{trie\_link}(0)\gets0$; $\\{trie\_char}(0)\gets0$;
+ $\\{trie\_op}(0)\gets\\{min\_quarterword}$;
+
+\bugonpage B397, lines 15--17 (5/24/88)
+
+\ninepoint\noindent\kern10pt
+{\bf begin} $c\gets\\{trie\_c}[p]$;\par\noindent\kern10pt
+{\bf if} $c<\\{trie\_min}$ {\bf then} $\\{trie\_min}\gets c$;\par\noindent\kern10pt
+{\bf if} $\\{trie\_min}=0$ {\bf then} $z\gets\\{trie\_link}(\\{trie\_size})$\par
+\noindent\kern10pt
+{\bf else} $z\gets\\{trie\_link}(\\{trie\_min}-1)$;\quad
+$\{\,$get the first conceivably good hole$\,\}$
+
+\bugonpage B400, lines 3--4 (5/24/88)
+
+\ninepoint\noindent
+$\langle\,$Enter all of the patterns into a linked trie, until coming
+ to a right brace{\eightrm\kern.5em961}$\,\rangle\equiv$
+
+\smallskip[The same change applies to page B399, lines 29--30, and
+to page~582.]
+
+\bugonpage B402, line 10 (5/24/88)
+
+\ninepoint\noindent\kern10pt
+$r\gets\\{trie\_size}$;\quad
+$\{\,$finally, we will zero out the holes$\,\}$
+
+\bugonpage B406, line 9 from the bottom (1/23/89)
+
+\ninepoint\noindent\kern30pt
+$\\{shrink\_order}(r)\gets\\{normal}$; \ $\\{delete\_glue\_ref}(q)$; \
+$\\{glue\_ptr}(p)\gets r$; \ $q\gets r$;
+
+\bugonpage B417, line 10 (1/23/89)
+
+\ninepoint\noindent\kern10pt
+$q\gets\\{new\_skip\_param}(\\{top\_skip\_code})$; \quad
+$\{\,$now $\\{temp\_ptr}=\\{glue\_ptr}(q)\,\}$
+
+\bugonpage B418, line 14 (1/23/89)
+
+\ninepoint\noindent\kern30pt
+$\\{shrink\_order}(r)\gets\\{normal}$; \ $\\{delete\_glue\_ref}(q)$; \
+$\\{glue\_ptr}(p)\gets r$; \ $q\gets r$;
+
+\bugonpage B507, line 13 (12/14/88)
+
+\ninepoint\noindent\kern10pt
+{\bf if\/} \\{log\_opened} {\bf then} $\\{selector}\gets\\{selector}+2$;
+
+\bugonpage B527, line 21 (12/14/88)
+
+\ninepoint\noindent\kern10pt
+{\bf if\/} \\{log\_opened} {\bf then}
+
+\bugonpage B528, line 5 (12/14/88)
+
+\ninepoint\noindent\kern10pt
+{\bf if\/} \\{log\_opened} {\bf then}
+
+\bugonpage B547, right column (9/20/87)
+
+\eightpoint
+\leftline{\\{co\_backup}:\quad $\underline{366}$.}
+
+\bugonpage B548, right column (9/20/87)
+
+\eightpoint
+\leftline{\\{cur\_order}:\quad 366, $\underline{447}$, 448, 454, 462.}
+
+\bugonpage B548, right column (8/7/87)
+
+\eightpoint
+\leftline{\\{cur\_s}:\quad 593, $\underline{616}$, 619, 629, 640, 642.}
+
+\bugonpage B551, both columns (12/23/87)
+
+\eightpoint[Remove `372' from \\{eqtb} and put it into \\{eq\_define}.]
+
+\bugonpage B552, left column (4/28/88)
+
+\eightpoint[Insert `358' into \\{expand}.]
+
+\bugonpage B554, left column (12/23/87)
+
+\eightpoint[Remove `372' from \\{frozen\_relax}.]
+
+\bugonpage B559, new entry (12/14/88)
+
+\eightpoint\noindent
+\\{log\_opened}, 92--93, $\underline{527}$, 528, 534--535, 1265, 1333--1334.
+
+\bugonpage B559, right column (8/13/87)
+
+\eightpoint[Delete the entry for \\{low\_mem\_max}.]
+
+\bugonpage B562, left column (4/28/88)
+
+\eightpoint[Remove `358' from \\{no\_expand}.]
+
+\bugonpage B565, left column (8/7/87)
+
+\eightpoint
+\leftline{\\{pop}:\quad 584--585, $\underline{586}$, 590, 601, 608, 642.}
+
+\bugonpage B567, left column (12/23/87)
+
+\eightpoint[Insert `372' into \\{relax}.]
+
+\bugonpage B568, left column (4/28/88)
+
+\eightpoint[Move `269' from \\{save\_index} to \\{save\_level}.]
+ % volume C
+\hsize=29pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+
+\bugonpage C26, bottom line (7/18/87)
+
+\tenpoint\noindent
+What angle corresponds to the direction North-Northwest?
+
+\bugonpage C107, line 13 (10/7/87)
+
+{\bf pickup penrazor} xscaled \\{heavyline}
+ rotated (angle$(z_{32}-z_{31})+90$);
+
+\bugonpage C164, line 10 (4/27/88)
+
+\ninepoint\indent
+\quad $y_{\$c}=\\{top}\,y_{\$l}$; \ $y_{\$d}=y_{\$r}$; \
+ $x_{\$c}=x_{\$l}-\\{left\_jut}$; \ $x_{\$d}=x_{\$r}+\\{right\_jut}$;
+
+\bugonpage C175, line 23 (1/11/88)
+
+\ninepoint\noindent
+expand into a sequence of tokens. \
+(The language {\eightrm{SIMULA67}} demonstrated that it is\cutpar
+
+\bugonpage C241, line 11 (5/25/88)
+
+\ninepoint\indent
+{\bf numeric} $\\{ht}\0,\\{dp}\0$; \
+ $\\{ht}\0=\\{body\_height}\0$; \
+ $.5[\\{ht}\0,-\\{dp}\0]=\\{axis}\0$;
+
+\bugonpage C248, line 21 becomes two lines (1/24/89)
+
+\ninepoint\noindent
+which might not
+be numerically stable in the presence of rounding errors.)
+Another case, not really desirable, is $\\{left\_jut}=\\{right\_jut}=0$.
+
+\bugonpage C262, line 15 (12/23/88)
+
+\ninepoint\noindent
+|string base_name, base_version; base_name="plain"; base_version="1.7";|
+
+\bugonpage C271, line 12 (1/4/89)
+
+\ninepoint\noindent
+the user and \MF's primitive picture commands.
+First, some important program\cutpar
+
+\bugonpage C271, line 4 from the bottom (12/23/88)
+
+\ninepoint\noindent
+|def |^|cutdraw|| expr p = % caution: you may need autorounding=0|
+
+\bugonpage C272, lines 5 and 6 (12/23/88)
+
+\ninepoint\noindent
+| (cut_ scaled (1+max(pen_lft,pen_rt,pen_top,pen_bot))|\par\noindent
+| rotated theta shifted z)t_;|
+
+\bugonpage C273, lines 20 and 22 (9/26/88)
+
+\ninepoint\noindent
+| (z_+(0,pen_top))t_=round((z+(0,pen_top))t_); z_ enddef;|\par\noindent
+| (z_+(0,pen_bot))t_=round((z+(0,pen_bot))t_); z_ enddef;|
+
+\bugonpage C290, line 6 from the bottom (12/23/88)
+
+\ninepoint\noindent
+(2)~A throwaway variable,
+`\\{whatever}', nullifies an unwanted equation at the beginning\cutpar
+
+\bugonpage C331, just below the illustration (7/18/87)
+
+\ninepoint\noindent
+Such a pattern is, of course, rather unlikely to occur in a |gf| file,
+but |GFtoDVI| would\cutpar
+
+\bugonpage C337, line 11 (4/28/88)
+
+\ninepoint
+An online ``menu'' of the available test routines will be typed at your
+terminal\cutpar
+
+\bugonpage C346, entry for {\tt autorounding} (12/23/88)
+
+\eightpoint\indent\hskip20pt
+212, {\it262}, {\it264}, 271--272.
+
+\bugonpage C350, left column (7/6/88)
+
+\eightpoint\indent
+|Fatal| |base| |file| |error|, 226.
+
+\bugonpage C356, left column (1/11/88)
+
+\eightpoint
+SIMULA67 language, 175.
+
+\bugonpage C358, right column (2/15/88)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|yoffset|, 212, $\underline{220}$, 315, 324.
+ % Volume D
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\bugonpage D2, line 27 (12/14/88)
+
+\ninepoint\noindent\hskip10pt
+{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
+{\tt This\]is\]METAFONT,\]Version\]1.7\char'23}\quad
+$\{\,$printed when \MF\ starts$\,\}$
+
+\bugonpage D36, lines 3--5 (11/6/88)
+
+\tenpoint\noindent[Delete this paragraph; it is being moved to page D349.]
+
+\bugonpage D36, line 7 (12/14/88)
+
+\ninepoint\noindent\kern10pt
+{\bf begin if\/} \\{log\_opened} {\bf then} $\\{selector}\gets\\{term\_and\_log}$
+
+\bugonpage D36, line 16 (12/14/88)
+
+\ninepoint\noindent\kern50pt
+{\bf if\/} \\{log\_opened} {\bf then} \\{error};
+
+\bugonpage D66, lines 34--35 (7/9/88)
+
+\ninepoint\noindent\kern10pt
+{\bf begin if\/} $\\{hi\_mem\_min}-\\{lo\_mem\_max}\ge1998$
+ {\bf then} $t\gets\\{lo\_mem\_max}+1000$\par\noindent\kern10pt
+{\bf else} $t\gets\\{lo\_mem\_max}+1+(\\{hi\_mem\_min}-\\{lo\_mem\_max})
+\,\mathbin{\bf div}\,2$;\quad\kern-4pt
+$\{\,\\{lo\_mem\_max}+2\le t<\\{hi\_mem\_min}\,\}$
+
+\bugonpage D347, new line of code after line 5 (12/14/88)
+
+\ninepoint\noindent
+\\{log\_opened}: \\{boolean};\quad$\{\,$has the transcript file been opened?$\,\}$
+
+\bugonpage D347, line 11 (12/14/88)
+
+\ninepoint\noindent\kern10pt
+$\\{job\_name}\gets0$; \
+$\\{log\_opened}\gets\\{false}$;
+
+\bugonpage D348, line 4 from the bottom (12/14/88)
+
+\ninepoint\noindent\kern10pt
+$\\{log\_name}\gets\\{a\_make\_name\_string}(\\{log\_file})$; \
+$\\{selector}\gets\\{log\_only}$; \
+$\\{log\_opened}\gets\\{true}$;
+
+\bugonpage D349, lines 6 and 7 (12/14/88)
+
+\tenpoint\noindent
+print error messages or even to \\{show\_context}.
+The \\{prompt\_file\_name} routine can result in a \\{fatal\_error},
+but the \\{error}
+routine will not be invoked because \\{log\_opened} will be false.
+\par\noindent\hskip10pt
+The normal idea of \\{batch\_mode} is that nothing at all should be written
+on the terminal. However, in the unusual case that
+no log file could be opened, we make an exception and allow
+an explanatory message to be seen.
+
+\bugonpage D349, lines 11--15 reduce to a single line (12/14/88)
+
+\ninepoint\noindent\hskip10pt
+{\bf begin} $\\{selector}\gets\\{term\_only}$;
+
+\bugonpage D420, bottom line (5/25/88)
+
+\ninepoint\noindent\kern30pt
+{\bf if\/} \\{txx} {\bf mod} $\\{unity}=0$ {\bf then}
+
+\bugonpage D441, delete line 2 and change line 12 as follows (5/25/88)
+
+\ninepoint\noindent
+\\{done}: {\bf if} $\\{eq\_type}(x)\ne\\{tag\_token}$ {\bf then}
+ $\\{clear\_symbol}(x,\\{false})$;\par\noindent\kern10pt
+{\bf if} $\\{equiv}(x)=\\{null}$ {\bf then} $\\{new\_root}(x)$;
+\par\noindent\kern10pt
+$\\{scan\_declared\_variable}\gets h$;
+
+\bugonpage D444, line 8 from the bottom (12/14/88)
+
+\ninepoint\noindent\kern10pt
+{\bf if\/} \\{log\_opened} {\bf then} $\\{selector}\gets\\{selector}+2$;
+
+\bugonpage D510, line 14 (12/14/88)
+
+\ninepoint\noindent\kern10pt
+{\bf if\/} \\{log\_opened} {\bf then}
+
+\bugonpage D511, line 11 (12/14/88)
+
+\ninepoint\noindent\kern10pt
+{\bf if\/} \\{log\_opened} {\bf then}
+
+\bugonpage D530, new entry (12/14/88)
+
+\eightpoint\noindent
+\\{log\_opened}, 87--88, $\underline{782}$, 783, 788--789, 1023, 1205, 1208.
+
+\bugonpage D545, left column (10/31/87)
+
+\eightpoint
+\leftline{{\bf zscaled} primitive:\quad $\underline{893}$.}
+\leftline{Zabala Salelles, Ignacio Andres:\quad 812.}
+
+ % volume E
+\hsize=29pc
+\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}}
+
+\bugonpage E32, second-last line (9/20/87)
+
+\tenpoint\noindent
+after which comes `\\{math\_axis}\0; {\bf generate} |mathsy|' (which we
+won't bother to\cutpar
+
+\bugonpage E111, line 29 (10/16/88)
+
+\ninepoint\noindent
+$\\{lft}\,x_{11}={\rm hround}\,u$; \
+ $x_{1l}-x_{11}=x_{2l}-x_{12}=x_{22}-x_{2r}={\rm hround}\,1.6\\{cap\_jut}$;
+
+\bugonpage E285, bottom line (12/1/87)
+
+\rightline{\eightssi Due to Technical Developments\/\enspace\eightss(1968)}
+
+\bugonpage E333, lines 9--11 (1/9/89)
+
+\ninepoint\noindent
+$\\{lft}\,x_{1l}={\rm hround}(2.5u-.5\\{mfudged.stem})$; \
+ $x_{1l}=x_{1'l}=x_{2l}=x_{2'l}$;\par\noindent
+$\\{lft}\,x_{3l}={\rm hround}(.5w-.5\\{mfudged.stem})$; \
+ $x_5-x_3=x_3-x_1$;\par
+\line{{\bf if\/} not \\{monospace}:
+ $r:={\rm hround}(x_5+x_1)+r-w$; {\bf fi}\hfill
+ \% change width for better fit}
+
+\bugonpage E353, lines 38--39 (8/12/87)
+
+\ninepoint
+\leftline{\kern10pt{\bf else}: {\bf fill} \\{diag\_end}$(6r,5r,1,1,5l,6l)
+ \dashto.9[z_{5l},z_{6l}]$}
+\line{\kern30pt$.\,.\,\{z_5-z_6\}\,.1[z_{5r},z_{6r}]\dashto\rm cycle$;\hfil
+ \% middle stem}
+
+\bugonpage E387, line 13 (8/12/87)
+
+\ninepoint
+\line{\kern10pt{\bf pickup} \\{tiny}.\\{nib}; \ \\{bulb}$(3,4,5)$;\hfil\% bulb}
+
+\bugonpage E413, lines 37--38 (8/12/87)
+
+\ninepoint
+\leftline{\kern10pt{\bf else}: {\bf fill} \\{diag\_end}$(6r,5r,1,1,5l,6l)
+ \dashto.9[z_{5l},z_{6l}]$}
+\line{\kern30pt$.\,.\,\{z_5-z_6\}\,.1[z_{5r},z_{6r}]\dashto\rm cycle$;\hfil
+ \% middle stem}
+
+\bugonpage E459, line 24 (8/7/87)
+
+\ninepoint\noindent[Delete the `$=$' sign between `\\{lft}' and `$x_5$'.]
+
+\bugonpage E471, line 5 (12/11/88)
+
+\ninepoint\noindent
+$x_2=\\{good}.x\,.5w$; \ $\\{center\_on}(x_2)$;
+
+\bugonpage E471, insert two lines below the rule at bottom of page (12/11/88)
+
+\ninepoint
+\line{{\bf def\/}
+\\{center\_on}({\bf expr} $x) =\null$
+{\bf if\/} not \\{monospace}:\hfill \% change width for symmetric fit}
+\leftline{\kern10pt
+ $r:=r+2x-w$; \ $w:=2x$; \ {\bf fi} {\bf enddef};}
+
+\bugonpage E477, line 20 (12/11/87)
+
+\ninepoint\noindent
+$x_4=x_8=\\{good}.x\,.5w$; \ $\\{center\_on}(x_4)$; \
+$x_2=w-x_6=\\{good}.x(x_4+a)$;
+
+\bugonpage E483, third line of elementary division operator (12/11/88)
+
+\ninepoint\noindent
+$x_3-.5\\{dot\_size}={\rm hround}(.5w-.5\\{dot\_size})$; \
+$\\{center\_on}(x_3)$;
+
+\bugonpage E485, line 4 (8/7/87)
+
+\ninepoint\noindent[Delete the `$=$' sign between `\\{lft}' and `$x_5$'.]
+
+\bugonpage E487, line 17 (8/4/88)
+
+\ninepoint\line{%
+{\bf fill} \\{fullcircle} scaled$\,(\\{bold}+3.8\\{dw}+\\{eps})\,$%
+ shifted$\,(.5[z_4,z_8])$;\hfill\% dot}
+\smallskip\noindent[Also remove page 487 from the index entry for
+\\{dot\_size}, and add it to the entries for \\{bold} and \\{dw}.]
+
+\bugonpage E515, lines 5 and 12 (12/11/88)
+
+\ninepoint\noindent
+$.5[x_1,x_2]=x_3=\\{good}.x\,.5w$; \
+$\\{center\_on}(x_3)$; \ $\\{lft}\,x_1={\rm hround}(.5w-u*{\rm sqrt}48)$;
+
+\bugonpage E515, line 21 (1/23/89)
+
+\ninepoint\noindent
+{\bf labels}$(5,6)$; \ \\{zero\_width}; \ {\bf endchar\/};
+\smallskip\noindent[Also put labels `{\tt5}' and `{\tt6}' on the
+upper right figure, page E514.]
+
+\bugonpage E521, lines 4 and 14 (12/12/88)
+
+\ninepoint\noindent
+$x_1=x_2=\\{good}.x\,.5w$; \
+$\\{center\_on}(x_1)$; \ $\\{lft}\,x_3={\rm hround}\,u$; \ $x_4=w-x_3$;
+
+\bugonpage E537, line 6 (12/11/88)
+
+\ninepoint\noindent
+$x_1=x_2=x_3=x_4$; \
+$x_1-.5\\{stem}={\rm hround}(.5w-.5\\{stem})$; \
+$\\{center\_on}(x_1)$;
+
+\bugonpage E537, line 19 (12/11/88)
+
+\ninepoint\noindent
+$x_1=x_2=x_3$; \
+$x_1-.5\\{stem}={\rm hround}(.5w-.5\\{stem})$; \
+$\\{center\_on}(x_1)$;
+
+\bugonpage E539, line 4 (12/11/88)
+
+\ninepoint\noindent
+$x_1=x_4=x_{30}=x_{33}=\\{good}.x\,.5w$; \ $\\{center\_on}(x_1)$;
+
+\bugonpage E539, line 21 (12/11/88)
+
+\ninepoint\noindent
+$x_1=x_4=\\{good}.x\,.5w$; \ $\\{center\_on}(x_1)$;
+
+\bugonpage E541, line 4 (12/11/88)
+
+\ninepoint\noindent
+$x_1=x_5=\\{good}.x\,.5w$; \ $\\{center\_on}(x_1)$;
+
+\bugonpage E541, line 17 (12/11/88)
+
+\ninepoint\noindent
+$x_1=x_{10}=\\{good}.x\,.5w$; \ $\\{center\_on}(x_1)$;
+
+\bugonpage E550, new line after line 23 (8/15/87)
+
+\ninepoint\noindent\kern10pt
+{\bf forsuffixes} $\hbox{\$}=\\{notch\_cut},\\{cap\_notch\_cut}$:
+ {\bf if\/} $\hbox{\$}<3$: $\hbox{\$}:=3$; {\bf fi endfor}
+\smallskip\noindent
+[To make room for this, combine lines 38 and 39 into a single line.]
+
+\bugonpage E550, line 29 (7/9/88)
+
+\ninepoint\noindent\hskip10pt
+{\bf \def\_{\kern.04em\vbox{\hrule width.3em height .6pt}\kern.08em}%
+define\_whole\_vertical\_blacker\_pixels}$(\\{vair},\\{bar},\\{slab},
+ \\{cap\_bar},\\{cap\_band})$;
+
+\bugonpage E572, new entry at bottom (12/11/88)
+
+\eightpoint\noindent
+\\{center\_on}, $\underline{471}$, 477, 483, 515, 521, 537--541.
+ \bye
+ Now here are some that I will make soon!
+
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errata.nine b/Master/texmf-doc/doc/english/knuth/errata/errata.nine
new file mode 100644
index 00000000000..3715cd813fc
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata.nine
@@ -0,0 +1,226 @@
+% Bugs (sigh) in Computers \& Typesetting
+
+\input manmac
+\font\sltt=cmsltt10
+\font\niness=cmss9
+\font\ninessi=cmssi9
+\proofmodefalse
+\raggedbottom
+\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
+
+\def\today{\number\day\
+ \ifcase\month\or
+ Jan\or Feb\or Mar\or Apr\or May\or Jun\or
+ Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi
+ \ \number\year}
+
+\def\cutpar{{\parfillskip=0pt\par}}
+
+\def\rhead{Bugs in {\tensl Computers \& Typesetting A, 1996}}
+\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
+\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
+\newcount\nn
+\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
+\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
+
+\tenpoint
+\noindent This is a list of all corrections made to {\sl Computers \&
+Typesetting}, Volume~A (also known as {\sl The \TeX book}),
+between 1992 and the publication of the final printed
+version of that book in September 1996.
+\looseness=-1
+
+ % volume A
+
+\bugonpage A31, line 8 (3/6/95)
+
+\tenpoint\noindent
+\TeX\ begins its error messages with `|!|', and it shows what it was
+reading at the\cutpar
+
+\bugonpage A46, line 8 (1/22/95)
+
+\ninepoint\noindent
+out for
+the occasional times when the adjacent characters |aa|, |ae|, and |o/|
+should not be\cutpar
+
+\bugonpage A282, lines 11 and 12 (4/18/96)
+
+\ninepoint\noindent
+unadorned \<box> command, except that the new box
+being appended to the vertical list is also shifted left or right by the
+specified amount.
+
+\bugonpage A285, lines 15--17 from the bottom (4/18/96)
+
+\ninepoint
+\textindent{$\bull$}|\raise|\<dimen>\<box>, |\lower|\<dimen>\<box>.\enskip
+This acts just like an unadorned \<box> command, except that the new box
+being appended to the horizontal list is also shifted up or down by the
+specified amount.
+
+\bugonpage A290, lines 4--6 from the bottom (4/18/96)
+
+\ninepoint
+\textindent{$\bull$}|\raise|\<dimen>\<box>, |\lower|\<dimen>\<box>.\enskip
+This acts just like an unadorned \<box> command, except that the new box
+being put into the nucleus is also shifted up or down by the specified amount.
+
+\bugonpage A331, bottom two lines (6/25/93)
+
+\ninepoint\noindent
+if you know that the
+enclosing box is sufficiently small; and |\leaders\vrule\vfill| works fine in
+vertical mode.
+
+\bugonpage A354, lines 19--22 (3/5/95)
+
+\ninepoint\noindent
+|\def\sett@b{\ifx\next\+\def\nxt{\afterassignment\s@tt@b\let\nxt}%|\par
+\noindent
+| \else\let\nxt=\s@tcols\fi|\par\noindent
+| \let\next=\relax \nxt} % turn off \outerness|\par\noindent
+|\def\s@tt@b{\let\nxt=\relax \us@false\m@ketabbox}|
+
+\bugonpage A356, lines 13--20 from the bottom (3/5/95)
+
+\ninepoint
+{\parindent=0pt
+|\def\oalign#1{\leavevmode\vtop{\baselineskip0pt \lineskip.25ex|\par
+| \ialign{##\crcr#1\crcr}}} \def\o@lign{\lineskiplimit=0pt \oalign}|\par
+|\def\ooalign{\lineskiplimit=-\maxdimen \oalign} % chars over each other|\par
+|\def\sh@ft#1{\dimen0=.00#1ex \multiply\dimen0 by\fontdimen1\font|\par
+| \kern-.0156\dimen0} % compensate for slant in lowered accents|\par
+|\def|^|\d||#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{10}.\hidewidth}}}|\par
+|\def|^|\b||#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{29}%|\par
+| \vbox to.2ex{\hbox{\char'26}\vss}\hidewidth}}}|\par
+}
+
+\bugonpage A357, lines 7--12 (8/1/95)
+
+\ninepoint\noindent
+|\def|^|\rightarrowfill||{$\m@th \smash- \mkern-7mu|\par\noindent
+| \cleaders\hbox{$\mkern-2mu \smash- \mkern-2mu$}\hfill|\par\noindent
+| \mkern-7mu \mathord\rightarrow$}|\par\noindent
+|\def|^|\leftarrowfill|%
+ |{$\m@th \mathord\leftarrow \mkern-7mu|\par\noindent
+| \cleaders\hbox{$\mkern-2mu \smash- \mkern-2mu$}\hfill|\par\noindent
+| \mkern-7mu \smash-$}|
+
+\bugonpage A357, lines 16--20 (6/25/93)
+
+\ninepoint
+{\parindent=0pt
+| \setbox0=\hbox{$\braceld$}%|\par
+| \bracelu\leaders\vrule height\ht0 depth0pt\hfill\bracerd|\par
+| \braceld\leaders\vrule height\ht0 depth0pt\hfill\braceru$}|\par
+|\def|^|\downbracefill||{$\m@th|\par
+| \setbox0=\hbox{$\braceld$}%|\par
+| \braceld\leaders\vrule height\ht0 depth0pt\hfill\braceru|\par
+| \bracelu\leaders\vrule height\ht0 depth0pt\hfill\bracerd$}|\par
+\smallskip[Also delete lines 21 and 22, as the usage is no longer restricted.]
+}
+
+\bugonpage A359, line 25 (3/5/95)
+
+\ninepoint\noindent
+|\def|^|\skew||#1#2#3{{\muskip0=#1mu \mkern.5\muskip0|\par\noindent
+| #2{\mkern-.5\muskip0{#3}\mkern.5\muskip0}\mkern-.5\muskip0}{}}|
+
+\bugonpage A360, line 5 from the bottom (3/5/95)
+
+\ninepoint\noindent
+|\def\@vereq#1#2{\lower.5pt\vbox{\lineskiplimit\maxdimen \lineskip-.5pt|
+
+\bugonpage A361, lines 19 and 20 (3/5/95)
+
+\ninepoint\noindent
+|\def|^|\bmod||{\nonscript\mskip-\medmuskip \mkern5mu|\par\noindent
+| |^|\mathbin||{\rm mod} \penalty900 \mkern5mu \nonscript\mskip-\medmuskip}|
+
+\bugonpage A362, lines 14--18 (3/5/95)
+
+\ninepoint\noindent
+| |^|\everycr||{\noalign{\ifdt@p \global\dt@pfalse|%
+ | \ifdim\prevdepth>-1000pt|\par\noindent
+| \vskip-\lineskiplimit \vskip\normallineskiplimit \fi|\par\noindent
+| \else \penalty|^|\interdisplaylinepenalty|| \fi}}}|\par\noindent
+|\def\@lign{\tabskip=0pt\everycr={}} % restore inside \displ@y|\par\noindent
+|\def|^|\displaylines||#1{\displ@y \tabskip=0pt|
+
+\bugonpage A363, lines 8--9 from the bottom (12/8/89)
+
+{\ninepoint\parindent=0pt
+| \if@mid \dimen@=\ht0 \advance\dimen@ by\dp\z@ |%
+ |\advance\dimen@ by12\p@|\parbreak%
+| \advance\dimen@ by\pagetotal \advance\dimen@ by-\pageshrink|
+\par}
+
+\bugonpage A364, line 5 from the bottom (4/11/96)
+
+\ninepoint\noindent
+|\def\fmtname{plain}|\par\noindent
+|\def\fmtversion{3.141592} % identifies the current format|
+
+\bugonpage A374, line 3 (3/7/95)
+
+\ninepoint\indent
+|\begingroup\aftergroup\def\aftergroup\asts\aftergroup{|
+
+\bugonpage A410, line 23 (4/18/96)
+
+\ninepoint\noindent
+| Tema con variazione \(su un tema differente)|
+\smallskip\eightpoint\noindent
+(This implies a corresponding correction to page 411.)
+
+\bugonpage A451, line $16$ (8/8/93)
+
+\ninepoint\noindent
+But when plain \TeX\ is tried on the name of a famous ^{Welsh} village,
+
+\bugonpage A462, right column (3/5/95)
+
+\def\cong{\mathrel{\mathpalette\OvOreq\sim}} % congruence sign, index version
+\def\OvOreq#1#2{\lower.5pt\vbox{\baselineskip0pt\lineskip-.0pt
+ \ialign{$#1\hfil##\hfil$\crcr#2\crcr=\crcr}}}
+\eightpoint
+|\cong| ( $\cong$ ), 151, $\underline{360}$, 436.
+
+\bugonpage A463, right column (6/25/93)
+
+\eightpoint
+direct sum, {\sl see\/} |\oplus|.
+
+\bugonpage A464, left column (6/25/93)
+
+\eightpoint
+|\downbracefill| (\hbox to 4em{\downbracefill}), 225--226, $\underline{357}$.
+
+\bugonpage A483, lines 15--21 (4/29/97)
+
+\tenpoint
+\begintt
+email: {\tt TUG@tug.org}
+internet: {\tt http://www.tug.org/}
+}
+\endtt
+Don't delay, subscribe today! That address again is
+
+\smallskip
+{\obeylines
+\TeX\ Users Group
+email: {\tt TUG\char`\@ tug.org}
+internet: {\tt http://www.tug.org/}
+}
+
+\bye
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errata.one b/Master/texmf-doc/doc/english/knuth/errata/errata.one
new file mode 100644
index 00000000000..471971958c3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata.one
@@ -0,0 +1,751 @@
+% Bugs (sigh) in The TeXbook
+
+\input manmac
+\proofmodefalse
+\raggedbottom
+\output{\onepageout{\unvbox255\kern-\dimen@ \vfil}}
+
+\def\rhead{Bugs in {\sl The \TeX book}, first printing}
+\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
+ \hrule\line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule\nobreak\medskip}
+
+\noindent This is a list of all corrections made to {\sl The \TeX book\/}
+between the first and second printings. If your copy says `{\sl\kern-1pt Second
+printing (October 1984)\/}' on the copyright page, you've already got
+all of these things corrected. Otherwise, you're a lucky owner of the
+rare first edition; read on.
+
+\bugonpage 29, lines 31--32 (8/25/84)
+
+The underfull box that \TeX\ produces in the 1.5-inch case is really bad;
+with such narrow limits, an occasional wide space is unavoidable. But try
+
+\bugonpage 54, lines 5--6 (4/20/84)
+
+{\parfillskip=0pt
+\ddanger Appendix B shows that plain \TeX\ handles most of the accents
+by using \TeX's ^|\accent| primitive. For example, |\'#1| is equivalent
+to |{\accent19 #1}|, where\par}
+
+\bugonpage 63, seven lines below the first illustration (2/27/84)
+
+\line{points, a width of 5.5555 points, and a depth of zero;
+the letter `g' has a height}
+
+\bugonpage 72, line 35 (2/28/84)
+
+\ninepoint\noindent
+from |0pt|, but |0.00001filll| is infinitely greater than |16383.99999fill|.
+
+\bugonpage 79, line 12 (2/28/84)
+
+\ninepoint\indent
+|\hbox(6.25+1.94444)x312.0, glue set 0.5783, shifted 36.0 []|
+
+\bugonpage 98, line 24 (4/13/84)
+
+\ninepoint
+\line{and |\finalhyphendemerits=5000|. Demerits are in units of
+ ``badness squared,'' so the}
+
+\bugonpage 101, lines 29--30 (3/13/84)
+
+{\parfillskip=0pt
+\danger It's possible to control the length of lines in a much more general
+way, if simple changes to |\leftskip| and |\rightskip| aren't
+flexible enough for your\par}
+
+\bugonpage 113, bottom two lines (3/13/84)
+
+{\parfillskip=0pt
+\ddanger Notice that the first ``|%| line'' of our example says |t=10.0|;
+this is a consequence of another parameter, called ^|\topskip|. Glue
+disappears at a page break, but\par}
+
+\bugonpage 124, eighth-last line (8/25/84)
+
+\ninepoint
+{\parfillskip=0pt\noindent
+discarded, |\box100| will
+be void after the |\vsplit|. And if\/ |\box100| was void before the\par}
+
+\bugonpage 131, display in exercise 16.8 (3/16/84)
+
+\indent
+|If$ x = y$, then $x$ is equal to $y.$|
+
+\bugonpage 170, table in middle of the page (2/12/84)
+
+\ninepoint
+$$\baselineskip0pt\lineskip0pt
+\halign to\hsize
+ {\strut\hbox to\parindent{\it#\hfil}& % for the legend "Left atom"
+ #\hfil\quad& % for the row labels
+ #\hfil\tabskip 0pt plus 10pt& % for the rule at the left
+ \hbox to 25pt{\tt\hss#\hss}& % for column 1
+ \hbox to 25pt{\tt\hss#\hss}& % for column 2
+ \hbox to 25pt{\tt\hss#\hss}& % for column 3
+ \hbox to 25pt{\tt\hss#\hss}& % for column 4
+ \hbox to 25pt{\tt\hss#\hss}& % for column 5
+ \hbox to 25pt{\tt\hss#\hss}& % for column 6
+ \hbox to 25pt{\tt\hss#\hss}& % for column 7
+ \hbox to 25pt{\tt\hss#\hss}& % for column 8
+ #\hfil\tabskip0pt\cr % for the rule at the right
+\noalign{\vskip-6pt} % it just happens that there's extra white space
+&&&&\multispan7\hss\it Right atom\hss\cr
+\noalign{\vskip3pt}
+&&&\rm Ord&\rm Op&\rm Bin&\rm Rel&\rm Open&\rm Close&\rm Punct&\rm Inner\cr
+\noalign{\vskip2pt}
+\omit&&\multispan{10}\leaders\hrule\hfil\cr
+\omit\vbox to 2pt{}&&\vrule&&&&&&&&&\vrule\cr
+&Ord&\vrule&0&1&(2)&(3)&0&0&0&(1)&\vrule\cr
+&Op&\vrule&1&1&*&(3)&0&0&0&(1)&\vrule\cr
+&Bin&\vrule&(2)&(2)&*&*&(2)&*&*&(2)&\vrule\cr
+Left&Rel&\vrule&(3)&(3)&*&0&(3)&0&0&(3)&\vrule\cr
+atom&Open&\vrule&0&0&*&0&0&0&0&0&\vrule\cr
+&Close&\vrule&0&1&(2)&(3)&0&0&0&(1)&\vrule\cr
+&Punct&\vrule&(1)&(1)&*&(1)&(1)&(1)&(1)&(1)&\vrule\cr
+&Inner&\vrule&(1)&1&(2)&(3)&(1)&0&(1)&(1)&\vrule\cr
+\omit\vbox to 2pt{}&&\vrule&&&&&&&&&\vrule\cr
+\omit&&\multispan{10}\leaders\hrule\hfil\cr}$$
+
+\bugonpage 173, line 11 (1/2/84)
+
+\indent|Clearly $a_i<b_i$ for~$i=1, 2, \ldots, n$.|
+
+\bugonpage 176, bottom two lines (7/20/84)
+
+\def\chapno{ 18} \exno=23 % for exercise 18.24!
+\dangerexercise Typeset the display \ \lower12pt\null
+$\tenpoint\smash{\displaystyle
+\left\lgroup\matrix{a&b&c\cr d&e&f\cr}\right\rgroup
+ \left\lgroup\matrix{u&x\cr v&y\cr w&z\cr}\right\rgroup
+}$, \
+using ^|\lgroup| and ^|\rgroup|.
+
+\bugonpage 189, line 18 (2/13/84)
+
+\ninepoint\noindent
+{\parfillskip=0pt
+when there is an overlap.] \ If $e=0$ and if there is an |\leqno|,
+the equation number is\par}
+
+\bugonpage 204, line 31 (2/13/84)
+
+\ninepoint\noindent
+of\/ |\a| is delimited by a left brace.
+
+\bugonpage 212, line 23 (7/8/84)
+
+\ninepoint\noindent
+it equals~2.) \
+Similarly, ^|\tracingmacros||=2| will trace |\output|, |\everypar|, etc.
+
+\bugonpage 216, first five lines (8/25/84)
+
+\ddanger Expanded definitions that are made with |\edef| or |\xdef| continue
+to expand tokens until only unexpandable tokens remain, except that
+token lists produced by `^|\the|' are not expanded further. Furthermore
+a token following `^|\noexpand|' will not be expanded, since its ability
+to expand has been nullified. These two operations can be used to control
+^^{expansion, avoiding} what gets expanded and what doesn't.
+
+\bugonpage 219, simplification of line 18 (2/15/84)
+
+\ninepoint\indent
+| \advance\count0 by\count2 \hexdigit}}|
+
+\bugonpage 223, lines 3--4 (3/13/84)
+
+{\parfillskip=0pt
+\ddanger Chapters 24 to 26 present summaries of all \TeX's operations
+in all modes, and when those summaries mention a `\<box>' they mean one
+of the seven\par}
+
+\bugonpage 242, line 29 (1/2/84)
+
+\ninepoint\noindent
+{\parfillskip=0pt
+a relation, the solution is to insert `|{}|' ^^{lbrace rbrace}
+at the beginning of the right-hand formula; \TeX
+\par}
+
+\bugonpage 245, line 24 (2/15/84)
+
+\ninepoint\noindent
+of a box that spans columns $i$ through~$j$,
+hence the glue in such a box might shrink.
+
+\bugonpage 248, the fourth dangerous bend (2/15/84)
+
+{\parfillskip=0pt
+\ddanger You have to be careful with the use of |&| and ^|\span| and ^|\cr|,
+because these tokens are intercepted by \TeX's scanner even when it is
+not expanding macros.\par}
+
+\bugonpage 249, lines 20--26 (2/15/84)
+
+\ninepoint\noindent
+line (see Chapter~9).
+If you don't want a~|\cr| at the end of a certain line,
+just type `|%|' and the corresponding |\cr|
+will be ``commented out.'' ^^{percent} \ (This special mode doesn't
+work with ^|\+| lines, since |\+| is a macro whose argument is delimited
+by the token `|\cr|', not simply by a token that has the same meaning
+as~|\cr|. ^^{delimited arguments} But you can redefine |\+| to overcome
+this hurdle, if you want to. For example, define a macro |\alternateplus|
+that is just like |\+| except that its argument is delimited by the active
+character |^^M|; then include the command `|\let\+=\alternateplus|' as
+part of\/ |\obeylines|.)
+
+\bugonpage 253, lines 28--32 (4/25/84)
+
+\ninepoint\noindent
+vertical list at what it thinks is the best place, and at such times
+it enters internal vertical mode and begins to read the commands in the
+current |\output| routine. When the output routine begins, ^|\box255|
+contains the page that \TeX\ has completed; the output routine is supposed to
+do something with this vbox. When the output routine ends, the list of
+items that it has constructed in internal vertical mode is placed just%
+{\parfillskip=0pt\par}
+
+\bugonpage 254, lines 1--13 (3/13/84)
+
+\ddanger \TeX's primitive command |\shipout|\<box> is what actually
+causes output. It sends the contents of the box to the |dvi| file,
+which is \TeX's main output file; after \TeX\ has finished,
+the ^|dvi| file will contain a compact device-independent encoding of
+instructions that specify exactly what should be printed. When a
+box is shipped out, \TeX\ displays the values of\/ |\count0| through
+|\count9| on your terminal, ^^|\count0| as explained in Chapter~15; these
+ten counters are also recorded in the |dvi| file, where they can be used
+to identify the page. All of the ^|\openout|, ^|\closeout|, and ^|\write|
+commands that appear inside of the \<box> are performed in their natural
+order as that box is being shipped out. Since a |\write| command
+expands macros, as explained in Chapter~21, \TeX's scanning mechanism
+might detect syntax errors while a |\shipout| is in progress. If
+^|\tracingoutput| is nonzero at the time of a |\shipout|, the contents
+of the \<box> being shipped are written into your log file in symbolic
+form. You can say |\shipout| anywhere, not only in an output routine.
+
+\bugonpage 255, line 33 (4/25/84)
+
+\ninepoint\indent
+|\nointerlineskip|
+
+
+\bugonpage 256, starting with line $-17$ (11/1/83)
+
+\ninepoint
+\textindent{6)} Finally, the ^|\dosupereject| macro is designed to clear
+out any insertions that have been held over, whether they are illustrations
+or footnotes or both: ^^|\insertpenalties| ^^|\supereject|
+\begintt
+\ifnum\insertpenalties>0
+ \line{} \kern-\topskip \nobreak
+ \vfill\supereject\fi
+\endtt
+The mysterious negative ^|\kern| here cancels out the natural space of the
+^|\topskip| glue that goes above the empty |\line|; that empty line box
+prevents the ^|\vfill| from disappearing into a page break. The vertical
+list that results from |\dosupereject| is placed on \TeX's list of things
+to put out next, just after the straggling insertions have been
+reconsidered as explained in Chapter~15. Hence another super-eject will
+occur, and the process will continue until no insertions remain.
+
+\bugonpage 262, line 14 (2/12/84)
+
+\ninepoint\indent
+|\def\endindex{\mark{}\break\endgroup}|
+
+\bugonpage 262, lines 34 and 35 (2/12/84)
+
+\ninepoint\noindent
+if\/ |\next| is `|\endindex|',
+the next commands executed will be `|\vfill|\allowbreak
+|\mark{}|\allowbreak|\break|\allowbreak|\endgroup|';
+otherwise the line will be treated as a main entry.
+
+\bugonpage 269, line 23 becomes two lines (8/25/84)
+
+\ninepoint\noindent
+tokens like |+|$_{12}$;
+(3)~keywords like \[pt]; (4)~control sequence names like |\dimen|;
+or (5)~the special symbols |{|, |}|, |$|.
+
+\bugonpage 274, line 24 (2/15/84)
+
+\ninepoint\indent
+|\lineskip|\quad(interline glue if\/ |\baselineskip| isn't feasible)
+
+\bugonpage 289, slight clarification on lines 39--41 (3/10/84)
+
+\ninepoint
+A \<math character> defines a 15-bit number either by specifying it
+directly with ^|\mathchar| or in a previous ^|\mathchardef|, or by
+specifying a 27-bit |\delimiter| value; in the latter case, the least
+significant 12~bits are discarded.
+
+
+\bugonpage 307, a slightly more explicit answer (11/3/83)
+
+\ninepoint\noindent
+\hbox to\parindent{\bf\hss6.3.\enspace}%
+It represents the heavy bar that shows up in
+your output. \ (This bar wouldn't be present if\/ ^|\overfullrule| had been
+set to |0pt|, nor is it present in an underfull box.)
+
+\bugonpage 313, first four lines (3/13/84)
+
+{\ninepoint\parfillskip=0pt
+\ansno12.17:
+ You get `A' at the extreme left and `puzzle.\null' at the extreme right,
+because the space between words has the only stretchability that is finite;
+the infinite stretchability cancels out. \ (In this case, \TeX's rule
+about ^{infinite glue} differs from what you would get in the limit if the
+value of $1\,{\rm fil}$ were finite but getting larger and larger.
+The true\par}
+
+\bugonpage 315, first three lines (3/13/84)
+
+\ninepoint
+\ansno14.14:
+ Just say |\parfillskip|\stretch|=|\stretch|\parindent|. Of course,
+\TeX\ will not be able to find appropriate line breaks unless each
+paragraph is sufficiently long or sufficiently lucky; but with an
+appropriate text, your output will be immaculately
+symmetrical.{\parfillskip=\parindent\par}
+
+\bugonpage 324, line 16 (2/15/84)
+
+\ninepoint\noindent
+\hbox to\parindent{\bf\hss18.41.\enspace}%
+|$$\{\underbrace{\overbrace{\mathstrut a,\ldots,a}|
+
+\bugonpage 324, first line of answer 18.44 (4/11/84)
+
+\ninepoint
+\ansno18.44:
+ |$$\mathop{{\sum}'}_{x\in A}f(x)\mathrel{\mathop=^{\rm def}}|
+
+\bugonpage 333, beginning of the final paragraph (12/19/83)
+
+\ninepoint
+{\sl Note:\/} The stated preamble solves the problem and demonstrates
+that \TeX's line-breaking capability can be used within tables. But this
+particular table is not really a good example of the use of\/ |\halign|,
+because \TeX\ could typeset it directly, using ^|\everypar| in an
+appropriate manner to set up the hanging indentation, and using |\par|
+instead of\/ |\cr|. For example, one could say
+
+\bugonpage 341, the bottom line was left out! (2/9/84)
+
+\line{Footline\quad\dotfill\quad Page 1009}
+
+\bugonpage 345, top three lines (1/26/84)
+
+\ninepoint{\noindent\parfillskip=0pt
+A mathcode is relevant only when the corresponding category code is
+11 or~12; therefore many of these codes will rarely be looked at. For
+example, the math code for |^^M| specifies the character |\oplus|,
+but it's hard to imagine a user who would want |^^M|\par}
+
+\bugonpage 345, line 31 (2/29/84)
+
+\ninepoint\noindent
+|\delcode`\<="26830A \delcode`\\="26E30F \delcode`\>="26930B|
+
+\bugonpage 347, lines 1 and 2 (3/16/84)
+
+\ninepoint\noindent
+|\count18=3 % this counter allocates math families 4, 5, 6, ...|\hfil\break
+|\count19=255 % this counter allocates insertions 254, 253, 252, ...|
+
+\bugonpage 350, line 9 from the bottom (3/16/84)
+
+\ninepoint\noindent
+font, whose information does not have to be loaded again.
+
+\bugonpage 354, line 5 (6/7/84)
+
+\ninepoint\noindent
+|\def\ialign{\everycr={}\tabskip=0pt \halign} % initialized \halign|
+
+\bugonpage 355, lines 19--21 (7/3/84)
+
+\ninepoint\noindent
+subdivision in a document; to use it, you say
+`|\beginsection|\<section title>' followed by a blank line (or~|\par|).
+The macro first emits glue and penalties, designed to start a new page
+if the present page is nearly full; then it makes a ^|\bigskip| and
+puts the section{\parfillskip=0pt\par}
+
+\bugonpage 355, lines 27--29 (7/3/84)
+
+\ninepoint\noindent
+|\outer\def\beginsection#1\par{\vskip0pt plus.3\vsize\penalty-250|
+\par\noindent
+| \vskip0pt plus-.3\vsize\bigskip\vskip\parskip|
+\par\noindent
+| \message{#1}\leftline{\bf#1}\nobreak\smallskip\noindent}|
+
+\bugonpage 355, line 37 (4/24/84)
+
+\ninepoint\noindent
+|\outer\def\proclaim #1. #2\par{\medbreak|
+
+\bugonpage 356, seven lines from the bottom (4/11/84)
+
+\ninepoint\noindent
+|\def|^|\TeX||{T\kern-.1667em \lower.5ex\hbox{E}\kern-.125em X}|
+
+\bugonpage 359, starting with line 2 (11/16/83)
+
+\ninepoint
+\beginlines
+|\mathchardef\ldotp="602E\mathchardef\cdotp="6201\mathchardef\colon="603A|
+|\def\ldots{\mathinner{\ldotp\ldotp\ldotp}}|
+|\def\cdots{\mathinner{\cdotp\cdotp\cdotp}}|
+|\def\vdots{\vbox{\baselineskip=4pt \lineskiplimit=0pt|
+| \kern6pt \hbox{.}\hbox{.}\hbox{.}}}|
+|\def\ddots{\mathinner{\mskip1mu\raise7pt\vbox{\kern7pt\hbox{.}}\mskip2mu|
+| \raise4pt\hbox{.}\mskip2mu\raise1pt\hbox{.}\mskip1mu}}|
+\endlines
+
+\bugonpage 359, starting with line 19 (11/3/83)
+
+{\ninepoint\parindent=0pt
+|\def|^|\overbrace|%
+ |#1{\mathop{\vbox{\ialign{##\crcr\noalign{\kern3pt}|\parbreak%
+| \downbracefill\crcr\noalign{\kern3pt\nointerlineskip}|\parbreak%
+| $\hfil\displaystyle{#1}\hfil$\crcr}}}|^|\limits||}|
+
+|\def|^|\underbrace||#1{\mathop{\vtop{\ialign{##\crcr|\parbreak%
+| $\hfil\displaystyle{#1}\hfil$\crcr|%
+ |\noalign{\kern3pt\nointerlineskip}|\parbreak%
+| \upbracefill\crcr\noalign{\kern3pt}}}}\limits}|
+}
+
+\bugonpage 359, seventh line from the bottom (2/29/84)
+
+\ninepoint\noindent
+|\def\backslash{\delimiter"026E30F } \def\bracevert{\delimiter"000033E }|
+
+\bugonpage 361, line 3 (8/17/84)
+
+\ninepoint\noindent
+
+|\def\buildrel#1\over#2{\mathrel{\mathop{\null#2}\limits^{#1}}}|
+
+\bugonpage 363, line 10 (4/26/84)
+
+\ninepoint\noindent
+| \ifhmode\edef\@sf{\spacefactor=\the\spacefactor}\/\fi|
+
+\bugonpage 364, starting with line 10 (11/1/83)
+
+{\ninepoint\parindent=0pt
+|\def\dosupereject{\ifnum\insertpenalties>0 % something is being held over|%
+\parbreak
+| \line{}\kern-\topskip\nobreak\vfill\supereject\fi}|
+}
+
+\bugonpage 364, line 28 (7/8/84)
+
+\ninepoint\noindent
+| \tracingmacros=2 \tracingparagraphs=1 \tracingrestores=1 |
+
+\bugonpage 370, line 7 (3/16/84)
+
+\ninepoint\noindent
+information about the \TeX\ Users Group.)
+
+\bugonpage 374, line 23 (7/8/84)
+
+\ninepoint
+\line{log file when |\tracingmacros=2| and
+ |\tracingcommands=2|. One of the important ways}
+
+\bugonpage 379, line 1 (1/12/84)
+
+\ninepoint\noindent
+A particular item can be selected by its position number from the left:
+
+\bugonpage 381, line 6 (2/12/84)
+
+\ninepoint\indent
+|\newcount\lineno % the number of file lines listed|
+
+\bugonpage 381, lines 24 and 25 (12/15/83)
+
+\ninepoint
+{\parfillskip=0pt
+Instead of listing a file verbatim, you might want to define a |\verbatim|
+macro such that `|\verbatim{$this$|{\tt\ is }|{\it!}}|' yields
+`|$this$|{\tt\ is }|{\it!}|'. It's somewhat\par}
+
+\bugonpage 385, lines 22 and 23 (1/12/84)
+
+\ninepoint\noindent
+macro, a parameter, or a token list
+variable; (b)~when \TeX\ must determine whether the token
+|&|~or ^|\span| ^^{ampersand}
+or ^|\cr| or~^|\crcr| is the end of an entry within an ^{alignment}.
+
+\bugonpage 387, two paragraphs in right column (1/18/84)
+
+\setbox0=\vbox{
+\eightpoint
+\tolerance=9999
+\hbadness=2300
+\finalhyphendemerits=3000000
+\doublehyphendemerits=1000000
+\parskip=1pt
+\parindent=1.5em
+\frenchspacing
+\hsize=166.8125pt
+\def\\#1{\raise.5pt\hbox{$\scriptscriptstyle
+ \ifx#1`\langle\!\langle\else\rangle\!\rangle\fi$}% Spanish quote marks
+ \ifx#1`\nobreak\hskip0pt \fi} % allow hyphenation
+\item{A.} Exactamente. Pero los profesores son tan conservadores
+que temer\'\i an espantar al tipo de estudiante \\`apisonadora\\'
+que hace lo que le proponen para casa, obe\-dien\-te\-mente y de forma
+mec\'anica. Adem\'as, no creo que les gustase el trabajo adicional
+de calificar respuestas a preguntas abiertas.
+
+\item{}La forma tradicional es dejar la parte creativa para los cursos
+altos. Durante diecisiete a\~nos o m\'as se ense\~na al es\-tu\-diante a
+aprobar, luego de golpe, cerca de la graduaci\'on, se le pide que haga
+algo original.
+
+}\rightline{\box0}
+
+\bugonpage 395, lines 21 and 22 (1/12/84)
+
+\ninepoint\noindent
+{\parfillskip=0pt
+Notice that the macros need to do their own checking for ligatures, and
+they also take appropriate actions when a paragraph begins with an opening
+quote. Since |\kern|\par}
+
+\bugonpage 399, line 1 (1/10/84)
+
+\ninepoint
+{\parfillskip=0pt
+Inside the output routine, |\box\footins| will now be a vbox of hboxes, and
+\par}
+
+\bugonpage 399, line 9 (2/28/84)
+
+\ninepoint\indent
+|.\hbox(7.6359+0.0)x269.62617 []|
+
+\bugonpage 407, line 4 (6/10/84)
+
+\ninepoint\noindent
+|\beginlinemode| and |\beginparmode| are defined to initiate these
+modes; and another%
+{\parfillskip=0pt\par}
+
+\bugonpage 408, line 15 (12/14/83)
+
+\noindent
+| P. O. Box 1009, Haga Alto, CA 94321 USA}|
+
+\smallskip\noindent\ninepoint
+[Also change the ZIP code in the return address on the envelope
+illustrated at the bottom of page 405.]
+
+\bugonpage 409, line 5 (2/18/84)
+
+\ninepoint\noindent
+|\font\twelveit=cmti10 at 12pt % (a cheap substitute for cmti12)|
+
+\bugonpage 417, last six lines (8/25/84)
+
+\ninepoint\noindent
+^|\parskip|
+of |0pt| |plus|~|.8pt| between adjacent entries, and since there is room for
+more than 50 lines per column; therefore the |manmac| balancing routine tries
+to make both the top and bottom baselines agree at the end of the index.
+In applications where the glue is not so flexible it would be more
+appropriate to let the right-hand column be a little short; the best
+way to do this is probably to replace the command `|\unvbox3|' by
+`|\dimen2=|^|\dp||3| |\unvbox3| |\kern-\dimen2| ^|\vfil|'.
+
+\bugonpage 422, lines 24--26 (2/9/84)
+
+\ninepoint\noindent
+(The last two lines use |\d@nger| and |\dd@nger|, which are non-|\outer|
+equivalents of\/ |\danger| and |\ddanger|; such duplication is necessary
+because control sequences of type ^|\outer| cannot appear within a |\def|.)
+
+\bugonpage 428, in the table of sixteen basic fonts (12/19/83)
+
+\ninepoint\noindent
+[The special fonts called |cmi10| and |cmi7| and |cmi5| should really be
+called |cmmi10| and |cmmi7| and |cmmi5|.]
+
+\bugonpage 433, last eight lines (8/17/84)
+
+\noindent
+explained in Appendix~G\null. If you want to increase
+the number of parameters past the number that actually appear in a font's
+metric information file, you can assign new values immediately after that font
+has been loaded. For example, if some font |\ff| with seven parameters
+has just entered \TeX's memory, the command |\fontdimen13\ff=5pt| will set
+parameter number~13 to $5\pt$; the intervening parameters, numbers 8--12,
+will be set to zero. You can even give more than seven parameters to
+^|\nullfont|, provided that you assign the values before any actual fonts
+have been loaded.
+
+\bugonpage 445, line 6 (11/11/83)
+
+\ninepoint
+\line{if $(a-{1\over2}\theta)-
+\bigl(h(z)-v\bigr)<\varphi$, increase~$v$ by the difference. Finally
+construct a vbox of}
+
+\bugonpage 449, line 12 (1/18/84)
+
+\line{immediately clear why the `n' should
+be attached to the `e' in one case but not}
+
+\bugonpage 459, left column, line 2 (1/18/84)
+
+\eightpoint
+al-Khw\^arizm\^\i, abu Ja`far Mu\d{h}ammad
+
+\bugonpage 460, index entry for Beethoven (8/16/84)
+
+\eightpoint
+Change `von' to `van'.
+
+\bugonpage 461, third line in left column (8/25/84)
+
+\eightpoint The entry for |\box255| should not be indented.
+
+\bugonpage 461, index entry for boxed material (8/2/84)
+
+\eightpoint Add `{\it 420}'.
+
+\bugonpage 462, index entry for {\tt\char`\\colon} (11/16/83)
+
+\eightpoint Add page \underbar{359} to this list.
+
+\bugonpage 462, right column, third-last line (5/21/84)
+
+\eightpoint\indent
+[Change `crochets' to `crotchets'; then move this entry down two lines.]
+
+\bugonpage 463, right column, line 16 (5/20/84)
+
+\eightpoint\indent
+design size, 16--17, 213.
+
+\bugonpage 464, index entry for {\tt\char`\\dump} (1/10/84)
+
+\eightpoint Add page {\it 344\/} to this list.
+
+\bugonpage 464, right column, line 5 (1/5/84)
+
+\eightpoint
+Dvo\v r\'ak, Anton\'\i n Leopold, 409.
+
+\bugonpage 464, index entry for {\tt\char`\\end} (8/25/84)
+
+\eightpoint Page number 264 should be underlined.
+
+\bugonpage 465, index entry for {\tt\char`\\everydisplay} (8/25/84)
+
+\eightpoint Add page {\it 326\/} to this list.
+
+\bugonpage 465, index entry for {\tt\char`\\filbreak} (7/3/84)
+
+\eightpoint Delete the reference to page number 355.
+
+\bugonpage 466, index entry for {\tt\char`\\footnote} (4/26/84)
+
+\eightpoint Page number 363 should be underlined.
+
+\bugonpage 467, index entry for {\tt\char`\\hidewidth} (7/3/84)
+
+\eightpoint Page number 354 should be underlined.
+
+\bugonpage 468, index entry for insertions (8/25/84)
+
+\eightpoint Add pages 115--117, 122--125 to this list.
+
+\bugonpage 469, index entry for {\tt\char`\\kern} (11/1/83)
+
+\eightpoint Add page {\it 256\/} to this list.
+
+\bugonpage 470, index entry for {\tt\char`\\limits} (11/3/83)
+
+\eightpoint Add page {\it 359\/} to this list.
+
+\bugonpage 472, right column, lines 10--11 (7/9/84)
+
+{\eightpoint
+\indent
+|\normalbaselines|\kern1pt,
+ {\it 325}, 349, $\underline{351}$, {\it 414--415}.\par
+\baselineskip=9.9pt
+\indent
+|\normalbaselineskip|\kern1pt,
+ $\underline{349}$, {\it 414--415}.\par
+}
+
+\bugonpage 472, index entry for {\tt\char`\\null} (7/3/84)
+
+\eightpoint Page number 351 should be underlined.
+
+\bugonpage 472, right column, line 28 (1/3/84)
+
+\eightpoint\indent
+\hbox to0pt{\hss\lower1pt\hbox{*}}|\nullfont|, 14, 153, 271, 433.
+
+\bugonpage 476, a new index entry (8/25/84)
+
+\eightpoint\indent
+shifted output, {\sl see\/} |\hoffset|, |\voffset|.
+
+\bugonpage 476, index entry for shriek (8/25/84)
+
+\eightpoint It should not be capitalized.
+
+\bugonpage 478, index entry for \'Swierczkowski (9/15/84)
+
+\eightpoint
+The middle name should be `S\l awomir'.
+
+\bugonpage 479, last seven lines in the left column (8/23/84)
+
+\eightpoint
+{\baselineskip=9.9pt
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\tracingmacros|, $\underline{205}$, $\underline{212}$, 273, {\it329}.
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\tracingonline|, 121, 212, 273, $\underline{303}$.
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\tracingoutput|, $\underline{254}$, 273, {\it301--302}.
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\tracingpages|, {\it112--114}, 124, 273, $\underline{303}$.
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\tracingparagraphs|, {\it98--99}, 273, $\underline{303}$.
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\tracingrestores|, 273, $\underline{301}$, $\underline{303}$.
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\tracingstats|, 273, $\underline{300}$, $\underline{303}$, {\it383}.
+}
+
+\bugonpage 479, index entry for underlined text (8/2/84)
+
+\eightpoint Add `{\sl see also\/} |\underbar|'.
+
+\bugonpage 480, index entry for {\tt\char`\\vbox} (11/1/83)
+
+\eightpoint Delete page 256 from this list.
+
+\bye
+
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errata.seven b/Master/texmf-doc/doc/english/knuth/errata/errata.seven
new file mode 100644
index 00000000000..0866189da51
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata.seven
@@ -0,0 +1,821 @@
+% Bugs (sigh) in Computers \& Typesetting
+
+\input manmac
+\font\sltt=cmsltt10
+\font\niness=cmss9
+\font\ninessi=cmssi9
+\proofmodefalse
+\raggedbottom
+\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
+
+\def\today{\number\day\
+ \ifcase\month\or
+ Jan\or Feb\or Mar\or Apr\or May\or Jun\or
+ Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi
+ \ \number\year}
+
+\def\cutpar{{\parfillskip=0pt\par}}
+
+\def\rhead{Bugs in {\tensl Computers \& Typesetting, 1991}}
+\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
+\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
+\newcount\nn
+\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
+\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
+
+\tenpoint
+\noindent This is a list of all corrections made to {\sl Computers \&
+Typesetting}, Volumes A,~B, C, and D\null, between 1 January 1991 and
+15 March 1992.
+Corrections made to the softcover version of {\sl The \TeX book\/} are
+the same as corrections to Volume~A\null. Corrections to the softcover
+version of {\sl The \slMF\kern1ptbook\/} are the same as corrections
+to Volume~C\null. Some of the corrections below have already been made in
+reprintings of the books. Changes to Volume~B refer to the fourth printing
+(1991), which differs markedly from earlier printings because it includes
+all the revisions for \TeX3.0. Changes to Volume~D refer to the third
+printing (1991), which differs markedly from earlier printings because
+it includes all the revisions for \MF\kern1pt2.0. Changes to the mini-indexes
+and master indexes of Volumes B and~D are not shown here unless they are
+not obviously derivable from what has been shown.
+Dozens of changes, too many to list
+here, have been made to Volume~E because of recent upgrades to the
+Computer Modern font source files.
+Those changes, which affect only the digitization at
+low resolution and the appearance of lowercase delta and
+some characters in the math symbols
+fonts (but not the {\tt TFM} files), are documented at
+the end of file {\tt cm85.bug}.
+\looseness=-1
+
+ % volume A
+
+\bugonpage A96, lines 9--11 (9/18/91)
+
+\ninepoint
+Some ^{German} words traditionally change their spelling
+when they are split between lines. For example, `backen' becomes `bak-ken'
+and `Bettuch' becomes `Bett-tuch'. How can you instruct \TeX\ to produce
+such effects?
+
+\bugonpage A178, line 17 (11/19/91)
+
+\ninepoint
+If you say `|\phantom{|\<subformula>|}|' in any formula, plain
+\TeX\ will do its\cutpar
+
+\bugonpage A286, bottom two lines and continuing into A287 (11/21/91)
+
+\ninepoint\noindent
+stands for zero or more \<assignment>
+commands other than |\setbox|.
+If the assignments are not followed by a \<character>, where
+\<character> stands for any of the commands just discussed in the previous
+paragraph, \TeX\ treats |\accent| as if it were |\char|, except that
+the space factor is set to 1000. Otherwise the character that follows
+the assignment is accented by the character that corresponds to the
+\<8-bit number>. \ (The purpose of the intervening assignments is to
+allow the accenter and accentee to be in different fonts.) \ If the
+accent must be moved up or down, it is put into an hbox that is
+raised or lowered. Then the accent is effectively superposed on the
+character by means of kerns, in such a way that the width of the accent
+does not influence the width of the resulting horizontal list.
+Finally, \TeX\ sets |\spacefactor=1000|.
+
+\bugonpage A291, lines 6--8 (11/21/91)
+
+\ninepoint\noindent
+`|}|' may be followed by
+optional \<assignment> commands other than |\setbox|,
+after which `|$$|'~must conclude
+the display. \TeX\ will insert the |\abovedisplayskip| and
+|\belowdisplayskip| glue before and after the result of the alignment.
+
+\bugonpage A293, line 14 (9/18/91)
+
+\ninepoint\noindent
+explained in Appendix~G\null. \TeX\
+scans \<one optional space> after completing a displayed formula; this is
+usually the implicit space at the end of a line in the input file.
+
+\bugonpage A311, bottom four lines (9/18/91)
+
+\ninepoint
+\ansno12.7: 1000, except: 999 after |O|, |B|, |S|, |D|, and |J|; 1250 after the
+comma; 3000 after the exclamation point, the right-quote marks, and the
+periods. If a period had come just after the |B| (i.e., if the text had
+said `|B. Sally|'), the space factor after that period would have
+been~1000, not~3000.
+
+\bugonpage A314, lines 16--18 from the bottom (1/10/92)
+
+\ninepoint
+\ansno14.8: |ba\ck/en| and |Be\ttt/uch|, where the macros |\ck/| and |\ttt/|
+are defined by
+\begintt
+\def\ck/{\discretionary{k-}{k}{ck}}
+\def\ttt/{tt\discretionary{-}{t}{}}
+\endtt
+
+\bugonpage A354, line 8 (9/18/91)
+
+\ninepoint\noindent
+|\def\multispan#1{\omit\mscount=#1\relax\loop\ifnum\mscount>1 \sp@n\repeat}|%
+\kern-10pt\null
+
+\bugonpage A356, line 11 from the bottom (9/23/91)
+
+\ninepoint\noindent
+| \else{\ooalign{\unhbox0\crcr\hidewidth\char'30\hidewidth}}\fi}|
+
+\bugonpage A358, line 8 from the bottom (9/18/91)
+
+\ninepoint\noindent
+|\mathchardef\mapstochar="3237 \def\mapsto{\mapstochar\rightarrow}|
+
+\bugonpage A359, line 13 (11/4/91)
+
+\ninepoint\noindent
+|\def\overrightarrow#1{\vbox{\m@th\ialign{##\crcr|
+
+\bugonpage A359, line 16 (11/4/91)
+
+\ninepoint\noindent
+|\def\overleftarrow#1{\vbox{\m@th\ialign{##\crcr|
+
+\bugonpage A359, line 19 (11/4/91)
+
+\ninepoint\noindent
+|\def\overbrace#1{\mathop{\vbox{\m@th\ialign{##\crcr\noalign{\kern3pt}|
+
+\bugonpage A359, line 22 (11/4/91)
+
+\ninepoint\noindent
+|\def\underbrace#1{\mathop{\vtop{\m@th\ialign{##\crcr|
+
+\bugonpage A359, lines 7--14 from the bottom (1/11/92)
+
+\ninepoint\noindent
+|\def\lgroup{\delimiter"462833A } \def\rgroup{\delimiter"562933B }|%
+\par\noindent
+|\def\lmoustache{\delimiter"437A340 } \def\rmoustache{\delimiter"537B341 }|%
+ \kern-2pt\null\par\noindent
+|\def\uparrow{\delimiter"3222378 } \def\Uparrow{\delimiter"322A37E }|%
+\par\noindent
+|\def\downarrow{\delimiter"3223379 } \def\Downarrow{\delimiter"322B37F }|%
+\par\noindent
+|\def\updownarrow{\delimiter"326C33F } \def\arrowvert{\delimiter"026A33C }|%
+\par\noindent
+|\def\Updownarrow{\delimiter"326D377 } \def\Arrowvert{\delimiter"026B33D } |%
+\par\noindent
+|\def\vert{\delimiter"026A30C } \def\Vert{\delimiter"026B30D } |%
+\par\noindent
+|\def\backslash{\delimiter"026E30F } \def\bracevert{\delimiter"077C33E }|
+
+\bugonpage A360, line 13 (11/19/91)
+
+\ninepoint\noindent
+|\phantom|, |\smash|, |\root|, and other
+operations. (Actually |\phantom| and |\smash| are not perfect: They
+assume that the current style is uncramped.)
+
+\bugonpage A360, line 2 from the bottom (11/4/91)
+
+\ninepoint\noindent
+|\def\c@ncel#1#2{\m@th\ooalign{$\hfil#1\mkern1mu/\hfil$\crcr$#1#2$}}|
+
+\bugonpage A361, top line (11/4/91)
+
+\ninepoint\noindent
+|\def\rlh@#1{\vcenter{\m@th\hbox{\ooalign{\raise2pt|
+
+\bugonpage A364, line 5 from the bottom (11/4/91)
+
+\ninepoint\noindent
+|\def|^|\fmtname||{plain}\def\fmtversion{3.141}|
+
+\bugonpage A377, the bottom 17 lines (9/18/91)
+
+\eightpoint\noindent\hangindent\parindent\hangafter-3
+story: Macro |\stest| decides whether or not
+a given token list register begins with
+a \<space token> as defined in Chapter~24. If so, the macro
+decides whether the token is explicit and/or funny and/or active.
+\begintt
+\newif\ifspace \newif\iffunny \newif\ifexplicit \newif\ifactive
+\def\stest#1{\funnyfalse \expandafter\s\the#1! \stest}
+\def\s{\global\explicitfalse \global\activefalse \futurelet\next\ss}
+\def\ss{\ifcat\noexpand\next\stoken\let\nxt\sx\else\let\nxt\ns\fi\nxt}
+\def\sx{\spacetrue\ifx\next\stoken\let\nxt\sss\else\let\nxt=\ssss\fi\nxt}
+\long\def\sss#1 #2\stest{\def\next{#1}%
+ \ifx\next\empty \global\explicittrue \else\testactive#1\s\fi}
+\long\def\ssss#1#2\stest{\funnytrue{\escapechar=\if*#1`?\else`*\fi\relax
+ \if#1\string#1\uccode`#1=`~ % we assume that ~ is an active character
+ \uppercase{\ifcat\noexpand#1}\noexpand~\global\activetrue
+ \else\global\explicittrue\fi
+ \else\testactive#1\s\fi}}
+\long\def\ns#1\stest{\spacefalse}
+\long\def\testactive#1#2\s{\expandafter\tact\string#1\s\tact}
+\long\def\tact#1#2\tact{\def\next{#2}\ifx\next\xs\global\activetrue
+ \else\ifx\next\empty \global\activetrue\fi\fi} \def\xs{\s}
+\endtt
+
+\bugonpage A444, lines 15--26 (3/26/91)
+
+\ninepoint
+\textindent{\bf14.}If the current item is an Ord atom,
+go directly to Rule~17 unless
+all of the following are true: The nucleus is a symbol; the subscript
+and superscript are both empty; the very next item in the math list is an
+atom of type Ord, Op, Bin, Rel, Open, Close, or Punct; and the nucleus of the
+next item is a symbol whose family is the same as the family in the present
+Ord atom. In such cases the present symbol is marked as a text symbol.
+If the font information shows a ligature between this symbol and the
+following one, using the specified family and the current size, then
+insert the ligature character and continue as specified by the font;
+in this process, two characters may collapse into a single Ord
+text symbol, and/or new Ord text characters may appear. If the font information
+shows a kern between the current symbol and the next, insert a kern item
+following the current atom.
+As soon as an Ord atom has been fully processed for ligatures and kerns,
+go to Rule~17.
+
+\bugonpage A446, lines 5 and 6 from the bottom (1/13/92)
+
+\ninepoint\noindent
+are used to change the current style just as
+in the first pass, so that both passes have the same value of~$C$ when
+they work on any particular atom.
+
+\bugonpage A447, in the parameter usage table (1/13/92)
+
+\ninepoint\noindent[Delete the entry for `$\sigma_2$'; the entry for
+`$\sigma_{17}$' moves down to the bottom of the left column.]
+
+\bugonpage A447, line 2 after the parameter usage table (1/13/92)
+
+\ninepoint\noindent
+to parameters in arbitrary families:
+Rule~17 uses |\fontdimen| parameter~2 (space) to de-\cutpar
+
+\bugonpage A467, entry for {\tt\char`\\hss} (9/18/91)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt\char`\\hss}, 71--72, {\it82--83}, 233, 283, 285, 290, 442.
+
+\bugonpage A467, new subentry under hyphenation (9/18/91)
+
+\eightpoint\indent\quad
+suppressing, 93, 414, 424, 454.
+
+\bugonpage A476, right column (11/21/91)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt\char`\\setbox}, 66--67, 77, 81, $\underline{120}$, 276, 279, 286,\par
+\indent\qquad 291, {\it386--392}.
+
+ % volume B
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\bugonpage B2, line 10 from the bottom (1/11/92)
+
+\ninepoint\noindent\hskip10pt
+{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
+{\tt This\]is\]TeX,\]Version\]3.141\char'23}\quad
+$\{\,$printed when \TeX\ starts$\,\}$
+
+\bugonpage B18, lines 21 and 22 (10/12/91)
+
+\tenpoint\noindent
+must have an \\{xchr} equivalent in the local
+character set. (This restriction applies only to preloaded strings,
+not to those generated dynamically by the user.)
+
+\bugonpage B26, new line before fourth line from bottom (1/24/92)
+
+\ninepoint\noindent\hskip20pt
+\\{nl}: \\{integer};\quad$\{\,$new-line character to restore$\,\}$
+
+\bugonpage B26, bottom line and top 3 lines of B27 (1/24/92)
+
+\ninepoint\noindent\hskip30pt
+{\bf else begin if\/} $\\{selector}>\\{pseudo}$ {\bf then}\par
+\noindent\hskip50pt
+{\bf begin} \\{print\_char}($s$); \ {\bf return};\quad
+ $\{\,$internal strings are not expanded$\,\}$\par\noindent\hskip50pt
+{\bf end};\par\noindent\hskip40pt
+{\bf if\/} ($\langle\,$Character $s$ is the current new-line
+ character{\sevenrm\kern.5em244}$\,\rangle$) {\bf then}\par\noindent\hskip50pt
+{\bf if\/} $\\{selector}<\\{pseudo}$ {\bf then}\par\noindent\hskip60pt
+{\bf begin} \\{print\_ln}; \ {\bf return}; \
+{\bf end};\par\noindent\hskip40pt
+$\\{nl}\gets\\{new\_line\_char}$; \ $\\{new\_line\_char}\gets-1$;\quad
+ $\{\,$temporarily disable new-line character$\,\}$\par\noindent\hskip40pt
+$j\gets\\{str\_start}[s]$;\par\noindent\hskip40pt
+{\bf while} $j<\\{str\_start}[s+1]$ {\bf do}\par\noindent\hskip50pt
+{\bf begin} $\\{print\_char}(\\{so}(\\{str\_pool}[j]))$; \ $\\{incr}(j)$; \
+{\bf end};\par\noindent\hskip40pt
+$\\{new\_line\_char}\gets\\{nl}$; \ {\bf return};\par\noindent\hskip40pt
+{\bf end};
+
+\bugonpage B27, lines 9 and 10 (9/19/91)
+
+\tenpoint\noindent
+{\bf 60.\quad}%
+Control sequence names, file names, and strings constructed with
+{\tt\char`\\string} might contain \\{ASCII\_code} values that can't
+be printed using \\{print\_char}. Therefore we use
+\\{slow\_print} for them:
+
+\bugonpage B27, lines 13--26 (1/24/92)
+
+\ninepoint\noindent\hskip10pt
+{\bf var} $j$: \\{pool\_pointer};\quad$\{\,$current character code
+ position$\,\}$\par\noindent\hskip10pt
+{\bf begin if\/} $(s\ge\\{str\_ptr})\lor(s<256)$ {\bf then} \\{print}(s)
+\par\noindent\hskip10pt {\bf else begin} $j\gets\\{str\_start}[s]$;\par
+\noindent\hskip20pt{\bf while} $j<\\{str\_start}[s+1]$ {\bf do}\par
+\noindent\hskip30pt{\bf begin} $\\{print}(\\{so}(\\{str\_pool}[j]))$; \
+ $\\{incr}(j)$;\par\noindent\hskip30pt
+{\bf end};\par\noindent\hskip20pt
+{\bf end};\par\noindent\hskip10pt
+{\bf end};
+
+\bugonpage B28, line 8 (9/19/91)
+
+\ninepoint\noindent\hskip10pt
+{\bf else begin} \\{slow\_print}(\\{format\_ident}); \ \\{print\_ln};
+
+\bugonpage B33, line 3 (1/11/92)
+
+\tenpoint\noindent
+recursively. A similar interlock is provided by \\{set\_box\_allowed}.
+
+\bugonpage B33, new line to come after line 14 (1/11/92)
+
+\ninepoint\noindent
+\\{set\_box\_allowed}: \\{boolean};\quad
+ $\{\,$is it safe to do a |\setbox| assignment?$\,\}$
+
+\bugonpage B33, new line to come after line 20 (1/11/92)
+
+\ninepoint\noindent\hskip10pt
+$\\{set\_box\_allowed}\gets\\{true}$;
+
+\bugonpage B36, line 12 (9/19/91)
+
+\ninepoint\noindent\hskip30pt
+{\bf begin} \\{print\_nl}({\tt\char`\"You\]want\]to\]edit\]file\]\char`\"});
+ \ \\{slow\_print}(\\{input\_stack}[\\{base\_ptr}].\\{name\_field});
+
+\bugonpage B46, lines 9 and 10 (5/24/91)
+
+\tenpoint\noindent
+arithmetic; see {\sl TUGboat \bf3},1 (March 1982), 10--27. (But the
+routines cited there must be modified to allow negative glue ratios.)
+
+\bugonpage B47, lines 2 and 3 (5/24/91)
+
+\tenpoint\noindent
+structures on a \\{memory\_word}, which contains either a (signed) integer,
+possibly scaled, or a (signed) \\{glue\_ratio}, or a small number of
+fields that are one half or one quarter of the size used\cutpar
+
+\bugonpage B177, lines 10 and 11 (9/19/91)
+
+\ninepoint\noindent\hskip20pt
+{\bf begin} \\{print\_err}({\tt\char`\"Bad\]mathchar\char`\"});\par
+\noindent\hskip20pt
+\\{help2}({\tt\char`\"A\]mathchar\]number\]must\]be\]between\]0\]%
+ and\]32767.\char`\"})
+
+\bugonpage B196, new lines after line 11 (1/13/92)
+
+\ninepoint\noindent\hskip20pt
+{\bf if\/} $\\{align\_state}<1000000$ {\bf then}\quad
+ $\{\,$unmatched `|}|' aborts the line$\,\}$\par\noindent\hskip30pt
+{\bf begin repeat} \\{get\_token}; \ {\bf until} $\\{cur\_tok}=0$;\par
+\noindent\hskip30pt$\\{align\_state}\gets1000000$; \ {\bf goto} \\{done};\par
+\noindent\hskip30pt{\bf end};
+
+\bugonpage B208, line 21 (9/19/91)
+
+\ninepoint\noindent\hskip10pt
+{\bf begin} \\{slow\_print}($a$); \ \\{slow\_print}($n$); \
+ \\{slow\_print}($e$);
+
+\bugonpage B214, line 14 (9/19/91)
+
+\ninepoint\noindent\hskip10pt
+{\bf begin} \\{wlog}(\\{banner}); \\{slow\_print}(\\{format\_ident}); \
+ \\{print}({\tt\char`\"\]\]\char`\"}); \
+ \\{print\_int}(\\{day}); \
+ \\{print\_char}({\tt\char`\"\]\char`\"});
+
+\bugonpage B214, line 2 from the bottom (9/19/91)
+
+\ninepoint\noindent\hskip10pt
+\\{print\_char}({\tt\char`\"(\char`\"}); \
+\\{incr}(\\{open\_parens}); \
+\\{slow\_print}(\\{name}); \
+\\{update\_terminal}; \
+$\\{state}\gets\\{new\_line}$;
+
+\bugonpage B234, line 22 (9/19/91)
+
+\ninepoint\noindent\hskip20pt
+\\{print}({\tt\char`\"\]in\]font\]\char`\"}); \
+\\{slow\_print}(\\{font\_name}[$f$]); \
+\\{print\_char}({\tt\char`\"!\char`\"}); \
+\\{end\_diagnostic}(\\{false});
+
+\bugonpage B267, lines 7 and 8 (9/19/91)
+
+\ninepoint\noindent\hskip20pt
+\\{print\_nl}({\tt\char`\"Output\]written\]on\]\char`\"}); \
+\\{slow\_print}(\\{output\_file\_name});\par\noindent\hskip20pt
+\\{print}({\tt\char`\"\](\char`\"}); \
+\\{print\_int}(\\{total\_pages}); \
+\\{print}({\tt\char`\"\]page\char`\"});
+
+\bugonpage B296, new lines after line 8 of section 716 (1/11/92)
+
+\ninepoint\noindent\hskip10pt
+{\bf if\/} $f<0$ {\bf then}\par\noindent\hskip20pt
+{\bf begin} \\{decr}($n$); \ $f\gets f+\oct{200000}$;\par\noindent\hskip20pt
+{\bf end};
+
+\bugonpage B297, new lines after line 7 of section 717 (1/11/92)
+
+\ninepoint\noindent\hskip20pt
+{\bf if\/} $f<0$ {\bf then}\par\noindent\hskip30pt
+{\bf begin} \\{decr}($n$); \ $f\gets f+\oct{200000}$;\par\noindent\hskip30pt
+{\bf end};
+
+\bugonpage B348, bottom two lines (1/3/92)
+
+\tenpoint\noindent\hskip10pt
+Up to three passes might be made through the paragraph in an attempt to find at
+least one set of feasible breakpoints. On the first pass, we have
+$\\{threshold}=\\{pretolerance}$ and $\\{second\_pass}=$\cutpar
+
+\bugonpage B364, line 20 (1/3/92)
+
+\tenpoint\noindent
+{\bf 863.\quad}
+The `{\bf loop}' in the following code is performed at most
+thrice per call of \\{line\_break}, since\cutpar
+
+\bugonpage B377, insert new line after line 12 (9/19/91)
+
+\ninepoint\noindent
+\\{hyf\_bchar}:\enspace\\{halfword};\quad
+ $\{\,$boundary character after $c_n\,\}$
+
+\bugonpage B378, line 12 from the bottom (9/19/91)
+
+\ninepoint\noindent\hskip30pt
+$\\{hyf\_bchar}\gets\\{character}(s)$; \
+$c\gets\\{qo}(\\{hyf\_bchar})$;
+
+\bugonpage B378, line 9 from the bottom (1/10/92)
+
+\ninepoint\noindent\hskip30pt
+$\\{hb}\gets s$; \ \\{incr}(\\{hn}); \ $\\{hu}[\\{hn}]\gets c$; \
+$\\{hc}[\\{hn}]\gets\\{lc\_code}(c)$; \
+$\\{hyf\_bchar}\gets\\{non\_char}$;
+
+\bugonpage B378, line 5 from the bottom (9/19/91)
+
+\ninepoint\noindent\hskip30pt
+{\bf else if} $(\\{type}(s)=\\{kern\_node})\land(\\{subtype}(s)=\\{normal})$
+ {\bf then} $\\{hb}\gets s$\par\noindent\hskip40pt
+ {\bf else goto} \\{done3};
+
+\bugonpage B379, line 6 (9/19/91)
+
+\ninepoint\noindent\hskip10pt
+$j\gets\\{hn}$; \ $q\gets\\{lig\_ptr}(s)$; \
+{\bf if\/} $q>\\{null}$ {\bf then} $\\{hyf\_bchar}\gets\\{character}(q)$;
+
+\bugonpage B379, new line between lines 14 and 15 (1/10/92)
+
+\ninepoint\noindent\hskip10pt
+{\bf if\/} $\\{odd}(\\{subtype}(s))$ {\bf then}
+$\\{hyf\_bchar}\gets\\{font\_bchar}[\\{hf}]$ {\bf else}
+$\\{hyf\_bchar}\gets\\{non\_char}$;
+
+\bugonpage B379, line 19 (9/19/91)
+
+\ninepoint\noindent\hskip10pt
+{\bf if\/} $\\{hn}<\\{l\_hyf}+\\{r\_hyf}$ {\bf then goto} \\{done1}; \
+\quad$\{\,$\\{l\_hyf} and \\{r\_hyf} are always $\ge1\,\}$
+
+\bugonpage B380, lines 9--11 from the bottom reduce to a single line (1/10/92)
+
+\ninepoint\noindent\hskip10pt
+$q\gets\\{link}(\\{hb})$; \ $\\{link}(\\{hb})\gets\\{null}$; \
+$r\gets\\{link}(\\{ha})$; \ $\\{link}(\\{ha})\gets\\{null}$; \
+$\\{bchar}\gets\\{hyf\_bchar}$;
+
+\bugonpage B436, lines 9 and 10 (3/15/92)
+
+\tenpoint
+$$\\{cur\_r}=\cases{\\{character}(\\{lig\_stack}),&if $\\{lig\_stack}>
+ \\{null}$;\cr
+ \\{font\_bchar}[\\{cur\_font}],&otherwise;\cr}$$
+except when $\\{character}(\\{lig\_stack})=\\{font\_false\_bchar}
+ [\\{cur\_font}]$. Several additional global variables are needed.
+
+\bugonpage B438, line 13 from the bottom (3/15/92)
+
+\ninepoint\noindent\hskip10pt
+$\\{cur\_q}\gets\\{tail}$; \ $\\{cur\_l}\gets\\{character}(\\{lig\_stack})$;
+
+\bugonpage B507, line 6 of section 1241 (1/11/92)
+
+\ninepoint\noindent\hskip10pt
+\\{scan\_optional\_equals};\par\noindent\hskip10pt
+{\bf if\/} \\{set\_box\_allowed} {\bf then}
+$\\{scan\_box}(\\{box\_flag}+n)$\par\noindent\hskip10pt
+{\bf else begin} \\{print\_err}({\tt\char`\"Improper\]\char`\"});
+\ \\{print\_esc}({\tt\char`\"setbox\char`\"});\par\noindent\hskip20pt
+\\{help2}({\tt\char`\"Sorry,\]\char`\\setbox\]is\]not\]allowed\]after\]%
+\char`\\halign\]in\]a\]display,\char`\"})\par\noindent\hskip20pt
+({\tt\char`\"or\]between\]\char`\\accent\]%
+and\]an\]accented\]character.\char`\"});
+\ \\{error};\par\noindent\hskip20pt
+{\bf end};
+
+\bugonpage B511, new line inserted after line 3 (1/24/92)
+
+\ninepoint\noindent\hskip20pt
+\\{flushable\_string}: \\{str\_number};\quad
+ $\{\,$string not yet referenced$\,\}$
+
+\bugonpage B512, new line inserted after line 3 of section 1260 (1/24/92)
+
+\ninepoint\noindent\hskip10pt
+$\\{flushable\_string}\gets\\{str\_ptr}-1$;
+
+\bugonpage B512, the former line 6 of section 1260 (1/24/92)
+
+\ninepoint\noindent\hskip30pt
+{\bf begin if\/} $\\{cur\_name}=\\{flushable\_string}$ {\bf then}
+\par\noindent\hskip40pt{\bf begin} \\{flush\_string}; \
+ $\\{cur\_name}\gets\\{font\_name}[f]$; \ {\bf end};
+\par\noindent\hskip30pt{\bf if\/} $s>0$ {\bf then}
+
+\bugonpage B512, line 10 from the bottom (9/19/91)
+
+\ninepoint\noindent
+\\{set\_font}:\enspace{\bf begin}
+\\{print}({\tt\char`\"select\]font\]\char`\"}); \
+\\{slow\_print}(\\{font\_name}[\\{chr\_code}]);
+
+\bugonpage B514, line 9 (1/11/92)
+
+\ninepoint\noindent\hskip20pt
+$\\{set\_box\_allowed}\gets\\{false}$; \
+\\{prefixed\_command}; \
+$\\{set\_box\_allowed}\gets\\{true}$;
+
+\bugonpage B515, line 19 (9/19/91)
+
+\ninepoint\noindent\hskip10pt
+\\{slow\_print}($s$); \ \\{update\_terminal};
+
+\bugonpage B516, line 2 (9/19/91)
+
+\ninepoint\noindent\hskip10pt
+{\bf begin} \\{print\_err}({\tt\char`\"\char`\"}); \
+ \\{slow\_print}($s$);
+
+\bugonpage B531, lines 19 and 20 (9/19/91)
+
+\ninepoint\noindent\hskip10pt
+\\{print\_nl}({\tt\char`\"Beginning\]to\]dump\]on\]file\]\char`\"}; \
+\\{slow\_print}(\\{w\_make\_name\_string}(\\{fmt\_file})); \
+\\{flush\_string};\par\noindent\hskip10pt
+\\{print\_nl}({\tt\char`\"\char`\"}); \
+\\{slow\_print}(\\{format\_ident})
+
+\bugonpage B533, line 29 (9/19/91)
+
+\ninepoint\noindent\hskip30pt
+{\bf begin} \\{print\_nl}({\tt\char`\"Transcript\]written\]on\]\char`\"}); \
+\\{slow\_print}(\\{log\_name}); \
+\\{print\_char}({\tt\char`\".\char`\"});
+
+\bugonpage B538, line 13 (9/19/91)
+
+\ninepoint\noindent
+10:\enspace\\{slow\_print}($n$);
+
+\bugonpage B577, left column (12/23/91)
+
+\eightpoint\noindent[Add 798 to the index entries for `system dependencies'.]
+
+ % volume C
+\hsize=29pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+
+\bugonpage C262, line 15 (3/26/91)
+
+\ninepoint\noindent
+|string base_name, base_version; base_name="plain"; base_version="2.7";|
+
+\bugonpage C271, line 17 from the bottom (3/26/91)
+
+\ninepoint\noindent
+| currentpen_path shifted (z.t_) withpen penspeck enddef;|
+
+\bugonpage C347, Bront''e entry (1/29/91)
+
+\eightpoint\noindent
+[The accent was clobbered; her name should, of course, be Bront\"e.
+Fix the entries for D\"urer, M\"obius, and Stravinsky in the same way.]
+
+\bugonpage C348, left column (1/11/92)
+
+\eightpoint\indent
+compound statement, $\underline{155}$, 217.
+
+\bugonpage C353, right column (1/11/92)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt numeric}, 55, $\underline{56}$, {\it65}, 88.
+
+\bugonpage C354, miscellaneous entries in both columns (1/11/92)
+
+\eightpoint
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt openwindow}, $\underline{191}$--$\underline{193}$, 220, {\it277},
+ {\it312--313}.
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt or}, {\it65}, $\underline{170}$, 210, 237, 288--289.
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt pair}, 55, $\underline{56}$, 65.
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt path}, 55, $\underline{56}$, 171.
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt pen}, 55, $\underline{56}$, {\it65}, 170.
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt picture}, 55, $\underline{56}$, {\it114}.
+
+\bugonpage C356, right column (1/11/92)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt string}, 55, $\underline{56}$, 69.
+
+\bugonpage C357, right column (1/11/92)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt transform}, 55, $\underline{56}$, 57, 141--143, {\it160}, 266.
+
+ % Volume D
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\bugonpage D2, last line of section 2 (1/24/92)
+
+\ninepoint\noindent\hskip10pt
+{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
+{\tt This\]is\]METAFONT,\]Version\]2.71\char'23}\quad
+$\{\,$printed when \MF\ starts$\,\}$
+
+\bugonpage D102, line 15 from the bottom (11/1/91)
+
+\tenpoint\noindent
+Then
+$\\{eq\_type}(h(x))=\\{tag\_token}$ and $\\{equiv}(h(x))=p$,
+where $p$~is a two-word value
+node with\cutpar
+
+\bugonpage D188, lines 16 and 17 (1/24/92)
+
+\tenpoint\noindent
+errors. Our subroutines also obey the identity $t[a,b]+t[b,a]=a+b$.
+
+\bugonpage D190, new copy before bottom four lines (1/24/92)
+
+\ninepoint\noindent\hskip10pt
+{\bf if\/} $\\{x\_coord}(r)<\\{x\_coord}(\\{pp})$ {\bf then}
+ $\\{x\_coord}(r)\gets\\{x\_coord}(\\{pp})$\par\noindent\hskip10pt
+{\bf else if\/} $\\{x\_coord}(r)>\\{dest\_x}$ {\bf then}
+ $\\{x\_coord}(r)\gets\\{dest\_x}$;\par\noindent\hskip10pt
+{\bf if\/} $\\{left\_x}(r)>\\{x\_coord}(r)$ {\bf then}\par\noindent\hskip20pt
+{\bf begin} $\\{left\_x}(r)\gets\\{x\_coord}(r)$; \
+{\bf if\/} $\\{right\_x}(\\{pp})>\\{x\_coord}(r)$ {\bf then}
+$\\{right\_x}(\\{pp})\gets\\{x\_coord}(r)$; \ {\bf end};\par\noindent\hskip10pt
+{\bf if\/} $\\{right\_x}(r)<\\{x\_coord}(r)$ {\bf then}\par\noindent\hskip20pt
+{\bf begin} $\\{right\_x}(r)\gets\\{x\_coord}(r)$; \
+{\bf if\/} $\\{left\_x}(\\{qq})<\\{x\_coord}(r)$ {\bf then}
+$\\{left\_x}(\\{qq})\gets\\{x\_coord}(r)$; \ {\bf end};
+
+\bugonpage D191, new copy before bottom two lines of section 416 (1/24/92)
+
+\ninepoint\noindent\hskip10pt
+{\bf if\/} $\\{x\_coord}(s)<\\{x\_coord}(r)$ {\bf then}
+ $\\{x\_coord}(s)\gets\\{x\_coord}(r)$\par\noindent\hskip10pt
+{\bf else if\/} $\\{x\_coord}(s)>\\{dest\_x}$ {\bf then}
+ $\\{x\_coord}(s)\gets\\{dest\_x}$;\par\noindent\hskip10pt
+{\bf if\/} $\\{left\_x}(s)>\\{x\_coord}(s)$ {\bf then}\par\noindent\hskip20pt
+{\bf begin} $\\{left\_x}(s)\gets\\{x\_coord}(s)$; \
+{\bf if\/} $\\{right\_x}(r)>\\{x\_coord}(s)$ {\bf then}
+$\\{right\_x}(r)\gets\\{x\_coord}(s)$; \ {\bf end};\par\noindent\hskip10pt
+{\bf if\/} $\\{right\_x}(s)<\\{x\_coord}(s)$ {\bf then}\par\noindent\hskip20pt
+{\bf begin} $\\{right\_x}(s)\gets\\{x\_coord}(s)$; \
+{\bf if\/} $\\{left\_x}(\\{qq})<\\{x\_coord}(s)$ {\bf then}
+$\\{left\_x}(\\{qq})\gets\\{x\_coord}(s)$; \ {\bf end};
+
+\bugonpage D194, lines 4 and 5 (1/24/92)
+
+\tenpoint\noindent[Delete those two lines; I no longer believe that the
+assertion has been proved (although it might be true).]
+
+\bugonpage D194, lines 7--13 of section 424 (1/24/92)
+
+\ninepoint\noindent\hskip10pt
+{\bf if\/} $\\{y\_coord}(r)<\\{y\_coord}(p)$ {\bf then}
+ $\\{y\_coord}(r)\gets\\{y\_coord}(p)$\par\noindent\hskip10pt
+{\bf else if\/} $\\{y\_coord}(r)>\\{dest\_y}$ {\bf then}
+ $\\{y\_coord}(r)\gets\\{dest\_y}$;\par\noindent\hskip10pt
+{\bf if\/} $\\{x\_coord}(p)+\\{y\_coord}(r)>\\{dest\_x}+\\{dest\_y}$
+{\bf then} $\\{y\_coord}(r)\gets\\{dest\_x}+\\{dest\_y}-\\{x\_coord}(p)$;\par
+\noindent\hskip10pt
+{\bf if\/} $\\{left\_y}(r)>\\{y\_coord}(r)$ {\bf then}\par\noindent\hskip20pt
+{\bf begin} $\\{left\_y}(r)\gets\\{y\_coord}(r)$; \
+{\bf if\/} $\\{right\_y}(p)>\\{y\_coord}(r)$ {\bf then}
+$\\{right\_y}(p)\gets\\{y\_coord}(r)$; \ {\bf end};\par\noindent\hskip10pt
+{\bf if\/} $\\{right\_y}(r)<\\{y\_coord}(r)$ {\bf then}\par\noindent\hskip20pt
+{\bf begin} $\\{right\_y}(r)\gets\\{y\_coord}(r)$; \
+{\bf if\/} $\\{left\_y}(q)<\\{y\_coord}(r)$ {\bf then}
+$\\{left\_y}(q)\gets\\{y\_coord}(r)$; \ {\bf end};
+
+\bugonpage D194, lines 8--11 from the bottom (1/24/92)
+
+\ninepoint\noindent\hskip10pt
+{\bf if\/} $\\{right\_y}(r)<\\{y\_coord}(r)$ {\bf then}\par\noindent\hskip20pt
+{\bf begin} $\\{right\_y}(r)\gets\\{y\_coord}(r)$; \
+{\bf if\/} $\\{left\_y}(q)<\\{y\_coord}(r)$ {\bf then}
+$\\{left\_y}(q)\gets\\{y\_coord}(r)$; \ {\bf end};
+
+\bugonpage D195, lines 3--9 of section 425 (1/24/92)
+
+\ninepoint\noindent\hskip10pt
+{\bf if\/} $\\{y\_coord}(s)<\\{y\_coord}(r)$ {\bf then}
+ $\\{y\_coord}(s)\gets\\{y\_coord}(r)$\par\noindent\hskip10pt
+{\bf else if\/} $\\{y\_coord}(s)>\\{dest\_y}$ {\bf then}
+ $\\{y\_coord}(s)\gets\\{dest\_y}$;\par\noindent\hskip10pt
+{\bf if\/} $\\{x\_coord}(r)+\\{y\_coord}(s)>\\{dest\_x}+\\{dest\_y}$
+{\bf then} $\\{y\_coord}(s)\gets\\{dest\_x}+\\{dest\_y}-\\{x\_coord}(r)$;\par
+\noindent\hskip10pt
+{\bf if\/} $\\{left\_y}(s)>\\{y\_coord}(s)$ {\bf then}\par\noindent\hskip20pt
+{\bf begin} $\\{left\_y}(s)\gets\\{y\_coord}(s)$; \
+{\bf if\/} $\\{right\_y}(r)>\\{y\_coord}(s)$ {\bf then}
+$\\{right\_y}(r)\gets\\{y\_coord}(s)$; \ {\bf end};\par\noindent\hskip10pt
+{\bf if\/} $\\{right\_y}(s)<\\{y\_coord}(s)$ {\bf then}\par\noindent\hskip20pt
+{\bf begin} $\\{right\_y}(s)\gets\\{y\_coord}(s)$; \
+{\bf if\/} $\\{left\_y}(q)<\\{y\_coord}(s)$ {\bf then}
+$\\{left\_y}(q)\gets\\{y\_coord}(s)$; \ {\bf end};
+
+\bugonpage D195, lines 3--7 from the bottom if section 425 (1/24/92)
+
+\ninepoint\noindent\hskip10pt
+{\bf if\/} $\\{right\_y}(s)<\\{y\_coord}(s)$ {\bf then}\par\noindent\hskip20pt
+{\bf begin} $\\{right\_y}(s)\gets\\{y\_coord}(s)$; \
+{\bf if\/} $\\{left\_y}(q)<\\{y\_coord}(s)$ {\bf then}
+$\\{left\_y}(q)\gets\\{y\_coord}(s)$; \ {\bf end};
+
+\bugonpage D289, lines 9 and 10 (11/1/91)
+
+\ninepoint\noindent\hskip20pt
+$p\gets\\{dep\_list}(p)$; \ $r\gets\\{inf\_val}$;\par\noindent\hskip20pt
+{\bf repeat if\/} $\\{value}(\\{info}(p))\ge\\{value}(r)$ {\bf then}\par
+
+\bugonpage D486, line 18 (11/1/91)
+
+\tenpoint\noindent
+The \\{label\_loc}
+and \\{label\_char} arrays have been set up to record all the
+starting addresses; we have\cutpar
+
+ % volume E
+\hsize=29pc
+\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}}
+
+
+ \bye
+
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errata.six b/Master/texmf-doc/doc/english/knuth/errata/errata.six
new file mode 100644
index 00000000000..ad7444d8600
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata.six
@@ -0,0 +1,528 @@
+% Bugs (sigh) in Computers \& Typesetting
+
+\input manmac
+\font\sltt=cmsltt10
+\font\niness=cmss9
+\font\ninessi=cmssi9
+\proofmodefalse
+\raggedbottom
+\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
+
+\def\today{\number\day\
+ \ifcase\month\or
+ Jan\or Feb\or Mar\or Apr\or May\or Jun\or
+ Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi
+ \ \number\year}
+
+\def\cutpar{{\parfillskip=0pt\par}}
+
+\def\rhead{Bugs in {\tensl Computers \& Typesetting, 1990}}
+\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
+\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
+\newcount\nn
+\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
+\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
+
+\tenpoint
+\noindent This is a list of all corrections made to {\sl Computers \&
+Typesetting}, Volumes A,~C, and E\null, between 30 September 1989 (when
+the revisions for \TeX\ Version 3.0 and \MF\ Version 2.0 were made) and
+December 31, 1990.
+Corrections made to the softcover version of {\sl The \TeX book\/} are
+the same as corrections to Volume~A\null. Corrections to the softcover
+version of {\sl The \slMF\kern1ptbook\/} are the same as corrections
+to Volume~C\null. Some of the corrections below have already been made in
+reprintings of the books. Hundreds of changes, too many to list here,
+have been made to Volumes B~and~D because of the upgrades to \TeX\ and
+\MF\null. Readers who need up-to-date information on the \TeX\ and
+\MF\ programs should refer to the |WEB| source files until new
+printings of Volumes B~and~D are issued. \looseness=-1
+
+ % volume A
+
+\bugonpage A99, line 4 from the bottom (2/22/90)
+
+\ninepoint\indent
+to be chosen because there was no feasible
+way to keep total demerits small.
+
+\bugonpage A124, lines 18--21 (9/5/90)
+
+\ninepoint\noindent
+Floating insertions can be accommodated
+as a special case of split insertions, by making each floating topinsert
+start with a small penalty, and by having
+zero as the associated |\floatingpenalty|; non-floating insertions
+like footnotes are accommodated by associating larger penalties with
+split insertions (see Appendix~B).
+
+\bugonpage A137, lines 2 and 3 from the bottom (11/9/90)
+
+{\eightssi
+\rightline{and you shouldn't even be reading this manual,}
+\rightline{which is undoubtedly all English to you.}
+}
+
+\bugonpage A141, line 15 from the bottom (10/18/90)
+
+\tenpoint\noindent
+Thus if you type `|$1\over2$|' (in a text) you get $1\over2$, namely style
+$S$ over style~$S'$;\cutpar
+
+\bugonpage A156, line 2 (11/18/89)
+
+\ninepoint
+Commands like |\mathchardef\alpha="010B| are used in
+Appendix~B to define\cutpar
+
+\bugonpage A165, lines 2--3 (8/13/90)
+
+\ninepoint
+ Type the formula $\bf\bar x^{\rm T}Mx={\rm0}\iff x=0$,
+using as few keystrokes as possible.
+\ (The first `0' is roman, the second is bold. The superscript `T' is roman.)
+
+\bugonpage A171, lines 24--26 (3/13/90)
+
+\ninepoint\noindent
+formula produces a result exactly equivalent to
+`|\left(|\<subformula>|\right)|', when the \<subformula> doesn't end
+with Punct, except that the {delimiters} are forced to
+be of the |\big| size regardless of the height and depth of the subformula.
+
+\bugonpage A193, lines 16--18 (12/2/89)
+
+\ninepoint\noindent
+line if you insert
+`^|\noalign||{|^|\break||}|'
+after the |\cr| for that line. You can prohibit {\sl all\/} breaks
+in an |\eqalignno| if you set ^|\interdisplaylinepenalty||=10000|; or you
+can enclose the whole works in a ^|\vbox|:
+
+\bugonpage A233, bottom 9 lines, and top three on next page (12/2/89)
+
+\danger The |\+| macro in Appendix~B works
+by putting the \<text> for each column that's followed by~|&|
+into an hbox as follows:
+\begindisplay
+|\hbox to |\<column width>|{|\<text>|\hss}|
+\enddisplay
+The ^|\hss| means that the text is normally flush left, and that it can
+extend to the right of its box. Since |\hfill| is ``more infinite'' than
+|\hss| in its ability to stretch, it has the effect of right-justifying or
+centering as stated above. Note that |\hfill| doesn't shrink, but |\hss|
+does; if the text doesn't fit in its column, it will stick out at the right.
+You could cancel the shrinkability of |\hss| by adding ^|\hfilneg|; then
+an oversize text would produce an overfull box.
+You could also center some text by putting `|\hss|' before it and just
+`|&|' after it; in that case the text would be allowed to extend to the
+left and right of its column.
+ The last column of a |\+|~line (i.e., the column entry that is
+followed by |\cr|) is treated differently: The
+\<text> is simply put into an hbox with its natural~width.\looseness=-1
+
+\bugonpage A254, line 5 from the bottom (10/5/89)
+
+\ninepoint\noindent
+|\vsize| hasn't changed, and if all insertions have been
+held in place, the same page break\cutpar
+
+\bugonpage A286, lines 30--32 (3/13/90)
+
+\ninepoint\noindent
+reading and expanding this \cstok{par}
+token, \TeX\ will see the \<vertical command> token again. \ (The current
+meaning of the control sequence ^|\par| will be used; \cstok{par} might no
+longer stand for \TeX's |\par| primitive.)
+
+\bugonpage A290, lines 12--13 (3/24/90)
+
+\ninepoint\noindent
+simply a single Ord atom without subscripts or superscripts,
+or an Acc whose nucleus is an Ord, the
+enclosing braces are effectively removed.
+
+\bugonpage A317, line 17 (5/17/90)
+
+\ninepoint
+|\pretolerance=9999 \tolerance=9999 \parindent=0pt|
+
+\bugonpage A321, lines 16--17 (8/13/90)
+
+\ninepoint\noindent
+\hbox to\parindent{\bf\hss18.6.\enspace}\ignorespaces
+|$\bf\bar x^{\rm T}Mx={\rm0}\iff x=0$|. \ (If you typed a space between
+|\rm| and~|0|, you wasted a keystroke; but don't feel guilty about it.)
+
+\bugonpage A340, nonblank line 11 (3/13/90)
+
+\tenpoint\noindent
+|\topglue 1in % This makes an inch of blank space (1in=2.54cm).|
+
+\bugonpage A342, line 6 (3/13/90)
+
+\tenpoint\noindent
+|\topglue| but not |\hglue|. It does not
+illustrate |\raggedright| setting of para-\cutpar
+
+\bugonpage A346, lines 20--21 (12/3/89)
+
+\ninepoint\noindent
+streams used by ^|\read| and ^|\write|, to math
+^{families} used by ^|\fam|, to sets of hyphenation rules used by
+^|\language|, and to insertions (which require
+^|\box|, ^|\count|, ^|\dimen|, and ^|\skip| registers all having the
+same number).
+
+\bugonpage A346, line 20 from the bottom (12/3/89)
+
+\ninepoint\noindent
+manent value. These macros use registers
+|\count10| through |\count20| to hold the\cutpar
+
+\bugonpage A346, lines 8--13 from the bottom (12/3/89)
+
+\ninepoint\noindent
+number was allocated. The inside story of how allocation is actually performed
+should be irrelevant when the allocation macros are used at a higher level;
+you mustn't assume that |plain.tex| really does allocation in any
+particular way.
+\beginlines
+|\count10=22 % this counter allocates \count registers 23, 24, 25, ...|
+\endgroup
+
+\bugonpage A347, lines 2--5 (12/3/89)
+
+\ninepoint{\parindent=0pt
+|\count19=0 % this counter allocates language codes 1, 2, 3, ...|\parbreak
+|\count20=255 % this counter allocates insertions 254, 253, 252, ...|\parbreak
+|\countdef\insc@unt=20 % nickname for the insertion counter|\parbreak
+|\countdef\allocationnumber=21 % the most recent allocation|\parbreak
+|\countdef|^|\m@ne||=22 \m@ne=-1 % a handy constant|\par}
+
+\bugonpage A347, new line after former line 17 (12/3/89)
+
+\ninepoint\noindent
+|\outer\def|^|\newlanguage||{\alloc@9\language\chardef\@cclvi}|
+
+\bugonpage A352, new line before line 6 from the bottom (3/13/90)
+
+\ninepoint\noindent
+|\def\topglue{\nointerlineskip \vglue-\topskip \vglue} % for top of page|
+
+\bugonpage A355, line 8 from the bottom (12/3/89)
+
+\ninepoint\noindent
+| \noindent{\bf#1.\enspace}{\sl#2\par}%|
+
+\bugonpage A363, lines 8--9 from the bottom (12/8/89)
+
+{\ninepoint\parindent=0pt
+| \if@mid \dimen@=\ht0 \advance\dimen@ by\dp\z@ |%
+ |\advance\dimen@ by12\p@|\parbreak%
+| \advance\dimen@ by\pagetotal \advance\dimen@ by-\pageshrink|
+\par}
+
+\bugonpage A375, line 27 (10/30/89)
+
+\ninepoint\noindent
+depending on whether or not |\t|~contains
+an asterisk. \ (Do you see why?) \ And here's\cutpar
+
+\bugonpage A393, lines 3--5 from the bottom (12/3/89)
+
+\ninepoint
+|\hskip-.17em plus-3em minus.11em|\par
+|\vadjust{}\penalty10000|\par
+|\leaders\copy\dbox\hskip3.3\wd\dbox plus1fil minus.3\wd\dbox|
+
+\bugonpage A444, line 4 (3/13/90)
+
+\ninepoint\noindent
+Shift box~$x$ down by ${1\over2}\bigl(h(x)-d(x)\bigr)
+-a$, where $a=\sigma_{22}$, so that the operator character\cutpar
+
+\bugonpage A450, line 8 (12/3/89)
+
+\def\\#1{$_{\kern\scriptspace#1}$}
+\ninepoint\indent
+{\qquad\tt\\0h\\0e\\0n\\5a\\0t\\0 \\1n\\0a\\0 \\0n\\2a\\0t\\0
+ \\1t\\0i\\0o\\0 \\2i\\0o\\0 \\0o\\2n\\0}
+
+\bugonpage A450, line 14 (12/3/89)
+
+\ninepoint
+{\tt.\\0h\\0y$_3$p\\0h\\0e\\2n\\5a\\4t\\2i\\0o\\2n\\0.}
+
+\bugonpage A450, lines 19 and 20 (12/3/89)
+
+\ninepoint\vskip-10pt
+\begindisplay
+\tt\\0o\\2n\\0
+\\0o\\0n\\1c\\0
+\\1c\\0a\\0
+\\1n\\0a\\0
+\\0n\\2a\\0t\\0
+\\1t\\0i\\0o\\0
+\\2i\\0o\\0
+\\0o\\2n\\0
+\enddisplay
+and this yields `{\tt\\0c\\0o\\2n\\1c\\0a\\0t\\0e\\1n\\2a\\1t\\2i\\0o\\2n\\0}',
+i.e., `|con-cate-na-tion|'.
+
+\bugonpage A455, last lines before the quotes (11/30/89)
+
+\ninepoint\noindent
+sit yourself (even in restricted horizontal mode) by saying
+^|\setlanguage|\<number>;\break
+ this changes the current language but it
+does not change |\language|. Each what-\break
+sit records the current
+|\lefthyphenmin| and |\righthyphenmin|.
+
+\bugonpage A467, right column (12/3/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\hfilneg|, 72, 100, 233, 283, 285, 290, 397.
+
+\bugonpage A468, right column (12/2/89)
+
+\eightpoint
+|\interdisplaylinepenalty|, {\it193}, 349, 362.
+
+\bugonpage A469, left column (12/3/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\language| (hyphenation method), 273, 346, $\underline{455}$.
+
+\bugonpage A469, right column (10/30/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\lefthyphenmin|, 273, {\it364}, $\underline{454}$, 455.
+
+\bugonpage A472, left column (12/3/89)
+
+\eightpoint
+|\newlanguage|, 346, $\underline{347}$.
+
+\bugonpage A476, left column (10/30/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\righthyphenmin|, 273, {\it364}, $\underline{454}$, 455.
+
+\bugonpage A479, new entry (3/13/90)
+
+\eightpoint
+|\topglue|, {\it340}, $\underline{352}$.
+
+\bugonpage A480, right column (3/13/90)
+
+\eightpoint
+|\vglue|, $\underline{352}$, {\it408}.
+
+\bugonpage A483, the Providence lines (10/8/89)
+
+\noindent[Change the first one to
+\begintt
+Providence RI 02940\kern.05em-9506, USA.
+\endtt
+Then the second one will be
+\begindisplay
+Providence RI 02940\kern.05em-9506, USA.
+\enddisplay
+The second line will also appear on page C361.]
+
+ % volume B
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+
+ % volume C
+\hsize=29pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+
+\bugonpage C11, replacement for second quotation at bottom of page (9/27/90)
+
+\begingroup
+ \eightpoint \let\tt=\ninett
+ \baselineskip 10pt
+ \parfillskip \z@
+ \interlinepenalty 10000
+ \leftskip \z@ plus 40pc minus \parindent
+ \let\rm=\eightss \let\sl=\eightssi
+ \everypar{\sl}
+ \def\par{\ifhmode\/\endgraf\fi}\obeylines
+To anyone who has lived in a modern American city (except Boston)
+at least one of the underlying ideas of ^{Descartes}' analytic geometry
+will seem ridiculously evident. Yet, as remarked,
+it took mathematicians all of two thousand years
+to arrive at this simple thing.
+\author ERIC TEMPLE ^{BELL}, {\sl Mathematics: Queen and Servant of %
+ Science\/} (1951) % p123
+
+\endgroup
+
+\bugonpage C220, top line (3/13/90)
+
+\ninepoint\noindent
+modes you get into by hitting
+`|S|', `|R|', or `|Q|', respectively, in response to error messages\cutpar
+
+\bugonpage C252, line 16 (3/13/90)
+
+\ninepoint\indent
+| for i:=1 upto n_windows: display blankpicture inwindow i; endfor|
+
+\bugonpage C262, lines 19--21 (11/9/90)
+
+\ninepoint\noindent
+for commonly occurring idioms.
+For example, `{\bf stop} |"hello"|' displays `|hello|' on the terminal and waits
+until \<return> is typed.
+\beginlines
+|def |^|upto|| = step 1 until enddef; def |^|downto|| = step -1 until enddef;|
+\endgroup
+
+\bugonpage C264, lines 4--6 from the bottom (3/24/90)
+
+\ninepoint\noindent
+|vardef |^|counterclockwise|| primary c =|\par\noindent
+| if turningcheck>0:|\par\noindent
+| interim |^|autorounding||:=0;|\par\noindent
+| if |^|turningnumber|| c <= 0: reverse fi fi c enddef;|
+
+\bugonpage C306, line 6 (3/13/90)
+
+\ninepoint\noindent
+| ligtable "'": "'" =: oct"042", % close quotes|
+
+\bugonpage C309, second line from bottom (11/18/89)
+
+\ninepoint\noindent
+| define_whole_vertical_blacker_pixels(vair,slab,| $\cdots$ |);|
+
+\bugonpage C315, line 9 from the bottom (1/2/90)
+
+\ninepoint\noindent
+units of printer's points):
+
+\bugonpage C329, line 25 (12/29/90)
+
+\ninepoint\noindent
+which can be used to specify a nonstandard file area
+or directory name for the gray\cutpar
+
+\bugonpage C337, line 4 from the bottom (1/7/90)
+
+\ninepoint\noindent
+|\def\startfont{\font\testfont=\fontname \spaceskip=0pt|
+
+\bugonpage C347, left column (9/27/90)
+
+\eightpoint\noindent
+Bell, Eric Temple, 11.
+
+\bugonpage C349, left column (9/27/90)
+
+\eightpoint\noindent
+Descartes, Ren\'e, 6, 11, 19.
+
+\bugonpage C356, right column (9/27/90)
+
+\eightpoint\noindent
+[remove the entry for Rex Stout.]
+
+\bugonpage C358, right column (9/27/90)
+
+\eightpoint\noindent
+[remove the entry for Nero Wolfe.]
+
+ % Volume D
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+ % volume E
+\hsize=29pc
+\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}}
+
+\bugonpage Exiii, replacement for last four lines (4/30/90)
+
+\textindent{\bull}``AMS Euler---A new typeface for mathematics''
+ by Donald~E. Knuth
+and Hermann Zapf, {\sl Scholarly Publishing\/ \bf21} (1989), 131--157.
+\ {\it The story of a design project that helps bridge the gulf between
+mathematics and art.}
+
+\smallskip
+\textindent{\bull}``Meta-Marks:
+ Preliminary studies for a Pandora's Box of shapes''
+by Neenie Billawala, Stanford Computer Science report 1259 (Stanford,
+California, July 1989), 132~pp.
+\ {\it Lavishly illus\-trated studies in parameter variation,
+leading to the design of a new typeface called Pandora.}
+
+
+
+\bugonpage E325, line 13 (3/13/90)
+
+\ninepoint\noindent
+{\bf if} \\{serifs}: $x_{3r}=\max(x_{1r},{\rm hround}(x_1+.5\\{dot\_diam}
+ -.2\\{jut})-.5\\{tiny})$\par\noindent
+{\bf else}: $x_3=x_1-.5$ {\bf fi};
+
+\bugonpage E483, line 4 (3/13/90)
+
+\ninepoint
+\rightline{\% Character codes \oct{000}--\oct{100} and \oct{133}--\oct{177}
+ are generated.}
+
+\bugonpage E544, line 5 (3/13/90)
+
+\ninepoint\noindent
+\hskip 3em\vdots\hskip2em\raise2pt\hbox{(the rest of the
+ program for `$\gamma$' in |greekl| comes here)}
+
+\bugonpage E557, line 9 (3/13/90)
+
+\ninepoint
+\rightline{\sl`Nevermore---Ah nevermore.'\thinspace''}
+
+\bugonpage E558, line 21 (3/13/90)
+
+\eightpoint\noindent
+|Clasp a rare and radiant maiden whom the angels name Lenore."|
+
+\bugonpage E570, lines 27--28 look better with proper skewchars (3/13/90)
+
+\begingroup
+\tenpoint\bf
+\textfont0=\tenbf \scriptfont0=\sevenbf
+\font\boldi=cmmib10 \font\boldsy=cmbsy10
+\skewchar\boldi='177 \skewchar\boldsy='60
+\textfont1=\boldi
+\textfont2=\boldsy
+\noindent Here's some bold 10-point math:
+${\hat A}^\Gamma_0
++{\check B}^\Delta_1
+-{\tilde C}^\Theta_2
+\times{\acute D}^\Lambda_3
+/{\grave E}^\Xi_4
+\oplus{\dot F}^\Pi_5
+\ominus{\ddot G}^\Sigma_6
+\otimes{\breve H}^\Phi_7
+\oslash{\bar I}^\Psi_8
+\odot{\vec J}^{\,\Omega}_9$.
+\endgroup
+
+ \bye
+
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errata.ten b/Master/texmf-doc/doc/english/knuth/errata/errata.ten
new file mode 100644
index 00000000000..85cdca31e09
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata.ten
@@ -0,0 +1,1289 @@
+% Bugs (sigh) in Computers \& Typesetting
+
+\input manmac
+\def\curl{\mathop{\rm curl}}
+\def\cycle{{\rm cycle}}\indent
+\def\dashto{\mathrel{\hbox{-\thinspace-\kern-.05em}}}
+\font\sltt=cmsltt10
+\font\niness=cmss9
+\font\ninessi=cmssi9
+\proofmodefalse
+\raggedbottom
+\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
+
+\def\today{\number\day\
+ \ifcase\month\or
+ Jan\or Feb\or Mar\or Apr\or May\or Jun\or
+ Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi
+ \ \number\year}
+
+\def\cutpar{{\parfillskip=0pt\par}}
+
+\def\rhead{Bugs in {\tensl Computers \& Typesetting, 2000}}
+\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
+\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
+\newcount\nn
+\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
+\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
+
+\tenpoint
+\noindent This is a list of all substantial corrections made to {\sl Computers
+\& Typesetting\/} from the mid-1990s until the Millennium edition was
+published at the end of the year 2000.
+Corrections made to the softcover version of {\sl The \TeX book\/} are
+the same as corrections to Volume~A\null. Corrections to the softcover
+version of {\sl The \slMF\kern1ptbook\/} are the same as corrections
+to Volume~C\null. Changes to the mini-indexes
+and master indexes of Volumes B, D, and~E are not shown here unless they are
+not obviously derivable from what has been shown.
+\looseness=-1
+
+ % volume A
+
+\bugonpage A3, line 14 {(in certain printings only)} (9/6/00)
+
+\tenpoint\noindent
+that
+looks like {\tt\char'15} or {\tt\char'23}.
+
+\bugonpage A8, lines 14 and 15 (9/6/00)
+
+\tenpoint\noindent
+that is not to be ignored. Notice that |\|\] is a control
+sequence of the second kind, namely a control symbol, since there is a
+single nonletter (\]) following\cutpar
+
+\bugonpage A43, line $-17$ (8/4/98)
+
+\tenpoint\noindent
+into your manuscript, if the |b|-key on your keyboard is broken. \
+(An optional\cutpar
+
+\bugonpage A88, lines 14, 16, 18, and 21 (8/12/00)
+
+\tenpoint\noindent
+[Insert two blank spaces between `{\tt blank space}' and `{\tt\char`\}}']
+
+\bugonpage A96, lines 9 and 10 (8/6/98)
+
+\ninepoint\indent
+Before 1998, some ^{German} words changed their spelling
+when split between lines. For example, `backen' became `bak-ken'
+and `Bettuch' sometimes became `Bett-\cutpar
+
+\bugonpage A107, line 2 (8/5/98)
+
+\ninepoint
+\line{\indent\spaceskip=.4em minus.35em
+ually, you might be tempted to set
+|\tolerance=10000|; this allows arbitrarily bad}
+
+\bugonpage A115, line $-19$ (8/5/98)
+
+\ninepoint\noindent
+If there's no room for such an insertion on this page, \TeX\
+will insert it at the top of\cutpar
+
+\bugonpage A119, line 15 (8/5/98)
+
+\ninepoint\noindent
+of\/ |\dimen3|, assuming that |\dimen3| is positive.
+
+\bugonpage A182, middle line of the displayed commutative diagram (12/3/99)
+
+\ninepoint
+\def\mapright#1{\smash{
+ \mathop{\longrightarrow}\limits^{#1}}}
+$$\matrix{
+ 0&\mapright{}&{\cal O}_C&\mapright\pi&
+ \pi_*{\cal O}_D&\mapright\delta&
+ R^1f_*{\cal O}_V(-D)&\mapright{}&0\cr}$$
+
+\bugonpage A233, line $-2$ (8/5/98)
+
+\ninepoint\noindent
+could avoid this by adding |\hskip| |0pt| |minus-1fil|; then
+an oversize text would\cutpar
+
+\bugonpage A277, line 1 (8/5/98)
+
+\ninepoint\indent
+\<code assignment>\is\<codename>\<8-bit number>\<equals>\<number>
+
+\bugonpage A277, line $-11$ (8/5/98)
+
+\ninepoint\noindent
+[Move this line, which defines \<at clause>, up to the top of the page.]
+
+\bugonpage A289, line 24 (2/3/97)
+
+\ninepoint\indent
+\<math field>\is\<filler>\<math symbol>\alt\<filler>|{|\<math mode material>|}|
+
+\bugonpage A309, line 3 (8/12/97)
+
+\ninepoint
+\ansno8.4:
+|$|$_{3}$ |x|$_{11}$ |^|$_7$ |2|$_{12}$ |$|$_{3}$ |~|$_{13}$ \]$_{10}$
+\cstok{TeX} |b|$_{11}$ |v|$_{11}$ \]$_{10}$. The final space comes from
+the\cutpar
+
+\bugonpage A313, line 24 (9/19/00)
+
+\ninepoint\noindent
+stands for `|\par\vfill...|', so the next three commands are
+
+\bugonpage A313, line 27 (9/19/00)
+
+\ninepoint\indent
+|{vertical mode: \par}|
+
+\bugonpage A318, lines 12 and 13 (8/5/98)
+
+\ninepoint\noindent\hbox to\parindent{\hfil\bf15.8.\enspace}%
+|\advance\dimen2 by\ifnum\dimen2<0 -\fi.5\dimen3|\parbreak
+|\divide\dimen2 by\dimen3 \multiply\dimen2 by\dimen3|
+
+\bugonpage A325, line 22 (12/3/99)
+
+\ninepoint
+| 0&\mapright{}&{\cal O}_C&\mapright\pi&|
+
+\bugonpage A337, line 3 from the bottom (9/6/00)
+
+\rightline{\eightss DONALD E. KNUTH, {\eightssi The \TeX book\/} (1984)}
+
+\bugonpage A348, lines 14--16 (8/6/98)
+
+\ninepoint\noindent
+| \def\@if#1{true}{\let#1=\iftrue}%|\par\noindent
+| \expandafter\expandafter\expandafter|\par\noindent
+| \def\@if#1{false}{\let#1=\iffalse}%|\par\noindent
+
+\bugonpage A356, line 21 (8/6/98)
+
+\ninepoint\noindent
+|\def\AA{\leavevmode\setbox0=\hbox{!}\dimen@=\ht0 \advance\dimen@ by-1ex|
+
+\bugonpage A356, lines 9--21 from the bottom (8/6/98)
+
+\ninepoint
+{\parindent=0pt
+|\def\S{\mathhexbox278} \def\P{\mathhexbox27B} \def\Orb{\mathhexbox20D}|\par
+\smallskip
+|\def\oalign#1{\leavevmode\vtop{\baselineskip0pt \lineskip.25ex|\par
+| \ialign{##\crcr#1\crcr}}} \def\o@lign{\lineskiplimit=0pt \oalign}|\par
+|\def\ooalign{\lineskiplimit=-\maxdimen \oalign} % chars over each other|\par
+|{\catcode`p=12 \catcode`t=12 \gdef\\#1pt{#1}} \let\getf@ctor=\\|\par
+|\def\sh@ft#1{\dimen@=#1 \kern\expandafter\getf@ctor\the\fontdimen1\font|\par
+| \dimen@} % kern by #1 times the current slant|\par
+|\def\d#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{-1ex}.\hidewidth}}}|\par
+|\def\b#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{-3ex}%|\par
+| \vbox to.2ex{\hbox{\char'26}\vss}\hidewidth}}}|\par
+|\def\c#1{{\setbox0=\hbox{#1}\ifdim\ht0=1ex \accent'30 #1%|\par
+| \else\ooalign{\unhbox0\crcr\hidewidth\char'30\hidewidth}\fi}}|\par
+|\def\copyright{{\ooalign{\hfil\raise.07ex\hbox{c}\hfil\crcr\Orb}}}|\par
+}
+
+\bugonpage A364, line 9 (8/9/98)
+
+\ninepoint\noindent
+|\def\makefootline{\baselineskip=24pt \lineskiplimit=0pt|\par\noindent
+| \line{\the\footline}}|
+
+
+\bugonpage A364, line 4 from the bottom (8/6/98)
+
+\ninepoint\noindent
+|\def\fmtversion{3.1415926} % identifies the current format|
+
+\bugonpage A447, bottom line (6/3/98)
+
+\rightline{\eightss--- JOHN SMITH, {\eightssi The Printer's Grammar\/}\enspace
+ (1755)}
+
+\bugonpage A450, lines 11--13 (4/12/98)
+
+\def\\#1{$_{\kern\scriptspace#1}$}%
+\tenpoint\noindent
+between `|e|' and `|n|' there are five relevant values
+in this case (2~from {\tt\\0h\\0e\\2n\\0},
+0~from {\tt\\0h\\0e\\0n\\0a\\4},
+0~from {\tt\\0h\\0e\\0n\\5a\\0t\\0},
+1~from {\tt\\1n\\0a\\0},
+and 0~from {\tt\\0n\\2a\\0t\\0}); the maximum of these is~2.
+The result of all the maximizations is
+
+\bugonpage A453, line 6 (8/5/98)
+
+\ninepoint\noindent
+tion dictionary, except that plain \TeX\ blocks hyphens after the
+very first letter or be-\cutpar
+
+\bugonpage A458, left column (9/6/00)
+
+\eightpoint
+\leavevmode{\tt\rlap<\char`\_}, 45, 135, 368--369; {\sl see also\/} |\le|.\par
+\leavevmode{\tt\rlap/=}, 45, 135, 368--369; {\sl see also\/} |\ne|.\par
+\leavevmode{\tt\rlap>\char`\_}, 45, 135, 368--369; {\sl see also\/} |\ge|.
+
+\bugonpage A458, right column (7/5/99)
+
+\eightpoint
+{\tt\char'13} and {\tt\char'14}, 135, 343, 368--369, 429;\par
+al-Khw\^arizm\^\i, abu `Abd All\^ah Mu\d{h}ammad ibn M\^us\^a, 53.
+
+\bugonpage A464, right column (8/6/98)
+
+\eightpoint
+\newbox\astbox \setbox\astbox=\hbox to0pt{\hss\lower1pt\hbox{*}}
+\def\prim#1{\par\indent\copy\astbox{\tt\char`\\#1}}
+\prim{edef}, {\it215--216}, 275, {\it328}, {\it373--374}.
+
+\bugonpage A466, right column (8/8/98)
+
+\eightpoint
+|\getfactor|, {\it356}, $\underline{375}$, {\it398}.
+
+\bugonpage A467, right column (8/5/98)
+
+\eightpoint
+\prim{hfilneg}, 72, 100, 283, 285, 290, 397.
+
+\bugonpage A469, left column (8/5/98)
+
+\eightpoint
+italic type, 13--14, 100, 127, 165, 409, 428, 430.
+
+\bugonpage A469--A477, passim (5/13/98)
+
+\eightpoint\noindent
+Add page 272 to the index entries for |\lastskip|, |\pagedepth|,
+|\pagefilllstretch|,\hfil\break |\pagefillstretch|, |\pagefilstretch|,
+|\pagegoal|, |\pageshrink|, |\pagestretch|, |\pagetotal|,\hfil\break
+|\parshape|, |\prevdepth|, and |\spacefactor|.\par
+\smallskip\noindent Also change `369' to `370' in the index entries for
+|\lbrack|, |\lq|, |\rbrack|, |\rq|, |\sb|, and |\sp|.\par
+\smallskip\noindent Also change `Luckombe, Philip' to `Smith, John'.\par
+
+\bugonpage A472, right column (8/6/98)
+
+\eightpoint
+\prim{noexpand}, $\underline{209}$, $\underline{213}$, 215, 216,
+ {\it377}, {\it424}.
+
+\bugonpage A473, left column (8/6/98)
+
+\eightpoint
+|\Orb| ( \Orb\ ), $\underline{356}$.
+
+ % volume B
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\bugonpage Bix, line 16 (1/16/00)
+
+\tenpoint\textindent{\bull}``Word hy-phen-a-tion by com-put-er''
+by Franklin Mark Liang, Stan-\cutpar
+
+\bugonpage Bxiv, line 13 (4/19/96)
+
+\tenpoint\noindent preprocessor converts these into numeric constants that are
+256 or more. This\cutpar
+
+\bugonpage Bxiv, line $-1$ (4/19/96)
+
+\ninepoint\noindent This file contains one line per string, starting with
+string number 256, then number 257,\cutpar
+
+\bugonpage Bxv, lines 10 and 11 (4/19/96)
+
+\ninepoint\noindent
+In this case, occurrences of |""| in the |WEB| program will be replaced by
+256; occurrences of |"This longer string"| will be replaced by 257.
+The symbol |@$| stands for the numeric\cutpar
+
+\hsize=35pc
+\bugonpage B2, line $-10$ (3/8/95)
+
+\def\RQ/{{\char'23}} % right quote in a string
+\ninepoint\noindent\quad
+{\bf define} $\\{banner}\equiv\hbox{\tt\RQ/This\]is\]TeX,\]%
+ Version\]3.14159\RQ/}$\quad$\{\,$printed when \TeX\ starts$\,\}$
+
+\bugonpage B169, line 13 (9/22/95)
+
+\tenpoint\noindent
+something in a ``muskip'' register, or to one of the
+three parameters \hbox{\tt\char`\\thinmuskip},
+\hbox{\tt\char`\\medmuskip},\cutpar
+
+\bugonpage B221, line 9 (3/4/95)
+
+\ninepoint\noindent
+\quad{\bf define} $\\{non\_address}=0$\quad
+$\{\,$a spurious \\{bchar\_label}$\,\}$
+
+\bugonpage B221, line 17 (3/4/95)
+
+\ninepoint\noindent
+\\{font\_params}: {\bf array}[\\{internal\_font\_number}] {\bf of}
+ \\{font\_index};\quad$\{\,$how many font parameters are present$\,\}$
+
+\bugonpage B256, insert new line 12 before the bottom (3/7/95)
+
+\ninepoint\noindent\qquad
+\\{glue\_temp}: \\{real};\quad $\{\,$glue value before rounding$\,\}$
+
+\bugonpage B258, line 11 before the bottom becomes four lines (3/7/95)
+
+\ninepoint\noindent
+{\tenbf 625.}\quad{\bf define} $\\{billion}\equiv
+ \\{float\_constant}(1000000000)$\par\noindent
+{\bf define} $\\{vet\_glue}(\hbox{\tt\char`\#})\equiv
+ \\{glue\_temp}\gets\hbox{\tt\char`\#}$;\par\noindent
+\qquad{\bf if\/} $\\{glue\_temp}>\\{billion}$
+ {\bf then} $\\{glue\_temp}\gets\\{billion}$\par\noindent
+\qquad{\bf else if\/} $\\{glue\_temp}<-\\{billion}$
+ {\bf then} $\\{glue\_temp}\gets-\\{billion}$\smallskip\noindent
+$\langle\,$Move right or output leaders{\sevenrm\kern.5em625}$\,\rangle\equiv$
+
+\bugonpage B258, lines 3--6 from the bottom (3/7/95)
+
+\ninepoint\noindent
+\qquad\qquad{\bf begin} $\\{vet\_glue}(\\{float}(\\{glue\_set}
+ (\\{this\_box}))*\\{stretch}(g))$;\par\noindent
+\qquad\qquad$\\{rule\_wd}\gets\\{rule\_wd}+
+ \\{round}(\\{glue\_temp})$;\par\noindent
+\qquad\qquad{\bf end};\par\noindent
+\qquad\quad{\bf end}\par\noindent
+\qquad{\bf else if\/} $\\{shrink\_order}(g)=\\{g\_order}$
+ {\bf then}\par\noindent
+\qquad\quad{\bf begin} $\\{vet\_glue}(\\{float}(\\{glue\_set}
+ (\\{this\_box}))*\\{shrink}(g))$;\par\noindent
+\qquad\quad$\\{rule\_wd}\gets\\{rule\_wd}-\\{round}(\\{glue\_temp})$;
+
+\bugonpage B260, line 13 from the bottom (6/26/93)
+
+\ninepoint
+\noindent\hskip10pt
+$\\{doing\_leaders}\gets\\{outer\_doing\_leaders}$; \
+$\\{dvi\_v}\gets\\{save\_v}$; \
+$\\{dvi\_h}\gets\\{save\_h}$; \
+$\\{cur\_v}\gets\\{base\_line}$;
+
+\bugonpage B261, insert new line after line 7 (3/7/95)
+
+\ninepoint\noindent\qquad
+\\{glue\_temp}: \\{real};\quad $\{\,$glue value before rounding$\,\}$
+
+\bugonpage B262, lines 3--6 from the bottom (3/7/95)
+
+\ninepoint\noindent
+\qquad\qquad{\bf begin} $\\{vet\_glue}(\\{float}(\\{glue\_set}
+ (\\{this\_box}))*\\{stretch}(g))$;\par\noindent
+\qquad\qquad$\\{rule\_ht}\gets\\{rule\_ht}+
+ \\{round}(\\{glue\_temp})$;\par\noindent
+\qquad\qquad{\bf end};\par\noindent
+\qquad\quad{\bf end}\par\noindent
+\qquad{\bf else if\/} $\\{shrink\_order}(g)=\\{g\_order}$
+ {\bf then}\par\noindent
+\qquad\quad{\bf begin} $\\{vet\_glue}(\\{float}(\\{glue\_set}
+ (\\{this\_box}))*\\{shrink}(g))$;\par\noindent
+\qquad\quad$\\{rule\_ht}\gets\\{rule\_ht}-\\{round}(\\{glue\_temp})$;
+
+\bugonpage B264, line 22 (6/26/93)
+
+\ninepoint
+\noindent\hskip10pt
+$\\{doing\_leaders}\gets\\{outer\_doing\_leaders}$; \
+$\\{dvi\_v}\gets\\{save\_v}$; \
+$\\{dvi\_h}\gets\\{save\_h}$; \
+$\\{cur\_h}\gets\\{left\_edge}$;
+
+\bugonpage B297, line 11 (3/7/95)
+
+\ninepoint\noindent
+\qquad $\\{width}(p)\gets\\{mu\_mult}(\\{width}(p))$; \
+ $\\{subtype}(p)\gets\\{explicit}$;
+
+\bugonpage B309, line 7 (9/22/95)
+
+\ninepoint\noindent
+\qquad {\bf if} $\\{cur\_style}<\\{text\_style}$ {\bf then}
+ \quad$\{\,$display style$\,\}$
+
+\bugonpage B356, line $-5$ (3/4/95)
+
+\tenpoint\noindent
+$\\{hang\_after}=1$, and $\\{hang\_indent}=0$.
+Note that if $\\{hang\_indent}=0$, the value of $\\{hang\_after}$ is\cutpar
+
+\bugonpage B388, bottom line (3/4/95)
+
+\ninepoint\noindent
+\quad {\bf if\/} $\\{bchar\_label}[\\{hf}]\ne\\{non\_address}$ {\bf then}\quad
+ $\{\,$put left boundary at beginning of new line$\,\}$
+
+\bugonpage B406, line 10 (5/1/98)
+
+\ninepoint\noindent
+\qquad$q\gets p$;\quad$\{\,$now node $q$ represents $p_1\ldots p_{l-1}\,\}$
+
+\bugonpage B503, line 12 (3/4/95)
+
+\tenpoint\noindent
+of the following procedure. (Exception: The tabskip
+glue isn't trapped while preambles are being scanned.)
+
+\bugonpage B529, line 12 (3/4/95)
+
+\ninepoint\noindent\quad
+\\{undump}(0)($\\{fmem\_ptr}-1$)(\\{bchar\_label}[$k$]);\par\noindent\quad
+\\{undump}(\\{min\_quarterword})(\\{non\_char})(\\{font\_bchar}[$k$]);
+
+\bugonpage B531, line 2 (11/23/98)
+
+\tenpoint\noindent
+from appearing again.
+
+\bugonpage B531, line 14 (11/23/98)
+
+\ninepoint\noindent
+\quad \\{print\_int}(\\{year}); \ \\{print\_char}(|"."|); \
+ \\{print\_int}(\\{month}); \ \\{print\_char}(|"."|); \
+ \\{print\_int}(\\{day});
+
+\bugonpage B534, insert new material between lines $-16$ and $-15$ (3/20/95)
+
+\ninepoint\noindent
+\quad {\bf while} $\\{input\_ptr}>0$ {\bf do}\par\noindent
+\qquad {\bf if\/} $\\{state}=\\{token\_list}$ {\bf then} \\{end\_token\_list}
+ {\bf else} \\{end\_file\_reading};
+
+\bugonpage B534, line $-2$ (3/20/95)
+
+\ninepoint\noindent
+\qquad $\\{temp\_ptr}\gets\\{cond\_ptr}$; \
+ $\\{cond\_ptr}\gets\\{link}(\\{cond\_ptr})$; \
+ $\\{free\_node}(\\{temp\_ptr},\\{if\_node\_size})$;
+
+\bugonpage B535, line 9 (3/20/95)
+
+\ninepoint\noindent
+\qquad {\bf begin init for} $c\gets\\{top\_mark\_code}$ {\bf to}
+ \\{split\_bot\_mark\_code} {\bf do}\par\noindent
+\qquad\qquad {\bf if\/} $\\{cur\_mark}[c]\ne\\{null}$ {\bf then}
+ $\\{delete\_token\_ref}(\\{cur\_mark}[c])$;\par\noindent
+\qquad\quad \\{store\_fmt\_file}; \ {\bf return}; \ {\bf tini}
+
+\bugonpage B581, Zabala entry (8/19/00)
+
+\eightpoint\noindent
+Zabala Salelles, Ignacio Andr\'es:\quad 2.
+
+ % volume C
+\hsize=29pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+
+\bugonpage C17, lines 12 and 13 (9/6/00)
+
+\tenpoint
+{\bf draw} $z_4\{\curl0\}\to z_2\{z_3-z_4\}\to\{\curl0\}\,z_3$;\par
+{\bf draw} $z_4\{\curl2\}\to z_2\{z_3-z_4\}\to\{\curl2\}\,z_3$
+
+\bugonpage C23, line $-7$ (8/5/98)
+
+\ninepoint\indent
+$x_1=ss=w-x_5$;\quad$y_3-y_1=\\{ygap}$
+
+\bugonpage C69, line 17 (9/6/00)
+
+\ninepoint\noindent
+|"abra"|, while
+$p_1$ is `$(0,0)\to(3,3)$' and $p_2$ is `$(0,0)\to(3,3)\to\cycle$'.
+
+\bugonpage C94, line $-11$ (3/4/95)
+
+\ninepoint\noindent
+put
+are assumed to have square pixels. But if, for
+example, the {\bf mode\_def} sets\cutpar
+
+\bugonpage C107, line 15 (3/4/95)
+
+\ninepoint
+{\bf labels}$(1a,1b,2a,2b,3a,3b,4a,4b,\,${\bf range} 1 {\bf thru} 36);
+ \ {\bf endchar\/};
+
+\bugonpage C123, lines 21 and 22 (12/19/95)
+
+\chardef\circc=34 % rotated quartercircle
+\def\chapno{ 14} \exno=2 % for exercise 14.3!
+\dangerexercise
+Use a {\sl rotated\/} quarter-circle to produce `{\manual\circc}\kern1pt'
+in font position `{\tt c}'.
+
+\bugonpage C129, lines 6--17 (8/5/98)
+
+\ninepoint
+\beginsyntax
+<path primary>\is<pair primary>\alt<path variable>
+ \alt[(]<path expression>[)]
+ \alt[reverse]<path primary>
+ \alt[subpath]<pair expression>[of]<path primary>
+<path secondary>\is<pair secondary>\alt<path primary>
+ \alt<path secondary><transformer>
+<path tertiary>\is<pair tertiary>\alt<path secondary>
+<path expression>\is<pair expression>\alt<path tertiary>
+ \alt<path subexpression><direction specifier>
+ \alt<path subexpression><path join>[cycle]
+<path subexpression>\is<path expression>
+ \alt<path subexpression><path join><path tertiary>
+\endsyntax
+
+\bugonpage C134, line 8 (3/4/95)
+
+\ninepoint\noindent
+of~$p$; if $t\le 0$, precontrol~$t$ of~$p$ is~$z_0$.
+In particular, if $t$ is an integer, postcontrol~$t$ of~$p$\cutpar
+
+\bugonpage C139, illustration (8/5/98)
+
+\eightpoint\noindent
+[Remove the labels {\tt 2r}, {\tt 2}, and {\tt 2l} below their dots.]
+
+\bugonpage C143, top two lines (3/4/95)
+
+\danger In order to have some transform variables to work with, it's necessary
+to `^{hide}' some declarations and commands before giving the next |expr|s:
+
+\bugonpage C147, lines 14, 16, and 19 (9/6/00)
+
+\noindent
+[Change `{\bf savepen}' to `{\it savepen}'.]
+
+\bugonpage C147, line 2 from the bottom (9/6/00)
+
+\ninepoint\noindent
+{\manual lmnj}'s {\bf penrazor} stands for
+`{\bf makepen} $\bigl((-.5,0)\dashto(.5,0)\dashto \cycle\bigr)$',
+and {\bf pensquare}\cutpar
+
+\bugonpage C171, line 19 (8/5/98)
+
+\ninepoint\noindent
+(\<path tertiary>) and
+(\<pair tertiary>). A pair expression is not considered to\cutpar
+
+\bugonpage C172, line 14 (8/5/98)
+
+\tenpoint\noindent
+been evaluated and changed to numeric tokens before being
+substituted for~$s$.\cutpar
+
+\bugonpage C175, line 23 (1/11/88)
+
+\ninepoint\noindent
+expand into a sequence of tokens. \
+(The language {\eightrm{SIMULA67}} demonstrated that it is\cutpar
+
+\bugonpage C206, minor changes to lines $-19$ to $-5$ (3/4/95)
+
+\vbox to70mm{\ninepoint
+\beginlines \advance\hsize.71pt
+|Path at line 15, before subdivision into octants:|
+|(1.53745,9.05345)..controls (1.53745,4.00511) and (5.75409,-0.00049)|
+| ..(10.85147,-0.00049)..controls (16.2217,-0.00049) and (20.46255,4.51297)|%
+ \kern.5em\null
+| ..(20.46255,9.94655)..controls (20.46255,14.99713) and (16.23842,19.00049)|
+ \kern-.71pt
+| ..(11.13652,19.00049)..controls (5.77066,19.00049) and (1.53745,14.48491)|%
+ \kern.5em\null
+| ..cycle|
+\smallskip
+|Cycle spec at line 15, after subdivision:|
+|(1.53745,9.05345) % beginning in octant `SSE'|
+| ..controls (1.53745,6.58786) and (2.54324,4.371)|
+| ..(4.16621,2.74803) % segment 0|
+|% entering octant `ESE'|
+| ..controls (5.8663,1.04794) and (8.24362,-0.00049)|
+| ..(10.85147,-0.00049) % segment 0|
+|% entering octant `ENE'|
+\endlines
+$\ldots$ and so on; there are lots more numbers! What does this all mean?
+Well, the first segment of the curve, from $(1.53745,9.05345)$ to
+$(10.85147,-0.00049)$,
+has been\cutpar}
+
+\bugonpage C207, minor changes to lines 1--23 (3/4/95)
+
+\ninepoint
+\begingroup\let\HRULE=\hrule \def\hrule{\HRULE width\hsize}
+\beginlines
+|Cycle spec at line 15, after subdivision and autorounding:|
+|(2,9.05348) % beginning in octant `SSE'|
+| ..controls (2,6.50526) and (3.02194,4.22272)|
+| ..(4.6577,2.58696) % segment 0|
+|% entering octant `ESE'|
+| ..controls (6.2624,0.98225) and (8.45786,0)|
+| ..(10.85873,0) % segment 0|
+|% entering octant `ENE'|
+\endlines
+Point $(1.53745,9.05345)$, where there was a vertical tangent, has been
+rounded to $(2,9.05348)$; point $(10.85147,-.00049)$, where there was
+\vadjust{\goodbreak}%
+a horizontal tangent, has been rounded to $(10.85873,0)$; the intermediate
+control points have been adjusted accordingly. \ (Rounding of $x$~coordinates
+has been done separately from $y$~coordinates.) \ Finally, with
+$\\{autorounding}=2$, additional adjustments are made so that the
+$45^\circ$ transition point will occur at what \MF\ thinks is a good spot:
+\beginlines
+|Cycle spec at line 15, after subdivision and double autorounding:|
+|(2,9.05348) % beginning in octant `SSE'|
+| ..controls (2,6.6761) and (3.07103,4.42897)|
+| ..(4.78537,2.71463) % segment 0|
+|% entering octant `ESE'|
+| ..controls (6.46927,1.03073) and (8.62749,0)|
+| ..(10.85873,0) % segment 0|
+|% entering octant `ENE'|
+\endlines
+(Notice that $4.78537+2.71463=7.50000$; when the slope
+is~$-1$ at a transition point\cutpar
+\endgroup
+
+\bugonpage C210, line $-7$ (8/5/98)
+
+\ninepoint\indent\qquad\alt\<numeric token primary>
+
+\bugonpage C210, line $-2$ (8/5/98)
+
+\ninepoint\indent\<numeric token primary>\is\<numeric token>\thinspace
+{\tt/}\thinspace\<numeric token>
+
+\bugonpage C211, line 16 (8/5/98)
+
+\ninepoint\indent\qquad\alt\<numeric token primary not followed by
+{\tt+} or {\tt-} or a numeric token>
+
+\bugonpage C213, lines 17--27 (8/5/98)
+
+\ninepoint
+\beginsyntax
+<path primary>\is<pair primary>\alt<path variable>\alt<path argument>
+ \alt[(]<path expression>[)]
+ \alt[begingroup]<statement list><path expression>[endgroup]
+ \alt[makepath]<pen primary>\alt[makepath]<future pen primary>
+ \alt[reverse]<path primary>
+ \alt[subpath]<pair expression>[of]<path primary>
+<path secondary>\is<pair secondary>\alt<path primary>
+ \alt<path secondary><transformer>
+<path tertiary>\is<pair tertiary>\alt<path secondary>
+<path subexpression>\is<path expression>
+ \alt<path subexpression><path join><path tertiary>
+\endsyntax
+
+\bugonpage C213, line $-4$ (8/5/98)
+
+\ninepoint\indent
+\<path expression>\is\<pair expression>\alt\<path tertiary>
+\endsyntax
+
+\bugonpage C234, line 6 (9/6/00)
+
+\ninepoint\noindent
+line~$z_1\to z_5$ that bisects $z_4\to z_2$, so it starts out in a
+south-by-southwesterly direction;\cutpar
+
+\bugonpage C246, line 5 of answer 14.15 (8/5/98)
+
+\ninepoint\indent
+\qquad/ length(postcontrol $t$ of $p$ $-$ point $t$ of $p$) {\bf enddef\/};
+
+\bugonpage C246, line 10 of answer 14.15 (8/5/98)
+
+\ninepoint\indent
+\qquad/ length(precontrol $t$ of $p$ $-$ point $t$ of $p$) {\bf enddef\/};
+
+\bugonpage C252, line $-6$ (8/5/98)
+
+\ninepoint\noindent
+$h+o$ and $\\{bot}\,y_4=-o$, so nothing needs to be done there.
+We should, however, say
+
+\bugonpage C257, large display on line 5 (3/4/95)
+
+\def\bb{$\,\left\{\vcenter\bgroup\halign\bgroup\hfil##\hfil\cr}
+\def\ee{\crcr\egroup\egroup\right\}\,$}
+\tenpoint\noindent
+\bb|boolean|\cr|numeric|\cr|pair|\cr|path|\cr
+|pen|\cr|picture|\cr|string|\cr|transform|\ee\<expression>; \
+\bb\<boolean>\cr\<numeric>\cr\<pair>\cr\<string>\cr\<transform>\ee
+ \bb|<|\cr|<=|\cr|=|\cr|<>|\cr|>=|\cr|>|\ee
+ \bb\<boolean>\cr\<numeric>\cr\<pair>\cr\<string>\cr\<transform>\ee;
+
+\bugonpage C261, line $-15$ (8/5/98)
+
+\tenpoint\textindent\bull {\it Hacks:\/} \ |gobble|, |gobbled|, |killtext|; \
+|capsule_def|; \ |numtok|.
+
+\bugonpage C286, line 15 (8/5/98)
+
+\ninepoint\noindent
+isn't entirely expanded by {\bf expandafter\/}; only \MF's first
+step in loop expansion\cutpar
+
+\bugonpage C299, line 2 (12/6/99)
+
+\ninepoint\noindent
+\begindisplay
+$\displaystyle t[u_1,\ldots,u_n]\;=\;\sum_{k=1}^n{n-1\choose k-1}
+ (1-t)^{n-k}t^{k-1}u_k,$
+\enddisplay
+
+\bugonpage C299, swap lines 11 and 12 (8/5/98)
+
+\ninepoint\begintt
+def lbrack = hide(delimiters []) lookahead [ enddef;
+let [[[ = [; let ]]] = ]; let [ = lbrack;
+\endtt
+
+\bugonpage C306, line 1 (11/4/98)
+
+\ninepoint\noindent
+| ligtable oct"013": "i" =: oct"016", "l" =: oct"017", % ffi and ffl|
+
+\bugonpage C311, line 2 (8/5/98)
+
+\ninepoint\noindent
+$\\{fine}:=4-\\{eps}$, and $\\{breadth\_}[1]:=4-\\{eps}$.
+\ (A small amount~\\{eps} has been subtracted\cutpar
+
+\bugonpage C323, line $-3$ (8/5/98)
+
+\ninepoint\noindent
+statement occurs,
+the special string `|"title "|\thinspace\&\thinspace\<title>'
+is output. \ (This is how the\cutpar
+
+\bugonpage C332, lines 22--24 (8/5/98)
+
+\ninepoint
+\item{}be replicated so that the final
+proofs will be \\{rep} times bigger than usual, and the pattern will be clipped
+slightly at the edges so that discrete pixels can be seen plainly.
+
+
+\bugonpage C341, line 23 (10/10/96)
+
+\ninepoint
+\noindent|\def\:{\setbox0=\hbox{\noboundary\char\n\noboundary}%|
+
+\bugonpage C346, left column (9/6/00)
+
+\eightpoint
+|...| (bounded join), 18--19, 127, 248, $\underline{262}$.\par
+|...| (truncation of displayed context), 44.
+
+\bugonpage C346, and throughout the index (3/7/95)
+
+\eightpoint\noindent
+(Many index entries for rules of syntax in chapters 25--26
+should have been underlined)
+
+\bugonpage C350, left column (4/24/00)
+
+\eightpoint\noindent
+Evetts, Leonard Charles, 153.
+
+\bugonpage C351, right column (9/22/97)
+
+\eightpoint\noindent
+\llap{\lower1pt\hbox{*}}%
+|intersectiontimes|, $\underline{136}$, {\it178}, 213, {\it265}, {\it294},
+{\it298}.
+
+\bugonpage C353, right column (8/5/98)
+
+\eightpoint\noindent
+\<numeric token atom>, {\it delete this entry}.\par\noindent
+\<numeric token primary>, 72, $\underline{210}$.
+
+\bugonpage C354, left column (7/26/98)
+
+\eightpoint\noindent
+Orwell, George (= Blair, Eric Arthur), 85.
+
+\bugonpage C355, right column (3/7/95)
+
+\eightpoint\noindent
+|rt|, {\it23}, {\it77}, 80, {\it103}, 147, 151, $\underline{273}$.
+
+\bugonpage C361, lines 14--15 (4/29/97)
+
+\tenpoint
+\begintt
+email: {\tt TUG@tug.org}
+internet: {\tt http://www.tug.org/}
+}
+\endtt
+
+\bugonpage C361, bottom five lines (4/29/97)
+
+\begingroup \def\TeX{T\kern-.2em\lower.5ex\hbox{E}\kern-.000em X}
+\baselineskip10pt
+\rightline{\eightssi Don't delay, subscribe today! That address again is}
+\rightline{\eightssi \TeX\ Users Group}
+\rightline{\eightssi email: \eighttt TUG\char`\@ tug.org}
+\rightline{\eightssi internet: \eighttt http://www.tug.org/}
+\smallskip
+\rightline{\eightss DONALD E. KNUTH, {\eightssi The \TeX book\/} (1996)}
+\endgroup
+
+ % Volume D
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\bugonpage Dix, line ix (8/19/00)
+
+\tenpoint
+\textindent{\bull}``Interfacing with graphic objects'' by
+Ignacio Andr\'es Zabala Salelles,\cutpar
+
+\hsize=35pc
+
+\bugonpage D71, line 11 of section 178 (9/13/00)
+
+\ninepoint
+\noindent\quad\qquad\qquad$\{$ previous \\{mem\_end}, \\{lo\_mem\_max},
+ and \\{hi\_mem\_min} $\}$
+
+\bugonpage D132, line 6 of section 291 (9/13/00)
+
+\tenpoint\noindent
+$$=v_n+w_n\theta_0-u_n\bigl(v_1+w_1\theta_0-u_1(v_2+\cdots
+-u_{n-2}(v_{n-1}+w_{n-1}\theta_0-u_{n-1}\theta_0)\ldots{})\bigr),$$
+
+\bugonpage D213, line 7 (9/14/00)
+
+\tenpoint\noindent
+$(-y+\epsilon,
+x+y+\epsilon\delta)$. We should therefore round as if our skewed coordinates
+were $(x+\epsilon+\epsilon\delta,y-\epsilon)$\cutpar
+
+\bugonpage D349, line 4 of section 784 (9/14/00)
+
+\ninepoint\noindent
+{\bf procedure} \\{pack\_job\_name}($s\;$: \\{str\_number});\quad
+ $\{$ $s={}$|".log"|, |".gf"|, |".tfm"|, or \\{base\_extension} $\}$
+
+\bugonpage D451, line 11 (9/14/00)
+
+\tenpoint\noindent
+{\bf 1040}.\qquad The value of \\{cur\_mod} controls the \\{verbosity} in
+the \\{print\_exp} routine: If it's \\{show\_code},\cutpar
+
+\bugonpage D464, bottom line (9/14/00)
+
+\ninepoint\noindent
+\\{long\_help\_seen}: \\{boolean};\quad$\{$ has the long {\bf errmessage}
+ help been used? $\}$
+
+\bugonpage D551, Zabala entry (8/19/00)
+
+\eightpoint\noindent
+Zabala Salelles, Ignacio Andr\'es:\quad 812.
+
+ % volume E
+\hsize=29pc
+\bugonpage Exiii, lines 3 and 4 from the bottom (7/17/98)
+
+\textindent{\bull}``Metamarks:
+Preliminary studies for a Pandora's Box of shapes''
+by Neenie Billawala, Stanford Computer Science report 1256 (Stanford,
+California,\cutpar
+
+\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}}
+\def\ddashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu
+ \hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}}
+
+\bugonpage E87, bottom line (6/4/98)
+
+\rightline{\eightss--- JOHN SMITH, {\eightssi The Printer's Grammar\/}\enspace
+ (1755)} % p129
+
+\bugonpage E95, line 16 (8/8/98)
+
+\ninepoint\noindent
+\quad$\dashto z_{1r}\dashto z_{1l}\dashto{}$%
+ {\bf subpath} $(t,0)$ {\bf of\/} $(z_{3l}\{z_9-z_3\}\,.\,.\,z_{5r})$
+
+\bugonpage E95, line 11 from the bottom (8/8/98)
+
+\ninepoint\noindent
+\quad$\dashto z_{1r}\dashto z_{1l}\dashto{}$%
+ {\bf subpath} $(t,0)$ {\bf of\/} $(z_{3r}\{z_9-z_3\}\,.\,.\,z_{5r})$
+
+\bugonpage E95, line 8 from the bottom (3/6/95)
+
+\ninepoint\noindent
+{\bf cmchar} |"Extensible vertical arrow--extension module"|;
+
+\bugonpage E97, line 8 from the bottom (3/6/95)
+
+\ninepoint\noindent
+{\bf cmchar} |"Extensible double vertical arrow--extension module"|;
+
+\bugonpage E113, line 9 (3/6/95)
+
+\ninepoint\noindent
+$x_5=.5[x_4,x_6]$; \ $x_4-x_6=1.2u$; \ $\\{lft}\,x_{5r}=\hbox{hround}
+ (.5w-.5\\{curve})$;
+
+\bugonpage E113, line 10 from the bottom (3/6/95)
+
+\ninepoint\noindent
+$x_5=.5[x_4,x_6]$; \ $x_4-x_6=4.8u$; \ $\\{lft}\,x_{5r}=\hbox{hround}
+ (.5w-.5\\{max\_size})$;
+
+\bugonpage E115, line 9 (3/6/95)
+
+\ninepoint\noindent
+$x_5=.5[x_4,x_6]$; \ $x_4-x_6=1.2u$; \ $\\{lft}\,x_{5r}=\hbox{hround}
+ (.5w-.5\\{curve})$;
+
+\bugonpage E115, line 12 from the bottom (3/6/95)
+
+\ninepoint\noindent
+$x_5=.5[x_4,x_6]$; \ $x_4-x_6=4.8u$; \ $\\{lft}\,x_{5r}=\hbox{hround}
+ (.5w-.5\\{max\_size})$;
+
+\bugonpage E147, lines 11--14 from the bottom (7/7/97)
+
+\ninepoint\noindent
+$\\{pos}_3(.8[\\{hair},\\{stem}],0)$; \ $\\{pos}_4(\\{vair},-90)$; \
+ $\\{pos}_5(\\{hair},-180)$;\par\noindent
+$\\{pos}_6(\\{vair},-270)$; \ ${pos}_7(\\{stem},-360)$; \
+ $\\{pos}_8(\\{vair},-450)$; \ ${pos}_9(\\{hair},-540)$;\par\noindent
+$x_0=x_1=x_9$; \ $\\{lft}\,x_{0l}=\hbox{hround}(1.5u-.5\\{hair})$; \
+ $x_2=x_4=x_6=x_8=.5w-.25u$;\par\noindent
+$\\{rt}\,x_{3r}=\hbox{hround}(w-1.75u)$; \ $\\{rt}\,x_{7r}=\hbox{hround}(w-u)$;
+
+\bugonpage E147, line 8 from the bottom (7/7/97)
+
+\ninepoint\noindent
+$y_5=.5[y_4,y_6]$; \ $\\{top}\,y_{6r}-\\{bot}\,y_{4r}=\\{vstem}+\\{eps}$; \
+$\\{bot}\,y_8=-\\{oo}$; \ $y_7=y_9=.55[y_6,y_8]$;
+
+\bugonpage E165, line 6 (2/8/97)
+
+\ninepoint\noindent
+$y_1+.5\\{hair}=h$; \ $x_1=x_2+.75u$; \
+ $\\{pos}_1(\\{hair}+\\{dw},\hbox{angle}(2(x_1-x_2),y_1-y_2)+90)$;
+
+\bugonpage E165, line 10 (2/8/97)
+
+\ninepoint\noindent
+$x_3=.5[x_2,x_4]$; \ $x_7-.25u=.5[x_6,x_8]$; \
+ $\\{rt}\,x_{8r}=\hbox{hround}(w-.5u)$;
+
+\bugonpage E187, line 9 (3/6/95)
+
+\ninepoint\noindent
+$\\{lft}\, x_{1l}=\\{lft}\, x_{2l}=\hbox{hround}(.5w-.5\\{shaved\_stem})$; \
+ $\\{top}\, y_1=h$; \ $\\{bot}\, y_2=0$;
+
+\bugonpage E189, line 8 (3/6/95)
+
+\ninepoint\noindent
+$\\{lft}\, x_{1l}=\\{lft}\, x_{2l}=\hbox{hround}(.5w-.5\\{shaved\_stem})$; \
+ $\\{top}\, y_1=h$; \ $\\{bot}\, y_2=0$;
+
+\bugonpage E233, line 21 (3/6/95)
+
+\ninepoint\noindent
+{\bf path} $p$; \
+$\{\{${\bf interim} $\\{superness}:=\\{more\_super}$; \
+ $p=\\{pulled\_super\_arc}_l(3,4)(\\{pull})\}\}$;
+
+\bugonpage E237, line 5 (8/6/98)
+
+\ninepoint\noindent
+$\\{lft}\,x_1={\rm hround}\,.5u$; \ $x_2=w-x_1$; \
+ $y_1=y_2=\\{good}.y\,.7[\\{x\_height},\\{asc\_height}]$;
+
+\bugonpage E239, line 7 from the bottom (3/6/95)
+
+\ninepoint\noindent
+$\\{lft}\,x_{6r}=\hbox{hround}\, u$; \
+$x_7=3u$; \ $x_8=w-3.5u$; \ $\\{rt}\,x_{9l}=\hbox{hround}(w-u)$;
+
+\bugonpage E253, line 2 from the bottom (8/9/98)
+
+\ninepoint
+\line{\quad$.\,.\,z_{3e}\{\\{down}\}\,.\,.\,\{z_{5l}-z_{4l}\}z_{4e}
+ \dashto z_{5e}\dashto z_{6e}$;\hfil \% stroke}
+
+\bugonpage E263, line 21 (5/10/98)
+
+\ninepoint\noindent
+{\bf path} $p$; \
+$\{\{${\bf interim} $\\{superness}:=\\{more\_super}$; \
+ $p=\\{pulled\_super\_arc}_l(3,4)(\\{pull})\}\}$;
+
+\bugonpage E289, line 2 from the bottom (8/9/98)
+
+\ninepoint
+\line{\quad$.\,.\,z_{3e}\{\\{down}\}\,.\,.\,\{z_{5l}-z_{4l}\}z_{4e}
+ \dashto z_{5e}\dashto z_{6e}$;\hfil \% stroke}
+
+\bugonpage E291, line 18 (3/6/95)
+
+\def\frac#1/#2{\leavevmode\kern.1em
+ \raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em
+ /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}
+\ninepoint\noindent
+$x_4=\frac1/3[x_5,x_{3l}]$; \ $z_4=z_5+\\{whatever}*(15u,.1h)$;
+
+\bugonpage E297, line 17 (5/10/98)
+
+\ninepoint\noindent
+{\bf path} $p$; \
+$\{\{${\bf interim} $\\{superness}:=\\{more\_super}$; \
+ $p=\\{pulled\_super\_arc}_l(3,4)(\\{pull})\}\}$;
+
+\bugonpage E303, line 17 (5/10/98)
+
+\ninepoint\noindent
+{\bf path} $p$; \
+$\{\{${\bf interim} $\\{superness}:=\\{more\_super}$; \
+ $p=\\{pulled\_super\_arc}_l(3,4)(\\{pull})\}\}$;
+
+\bugonpage E309, line 7 from the bottom (5/8/98)
+
+\ninepoint\noindent
+\quad$y_{@0}=y_{@2l}-\\{bracket}-\\{eps}$;
+
+\bugonpage E313, line 7 from the bottom (5/8/98)
+
+\ninepoint\noindent
+\quad$y_{@0}=y_{@2l}+\\{bracket}+\\{eps}$;
+
+\bugonpage E319, line 8 (5/11/98)
+
+\ninepoint\noindent
+$\\{loop\_top}=$ {\bf if\/} \\{serifs}:
+ Vround .77$[\\{vair},\\{fudged.stem}]$ {\bf else}: \\{vair} {\bf fi};
+
+\bugonpage E373, lines 5 and 6 from the bottom (7/13/97)
+
+\ninepoint\noindent
+\quad$\\{top}\,y_{1r}=\hbox{vround}\, .95h+\\{oo}$; \
+$\\{top}\,y_{2r}=h+\\{oo}$; \ $y_3=.5h$;\par\noindent
+\quad$\\{bot}\,y_{4r}=-\\{oo}$; \
+$\\{bot}\,y_{5r}=\hbox{vround}\,.08h-\\{oo}$; \
+$y_{5l}:=\\{good}.y\, y_{5l}$; \ $x_{5l}:=\\{good}.x\,x_{5l}$;
+
+\bugonpage E381, lines 11 and 12 from the bottom (7/13/97)
+
+\ninepoint\noindent
+\quad$\\{top}\,y_{1r}=\hbox{vround}\, .93h+\\{oo}$; \
+$\\{top}\,y_{2r}=h+\\{oo}$; \ $y_3=.5h$;\par\noindent
+\quad$\\{bot}\,y_{4r}=-\\{oo}$; \
+$\\{bot}\,y_{5r}=\hbox{vround}\,.07h-\\{oo}$;
+
+\bugonpage E389, bottom two lines (8/7/98)
+
+\ninepoint\noindent
+\quad {\bf numeric} $\\{aa\_},\\{bb\_},\\{cc\_}$;
+ \ $\\{bb\_}=b/y$; \ $\\{cc\_}=c/y$;
+ \ $\\{aa\_}=a*a-\\{bb\_}*\\{bb\_}$;\par\noindent
+\quad $(a*(\\{cc\_}\mathbin{++}\hbox{sqrt}\,\\{aa\_})-\\{bb\_}*\\{cc\_})/\\{aa\_}$
+ {\bf enddef\/};
+
+\bugonpage E423, line 17 (8/8/98)
+
+\ninepoint\noindent\quad
+$x_{13}=x_{11}-.5$; \ $\\{top}\,y_{14r}=\min(\frac10/7\\{x\_height}+
+ .5\\{bulb\_diam},h)+1$; \ $\\{top}\,y_{11}=\\{x\_height}$;
+
+\bugonpage E427, line 21 (8/8/98)
+
+\ninepoint\noindent\quad
+$x_{23}=x_{21}-.5$; \ $\\{top}\,y_{24r}=\min(\frac10/7\\{x\_height}+
+ .5\\{bulb\_diam},h)+1$; \ $\\{top}\,y_{21}=\\{x\_height}$;
+
+\bugonpage E431, lines 18 and 19 (8/8/98)
+
+\ninepoint\noindent
+{\bf filldraw} $z_0\dashto(x_0,y_{2l})\dashto z_{1l}\{\\{right}\}\,.\,.\,
+ \{\\{left}\}z_{1r}$\par
+\noindent\quad$\dashto{}${\bf subpath} $(t,0)$ {\bf of\/}
+ $(z_{3r}\,.\,.\,\{2(x_0-x_3),y_0-y_3\}z_{5r})$
+
+\bugonpage E431, line 2 from the bottom (8/8/98)
+
+\ninepoint\line{\quad
+$\dashto z_{1l}\{\\{right}\}\,.\,.\,\{\\{left}\}z_{1r}\dashto
+ (x_0,y_{2r})\dashto{}$cycle;\hfill\% arrowhead and stem}
+
+\bugonpage E433, lines 13 and 14 (8/8/98)
+
+\ninepoint\noindent
+{\bf filldraw} $z_0\dashto(x_0,y_{2l})\dashto z_{1l}\{\\{left}\}\,.\,.\,
+ \{\\{right}\}z_{1r}$\par
+\noindent\quad$\dashto{}${\bf subpath} $(t,0)$ {\bf of\/}
+ $(z_{3l}\,.\,.\,\{2(x_0-x_3),y_0-y_3\}z_{5r})$
+
+\bugonpage E433, line 2 from the bottom (8/8/98)
+
+\ninepoint\line{\quad
+$\dashto z_{1l}\{\\{left}\}\,.\,.\,\{\\{right}\}z_{1r}\dashto
+ (x_0,y_{2r})\dashto{}$cycle;\hfill\% arrowhead and stem}
+
+\bugonpage E463, line 15 (8/8/98)
+
+\ninepoint\noindent\quad
+$\ddashto z_{1r}\,.\,.\,z_{1l}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
+ $(z_{3r}\{z_9-z_3\}\,.\,.\,z_{5r})$
+
+\bugonpage E463, line 3 from the bottom (8/8/98)
+
+\ninepoint\noindent\quad
+$\ddashto z_{1r}\,.\,.\,z_{1l}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
+ $(z_{3l}\{z_9-z_3\}\,.\,.\,z_{5r})$
+
+\bugonpage E465, line 16 (8/8/98)
+
+\ninepoint\noindent\quad
+$\ddashto z_{1l}\,.\,.\,z_{1r}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
+ $(z_{3r}\{z_9-z_3\}\,.\,.\,z_{5r})$
+
+\bugonpage E465, line 3 from the bottom (8/8/98)
+
+\ninepoint\noindent\quad
+$\ddashto z_{1l}\,.\,.\,z_{1r}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
+ $(z_{3l}\{z_9-z_3\}\,.\,.\,z_{5r})$
+
+\bugonpage E467, line 18 (8/8/98)
+
+\ninepoint\noindent\quad
+$\ddashto z_{1l}\,.\,.\,z_{1r}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
+ $(z_{3r}\{z_9-z_3\}\,.\,.\,z_{5r})$
+
+\bugonpage E467, line 3 from the bottom (8/8/98)
+
+\ninepoint\noindent\quad
+$\ddashto z_{11l}\,.\,.\,z_{12r}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
+ $(z_{13l}\{z_{19}-z_{13}\}\,.\,.\,z_{15r})$
+
+\bugonpage E483, lines 12--14 from the bottom (3/6/95)
+
+\ninepoint\noindent
+{\bf beginarithchar}(oct$\,$|"004"|); \
+{\bf pickup} \\{fine}.\\{nib}; \
+{\bf pickup} \\{rule}.\\{nib};\par
+\line{{\bf numeric} \\{del};
+ \ $\\{del}=\\{dot\_size}-\\{currentbreadth}$;\hfill
+ \% $\\{currentbreadth}=\\{fine}$}
+\noindent
+$x_3-.5\\{del}=\\{good}.x(.5w-.5\\{del})$;
+ \ $\\{center\_on}(x_3)$;\par\noindent
+$y_3+.5del=\\{good}.y(\\{math\_axis}+\\{math\_spread}[.5\\{x\_height}
+ ,.6\\{x\_height}]+.5\\{del})$;
+
+\bugonpage E485, bottom line (6/4/98)
+
+\rightline{\eightss--- JOHN SMITH, {\eightssi The Printer's Grammar\/}\enspace
+ (1755)} % p80
+
+\bugonpage E489, line 4 (8/8/98)
+
+\ninepoint\noindent
+$\\{lft}\,x_6={\rm hround}\,u$; \ $x_2=w-x_6$; \ $\\{top}\,y_8=h$; \
+ $y_8-y_4=x_2-x_6$;
+
+\bugonpage E489, line 10 (8/8/98)
+
+\ninepoint\noindent
+$\\{lft}\,x_6={\rm hround}\,u$; \ $x_2=w-x_6$; \ $\\{top}\,y_8=h$; \
+ $y_8-y_4=x_2-x_6$; \ \\{circle\_points};
+
+\bugonpage E491, line 3 from the bottom (3/6/95)
+
+\def\SH{\raise.7ex\hbox{$\scriptstyle\#$}} % sharp sign for sharped units
+\ninepoint\noindent
+\quad $\\{spread}:=2\hbox{ceiling}(\\{spread}\SH*\\{hppp}/2)+\\{eps}$;
+ \ {\bf enddef\/};
+
+\bugonpage E507, line 15 (8/8/98)
+
+\ninepoint\noindent\quad
+$\ddashto z_{1r}\,.\,.\,z_{1l}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
+ $(z_{3r}\{z_9-z_3\}\,.\,.\,z_{5r})$
+
+\bugonpage E507, line 3 from the bottom (8/8/98)
+
+\ninepoint\noindent\quad
+$\ddashto z_{11r}\,.\,.\,z_{11l}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
+ $(z_{13l}\{z_{19}-z_{13}\}\,.\,.\,z_{15r})$
+
+\bugonpage E509, line 17 (8/8/98)
+
+\ninepoint\noindent\quad
+$\ddashto z_{1l}\,.\,.\,z_{1r}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
+ $(z_{3l}\{z_9-z_3\}\,.\,.\,z_{5r})$
+
+\bugonpage E509, lines 3 and 4 from the bottom (8/8/98)
+
+\ninepoint\noindent\quad
+$\ddashto z_{1l}\,.\,.\,z_{1r}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
+ $(z_{3l}\{z_9-z_3\}\,.\,.\,z_{5r})$
+
+\bugonpage E511, line 17 (8/8/98)
+
+\ninepoint\noindent\quad
+$\ddashto z_{1l}\,.\,.\,z_{1r}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
+ $(z_{3l}\{z_9-z_3\}\,.\,.\,z_{5r})$
+
+\bugonpage E511, lines 3 and 4 from the bottom (8/8/98)
+
+\ninepoint\noindent\quad
+$\ddashto z_{1l}\,.\,.\,z_{1r}\ddashto{}${\bf subpath} $(t,0)$ {\bf of\/}
+ $(z_{3l}\{z_9-z_3\}\,.\,.\,z_{5r})$
+
+\bugonpage E541, bottom line (2/27/97)
+
+{\bf labels}\kern.05em$(1,2,3,5,6,7,8,9,10,11,12,13,14,15)$; \ {\bf endchar};
+
+\bugonpage E568, the example of {\tt cmtex8} (4/18/96)
+
+\eightpoint\indent
+(The word `{\tt logician}' should not be hyphenated.)
+
+\bugonpage E574, left column (3/6/95)
+
+\eightpoint\indent
+\\{currentbreadth}, 483, $\underline{545}$, 546.
+
+\bugonpage E575, right column (9/10/98)
+
+Holmes, Kris Ann, vi, vii.
+
+\bugonpage E576, right column (6/4/98)
+
+\eightpoint\noindent Delete the entry for Luckombe
+
+\bugonpage E579, left column (6/4/98)
+
+\eightpoint Smith, John, 87, 485.
+
+ \bye
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errata.tex b/Master/texmf-doc/doc/english/knuth/errata/errata.tex
new file mode 100644
index 00000000000..c9ea56063c0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata.tex
@@ -0,0 +1,736 @@
+% Bugs (sigh) in Computers \& Typesetting --- the most recent errata
+
+\input manmac
+\def\.#1{\hbox{\tt#1}}
+\font\sltt=cmsltt10
+\font\niness=cmss9
+\font\ninessi=cmssi9
+\proofmodefalse
+\raggedbottom
+\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
+
+\def\today{\number\day\
+ \ifcase\month\or
+ Jan\or Feb\or Mar\or Apr\or May\or Jun\or
+ Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi
+ \ \number\year}
+
+\def\cutpar{{\parfillskip=0pt\par}}
+
+\def\rhead{Bugs in {\tensl Computers \& Typesetting as of \today}}
+\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
+\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
+\newcount\nn
+\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
+\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
+
+\tenpoint
+\noindent This is a list of all substantial corrections made to {\sl Computers
+\& Typesetting\/} since the publication of the Millennium Edition at the close
+of the year 2000. (More precisely, it lists errors corrected
+since the 16th printing of Volume~A, the 7th printing
+of Volume~B, the 6th printing of Volume~C, the 4th printing of Volume~D,
+and the 5th printing of Volume~E.)
+Corrections made to the softcover version of {\sl The \TeX book\/} are
+the same as corrections to Volume~A\null. Corrections to the softcover
+version of {\sl The \slMF\kern1ptbook\/} are the same as corrections
+to Volume~C\null. Changes to the mini-indexes
+and master indexes of Volumes B, D, and~E are not shown here unless they are
+not obviously derivable from what has been shown. Some (or all) of these
+errors have been corrected in the most recent printings.
+\looseness=-1
+
+ % volume A
+
+\bugonpage A16, line 7 from the bottom (6/30/01)
+
+\font\magnifiedfiverm=cmr5 at 10pt
+\tenpoint\indent
+Ten-point type is different from%
+ \magnifiedfiverm\ magnif{}ied f{}ive-point type.
+
+\bugonpage A17, line 7 (6/30/01)
+
+\ninepoint\indent
+fications that grow in geometric ratios---something like equal-tempered
+tuning\cutpar
+
+\bugonpage A51, lines 18--20 (6/30/01)
+
+\tenpoint\kern-6pt\noindent
+$$\openup1pt\halign{\indent#\hfil\cr
+|ff| yields ff\thinspace;$\!$\quad |fi| yields fi\thinspace;$\!$\quad
+|fl| yields fl\thinspace;$\!$\quad
+|ffi| yields ffi\thinspace;$\!$\quad |ffl| yields ffl\thinspace;\cr
+|``| yields``\thinspace;\qquad |''| yields ''\thinspace;\qquad
+|!||`| yields !`\thinspace;\qquad |?||`| yields ?`\thinspace;\cr
+|--| yields --\thinspace;\qquad |---| yields ---\thinspace.\cr}$$
+
+\bugonpage A52, line 7 from the bottom (6/30/01)
+
+\tenpoint\kern-6pt\noindent
+$$\halign{\indent\hbox to 50pt{#\hfil}&\hbox to 35pt{#\hfil}&#\hfil\cr
+|\ae,\AE|&\ae,\thinspace\AE&(Latin ligature and Scandinavian letter AE)\cr}$$
+
+\bugonpage A71, line 15 (6/30/01)
+
+\tenpoint\indent
+One of the interesting things that can happen when glue stretches and\cutpar
+
+\bugonpage A180, line 20 (6/30/01)
+
+\ninepoint\indent
+Challenge number 5:\enspace
+$\qquad\tenmath k=1.38065\times10^{-16}\rm\,erg\,K^{-1}$.
+
+\bugonpage A254, line 12 from the bottom becomes two lines (4/09/01)
+
+\ninepoint\noindent
+\begintt
+\output={\unvbox255
+ \ifnum\outputpenalty<10000 \penalty\outputpenalty\fi}
+\endtt
+
+\bugonpage A292, lines 13--16 (6/30/01)
+
+\def\s{\hskip0pt plus1pt}
+\ninepoint\textindent{$\bull$}|\mathchoice|\s
+$\langle$filler$\rangle$\s|{|\s$\langle$math mode material$\rangle$\s|}|\s
+$\langle$filler$\rangle$\s|{|\s$\langle$math mode material$\rangle$\s|}|\break
+$\langle$filler$\rangle$|{|$\langle$math mode material$\rangle$|}|
+$\langle$filler$\rangle$|{|$\langle$math mode material$\rangle$|}|.
+Four math lists, which are defined as in the
+second alternative of a \<math field>, are
+recorded in a ``choice item'' that is appended to the current list.
+
+\bugonpage A306, line 7 (6/30/01)
+
+\ninepoint\noindent
+instead of a shelf{\kern0pt}ful.
+In fact, the latter idea---to
+insert an ^{italic correction}---is prefer-\cutpar
+
+\bugonpage A308, lines 25 and 26 (6/17/02)
+
+\ninepoint
+\begintt
+\def\appendroman#1#2#3{\expandafter\def\expandafter#1\expandafter
+ {\csname\expandafter\gobble\string#2\romannumeral#3\endcsname}}
+\endtt
+
+\bugonpage A311, line 14 (12/2/02)
+
+\ninepoint\indent
+|\def\\{\if\space\next\ % assume that \next is unexpandable|
+
+\bugonpage A323, line 12 from the bottom (6/30/01)
+
+\ninepoint\noindent
+\hbox to\parindent{\bf\hss18.31.\enspace}%
+|$k=1.38065\times10^{-16}\rm\,erg\,K^{-1}$|.
+
+\bugonpage A364, lines 12--15 from the bottom (01/21/03)
+
+\ninepoint\noindent
+|\def\loggingall{\tracingcommands=2 \tracingstats=2|\par\noindent
+| \tracingpages=1 \tracingoutput=1 \tracinglostchars=1 |\par\noindent
+| \tracingmacros=2 \tracingparagraphs=1 \tracingrestores=1 |\par\noindent
+| \showboxbreadth=\maxdimen \showboxdepth=\maxdimen \errorstopmode}|\par
+\noindent
+|\def\tracingall{\tracingonline=1 \loggingall}|
+
+\bugonpage A364, line 5 from the bottom (01/21/03)
+
+\ninepoint\noindent
+|\def\fmtversion{3.14159265} % identifies the current format|
+
+\bugonpage A450, lines 14--16 from the bottom (12/19/02)
+
+\begingroup\def\\#1{$_{\kern\scriptspace#1}$}
+\indent\qquad{\tt s\\1tic
+ \\1exp x\\3p pi\\3a \\2i\\1a i\\2al \\2id \\1do \\1ci \\2io ou\\2 \\2us}
+\medskip\noindent
+(where subscripts that aren't shown are zero), and this yields
+$$\centerline{%
+\tt.\\0s\\0u\\1p\\0e\\0r\\1c\\0a\\0l\\1i\\0f\\0r\\0a\\0g\\1i\\0l\\4i%
+\\0s\\1t\\2i\\0c\\1e\\0x\\3p\\2i\\3a\\0l\\2i\\1d\\0o\\1c\\2i\\0o\\2u\\2s\\0.}$$
+\endgroup
+
+\bugonpage A451, line 15 (1/30/01)
+
+\tenpoint\noindent
+{\sl Connecticut Yankee\/} come out with only nine or
+ten bad hyphens:
+
+\bugonpage A451, line 23 (1/30/01)
+
+\tenpoint\noindent\begintt
+ mo-er-der-mohren-mut-ter-mar-mor-mon-u-menten-macher.
+\endtt
+
+\bugonpage A454, lines 23--30 (6/30/01)
+
+\begingroup
+\hyphenpenalty=-1000 \pretolerance=-1 \tolerance=1000
+\doublehyphendemerits=-100000 \finalhyphendemerits=-100000
+\ddanger If a suitable starting letter is found, let it be in font~$f$.
+Hyphenation is abandoned unless the ^|\hyphenchar| of~$f$ is a number
+between 0 and~255, inclusive.
+If this test is passed, \TeX\ continues to scan forward
+until coming to something that's not one of the following three
+``admissible items'': (1)~a character in font~$f$ whose |\lccode|
+is nonzero; (2)~a ligature formed entirely from characters of type~(1);
+(3)~an implicit kern. The first inadmissible item terminates this part of
+the process; the trial word consists of all the letters found in admissible
+items. Notice that all of these letters are in font~$f$.
+\par\endgroup
+
+\bugonpage A461, right column (7/08/01)
+
+\eightpoint\noindent
+\llap{*}|\char|, {\it 43--45}, 76, 86, 155, 283, $\underline{286}$,
+
+\bugonpage A466, left column (7/09/01)
+
+\eightpoint\noindent
+\llap{*}|\floatingpenalty|, $\underline{123}$--$\underline{124}$,
+ 272, 281, {\it 363}.
+
+\bugonpage A470, left column (1/21/03)
+
+\eightpoint\noindent
+|\loggingall|, $\underline{364}$.
+
+\bugonpage A473, left column (6/30/01)
+
+\eightpoint\noindent
+orphans, {\sl see\/} widow words.
+
+ % volume B
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\bugonpage Bvii, bottom two lines (12/20/02)
+
+\eightpoint\noindent
+all of those changes.
+I~now believe that the final bug was discovered and removed on
+20~December 2002.
+The finder's fee has converged to \$327.68.
+
+\hsize=35pc
+
+\bugonpage B2, line 10 from the bottom (12/20/02)
+
+\ninepoint\noindent\hskip10pt
+{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
+{\tt This\]is\]TeX,\]Version\]3.141592\char'23}\quad
+$\{\,$printed when \TeX\ starts$\,\}$
+
+\bugonpage B3, new paragraph to follow line 9 (12/20/02)
+
+\tenpoint\noindent\quad
+Incidentally, Pascal's standard \\{round} function can be problematical,
+because it disagrees with the IEEE floating-point standard.
+Many implementors have
+therefore chosen to substitute their own home-grown rounding procedure.
+
+\bugonpage B8, line 2 (5/04/01)
+
+\tenpoint\noindent
+statements will be meaningful. We insert the label
+`\\{exit}' just before the `{\bf end}' of a procedure in\cutpar
+
+\bugonpage B30, line $-4$ (5/04/01)
+
+\ninepoint\noindent
+\quad{\bf begin} \\{update\_terminal};\quad$\{\,$now the user sees
+ the prompt for sure$\,\}$
+
+\bugonpage B84, lines 22 and 27 (5/04/01)
+
+\ninepoint\noindent
+\quad$\\{ignore}=9$\quad$\{\,$characters to ignore ( |^^@| )$\,\}$\par
+\noindent
+\quad$\\{active\_char}=13$\quad$\{\,$characters that invoke
+ macros ( |~| )$\,\}$
+
+\bugonpage B139, line 20 (12/19/02)
+
+\ninepoint\noindent
+\quad{\bf begin while} $(\\{state}=\\{token\_list}) \land
+ (\\{loc}=\\{null}) \land (\\{token\_type}\ne\\{v\_template})$ {\bf do}\par
+\noindent\qquad\\{end\_token\_list};\quad$\{\,$conserve stack space$\,\}$
+
+\bugonpage B206, line 14 (10/30/02)
+
+\tenpoint\noindent
+used input files like \.{webmac.tex}.
+
+\bugonpage B206, new paragraph to follow line 22 (12/20/02)
+
+\tenpoint\noindent\quad
+The following procedures don't allow spaces to be part of
+file names; but some users seem to like names that are spaced-out.
+System-dependent changes to allow such things should probably
+be made with reluctance, and only when an entire file name that
+includes spaces is ``quoted'' somehow.
+
+\bugonpage B256, line 25 (12/20/02)
+
+\ninepoint\noindent
+\qquad\\{cur\_glue}: \\{real};\quad$\{\,$glue seen so far$\,\}$\par\noindent
+\qquad\\{cur\_g}: \\{scaled};\quad$\{\,$rounded
+ equivalent of \\{cur\_glue} times the glue ratio$\,\}$\par\noindent
+\quad{\bf begin} $\\{cur\_g}\gets0$;
+ $\\{cur\_glue}\gets\\{float\_constant}(0)$;\par\noindent
+\quad$\\{this\_box}\gets\\{temp\_ptr}$;
+ $\\{g\_order}\gets\\{glue\_order}(\\{this\_box})$;
+ $\\{g\_sign}\gets\\{glue\_sign}(\\{this\_box})$;
+
+\bugonpage B258, line 5 from the bottom (12/20/02)
+
+\ninepoint\noindent
+\quad{\bf begin} $g\gets\\{glue\_ptr}(p)$;
+ $\\{rule\_wd}\gets\\{width}(g)-\\{cur\_g}$;
+
+\bugonpage B258, bottom line (12/20/02)
+
+\ninepoint\noindent
+\qquad\qquad{\bf begin} $\\{cur\_glue}\gets\\{cur\_glue}+\\{stretch}(g)$;
+ $\\{vet\_glue}(\\{float}(\\{glue\_set}(\\{this\_box}))*\\{cur\_glue})$;\par
+\noindent\qquad\qquad$\\{cur\_g}\gets\\{round}(\\{glue\_temp})$;
+
+\bugonpage B259, line 4 (12/20/02)
+
+\ninepoint\noindent
+\qquad\qquad{\bf begin} $\\{cur\_glue}\gets\\{cur\_glue}-\\{shrink}(g)$;
+ $\\{vet\_glue}(\\{float}(\\{glue\_set}(\\{this\_box}))*\\{cur\_glue})$;\par
+\noindent\qquad\qquad$\\{cur\_g}\gets\\{round}(\\{glue\_temp})$;
+
+\bugonpage B259, new line to precede old line 7 (12/20/02)
+
+\ninepoint\noindent
+\quad$\\{rule\_wd}\gets\\{rule\_wd}+\\{cur\_g}$;
+
+\bugonpage B260, line 21 (12/19/02)
+
+\ninepoint\noindent
+\qquad{\bf else begin} $\\{lx}\gets\\{lr}$ {\bf div} $(\\{lq}+1)$;
+
+\bugonpage B261, line 9 (12/20/02)
+
+\ninepoint\noindent
+\qquad\\{cur\_glue}: \\{real};\quad$\{\,$glue seen so far$\,\}$\par\noindent
+\qquad\\{cur\_g}: \\{scaled};\quad$\{\,$rounded
+ equivalent of \\{cur\_glue} times the glue ratio$\,\}$\par\noindent
+\quad{\bf begin} $\\{cur\_g}\gets0$;
+ $\\{cur\_glue}\gets\\{float\_constant}(0)$;\par\noindent
+\quad$\\{this\_box}\gets\\{temp\_ptr}$;
+ $\\{g\_order}\gets\\{glue\_order}(\\{this\_box})$;
+ $\\{g\_sign}\gets\\{glue\_sign}(\\{this\_box})$;
+
+\bugonpage B262, line 10 from the bottom (12/20/02)
+
+\ninepoint\noindent
+\quad{\bf begin} $g\gets\\{glue\_ptr}(p)$;
+ $\\{rule\_ht}\gets\\{width}(g)-\\{cur\_g}$;
+
+\bugonpage B262, line 6 from the bottom (12/20/02)
+
+\ninepoint\noindent
+\qquad\qquad{\bf begin} $\\{cur\_glue}\gets\\{cur\_glue}+\\{stretch}(g)$;
+ $\\{vet\_glue}(\\{float}(\\{glue\_set}(\\{this\_box}))*\\{cur\_glue})$;\par
+\noindent\qquad\qquad$\\{cur\_g}\gets\\{round}(\\{glue\_temp})$;
+
+\bugonpage B262, line 2 from the bottom (12/20/02)
+
+\ninepoint\noindent
+\qquad\qquad{\bf begin} $\\{cur\_glue}\gets\\{cur\_glue}-\\{shrink}(g)$;
+ $\\{vet\_glue}(\\{float}(\\{glue\_set}(\\{this\_box}))*\\{cur\_glue})$;\par
+\noindent\qquad\qquad$\\{cur\_g}\gets\\{round}(\\{glue\_temp})$;
+
+\bugonpage B263, new line to precede old line 2 (12/20/02)
+
+\ninepoint\noindent
+\quad$\\{rule\_ht}\gets\\{rule\_ht}+\\{cur\_g}$;
+
+\bugonpage B264, line 10 (12/19/02)
+
+\ninepoint\noindent
+\qquad{\bf else begin} $\\{lx}\gets\\{lr}$ {\bf div} $(\\{lq}+1)$;
+
+\bugonpage B280, lines 23 and 24 (4/08/01)
+
+\tenpoint\noindent
+or unset nodes; in particular, each mlist item appears in the
+variable-size part of \\{mem}, so the \\{type} field is always present.
+
+\bugonpage B299, line 9 (12/20/02)
+
+\ninepoint\noindent
+\qquad\qquad\quad{\bf if\/} $\\{type}(r)=\\{kern\_node}$ {\bf then}
+ \quad$\{\,$unneeded italic correction$\,\}$
+
+\bugonpage B332, line 6 (12/19/02)
+
+\tenpoint\noindent
+is being scanned, or when no alignment preamble is active.
+
+\bugonpage B332, line 8 (12/19/02)
+
+\ninepoint\noindent
+\quad{\bf begin if\/} $(\\{scanner\_status}=\\{aligning}) \lor
+ (\\{cur\_align}=\\{null})$ {\bf then}
+
+\bugonpage B382, line 6 (1/01/01)
+
+\tenpoint\noindent
+between `fl' and `y', then $m=2$, $t=2$, and $y_1$ will
+be a ligature node for `fl' followed by an\cutpar
+
+\bugonpage B386, line 11 (4/08/01)
+
+\ninepoint\noindent
+\quad$\\{qi}(2),\\{qi}(6)$: {\bf begin} $\\{cur\_r}\gets\\{rem\_byte}(q)$;%
+ \quad$\{\,$\||=:|, \||=:>|$\,\}$
+
+\bugonpage B472, new paragraph to follow line 10 (12/20/02)
+
+\tenpoint\noindent\quad
+A devious user might force an \\{endv} command to occur just about anywhere;
+we must defeat such hacks.
+
+\bugonpage B472, replacement for what used to be line 13 (12/20/02)
+
+\ninepoint\noindent
+\quad{\bf begin} $\\{base\_ptr}\gets\\{input\_ptr}$;
+ $\\{input\_stack}[\\{base\_ptr}]\gets\\{cur\_input}$;\par\noindent
+\quad{\bf while} $(\\{input\_stack}[\\{base\_ptr}].\\{index\_field}\ne
+ \\{v\_template}) \land{}$\par\noindent
+\quad\qquad $(\\{input\_stack}[\\{base\_ptr}].\\{loc\_field}=
+ \\{null}) \land {}$\par\noindent
+\quad\qquad $(\\{input\_stack}[\\{base\_ptr}].\\{state\_field}=
+ \\{token\_list})$ {\bf do} \\{decr}(\\{base\_ptr});\par\noindent
+\quad{\bf if\/} $(\\{input\_stack}[\\{base\_ptr}].\\{index\_field}\ne
+ \\{v\_template}) \lor {}$\par\noindent
+\quad\qquad $(\\{input\_stack}[\\{base\_ptr}].\\{loc\_field}\ne
+ \\{null}) \lor {}$\par\noindent
+\quad\qquad $(\\{input\_stack}[\\{base\_ptr}].\\{state\_field}\ne
+ \\{token\_list})$ {\bf then}\par\noindent
+\qquad\\{fatal\_error}(\hbox{\tt\char'23(interwoven\]alignment\]preambles\]%
+ are\]not\]allowed)\char'23});\par\noindent
+\quad{\bf if\/} $\\{cur\_group}=\\{align\_group}$ {\bf then}
+
+\bugonpage B475, line 12 (7/01/01)
+
+\ninepoint\noindent
+\qquad{\bf end};\quad$\{\,$now we are in vertical mode,
+ working on the list that will contain the display$\,\}$
+
+ % volume C
+\hsize=29pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+
+\bugonpage C11, line 11 (10/11/01)
+
+\noindent
+the area below the bar to the area above it equal to
+$(\sqrt5+1)/2\approx1.61803$, the\cutpar
+
+\bugonpage C29, illustration for exercise 4.11 (9/09/01)
+
+\noindent
+[points 2 and 5 should not be labeled twice]
+
+\bugonpage C156, line 15 from the bottom (9/09/01)
+
+\ninepoint\noindent
+be the values they had upon entry to the group.)
+
+\bugonpage C171, line 16 from the bottom (6/18/02)
+
+\tenpoint
+\<loop>\is\<loop header>|:|\<loop text> {\tt endfor}
+
+\bugonpage C179, line 7 from the bottom (9/09/01)
+
+\ninepoint\noindent
+next time \MF\ gets to the end of an input line, it will stop reading
+from the\cutpar
+
+\bugonpage C204, line 3 from the bottom (7/08/01)
+
+\ninepoint\noindent
+slightly. If $\\{autorounding}>1$,
+you get even more changes: Paths are perturbed slightly\cutpar
+
+\bugonpage C238, lines 9 and 8 from the bottom (7/08/01)
+
+\ninepoint\noindent
+tance is ${\rm length}(z_4-z_1)$. But there's a slicker solution:
+Just calculate
+$$\hbox{abs ypart$((z_1-z_2)\mathbin{\rm rotated}-{\rm angle}(z_3-z_2))$.}$$
+
+\bugonpage C286, line 25 (9/09/01)
+
+\ninepoint\noindent
+problem; it would simply have put |ENDFOR| into the
+replacement text of |asts|, because\cutpar
+
+\bugonpage C289, line 7 (9/09/01)
+
+\vskip-6pt\ninepoint\begintt
+if if pair x: x>(0,0) else: false fi: A else: B fi.
+\endtt
+
+\bugonpage C292, line 10 from the bottom (9/09/01)
+
+\ninepoint\noindent
+be known by saying `{\bf if\/} known $p-q$: $p=q$ {\bf else}:~{\bf false}
+{\bf fi}'; transforms could be handled\cutpar
+
+\bugonpage C313, bottom line (6/30/01)
+
+\rightline{\eightss--- LA ROCHEFOUCAULD, {\eightssi Maximes\/}\enspace(1665)}
+
+\bugonpage C346, left column (6/18/02)
+
+\eightpoint\noindent
+\llap{*}|:|, 169, 171, 317--319.
+
+\bugonpage C346, right column (7/09/01)
+
+\eightpoint\noindent
+\llap{*}|angle|, {\it29}, {\it67}, $\underline{72}$, {\it107},
+{\it135}, 211, {\it238}.
+
+\bugonpage C352, left column (6/30/01)
+
+\eightpoint\noindent
+La Rochefoucauld, Fran\c cois VI, 313.
+
+\bugonpage C357, right column (7/08/01)
+
+\eightpoint\noindent
+\llap{*}|true|, 55, {\it64\/}--{\it65}, 170, 210.
+
+ % Volume D
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\bugonpage Dvii, bottom two lines (12/21/02)
+
+\eightpoint\noindent
+corporates all of those changes.
+I~now believe that the final bug was discovered on 22~January 2001,
+and removed in version 2.71828.
+The finder's fee has converged to \$327.68.
+
+\hsize=35pc
+
+\bugonpage D2, line $-17$ (12/21/02)
+
+\ninepoint\noindent
+{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
+{\tt This\]is\]METAFONT,\]Version\]2.71828\char'23}\quad
+$\{\,$printed when \MF\ starts$\,\}$
+
+\bugonpage D2, lines 4 and 5 from the bottom (12/23/02)
+
+\tenpoint\noindent
+types; there are no `{\bf var}' parameters, except in the case of files
+or in the system-dependent \\{paint\_row} procedure;
+there are no tag fields on variant records; there are no \\{real} variables;
+no procedures are declared local to other procedures.)
+
+\bugonpage D8, line 2 (5/04/01)
+
+\tenpoint\noindent
+statements will be meaningful. We insert the label
+`\\{exit}' just before the `{\bf end}' of a procedure in\cutpar
+
+\bugonpage D28, line $-8$ (5/04/01)
+
+\ninepoint\noindent
+\quad{\bf begin} \\{update\_terminal};\quad$\{\,$now the user sees
+ the prompt for sure$\,\}$
+
+\bugonpage D42, replacement for lines 8--13 (12/23/02)
+
+\tenpoint\noindent\quad
+Notice that if 64-bit integer arithmetic were available,
+we could simply compute $(2^{29}*p+\nobreak q)\allowbreak\,
+\hbox{\bf div}\,(2*q)$.
+But when we are restricted to Pascal's 32-bit arithmetic we
+must either resort to multiple-precision maneuvering
+or use a simple but slow iteration. The multiple-precision technique
+would be about three times faster than the code adopted here, but it
+would be comparatively long and tricky, involving about sixteen
+additional multiplications and divisions.
+
+\bugonpage D43, line 20 (12/23/02)
+
+\tenpoint\noindent
+language or 64-bit substitute is advisable.
+
+\bugonpage D44, lines 24--26 (12/23/02)
+
+\tenpoint\noindent\quad
+Once again it is a good idea to use 64-bit arithmetic if
+possible; otherwise |take_scaled| will use more than 2\% of the running time
+when the Computer Modern fonts are being generated.
+
+\bugonpage D101, line 21 (7/08/01)
+
+\ninepoint\noindent
+\quad{\bf define} $\\{subscr\_head\_loc}(\hbox{\tt\#})\equiv\hbox{\tt\#}+1$
+\quad$\{\,$where \\{value}, \\{subscr\_head}, and \\{attr\_head} are$\,\}$
+
+\bugonpage D180, lines 22 and 23 (1/26/01)
+
+\tenpoint\noindent
+$(y,-x)$ will appear in node~$p$. Similarly, a fourth-octant
+transformation will have been applied after the transition, so
+we will have $\\{x\_coord}(q)=\hbox{$-x$}$ and $\\{y\_coord}(q)=y$.
+
+\bugonpage D184, line 18 (12/21/02)
+
+\ninepoint\noindent
+\qquad\\{chopped}: \\{integer};\quad
+$\{\,$positive if data truncated, negative if data dangerously large$\,\}$
+
+\bugonpage D184, line 25 (12/21/02)
+
+\ninepoint\noindent
+\quad{\bf if\/} $(\\{internal}[\\{autorounding}]>0)\land(\\{chopped}=0)$
+ {\bf then} \\{xy\_round};
+
+\bugonpage D184, line 27 (12/21/02)
+
+\ninepoint\noindent
+\quad{\bf if\/} $(\\{internal}[\\{autorounding}]>\\{unity})\land
+ (\\{chopped}=0)$ {\bf then} \\{diag\_round};
+
+\bugonpage D184, line 32 (12/21/02)
+
+\ninepoint\noindent
+\qquad{\bf if\/} $(\\{internal}[\\{autorounding}]\le0)\lor(\\{chopped}\ne0)$
+ {\bf then} \\{print\_spec}({\tt\char`",\]after\]subdivision\char`"})
+
+\bugonpage D185, lines 15--19 (12/21/02)
+
+\ninepoint\noindent
+\quad{\bf define} \\{procrustes}({\tt\char`#})${}\equiv{}${\bf if\/}
+ $\\{abs}(\.\#)\ge\\{dmax}$ {\bf then}\par\noindent
+\qquad\qquad\quad{\bf if\/} $\\{abs}(\.\#)>\\{max\_allowed}$ {\bf then}\par
+\noindent\qquad\qquad\qquad{\bf begin} $\\{chopped}\gets1$;\par\noindent
+\qquad\qquad\qquad{\bf if\/} $\.\#>0$ {\bf then} $\.\#\gets\\{max\_allowed}$
+ {\bf else} $\.\#\gets-\\{max\_allowed}$;\par\noindent
+\qquad\qquad\qquad{\bf end}\par\noindent
+\qquad\qquad\quad{\bf else if\/} $\\{chopped}=0$ {\bf then}
+ $\\{chopped}\gets-1$
+
+\bugonpage D185, old line 22 (12/21/02)
+
+\ninepoint\noindent
+\quad$p\gets\\{cur\_spec}$; $k\gets1$; $\\{chopped}\gets0$;
+ $\\{dmax}\gets\\{half}(\\{max\_allowed})$;
+
+\bugonpage D185, old line 28 (12/21/02)
+
+\ninepoint\noindent
+\quad{\bf if\/} $\\{chopped}>0$ {\bf then}
+
+\bugonpage D196, lines 7 and 8 (1/26/01)
+
+\tenpoint\noindent
+where $x'(t)\ge0$ we have $\\{right\_type}=%
+\\{first\_octant}$ or $\\{right\_type}=\\{eighth\_octant}$; in regions where
+$x'(t)\le0$,
+we have $\\{right\_type}=\\{fifth\_octant}$ or $\\{right\_type}=\\{fourth%
+\_octant}$.
+
+\bugonpage D511, line 17 (7/03/01)
+
+\tenpoint\noindent
+from appearing again.
+
+ % volume E
+\hsize=29pc
+
+\bugonpage E7, line 11 (12/21/02)
+
+\ninepoint\indent
+\\{hair}, \\{vair}, \\{stem}, \\{curve}, \\{ess}, \\{flare}, \\{dot\_size},
+ \\{bar}, \\{slab},
+
+\bugonpage E7, line 11 (12/21/02)
+
+\ninepoint\indent
+\\{crisp}, \\{tiny}, \\{fine};
+\medskip\noindent
+and \\{thin\_join} should not be less than \\{fine}.
+
+\bugonpage E9, line 9 (7/03/01)
+
+\tenpoint\indent
+|[92] [123] [124]) ) )|
+
+\bugonpage E19, line 19 (11/7/01)
+
+\tenpoint
+\line{\\{cap\_notch\_cut}\hskip 0pt plus1.5fil46/36\hfil31/36\hfil25/36\hfil
+24/36\hfil22/36\hskip0pt plus3fil25/36}
+
+\bugonpage E41, line 8 (12/21/02)
+
+\ninepoint\noindent\mathchardef\AM="2026 % ampersand
+\quad$\\{extra\_endchar}\gets\\{extra\_endchar}\AM
+ \.{\char`"charcode:=charcode+code\_offset;"}$;
+
+\bugonpage E53, line 7 (12/21/02)
+
+\def\frac#1/#2{\leavevmode\kern.1em
+ \raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em
+ /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}
+\ninepoint\noindent
+{\bf numeric} \\{mid\_thickness};
+ $\\{mid\_thickness}={\rm Vround}$ \frac1/3[$\\{vair},\\{stem}$];
+
+\bugonpage E377, lines 3 and 4 from the bottom (12/22/02)
+
+\newbox\shorthyf \setbox\shorthyf=\hbox{-\kern-.05em}
+\mathchardef\period=`\.
+{\catcode`\-=\active \global\def-{\copy\shorthyf\mkern3.9mu}
+ \catcode`\.=\active \global\def.{\period\mkern3mu}}
+\def\8#1{\mathrel{\mathcode`\.="8000 \mathcode`\-="8000
+ #1\unkern}} % `..' and `--'
+\ninepoint\noindent
+\qquad {\bf path} \\{p\_}; $\\{p\_}=z_{\$\$l}\{z_{@1}-z_{\$\$l}\}\8{...}
+ \\{darkness}[z_{@1},.5[z_{@2},z_{\$\$l}]]\8{...}z_{@2}$\par\noindent
+\qquad\quad$\8{---}z_{\$l}\8{--}z_{\$r}\8{--}z_{@0}\8{--}z_{\$\$r}\8{--}%
+ {\rm cycle}$;\par\noindent
+\qquad{\bf if\/} $(y_{\$\$}>y_\$) \ne ({\rm ypart}\,\hbox{\bf precontrol}\,1
+ \,\hbox{\bf of\/}\,\\{p\_} > {\rm ypart}\,\hbox{\bf postcontrol}\,1\,
+ \,\hbox{\bf of\/}\,\\{p\_})$:\par\noindent
+\qquad\quad$\\{p\_}=z_{\$\$l}\{z_{@1}-z_{\$\$l}\}\8{...}
+ \\{darkness}[z_{@1},.5[z_{@2},z_{\$\$l}]]$\par\noindent
+\qquad\qquad$\8{---}z_{\$l}\8{--}z_{\$r}\8{--}z_{@0}\8{--}z_{\$\$r}\8{--}%
+ {\rm cycle}$;\ {\bf fi}\par\noindent
+\line{\qquad {\bf filldraw} \\{p\_};\hfil \% arm and beak}
+
+\bugonpage E577, right column (12/23/02)
+
+\eightpoint\noindent
+{\bf padded}, 103--111, 117--121, $\underline{549}$.
+
+ \bye
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errata.three b/Master/texmf-doc/doc/english/knuth/errata/errata.three
new file mode 100644
index 00000000000..5f00f73b22e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata.three
@@ -0,0 +1,1898 @@
+% Bugs (sigh) in Computers \& Typesetting
+
+\input manmac
+\font\sltt=cmsltt10
+\font\niness=cmss9
+\font\ninessi=cmssi9
+\proofmodefalse
+\raggedbottom
+\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
+
+\def\cutpar{{\parfillskip=0pt\par}}
+
+\def\rhead{Bugs in {\tensl Computers \& Typesetting}}
+\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
+\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
+\newcount\nn
+\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
+\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
+
+\noindent This is a list of all corrections made to {\sl Computers \&
+Typesetting}, Volumes A--E\null, between the date of publication
+(May, 1986) and 15~June 1987.
+It also includes corrections made to
+the softcover version of {\sl The \TeX book}, beginning with the
+sixth printing (January 1986); these are the same as corrections to
+Volume~A\null. Corrections to the softcover version of {\sl The
+\slMF\kern1ptbook\/} are the same as corrections to Volume~C\null.
+ % volume A
+\bugonpage A7, fourth line from the bottom (6/28/86)
+
+\tenpoint\line{%
+since control sequences of the second kind always have exactly one
+symbol after}
+
+\bugonpage A35, second-last line (1/31/87)
+
+\rightline{\eightssi He may run who reads.}
+\smallskip
+\rightline{\eightss--- HABAKKUK 2\thinspace:\thinspace2 (c.~600 B.C.)}
+\smallskip
+\rightline{\eightssi He that runs may read.}
+
+\bugonpage A43, lines 8--9 (8/23/86)
+
+\tenpoint\noindent
+of Appendix B\null, which defines |%| to be a special kind of symbol so that you
+can use it for comments, defines the control sequence |\%| to mean
+a percent sign.
+
+\bugonpage A45, lines 10--13 (8/23/86)
+
+\ninepoint\noindent
+\TeX\ adds~64. Hence
+code 127 can be typed |^^?|, and
+the dangerous bend sign can be obtained by saying
+|{\manual^^?}|. However, you must change the category code of character
+127 before using it, since this character ordinarily has category~15
+(^{invalid}); say, e.g., |\catcode`\^^?=12|.
+The |^^| notation is different from |\char|, because |^^|\cutpar
+
+\bugonpage A76, line 7 (8/23/86)
+
+\ninepoint
+\noindent
+and extra space; for example, these quantities are
+$3.33333\pt$, $1.66666\pt$, $1.11111\pt$,\cutpar
+
+\bugonpage A83, bottom line (5/19/87)
+
+\tenpoint\noindent[This line should be flush right.]
+
+\bugonpage A111, 7th-last line, right-hand column (2/15/87)
+
+\ninepoint
+if $b=10000$ and $-10000<p<10000$ and $q<10000$;
+
+\bugonpage A117, second-last line (6/10/87)
+
+\eightpoint
+marks; sometimes also |$\|\||$| ($\Vert$).
+You can say, e.g., `|\footnote\dag{...}|'.
+
+\bugonpage A124, lines 6--11 (2/26/87)
+
+\begingroup \def\n{\thinspace$n$}
+\ninepoint\noindent
+of insertion; an additional `|\penalty-10000|' item is assumed
+to be present at the end of the vertical list, to ensure that a legal
+breakpoint exists.) \ Let $u$ be the natural height plus depth of that
+least-cost box, and let $r$ be the penalty associated with the optimum
+breakpoint. Decrease $g$ by~$uf$, and increase $q$ by~$r$. \ (If
+|\tracingpages||=1|, the log file should now get a cryptic message that says
+`|% split|\n\ |to| $v$|,|$u$ |p=|$r$'. For~example,
+\begintt
+% split254 to 180.2,175.3 p=100
+\endtt
+\endgroup
+
+\bugonpage A158, lines 6--8 (2/20/87)
+
+\ninepoint\noindent the
+second atom, which has subscript~$i$; the superscripts are empty except for the
+last atom, whose superscript is~$\overline{n+1}$. This superscript is
+itself a math list consisting of one atom, whose nucleus is~$n+1$; and that
+nucleus is a math list consisting of three atoms.
+
+\bugonpage A171, line 20 (1/26/86)
+
+\ninepoint\line{%
+will be surrounded by more space than there would be
+if that subformula were enclosed}
+
+\bugonpage A176, line 1 (8/23/86)
+
+\ninepoint
+You can insert `|\noalign||{|$\langle$vertical mode
+material$\rangle$|}|' just after any \kern-1pt|\cr| within\cutpar
+
+\bugonpage A248, line 17 (6/17/86)
+
+\ninepoint
+`|&|' or `|\span|' or `|\cr|', it needs some way to decide which
+alignment is involved.\cutpar
+
+\bugonpage A249, line 20 (6/17/86)
+
+\ninepoint\noindent
+line (see Chapter~8).
+If you don't want a~|\cr| at the end of a certain line,
+just type\cutpar
+
+\bugonpage A276, line 19 (1/27/86)
+
+\ninepoint\vskip-3pt
+\beginsyntax
+ \alt^|\font|<control sequence><equals><file name><at clause>
+ \alt<global assignment>
+\endsyntax
+[The bottom line of p.~276 will now move to the top of p.~277.]
+
+\bugonpage A277, lines 31--32 (1/27/86)
+
+\ninepoint
+\beginsyntax
+<font assignment>\is^|\fontdimen|<number><font><equals><dimen>
+\endsyntax
+
+\bugonpage A286, sixth-last line (4/28/87)
+
+\ninepoint\noindent
+|\sfcode| table as described in Chapter~12; characters numbered 128
+to~255 set the\cutpar
+
+\bugonpage A287, line 19 (2/15/87)
+
+\ninepoint
+\textindent{$\bull$}|\-|.\enskip
+This ``discretionary hyphen'' command is defined in Appendix H.
+
+\bugonpage A292, lines 9--10 (2/15/87)
+
+\ninepoint
+\textindent{$\bull$}|\-|.\enskip
+This command is usually equivalent to `|\discretionary{-}{}{}|'; the `|-|' is
+therefore interpreted as a ^{hyphen}, not as a minus sign.
+\ (See Appendix~H.)
+
+\bugonpage A308, lines 25--26 (6/1/87)
+
+\ninepoint\indent
+|\def\appendroman#1#2#3{\edef#1{\csname|\parbreak
+| \expandafter\gobble\string#2\romannumeral#3\endcsname}}|
+
+\bugonpage A312, lines 10--14 (8/23/86)
+
+\ninepoint
+\ansno12.11: The interline glue will be zero, and the natural height is
+$1+1-3+2=1\pt$ (because the depth of\/ |\box2| isn't included in the natural
+height); so the glue will ultimately become |\vskip-1pt| when it's set.
+Thus, |\box3| is $3\pt$ high, $2\pt$ deep, $4\pt$ wide. Its reference
+point coincides with that of\/ |\box2|; to get to the reference point
+of\/ |\box1| you go up $2\pt$ and right $3\pt$.
+
+\bugonpage A312, line 21 (8/23/86)
+
+\ninepoint\noindent
+up $4\pt$ to get to the upper left corner of
+|\box4|; then down $-1.6\pt$, i.e., up $1.6\pt$, to\cutpar
+
+\bugonpage A319, line 20 (31/3/87)
+
+\ninepoint\noindent
+make ordinary periods act like |\cdot| symbols: Just define
+|\mathcode`.| to be |"0201|,\cutpar
+
+\bugonpage A328, lines 18--19 (5/14/87)
+
+\ninepoint\noindent
+not performed
+while the expansion is taking place, and the control sequences following
+|\def| are expanded; so the result is an infinite string
+\begintt
+A\def A\def A\def A\def A\def A\def A\def A\def A...
+\endtt
+
+\bugonpage A329, lines 14--15 (8/23/86)
+
+\ninepoint
+\ansno20.5: The |##| feature is indispensable when the replacement text of
+a definition contains other definitions. For example, consider
+
+\bugonpage A356, lines 6--7 (1/30/87)
+
+\ninepoint\noindent
+| \spaceskip=.3333em \xspaceskip=.5em\relax}|\hfil\break
+|\def\ttraggedright{\tt\rightskip=0pt plus2em\relax}|
+
+\bugonpage A356, line 33 (6/1/87)
+
+\ninepoint\noindent
+| \vbox to.2ex{\hbox{\char'26}\vss}\hidewidth}}|
+
+\bugonpage A357, tenth-last line (10/13/86)
+
+\ninepoint\noindent
+|\let\sp=^ \let\sb=_ {\catcode`\_=\active \global\let_=\_}|
+
+\bugonpage A357, third-last and second-last lines (2/17/87)
+
+\ninepoint\noindent
+|\def\pr@m@s{\ifx'\next\let\nxt\pr@@@s \else\ifx^\next\let\nxt\pr@@@t|%
+\hfil\break\strut
+| \else\let\nxt\egroup\fi\fi \nxt}|
+
+\bugonpage A364, fifth-last line (1/30/87)
+
+\ninepoint\noindent
+|\def\fmtname{plain}\def\fmtversion{2.3} % identifies the current format|
+
+\bugonpage A368, bottom line (2/26/86)
+
+\ninepoint
+\line{that includes the symbols
+{\tentex\char'30},~{\tentex\char1}, {\tentex\char'32}, {\tentex\char'34},
+and~{\tentex\char'35}, and he finds that this makes it much more}
+
+\bugonpage A396, line 13 (8/23/86)
+
+\ninepoint
+| \hyphenpenalty=10000 \exhyphenpenalty=10000|
+
+\bugonpage A414, line 10 (3/4/86)
+
+\ninepoint\noindent
+|\font\titlefont=cmssdc10 at 40pt % titles in chapter openings|
+
+\bugonpage A427, line 7 (2/23/86)
+
+\ninepoint\noindent
+the author's book
+{\sl Computer Modern Typefaces}.)
+
+\bugonpage A428, lines 18--20 (6/15/87)
+
+\tenpoint\noindent
+The first eight of these all have essentially the same layout;
+but |cmr5| needs no ligatures, and many of the symbols of |cmti10|
+have different shapes.
+For example, the ^{ampersand} becomes an `^{E.T.}', and the
+^{dollar} changes to ^{pound} ^{sterling}:
+
+\bugonpage A434, lines 25--28 (8/17/86)
+
+\tenpoint\noindent
+from |\nu|~($\nu$). Similarly,
+|\varsigma|~($\varsigma$) should not be confused with |\zeta|~($\zeta$).
+It turns out that |\varsigma| and |\upsilon| are almost never used in
+math formulas; they are included in plain \TeX\ primarily because they are
+sometimes needed in short Greek citations (cf.~Appendix~J).
+
+\bugonpage A447, line 32 (6/1/87)
+
+\ninepoint\noindent
+ters
+also affect mathematical typesetting:
+dimension parameters
+ \hbox{|\delimitershortfall|}\cutpar
+
+\bugonpage A455, new paragraph to follow line 9 (2/15/87)
+
+\begingroup
+\hyphenpenalty=-1000 \pretolerance=-1 \tolerance=1000
+\doublehyphendemerits=-100000 \finalhyphendemerits=-100000
+\ddanger The control sequence ^|\-| is equivalent to
+|\discretionary{\char|$\,h$|}{}{}|, where $h$ is the
+^|\hyphenchar| of the current font, provided that $h$ lies
+between 0 and~255. Otherwise |\-| is equivalent to |\discretionary{}{}{}|.
+
+\endgroup % end the special hyphenation conventions
+
+\bugonpage A457, left column, fifth-last line (2/17/87)
+
+\eightpoint\indent\qquad 155, 201, {\it 305}, 324, $\underline{357}$, 394--395;
+
+\bugonpage A458, left column, line 6 (2/15/87)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt\char`\\-} (discretionary hyphen), 95, 283, 287,\par
+\indent\qquad 292, $\underline{455}$.
+
+\bugonpage A458, left column, near the bottom (5/19/87)
+
+\eightpoint {\tt!} (exclamation point), 51,
+{\it 72}, 73, 75, {\it 169}.
+\nobreak\medskip\noindent[This saves a line that otherwise would make
+the index too long on page 481!]
+
+\bugonpage A458, right column, line 10 (11/27/86)
+
+\eightpoint {\tt\char`\~}
+(tilde), 38, 51, 343, $\underline{353}$; {\sl see also\/} ties.
+
+\bugonpage A458, right column (6/14/87)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt\char`\\accent} (general accent), 9, 54, 86, 283, $\underline{286}$.
+
+\bugonpage A461, entry for boxes (3/16/87)
+
+\eightpoint boxes, 63--67, 77--83, 221--229.
+
+\bugonpage A461, entry for {\tt\char`\\centering} (1/28/86)
+
+\eightpoint {\tt\char`\\centering}, $\underline{347}$, 348, 362.
+
+\bugonpage A462, entry for \<code assignment> (1/27/86)
+
+\eightpoint \<code assignment>, $\underline{277}$.
+
+\bugonpage A464, left column, line 3 (2/15/87)
+
+\eightpoint
+discretionary hyphens, 28, 95--96, 453, $\underline{455}$.
+
+\bugonpage A465, right column, line 8 (5/3/87)
+
+\eightpoint
+expansion of expandable tokens, 212--216, 238,
+
+\bugonpage A466, entry for {\tt\char`\\font}, second line (1/27/86)
+
+\eightpoint \indent\qquad 271, $\underline{276}$.
+
+\bugonpage A466, new entry (2/3/87)
+
+\eightpoint \indent\<fontdef token>, $\underline{271}$.
+
+\bugonpage A467, entry for {\tt\char`\\hideskip} (1/28/86)
+
+\eightpoint {\tt\char`\\hideskip}, $\underline{347}$, 348, 354.
+
+\bugonpage A468, left column line 2 (2/15/87)
+
+\eightpoint\indent\qquad 351, 395, {\it 414}, 454, 455.
+
+\bugonpage A470, entry for {\tt manfnt} (1/15/86)
+
+\eightpoint {\tt manfnt}, 44, 408, 414.
+
+\bugonpage A471, entry for {\tt\char`\\medbreak} (10/13/86)
+
+\eightpoint {\tt\char`\\medbreak}, 111, 113, $\underline{353}$,
+ {\it355}, {\it419}, {\it422}.
+
+\bugonpage A471, entry for {\tt\char`\\moveright} (2/27/87)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt\char`\\moveright}, 80--81, {\it 221}, $\underline{282}$.
+
+\bugonpage A471, entry for Mozart, second line (3/19/86)
+
+\eightpoint \indent\qquad Gottlieb (= Theophilus = Amadeus), 409.
+
+\bugonpage A472, the entry for {\tt\char`\\not} (2/12/87)
+
+\eightpoint\noindent
+[The overprinting here is intentional, since {\tt\char`\\not} is a
+character of width zero. More than a dozen people have reported this
+as an error, but it is not!]
+
+\bugonpage A477, entry for {\tt\char`\\span} (5/3/87)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt\char`\\span}, 215, 238, $\underline{243}$, {\it244}, $\underline{245}$,
+248, 249,\par
+\indent\qquad 282, {\it330}, 385.
+
+\bugonpage A479, entry for ties, second line (11/27/86)
+
+\eightpoint \indent\qquad {\it173}, 353, {\it404}.
+
+\bugonpage A480, changes to various entries (6/14/87)
+
+\eightpoint
+\newbox\astbox \setbox\astbox=\hbox to0pt{\hss\lower1pt\hbox{*}}
+\def\prim#1{\par\indent\copy\astbox{\tt\char`\\#1}}
+\prim{underline}, {\it130--131}, 141, 291, $\underline{443}$.
+\prim{unhbox}, 120, 283, $\underline{285}$, {\it354}, {\it356}, {\it361},
+ {\it399}.
+\prim{unhcopy}, 120, 283, $\underline{285}$, {\it353}.
+\prim{unkern}, $\underline{280}$.
+\prim{unpenalty}, $\underline{280}$.
+\prim{unskip}, 222--223, $\underline{280}$, 286, {\it313}, {\it392},
+ {\it418--419}.
+\prim{unvbox}, 120, 254, $\underline{282}$, 286, {\it354}, {\it361},
+ {\it363}, {\it364}, {\it392}, {\it399}, {\it417}.
+\prim{unvcopy}, 120, $\underline{282}$, 286, {\it361}.
+\prim{vadjust}, 95, 105, 109, 110, 117, 259, $\underline{281}$, 393, 454.
+\prim{valign}, 249, 283, $\underline{285}$--$\underline{286}$, 302,
+ {\it335}, {\it397}.
+\prim{vcenter}, 150--151, 159, 170, 193, 222, 242,
+\prim{vfil}, 71, $\underline{72}$, 111, 256, 281, 286, 417.
+\prim{vfill}, 24, 25, 71, $\underline{72}$, 256--257, 281, 286.
+\prim{vfilneg}, $\underline{72}$, 111, 281, 286.\par
+|\voidb@x|, $\underline{347}$, 348.
+
+\bugonpage A481, left column (6/14/87)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt\char`\\vss}, 71, $\underline{72}$, {\it 255}, 281, 286.
+
+ % volume B
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\buginvol B, in general (7/28/86)
+
+\tenpoint\noindent
+[A number of entries were mistakenly omitted from the mini-indexes
+on the right-hand pages. Here is a combined list of all the missing
+items; you can mount it inside the back cover, say, as a secondary mini-index
+when the first one fails\dots\ ]
+
+\nobreak\medskip
+\setbox0=\vbox{\eightpoint \hsize=11pc \catcode`\_=\active \let_=\_
+ \rightskip=0pt plus 100pt minus 10pt
+ \pretolerance 10000
+ \hyphenpenalty 10000 \exhyphenpenalty 10000
+ \noindent\vbox to1pt{}\par % 1pt = \topskip - \ninept
+ \def\&#1{\hbox{\bf#1\/}} % boldface type for reserved words
+ \obeylines
+ \def\makeref #1 #2 #3#4
+ {\nn=#2 \hangindent=1em \noindent\\{#1}%
+ \if#3:: \else\unhcopy\eqbox \fi#4, \S\number\nn.\par}
+ \makeref active_base 222 =$1$
+ \makeref aux 213 =macro
+ \makeref begin_name 515 :\&{procedure}
+ \makeref big_switch 1030 =$60$
+ \makeref choice_node 689 =$15$
+ \makeref cur_boundary 271 :$0\to \\{save\_size}$
+ \makeref cur_c 724 :\\{quarterword}
+ \makeref cur_group 271 :\\{group\_code}
+ \makeref cur_i 724 :\\{four\_quarters}
+ \makeref cur_level 271 :\\{quarterword}
+ \makeref do_extension 1348 :\&{procedure}
+ \makeref dvi_buf 595 :\&{array}
+ \makeref dvi_gone 595 :\\{integer}
+ \makeref dvi_limit 595 :\\{dvi\_index}
+ \makeref dvi_offset 595 :\\{integer}
+ \makeref dvi_ptr 595 :\\{dvi\_index}
+ \makeref end_graf 1096 :\&{procedure}
+ \makeref error 82 :\&{procedure}
+ \makeref error_stop_mode 73 =$3$
+ \makeref font_base 12 =$0$
+ \makeref font_info 549 :\&{array}
+ \makeref get_token 365 :\&{procedure}
+ \makeref glue_base 222 =$2626$
+ \makeref half_buf 595 :\\{dvi\_index}
+ \makeref handle_right_brace 1068 :\&{procedure}
+ \makeref hash_base 222 =$258$
+ \makeref head 213 =macro
+ \makeref hyf_distance 921 :\&{array}
+ \makeref hyf_next 921 :\&{array}
+ \makeref hyf_num 921 :\&{array}
+ \makeref index 302 =macro
+ \makeref inf 448 :\\{boolean}
+ \makeref init_col 788 :\&{procedure}
+ \makeref init_span 787 :\&{procedure}
+ \makeref input_ln 31 :\&{function}
+ \makeref interaction 73 :$0\to 3$
+ \makeref limit 302 =macro
+ \makeref line_width 830 :\\{scaled}
+ \makeref macro_call 389 :\&{procedure}
+ \makeref main_control 1030 :\&{procedure}
+ \makeref mem 116 :\&{array}
+ \makeref mem_bot 12 =$0$
+ \makeref mem_end 118 :\\{pointer}
+ \makeref mem_top 12 =macro
+ \makeref mlist_to_hlist 726 :\&{procedure}
+ \makeref mode 213 =macro
+ \makeref mode_line 213 =macro
+ \makeref more_name 516 :\&{function}
+ \makeref mu 448 :\\{boolean}
+ \makeref name 302 =macro
+ \makeref nest 213 :\&{array}
+ \makeref off_save 1064 :\&{procedure}
+ \makeref open_log_file 534 :\&{procedure}
+ \makeref output_active 989 :\\{boolean}
+ \makeref p 498 :\\{pointer}
+ \makeref param_stack 308 :\&{array}
+ \makeref pool_file 50 :\\{alpha\_file}
+ \makeref pool_ptr 39 :\\{pool\_pointer}
+ \makeref prefixed_command 1211 :\&{procedure}
+ \makeref prev_depth 213 =macro
+ \makeref prev_graf 213 =macro
+ \makeref prev_prev_r 830 :\\{pointer}
+ \makeref print_err 73 =macro
+ \makeref r 960 :\\{trie\_pointer}
+ \makeref reconstitute 906 :\&{function}
+ \makeref resume_after_display 1200 :\&{procedure}
+ \makeref save_ptr 271 :$0\to \\{save\_size}$
+ \makeref save_stack 271 :\&{array}
+ \makeref scan_dimen 448 :\&{procedure}
+ \makeref scan_math 1151 :\&{procedure}
+ \makeref short_display 174 :\&{procedure}
+ \makeref show_node_list 182 :\&{procedure}
+ \makeref start 302 =macro
+ \makeref state 302 =macro
+ \makeref str_pool 39 :\&{packed}\ \&{array}
+ \makeref str_ptr 39 :\\{str\_number}
+ \makeref str_start 39 :\&{array}
+ \makeref tail 213 =macro
+ \makeref trap_zero_glue 1229 :\&{procedure}
+ \makeref trie 921 :\&{array}
+ \makeref trie_char 921 =macro
+ \makeref trie_link 921 =macro
+ \makeref trie_op 921 =macro
+ \makeref vlist_out 629 :\&{procedure}
+ \makeref write_loc 1345 :\\{pointer}
+ }
+\hbox{\nsize=\ht0 \advance\nsize-\topskip
+ \divide\nsize by 3 \divide\nsize by\ninept
+ \multiply\nsize by\ninept \advance\nsize\topskip
+ \vsplit0 to\nsize \kern1pc
+ \msize=\ht0 \advance\msize-\topskip
+ \divide\msize by 2 \divide\msize by\ninept
+ \multiply\msize by\ninept \advance\msize\topskip
+ \vbox to\nsize{\vsplit0 to\msize\vss}\kern1pc
+ \vbox to\nsize{\box0\vss}}
+
+\buginvol B, in general (4/6/87)
+
+\tenpoint\noindent[The percent signs in all the comments (for example,
+on pages 7 and 50) are in the wrong font! Change `{\tt\%}' to `\%'.]
+
+\bugonpage Bvi, bottom line, and top line of next page (10/12/86)
+
+{\hsize=29pc
+\tenpoint\noindent
+puter Science Report 1097 (Stanford, California, April 1986), 146~pp.
+\ {\it The {\sltt WEB} programs for four utility programs that are
+often used with \TeX: {\sltt POOLtype}, {\sltt TFtoPL},
+{\sltt PLtoTF}, and {\sltt DVItype}.}
+\par}
+
+\bugonpage B2, line 32 (4/22/87)
+
+\ninepoint\noindent\hskip10pt
+{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
+{\tt This\]is\]TeX,\]Version\]2.2\char'23}\quad
+$\{\,$printed when \TeX\ starts$\,\}$
+
+\bugonpage B7, new line after line 25 (1/28/87)
+
+\ninepoint\noindent\hskip10pt
+{\bf if} $\\{max\_in\_open}\ge128$ {\bf then} $\\{bad}\gets6$;
+
+\bugonpage B13, first three lines (4/7/87)
+
+\tenpoint\noindent
+The `\\{name}' parameter, which is of type `{\bf packed array
+$[\langle\\{any}\rangle]$ of \\{char}}', stands for the name of
+the external file that is being opened for input or output.
+Blank spaces that might appear in \\{name} are ignored.
+
+\bugonpage B14, line 30 (4/7/87)
+
+\tenpoint\noindent
+{\bf 31.\quad}%
+The \\{input\_ln} function brings the next line of input from the specified
+file into available\cutpar
+
+\bugonpage B18, line 30 (5/22/86)
+
+\ninepoint\noindent
+\\{str\_ptr}: \\{str\_number};\quad
+$\{\,$number of the current string being created$\,\}$
+
+\bugonpage B21, first line of mini-index, right column (6/14/87)
+
+\eightpoint
+\indent\\{pool\_name}\unhcopy\eqbox|"string"|, \S11.
+
+\bugonpage B34, lines 5--6 (6/14/87)
+
+\tenpoint\noindent
+to delete a token, and/or if some fatal error
+occurs while \TeX\ is trying to fix a non-fatal one. But such recursion
+is never more than two levels deep.
+
+\bugonpage B55, lines 12--13 (4/21/87)
+
+\ninepoint\noindent\hskip10pt
+{\bf if} $r=p$ {\bf then if} $\\{rlink}(p)\ne p$ {\bf then}
+ $\langle\,$Allocate entire node $p$ and {\bf goto} \\{found}%
+ {\sevenrm\kern.5em129}$\,\rangle$;
+
+\bugonpage B57, lines 25--28 (6/14/87)
+
+\tenpoint\noindent
+The first of these has $\\{font}=\\{font\_base}$, and its \\{link}
+points to the second;
+the second identifies the font and the character dimensions.
+The saving feature about oriental characters is that most of them have
+the same box dimensions. The \\{character} field of the first \\{char\_node}
+is a ``\\{charext}'' that distinguishes between graphic symbols whose
+dimensions are identical for typesetting purposes. (See the \MF\ manual.)
+Such an extension of \TeX\ would not be difficult; further details are
+left to the reader.
+
+\bugonpage B58, second line of section 136 (7/23/86)
+
+\tenpoint\noindent
+the values corresponding to `|\hbox{}|'. The \\{subtype} field is set to
+\\{min\_quarterword}, since that's\cutpar
+
+\bugonpage B66, lines 2--8 (4/21/87)
+
+\tenpoint\noindent
+location is
+more efficient than dynamic allocation when we can get away with it. For
+example, locations \\{mem\_bot} to $\\{mem\_bot}+3$ are always used to store the
+specification for glue that is `\hbox{\tt 0pt plus 0pt minus 0pt}'. The
+following macro definitions accomplish the static allocation by giving
+symbolic names to the fixed positions. Static variable-size nodes appear
+in locations \\{mem\_bot} through \\{lo\_mem\_stat\_max}, and static
+single-word nodes appear in locations \\{hi\_mem\_stat\_min} through
+\\{mem\_top}, inclusive. It is harmless to let \\{lig\_trick} and
+\\{garbage} share the same location of \\{mem}.
+
+\bugonpage B67, line 23 (4/13/87)
+
+\ninepoint\noindent\hskip30pt
+$\{\,$previous \\{mem\_end}, \\{lo\_mem\_max}, and \\{hi\_mem\_min}$\,\}$
+
+\bugonpage B71, line 17 (4/15/87)
+
+\ninepoint\noindent\hskip10pt
+{\bf begin while} $p>\\{mem\_min}$ {\bf do}
+
+\smallskip\eightpoint\noindent[Now \\{null} can be removed from the mini-index.]
+
+\bugonpage B74, line 24 (4/15/87)
+
+\ninepoint\noindent
+{\bf procedure} \\{show\_node\_list}($p\;{:}\;\\{integer}$);\quad
+$\{\,$prints a node list symbolically$\,\}$
+
+\bugonpage B74, line 33 (4/15/87)
+
+\ninepoint\noindent\hskip10pt
+{\bf while} $p>\\{mem\_min}$ {\bf do}
+
+\bugonpage B84, line 12 (2/15/87)
+
+\ninepoint\noindent\hskip10pt
+{\bf define} $\\{relax}=0$\quad$\{\,$do nothing ( {\tt\char`\\relax} )$\,\}$
+
+\bugonpage B86, third line of section 210 (8/23/86)
+
+\tenpoint\noindent
+that their special nature is easily discernible.
+The ``expandable'' commands come first.
+
+\bugonpage B88, line 23 (5/22/86)
+
+\ninepoint\noindent
+{\bf procedure\/}\ $\\{print\_mode}(m:\\{integer})$;\quad
+$\{\,$prints the mode represented by $m\,\}$
+
+\bugonpage B93, lines 3--4 (8/17/86)
+
+{\tenpoint\parindent=1em
+In the first region we have 128 equivalents for ``active characters'' that
+act as control sequences, followed by 128 equivalents for single-character
+control sequences.
+\par}
+
+\bugonpage B130, ninth-last line (5/7/87)
+
+\tenpoint\noindent
+This variable has six possible values:
+
+\bugonpage B151, line 9 (4/22/87)
+
+\ninepoint\noindent\hskip20pt
+{\bf begin if} $(\\{end\_line\_char}<0)\lor(\\{end\_line\_char}>127)$
+ {\bf then} \\{incr}(\\{limit});\par\noindent\hskip20pt
+{\bf if} $\\{limit}=\\{start}$ {\bf then}\quad
+ $\{\,$previous line was empty$\,\}$
+
+\bugonpage B160, lines 17--20 (7/28/86)
+
+\tenpoint\noindent
+{\bf 389.\quad}%
+After parameter scanning is complete, the parameters are moved to the
+\\{param\_stack}. Then the macro body is fed to the scanner; in other words,
+\\{macro\_call} places the defined text of the control sequence at the
+top of\/ \TeX's input stack, so that \\{get\_next} will proceed to read it
+next.
+
+\bugonpage B200, top line (5/5/87)
+
+\tenpoint\noindent{\bf 495.\quad}%
+ When we begin to process a new {\tt\char`\\if}, we set
+$\\{if\_limit}\gets\\{if\_code}$; then
+if\/ {\tt\char`\\or} or {\tt\char`\\else} or {\tt\char`\\fi}\cutpar
+
+\bugonpage B217, lines 15--16 (6/14/87)
+
+\tenpoint\noindent
+|DVI| format.
+
+\bugonpage B224, lines 4--7 of section 560 (10/22/86)
+
+\tenpoint\noindent
+name and area strings \\{nom} and \\{aire}, and the
+``at'' size~$s$. If $s$~is negative, it's the negative of a scale factor
+to be applied to the design size; $s=-1000$ is the normal case.
+Otherwise $s$ will be substituted for the design size; in this
+case, $s$ must be positive and less than $2048\rm\,pt$
+(i.e., it must be less than $2^{27}$ when considered as an integer).
+
+\bugonpage B224, second-last line (4/28/87)
+
+\ninepoint\noindent
+\\{done}: {\bf if} \\{file\_opened} {\bf then} \\{b\_close}(\\{tfm\_file});\par
+\noindent\hskip10pt $\\{read\_font\_info}\gets g$;
+
+\bugonpage B255, mini-index at the bottom (4/15/87)
+
+\eightpoint
+$\\{mag}=\rm macro$, \S236.
+
+\bugonpage B257, lines 11--13 (6/14/87)
+
+\ninepoint
+\noindent\hskip20pt{\bf if} $c\ge\\{qi}(128)$ {\bf then}
+ \\{dvi\_out}(\\{set1});\par
+\noindent\hskip20pt\\{dvi\_out}(\\{qo}($c$));
+
+\bugonpage B260, lines 7--8 (4/15/87)
+
+\tenpoint\noindent\hskip10pt
+In the case of \\{c\_leaders} (centered leaders), we want to increase \\{cur\_h}
+by half of the excess space not occupied by the leaders; and in the
+case of \\{x\_leaders} (expanded leaders) we increase\cutpar
+
+\bugonpage B267, mini-index at the bottom (4/15/87)
+
+\eightpoint
+\\{cur\_s}: \\{integer}, \S616.
+$\\{mag}=\rm macro$, \S236.
+$\\{pop}=142$, \S586.
+
+\bugonpage B271, line 10 (8/23/86)
+
+\tenpoint\noindent
+which will be ignored in the calculations
+because it is a highly negative number.
+
+\bugonpage B285, lines 23 and 24 (5/4/87)
+
+\tenpoint\noindent
+the current string would be `{\tt.\char`\^.\char`\_/}'
+if $p$ points to the \\{ord\_noad} for $x$ in the (ridiculous) formula
+`{\tt\char`\\sqrt\char`\{a\char`\^\char`\{\char`\\mathinner\char`\{%
+b\char`\_\char`\{c\char`\\over x+y\char`\}\char`\}\char`\}\char`\}\char`\$}'.
+
+\bugonpage B296, lines 3--5 (5/8/87)
+
+\tenpoint\noindent
+box~$b$ and
+changes it so that the new box is centered in a box of width~$w$.
+The centering is done by putting {\tt\char`\\hss} glue at the left and right
+of the list inside $b$, then packaging the new box; thus, the
+actual box might not really be centered, if it already contains
+infinite glue.
+
+\bugonpage B346, line 19 (5/19/87)
+
+\ninepoint\noindent
+\\{pass\_number}: \\{halfword};\quad
+$\{\,$the number of passive nodes allocated on this pass$\,\}$
+
+\bugonpage B350, lines 36 and 37 (1/28/87)
+
+\ninepoint\noindent
+$v$: \\{pointer};\quad
+$\{\,$points to a glue specification or a node ahead of \\{cur\_p}$\,\}$
+\par\noindent
+$t$: \\{integer};\quad
+$\{\,$node count, if \\{cur\_p} is a discretionary node$\,\}$
+
+\bugonpage B353, lines 8--22 (1/28/87)
+
+\ninepoint
+\noindent\hskip10pt$s\gets\\{cur\_p}$;\par
+\noindent\hskip10pt{\bf if} $\\{break\_type}>\\{unhyphenated}$ {\bf then}
+ {\bf if} $\\{cur\_p}\ne\\{null}$ {\bf then}\par
+\noindent\hskip30pt$\langle\,$Compute the discretionary
+ \\{break\_width} values{\sevenrm\kern.5em840}$\,\rangle$;\par
+\noindent\hskip10pt{\bf while} $s\ne\\{null}$ {\bf do}\par
+\noindent\hskip30pt\vdots\hskip30pt [as before, but indented one less notch]\par
+\noindent\hskip10pt{\bf end};
+
+\bugonpage B354, line 6 (1/28/87)
+
+\tenpoint\noindent
+will be the background plus $l_1$, so the length from \\{cur\_p} to \\{cur\_p}
+should be $\gamma+l_0+l_1-l$,
+minus the length of nodes that will be discarded after the discretionary break.
+
+\bugonpage B354, lines 12--18 (1/28/87)
+
+\ninepoint
+\noindent\hskip10pt{\bf begin} $t\gets\\{replace\_count}(\\{cur\_p})$;\kern5pt
+ $v\gets\\{cur\_p}$;\kern5pt $s\gets\\{post\_break}(\\{cur\_p})$;\par
+\noindent\hskip10pt{\bf while} $t>0$ {\bf do}\par
+\noindent\hskip20pt{\bf begin} $\\{decr}(t)$;\kern5pt
+ $v\gets\\{link}(v)$;\kern5pt
+ $\langle\,$Subtract the width of node $v$ from \\{break\_width}%
+ {\sevenrm\kern.5em841}$\,\rangle$;\par
+\noindent\hskip20pt{\bf end};\par
+\noindent\hskip10pt{\bf while} $s\ne\\{null}$ {\bf do}\par
+\noindent\hskip20pt{\bf begin} $\langle\,$Add the width of
+ node $s$ to \\{break\_width} and increase $t$, unless it's
+ discardable{\sevenrm\kern.5em842}$\,\rangle$;\par
+
+\bugonpage B354, new line after line 21 (1/28/87)
+
+\ninepoint\noindent\hskip10pt
+{\bf if} $t=0$ {\bf then} $s\gets\\{link}(v)$;\quad
+ $\{\,$more nodes may also be discardable after the break$\,\}$
+
+\bugonpage B354, lines 26--34 (1/28/87)
+
+\ninepoint\noindent
+[Change `$s$' to `$v$' throughout this section (8 times).]
+
+\bugonpage B354, line 9 from the bottom (1/28/87)
+
+\tenpoint\noindent{\bf 842.\quad}%
+\ninepoint$\langle\,$Add the width of
+ node $s$ to \\{break\_width} and increase $t$, unless it's
+ discardable{\sevenrm\kern.5em842}$\,\rangle\equiv$
+
+\bugonpage B355, lines 1--3 (1/28/87)
+
+\ninepoint
+\noindent\hskip20pt$\\{hlist\_node},\\{vlist\_node},\\{rule\_node}$:
+ $\\{break\_width}[1]\gets\\{break\_width}[1]+\\{width}(s)$;\par
+\noindent\hskip20pt\\{kern\_node}: {\bf if} $(t=0)\land
+ (\\{subtype}(s)\ne\\{acc\_kern})$ {\bf then}
+ $t\gets-1$\quad$\{\,$discardable$\,\}$\par
+\noindent\hskip30pt{\bf else} $\\{break\_width}[1]\gets
+ \\{break\_width}[1]+\\{width}(s)$;\par
+\noindent\hskip20pt{\bf othercases}
+ \\{confusion}({\tt\char'42 disc2\char'42})\par
+\noindent\hskip20pt{\bf endcases};\par
+\noindent\hskip10pt$\\{incr}(t)$
+
+\bugonpage B355, patches to mini-index at bottom (1/28/87)
+
+\eightpoint
+$\\{acc\_kern}=2$, \S155.\par
+$\\{incr}=\rm macro$, \S16.\par
+$t$: \\{integer}, \S830.\par
+$v$: \\{pointer}, \S830.
+
+\bugonpage B372, lines 12--14 (1/28/87)
+
+\ninepoint
+\noindent\hskip40pt$\langle\,$Change discretionary to compulsory
+ and set $\\{disc\_break}\gets\\{true}${\sevenrm\kern.5em882}$\,\rangle$\par
+\noindent\hskip30pt{\bf else if\/} $(\\{type}(q)=\\{math\_node})\lor
+ (\\{type}(q)=\\{kern\_node})$ {\bf then} $\\{width}(q)\gets0$;
+
+\bugonpage B380, fifth-last line (5/7/87)
+
+\begingroup\tenpoint\noindent\def\!{\kern-1pt}\def\.#1{\hbox{\tt#1}}
+\.b and \.c, the two patterns with and without hyphenation are
+$\.a\,\.b\,\.-\,\.{c\!d}\,\.{e\!f}$ and $\.a\,\.{b\!c}\,\.{d\!e}\,\.f$.
+Thus the\cutpar\endgroup
+
+\bugonpage B386, lines 2--4 (5/21/87)
+
+\tenpoint\noindent
+hyphenation,
+\TeX\ first looks to see if it is in the user's exception dictionary. If not,
+hyphens are inserted based on patterns that appear within the given word,
+using an algorithm due to Frank~M. Liang.
+
+\bugonpage B397, line 28 (5/21/87)
+
+\tenpoint\noindent
+$h=z-c$. It follows that location \\{trie\_max} will
+never be occupied in \\{trie}, and we will have\cutpar
+
+\bugonpage B415, the mini-index (4/6/87)
+
+\eightpoint\noindent[Delete the spurious entry for `$c$'.]
+
+\bugonpage B419, mini-index entry for \\{c} (4/6/87)
+
+\eightpoint $c$: \\{integer}, \S994.
+
+\bugonpage B422, line 24 (8/23/86)
+
+\ninepoint\noindent
+\hskip20pt\\{prev\_p}: \\{pointer};\quad
+$\{\,$predecessor of $p\,\}$
+
+\bugonpage B435, line 16 (10/12/86)
+
+\ninepoint\noindent
+\hskip20pt$\\{width}(p)\gets\\{font\_info}[k].\\{sc}$;\quad
+$\{\,$that's \\{space}$(f)\,\}$\par\noindent
+\hskip20pt$\\{stretch}(p)\gets\\{font\_info}[k+1].\\{sc}$;\quad
+$\{\,$and \\{space\_stretch}$(f)\,\}$\par\noindent
+\hskip20pt$\\{shrink}(p)\gets\\{font\_info}[k+2].\\{sc}$;\quad
+$\{\,$and \\{space\_shrink}$(f)\,\}$\par
+\smallskip\eightpoint\noindent
+[And the mini-index gets three new entries:
+$\\{space}=macro$, \S558.
+$\\{space\_shrink}=macro$, \S558.
+$\\{space\_stretch}=macro$, \S558.]
+
+\bugonpage B495, lines 18 and 19 (2/15/87)
+
+\ninepoint\noindent
+[delete these lines, since the cases cannot occur]
+
+\bugonpage B510, line 8 (12/15/86)
+
+\ninepoint\noindent\hskip30pt
+({\tt"Pretend\]that\]you're\]Hercule\]Poirot:\]Examine\]all\]clues,"})
+
+\bugonpage B527, new line to follow line 13 (6/17/86)
+
+{\tenpoint\parindent=1em
+This program doesn't bother to close the input files that may still be open.
+\par}
+
+\bugonpage B534, fourth-last line (5/4/87)
+
+\ninepoint\noindent\hskip10pt
+{\bf define} $\\{write\_stream}(\hbox{\tt\char`\#})\equiv\\{info}(
+ \hbox{\tt\char`\#}+1)$\quad $\{\,$stream number (0 to 17)$\,\}$
+
+\bugonpage B544, left column (1/28/87)
+
+\eightpoint
+\leftline{\\{acc\_kern}:\quad$\underline{155}$, 191, 837, 842, 879, 1125.}
+
+\bugonpage B546, entry for \\{c} (4/6/87)
+
+\eightpoint\noindent[Add a reference to section $\underline{994}$.]
+
+\bugonpage B547, left column (4/7/87)
+
+\eightpoint
+\leftline{\\{char}:\quad 19, 26--27, 520, 534.}
+
+\bugonpage B547, left column (6/14/87)
+
+\eightpoint
+\leftline{Chinese characters:\quad 134, 585.}
+
+\bugonpage B553, entry for \\{font\_base} (6/14/87)
+
+\eightpoint\noindent[Insert a reference to section 134.]
+
+\bugonpage B555, right column, new entry (10/25/86)
+
+\eightpoint
+\leftline{{\tt Huge page...},\quad 641.}
+
+\bugonpage B556, entry for \\{incr} (1/28/87)
+
+\eightpoint\noindent[Add a reference to section 842.]
+
+\bugonpage B557, entry for \\{is\_char\_node} (1/28/87)
+
+\eightpoint\noindent[Delete the reference to section 881.]
+
+\bugonpage B557, right column (6/14/87)
+
+\eightpoint
+\leftline{Japanese characters:\quad 134, 585.}
+
+\bugonpage B560, right column (1/28/87)
+
+\eightpoint
+\leftline{\\{max\_in\_open}:\quad$\underline{11}$, 14, 304, 328.}
+
+\bugonpage B561, left column, line 10 (4/15/87)
+
+\eightpoint
+\leftline{\qquad 169--172, 174, 178, 182, 1249, 1312, 1334.}
+
+\bugonpage B561, left column (5/1/87)
+
+\eightpoint
+\leftline{{\tt Missing font identifier}:\quad 577.}
+
+\bugonpage B563, left column, line 2 (4/15/87)
+
+\eightpoint
+\leftline{\qquad 136, 145, 149--154, 164, 168--169, 175--176, 182,}
+
+\bugonpage B563, right column (6/14/87)
+
+\eightpoint
+\leftline{oriental characters:\quad 134, 585.}
+
+\bugonpage B569, right column, in appropriate places (10/12/86)
+
+\eightpoint
+\leftline{\\{space}:\quad 547, $\underline{558}$, 752, 755, 1042.}
+\leftline{\\{space\_shrink}:\quad 547, $\underline{558}$, 1042.}
+\leftline{\\{space\_stretch}:\quad 547, $\underline{558}$, 1042.}
+
+\bugonpage B570, third-last line (1/28/87)
+
+\eightpoint\noindent\qquad
+ 786, 795, 809, 819--820, 822, 837, 842--844, 866,
+
+\bugonpage B571, right column (10/25/86)
+
+\eightpoint
+\leftline{{\tt The following...deleted},\quad 641, 992, 1121.}
+
+\bugonpage B571, right column (4/7/87)
+
+\eightpoint
+\leftline{\\{text\_char}:\quad $\underline{19}$, 20, 25, 47.}
+
+\bugonpage B573, right column (5/1/87)
+
+\eightpoint\noindent
+[Delete the entry for `{\tt Undefined font code}'.]
+
+\bugonpage B576, line 2 (1/28/87)
+
+\ninepoint\noindent
+$\langle\,$Add the width of
+ node $s$ to \\{break\_width} and increase $t$, unless it's
+ discardable{\sevenrm\kern.5em842}$\,\rangle$\par
+\noindent\qquad {\eightpoint Used in section 840.}
+
+\bugonpage B591, line 6 from the bottom (1/28/87)
+
+\ninepoint\noindent
+ $\langle\,$Subtract the width of node $v$ from \\{break\_width}%
+ {\sevenrm\kern.5em841}$\,\rangle$\quad
+ {\eightpoint Used in section 840.}
+
+ % volume C
+\hsize=29pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+
+\bugonpage C14, top two lines (3/16/87)
+
+\danger The recursive midpoint rule for curve-drawing was discovered in 1959
+by Paul de Casteljau, who showed that the curve could be described
+algebraically by the remarkably simple formula
+
+\bugonpage C54, sixth-last to fourth-last lines (10/13/86)
+
+\ninepoint Jonathan H. Quick (a student) used `|a.plus1|' as the name
+of a variable at the beginning of his program; later he said `|let|
+|plus=+|'. How could he refer to the variable `|a.plus1|' after that?
+
+\bugonpage C76, line 14 (10/13/86)
+
+\tenpoint
+\newdimen\longesteq
+\setbox0=\hbox{\indent$z_{12}-z_{11}=z_{14}-z_{13}$\quad}
+\longesteq=\wd0
+\noindent\hbox to \longesteq{\indent
+ $x_4=w-.01\\{in}$\hfil}%
+Point 4 should be one-hundredth of an inch inside\cutpar
+
+\bugonpage C103, line 12 (10/12/86)
+
+\tenpoint
+$\\{ht}\0=\\{body\_height}\0$; \ $.5[\\{ht}\0,-\\{dp}\0]=\\{axis}\0$;
+
+\bugonpage C105, line 13 (10/13/86)
+
+\ninepoint
+The vertical line just to the right of the italic left parenthesis
+shows the italic\cutpar
+
+\bugonpage C113, lines 20--27 (8/23/86)
+
+{\catcode`\@=\active
+\def@#1@{\begingroup\def\_{\kern.04em
+ \vbox{\hrule width.3em height .6pt}\kern.08em}%
+ \ifmmode\mathop{\bf#1}\else\hbox{\bf#1\/}\fi\endgroup}
+\danger The command `@erase@ @fill@ $c$' is an abbreviation for
+`@cullit@; @unfill@~$c$; @cullit@'; this zeros out the pixel values inside
+the cyclic path~$c$, and sets other pixel values to~1 if they were positive
+before erasing took place. \ (It works because the initial @cullit@ makes
+all the values 0 or~1, then the @unfill@ changes the values inside~$c$
+to 0 or negative. The final @cullit@ gets rid of the negative values,
+so that they won't detract from future filling and drawing.) \ You can
+also use `@draw@', `@filldraw@', or `@drawdot@' with `@erase@'; for example,
+`@erase@ @draw@~$p$' is an abbreviation for `@cullit@; @undraw@~$p$;
+@cullit@', which uses the currently-picked-up pen as if it were an
+eraser applied to path~$p$.
+
+}
+
+\bugonpage C124, line 9 (6/17/86)
+
+\eightpoint
+\noindent\hskip1.8in
+$\\{branch}_2=\\{flex}((30,570),(10,590),(-1,616))$
+
+\bugonpage C130, 3rd-last line (9/25/86)
+
+\ninepoint\noindent
+{\sl Geometry\/ \bf 1} (1986), 123--140]: Given a sequence
+
+\bugonpage C144, sixth line of the program (8/23/86)
+
+\ninepoint\noindent\hbox to\parindent{\hfil\sevenrm6\ \ \ }%
+$y_2=.1h$; \ $\\{top}\,y_3=.4h$;
+
+\bugonpage C148, the line before the illustration (11/27/86)
+
+\ninepoint\noindent
+are polygons with 32 and 40 sides, respectively:
+
+\smallskip\noindent
+[New illustrations are needed here, since \MF\ version 1.3 improves
+the accuracy of pen polygons.]
+
+\bugonpage C149, 7th line after the illustration (10/24/86)
+
+\ninepoint
+\line{$(200,y+100\pm\alpha)$, where
+$\alpha=\sqrt5/4\approx0.559$. If we digitize these outlines and fill the}
+
+\bugonpage C178, second-last line (8/23/86)
+
+\ninepoint\noindent
+(If $t_3=t_1$~transum~$t_2$, then
+$z$~transformed~$t_3=z$~transformed~$t_1+z$~transformed~$t_2$,\cutpar
+
+\bugonpage C198, fifth-last and fourth-last lines (10/13/86)
+
+\ninepoint\vskip-3pt
+\begindisplay
+$\\{top}\,y_2={\rm round}(\\{top}\,\beta)$.
+\enddisplay
+Such operations occur frequently in practice, so plain \MF\ provides
+convenient\cutpar
+
+\bugonpage C212, lines 9--11 from the bottom (8/23/86)
+
+\ninepoint
+\qquad
+ \alt\[point]\<numeric expression>\[of]\<path primary>\continuerule
+ \alt\[precontrol]\<numeric expression>\[of]\<path primary>\continuerule
+ \alt\[postcontrol]\<numeric expression>\[of]\<path primary>
+
+\bugonpage C233, lines 13--14 (2/15/87)
+
+\ninepoint\noindent
+one column of white
+pixels, if the character is $2a$ pixels wide, because the right edge of
+black pixels is specified here to have the $x$~coordinate $2a-1$.
+
+\bugonpage C247, lines 23--25 (11/27/86)
+
+\ninepoint
+\ansno 16.2:
+ `{\bf pencircle} scaled 1.06060' is the diamond but
+`{\bf pencircle} scaled 1.06061' is~the square. \ (This assumes that
+$\\{fillin}=0$. If, for example, $\\{fillin}=.1$, the change doesn't
+occur until the diameter is 1.20204.) \ The next change is at diameter
+1.5, which\cutpar
+
+\bugonpage C262, lines 1--4 (7/28/86)
+
+\ninepoint
+When we come to macros whose use has not yet been explained---for
+example, somehow |softjoin| and |stop| never made it
+into Chapters 1 through~27---we shall consider them from a user's
+viewpoint. But most of the comments that follow are addressed to a
+potential base-file designer.
+
+\bugonpage C266, line 16 (8/17/86)
+
+\ninepoint\noindent
+variables; they have the side effect of changing the variable's value.
+
+\bugonpage C276, line 26 (6/23/86)
+
+\ninepoint
+\noindent
+| if charic<>0: r((w+charic*hppp,h.o_),(w+charic*hppp,.5h.o_)); fi|
+
+\bugonpage C286, lines 24--26 (10/13/86)
+
+\ninepoint\noindent
+but \MF\ won't let you. And even if this had worked, it wouldn't have
+solved the problem; it would simply have put |ENDFOR| into the
+replacement text of |ast|, because expansion is inhibited when the
+replacement text is being read.
+
+\bugonpage C290, line 1 (8/23/86)
+
+\ninepoint \noindent{\it 2.\enspace Fortuitous loops.\enspace}%
+The `^{max}' and `^{min}' macros in Appendix~B make use of the fact\cutpar
+
+\bugonpage C298, third-last line (8/23/86)
+
+\ninepoint
+$t[\,u_1,\ldots,u_n]\;=\;t\bigl[t[u_1,\ldots,u_{n-1}],t[u_2,\ldots,u_n]\,\bigr]$
+
+\bugonpage C304, 14th-last line (2/15/87)
+
+\ninepoint\noindent
+[replace this `|\smallskip|' by a |\smallskip| between lines!]
+
+\bugonpage C307, fifth-last line (12/7/86)
+
+\ninepoint
+{\def\_{\kern.04em
+ \vbox{\hrule width.3em height .6pt}\kern.08em}%
+\bf adjust\_fit}(\<left sidebearing adjustment>,\thinspace
+ \<right sidebearing adjustment>);
+
+\bugonpage C312, line 34 (10/12/86)
+
+\ninepoint\noindent
+|params[2] = "sans_params"; fontname[2] = "cmssbx10";|
+
+\bugonpage C316, lines 19--21 (8/17/86)
+
+\ninepoint\noindent
+example,
+`|(some| |charht| |values| |had| |to| |be| |adjusted| |by| |as| |much|
+|as| |0.12pt)|' means that~you had too many different nonzero heights, but
+\MF\ found a way to reduce the number to at most~15 by changing some of
+them; none of them had to be\cutpar
+
+\bugonpage C319, line 3 (8/23/86)
+
+\ninepoint\noindent
+specified by saying, e.g.,
+
+\bugonpage C321, line 6 (7/28/86)
+
+\ninepoint\noindent
+| special "identifier " & font_identifier_;|
+
+\bugonpage C334, line 2 (6/23/86)
+
+\ninepoint\noindent
+| currentpicture := currentpicture shifted-(1,1); pix := currentpicture;|
+
+\bugonpage C339, tenth-last line (2/4/87)
+
+\ninepoint\noindent
+| Jackie K\=aren {\L}au\.ra Mar{\'\i}a N\H{a}ta{\l}{\u\i}e {\O}ctave|
+
+\bugonpage C343, second-last line (8/23/86)
+
+\rightline{\eightssi
+the precise needs of a precise but limited intellectual goal.}
+
+\bugonpage C346, 2nd line of entry for `{\tt;}' (1/12/87)
+
+\eightpoint
+\qquad 217, 223--224, 263, 312.
+
+\bugonpage C348, line 6 (6/17/86)
+
+\eightpoint
+concatenation, of paths, {\eightit 70--71}, {\eightit 123}, 127,
+
+\bugonpage C348, just before `debugging' (3/16/87)
+
+\eightpoint
+de Casteljau, Paul de Faget, 14.
+
+\bugonpage C348, right column (3/16/87)
+
+\eightpoint\noindent
+[The entry for `|define_whole_vertical_blacker_pixels|' should be moved up
+before the entry for `|define_whole_vertical_pixels|'.]
+
+\bugonpage C352, left column (6/1/87)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt kern}, {\it 97}, {\it 316}, $\underline{317}$.
+
+\bugonpage C352, right column (3/8/87)
+
+\eightpoint\noindent
+[The entry for `|lowres|' belongs before the entry for `|lowres_fix|'.]
+
+\bugonpage C353, left column (3/8/87)
+
+\eightpoint\noindent
+[The entries for `|mode|' and `\<mode command>' belong before the entry
+for `|mode_def|'.]
+
+\bugonpage C353, entry for {\tt mode\char`\_def} (8/17/86)
+
+\eightpoint
+{\tt mode\char`\_def}, 94, 189, $\underline{\smash{\hbox{\it 270}}}$,
+{\it 278--279}.
+
+\bugonpage C355, right column (4/15/86)
+
+\eightpoint\noindent
+[The entry for `{\tt rulepen}' belongs before the entry for `rules'.]
+
+\bugonpage C355, right column (8/5/86)
+
+\eightpoint
+{\tt screenstrokes}, 191, $\underline{277}$.
+
+\bugonpage C355, 2nd line of entry for `semicolons' (1/12/87)
+
+\eightpoint
+\qquad 217, 223--224, 263, 312.
+
+\bugonpage C356, full names for the Stanfords (4/10/86)
+
+\eightpoint
+Stanford, Amasa Leland, 340.
+
+Stanford, Jane Elizabeth Lathrop, 340.
+
+ % Volume D
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\buginvol D, in general (7/28/86)
+
+\tenpoint\noindent
+[A number of entries were mistakenly omitted from the mini-indexes
+on the right-hand pages. Here is a combined list of all the missing
+items; you can mount it inside the back cover, say, as a secondary mini-index
+when the first one fails\dots\ ]
+
+\nobreak\medskip
+\setbox0=\vbox{\eightpoint \hsize=11pc \catcode`\_=\active \let_=\_
+ \rightskip=0pt plus 100pt minus 10pt
+ \pretolerance 10000
+ \hyphenpenalty 10000 \exhyphenpenalty 10000
+ \noindent\vbox to1pt{}\par % 1pt = \topskip - \ninept
+ \def\&#1{\hbox{\bf#1\/}} % boldface type for reserved words
+ \obeylines
+ \def\makeref #1 #2 #3#4
+ {\nn=#2 \hangindent=1em \noindent\\{#1}%
+ \if#3:: \else\unhcopy\eqbox \fi#4, \S\number\nn.\par}
+ \makeref add_or_subtract 930 :\&{procedure}
+ \makeref after 427 :\&{array}
+ \makeref arg_list 720 :\\{pointer}
+ \makeref b 580 :\\{pixel\_color}
+ \makeref bad_exp 824 :\&{procedure}
+ \makeref before 427 :\&{array}
+ \makeref begin_name 770 :\&{procedure}
+ \makeref bilin1 968 :\&{procedure}
+ \makeref binary_mac 863 :\&{procedure}
+ \makeref blank_rectangle 567 :\&{procedure}
+ \makeref boc_c 1162 :\\{integer}
+ \makeref boc_p 1162 :\\{integer}
+ \makeref cf 298 :\\{fraction}
+ \makeref clockwise 453 :\\{boolean}
+ \makeref ct 298 :\\{fraction}
+ \makeref cubic_intersection 556 :\&{procedure}
+ \makeref cur_pen 403 :\\{pointer}
+ \makeref cur_rounding_ptr 427 :$0\to \\{max\_wiggle}$
+ \makeref cur_spec 403 :\\{pointer}
+ \makeref cur_x 389 :\\{scaled}
+ \makeref cur_y 389 :\\{scaled}
+ \makeref dely 557 :\\{integer}
+ \makeref dep_finish 935 :\&{procedure}
+ \makeref dep_list 587 =macro
+ \makeref dimen_head 1125 :\&{array}
+ \makeref dx 495 :\\{integer}
+ \makeref dy 495 :\\{integer}
+ \makeref d1 464 :$0\to 1$
+ \makeref end_name 772 :\&{procedure}
+ \makeref eqtb 201 :\&{array}
+ \makeref error_stop_mode 68 =$3$
+ \makeref firm_up_the_line 682 :\&{procedure}
+ \makeref get_next 667 :\&{procedure}
+ \makeref gf_buf 1152 :\&{array}
+ \makeref gf_offset 1152 :\\{integer}
+ \makeref gf_ptr 1152 :\\{gf\_index}
+ \makeref halfword 156 =$\\{min\_halfword}\to \\{max\_halfword}$
+ \makeref hash 201 :\&{array}
+ \makeref index 629 =macro
+ \makeref input_ln 30 :\&{function}
+ \makeref interaction 68 :$0\to 3$
+ \makeref j 357 :$0\to \\{move\_size}$
+ \makeref known_pair 872 :\&{procedure}
+ \makeref limit 629 =macro
+ \makeref m_spread 357 :\\{integer}
+ \makeref materialize_pen 865 :\&{procedure}
+ \makeref max_allowed 403 :\\{scaled}
+ \makeref max_c 813 :\&{array}
+ \makeref max_link 813 :\&{array}
+ \makeref max_tfm_dimen 1130 :\\{scaled}
+ \makeref mem_top 12 =macro
+ \makeref mem 159 :\&{array}
+ \makeref memory_word 156 =\&{record}
+ \makeref more_name 771 :\&{function}
+ \makeref m1 464 :\\{integer}
+ \makeref n 580 :\\{screen\_col}
+ \makeref n_sin_cos 145 :\&{procedure}
+ \makeref name 629 =macro
+ \makeref negate_dep_list 904 :\&{procedure}
+ \makeref new_knot 871 :\&{function}
+ \makeref node_to_round 427 :\&{array}
+ \makeref n1 464 :\\{integer}
+ \makeref octant_dir 395 :\&{array}
+ \makeref o1 453 :\\{small\_number}
+ \makeref o2 453 :\\{small\_number}
+ \makeref paint_row 568 :\&{procedure}
+ \makeref param 1096 :\&{array}
+ \makeref param_stack 633 :\&{array}
+ \makeref path_length 916 :\&{function}
+ \makeref perturbation 1119 :\\{scaled}
+ \makeref phi 542 :\\{angle}
+ \makeref pool_ptr 38 :\\{pool\_pointer}
+ \makeref post_head 843 :\\{pointer}
+ \makeref pre_head 843 :\\{pointer}
+ \makeref print_err 68 =macro
+ \makeref print_macro_name 722 :\&{procedure}
+ \makeref quarterword 156 =$0\to 255$
+ \makeref recycle_value 809 :\&{procedure}
+ \makeref row_transition 579 :\\{trans\_spec}
+ \makeref scan_text_arg 730 :\&{procedure}
+ \makeref scroll_mode 68 =$2$
+ \makeref set_controls 299 :\&{procedure}
+ \makeref sf 298 :\\{fraction}
+ \makeref show_context 635 :\&{procedure}
+ \makeref sorted 325 =macro
+ \makeref st 298 :\\{fraction}
+ \makeref start 629 =macro
+ \makeref start_sym 1077 :\\{halfword}
+ \makeref str_pool 38 :\&{packed}\ \&{array}
+ \makeref str_ptr 38 :\\{str\_number}
+ \makeref str_start 38 :\&{array}
+ \makeref take_part 910 :\&{procedure}
+ \makeref tfm_changed 1130 :\\{integer}
+ \makeref tol 557 :\\{integer}
+ \makeref tt 843 :\\{small\_number}
+ \makeref tx 954 :\\{scaled}
+ \makeref txx 954 :\\{scaled}
+ \makeref txy 954 :\\{scaled}
+ \makeref ty 954 :\\{scaled}
+ \makeref tyx 954 :\\{scaled}
+ \makeref tyy 954 :\\{scaled}
+ \makeref unsorted 325 =macro
+ \makeref uv 557 :$0\to \\{bistack\_size}$
+ \makeref xy 557 :$0\to \\{bistack\_size}$
+ \makeref x1 542 :\\{scaled}
+ \makeref x2 542 :\\{scaled}
+ \makeref x3 542 :\\{scaled}
+ \makeref y1 542 :\\{scaled}
+ \makeref y2 542 :\\{scaled}
+ \makeref y3 542 :\\{scaled}
+ }
+\hbox{\nsize=\ht0 \advance\nsize-\topskip
+ \divide\nsize by 3 \divide\nsize by\ninept
+ \multiply\nsize by\ninept \advance\nsize\topskip
+ \vsplit0 to\nsize \kern1pc
+ \msize=\ht0 \advance\msize-\topskip
+ \divide\msize by 2 \divide\msize by\ninept
+ \multiply\msize by\ninept \advance\msize\topskip
+ \vbox to\nsize{\vsplit0 to\msize\vss}\kern1pc
+ \vbox to\nsize{\box0\vss}}
+
+\buginvol D, in general (4/6/87)
+
+\tenpoint\noindent[The percent signs in all the comments (for example,
+on pages 7 and 42) are in the wrong font! Change `{\tt\%}' to `\%'.]
+
+\bugonpage Dvii, line 9 (9/25/86)
+
+{\tenpoint\noindent\hsize=29pc
+{\sl Discrete and Computational Geometry\/ \bf1} (1986), 123--140.
+\ \it Develops the theory\cutpar}
+
+\bugonpage D2, line 27 (6/17/86)
+
+\ninepoint\noindent\hskip10pt
+{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
+{\tt This\]is\]METAFONT,\]Version\]1.3\char'23}\quad
+$\{\,$printed when \MF\ starts$\,\}$
+
+\bugonpage D18, line 30 (5/22/86)
+
+\ninepoint\noindent
+\\{str\_ptr}: \\{str\_number};\quad
+$\{\,$number of the current string being created$\,\}$
+
+\bugonpage D23, second line of mini-index, right column (6/14/87)
+
+\eightpoint
+\indent\\{pool\_name}\unhcopy\eqbox|"string"|, \S11.
+
+\bugonpage D30, lines 33--34 (6/14/87)
+
+\tenpoint\noindent
+to delete a token, and/or if some fatal error
+occurs while \MF\ is trying to fix a non-fatal one. But such recursion
+is never more than two levels deep.
+
+\bugonpage D63, lines 13--14 (5/5/87)
+
+\ninepoint\noindent
+[These two lines can be eliminated, since the variable \\{temp\_ptr}
+is no longer used! If you delete them, also remove \S158 from the
+list of sections where global variables are declared (pages D7 and D552),
+and remove \\{temp\_ptr} from the index on page D540.]
+
+\bugonpage D66, line 6 (5/22/86)
+
+\ninepoint\noindent
+{\bf function\/}\ $\\{get\_node}(s:\\{integer})$: \\{pointer};\quad
+$\{\,$variable-size node allocation$\,\}$
+
+\bugonpage D66, lines 31--32 (3/16/86)
+
+\tenpoint\noindent
+controlled
+growth helps to keep the \\{mem} usage consecutive when \MF\ is
+implemented on ``virtual memory'' systems.
+
+\bugonpage D67, lines 7--8 (4/21/87)
+
+\ninepoint\noindent\hskip10pt
+{\bf if} $r=p$ {\bf then if} $\\{rlink}(p)\ne p$ {\bf then}
+ $\langle\,$Allocate entire node $p$ and {\bf goto} \\{found}%
+ {\sevenrm\kern.5em171}$\,\rangle$;
+
+\bugonpage D86, second line of section 198 (2/27/87)
+
+\noindent
+Individual class numbers have no semantic
+or syntactic significance, except in a few instances\cutpar
+
+\bugonpage D101, line 2 (3/16/86)
+
+\tenpoint\line{%
+like `{\tt x}', or they can
+combine the structural properties of arrays and records, like `{\tt x20a.b}'.
+A}
+
+\bugonpage D102, line 24 (3/16/86)
+
+\tenpoint\line{\kern10pt
+In other words, variables have a hierarchical structure that includes
+enough threads running}
+
+\bugonpage D127, line 10 (5/5/87)
+
+\ninepoint\noindent
+[Variable $r$ can be eliminated, since it is not
+used in this procedure! If you delete it, also remove $\underline{280}$
+from the corresponding index entry on page D536.]
+
+\bugonpage D129, line 15 (5/5/87)
+
+\ninepoint\noindent
+[This line can be eliminated, since \\{sine} and \\{cosine} are not
+used in this procedure! If you delete them, also remove $\underline{284}$
+from the corresponding index entries on pages D538 and D521.]
+
+\bugonpage D142, line 23 (4/24/87)
+
+\tenpoint\noindent
+$(7-\sqrt{28}\,)/12$; the worst case
+occurs for polynomials like $B(0,28-4\sqrt{28},14-5\sqrt{28},42;t)$.)
+
+\bugonpage D178, third-last line (7/30/86)
+
+\tenpoint\line{\quad
+The following code maintains the invariant relations
+$0\le \\{x0}<\max(\\{x1},\\{x1}+\\{x2})$, $\vert\\{x1}\vert<2^{30}$,}
+
+\bugonpage D228, line 13 (7/30/86)
+
+\ninepoint\noindent\kern10pt
+{\bf while} $\\{max\_coef}<\\{fraction\_half}$ {\bf do}
+
+\smallskip\eightpoint\noindent
+The mini-index at the bottom of the next page should also receive the following
+new entry:
+\smallskip\indent
+$\\{fraction\_half}={\rm macro}$, \S105.
+
+\bugonpage D228, 10th-last line (5/5/87)
+
+\ninepoint\noindent\hskip20pt
+{\bf begin} $\\{right\_type}(p)\gets k$;
+\smallskip
+\noindent[Also eliminate `$q,$' seven lines above this, and delete
+$\underline{497}$ from the index entry for \\{q} on page D536.]
+
+\bugonpage D248, lines 16--21 (11/27/86)
+
+\ninepoint\noindent\kern10pt
+$\\{alpha}\gets\\{abs}(u)$;\kern5pt
+ $\\{beta}\gets\\{abs}(v)$;\par\noindent\kern10pt
+{\bf if} $\\{alpha}<\\{beta}$ {\bf then}\par\noindent\kern20pt
+{\bf begin} $\\{alpha}\gets\\{abs}(v)$;\kern5pt
+ $\\{beta}\gets\\{abs}(u)$;\kern5pt
+{\bf end};\quad$\{\,$now $\alpha=\max(\vert u\vert,\vert v\vert)$,
+ $\beta=\min(\vert u\vert,\vert v\vert)\,\}$\par\noindent\kern10pt
+{\bf if} $\\{internal}[\\{fillin}]\ne0$ {\bf then}\par\noindent\kern20pt
+$d\gets d-\\{take\_fraction}(\\{internal}[\\{fillin}],
+ \\{make\_fraction}(\\{beta}+\\{beta},\\{delta}))$;\par\noindent\kern10pt
+$d\gets\\{take\_fraction}((d+4)\;{\bf div}\;8,\\{delta})$;\kern5pt
+$\\{alpha}\gets\\{alpha}\;{\bf div}\;\\{half\_unit}$;
+
+\bugonpage D263, line 20 (3/16/86)
+
+\tenpoint\noindent
+instead of \\{false}, the other routines will simply log the fact
+that they have been called; they won't\cutpar
+
+\bugonpage D268, line 2 (4/28/87)
+
+\tenpoint\noindent
+Given the number~$k$ of an open window, the pixels of positive
+weight in \\{cur\_edges} will be shown\cutpar
+
+\bugonpage D301, line 6 of section 652 (5/5/87)
+
+\ninepoint\noindent
+[This line can be eliminated, since variable $s$ is not
+used in this procedure! If you delete it, also remove $\underline{652}$
+from the corresponding index entry on page D537; remove 652 from
+the index entries for \\{param\_size} and \\{param\_start} on page D534;
+and remove \\{param\_size} from the mini-index on page D301.]
+
+\bugonpage D376, lines 17 and 18 (11/14/86)
+
+\tenpoint\noindent
+[these two mysterious lines should be deleted]
+
+\bugonpage D380, line 11 (5/5/87)
+
+\ninepoint\noindent
+[Variables $q$ and $r$ can be eliminated, since they are not
+used in this procedure! If you delete them, also remove $\underline{862}$
+from the corresponding index entries on page D536.]
+
+\bugonpage D429, line 14 (5/5/87)
+
+\ninepoint\noindent\hskip10pt
+{\bf begin} $p\gets\\{cur\_exp}$;
+\smallskip
+\noindent[Also eliminate line 12, and delete $\underline{985}$ from the
+index entry for \\{vv} on page D543.]
+
+\bugonpage D455, line 5 (5/5/87)
+
+\ninepoint\noindent
+[This line can be eliminated, since variable $t$ is not
+used in this procedure! If you delete it, also remove $\underline{1059}$
+from the corresponding index entry on page D540; remove 1059 from
+the index entries for \\{small\_number} and \\{with\_option} on pages D539
+and D544; and remove \\{with\_option} from the mini-index on page D455.]
+
+\bugonpage D463, line 10 (12/15/86)
+
+\ninepoint\noindent\hskip30pt
+({\tt"Pretend\]that\]you're\]Miss\]Marple:\]Examine\]all\]clues,"})
+
+\bugonpage D465, lines 17--18 (6/14/87)
+
+\tenpoint\noindent
+[Delete these two lines.]
+
+\bugonpage D474, 5th-last line (3/16/86)
+
+\tenpoint\noindent
+depths, or italic corrections) are sorted;
+then the list of sorted values is perturbed, if necessary.
+
+\bugonpage D481, line 12 (6/17/86)
+
+\ninepoint\noindent\hskip10pt
+\\{print\_nl}({\tt\char`\"Font\]metrics\]written\]on\]\char`\"});\kern5pt
+\\{print}(\\{metric\_file\_name});\kern5pt
+\\{print\_char}({\tt\char`\".\char`\"});
+
+\noindent\hskip10pt\\{b\_close}(\\{tfm\_file})
+
+\smallskip\eightpoint\noindent
+The mini-index at the bottom of this page should also receive the following
+new entry:
+\smallskip\indent
+\\{print\_char}: {\bf procedure}, \S58.
+
+\bugonpage D510, new line to follow line 5 (6/17/86)
+
+{\tenpoint\parindent=1em
+This program doesn't bother to close the input files that may still be open.
+\par}
+
+\bugonpage D510, just before the fifth-last line (8/5/86)
+
+\ninepoint\noindent\hskip30pt$\\{internal}[\\{fontmaking}]\gets0$;\quad
+$\{\,$avoid loop in case of fatal error$\,\}$
+
+\bugonpage D520, right column (6/14/87)
+
+\eightpoint
+\leftline{Chinese characters:\quad 1147.}
+
+\bugonpage D526, left column, lines 1--2 (7/30/86)
+
+\eightpoint
+\leftline{\indent\\{fraction\_half}:\quad
+ $\underline{105}$, 111, 152, 288, 408, 496, 543,}
+\leftline{\indent\qquad 1098, 1128, 1141.}
+
+\bugonpage D526, left column, lines 6--7 (7/30/86)
+
+\eightpoint
+\leftline{\indent\qquad 478, 497, 499, 503, 530, 540, 547, 549, 599, 603,}
+\leftline{\indent\qquad 612, 615, 815--816, 917, 1169--1170.}
+
+\bugonpage D528, right column (6/14/87)
+
+\eightpoint
+\leftline{Japanese characters:\quad 1147.}
+
+\bugonpage D530, right column, line 45 (7/30/86)
+
+\eightpoint
+\leftline{\indent\\{max}:\quad$\underline{539}$, 543.}
+
+\bugonpage D533, right column (6/14/87)
+
+\eightpoint
+\leftline{oriental characters:\quad 1147.}
+
+\bugonpage D535, right column, line 27 (6/17/86)
+
+\eightpoint
+\leftline{\indent\qquad 1134, 1163--1165, 1182, 1194, 1200, 1205, 1213.}
+
+\bugonpage D547, bottom two lines (11/27/86)
+
+\ninepoint\noindent
+[These lines, and the top two on the next page, should move down
+so that they appear in alphabetical order just before `Compute
+test coefficients'.]
+ % volume E
+\hsize=29pc
+\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}}
+
+\bugonpage Exiii, lines 1--2 (7/28/86)
+
+\tenpoint\noindent
+February 11--13, 1984), 49.
+\ {\it An example meta-character of the Devanagari alphabet, worked out
+``online'' with the help of Matthew Carter.}
+
+\bugonpage Exiii, line 6 (7/28/86)
+
+\tenpoint\noindent
+{\it and western alphabets work also for Devanagari and Tamil.}
+
+\bugonpage E12, lines 15 and 19 (7/23/86)
+
+\tenpoint\noindent[change `17.32' to `17.28' in both places]
+
+\bugonpage E12, third-last line (12/18/86)
+
+\tenpoint\noindent[change `41' to `40']
+
+\bugonpage E13, lines 3, 4, and 20 (12/18/86)
+
+\tenpoint\noindent[change `40' to `41', `48' to `47', `17' to `7']
+
+\bugonpage E18, line 20 (7/23/86)
+
+\tenpoint\noindent[change `17.32' to `17.28']
+
+\bugonpage E18, line 29 (12/9/86)
+
+\tenpoint\noindent[change `236' to `212' in the {\tt cmss9} column]
+
+\bugonpage E170, top illustration (11/2/86)
+
+\tenpoint\noindent[There should be no ``dish'' or depression in the
+vicinity of point {\tt 3r}; the top edge of the character should be
+straight. This error appears also in the other uses of `\\{no\_dish\_serif}'
+throughout the book, since the illustrations were made before
+`\\{no\_dish\_serif}' was added to the program. See page
+E180~(twice at the top), E370~(twice), E374~(twice), E376~(twice), E378~(top),
+E390~(bottom), E398~(top), E402~(top), E406~(top), E453~(twice).]
+
+\bugonpage E179, new line to be inserted after line 6 (10/13/86)
+
+\ninepoint\noindent
+{\bf if} $\\{shaved\_stem}<\\{crisp}.\\{breadth}$:
+ $\\{shaved\_stem}:=\\{crisp}.\\{breadth}$; {\bf fi}
+
+\bugonpage E219, line 29 (6/2/87)
+
+\ninepoint\line{\\{top} $y_1=h$; \ $x_1=x_2$; \
+ {\bf filldraw stroke} $z_{1e}\dashto z_{2'e}$;\hfil\% stem}
+
+\bugonpage E279, seventh line from the bottom (7/20/86)
+
+\rightline{\eightssi that delicious but restrained humor which
+ her readers found so irresistible.}
+
+\bugonpage E301, new line to be inserted after line 28 (5/15/87)
+
+\ninepoint\noindent
+\quad{\bf if} $\\{lower\_side}>1.2\\{upper\_side}$:
+ $\\{upper\_side}:=\\{lower\_side}$; {\bf fi}
+
+\bugonpage E554, bottom half of page (12/18/86)
+
+\ninepoint\noindent[The letters will change slightly because of the
+corrections to {\tt cmr17} noted on pages 12 and 13.]
+
+\bugonpage E561, line 3 (12/9/86)
+
+\ninepoint\noindent[The numerals should be `\thinspace
+{\niness 0123456789}\thinspace' (i.e., 2/3 point less tall)
+because of the correction made to page 18.]
+
+\bugonpage E562, line 9 (12/9/86)
+
+\ninepoint\noindent[The numerals should be `\thinspace
+{\ninessi 0123456789\/}\thinspace' (i.e., 2/3 point less tall)
+because of the correction made to page 18.]
+
+\bugonpage E572, entry for {\it breadth} (10/13/86)
+
+\eightpoint
+{\it breadth}, 59, 75, 79, 91, 93, 179, 225, 233,
+
+\bugonpage E573, entry for {\tt cmcsc10} (8/17/86)
+
+\eightpoint
+{\tt cmcsc10}, $\underline{30}$--$\underline{31}$, 567.
+
+\bugonpage E576, tenth-last line (5/15/87)
+
+\eightpoint
+{\bf lowres\kern.04em\vbox{\hrule width.3em height .6pt}\kern.08em
+ fix}, 550.
+ \bye
+ Now here are some that I will make soon!
+
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errata.two b/Master/texmf-doc/doc/english/knuth/errata/errata.two
new file mode 100644
index 00000000000..74dde877267
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata.two
@@ -0,0 +1,491 @@
+% More bugs (sigh) in The TeXbook
+
+\input manmac
+\proofmodefalse
+\raggedbottom
+\output{\onepageout{\unvbox255\kern-\dimen@ \vfil}}
+
+\def\rhead{Bugs in {\tensl The \TeX book}, second printing}
+\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
+ \hrule\line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule\nobreak\medskip}
+
+\noindent This is a list of all corrections made to {\sl The \TeX book\/}
+since the second printing. If your copy doesn't say `{\sl\kern-1pt Second
+printing (October 1984)\/}' on the copyright page, you should also look at
+the previous bug list. In fact, the most important corrections to the
+first printing were discovered first, so they've already been~made.
+
+\bugonpage 23, line 16 (10/13/84)
+
+\tenpoint\indent
+|This is TeX, Version 1.0 (preloaded format=plain 83.7.15)|
+
+\bugonpage 33, line 32 (10/21/84)
+
+The bottom line shows how far \TeX\ has gotten until now in the
+|story|{\parfillskip=0pt\par}
+
+\bugonpage 41, lines 7 and 8 (10/8/85)
+
+\ddanger The twin operations ^|\uppercase||{|\<token list>|}| and
+^|\lowercase||{|\<token list>|}| go through a given token list and convert
+all of the character tokens to their\parfillskip=0pt\enddanger
+
+\bugonpage 57, line 17 (1/6/86)
+
+|dd|\quad didot point ($\rm1157\,dd=1238\,pt$)
+
+\bugonpage 61, lines 17--19 (12/18/85)
+
+\ninepoint\noindent
+|depth|, |em|, |ex|,
+|fil|, |height|, |in|, |l|, |minus|, |mm|, |mu|, |pc|, |plus|,
+|pt|, |scaled|, |sp|, |spread|, |to|, |true|, |width|. ^^{reserved words}
+\ (See Appendix~I for references to the contexts in which each of these is
+recognized as a keyword.)
+
+\bugonpage 67, append a new exercise (1/19/85)
+
+\exno=5 \def\chapno{11}
+\gdef\frac#1/#2{\leavevmode\kern.1em
+ \raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em
+ /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}
+
+\ddangerexercise Construct a |\frac| macro such that `|\frac1/2|' yields
+`\frac1/2'.
+
+\bugonpage 130, line 15 (4/17/85)
+
+\beginmathdemo
+|$y'''_3+g'^2$|&y'''_3+g'{}^2\cr
+\endmathdemo
+
+\bugonpage 170, line 5 (5/28/85)
+
+\ninepoint
+\line{tall, unslanted
+letter; and so on. But two of the examples involve corrections that were}
+
+\bugonpage 194, lines 13--15 should be centered better (10/22/84)
+
+\ninepoint
+$$\displaylines{\hfill x\equiv x;\hfill\llap{(1)}\cr
+ \hfill\hbox{if}\quad x\equiv y\quad\hbox{then}\quad
+ y\equiv x;\hfill\llap{(2)}\cr
+ \hfill\hbox{if}\quad x\equiv y\quad\hbox{and}\quad
+ y\equiv z\quad\hbox{then}\quad
+ x\equiv z.\hfill\llap{(3)}\cr}$$
+
+\bugonpage 215, lines 9 and 10 from the bottom (12/23/84)
+
+\ninepoint\noindent
+general format
+is the same as for |\def| and |\gdef|, but \TeX\ blindly expands the tokens
+of the replacement text according to the expansion rules above. For
+example, consider
+
+\bugonpage 233, lines 15--19 (1/19/85)
+
+\medskip
+\settabs\+\indent&10\frac1/2 lbs.\qquad&\it Servings\qquad&\cr
+\+&\negthinspace\it Weight&\it Servings&
+ {\it Approximate Cooking Time\/}*\cr
+\smallskip
+\+&8 lbs.&6&1 hour and 50 to 55 minutes\cr
+\+&9 lbs.&7 to 8&About 2 hours\cr
+\+&9\frac1/2 lbs.&8 to 9&2 hours and 10 to 15 minutes\cr
+\+&10\frac1/2 lbs.&9 to 10&2 hours and 15 to 20 minutes\cr
+
+\bugonpage 236, lines 18--21 (1/19/85)
+
+\ninepoint
+$$\vbox{\openup2pt
+\halign{\hfil\bf#&\quad\hfil\it#\hfil&\quad\hfil#\hfil&
+ \quad\hfil#\hfil&\quad#\hfil\cr
+Squab&Poussin&2&\frac3/4 to 1&Broil, Grill, Roast\cr
+Broiler&Poulet Nouveau&2 to 3&1\frac1/2 to 2\frac1/2&Broil, Grill, Roast\cr
+Fryer&Poulet Reine&3 to 5&2 to 3&Fry, Saut\'e, Roast\cr
+Roaster&Poularde&5\frac1/2 to 9&Over 3&Roast, Poach, Fricassee\cr}}$$
+[This change should also be made at the bottom of page 237.]
+
+\bugonpage 236, fifth-last line (1/19/85)
+
+\ninepoint
+| Squab&Poussin&2&\frac3/4 to 1&Broil, Grill, Roast\cr|
+
+\bugonpage 237, line 25 (10/10/84)
+
+\ninepoint\noindent
+saying `^|\tabskip||=|\<glue>'. For example,
+let's do the poultry table again, but with the{\parfillskip=0pt\par}
+
+\bugonpage 265, bottom line (11/6/85)
+
+[insert a comma after `{\eightss LEONTIEF}'.]
+
+\bugonpage 271, line 8 (11/12/85)
+
+\ninepoint
+\beginsyntax
+<fil unit>\is[fil]\alt<fil unit>[l]
+\endsyntax
+
+\bugonpage 280, lines 7 and 8 (1/8/85)
+
+\ninepoint\noindent
+\<4-bit number>.\enskip
+The specified output stream is opened or closed, for use in |\write|
+commands, as explained in Chapter~21.
+
+\bugonpage 300, lines 5--10 [changed for version 1.3] (11/25/84)
+
+\ninepoint\noindent
+what part of \TeX's memory has become overloaded;
+one of the following fourteen things will be mentioned:
+\begindisplay
+|number of strings|\qquad(names of control sequences and files)\cr
+|pool size|\qquad(the characters in such names)\cr
+|main memory size|\qquad(boxes, glue, breakpoints, token lists,
+ characters, etc.)\cr
+\enddisplay
+
+\bugonpage 300, lines 23--29 [changed for version 1.3] (11/25/84)
+
+\danger If you have a job that doesn't overflow \TeX's capacity, yet
+you want to see just how closely you have approached the limits,
+just set ^|\tracingstats| to a positive value before the end of your
+job. The log file will then conclude with a report on your actual
+usage of the first eleven things named above (i.e., the number of strings,
+\dots, the save size), in that order. ^^{stack positions}
+Furthermore, if you set |\tracingstats| equal to 2~or~more, \TeX\
+will show its current memory usage whenever it
+does a ^|\shipout| command. Such statistics are broken into two
+parts; `|490&5950|' means, for example, that 490 words are being used
+for ``large'' things like boxes, glue, and
+breakpoints, while 5950 words are being used for ``small'' things like
+tokens and characters.
+
+\bugonpage 302, line 14 (10/8/85)
+
+\begintt
+.\tenrm || (ligature ---)
+\endtt
+
+\bugonpage 305, line 26 (12/24/84)
+
+\ninepoint\noindent
+sentable as |^^M|. Asking \TeX\ to |\show\^^M|
+\looseness-1
+produces the response `|>| |\^^M=macro:->\|\]|.|'.
+
+\bugonpage 306, line 10 (7/1/85)
+
+\ninepoint\noindent
+no ``^{explicit kerns},'' and an italic correction is an
+explicit kern.) \ But the italic correction may be too much (especially in an
+italic font); |shelf{|^|\kern||0pt}ful| is often best.
+
+\bugonpage 308, line 25 (3/25/85)
+
+\ninepoint\indent
+|\def\appendroman#1#2#3{\edef#1{\def\noexpand#1{\csname|
+
+\bugonpage 311, insert a new answer (1/19/85)
+
+\ninepoint
+\ansno11.6:
+ |\def\frac#1/#2{\leavevmode\kern.1em|\parbreak
+|\raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em|\parbreak
+|/\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}|
+
+\smallskip\noindent[This causes answer 12.8 to move to page 312;
+answer 12.16 also moves to page 313.]
+
+\bugonpage 320, lines 17--20 (8/10/85)
+
+\ninepoint
+\ansno17.16:
+ |\def\sqr#1#2{{\vcenter{\vbox{\hrule height.#2pt|\parbreak
+ | \hbox{\vrule width.#2pt height#1pt \kern#1pt|\parbreak
+ | \vrule width.#2pt}|\parbreak
+ | \hrule height.#2pt}}}}|
+
+\bugonpage 327, lines 26--33 (10/22/84)
+
+\ninepoint
+\ansno19.16:
+ |$$\displaylines{\hfill x\equiv x;\hfill\llap{(1)}\cr|\parbreak
+ | \hfill\hbox{if}\quad x\equiv y\quad\hbox{then}\quad|\parbreak
+ | y\equiv x;\hfill\llap{(2)}\cr|\parbreak
+ | \hfill\hbox{if}\quad x\equiv y\quad\hbox{and}\quad|\parbreak
+ | y\equiv z\quad\hbox{then}\quad|\parbreak
+ | x\equiv z.\hfill\llap{(3)}\cr}$$|\par\medskip\noindent
+There's also a trickier solution, which begins with
+\begintt
+$$\displaylines{x\equiv x;\hfil\llap{(1)}\hfilneg\cr
+\endtt
+
+\bugonpage 330, line 29 (11/15/85)
+
+\ninepoint\indent
+|\edef\next#1#2{\def#1{\b#2\d}} \next\a\c|
+
+\bugonpage 332, lines 17--24 (1/19/85)
+
+\ninepoint
+\begintt
+\settabs\+\indent&10\frac1/2 lbs.\qquad&\it Servings\qquad&\cr
+\+&\negthinspace\it Weight&\it Servings&
+ {\it Approximate Cooking Time\/}*\cr
+\smallskip
+\+&8 lbs.&6&1 hour and 50 to 55 minutes\cr
+\+&9 lbs.&7 to 8&About 2 hours\cr
+\+&9\frac1/2 lbs.&8 to 9&2 hours and 10 to 15 minutes\cr
+\+&10\frac1/2 lbs.&9 to 10&2 hours and 15 to 20 minutes\cr
+\endtt
+
+\bugonpage 332, lines 33--35 (1/19/85)
+
+\ninepoint\noindent
+proofs. \ (You weren't supposed to think of this,
+but it has to be mentioned.) \ See exercise 11.\fracexno\ for the `|\frac|'
+macro; it's better to say `\frac1/2' than `$1\over2$', in a cookbook.\par
+Another way to treat this table would be to display it in a vbox, instead
+of including a first column whose sole purpose is to specify indentation.
+
+\bugonpage 337, line 28 (11/12/85)
+
+\ninepoint\noindent |\nextnumber|. Quick should put `|\relax|'
+at the end of his macro. \ (The {keywords} |l|,{\parfillskip=0pt\par}
+
+\bugonpage 357, lines 35 and 36 (1/8/85)
+
+\ninepoint\noindent
+|\def\*{\discretionary{\thinspace\the\textfont2\char2}{}{}}|
+
+\bugonpage 357, last two lines (4/17/85)
+
+\ninepoint\noindent
+|\def\pr@m@s{\ifx'\next\let\next\pr@@@s|%
+ | \else\ifx^\next\let\next\pr@@@t|\par\noindent
+| \else\let\next\egroup\fi\fi \next}|\par\noindent
+|\def\pr@@@s#1{\prim@s} \def\pr@@@t#1#2{#2\egroup}|
+
+\bugonpage 358, lines 8--12 (1/23/85)
+
+\ninepoint\noindent
+|\def\hbar{{\mathchar'26\mkern-9muh}}|\hfil\break\null
+|\def\surd{{\mathchar"1270}}|\hfil\break\null
+|\def\angle{{\vbox{\ialign{$\m@th\scriptstyle##$\crcr|\hfil\break\null
+| \not\mathrel{\mkern14mu}\crcr \noalign{\nointerlineskip}|\hfil\break\null
+| \mkern2.5mu\leaders\hrule height.34pt\hfill\mkern2.5mu\crcr}}}}|
+
+\bugonpage 359, lines 7--8 (1/22/85)
+
+\ninepoint\noindent
+|\def\ddots{\mathinner{\mkern1mu\raise7pt\vbox{\kern7pt\hbox{.}}\mkern2mu|%
+\hfil\break\null
+| \raise4pt\hbox{.}\mkern2mu\raise1pt\hbox{.}\mkern1mu}}|
+
+\bugonpage 360, line 22 (1/22/85)
+
+\ninepoint\noindent
+| \mkern5mu \raise.6\dimen@\copy\rootbox \mkern-10mu \box0}|
+
+\bugonpage 361, line 3 (3/27/85)
+
+\ninepoint\noindent
+|\def\buildrel#1\over#2{\mathrel{\mathop{\kern0pt #2}\limits^{#1}}}|
+
+\bugonpage 361, lines 19--20 (1/22/85)
+
+\ninepoint\noindent
+|\def\bmod{\mskip-\medmuskip \mkern5mu|\hfil\break\null
+| \mathbin{\rm mod} \penalty900 \mkern5mu \mskip-\medmuskip}|
+
+\bugonpage 361, line 27 (5/1/85)
+
+\ninepoint\noindent
+|\def\matrix#1{\null\,\vcenter{\normalbaselines\m@th|
+
+\bugonpage 361, bottom line (5/1/85)
+
+\ninepoint\noindent
+| \null\;\vbox{\kern\ht1\box2}\endgroup}|
+
+\bugonpage 362, line 9 (5/1/85)
+
+\ninepoint\noindent
+|\def\eqalign#1{\null\,\vcenter{\openup1\jot \m@th|
+
+\bugonpage 362, lines 17--29 (8/10/85)
+
+{\parindent=0pt\ninepoint
+|\def\@lign{\tabskip=0pt\everycr={}} % restore inside \displ@y|\par
+|\def|^|\displaylines||#1{\displ@y|\parbreak%
+| \halign{\hbox to\displaywidth{|%
+ |$\hfil\@lign\displaystyle##\hfil$}\crcr|\parbreak%
+| #1\crcr}}|
+\smallbreak
+|\def|^|\eqalignno||#1{\displ@y \tabskip=|^|\centering|\parbreak%
+| \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip=0pt|\parbreak%
+| &$\@lign\displaystyle{{}##}$\hfil\tabskip=\centering|\parbreak%
+| &\llap{$\@lign##$}\tabskip=0pt\crcr|\parbreak%
+| #1\crcr}}|\par
+|\def|^|\leqalignno||#1{\displ@y \tabskip=\centering|\parbreak%
+| \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip=0pt|\parbreak%
+| &$\@lign\displaystyle{{}##}$\hfil\tabskip=\centering|\parbreak%
+| &\kern-\displaywidth\rlap{$\@lign##$}\tabskip=\displaywidth\crcr|\parbreak%
+| #1\crcr}}|
+\par}
+
+\bugonpage 363, line 9 (5/12/85)
+
+\ninepoint\noindent
+|\def\footnote#1{\let\@sf=\empty % parameter #2 (the text) is read later|
+
+\bugonpage 364, line 3 (3/23/85)
+
+\ninepoint\noindent
+|\def\plainoutput{\shipout\vbox{\makeheadline\pagebody\makefootline}%|
+
+\bugonpage 364, fifth-last line (9/15/85)
+
+\ninepoint\noindent
+|\def\fmtname{plain}\def\fmtversion{2.0} % identifies the current format|
+
+\bugonpage 399, eighth-last line (2/11/85)
+
+\ninepoint\noindent
+| \baselineskip=\footnotebaselineskip\noindent\unhbox0\par}|
+
+\bugonpage 401, line 5 (1/29/85)
+
+\ninepoint\noindent
+{|\fontdimen| parameters to qualify as a math symbol font).
+(2)~Set all the font identifiers\parfillskip=0pt\par}
+
+\bugonpage 414, line 10 (12/17/84)
+
+\ninepoint\noindent
+|\font\titlefont=cmssdc40 % titles in chapter openings|
+
+%\bugonpage 420, line 9 (10/3/85)
+%
+%\ninepoint\noindent
+%|\def\AmSTeX{$\cal A\kern-.1667em\lower.5ex\hbox{$\cal M$}\kern-.075em|
+% that change comes under `font data', explained away below
+
+\bugonpage 444, bottom line (1/10/85)
+
+\ninepoint\noindent
+depth $d(z)+v$, consisting
+of box~$x$ followed by an appropriate kern followed by box~$z$.
+
+\bugonpage 461, entry for character codes (11/6/85)
+
+\eightpoint
+Add `{\sl see also\/} category codes'.
+
+\bugonpage 463, entries for {\tt dd}, Didot, and didot (1/6/86)
+
+\eightpoint
+Remove the circumflex accents.
+
+\bugonpage 466, left column (1/19/85)
+
+\eightpoint
+fractions, 67, 139--143, 152, 170, 179,\par
+\qquad 186, 444--445.\par
+\quad huge, 196.\par
+\quad slashed form, 67, 139--140, 233, 236.
+
+\bugonpage 467, index entry for {\tt\char`\\hsize} (6/14/85)
+
+\eightpoint
+Add a reference to page {\it 60}.
+
+\bugonpage 469, index entry for {\tt\char`\\kern} (7/1/85)
+
+\eightpoint
+Add a reference to page {\it 306}.
+
+\bugonpage 469, index entry for kerns (7/1/85)
+
+\eightpoint
+Add a reference to page 306.
+
+\bugonpage 469, new entry (11/12/85)
+
+\eightpoint
+|l| after |fil|, $\underline{271}$, 337.
+
+\bugonpage 469, second line on the right (9/13/85)
+
+\eightpoint
+%\def\LaTeX{L\kern-.25em\raise.7ex\hbox{a}\kern-.05em\TeX} % old style
+{L\kern -.36em\raise.6ex\hbox{\sixrm A}\kern-.15em\TeX}, 137.
+
+\bugonpage 470, index entries for {\tt\char`\\longleftarrow}
+ thru {\tt\char`\\Longrightarrow} (10/5/84)
+
+\eightpoint
+The references to page 358 should be underlined (seven times).
+
+\bugonpage 475, index entry for punctuation in formulas (4/29/85)
+
+\eightpoint
+Add a reference to page 161.
+
+\bugonpage 476, index entry for {\tt\char`\\scriptspace} (8/10/85)
+
+\eightpoint
+Change `445' to `445--446'.
+
+\bugonpage 478, first and last lines (10/11/84)
+
+\noindent Delete the last line in the right-hand column
+(since it appears on page 479), and add the following line
+at the top of the left-hand column (since it was dropped by mistake
+from the second printing):
+
+\smallskip
+\eightpoint styles of math formatting, 140--141, 441--447.
+
+\bugonpage 478, new entry after tabbing (5/28/85)
+
+\eightpoint
+tables, {\sl see\/} alignments, tabbing.
+
+\bugonpage 478, tabskip entries (3/25/85)
+
+\eightpoint\noindent Instead of `237--239' and `237--238' it should say
+`$\underline{237}$--$\underline{239}$' twice.
+
+\bugonpage 481, the entry for {\tt\char`\\widetilde} (9/23/85)
+
+\eightpoint
+Page 359 should be underlined.
+
+\bugonpage 483, lines 16--17 (1/19/85)
+
+|P.O. Box 9506|\parbreak
+|Providence RI 02940-9506, USA.|
+
+\bugonpage 483, lines 22--23 (1/19/85)
+
+P.O. Box 9506\par
+Providence RI 02940-9506, USA.
+
+\bigskip
+\hrule
+\bigskip\noindent\tenrm
+Note: The next printing will use the ``real'' Computer Modern fonts
+instead of the ``almost'' Computer Modern fonts. Therefore many of
+the line breaks will be slightly different. Also, the font-related
+numerical data on pages 27, 29, 66, 75, 76, 79, 88, 98, 99, 112, 113, 310,
+314, 396, 399, 409, 420, and 459 will be different. However, these
+differences need not be listed here, because the old book was correct with
+respect to the old fonts.
+
+\bye
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errata1.tex b/Master/texmf-doc/doc/english/knuth/errata/errata1.tex
new file mode 100644
index 00000000000..471971958c3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata1.tex
@@ -0,0 +1,751 @@
+% Bugs (sigh) in The TeXbook
+
+\input manmac
+\proofmodefalse
+\raggedbottom
+\output{\onepageout{\unvbox255\kern-\dimen@ \vfil}}
+
+\def\rhead{Bugs in {\sl The \TeX book}, first printing}
+\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
+ \hrule\line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule\nobreak\medskip}
+
+\noindent This is a list of all corrections made to {\sl The \TeX book\/}
+between the first and second printings. If your copy says `{\sl\kern-1pt Second
+printing (October 1984)\/}' on the copyright page, you've already got
+all of these things corrected. Otherwise, you're a lucky owner of the
+rare first edition; read on.
+
+\bugonpage 29, lines 31--32 (8/25/84)
+
+The underfull box that \TeX\ produces in the 1.5-inch case is really bad;
+with such narrow limits, an occasional wide space is unavoidable. But try
+
+\bugonpage 54, lines 5--6 (4/20/84)
+
+{\parfillskip=0pt
+\ddanger Appendix B shows that plain \TeX\ handles most of the accents
+by using \TeX's ^|\accent| primitive. For example, |\'#1| is equivalent
+to |{\accent19 #1}|, where\par}
+
+\bugonpage 63, seven lines below the first illustration (2/27/84)
+
+\line{points, a width of 5.5555 points, and a depth of zero;
+the letter `g' has a height}
+
+\bugonpage 72, line 35 (2/28/84)
+
+\ninepoint\noindent
+from |0pt|, but |0.00001filll| is infinitely greater than |16383.99999fill|.
+
+\bugonpage 79, line 12 (2/28/84)
+
+\ninepoint\indent
+|\hbox(6.25+1.94444)x312.0, glue set 0.5783, shifted 36.0 []|
+
+\bugonpage 98, line 24 (4/13/84)
+
+\ninepoint
+\line{and |\finalhyphendemerits=5000|. Demerits are in units of
+ ``badness squared,'' so the}
+
+\bugonpage 101, lines 29--30 (3/13/84)
+
+{\parfillskip=0pt
+\danger It's possible to control the length of lines in a much more general
+way, if simple changes to |\leftskip| and |\rightskip| aren't
+flexible enough for your\par}
+
+\bugonpage 113, bottom two lines (3/13/84)
+
+{\parfillskip=0pt
+\ddanger Notice that the first ``|%| line'' of our example says |t=10.0|;
+this is a consequence of another parameter, called ^|\topskip|. Glue
+disappears at a page break, but\par}
+
+\bugonpage 124, eighth-last line (8/25/84)
+
+\ninepoint
+{\parfillskip=0pt\noindent
+discarded, |\box100| will
+be void after the |\vsplit|. And if\/ |\box100| was void before the\par}
+
+\bugonpage 131, display in exercise 16.8 (3/16/84)
+
+\indent
+|If$ x = y$, then $x$ is equal to $y.$|
+
+\bugonpage 170, table in middle of the page (2/12/84)
+
+\ninepoint
+$$\baselineskip0pt\lineskip0pt
+\halign to\hsize
+ {\strut\hbox to\parindent{\it#\hfil}& % for the legend "Left atom"
+ #\hfil\quad& % for the row labels
+ #\hfil\tabskip 0pt plus 10pt& % for the rule at the left
+ \hbox to 25pt{\tt\hss#\hss}& % for column 1
+ \hbox to 25pt{\tt\hss#\hss}& % for column 2
+ \hbox to 25pt{\tt\hss#\hss}& % for column 3
+ \hbox to 25pt{\tt\hss#\hss}& % for column 4
+ \hbox to 25pt{\tt\hss#\hss}& % for column 5
+ \hbox to 25pt{\tt\hss#\hss}& % for column 6
+ \hbox to 25pt{\tt\hss#\hss}& % for column 7
+ \hbox to 25pt{\tt\hss#\hss}& % for column 8
+ #\hfil\tabskip0pt\cr % for the rule at the right
+\noalign{\vskip-6pt} % it just happens that there's extra white space
+&&&&\multispan7\hss\it Right atom\hss\cr
+\noalign{\vskip3pt}
+&&&\rm Ord&\rm Op&\rm Bin&\rm Rel&\rm Open&\rm Close&\rm Punct&\rm Inner\cr
+\noalign{\vskip2pt}
+\omit&&\multispan{10}\leaders\hrule\hfil\cr
+\omit\vbox to 2pt{}&&\vrule&&&&&&&&&\vrule\cr
+&Ord&\vrule&0&1&(2)&(3)&0&0&0&(1)&\vrule\cr
+&Op&\vrule&1&1&*&(3)&0&0&0&(1)&\vrule\cr
+&Bin&\vrule&(2)&(2)&*&*&(2)&*&*&(2)&\vrule\cr
+Left&Rel&\vrule&(3)&(3)&*&0&(3)&0&0&(3)&\vrule\cr
+atom&Open&\vrule&0&0&*&0&0&0&0&0&\vrule\cr
+&Close&\vrule&0&1&(2)&(3)&0&0&0&(1)&\vrule\cr
+&Punct&\vrule&(1)&(1)&*&(1)&(1)&(1)&(1)&(1)&\vrule\cr
+&Inner&\vrule&(1)&1&(2)&(3)&(1)&0&(1)&(1)&\vrule\cr
+\omit\vbox to 2pt{}&&\vrule&&&&&&&&&\vrule\cr
+\omit&&\multispan{10}\leaders\hrule\hfil\cr}$$
+
+\bugonpage 173, line 11 (1/2/84)
+
+\indent|Clearly $a_i<b_i$ for~$i=1, 2, \ldots, n$.|
+
+\bugonpage 176, bottom two lines (7/20/84)
+
+\def\chapno{ 18} \exno=23 % for exercise 18.24!
+\dangerexercise Typeset the display \ \lower12pt\null
+$\tenpoint\smash{\displaystyle
+\left\lgroup\matrix{a&b&c\cr d&e&f\cr}\right\rgroup
+ \left\lgroup\matrix{u&x\cr v&y\cr w&z\cr}\right\rgroup
+}$, \
+using ^|\lgroup| and ^|\rgroup|.
+
+\bugonpage 189, line 18 (2/13/84)
+
+\ninepoint\noindent
+{\parfillskip=0pt
+when there is an overlap.] \ If $e=0$ and if there is an |\leqno|,
+the equation number is\par}
+
+\bugonpage 204, line 31 (2/13/84)
+
+\ninepoint\noindent
+of\/ |\a| is delimited by a left brace.
+
+\bugonpage 212, line 23 (7/8/84)
+
+\ninepoint\noindent
+it equals~2.) \
+Similarly, ^|\tracingmacros||=2| will trace |\output|, |\everypar|, etc.
+
+\bugonpage 216, first five lines (8/25/84)
+
+\ddanger Expanded definitions that are made with |\edef| or |\xdef| continue
+to expand tokens until only unexpandable tokens remain, except that
+token lists produced by `^|\the|' are not expanded further. Furthermore
+a token following `^|\noexpand|' will not be expanded, since its ability
+to expand has been nullified. These two operations can be used to control
+^^{expansion, avoiding} what gets expanded and what doesn't.
+
+\bugonpage 219, simplification of line 18 (2/15/84)
+
+\ninepoint\indent
+| \advance\count0 by\count2 \hexdigit}}|
+
+\bugonpage 223, lines 3--4 (3/13/84)
+
+{\parfillskip=0pt
+\ddanger Chapters 24 to 26 present summaries of all \TeX's operations
+in all modes, and when those summaries mention a `\<box>' they mean one
+of the seven\par}
+
+\bugonpage 242, line 29 (1/2/84)
+
+\ninepoint\noindent
+{\parfillskip=0pt
+a relation, the solution is to insert `|{}|' ^^{lbrace rbrace}
+at the beginning of the right-hand formula; \TeX
+\par}
+
+\bugonpage 245, line 24 (2/15/84)
+
+\ninepoint\noindent
+of a box that spans columns $i$ through~$j$,
+hence the glue in such a box might shrink.
+
+\bugonpage 248, the fourth dangerous bend (2/15/84)
+
+{\parfillskip=0pt
+\ddanger You have to be careful with the use of |&| and ^|\span| and ^|\cr|,
+because these tokens are intercepted by \TeX's scanner even when it is
+not expanding macros.\par}
+
+\bugonpage 249, lines 20--26 (2/15/84)
+
+\ninepoint\noindent
+line (see Chapter~9).
+If you don't want a~|\cr| at the end of a certain line,
+just type `|%|' and the corresponding |\cr|
+will be ``commented out.'' ^^{percent} \ (This special mode doesn't
+work with ^|\+| lines, since |\+| is a macro whose argument is delimited
+by the token `|\cr|', not simply by a token that has the same meaning
+as~|\cr|. ^^{delimited arguments} But you can redefine |\+| to overcome
+this hurdle, if you want to. For example, define a macro |\alternateplus|
+that is just like |\+| except that its argument is delimited by the active
+character |^^M|; then include the command `|\let\+=\alternateplus|' as
+part of\/ |\obeylines|.)
+
+\bugonpage 253, lines 28--32 (4/25/84)
+
+\ninepoint\noindent
+vertical list at what it thinks is the best place, and at such times
+it enters internal vertical mode and begins to read the commands in the
+current |\output| routine. When the output routine begins, ^|\box255|
+contains the page that \TeX\ has completed; the output routine is supposed to
+do something with this vbox. When the output routine ends, the list of
+items that it has constructed in internal vertical mode is placed just%
+{\parfillskip=0pt\par}
+
+\bugonpage 254, lines 1--13 (3/13/84)
+
+\ddanger \TeX's primitive command |\shipout|\<box> is what actually
+causes output. It sends the contents of the box to the |dvi| file,
+which is \TeX's main output file; after \TeX\ has finished,
+the ^|dvi| file will contain a compact device-independent encoding of
+instructions that specify exactly what should be printed. When a
+box is shipped out, \TeX\ displays the values of\/ |\count0| through
+|\count9| on your terminal, ^^|\count0| as explained in Chapter~15; these
+ten counters are also recorded in the |dvi| file, where they can be used
+to identify the page. All of the ^|\openout|, ^|\closeout|, and ^|\write|
+commands that appear inside of the \<box> are performed in their natural
+order as that box is being shipped out. Since a |\write| command
+expands macros, as explained in Chapter~21, \TeX's scanning mechanism
+might detect syntax errors while a |\shipout| is in progress. If
+^|\tracingoutput| is nonzero at the time of a |\shipout|, the contents
+of the \<box> being shipped are written into your log file in symbolic
+form. You can say |\shipout| anywhere, not only in an output routine.
+
+\bugonpage 255, line 33 (4/25/84)
+
+\ninepoint\indent
+|\nointerlineskip|
+
+
+\bugonpage 256, starting with line $-17$ (11/1/83)
+
+\ninepoint
+\textindent{6)} Finally, the ^|\dosupereject| macro is designed to clear
+out any insertions that have been held over, whether they are illustrations
+or footnotes or both: ^^|\insertpenalties| ^^|\supereject|
+\begintt
+\ifnum\insertpenalties>0
+ \line{} \kern-\topskip \nobreak
+ \vfill\supereject\fi
+\endtt
+The mysterious negative ^|\kern| here cancels out the natural space of the
+^|\topskip| glue that goes above the empty |\line|; that empty line box
+prevents the ^|\vfill| from disappearing into a page break. The vertical
+list that results from |\dosupereject| is placed on \TeX's list of things
+to put out next, just after the straggling insertions have been
+reconsidered as explained in Chapter~15. Hence another super-eject will
+occur, and the process will continue until no insertions remain.
+
+\bugonpage 262, line 14 (2/12/84)
+
+\ninepoint\indent
+|\def\endindex{\mark{}\break\endgroup}|
+
+\bugonpage 262, lines 34 and 35 (2/12/84)
+
+\ninepoint\noindent
+if\/ |\next| is `|\endindex|',
+the next commands executed will be `|\vfill|\allowbreak
+|\mark{}|\allowbreak|\break|\allowbreak|\endgroup|';
+otherwise the line will be treated as a main entry.
+
+\bugonpage 269, line 23 becomes two lines (8/25/84)
+
+\ninepoint\noindent
+tokens like |+|$_{12}$;
+(3)~keywords like \[pt]; (4)~control sequence names like |\dimen|;
+or (5)~the special symbols |{|, |}|, |$|.
+
+\bugonpage 274, line 24 (2/15/84)
+
+\ninepoint\indent
+|\lineskip|\quad(interline glue if\/ |\baselineskip| isn't feasible)
+
+\bugonpage 289, slight clarification on lines 39--41 (3/10/84)
+
+\ninepoint
+A \<math character> defines a 15-bit number either by specifying it
+directly with ^|\mathchar| or in a previous ^|\mathchardef|, or by
+specifying a 27-bit |\delimiter| value; in the latter case, the least
+significant 12~bits are discarded.
+
+
+\bugonpage 307, a slightly more explicit answer (11/3/83)
+
+\ninepoint\noindent
+\hbox to\parindent{\bf\hss6.3.\enspace}%
+It represents the heavy bar that shows up in
+your output. \ (This bar wouldn't be present if\/ ^|\overfullrule| had been
+set to |0pt|, nor is it present in an underfull box.)
+
+\bugonpage 313, first four lines (3/13/84)
+
+{\ninepoint\parfillskip=0pt
+\ansno12.17:
+ You get `A' at the extreme left and `puzzle.\null' at the extreme right,
+because the space between words has the only stretchability that is finite;
+the infinite stretchability cancels out. \ (In this case, \TeX's rule
+about ^{infinite glue} differs from what you would get in the limit if the
+value of $1\,{\rm fil}$ were finite but getting larger and larger.
+The true\par}
+
+\bugonpage 315, first three lines (3/13/84)
+
+\ninepoint
+\ansno14.14:
+ Just say |\parfillskip|\stretch|=|\stretch|\parindent|. Of course,
+\TeX\ will not be able to find appropriate line breaks unless each
+paragraph is sufficiently long or sufficiently lucky; but with an
+appropriate text, your output will be immaculately
+symmetrical.{\parfillskip=\parindent\par}
+
+\bugonpage 324, line 16 (2/15/84)
+
+\ninepoint\noindent
+\hbox to\parindent{\bf\hss18.41.\enspace}%
+|$$\{\underbrace{\overbrace{\mathstrut a,\ldots,a}|
+
+\bugonpage 324, first line of answer 18.44 (4/11/84)
+
+\ninepoint
+\ansno18.44:
+ |$$\mathop{{\sum}'}_{x\in A}f(x)\mathrel{\mathop=^{\rm def}}|
+
+\bugonpage 333, beginning of the final paragraph (12/19/83)
+
+\ninepoint
+{\sl Note:\/} The stated preamble solves the problem and demonstrates
+that \TeX's line-breaking capability can be used within tables. But this
+particular table is not really a good example of the use of\/ |\halign|,
+because \TeX\ could typeset it directly, using ^|\everypar| in an
+appropriate manner to set up the hanging indentation, and using |\par|
+instead of\/ |\cr|. For example, one could say
+
+\bugonpage 341, the bottom line was left out! (2/9/84)
+
+\line{Footline\quad\dotfill\quad Page 1009}
+
+\bugonpage 345, top three lines (1/26/84)
+
+\ninepoint{\noindent\parfillskip=0pt
+A mathcode is relevant only when the corresponding category code is
+11 or~12; therefore many of these codes will rarely be looked at. For
+example, the math code for |^^M| specifies the character |\oplus|,
+but it's hard to imagine a user who would want |^^M|\par}
+
+\bugonpage 345, line 31 (2/29/84)
+
+\ninepoint\noindent
+|\delcode`\<="26830A \delcode`\\="26E30F \delcode`\>="26930B|
+
+\bugonpage 347, lines 1 and 2 (3/16/84)
+
+\ninepoint\noindent
+|\count18=3 % this counter allocates math families 4, 5, 6, ...|\hfil\break
+|\count19=255 % this counter allocates insertions 254, 253, 252, ...|
+
+\bugonpage 350, line 9 from the bottom (3/16/84)
+
+\ninepoint\noindent
+font, whose information does not have to be loaded again.
+
+\bugonpage 354, line 5 (6/7/84)
+
+\ninepoint\noindent
+|\def\ialign{\everycr={}\tabskip=0pt \halign} % initialized \halign|
+
+\bugonpage 355, lines 19--21 (7/3/84)
+
+\ninepoint\noindent
+subdivision in a document; to use it, you say
+`|\beginsection|\<section title>' followed by a blank line (or~|\par|).
+The macro first emits glue and penalties, designed to start a new page
+if the present page is nearly full; then it makes a ^|\bigskip| and
+puts the section{\parfillskip=0pt\par}
+
+\bugonpage 355, lines 27--29 (7/3/84)
+
+\ninepoint\noindent
+|\outer\def\beginsection#1\par{\vskip0pt plus.3\vsize\penalty-250|
+\par\noindent
+| \vskip0pt plus-.3\vsize\bigskip\vskip\parskip|
+\par\noindent
+| \message{#1}\leftline{\bf#1}\nobreak\smallskip\noindent}|
+
+\bugonpage 355, line 37 (4/24/84)
+
+\ninepoint\noindent
+|\outer\def\proclaim #1. #2\par{\medbreak|
+
+\bugonpage 356, seven lines from the bottom (4/11/84)
+
+\ninepoint\noindent
+|\def|^|\TeX||{T\kern-.1667em \lower.5ex\hbox{E}\kern-.125em X}|
+
+\bugonpage 359, starting with line 2 (11/16/83)
+
+\ninepoint
+\beginlines
+|\mathchardef\ldotp="602E\mathchardef\cdotp="6201\mathchardef\colon="603A|
+|\def\ldots{\mathinner{\ldotp\ldotp\ldotp}}|
+|\def\cdots{\mathinner{\cdotp\cdotp\cdotp}}|
+|\def\vdots{\vbox{\baselineskip=4pt \lineskiplimit=0pt|
+| \kern6pt \hbox{.}\hbox{.}\hbox{.}}}|
+|\def\ddots{\mathinner{\mskip1mu\raise7pt\vbox{\kern7pt\hbox{.}}\mskip2mu|
+| \raise4pt\hbox{.}\mskip2mu\raise1pt\hbox{.}\mskip1mu}}|
+\endlines
+
+\bugonpage 359, starting with line 19 (11/3/83)
+
+{\ninepoint\parindent=0pt
+|\def|^|\overbrace|%
+ |#1{\mathop{\vbox{\ialign{##\crcr\noalign{\kern3pt}|\parbreak%
+| \downbracefill\crcr\noalign{\kern3pt\nointerlineskip}|\parbreak%
+| $\hfil\displaystyle{#1}\hfil$\crcr}}}|^|\limits||}|
+
+|\def|^|\underbrace||#1{\mathop{\vtop{\ialign{##\crcr|\parbreak%
+| $\hfil\displaystyle{#1}\hfil$\crcr|%
+ |\noalign{\kern3pt\nointerlineskip}|\parbreak%
+| \upbracefill\crcr\noalign{\kern3pt}}}}\limits}|
+}
+
+\bugonpage 359, seventh line from the bottom (2/29/84)
+
+\ninepoint\noindent
+|\def\backslash{\delimiter"026E30F } \def\bracevert{\delimiter"000033E }|
+
+\bugonpage 361, line 3 (8/17/84)
+
+\ninepoint\noindent
+
+|\def\buildrel#1\over#2{\mathrel{\mathop{\null#2}\limits^{#1}}}|
+
+\bugonpage 363, line 10 (4/26/84)
+
+\ninepoint\noindent
+| \ifhmode\edef\@sf{\spacefactor=\the\spacefactor}\/\fi|
+
+\bugonpage 364, starting with line 10 (11/1/83)
+
+{\ninepoint\parindent=0pt
+|\def\dosupereject{\ifnum\insertpenalties>0 % something is being held over|%
+\parbreak
+| \line{}\kern-\topskip\nobreak\vfill\supereject\fi}|
+}
+
+\bugonpage 364, line 28 (7/8/84)
+
+\ninepoint\noindent
+| \tracingmacros=2 \tracingparagraphs=1 \tracingrestores=1 |
+
+\bugonpage 370, line 7 (3/16/84)
+
+\ninepoint\noindent
+information about the \TeX\ Users Group.)
+
+\bugonpage 374, line 23 (7/8/84)
+
+\ninepoint
+\line{log file when |\tracingmacros=2| and
+ |\tracingcommands=2|. One of the important ways}
+
+\bugonpage 379, line 1 (1/12/84)
+
+\ninepoint\noindent
+A particular item can be selected by its position number from the left:
+
+\bugonpage 381, line 6 (2/12/84)
+
+\ninepoint\indent
+|\newcount\lineno % the number of file lines listed|
+
+\bugonpage 381, lines 24 and 25 (12/15/83)
+
+\ninepoint
+{\parfillskip=0pt
+Instead of listing a file verbatim, you might want to define a |\verbatim|
+macro such that `|\verbatim{$this$|{\tt\ is }|{\it!}}|' yields
+`|$this$|{\tt\ is }|{\it!}|'. It's somewhat\par}
+
+\bugonpage 385, lines 22 and 23 (1/12/84)
+
+\ninepoint\noindent
+macro, a parameter, or a token list
+variable; (b)~when \TeX\ must determine whether the token
+|&|~or ^|\span| ^^{ampersand}
+or ^|\cr| or~^|\crcr| is the end of an entry within an ^{alignment}.
+
+\bugonpage 387, two paragraphs in right column (1/18/84)
+
+\setbox0=\vbox{
+\eightpoint
+\tolerance=9999
+\hbadness=2300
+\finalhyphendemerits=3000000
+\doublehyphendemerits=1000000
+\parskip=1pt
+\parindent=1.5em
+\frenchspacing
+\hsize=166.8125pt
+\def\\#1{\raise.5pt\hbox{$\scriptscriptstyle
+ \ifx#1`\langle\!\langle\else\rangle\!\rangle\fi$}% Spanish quote marks
+ \ifx#1`\nobreak\hskip0pt \fi} % allow hyphenation
+\item{A.} Exactamente. Pero los profesores son tan conservadores
+que temer\'\i an espantar al tipo de estudiante \\`apisonadora\\'
+que hace lo que le proponen para casa, obe\-dien\-te\-mente y de forma
+mec\'anica. Adem\'as, no creo que les gustase el trabajo adicional
+de calificar respuestas a preguntas abiertas.
+
+\item{}La forma tradicional es dejar la parte creativa para los cursos
+altos. Durante diecisiete a\~nos o m\'as se ense\~na al es\-tu\-diante a
+aprobar, luego de golpe, cerca de la graduaci\'on, se le pide que haga
+algo original.
+
+}\rightline{\box0}
+
+\bugonpage 395, lines 21 and 22 (1/12/84)
+
+\ninepoint\noindent
+{\parfillskip=0pt
+Notice that the macros need to do their own checking for ligatures, and
+they also take appropriate actions when a paragraph begins with an opening
+quote. Since |\kern|\par}
+
+\bugonpage 399, line 1 (1/10/84)
+
+\ninepoint
+{\parfillskip=0pt
+Inside the output routine, |\box\footins| will now be a vbox of hboxes, and
+\par}
+
+\bugonpage 399, line 9 (2/28/84)
+
+\ninepoint\indent
+|.\hbox(7.6359+0.0)x269.62617 []|
+
+\bugonpage 407, line 4 (6/10/84)
+
+\ninepoint\noindent
+|\beginlinemode| and |\beginparmode| are defined to initiate these
+modes; and another%
+{\parfillskip=0pt\par}
+
+\bugonpage 408, line 15 (12/14/83)
+
+\noindent
+| P. O. Box 1009, Haga Alto, CA 94321 USA}|
+
+\smallskip\noindent\ninepoint
+[Also change the ZIP code in the return address on the envelope
+illustrated at the bottom of page 405.]
+
+\bugonpage 409, line 5 (2/18/84)
+
+\ninepoint\noindent
+|\font\twelveit=cmti10 at 12pt % (a cheap substitute for cmti12)|
+
+\bugonpage 417, last six lines (8/25/84)
+
+\ninepoint\noindent
+^|\parskip|
+of |0pt| |plus|~|.8pt| between adjacent entries, and since there is room for
+more than 50 lines per column; therefore the |manmac| balancing routine tries
+to make both the top and bottom baselines agree at the end of the index.
+In applications where the glue is not so flexible it would be more
+appropriate to let the right-hand column be a little short; the best
+way to do this is probably to replace the command `|\unvbox3|' by
+`|\dimen2=|^|\dp||3| |\unvbox3| |\kern-\dimen2| ^|\vfil|'.
+
+\bugonpage 422, lines 24--26 (2/9/84)
+
+\ninepoint\noindent
+(The last two lines use |\d@nger| and |\dd@nger|, which are non-|\outer|
+equivalents of\/ |\danger| and |\ddanger|; such duplication is necessary
+because control sequences of type ^|\outer| cannot appear within a |\def|.)
+
+\bugonpage 428, in the table of sixteen basic fonts (12/19/83)
+
+\ninepoint\noindent
+[The special fonts called |cmi10| and |cmi7| and |cmi5| should really be
+called |cmmi10| and |cmmi7| and |cmmi5|.]
+
+\bugonpage 433, last eight lines (8/17/84)
+
+\noindent
+explained in Appendix~G\null. If you want to increase
+the number of parameters past the number that actually appear in a font's
+metric information file, you can assign new values immediately after that font
+has been loaded. For example, if some font |\ff| with seven parameters
+has just entered \TeX's memory, the command |\fontdimen13\ff=5pt| will set
+parameter number~13 to $5\pt$; the intervening parameters, numbers 8--12,
+will be set to zero. You can even give more than seven parameters to
+^|\nullfont|, provided that you assign the values before any actual fonts
+have been loaded.
+
+\bugonpage 445, line 6 (11/11/83)
+
+\ninepoint
+\line{if $(a-{1\over2}\theta)-
+\bigl(h(z)-v\bigr)<\varphi$, increase~$v$ by the difference. Finally
+construct a vbox of}
+
+\bugonpage 449, line 12 (1/18/84)
+
+\line{immediately clear why the `n' should
+be attached to the `e' in one case but not}
+
+\bugonpage 459, left column, line 2 (1/18/84)
+
+\eightpoint
+al-Khw\^arizm\^\i, abu Ja`far Mu\d{h}ammad
+
+\bugonpage 460, index entry for Beethoven (8/16/84)
+
+\eightpoint
+Change `von' to `van'.
+
+\bugonpage 461, third line in left column (8/25/84)
+
+\eightpoint The entry for |\box255| should not be indented.
+
+\bugonpage 461, index entry for boxed material (8/2/84)
+
+\eightpoint Add `{\it 420}'.
+
+\bugonpage 462, index entry for {\tt\char`\\colon} (11/16/83)
+
+\eightpoint Add page \underbar{359} to this list.
+
+\bugonpage 462, right column, third-last line (5/21/84)
+
+\eightpoint\indent
+[Change `crochets' to `crotchets'; then move this entry down two lines.]
+
+\bugonpage 463, right column, line 16 (5/20/84)
+
+\eightpoint\indent
+design size, 16--17, 213.
+
+\bugonpage 464, index entry for {\tt\char`\\dump} (1/10/84)
+
+\eightpoint Add page {\it 344\/} to this list.
+
+\bugonpage 464, right column, line 5 (1/5/84)
+
+\eightpoint
+Dvo\v r\'ak, Anton\'\i n Leopold, 409.
+
+\bugonpage 464, index entry for {\tt\char`\\end} (8/25/84)
+
+\eightpoint Page number 264 should be underlined.
+
+\bugonpage 465, index entry for {\tt\char`\\everydisplay} (8/25/84)
+
+\eightpoint Add page {\it 326\/} to this list.
+
+\bugonpage 465, index entry for {\tt\char`\\filbreak} (7/3/84)
+
+\eightpoint Delete the reference to page number 355.
+
+\bugonpage 466, index entry for {\tt\char`\\footnote} (4/26/84)
+
+\eightpoint Page number 363 should be underlined.
+
+\bugonpage 467, index entry for {\tt\char`\\hidewidth} (7/3/84)
+
+\eightpoint Page number 354 should be underlined.
+
+\bugonpage 468, index entry for insertions (8/25/84)
+
+\eightpoint Add pages 115--117, 122--125 to this list.
+
+\bugonpage 469, index entry for {\tt\char`\\kern} (11/1/83)
+
+\eightpoint Add page {\it 256\/} to this list.
+
+\bugonpage 470, index entry for {\tt\char`\\limits} (11/3/83)
+
+\eightpoint Add page {\it 359\/} to this list.
+
+\bugonpage 472, right column, lines 10--11 (7/9/84)
+
+{\eightpoint
+\indent
+|\normalbaselines|\kern1pt,
+ {\it 325}, 349, $\underline{351}$, {\it 414--415}.\par
+\baselineskip=9.9pt
+\indent
+|\normalbaselineskip|\kern1pt,
+ $\underline{349}$, {\it 414--415}.\par
+}
+
+\bugonpage 472, index entry for {\tt\char`\\null} (7/3/84)
+
+\eightpoint Page number 351 should be underlined.
+
+\bugonpage 472, right column, line 28 (1/3/84)
+
+\eightpoint\indent
+\hbox to0pt{\hss\lower1pt\hbox{*}}|\nullfont|, 14, 153, 271, 433.
+
+\bugonpage 476, a new index entry (8/25/84)
+
+\eightpoint\indent
+shifted output, {\sl see\/} |\hoffset|, |\voffset|.
+
+\bugonpage 476, index entry for shriek (8/25/84)
+
+\eightpoint It should not be capitalized.
+
+\bugonpage 478, index entry for \'Swierczkowski (9/15/84)
+
+\eightpoint
+The middle name should be `S\l awomir'.
+
+\bugonpage 479, last seven lines in the left column (8/23/84)
+
+\eightpoint
+{\baselineskip=9.9pt
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\tracingmacros|, $\underline{205}$, $\underline{212}$, 273, {\it329}.
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\tracingonline|, 121, 212, 273, $\underline{303}$.
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\tracingoutput|, $\underline{254}$, 273, {\it301--302}.
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\tracingpages|, {\it112--114}, 124, 273, $\underline{303}$.
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\tracingparagraphs|, {\it98--99}, 273, $\underline{303}$.
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\tracingrestores|, 273, $\underline{301}$, $\underline{303}$.
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\tracingstats|, 273, $\underline{300}$, $\underline{303}$, {\it383}.
+}
+
+\bugonpage 479, index entry for underlined text (8/2/84)
+
+\eightpoint Add `{\sl see also\/} |\underbar|'.
+
+\bugonpage 480, index entry for {\tt\char`\\vbox} (11/1/83)
+
+\eightpoint Delete page 256 from this list.
+
+\bye
+
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errata2.tex b/Master/texmf-doc/doc/english/knuth/errata/errata2.tex
new file mode 100644
index 00000000000..74dde877267
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata2.tex
@@ -0,0 +1,491 @@
+% More bugs (sigh) in The TeXbook
+
+\input manmac
+\proofmodefalse
+\raggedbottom
+\output{\onepageout{\unvbox255\kern-\dimen@ \vfil}}
+
+\def\rhead{Bugs in {\tensl The \TeX book}, second printing}
+\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
+ \hrule\line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule\nobreak\medskip}
+
+\noindent This is a list of all corrections made to {\sl The \TeX book\/}
+since the second printing. If your copy doesn't say `{\sl\kern-1pt Second
+printing (October 1984)\/}' on the copyright page, you should also look at
+the previous bug list. In fact, the most important corrections to the
+first printing were discovered first, so they've already been~made.
+
+\bugonpage 23, line 16 (10/13/84)
+
+\tenpoint\indent
+|This is TeX, Version 1.0 (preloaded format=plain 83.7.15)|
+
+\bugonpage 33, line 32 (10/21/84)
+
+The bottom line shows how far \TeX\ has gotten until now in the
+|story|{\parfillskip=0pt\par}
+
+\bugonpage 41, lines 7 and 8 (10/8/85)
+
+\ddanger The twin operations ^|\uppercase||{|\<token list>|}| and
+^|\lowercase||{|\<token list>|}| go through a given token list and convert
+all of the character tokens to their\parfillskip=0pt\enddanger
+
+\bugonpage 57, line 17 (1/6/86)
+
+|dd|\quad didot point ($\rm1157\,dd=1238\,pt$)
+
+\bugonpage 61, lines 17--19 (12/18/85)
+
+\ninepoint\noindent
+|depth|, |em|, |ex|,
+|fil|, |height|, |in|, |l|, |minus|, |mm|, |mu|, |pc|, |plus|,
+|pt|, |scaled|, |sp|, |spread|, |to|, |true|, |width|. ^^{reserved words}
+\ (See Appendix~I for references to the contexts in which each of these is
+recognized as a keyword.)
+
+\bugonpage 67, append a new exercise (1/19/85)
+
+\exno=5 \def\chapno{11}
+\gdef\frac#1/#2{\leavevmode\kern.1em
+ \raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em
+ /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}
+
+\ddangerexercise Construct a |\frac| macro such that `|\frac1/2|' yields
+`\frac1/2'.
+
+\bugonpage 130, line 15 (4/17/85)
+
+\beginmathdemo
+|$y'''_3+g'^2$|&y'''_3+g'{}^2\cr
+\endmathdemo
+
+\bugonpage 170, line 5 (5/28/85)
+
+\ninepoint
+\line{tall, unslanted
+letter; and so on. But two of the examples involve corrections that were}
+
+\bugonpage 194, lines 13--15 should be centered better (10/22/84)
+
+\ninepoint
+$$\displaylines{\hfill x\equiv x;\hfill\llap{(1)}\cr
+ \hfill\hbox{if}\quad x\equiv y\quad\hbox{then}\quad
+ y\equiv x;\hfill\llap{(2)}\cr
+ \hfill\hbox{if}\quad x\equiv y\quad\hbox{and}\quad
+ y\equiv z\quad\hbox{then}\quad
+ x\equiv z.\hfill\llap{(3)}\cr}$$
+
+\bugonpage 215, lines 9 and 10 from the bottom (12/23/84)
+
+\ninepoint\noindent
+general format
+is the same as for |\def| and |\gdef|, but \TeX\ blindly expands the tokens
+of the replacement text according to the expansion rules above. For
+example, consider
+
+\bugonpage 233, lines 15--19 (1/19/85)
+
+\medskip
+\settabs\+\indent&10\frac1/2 lbs.\qquad&\it Servings\qquad&\cr
+\+&\negthinspace\it Weight&\it Servings&
+ {\it Approximate Cooking Time\/}*\cr
+\smallskip
+\+&8 lbs.&6&1 hour and 50 to 55 minutes\cr
+\+&9 lbs.&7 to 8&About 2 hours\cr
+\+&9\frac1/2 lbs.&8 to 9&2 hours and 10 to 15 minutes\cr
+\+&10\frac1/2 lbs.&9 to 10&2 hours and 15 to 20 minutes\cr
+
+\bugonpage 236, lines 18--21 (1/19/85)
+
+\ninepoint
+$$\vbox{\openup2pt
+\halign{\hfil\bf#&\quad\hfil\it#\hfil&\quad\hfil#\hfil&
+ \quad\hfil#\hfil&\quad#\hfil\cr
+Squab&Poussin&2&\frac3/4 to 1&Broil, Grill, Roast\cr
+Broiler&Poulet Nouveau&2 to 3&1\frac1/2 to 2\frac1/2&Broil, Grill, Roast\cr
+Fryer&Poulet Reine&3 to 5&2 to 3&Fry, Saut\'e, Roast\cr
+Roaster&Poularde&5\frac1/2 to 9&Over 3&Roast, Poach, Fricassee\cr}}$$
+[This change should also be made at the bottom of page 237.]
+
+\bugonpage 236, fifth-last line (1/19/85)
+
+\ninepoint
+| Squab&Poussin&2&\frac3/4 to 1&Broil, Grill, Roast\cr|
+
+\bugonpage 237, line 25 (10/10/84)
+
+\ninepoint\noindent
+saying `^|\tabskip||=|\<glue>'. For example,
+let's do the poultry table again, but with the{\parfillskip=0pt\par}
+
+\bugonpage 265, bottom line (11/6/85)
+
+[insert a comma after `{\eightss LEONTIEF}'.]
+
+\bugonpage 271, line 8 (11/12/85)
+
+\ninepoint
+\beginsyntax
+<fil unit>\is[fil]\alt<fil unit>[l]
+\endsyntax
+
+\bugonpage 280, lines 7 and 8 (1/8/85)
+
+\ninepoint\noindent
+\<4-bit number>.\enskip
+The specified output stream is opened or closed, for use in |\write|
+commands, as explained in Chapter~21.
+
+\bugonpage 300, lines 5--10 [changed for version 1.3] (11/25/84)
+
+\ninepoint\noindent
+what part of \TeX's memory has become overloaded;
+one of the following fourteen things will be mentioned:
+\begindisplay
+|number of strings|\qquad(names of control sequences and files)\cr
+|pool size|\qquad(the characters in such names)\cr
+|main memory size|\qquad(boxes, glue, breakpoints, token lists,
+ characters, etc.)\cr
+\enddisplay
+
+\bugonpage 300, lines 23--29 [changed for version 1.3] (11/25/84)
+
+\danger If you have a job that doesn't overflow \TeX's capacity, yet
+you want to see just how closely you have approached the limits,
+just set ^|\tracingstats| to a positive value before the end of your
+job. The log file will then conclude with a report on your actual
+usage of the first eleven things named above (i.e., the number of strings,
+\dots, the save size), in that order. ^^{stack positions}
+Furthermore, if you set |\tracingstats| equal to 2~or~more, \TeX\
+will show its current memory usage whenever it
+does a ^|\shipout| command. Such statistics are broken into two
+parts; `|490&5950|' means, for example, that 490 words are being used
+for ``large'' things like boxes, glue, and
+breakpoints, while 5950 words are being used for ``small'' things like
+tokens and characters.
+
+\bugonpage 302, line 14 (10/8/85)
+
+\begintt
+.\tenrm || (ligature ---)
+\endtt
+
+\bugonpage 305, line 26 (12/24/84)
+
+\ninepoint\noindent
+sentable as |^^M|. Asking \TeX\ to |\show\^^M|
+\looseness-1
+produces the response `|>| |\^^M=macro:->\|\]|.|'.
+
+\bugonpage 306, line 10 (7/1/85)
+
+\ninepoint\noindent
+no ``^{explicit kerns},'' and an italic correction is an
+explicit kern.) \ But the italic correction may be too much (especially in an
+italic font); |shelf{|^|\kern||0pt}ful| is often best.
+
+\bugonpage 308, line 25 (3/25/85)
+
+\ninepoint\indent
+|\def\appendroman#1#2#3{\edef#1{\def\noexpand#1{\csname|
+
+\bugonpage 311, insert a new answer (1/19/85)
+
+\ninepoint
+\ansno11.6:
+ |\def\frac#1/#2{\leavevmode\kern.1em|\parbreak
+|\raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em|\parbreak
+|/\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}|
+
+\smallskip\noindent[This causes answer 12.8 to move to page 312;
+answer 12.16 also moves to page 313.]
+
+\bugonpage 320, lines 17--20 (8/10/85)
+
+\ninepoint
+\ansno17.16:
+ |\def\sqr#1#2{{\vcenter{\vbox{\hrule height.#2pt|\parbreak
+ | \hbox{\vrule width.#2pt height#1pt \kern#1pt|\parbreak
+ | \vrule width.#2pt}|\parbreak
+ | \hrule height.#2pt}}}}|
+
+\bugonpage 327, lines 26--33 (10/22/84)
+
+\ninepoint
+\ansno19.16:
+ |$$\displaylines{\hfill x\equiv x;\hfill\llap{(1)}\cr|\parbreak
+ | \hfill\hbox{if}\quad x\equiv y\quad\hbox{then}\quad|\parbreak
+ | y\equiv x;\hfill\llap{(2)}\cr|\parbreak
+ | \hfill\hbox{if}\quad x\equiv y\quad\hbox{and}\quad|\parbreak
+ | y\equiv z\quad\hbox{then}\quad|\parbreak
+ | x\equiv z.\hfill\llap{(3)}\cr}$$|\par\medskip\noindent
+There's also a trickier solution, which begins with
+\begintt
+$$\displaylines{x\equiv x;\hfil\llap{(1)}\hfilneg\cr
+\endtt
+
+\bugonpage 330, line 29 (11/15/85)
+
+\ninepoint\indent
+|\edef\next#1#2{\def#1{\b#2\d}} \next\a\c|
+
+\bugonpage 332, lines 17--24 (1/19/85)
+
+\ninepoint
+\begintt
+\settabs\+\indent&10\frac1/2 lbs.\qquad&\it Servings\qquad&\cr
+\+&\negthinspace\it Weight&\it Servings&
+ {\it Approximate Cooking Time\/}*\cr
+\smallskip
+\+&8 lbs.&6&1 hour and 50 to 55 minutes\cr
+\+&9 lbs.&7 to 8&About 2 hours\cr
+\+&9\frac1/2 lbs.&8 to 9&2 hours and 10 to 15 minutes\cr
+\+&10\frac1/2 lbs.&9 to 10&2 hours and 15 to 20 minutes\cr
+\endtt
+
+\bugonpage 332, lines 33--35 (1/19/85)
+
+\ninepoint\noindent
+proofs. \ (You weren't supposed to think of this,
+but it has to be mentioned.) \ See exercise 11.\fracexno\ for the `|\frac|'
+macro; it's better to say `\frac1/2' than `$1\over2$', in a cookbook.\par
+Another way to treat this table would be to display it in a vbox, instead
+of including a first column whose sole purpose is to specify indentation.
+
+\bugonpage 337, line 28 (11/12/85)
+
+\ninepoint\noindent |\nextnumber|. Quick should put `|\relax|'
+at the end of his macro. \ (The {keywords} |l|,{\parfillskip=0pt\par}
+
+\bugonpage 357, lines 35 and 36 (1/8/85)
+
+\ninepoint\noindent
+|\def\*{\discretionary{\thinspace\the\textfont2\char2}{}{}}|
+
+\bugonpage 357, last two lines (4/17/85)
+
+\ninepoint\noindent
+|\def\pr@m@s{\ifx'\next\let\next\pr@@@s|%
+ | \else\ifx^\next\let\next\pr@@@t|\par\noindent
+| \else\let\next\egroup\fi\fi \next}|\par\noindent
+|\def\pr@@@s#1{\prim@s} \def\pr@@@t#1#2{#2\egroup}|
+
+\bugonpage 358, lines 8--12 (1/23/85)
+
+\ninepoint\noindent
+|\def\hbar{{\mathchar'26\mkern-9muh}}|\hfil\break\null
+|\def\surd{{\mathchar"1270}}|\hfil\break\null
+|\def\angle{{\vbox{\ialign{$\m@th\scriptstyle##$\crcr|\hfil\break\null
+| \not\mathrel{\mkern14mu}\crcr \noalign{\nointerlineskip}|\hfil\break\null
+| \mkern2.5mu\leaders\hrule height.34pt\hfill\mkern2.5mu\crcr}}}}|
+
+\bugonpage 359, lines 7--8 (1/22/85)
+
+\ninepoint\noindent
+|\def\ddots{\mathinner{\mkern1mu\raise7pt\vbox{\kern7pt\hbox{.}}\mkern2mu|%
+\hfil\break\null
+| \raise4pt\hbox{.}\mkern2mu\raise1pt\hbox{.}\mkern1mu}}|
+
+\bugonpage 360, line 22 (1/22/85)
+
+\ninepoint\noindent
+| \mkern5mu \raise.6\dimen@\copy\rootbox \mkern-10mu \box0}|
+
+\bugonpage 361, line 3 (3/27/85)
+
+\ninepoint\noindent
+|\def\buildrel#1\over#2{\mathrel{\mathop{\kern0pt #2}\limits^{#1}}}|
+
+\bugonpage 361, lines 19--20 (1/22/85)
+
+\ninepoint\noindent
+|\def\bmod{\mskip-\medmuskip \mkern5mu|\hfil\break\null
+| \mathbin{\rm mod} \penalty900 \mkern5mu \mskip-\medmuskip}|
+
+\bugonpage 361, line 27 (5/1/85)
+
+\ninepoint\noindent
+|\def\matrix#1{\null\,\vcenter{\normalbaselines\m@th|
+
+\bugonpage 361, bottom line (5/1/85)
+
+\ninepoint\noindent
+| \null\;\vbox{\kern\ht1\box2}\endgroup}|
+
+\bugonpage 362, line 9 (5/1/85)
+
+\ninepoint\noindent
+|\def\eqalign#1{\null\,\vcenter{\openup1\jot \m@th|
+
+\bugonpage 362, lines 17--29 (8/10/85)
+
+{\parindent=0pt\ninepoint
+|\def\@lign{\tabskip=0pt\everycr={}} % restore inside \displ@y|\par
+|\def|^|\displaylines||#1{\displ@y|\parbreak%
+| \halign{\hbox to\displaywidth{|%
+ |$\hfil\@lign\displaystyle##\hfil$}\crcr|\parbreak%
+| #1\crcr}}|
+\smallbreak
+|\def|^|\eqalignno||#1{\displ@y \tabskip=|^|\centering|\parbreak%
+| \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip=0pt|\parbreak%
+| &$\@lign\displaystyle{{}##}$\hfil\tabskip=\centering|\parbreak%
+| &\llap{$\@lign##$}\tabskip=0pt\crcr|\parbreak%
+| #1\crcr}}|\par
+|\def|^|\leqalignno||#1{\displ@y \tabskip=\centering|\parbreak%
+| \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip=0pt|\parbreak%
+| &$\@lign\displaystyle{{}##}$\hfil\tabskip=\centering|\parbreak%
+| &\kern-\displaywidth\rlap{$\@lign##$}\tabskip=\displaywidth\crcr|\parbreak%
+| #1\crcr}}|
+\par}
+
+\bugonpage 363, line 9 (5/12/85)
+
+\ninepoint\noindent
+|\def\footnote#1{\let\@sf=\empty % parameter #2 (the text) is read later|
+
+\bugonpage 364, line 3 (3/23/85)
+
+\ninepoint\noindent
+|\def\plainoutput{\shipout\vbox{\makeheadline\pagebody\makefootline}%|
+
+\bugonpage 364, fifth-last line (9/15/85)
+
+\ninepoint\noindent
+|\def\fmtname{plain}\def\fmtversion{2.0} % identifies the current format|
+
+\bugonpage 399, eighth-last line (2/11/85)
+
+\ninepoint\noindent
+| \baselineskip=\footnotebaselineskip\noindent\unhbox0\par}|
+
+\bugonpage 401, line 5 (1/29/85)
+
+\ninepoint\noindent
+{|\fontdimen| parameters to qualify as a math symbol font).
+(2)~Set all the font identifiers\parfillskip=0pt\par}
+
+\bugonpage 414, line 10 (12/17/84)
+
+\ninepoint\noindent
+|\font\titlefont=cmssdc40 % titles in chapter openings|
+
+%\bugonpage 420, line 9 (10/3/85)
+%
+%\ninepoint\noindent
+%|\def\AmSTeX{$\cal A\kern-.1667em\lower.5ex\hbox{$\cal M$}\kern-.075em|
+% that change comes under `font data', explained away below
+
+\bugonpage 444, bottom line (1/10/85)
+
+\ninepoint\noindent
+depth $d(z)+v$, consisting
+of box~$x$ followed by an appropriate kern followed by box~$z$.
+
+\bugonpage 461, entry for character codes (11/6/85)
+
+\eightpoint
+Add `{\sl see also\/} category codes'.
+
+\bugonpage 463, entries for {\tt dd}, Didot, and didot (1/6/86)
+
+\eightpoint
+Remove the circumflex accents.
+
+\bugonpage 466, left column (1/19/85)
+
+\eightpoint
+fractions, 67, 139--143, 152, 170, 179,\par
+\qquad 186, 444--445.\par
+\quad huge, 196.\par
+\quad slashed form, 67, 139--140, 233, 236.
+
+\bugonpage 467, index entry for {\tt\char`\\hsize} (6/14/85)
+
+\eightpoint
+Add a reference to page {\it 60}.
+
+\bugonpage 469, index entry for {\tt\char`\\kern} (7/1/85)
+
+\eightpoint
+Add a reference to page {\it 306}.
+
+\bugonpage 469, index entry for kerns (7/1/85)
+
+\eightpoint
+Add a reference to page 306.
+
+\bugonpage 469, new entry (11/12/85)
+
+\eightpoint
+|l| after |fil|, $\underline{271}$, 337.
+
+\bugonpage 469, second line on the right (9/13/85)
+
+\eightpoint
+%\def\LaTeX{L\kern-.25em\raise.7ex\hbox{a}\kern-.05em\TeX} % old style
+{L\kern -.36em\raise.6ex\hbox{\sixrm A}\kern-.15em\TeX}, 137.
+
+\bugonpage 470, index entries for {\tt\char`\\longleftarrow}
+ thru {\tt\char`\\Longrightarrow} (10/5/84)
+
+\eightpoint
+The references to page 358 should be underlined (seven times).
+
+\bugonpage 475, index entry for punctuation in formulas (4/29/85)
+
+\eightpoint
+Add a reference to page 161.
+
+\bugonpage 476, index entry for {\tt\char`\\scriptspace} (8/10/85)
+
+\eightpoint
+Change `445' to `445--446'.
+
+\bugonpage 478, first and last lines (10/11/84)
+
+\noindent Delete the last line in the right-hand column
+(since it appears on page 479), and add the following line
+at the top of the left-hand column (since it was dropped by mistake
+from the second printing):
+
+\smallskip
+\eightpoint styles of math formatting, 140--141, 441--447.
+
+\bugonpage 478, new entry after tabbing (5/28/85)
+
+\eightpoint
+tables, {\sl see\/} alignments, tabbing.
+
+\bugonpage 478, tabskip entries (3/25/85)
+
+\eightpoint\noindent Instead of `237--239' and `237--238' it should say
+`$\underline{237}$--$\underline{239}$' twice.
+
+\bugonpage 481, the entry for {\tt\char`\\widetilde} (9/23/85)
+
+\eightpoint
+Page 359 should be underlined.
+
+\bugonpage 483, lines 16--17 (1/19/85)
+
+|P.O. Box 9506|\parbreak
+|Providence RI 02940-9506, USA.|
+
+\bugonpage 483, lines 22--23 (1/19/85)
+
+P.O. Box 9506\par
+Providence RI 02940-9506, USA.
+
+\bigskip
+\hrule
+\bigskip\noindent\tenrm
+Note: The next printing will use the ``real'' Computer Modern fonts
+instead of the ``almost'' Computer Modern fonts. Therefore many of
+the line breaks will be slightly different. Also, the font-related
+numerical data on pages 27, 29, 66, 75, 76, 79, 88, 98, 99, 112, 113, 310,
+314, 396, 399, 409, 420, and 459 will be different. However, these
+differences need not be listed here, because the old book was correct with
+respect to the old fonts.
+
+\bye
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errata3.tex b/Master/texmf-doc/doc/english/knuth/errata/errata3.tex
new file mode 100644
index 00000000000..5f00f73b22e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata3.tex
@@ -0,0 +1,1898 @@
+% Bugs (sigh) in Computers \& Typesetting
+
+\input manmac
+\font\sltt=cmsltt10
+\font\niness=cmss9
+\font\ninessi=cmssi9
+\proofmodefalse
+\raggedbottom
+\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
+
+\def\cutpar{{\parfillskip=0pt\par}}
+
+\def\rhead{Bugs in {\tensl Computers \& Typesetting}}
+\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
+\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
+\newcount\nn
+\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
+\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
+
+\noindent This is a list of all corrections made to {\sl Computers \&
+Typesetting}, Volumes A--E\null, between the date of publication
+(May, 1986) and 15~June 1987.
+It also includes corrections made to
+the softcover version of {\sl The \TeX book}, beginning with the
+sixth printing (January 1986); these are the same as corrections to
+Volume~A\null. Corrections to the softcover version of {\sl The
+\slMF\kern1ptbook\/} are the same as corrections to Volume~C\null.
+ % volume A
+\bugonpage A7, fourth line from the bottom (6/28/86)
+
+\tenpoint\line{%
+since control sequences of the second kind always have exactly one
+symbol after}
+
+\bugonpage A35, second-last line (1/31/87)
+
+\rightline{\eightssi He may run who reads.}
+\smallskip
+\rightline{\eightss--- HABAKKUK 2\thinspace:\thinspace2 (c.~600 B.C.)}
+\smallskip
+\rightline{\eightssi He that runs may read.}
+
+\bugonpage A43, lines 8--9 (8/23/86)
+
+\tenpoint\noindent
+of Appendix B\null, which defines |%| to be a special kind of symbol so that you
+can use it for comments, defines the control sequence |\%| to mean
+a percent sign.
+
+\bugonpage A45, lines 10--13 (8/23/86)
+
+\ninepoint\noindent
+\TeX\ adds~64. Hence
+code 127 can be typed |^^?|, and
+the dangerous bend sign can be obtained by saying
+|{\manual^^?}|. However, you must change the category code of character
+127 before using it, since this character ordinarily has category~15
+(^{invalid}); say, e.g., |\catcode`\^^?=12|.
+The |^^| notation is different from |\char|, because |^^|\cutpar
+
+\bugonpage A76, line 7 (8/23/86)
+
+\ninepoint
+\noindent
+and extra space; for example, these quantities are
+$3.33333\pt$, $1.66666\pt$, $1.11111\pt$,\cutpar
+
+\bugonpage A83, bottom line (5/19/87)
+
+\tenpoint\noindent[This line should be flush right.]
+
+\bugonpage A111, 7th-last line, right-hand column (2/15/87)
+
+\ninepoint
+if $b=10000$ and $-10000<p<10000$ and $q<10000$;
+
+\bugonpage A117, second-last line (6/10/87)
+
+\eightpoint
+marks; sometimes also |$\|\||$| ($\Vert$).
+You can say, e.g., `|\footnote\dag{...}|'.
+
+\bugonpage A124, lines 6--11 (2/26/87)
+
+\begingroup \def\n{\thinspace$n$}
+\ninepoint\noindent
+of insertion; an additional `|\penalty-10000|' item is assumed
+to be present at the end of the vertical list, to ensure that a legal
+breakpoint exists.) \ Let $u$ be the natural height plus depth of that
+least-cost box, and let $r$ be the penalty associated with the optimum
+breakpoint. Decrease $g$ by~$uf$, and increase $q$ by~$r$. \ (If
+|\tracingpages||=1|, the log file should now get a cryptic message that says
+`|% split|\n\ |to| $v$|,|$u$ |p=|$r$'. For~example,
+\begintt
+% split254 to 180.2,175.3 p=100
+\endtt
+\endgroup
+
+\bugonpage A158, lines 6--8 (2/20/87)
+
+\ninepoint\noindent the
+second atom, which has subscript~$i$; the superscripts are empty except for the
+last atom, whose superscript is~$\overline{n+1}$. This superscript is
+itself a math list consisting of one atom, whose nucleus is~$n+1$; and that
+nucleus is a math list consisting of three atoms.
+
+\bugonpage A171, line 20 (1/26/86)
+
+\ninepoint\line{%
+will be surrounded by more space than there would be
+if that subformula were enclosed}
+
+\bugonpage A176, line 1 (8/23/86)
+
+\ninepoint
+You can insert `|\noalign||{|$\langle$vertical mode
+material$\rangle$|}|' just after any \kern-1pt|\cr| within\cutpar
+
+\bugonpage A248, line 17 (6/17/86)
+
+\ninepoint
+`|&|' or `|\span|' or `|\cr|', it needs some way to decide which
+alignment is involved.\cutpar
+
+\bugonpage A249, line 20 (6/17/86)
+
+\ninepoint\noindent
+line (see Chapter~8).
+If you don't want a~|\cr| at the end of a certain line,
+just type\cutpar
+
+\bugonpage A276, line 19 (1/27/86)
+
+\ninepoint\vskip-3pt
+\beginsyntax
+ \alt^|\font|<control sequence><equals><file name><at clause>
+ \alt<global assignment>
+\endsyntax
+[The bottom line of p.~276 will now move to the top of p.~277.]
+
+\bugonpage A277, lines 31--32 (1/27/86)
+
+\ninepoint
+\beginsyntax
+<font assignment>\is^|\fontdimen|<number><font><equals><dimen>
+\endsyntax
+
+\bugonpage A286, sixth-last line (4/28/87)
+
+\ninepoint\noindent
+|\sfcode| table as described in Chapter~12; characters numbered 128
+to~255 set the\cutpar
+
+\bugonpage A287, line 19 (2/15/87)
+
+\ninepoint
+\textindent{$\bull$}|\-|.\enskip
+This ``discretionary hyphen'' command is defined in Appendix H.
+
+\bugonpage A292, lines 9--10 (2/15/87)
+
+\ninepoint
+\textindent{$\bull$}|\-|.\enskip
+This command is usually equivalent to `|\discretionary{-}{}{}|'; the `|-|' is
+therefore interpreted as a ^{hyphen}, not as a minus sign.
+\ (See Appendix~H.)
+
+\bugonpage A308, lines 25--26 (6/1/87)
+
+\ninepoint\indent
+|\def\appendroman#1#2#3{\edef#1{\csname|\parbreak
+| \expandafter\gobble\string#2\romannumeral#3\endcsname}}|
+
+\bugonpage A312, lines 10--14 (8/23/86)
+
+\ninepoint
+\ansno12.11: The interline glue will be zero, and the natural height is
+$1+1-3+2=1\pt$ (because the depth of\/ |\box2| isn't included in the natural
+height); so the glue will ultimately become |\vskip-1pt| when it's set.
+Thus, |\box3| is $3\pt$ high, $2\pt$ deep, $4\pt$ wide. Its reference
+point coincides with that of\/ |\box2|; to get to the reference point
+of\/ |\box1| you go up $2\pt$ and right $3\pt$.
+
+\bugonpage A312, line 21 (8/23/86)
+
+\ninepoint\noindent
+up $4\pt$ to get to the upper left corner of
+|\box4|; then down $-1.6\pt$, i.e., up $1.6\pt$, to\cutpar
+
+\bugonpage A319, line 20 (31/3/87)
+
+\ninepoint\noindent
+make ordinary periods act like |\cdot| symbols: Just define
+|\mathcode`.| to be |"0201|,\cutpar
+
+\bugonpage A328, lines 18--19 (5/14/87)
+
+\ninepoint\noindent
+not performed
+while the expansion is taking place, and the control sequences following
+|\def| are expanded; so the result is an infinite string
+\begintt
+A\def A\def A\def A\def A\def A\def A\def A\def A...
+\endtt
+
+\bugonpage A329, lines 14--15 (8/23/86)
+
+\ninepoint
+\ansno20.5: The |##| feature is indispensable when the replacement text of
+a definition contains other definitions. For example, consider
+
+\bugonpage A356, lines 6--7 (1/30/87)
+
+\ninepoint\noindent
+| \spaceskip=.3333em \xspaceskip=.5em\relax}|\hfil\break
+|\def\ttraggedright{\tt\rightskip=0pt plus2em\relax}|
+
+\bugonpage A356, line 33 (6/1/87)
+
+\ninepoint\noindent
+| \vbox to.2ex{\hbox{\char'26}\vss}\hidewidth}}|
+
+\bugonpage A357, tenth-last line (10/13/86)
+
+\ninepoint\noindent
+|\let\sp=^ \let\sb=_ {\catcode`\_=\active \global\let_=\_}|
+
+\bugonpage A357, third-last and second-last lines (2/17/87)
+
+\ninepoint\noindent
+|\def\pr@m@s{\ifx'\next\let\nxt\pr@@@s \else\ifx^\next\let\nxt\pr@@@t|%
+\hfil\break\strut
+| \else\let\nxt\egroup\fi\fi \nxt}|
+
+\bugonpage A364, fifth-last line (1/30/87)
+
+\ninepoint\noindent
+|\def\fmtname{plain}\def\fmtversion{2.3} % identifies the current format|
+
+\bugonpage A368, bottom line (2/26/86)
+
+\ninepoint
+\line{that includes the symbols
+{\tentex\char'30},~{\tentex\char1}, {\tentex\char'32}, {\tentex\char'34},
+and~{\tentex\char'35}, and he finds that this makes it much more}
+
+\bugonpage A396, line 13 (8/23/86)
+
+\ninepoint
+| \hyphenpenalty=10000 \exhyphenpenalty=10000|
+
+\bugonpage A414, line 10 (3/4/86)
+
+\ninepoint\noindent
+|\font\titlefont=cmssdc10 at 40pt % titles in chapter openings|
+
+\bugonpage A427, line 7 (2/23/86)
+
+\ninepoint\noindent
+the author's book
+{\sl Computer Modern Typefaces}.)
+
+\bugonpage A428, lines 18--20 (6/15/87)
+
+\tenpoint\noindent
+The first eight of these all have essentially the same layout;
+but |cmr5| needs no ligatures, and many of the symbols of |cmti10|
+have different shapes.
+For example, the ^{ampersand} becomes an `^{E.T.}', and the
+^{dollar} changes to ^{pound} ^{sterling}:
+
+\bugonpage A434, lines 25--28 (8/17/86)
+
+\tenpoint\noindent
+from |\nu|~($\nu$). Similarly,
+|\varsigma|~($\varsigma$) should not be confused with |\zeta|~($\zeta$).
+It turns out that |\varsigma| and |\upsilon| are almost never used in
+math formulas; they are included in plain \TeX\ primarily because they are
+sometimes needed in short Greek citations (cf.~Appendix~J).
+
+\bugonpage A447, line 32 (6/1/87)
+
+\ninepoint\noindent
+ters
+also affect mathematical typesetting:
+dimension parameters
+ \hbox{|\delimitershortfall|}\cutpar
+
+\bugonpage A455, new paragraph to follow line 9 (2/15/87)
+
+\begingroup
+\hyphenpenalty=-1000 \pretolerance=-1 \tolerance=1000
+\doublehyphendemerits=-100000 \finalhyphendemerits=-100000
+\ddanger The control sequence ^|\-| is equivalent to
+|\discretionary{\char|$\,h$|}{}{}|, where $h$ is the
+^|\hyphenchar| of the current font, provided that $h$ lies
+between 0 and~255. Otherwise |\-| is equivalent to |\discretionary{}{}{}|.
+
+\endgroup % end the special hyphenation conventions
+
+\bugonpage A457, left column, fifth-last line (2/17/87)
+
+\eightpoint\indent\qquad 155, 201, {\it 305}, 324, $\underline{357}$, 394--395;
+
+\bugonpage A458, left column, line 6 (2/15/87)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt\char`\\-} (discretionary hyphen), 95, 283, 287,\par
+\indent\qquad 292, $\underline{455}$.
+
+\bugonpage A458, left column, near the bottom (5/19/87)
+
+\eightpoint {\tt!} (exclamation point), 51,
+{\it 72}, 73, 75, {\it 169}.
+\nobreak\medskip\noindent[This saves a line that otherwise would make
+the index too long on page 481!]
+
+\bugonpage A458, right column, line 10 (11/27/86)
+
+\eightpoint {\tt\char`\~}
+(tilde), 38, 51, 343, $\underline{353}$; {\sl see also\/} ties.
+
+\bugonpage A458, right column (6/14/87)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt\char`\\accent} (general accent), 9, 54, 86, 283, $\underline{286}$.
+
+\bugonpage A461, entry for boxes (3/16/87)
+
+\eightpoint boxes, 63--67, 77--83, 221--229.
+
+\bugonpage A461, entry for {\tt\char`\\centering} (1/28/86)
+
+\eightpoint {\tt\char`\\centering}, $\underline{347}$, 348, 362.
+
+\bugonpage A462, entry for \<code assignment> (1/27/86)
+
+\eightpoint \<code assignment>, $\underline{277}$.
+
+\bugonpage A464, left column, line 3 (2/15/87)
+
+\eightpoint
+discretionary hyphens, 28, 95--96, 453, $\underline{455}$.
+
+\bugonpage A465, right column, line 8 (5/3/87)
+
+\eightpoint
+expansion of expandable tokens, 212--216, 238,
+
+\bugonpage A466, entry for {\tt\char`\\font}, second line (1/27/86)
+
+\eightpoint \indent\qquad 271, $\underline{276}$.
+
+\bugonpage A466, new entry (2/3/87)
+
+\eightpoint \indent\<fontdef token>, $\underline{271}$.
+
+\bugonpage A467, entry for {\tt\char`\\hideskip} (1/28/86)
+
+\eightpoint {\tt\char`\\hideskip}, $\underline{347}$, 348, 354.
+
+\bugonpage A468, left column line 2 (2/15/87)
+
+\eightpoint\indent\qquad 351, 395, {\it 414}, 454, 455.
+
+\bugonpage A470, entry for {\tt manfnt} (1/15/86)
+
+\eightpoint {\tt manfnt}, 44, 408, 414.
+
+\bugonpage A471, entry for {\tt\char`\\medbreak} (10/13/86)
+
+\eightpoint {\tt\char`\\medbreak}, 111, 113, $\underline{353}$,
+ {\it355}, {\it419}, {\it422}.
+
+\bugonpage A471, entry for {\tt\char`\\moveright} (2/27/87)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt\char`\\moveright}, 80--81, {\it 221}, $\underline{282}$.
+
+\bugonpage A471, entry for Mozart, second line (3/19/86)
+
+\eightpoint \indent\qquad Gottlieb (= Theophilus = Amadeus), 409.
+
+\bugonpage A472, the entry for {\tt\char`\\not} (2/12/87)
+
+\eightpoint\noindent
+[The overprinting here is intentional, since {\tt\char`\\not} is a
+character of width zero. More than a dozen people have reported this
+as an error, but it is not!]
+
+\bugonpage A477, entry for {\tt\char`\\span} (5/3/87)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt\char`\\span}, 215, 238, $\underline{243}$, {\it244}, $\underline{245}$,
+248, 249,\par
+\indent\qquad 282, {\it330}, 385.
+
+\bugonpage A479, entry for ties, second line (11/27/86)
+
+\eightpoint \indent\qquad {\it173}, 353, {\it404}.
+
+\bugonpage A480, changes to various entries (6/14/87)
+
+\eightpoint
+\newbox\astbox \setbox\astbox=\hbox to0pt{\hss\lower1pt\hbox{*}}
+\def\prim#1{\par\indent\copy\astbox{\tt\char`\\#1}}
+\prim{underline}, {\it130--131}, 141, 291, $\underline{443}$.
+\prim{unhbox}, 120, 283, $\underline{285}$, {\it354}, {\it356}, {\it361},
+ {\it399}.
+\prim{unhcopy}, 120, 283, $\underline{285}$, {\it353}.
+\prim{unkern}, $\underline{280}$.
+\prim{unpenalty}, $\underline{280}$.
+\prim{unskip}, 222--223, $\underline{280}$, 286, {\it313}, {\it392},
+ {\it418--419}.
+\prim{unvbox}, 120, 254, $\underline{282}$, 286, {\it354}, {\it361},
+ {\it363}, {\it364}, {\it392}, {\it399}, {\it417}.
+\prim{unvcopy}, 120, $\underline{282}$, 286, {\it361}.
+\prim{vadjust}, 95, 105, 109, 110, 117, 259, $\underline{281}$, 393, 454.
+\prim{valign}, 249, 283, $\underline{285}$--$\underline{286}$, 302,
+ {\it335}, {\it397}.
+\prim{vcenter}, 150--151, 159, 170, 193, 222, 242,
+\prim{vfil}, 71, $\underline{72}$, 111, 256, 281, 286, 417.
+\prim{vfill}, 24, 25, 71, $\underline{72}$, 256--257, 281, 286.
+\prim{vfilneg}, $\underline{72}$, 111, 281, 286.\par
+|\voidb@x|, $\underline{347}$, 348.
+
+\bugonpage A481, left column (6/14/87)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt\char`\\vss}, 71, $\underline{72}$, {\it 255}, 281, 286.
+
+ % volume B
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\buginvol B, in general (7/28/86)
+
+\tenpoint\noindent
+[A number of entries were mistakenly omitted from the mini-indexes
+on the right-hand pages. Here is a combined list of all the missing
+items; you can mount it inside the back cover, say, as a secondary mini-index
+when the first one fails\dots\ ]
+
+\nobreak\medskip
+\setbox0=\vbox{\eightpoint \hsize=11pc \catcode`\_=\active \let_=\_
+ \rightskip=0pt plus 100pt minus 10pt
+ \pretolerance 10000
+ \hyphenpenalty 10000 \exhyphenpenalty 10000
+ \noindent\vbox to1pt{}\par % 1pt = \topskip - \ninept
+ \def\&#1{\hbox{\bf#1\/}} % boldface type for reserved words
+ \obeylines
+ \def\makeref #1 #2 #3#4
+ {\nn=#2 \hangindent=1em \noindent\\{#1}%
+ \if#3:: \else\unhcopy\eqbox \fi#4, \S\number\nn.\par}
+ \makeref active_base 222 =$1$
+ \makeref aux 213 =macro
+ \makeref begin_name 515 :\&{procedure}
+ \makeref big_switch 1030 =$60$
+ \makeref choice_node 689 =$15$
+ \makeref cur_boundary 271 :$0\to \\{save\_size}$
+ \makeref cur_c 724 :\\{quarterword}
+ \makeref cur_group 271 :\\{group\_code}
+ \makeref cur_i 724 :\\{four\_quarters}
+ \makeref cur_level 271 :\\{quarterword}
+ \makeref do_extension 1348 :\&{procedure}
+ \makeref dvi_buf 595 :\&{array}
+ \makeref dvi_gone 595 :\\{integer}
+ \makeref dvi_limit 595 :\\{dvi\_index}
+ \makeref dvi_offset 595 :\\{integer}
+ \makeref dvi_ptr 595 :\\{dvi\_index}
+ \makeref end_graf 1096 :\&{procedure}
+ \makeref error 82 :\&{procedure}
+ \makeref error_stop_mode 73 =$3$
+ \makeref font_base 12 =$0$
+ \makeref font_info 549 :\&{array}
+ \makeref get_token 365 :\&{procedure}
+ \makeref glue_base 222 =$2626$
+ \makeref half_buf 595 :\\{dvi\_index}
+ \makeref handle_right_brace 1068 :\&{procedure}
+ \makeref hash_base 222 =$258$
+ \makeref head 213 =macro
+ \makeref hyf_distance 921 :\&{array}
+ \makeref hyf_next 921 :\&{array}
+ \makeref hyf_num 921 :\&{array}
+ \makeref index 302 =macro
+ \makeref inf 448 :\\{boolean}
+ \makeref init_col 788 :\&{procedure}
+ \makeref init_span 787 :\&{procedure}
+ \makeref input_ln 31 :\&{function}
+ \makeref interaction 73 :$0\to 3$
+ \makeref limit 302 =macro
+ \makeref line_width 830 :\\{scaled}
+ \makeref macro_call 389 :\&{procedure}
+ \makeref main_control 1030 :\&{procedure}
+ \makeref mem 116 :\&{array}
+ \makeref mem_bot 12 =$0$
+ \makeref mem_end 118 :\\{pointer}
+ \makeref mem_top 12 =macro
+ \makeref mlist_to_hlist 726 :\&{procedure}
+ \makeref mode 213 =macro
+ \makeref mode_line 213 =macro
+ \makeref more_name 516 :\&{function}
+ \makeref mu 448 :\\{boolean}
+ \makeref name 302 =macro
+ \makeref nest 213 :\&{array}
+ \makeref off_save 1064 :\&{procedure}
+ \makeref open_log_file 534 :\&{procedure}
+ \makeref output_active 989 :\\{boolean}
+ \makeref p 498 :\\{pointer}
+ \makeref param_stack 308 :\&{array}
+ \makeref pool_file 50 :\\{alpha\_file}
+ \makeref pool_ptr 39 :\\{pool\_pointer}
+ \makeref prefixed_command 1211 :\&{procedure}
+ \makeref prev_depth 213 =macro
+ \makeref prev_graf 213 =macro
+ \makeref prev_prev_r 830 :\\{pointer}
+ \makeref print_err 73 =macro
+ \makeref r 960 :\\{trie\_pointer}
+ \makeref reconstitute 906 :\&{function}
+ \makeref resume_after_display 1200 :\&{procedure}
+ \makeref save_ptr 271 :$0\to \\{save\_size}$
+ \makeref save_stack 271 :\&{array}
+ \makeref scan_dimen 448 :\&{procedure}
+ \makeref scan_math 1151 :\&{procedure}
+ \makeref short_display 174 :\&{procedure}
+ \makeref show_node_list 182 :\&{procedure}
+ \makeref start 302 =macro
+ \makeref state 302 =macro
+ \makeref str_pool 39 :\&{packed}\ \&{array}
+ \makeref str_ptr 39 :\\{str\_number}
+ \makeref str_start 39 :\&{array}
+ \makeref tail 213 =macro
+ \makeref trap_zero_glue 1229 :\&{procedure}
+ \makeref trie 921 :\&{array}
+ \makeref trie_char 921 =macro
+ \makeref trie_link 921 =macro
+ \makeref trie_op 921 =macro
+ \makeref vlist_out 629 :\&{procedure}
+ \makeref write_loc 1345 :\\{pointer}
+ }
+\hbox{\nsize=\ht0 \advance\nsize-\topskip
+ \divide\nsize by 3 \divide\nsize by\ninept
+ \multiply\nsize by\ninept \advance\nsize\topskip
+ \vsplit0 to\nsize \kern1pc
+ \msize=\ht0 \advance\msize-\topskip
+ \divide\msize by 2 \divide\msize by\ninept
+ \multiply\msize by\ninept \advance\msize\topskip
+ \vbox to\nsize{\vsplit0 to\msize\vss}\kern1pc
+ \vbox to\nsize{\box0\vss}}
+
+\buginvol B, in general (4/6/87)
+
+\tenpoint\noindent[The percent signs in all the comments (for example,
+on pages 7 and 50) are in the wrong font! Change `{\tt\%}' to `\%'.]
+
+\bugonpage Bvi, bottom line, and top line of next page (10/12/86)
+
+{\hsize=29pc
+\tenpoint\noindent
+puter Science Report 1097 (Stanford, California, April 1986), 146~pp.
+\ {\it The {\sltt WEB} programs for four utility programs that are
+often used with \TeX: {\sltt POOLtype}, {\sltt TFtoPL},
+{\sltt PLtoTF}, and {\sltt DVItype}.}
+\par}
+
+\bugonpage B2, line 32 (4/22/87)
+
+\ninepoint\noindent\hskip10pt
+{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
+{\tt This\]is\]TeX,\]Version\]2.2\char'23}\quad
+$\{\,$printed when \TeX\ starts$\,\}$
+
+\bugonpage B7, new line after line 25 (1/28/87)
+
+\ninepoint\noindent\hskip10pt
+{\bf if} $\\{max\_in\_open}\ge128$ {\bf then} $\\{bad}\gets6$;
+
+\bugonpage B13, first three lines (4/7/87)
+
+\tenpoint\noindent
+The `\\{name}' parameter, which is of type `{\bf packed array
+$[\langle\\{any}\rangle]$ of \\{char}}', stands for the name of
+the external file that is being opened for input or output.
+Blank spaces that might appear in \\{name} are ignored.
+
+\bugonpage B14, line 30 (4/7/87)
+
+\tenpoint\noindent
+{\bf 31.\quad}%
+The \\{input\_ln} function brings the next line of input from the specified
+file into available\cutpar
+
+\bugonpage B18, line 30 (5/22/86)
+
+\ninepoint\noindent
+\\{str\_ptr}: \\{str\_number};\quad
+$\{\,$number of the current string being created$\,\}$
+
+\bugonpage B21, first line of mini-index, right column (6/14/87)
+
+\eightpoint
+\indent\\{pool\_name}\unhcopy\eqbox|"string"|, \S11.
+
+\bugonpage B34, lines 5--6 (6/14/87)
+
+\tenpoint\noindent
+to delete a token, and/or if some fatal error
+occurs while \TeX\ is trying to fix a non-fatal one. But such recursion
+is never more than two levels deep.
+
+\bugonpage B55, lines 12--13 (4/21/87)
+
+\ninepoint\noindent\hskip10pt
+{\bf if} $r=p$ {\bf then if} $\\{rlink}(p)\ne p$ {\bf then}
+ $\langle\,$Allocate entire node $p$ and {\bf goto} \\{found}%
+ {\sevenrm\kern.5em129}$\,\rangle$;
+
+\bugonpage B57, lines 25--28 (6/14/87)
+
+\tenpoint\noindent
+The first of these has $\\{font}=\\{font\_base}$, and its \\{link}
+points to the second;
+the second identifies the font and the character dimensions.
+The saving feature about oriental characters is that most of them have
+the same box dimensions. The \\{character} field of the first \\{char\_node}
+is a ``\\{charext}'' that distinguishes between graphic symbols whose
+dimensions are identical for typesetting purposes. (See the \MF\ manual.)
+Such an extension of \TeX\ would not be difficult; further details are
+left to the reader.
+
+\bugonpage B58, second line of section 136 (7/23/86)
+
+\tenpoint\noindent
+the values corresponding to `|\hbox{}|'. The \\{subtype} field is set to
+\\{min\_quarterword}, since that's\cutpar
+
+\bugonpage B66, lines 2--8 (4/21/87)
+
+\tenpoint\noindent
+location is
+more efficient than dynamic allocation when we can get away with it. For
+example, locations \\{mem\_bot} to $\\{mem\_bot}+3$ are always used to store the
+specification for glue that is `\hbox{\tt 0pt plus 0pt minus 0pt}'. The
+following macro definitions accomplish the static allocation by giving
+symbolic names to the fixed positions. Static variable-size nodes appear
+in locations \\{mem\_bot} through \\{lo\_mem\_stat\_max}, and static
+single-word nodes appear in locations \\{hi\_mem\_stat\_min} through
+\\{mem\_top}, inclusive. It is harmless to let \\{lig\_trick} and
+\\{garbage} share the same location of \\{mem}.
+
+\bugonpage B67, line 23 (4/13/87)
+
+\ninepoint\noindent\hskip30pt
+$\{\,$previous \\{mem\_end}, \\{lo\_mem\_max}, and \\{hi\_mem\_min}$\,\}$
+
+\bugonpage B71, line 17 (4/15/87)
+
+\ninepoint\noindent\hskip10pt
+{\bf begin while} $p>\\{mem\_min}$ {\bf do}
+
+\smallskip\eightpoint\noindent[Now \\{null} can be removed from the mini-index.]
+
+\bugonpage B74, line 24 (4/15/87)
+
+\ninepoint\noindent
+{\bf procedure} \\{show\_node\_list}($p\;{:}\;\\{integer}$);\quad
+$\{\,$prints a node list symbolically$\,\}$
+
+\bugonpage B74, line 33 (4/15/87)
+
+\ninepoint\noindent\hskip10pt
+{\bf while} $p>\\{mem\_min}$ {\bf do}
+
+\bugonpage B84, line 12 (2/15/87)
+
+\ninepoint\noindent\hskip10pt
+{\bf define} $\\{relax}=0$\quad$\{\,$do nothing ( {\tt\char`\\relax} )$\,\}$
+
+\bugonpage B86, third line of section 210 (8/23/86)
+
+\tenpoint\noindent
+that their special nature is easily discernible.
+The ``expandable'' commands come first.
+
+\bugonpage B88, line 23 (5/22/86)
+
+\ninepoint\noindent
+{\bf procedure\/}\ $\\{print\_mode}(m:\\{integer})$;\quad
+$\{\,$prints the mode represented by $m\,\}$
+
+\bugonpage B93, lines 3--4 (8/17/86)
+
+{\tenpoint\parindent=1em
+In the first region we have 128 equivalents for ``active characters'' that
+act as control sequences, followed by 128 equivalents for single-character
+control sequences.
+\par}
+
+\bugonpage B130, ninth-last line (5/7/87)
+
+\tenpoint\noindent
+This variable has six possible values:
+
+\bugonpage B151, line 9 (4/22/87)
+
+\ninepoint\noindent\hskip20pt
+{\bf begin if} $(\\{end\_line\_char}<0)\lor(\\{end\_line\_char}>127)$
+ {\bf then} \\{incr}(\\{limit});\par\noindent\hskip20pt
+{\bf if} $\\{limit}=\\{start}$ {\bf then}\quad
+ $\{\,$previous line was empty$\,\}$
+
+\bugonpage B160, lines 17--20 (7/28/86)
+
+\tenpoint\noindent
+{\bf 389.\quad}%
+After parameter scanning is complete, the parameters are moved to the
+\\{param\_stack}. Then the macro body is fed to the scanner; in other words,
+\\{macro\_call} places the defined text of the control sequence at the
+top of\/ \TeX's input stack, so that \\{get\_next} will proceed to read it
+next.
+
+\bugonpage B200, top line (5/5/87)
+
+\tenpoint\noindent{\bf 495.\quad}%
+ When we begin to process a new {\tt\char`\\if}, we set
+$\\{if\_limit}\gets\\{if\_code}$; then
+if\/ {\tt\char`\\or} or {\tt\char`\\else} or {\tt\char`\\fi}\cutpar
+
+\bugonpage B217, lines 15--16 (6/14/87)
+
+\tenpoint\noindent
+|DVI| format.
+
+\bugonpage B224, lines 4--7 of section 560 (10/22/86)
+
+\tenpoint\noindent
+name and area strings \\{nom} and \\{aire}, and the
+``at'' size~$s$. If $s$~is negative, it's the negative of a scale factor
+to be applied to the design size; $s=-1000$ is the normal case.
+Otherwise $s$ will be substituted for the design size; in this
+case, $s$ must be positive and less than $2048\rm\,pt$
+(i.e., it must be less than $2^{27}$ when considered as an integer).
+
+\bugonpage B224, second-last line (4/28/87)
+
+\ninepoint\noindent
+\\{done}: {\bf if} \\{file\_opened} {\bf then} \\{b\_close}(\\{tfm\_file});\par
+\noindent\hskip10pt $\\{read\_font\_info}\gets g$;
+
+\bugonpage B255, mini-index at the bottom (4/15/87)
+
+\eightpoint
+$\\{mag}=\rm macro$, \S236.
+
+\bugonpage B257, lines 11--13 (6/14/87)
+
+\ninepoint
+\noindent\hskip20pt{\bf if} $c\ge\\{qi}(128)$ {\bf then}
+ \\{dvi\_out}(\\{set1});\par
+\noindent\hskip20pt\\{dvi\_out}(\\{qo}($c$));
+
+\bugonpage B260, lines 7--8 (4/15/87)
+
+\tenpoint\noindent\hskip10pt
+In the case of \\{c\_leaders} (centered leaders), we want to increase \\{cur\_h}
+by half of the excess space not occupied by the leaders; and in the
+case of \\{x\_leaders} (expanded leaders) we increase\cutpar
+
+\bugonpage B267, mini-index at the bottom (4/15/87)
+
+\eightpoint
+\\{cur\_s}: \\{integer}, \S616.
+$\\{mag}=\rm macro$, \S236.
+$\\{pop}=142$, \S586.
+
+\bugonpage B271, line 10 (8/23/86)
+
+\tenpoint\noindent
+which will be ignored in the calculations
+because it is a highly negative number.
+
+\bugonpage B285, lines 23 and 24 (5/4/87)
+
+\tenpoint\noindent
+the current string would be `{\tt.\char`\^.\char`\_/}'
+if $p$ points to the \\{ord\_noad} for $x$ in the (ridiculous) formula
+`{\tt\char`\\sqrt\char`\{a\char`\^\char`\{\char`\\mathinner\char`\{%
+b\char`\_\char`\{c\char`\\over x+y\char`\}\char`\}\char`\}\char`\}\char`\$}'.
+
+\bugonpage B296, lines 3--5 (5/8/87)
+
+\tenpoint\noindent
+box~$b$ and
+changes it so that the new box is centered in a box of width~$w$.
+The centering is done by putting {\tt\char`\\hss} glue at the left and right
+of the list inside $b$, then packaging the new box; thus, the
+actual box might not really be centered, if it already contains
+infinite glue.
+
+\bugonpage B346, line 19 (5/19/87)
+
+\ninepoint\noindent
+\\{pass\_number}: \\{halfword};\quad
+$\{\,$the number of passive nodes allocated on this pass$\,\}$
+
+\bugonpage B350, lines 36 and 37 (1/28/87)
+
+\ninepoint\noindent
+$v$: \\{pointer};\quad
+$\{\,$points to a glue specification or a node ahead of \\{cur\_p}$\,\}$
+\par\noindent
+$t$: \\{integer};\quad
+$\{\,$node count, if \\{cur\_p} is a discretionary node$\,\}$
+
+\bugonpage B353, lines 8--22 (1/28/87)
+
+\ninepoint
+\noindent\hskip10pt$s\gets\\{cur\_p}$;\par
+\noindent\hskip10pt{\bf if} $\\{break\_type}>\\{unhyphenated}$ {\bf then}
+ {\bf if} $\\{cur\_p}\ne\\{null}$ {\bf then}\par
+\noindent\hskip30pt$\langle\,$Compute the discretionary
+ \\{break\_width} values{\sevenrm\kern.5em840}$\,\rangle$;\par
+\noindent\hskip10pt{\bf while} $s\ne\\{null}$ {\bf do}\par
+\noindent\hskip30pt\vdots\hskip30pt [as before, but indented one less notch]\par
+\noindent\hskip10pt{\bf end};
+
+\bugonpage B354, line 6 (1/28/87)
+
+\tenpoint\noindent
+will be the background plus $l_1$, so the length from \\{cur\_p} to \\{cur\_p}
+should be $\gamma+l_0+l_1-l$,
+minus the length of nodes that will be discarded after the discretionary break.
+
+\bugonpage B354, lines 12--18 (1/28/87)
+
+\ninepoint
+\noindent\hskip10pt{\bf begin} $t\gets\\{replace\_count}(\\{cur\_p})$;\kern5pt
+ $v\gets\\{cur\_p}$;\kern5pt $s\gets\\{post\_break}(\\{cur\_p})$;\par
+\noindent\hskip10pt{\bf while} $t>0$ {\bf do}\par
+\noindent\hskip20pt{\bf begin} $\\{decr}(t)$;\kern5pt
+ $v\gets\\{link}(v)$;\kern5pt
+ $\langle\,$Subtract the width of node $v$ from \\{break\_width}%
+ {\sevenrm\kern.5em841}$\,\rangle$;\par
+\noindent\hskip20pt{\bf end};\par
+\noindent\hskip10pt{\bf while} $s\ne\\{null}$ {\bf do}\par
+\noindent\hskip20pt{\bf begin} $\langle\,$Add the width of
+ node $s$ to \\{break\_width} and increase $t$, unless it's
+ discardable{\sevenrm\kern.5em842}$\,\rangle$;\par
+
+\bugonpage B354, new line after line 21 (1/28/87)
+
+\ninepoint\noindent\hskip10pt
+{\bf if} $t=0$ {\bf then} $s\gets\\{link}(v)$;\quad
+ $\{\,$more nodes may also be discardable after the break$\,\}$
+
+\bugonpage B354, lines 26--34 (1/28/87)
+
+\ninepoint\noindent
+[Change `$s$' to `$v$' throughout this section (8 times).]
+
+\bugonpage B354, line 9 from the bottom (1/28/87)
+
+\tenpoint\noindent{\bf 842.\quad}%
+\ninepoint$\langle\,$Add the width of
+ node $s$ to \\{break\_width} and increase $t$, unless it's
+ discardable{\sevenrm\kern.5em842}$\,\rangle\equiv$
+
+\bugonpage B355, lines 1--3 (1/28/87)
+
+\ninepoint
+\noindent\hskip20pt$\\{hlist\_node},\\{vlist\_node},\\{rule\_node}$:
+ $\\{break\_width}[1]\gets\\{break\_width}[1]+\\{width}(s)$;\par
+\noindent\hskip20pt\\{kern\_node}: {\bf if} $(t=0)\land
+ (\\{subtype}(s)\ne\\{acc\_kern})$ {\bf then}
+ $t\gets-1$\quad$\{\,$discardable$\,\}$\par
+\noindent\hskip30pt{\bf else} $\\{break\_width}[1]\gets
+ \\{break\_width}[1]+\\{width}(s)$;\par
+\noindent\hskip20pt{\bf othercases}
+ \\{confusion}({\tt\char'42 disc2\char'42})\par
+\noindent\hskip20pt{\bf endcases};\par
+\noindent\hskip10pt$\\{incr}(t)$
+
+\bugonpage B355, patches to mini-index at bottom (1/28/87)
+
+\eightpoint
+$\\{acc\_kern}=2$, \S155.\par
+$\\{incr}=\rm macro$, \S16.\par
+$t$: \\{integer}, \S830.\par
+$v$: \\{pointer}, \S830.
+
+\bugonpage B372, lines 12--14 (1/28/87)
+
+\ninepoint
+\noindent\hskip40pt$\langle\,$Change discretionary to compulsory
+ and set $\\{disc\_break}\gets\\{true}${\sevenrm\kern.5em882}$\,\rangle$\par
+\noindent\hskip30pt{\bf else if\/} $(\\{type}(q)=\\{math\_node})\lor
+ (\\{type}(q)=\\{kern\_node})$ {\bf then} $\\{width}(q)\gets0$;
+
+\bugonpage B380, fifth-last line (5/7/87)
+
+\begingroup\tenpoint\noindent\def\!{\kern-1pt}\def\.#1{\hbox{\tt#1}}
+\.b and \.c, the two patterns with and without hyphenation are
+$\.a\,\.b\,\.-\,\.{c\!d}\,\.{e\!f}$ and $\.a\,\.{b\!c}\,\.{d\!e}\,\.f$.
+Thus the\cutpar\endgroup
+
+\bugonpage B386, lines 2--4 (5/21/87)
+
+\tenpoint\noindent
+hyphenation,
+\TeX\ first looks to see if it is in the user's exception dictionary. If not,
+hyphens are inserted based on patterns that appear within the given word,
+using an algorithm due to Frank~M. Liang.
+
+\bugonpage B397, line 28 (5/21/87)
+
+\tenpoint\noindent
+$h=z-c$. It follows that location \\{trie\_max} will
+never be occupied in \\{trie}, and we will have\cutpar
+
+\bugonpage B415, the mini-index (4/6/87)
+
+\eightpoint\noindent[Delete the spurious entry for `$c$'.]
+
+\bugonpage B419, mini-index entry for \\{c} (4/6/87)
+
+\eightpoint $c$: \\{integer}, \S994.
+
+\bugonpage B422, line 24 (8/23/86)
+
+\ninepoint\noindent
+\hskip20pt\\{prev\_p}: \\{pointer};\quad
+$\{\,$predecessor of $p\,\}$
+
+\bugonpage B435, line 16 (10/12/86)
+
+\ninepoint\noindent
+\hskip20pt$\\{width}(p)\gets\\{font\_info}[k].\\{sc}$;\quad
+$\{\,$that's \\{space}$(f)\,\}$\par\noindent
+\hskip20pt$\\{stretch}(p)\gets\\{font\_info}[k+1].\\{sc}$;\quad
+$\{\,$and \\{space\_stretch}$(f)\,\}$\par\noindent
+\hskip20pt$\\{shrink}(p)\gets\\{font\_info}[k+2].\\{sc}$;\quad
+$\{\,$and \\{space\_shrink}$(f)\,\}$\par
+\smallskip\eightpoint\noindent
+[And the mini-index gets three new entries:
+$\\{space}=macro$, \S558.
+$\\{space\_shrink}=macro$, \S558.
+$\\{space\_stretch}=macro$, \S558.]
+
+\bugonpage B495, lines 18 and 19 (2/15/87)
+
+\ninepoint\noindent
+[delete these lines, since the cases cannot occur]
+
+\bugonpage B510, line 8 (12/15/86)
+
+\ninepoint\noindent\hskip30pt
+({\tt"Pretend\]that\]you're\]Hercule\]Poirot:\]Examine\]all\]clues,"})
+
+\bugonpage B527, new line to follow line 13 (6/17/86)
+
+{\tenpoint\parindent=1em
+This program doesn't bother to close the input files that may still be open.
+\par}
+
+\bugonpage B534, fourth-last line (5/4/87)
+
+\ninepoint\noindent\hskip10pt
+{\bf define} $\\{write\_stream}(\hbox{\tt\char`\#})\equiv\\{info}(
+ \hbox{\tt\char`\#}+1)$\quad $\{\,$stream number (0 to 17)$\,\}$
+
+\bugonpage B544, left column (1/28/87)
+
+\eightpoint
+\leftline{\\{acc\_kern}:\quad$\underline{155}$, 191, 837, 842, 879, 1125.}
+
+\bugonpage B546, entry for \\{c} (4/6/87)
+
+\eightpoint\noindent[Add a reference to section $\underline{994}$.]
+
+\bugonpage B547, left column (4/7/87)
+
+\eightpoint
+\leftline{\\{char}:\quad 19, 26--27, 520, 534.}
+
+\bugonpage B547, left column (6/14/87)
+
+\eightpoint
+\leftline{Chinese characters:\quad 134, 585.}
+
+\bugonpage B553, entry for \\{font\_base} (6/14/87)
+
+\eightpoint\noindent[Insert a reference to section 134.]
+
+\bugonpage B555, right column, new entry (10/25/86)
+
+\eightpoint
+\leftline{{\tt Huge page...},\quad 641.}
+
+\bugonpage B556, entry for \\{incr} (1/28/87)
+
+\eightpoint\noindent[Add a reference to section 842.]
+
+\bugonpage B557, entry for \\{is\_char\_node} (1/28/87)
+
+\eightpoint\noindent[Delete the reference to section 881.]
+
+\bugonpage B557, right column (6/14/87)
+
+\eightpoint
+\leftline{Japanese characters:\quad 134, 585.}
+
+\bugonpage B560, right column (1/28/87)
+
+\eightpoint
+\leftline{\\{max\_in\_open}:\quad$\underline{11}$, 14, 304, 328.}
+
+\bugonpage B561, left column, line 10 (4/15/87)
+
+\eightpoint
+\leftline{\qquad 169--172, 174, 178, 182, 1249, 1312, 1334.}
+
+\bugonpage B561, left column (5/1/87)
+
+\eightpoint
+\leftline{{\tt Missing font identifier}:\quad 577.}
+
+\bugonpage B563, left column, line 2 (4/15/87)
+
+\eightpoint
+\leftline{\qquad 136, 145, 149--154, 164, 168--169, 175--176, 182,}
+
+\bugonpage B563, right column (6/14/87)
+
+\eightpoint
+\leftline{oriental characters:\quad 134, 585.}
+
+\bugonpage B569, right column, in appropriate places (10/12/86)
+
+\eightpoint
+\leftline{\\{space}:\quad 547, $\underline{558}$, 752, 755, 1042.}
+\leftline{\\{space\_shrink}:\quad 547, $\underline{558}$, 1042.}
+\leftline{\\{space\_stretch}:\quad 547, $\underline{558}$, 1042.}
+
+\bugonpage B570, third-last line (1/28/87)
+
+\eightpoint\noindent\qquad
+ 786, 795, 809, 819--820, 822, 837, 842--844, 866,
+
+\bugonpage B571, right column (10/25/86)
+
+\eightpoint
+\leftline{{\tt The following...deleted},\quad 641, 992, 1121.}
+
+\bugonpage B571, right column (4/7/87)
+
+\eightpoint
+\leftline{\\{text\_char}:\quad $\underline{19}$, 20, 25, 47.}
+
+\bugonpage B573, right column (5/1/87)
+
+\eightpoint\noindent
+[Delete the entry for `{\tt Undefined font code}'.]
+
+\bugonpage B576, line 2 (1/28/87)
+
+\ninepoint\noindent
+$\langle\,$Add the width of
+ node $s$ to \\{break\_width} and increase $t$, unless it's
+ discardable{\sevenrm\kern.5em842}$\,\rangle$\par
+\noindent\qquad {\eightpoint Used in section 840.}
+
+\bugonpage B591, line 6 from the bottom (1/28/87)
+
+\ninepoint\noindent
+ $\langle\,$Subtract the width of node $v$ from \\{break\_width}%
+ {\sevenrm\kern.5em841}$\,\rangle$\quad
+ {\eightpoint Used in section 840.}
+
+ % volume C
+\hsize=29pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+
+\bugonpage C14, top two lines (3/16/87)
+
+\danger The recursive midpoint rule for curve-drawing was discovered in 1959
+by Paul de Casteljau, who showed that the curve could be described
+algebraically by the remarkably simple formula
+
+\bugonpage C54, sixth-last to fourth-last lines (10/13/86)
+
+\ninepoint Jonathan H. Quick (a student) used `|a.plus1|' as the name
+of a variable at the beginning of his program; later he said `|let|
+|plus=+|'. How could he refer to the variable `|a.plus1|' after that?
+
+\bugonpage C76, line 14 (10/13/86)
+
+\tenpoint
+\newdimen\longesteq
+\setbox0=\hbox{\indent$z_{12}-z_{11}=z_{14}-z_{13}$\quad}
+\longesteq=\wd0
+\noindent\hbox to \longesteq{\indent
+ $x_4=w-.01\\{in}$\hfil}%
+Point 4 should be one-hundredth of an inch inside\cutpar
+
+\bugonpage C103, line 12 (10/12/86)
+
+\tenpoint
+$\\{ht}\0=\\{body\_height}\0$; \ $.5[\\{ht}\0,-\\{dp}\0]=\\{axis}\0$;
+
+\bugonpage C105, line 13 (10/13/86)
+
+\ninepoint
+The vertical line just to the right of the italic left parenthesis
+shows the italic\cutpar
+
+\bugonpage C113, lines 20--27 (8/23/86)
+
+{\catcode`\@=\active
+\def@#1@{\begingroup\def\_{\kern.04em
+ \vbox{\hrule width.3em height .6pt}\kern.08em}%
+ \ifmmode\mathop{\bf#1}\else\hbox{\bf#1\/}\fi\endgroup}
+\danger The command `@erase@ @fill@ $c$' is an abbreviation for
+`@cullit@; @unfill@~$c$; @cullit@'; this zeros out the pixel values inside
+the cyclic path~$c$, and sets other pixel values to~1 if they were positive
+before erasing took place. \ (It works because the initial @cullit@ makes
+all the values 0 or~1, then the @unfill@ changes the values inside~$c$
+to 0 or negative. The final @cullit@ gets rid of the negative values,
+so that they won't detract from future filling and drawing.) \ You can
+also use `@draw@', `@filldraw@', or `@drawdot@' with `@erase@'; for example,
+`@erase@ @draw@~$p$' is an abbreviation for `@cullit@; @undraw@~$p$;
+@cullit@', which uses the currently-picked-up pen as if it were an
+eraser applied to path~$p$.
+
+}
+
+\bugonpage C124, line 9 (6/17/86)
+
+\eightpoint
+\noindent\hskip1.8in
+$\\{branch}_2=\\{flex}((30,570),(10,590),(-1,616))$
+
+\bugonpage C130, 3rd-last line (9/25/86)
+
+\ninepoint\noindent
+{\sl Geometry\/ \bf 1} (1986), 123--140]: Given a sequence
+
+\bugonpage C144, sixth line of the program (8/23/86)
+
+\ninepoint\noindent\hbox to\parindent{\hfil\sevenrm6\ \ \ }%
+$y_2=.1h$; \ $\\{top}\,y_3=.4h$;
+
+\bugonpage C148, the line before the illustration (11/27/86)
+
+\ninepoint\noindent
+are polygons with 32 and 40 sides, respectively:
+
+\smallskip\noindent
+[New illustrations are needed here, since \MF\ version 1.3 improves
+the accuracy of pen polygons.]
+
+\bugonpage C149, 7th line after the illustration (10/24/86)
+
+\ninepoint
+\line{$(200,y+100\pm\alpha)$, where
+$\alpha=\sqrt5/4\approx0.559$. If we digitize these outlines and fill the}
+
+\bugonpage C178, second-last line (8/23/86)
+
+\ninepoint\noindent
+(If $t_3=t_1$~transum~$t_2$, then
+$z$~transformed~$t_3=z$~transformed~$t_1+z$~transformed~$t_2$,\cutpar
+
+\bugonpage C198, fifth-last and fourth-last lines (10/13/86)
+
+\ninepoint\vskip-3pt
+\begindisplay
+$\\{top}\,y_2={\rm round}(\\{top}\,\beta)$.
+\enddisplay
+Such operations occur frequently in practice, so plain \MF\ provides
+convenient\cutpar
+
+\bugonpage C212, lines 9--11 from the bottom (8/23/86)
+
+\ninepoint
+\qquad
+ \alt\[point]\<numeric expression>\[of]\<path primary>\continuerule
+ \alt\[precontrol]\<numeric expression>\[of]\<path primary>\continuerule
+ \alt\[postcontrol]\<numeric expression>\[of]\<path primary>
+
+\bugonpage C233, lines 13--14 (2/15/87)
+
+\ninepoint\noindent
+one column of white
+pixels, if the character is $2a$ pixels wide, because the right edge of
+black pixels is specified here to have the $x$~coordinate $2a-1$.
+
+\bugonpage C247, lines 23--25 (11/27/86)
+
+\ninepoint
+\ansno 16.2:
+ `{\bf pencircle} scaled 1.06060' is the diamond but
+`{\bf pencircle} scaled 1.06061' is~the square. \ (This assumes that
+$\\{fillin}=0$. If, for example, $\\{fillin}=.1$, the change doesn't
+occur until the diameter is 1.20204.) \ The next change is at diameter
+1.5, which\cutpar
+
+\bugonpage C262, lines 1--4 (7/28/86)
+
+\ninepoint
+When we come to macros whose use has not yet been explained---for
+example, somehow |softjoin| and |stop| never made it
+into Chapters 1 through~27---we shall consider them from a user's
+viewpoint. But most of the comments that follow are addressed to a
+potential base-file designer.
+
+\bugonpage C266, line 16 (8/17/86)
+
+\ninepoint\noindent
+variables; they have the side effect of changing the variable's value.
+
+\bugonpage C276, line 26 (6/23/86)
+
+\ninepoint
+\noindent
+| if charic<>0: r((w+charic*hppp,h.o_),(w+charic*hppp,.5h.o_)); fi|
+
+\bugonpage C286, lines 24--26 (10/13/86)
+
+\ninepoint\noindent
+but \MF\ won't let you. And even if this had worked, it wouldn't have
+solved the problem; it would simply have put |ENDFOR| into the
+replacement text of |ast|, because expansion is inhibited when the
+replacement text is being read.
+
+\bugonpage C290, line 1 (8/23/86)
+
+\ninepoint \noindent{\it 2.\enspace Fortuitous loops.\enspace}%
+The `^{max}' and `^{min}' macros in Appendix~B make use of the fact\cutpar
+
+\bugonpage C298, third-last line (8/23/86)
+
+\ninepoint
+$t[\,u_1,\ldots,u_n]\;=\;t\bigl[t[u_1,\ldots,u_{n-1}],t[u_2,\ldots,u_n]\,\bigr]$
+
+\bugonpage C304, 14th-last line (2/15/87)
+
+\ninepoint\noindent
+[replace this `|\smallskip|' by a |\smallskip| between lines!]
+
+\bugonpage C307, fifth-last line (12/7/86)
+
+\ninepoint
+{\def\_{\kern.04em
+ \vbox{\hrule width.3em height .6pt}\kern.08em}%
+\bf adjust\_fit}(\<left sidebearing adjustment>,\thinspace
+ \<right sidebearing adjustment>);
+
+\bugonpage C312, line 34 (10/12/86)
+
+\ninepoint\noindent
+|params[2] = "sans_params"; fontname[2] = "cmssbx10";|
+
+\bugonpage C316, lines 19--21 (8/17/86)
+
+\ninepoint\noindent
+example,
+`|(some| |charht| |values| |had| |to| |be| |adjusted| |by| |as| |much|
+|as| |0.12pt)|' means that~you had too many different nonzero heights, but
+\MF\ found a way to reduce the number to at most~15 by changing some of
+them; none of them had to be\cutpar
+
+\bugonpage C319, line 3 (8/23/86)
+
+\ninepoint\noindent
+specified by saying, e.g.,
+
+\bugonpage C321, line 6 (7/28/86)
+
+\ninepoint\noindent
+| special "identifier " & font_identifier_;|
+
+\bugonpage C334, line 2 (6/23/86)
+
+\ninepoint\noindent
+| currentpicture := currentpicture shifted-(1,1); pix := currentpicture;|
+
+\bugonpage C339, tenth-last line (2/4/87)
+
+\ninepoint\noindent
+| Jackie K\=aren {\L}au\.ra Mar{\'\i}a N\H{a}ta{\l}{\u\i}e {\O}ctave|
+
+\bugonpage C343, second-last line (8/23/86)
+
+\rightline{\eightssi
+the precise needs of a precise but limited intellectual goal.}
+
+\bugonpage C346, 2nd line of entry for `{\tt;}' (1/12/87)
+
+\eightpoint
+\qquad 217, 223--224, 263, 312.
+
+\bugonpage C348, line 6 (6/17/86)
+
+\eightpoint
+concatenation, of paths, {\eightit 70--71}, {\eightit 123}, 127,
+
+\bugonpage C348, just before `debugging' (3/16/87)
+
+\eightpoint
+de Casteljau, Paul de Faget, 14.
+
+\bugonpage C348, right column (3/16/87)
+
+\eightpoint\noindent
+[The entry for `|define_whole_vertical_blacker_pixels|' should be moved up
+before the entry for `|define_whole_vertical_pixels|'.]
+
+\bugonpage C352, left column (6/1/87)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt kern}, {\it 97}, {\it 316}, $\underline{317}$.
+
+\bugonpage C352, right column (3/8/87)
+
+\eightpoint\noindent
+[The entry for `|lowres|' belongs before the entry for `|lowres_fix|'.]
+
+\bugonpage C353, left column (3/8/87)
+
+\eightpoint\noindent
+[The entries for `|mode|' and `\<mode command>' belong before the entry
+for `|mode_def|'.]
+
+\bugonpage C353, entry for {\tt mode\char`\_def} (8/17/86)
+
+\eightpoint
+{\tt mode\char`\_def}, 94, 189, $\underline{\smash{\hbox{\it 270}}}$,
+{\it 278--279}.
+
+\bugonpage C355, right column (4/15/86)
+
+\eightpoint\noindent
+[The entry for `{\tt rulepen}' belongs before the entry for `rules'.]
+
+\bugonpage C355, right column (8/5/86)
+
+\eightpoint
+{\tt screenstrokes}, 191, $\underline{277}$.
+
+\bugonpage C355, 2nd line of entry for `semicolons' (1/12/87)
+
+\eightpoint
+\qquad 217, 223--224, 263, 312.
+
+\bugonpage C356, full names for the Stanfords (4/10/86)
+
+\eightpoint
+Stanford, Amasa Leland, 340.
+
+Stanford, Jane Elizabeth Lathrop, 340.
+
+ % Volume D
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\buginvol D, in general (7/28/86)
+
+\tenpoint\noindent
+[A number of entries were mistakenly omitted from the mini-indexes
+on the right-hand pages. Here is a combined list of all the missing
+items; you can mount it inside the back cover, say, as a secondary mini-index
+when the first one fails\dots\ ]
+
+\nobreak\medskip
+\setbox0=\vbox{\eightpoint \hsize=11pc \catcode`\_=\active \let_=\_
+ \rightskip=0pt plus 100pt minus 10pt
+ \pretolerance 10000
+ \hyphenpenalty 10000 \exhyphenpenalty 10000
+ \noindent\vbox to1pt{}\par % 1pt = \topskip - \ninept
+ \def\&#1{\hbox{\bf#1\/}} % boldface type for reserved words
+ \obeylines
+ \def\makeref #1 #2 #3#4
+ {\nn=#2 \hangindent=1em \noindent\\{#1}%
+ \if#3:: \else\unhcopy\eqbox \fi#4, \S\number\nn.\par}
+ \makeref add_or_subtract 930 :\&{procedure}
+ \makeref after 427 :\&{array}
+ \makeref arg_list 720 :\\{pointer}
+ \makeref b 580 :\\{pixel\_color}
+ \makeref bad_exp 824 :\&{procedure}
+ \makeref before 427 :\&{array}
+ \makeref begin_name 770 :\&{procedure}
+ \makeref bilin1 968 :\&{procedure}
+ \makeref binary_mac 863 :\&{procedure}
+ \makeref blank_rectangle 567 :\&{procedure}
+ \makeref boc_c 1162 :\\{integer}
+ \makeref boc_p 1162 :\\{integer}
+ \makeref cf 298 :\\{fraction}
+ \makeref clockwise 453 :\\{boolean}
+ \makeref ct 298 :\\{fraction}
+ \makeref cubic_intersection 556 :\&{procedure}
+ \makeref cur_pen 403 :\\{pointer}
+ \makeref cur_rounding_ptr 427 :$0\to \\{max\_wiggle}$
+ \makeref cur_spec 403 :\\{pointer}
+ \makeref cur_x 389 :\\{scaled}
+ \makeref cur_y 389 :\\{scaled}
+ \makeref dely 557 :\\{integer}
+ \makeref dep_finish 935 :\&{procedure}
+ \makeref dep_list 587 =macro
+ \makeref dimen_head 1125 :\&{array}
+ \makeref dx 495 :\\{integer}
+ \makeref dy 495 :\\{integer}
+ \makeref d1 464 :$0\to 1$
+ \makeref end_name 772 :\&{procedure}
+ \makeref eqtb 201 :\&{array}
+ \makeref error_stop_mode 68 =$3$
+ \makeref firm_up_the_line 682 :\&{procedure}
+ \makeref get_next 667 :\&{procedure}
+ \makeref gf_buf 1152 :\&{array}
+ \makeref gf_offset 1152 :\\{integer}
+ \makeref gf_ptr 1152 :\\{gf\_index}
+ \makeref halfword 156 =$\\{min\_halfword}\to \\{max\_halfword}$
+ \makeref hash 201 :\&{array}
+ \makeref index 629 =macro
+ \makeref input_ln 30 :\&{function}
+ \makeref interaction 68 :$0\to 3$
+ \makeref j 357 :$0\to \\{move\_size}$
+ \makeref known_pair 872 :\&{procedure}
+ \makeref limit 629 =macro
+ \makeref m_spread 357 :\\{integer}
+ \makeref materialize_pen 865 :\&{procedure}
+ \makeref max_allowed 403 :\\{scaled}
+ \makeref max_c 813 :\&{array}
+ \makeref max_link 813 :\&{array}
+ \makeref max_tfm_dimen 1130 :\\{scaled}
+ \makeref mem_top 12 =macro
+ \makeref mem 159 :\&{array}
+ \makeref memory_word 156 =\&{record}
+ \makeref more_name 771 :\&{function}
+ \makeref m1 464 :\\{integer}
+ \makeref n 580 :\\{screen\_col}
+ \makeref n_sin_cos 145 :\&{procedure}
+ \makeref name 629 =macro
+ \makeref negate_dep_list 904 :\&{procedure}
+ \makeref new_knot 871 :\&{function}
+ \makeref node_to_round 427 :\&{array}
+ \makeref n1 464 :\\{integer}
+ \makeref octant_dir 395 :\&{array}
+ \makeref o1 453 :\\{small\_number}
+ \makeref o2 453 :\\{small\_number}
+ \makeref paint_row 568 :\&{procedure}
+ \makeref param 1096 :\&{array}
+ \makeref param_stack 633 :\&{array}
+ \makeref path_length 916 :\&{function}
+ \makeref perturbation 1119 :\\{scaled}
+ \makeref phi 542 :\\{angle}
+ \makeref pool_ptr 38 :\\{pool\_pointer}
+ \makeref post_head 843 :\\{pointer}
+ \makeref pre_head 843 :\\{pointer}
+ \makeref print_err 68 =macro
+ \makeref print_macro_name 722 :\&{procedure}
+ \makeref quarterword 156 =$0\to 255$
+ \makeref recycle_value 809 :\&{procedure}
+ \makeref row_transition 579 :\\{trans\_spec}
+ \makeref scan_text_arg 730 :\&{procedure}
+ \makeref scroll_mode 68 =$2$
+ \makeref set_controls 299 :\&{procedure}
+ \makeref sf 298 :\\{fraction}
+ \makeref show_context 635 :\&{procedure}
+ \makeref sorted 325 =macro
+ \makeref st 298 :\\{fraction}
+ \makeref start 629 =macro
+ \makeref start_sym 1077 :\\{halfword}
+ \makeref str_pool 38 :\&{packed}\ \&{array}
+ \makeref str_ptr 38 :\\{str\_number}
+ \makeref str_start 38 :\&{array}
+ \makeref take_part 910 :\&{procedure}
+ \makeref tfm_changed 1130 :\\{integer}
+ \makeref tol 557 :\\{integer}
+ \makeref tt 843 :\\{small\_number}
+ \makeref tx 954 :\\{scaled}
+ \makeref txx 954 :\\{scaled}
+ \makeref txy 954 :\\{scaled}
+ \makeref ty 954 :\\{scaled}
+ \makeref tyx 954 :\\{scaled}
+ \makeref tyy 954 :\\{scaled}
+ \makeref unsorted 325 =macro
+ \makeref uv 557 :$0\to \\{bistack\_size}$
+ \makeref xy 557 :$0\to \\{bistack\_size}$
+ \makeref x1 542 :\\{scaled}
+ \makeref x2 542 :\\{scaled}
+ \makeref x3 542 :\\{scaled}
+ \makeref y1 542 :\\{scaled}
+ \makeref y2 542 :\\{scaled}
+ \makeref y3 542 :\\{scaled}
+ }
+\hbox{\nsize=\ht0 \advance\nsize-\topskip
+ \divide\nsize by 3 \divide\nsize by\ninept
+ \multiply\nsize by\ninept \advance\nsize\topskip
+ \vsplit0 to\nsize \kern1pc
+ \msize=\ht0 \advance\msize-\topskip
+ \divide\msize by 2 \divide\msize by\ninept
+ \multiply\msize by\ninept \advance\msize\topskip
+ \vbox to\nsize{\vsplit0 to\msize\vss}\kern1pc
+ \vbox to\nsize{\box0\vss}}
+
+\buginvol D, in general (4/6/87)
+
+\tenpoint\noindent[The percent signs in all the comments (for example,
+on pages 7 and 42) are in the wrong font! Change `{\tt\%}' to `\%'.]
+
+\bugonpage Dvii, line 9 (9/25/86)
+
+{\tenpoint\noindent\hsize=29pc
+{\sl Discrete and Computational Geometry\/ \bf1} (1986), 123--140.
+\ \it Develops the theory\cutpar}
+
+\bugonpage D2, line 27 (6/17/86)
+
+\ninepoint\noindent\hskip10pt
+{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
+{\tt This\]is\]METAFONT,\]Version\]1.3\char'23}\quad
+$\{\,$printed when \MF\ starts$\,\}$
+
+\bugonpage D18, line 30 (5/22/86)
+
+\ninepoint\noindent
+\\{str\_ptr}: \\{str\_number};\quad
+$\{\,$number of the current string being created$\,\}$
+
+\bugonpage D23, second line of mini-index, right column (6/14/87)
+
+\eightpoint
+\indent\\{pool\_name}\unhcopy\eqbox|"string"|, \S11.
+
+\bugonpage D30, lines 33--34 (6/14/87)
+
+\tenpoint\noindent
+to delete a token, and/or if some fatal error
+occurs while \MF\ is trying to fix a non-fatal one. But such recursion
+is never more than two levels deep.
+
+\bugonpage D63, lines 13--14 (5/5/87)
+
+\ninepoint\noindent
+[These two lines can be eliminated, since the variable \\{temp\_ptr}
+is no longer used! If you delete them, also remove \S158 from the
+list of sections where global variables are declared (pages D7 and D552),
+and remove \\{temp\_ptr} from the index on page D540.]
+
+\bugonpage D66, line 6 (5/22/86)
+
+\ninepoint\noindent
+{\bf function\/}\ $\\{get\_node}(s:\\{integer})$: \\{pointer};\quad
+$\{\,$variable-size node allocation$\,\}$
+
+\bugonpage D66, lines 31--32 (3/16/86)
+
+\tenpoint\noindent
+controlled
+growth helps to keep the \\{mem} usage consecutive when \MF\ is
+implemented on ``virtual memory'' systems.
+
+\bugonpage D67, lines 7--8 (4/21/87)
+
+\ninepoint\noindent\hskip10pt
+{\bf if} $r=p$ {\bf then if} $\\{rlink}(p)\ne p$ {\bf then}
+ $\langle\,$Allocate entire node $p$ and {\bf goto} \\{found}%
+ {\sevenrm\kern.5em171}$\,\rangle$;
+
+\bugonpage D86, second line of section 198 (2/27/87)
+
+\noindent
+Individual class numbers have no semantic
+or syntactic significance, except in a few instances\cutpar
+
+\bugonpage D101, line 2 (3/16/86)
+
+\tenpoint\line{%
+like `{\tt x}', or they can
+combine the structural properties of arrays and records, like `{\tt x20a.b}'.
+A}
+
+\bugonpage D102, line 24 (3/16/86)
+
+\tenpoint\line{\kern10pt
+In other words, variables have a hierarchical structure that includes
+enough threads running}
+
+\bugonpage D127, line 10 (5/5/87)
+
+\ninepoint\noindent
+[Variable $r$ can be eliminated, since it is not
+used in this procedure! If you delete it, also remove $\underline{280}$
+from the corresponding index entry on page D536.]
+
+\bugonpage D129, line 15 (5/5/87)
+
+\ninepoint\noindent
+[This line can be eliminated, since \\{sine} and \\{cosine} are not
+used in this procedure! If you delete them, also remove $\underline{284}$
+from the corresponding index entries on pages D538 and D521.]
+
+\bugonpage D142, line 23 (4/24/87)
+
+\tenpoint\noindent
+$(7-\sqrt{28}\,)/12$; the worst case
+occurs for polynomials like $B(0,28-4\sqrt{28},14-5\sqrt{28},42;t)$.)
+
+\bugonpage D178, third-last line (7/30/86)
+
+\tenpoint\line{\quad
+The following code maintains the invariant relations
+$0\le \\{x0}<\max(\\{x1},\\{x1}+\\{x2})$, $\vert\\{x1}\vert<2^{30}$,}
+
+\bugonpage D228, line 13 (7/30/86)
+
+\ninepoint\noindent\kern10pt
+{\bf while} $\\{max\_coef}<\\{fraction\_half}$ {\bf do}
+
+\smallskip\eightpoint\noindent
+The mini-index at the bottom of the next page should also receive the following
+new entry:
+\smallskip\indent
+$\\{fraction\_half}={\rm macro}$, \S105.
+
+\bugonpage D228, 10th-last line (5/5/87)
+
+\ninepoint\noindent\hskip20pt
+{\bf begin} $\\{right\_type}(p)\gets k$;
+\smallskip
+\noindent[Also eliminate `$q,$' seven lines above this, and delete
+$\underline{497}$ from the index entry for \\{q} on page D536.]
+
+\bugonpage D248, lines 16--21 (11/27/86)
+
+\ninepoint\noindent\kern10pt
+$\\{alpha}\gets\\{abs}(u)$;\kern5pt
+ $\\{beta}\gets\\{abs}(v)$;\par\noindent\kern10pt
+{\bf if} $\\{alpha}<\\{beta}$ {\bf then}\par\noindent\kern20pt
+{\bf begin} $\\{alpha}\gets\\{abs}(v)$;\kern5pt
+ $\\{beta}\gets\\{abs}(u)$;\kern5pt
+{\bf end};\quad$\{\,$now $\alpha=\max(\vert u\vert,\vert v\vert)$,
+ $\beta=\min(\vert u\vert,\vert v\vert)\,\}$\par\noindent\kern10pt
+{\bf if} $\\{internal}[\\{fillin}]\ne0$ {\bf then}\par\noindent\kern20pt
+$d\gets d-\\{take\_fraction}(\\{internal}[\\{fillin}],
+ \\{make\_fraction}(\\{beta}+\\{beta},\\{delta}))$;\par\noindent\kern10pt
+$d\gets\\{take\_fraction}((d+4)\;{\bf div}\;8,\\{delta})$;\kern5pt
+$\\{alpha}\gets\\{alpha}\;{\bf div}\;\\{half\_unit}$;
+
+\bugonpage D263, line 20 (3/16/86)
+
+\tenpoint\noindent
+instead of \\{false}, the other routines will simply log the fact
+that they have been called; they won't\cutpar
+
+\bugonpage D268, line 2 (4/28/87)
+
+\tenpoint\noindent
+Given the number~$k$ of an open window, the pixels of positive
+weight in \\{cur\_edges} will be shown\cutpar
+
+\bugonpage D301, line 6 of section 652 (5/5/87)
+
+\ninepoint\noindent
+[This line can be eliminated, since variable $s$ is not
+used in this procedure! If you delete it, also remove $\underline{652}$
+from the corresponding index entry on page D537; remove 652 from
+the index entries for \\{param\_size} and \\{param\_start} on page D534;
+and remove \\{param\_size} from the mini-index on page D301.]
+
+\bugonpage D376, lines 17 and 18 (11/14/86)
+
+\tenpoint\noindent
+[these two mysterious lines should be deleted]
+
+\bugonpage D380, line 11 (5/5/87)
+
+\ninepoint\noindent
+[Variables $q$ and $r$ can be eliminated, since they are not
+used in this procedure! If you delete them, also remove $\underline{862}$
+from the corresponding index entries on page D536.]
+
+\bugonpage D429, line 14 (5/5/87)
+
+\ninepoint\noindent\hskip10pt
+{\bf begin} $p\gets\\{cur\_exp}$;
+\smallskip
+\noindent[Also eliminate line 12, and delete $\underline{985}$ from the
+index entry for \\{vv} on page D543.]
+
+\bugonpage D455, line 5 (5/5/87)
+
+\ninepoint\noindent
+[This line can be eliminated, since variable $t$ is not
+used in this procedure! If you delete it, also remove $\underline{1059}$
+from the corresponding index entry on page D540; remove 1059 from
+the index entries for \\{small\_number} and \\{with\_option} on pages D539
+and D544; and remove \\{with\_option} from the mini-index on page D455.]
+
+\bugonpage D463, line 10 (12/15/86)
+
+\ninepoint\noindent\hskip30pt
+({\tt"Pretend\]that\]you're\]Miss\]Marple:\]Examine\]all\]clues,"})
+
+\bugonpage D465, lines 17--18 (6/14/87)
+
+\tenpoint\noindent
+[Delete these two lines.]
+
+\bugonpage D474, 5th-last line (3/16/86)
+
+\tenpoint\noindent
+depths, or italic corrections) are sorted;
+then the list of sorted values is perturbed, if necessary.
+
+\bugonpage D481, line 12 (6/17/86)
+
+\ninepoint\noindent\hskip10pt
+\\{print\_nl}({\tt\char`\"Font\]metrics\]written\]on\]\char`\"});\kern5pt
+\\{print}(\\{metric\_file\_name});\kern5pt
+\\{print\_char}({\tt\char`\".\char`\"});
+
+\noindent\hskip10pt\\{b\_close}(\\{tfm\_file})
+
+\smallskip\eightpoint\noindent
+The mini-index at the bottom of this page should also receive the following
+new entry:
+\smallskip\indent
+\\{print\_char}: {\bf procedure}, \S58.
+
+\bugonpage D510, new line to follow line 5 (6/17/86)
+
+{\tenpoint\parindent=1em
+This program doesn't bother to close the input files that may still be open.
+\par}
+
+\bugonpage D510, just before the fifth-last line (8/5/86)
+
+\ninepoint\noindent\hskip30pt$\\{internal}[\\{fontmaking}]\gets0$;\quad
+$\{\,$avoid loop in case of fatal error$\,\}$
+
+\bugonpage D520, right column (6/14/87)
+
+\eightpoint
+\leftline{Chinese characters:\quad 1147.}
+
+\bugonpage D526, left column, lines 1--2 (7/30/86)
+
+\eightpoint
+\leftline{\indent\\{fraction\_half}:\quad
+ $\underline{105}$, 111, 152, 288, 408, 496, 543,}
+\leftline{\indent\qquad 1098, 1128, 1141.}
+
+\bugonpage D526, left column, lines 6--7 (7/30/86)
+
+\eightpoint
+\leftline{\indent\qquad 478, 497, 499, 503, 530, 540, 547, 549, 599, 603,}
+\leftline{\indent\qquad 612, 615, 815--816, 917, 1169--1170.}
+
+\bugonpage D528, right column (6/14/87)
+
+\eightpoint
+\leftline{Japanese characters:\quad 1147.}
+
+\bugonpage D530, right column, line 45 (7/30/86)
+
+\eightpoint
+\leftline{\indent\\{max}:\quad$\underline{539}$, 543.}
+
+\bugonpage D533, right column (6/14/87)
+
+\eightpoint
+\leftline{oriental characters:\quad 1147.}
+
+\bugonpage D535, right column, line 27 (6/17/86)
+
+\eightpoint
+\leftline{\indent\qquad 1134, 1163--1165, 1182, 1194, 1200, 1205, 1213.}
+
+\bugonpage D547, bottom two lines (11/27/86)
+
+\ninepoint\noindent
+[These lines, and the top two on the next page, should move down
+so that they appear in alphabetical order just before `Compute
+test coefficients'.]
+ % volume E
+\hsize=29pc
+\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}}
+
+\bugonpage Exiii, lines 1--2 (7/28/86)
+
+\tenpoint\noindent
+February 11--13, 1984), 49.
+\ {\it An example meta-character of the Devanagari alphabet, worked out
+``online'' with the help of Matthew Carter.}
+
+\bugonpage Exiii, line 6 (7/28/86)
+
+\tenpoint\noindent
+{\it and western alphabets work also for Devanagari and Tamil.}
+
+\bugonpage E12, lines 15 and 19 (7/23/86)
+
+\tenpoint\noindent[change `17.32' to `17.28' in both places]
+
+\bugonpage E12, third-last line (12/18/86)
+
+\tenpoint\noindent[change `41' to `40']
+
+\bugonpage E13, lines 3, 4, and 20 (12/18/86)
+
+\tenpoint\noindent[change `40' to `41', `48' to `47', `17' to `7']
+
+\bugonpage E18, line 20 (7/23/86)
+
+\tenpoint\noindent[change `17.32' to `17.28']
+
+\bugonpage E18, line 29 (12/9/86)
+
+\tenpoint\noindent[change `236' to `212' in the {\tt cmss9} column]
+
+\bugonpage E170, top illustration (11/2/86)
+
+\tenpoint\noindent[There should be no ``dish'' or depression in the
+vicinity of point {\tt 3r}; the top edge of the character should be
+straight. This error appears also in the other uses of `\\{no\_dish\_serif}'
+throughout the book, since the illustrations were made before
+`\\{no\_dish\_serif}' was added to the program. See page
+E180~(twice at the top), E370~(twice), E374~(twice), E376~(twice), E378~(top),
+E390~(bottom), E398~(top), E402~(top), E406~(top), E453~(twice).]
+
+\bugonpage E179, new line to be inserted after line 6 (10/13/86)
+
+\ninepoint\noindent
+{\bf if} $\\{shaved\_stem}<\\{crisp}.\\{breadth}$:
+ $\\{shaved\_stem}:=\\{crisp}.\\{breadth}$; {\bf fi}
+
+\bugonpage E219, line 29 (6/2/87)
+
+\ninepoint\line{\\{top} $y_1=h$; \ $x_1=x_2$; \
+ {\bf filldraw stroke} $z_{1e}\dashto z_{2'e}$;\hfil\% stem}
+
+\bugonpage E279, seventh line from the bottom (7/20/86)
+
+\rightline{\eightssi that delicious but restrained humor which
+ her readers found so irresistible.}
+
+\bugonpage E301, new line to be inserted after line 28 (5/15/87)
+
+\ninepoint\noindent
+\quad{\bf if} $\\{lower\_side}>1.2\\{upper\_side}$:
+ $\\{upper\_side}:=\\{lower\_side}$; {\bf fi}
+
+\bugonpage E554, bottom half of page (12/18/86)
+
+\ninepoint\noindent[The letters will change slightly because of the
+corrections to {\tt cmr17} noted on pages 12 and 13.]
+
+\bugonpage E561, line 3 (12/9/86)
+
+\ninepoint\noindent[The numerals should be `\thinspace
+{\niness 0123456789}\thinspace' (i.e., 2/3 point less tall)
+because of the correction made to page 18.]
+
+\bugonpage E562, line 9 (12/9/86)
+
+\ninepoint\noindent[The numerals should be `\thinspace
+{\ninessi 0123456789\/}\thinspace' (i.e., 2/3 point less tall)
+because of the correction made to page 18.]
+
+\bugonpage E572, entry for {\it breadth} (10/13/86)
+
+\eightpoint
+{\it breadth}, 59, 75, 79, 91, 93, 179, 225, 233,
+
+\bugonpage E573, entry for {\tt cmcsc10} (8/17/86)
+
+\eightpoint
+{\tt cmcsc10}, $\underline{30}$--$\underline{31}$, 567.
+
+\bugonpage E576, tenth-last line (5/15/87)
+
+\eightpoint
+{\bf lowres\kern.04em\vbox{\hrule width.3em height .6pt}\kern.08em
+ fix}, 550.
+ \bye
+ Now here are some that I will make soon!
+
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errata4.tex b/Master/texmf-doc/doc/english/knuth/errata/errata4.tex
new file mode 100644
index 00000000000..11d0435e749
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata4.tex
@@ -0,0 +1,1052 @@
+% Bugs (sigh) in Computers \& Typesetting
+
+\input manmac
+\font\sltt=cmsltt10
+\font\niness=cmss9
+\font\ninessi=cmssi9
+\proofmodefalse
+\raggedbottom
+\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
+
+\def\today{\number\day\
+ \ifcase\month\or
+ Jan\or Feb\or Mar\or Apr\or May\or Jun\or
+ Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi
+ \ \number\year}
+
+\def\cutpar{{\parfillskip=0pt\par}}
+
+\def\rhead{Bugs in {\tensl Computers \& Typesetting, 1987--1988}}
+\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
+\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
+\newcount\nn
+\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
+\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
+
+\noindent This is a list of all corrections made to {\sl Computers \&
+Typesetting}, Volumes A--E\null, between
+16 June 1987 and 20 February 1989. Corrections made to
+the softcover version of {\sl The \TeX book} are the same as corrections to
+Volume~A\null. Corrections to the softcover version of {\sl The
+\slMF\kern1ptbook\/} are the same as corrections to Volume~C\null.
+Some of these corrections have already been made in reprintings
+of the books. Some of these corrections affect the indexes and
+mini-indexes of Volumes B~and~D in ways not shown here. Corrections
+made up to 15 June 1987 appear in other files.
+ % volume A
+
+\bugonpage A159, line 22 (2/15/88)
+
+\ninepoint\noindent
+`|\nolimits|' if the normal |\displaylimits|
+convention has been overridden; a Rad\cutpar
+
+\bugonpage A213, lines 34--35 (12/23/87)
+
+\ninepoint\noindent
+text will be a single control sequence token, defined to be like |\relax| if
+its meaning is currently undefined.
+
+\bugonpage A299, line 30 (7/6/88)
+
+\ninepoint\indent\tt
+Fatal format file error; I'm stymied.
+
+\bugonpage A326, line 12 (12/12/87)
+
+\ninepoint\noindent
+its natural width. The |\hbox| version also invokes |\everymath|.
+
+\bugonpage A359, line 2 (11/6/88)
+
+\ninepoint\noindent
+|\mathchardef\ldotp="613A\mathchardef\cdotp="6201\mathchardef\colon="603A|
+
+\bugonpage A359, lines 35--38 (5/24/88)
+
+\ninepoint\noindent
+|\def\updownarrow{\delimiter"326C33F } \def\arrowvert{\delimiter"033C000 }|%
+ \par\noindent
+|\def\Updownarrow{\delimiter"326D377 } \def\Arrowvert{\delimiter"033D000 } |%
+ \par\noindent
+|\def\vert{\delimiter"026A30C } \def\Vert{\delimiter"026B30D } |%
+ \par\noindent
+|\def\backslash{\delimiter"026E30F } \def\bracevert{\delimiter"033E000 }|
+
+\bugonpage A364, line 35 (11/6/88)
+
+\ninepoint\noindent
+|\def\fmtname{plain}\def\fmtversion{2.94} % identifies the current format|
+
+\bugonpage A379, line 15 (10/12/87)
+
+\ninepoint
+|\def\deleterightmost#1{\edef#1{\expandafter\xyzzy#1\xyzzy}}|
+
+\bugonpage A383, lines 7--15 from the bottom (1/4/89)
+
+\begintt
+ 209 strings out of 1685
+ 1659 string characters out of 17636
+ 27618 words of memory out of 52821
+ 1172 multiletter control sequences out of 2500
+\endtt
+Consequently there was plenty of room for more macros: $52821-27618=
+25203$ unused cells of main memory, $2500-1172=1328$ of name memory,
+$1685-209=1476$ of string memory, and $17636-1659=15977$ of character memory.
+But a fairly large \TeX\ was being used, and only the macros of
+Appendices B and~E were loaded; in other circumstances it might have
+been necessary to conserve space.
+
+\bugonpage A454, lines 23--29 (8/13/87)
+
+\begingroup
+\hyphenpenalty=-1000 \pretolerance=-1 \tolerance=1000
+\doublehyphendemerits=-100000 \finalhyphendemerits=-100000
+\ddanger If a suitable starting letter is found, let it be in font~$f$.
+Hyphenation is abandoned unless the |\hyphenchar| of~$f$ is between
+0 and~255, and unless a character of that number exists in the font.
+If this test is passed, \TeX\ continues to scan forward
+until coming to something that's not one of the following three
+``admissible items'': (1)~a character in font~$f$ whose |\lccode|
+is nonzero; (2)~a ligature formed entirely from characters of type~(1);
+(3)~an implicit kern. The first inadmissible item terminates this part of
+the process; the trial word consists of all the letters found in admissible
+items. Notice that all of these letters are in font~$f$.
+
+\endgroup % end the special hyphenation conventions
+
+\bugonpage A458, left column, line 19 (2/15/88)
+
+\eightpoint\indent
+|\|\| ( $\Vert$ ), {\it146--147}, {\it171}, $\underline{361}$, 435, 438.
+
+\bugonpage A462, left column, line 7 (10/9/87)
+
+\eightpoint\indent\qquad 152, 178, $\underline{360}$.
+
+\bugonpage A463, left column (4/17/88)
+
+\eightpoint\indent
+\hbox to0pt{\hss\lower1pt\hbox{*}}|\day|, 273, 349, {\it406}.
+
+\bugonpage A464, left column, under Displays (12/8/88)
+
+\eightpoint\indent\quad
+non-centered, 186, 326, 375--376, 420--421.
+
+\bugonpage A465, entry for {\tt\char`\\everymath} (12/12/87)
+
+\eightpoint\indent[Include also a reference to page 326.]
+
+\bugonpage A465, right column (7/6/88)
+
+\eightpoint\indent{\tt Fatal format file error}, 299.
+
+\bugonpage A473, entry for `page builder' (8/13/87)
+
+\eightpoint\indent\quad when exercised, 122, 280--283, 286--287.
+
+\bugonpage A474, left column (12/27/88)
+
+\eightpoint\indent
+\hbox to0pt{\hss\lower1pt\hbox{*}}|\parshape|, 101--102, 214, 271, 277, 283,
+
+\bugonpage A480, right column (2/15/88)
+
+\eightpoint\indent|\vdots| ( $\vdots$ ), {\it177}, $\underline{359}$.
+
+\bugonpage A481, right column (7/3/87)
+
+\eightpoint|\z@|, $\underline{347}$, 348.\par
+|\z@skip|, $\underline{347}$, 348.
+ % volume B
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\bugonpage B2, line 32 (2/20/89)
+
+\ninepoint\noindent\hskip10pt
+{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
+{\tt This\]is\]TeX,\]Version\]2.97\char'23}\quad
+$\{\,$printed when \TeX\ starts$\,\}$
+
+\bugonpage B38, lines 7--9 from the bottom (11/6/88)
+
+\tenpoint\noindent[Delete this paragraph; it is being moved to page B214.]
+
+\bugonpage B38, line 5 from the bottom (12/14/88)
+
+\ninepoint\noindent\kern10pt
+{\bf begin if\/} \\{log\_opened} {\bf then} $\\{selector}\gets\\{term\_and\_log}$
+
+\bugonpage B39, line 5 (12/14/88)
+
+\ninepoint\noindent\kern50pt
+{\bf if\/} \\{log\_opened} {\bf then} \\{error};
+
+\bugonpage B52, line 5 (8/13/87)
+
+\tenpoint\noindent
+cannot be done, i.e., if $\\{hi\_mem\_min}=\\{lo\_mem\_max}+1$,
+we have to quit.
+
+\bugonpage B54, lines 34--35 (7/9/88)
+
+\ninepoint\noindent\kern10pt
+{\bf begin if\/} $\\{hi\_mem\_min}-\\{lo\_mem\_max}\ge1998$
+ {\bf then} $t\gets\\{lo\_mem\_max}+1000$\par\noindent\kern10pt
+{\bf else} $t\gets\\{lo\_mem\_max}+1+(\\{hi\_mem\_min}-\\{lo\_mem\_max})
+\,\mathbin{\bf div}\,2$;\quad\kern-4pt
+$\{\,\\{lo\_mem\_max}+2\le t<\\{hi\_mem\_min}\,\}$
+
+\bugonpage B108, new line after line 8 (5/24/88)
+
+\ninepoint\noindent\kern20pt
+$d$: \\{integer};\quad
+$\{\,$number of characters in incomplete current string$\,\}$
+
+\bugonpage B108, lines 31--33 (5/24/88)
+
+\ninepoint\noindent\kern10pt
+$\\{str\_room}(l)$; $d\gets\\{cur\_length}$;\par\noindent\kern10pt
+{\bf while} $\\{pool\_ptr}>\\{str\_start}[\\{str\_ptr}]$ {\bf do}
+ \par\noindent\kern20pt
+{\bf begin} \\{decr}(\\{pool\_ptr});
+ $\\{str\_pool}[\\{pool\_ptr}+l]\gets\\{str\_pool}[\\{pool\_ptr}]$;
+ \par\noindent\kern20pt
+{\bf end};\quad$\{\,$move current string up to make room for another$\,\}$
+\par\noindent\kern10pt
+{\bf for} $k\gets j$ {\bf to} $j+l-1$ {\bf do} $\\{append\_char}(\\{buffer}[k])$;
+\par\noindent\kern10pt
+$\\{text}(p)\gets\\{make\_string}$; $\\{pool\_ptr}\gets\\{pool\_ptr}+d$;
+
+\bugonpage B115, line 12 (4/28/88)
+
+\ninepoint\noindent\hskip10pt
+$\\{group\_code}=0\to\\{max\_group\_code}$;\quad
+ $\{\,$\\{save\_level} for a level boundary$\,\}$
+
+\bugonpage B141, line 19 (4/28/88)
+
+\ninepoint\noindent
+\\{par\_token}: \\{halfword};\quad
+ $\{\,$token representing `|\par|'$\,\}$
+
+\bugonpage B150, line 24 (4/28/88)
+
+\tenpoint\noindent{\bf 358.\quad}%
+The present point in the program is reached only when the \\{expand}
+routine has inserted\cutpar
+
+\bugonpage B151, mini-index (4/28/88)
+
+\eightpoint\noindent
+Delete the entry for `\\{no\_expand}'; replace it by:
+
+\indent\\{expand}: {\bf procedure}, \S366.
+
+\bugonpage B154, lines 25, 29, 34 respectively (9/20/87)
+
+\ninepoint\noindent\hskip20pt
+$\\{cvl\_backup},\\{radix\_backup},\\{co\_backup}$: \\{small\_number};\quad
+ $\{\,$to save \\{cur\_val\_level}, etc.$\,\}$\par\noindent\hskip10pt
+$\\{co\_backup}\gets\\{cur\_order}$;
+ $\\{backup\_backup}\gets\\{link}(\\{backup\_head})$;\par\noindent\hskip10pt
+$\\{cur\_order}\gets\\{co\_backup}$;
+ $\\{link}(\\{backup\_head})\gets\\{backup\_backup}$;
+
+\bugonpage B155, new entry for mini-index (9/20/87)
+
+\eightpoint\indent
+\\{cur\_order}: \\{glue\_ord}, \S447.
+
+\bugonpage B156, line 28 (12/23/87)
+
+\ninepoint\noindent\hskip20pt
+{\bf begin }$\\{eq\_define}(\\{cur\_cs},\\{relax},256)$;
+
+\bugonpage B157, mini-index (12/23/87)
+
+\eightpoint\noindent
+Delete the entries for `\\{eqtb}' and `\\{frozen\_relax}'; replace them
+by the following:
+
+\indent\\{eq\_define}: {\bf procedure}, \S227.\par
+$\\{relax}=0$, \S207.\par
+
+\bugonpage B162, lines 12--14 (4/30/88)
+
+\ninepoint\noindent\hskip10pt
+{\bf repeat} $\\{link}(\\{temp\_head})\gets\\{null}$;\par\noindent\hskip20pt
+{\bf if\/} $(\\{info}(r)>\\{match\_token}+127)\lor
+ (\\{info}(r)<\\{match\_token})$ {\bf then}
+ $s\gets\\{null}$\par\noindent\hskip20pt
+{\bf else begin} $\\{match\_chr}\gets\\{info}(r)-\\{match\_token}$; \
+ $s\gets\\{link}(r)$; \ $r\gets s$; \ $p\gets\\{temp\_head}$; \
+ $m\gets 0$;
+
+\bugonpage B177, bottom line before mini-index (7/13/88)
+
+\ninepoint\noindent\hskip10pt
+$\\{cur\_val}\gets0$; \
+ $\\{cur\_val\_level}\gets\\{int\_val}$; \
+ $\\{radix}\gets0$; \
+ $\\{cur\_order}\gets0$;
+
+\bugonpage B181, line 31 (4/28/88)
+
+\ninepoint\noindent
+[Change `$x$ units per sp' to `$x$ sp per unit'! This change also
+should be made on line~1 of page B183 and line $-8$ of page B590.]
+
+\bugonpage B188, line 8 (5/25/88)
+
+\ninepoint\noindent
+{\bf function} $\\{str\_toks}(b:\\{pool\_pointer})$: \\{pointer};\quad
+ $\{\,$changes the string \\{str\_pool}$[b\to\\{pool\_ptr}]$ to a token list$\,\}$
+
+\bugonpage B188, line 13 (5/25/88)
+
+\ninepoint\noindent\kern10pt
+{\bf begin} \\{str\_room}(1); $p\gets\\{temp\_head}$;
+ $\\{link}(p)\gets\\{null}$; $k\gets b$;
+
+\bugonpage B188, line 20 (5/25/88)
+
+\ninepoint\noindent\kern10pt
+$\\{pool\_ptr}\gets b$; $\\{str\_toks}\gets p$;
+
+\bugonpage B188, new line after line 28 (5/25/88)
+
+\ninepoint\noindent\kern20pt
+$b$: \\{pool\_pointer};\quad$\{\,$base of temporary string$\,\}$
+
+\bugonpage B188, line 31 (5/25/88)
+
+\ninepoint\noindent\kern10pt
+{\bf else begin} $\\{old\_setting}\gets\\{selector}$;
+ $\\{selector}\gets\\{new\_string}$; $b\gets\\{pool\_ptr}$;
+
+\bugonpage B188, line 41 (5/25/88)
+
+\ninepoint\noindent\kern20pt
+$\\{selector}\gets\\{old\_setting}$; $\\{the\_toks}\gets\\{str\_toks}(b)$;
+
+\bugonpage B190, lines 16--18 (5/25/88)
+
+\ninepoint\noindent\kern20pt
+$b$: \\{pool\_pointer};\quad$\{\,$base of temporary string$\,\}$\par
+\noindent\kern10pt
+{\bf begin} $c\gets\\{cur\_chr}$;
+ $\langle\,$Scan the argument for command $c${\eightrm\kern.5em471}$\,\rangle$;
+\par\noindent\kern10pt
+$\\{old\_setting}\gets\\{selector}$;
+$\\{selector}\gets\\{new\_string}$; $b\gets\\{pool\_ptr}$;
+$\langle\,$Print the result of command~$c${\eightrm\kern.5em472}$\,\rangle$;
+\par\noindent\kern10pt
+$\\{selector}\gets\\{old\_setting}$;
+$\\{link}(\\{garbage})\gets\\{str\_toks}(b)$;
+$\\{ins\_list}(\\{link}(\\{temp\_head}))$;
+
+\bugonpage B210, line 36 (5/25/88)
+
+\ninepoint\noindent\kern10pt
+{\bf begin if} $(\\{pool\_ptr}+\\{name\_length}>\\{pool\_size})
+ \lor(\\{str\_ptr}=\\{max\_strings})\lor(\\{cur\_length}>0)$ {\bf then}
+
+\bugonpage B211, new line of code before the mini-index (12/14/88)
+
+\ninepoint\noindent
+\\{log\_opened}: \\{boolean};\quad$\{\,$has the transcript file been opened?$\,\}$
+
+\bugonpage B212, line 5 (12/14/88)
+
+\ninepoint\noindent\kern10pt
+$\\{job\_name}\gets0$; \ $\\{name\_in\_progress}\gets\\{false}$; \
+$\\{log\_opened}\gets\\{false}$;
+
+\bugonpage B213, line 24 (12/14/88)
+
+\ninepoint\noindent\kern10pt
+$\\{log\_name}\gets\\{a\_make\_name\_string}(\\{log\_file})$; \
+$\\{selector}\gets\\{log\_only}$; \
+$\\{log\_opened}\gets\\{true}$;
+
+\bugonpage B214, lines 2 and 3 (12/14/88)
+
+\tenpoint\noindent
+messages or even to \\{show\_context}.
+The \\{prompt\_file\_name} routine can result in a \\{fatal\_error},
+but the \\{error}
+routine will not be invoked because \\{log\_opened} will be false.
+\par\noindent\hskip10pt
+The normal idea of \\{batch\_mode} is that nothing at all should be written
+on the terminal. However, in the unusual case that
+no log file could be opened, we make an exception and allow
+an explanatory message to be seen.
+
+\bugonpage B214, lines 7--11 reduce to a single line (12/14/88)
+
+\ninepoint\noindent\hskip10pt
+{\bf begin} $\\{selector}\gets\\{term\_only}$;
+
+\bugonpage B224, second-last line (4/28/87)
+
+\ninepoint\noindent
+\\{done}: {\bf if} \\{file\_opened} {\bf then} \\{b\_close}(\\{tfm\_file});\par
+\noindent\hskip10pt $\\{read\_font\_info}\gets g$;
+
+\bugonpage B229, lines 6--8 (11/17/87)
+
+\tenpoint\noindent
+than $2^{27}$.
+If $z<2^{23}$, the individual multiplications $b\cdot z$,
+$c\cdot z$, $d\cdot z$ cannot overflow; otherwise we will divide $z$ by 2,
+4, 8, or 16, to obtain a multiplier less than $2^{23}$, and we can
+compensate for this later. If $z$ has thereby been replaced by
+$z^\prime=z/2^e$, let $\beta=2^{4-e}$; we shall compute
+
+\bugonpage B229, lines 11--12 (11/17/87)
+
+\tenpoint\noindent
+if $a=0$, or the same quantity minus $\alpha=2^{4+e}z^\prime$ if $a=255$.
+This calculation must be done exactly, in order to guarantee portability
+of \TeX\ between computers.
+
+\bugonpage B230, lines 2--5 (11/17/87)
+
+\ninepoint
+\noindent\hskip10pt{\bf begin} $\\{alpha}\gets16$;\par
+\noindent\hskip10pt{\bf while} $z\ge\oct{40000000}$ {\bf do}\par
+\noindent\hskip20pt{\bf begin} $z\gets z\ {\bf div}\ 2$; \
+ $\\{alpha}\gets\\{alpha}+\\{alpha}$; \ {\bf end};\par
+\noindent\hskip10pt$\\{beta}\gets256\ {\bf div}\ \\{alpha}$; \
+ $\\{alpha}\gets\\{alpha}\ast z$;\par
+
+\bugonpage B245, new entry for mini-index (8/7/87)
+
+\eightpoint\indent
+\\{cur\_s}: \\{integer}, \S616.
+
+\bugonpage B254, line 29 (8/7/87)
+
+\ninepoint\noindent
+\\{cur\_s}: \\{integer};\quad
+$\{\,$current depth of output box nesting, initially $-1\,\}$
+
+\bugonpage B254, line 31 (8/7/87)
+
+\ninepoint\noindent
+[Remove the statement `$\\{cur\_s}\gets-1$;' and put it on page B244 at the
+end of line 31.]
+
+\bugonpage B259, line 13 (11/9/87)
+
+\ninepoint\noindent\hskip20pt
+{\bf begin }$\\{rule\_wd}\gets\\{rule\_wd}+10$;\quad
+$\{\,$compensate for floating-point rounding$\,\}$\par\noindent\hskip20pt
+$\\{edge}\gets\\{cur\_h}+\\{rule\_wd}$; $\\{lx}\gets0$;
+$\langle\,$Let \\{cur\_h} be the position of the first box, and set
+
+\bugonpage B259, line 17 (11/9/87)
+
+\ninepoint\noindent\hskip20pt
+$\\{cur\_h}\gets\\{edge}-10$; {\bf goto} \\{next\_p};
+
+\bugonpage B263, line 21 (11/9/87)
+
+\ninepoint\noindent\hskip20pt
+{\bf begin }$\\{rule\_ht}\gets\\{rule\_ht}+10$;\quad
+$\{\,$compensate for floating-point rounding$\,\}$\par\noindent\hskip20pt
+$\\{edge}\gets\\{cur\_v}+\\{rule\_ht}$; $\\{lx}\gets0$;
+$\langle\,$Let \\{cur\_v} be the position of the first box, and set
+
+\bugonpage B263, line 25 (11/9/87)
+
+\ninepoint\noindent\hskip20pt
+$\\{cur\_v}\gets\\{edge}-10$; {\bf goto} \\{next\_p};
+
+\bugonpage B266, line 8 (8/7/87)
+
+\ninepoint\noindent\hskip10pt
+\\{dvi\_out}(\\{eop}); \\{incr}(\\{total\_pages}); $\\{cur\_s}\gets-1$;
+
+\bugonpage B266, new code between lines 31 and 32 (8/7/87)
+
+\ninepoint
+\noindent\hskip10pt{\bf while} $\\{cur\_s}>-1$ {\bf do}\par
+\noindent\hskip20pt{\bf begin if} $\\{cur\_s}>0$ {\bf then}
+ \\{dvi\_out}(\\{pop})\par
+\noindent\hskip20pt{\bf else begin} \\{dvi\_out}(\\{eop});
+ \\{incr}(\\{total\_pages})\par
+\noindent\hskip30pt{\bf end};\par
+\noindent\hskip20pt\\{decr}(\\{cur\_s});\par
+\noindent\hskip20pt{\bf end};\par
+
+\bugonpage B285, line 21 (4/28/88)
+
+\noindent\tenpoint
+is subsidiary to the \\{nucleus} field of some noad; the dot is replaced by
+`|_|' or `|^|' or `|/|' or `|\|' if $p$ is\cutpar
+
+\bugonpage B338, second-last line (8/19/87)
+
+\ninepoint\noindent\kern10pt
+$q\gets\\{link}(\\{head})$; $s\gets\\{head}$;
+
+\bugonpage B339, line 4 (8/19/87)
+
+\ninepoint\noindent\kern20pt
+$s\gets q$; $q\gets\\{link}(q)$;
+
+\bugonpage B339, new code to insert after line 10 (8/19/87)
+
+\ninepoint
+\noindent\kern10pt{\bf if} $o\ne0$ {\bf then}\par
+\noindent\kern20pt{\bf begin} $r\gets\\{link}(q)$; $\\{link}(q)\gets\\{null}$;
+ $q\gets\\{hpack}(q,\\{natural})$;\par
+\noindent\kern20pt$\\{shift\_amount}(q)\gets o$; $\\{link}(q)\gets r$;
+ $\\{link}(s)\gets q$;\par
+\noindent\kern20pt{\bf end};\par
+\noindent[These new lines also imply changes to the index that aren't
+ shown in this errata list.]
+
+\bugonpage B387, line 2 (5/24/88)
+
+\tenpoint\noindent
+is quite short. In the following code we set \\{hc}$[\\{hn}+2]$ to the
+impossible value 128, in order to\cutpar
+
+\bugonpage B387, line 8 (5/24/88)
+
+\ninepoint\noindent\kern10pt
+$\\{hc}[0]\gets127$; $\\{hc}[\\{hn}+1]\gets127$;
+ $\\{hc}[\\{hn}+2]\gets128$;\quad$\{\,$insert delimiters$\,\}$
+
+\bugonpage B390, lines 17--18 (5/24/88)
+
+\ninepoint\noindent\kern10pt
+$\langle\,$Enter as many hyphenation exceptions as are listed, until coming
+ to a right brace; then {\bf return\eightrm\kern.5em961}$\,\rangle$;
+
+\smallskip[The same change applies to lines 20--21, and
+to page~582.]
+
+\bugonpage B396, new line after line 34 (5/24/88)
+
+\ninepoint\noindent\kern10pt
+$\\{trie\_link}(\\{trie\_size})\gets0$;
+$\\{trie\_back}(0)\gets\\{trie\_size}$;\quad
+$\{\,$wrap around$\,\}$
+
+\bugonpage B396, bottom line (12/12/87)
+
+\ninepoint\noindent\hskip10pt
+$\\{trie\_link}(0)\gets0$; $\\{trie\_char}(0)\gets0$;
+ $\\{trie\_op}(0)\gets\\{min\_quarterword}$;
+
+\bugonpage B397, lines 15--17 (5/24/88)
+
+\ninepoint\noindent\kern10pt
+{\bf begin} $c\gets\\{trie\_c}[p]$;\par\noindent\kern10pt
+{\bf if} $c<\\{trie\_min}$ {\bf then} $\\{trie\_min}\gets c$;\par\noindent\kern10pt
+{\bf if} $\\{trie\_min}=0$ {\bf then} $z\gets\\{trie\_link}(\\{trie\_size})$\par
+\noindent\kern10pt
+{\bf else} $z\gets\\{trie\_link}(\\{trie\_min}-1)$;\quad
+$\{\,$get the first conceivably good hole$\,\}$
+
+\bugonpage B400, lines 3--4 (5/24/88)
+
+\ninepoint\noindent
+$\langle\,$Enter all of the patterns into a linked trie, until coming
+ to a right brace{\eightrm\kern.5em961}$\,\rangle\equiv$
+
+\smallskip[The same change applies to page B399, lines 29--30, and
+to page~582.]
+
+\bugonpage B402, line 10 (5/24/88)
+
+\ninepoint\noindent\kern10pt
+$r\gets\\{trie\_size}$;\quad
+$\{\,$finally, we will zero out the holes$\,\}$
+
+\bugonpage B406, line 9 from the bottom (1/23/89)
+
+\ninepoint\noindent\kern30pt
+$\\{shrink\_order}(r)\gets\\{normal}$; \ $\\{delete\_glue\_ref}(q)$; \
+$\\{glue\_ptr}(p)\gets r$; \ $q\gets r$;
+
+\bugonpage B417, line 10 (1/23/89)
+
+\ninepoint\noindent\kern10pt
+$q\gets\\{new\_skip\_param}(\\{top\_skip\_code})$; \quad
+$\{\,$now $\\{temp\_ptr}=\\{glue\_ptr}(q)\,\}$
+
+\bugonpage B418, line 14 (1/23/89)
+
+\ninepoint\noindent\kern30pt
+$\\{shrink\_order}(r)\gets\\{normal}$; \ $\\{delete\_glue\_ref}(q)$; \
+$\\{glue\_ptr}(p)\gets r$; \ $q\gets r$;
+
+\bugonpage B507, line 13 (12/14/88)
+
+\ninepoint\noindent\kern10pt
+{\bf if\/} \\{log\_opened} {\bf then} $\\{selector}\gets\\{selector}+2$;
+
+\bugonpage B527, line 21 (12/14/88)
+
+\ninepoint\noindent\kern10pt
+{\bf if\/} \\{log\_opened} {\bf then}
+
+\bugonpage B528, line 5 (12/14/88)
+
+\ninepoint\noindent\kern10pt
+{\bf if\/} \\{log\_opened} {\bf then}
+
+\bugonpage B547, right column (9/20/87)
+
+\eightpoint
+\leftline{\\{co\_backup}:\quad $\underline{366}$.}
+
+\bugonpage B548, right column (9/20/87)
+
+\eightpoint
+\leftline{\\{cur\_order}:\quad 366, $\underline{447}$, 448, 454, 462.}
+
+\bugonpage B548, right column (8/7/87)
+
+\eightpoint
+\leftline{\\{cur\_s}:\quad 593, $\underline{616}$, 619, 629, 640, 642.}
+
+\bugonpage B551, both columns (12/23/87)
+
+\eightpoint[Remove `372' from \\{eqtb} and put it into \\{eq\_define}.]
+
+\bugonpage B552, left column (4/28/88)
+
+\eightpoint[Insert `358' into \\{expand}.]
+
+\bugonpage B554, left column (12/23/87)
+
+\eightpoint[Remove `372' from \\{frozen\_relax}.]
+
+\bugonpage B559, new entry (12/14/88)
+
+\eightpoint\noindent
+\\{log\_opened}, 92--93, $\underline{527}$, 528, 534--535, 1265, 1333--1334.
+
+\bugonpage B559, right column (8/13/87)
+
+\eightpoint[Delete the entry for \\{low\_mem\_max}.]
+
+\bugonpage B562, left column (4/28/88)
+
+\eightpoint[Remove `358' from \\{no\_expand}.]
+
+\bugonpage B565, left column (8/7/87)
+
+\eightpoint
+\leftline{\\{pop}:\quad 584--585, $\underline{586}$, 590, 601, 608, 642.}
+
+\bugonpage B567, left column (12/23/87)
+
+\eightpoint[Insert `372' into \\{relax}.]
+
+\bugonpage B568, left column (4/28/88)
+
+\eightpoint[Move `269' from \\{save\_index} to \\{save\_level}.]
+ % volume C
+\hsize=29pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+
+\bugonpage C26, bottom line (7/18/87)
+
+\tenpoint\noindent
+What angle corresponds to the direction North-Northwest?
+
+\bugonpage C107, line 13 (10/7/87)
+
+{\bf pickup penrazor} xscaled \\{heavyline}
+ rotated (angle$(z_{32}-z_{31})+90$);
+
+\bugonpage C164, line 10 (4/27/88)
+
+\ninepoint\indent
+\quad $y_{\$c}=\\{top}\,y_{\$l}$; \ $y_{\$d}=y_{\$r}$; \
+ $x_{\$c}=x_{\$l}-\\{left\_jut}$; \ $x_{\$d}=x_{\$r}+\\{right\_jut}$;
+
+\bugonpage C175, line 23 (1/11/88)
+
+\ninepoint\noindent
+expand into a sequence of tokens. \
+(The language {\eightrm{SIMULA67}} demonstrated that it is\cutpar
+
+\bugonpage C241, line 11 (5/25/88)
+
+\ninepoint\indent
+{\bf numeric} $\\{ht}\0,\\{dp}\0$; \
+ $\\{ht}\0=\\{body\_height}\0$; \
+ $.5[\\{ht}\0,-\\{dp}\0]=\\{axis}\0$;
+
+\bugonpage C248, line 21 becomes two lines (1/24/89)
+
+\ninepoint\noindent
+which might not
+be numerically stable in the presence of rounding errors.)
+Another case, not really desirable, is $\\{left\_jut}=\\{right\_jut}=0$.
+
+\bugonpage C262, line 15 (12/23/88)
+
+\ninepoint\noindent
+|string base_name, base_version; base_name="plain"; base_version="1.7";|
+
+\bugonpage C271, line 12 (1/4/89)
+
+\ninepoint\noindent
+the user and \MF's primitive picture commands.
+First, some important program\cutpar
+
+\bugonpage C271, line 4 from the bottom (12/23/88)
+
+\ninepoint\noindent
+|def |^|cutdraw|| expr p = % caution: you may need autorounding=0|
+
+\bugonpage C272, lines 5 and 6 (12/23/88)
+
+\ninepoint\noindent
+| (cut_ scaled (1+max(pen_lft,pen_rt,pen_top,pen_bot))|\par\noindent
+| rotated theta shifted z)t_;|
+
+\bugonpage C273, lines 20 and 22 (9/26/88)
+
+\ninepoint\noindent
+| (z_+(0,pen_top))t_=round((z+(0,pen_top))t_); z_ enddef;|\par\noindent
+| (z_+(0,pen_bot))t_=round((z+(0,pen_bot))t_); z_ enddef;|
+
+\bugonpage C290, line 6 from the bottom (12/23/88)
+
+\ninepoint\noindent
+(2)~A throwaway variable,
+`\\{whatever}', nullifies an unwanted equation at the beginning\cutpar
+
+\bugonpage C331, just below the illustration (7/18/87)
+
+\ninepoint\noindent
+Such a pattern is, of course, rather unlikely to occur in a |gf| file,
+but |GFtoDVI| would\cutpar
+
+\bugonpage C337, line 11 (4/28/88)
+
+\ninepoint
+An online ``menu'' of the available test routines will be typed at your
+terminal\cutpar
+
+\bugonpage C346, entry for {\tt autorounding} (12/23/88)
+
+\eightpoint\indent\hskip20pt
+212, {\it262}, {\it264}, 271--272.
+
+\bugonpage C350, left column (7/6/88)
+
+\eightpoint\indent
+|Fatal| |base| |file| |error|, 226.
+
+\bugonpage C356, left column (1/11/88)
+
+\eightpoint
+SIMULA67 language, 175.
+
+\bugonpage C358, right column (2/15/88)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|yoffset|, 212, $\underline{220}$, 315, 324.
+ % Volume D
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\bugonpage D2, line 27 (12/14/88)
+
+\ninepoint\noindent\hskip10pt
+{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
+{\tt This\]is\]METAFONT,\]Version\]1.7\char'23}\quad
+$\{\,$printed when \MF\ starts$\,\}$
+
+\bugonpage D36, lines 3--5 (11/6/88)
+
+\tenpoint\noindent[Delete this paragraph; it is being moved to page D349.]
+
+\bugonpage D36, line 7 (12/14/88)
+
+\ninepoint\noindent\kern10pt
+{\bf begin if\/} \\{log\_opened} {\bf then} $\\{selector}\gets\\{term\_and\_log}$
+
+\bugonpage D36, line 16 (12/14/88)
+
+\ninepoint\noindent\kern50pt
+{\bf if\/} \\{log\_opened} {\bf then} \\{error};
+
+\bugonpage D66, lines 34--35 (7/9/88)
+
+\ninepoint\noindent\kern10pt
+{\bf begin if\/} $\\{hi\_mem\_min}-\\{lo\_mem\_max}\ge1998$
+ {\bf then} $t\gets\\{lo\_mem\_max}+1000$\par\noindent\kern10pt
+{\bf else} $t\gets\\{lo\_mem\_max}+1+(\\{hi\_mem\_min}-\\{lo\_mem\_max})
+\,\mathbin{\bf div}\,2$;\quad\kern-4pt
+$\{\,\\{lo\_mem\_max}+2\le t<\\{hi\_mem\_min}\,\}$
+
+\bugonpage D347, new line of code after line 5 (12/14/88)
+
+\ninepoint\noindent
+\\{log\_opened}: \\{boolean};\quad$\{\,$has the transcript file been opened?$\,\}$
+
+\bugonpage D347, line 11 (12/14/88)
+
+\ninepoint\noindent\kern10pt
+$\\{job\_name}\gets0$; \
+$\\{log\_opened}\gets\\{false}$;
+
+\bugonpage D348, line 4 from the bottom (12/14/88)
+
+\ninepoint\noindent\kern10pt
+$\\{log\_name}\gets\\{a\_make\_name\_string}(\\{log\_file})$; \
+$\\{selector}\gets\\{log\_only}$; \
+$\\{log\_opened}\gets\\{true}$;
+
+\bugonpage D349, lines 6 and 7 (12/14/88)
+
+\tenpoint\noindent
+print error messages or even to \\{show\_context}.
+The \\{prompt\_file\_name} routine can result in a \\{fatal\_error},
+but the \\{error}
+routine will not be invoked because \\{log\_opened} will be false.
+\par\noindent\hskip10pt
+The normal idea of \\{batch\_mode} is that nothing at all should be written
+on the terminal. However, in the unusual case that
+no log file could be opened, we make an exception and allow
+an explanatory message to be seen.
+
+\bugonpage D349, lines 11--15 reduce to a single line (12/14/88)
+
+\ninepoint\noindent\hskip10pt
+{\bf begin} $\\{selector}\gets\\{term\_only}$;
+
+\bugonpage D420, bottom line (5/25/88)
+
+\ninepoint\noindent\kern30pt
+{\bf if\/} \\{txx} {\bf mod} $\\{unity}=0$ {\bf then}
+
+\bugonpage D441, delete line 2 and change line 12 as follows (5/25/88)
+
+\ninepoint\noindent
+\\{done}: {\bf if} $\\{eq\_type}(x)\ne\\{tag\_token}$ {\bf then}
+ $\\{clear\_symbol}(x,\\{false})$;\par\noindent\kern10pt
+{\bf if} $\\{equiv}(x)=\\{null}$ {\bf then} $\\{new\_root}(x)$;
+\par\noindent\kern10pt
+$\\{scan\_declared\_variable}\gets h$;
+
+\bugonpage D444, line 8 from the bottom (12/14/88)
+
+\ninepoint\noindent\kern10pt
+{\bf if\/} \\{log\_opened} {\bf then} $\\{selector}\gets\\{selector}+2$;
+
+\bugonpage D510, line 14 (12/14/88)
+
+\ninepoint\noindent\kern10pt
+{\bf if\/} \\{log\_opened} {\bf then}
+
+\bugonpage D511, line 11 (12/14/88)
+
+\ninepoint\noindent\kern10pt
+{\bf if\/} \\{log\_opened} {\bf then}
+
+\bugonpage D530, new entry (12/14/88)
+
+\eightpoint\noindent
+\\{log\_opened}, 87--88, $\underline{782}$, 783, 788--789, 1023, 1205, 1208.
+
+\bugonpage D545, left column (10/31/87)
+
+\eightpoint
+\leftline{{\bf zscaled} primitive:\quad $\underline{893}$.}
+\leftline{Zabala Salelles, Ignacio Andres:\quad 812.}
+
+ % volume E
+\hsize=29pc
+\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}}
+
+\bugonpage E32, second-last line (9/20/87)
+
+\tenpoint\noindent
+after which comes `\\{math\_axis}\0; {\bf generate} |mathsy|' (which we
+won't bother to\cutpar
+
+\bugonpage E111, line 29 (10/16/88)
+
+\ninepoint\noindent
+$\\{lft}\,x_{11}={\rm hround}\,u$; \
+ $x_{1l}-x_{11}=x_{2l}-x_{12}=x_{22}-x_{2r}={\rm hround}\,1.6\\{cap\_jut}$;
+
+\bugonpage E285, bottom line (12/1/87)
+
+\rightline{\eightssi Due to Technical Developments\/\enspace\eightss(1968)}
+
+\bugonpage E333, lines 9--11 (1/9/89)
+
+\ninepoint\noindent
+$\\{lft}\,x_{1l}={\rm hround}(2.5u-.5\\{mfudged.stem})$; \
+ $x_{1l}=x_{1'l}=x_{2l}=x_{2'l}$;\par\noindent
+$\\{lft}\,x_{3l}={\rm hround}(.5w-.5\\{mfudged.stem})$; \
+ $x_5-x_3=x_3-x_1$;\par
+\line{{\bf if\/} not \\{monospace}:
+ $r:={\rm hround}(x_5+x_1)+r-w$; {\bf fi}\hfill
+ \% change width for better fit}
+
+\bugonpage E353, lines 38--39 (8/12/87)
+
+\ninepoint
+\leftline{\kern10pt{\bf else}: {\bf fill} \\{diag\_end}$(6r,5r,1,1,5l,6l)
+ \dashto.9[z_{5l},z_{6l}]$}
+\line{\kern30pt$.\,.\,\{z_5-z_6\}\,.1[z_{5r},z_{6r}]\dashto\rm cycle$;\hfil
+ \% middle stem}
+
+\bugonpage E387, line 13 (8/12/87)
+
+\ninepoint
+\line{\kern10pt{\bf pickup} \\{tiny}.\\{nib}; \ \\{bulb}$(3,4,5)$;\hfil\% bulb}
+
+\bugonpage E413, lines 37--38 (8/12/87)
+
+\ninepoint
+\leftline{\kern10pt{\bf else}: {\bf fill} \\{diag\_end}$(6r,5r,1,1,5l,6l)
+ \dashto.9[z_{5l},z_{6l}]$}
+\line{\kern30pt$.\,.\,\{z_5-z_6\}\,.1[z_{5r},z_{6r}]\dashto\rm cycle$;\hfil
+ \% middle stem}
+
+\bugonpage E459, line 24 (8/7/87)
+
+\ninepoint\noindent[Delete the `$=$' sign between `\\{lft}' and `$x_5$'.]
+
+\bugonpage E471, line 5 (12/11/88)
+
+\ninepoint\noindent
+$x_2=\\{good}.x\,.5w$; \ $\\{center\_on}(x_2)$;
+
+\bugonpage E471, insert two lines below the rule at bottom of page (12/11/88)
+
+\ninepoint
+\line{{\bf def\/}
+\\{center\_on}({\bf expr} $x) =\null$
+{\bf if\/} not \\{monospace}:\hfill \% change width for symmetric fit}
+\leftline{\kern10pt
+ $r:=r+2x-w$; \ $w:=2x$; \ {\bf fi} {\bf enddef};}
+
+\bugonpage E477, line 20 (12/11/87)
+
+\ninepoint\noindent
+$x_4=x_8=\\{good}.x\,.5w$; \ $\\{center\_on}(x_4)$; \
+$x_2=w-x_6=\\{good}.x(x_4+a)$;
+
+\bugonpage E483, third line of elementary division operator (12/11/88)
+
+\ninepoint\noindent
+$x_3-.5\\{dot\_size}={\rm hround}(.5w-.5\\{dot\_size})$; \
+$\\{center\_on}(x_3)$;
+
+\bugonpage E485, line 4 (8/7/87)
+
+\ninepoint\noindent[Delete the `$=$' sign between `\\{lft}' and `$x_5$'.]
+
+\bugonpage E487, line 17 (8/4/88)
+
+\ninepoint\line{%
+{\bf fill} \\{fullcircle} scaled$\,(\\{bold}+3.8\\{dw}+\\{eps})\,$%
+ shifted$\,(.5[z_4,z_8])$;\hfill\% dot}
+\smallskip\noindent[Also remove page 487 from the index entry for
+\\{dot\_size}, and add it to the entries for \\{bold} and \\{dw}.]
+
+\bugonpage E515, lines 5 and 12 (12/11/88)
+
+\ninepoint\noindent
+$.5[x_1,x_2]=x_3=\\{good}.x\,.5w$; \
+$\\{center\_on}(x_3)$; \ $\\{lft}\,x_1={\rm hround}(.5w-u*{\rm sqrt}48)$;
+
+\bugonpage E515, line 21 (1/23/89)
+
+\ninepoint\noindent
+{\bf labels}$(5,6)$; \ \\{zero\_width}; \ {\bf endchar\/};
+\smallskip\noindent[Also put labels `{\tt5}' and `{\tt6}' on the
+upper right figure, page E514.]
+
+\bugonpage E521, lines 4 and 14 (12/12/88)
+
+\ninepoint\noindent
+$x_1=x_2=\\{good}.x\,.5w$; \
+$\\{center\_on}(x_1)$; \ $\\{lft}\,x_3={\rm hround}\,u$; \ $x_4=w-x_3$;
+
+\bugonpage E537, line 6 (12/11/88)
+
+\ninepoint\noindent
+$x_1=x_2=x_3=x_4$; \
+$x_1-.5\\{stem}={\rm hround}(.5w-.5\\{stem})$; \
+$\\{center\_on}(x_1)$;
+
+\bugonpage E537, line 19 (12/11/88)
+
+\ninepoint\noindent
+$x_1=x_2=x_3$; \
+$x_1-.5\\{stem}={\rm hround}(.5w-.5\\{stem})$; \
+$\\{center\_on}(x_1)$;
+
+\bugonpage E539, line 4 (12/11/88)
+
+\ninepoint\noindent
+$x_1=x_4=x_{30}=x_{33}=\\{good}.x\,.5w$; \ $\\{center\_on}(x_1)$;
+
+\bugonpage E539, line 21 (12/11/88)
+
+\ninepoint\noindent
+$x_1=x_4=\\{good}.x\,.5w$; \ $\\{center\_on}(x_1)$;
+
+\bugonpage E541, line 4 (12/11/88)
+
+\ninepoint\noindent
+$x_1=x_5=\\{good}.x\,.5w$; \ $\\{center\_on}(x_1)$;
+
+\bugonpage E541, line 17 (12/11/88)
+
+\ninepoint\noindent
+$x_1=x_{10}=\\{good}.x\,.5w$; \ $\\{center\_on}(x_1)$;
+
+\bugonpage E550, new line after line 23 (8/15/87)
+
+\ninepoint\noindent\kern10pt
+{\bf forsuffixes} $\hbox{\$}=\\{notch\_cut},\\{cap\_notch\_cut}$:
+ {\bf if\/} $\hbox{\$}<3$: $\hbox{\$}:=3$; {\bf fi endfor}
+\smallskip\noindent
+[To make room for this, combine lines 38 and 39 into a single line.]
+
+\bugonpage E550, line 29 (7/9/88)
+
+\ninepoint\noindent\hskip10pt
+{\bf \def\_{\kern.04em\vbox{\hrule width.3em height .6pt}\kern.08em}%
+define\_whole\_vertical\_blacker\_pixels}$(\\{vair},\\{bar},\\{slab},
+ \\{cap\_bar},\\{cap\_band})$;
+
+\bugonpage E572, new entry at bottom (12/11/88)
+
+\eightpoint\noindent
+\\{center\_on}, $\underline{471}$, 477, 483, 515, 521, 537--541.
+ \bye
+ Now here are some that I will make soon!
+
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errata5.tex b/Master/texmf-doc/doc/english/knuth/errata/errata5.tex
new file mode 100644
index 00000000000..4e2982f109a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata5.tex
@@ -0,0 +1,1108 @@
+% Bugs (sigh) in Computers \& Typesetting
+
+\input manmac
+\font\sltt=cmsltt10
+\font\niness=cmss9
+\font\ninessi=cmssi9
+\proofmodefalse
+\raggedbottom
+\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
+
+\def\today{\number\day\
+ \ifcase\month\or
+ Jan\or Feb\or Mar\or Apr\or May\or Jun\or
+ Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi
+ \ \number\year}
+
+\def\cutpar{{\parfillskip=0pt\par}}
+
+\def\rhead{Bugs in {\tensl Computers \& Typesetting, 1989}}
+\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
+\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
+\newcount\nn
+\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
+\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
+
+\tenpoint
+\noindent This is a list of all corrections made to {\sl Computers \&
+Typesetting}, Volumes \hbox{A--E}, between 20 February 1989 and
+30 September 1989 (when \TeX\ Version 3.0 and \MF\ Version 2.0 were
+fully defined). Corrections made to
+the softcover version of {\sl The \TeX book\/} are the same as corrections to
+Volume~A\null. Corrections to the softcover version of {\sl The
+\slMF\kern1ptbook\/} are the same as corrections to Volume~C\null.
+Some of these corrections have already been made in reprintings
+of the books. Several minor changes
+to Volumes A~and~C are not shown here because they simply
+make room for the more substantive changes needed to describe the new
+features of \TeX\ Version 3.0 and \MF\ Version 2.0. Hundreds of
+changes will soon be made to Volumes B~and~D because of the upgrades
+to \TeX\ and \MF\/; it will unfortunately be impossible to document all of those
+changes. Therefore, readers who need up-to-date information on the \TeX\ and
+\MF\ programs should refer to the |WEB| source files until new
+printings of Volumes B~and~D are issued.
+
+ % volume A
+
+\buginvol A, in general (9/23/89)
+
+\ninepoint\noindent
+[Change `127' to `255' and `128' to `256' in contexts referring to character
+codes. This happens on pages 37(twice), 39, 41, 43, 44(twice), 48, 93, 154,
+277, 305(twice), 308(twice), 313, and 343. Also change `7-bit' to `8-bit' on
+pages 214 and 277.]
+
+\bugonpage A23, line 16 (9/23/89)
+
+|This is TeX, Version 3.0 (preloaded format=plain 89.7.15)|
+
+\bugonpage A34, new copy for bottom of page (9/23/89)
+
+\ddanger If you use \TeX\ format packages designed by others, your
+error messages may involve many inscrutable two-line levels of macro
+context. By setting ^|\errorcontextlines||=0| at the beginning of your file,
+you can reduce the amount of information that is reported;
+\TeX\ will show only the top and bottom pairs of context lines
+together with up to |\errorcontextlines| additional two-line items. \ (If
+anything has thereby been omitted, you'll also see `|...|'.) \ Chances
+are good that you can spot the source of an error even when most of a
+large context has been suppressed; if not, you can say
+`|I\errorcontextlines=100\oops|' and try again. \ (That will usually
+give you an undefined control sequence error and plenty of context.) \
+Plain \TeX\ sets |\errorcontextlines=5|.
+
+\bugonpage A45, lines 9--15 (9/23/89)
+
+\ninepoint\noindent
+|^^| has an internal code between 64 and 127, \TeX\
+subtracts 64 from the code; if the code is between 0 and 63, \TeX\
+adds~64. Hence code 127 can be typed |^^?|, and
+the dangerous bend sign can be obtained by saying
+|{\manual^^?}|. However, you must change the category code of character
+127 before using it, since this character ordinarily has category~15
+(^{invalid}); say, e.g., |\catcode`\^^?=12|.
+^^{double hat} ^^{hat hat}
+The |^^| notation is different from |\char|, because |^^| combinations are
+like single characters; for example, it would not be permissible to say
+|\catcode`\char127|, but |^^| symbols can even be used as letters within
+control words.
+
+\bugonpage A45, new copy before line 20 (9/23/89)
+
+\danger There's also a special convention in which |^^| is
+followed by {\sl two\/} ``lowercase hexadecimal digits,'' |0|--|9| or |a|--|f|.
+With this convention, all 256 characters are obtainable in a uniform
+way, from |^^00| to |^^ff|. Character 127 is |^^7f|.
+
+\noindent
+[Also remove one of the two dangerous bend signs on line 20.]
+
+\bugonpage A45, bottom paragraph and footnote (9/23/89)
+
+\ddanger People who install \TeX\ systems for use with non-American alphabets
+can make \TeX\ conform to any desired standard. For example, suppose
+you have a ^{Norwegian keyboard} containing the letter {\tt\ae}, which
+^^{Scandinavian letters} ^^{foreign languages}
+comes in as code~241 (say). Your local format package should define
+|\catcode`|{\tt\ae}|=11|; then you could have control sequences like
+|\s|{\tt\ae}|rtrykk|. Your \TeX\ input files could be made readable by
+American installations of \TeX\ that don't have your keyboard, by
+substituting |^^f1| for character~241. \ (For example, the stated control
+sequence would appear as |\s^^f1rtrykk| in the file; your American
+friends should also be provided with the format that you used, with its
+|\catcode`^^f1=11|.) \ Of course you should also arrange your fonts
+so that \TeX's character 241 will print as {\ae}; and you should
+change \TeX's hyphenation algorithm so that it will do correct
+Norwegian hyphenation. The main point is that such changes are not
+extremely difficult; nothing in the design of \TeX\ limits it to the
+American alphabet. Fine printing is obtained by fine tuning to the
+language or languages being used.
+^^{keyboards, non-ASCII}
+
+\ddanger European languages can also be accommodated effectively with
+only a limited character set.
+For example, let's consider Norwegian again, but suppose that\parfillskip=0pt
+
+\noindent [Now continue with the text on line 11 of page 46.]
+
+\bugonpage A47, lines 9--21 (9/23/89)
+
+\ddanger If \TeX\ sees a superscript character (category 7) in any state,
+and if that character is followed by another identical character, and if
+those two equal characters are followed by a character of code
+$c<128$, then they
+are deleted and 64 is added~to or subtracted from the code~$c$.
+\ (Thus, |^^A| is
+replaced by a single character whose code is~1, etc., as explained earlier.) \
+However, if the two superscript characters are immediately followed by two
+of the lowercase hexadecimal digits |0123456789abcdef|, the
+four-character sequence is replaced by a single character having the
+specified hexadecimal code.
+The replacement is carried out also if such a trio or quartet of
+characters is encountered during steps (b) or~(c) of the control-sequence-name
+scanning procedure described above. After the replacement is made, \TeX\
+begins again as if the new character had been present all the time.
+If a superscript character is not the first of such a trio or quartet, it is
+handled by the following rule.
+
+\ddanger If \TeX\ sees a character of categories 1, 2, 3, 4, 6, 8, 11, 12,
+or~13,
+or a character of category~7 that is not the first of a special
+sequence as just
+described, it converts the character to a token by attaching the category
+code, and goes into state~$M$. This is the normal case; almost every
+nonblank character is handled by this rule.
+
+\bugonpage A48, line 15 (9/23/89)
+
+\ninepoint\noindent
+the input line
+`| $x^2$~ \TeX ^^62^^6|'\thinspace?
+
+\bugonpage A54, third line from the bottom (9/23/89)
+
+\ninepoint\noindent
+For example, a well-designed \TeX\ font for ^{French}
+might well treat accents as lig-\cutpar
+
+\bugonpage A76, lines 3--5 from the bottom (9/23/89)
+
+\ninepoint\noindent
+\TeX\ does not assign any value to
+|\sfcode'042|.
+
+\bugonpage A107, new copy for top of page (9/23/89)
+
+\ddanger If you want to avoid overfull boxes at all costs without
+trying to fix them manually, you might be tempted to set
+|tolerance=10000|; this allows arbitrarily bad lines to be acceptable
+in tough situations. But infinite tolerance is a bad idea, because
+\TeX\ doesn't distinguish between terribly bad and preposterously
+horrible lines. Indeed, a tolerance of 10000 encourages \TeX\ to
+concentrate all the badness in one place, making one truly unsightly
+line instead of two moderately bad ones, because a single
+``write-off'' produces fewest total demerits according to the rules.
+There's a much better way to get the desired effect: \TeX\ has a
+parameter called ^|\emergencystretch| that is added to the assumed
+stretchability of every line when badness and demerits are computed,
+in cases where overfull boxes are otherwise unavoidable. If
+|\emergencystretch| is positive, \TeX\ will make a third pass over a
+paragraph before choosing the line breaks, when the first passes did
+not find a way to satisfy the ^|\pretolerance| and ^|\tolerance|.
+The effect of\/ |\emergencystretch| is to scale down the badnesses so
+that large infinities are distinguishable from smaller ones. By
+setting |\emergencystretch| high enough (based on |\hsize|) you can be
+sure that the |\tolerance| is never exceeded; hence overfull boxes
+will never occur unless the line-breaking task is truly impossible.
+
+\bugonpage A116, lines 11--15 (6/7/89)
+
+\danger If you have two or more |\topinsert| or |\pageinsert| commands in
+quick succession, \TeX\ may need to carry them over to several subsequent
+pages; but they will retain their relative order when they are
+carried over. For example, suppose you have pages that are nine inches
+tall, and suppose you have already specified 4~inches of text for some
+page, say page~25. Then suppose you make seven topinserts in a row, of%
+{\parfillskip=0pt\endgraf}\endgroup
+
+\bugonpage A125, lines 13--29 (9/23/89)
+
+\ddanger \looseness=-1
+When the best page break is finally chosen, \TeX\ removes everything after
+the chosen breakpoint from the bottom of the ``current page,'' and puts it
+all back at the top of the ``recent contributions.'' The
+chosen breakpoint itself is placed at the very top of the recent contributions.
+If it is a penalty item, the value of the penalty is recorded in
+^|\outputpenalty| and the penalty in the contribution list is changed
+to $10000$; otherwise |\outputpenalty| is set to 10000.
+The insertions that remain on the current page are of three kinds: For
+each class~$n$ there are unsplit insertions, followed possibly by
+a single split insertion, followed possibly by others. If
+^|\holdinginserts|$\null>0$, all insertions remain in place (so that
+they might be contributed again); otherwise they are all removed from
+the current page list as follows: The unsplit insertions
+are appended to |\box|$\,n$, with no interline glue between them. \
+(^{Struts} should be used, as in the |\vfootnote| macro of
+Appendix~B\null.) \
+If a split insertion is present, it is effectively |\vsplit| to the size
+that was computed previously in Step~4; the top part is treated as an
+unsplit insertion, and the remainder (if any) is converted to an insertion
+as if it had not been split. This remainder, followed by any other floating
+insertions of the same class, is held
+over in a separate place. \ (They will show up on the ``current page'' if
+^|\showlists| is used while an ^|\output| routine is active; the total
+number of such insertions appears in ^|\insertpenalties| during an
+|\output| routine.) %\
+Finally, the remaining items before the best break on the current page are put
+together in a |\vbox|\parfillskip=0pt
+
+\bugonpage A131, line 12 (9/22/89)
+
+\ninepoint\noindent
+work fine; but sometimes you want to have uniformity
+between different members of a\cutpar
+
+\bugonpage A155, lines 3--5 (9/23/89)
+
+\ninepoint\noindent
+when it encounters a character that
+is given explicitly as ^|\char|\<number>.
+
+\bugonpage A214, lines 19--24 (9/23/89)
+
+\ninepoint
+\textindent\bull |\the|\<special register>, where \<special register> is
+one of the integer quantities ^|\prevgraf|, ^|\deadcycles|, ^|\insertpenalties|,
+^|\inputlineno|, ^|\badness|,
+or ^|\parshape| (denoting only the number of lines of\/ |\parshape|); or
+one of the dimensions ^|\pagetotal|, ^|\pagegoal|, ^|\pagestretch|,
+^|\pagefilstretch|, ^|\pagefillstretch|, ^|\pagefilllstretch|, ^|\pageshrink|,
+^|\pagedepth|. In horizontal modes you can also refer to a special integer,
+|\the\spacefactor|; in vertical modes there's a special dimension,
+|\the\prevdepth|.
+
+\bugonpage A229, new copy after line 11 (9/23/89)
+
+\ddanger \TeX\ will report the badness of glue setting in a box if
+you ask for the numeric quantity
+^|\badness| after making a box. For example, you might say
+\begintt
+\setbox0=\line{\trialtexta}
+\ifnum\badness>250 \setbox0=\line{\trialtextb}\fi
+\endtt
+The badness is between 0 and 10000
+unless the box is overfull, when |\badness=1000000|.
+
+\bugonpage A271, lines 17--20 (9/23/89)
+
+\ninepoint
+\beginsyntax
+ \alt<countdef token>\alt^|\count|<8-bit number>\alt<codename><8-bit number>
+ \alt<chardef token>\alt<mathchardef token>\alt^|\parshape|\alt^|\inputlineno|
+ \alt^|\hyphenchar|<font>\alt^|\skewchar|<font>\alt^|\badness|
+\endsyntax
+
+\bugonpage A272, lines 3--4 (9/23/89)
+
+\ninepoint\noindent
+value is between 0~and $2^8-1=255$; a ^\<4-bit number> is similar.
+
+\bugonpage A273, insert after lines 11, 20, 21, 21, 38 (9/23/89)
+
+\ninepoint
+\begindisplay
+|\holdinginserts|\quad(positive if insertions remain dormant in output box)\cr
+|\language|\quad(the current set of hyphenation rules)\cr
+|\lefthyphenmin|\quad(smallest fragment at beginning of hyphenated word)\cr
+|\righthyphenmin|\quad(smallest fragment at end of hyphenated word)\cr
+|\errorcontextlines|\quad(maximum extra context shown when errors occur)\cr
+\enddisplay
+
+\bugonpage A274, insert after line 4 (9/23/89)
+
+\ninepoint\indent
+|\emergencystretch|\quad(reduces badnesses on final pass of line-breaking)
+
+\bugonpage A275, line 13 (9/23/89)
+
+\ninepoint\noindent
+That makes a total of 103 parameters of all five kinds.
+
+\bugonpage A283, line 14 (9/23/89)
+
+\ninepoint
+\beginsyntax
+ \alt^|\noboundary|\alt^|\unhbox|\alt^|\unhcopy|\alt^|\valign|\alt^|\vrule|
+\endsyntax
+
+\bugonpage A286, lines 3--12 from the bottom (9/23/89)
+
+\ninepoint
+\textindent{$\bull$}%
+\<letter>, \<otherchar>, \kern-1pt^|\char|\<8-bit number>, \<chardef token>,
+\kern-1pt^|\noboundary|.\enskip
+The most common commands of all are the character commands that tell
+\TeX\ to append a character to the current horizontal
+list, using the current font.
+If two or more commands of this type occur in succession, \TeX\ processes
+them all as a unit, converting to ligatures and/or
+inserting kerns as directed by the font information. \ (Ligatures and
+kerns may be influenced by invisible ``boundary'' characters at the left
+and right, unless |\noboundary| appears.) \ Each character
+command adjusts ^|\spacefactor|, using
+the ^|\sfcode| table as described in Chapter~12.
+In unrestricted horizontal mode, a
+`|\discretionary{}{}{}|' item is appended after a character whose code is
+the ^|\hyphenchar| of its font, or after a ligature formed from a sequence
+that ends with such a character.
+
+\bugonpage A287, insert after line 19 (9/23/89)
+
+\ninepoint
+\textindent{$\bull$}%
+|\setlanguage|\<number>.\enskip See the conclusion of Appendix H.
+
+\bugonpage A289, lines 9--14 from the bottom (9/23/89)
+
+\ninepoint\noindent
+$2^{15}-1$. This is done by replacing the character number by its
+^|\mathcode| value. If the
+|\mathcode| value turns out to be $32768=\null$\hex{8000}, however,
+ the \<character>
+is replaced by an ^{active character} token having the original character
+code (0 to~255); \TeX\ forgets the original \<character> and expands this
+active character according to the rules of Chapter~20.
+
+\bugonpage A290, insert before 13th line from bottom (9/23/89)
+
+\ninepoint
+\textindent{$\bull$}%
+|\noboundary|. This command is redundant and therefore has no
+effect; boundary ligatures are automatically disabled in math modes.
+
+\bugonpage A296, line 16 from the bottom (9/22/89)
+
+\noindent[There should be a `|^|' just above the `|3|' in the line below.
+This was mistakenly dropped by the printer some time during 1985; it was
+correct in the first two printings and it has always been correct inside the
+computer!]
+
+\bugonpage A309, lines 3--5 (9/23/89)
+
+\ninepoint\noindent
+\hbox to\parindent{\bf\hss8.4.\enspace}\ignorespaces
+|$|$_{3}$ |x|$_{11}$ |^|$_7$ |2|$_{12}$ |$|$_{3}$ |~|$_{13}$ \]$_{10}$
+\cstok{TeX} |b|$_{12}$ |v|$_{12}$ \]$_{10}$. The final space comes from the
+\<return> placed at the end of the line. Code |^^6| yields |v| only
+when not followed by |0|--|9| or |a|--|f|.
+The initial space is ignored, because state~$N$
+governs the beginning of the line.
+
+\bugonpage A314, line 27 (9/23/89)
+
+\ninepoint\noindent
+The English word `eighteen' might deserve similar treatment.
+\TeX's hyphenation algorithm will not make such spelling changes automatically.
+
+\bugonpage A318, line 19 (3/3/89)
+
+\ninepoint
+|\def\clearnotenumber{\notenumber=0\relax}|
+
+\bugonpage A330, line 3 (8/25/89)
+
+\ninepoint\noindent
+\hbox to\parindent{\bf\hss20.10.\enspace}\ignorespaces
+|\def\overpaid{{\count0=\balance|
+
+\bugonpage A336, lines 4--8 from the bottom (9/23/89)
+
+\ninepoint\noindent
+badness rating of a
+box is at most 10000, except that the |\badness| of
+an overfull box is 1000000. |INITEX| initializes |\tolerance| to
+10000, thereby making all line breaks feasible. Penalties of 10000 or more
+prohibit breaks; penalties of $-10000$ or less make breaks mandatory. The
+cost of a page break is 100000, if the badness is 10000 and if the
+associated penalties are less than 10000 in magnitude (see Chapter~15).
+
+\bugonpage A337, lines 2--16 (9/23/89)
+
+\ninepoint\noindent
+ifies characters whose codes differ by~64
+from the codes of |?|, |@|, |A|; this convention applies only to
+characters with ASCII codes less than~128. There are 256 possible characters,
+hence 256 entries in each of the |\catcode|, |\mathcode|,
+|\lccode|, |\uccode|, |\sfcode|, and |\delcode| tables. All
+|\lccode|, |\uccode|, and |\char| values
+must be less than~256. A font has at most 256 characters. There are
+256~|\box| registers, 256~|\count| registers, 256~|\dimen| registers,
+256~|\skip| registers, 256~|\muskip| registers, 256~|\toks| registers,
+256~hyphenation tables.
+The ``at size'' of a font must be less than~$2048\pt$, i.e.,~$2^{11}\pt$.
+Math delimiters are encoded by multiplying the math~code of the ``small
+character'' by~$2^{12}$. The magnitude of
+a~\<dimen> value must be less than~$16384\pt$, i.e.,~$2^{14}\pt$;
+similarly, the \<factor> in a~\<fil dimen> must be less than~$2^{14}$.
+A~|\mathchar| or |\spacefactor| or |\sfcode| value must be less than~$2^{15}$;
+a~|\mathcode| or |\mag| value must be less than or equal to~$2^{15}$,
+and $2^{15}$ denotes an ``active'' math character. There
+are $2^{16}\rm\,sp$ per~pt. A~|\delcode| value
+must be less than~$2^{24}$; a~|\delimiter|, less than $2^{27}$.
+The |\end| command sometimes contributes
+a penalty of $-2^{30}$ to the current page. A~\<dimen> must be less than
+$2^{30}\rm\,sp$ in absolute value; a~\<number> must be
+less than $2^{31}$ in absolute value.
+
+\bugonpage A348, line 12 from the bottom (9/23/89)
+
+\ninepoint\noindent
+^|\showboxbreadth||=5 |^|\showboxdepth||=3 |^|\errorcontextlines||=5|
+
+\bugonpage A364, insert before line 18 from the bottom (9/23/89)
+
+\ninepoint\noindent
+^|\lefthyphenmin||=2 |^|\righthyphenmin||=3 % disallow x- or -xx breaks|
+
+\bugonpage A364, line 5 from the bottom (9/23/89)
+
+\ninepoint\noindent
+|\def|^|\fmtname||{plain}\def\fmtversion{3.0} % identifies the current format|
+
+\bugonpage A369, insert before line 5 from the bottom (9/23/89)
+
+\ninepoint
+Modern keyboards allow 256 codes to be input, not just 128; so \TeX\
+represents characters internally as numbers in the range 0--255 (i.e.,
+\oct{000}--\oct{377}, or \hex{00}--\hex{FF}). Implementations of \TeX\
+differ in which characters they will accept in input files and which
+they will transmit to output files; these subsets can be specified
+independently. A completely permissive version of \TeX\ allows full
+256-character input and output; other versions might ignore all
+but the visible characters of ASCII; still other versions might
+distinguish the tab character (code \oct{011}) from a space on input,
+but might output each tab as a sequence of three characters |^^I|.
+
+\bugonpage A370, lines 3--7 (9/23/89)
+
+\ninepoint\noindent
+close as possible to the ASCII conventions.
+\ (b)~Make sure that codes \oct{041}--\oct{046}, \oct{060}--\oct{071},
+\oct{141}--\oct{146}, and \oct{160}--\oct{171} are present and that
+each unrepresentable
+internal code $<\null$\oct{200} leads to a representable code when \oct{100} is
+added or subtracted; then all 256 codes can be input and output.
+\ (c)~Cooperate with everyone else who shares
+the same constraints, so that you all adopt the same policy.
+\ (See Appendix~J for information about the \TeX\ Users Group.)
+
+\bugonpage A370, bottom line (9/23/89)
+
+\ninepoint\noindent
+doesn't matter if these symbols have their plain
+\TeX\ meanings or not. \ (6)~There is a special convention for
+representing characters 0--255 in the hexadecimal forms
+|^^00|--|^^ff|, explained in Chapter~8. This convention is always
+acceptable as input, when |^| is any character of catcode~7. Text
+output is produced with this convention only when representing
+characters of code $\ge128$ that a \TeX\ installer has chosen not to
+output directly.
+
+\bugonpage A385, line 8 (5/14/89)
+
+\ninepoint
+|\def\beginbox{\setbox0=\hbox\bgroup}|
+
+\bugonpage A400, line 18 from the bottom (9/23/89)
+
+\ninepoint\noindent
+page prematurely if you want to pass a signal. \ (Set
+^|\holdinginserts| positive to pass a signal when the contents of\/
+|\box255| will be sent back through the page builder again, if any
+insertions are present.)
+
+\bugonpage A419, lines 4--6 (9/23/89)
+
+\ninepoint\noindent
+shortened or lengthened anyway;
+book preparation with \TeX, as with type, encourages interaction between
+humans and machines.) \
+The lines of the quotations are set ^{flush right} by using
+^|\obeylines| together with a stretchable ^|\leftskip|:
+
+\bugonpage A444, lines 21--26 (9/23/89)
+
+\ninepoint\noindent
+following one, using the specified family and the current size, then
+insert the ligature character and continue as specified by the font;
+two characters may collapse into one, or a new character may appear.
+Otherwise if the font information
+shows a kern between the current symbol and the next, insert a kern item
+after the current Ord atom and move to the next item after that.
+Otherwise (i.e., if no ligature or kern is specified between the present
+text symbol and the following character), go to Rule~17.
+
+\bugonpage A453, lines 12--14 from the bottom (9/23/89)
+
+\begingroup
+\hyphenpenalty=-1000 \pretolerance=-1 \tolerance=1000
+\doublehyphendemerits=-100000 \finalhyphendemerits=-100000
+\ninepoint\noindent
+Exception: The character
+`|.|'~is treated as if it were a \<letter> of code~0
+when it appears in a pattern. Code~0 (which obviously cannot match a nonzero
+|\lccode|) is used by \TeX\ to represent the
+left or right edge of a word when it is being hyphenated.
+
+\endgroup
+
+\bugonpage A454, lines 7--15 from the bottom (9/23/89)
+
+\begingroup
+\hyphenpenalty=-1000 \pretolerance=-1 \tolerance=1000
+\doublehyphendemerits=-100000 \finalhyphendemerits=-100000
+\ddanger If a trial word $l_1\ldots l_n$ has been found by this process,
+hyphenation will still be abandoned unless $n\ge\lambda+\rho$, where
+$\lambda=\max(1,\hbox{|\lefthyphenmin|})$ and
+$\rho=\max(1,\hbox{|\righthyphenmin|})$.
+\ (Plain \TeX\ takes $\lambda=2$ and $\rho=3$.) \ Furthermore, the items
+immediately following the trial word must consist of zero or more
+characters, ligatures, and implicit kerns, followed immediately by
+either glue or an explicit kern or a penalty item or a whatsit or an
+item of vertical mode material from ^|\mark|, ^|\insert|, or ^|\vadjust|.
+Thus, a box or rule or math formula or discretionary following too closely
+upon the trial word will inhibit hyphenation. (Since \TeX\ inserts
+empty discretionaries after ^{explicit hyphens}, these rules imply that
+already-hyphenated compound words will not be further hyphenated by
+the algorithm.)
+
+\endgroup
+
+\bugonpage A455, new copy after line 13 (9/23/89)
+
+\begingroup
+\hyphenpenalty=-1000 \pretolerance=-1 \tolerance=1000
+\doublehyphendemerits=-100000 \finalhyphendemerits=-100000
+\ddanger \looseness=-1
+So far we have assumed that \TeX\ knows only one style of
+hyphenation at a time; but in fact \TeX\ can remember up to 256
+distinct sets of rules, if you have enough memory in your computer. An
+integer parameter called ^|\language| selects the rules actually used;
+every ^|\hyphenation| and ^|\patterns| specification appends new rules
+to those previously given for the current value of\/ |\language|.
+\ (If\/ |\language| is negative or greater than 255, \TeX\ acts as if
+|\language|$\null=0$.) \ All |\patterns| for all languages must be
+given before a paragraph is typeset, if |INITEX| is used for
+typesetting.
+
+\ddanger \TeX\ is able to work with several languages in the same
+paragraph, because it operates as follows. At the beginning of a
+paragraph the ``current language'' is defined to be~0. Whenever a
+character is added to the current paragraph (i.e., in unrestricted
+horizontal mode), the current language is compared to |\language|; if
+they differ, the current language is reset and a whatsit node
+specifying the new current language is inserted before the character.
+Thus, if you say `|\def\french{\language1...}|' and `|mix| |{\french
+franc/ais}| |with| |English|', \TeX\ will put whatsits before the |f|
+and the~|w|; hence it will use language~1 rules when hyphenating
+|franc/ais|, after which it will revert to language~0. You can insert
+the whatsit yourself (even in restricted horizontal mode) by saying
+^|\setlanguage|\<number>; this changes the current language but it
+does not change |\language|.
+
+\endgroup
+
+\bugonpage A459, right column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\badness|, 214, {\it229}, 271.
+
+\bugonpage A461, right column (9/23/89)
+
+\eightpoint
+caron, {\sl see\/} h\'a\v cek.
+
+\bugonpage A464, line 10 (5/15/89)
+
+\eightpoint
+displays, 87, 103, {\it139--145}, {\it166--167},
+
+\bugonpage A464, right column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\emergencystretch|, $\underline{107}$, 274.
+
+\bugonpage A465, left column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\errorcontextlines|, $\underline{34}$, 273, {\it348}.
+
+\bugonpage A466, entry for `fractions' (9/23/89)
+
+\eightpoint[Add page 332 to this entry.]
+
+\bugonpage A466, entry for `French'' (9/23/89)
+
+\eightpoint[Add page 455 to this entry.]
+
+\bugonpage A467, entry for `hexadecimal' (9/23/89)
+
+\eightpoint[Add pages 45, 47--48 to this entry.]
+
+\bugonpage A467, right column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\holdinginserts|, $\underline{125}$, 273, 400.
+
+\bugonpage A467, bottom line (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\hyphenation|, 277, {\it419}, $\underline{452}$--$\underline{453}$, 455.
+
+\bugonpage A468, right column (9/23/89)
+
+\eightpoint
+infinite badness, 97, 107, 111, 229, 317.
+
+\bugonpage A468, right column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\inputlineno|, 214, 271.
+
+\bugonpage A469, entry for kerns (9/23/89)
+
+\eightpoint[Add pages 286 and 444 to this entry.]
+
+\bugonpage A469, left column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\language| (hyphenation method), 273, $\underline{455}$.
+
+\bugonpage A469, right column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\lefthyphenmin|, 273, {\it364}, $\underline{454}$.
+
+\bugonpage A470, entry for ligatures (9/23/89)
+
+\eightpoint[Add pages 286 and 444 to this entry.]
+
+\bugonpage A472, left column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\noboundary|, 283, $\underline{286}$, 290.
+
+\bugonpage A473, right column (9/23/89)
+
+\eightpoint
+overfull boxes, 27--30, 94, 229, 238,\par
+\indent\qquad 302--303, 307, 400.\par
+\indent\quad avoiding, 107.
+
+\bugonpage A474, left column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\patterns|, 277, $\underline{453}$, 455.
+
+\bugonpage A476, left column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\righthyphenmin|, 273, {\it364}, $\underline{454}$.
+
+\bugonpage A476, right column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\setlanguage|, 287, $\underline{455}$.
+
+\bugonpage A476, right column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\showboxbreadth|, 273, $\underline{302}$, 303, {\it348}.\par
+\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\showboxdepth|, 79, 273, $\underline{302}$, 303, {\it348}.
+
+\bugonpage A479, left column (9/23/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\tolerance|, {\it29--30}, 91, 94, $\underline{96}$, 107, 272,\par
+\indent\qquad{\it317}, {\it333}, {\it342}, {\it348}, {\it364}, {\it451}.
+
+\bugonpage A481, right column, last six entries (9/23/89)
+
+\def\frac#1/#2{\leavevmode\kern.1em
+ \raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em
+ /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}%
+\eightpoint
+\frac1/2, 67, 332.\par
+1/2, in unslashed form, 141, 186.\par
+\<4-bit number>, $\underline{271}$.\par
+\<8-bit number>, $\underline{271}$, 276--278.\par
+\<15-bit number>, $\underline{271}$, 277, 289, 291.\par
+\<27-bit number>, $\underline{271}$, 289, 291.\par
+
+\bugonpage A483, lines 15 and 21 (9/23/89)
+
+\noindent[Delete these two lines, as TUG's address is no longer c/o AMS.]
+
+ % volume B
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\bugonpage Bvii, top two lines (4/21/89)
+
+{\hsize=29pc
+\tenpoint\noindent
+{\it {\sltt WEB} documentation for four utility programs that are
+often used in conjunction with \TeX: {\sltt POOLtype}, {\sltt TFtoPL},
+{\sltt PLtoTF}, and {\sltt DVItype}.}
+\par}
+
+\bugonpage B2, line 32 (6/20/89)
+
+\ninepoint\noindent\hskip10pt
+{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
+{\tt This\]is\]TeX,\]Version\]2.991\char'23}\quad
+$\{\,$printed when \TeX\ starts$\,\}$
+
+\bugonpage B118, lines 2--4 (3/2/89)
+
+\ninepoint\noindent\hskip10pt
+{\bf begin if\/} $\\{cur\_level}>\\{level\_one}$ {\bf then}\par
+\noindent\hskip20pt{\bf begin} \\{check\_full\_save\_stack}; \
+ $\\{save\_type}(\\{save\_ptr})\gets\\{insert\_token}$;\par
+\noindent\hskip20pt$\\{save\_level}(\\{save\_ptr})\gets\\{level\_zero}$; \
+ $\\{save\_index}(\\{save\_ptr})\gets t$; \ \\{incr}(\\{save\_ptr});\par
+\noindent\hskip20pt{\bf end};
+
+\bugonpage B182, line 13 becomes two lines (6/20/89)
+
+\ninepoint\noindent
+$k,\\{kk}$: \\{small\_number};\quad
+ $\{\,$number of digits in a decimal fraction$\,\}$\par\noindent
+$p,q$: \\{pointer};\quad
+ $\{\,$top of decimal digit stack$\,\}$
+
+\bugonpage B182, line 15 from the bottom (6/20/89)
+
+\ninepoint\noindent\hskip10pt
+{\bf begin} $k\gets0$; $p\gets\\{null}$; \\{get\_token};\quad
+ $\{\,$\\{point\_token} is being re-scanned$\,\}$
+
+\bugonpage B182, line 11 from the bottom (6/20/89)
+
+\ninepoint\noindent\hskip30pt
+{\bf begin} $q\gets\\{get\_avail}$; $\\{link}(q)\gets p$;
+ $\\{info}(q)\gets\\{cur\_tok}-\\{zero\_token}$;
+ $p\gets q$; $\\{incr}(k)$;
+
+\bugonpage B182, line 8 from the bottom (6/20/89)
+
+\ninepoint\noindent
+\\{done1}: {\bf for} $\\{kk}\gets k$ {\bf downto} 1 {\bf do}\par
+\noindent\hskip20pt
+{\bf begin} $\\{dig}[kk-1]\gets\\{info}(p)$; $q\gets p$; $p\gets\\{link}(p)$;
+ $\\{free\_avail}(q)$;\par
+\noindent\hskip20pt{\bf end};\par
+\noindent\hskip10pt$f\gets\\{round\_decimals}(k)$;
+
+\bugonpage B332, lines 11 and 12 from the bottom (4/8/89)
+
+\ninepoint
+\noindent\hskip10pt
+{\bf begin if\/} $\\{cur\_align}=\\{null}$ {\bf then}
+ \\{confusion}({\tt\char'23endv\char'23});\par\noindent\hskip10pt
+$q\gets\\{link}(\\{cur\_align})$; \ {\bf if\/} $q=\\{null}$ {\bf then}
+ \\{confusion}({\tt\char'23endv\char'23});
+
+\bugonpage B466, line 5 becomes three lines (6/7/89)
+
+\ninepoint
+\noindent
+$\\{mmode}+\\{halign}$: {\bf if\/} \\{privileged} {\bf then}\par\noindent
+\hskip20pt{\bf if\/} $\\{cur\_group}=\\{math\_shift\_group}$
+ {\bf then} \\{init\_align}\par\noindent\hskip20pt
+{\bf else} \\{off\_save};
+
+\bugonpage B518, line 25 (8/31/89)
+
+\ninepoint\noindent\hskip10pt
+$\\{undump}(\\{lo\_mem\_stat\_max}+1)(\\{lo\_mem\_max})(\\{rover})$; \
+$p\gets\\{mem\_bot}$; \ $q\gets\\{rover}$;
+
+ % volume C
+\hsize=29pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+
+\buginvol C, in general (9/23/89)
+
+\ninepoint\noindent
+[Change `127' to `255' and `128' to `256' in contexts referring to character
+codes. This happens on pages 188(thrice) and 251.]
+
+\bugonpage C91, lines 12 and 13 (8/31/89)
+
+\begintt
+\mode=cheapo; input newface
+\endtt
+and the same file should also produce a high-resolution font if we start with
+
+\bugonpage C204, line 4 (8/18/89)
+
+\ninepoint\noindent
+so that
+\\{currenttransform} multiplies all $y$~coordinates by
+\\{aspect\_ratio}, when paths are\cutpar
+
+\bugonpage C212, lines 24--27 (9/30/89)
+
+\ninepoint
+\begindisplay
+{\it boundarychar}\quad&the right boundary character for ligatures and kerns\cr
+\enddisplay
+All of these quantities are numeric. They are initially zero at the
+start of a job, except for {\it year\/}, {\it month\/},
+ {\it day\/}, and {\it time\/}, which
+are initialized to the time the run began; furthermore, {\it boundarychar\/} is
+initially~$-1$. A {\it granularity\/} of zero is equivalent to
+ $\hbox{\it granularity\/}=1$.
+A preloaded base file like plain \MF\ will usually give nonzero values to
+several other internal quantities on this list.
+
+\bugonpage C259, lines 16 and 17 from the bottom (5/14/89)
+
+\tenpoint
+\noindent
+|screenchars|; \ |screenstrokes|; \ |imagerules|; \ |gfcorners|; \
+|nodisplays|;\hfil\break
+|notransforms|; \ |input| \<filename>.
+
+\bugonpage C282, the three lines following the chart (9/30/89)
+
+\tenpoint\noindent
+\MF\ can also be configured to accept any or all of the character codes
+128--255.
+However, \MF\ programs that make use of anything in addition to the 95
+standard ASCII characters cannot be expected to run on other systems, so
+the use of extended character sets is discouraged.
+
+\bugonpage C316, bottom 14 lines and top 30 of page C317 (9/30/89)
+
+\ninepoint
+Ligature information and kerning information is specified in short
+``^{ligtable programs}'' of a particularly simple form. Here's an example
+that illustrates most of the features (although it is not a serious
+example of typographic practice):
+\beginlines
+^|ligtable|| "f": "f" =: oct"013", "i" |\||=: oct"020", skipto 1;|
+|ligtable "o": "b": "p": "e" kern .5u#, "o" kern .5u#, "x" kern-.5u#,|
+| 1:: "!" kern u#;|
+\endlines
+This sequence of instructions can be paraphrased as follows:
+\smallskip
+\hangindent 3pc
+Dear \TeX, when you're typesetting an~`f' with this font, and when the
+following character also belongs to this font, look at it closely because
+you might need to do something special: If that following character is
+another~`f', replace the two f's by character code |oct"013"|
+[namely `\char'13'\kern.5pt];
+if it's an `i', retain the `f' but replace the `i' by character code
+|oct"020"| [a dotless `\char'20'\kern.5pt];
+otherwise skip down to label `|1::|' for further instructions.
+When you're typesetting an `o' or~`b' or~`p', if the next input to \TeX\ is
+`e' or~`o', add a half unit
+of space between the letters; if it's an `x', subtract a half unit; if it's an
+exclamation point, add a full unit. The last instruction applies also
+to exclamation points following~`f' (because of the label `|1::|').
+\smallskip\noindent
+When a character code appears in front of a colon, the colon ``labels''
+the starting place for that character's ligature and kerning program,
+which continues to the end of the ligtable statement. A double colon denotes
+a ``local label''; a |skipto| instruction advances to the next matching local
+label, which must appear before 128 ligtable steps intervene. The special
+label \|\||:| can be used to initiate ligtable instructions for an invisible
+``left boundary character'' that is implicitly present just before every
+word; an invisible ``right boundary character'' equal to {\it boundarychar\/} is
+also implicitly present just after every word, if {\it boundarychar\/}
+ lies between
+0 and~255.
+
+The general syntax for ligtable programs is pretty easy to guess from
+these examples, but we ought to exhibit it for completeness:
+\beginsyntax \chardef\\=`\|
+<ligtable command>\is[ligtable]<ligtable program><optional skip>
+<ligtable program>\is<ligtable step>\alt<ligtable program>[,]<ligtable step>
+<optional skip>\is[,] [skipto]<code>\alt<empty>
+<ligtable step>\is<code><ligature op><code>
+ \alt<code>[kern]<numeric expression>
+ \alt<label><ligtable step>
+<ligature op>\is[=:]\alt[\\=:]\alt[\\=:>]\alt[=:\\]\alt[=:\\>]%
+ \alt[\\=:\\]\alt[\\=:\\>]\alt[\\=:\\>>]
+<label>\is<code>[:]\alt<code>[::]\alt[\\\\:]
+<code>\is<numeric expression>\alt<string expression>
+\endsyntax
+A \<code> should have a numeric value between 0 and 255, inclusive,
+after having been rounded to the nearest integer; or it should be a
+string of length~1, in which case it denotes the corresponding
+^{ASCII} code (Appendix~C\null). For example, |"A"| and |64.61| both
+specify the code value 65. Vertical bars to the left or right of `|=:|'
+tell \TeX\ to retain the original left and/or right character that invoked a
+ligature. Additional `|>|' signs tell \TeX\ to advance its focus of attention
+instead of doing any further ligtable operations at the current
+character position.
+
+\bugonpage C338, lines 21 and 22 (9/30/89)
+
+\ninepoint\noindent
+and 127--255 have to be specified with the `|#|' option,
+on non-fancy installations of \TeX,
+and so does code 35 (which is the ASCII code of `|#|' itself).
+
+\bugonpage C346, left column, after line 14 (9/30/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+\||=:|, {\it316}, $\underline{317}$.\par
+\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+\||=:>|, $\underline{317}$.\par
+\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|=:|\|, $\underline{317}$.\par
+\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|=:|\||>|, $\underline{317}$.\par
+\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+\||=:|\|, $\underline{317}$.\par
+\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+\||=:|\||>|, $\underline{317}$.\par
+\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+\||=:|\||>>|, $\underline{317}$.\par
+
+\bugonpage C346, left column, after line 31 (9/30/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|::| (local label), $\underline{317}$.\par
+\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+\|\||:| (left boundary label), $\underline{317}$.\par
+
+\bugonpage C347, left column (9/30/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|boundarychar|, 212, 317.
+
+\bugonpage C352, left column (9/30/89)
+
+\eightpoint[Change `\<ligature replacement>' to `\<ligature op>'.]
+
+\bugonpage C354, left column (9/30/89)
+
+\eightpoint
+\<optional skip>, 217.
+
+\bugonpage C356, left column (9/30/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|skipto|, {\it316}, $\underline{317}$.
+
+ % Volume D
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\bugonpage Dvi, bottom two lines, and top lines of page vii (4/21/89)
+
+{\hsize=29pc \tenpoint
+\textindent\bull ``\MF\/ware'' by Donald~E. Knuth, Tomas~G. Rokicki, and
+Ar\-thur~L. Samuel, Stanford Computer Science Report 1255 (Stanford,
+California, April 1989), 207~pp. \ {\it The {\sltt WEB} programs for
+four utility programs that are often used in conjunction with
+\slMF\kern1pt: {\sltt GFtype}, {\sltt GFtoPK}, {\sltt GFtoDVI},
+and {\sltt MFT}.}
+\par}
+
+\bugonpage D63, line 9 (8/31/89)
+
+\tenpoint\noindent
+\\{mem}, so we
+allow pointers to assume any \\{halfword} value. The minimum memory
+index represents\cutpar
+
+\bugonpage D63, line 28 (8/31/89)
+
+\tenpoint\centerline{$\\{null}=\\{mem\_min}<\\{lo\_mem\_max}<
+\\{hi\_mem\_min}<\\{mem\_top}\le\\{mem\_end}\le\\{mem\_max}$.}
+
+\bugonpage D67, in the July 1987 printing (4/7/89)
+
+\ninepoint\noindent
+[Delete line 7, which has a redundant `{\bf if\/} $r=p$ {\bf then}';
+ move line 8 to the left 10 points for alignment; and restore the following
+ line (which was deleted by mistake after line 8):
+
+ \noindent\hskip10pt
+ $\\{node\_size}(p)\gets q-p$\quad$\{\,$reset the size in case it grew$\,\}$
+
+ \noindent
+ These corrections are needed only in the reprinting made July, 1987.]
+
+\bugonpage D228, in the July 1987 printing (4/7/89)
+
+\ninepoint\noindent
+[Delete lines 14--15, which were inserted erroneously from a previous errata
+list; and restore the following lines (which were deleted by mistake):
+
+\noindent\hskip20pt
+{\bf begin} \\{double}(\\{max\_coef}); \
+\\{double}(\\{x0}); \
+\\{double}(\\{x1}); \
+\\{double}(\\{x2});\par\noindent\hskip20pt
+\\{double}(\\{y0}); \
+\\{double}(\\{y1}); \
+\\{double}(\\{y2});\par\noindent\hskip20pt
+{\bf end}
+
+\noindent
+These corrections are needed only in the reprinting made July, 1987.]
+
+\bugonpage D248, in the July 1987 printing (4/7/89)
+
+\ninepoint\noindent
+[Delete line 16, which begins with `$d\gets\\{take\_fraction}$';
+and restore the following line (which was deleted by mistake after line 22):
+
+\noindent\hskip10pt
+{\bf if\/} $d<\\{alpha}$ {\bf then} $d\gets\\{alpha}$
+
+\noindent
+These corrections are needed only in the reprinting made July, 1987.]
+
+\bugonpage D389, line 10 (6/20/89)
+
+\ninepoint\noindent\hskip20pt
+\\{help1}({\tt\char'23
+The\]expression\]above\]should\]have\]been\]a\]number\]>=3/4.\char'23});
+
+\bugonpage D504, line 25 (8/31/89)
+
+\ninepoint\noindent\hskip10pt
+$\\{undump}(\\{lo\_mem\_stat\_max}+1)(\\{lo\_mem\_max})(\\{rover})$; \
+$p\gets\\{mem\_min}$; \ $q\gets\\{rover}$;
+
+\bugonpage D510, in the July 1987 printing (4/7/89)
+
+\ninepoint\noindent
+[Move the 7th-to-last line, which begins with `\\{internal}[\\{fontmaking}]',
+one line down, and indent it to the right by 10 more points.
+This correction is needed only in the reprinting made July, 1987.]
+
+ % volume E
+\hsize=29pc
+\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}}
+
+\bugonpage Exiii, bottom four lines (5/5/89)
+
+{\hsize=29pc \tenpoint
+\textindent\bull ``Metamarks: Preliminary studies for a Pandora's Box of
+shapes'' by Neenie Billawala,
+Stanford Computer Science Report 1256 (Stanford,
+California, May 1989), 132~pp. \ {\it Lavishly illustrated studies in
+parameter variation, leading to the design of a new family of
+typefaces called Pandora.}
+\par}
+
+\bugonpage E401, bottom line (5/16/89)
+
+\ninepoint\noindent
+{\bf \def\_{\kern.04em\vbox{\hrule width.3em height .6pt}\kern.08em}%
+math\_fit}$(-.3\\{cap\_height}\0*\\{slant}-.5u\0,\\{ic}\0)$;\par\noindent
+{\bf penlabels}$(1,2,3,4,5,6,7,8)$; {\bf endchar\/};
+\smallskip\noindent
+[some points and labels are missing at the tip of the tail on page 400]
+ \bye
+ Now here are some that I will make soon!
+
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errata6.tex b/Master/texmf-doc/doc/english/knuth/errata/errata6.tex
new file mode 100644
index 00000000000..ad7444d8600
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata6.tex
@@ -0,0 +1,528 @@
+% Bugs (sigh) in Computers \& Typesetting
+
+\input manmac
+\font\sltt=cmsltt10
+\font\niness=cmss9
+\font\ninessi=cmssi9
+\proofmodefalse
+\raggedbottom
+\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
+
+\def\today{\number\day\
+ \ifcase\month\or
+ Jan\or Feb\or Mar\or Apr\or May\or Jun\or
+ Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi
+ \ \number\year}
+
+\def\cutpar{{\parfillskip=0pt\par}}
+
+\def\rhead{Bugs in {\tensl Computers \& Typesetting, 1990}}
+\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
+\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
+\newcount\nn
+\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
+\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
+
+\tenpoint
+\noindent This is a list of all corrections made to {\sl Computers \&
+Typesetting}, Volumes A,~C, and E\null, between 30 September 1989 (when
+the revisions for \TeX\ Version 3.0 and \MF\ Version 2.0 were made) and
+December 31, 1990.
+Corrections made to the softcover version of {\sl The \TeX book\/} are
+the same as corrections to Volume~A\null. Corrections to the softcover
+version of {\sl The \slMF\kern1ptbook\/} are the same as corrections
+to Volume~C\null. Some of the corrections below have already been made in
+reprintings of the books. Hundreds of changes, too many to list here,
+have been made to Volumes B~and~D because of the upgrades to \TeX\ and
+\MF\null. Readers who need up-to-date information on the \TeX\ and
+\MF\ programs should refer to the |WEB| source files until new
+printings of Volumes B~and~D are issued. \looseness=-1
+
+ % volume A
+
+\bugonpage A99, line 4 from the bottom (2/22/90)
+
+\ninepoint\indent
+to be chosen because there was no feasible
+way to keep total demerits small.
+
+\bugonpage A124, lines 18--21 (9/5/90)
+
+\ninepoint\noindent
+Floating insertions can be accommodated
+as a special case of split insertions, by making each floating topinsert
+start with a small penalty, and by having
+zero as the associated |\floatingpenalty|; non-floating insertions
+like footnotes are accommodated by associating larger penalties with
+split insertions (see Appendix~B).
+
+\bugonpage A137, lines 2 and 3 from the bottom (11/9/90)
+
+{\eightssi
+\rightline{and you shouldn't even be reading this manual,}
+\rightline{which is undoubtedly all English to you.}
+}
+
+\bugonpage A141, line 15 from the bottom (10/18/90)
+
+\tenpoint\noindent
+Thus if you type `|$1\over2$|' (in a text) you get $1\over2$, namely style
+$S$ over style~$S'$;\cutpar
+
+\bugonpage A156, line 2 (11/18/89)
+
+\ninepoint
+Commands like |\mathchardef\alpha="010B| are used in
+Appendix~B to define\cutpar
+
+\bugonpage A165, lines 2--3 (8/13/90)
+
+\ninepoint
+ Type the formula $\bf\bar x^{\rm T}Mx={\rm0}\iff x=0$,
+using as few keystrokes as possible.
+\ (The first `0' is roman, the second is bold. The superscript `T' is roman.)
+
+\bugonpage A171, lines 24--26 (3/13/90)
+
+\ninepoint\noindent
+formula produces a result exactly equivalent to
+`|\left(|\<subformula>|\right)|', when the \<subformula> doesn't end
+with Punct, except that the {delimiters} are forced to
+be of the |\big| size regardless of the height and depth of the subformula.
+
+\bugonpage A193, lines 16--18 (12/2/89)
+
+\ninepoint\noindent
+line if you insert
+`^|\noalign||{|^|\break||}|'
+after the |\cr| for that line. You can prohibit {\sl all\/} breaks
+in an |\eqalignno| if you set ^|\interdisplaylinepenalty||=10000|; or you
+can enclose the whole works in a ^|\vbox|:
+
+\bugonpage A233, bottom 9 lines, and top three on next page (12/2/89)
+
+\danger The |\+| macro in Appendix~B works
+by putting the \<text> for each column that's followed by~|&|
+into an hbox as follows:
+\begindisplay
+|\hbox to |\<column width>|{|\<text>|\hss}|
+\enddisplay
+The ^|\hss| means that the text is normally flush left, and that it can
+extend to the right of its box. Since |\hfill| is ``more infinite'' than
+|\hss| in its ability to stretch, it has the effect of right-justifying or
+centering as stated above. Note that |\hfill| doesn't shrink, but |\hss|
+does; if the text doesn't fit in its column, it will stick out at the right.
+You could cancel the shrinkability of |\hss| by adding ^|\hfilneg|; then
+an oversize text would produce an overfull box.
+You could also center some text by putting `|\hss|' before it and just
+`|&|' after it; in that case the text would be allowed to extend to the
+left and right of its column.
+ The last column of a |\+|~line (i.e., the column entry that is
+followed by |\cr|) is treated differently: The
+\<text> is simply put into an hbox with its natural~width.\looseness=-1
+
+\bugonpage A254, line 5 from the bottom (10/5/89)
+
+\ninepoint\noindent
+|\vsize| hasn't changed, and if all insertions have been
+held in place, the same page break\cutpar
+
+\bugonpage A286, lines 30--32 (3/13/90)
+
+\ninepoint\noindent
+reading and expanding this \cstok{par}
+token, \TeX\ will see the \<vertical command> token again. \ (The current
+meaning of the control sequence ^|\par| will be used; \cstok{par} might no
+longer stand for \TeX's |\par| primitive.)
+
+\bugonpage A290, lines 12--13 (3/24/90)
+
+\ninepoint\noindent
+simply a single Ord atom without subscripts or superscripts,
+or an Acc whose nucleus is an Ord, the
+enclosing braces are effectively removed.
+
+\bugonpage A317, line 17 (5/17/90)
+
+\ninepoint
+|\pretolerance=9999 \tolerance=9999 \parindent=0pt|
+
+\bugonpage A321, lines 16--17 (8/13/90)
+
+\ninepoint\noindent
+\hbox to\parindent{\bf\hss18.6.\enspace}\ignorespaces
+|$\bf\bar x^{\rm T}Mx={\rm0}\iff x=0$|. \ (If you typed a space between
+|\rm| and~|0|, you wasted a keystroke; but don't feel guilty about it.)
+
+\bugonpage A340, nonblank line 11 (3/13/90)
+
+\tenpoint\noindent
+|\topglue 1in % This makes an inch of blank space (1in=2.54cm).|
+
+\bugonpage A342, line 6 (3/13/90)
+
+\tenpoint\noindent
+|\topglue| but not |\hglue|. It does not
+illustrate |\raggedright| setting of para-\cutpar
+
+\bugonpage A346, lines 20--21 (12/3/89)
+
+\ninepoint\noindent
+streams used by ^|\read| and ^|\write|, to math
+^{families} used by ^|\fam|, to sets of hyphenation rules used by
+^|\language|, and to insertions (which require
+^|\box|, ^|\count|, ^|\dimen|, and ^|\skip| registers all having the
+same number).
+
+\bugonpage A346, line 20 from the bottom (12/3/89)
+
+\ninepoint\noindent
+manent value. These macros use registers
+|\count10| through |\count20| to hold the\cutpar
+
+\bugonpage A346, lines 8--13 from the bottom (12/3/89)
+
+\ninepoint\noindent
+number was allocated. The inside story of how allocation is actually performed
+should be irrelevant when the allocation macros are used at a higher level;
+you mustn't assume that |plain.tex| really does allocation in any
+particular way.
+\beginlines
+|\count10=22 % this counter allocates \count registers 23, 24, 25, ...|
+\endgroup
+
+\bugonpage A347, lines 2--5 (12/3/89)
+
+\ninepoint{\parindent=0pt
+|\count19=0 % this counter allocates language codes 1, 2, 3, ...|\parbreak
+|\count20=255 % this counter allocates insertions 254, 253, 252, ...|\parbreak
+|\countdef\insc@unt=20 % nickname for the insertion counter|\parbreak
+|\countdef\allocationnumber=21 % the most recent allocation|\parbreak
+|\countdef|^|\m@ne||=22 \m@ne=-1 % a handy constant|\par}
+
+\bugonpage A347, new line after former line 17 (12/3/89)
+
+\ninepoint\noindent
+|\outer\def|^|\newlanguage||{\alloc@9\language\chardef\@cclvi}|
+
+\bugonpage A352, new line before line 6 from the bottom (3/13/90)
+
+\ninepoint\noindent
+|\def\topglue{\nointerlineskip \vglue-\topskip \vglue} % for top of page|
+
+\bugonpage A355, line 8 from the bottom (12/3/89)
+
+\ninepoint\noindent
+| \noindent{\bf#1.\enspace}{\sl#2\par}%|
+
+\bugonpage A363, lines 8--9 from the bottom (12/8/89)
+
+{\ninepoint\parindent=0pt
+| \if@mid \dimen@=\ht0 \advance\dimen@ by\dp\z@ |%
+ |\advance\dimen@ by12\p@|\parbreak%
+| \advance\dimen@ by\pagetotal \advance\dimen@ by-\pageshrink|
+\par}
+
+\bugonpage A375, line 27 (10/30/89)
+
+\ninepoint\noindent
+depending on whether or not |\t|~contains
+an asterisk. \ (Do you see why?) \ And here's\cutpar
+
+\bugonpage A393, lines 3--5 from the bottom (12/3/89)
+
+\ninepoint
+|\hskip-.17em plus-3em minus.11em|\par
+|\vadjust{}\penalty10000|\par
+|\leaders\copy\dbox\hskip3.3\wd\dbox plus1fil minus.3\wd\dbox|
+
+\bugonpage A444, line 4 (3/13/90)
+
+\ninepoint\noindent
+Shift box~$x$ down by ${1\over2}\bigl(h(x)-d(x)\bigr)
+-a$, where $a=\sigma_{22}$, so that the operator character\cutpar
+
+\bugonpage A450, line 8 (12/3/89)
+
+\def\\#1{$_{\kern\scriptspace#1}$}
+\ninepoint\indent
+{\qquad\tt\\0h\\0e\\0n\\5a\\0t\\0 \\1n\\0a\\0 \\0n\\2a\\0t\\0
+ \\1t\\0i\\0o\\0 \\2i\\0o\\0 \\0o\\2n\\0}
+
+\bugonpage A450, line 14 (12/3/89)
+
+\ninepoint
+{\tt.\\0h\\0y$_3$p\\0h\\0e\\2n\\5a\\4t\\2i\\0o\\2n\\0.}
+
+\bugonpage A450, lines 19 and 20 (12/3/89)
+
+\ninepoint\vskip-10pt
+\begindisplay
+\tt\\0o\\2n\\0
+\\0o\\0n\\1c\\0
+\\1c\\0a\\0
+\\1n\\0a\\0
+\\0n\\2a\\0t\\0
+\\1t\\0i\\0o\\0
+\\2i\\0o\\0
+\\0o\\2n\\0
+\enddisplay
+and this yields `{\tt\\0c\\0o\\2n\\1c\\0a\\0t\\0e\\1n\\2a\\1t\\2i\\0o\\2n\\0}',
+i.e., `|con-cate-na-tion|'.
+
+\bugonpage A455, last lines before the quotes (11/30/89)
+
+\ninepoint\noindent
+sit yourself (even in restricted horizontal mode) by saying
+^|\setlanguage|\<number>;\break
+ this changes the current language but it
+does not change |\language|. Each what-\break
+sit records the current
+|\lefthyphenmin| and |\righthyphenmin|.
+
+\bugonpage A467, right column (12/3/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\hfilneg|, 72, 100, 233, 283, 285, 290, 397.
+
+\bugonpage A468, right column (12/2/89)
+
+\eightpoint
+|\interdisplaylinepenalty|, {\it193}, 349, 362.
+
+\bugonpage A469, left column (12/3/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\language| (hyphenation method), 273, 346, $\underline{455}$.
+
+\bugonpage A469, right column (10/30/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\lefthyphenmin|, 273, {\it364}, $\underline{454}$, 455.
+
+\bugonpage A472, left column (12/3/89)
+
+\eightpoint
+|\newlanguage|, 346, $\underline{347}$.
+
+\bugonpage A476, left column (10/30/89)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+|\righthyphenmin|, 273, {\it364}, $\underline{454}$, 455.
+
+\bugonpage A479, new entry (3/13/90)
+
+\eightpoint
+|\topglue|, {\it340}, $\underline{352}$.
+
+\bugonpage A480, right column (3/13/90)
+
+\eightpoint
+|\vglue|, $\underline{352}$, {\it408}.
+
+\bugonpage A483, the Providence lines (10/8/89)
+
+\noindent[Change the first one to
+\begintt
+Providence RI 02940\kern.05em-9506, USA.
+\endtt
+Then the second one will be
+\begindisplay
+Providence RI 02940\kern.05em-9506, USA.
+\enddisplay
+The second line will also appear on page C361.]
+
+ % volume B
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+
+ % volume C
+\hsize=29pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+
+\bugonpage C11, replacement for second quotation at bottom of page (9/27/90)
+
+\begingroup
+ \eightpoint \let\tt=\ninett
+ \baselineskip 10pt
+ \parfillskip \z@
+ \interlinepenalty 10000
+ \leftskip \z@ plus 40pc minus \parindent
+ \let\rm=\eightss \let\sl=\eightssi
+ \everypar{\sl}
+ \def\par{\ifhmode\/\endgraf\fi}\obeylines
+To anyone who has lived in a modern American city (except Boston)
+at least one of the underlying ideas of ^{Descartes}' analytic geometry
+will seem ridiculously evident. Yet, as remarked,
+it took mathematicians all of two thousand years
+to arrive at this simple thing.
+\author ERIC TEMPLE ^{BELL}, {\sl Mathematics: Queen and Servant of %
+ Science\/} (1951) % p123
+
+\endgroup
+
+\bugonpage C220, top line (3/13/90)
+
+\ninepoint\noindent
+modes you get into by hitting
+`|S|', `|R|', or `|Q|', respectively, in response to error messages\cutpar
+
+\bugonpage C252, line 16 (3/13/90)
+
+\ninepoint\indent
+| for i:=1 upto n_windows: display blankpicture inwindow i; endfor|
+
+\bugonpage C262, lines 19--21 (11/9/90)
+
+\ninepoint\noindent
+for commonly occurring idioms.
+For example, `{\bf stop} |"hello"|' displays `|hello|' on the terminal and waits
+until \<return> is typed.
+\beginlines
+|def |^|upto|| = step 1 until enddef; def |^|downto|| = step -1 until enddef;|
+\endgroup
+
+\bugonpage C264, lines 4--6 from the bottom (3/24/90)
+
+\ninepoint\noindent
+|vardef |^|counterclockwise|| primary c =|\par\noindent
+| if turningcheck>0:|\par\noindent
+| interim |^|autorounding||:=0;|\par\noindent
+| if |^|turningnumber|| c <= 0: reverse fi fi c enddef;|
+
+\bugonpage C306, line 6 (3/13/90)
+
+\ninepoint\noindent
+| ligtable "'": "'" =: oct"042", % close quotes|
+
+\bugonpage C309, second line from bottom (11/18/89)
+
+\ninepoint\noindent
+| define_whole_vertical_blacker_pixels(vair,slab,| $\cdots$ |);|
+
+\bugonpage C315, line 9 from the bottom (1/2/90)
+
+\ninepoint\noindent
+units of printer's points):
+
+\bugonpage C329, line 25 (12/29/90)
+
+\ninepoint\noindent
+which can be used to specify a nonstandard file area
+or directory name for the gray\cutpar
+
+\bugonpage C337, line 4 from the bottom (1/7/90)
+
+\ninepoint\noindent
+|\def\startfont{\font\testfont=\fontname \spaceskip=0pt|
+
+\bugonpage C347, left column (9/27/90)
+
+\eightpoint\noindent
+Bell, Eric Temple, 11.
+
+\bugonpage C349, left column (9/27/90)
+
+\eightpoint\noindent
+Descartes, Ren\'e, 6, 11, 19.
+
+\bugonpage C356, right column (9/27/90)
+
+\eightpoint\noindent
+[remove the entry for Rex Stout.]
+
+\bugonpage C358, right column (9/27/90)
+
+\eightpoint\noindent
+[remove the entry for Nero Wolfe.]
+
+ % Volume D
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+ % volume E
+\hsize=29pc
+\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}}
+
+\bugonpage Exiii, replacement for last four lines (4/30/90)
+
+\textindent{\bull}``AMS Euler---A new typeface for mathematics''
+ by Donald~E. Knuth
+and Hermann Zapf, {\sl Scholarly Publishing\/ \bf21} (1989), 131--157.
+\ {\it The story of a design project that helps bridge the gulf between
+mathematics and art.}
+
+\smallskip
+\textindent{\bull}``Meta-Marks:
+ Preliminary studies for a Pandora's Box of shapes''
+by Neenie Billawala, Stanford Computer Science report 1259 (Stanford,
+California, July 1989), 132~pp.
+\ {\it Lavishly illus\-trated studies in parameter variation,
+leading to the design of a new typeface called Pandora.}
+
+
+
+\bugonpage E325, line 13 (3/13/90)
+
+\ninepoint\noindent
+{\bf if} \\{serifs}: $x_{3r}=\max(x_{1r},{\rm hround}(x_1+.5\\{dot\_diam}
+ -.2\\{jut})-.5\\{tiny})$\par\noindent
+{\bf else}: $x_3=x_1-.5$ {\bf fi};
+
+\bugonpage E483, line 4 (3/13/90)
+
+\ninepoint
+\rightline{\% Character codes \oct{000}--\oct{100} and \oct{133}--\oct{177}
+ are generated.}
+
+\bugonpage E544, line 5 (3/13/90)
+
+\ninepoint\noindent
+\hskip 3em\vdots\hskip2em\raise2pt\hbox{(the rest of the
+ program for `$\gamma$' in |greekl| comes here)}
+
+\bugonpage E557, line 9 (3/13/90)
+
+\ninepoint
+\rightline{\sl`Nevermore---Ah nevermore.'\thinspace''}
+
+\bugonpage E558, line 21 (3/13/90)
+
+\eightpoint\noindent
+|Clasp a rare and radiant maiden whom the angels name Lenore."|
+
+\bugonpage E570, lines 27--28 look better with proper skewchars (3/13/90)
+
+\begingroup
+\tenpoint\bf
+\textfont0=\tenbf \scriptfont0=\sevenbf
+\font\boldi=cmmib10 \font\boldsy=cmbsy10
+\skewchar\boldi='177 \skewchar\boldsy='60
+\textfont1=\boldi
+\textfont2=\boldsy
+\noindent Here's some bold 10-point math:
+${\hat A}^\Gamma_0
++{\check B}^\Delta_1
+-{\tilde C}^\Theta_2
+\times{\acute D}^\Lambda_3
+/{\grave E}^\Xi_4
+\oplus{\dot F}^\Pi_5
+\ominus{\ddot G}^\Sigma_6
+\otimes{\breve H}^\Phi_7
+\oslash{\bar I}^\Psi_8
+\odot{\vec J}^{\,\Omega}_9$.
+\endgroup
+
+ \bye
+
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errata7.tex b/Master/texmf-doc/doc/english/knuth/errata/errata7.tex
new file mode 100644
index 00000000000..0866189da51
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata7.tex
@@ -0,0 +1,821 @@
+% Bugs (sigh) in Computers \& Typesetting
+
+\input manmac
+\font\sltt=cmsltt10
+\font\niness=cmss9
+\font\ninessi=cmssi9
+\proofmodefalse
+\raggedbottom
+\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
+
+\def\today{\number\day\
+ \ifcase\month\or
+ Jan\or Feb\or Mar\or Apr\or May\or Jun\or
+ Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi
+ \ \number\year}
+
+\def\cutpar{{\parfillskip=0pt\par}}
+
+\def\rhead{Bugs in {\tensl Computers \& Typesetting, 1991}}
+\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
+\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
+\newcount\nn
+\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
+\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
+
+\tenpoint
+\noindent This is a list of all corrections made to {\sl Computers \&
+Typesetting}, Volumes A,~B, C, and D\null, between 1 January 1991 and
+15 March 1992.
+Corrections made to the softcover version of {\sl The \TeX book\/} are
+the same as corrections to Volume~A\null. Corrections to the softcover
+version of {\sl The \slMF\kern1ptbook\/} are the same as corrections
+to Volume~C\null. Some of the corrections below have already been made in
+reprintings of the books. Changes to Volume~B refer to the fourth printing
+(1991), which differs markedly from earlier printings because it includes
+all the revisions for \TeX3.0. Changes to Volume~D refer to the third
+printing (1991), which differs markedly from earlier printings because
+it includes all the revisions for \MF\kern1pt2.0. Changes to the mini-indexes
+and master indexes of Volumes B and~D are not shown here unless they are
+not obviously derivable from what has been shown.
+Dozens of changes, too many to list
+here, have been made to Volume~E because of recent upgrades to the
+Computer Modern font source files.
+Those changes, which affect only the digitization at
+low resolution and the appearance of lowercase delta and
+some characters in the math symbols
+fonts (but not the {\tt TFM} files), are documented at
+the end of file {\tt cm85.bug}.
+\looseness=-1
+
+ % volume A
+
+\bugonpage A96, lines 9--11 (9/18/91)
+
+\ninepoint
+Some ^{German} words traditionally change their spelling
+when they are split between lines. For example, `backen' becomes `bak-ken'
+and `Bettuch' becomes `Bett-tuch'. How can you instruct \TeX\ to produce
+such effects?
+
+\bugonpage A178, line 17 (11/19/91)
+
+\ninepoint
+If you say `|\phantom{|\<subformula>|}|' in any formula, plain
+\TeX\ will do its\cutpar
+
+\bugonpage A286, bottom two lines and continuing into A287 (11/21/91)
+
+\ninepoint\noindent
+stands for zero or more \<assignment>
+commands other than |\setbox|.
+If the assignments are not followed by a \<character>, where
+\<character> stands for any of the commands just discussed in the previous
+paragraph, \TeX\ treats |\accent| as if it were |\char|, except that
+the space factor is set to 1000. Otherwise the character that follows
+the assignment is accented by the character that corresponds to the
+\<8-bit number>. \ (The purpose of the intervening assignments is to
+allow the accenter and accentee to be in different fonts.) \ If the
+accent must be moved up or down, it is put into an hbox that is
+raised or lowered. Then the accent is effectively superposed on the
+character by means of kerns, in such a way that the width of the accent
+does not influence the width of the resulting horizontal list.
+Finally, \TeX\ sets |\spacefactor=1000|.
+
+\bugonpage A291, lines 6--8 (11/21/91)
+
+\ninepoint\noindent
+`|}|' may be followed by
+optional \<assignment> commands other than |\setbox|,
+after which `|$$|'~must conclude
+the display. \TeX\ will insert the |\abovedisplayskip| and
+|\belowdisplayskip| glue before and after the result of the alignment.
+
+\bugonpage A293, line 14 (9/18/91)
+
+\ninepoint\noindent
+explained in Appendix~G\null. \TeX\
+scans \<one optional space> after completing a displayed formula; this is
+usually the implicit space at the end of a line in the input file.
+
+\bugonpage A311, bottom four lines (9/18/91)
+
+\ninepoint
+\ansno12.7: 1000, except: 999 after |O|, |B|, |S|, |D|, and |J|; 1250 after the
+comma; 3000 after the exclamation point, the right-quote marks, and the
+periods. If a period had come just after the |B| (i.e., if the text had
+said `|B. Sally|'), the space factor after that period would have
+been~1000, not~3000.
+
+\bugonpage A314, lines 16--18 from the bottom (1/10/92)
+
+\ninepoint
+\ansno14.8: |ba\ck/en| and |Be\ttt/uch|, where the macros |\ck/| and |\ttt/|
+are defined by
+\begintt
+\def\ck/{\discretionary{k-}{k}{ck}}
+\def\ttt/{tt\discretionary{-}{t}{}}
+\endtt
+
+\bugonpage A354, line 8 (9/18/91)
+
+\ninepoint\noindent
+|\def\multispan#1{\omit\mscount=#1\relax\loop\ifnum\mscount>1 \sp@n\repeat}|%
+\kern-10pt\null
+
+\bugonpage A356, line 11 from the bottom (9/23/91)
+
+\ninepoint\noindent
+| \else{\ooalign{\unhbox0\crcr\hidewidth\char'30\hidewidth}}\fi}|
+
+\bugonpage A358, line 8 from the bottom (9/18/91)
+
+\ninepoint\noindent
+|\mathchardef\mapstochar="3237 \def\mapsto{\mapstochar\rightarrow}|
+
+\bugonpage A359, line 13 (11/4/91)
+
+\ninepoint\noindent
+|\def\overrightarrow#1{\vbox{\m@th\ialign{##\crcr|
+
+\bugonpage A359, line 16 (11/4/91)
+
+\ninepoint\noindent
+|\def\overleftarrow#1{\vbox{\m@th\ialign{##\crcr|
+
+\bugonpage A359, line 19 (11/4/91)
+
+\ninepoint\noindent
+|\def\overbrace#1{\mathop{\vbox{\m@th\ialign{##\crcr\noalign{\kern3pt}|
+
+\bugonpage A359, line 22 (11/4/91)
+
+\ninepoint\noindent
+|\def\underbrace#1{\mathop{\vtop{\m@th\ialign{##\crcr|
+
+\bugonpage A359, lines 7--14 from the bottom (1/11/92)
+
+\ninepoint\noindent
+|\def\lgroup{\delimiter"462833A } \def\rgroup{\delimiter"562933B }|%
+\par\noindent
+|\def\lmoustache{\delimiter"437A340 } \def\rmoustache{\delimiter"537B341 }|%
+ \kern-2pt\null\par\noindent
+|\def\uparrow{\delimiter"3222378 } \def\Uparrow{\delimiter"322A37E }|%
+\par\noindent
+|\def\downarrow{\delimiter"3223379 } \def\Downarrow{\delimiter"322B37F }|%
+\par\noindent
+|\def\updownarrow{\delimiter"326C33F } \def\arrowvert{\delimiter"026A33C }|%
+\par\noindent
+|\def\Updownarrow{\delimiter"326D377 } \def\Arrowvert{\delimiter"026B33D } |%
+\par\noindent
+|\def\vert{\delimiter"026A30C } \def\Vert{\delimiter"026B30D } |%
+\par\noindent
+|\def\backslash{\delimiter"026E30F } \def\bracevert{\delimiter"077C33E }|
+
+\bugonpage A360, line 13 (11/19/91)
+
+\ninepoint\noindent
+|\phantom|, |\smash|, |\root|, and other
+operations. (Actually |\phantom| and |\smash| are not perfect: They
+assume that the current style is uncramped.)
+
+\bugonpage A360, line 2 from the bottom (11/4/91)
+
+\ninepoint\noindent
+|\def\c@ncel#1#2{\m@th\ooalign{$\hfil#1\mkern1mu/\hfil$\crcr$#1#2$}}|
+
+\bugonpage A361, top line (11/4/91)
+
+\ninepoint\noindent
+|\def\rlh@#1{\vcenter{\m@th\hbox{\ooalign{\raise2pt|
+
+\bugonpage A364, line 5 from the bottom (11/4/91)
+
+\ninepoint\noindent
+|\def|^|\fmtname||{plain}\def\fmtversion{3.141}|
+
+\bugonpage A377, the bottom 17 lines (9/18/91)
+
+\eightpoint\noindent\hangindent\parindent\hangafter-3
+story: Macro |\stest| decides whether or not
+a given token list register begins with
+a \<space token> as defined in Chapter~24. If so, the macro
+decides whether the token is explicit and/or funny and/or active.
+\begintt
+\newif\ifspace \newif\iffunny \newif\ifexplicit \newif\ifactive
+\def\stest#1{\funnyfalse \expandafter\s\the#1! \stest}
+\def\s{\global\explicitfalse \global\activefalse \futurelet\next\ss}
+\def\ss{\ifcat\noexpand\next\stoken\let\nxt\sx\else\let\nxt\ns\fi\nxt}
+\def\sx{\spacetrue\ifx\next\stoken\let\nxt\sss\else\let\nxt=\ssss\fi\nxt}
+\long\def\sss#1 #2\stest{\def\next{#1}%
+ \ifx\next\empty \global\explicittrue \else\testactive#1\s\fi}
+\long\def\ssss#1#2\stest{\funnytrue{\escapechar=\if*#1`?\else`*\fi\relax
+ \if#1\string#1\uccode`#1=`~ % we assume that ~ is an active character
+ \uppercase{\ifcat\noexpand#1}\noexpand~\global\activetrue
+ \else\global\explicittrue\fi
+ \else\testactive#1\s\fi}}
+\long\def\ns#1\stest{\spacefalse}
+\long\def\testactive#1#2\s{\expandafter\tact\string#1\s\tact}
+\long\def\tact#1#2\tact{\def\next{#2}\ifx\next\xs\global\activetrue
+ \else\ifx\next\empty \global\activetrue\fi\fi} \def\xs{\s}
+\endtt
+
+\bugonpage A444, lines 15--26 (3/26/91)
+
+\ninepoint
+\textindent{\bf14.}If the current item is an Ord atom,
+go directly to Rule~17 unless
+all of the following are true: The nucleus is a symbol; the subscript
+and superscript are both empty; the very next item in the math list is an
+atom of type Ord, Op, Bin, Rel, Open, Close, or Punct; and the nucleus of the
+next item is a symbol whose family is the same as the family in the present
+Ord atom. In such cases the present symbol is marked as a text symbol.
+If the font information shows a ligature between this symbol and the
+following one, using the specified family and the current size, then
+insert the ligature character and continue as specified by the font;
+in this process, two characters may collapse into a single Ord
+text symbol, and/or new Ord text characters may appear. If the font information
+shows a kern between the current symbol and the next, insert a kern item
+following the current atom.
+As soon as an Ord atom has been fully processed for ligatures and kerns,
+go to Rule~17.
+
+\bugonpage A446, lines 5 and 6 from the bottom (1/13/92)
+
+\ninepoint\noindent
+are used to change the current style just as
+in the first pass, so that both passes have the same value of~$C$ when
+they work on any particular atom.
+
+\bugonpage A447, in the parameter usage table (1/13/92)
+
+\ninepoint\noindent[Delete the entry for `$\sigma_2$'; the entry for
+`$\sigma_{17}$' moves down to the bottom of the left column.]
+
+\bugonpage A447, line 2 after the parameter usage table (1/13/92)
+
+\ninepoint\noindent
+to parameters in arbitrary families:
+Rule~17 uses |\fontdimen| parameter~2 (space) to de-\cutpar
+
+\bugonpage A467, entry for {\tt\char`\\hss} (9/18/91)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt\char`\\hss}, 71--72, {\it82--83}, 233, 283, 285, 290, 442.
+
+\bugonpage A467, new subentry under hyphenation (9/18/91)
+
+\eightpoint\indent\quad
+suppressing, 93, 414, 424, 454.
+
+\bugonpage A476, right column (11/21/91)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt\char`\\setbox}, 66--67, 77, 81, $\underline{120}$, 276, 279, 286,\par
+\indent\qquad 291, {\it386--392}.
+
+ % volume B
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\bugonpage B2, line 10 from the bottom (1/11/92)
+
+\ninepoint\noindent\hskip10pt
+{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
+{\tt This\]is\]TeX,\]Version\]3.141\char'23}\quad
+$\{\,$printed when \TeX\ starts$\,\}$
+
+\bugonpage B18, lines 21 and 22 (10/12/91)
+
+\tenpoint\noindent
+must have an \\{xchr} equivalent in the local
+character set. (This restriction applies only to preloaded strings,
+not to those generated dynamically by the user.)
+
+\bugonpage B26, new line before fourth line from bottom (1/24/92)
+
+\ninepoint\noindent\hskip20pt
+\\{nl}: \\{integer};\quad$\{\,$new-line character to restore$\,\}$
+
+\bugonpage B26, bottom line and top 3 lines of B27 (1/24/92)
+
+\ninepoint\noindent\hskip30pt
+{\bf else begin if\/} $\\{selector}>\\{pseudo}$ {\bf then}\par
+\noindent\hskip50pt
+{\bf begin} \\{print\_char}($s$); \ {\bf return};\quad
+ $\{\,$internal strings are not expanded$\,\}$\par\noindent\hskip50pt
+{\bf end};\par\noindent\hskip40pt
+{\bf if\/} ($\langle\,$Character $s$ is the current new-line
+ character{\sevenrm\kern.5em244}$\,\rangle$) {\bf then}\par\noindent\hskip50pt
+{\bf if\/} $\\{selector}<\\{pseudo}$ {\bf then}\par\noindent\hskip60pt
+{\bf begin} \\{print\_ln}; \ {\bf return}; \
+{\bf end};\par\noindent\hskip40pt
+$\\{nl}\gets\\{new\_line\_char}$; \ $\\{new\_line\_char}\gets-1$;\quad
+ $\{\,$temporarily disable new-line character$\,\}$\par\noindent\hskip40pt
+$j\gets\\{str\_start}[s]$;\par\noindent\hskip40pt
+{\bf while} $j<\\{str\_start}[s+1]$ {\bf do}\par\noindent\hskip50pt
+{\bf begin} $\\{print\_char}(\\{so}(\\{str\_pool}[j]))$; \ $\\{incr}(j)$; \
+{\bf end};\par\noindent\hskip40pt
+$\\{new\_line\_char}\gets\\{nl}$; \ {\bf return};\par\noindent\hskip40pt
+{\bf end};
+
+\bugonpage B27, lines 9 and 10 (9/19/91)
+
+\tenpoint\noindent
+{\bf 60.\quad}%
+Control sequence names, file names, and strings constructed with
+{\tt\char`\\string} might contain \\{ASCII\_code} values that can't
+be printed using \\{print\_char}. Therefore we use
+\\{slow\_print} for them:
+
+\bugonpage B27, lines 13--26 (1/24/92)
+
+\ninepoint\noindent\hskip10pt
+{\bf var} $j$: \\{pool\_pointer};\quad$\{\,$current character code
+ position$\,\}$\par\noindent\hskip10pt
+{\bf begin if\/} $(s\ge\\{str\_ptr})\lor(s<256)$ {\bf then} \\{print}(s)
+\par\noindent\hskip10pt {\bf else begin} $j\gets\\{str\_start}[s]$;\par
+\noindent\hskip20pt{\bf while} $j<\\{str\_start}[s+1]$ {\bf do}\par
+\noindent\hskip30pt{\bf begin} $\\{print}(\\{so}(\\{str\_pool}[j]))$; \
+ $\\{incr}(j)$;\par\noindent\hskip30pt
+{\bf end};\par\noindent\hskip20pt
+{\bf end};\par\noindent\hskip10pt
+{\bf end};
+
+\bugonpage B28, line 8 (9/19/91)
+
+\ninepoint\noindent\hskip10pt
+{\bf else begin} \\{slow\_print}(\\{format\_ident}); \ \\{print\_ln};
+
+\bugonpage B33, line 3 (1/11/92)
+
+\tenpoint\noindent
+recursively. A similar interlock is provided by \\{set\_box\_allowed}.
+
+\bugonpage B33, new line to come after line 14 (1/11/92)
+
+\ninepoint\noindent
+\\{set\_box\_allowed}: \\{boolean};\quad
+ $\{\,$is it safe to do a |\setbox| assignment?$\,\}$
+
+\bugonpage B33, new line to come after line 20 (1/11/92)
+
+\ninepoint\noindent\hskip10pt
+$\\{set\_box\_allowed}\gets\\{true}$;
+
+\bugonpage B36, line 12 (9/19/91)
+
+\ninepoint\noindent\hskip30pt
+{\bf begin} \\{print\_nl}({\tt\char`\"You\]want\]to\]edit\]file\]\char`\"});
+ \ \\{slow\_print}(\\{input\_stack}[\\{base\_ptr}].\\{name\_field});
+
+\bugonpage B46, lines 9 and 10 (5/24/91)
+
+\tenpoint\noindent
+arithmetic; see {\sl TUGboat \bf3},1 (March 1982), 10--27. (But the
+routines cited there must be modified to allow negative glue ratios.)
+
+\bugonpage B47, lines 2 and 3 (5/24/91)
+
+\tenpoint\noindent
+structures on a \\{memory\_word}, which contains either a (signed) integer,
+possibly scaled, or a (signed) \\{glue\_ratio}, or a small number of
+fields that are one half or one quarter of the size used\cutpar
+
+\bugonpage B177, lines 10 and 11 (9/19/91)
+
+\ninepoint\noindent\hskip20pt
+{\bf begin} \\{print\_err}({\tt\char`\"Bad\]mathchar\char`\"});\par
+\noindent\hskip20pt
+\\{help2}({\tt\char`\"A\]mathchar\]number\]must\]be\]between\]0\]%
+ and\]32767.\char`\"})
+
+\bugonpage B196, new lines after line 11 (1/13/92)
+
+\ninepoint\noindent\hskip20pt
+{\bf if\/} $\\{align\_state}<1000000$ {\bf then}\quad
+ $\{\,$unmatched `|}|' aborts the line$\,\}$\par\noindent\hskip30pt
+{\bf begin repeat} \\{get\_token}; \ {\bf until} $\\{cur\_tok}=0$;\par
+\noindent\hskip30pt$\\{align\_state}\gets1000000$; \ {\bf goto} \\{done};\par
+\noindent\hskip30pt{\bf end};
+
+\bugonpage B208, line 21 (9/19/91)
+
+\ninepoint\noindent\hskip10pt
+{\bf begin} \\{slow\_print}($a$); \ \\{slow\_print}($n$); \
+ \\{slow\_print}($e$);
+
+\bugonpage B214, line 14 (9/19/91)
+
+\ninepoint\noindent\hskip10pt
+{\bf begin} \\{wlog}(\\{banner}); \\{slow\_print}(\\{format\_ident}); \
+ \\{print}({\tt\char`\"\]\]\char`\"}); \
+ \\{print\_int}(\\{day}); \
+ \\{print\_char}({\tt\char`\"\]\char`\"});
+
+\bugonpage B214, line 2 from the bottom (9/19/91)
+
+\ninepoint\noindent\hskip10pt
+\\{print\_char}({\tt\char`\"(\char`\"}); \
+\\{incr}(\\{open\_parens}); \
+\\{slow\_print}(\\{name}); \
+\\{update\_terminal}; \
+$\\{state}\gets\\{new\_line}$;
+
+\bugonpage B234, line 22 (9/19/91)
+
+\ninepoint\noindent\hskip20pt
+\\{print}({\tt\char`\"\]in\]font\]\char`\"}); \
+\\{slow\_print}(\\{font\_name}[$f$]); \
+\\{print\_char}({\tt\char`\"!\char`\"}); \
+\\{end\_diagnostic}(\\{false});
+
+\bugonpage B267, lines 7 and 8 (9/19/91)
+
+\ninepoint\noindent\hskip20pt
+\\{print\_nl}({\tt\char`\"Output\]written\]on\]\char`\"}); \
+\\{slow\_print}(\\{output\_file\_name});\par\noindent\hskip20pt
+\\{print}({\tt\char`\"\](\char`\"}); \
+\\{print\_int}(\\{total\_pages}); \
+\\{print}({\tt\char`\"\]page\char`\"});
+
+\bugonpage B296, new lines after line 8 of section 716 (1/11/92)
+
+\ninepoint\noindent\hskip10pt
+{\bf if\/} $f<0$ {\bf then}\par\noindent\hskip20pt
+{\bf begin} \\{decr}($n$); \ $f\gets f+\oct{200000}$;\par\noindent\hskip20pt
+{\bf end};
+
+\bugonpage B297, new lines after line 7 of section 717 (1/11/92)
+
+\ninepoint\noindent\hskip20pt
+{\bf if\/} $f<0$ {\bf then}\par\noindent\hskip30pt
+{\bf begin} \\{decr}($n$); \ $f\gets f+\oct{200000}$;\par\noindent\hskip30pt
+{\bf end};
+
+\bugonpage B348, bottom two lines (1/3/92)
+
+\tenpoint\noindent\hskip10pt
+Up to three passes might be made through the paragraph in an attempt to find at
+least one set of feasible breakpoints. On the first pass, we have
+$\\{threshold}=\\{pretolerance}$ and $\\{second\_pass}=$\cutpar
+
+\bugonpage B364, line 20 (1/3/92)
+
+\tenpoint\noindent
+{\bf 863.\quad}
+The `{\bf loop}' in the following code is performed at most
+thrice per call of \\{line\_break}, since\cutpar
+
+\bugonpage B377, insert new line after line 12 (9/19/91)
+
+\ninepoint\noindent
+\\{hyf\_bchar}:\enspace\\{halfword};\quad
+ $\{\,$boundary character after $c_n\,\}$
+
+\bugonpage B378, line 12 from the bottom (9/19/91)
+
+\ninepoint\noindent\hskip30pt
+$\\{hyf\_bchar}\gets\\{character}(s)$; \
+$c\gets\\{qo}(\\{hyf\_bchar})$;
+
+\bugonpage B378, line 9 from the bottom (1/10/92)
+
+\ninepoint\noindent\hskip30pt
+$\\{hb}\gets s$; \ \\{incr}(\\{hn}); \ $\\{hu}[\\{hn}]\gets c$; \
+$\\{hc}[\\{hn}]\gets\\{lc\_code}(c)$; \
+$\\{hyf\_bchar}\gets\\{non\_char}$;
+
+\bugonpage B378, line 5 from the bottom (9/19/91)
+
+\ninepoint\noindent\hskip30pt
+{\bf else if} $(\\{type}(s)=\\{kern\_node})\land(\\{subtype}(s)=\\{normal})$
+ {\bf then} $\\{hb}\gets s$\par\noindent\hskip40pt
+ {\bf else goto} \\{done3};
+
+\bugonpage B379, line 6 (9/19/91)
+
+\ninepoint\noindent\hskip10pt
+$j\gets\\{hn}$; \ $q\gets\\{lig\_ptr}(s)$; \
+{\bf if\/} $q>\\{null}$ {\bf then} $\\{hyf\_bchar}\gets\\{character}(q)$;
+
+\bugonpage B379, new line between lines 14 and 15 (1/10/92)
+
+\ninepoint\noindent\hskip10pt
+{\bf if\/} $\\{odd}(\\{subtype}(s))$ {\bf then}
+$\\{hyf\_bchar}\gets\\{font\_bchar}[\\{hf}]$ {\bf else}
+$\\{hyf\_bchar}\gets\\{non\_char}$;
+
+\bugonpage B379, line 19 (9/19/91)
+
+\ninepoint\noindent\hskip10pt
+{\bf if\/} $\\{hn}<\\{l\_hyf}+\\{r\_hyf}$ {\bf then goto} \\{done1}; \
+\quad$\{\,$\\{l\_hyf} and \\{r\_hyf} are always $\ge1\,\}$
+
+\bugonpage B380, lines 9--11 from the bottom reduce to a single line (1/10/92)
+
+\ninepoint\noindent\hskip10pt
+$q\gets\\{link}(\\{hb})$; \ $\\{link}(\\{hb})\gets\\{null}$; \
+$r\gets\\{link}(\\{ha})$; \ $\\{link}(\\{ha})\gets\\{null}$; \
+$\\{bchar}\gets\\{hyf\_bchar}$;
+
+\bugonpage B436, lines 9 and 10 (3/15/92)
+
+\tenpoint
+$$\\{cur\_r}=\cases{\\{character}(\\{lig\_stack}),&if $\\{lig\_stack}>
+ \\{null}$;\cr
+ \\{font\_bchar}[\\{cur\_font}],&otherwise;\cr}$$
+except when $\\{character}(\\{lig\_stack})=\\{font\_false\_bchar}
+ [\\{cur\_font}]$. Several additional global variables are needed.
+
+\bugonpage B438, line 13 from the bottom (3/15/92)
+
+\ninepoint\noindent\hskip10pt
+$\\{cur\_q}\gets\\{tail}$; \ $\\{cur\_l}\gets\\{character}(\\{lig\_stack})$;
+
+\bugonpage B507, line 6 of section 1241 (1/11/92)
+
+\ninepoint\noindent\hskip10pt
+\\{scan\_optional\_equals};\par\noindent\hskip10pt
+{\bf if\/} \\{set\_box\_allowed} {\bf then}
+$\\{scan\_box}(\\{box\_flag}+n)$\par\noindent\hskip10pt
+{\bf else begin} \\{print\_err}({\tt\char`\"Improper\]\char`\"});
+\ \\{print\_esc}({\tt\char`\"setbox\char`\"});\par\noindent\hskip20pt
+\\{help2}({\tt\char`\"Sorry,\]\char`\\setbox\]is\]not\]allowed\]after\]%
+\char`\\halign\]in\]a\]display,\char`\"})\par\noindent\hskip20pt
+({\tt\char`\"or\]between\]\char`\\accent\]%
+and\]an\]accented\]character.\char`\"});
+\ \\{error};\par\noindent\hskip20pt
+{\bf end};
+
+\bugonpage B511, new line inserted after line 3 (1/24/92)
+
+\ninepoint\noindent\hskip20pt
+\\{flushable\_string}: \\{str\_number};\quad
+ $\{\,$string not yet referenced$\,\}$
+
+\bugonpage B512, new line inserted after line 3 of section 1260 (1/24/92)
+
+\ninepoint\noindent\hskip10pt
+$\\{flushable\_string}\gets\\{str\_ptr}-1$;
+
+\bugonpage B512, the former line 6 of section 1260 (1/24/92)
+
+\ninepoint\noindent\hskip30pt
+{\bf begin if\/} $\\{cur\_name}=\\{flushable\_string}$ {\bf then}
+\par\noindent\hskip40pt{\bf begin} \\{flush\_string}; \
+ $\\{cur\_name}\gets\\{font\_name}[f]$; \ {\bf end};
+\par\noindent\hskip30pt{\bf if\/} $s>0$ {\bf then}
+
+\bugonpage B512, line 10 from the bottom (9/19/91)
+
+\ninepoint\noindent
+\\{set\_font}:\enspace{\bf begin}
+\\{print}({\tt\char`\"select\]font\]\char`\"}); \
+\\{slow\_print}(\\{font\_name}[\\{chr\_code}]);
+
+\bugonpage B514, line 9 (1/11/92)
+
+\ninepoint\noindent\hskip20pt
+$\\{set\_box\_allowed}\gets\\{false}$; \
+\\{prefixed\_command}; \
+$\\{set\_box\_allowed}\gets\\{true}$;
+
+\bugonpage B515, line 19 (9/19/91)
+
+\ninepoint\noindent\hskip10pt
+\\{slow\_print}($s$); \ \\{update\_terminal};
+
+\bugonpage B516, line 2 (9/19/91)
+
+\ninepoint\noindent\hskip10pt
+{\bf begin} \\{print\_err}({\tt\char`\"\char`\"}); \
+ \\{slow\_print}($s$);
+
+\bugonpage B531, lines 19 and 20 (9/19/91)
+
+\ninepoint\noindent\hskip10pt
+\\{print\_nl}({\tt\char`\"Beginning\]to\]dump\]on\]file\]\char`\"}; \
+\\{slow\_print}(\\{w\_make\_name\_string}(\\{fmt\_file})); \
+\\{flush\_string};\par\noindent\hskip10pt
+\\{print\_nl}({\tt\char`\"\char`\"}); \
+\\{slow\_print}(\\{format\_ident})
+
+\bugonpage B533, line 29 (9/19/91)
+
+\ninepoint\noindent\hskip30pt
+{\bf begin} \\{print\_nl}({\tt\char`\"Transcript\]written\]on\]\char`\"}); \
+\\{slow\_print}(\\{log\_name}); \
+\\{print\_char}({\tt\char`\".\char`\"});
+
+\bugonpage B538, line 13 (9/19/91)
+
+\ninepoint\noindent
+10:\enspace\\{slow\_print}($n$);
+
+\bugonpage B577, left column (12/23/91)
+
+\eightpoint\noindent[Add 798 to the index entries for `system dependencies'.]
+
+ % volume C
+\hsize=29pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+
+\bugonpage C262, line 15 (3/26/91)
+
+\ninepoint\noindent
+|string base_name, base_version; base_name="plain"; base_version="2.7";|
+
+\bugonpage C271, line 17 from the bottom (3/26/91)
+
+\ninepoint\noindent
+| currentpen_path shifted (z.t_) withpen penspeck enddef;|
+
+\bugonpage C347, Bront''e entry (1/29/91)
+
+\eightpoint\noindent
+[The accent was clobbered; her name should, of course, be Bront\"e.
+Fix the entries for D\"urer, M\"obius, and Stravinsky in the same way.]
+
+\bugonpage C348, left column (1/11/92)
+
+\eightpoint\indent
+compound statement, $\underline{155}$, 217.
+
+\bugonpage C353, right column (1/11/92)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt numeric}, 55, $\underline{56}$, {\it65}, 88.
+
+\bugonpage C354, miscellaneous entries in both columns (1/11/92)
+
+\eightpoint
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt openwindow}, $\underline{191}$--$\underline{193}$, 220, {\it277},
+ {\it312--313}.
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt or}, {\it65}, $\underline{170}$, 210, 237, 288--289.
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt pair}, 55, $\underline{56}$, 65.
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt path}, 55, $\underline{56}$, 171.
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt pen}, 55, $\underline{56}$, {\it65}, 170.
+\par\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt picture}, 55, $\underline{56}$, {\it114}.
+
+\bugonpage C356, right column (1/11/92)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt string}, 55, $\underline{56}$, 69.
+
+\bugonpage C357, right column (1/11/92)
+
+\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
+{\tt transform}, 55, $\underline{56}$, 57, 141--143, {\it160}, 266.
+
+ % Volume D
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\bugonpage D2, last line of section 2 (1/24/92)
+
+\ninepoint\noindent\hskip10pt
+{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
+{\tt This\]is\]METAFONT,\]Version\]2.71\char'23}\quad
+$\{\,$printed when \MF\ starts$\,\}$
+
+\bugonpage D102, line 15 from the bottom (11/1/91)
+
+\tenpoint\noindent
+Then
+$\\{eq\_type}(h(x))=\\{tag\_token}$ and $\\{equiv}(h(x))=p$,
+where $p$~is a two-word value
+node with\cutpar
+
+\bugonpage D188, lines 16 and 17 (1/24/92)
+
+\tenpoint\noindent
+errors. Our subroutines also obey the identity $t[a,b]+t[b,a]=a+b$.
+
+\bugonpage D190, new copy before bottom four lines (1/24/92)
+
+\ninepoint\noindent\hskip10pt
+{\bf if\/} $\\{x\_coord}(r)<\\{x\_coord}(\\{pp})$ {\bf then}
+ $\\{x\_coord}(r)\gets\\{x\_coord}(\\{pp})$\par\noindent\hskip10pt
+{\bf else if\/} $\\{x\_coord}(r)>\\{dest\_x}$ {\bf then}
+ $\\{x\_coord}(r)\gets\\{dest\_x}$;\par\noindent\hskip10pt
+{\bf if\/} $\\{left\_x}(r)>\\{x\_coord}(r)$ {\bf then}\par\noindent\hskip20pt
+{\bf begin} $\\{left\_x}(r)\gets\\{x\_coord}(r)$; \
+{\bf if\/} $\\{right\_x}(\\{pp})>\\{x\_coord}(r)$ {\bf then}
+$\\{right\_x}(\\{pp})\gets\\{x\_coord}(r)$; \ {\bf end};\par\noindent\hskip10pt
+{\bf if\/} $\\{right\_x}(r)<\\{x\_coord}(r)$ {\bf then}\par\noindent\hskip20pt
+{\bf begin} $\\{right\_x}(r)\gets\\{x\_coord}(r)$; \
+{\bf if\/} $\\{left\_x}(\\{qq})<\\{x\_coord}(r)$ {\bf then}
+$\\{left\_x}(\\{qq})\gets\\{x\_coord}(r)$; \ {\bf end};
+
+\bugonpage D191, new copy before bottom two lines of section 416 (1/24/92)
+
+\ninepoint\noindent\hskip10pt
+{\bf if\/} $\\{x\_coord}(s)<\\{x\_coord}(r)$ {\bf then}
+ $\\{x\_coord}(s)\gets\\{x\_coord}(r)$\par\noindent\hskip10pt
+{\bf else if\/} $\\{x\_coord}(s)>\\{dest\_x}$ {\bf then}
+ $\\{x\_coord}(s)\gets\\{dest\_x}$;\par\noindent\hskip10pt
+{\bf if\/} $\\{left\_x}(s)>\\{x\_coord}(s)$ {\bf then}\par\noindent\hskip20pt
+{\bf begin} $\\{left\_x}(s)\gets\\{x\_coord}(s)$; \
+{\bf if\/} $\\{right\_x}(r)>\\{x\_coord}(s)$ {\bf then}
+$\\{right\_x}(r)\gets\\{x\_coord}(s)$; \ {\bf end};\par\noindent\hskip10pt
+{\bf if\/} $\\{right\_x}(s)<\\{x\_coord}(s)$ {\bf then}\par\noindent\hskip20pt
+{\bf begin} $\\{right\_x}(s)\gets\\{x\_coord}(s)$; \
+{\bf if\/} $\\{left\_x}(\\{qq})<\\{x\_coord}(s)$ {\bf then}
+$\\{left\_x}(\\{qq})\gets\\{x\_coord}(s)$; \ {\bf end};
+
+\bugonpage D194, lines 4 and 5 (1/24/92)
+
+\tenpoint\noindent[Delete those two lines; I no longer believe that the
+assertion has been proved (although it might be true).]
+
+\bugonpage D194, lines 7--13 of section 424 (1/24/92)
+
+\ninepoint\noindent\hskip10pt
+{\bf if\/} $\\{y\_coord}(r)<\\{y\_coord}(p)$ {\bf then}
+ $\\{y\_coord}(r)\gets\\{y\_coord}(p)$\par\noindent\hskip10pt
+{\bf else if\/} $\\{y\_coord}(r)>\\{dest\_y}$ {\bf then}
+ $\\{y\_coord}(r)\gets\\{dest\_y}$;\par\noindent\hskip10pt
+{\bf if\/} $\\{x\_coord}(p)+\\{y\_coord}(r)>\\{dest\_x}+\\{dest\_y}$
+{\bf then} $\\{y\_coord}(r)\gets\\{dest\_x}+\\{dest\_y}-\\{x\_coord}(p)$;\par
+\noindent\hskip10pt
+{\bf if\/} $\\{left\_y}(r)>\\{y\_coord}(r)$ {\bf then}\par\noindent\hskip20pt
+{\bf begin} $\\{left\_y}(r)\gets\\{y\_coord}(r)$; \
+{\bf if\/} $\\{right\_y}(p)>\\{y\_coord}(r)$ {\bf then}
+$\\{right\_y}(p)\gets\\{y\_coord}(r)$; \ {\bf end};\par\noindent\hskip10pt
+{\bf if\/} $\\{right\_y}(r)<\\{y\_coord}(r)$ {\bf then}\par\noindent\hskip20pt
+{\bf begin} $\\{right\_y}(r)\gets\\{y\_coord}(r)$; \
+{\bf if\/} $\\{left\_y}(q)<\\{y\_coord}(r)$ {\bf then}
+$\\{left\_y}(q)\gets\\{y\_coord}(r)$; \ {\bf end};
+
+\bugonpage D194, lines 8--11 from the bottom (1/24/92)
+
+\ninepoint\noindent\hskip10pt
+{\bf if\/} $\\{right\_y}(r)<\\{y\_coord}(r)$ {\bf then}\par\noindent\hskip20pt
+{\bf begin} $\\{right\_y}(r)\gets\\{y\_coord}(r)$; \
+{\bf if\/} $\\{left\_y}(q)<\\{y\_coord}(r)$ {\bf then}
+$\\{left\_y}(q)\gets\\{y\_coord}(r)$; \ {\bf end};
+
+\bugonpage D195, lines 3--9 of section 425 (1/24/92)
+
+\ninepoint\noindent\hskip10pt
+{\bf if\/} $\\{y\_coord}(s)<\\{y\_coord}(r)$ {\bf then}
+ $\\{y\_coord}(s)\gets\\{y\_coord}(r)$\par\noindent\hskip10pt
+{\bf else if\/} $\\{y\_coord}(s)>\\{dest\_y}$ {\bf then}
+ $\\{y\_coord}(s)\gets\\{dest\_y}$;\par\noindent\hskip10pt
+{\bf if\/} $\\{x\_coord}(r)+\\{y\_coord}(s)>\\{dest\_x}+\\{dest\_y}$
+{\bf then} $\\{y\_coord}(s)\gets\\{dest\_x}+\\{dest\_y}-\\{x\_coord}(r)$;\par
+\noindent\hskip10pt
+{\bf if\/} $\\{left\_y}(s)>\\{y\_coord}(s)$ {\bf then}\par\noindent\hskip20pt
+{\bf begin} $\\{left\_y}(s)\gets\\{y\_coord}(s)$; \
+{\bf if\/} $\\{right\_y}(r)>\\{y\_coord}(s)$ {\bf then}
+$\\{right\_y}(r)\gets\\{y\_coord}(s)$; \ {\bf end};\par\noindent\hskip10pt
+{\bf if\/} $\\{right\_y}(s)<\\{y\_coord}(s)$ {\bf then}\par\noindent\hskip20pt
+{\bf begin} $\\{right\_y}(s)\gets\\{y\_coord}(s)$; \
+{\bf if\/} $\\{left\_y}(q)<\\{y\_coord}(s)$ {\bf then}
+$\\{left\_y}(q)\gets\\{y\_coord}(s)$; \ {\bf end};
+
+\bugonpage D195, lines 3--7 from the bottom if section 425 (1/24/92)
+
+\ninepoint\noindent\hskip10pt
+{\bf if\/} $\\{right\_y}(s)<\\{y\_coord}(s)$ {\bf then}\par\noindent\hskip20pt
+{\bf begin} $\\{right\_y}(s)\gets\\{y\_coord}(s)$; \
+{\bf if\/} $\\{left\_y}(q)<\\{y\_coord}(s)$ {\bf then}
+$\\{left\_y}(q)\gets\\{y\_coord}(s)$; \ {\bf end};
+
+\bugonpage D289, lines 9 and 10 (11/1/91)
+
+\ninepoint\noindent\hskip20pt
+$p\gets\\{dep\_list}(p)$; \ $r\gets\\{inf\_val}$;\par\noindent\hskip20pt
+{\bf repeat if\/} $\\{value}(\\{info}(p))\ge\\{value}(r)$ {\bf then}\par
+
+\bugonpage D486, line 18 (11/1/91)
+
+\tenpoint\noindent
+The \\{label\_loc}
+and \\{label\_char} arrays have been set up to record all the
+starting addresses; we have\cutpar
+
+ % volume E
+\hsize=29pc
+\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}}
+
+
+ \bye
+
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errata8.tex b/Master/texmf-doc/doc/english/knuth/errata/errata8.tex
new file mode 100644
index 00000000000..30e73fccd49
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata8.tex
@@ -0,0 +1,525 @@
+% Bugs (sigh) in Computers \& Typesetting
+
+\input manmac
+\font\sltt=cmsltt10
+\font\niness=cmss9
+\font\ninessi=cmssi9
+\proofmodefalse
+\raggedbottom
+\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
+
+\def\today{\number\day\
+ \ifcase\month\or
+ Jan\or Feb\or Mar\or Apr\or May\or Jun\or
+ Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi
+ \ \number\year}
+
+\def\cutpar{{\parfillskip=0pt\par}}
+
+\def\rhead{Bugs in {\tensl Computers \& Typesetting, 1992}}
+\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
+\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
+\newcount\nn
+\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
+\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
+
+\tenpoint
+\noindent This is a list of all corrections made to {\sl Computers \&
+Typesetting\/} between 15 March 1992 and the publication of the final
+printed versions of those books.
+Corrections made to the softcover version of {\sl The \TeX book\/} are
+the same as corrections to Volume~A\null. Corrections to the softcover
+version of {\sl The \slMF\kern1ptbook\/} are the same as corrections
+to Volume~C\null. Changes to Volume~B refer to the fourth printing
+(1991), which differs markedly from earlier printings because it includes
+all the revisions for \TeX3.0. Changes to Volume~D refer to the third
+printing (1991), which differs markedly from earlier printings because
+it includes all the revisions for \MF\kern1pt2.0. Changes to the mini-indexes
+and master indexes of Volumes B and~D are not shown here unless they are
+not obviously derivable from what has been shown.
+\looseness=-1
+
+ % volume A
+
+\bugonpage A23, line 14 (9/1/92)
+
+\tenpoint\noindent
+a command and you type `|tex|' or `|run| |tex|' or something like that.)
+
+\bugonpage A53, line 23 (7/7/92)
+
+\tenpoint\noindent
+{\sl scientiarum imperialis petropolitan\ae\/}
+became {\sl Akademi\t\i a Nauk SSSR, Doklady}.
+
+\bugonpage A146, line 2 from the bottom (2/25/93)
+
+|$\bigl|\|| |\||x|\||-|\||y|\|| \bigr|\||$|\hskip1.25in
+ $\bigl\vert\vert x\vert-\vert y\vert\bigr\vert$
+
+\bugonpage A149, lines 3--5 (2/25/93)
+
+\noindent
+example, we used |\bigl| and |\bigr| to produce $\bigl\vert\vert x\vert-
+\vert y\vert\bigr\vert$ in one of the previous illustrations; |\left| and
+|\right| don't make things any bigger than necessary, so
+`|$\left|\||\left|\||x\right|\||-\left|\||y\right|\||\right|\||$|'
+yields only `$\left\vert
+ \left\vert x\right\vert -\left\vert y\right\vert \right\vert$'.\cutpar
+
+\bugonpage A158, line 18 from the bottom (2/25/93)
+
+\ninepoint
+are four possibilities for each of these fields.
+A field can be
+
+\bugonpage A282, line 9 from the bottom (7/8/92)
+
+\ninepoint\noindent
+category~4) are intercepted by the alignment
+process, en route to \TeX's stomach, so\cutpar
+
+\bugonpage A293, new paragraph after line 15 (4/9/92)
+
+\ninepoint
+\textindent{$\bull$}|\unhbox|\<8-bit number>, |\unhcopy|\<8-bit number>.\enskip
+The specified box register must be void. Nothing happens.
+
+\bugonpage A309, line 23 (7/7/92)
+
+\ninepoint\noindent
+|petropolitan\ae\/} became {\sl Akademi\t\i a Nauk SSSR, Doklady}.|
+
+\bugonpage A320, line 11 (1/26/93)
+
+\ninepoint
+\ansno17.12:
+|$\bigl(x+f(x)\bigr) \big/ \bigl(x-f(x)\bigr)$|. \ Notice especially the\cutpar
+
+\bugonpage A349, second line from the bottom (7/8/92)
+
+\ninepoint\noindent
+expand to a ^\<number> en route to \TeX's
+``stomach''; |\multiply| wouldn't work, because\cutpar
+
+\bugonpage A358, bottom line (2/3/93)
+
+\ninepoint\noindent
+it is easy to define ^|\ldots| and ^|\cdots| macros that
+give the proper spacing in most\cutpar
+
+\bugonpage A370, lines 28 and 29 (9/1/92)
+
+\def\Russiantt#1{{\tt\hbox to.5em{\hss\eighttt\char#1\hss}}}
+\ninepoint\noindent
+example, if \TeX\ is implemented for
+a purely ^{Cyrillic} ^^{Russian} keyboard, the letter `\Russiantt5' should be
+assigned to code \oct{160} and `\Russiantt{`T}' to code \oct{164}, so that
+`\Russiantt5\Russiantt{`T}' still means `|pt|'; or else control\cutpar
+
+\bugonpage A377, lines 17--24 (5/4/92)
+
+\ninepoint
+\begintt
+\def\sanswitch{\let\n@xt\endsanity \ifx\next\endsanity
+ \else\ifcat\noexpand\next\stoken\aftergroup\space\let\n@xt=\eat
+ \else\ifcat\noexpand\next\bgroup\aftergroup{\let\n@xt=\eat
+ \else\ifcat\noexpand\next\egroup\aftergroup}\let\n@xt=\eat
+ \else\let\n@xt=\copytok\fi\fi\fi\fi \n@xt}
+\def\eat{\afterassignment\sanitize \let\next= }
+\long\def\copytok#1{\ifcat\noexpand#1\relax\aftergroup\noexpand\fi
+ \ifcat\noexpand#1\noexpand~\aftergroup\noexpand\fi
+\endtt
+
+\bugonpage A455, line 25 (2/26/93)
+
+\ninepoint\noindent
+rent language'' is set equal to |\language|. Whenever a
+character is added to the cur-\cutpar
+
+\bugonpage A459, second line of entry for ampersand (3/22/92)
+
+\eightpoint\indent\qquad
+{\it231--248}, $\underline{282}$, {\it339}, 344, 385--386, 428.
+
+\bugonpage A461, right column (2/19/93)
+
+\eightpoint
+\newbox\astbox \setbox\astbox=\hbox to0pt{\hss\lower1pt\hbox{*}}
+\def\prim#1{\par\indent\copy\astbox{\tt\char`\\#1}}
+\prim{chardef}, 44, 121, 155, 210, 214, 215, 271,\par
+\indent\qquad $\underline{277}$, 336, {\it343}, {\it345}, {\it356}, 452.\par
+\indent\<chardef token>, $\underline{271}$, 283, 286, 289.
+
+\bugonpage A467, left column (2/25/93)
+
+\eightpoint
+Greek, 127--128, 137, 156, 164, 319,\par
+\indent\qquad 358, 430, 434.
+
+\bugonpage A470, left column (2/25/93)
+
+\eightpoint
+margins, {\sl see\/} |\hoffset|, |\hsize|, |\narrower|.
+
+\bugonpage A471, left column (2/19/93)
+
+\eightpoint
+\prim{mathchardef}, 155, 199, 214, 215, 271,\par
+\indent\qquad 277, 289, 336, {\it358}, {\it394}.\par
+\indent\<mathchardef token>, $\underline{271}$, 289.
+
+\bugonpage A474, right column (3/22/92)
+
+\eightpoint
+pound sterling, 54, {\it339}, 428.
+
+\bugonpage A477, right column (3/22/92)
+
+\eightpoint
+sterling, 54, {\it339}, 428.
+
+\bugonpage A480, left column (4/9/92)
+
+\eightpoint
+\prim{unhbox}, 120, 283, $\underline{285}$, 293, {\it354}, {\it356},
+ {\it399}.\par
+\prim{unhcopy}, 120, 283, $\underline{285}$, 293, {\it353}.
+
+\bugonpage A481, left column (2/25/93)
+
+\eightpoint
+whatsits, 95, 110, 157, 226--229, 455.
+
+\bugonpage A483, lines 15--21 (2/25/93)
+
+{\tt P.O. Box 869\par
+Santa Barbara, CA 93102-0869 USA.\par
+|}|}
+\smallskip\noindent
+Don't delay, write today! That number again is
+
+\smallskip
+{\obeylines
+\TeX\ Users Group
+P.O. Box 869
+Santa Barbara, CA 93102-0869 USA.
+}
+
+ % volume B
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\bugonpage B2, line 10 from the bottom (2/27/93)
+
+\ninepoint\noindent\hskip10pt
+{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$%
+{\tt This\]is\]TeX,\]Version\]3.1415\char'23}\quad
+$\{\,$printed when \TeX\ starts$\,\}$
+
+\bugonpage B89, line 12 (2/27/93)
+
+\tenpoint
+\noindent\hskip10pt
+In horizontal mode, the \\{prev\_graf} field is used for initial language data.
+
+\bugonpage B89, line 20 (2/27/93)
+
+\ninepoint
+\noindent\hskip20pt
+\\{pg\_field}, \\{ml\_field}: \\{integer}; \ \\{aux\_field}: \\{memory\_word};
+\par
+\noindent [Also delete the definitions of \\{lhmin} and \\{rhmin}, lines
+32 and 33.]
+
+\bugonpage B90, line 13 (2/27/93)
+
+\ninepoint
+\noindent\hskip10pt
+$\\{prev\_depth}\gets\\{ignore\_depth}$; \ $\\{mode\_line}\gets0$; \
+$\\{prev\_graf}\gets0$;
+
+\bugonpage B91, top three lines (2/27/93)
+
+\ninepoint
+\noindent\hskip20pt
+{\bf if\/} $m=\\{hmode}$ {\bf then if\/} $\\{nest}[p].\\{pg\_field}\ne
+ \oct{40600000}$ {\bf then}\par\noindent\hskip40pt
+{\bf begin} \\{print}({\tt\char`\"\](language\char`\"}); \
+ \\{print\_int}(\\{nest}[$p$].\\{pg\_field} {\bf mod} \oct{200000});\par
+\noindent\hskip40pt
+ \\{print}({\tt\char`\":hyphenmin\char`\"}); \
+ \\{print\_int}(\\{nest}[$p$].\\{pg\_field} {\bf div} \oct{20000000}); \
+ \\{print\_char}({\tt\char`\",\char`\"});\par\noindent\hskip40pt
+\\{print\_int}((\\{nest}[$p$].\\{pg\_field} {\bf div} \oct{200000})
+ {\bf mod} \oct{100}); \ \\{print\_char}({\tt\char`\")\char`\"});
+
+\bugonpage B344, lines 21 and 22 (2/27/93)
+
+\tenpoint\noindent\hskip10pt
+This code assumes that a \\{glue\_node} and a \\{penalty\_node} occupy the
+same number of \\{mem}~words.
+
+\bugonpage B344, line 30 (2/27/93)
+
+\ninepoint\noindent\hskip10pt
+$\\{link}(\\{tail})\gets\\{new\_param\_glue}(\\{par\_fill\_skip\_code})$; \
+ $\\{init\_cur\_lang}\gets\\{prev\_graf}$ {\bf mod} \oct{200000};\par
+\noindent\hskip10pt
+$\\{init\_l\_hyf}\gets\\{prev\_graf}$ {\bf div} \oct{20000000}; \
+$\\{init\_r\_hyf}\gets(\\{prev\_graf}$ {\bf div} \oct{200000}) {\bf mod}
+ \oct{100}; \
+\\{pop\_nest};
+
+\bugonpage B353, line 4 (2/27/93)
+
+\tenpoint\noindent\hskip10pt
+Kern nodes do not disappear at a line break unless they are \\{explicit}.
+
+\bugonpage B353, lines 15 and 16 (2/27/93)
+
+\ninepoint\noindent\hskip20pt
+\\{math\_node}: $\\{break\_width}[1]\gets\\{break\_width}[1]-\\{width}(s)$;\par
+\noindent\hskip20pt
+\\{kern\_node}: {\bf if\/} $\\{subtype}(s)\ne\\{explicit}$
+ {\bf then goto} \\{done}\par\noindent\hskip30pt
+{\bf else} $\\{break\_width}[1]\gets\\{break\_width}[1]-\\{width}(s)$;
+
+\bugonpage B354, lines 6 and 7 (2/27/93)
+
+\tenpoint\noindent
+will be the background
+plus $l_1$, so the length from \\{cur\_p} to \\{cur\_p} should be
+$\gamma+l_0+l_1-l$.
+If the post-break text of the discretionary is empty, a break may also
+discard~$q$; in that unusual case we subtract the length of~$q$ and any
+other nodes that will be discarded after the discretionary break.
+
+\bugonpage B354, line 18 (2/27/93)
+
+\ninepoint\noindent\hskip20pt
+{\bf begin} $\langle\,$Add the width of node $s$ to \\{break\_width}{\sevenrm
+ \kern.5em842}$\,\rangle$;
+
+\bugonpage B354, line 22 (2/27/93)
+
+\ninepoint\noindent\hskip10pt
+{\bf if\/} $\\{post\_break}(\\{cur\_p})=\\{null}$ {\bf then}
+ $s\gets\\{link}(v)$;\quad$\{\,$nodes may be discardable after the break$\,\}$
+
+\bugonpage B355, top line (2/27/93)
+
+\ninepoint\noindent
+{\tenbf842.\quad}$\langle\,$Add the width of node $s$ to
+ \\{break\_width}{\sevenrm\kern.5em842}$\,\rangle\equiv$
+
+\bugonpage B355, lines 9--14 (2/27/93)
+
+\ninepoint\noindent\hskip20pt
+$\\{hlist\_node},\\{vlist\_node},\\{rule\_node},\\{kern\_node}$:
+ $\\{break\_width}[1]\gets\\{break\_width}[1]+\\{width}(s)$;\par
+\noindent\hskip20pt
+{\bf othercases} \\{confusion}({\tt\char`\"disc2\char`\"})\par
+\noindent\hskip20pt
+{\bf endcases}
+
+\bugonpage B364, line 10 (2/27/93)
+
+\tenpoint\noindent
+a glue node, penalty node, explicit kern node, or math node.
+
+\bugonpage B366, line 11 from the bottom (2/27/93)
+
+\ninepoint\noindent
+\\{kern\_node}: {\bf if\/} $\\{subtype}(\\{cur\_p})=\\{explicit}$
+ {\bf then} \\{kern\_break}\par\noindent\hskip10pt
+{\bf else} $\\{act\_width}\gets\\{act\_width}+\\{width}(\\{cur\_p})$;
+
+\bugonpage B367, line 21 (2/27/93)
+
+\ninepoint\noindent\hskip20pt
+{\bf else if\/} \\{precedes\_break}(\\{prev\_p}) {\bf then}
+ $\\{try\_break}(0,\\{unhyphenated})$\par\noindent\hskip20pt
+{\bf else if\/} $(\\{type}(\\{prev\_p})=\\{kern\_node})\land
+ (\\{subtype}(\\{prev\_p})\ne\\{explicit})$ {\bf then}
+ $\\{try\_break}(0,\\{unhyphenated})$;
+
+\bugonpage B372, lines 12 and 13 (2/27/93)
+
+\ninepoint\noindent\hskip20pt
+{\bf if\/} $\\{type}(q)=\\{kern\_node}$ {\bf then}\par\noindent\hskip30pt
+{\bf if\/} $\\{subtype}(q)\ne\\{explicit}$ {\bf then goto} \\{done1};
+
+\bugonpage B376, line 3 from the bottom (2/27/93)
+
+\ninepoint\noindent\hskip10pt
+$\\{cur\_lang}\gets\\{init\_cur\_lang}$; \
+$\\{l\_hyf}\gets\\{init\_l\_hyf}$; \
+$\\{r\_hyf}\gets\\{init\_r\_hyf}$;
+
+\bugonpage B377, lines 11 and 12 (2/27/93)
+
+\ninepoint\noindent
+$\\{cur\_lang},\\{init\_cur\_lang}$: \\{ASCII\_code};\quad
+ $\{\,$current hyphenation table of interest$\,\}$\par\noindent
+$\\{l\_hyf},\\{r\_hyf},\\{init\_l\_hyf},\\{init\_r\_hyf}$: \\{integer};\quad
+ $\{\,$limits on fragment sizes$\,\}$
+
+\bugonpage B378, line 5 from the bottom, overriding earlier change (2/27/93)
+
+\ninepoint\noindent\hskip30pt
+{\bf else if} $(\\{type}(s)=\\{kern\_node})\land(\\{subtype}(s)=\\{normal})$
+ {\bf then}\par\noindent\hskip50pt
+{\bf begin} $\\{hb}\gets s$; \ $\\{hyf\_bchar}\gets\\{font\_bchar}[\\{hf}]$; \
+ {\bf end}\par\noindent\hskip40pt
+{\bf else goto} \\{done3};
+
+
+\bugonpage B394, lines 12 and 13 (2/27/93)
+
+\ninepoint\noindent\hskip10pt
+{\bf var} $n$: $0\to64$;\quad$\{\,$length of current word; not always
+ a \\{small\_number}$\,\}$\par\noindent\hskip20pt
+$j$: $0\to64$;\quad$\{\,$an index into \\{hc}$\,\}$
+
+\bugonpage B404, line 21 (2/27/93)
+
+\ninepoint\noindent\hskip10pt
+{\bf var} $k,l$: $0\to64$;\quad$\{\,$indices into \\{hc} and \\{hyf};
+ not always in \\{small\_number} range$\,\}$
+
+\bugonpage B460, lines 21 and 22 (2/27/93)
+
+\ninepoint\noindent\hskip10pt
+\\{push\_nest}; \ $\\{mode}\gets\\{hmode}$; \ $\\{space\_factor}\gets1000$; \
+ \\{set\_cur\_lang}; \ $\\{clang}\gets\\{cur\_lang}$;\par\noindent\hskip10pt
+$\\{prev\_graf}\gets(\\{norm\_min}(\\{left\_hyphen\_min})\ast\oct{100}+
+ \\{norm\_min}(\\{right\_hyphen\_min}))\ast\oct{200000}+\\{cur\_lang}$;
+
+\bugonpage B492, line 6 from the bottom (2/27/93)
+
+\ninepoint\noindent\hskip10pt
+\\{unsave}; \ $\\{prev\_graf}\gets\\{prev\_graf}+3$;\par\noindent\hskip10pt
+\\{push\_nest}; \ $\\{mode}\gets\\{hmode}$; \ $\\{space\_factor}\gets1000$; \
+ \\{set\_cur\_lang}; \ $\\{clang}\gets\\{cur\_lang}$;\par\noindent\hskip10pt
+$\\{prev\_graf}\gets(\\{norm\_min}(\\{left\_hyphen\_min})\ast\oct{100}+
+ \\{norm\_min}(\\{right\_hyphen\_min}))\ast\oct{200000}+\\{cur\_lang}$;
+
+ % volume C
+\hsize=29pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+
+\bugonpage C151, line 11 from the bottom (6/26/93)
+
+\ninepoint\indent
+\qquad scaled $1.42(1+\max(-\\{pen\_lft},\\{pen\_rt},\\{pen\_top},
+ -\\{pen\_bot}))$
+
+\bugonpage C262, line 15 (6/26/93)
+
+\ninepoint\noindent
+|string base_name, base_version; base_name="plain"; base_version="2.71";|
+
+\bugonpage C262, line 29 (6/26/93)
+
+\ninepoint\noindent
+|def |^|gobble|| primary g = enddef; def |^|killtext|| text t = enddef;|
+
+\bugonpage C271, bottom line (6/26/93)
+
+\ninepoint\noindent
+| culldraw p enddef;|
+
+\bugonpage C272, three new lines for top of page (6/26/93)
+
+{\ninepoint\parindent=0pt
+|def |^|culldraw|| expr p = addto pic_ doublepath p.t_ withpen currentpen;|\par
+| cull pic_ dropping(-infinity,0) withweight default_wt_;|\par
+| addto_currentpicture also pic_; pic_:=nullpicture; killtext enddef;|\par
+}
+
+\bugonpage C272, replacement for former line 5 (6/26/93)
+
+\ninepoint\noindent
+| (cut_ scaled (1+max(-pen_lft,pen_rt,pen_top,-pen_bot))|
+
+\bugonpage C296, line 24 (2/3/93)
+
+\ninepoint\noindent
+the definition of |rp| is changed to `|]..tension 4..|',
+and if `|scaled|~|5pt|' is inserted\cutpar
+
+\bugonpage C299, line 3 (5/15/92)
+
+\ninepoint\noindent
+a Bernshte{\u\i}n polynomial of order $n-1$.)
+
+\bugonpage C347, left column (5/15/92)
+
+\eightpoint
+Bernshte{\u\i}n, Serge{\u\i} \thinspace Natanovich, 14.
+
+\bugonpage C348, left column (6/26/93)
+
+\eightpoint
+|culldraw|, {\it271}, $\underline{272}$.
+
+\bugonpage C350, left column (6/26/93)
+
+\eightpoint
+exponential, {\sl see\/} |mexp|.
+
+\bugonpage C352, left column (6/26/93)
+
+\eightpoint
+|killtext|, $\underline{262}$, {\it 272}.
+
+\bugonpage C352, right column (6/26/93)
+
+\eightpoint
+logarithm, {\sl see\/} |mlog|.
+
+\bugonpage C361, lines 14 and 15 (2/25/93)
+
+P.O. Box 869\par
+Santa Barbara, CA 93102-0869 USA.
+
+
+ % Volume D
+\hsize=35pc
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+
+\bugonpage D190, and subsequent pages (6/26/93)
+
+\noindent[Several changes to the code in sections 415, 416, 424, and 425
+were made to \MF\ version 2.71 in July~1991, too numerous to mention here.]
+
+\bugonpage D216, line 10 from the bottom (7/15/92)
+
+\tenpoint\noindent
+will be offset by $w_1$ or $w_2$, unless its slope drops to zero
+en route to the eighth octant; in the latter\cutpar
+
+\bugonpage D289, lines 9 and 10 (6/26/93)
+
+\ninepoint\noindent\hskip20pt
+$p\gets\\{dep\_list}(p)$; \ $r\gets\\{inf\_val}$;\par\noindent\hskip20pt
+{\bf repeat if\/} $\\{value}(\\{info}(p))\ge\\{value}(r)$ {\bf then}
+
+ % volume E
+\hsize=29pc
+\def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}}
+
+
+ \bye
+
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errata9.tex b/Master/texmf-doc/doc/english/knuth/errata/errata9.tex
new file mode 100644
index 00000000000..3715cd813fc
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/errata9.tex
@@ -0,0 +1,226 @@
+% Bugs (sigh) in Computers \& Typesetting
+
+\input manmac
+\font\sltt=cmsltt10
+\font\niness=cmss9
+\font\ninessi=cmssi9
+\proofmodefalse
+\raggedbottom
+\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
+
+\def\today{\number\day\
+ \ifcase\month\or
+ Jan\or Feb\or Mar\or Apr\or May\or Jun\or
+ Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi
+ \ \number\year}
+
+\def\cutpar{{\parfillskip=0pt\par}}
+
+\def\rhead{Bugs in {\tensl Computers \& Typesetting A, 1996}}
+\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
+ \hrule width\hsize
+ \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
+ \nobreak\medskip}
+\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
+\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
+\newcount\nn
+\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
+\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
+
+\tenpoint
+\noindent This is a list of all corrections made to {\sl Computers \&
+Typesetting}, Volume~A (also known as {\sl The \TeX book}),
+between 1992 and the publication of the final printed
+version of that book in September 1996.
+\looseness=-1
+
+ % volume A
+
+\bugonpage A31, line 8 (3/6/95)
+
+\tenpoint\noindent
+\TeX\ begins its error messages with `|!|', and it shows what it was
+reading at the\cutpar
+
+\bugonpage A46, line 8 (1/22/95)
+
+\ninepoint\noindent
+out for
+the occasional times when the adjacent characters |aa|, |ae|, and |o/|
+should not be\cutpar
+
+\bugonpage A282, lines 11 and 12 (4/18/96)
+
+\ninepoint\noindent
+unadorned \<box> command, except that the new box
+being appended to the vertical list is also shifted left or right by the
+specified amount.
+
+\bugonpage A285, lines 15--17 from the bottom (4/18/96)
+
+\ninepoint
+\textindent{$\bull$}|\raise|\<dimen>\<box>, |\lower|\<dimen>\<box>.\enskip
+This acts just like an unadorned \<box> command, except that the new box
+being appended to the horizontal list is also shifted up or down by the
+specified amount.
+
+\bugonpage A290, lines 4--6 from the bottom (4/18/96)
+
+\ninepoint
+\textindent{$\bull$}|\raise|\<dimen>\<box>, |\lower|\<dimen>\<box>.\enskip
+This acts just like an unadorned \<box> command, except that the new box
+being put into the nucleus is also shifted up or down by the specified amount.
+
+\bugonpage A331, bottom two lines (6/25/93)
+
+\ninepoint\noindent
+if you know that the
+enclosing box is sufficiently small; and |\leaders\vrule\vfill| works fine in
+vertical mode.
+
+\bugonpage A354, lines 19--22 (3/5/95)
+
+\ninepoint\noindent
+|\def\sett@b{\ifx\next\+\def\nxt{\afterassignment\s@tt@b\let\nxt}%|\par
+\noindent
+| \else\let\nxt=\s@tcols\fi|\par\noindent
+| \let\next=\relax \nxt} % turn off \outerness|\par\noindent
+|\def\s@tt@b{\let\nxt=\relax \us@false\m@ketabbox}|
+
+\bugonpage A356, lines 13--20 from the bottom (3/5/95)
+
+\ninepoint
+{\parindent=0pt
+|\def\oalign#1{\leavevmode\vtop{\baselineskip0pt \lineskip.25ex|\par
+| \ialign{##\crcr#1\crcr}}} \def\o@lign{\lineskiplimit=0pt \oalign}|\par
+|\def\ooalign{\lineskiplimit=-\maxdimen \oalign} % chars over each other|\par
+|\def\sh@ft#1{\dimen0=.00#1ex \multiply\dimen0 by\fontdimen1\font|\par
+| \kern-.0156\dimen0} % compensate for slant in lowered accents|\par
+|\def|^|\d||#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{10}.\hidewidth}}}|\par
+|\def|^|\b||#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{29}%|\par
+| \vbox to.2ex{\hbox{\char'26}\vss}\hidewidth}}}|\par
+}
+
+\bugonpage A357, lines 7--12 (8/1/95)
+
+\ninepoint\noindent
+|\def|^|\rightarrowfill||{$\m@th \smash- \mkern-7mu|\par\noindent
+| \cleaders\hbox{$\mkern-2mu \smash- \mkern-2mu$}\hfill|\par\noindent
+| \mkern-7mu \mathord\rightarrow$}|\par\noindent
+|\def|^|\leftarrowfill|%
+ |{$\m@th \mathord\leftarrow \mkern-7mu|\par\noindent
+| \cleaders\hbox{$\mkern-2mu \smash- \mkern-2mu$}\hfill|\par\noindent
+| \mkern-7mu \smash-$}|
+
+\bugonpage A357, lines 16--20 (6/25/93)
+
+\ninepoint
+{\parindent=0pt
+| \setbox0=\hbox{$\braceld$}%|\par
+| \bracelu\leaders\vrule height\ht0 depth0pt\hfill\bracerd|\par
+| \braceld\leaders\vrule height\ht0 depth0pt\hfill\braceru$}|\par
+|\def|^|\downbracefill||{$\m@th|\par
+| \setbox0=\hbox{$\braceld$}%|\par
+| \braceld\leaders\vrule height\ht0 depth0pt\hfill\braceru|\par
+| \bracelu\leaders\vrule height\ht0 depth0pt\hfill\bracerd$}|\par
+\smallskip[Also delete lines 21 and 22, as the usage is no longer restricted.]
+}
+
+\bugonpage A359, line 25 (3/5/95)
+
+\ninepoint\noindent
+|\def|^|\skew||#1#2#3{{\muskip0=#1mu \mkern.5\muskip0|\par\noindent
+| #2{\mkern-.5\muskip0{#3}\mkern.5\muskip0}\mkern-.5\muskip0}{}}|
+
+\bugonpage A360, line 5 from the bottom (3/5/95)
+
+\ninepoint\noindent
+|\def\@vereq#1#2{\lower.5pt\vbox{\lineskiplimit\maxdimen \lineskip-.5pt|
+
+\bugonpage A361, lines 19 and 20 (3/5/95)
+
+\ninepoint\noindent
+|\def|^|\bmod||{\nonscript\mskip-\medmuskip \mkern5mu|\par\noindent
+| |^|\mathbin||{\rm mod} \penalty900 \mkern5mu \nonscript\mskip-\medmuskip}|
+
+\bugonpage A362, lines 14--18 (3/5/95)
+
+\ninepoint\noindent
+| |^|\everycr||{\noalign{\ifdt@p \global\dt@pfalse|%
+ | \ifdim\prevdepth>-1000pt|\par\noindent
+| \vskip-\lineskiplimit \vskip\normallineskiplimit \fi|\par\noindent
+| \else \penalty|^|\interdisplaylinepenalty|| \fi}}}|\par\noindent
+|\def\@lign{\tabskip=0pt\everycr={}} % restore inside \displ@y|\par\noindent
+|\def|^|\displaylines||#1{\displ@y \tabskip=0pt|
+
+\bugonpage A363, lines 8--9 from the bottom (12/8/89)
+
+{\ninepoint\parindent=0pt
+| \if@mid \dimen@=\ht0 \advance\dimen@ by\dp\z@ |%
+ |\advance\dimen@ by12\p@|\parbreak%
+| \advance\dimen@ by\pagetotal \advance\dimen@ by-\pageshrink|
+\par}
+
+\bugonpage A364, line 5 from the bottom (4/11/96)
+
+\ninepoint\noindent
+|\def\fmtname{plain}|\par\noindent
+|\def\fmtversion{3.141592} % identifies the current format|
+
+\bugonpage A374, line 3 (3/7/95)
+
+\ninepoint\indent
+|\begingroup\aftergroup\def\aftergroup\asts\aftergroup{|
+
+\bugonpage A410, line 23 (4/18/96)
+
+\ninepoint\noindent
+| Tema con variazione \(su un tema differente)|
+\smallskip\eightpoint\noindent
+(This implies a corresponding correction to page 411.)
+
+\bugonpage A451, line $16$ (8/8/93)
+
+\ninepoint\noindent
+But when plain \TeX\ is tried on the name of a famous ^{Welsh} village,
+
+\bugonpage A462, right column (3/5/95)
+
+\def\cong{\mathrel{\mathpalette\OvOreq\sim}} % congruence sign, index version
+\def\OvOreq#1#2{\lower.5pt\vbox{\baselineskip0pt\lineskip-.0pt
+ \ialign{$#1\hfil##\hfil$\crcr#2\crcr=\crcr}}}
+\eightpoint
+|\cong| ( $\cong$ ), 151, $\underline{360}$, 436.
+
+\bugonpage A463, right column (6/25/93)
+
+\eightpoint
+direct sum, {\sl see\/} |\oplus|.
+
+\bugonpage A464, left column (6/25/93)
+
+\eightpoint
+|\downbracefill| (\hbox to 4em{\downbracefill}), 225--226, $\underline{357}$.
+
+\bugonpage A483, lines 15--21 (4/29/97)
+
+\tenpoint
+\begintt
+email: {\tt TUG@tug.org}
+internet: {\tt http://www.tug.org/}
+}
+\endtt
+Don't delay, subscribe today! That address again is
+
+\smallskip
+{\obeylines
+\TeX\ Users Group
+email: {\tt TUG\char`\@ tug.org}
+internet: {\tt http://www.tug.org/}
+}
+
+\bye
diff --git a/Master/texmf-doc/doc/english/knuth/errata/errorlog.tex b/Master/texmf-doc/doc/english/knuth/errata/errorlog.tex
new file mode 100644
index 00000000000..dc4845c1c19
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/errorlog.tex
@@ -0,0 +1,2924 @@
+% Appendix to the Errors of TeX paper (updated)
+% Section numbers now adjusted to TeX 3.0 equivalents
+% NB: tab marks are significant in this file, they signal continuation lines
+%\magnification=\magstephalf
+%\pageno=35
+\input logmac
+* 10 Mar 1978
+L1. Rename a few external variables to make their first six letters unique.
+D2. Initialize \\{escape_char} to $-1$, not 0 [it will be set to the
+ first character input]. @240
+L3. Fix bug: The test `$\\{id}<\O{200}$' was supposed to distinguish one-letter
+ identifiers from longer (packed) ones, but negative values of
+ \\{id} also pass this test. @356
+B4. Fix bug: I wrote `{\bf while} $\alpha\land(\beta\lor\gamma)$' when I meant
+ `{\bf while} $(\alpha\land\beta)\lor\gamma$'. @259
+R5. Initialize the input routines in |INITEX| [at this time a short,
+ separate program not under user control], in case errors occur. @1337
+E6. Don't initialize \\{mem} in |INITEX|, it wastes time. @164
+B7. Change `\\{new_line}' [which denotes a lexical scanning state] to
+ `\\{next_line}' [which denotes
+ \\{carriage_return} and \\{line_feed}] in print commands.
+F8. Include additional test `$\\{mem}[p] \ne 0\; \land$' in \\{check_mem}. @168
+M9. Fix inconsistency between the \\{eq_level} conventions of \\{macro_def} and
+ \\{eq_define}. @277
+# About six hours of debugging time today.
+# |INITEX| appears to work,
+ and the test routine got through \\{start_input},
+ \\{chcode} [the \TeX78 command for assigning a \\{cat_code}],
+ \\{get_next}, and \\{back_input} the first time.
+* 11 Mar 1978
+I10. Insert space before `|(|' on terminal when opening a new file. @537
+F11. Put `$p\gets \\{link}(p)$' into the loop of \\{show_token_list},
+ so that it doesn't loop forever. @292
+L12. Shift the last item found by \\{scan_toks} into the \\{info} field.
+ [With |SAIL| all packing of fields was done by arithmetic operations,
+ not by the compiler.] @474
+B13\>12. Fix the previous bugfix: I shifted by the wrong amount. @474
+I14. Add a feature that prints a warning when the end of a file page occurs within
+ a macro definition or call. [System dependent.] @336
+# Unintended bugs in my test routine [a format intended eventually to typeset
+ {\sl The Art of Computer Programming\/}] helped check out the
+ error recovery mechanisms.
+ For example, I had `|\lft{#}|' instead of `|\lft{##}|' inside a macro,
+ and three cases of improper |{|~and~|}| nesting.
+F15. Add the forgotten case `\\{set_font}:' to \\{eq_destroy}. @275
+C16. Change |\require| to |\input|. @376
+F17. Add code for the case $\\{cur_cmd}=0$ [later known as the case
+ `$\,t\ge\\{cs_token_flag}$'] when scanning a tokenlist. @357
+# That's the first ``big'' error I've spotted so far.
+I18. Introduce a `|d|' option in the error routine, to facilitate debugging. @84
+L19. Assign a floating-point constant \\{ignore_depth} to \\{prev_depth},
+ instead of assigning the integer constant \\{flag}
+ [since \\{prev_depth} is type \\{real} in \TeX78]. @215
+I20. Improve the readability and spacing of \\{show_node_list} output. @182,187
+F21. Set the variable $v$ before using the {\bf case} construction in
+ \\{show_node_list}, because there's one case where $v$
+ didn't receive a value [as part of the field unpacking]. @182
+# About seven hours today.
+* 12 Mar 1978
+# One hour to enter yesterday's corrections and recompile.
+# At this point \TeX\ correctly located further unintended syntax errors
+ in |acphdr| [the test file].
+I22. Insert \\{debug_help} into \\{succumb}, giving a chance to look at memory
+ before the system dies. @93
+D23. Use \\{eq_destroy} wherever necessary in \\{unsave}. @283
+L24. Change `$t \gets (t-1)$ mod 8' to `$t \gets (t-1)$ land~7' in \\{id_name},
+ since |SAIL| has $-1$~mod~$8 = -1$. [At this time, \\{id_name} is a
+ routine that unpacks control sequence names, according to a scheme
+ that will become obsolete after change \#422.]
+S25. Remove the space that appears at end of paragraph.
+ (I hadn't anticipated that.) @816
+L26. Throw away unwanted \\{line_feed} after getting a \\{carriage_return}
+ in response to \\{in_chr_w} [a system routine for
+ input from the terminal]. @83
+B27. Delete spurious call to \\{flush_list} in \\{end_token_list}. @324
+# Why did I make such a silly mistake?
+F28. Fix bug in \\{get_x_token}: I forgot to say `\\{macro_call}' (which is the
+ main point of that routine)! @380
+# While tracking that bug down, I found out incidentally that kerning is okay.
+# Also \TeX\ correctly caught an error |0p| for |0pt|.
+L29. Fix bug in \\{scan_spec} ({\bf while} instead of {\bf repeat}). @404
+M30. Make the table entries for |\hfill| and |\hskip| consistent with the
+ program conventions. @1058
+L31. Disable unforeseen coercion: When \\{scan_spec} put \\{hsize} on
+ \\{save_stack}, the value changed from \\{real} to \\{integer}. @645
+I32. Use `|*|' instead of `|-1.0|' for running dimensions
+ of rules in \\{show_node_list}. @176
+D33. Clear \\{mem}[\\{head}] to null in \\{push_nest} [in \TeX82, this
+ will be done by \\{get_avail}]. @216
+# A vrule link got clobbered because I forgot to do this.
+I34. Translate ASCII control codes to special form when displaying them. @48,68
+# Ligatures work, but \\{show_node_list} showed them funny.
+F35. Remember to clear parameters off \\{save_stack} in \\{package} routine. @1086
+# About eight hours today.
+* 13 Mar 1978
+D36. Introduce a new variable \\{hang_first} [later the sign of \\{hang_after}]. @849
+E37\>36. Simplify the new code, realizing that if $\\{hang_indent}=0$ then
+ \\{hang_first} is irrelevant. @848
+# Time sharing is very slow today, so I'm mostly reading technical reports while
+ waiting\/ {\bf three hours} for compiler, editor, and loading routine.
+# I'm not counting this as debugging time!
+# (Came back in the evening.)
+P38. Spruce up the comments in the \\{line_break} routine, which appears to be
+ almost working. @813
+D39. Rethink the setting of \\{best_line}; it's 1 too high in many cases.
+ [The final line of a paragraph was handled in a treacherous way.] @874
+D40. Compute proper initialization for
+ \\{prev_depth} when beginning an |\hbox|
+ with a paragraph inside. [This refers to a special `paragraph box'
+ construction, used when an hbox of specified size becomes overfull;
+ \TeX78 doesn't have the concept of internal vertical mode.] @1083
+D41. Also initialize \\{tail} in that case. @1083
+M42. Also put the result of line-breaking into the correct list.
+T43. Fix a typo in the \\{free_node} routine (`\\{link}' not `\\{llink}');
+ by strange chance it had been harmless until today. @130
+F44. Fix bug: \\{post_line_break} forgot to set \\{adjust_tail}. @889
+D45. Update \\{act_width} properly when looking for end of word while
+ line breaking. @866
+B46. Repair the ``tricky'' part of \\{get_node}: I used the \\{info} field
+ when I meant to say \\{llink}. @127
+# Now the |\corners| macro of |acphdr| works! [See |\setcornerrules|
+ in {\sl The \TeX book}, page 417.]
+D47. Reset \\{contrib_tail} properly in \\{build_page}. @995
+T48. Fix typo (|-| for |+|) in computation of \\{page_total}. @1004
+S49. Change the page-breaking logic: \TeX\ reached \\{fire_up} with
+ $\\{best_page_break}=\\{null}$ in one case,
+ since the badness was too bad. @1005
+M50. Perform the operation \\{delete_token_ref}(\\{top_mark}) only when
+ $\\{top_mark}\ne0$. @1012
+F51. Make \\{scan_toks} omit the initial |{| of an |\output| routine. @473
+I52. Insert a comma to make memory usage statistics look better. @639
+# About seven good hours of debugging today.
+# Tomorrow will be first-output day (I hope).
+* 14 Mar 1978
+# (Came in evening after sleeping most of day, to get computer at better time.)
+# (Some day we will have personal computers and will live more normally.)
+# 8:30pm, began to enter corrections to yesterday's problems.
+I53. Issue an error message for non-character in filename or in font name. @771
+I54. Display `|...|' for omitted stuff in \\{show_context} routine. @643
+L55. Watch out for the |SAIL| syntax `$\alpha+\beta\mathbin{\rm lsh}\gamma$';
+ it doesn't shift $\alpha+\beta$ left (only $\beta$). @464
+# That error was very hard to track down; it created a spurious link field
+ and sent $\\{hash}[0]=\null$|\beta| to the scanner!
+# I could have found this bug an hour sooner if I had looked at the correct
+ stack entries for \\{name} and \\{token_type}.
+D56. Show the correct page number when tracing pages before output is shipped. @638
+F57. Remember to nullify a box after using it. @1079
+I58. Issue an error message if\/ |\box255| isn't consumed by the output routine. @1015
+# I'm having trouble with the |BAIL| debugger;
+ it makes an illegal memory reference and dies,
+ when single-stepping past the entry to recursive procedures
+ \\{hlist_out} and \\{vlist_out}. So I have to reload and be careful
+ to go thru these procedures at high speed.
+P59. Fix bug in comment (memory parameter description said $\ge$ not $\le$). @11
+B60. Fix typo in definition of rule output (said $x,y$ not $\\{x0},\\{y0}$).
+ [This part of the code went away when |DVI| files were introduced.]
+B61. Correct the embarrassing bug in shellsort, where I said `$\le\\{str}[k]$'
+ not `$\le t$'.
+ [The first \TeX\ had to sort all output by vertical position on page.]
+M62. Make \\{start_input} set up \\{job_name} in the form needed by \\{shipout};
+ it uses obsolete conventions. @532,537
+L63. Insert |(| and |)| into the |SAIL| macro definition of \\{new_string}.
+ [This macro was for pre-|DVI| output.]
+M64. Unscramble the parameters of \\{out_rule}:
+ The declaration was $(\\{x0},\\{y0},\\{x1},\\{y1})$
+ while the call was $(\\{x0},\\{x1},\\{y0},\\{y1})$.
+# 4:30am, \TeX's first page is successfully output!
+# (It was `|\titlepage\setcpage1\corners\eject\end|'.)
+* 15 Mar 1978
+# 10:30pm. Today I'm instrumenting the line-breaking routine and putting it
+ through a bunch of tests.
+# (The inserted instrumentation had bugs that won't be mentioned here.)
+C65. Don't abort the job when \\{eq_destroy} redefines a
+ \TeX\ control sequence. @275
+# The first word of a paragraph won't be hyphenated \dots\ so be it!
+T66. Fix the typo in \\{line_break} that spoils the test for
+ `letters in the same font'. @896
+# The effect of that typo was to suppress all hyphenation attempts.
+B67\>25. Replace the space at paragraph end by fillglue, not by zero. @816
+L68. Pack the hyphen character properly into its node. @582
+T69. Fix a typo (`{\tentex\char'30}' for `|+|')
+ in the computation of \\{break_width}. @838
+M70. Change the |\end| maneuver; the present code doesn't end the job,
+ since I forgot that \\{back_input} uses \\{cur_tok}. @1054
+A71. Add a parameter to \\{try_break}, since the width is different at
+ a discretionary hyphen. [This problem will be solved differently in \TeX82,
+ when discretionaries become much more general.] @840
+F72. Bypass kern nodes in pre-hyphenation. @896
+F73. Supply code for the forgotten case `$<$ |"a"|' in pre-hyphenation.
+ [This case was later generalized to a test of \\{lc_code}.] @897
+B74. Change $\\{mem}[q]$ to $\\{prev_break}(q)$ in the
+ reverse-linking loop. @878
+# (Such blunders. Am I getting feeble-minded?)
+A75. Introduce special logic for \\{eject_penalty}; I was wrong
+ to think that forced ejection was exactly like an
+ infinitely negative penalty. @851
+A76. Use $(1+b)^2-p^2$ when computing demerits with $p<0$. @859
+# 6:30am. The line-breaking algorithm appears to be working fine
+ and efficiently.
+ On small measures (about 20 characters per line), it gives overfull boxes
+ instead of spaced out ones. Surprising but satisfactory.
+* 16 Mar 1978
+# 9pm. The plan for tonight is to test page breaking and more paragraphing.
+G77. Insert `|\topskip|' glue at beginning of page. @1001
+I78. Add `|\pausing|' feature. @363
+M79. Fix discrepancy: In \\{make_accent} I called \\{vpackage}
+ with a pointer to the first list item, but \\{vpackage} itself assumes
+ that the parameter is a pointer to that pointer. [The
+ \\{vpackage} of \TeX82 will be different.] @668
+# I checked for other lapses like that. Result: 14 calls OK, 12 NG.
+M80. Create a new temporary list head location, \\{hold_head}, since there's
+ a case where \\{vpackage} is improperly called with
+ parameter \\{temp_head}. [At this time \\{vpackage} uses \\{temp_head}
+ to make a list of all insertions found.] @1014
+# 11:30pm. The machine is tied up again.
+F81. Write code to handle charnodes in vlists; I forgot that I'd decided
+ to allow them. [Later I prohibited them again!] @669
+F82. Combine the page lists before pruning off glue
+ in \\{fire_up}; otherwise the pruning doesn't go far enough. @1017
+B83\>25. Fix typo where line-breaking starts: `\\{fill_glue}' should be
+ `\\{new_glue}(\\{fill_glue})'. @816
+I84. Add |/q| to |xspool| command (cosmetic change). [This changes a system
+ command that causes \TeX\ output to be printed on the Xerox Graphics
+ Printer (XGP), the progenitor of future laser printers;
+ the |/q| option says that the queue of printing requests should be
+ displayed on the user's terminal.] @642
+E85. Don't write a form feed after the last page of output. @642
+# To fix this, I reorganized \\{ship_out}, and it became simpler.
+T86. Correct a typo (`{\tentex\char'30}' for `|+|') in the \\{vlist_node} case
+ within \\{hlist_out}. [The output routines were quite different
+ at this time, because output went directly to the XGP.] @622
+I87. Change the message `|completed page|' to `|Completed for page|'. @638
+B88\>48. Fix yet another typo in the computation of \\{page_total}: My original
+ code said $\\{stretch}(p)$ instead of $\\{stretch}(q)$ (terrible). @1004
+P89. Document the dirty trick about \\{bot_mark}'s reference count.
+ [That trick is, fortunately, no longer useful.] @1016
+A90. Rethink the algorithm for contributing an insertion: The original code
+ tests for a page break after incrementing the totals but
+ before the \\{contrib_list} is updated. [\TeX78 handles insertions
+ in a hardwired manner that will be greatly generalized in \TeX82.]
+F91. Fix \\{get_node} again:
+ After the variable memory overflows, control falls through to \\{found}
+ instead of going to the \\{overflow} call. @125
+# I spent several hours tracking down that data structure bug!
+B92. Change \\{new_line} to \\{next_line} in yet another print command (see \#7).
+A93\>75. Amend the line-breaking algorithm:
+ |\break| in paragraph doesn't work with really bad breaks. @851
+# A problem to be diagnosed tomorrow: Each time I run the test program,
+ the amount of memory in use grows by 13 cells not returned.
+# Seven hours tonight.
+* 17 Mar 1978
+G94. Introduce \\{dead_cycles} to keep |\end| active until \\{ship_out}
+ occurs. @1054
+E95. Don't call \\{line_break} with an empty list. @1096
+S96. Take proper account of the (infinite) fillglue when computing
+ the width of a paragraph line preceding a display. @1146
+M97. Add a new parameter to \\{hpack} so that \\{line_break} won't be called
+ at the wrong time.
+ [This is for the soon-to-be-obsolete feature described in \#40.]
+L98. Give a warning message if there's an |\hfill| in the middle of a paragraph;
+ fillglue upsets the line breaker,
+ because floating-point calculations don't have sufficient accuracy. @868
+# I spent an hour looking for another bug in \TeX, but the following one was in \MF:
+ The \\{xgp_height} data in fonts had been supplied wrong.
+# It took two hours to recompile 32 fonts with proto-\MF.
+R99. Make \\{show_node_list} and \\{show_token_list}
+ more robust in the presence of software bugs. @182
+D100\>97. Do not remove nodes with \\{eject_penalty},
+ when the new parameter to \\{hpack} is \\{true}.
+E101\>97. Put a fast exit into \\{hpack}; e.g., at glue nodes, test `{\bf if}
+ \\{paragraphing} $\land$ $\langle$current width is large$\rangle$'.
+# 2am. I have to go to bed ``early'' tonight.
+* 18 Mar 1978
+# 3:30pm. (Saturday)
+I102. Add a parameter to \\{check_mem} (to suppress display unless needed). @167
+G103. Introduce a user-settable parameter |\maxdepth|, and
+ pass it as a parameter to \\{vpackage}. @668
+# I realized the need for |\maxdepth| while fixing insertions (see \#90).
+G104. Introduce a user-settable parameter for \\{line_break}: The constant
+ 2.0 in my original algorithm becomes |\jpar|
+ [later |\tolerance|], to be set like |\tracing|. @828
+D105. Reclaim the \\{eject_penalty} nodes removed during line-breaking. @879
+# (Those were the 13 extra nodes reported on Thursday.)
+# The \\{init_align} procedure worked right the first time!
+# Also \\{init_row}, \\{init_col}. But then\thinspace\dots
+S106. Rethink the command codes: \\{endv} in a token list has too high a
+ code for the assumptions of \\{get_next}. @207
+A107. Add a \\{prev_cmd} variable for processing delimited macro parameters;
+ the original algorithm loses track of braces.
+ [The rules will change slightly in \TeX82, and
+ \\{rbrace_ptr} will take on a similar function.] @400
+S108. Make the \\{get_next} routine intercept |&| and |\cr| tokens. @342
+# I'd thought I could just put |&| and |\cr| into
+ \\{big_switch} [i.e., in the stomach of \TeX, not the eyes];
+ that was a great big mistake.
+R109. Make more error checks on \\{endv}; e.g., it must not occur in
+ a macro definition or call. @780
+S110\>108. No, rethink alignments again; the new program still fails! @768
+# For the first time I can glimpse the
+ hairiness of alignment in general (e.g., `|\halign{\u#\v&...|'
+ when |\u| and |\v| are defined to include |&|'s and possible
+ alignments themselves).
+# I think there's a ``simple'' solution, by considering only whether
+ an alignment is currently active [in \S342].
+# 11:30pm. Went to bed.
+* 19 Mar 1978
+# Woke up with ``better'' idea on how to handle |&| and |\cr|.
+# (Namely, to consider a special kind of\/ |\def| whose parameters don't interrupt
+ on |&|'s and |\cr|'s.)
+# But replaced this by a much better idea (to introduce \\{align_state}).
+# 11pm. Began to use computer. Performed major surgery
+ (inserting \\{align_state} and updating the associated routines
+ and documentation).
+D111. Pop the alignment stacks in \\{fin_align}. @800
+T112\>110. Fix a (newly inserted) typo in \\{show_context}. @314
+D113\>110. Set \\{align_state} false when a live |&| or |\cr| is found.
+ [Originally \\{align_state} was of type \\{boolean}.] @789
+I114. Insert |\cr| when `|}|' occurs prematurely in an alignment. @1132
+M115. Remember to record \\{glue_stretch} when packaging an unset node. @796
+# I had a mistake in |acphdr| definition of\/ |\quoteformat|; also extra spaces.
+# My first test programs, used before today, were contrived to test macro
+ expansion, line-breaking, and page layout.
+# Next I'm using a test program based on Volume 2.
+C116. Make carriage-return, space, and tab equivalent for macro matching. @348
+F117. Omit the reference count node when displaying a mark. @176
+B118. Correct a silly slip: I wrote `\\{type_displacement}' instead of
+ `\\{value_displacement}' when packing data in a penalty node. @158
+M119. Don't go to \\{build_page} after seeing |\noindent|; \TeX\ isn't
+ ready for that.
+ [In the original program, this was an instance of a bad {\bf goto}.] @1091
+# I had undesired spaces coming thru the scanner in my macro definitions
+ of\/ |\tenpoint| [see {\sl The \TeX book}, page 414].
+# 4am. \TeX\ now knows enough to typeset page 1 of Volume 2!
+# Also it did its first ``math formula'' (namely `|$X$|') without crucial error.
+# (Except that the italic correction was missing for some reason.)
+D120. Remember to decrement \\{cur_level} in \\{fin_align}. [The routines will
+ eventually become more general and use \\{unsave} here.] @800
+D121. Remember to increment \\{cur_level} in error corrections by
+ \\{handle_right_brace}. [A better procedure will be adopted later.] @1069
+T122. Fix a typo: (`|{|' instead of `|}|') in error message for $\\{mmode}+
+ \\{math_shift}$. @1065
+R123\>99. Make \\{show_noad_list} more robust and more like the new
+ \\{show_node_list}. [The routines will be combined in \TeX82.] @690
+L124. Fix a typo in \\{char_box}: should say \\{font_info_real}.
+ [In \TeX78 a single array
+ is used for both \\{real} and \\{integer}; in \TeX82 things will be
+ \\{scaled}.] @554
+B125. Fix typos in the definitions of \\{default_rule_thickness} and
+ \\{big_op_spacing}; they shouldn't start at \\{mathex}(7). @701
+B126. Reverse the \\{before} and \\{after} conventions in math nodes. @1196
+# I had them backwards; this turned
+ hyphenation on just before math, and off just after it!
+# Seven and a half hours debugging today.
+ Got through the test program a little more.
+ But \TeX\ blew up on `|$Y+1$|'; tomorrow I hope to find out why.
+* 20 Mar 1978
+# 8pm. I decided to work next on a super-hairy formula.
+C127. Change `|\ascii|' to `|\cc|' (character code). [This name will change again
+ later, to `|\char|'.] @265
+E128. Don't bother to store a penalty node at the beginning of |$$| when
+ the paragraph-so-far fits on a single line, since such a penalty
+ has already been stored. [These conventions will change later, and
+ the |\predisplaypenalty| will always be stored.] @1203
+S129. Avoid reference to \\{tail} in \\{build_page},
+ if $\\{nest_ptr}>0$. @995
+B130. Correct a silly
+ slip in \\{math_comp} (the exact opposite of what I did in \#118). @1158
+B131. Rectify my mental lapse in \\{make_fraction}; I said \\{nucleus} instead of
+ \\{thickness}. @743
+F132. Mask off the math class when scanning delimiters. @1160
+C133. Allow an optional space after |\def{...}|. [This decision
+ will be retracted later.] @473
+# My test example is so complicated it causes the semantic stacks to overflow!
+L134. Don't test for no pages output by looking at the channel status. @642
+T135. Fix typo in definition of\/ |\mathop| (\\{open_noad} not \\{op_noad}). @1156
+A136. Rewrite \\{fin_mlist}, because `|\left(...\above...\right)|' doesn't
+ parse correctly; the |\left| goes into the numerator,
+ the |\right| into the denominator. @1184
+B137. Correct the use of \\{depth_threshold} in \\{print_subsidiary_data}:
+ Simple fields get shown while others look empty. @692
+I138\>78. Return the carriage before showing the first line of a new file
+ when pausing. @538
+M139. Fix bug: The call \\{show_noad_list}(\\{mem}[|..|]) should be
+ \\{show_noad_list}(|..|), in the \\{incompleat_noad} case
+ of \\{show_activities}. @219
+# 3am. The whole messy formula has been parsed correctly into a tree.
+# The easy part is done, now comes the harder part.
+F140. Don't shift single characters down in \\{make_op}. @749
+D141. Make \\{clean_box} return a box (as its name implies), not an hlist. @720
+# Font info still isn't quite right, it has the wrong value of \\{quad}.
+A142. Retain the italic correction when doing \\{rebox};
+ can make $\\{glue_set}\ne0$ a flag for this. [A better
+ solution will be adopted later.] @715
+B143. Fix the bug that makes \\{rebox} bomb out: $\\{value}(p)$ should be
+ $\\{value}(\\{mem}[p])$. @715
+# 6am; ten hours today. \TeX\ didn't do |$\pi\over2$| correctly, but was close.
+# I found that the \\{rebox} problem (\#142) went away when I fixed the
+ \\{clean_box} problem (\#141); but I
+ will leave the extra stuff about $\\{glue_set} \ne 0$
+ in the program anyway, just for weird cases.
+E144. Omit extra levels of boxing when possible in \\{clean_box}. @721
+# (To do this, I need to face the \\{rebox} problem anyway.)
+* 21 Mar 1978
+# 10pm. The computer is rather heavily loaded tonight.
+F145. Don't forget \\{thickness} when making a square-root sign (see \#131).
+ [The rule thickness will later be derived from the character height.] @737
+L146. Define $p$ local to the \\{make_fraction} routine. @743
+# Unwittingly using the global $p$ was a disaster.
+I147. Don't show the amount of \\{glue_set} when it's zero. @186
+D148\>142. Make \\{glue_set} nonzero in the result of \\{var_delimiter}. @706
+F149. Fix bug: The \\{math_glue} function didn't return any result. @716
+T150. Fix typo in \\{char_box} ($c$ not $w$); this caused a subscripted~$P$ to come
+ out the same width as an unsubscripted~$P$. [Later changes in the rules
+ will move this computation to \S755.] @709
+P151\>144. Revise \\{clean_box} to do operations that are needed
+ often because of the \\{rebox} change. @720
+D152. Use the new \\{clean_box} to avoid a bug in |\sqrt{\raise...}|. @737
+Q153. Change the definition of\/ |\not| so that it's a relation
+ (which will butt against the following relation). [All math
+ symbols and Greek letters are defined in |INITEX| at this
+ time, not in a changeable format definition.]
+I154. Give error message `{\tt Large delimiter must be
+ in mathex font}', instead of calling \\{confusion},
+ since the error can occur.
+ [This particular error is impossible in \TeX82.] @706
+F155. Change the use of $p$ in \\{var_delimiter}; it isn't always set when I say
+ {\bf goto} \\{found}. @706
+# Another font problem now surfaced: The mathex meta-font didn't compute \TeX\ info
+ in a machine-independent way.
+ (It took two hours to correct this.)
+D156. Don't forget to set $\\{type}(b)$ in all relevant cases of
+ \\{var_delimiter}. @708
+B157. Use the correct sign convention for \\{shift_amount} in \\{hpackage}. @653
+F158. Always kern by \\{delta} when there's no superscript. @755
+M159. Declare \\{space_table} to be $[0\,.\,.\,6,0\,.\,.\,6]$
+ not $[0\,.\,.\,7,0\,.\,.\,7]$; otherwise its entries are
+ pre\-loaded into the wrong positions. [The \\{space_table} in \TeX78 is
+ $7\times7$; it will become $8\times8$ in \TeX82,
+ represented as a string called \\{math_spacing}.] @764
+C160. Use a negative value, not zero, to represent a null delimiter.
+ [Actually zero will come back again later.] @685
+C161\>127. Change |\cc| to |\char|. @265
+L162. Don't use tricky subtraction on packed data when changing $q$ to
+ an \\{ord_noad} in \\{mlist_to_hlist}; subtraction isn't always safe. @729
+B163. Fix two typos in the \\{space_table} (|*| for |0|). @764
+F164. Initialize \\{cur_size} everywhere (I forgot it in two places). @703
+A165. Reset \\{op_noad} before resetting \\{bin_noad}. @728
+F166. Treat $\\{display_style}+\\{cramped}$ the same as \\{display_style}
+ inside \\{make_op}. @749
+B167. Shift the character correctly in the non-|\displaystyle| case of
+ \\{make_op}. @749
+# Still another font problem: The italic corrections are wrong because
+ the corresponding array was declared \\{real} in proto-\MF\ (and
+ italic corrections were used in nonstandard way in |mathex|).
+B168. Use \\{depth} instead of \\{height} in \\{var_delimiter}.
+ [Later, both were used.] @714
+Q169. Skew the accents according to the font \\{slant}. [Soon retracted.] @741
+# At this point I think nearly all the math routines have been exercised.
+# Tomorrow they should work!
+# Eight hours debugging today.
+* 22 Mar 1978
+# (Wednesday, but actually Thursday:
+ I began at midnight because I was proofreading a paper.)
+# I checked out the font access tables, slowly (i.e., all the |\mathcode|
+ and special-character name entries were catalogued).
+Q170\>169. Do {\bf not\/} consider slants after all in the math accent
+ routine, since slanted math letters are put differently into fonts. @741
+B171. Don't use $q$ for two different things simultaneously
+ in \\{make_math_accent}. @738
+F172. Fix bug in \\{compact_list} (I forgot to advance the loop variable).
+ [This procedure became unnecessary in \TeX82.]
+M173. Avoid conflict between \\{var_delimiter} and \\{mlist_to_hlist}, which
+ want to use \\{temp_head} simultaneously. @713
+T174. Fix bad typo in \\{overbar} routine ($b$ for $p$). @705
+# Finally \TeX\ got to \\{after_math} after dealing with that
+ hairy formula\thinspace\dots
+T175. Fix another bad typo: $p$ for $b$ this time. @1199
+L176. Insert more parentheses (twice) because of `|lsh|' precedence
+ in |SAIL|. @1199
+M177\>36. Use the new hanging-indentation conventions when formatting displayed
+ equations. @1199
+Q178. Recompute penalties so that break is allowed after \\{punct_noad}s. @761
+F179. Center the large delimiters vertically. @749
+Q180. Round all rule sizes (up) before drawing them. @589
+Q181. Provide more space over $x$ in $\sqrt x$, and more space atop vincula.
+ @705,737
+Q182. Make large delimiters large enough to cover formula height
+ (important for subscripts, superscripts). @762
+I183. Insert |/ntn=33| on XGP prompt message so that complex math
+ won't blow the device driver. [See \#84.]
+P184\>161. Update the comment about the meaning of\/ |\char|, since it
+ can be used in math mode. @208
+# Six hours today.
+* 23 Mar 1978
+# 11pm, Maundy Thursday.
+C185\>104. Make |\tracing| and |\jpar| follow block structure. @283
+# It took me two hours to enter yesterday's corrections,
+ because the changes were so numerous.
+M186. Fix bad call on \\{begin_token_list} when marks are to be scanned. @396
+# Now the formula looks like it should, modulo problems in fonts.
+Q187. Prevent an exponent from going below baseline + xheight/4. @758
+B188. Change \\{quad} to \\{math_quad} when finishing a display
+ (several places). @1199
+A189. Don't use \\{append_to_vlist} when putting an |\eqno| box on a separate
+ line, because the page shouldn't break at glue there.
+ [Later, the \\{append} will be used but preceded by an
+ infinite penalty.] @1205
+S190. Increase the input \\{stack_size}; \TeX\ may need to back up a lot. @11
+A191. Don't assume that $p$ always points to a glue node when
+ a page is broken. @1017
+A192. Use \\{epsilon} in \\{scan_spec} (I had used a different
+ small constant). [This was a kludge to avoid the extra
+ parameter later called \\{exactly} or \\{additional}.] @645
+R193. Introduce a new procedure \\{scan_positive_length}, to prevent
+ negative or zero lengths in \\{scan_rule_spec}.
+ [This restrictive rule will be ``overruled'' later.] @463
+B194. Fix ridiculous bug in the leaders routine of \\{vlist_out}:
+ I had the initialization {\sl inside\/} the loop! @635
+L195. Eliminate confusion between the two temp variables named $h$;
+ one is \\{real} and the other is \\{integer}. @629
+F196. Include forgotten case (\\{leader_node}) in \\{hlist_out}.
+ [Type \\{leader_node} will be absorbed
+ into \\{glue_node} in \TeX82.] @622
+F197. Don't forget to compute \\{x0} in variable horizontal rules. @624
+# Seven and a half hours today.
+# \TeX\ seems to be ready to tackle my test file based on Volume 2.
+S198. Calculate \\{y00} in horizontal rules as an integer number of pixels
+ from the baseline, so that the baseline doesn't jump. @589
+* 25 Mar 1978
+# 2am Saturday. (Might as well drop Friday.)
+D199\>185. Make \\{def_code} consistent with the new |\tracing| conventions.
+ [Many tracing options are packed into a single
+ parameter called |\tracing|.] @1233
+R200\>185. Don't allow users to change nonexistent things like |\catcode1000|. @1232
+F201\>110. Reset \\{align_state} at beginning of \\{init_align}. @774
+F202. Don't forget \\{scan_left_brace} after |\noalign|. @785
+F203\>110. Set $\\{cur_cs}\gets 0$ in \\{get_next}, after |\cr|
+ causes a switch to the $\langle v_j\rangle$ template. @342
+# Ouch, that was a big bad bug, which took me three hours to find
+ (since I thought \TeX's low-level scanning mechanism was working).
+# Note to myself: I\/ {\bf knew\/} it would be cleaner to define \\{get_next}
+ so that it sets \\{cur_cs} to zero every time it begins [i.e.,
+ in \S341, where this change will in fact be made in \TeX82].
+ But I had avoided this on grounds of efficiency in the inner loop.
+ Well, now I have earned this tiny bit of efficiency.
+D204. Prohibit the first word of an unavailable node from becoming negative.
+ [The storage allocator of \TeX78 uses
+ a negative value to signify a node that is available, just as
+ `$\\{link}=\\{max_halfword}$' will signal availability in \TeX82.] @124
+# That was another bad one, it's not my night.
+# At least I'm developing more subtle diagnostic techniques.
+M205. Remember to un-negate the top \\{save_stack} entry
+ when \\{handle_right_brace} finishes an \\{insert_group}.
+ [This routine was completely revised in \TeX82.] @1100
+F206\>185. Initialize |\jpar| [i.e., |\tolerance|]. @240
+B207. Correct the display of insertion nodes by \\{show_node_list}. @188
+R208. Prevent \\{show_token_list} from generating really long strings
+ when in a loop. @292
+D209. Increase the reference count of \\{bot_mark} when
+ \\{vpackage} finds it. [This was later the job of \\{fire_up}.] @1016
+M210. Remember that the tokenlist for a mark ends with a |}|. @1101
+D211. Don't let \\{vpackage} lose the top insert. (It fails when
+ the very first item is a |\topinsert|.) @1014
+A212. And when that stupid code is corrected, make it handle
+ insertions first-in-first-out. @1018
+# Seven hours today.
+* 26 Mar 1978
+# Easter Sunday, will work till sunrise.
+I213. Add an `|i|' feature to the \\{error} recovery routine. @87
+I214. Include a prompt. @87
+C215. Ignore space after |\noalign{...}|. @1133
+# Otherwise, things are going well tonight;
+ I'm finding more bugs in my test program than in \TeX.
+# The `|i|' feature is proving to be very helpful.
+# I increased the size of \\{mem}
+ (now $\\{lo_mem_max}=3500$, $\\{mem_max}=10000$).
+# In fact I just needed to increase it again
+ (now $\\{lo_mem_max}=4500$, $\\{mem_max}=11000$).
+R216. Make |INITEX| output \\{mem_top} for consistency checking. @1307
+A217. Calculate the size of delimiters by considering the enclosed formula's
+ distance from the axis, not from the baseline. @762
+# I'm having trouble with a |SAIL| compiler bug; I must rearrange the program,
+ more or less at random, until it
+ compiles correctly. I hope the bug isn't more severe than it appears.
+D218\>210. Don't put a new group on \\{save_stack} if a null mark is expanded.
+ [\TeX82 will remove the `|}|' from the mark text.] @386
+# I had to redo the typewriter-style font since its width tables were wrong.
+# And I increased low-memory size again to 5500, then 6500.
+# Finally the entire test program was \TeX ed. Happy Easter! Six hours today.
+* 27 Mar 1978
+# Beginning at 2:30am.
+A219. Move |\vcenter| processing to the first pass of \\{mlist_to_hlist};
+ otherwise the height, depth, subscripts, etc., are way off. @733
+C220. Omit space after closing |$$|. @1200
+# Spacing is wrong in the formula $Y_1+\cdots+Y_k$; I have to rethink the use
+ of three dots.
+G221. Make conditional thin space available to user as |\|{\tentex\char'34}.
+ [Later will retract this.] @226
+Q222. Introduce |\dispaskip| and |\dispbskip| [later called
+ |\abovedisplayshortskip| and |\belowdisplayshortskip|]. @226
+# Reminder: I need to test line-breaking with embedded math formulas.
+I223. Make sure that $\\{interaction}\ne\\{error_stop_mode}$
+ in the `|Whoa|' error [\\{fatal_error}]. @93
+B224. Fix a big mistake in the \\{style_node} routine (which points to a glue spec,
+ not to glue itself); somehow this didn't cause trouble yesterday.
+ [In \TeX78, style nodes double as placeholders for math glue
+ like thin spaces.] @732
+C225. Make |\fntfam| obey group structure. [\TeX78's |\fntfam| operation
+ is a combination of \TeX82's
+ |\textfont|, |\scriptfont|, and |\scriptscriptfont|.] @1234
+# At this point the test routine for Volume 2 works perfectly.
+# But I will change the page width in order to check harder cases.
+Q226\>178. Disable automatic line breaks after punctuation in math
+ (e.g., consider $f(x,y)$). @761
+S227. Represent italic corrections as boxes, not glue, so that they won't be broken.
+ [The |\kern| command doesn't exist yet.] @1113
+# Eight hours today.
+B228. Fix a bug that just clobbered the memory: Call \\{free_avail}, not
+ \\{free_node}, in the \\{ins_node} case of \\{vpackage}.
+ [This logic will change completely in \TeX82.] @1019
+* 29 Mar 1978
+# (Wednesday) Again beginning at 2:30am.
+Q229. Put still more space above and below fraction lines in displayed
+ formulas. @746
+G230\>189. Install an infinite penalty feature, which positively suppresses breaks;
+ use it in displayed formulas whose |\eqno| doesn't fit. @1205
+F231. Call \\{build_page} after finishing a display; and don't
+ go to the |\noindent| routine because of the next remark. @1200
+S232. Put |\parskip| glue just before a paragraph, not just after
+ (since it interferes with a penalty after). @1091
+# Although the test program gives correct output, it generates 46 locations
+ of variable-size memory and 280 of one-word memory that are not freed.
+F233. Recycle the ulists and vlists in \\{fin_align}. @801
+M234\>25. Fix bug when deleting space at end of paragraph:
+ \\{delete_glue_ref}(\\{cur_node}) not
+ \\{delete_glue_ref}(\\{value}(\\{cur_node})). @816
+# There's also a more mysterious type of uncollected garbage,
+ a \\{fraction_noad} corresponding to
+ |$p\choose$|, an \\{incompleat_noad} not completed.
+# Couldn't find that one, so I recompiled with \#233 and \#234 corrected.
+# Now it gains just 10 locations of variable-size memory and 7 of the other kind.
+I235. Extend \\{search_mem} to search \\{eqtb} also. @255
+D236\>143. Fix bug in \\{rebox} when $\\{list_ptr}(b)=0$. @715
+# The seven one-word nodes were generated by this bug;
+ \\{rebox}\kern-1pt\ put them onto a linked list starting with
+ $\\{mem}[0]$, growing at the far end!
+D237. Remember to complete each \\{incompleat_noad}. @1184
+# This solved the other mystery. I had never noticed that my test output
+ was actually wrong: |$p\choose k$| came out as `$k$'.
+# After these corrections, the test routine worked\thinspace\dots\ I feel
+ that \TeX\ is now pretty well debugged
+ (except perhaps for error recovery)---it's time to celebrate!
+* 1 Apr 1978
+I238. Don't quit after file lookup fails. @530
+* 2 Apr 1978
+P239. Add \\{\TeX_font_area}, so that it's easier to change the
+ default library area associated with a device. @514
+* 3 Apr 1978
+L240. Insert parentheses again, to cope with the precedence of\/ |lsh|
+ when packing data. (See \#55 and \#176.) @1114
+# I had never tried $\\{hmode}+\\{discretionary}$ before!
+M241. Remember that \\{back_error} requires \\{cur_tok} to be set.
+ (Problem can arise during error recovery on parameter |#|$n$
+ with $n$ out of range.) @476
+* 4 Apr 1978
+I242. Add a deletion feature to the \\{error} routine. @88
+* 5 Apr 1978
+Q243. Reset \\{space_factor} after |\/| [this was later rescinded]
+ and after math in text. @1196
+* 10 Apr 1978
+G244\>104. Replace |\jpar| and |\tracing| by a new primitive |\chpar| for parameters.
+ It allows a user to change those quantities as well as the penalties for
+ hyphens, relations, binary ops, widows. @209
+* 14 May 1978
+# Beginning to typeset a real book (Volume 2, second edition), not just a test.
+Q245. Make math in text end with spacing as if it were
+ followed by punctuation. [This rule will soon be rescinded.] @760
+F246. Insert |\times| into the hash table; I left it out by mistake.
+ [It will eventually move into |plain.tex|.]
+C247. Change the names of Scandinavian accents from |\o|, |\oslash|,
+ |\Oslash| to |\a|, |\o|, |\O|. [This will also move to |plain|.]
+* 17 May 1978
+B248. Fix a silly bug that hasn't been tweaked until today:
+ `|\halign to size|' [obsolete in \TeX82] used \\{vsize}
+ instead of \\{hsize}. @645
+* 19 May 1978
+G249. Add a |\topbaseline| feature [later called |\topskip|]. @1001
+Q250\>245. Subtract the math spacing change of May 14. @760
+A251. Skip past blanks in the \\{scan_math} procedure. [This blank-skipping
+ will eventually go into \\{scan_left_brace}.] @403
+I252. Introduce a \\{missing_brace} routine [later generalized] to improve
+ error recovery in $\\{mmode}+\\{math_shift}$, when the top
+ of \\{save_stack} isn't a \\{math_shift_group}. @1065
+Q253. Adjust the math spacing between closing parentheses and
+ Ord, Op, Open, Punct. @764
+Q254. Make the underline go further under. @735
+S255\>96. Compute the proper natural width when a displayed equation follows
+ a paragraph whose fillglue has been deleted by \\{line_break}. @1146
+* 20 May 1978
+A256. Fix the spurious value of \\{prev_depth} inside alignments. @775
+S257. Consider (and defeat) the following scenario:
+ The u and v lists are built in \\{init_align} using \\{temp_head};
+ then while scanning `|\tabskip 2pt\rt{...}|' the macro |\rt| is expanded,
+ clobbering \\{temp_head}. @779
+# That bug was more subtle than usual.
+Q258. Add the parameter \\{num3}, so that the positioning of\/ |\atop|
+ can be different from that for fractions. @700
+Q259. Add new parameters \\{delim1} and \\{delim2}, so that
+ |\comb| can use fixed size delimiters, not computed as with |\left|. @748
+* 22 May 1978
+C260\>221. Change |\|{\tentex\char'34} to |\|{\tentex\char'35} and introduce
+ |\|{\tentex\char'34} as the negative of\/ |\|{\tentex\char'35}.
+ [Later obsolete.] @226
+L261. Fix the display of negative penalty nodes; \\{show_node_list} is confused
+ when a negative value has been packed into the middle of a word. @194
+# Memory overflow just occurred with $\\{lo_mem_max}=7500$ and $\\{mem_max}=16384$.
+ So I have to go to 15-bit pointers. (A problem on 32-bit machines?)
+* 23 May 1978
+Q262. Add a new parameter \\{big_op_spacing5}, for
+ extra space above and below limits of big displayed operators. @751
+F263. Initialize \\{incompleat_noad} in |$$\halign{...}$$|. @775
+# That was another heretofore-untested operation. How much of the code
+ has not yet been exercised?
+F264\>238. Close the file when doing lookup-failure recovery. @27
+I265. Improve the error recovery for `|Extra &|'. @792
+R266. The top piece must be calculated mod 128 in \\{var_delimiter},
+ to guarantee a valid subscript range. [Obsolete in \TeX82.] @546
+B267\>252. Fix a blunder in new \\{missing_brace} code. @1065
+B268\>262. Fix a blunder in new code for limits on display operators. @751
+* 26 May 1978
+Q269. Don't insert a new penalty after an explicit penalty in math mode. @767
+# The hash table overflowed; I ought to make it much bigger.
+R270\>110. Avoid possible bad memory references in alignment
+ when there is erroneous input after |\cr|. [Instead of
+ \\{extra_info}, the value of \\{cur_align} in \TeX78 is negated,
+ because we need only distinguish |\cr| from |&|.] @789
+S271. Make the dimension parameters like |\hsize| all global, so that they can
+ be set in the |\output| routine. @279
+# This led to major simplifications, also to major surgery.
+# [But it was a kludgy decision, overruled in \TeX82.]
+D272\>94. Don't forget to set the type of the new null box in the |\end| routine. @1054
+* 27 May 1978
+# The data overflowed memory again, both low and high, doing Section 3.3.2.
+R273\>184. Mask off extra bits of\/ |\char| in math mode,
+ to avoid bad memory references. @1151
+B274. Zero out the negative |\medmuskip| in script styles. @732
+* 29 May 1978
+S275. Be prepared to handle an undefined control sequence during \\{get_x_token}.
+ (Can fix this by brute force, using \\{get_token} instead of \\{get_next}.)
+ @380
+D276. Correct the superscript shift when a single character is raised. @758
+R277\>184. Mask off all but 7 bits in |\char| routine,
+ to avoid space-factor index out of range. @435
+# More memory capacity overflows.
+E278\>22. Fix \TeX's overflow stop so that I don't have to wait for loading of the
+ |BAIL| debug routines. [System dependent.] @93
+F279. Remember to adjust the page number
+ when a file page ends in mid-macro. [System dependent.] @306
+* 5 Jun 1978
+R280. Make sure that the arguments of positioning commands don't overflow
+ their field size. @610
+I281. Report the excess amount when giving an overfull box warning. @666,677
+* 7 Jun 1978
+Q282. Use $\ge$ instead of $>$ as termination criterion in \\{var_delimiter}. @714
+R283. Disallow |\eject| in math mode. [In \TeX78, |\eject| is
+ distinct from |\break|; in horizontal mode it includes
+ \TeX82's `|\vadjust{\break}|'.] @1102
+Q284. Don't put too much clearance above |\sqrt| in text style. @737
+* 9 Jun 1978
+G285\>110. Make \\{align_state} an integer variable, not \\{boolean},
+ so that |\eqalign| can be within another |\eqalign|. @309
+C286. A |\mark| should expand its input. @1101
+* 10 Jun 1978
+E287. Provide for preloading of fonts. @1320
+L288. Close the output file before switching to edit the input file with
+ the `|e|' option. @84
+E289. Return adjustments found by \\{hpack} to free storage if
+ they're not used. [Later, \\{hpack} will detach them only
+ when they're used.] @655
+Q290. Strive for consistency between \\{make_under} and \\{make_over}.
+ @735
+* 18 Jun 1978
+B291\>236. Fix a serious error in \\{rebox}
+ (`$b$' instead of `$\\{list_ptr}(b)$'). @715
+# Strange that such a bug would now surface for the first time!
+C292. Remove |\deg| from |INITEX|, since macros suffice.
+Q293. Add an extra hyphenation penalty for two hyphenated lines in a row. @859
+* 19 Jun 1978
+S294. Introduce the `\\{no_new_control_sequence}' switch. Among other things,
+ this will prevent an undefined control sequence following \\{scan_math}
+ from clobbering the save stack. @259
+* 20 Jun 1978
+L295. Change the badness test
+ `$\\{glue}\le0.0$' to `$\\{glue}\le0.0001$'. [\TeX82 will avoid such
+ problems by calculating badness without floating point arithmetic.] @99
+R296. Force \\{badness} to be at most $10^{19}$. @108
+I297. Add \\{end_template} for better error recovery in alignments. @375
+E298\>287. Make |INITEX| more like the real \TeX; my simple scheme for
+ font preloading was no good because it left thousands of `dead'
+ words in memory. @8
+E299. Economize disk space by using internal arrays in load
+ modules that aren't being reinitialized. [System dependent.]
+E300. Move the declaration of \\{mem} to the semantics module, so that the
+ object code will be more efficient. [System dependent. The code of
+ \TeX78 was divided into separately compiled modules for syntax,
+ semantics, output, extensions, and general organization.]
+* 21 Jun 1978
+# Today I'm working on the user manual.
+C301. Disallow |\input| except in vertical mode. [I will change this in
+ \TeX82, treating |\input| as a case of expansion.] @378
+I302. Add error recovery for \\{endv} and \\{par_end} occurring in math mode.
+ @1047
+G303. Generalize |\ifT| to |\if T|. @506
+* 22 Jun 1978
+F304. Preload the |\bullet| [later done by |plain.tex|].
+D305\>256. Get the correct \\{prev_depth} at the beginning of an alignment. @775
+C306. Change |\eject| so that it ejects only once. @1000
+* 14 Jul 1978
+I307. Look in standard area if a file isn't found in the user's area. @537
+I308. Echo all online inputs in the transcript file. @71
+* 19 Jul 1978
+Q309. Equalize spacing when only one of numerator/denominator is big. @745
+Q310. Prevent subscript from getting too high above baseline. @757
+R311. Avoid infinite loop when stack overflows: \\{push_input} should say
+ `{\bf if} $\\{input_ptr}\ge\\{stack_size}\;\land\;\\{interaction}=
+ \\{error_stop_mode}$'. @321
+* 22 Jul 1978
+C312. Make |\quad| meaningful outside math mode. (All fonts must
+ be generated again!) @558
+I313. Show the nesting level at the end of \\{show_activities}.
+ [But I decided not to do this in \TeX82.] @218
+C314. Put in |\>| [namely, |\mskip\medmuskip|;
+ \TeX78 already has |\|{\tentex\char'35}, for conditional |\thinmuskip|,
+ as well as the negative amounts |\<|,~|\|{\tentex\char'34}].
+ Change the name of vector accent from |\>| to |\b|. [Math spacing
+ operators will become much more general in \TeX82.] @716
+* 25 Jul 1978
+Q315\>94. Give the correct |\hsize| and |\vsize| to the null boxes created
+ at |\end|. @1054
+A316\>94. And don't ``append'' them. [Later this was changed, so
+ that it would work better with generalized output routines.] @1054
+I317\>297. Remove the control sequence |\endv|,
+ since error recovery is now better. @375
+I318. Define another mode of tracing: It says `|OK|' and stops after
+ |\showlists|. @1298
+Q319\>244. Give better defaults to parameters. [Later done by |plain.tex|.] @209
+I320. Allow more bits in the packed representation of\/ |\showboxdepth|. @238
+I321. Scan past delimiters and/or dimensions when recovering from
+ ambiguous fractions. @1183
+R322. Reduce accent numbers modulo 128 or 512, depending on the
+ mode. @1165
+I323. Include a warning, `|(\end occurred on level ...)|'. @1335
+* 28 Jul 1978
+# (I'm writing Chapter 27 of the manual: `Recovery From Errors'.)
+I324. Improve the error message in \\{scan_digit}. [This procedure will change
+ its name to \\{scan_eight_bit_int}, when the number of registers
+ increases from 10 to~256.] @433
+I325. Don't report overfull boxes if they're less than .1~point
+ over. @666,677
+I326. Give the user extra chances to define the font, if \\{read_font_info}
+ is unsuccessful. @560
+I327. Change default recovery for bad parameter number from |#1| to |##|, since
+ |#1| won't always work and since |##| is probably intended. @479
+I328. Omit the |"Negative?"| message on things like \\{scan_char_num}. @435
+I329. Improve error recovery when a large delimiter isn't in family~3.
+ [Obsolete.]
+I330. Give a more appropriate error message when the input is `|$\right|'. @1192
+# Currently \TeX\ says `|Missing $|'!
+I331. Call \\{back_input} before the error message in \\{back_error},
+ not afterwards. @327
+* 1 Aug 1978
+I332. Give an appropriate warning when there's no input file and the user
+ types `|e|'. @84
+L333. Increase the system pushdownlist size so that the manual will compile.
+ [Procedures \\{hlist_out} and \\{vlist_out} can recurse deeply.]
+# Yesterday I distributed 45 preliminary copies of the manual; today I
+ took out the ``debugging hooks'' and put \TeX\ up as a system program.
+* 2 Aug 1978
+# I'm typing Volume 2 again (currently in Section 4.2.2). Culture shock!
+G334. Introduce a |\ragged| parameter, to indicate a degree of raggedness.
+ [Previously, ragged-right setting was performed when the
+ |\tolerance|/100 was odd! Eventually a better approach,
+ with |\rightskip| and such things, will be discovered.] @886
+Q335. Omit the `widow penalty' in one-line paragraphs. @890
+* 5 Aug 1978
+G336. Generalize |\pageno| to |\count|\<digit>. @236
+D337\>285. Update \\{align_state} when recovering from `|Missing {|' and
+ `|Extra }|' errors. @1069,1127
+I338. Show ``runaway'' tokens, making it easier to pinpoint an error. @306
+* 22 Aug 1978
+G339. Add |\predisplaypenalty|. @1203
+I340. Clarify error messages; they should indicate when something has been
+ inserted, etc. @1064
+* 23 Aug 1978
+I341\>114. Substitute `|Extra }|' for the losing `|Missing \cr|' error message. @1069
+I342\>213. Go past online insertions in \\{show_context}. @311
+Q343. Exact no penalty for breaking one line before a display. @1145
+I344\>338. Check for runaways at end of file. @362
+I345. Give error message when a macro argument begins with |}|. @395
+* 24 Aug 1978
+L346\>213. Remove extra line-feed in \\{show_context} after printing insertions.
+ [System dependent.] @318
+* 25 Aug 1978
+Q347. Leave no glue at top of page, even after |\eject|. @997
+* 27 Aug 1978
+P348. Adopt Guy Steele's new version of the \TeX\ source files. [He has
+ recently made a copy and modified it by introducing
+ compile-time switches for MIT conventions as an alternative to SUAI.
+ This is the first time that \TeX\ is being ported to another site;
+ additional switches for PARC, TENEX, TOPS10, and TOPS20 will be
+ added later, using the Steele style.]
+* 1 Sep 1978
+Q349. Don't pass over leader nodes in the \\{try_break} background
+ computation. [At this time, leaders have not yet been
+ unified with glue.] @837
+Q350\>82. Prune away all penalties at the top of a page. @997
+* 4 Sep 1978
+I351\>338. Include `|\|' in error message about a runaway argument. @306
+* 8 Sep 1978
+# I just remade all the fonts, with increased ligature field size.
+B352\>350. Insert a necessary {\bf goto} statement in the first branch of
+ the new penalty routine within \\{build_page}. @997
+* 30 Sep 1978
+M353\>338. Make the token list for runaway arguments meaningful outside
+ of \\{macro_call}. (I just had a runaway argument ending with
+ `|\lcm|', which turned out to be the
+ control sequence in hashtable location 0.) @371
+R354. Avoid infinite loop when recovering from |$$| in
+ restricted horizontal mode. @1138
+L355. Fix two hyphenation bugs related to |-ages|, |-ers|.
+ [A completely new algorithm for hyphenation will go into \TeX82.]
+Q356. Add |-est| to hyphenation routine;
+ also disable |puz-zled| and |rat-tled|, etc.
+* 4 Oct 1978
+G357. Add new primitive |\vtop|. @1087
+Q358. Treat implicit kerns properly after discretionary hyphens have been
+ inserted. @914
+* 4 Nov 1978
+Q359. Forget the half quad originally required at left and right when
+ centering displayed equations without equation numbers. @1202
+* 11 Nov 1978
+R360. Don't let the postamble come out empty. [This could occur if no fonts were
+ selected.] @642
+* 15 Nov 1978
+C361. Allow optional space after digit in \\{scan_int} routine. @444
+* 17 Nov 1978
+R362. Make the \\{check_mem} procedure slightly more robust. @167
+* 20 Nov 1978
+C363. Make the |\par| in a |\def| match the |\par| that comes automatically with
+ a blank line. (Suggested by Terry Winograd.) @351
+G364. Add new parameter |\mathsurround| for spacing before and after
+ math in text. @1196
+G365. Extend |\advance| to allow increase by other than unity. [At this
+ time it applies only to the ten |\count| registers, and it is
+ called |\advcount|.] @1238
+* 25 Nov 1978
+G366. Add a new primitive: |\unskip|. @1105
+G367. Add new primitives |\uppercase| and |\lowercase|. @1288
+* 28 Nov 1978
+M368\>338. Don't let |\mark| and \\{macro_call} interfere with each other's
+ \\{scanner_status}. @306
+M369. Omit extra |}| after \\{show_node_list} shows a |\mark|,
+ since the right brace is already there. (See \#210.) @176
+G370. Add a new primitive suggested by Terry Winograd: |\xdef|. @1218
+* 29 Nov 1978
+S371. Delete a space following |\else{...}| also in the
+ false case. [\TeX78 uses braces, not |\fi|, for conditionals.]
+D372\>320. Make |\tracing| set |\showboxbreadth| as advertised. @198
+F373. Account properly for kerns in width calculations of \\{line_break}.
+ @866
+Q374\>364. Delete a \\{math_node} at the beginning of a line. @148
+A375\>339. Guarantee that |\predisplaypenalty=10000| will suppress page breaking
+ before a display. @1005
+* 6 Dec 1978
+L376. Change the file opening statement to allow lines up to 150 characters long.
+ [System dependent.]
+* 16 Jan 1979
+F377\>365. Initialize \\{negative} properly in the |\advance| routine
+ with a |\count| as argument. @440
+* 20 Jan 1979
+R378. Try to keep complex, buggy preambles of alignments from
+ crashing the program. @789
+* 17 Feb 1979
+I379\>376. Give more detailed information when warning about a
+ long line being broken. [System dependent;
+ the buffer size in \TeX78 is very limited.]
+L380. Declare $p$ local to \\{try_break}, for the ``rare'' case code.
+ [My original program included the following comment:
+ ``This case can arise only in weird circumstances due to
+ changing line lengths, and the code may in fact never be executed.''
+ Later Michael Plass will discover that variable line lengths require an
+ entirely different algorithm, using \\{last_special_line}.]
+ @847
+F381\>334. Don't omit the raggedness correction when the
+ last line of paragraph has to shrink. [Obsolete in \TeX82.]
+* 22 Feb 1979
+F382\>363. Don't forget to return from \\{get_x_token} after finding |\par|. @351
+Q383. Add a new parameter: |\lineskiplimit|. @679
+C384. Change the syntactic sugar:
+ `|\hbox par|' replaces `|\hjust to ...{overfull}|'. [This vastly improves on
+ the old idea (see \#40), but there still is no internal vertical mode.]
+C385. Introduce new names |\hbox| and |\vbox| for |\hjust| and |\vjust|. @1071
+G386. Add a new condition: |\ifpos|. [It will later be
+ generalized to |\ifnum| and |\ifdim|.] @513
+G387. Add |vu| and |\varunit|. [\TeX82 will eventually allow arbitrary
+ internal dimensions as units of measure.] @453
+G388\>312. Add an |em| unit. @455
+C389. Legalize |\hbox spread |\<negative dimension> [since \\{scan_spec}
+ no longer uses the sign as a flag]. @645
+* 10 Mar 1979
+C390\>370. Make \\{scan_toks} expand |\count| during |\xdef|. [This will
+ change later when |\the| and |\number| are introduced.] @367
+* 23 Mar 1979
+Q391. Put only 100000\thinspace pt stretch at the end of a paragraph instead of
+ 10000000000\thinspace pt.
+ [In \TeX78, ``infinite'' glue is actually finite but large; in the
+ language of \TeX82 we would say that |\parfillskip|, which is
+ not yet user-settable, is being changed to be like |\hfil| instead of
+ like |\hfill|.] @816
+Q392. Treat the last line of a paragraph more consistently with
+ the other lines (e.g., when |\hfil| appears in mid-paragraph), by
+ effectively inserting \\{inf_penalty} at the end. @816
+* 31 Mar 1979
+S393. Ensure that penalty nodes aren't wiped out, in weird cases where
+ breaks occur at penalties that normally disappear. @879
+* 27 Apr 1979
+A394. Correct the page number count when files begin with an empty page.
+ [System dependent.]
+G395. Allow the \\{math_code} table to be changeable via |\chcode|.
+ [In \TeX82, |\chcode| will split into |\mathcode| and |\catcode|.] @1232
+I396\>332. Don't accept `|e|' after an error message if not
+ inputting from a file. @84
+* 29 May 1979
+F397. Don't call \\{end_file_reading} if you haven't already invoked
+ \\{begin_file_reading}; this could happen when trying to
+ recover from an error in \\{start_input}.@537
+* 7 Jun 1979
+A398\>306. Be sure to eject two pages,
+ when |\eject| comes just at the time another break is preferable
+ (e.g., when the page has just become too full). @1005
+* 27 Jun 1979
+I399\>354. Don't say `|You can't do that in math mode|' when the user
+ says `|$$|' in restricted horizontal mode! @1138
+* 30 Jun 1979
+G400. Add |wd|, |dp|, |ht| dimension units. @455
+I401\>307. Don't try the system area for file names whose area is explicitly
+ indicated. @537
+* 1 Jul 1979
+G402. Allow letters as (ASCII) numbers [without the |`| marker introduced
+ later]. @442
+* 2 Jul 1979
+F403. Fix a |\gdef| bug: If the control sequence was never defined before
+ [this later became the \\{restore_zero} option],
+ don't remove it at group end. @282
+* 16 Jul 1979
+I404\>320. Update \\{show_noad_list} to be like \\{show_node_list}.
+ [The two routines, originally separate, will be merged in \TeX82.] @238
+* 18 Jul 1979
+G405. Extend capacity from 32 fonts to 64 fonts if desired. @134
+Q406. Add new \\{extra_space} parameter to all text fonts (requested
+ by Frances Yao). @558
+F407. Make each \\{node_noad} print properly in \\{show_noad_list}. @183
+Q408. Make |\jpar| allow any break if it is 1000000 or more.
+ [In \TeX82, a |\tolerance| of 10000 or more allows any break.] @851
+* 23 Jul 1979
+E409. Introduce new primitives |\hfil|, |\vfil|, |\hfilneg|, |\vfilneg|. @1058
+G410. Add |\ifmmode|. @501
+G411. Add |\firstmark|. @1012,1016
+C412. Allow break at leaders (horizontal mode only). @149
+* 25 Jul 1979
+I413\>213. Revise \\{error} so that online insertions work properly
+ after end-of-file errors. @336
+B414\>411. Change `{\bf if} $\\{first_mark}\ne0$' to
+ `{\bf if} $\\{first_mark}\ge0$' [because $-1$
+ is used to indicate `not yet given a value']. @1012
+* 28 Jul 1979
+C415\>370. Stop |\xdef| from expanding control sequences after |\def|'s.
+ [This decision will be rescinded later, after several more years of
+ experience with macro expansion will suggest better ways to cure
+ the problem.] @366
+I416. Change symbolic printout for control symbols. [System dependent.] @49
+L417\>308. Avoid linefeeds in the transcript file. [System dependent.]
+C418\>370. Expand |\topmark|, etc., in |\xdef|. @366
+* 4 Aug 1979
+B419\>413. Fix an error introduced recently: |\par| was suddenly
+ omitted at end of page. [System dependent.]
+* 11 Aug 1979
+P420. Change error messages that use |SAIL| characters not in
+ standard ASCII. @360
+* 28 Aug 1979
+D421\>411. Move the command `$\\{first_mark}\gets-1$' from \\{vpackage}
+ to \\{fire_up}. @1012
+S422\>403. Correct a serious |\gdef| bug:
+ Control sequences don't obey a last-in-first-out
+ discipline, so \TeX\ loses things from the hash table when deleting a
+ control sequence. @259
+# To fix this, I either need to restrict \TeX\ (so that
+ |\gdef| can be used inside a group only for control sequences already
+ defined on the outer level) or need to change the hash table algorithm.
+ Although all applications of \TeX\ known to me will agree to the
+ former restriction, I've chosen the latter alternative, because it gives me
+ a chance to improve the language: Control sequences
+ of arbitrary length will now be recognized.
+D423. Make sure that \\{unsave} cannot call \\{eq_destroy}
+ with a value from the upper part of \\{eqtb}. @282
+# I noticed this long-standing bug while fixing \#422. It had very
+ low probability of causing damage (e.g., it required a certain field
+ of a floating-point number to have a certain value), but it would have
+ been devastating on the day it first showed up!
+* 29 Aug 1979
+F424. Call \\{eq_destroy} when a control sequence is |\gdef|'ed
+ after being |\def|'ed. @283
+F425\>418. Treat the first token consistently
+ when |\topmark| and its cousins are expanded in \\{scan_toks}. @477
+# Now I've checked things pretty carefully and I think \TeX\ is ``fully debugged.''
+* 25 Jan 1980
+I426\>338. Display runaway alignment preambles. @306
+G427. Introduce active characters (one-stroke control sequences).
+ [I don't yet go
+ all the way: The meanings of `|x|' and `|\x|' have to be identical.] @344
+* 7 Feb 1980
+F428\>314. Fix a glaring omission: Op space |\>| was
+ never implemented in math mode! @716
+* 25 Feb 1980
+G429. Add a new dimension `|ex|' (for units of xheight). @455
+* 3 Mar 1980
+C430\>427. Allow the control sequence |\:| to be redefined
+ [it was the `select font' operator];
+ this allows the character |:| to be active. [Obsolete.]
+* 23 Mar 1980
+# An extend-\TeX-for-the-eighties party:
+G431. Add a new |\copy| feature. @204
+G432. Add a new |\unbox| feature. @1110
+G433. Add a new |\open| feature [later |\openout|]. @1351
+G434. Add a new |\send| feature [later |\write|]. @1352
+G435. Add a new |\leqno| feature, requested by MDS. @1204
+G436. Add a new |\ifdimen| feature [later |\ifdim|]. @513
+C437. Make |\|\<space> in vertical mode begin a paragraph. @1090
+G438. Add a new |\font| feature [replacing the silly previous convention that
+ a font must be defined when it is first selected]. @1256
+G439. Add new |\parval| and |\codeval| features [later
+ |\the|\thinspace\<whatever>\thinspace]. @413
+C440\>427. Don't let active characters gobble the following space. @344
+G441\>208. Add a new parameter to govern amount of token list dumped. [Obsolete.] @295
+G442. Add a new |\linebreak| feature [later replaced by |\break|]. @831
+* 25 Mar 1980
+# (Still working on the above, also thought of more.)
+G443. Add a new |\mskip| feature. @716
+G444. Add a new |\newname| feature (soon changed to |\let|). @1221
+G445\>430. Allow any control sequence to be redefined. @275
+I446. Send the output to the user's current file area, even when
+ input comes from elsewhere. @532
+* 27 Mar 1980
+Q447. Compute the xheight for accents in math mode from
+ family~1, not family~3. [Obsolete.]
+* 28 Mar 1980
+Q448. Increase minimum clearance between subscript and superscript. @759
+* 29 Mar 1980
+Q449\>222. When a display follows a display, the second should have the
+ `shortskip' glue. @1146
+* 4 Apr 1980
+A450\>445. Look at current token meanings when trying to recognize
+ |\tabskip| in alignment preambles. @782
+* 23 Apr 1980
+I451. Estimate the length of printed output, for the new
+ priority feature on our XGP device driver. [System dependent.]
+C452\>434. Break long |\send| lines
+ into pieces so that the file can be read in again. [System dependent.]
+* 19 May 1980
+Q453\>182. Don't make |\left| and |\right| delimiters too large; they
+ need to be only 90\% of the enclosed size. [This eventually
+ became |\delimiterfactor|.] @762
+* 21 May 1980
+G454. Add a new |\pagebreak| feature [later |\vadjust{\break}|]. @655
+* 13 Jun 1980
+# Today I'm beginning to overhaul the line-breaking routine,
+ and I'll also install miscellaneous goodies.
+G455. Allow a radical sign to be in different font positions. @737
+E456. Clear empty tokenlists off input stacks to allow deeper recursions
+ (suggested by Jim Boyce's macros for chess positions). @325
+G457. Make |\spaceskip| and |\parfillskip| changeable. @1228
+G458. Add a new parameter |\rfudge| (per request of Zippel) [later |\mag|]. @288
+G459. Add a new parameter |\loose| [later |\looseness|];
+ now parameters are allowed to take negative values. @875
+E460. Remove the variable \\{just_par}. [Obsolete; it was the \\{real} equivalent
+ of an \\{integer}].
+* 14 Jun 1980
+Q461. Install new line-breaking routines, including |\parshape|.
+ (These major changes are introduced as Michael Plass
+ and I write our article.) @813
+G462. Add a new parameter |\exhyf| [later |\exhyphenpenalty|]. @869
+* 16 Jun 1980
+S463\>444. Change conventions in \\{eqtb} so that glue is distinguishable
+ from other equivalents. @275
+A464\>444. Don't expand |\b| in |\xdef{\d\b{...}}| after |\let\d=\def|.
+ [Obsolete.]
+D465\>444. Avoid creating dead storage when doing \\{unsave} in certain regions. @275
+* 17 Jun 1980
+C466. Allow negative dimensions in rules. @138
+* 19 Jun 1980
+B467\>463. Make the new test for glue at the outer level of \\{show_eqtb}. @252
+* 27 Jun 1980
+Q468\>453. Don't let |\left| and |\right| become too small for big matrices.
+ [This eventually became |\delimitershortfall|.] @762
+* 3 Aug 1980
+Q469. Don't move extra-wide, numbered equations flush left unless
+ they begin with glue. @1202
+* 15 Sep 1980
+M470\>461. Say `$\ge\\{fz}$' instead of `$>\\{fz}$' in the pre-hyphenation
+ routine; I'd forgotten my definition of \\{fz} [a variable used to test
+ for a sequence of lowercase letters in the same font]. @897
+R471\>395. Check the range of the index in |\chcode| before saving the old value.
+ @1232
+* 18 Sep 1980
+D472\>457. Don't forget to increase the reference count to |\parfillskip|,
+ or it will mysteriously vanish. @816
+* 19 Sep 1980
+C473\>412. Make leaders break like glue in both horizontal and vertical modes.
+ @149
+Q474\>364. Make |\mathsurround| break properly at left and right end of lines.
+ @879
+* 13 Oct 1980
+I475\>461. Remove spurious overfull boxes generated when the looseness criterion
+ fails. [Obsolete.]
+A476\>461. Redesign the iteration for looseness; breakpoints were not chosen
+ optimally. @875
+E477\>461. Avoid storing a lot of breakpoints when they are dominated by
+ others. @836
+B478\>366. Don't say `\\{cur_node}' when you mean `\\{mem}[\\{cur_node}]'. @1105
+Q479\>461. Prefer the oldest break to the youngest break
+ when two break nodes have the same total demerits. @836
+L480\>461. Don't make badness too big for floating-point calculations,
+ when forced to make an overfull box. [Obsolete.]
+* 10 Dec 1980
+R481. Make it impossible to get unmatched `|}|' in a delimited macro
+ argument. @392
+G482. Add new |\topsep| and |\botsep| features. [These are \TeX78's
+ way to put space at the edge of inserts,
+ replaced in \TeX82 by the |\skip| register corresponding
+ to an |\insert| class.] @1009
+* 6 Jan 1981
+P483. Install new routines for reading the font metrics, using Ramshaw's
+ |TFM| files instead of\/ |TFX| files. @539
+I484. Abort after reporting 100 errors, if not pausing on errors. @82
+G485. Add new |\spacefactor| and |\specskip| and |\skip| primitives.
+ [At this time we write `|\specskip3=10pt|' and `|\skip3|' for what
+ will become `|\skip3=10pt|' and `|\hskip\skip3|' in \TeX82.] @1060
+G486\>366. |\unskip| is now allowed in internal vertical mode. @1105
+* 26 Jan 1981
+B487\>482. Don't say `\\{mem}[$q$]' when you mean `$q$'. (See \#143 and \#478.) @1009
+* 27 Feb 1981
+I488\>417. Put some linefeeds back into the transcript file, in order
+ to prevent overprinting in listings. [System dependent.]
+G489. Add a new |\dpenalty| feature [later |\postdisplaypenalty|]. @1205
+G490. Add the dimension |cc| for European users. @458
+C491. Make \\{scan_keyword} match uppercase letters as alternatives
+ to lowercase ones (suggested by Barbara Beeton's experiments
+ with |\uppercase|). @407
+I492. Add nonstop mode so that overnight batch processing is possible. @73
+* 2 Mar 1981
+S493\>422. Fix a still more serious |\gdef| bug: The generality
+ of\/ |\gdef| almost makes it a crime to
+ forget {\sl any\/} control sequence names, ever! (The previous bug was
+ only the tip of an iceberg.) @259
+I494. Issue warning message at the end of a file page if nesting level isn't zero.
+ [System dependent.]
+* 5 Mar 1981
+I495. Keep track of maximum memory usage, for statistical
+ reporting. [Obsolete.] @125
+Q496\>350. Prune away glue and penalties at top of page after marks, sends,
+ inserts. @1000
+G497. Allow |\mark| in horizontal mode. [Later it will
+ be |\vadjust{\mark...}|.] @655
+C498. Allow optional space before a required left brace, e.g., |\if AA {...}|.
+ [See \#251.] @403
+I499. Issue an incomplete |\if| error, to help catch a bad |\if|. @336
+* 17 Mar 1981
+I500\>494. Omit the warning message at end of a file page unless
+ the nesting level has changed on that page. [System dependent.]
+Q501\>310. Fix the spacing when there is a very tall subscript with
+ a superscript. @759
+* 20 Mar 1981
+S502\>371. Make space-eating after |\else| fully consistent between the
+ true and false cases. [Obsolete.]
+* 24 Mar 1981
+B503\>496. Change \\{glue_spec_size} to \\{ins_spec_size}
+ in \\{vpackage} [where insertions are done]. [Obsolete.]
+* 5 Apr 1981
+B504\>501. Fix a typo (`|+|' instead of `|-|') in the new subscript code;
+ this shifted certain subscripts down instead of up. @759
+* 18 Apr 1981
+G505. Make leaders with rules of specified size act like variable rules.
+ @626,635
+* 29 Apr 1981
+A506\>461. Don't consider $\\{badness}>\\{threshold}$ at a line |\break|
+ except in an emergency. @854
+* 13 Jul 1981
+C507\>402. Allow other characters as numbers. @442
+R508\>294. Avoid dead storage if a \\{no_new_control_sequence} error occurs.
+ [Obsolete.] @259
+G509. Add a new |\ifx| feature. @507
+G510. Add new features |\xleaders| and |\cleaders|. @626,635
+* 14 Jul 1981
+S511\>507. Amend the new code for constants;
+ the `|.|' in `|.5|' is thought to mean \O{056}! @442
+L512\>507. And fix an egregious blunder in that code: New commands at the
+ end of a procedure are ignored when earlier statements
+ exit via {\bf return}. @442
+* 4 Aug 1981
+P513. Accept alphabetic codes for all online error recovery options,
+ instead of insisting on control codes like line feed or form feed.
+ [The original error-recovery codes were suggested by the
+ conventions of the |SAIL| compiler.] @84
+G514. Add a new |\thebox| feature [later |\lastbox|]. @1079
+* 7 Aug 1981
+G515. Add |fil|, |fill|, and |filll| as units for glue stretching
+ or shrinking. @454
+I516. Suppress the overfull box error when shrinkage amount is negative. @664
+* 9 Aug 1981
+Q517. Let unset boxes inherit the size of their parent in alignments. @810
+* 12 Apr 1982
+F518. Make |INITEX| dump out the \\{font_dsize} array needed by
+ the new |DVI| output module. @1322
+* 1 May 1982
+S519\>151. Fix \\{clean_box} so that \\{mlist_to_hlist} cannot make
+ $\\{link}(q)=0$ and $\\{type}(q)=\\{glue_node}$. @720
+# [That was the historic final change to \TeX78. All subsequent entries
+ in this log refer to \TeX82.]
+* 15 Jul 1982
+# Finished draft of test program and began debugging about 1430
+ [2:30\thinspace pm]. Taking my time.
+BX1. Change \\{eqtb}[\\{cur_font}] to \\{eqtb}[\\{cur_font_loc}]. @232
+# Not logging changes to the exposition.
+# Compile time is about 2 minutes CPU, times 5 for time-sharing;
+ add another half minute for linking and loading.
+# Hash table and \\{get_next} seem to be working, with no changes needed!
+# Time out 1630--1815 for Jill's birthday party.
+LX2. Insert {\bf begin} \dots~{\bf end} around \\{dump_int} macro. @1305
+IX3. Print two blank spaces before date in \\{open_log_file}. @536
+AX4. Update $x$ and \\{var_used} outside the {\bf for} loop. @1311
+BX5. Change {\bf if} $=$ to {\bf if} $\ne$ as loop exit condition. @1315,1316
+# The |TRIP| test should preload more fonts.
+LX6. Insert {\bf begin} \dots~{\bf end} around statistics output. @1334
+FX7. Must \\{get_x_token} when scanning a number. @445
+IX8. Interactive \\{debug_help} needs to print a newline. @1338
+FX9. Include \\{ignore_spaces} and \\{math_accent} in \\{print_cmd_char} cases. @266
+IX10. Don't call \\{confusion} when \\{print_cmd_char} sees unknown code. @298
+# Compiler bug causes stack overflow. Retiring for the night at 2145.
+* 16 Jul 1982
+# Starting at 0700; DRF has fixed the compiler.
+RX11. Allow arbitrary integer parameters in diagnostic print routines. @237,699
+TX12. Say \\{cur_tok}, not \\{cur_val}, when you mean \\{cur_tok}. @440
+FX13. Make |\pause| effective also on first line of a file. @538
+FX14. Show context after online deletion. @88
+IX15. Bypass reference count when \\{debug_help} shows a token list. @1339
+BX16. Change `{\bf case} $p$' to `{\bf case} \\{type}($p$)'. @1000
+FX17. Fix timing of \\{print_ln} when scrolling help messages. @90
+PX18. Make \\{other_char} the default category for ASCII control codes too. @232
+AX19. Use special scanning method for font number in \\{new_font}. @1257
+# Eating lunch, 1020--1035, while the machine slowly recompiles everything.
+FX20. Don't forget to increase $k$ in the {\bf while} loop. @355
+DX21. Adjust \\{limit} properly after line changed when pausing. @363
+FX22. Remember to return a value in \\{new_spec} and \\{new_penalty}. @151,158
+# Now stepping through \\{line_break} in simple case.
+AX23. Don't prune unwanted nodes if $\\{cur_p}=\\{null}$. @877
+FX24. Print a closing parenthesis when displaying glue nodes. @189
+SX25. Use \\{last}, not \\{limit}, in \\{term_input}; else error prompt causes
+ trouble when $\\{state}=\\{token_list}$. @71,87
+DX26. Set $\\{first}\gets\\{limit}+1$ after \\{init_terminal}. @331
+DX27. Make sure \\{set_trick_count} is always performed. @317
+* 17 Jul 1982
+IX28. Add new diagnostic feature |\tracingcommands|. @299,1031
+# Debugging of system-dependent code not shown in this log.
+# Tangling \TeX\ now takes 1.75 minutes; about 75K bytes, 108K tokens.
+# Redundant semicolon sends Pascal compiler into infinite loop!
+FX29. Initialize $\\{passive}\gets\\{null}$. @864
+AX30. Fix pseudoprinting when the line is empty. @318
+EX31. Merge adjacent free areas of dynamic memory before dumping. @131
+FX32. Print the word |mode| in \\{print_mode}. @211
+IX33. Improve message and help in case of weird error. @415
+GX34. Allow optional space after |\def| and similar constructions. @473
+MX35. Declare \\{alpha} to be integer in \\{read_font_info}. @560
+AX36. Fix timing of \\{back_input} in \\{scan_dimen}. @448
+IX37. Back up after missing number error. @446
+IX38. Show the `|at|' size that is considered improper. @1259
+IX39. Streamline the dialog in \\{debug_help}. @1338
+MX40. Take output of \\{the_toks} from the advertised place. @467,1297
+TX41. Say \\{trie_fix}($q$), not \\{trie_fix}($p$). @959
+SX42. Decrease low limit of \\{error_count} to $-1$. @76
+* 18 Jul 1982
+FX43. Clear initial reference count of macro definitions. @473
+AX44. Fix timing of \\{back_input} in \\{scan_glue}. @461
+BX45. Use \\{cur_val_level}, not \\{cur_val}, when checking levels. @461
+BX46. Multiply |fil| units by $2^{16}$ for correct scaling. @454
+BX47. Don't confuse \\{glue_base} with \\{skip_base}. @1237
+AX48. Fix \\{print_scaled} so that 0.01 doesn't come out |0.1|. @103
+IX49\>X28. Show mode changes when tracing commands. @299
+LX50. Don't say {\bf if} $(n=0)\lor(\,\ldots\;\hbox{\bf div}\;n)$ in Pascal. @105
+BX51. Don't confuse \\{box_flag} with \\{box_code}. @1075
+SX52. Reset \\{offset} on \\{print_ln} even in \\{no_print} mode. @57
+SX53. Fix restarting of interrupts after \\{big_switch}. @1031
+LX54. Don't loop {\bf for} $k\gets a$ {\bf to} $b-1$ when $b=0$ if $k$ is
+ declared nonnegative.
+IX55. Put `|=|' sign into the \\{format_ident}. @1328
+SX56. Allow $r$ to be any integer in \\{get_node}. @125
+IX57. Don't put the output of \\{print_file_name} in quotes. @518
+IX58. Say `|dumped|' after dumping. @1311
+EX59. Eliminate unnecessary initialization code. @1332
+LX60. Get the file reading started right when beginning to undump. @1308
+IX61. Give forlorn message if format file can't be loaded. @1303
+FX62. Assign value to \\{cur_val} after glue arithmetic. @1239,1240
+* 19 Jul 1982
+LX63. Don't say {\bf if} $p>\\{max}\lor\\{free}[p]$ in Pascal. @169
+AX64. Fix memory-undump logic; loops are out of phase with input. @1312
+BX65. Undump \\{hyph_word}[$j$], not \\{hyph_word}[$k$]. @1325
+# At last |trip.fmt| loads without bombing out.
+PX66. Remove assignment of array to array, not allowed by IBM Pascal
+ (Susan Plass). @167
+PX67. Simplify an expression that's too big for IBM Pascal (Susan Plass). @1009
+AX68. Go to \\{contribute}, not \\{done}, after insertions. @1000
+IX69. Decrease \\{depth_threshold} if there's not enough string space. @198
+IX70. Show rules as `{\tt\char`\|}' in short displays. @175
+IX71. Don't show null glue in short displays. @175
+SX72. Set $\\{job_name}\gets0$ as part of output initialization. @528
+SX73. Don't complain of infinite shrinkage on |0pt minus 0fil|. @825,976,1009
+IX74. Use different prompt at beginning when accepting a file name. @37
+FX75. Reset \\{last_glue} on nonglue nodes. @996
+BX76. Remember to call \\{error} after printing |OK|. @1293
+LX77. Insert {\bf begin} \dots{ \bf end} around program text of section. @1025
+FX78. Define the |\shipout| primitive. @1071,1073
+AX79. Introduce \\{write_loc} analogous to \\{par_loc}. @1344,1371
+FX80. Dump and undump \\{par_loc} and \\{write_loc}. @1313,1314
+FX81. Allow \\{the} in \\{scan_the} [later \\{scan_something_internal}]. @413
+EX82. Interchange command codes $\\{the}:=:\\{number}$ [later \\{convert}]. @210
+BX83. Don't confuse \\{breadth} with \\{depth}. @236
+IX84. Add string printing feature to \\{debug_help}. @1339
+FX85. Set $\\{state}\gets\\{mid_line}$ in \\{begin_file_reading}. @328
+# Time out 2105--2200 to pick up Jenny from driving lesson.
+LX86. Keep $c\le127$ when deleting 99 tokens. @88
+SX87. Don't check for \\{str_room} error when $\\{selector}=\\{new_string}$. @1328
+* 21 Jul 1982
+IX88. Gather more statistics: String usage, font info, hyphen exceptions, stacks. @1334
+DX89\>X79. Initialize \\{write_loc} from \\{cur_val}, not from \\{cs_ptr}. @1344
+FX90. Remember to pack file name for |\open|. @1374
+SX91\>X34. Defuse |\outer| test before scanning optional space after `|}|'. @473
+SX92. Don't allow \\{prepare_mag} to cause errors after \\{jump_out}. @84
+# The first page of |DVI| output is {\sl perfect\/}! Pause to play piano.
+BX93. Don't confuse \\{dimen_base} with \\{scaled_base}. @1237
+DX94. Initialize $\\{link}(\\{page_head})\gets\\{null}$ when beginning a page. @991
+SX95. Correct \\{cur_height} more often, since \\{max_depth} might be negative. @972,973
+AX96. Calculate page dimensions properly after vertical kerns. @973
+SX97. Install new \\{page_contents} logic to handle interaction between
+ insertions and |\topskip|. @987,1008
+SX98. Allow \\{top_skip} glue to be a valid breakpoint. @1001
+FX99. Don't forget to count \\{dyn_used} in inner loop [erroneous analysis
+ retracted later]. @1034
+FX100. Set $p\gets q$ after migration step. @655
+FX101. Clear \\{prev_graf} to zero at start of paragraph. @1091
+LX102. Put parens into negated \\{leader_flag} macro. @1078
+# Time out 1720--1920 for John's birthday dinner.
+DX103. Scale \\{best_height} when adjusting \\{page_goal}. @1010
+AX104. Simplify logic of split insertions; three states become two. @981,1019,1020
+MX105. Don't omit first character when showing a macro argument. @400
+RX106. Prevent clobberage if macros have too many parameters. @390
+* 22 Jul 1982
+IX107. Tell how many |DVI| bytes were output. @642
+IX108\>X88. Adjust for singular or plural statistics. @1320,1334
+SX109\>X98. Consider \\{page_head} a glue node, to inhibit unwanted break. @988
+DX110. Introduce \\{new_skip_param} to keep reference counts updated. @679,969,1001
+DX111. Record the correct size of new insertion after it's split. @1010
+DX112. Use \\{free_node}, not \\{flush_node_list}, when recycling insertion
+ nodes. @1022
+SX113. Make online insertions work after \\{get_next} is interrupted. @87,324,343
+BX114. Print newline on interruption stop. @98
+SX115\>X34. Put space before \\{end_write_token}. @1371
+BX116. Don't confuse \\{glue_order} with \\{stretch_order}. @838
+TX117. Set $\\{max_dimen}\gets\hbox{\it'7777777777\/}$, not {\it'777777777}. @421
+MX118. Make |\global\textfont| legal. @1211
+BX119. Fetch |\the\textfont| with \\{equiv}, not \\{fam_font}. @415
+BX120. Call $\\{new_ligature}(f,l,\ldots)$ not $(f,c,\ldots)$. @1035
+RX121. Make \\{show_box} work on random garbage. @174,177
+DX122. Count reference to \\{zero_glue} from \\{cond_math_glue}. @1171
+* 23 Jul 1982
+RX123. Allow $\\{avail}=\\{null}$ when undumping. @1312
+BX124\>X110. Set $\\{width}(\\{glue_ptr}(p))$, not $\\{width}(p)$. @679
+AX125. Put \\{begin_file_reading} inside the \\{start_input} loop. @537
+BX126\>X116. Don't confuse \\{glue_stretch} with \\{stretch_order} [the previous
+ fix went only half\-way]. @838
+BX127. Negate $x$ when calculating badness of shrinkage. @667,678
+LX128\>X121. Remove dangling {\bf else} that parses wrong. @174
+IX129\>X28. Print newline before |{|, not after |}|, when tracing commands. @299
+IX130. Remove colon from overfull box messages. @663,675
+DX131\>X97. Compute \\{page_goal} properly when the first box arrives after
+ inserts. @1001
+BX132. Don't confuse \\{page_size} [now \\{page_goal}] with \\{best_size}. @1017
+AX133. Put heldover insertions at front of contribution list. @1023
+SX134\>X88. Output stats before closing |DVI| file, since the latter
+ decreases \\{font_ptr}. @1333
+TX135. Don't call a |\vbox| an |\hbox|. @674
+TX136. Fix misplaced {\bf end} caused by editing error. @675
+* 24 Jul 1982
+DX137. Don't \\{eq_destroy} any paragraph shape when \\{par_shape} is null. @275
+IX138. Omit blank before |\message| at the beginning of a line. @1280
+AX139\>X104. Don't try to split an insertion when \\{best_node} isn't the
+ split one. @1021
+LX140. Correct another case of `{\bf if} $x\land y$' misunderstood by Pascal.
+ @1021
+IX141. Provide diagnostic info about insertions via |\showlists|. @986
+IX142. Add `|inside a group|' to clarify a warning message. @1335
+IX143. Report \\{prev_depth} on a separate line in |\showlists|. @219
+SX144. Back up input to avoid unexpected clobberage of \\{cur_tok}. @1090
+# Wow what a bug: \\{new_graf} calls \\{build_page}, which invokes the
+ output routine, after which `\/{\bf goto} \\{reswitch}' is a {\sl disaster}.
+DX145. Add insertion glue to \\{page_so_far} instead of subtracting it from
+ the goal. @1009
+IX146. Put extra blank line before overfull box warning. @660
+CX147. Define break at kern consistently between horizontal and vertical lists. @973,1000
+DX148. Renumber so that math nodes are nondiscardable. @147
+TX149. Correct the \\{char_kern} macro: |#|, not $f$. @557
+FX150. Decrease $l$ after reconstituting discretionary break. @916
+EX151. Simplify the hyphen routine, knowing that $\\{link}(s)=\\{null}$. @918
+FX152. Initialize $r\gets q$ in discretionary destruction routine. @883
+* 25 Jul 1982
+AX153. Don't add interline penalty after last line of paragraph. @890
+IX154. Adjust spacing in diagnostic messages. @245
+DX155. Avoid simultaneous use of \\{temp_head} by \\{prune_page_top} and the
+ page builder. @1017
+FX156. Clear the \\{post_break} field of simple discretionaries. @916
+AX157. Split \\{offset} into independent variables \\{term_offset},
+ \\{file_offset}. @54,57,58
+# Am freezing current program as version $-0.25$; a week of TUG lectures
+ begins tomorrow.
+* 5 Aug 1982
+IX158. The `|.err|' file should be `|.log|' instead. @534
+GX159. Allow |\special| strings to contain more than 256 bytes. @585,1368
+MX160\>X99. Undo ``correction'' to a non-bug. @1034
+IX161. Suggest |\&| in help message for unexpected |&|. @1128
+GX162. Make `|E|' a standard option for exiting. @84
+GX163. Restore the use of dead cycles \`a la \TeX78. @1024,1054
+# The previous six changes were suggested during discussions with \TeX82 class.
+SX164. Fix global variable conflict between \\{open_log_file} and \\{new_font}. @1257
+CX165. Allow optional `|=|' when assign to font parameter. @1253
+FX166. Set \\{cur_val} after increasing the number of font parameters. @580
+DX167. Set \\{hash_brace} when matching `|{|'. @476
+IX168\>X88. Clarify meaning of statistics printed. @1334
+GX169. Change |DVI| format to include design size. @602,1260
+DX170. Introduce \\{def_ref} for \\{runaway} messages. @306
+MX171. Restore \\{cur_cs} before calling \\{scan_toks}. @1226
+AX172\>X157. Update \\{print_nl} to dual offset conventions. @62
+AX173\>X163. Move endgame logic inside \\{main_control}, because the output
+ routine becomes active. @1054
+* 6 Aug 1982
+CX174. Allow |INITEX| to load format files. @1337
+EX175. Conserve input stack space by deleting finished token lists. @325
+IX176\>X74. Print the opening `|**|' in the transcript file. @534
+# Now ready to try breaking new ground in |TRIP|.
+SX177. Preserve \\{align_state} from tokens deleted online. @88
+DX178. Set $t$ in all branches of \\{scan_toks}. @473
+SX179. Change `$\\{cur_cmd}\le\\{right_brace}$' to `$\\{cur_tok}\le
+ \\{right_brace_limit}$'; otherwise |\relax| gets through. @477
+CX180. Allow optional |=| when setting |\spacefactor|; disallow zero. @1243
+BX181. Change \\{vpackage}(\\{head}) to \\{vpackage}(\\{link}(\\{head})). @796
+# Shades of 1978!
+LX182. Insert missing {\bf begin} \dots{ \bf end}. @798
+* 7 Aug 1982
+LX183. Keep \\{trie_max} declared in non-|INITEX| [later rescinded]. @950
+DX184. Watch out for empty token list when copying. @466
+DX185. Free unused reference count slot when defining |\everypar|. @1226
+GX186\>X163. Introduce |\maxdeadcycles|. @1012
+# I believe the \\{line_break} routine has passed its test perfectly.
+SX187. Don't put discretionary after |-| inside a discretionary. @1039
+CX188. Change `|\minus|' to `|\minusthe|' [this feature retracted later]. @413
+BX189. Change \\{cur_p} to $r$ (three places). @875
+AX190. Increase range of \\{hc} to \\{halfword}; otherwise end-of-word mark
+ might match a vacant entry in the trie. @892
+FX191. Initialize $b$ in \\{shift_case} routine. @1288
+EX192. Don't back up if a space follows a decimal fraction. @452
+BX193. Don't confuse \\{glue_base} with \\{dimen_base}. @1145
+LX194. Guard against anomalous floating-point values in glue display. @186
+* 8 Aug 1982
+SX195. Avoid infinite loop when |\outer| leads to runaways. @339
+# I worked on that problem about two hours before fixing it.
+IX196. Move final \\{debug_help} to \\{succumb}, except in batch mode. @93
+RX197. Insert kern after spanned box, to defeat access to floating point. @808
+* 9 Aug 1982
+CX198. Include |\leftskip| and |\rightskip| in displayed equations [rescinded
+ later]. @1199
+IX199. Trace line-break computations if $\\{tracing_stats}>2$. @846,856
+DX200. Keep \\{prev_p} up to date when passing a string. @867
+# Now stepping through math stuff; a lot is working.
+DX201. Set $\\{link}(p)\gets z$ when making a fraction. @747
+CX202. Don't reset space factor when beginning |\valign|. @775
+IX203. Don't show glue setting if $\\{glue_sign}=\\{normal}$. @186
+DX204. Clear \\{glue_stretch} and \\{glue_shrink} when creating an unset box. @801
+BX205. Do \\{vpack} in hmode and vice versa when aligning. @804
+AX206. Remove fallacious call to \\{confusion} after alignment in display. @1206
+AX207. Don't test $\\{mode}=\\{vmode}$ in display, test $\\{nest_ptr}=1$. @1145
+FX208. Show an \\{inner_noad} as well as the other types. @690,696
+DX209. Renumber \\{mu_glue} and \\{cond_math_glue} so that the glue display logic
+ works. @149
+BX210. Don't confuse \\{cur_size} with \\{cur_style}. @703
+FX211. Advance $p\gets q$ during second pass over mlist. @761
+IX212. Add helpful hint about |\tracingonline=1|. @1293
+TX213. Delete spurious statement left from sloppy editing. @710
+DX214. Change the subtype when \\{mskip} becomes \\{hskip}. @732
+FX215. Don't forget to use the remainder when computing math glue. @716
+IX216\>X199. Improve paragraph diagnostics using \\{short_display}. @857
+IX217\>X199. Introduce \\{artificial_badness} for better diagnostics. @854,856
+* 11 Aug 1982
+AX218. Introduce \\{char_box} subroutine so that \\{var_delimiter} adds italic
+ correction. @709
+SX219. Save font and char in local variables of \\{make_math_accent}, since
+ it can be recursive. @738
+FX220. Call \\{error} after decrying an invalid character. @346
+* 12 Aug 1982
+IX221\>X199. Install new format for showing break nodes. @846
+# I have been testing \\{line_break} and I think it's working fine.
+BX222. Change $q$ to $p$, in order to catch empty alignments. @812,1206
+SX223. Disallow third part of discretionary in math mode. @1120
+DX224. Don't change \\{tail} if discretionary third part is empty. @1120
+IX225. Say |nonscript|, not |non_script|. @189
+SX226. Inhibit math if |\scriptfont3| is improper. @1195
+IX227\>X199. Introduce {\tt\@}|firstpass| and {\tt\@}|secondpass| comments. @863
+TX228. Change $p$ to $r$ when you mean $r$. @1204
+IX229\>X108. Say |page|, not |pages|, if there's only |1|. @642
+IX230. Insert space before |[]| on truncated |\showlists|. @182
+* 28 Aug 1982
+# Back from vacation after having looked at hardcopy listing of |TRIP| test.
+GX231. Allow |dm| as a unit [later |.5dm1| will be |.5\dimen1|]. @455
+IX232\>X108. Singularize |prevgraf 1 lines|. @219
+IX233. Omit trailing zero count registers when showing completed page numbers. @638
+LX234. Avoid clobbering $a$ by introducing a new local variable $t$. @986
+DX235\>X216. Fix diagnostic printing of discretionaries. @858
+IX236. Don't show unset stretch/shrink that's zero. @185
+CX237\>X198. Make |\halign| in displays consistent with other displays. (Namely,
+ ignore |\leftskip| and |\rightskip| in nonaligned displays;
+ respect the paragraph shape in aligned displays.) @800,1199
+IX238. Parenthesize `|If you're confused ...|'. @403
+IX239. Say `|\fraction|', not `|\xabovex|'. @697
+FX240. Remember to {\bf return} when you should. @1153
+PX241. Use absolute value to make sure {\bf div} is unambiguous. @737
+BX242\>X218. Don't confuse depth with height. @709
+BX243. Use $\\{delta}-\\{height}$, not $\\{height}-\\{delta}$. @736
+BX244. Increase \\{shift_down} to increase the clearance. @745
+IX245. Don't back up after improper use of |\the|. @428
+IX246. Don't give |0pt| as the default result when looking for \\{tok_val}. @428
+FX247. Initialize \\{second_indent} in the easy case. @848
+FX248. Package the equation number. @1204
+QX249. Don't resort to $v\gets\\{max_dimen}$ when glue doesn't stretch or
+ shrink. @1148
+IX250. Insert newline before showing current |\botmark|.
+FX251. Call \\{error} after giving error message. @784
+AX252. Change implementation of |\number|; it should \\{scan_int}, not
+ something internal. @471
+PX253. Introduce symbolic constants like \\{format_area_length}. @524
+PX254. Change \\{quit} to \\{jump_out}, since some compilers treat \\{quit}
+ as a reserved word. @81
+LX255. Add more parentheses to get proper parsing. @1260
+IX256. Say |please| in order to be friendly (or at least polite). @360
+BX257. Don't confuse \\{cur_vcmd} with \\{cur_chr}. @508
+IX258. Use |&| instead of |!| to specify a preloaded format. @1337
+TX259\>X177. Correct |s3| to |s4|. @88
+GX260. Introduce new primitive |\mathchardef|, to save space and time. @1224
+CX261. Use the |[]| convention for noads as well as nodes. @692
+TX262. Correct spelling in call to \\{primitive}: |\xatopx| should be |\xoverx|
+ [later renamed, thank goodness]. @1178
+* 30 Aug 1982
+RX263. Don't fetch \\{link}(\\{null}) in malformed list. @175
+SX264. Initialize \\{align_state} at a better time so that \\{align_peek}
+ doesn't see |&| or |\span|. @785,791
+SX265. Outlaw preamble interfering with $\\{align_state}=0$. @789
+CX266. Add level of grouping to alignment to tabskip locality. @774
+FX267. Check \\{align_state} when scanning $\langle u_j\rangle$. @783
+AX268. Move `\\{unsave}; \\{new_save_level}' from \\{main_control} into
+ \\{fin_col}. @791,1131
+SX269\>X180. Remember \\{cur_chr} when you're looking for optional `|=|'. @1243
+TX270. Change $q$ to $r$ [in code now obsolete]. @804
+IX271. Disable interrupts during \\{back_error} so that help messages aren't
+ clobbered. @327
+SX272. Introduce \\{slow_print} for printing control sequences. @60
+IX273. Initialize \\{del_code}(|"."|$)\gets0$ for error recovery. @240
+SX274. Call \\{end_file_reading} before calling \\{check_outer_validity}. @362
+IX275. Don't delete an extra `|}|' when |\par| will help find a runaway. @395
+* 31 Aug 1982
+BX276. Don't confuse \\{thin_muskip} with \\{thin_muskip_code}. @413
+FX277\>X266. Recover from error if new \\{align_group} ends abnormally. @1132
+IX278. Recover from error if |\par| occurs when $\\{align_state}<0$. @1094
+CX279. Make |\hskip\the\thinmuskip| and |\mskip\the\baselineskip| erroneous. @413
+GX280. Add |\muskip| and |\setmuskip| analogs to |skip| and |\setskip|. @413,1228
+EX281. Don't output |pop| right after |push|. @601
+# The |TRIP| test looks right; now to test for wasted memory.
+# When memory should be empty I find $\\{dyn_used}=18$, $\\{var_used}=267$.
+* 1 Sep 1982
+# Made special |MEMTEX| program, designed to track all memory allocation.
+DX282. Delete reference to \\{last_glue} when a page is packaged. @1017
+IX283. Include \\{save_stack} in the \\{search_mem} debugging routine. @285
+CX284. Disallow |\vfill| in restricted horizontal mode. @1095
+# Most of the memory locations I thought were wasted were actually in good use.
+# Total 192 hours (approx) debugging time so far since July 15.
+* 2 Sep 1982
+# Now looking at all zero counts in profile and extending |TRIP|.
+EX285. Simplify the creation of |vtop| boxes. @1087
+CX286. Set $\\{space_factor}\gets1000$ after |\hbox|. @1076
+PX287. Introduce preamble into |DVI| format. @617
+SX288. Give special \\{chr_code} to |\relax|. @265
+IX289. Don't show `|(null)|' when token list is null, just show nothing. @295
+EX290. Delete the procedure \\{write_name_string}, which is never used.
+CX291. Rename |\xabovex| to |\abovewithdelims|; do the same for
+ |\xatopx| and |\xoverx|. @1178
+QX292. Improve \\{clean_box} so that it recognizes cleanliness better. @720
+IX293. Report a |Missing delimiter| more meaningfully. @1161
+RX294. Give \\{endv_token} a \\{chr} code of 128 so that it will end a file name. @289
+RX295. Test present of math fonts {\sl after\/} parsing an mlist, not
+ before. @1138,1195
+IX296. Omit `|recent contributions|' and/or `|current page|' when they are
+ empty. @218,986
+IX297. Display what \TeX\ has deleted after improper discretionary list
+ has arisen. @1121
+IX298. Show what math character was undefined. @723
+IX299. Improve the |Incompatible magnification| error; break it into two lines. @288
+DX300. Put new cases into \\{flush_node_list}, to recycle mlist noads. @698
+* 6 Sep 1982
+FX301\>X300. Insert a necessary `{\bf goto} \\{done}' in that new material. @698
+# It took two hours to diagnose that {\bf goto} problem.
+TX302\>X295. Change `|2|' to `|3|' in help message for extension fonts. @1195
+IX303. Add a special note if material is being held over for the next output. @986
+RX304. Divide before multiplying in \\{make_left_right}, to avoid overflow. @762
+IX305. Introduce the \\{box_error} routine. @992
+FX306. Clear \\{arith_error} after overflow has been reported. @460
+BX307\>X249. Don't confuse \\{stretch} with \\{glue_stretch}. @1148
+DX308. Set $\\{glue_sign}\gets\\{normal}$ when packaging with glue ratio
+ zero. @558,664
+AX309. Test for overflow before attaching the sign. @448
+# That all worked! Now trying |min_quarterword| negative.
+LX310. Take absolute value before applying {\bf mod} in \\{new_trie_op}. @944
+LX311. Say $\\{qi}(c)$, not $c$, when testing |TFM| flags [now obsolete]. @573
+LX312. Initialize \\{token_ref_count}(\\{def_ref}) to \\{null}, not zero. @473
+LX313. Change the type of \\{vsplit} parameter $n$ from \\{quarterword} to
+ \\{eight_bits}. @977
+LX314. Initialize \\{null-delimiter} different form \\{null_character}. @685
+LX315. Insert \\{qi} twice in \\{scan_delimiter}. @1160
+FX316. Insert \\{qi} in \\{scan_math}. @1151
+FX317. Insert \\{qo} in \\{fetch}. @722,723
+FX318. Insert \\{qi} in \\{set_math_char}. @1155
+FX319. Insert \\{qi} in \\{math_ac}. @1165
+FX320. Insert \\{qo} in \\{mlist_to_hlist}. @755
+IX321. Use brackets around 8-bit characters in \\{print_ASCII}. @68
+IX322. Include \\{hyph_list} in the \\{search_mem} debugging routine. @933
+# Now compiling non-|INITEX| to try an industrial-strength version.
+LX323. Add {\bf return} to \\{final_cleanup}, because some Pascal compilers
+ insist that each label be used. @1335
+DX324. Compute \\{par_token} when undumping. @1314
+* 11 Sep 1982
+IX325. Emit newline before file name, if near end of line. @537
+CX326. Define |\ifx| for arbitrary tokens. @507
+* 12 Sep 1982
+IX327. Don't ask users to type |x| twice before exiting. @84
+GX328. Install new features |\openin|, |\read|, |\ifeof|, |\closein|; rename
+ existing |\open|, |\send|, |\close| to be |\openout|, |\write|,
+ |\closeout|. @209,313,1275
+GX329. Install new feature |\expandafter|. @368
+PX330. Change the default file area from `|<TeX>|' to `|TeXinputs:|'. @574
+* 13 Sep 1982
+GX331. Install new feature |\string|. @472
+AX332. Remove spurious space printed by \\{sprint_cs}. @263
+# All tests passed now! But when I played with the system I found another bug
+ (undetected by |TRIP|):
+FX333. Set $r\gets s$ after matching macro parameter tokens. @397
+* 16 Sep 1982
+IX334\>X199. Introduce serial numbers in line-break records, improving
+ readability and independence. @846
+IX335. Don't abort when \\{file_name_size} is exceeded. @519
+* 17 Sep 1982
+IX336. Remove unwanted period from font capacity message. @567
+* 18 Sep 1982
+GX337\>X329. Make |\expandafter| more powerful by moving it from semantics
+ to syntax [i.e., from stomach to mouth]. @368
+* 19 Sep 1982
+IX338. Improve error recovery for `|Missing number|'. @415
+* 22 Sep 1982
+QX339. Suppress italic correction between letters in math mode except in math
+ fonts. @752
+* 24 Sep 1982
+PX340. Define $\\{null}=\\{mem_bot}$, not \\{min_halfword}, because there's
+ a reference to \\{link}(\\{null}) in \\{try_break}. @115
+DX341. Initialize $\\{str_start}[0]\gets0$. @47
+IX342. Avoid blank space at beginning of line. @638
+DX343. Set type of new box in math mode to \\{ord_noad}, not \\{inner_noad}. @1076
+* 28 Sep 1982
+# Here are the first changes made to the preliminary listing of \TeX82 that was
+ published by the \TeX\ project earlier this month.
+F520. Insert the missing cases \\{letter} and \\{other_char} after
+ \\{x_token} looks ahead. @1038
+C521. Change `|\pause|' to `|\pausing|'. @236
+D522. Reset \\{overfull_rule} when determining tabskip glue. @804
+A523. Fix the logic for scanning |\ifcase| [in obsolete syntax---everything
+ is still done with braces since `|\fi|' doesn't exist yet]. @509
+* 30 Sep 1982
+I524. Change |"0.0"| to |"?.?"| (suggested by DRF). @186
+* 2 Oct 1982
+Q525. Use conditional thin spacing next to `Inner' noads. @764
+Q526. Make thick spaces conditional. @766
+* 4 Oct 1982
+P527. Increase \\{trie_size} from 7000 to 8000, because of Frank Liang's improved
+ (but longer) hyphenation patterns. @11
+* 6 Oct 1982
+F528\>X330. Change the string lengths to match the new \\{\TeX_format_default}. @520
+# Version 0 of \TeX\ is being released today!
+* 8 Oct 1982
+B529. Fix a blunder: I decreased $h$ mod a quarterword when it should have
+ been decreased mod \\{trie_op_hash_size} (HWT). @944
+* 9 Oct 1982
+P530\>X258. Fix a typo (`|!|' not `|&|') in the |WEB| documentation. @524
+F531. Remember to call \\{initialize} if a different format was preloaded
+ (Max D{\'\i}az). @1337
+# Version 0.1 incorporates the above changes.
+* 12 Oct 1982
+G532. Add the `|\immediate|' feature, by popular request. @1375
+# Version 0.2 incorporates this (somewhat extensive) change.
+* 13 Oct 1982
+P533. Introduce new |WEB| macros so that \\{glue_ratio} is more easily changed. @109
+# I began writing {\sl The \TeX book\/} today: edited the old preface and
+ searched in the library for quotations.
+* 14 Oct 1982
+B534. Change the type of \\{hd} to \\{eight_bits}; it's
+ not a \\{quarterword} (HWT). @649
+S535\>X281. Revise the optimization of\/ |DVI| commands: It's not always safe to eliminate
+ \\{pop} when the preceding byte is \\{push}, since |DVI| commands
+ have variable length! (Embarrassing oversight caught by DRF.) @601
+* 15 Oct 1982
+C536. Test `$\\{prev_depth}>\\{ignore_depth}$', not `$\ne$'. @679
+# Version 0.3 incorporates the above changes.
+* 16 Oct 1982
+P537. Omit definition of \\{align_size}; it's never used (Bill Scherlis). @11
+I538. Inhibit error messages when packaging box 255. @1017
+* 21 Oct 1982
+A539\>X145. Subtract $\\{width}(q)$ from \\{page_goal}, don't add it to
+ $\\{page_so_far}[1]$. @1009
+# Version 0.4 incorporates the above changes.
+* 22 Oct 1982
+P540. Increase the amount of lower (variable-size) memory from 12000 to 13000,
+ since the \TeX\ program listing now needs about 11500. [At this time
+ there still is a fixed boundary between upper and lower memory.] @12
+G541. Add a new parameter |\boxmaxdepth|. @1086
+# Version 0.5 incorporates the above changes.
+* 26 Oct 1982
+B542. Fix an off-by-one error caught by Gabi Kuper and HWT.
+ (I forgot `${}+1$'). @1317
+B543. Fix the spacing of displayed control sequences: \\{print_cs} should base its
+ decision on $\\{cat_code}(p-\\{single_base})$, not $\\{cat_code}(p)$. @262
+# The |TRIP| test detected this bug, but I didn't notice.
+* 27 Oct 1982
+S544. Set \\{math_type} before saying $\\{fetch}(\\{nucleus}(q))$, since
+ fetching can have a side effect. @752
+* 28 Oct 1982
+G545. Install a major change: Fonts now have identifiers instead of code letters.
+ Eliminate the `|\:|' primitive, and give corresponding new
+ features to `|\the|'. @209
+# Actually I began making these changes on October 26, but I needed two days
+ to debug them and to put Humpty Dumpty together again.
+# At this time I'm also drafting macros for typesetting {\sl The \TeX book}.
+# The above changes have been incorporated into Version 0.6.
+* 30 Oct 1982
+# After years of searching, I've finally found a definitive definition of
+ the printer's point; and (unfortunately) my previous conjecture was
+ wrong. The truth is that $\rm83\,pc=35\,cm$, exactly;
+ so I am changing \TeX\ to conform.
+C546. Revise unit definitions for the `real' printer's point. @458,617
+# Version 0.7 incorporates the above.
+* 1 Nov 1982
+# Oops! Retract error \#546, and retract \TeX\ Version 0.7;
+ the source of my information about points was flaky after all.
+ My original suppositions were correct,
+ as confirmed by NBS Circular 570.
+* 4 Nov 1982
+C547. Revise the definition of |dd|, conforming to the definitive value
+ shown me by Chuck Bigelow. @458
+R548\>545. Introduce ``frozen'' copies of
+ font identifiers, to be returned by |\the\font|, so that font
+ manipulation is more robust. @1257
+* 5 Nov 1982
+D549. Reset \\{looseness} and paragraph shape when beginning a |\vbox|. @1083
+* 6 Nov 1982
+D550. De-update \\{align_state} when braces are in constants. @442
+I551\>X294. Improve error recovery for bad alignments. @1127
+# Today I wrapped up Chapters 4 and 5.
+* 8 Nov 1982
+G552. Give more power to |\let|: the right-hand side needn't be a control
+ sequence. @1221
+I553. Amend \\{show_context} to say
+ `$(\\{base_ptr}=\\{input_ptr})\lor{}$'; otherwise undefined control
+ sequences can be invisible in unusual cases (John Hobby). @312
+A554. Compute demerits more suitably by adding a penalty squared, instead of
+ adding penalties before squaring. @859
+# Previously a slightly loose hyphenated line followed by a decent line
+ was considered worse than a decent hyphenated line followed by
+ a quite loose line.
+* 10 Nov 1982
+E555. Save a bit of buffer space by declaring \\{pool_file} only in
+ |INITEX|. @50
+* 11 Nov 1982
+I556. Introduce a new context indicator to clarify \TeX's scanning state:
+ A special type
+ called \\{backed_up} is distinguished from other kinds of \\{inserted}
+ lists; it is called `recently read' or `to be read again', while
+ others are called `inserted'. @314
+I557. Append a comment, `|treated as zero|', to the missing-number message. @446
+I558. Ignore the settings of\/ |\hfuzz| or |\vfuzz| if\/ |\hbadness| or |\vbadness|
+ is less than 100. @666,677
+* 13 Nov 1982
+# Major surgery on the program is planned for today, because of new ideas
+ suggested by correspondence with MDS and other macro writers.
+G559. Introduce a new |\tokens| register; this will be useful and easy to add,
+ since \TeX\ already can handle |\everypar| and |\output|. @1227
+C560\>X34. Change \\{get_x_token} to \\{get_token} when scanning an optional
+ space; then a construction like
+ |\def\foo{...}\foo| won't complain that |\foo| is undefined. @443
+# This change was retracted when it was being debugged, because it could
+ cause \\{endv} to abort the job. Then it was re-established again
+ when I found that \\{endv} needed to be more robust anyway.
+ [But it was eventually rescinded again.]
+G561. Make |\span| mean `expand' in a preamble. @782
+E562. Use three separate {\bf if\/} tests instead of
+ `$\land$' in the inner loop of \\{get_next}, to gain efficiency. @342
+R563. Introduce \\{get_r_token} so that assignments have uniform error
+ messages and so that frozen equivalents cannot be changed. @1215
+# I gave a few variables more mnemonic names as I made these changes.
+C564. Move conditional statements from the semantics (`stomach') part of
+ \TeX\ to the syntax (`mouth') part, by introducing `|\fi|'.
+ Also introduce |\csname| and |\endcsname|. @372,489\hbox{--}500
+# This makes macros much more predictable and logical, but it is by far
+ the most drastic change ever made to \TeX. The program began to come
+ back to life only after three days of solid hacking.
+# Several other things were cleaned up as part of this change
+ because it is now more natural to handle them differently.
+ For example, a null control sequence has now become more logical.
+# The result of all this is called Version 0.8.
+* 18 Nov 1982
+# Today I resumed writing Chapter 8. Tomorrow I'm $\,2^{14}$ days old!
+* 21 Nov 1982
+F565. Declare $c$ as a local variable for hyphenation (DRF). @912
+E566. Omit the ``first pass'' and try hyphenations immediately,
+ if\/ |\pretolerance| is negative (suggested by DRF). @863
+R567. Don't ship out incredibly huge pages; they might foul up
+ |DVI| files. @641
+* 2 Dec 1982
+G568. Add new features |\everymath| and |\everydisplay|. @1139,1145
+G569. Add a new feature |\futurelet|. @1221
+# The changes above have been incorporated into Version 0.9 of TeX.
+* 7 Dec 1982
+G570. Add a new |\endinput| primitive (suggested by FY). @362,378
+* 8 Dec 1982
+I571. Try \\{off_save}, if\/ |\par| occurs in restricted horizontal mode.
+ (This avoids embarrassment if \TeX\ says `type a command or
+ say |\end|', then when you type |\end| it says you can't!)
+ [However, I soon retracted this change.] @1094
+* 21 Dec 1982
+A572. Redefine |\relax| so that its \\{chr} field exceeds 127. (This facilitates
+ the test for end in \\{scan_file_name}.) @265
+F573\>566. Call \\{begin_diagnostic} when omitting
+ the first pass of line breaking. @863
+A574. Fix the logic of glue scanning: In |\hskip-1pt plus2pt| the minus should
+ apply only to the |1pt|. @461
+* 23 Dec 1982
+I575. Renumber the decimal codes in paragraph statistics for loose and tight
+ lines; they were ordered backwards. @817
+C576. Treat a paragraph that ends with leaders like a paragraph that
+ ends with glue. @816
+C577. Allow commas as alternates to radix points, for Europeans. @438
+C578. Change |\hangindent| to a normal dimension parameter. [It had been
+ a combination of\/ |\hangindent| and |\hangafter|, with special
+ syntax.] @247
+G579. Make |\prevgraf| accessible to users. @422,1244
+G580. Split |\clubpenalty| off from |\widowpenalty|. @890
+# I'm typing Chapter 14 while making these changes.
+* 24 Dec 1982
+S581. Use \\{back_input} instead of {\bf goto} \\{reswitch} when
+ inserting |\par|, because |\par| may have changed. @1095
+* 25 Dec 1982
+# It's 10pm after a very Merry Christmas!
+I582\>X328. Don't prompt for a new file name if\/ |\openin| doesn't find a file. @1275
+G583. Add a new |\jobname| primitive. @472
+I584. Give the user a way to delete the dollar sign, when \TeX\ decides
+ to insert one. @1047
+C585. Allow optional equals after |\parshape|, and implement |\the\parshape|.
+ @423,1248
+* 26 Dec 1982
+I586. Add an \\{if_line_field} to the condition stack entries,
+ so that more informative error messages can be given. @489
+D587\>549. Introduce a \\{normal_paragraph} procedure, since initialization is needed
+ also within |\insert|, |\vadjust|, |\valign|, |\output|. @1070
+* 27 Dec 1982
+G588. Give users access to |\pagetotal| and |\pagegoal|. (Analogous to
+ \#679 and \#585, but simpler.) @1245
+I589\>X199. Introduce |\tracingpages|, allowing users to see
+ page-optimization calculations. Also split |\tracingparagraphs| off from
+ |\tracingstats|. @987,1005,1011
+# The changes above have been incorporated into Version 0.91 of \TeX.
+* 31 Dec 1982
+P590. Break the \\{build_page} procedure into two parts, by extracting
+ the section now called \\{fire_up}. [This is necessary because
+ some Pascal compilers, notably for IBM mainframes, cannot
+ deal with large procedures.] @1012
+S591\>564. Make |\ifodd1\else| legal by introducing \\{if_code}. @489
+Q592. Improve alignments when columns don't occur: Don't append null boxes
+ for columns missing before |\cr|, and zero out the tabskip
+ glue after nonpresent columns. @802
+I593. Make the error message about overfull alignment more intelligible.
+ @801,804
+# The changes above have been incorporated into Version 0.92 of \TeX82,
+ which was the last version of 1982,
+ completed at 11:59pm on December 31.
+* 3 Jan 1983
+# Today I'm beginning to write Chapter 15, and
+ planning the |\output| routine of |plain.tex|.
+C594\>X186. Change the logic of \\{its_all_over}; use \\{max_dead_cycles}
+ here too, instead of the fixed constant~100. @1054
+F595\>X34. Don't forget to \\{pop_nest} when an insert is empty. Also disallow
+ optional space after |\insert|$\,n\,$|{...}|. @1100
+* 4 Jan 1983
+C596\>541. Use the |\boxmaxdepth| that's declared inside a |\vbox| when packaging it.
+ @1086
+C597. Rename |\groupbegin| and |\groupend| as |\begingroup| and
+ |\endgroup|. @265
+G598\>594. Make |\deadcycles| accessible to users. @1246
+Q599. Base the split insertions on natural height plus depth, not
+ on \\{delta}. @1010
+# The changes above have been incorporated into Version 0.93.
+* 6 Jan 1983
+D600. Add \\{push_math} to handle a case where I forgot
+ to clear \\{incompleat_noad}. (This long-standing bug was
+ unearthed today by Phyllis Winkler.) @1136
+G601\>588. Add |\pageshrink|, etc., too. @1245
+G602. Introduce new parameters |\floatingpenalty|, |\insertpenalties|. Also
+ adopt a new internal representation of insertion nodes,
+ so that |\floatingpenalty|, |\splittopskip| and |\splitmaxdepth|
+ can be stored with each insertion. @140,1008
+* 7 Jan 1983
+Q603. Improve the rules for entering \\{new_line}, in particular
+ when the end-of-line character is active. @343
+* 9 Jan 1983
+Q604. Distinguish between implicit and explicit kerns. @155,896
+C605. Change the name |\ignorespace| to |\ignorespaces|. @265
+C606\>560. Don't omit a blank space after |\def|, |\message|, |\mark|, etc.;
+ the previous hodge-podge of rules is impossible to learn. @473
+# The above changes appear in Version 0.94.
+* 12 Jan 1983
+# Beginning to write the chapters on math today.
+G607. Add a new feature: active characters in math mode. @1151
+* 15 Jan 1983
+A608. Fix a surprise bug: `|$1-$|' treated the |-| as binary. @729
+D609. Initialize \\{space_factor} inside discretionaries. @1117
+* 16 Jan 1983
+F610. Fix an incredibly embarrassing bug: I forgot to update \\{spotless} in the
+ \\{error} routine!
+# While fixing this, I decided to change
+ \\{spotless} to a more general \\{history} variable, as suggested
+ by IBMers who want a return code. @76,82,1335
+I611. Replace two calls of \\{confusion} by attempts at error recovery, in places
+ where `|This can't happen|' could actually happen. @1027,1372
+* 18 Jan 1983
+R612. Introduce the \\{normalize_selector} routine
+ to protect against startup anomalies
+ when the transcript file isn't open. Also make \\{open_log_file}
+ terminate in some cases. @92,535
+R613\>591. Insert |\relax|, not a blank space, to cure infinite
+ loop like |\ifeof\fi| (LL). @510
+G614. Change the old |\limitswitch| to |\limits|, |\nolimits|, and
+ |\displaylimits|. Incidentally, this fixes a bug in the former
+ positioning of integral signs. @682,749
+C615. Give a |\char| in math mode its inherited |\mathcode|. @1151
+Q616\>525. Make underline, overline, radical, vcenter, accent noads and |{...}|
+ all revert to type Ord instead of type Inner. Introduce a new primitive
+ |\mathinner|. (This fixes the spacing, which
+ got worse in some ways after change \#525.) @761
+# I'm working on Appendix G today.
+* 19 Jan 1983
+G617. Introduce a |\mathchoice| primitive. @1174
+C618. Move |\input| from the stomach to the mouth. @378
+C619\>X260. Introduce |\chardef|, analogous to |\mathchardef|. @1038,1224
+G620. Change |\unbox| to |\unhbox| and |\unvbox|; also add |\unhcopy|. @1110
+C621. Consider |\spacefactor|, |\pagetotal|, etc., as part of
+ \\{prefixed_command}, even though they are always global. @1211
+* 20 Jan 1983
+C622. Switch modes when |\hrule| occurs in horizontal mode or |\vrule|
+ in vertical. @1090,1094
+G623. Add a new |\globaldefs| feature. @1211
+* 21 Jan 1983
+E624. Optimize the code, in places where it's important (based on
+ frequency counts of \TeX\ usage
+ accumulated during the past week): Introduce \\{fast_get_avail}
+ and \\{fast_store_new_token}; reduce procedure-call overhead
+ in \\{begin_token_list}, \\{end_token_list}, \\{back_input},
+ \\{flush_node_list}; change some tests from `{\bf if} $a\land b$' to
+ `{\bf if}~$a$ {\bf then if}~$b$'. @122,371
+* 22 Jan 1983
+E625. Save space in math lists: Don't insert penalties within restricted
+ horizontal mode; simplify trivial boxes. @721,1196
+S626. Fix a surprising oversight in the \\{rebox} routine:
+ Ensure that $b$ isn't a vbox. @715
+C627\>545. Make |\nullfont| a primitive, so that \\{cur_font} always
+ has a value. (This is a dramatic improvement over \TeX78, where a
+ missing font was a fatal error called `|Whoa|'!) @552
+* 24 Jan 1983
+I628\>586. List all incomplete |\if|'s when the job ends. @1335
+* 29 Jan 1983
+C629\>552. Change initialization of \\{align_state} so that |\halign\bgroup|
+ works. @777
+* 30 Jan 1983
+D630\>625. Be sure to test `\\{is_char_node}($q$)' when checking for a trivial
+ box. @721
+# By extraordinary coincidence, this bug was caught when somebody
+ used font number~11 ($=\\{kern_node}$) in the second character
+ of a list of length~2!
+I631\>X168. Improve format for stats at end of run, as suggested by DRF. @1334
+# The changes above have been incorporated into Version 0.95.
+C632. Don't ignore the space after a control symbol (except `|\ |'). @354
+P633. Remove all trailing spaces at the right of input lines,
+ so that there's perfect compatibility with IBM systems that
+ extend short lines with spaces. @31
+* 3 Feb 1983
+I634. Assume that a \\{math_accent} was intended, after giving an error
+ message in the case $\\{mmode}+\\{accent}$. @1165
+G635. Add new primitives |\iftrue| and |\iffalse|. @488
+* 6 Feb 1983
+A636\>X304. Improve the accuracy of fixed-point arithmetic when
+ calculating sizes for |\left| and |\right|. (I had started by
+ dividing \\{delimiter_factor}, not \\{delta1}, by 500.) @762
+* 12 Feb 1983
+C637. Change the name |\delimiterlimit| to |\delimitershortfall|. @248
+C638. Make |\abovewithdelims..| equivalent to |\above|; change the
+ order of operands so that delimiters precede the dimension. @1182
+C639\>607. Remove the kludgy math codes introduced earlier;
+ make |\fam| a normal integer parameter and allow |\mathcode|
+ to equal $2^{15}$. @1233
+R640. Don't let |\spacefactor| become more than $2^{15}$. @1233,1243
+# I finished drafting Chapter 17 today.
+* 14 Feb 1983
+I641\>639. Replace octal output (\\{print_octal}) by hexadecimal (\\{print_hex})
+ so that math codes are clearer. @67
+F642\>619. Don't forget \\{char_given} in the \\{math_accent} routine. @1124
+* 17 Feb 1983
+C643\>622. Switch modes when |\halign| occurs in horizontal mode, or |\valign|
+ in vertical mode. @1090,1094
+* 18 Feb 1983
+I644. Add a new feature |\tracingrestores|. This requires a new procedure called
+ \\{show_eqtb}, whose code can be
+ interspersed with the \\{eqtb} definitions. @252
+* 25 Feb 1983
+I645\>622. Suggest using |\leaders| when the user tries a horizontal rule
+ in restricted horizontal mode. @1095
+* 27 Feb 1983
+I646. Specify the range of source lines, when giving warning messages
+ for underfull or overfull boxes in alignments. @662,675
+# Why did it take me all day to type the middle part of Chapter 18?
+* 4 Mar 1983
+G647. Introduce a new feature |\xcr| (suggested by LL). [Changed later to
+ `|\crcr|'.] @785
+I648\>631. Subtract out \TeX's own string requirements from the stats. @1334
+* 6 Mar 1983
+G649. Add new features |\everyhbox| and |\everyvbox|. @1083,1167
+* 9 Mar 1983
+R650\>X295. Avoid accessing \\{math_quad} when the symbol fonts aren't known
+ to be present. @1199
+P651\>533. Introduce \\{float} and \\{unfloat} macros to aid portability (HWT). @109
+C652. Introduce new names |\abovedisplayskip| and |\belowdisplayskip| for
+ the old |\dispskip|; also |\abovedisplayshortskip| and
+ |\belowdisplayshortskip| for the old |\dispaskip| and |\dispbskip|. @226
+* 10 Mar 1983
+C653. Unbundle |\romannumeral| from |\number| (suggested by FY). @468
+* 12 Mar 1983
+C654. Ignore leading spaces in \\{scan_keyword}. @407
+* 14 Mar 1983
+E655\>631. Use \\{write} and \\{write_ln} directly when printing stats. @1334
+* 16 Mar 1983
+Q656\>602. Refine the page-break cost function (introducing `\\{deplorable}',
+ which is not quite `\\{awful_bad}'), after suggestion by LL. @974,1005
+# The changes above have been incorporated into Version 0.96.
+* 18 Mar 1983
+G657. Add a new feature |\everyjob| suggested by FY. @1030
+* 19 Mar 1983
+I658. Don't treat left braces specially when showing macros. @294
+C659. Ignore blanks that would otherwise become undelimited arguments. @393
+* 21 Mar 1983
+F660\>X280. Make |\lastskip| handle \\{mu_glue} as well as ordinary glue. @424
+C661\>561. Expand only one level in a preamble |\span|. @782
+* 22 Mar 1983
+C662. Let a single |#| suffice in |\tokens|, |\message|, etc. (The previous rule,
+ in which |##| was always required as in macros, was a loser especially
+ in |\write| where you had to say |####|!) @477
+C663\>X328. Require the keyword `|to|' in |\read|. (This will avoid the common error
+ of an incomplete constant when no space appears
+ before the |\cs|.) Also allow terminal
+ I/O as a default when a stream number is out of range. @482,1225,1370
+* 26 Mar 1983
+C664. Replace |\ifeven|\<countnumber> by |\ifodd|\<number>, for better
+ consistency of language. @504
+S665\>564. Introduce the \\{change_if_limit}, to overcome a big surprise
+ bug relating to |\if\if aabc\fi|. @497
+# Such examples show that \\{cur_if} might not be current,
+ in my original implementation.
+* 28 Mar 1983
+G666\>X326. Tolerate non-characters as arguments to |\if| and |\ifcat|. @506
+C667. Change `|absent|' to `|void|', a better word. @487
+C668. Clear the \\{shift_amount} in |\lastbox|, since I don't
+ want to figure out what it means in all cases. @1081
+* 29 Mar 1983
+I669. Wake up the terminal before giving an error message. (This
+ means a special \\{print_err} procedure is introduced.)
+ (Suggested by DRF.) @34,73
+* 1 Apr 1983
+# Today I finished Chapter 21 (boxes) and began to draft Chapter 22 (alignments).
+G670. Allow periodic preambles in alignments. @793
+C671. Make |\leaders| line up according to the smallest
+ enclosing box. @627,636
+Q672. Allow hyphenation after whatsits (e.g., after items for an index). @896
+* 2 Apr 1983
+Q673. Call \\{build_page} when |\par| occurs in vertical mode. @1094
+C674. Clear \\{aux} in \\{init_row}, for tidyness. @786
+* 4 Apr 1983
+C675. Let digits switch families in math mode. @232
+* 7 Apr 1983
+Q676\>602. Refine the test for not splitting an insertion. @1008
+* 8 Apr 1983
+C677\>647. Rename |\xcr| as |\crcr|, at LL's request. @780
+* 9 Apr 1983
+# Took a day off and had a chance to help print a sample page on
+ a 150-year-old letterpress in Murphys, California.
+* 11 Apr 1983
+I678. Recover more sensibly after a runaway preamble. @339
+* 12 Apr 1983
+C679\>X328. Make |\read| span several input lines, if necessary to get
+ balanced braces. @482
+* 14 Apr 1983
+S680. Fix a subtle bug found by JS: \S882 can make $q$ a \\{char_node},
+ so we need to test `{\bf if} $\lnot\\{is_char_node}(q)$'.
+ [Actually I discovered much later that the real bug was
+ to omit `{\bf else}' at this point.] @881
+* 15 Apr 1983
+C681. Make |\uppercase| and |\lowercase| apply to all characters, regardless
+ of category. @1289
+# 7:30am. After working all night, I completed a draft of the manual thru
+ Chapter 22, for distribution to volunteer readers.
+# 5pm. The changes above have been incorporated into Version 0.97.
+* 17 Apr 1983
+R682. Change `\\{small_number}' to `$0\,.\,.\,65$' in the
+ hyphenation routine (DRF). @901
+I683. Flush patterns in the input when the user tries |\patterns|
+ outside of\/ |INITEX| (suggested by DRF). @1252
+# Tomorrow I fly to England, where I'll lecture and write a paper about
+ `Literate Programming' [{\sl Comp.~J. \bf27} (1984), 97--111].
+* 14 May 1983
+I684\>663. Improve the behavior of\/ |\read| from terminal
+ (suggested by Todd Allen at Yale).
+ [I'd forgotten to implement the extended stream numbers in \#663.
+ Also, the prompt is now omitted if $n<0$.] @484
+* 18 May 1983
+I685. Restrict |\write| $n$ to the transcript file only, if $n<0$. @1350
+C686\>X188. Unify the syntax for registers and internal quantities. (Remove
+ primitives called `|\insthe|' and `|\minusthe|'; rename
+ \\{scan_the} to \\{scan_something_internal}, and change its
+ interface accordingly; clean up command codes generally.) @209,413
+G687. Introduce new parameters |\hoffset|, |\voffset|. @617
+* 24 May 1983
+G688. Introduce a new parameter |\everycr| (suggested by MDS). @774,799
+# Many macro writers and preliminary-manual readers have been requesting
+ new features; I'll try to keep the language as concise and consistent
+ as possible.
+* 25 May 1983
+G689. Introduce |\countdef|, |\dimendef|, etc.\ (suggested by DRF long ago,
+ easy now in view of \#686). @1224
+G690. Introduce |\advance|, |\multiply|, |\divide| (suggested by FY). @1240
+G691. Introduce |\hyphenchar|; this requires a new command
+ \\{assign_font_int}, plus minor changes to about 15 modules. @915
+G692. Introduce |\skewchar| (easy because of \#691). @741
+G693. Introduce |\noexpand|. (I had difficulty thinking of how to
+ implement this one!) @358,369
+G694. Introduce |\meaning|. @296
+G695\>X231. Remove `|dm|' and `|vu|'; allow the more general `|.5\hsize|'. @455
+C696. Change `|\texinfo| $f$ $n$' to `|\fontdimen| $n$ $f$'. @578
+* 27 May 1983
+G697. Add a new feature |\afterassignment| (suggested by ARK). @1269
+C698\>619. Adjust the timing so that commands like `|\chardef\xx=5\xx|'
+ behave sensibly. @1224
+* 28 May 1983
+C699. Ignore `|\relax|' as if it were a space, in math mode and in a few other
+ places where |\relax| would otherwise be erroneous. @404
+Q700. Improve |\mathaccent| spacing with respect to subscripts
+ and superscripts (suggested by HWT). @742
+* 30 May 1983
+C701\>598. Terminate a job only when $\\{dead_cycles}=0$. @1054
+# The changes above constitute Version 0.98.
+* 3 Jun 1983
+# I finished the draft of Chapter 23 (output routines) today.
+G702. Allow |\mark| and |\insert| and |\vadjust| in restricted
+ horizontal mode, and also in math mode. (This is a comparatively
+ big change, triggered by the fact that |\mark| in a display
+ presently causes \TeX\ to crash with `|This can't happen|'!)
+ The global variable \\{adjust_tail} is introduced. @796,888,1085
+* 6 Jun 1983
+G703\>695. Replace (and generalize) the previous uses of\/ |ht|, |wd|, and |dp|
+ in dimensions by introducing the new control sequences
+ |\ht|, |\wd|, and |\dp|. @1247
+I704. Display sub-parts of noads with the symbols |^| and |_| instead of
+ |(| and~|[|. @696
+C705\>694. Allow |A..F| in hex constants to be \\{other_char} as well as
+ \\{letter}. @445
+* 7 Jun 1983
+E706\>654. Remove an instance of \<Scan optional space>, since it's now
+ redundant. @457
+C707. Legalize |\mkern\thinmuskip| and |\mkern5\thinmuskip|. @456
+C708. Clean up the treatment of optional spaces in numerical specifications. @455
+# A construction like |2.5\space\space\dimen0| was previously
+ valid after `|plus|' or `|minus|' only!
+# I'm obviously working on Chapter~24 today.
+C709\>545. Allow `|\font|' as a \<font identifier> for the current font. @577
+C710\>623. Don't make |\gdef| global when $\\{global_defs}<0$. @1218
+E711. Produce \\{zero_glue} as the outcome of
+ |\advance\spaceskip by-\spaceskip|. @1229
+I712. Make |\show| do something appropriate for every possible token. @1294
+G713\>559. Replace the (single) |\tokens| parameter by an array of
+ 256 token registers. @230
+C714. Allow |\indent| in math mode; also make |\valign| in math mode produce the
+ `|Missing|~|$|' error. @1046,1093
+E715. Remove redundant code: There's no need to check \\{cur_group}
+ or call \\{off_save} when starting alignments or equation numbers
+ in displays. @1130,1142
+* 8 Jun 1983
+C716. Disallow |\openout-1| and |\closeout-1|. @1350
+C717. Disallow |\lastbox| in math mode. @1080
+* 9 Jun 1983
+I718. Call \\{back_error}, not \\{error}, when |\leaders| aren't followed by
+ proper glue. @1078
+D719. Initialize for a possible paragraph, after |\noalign|
+ in a |\valign|. @785
+* 10 Jun 1983
+C720\>708. Expand the optional space after an ASCII constant. @442
+* 12 Jun 1983
+C721. Set $\\{space_factor}\gets1000$ after a rule or a
+ constructed accent. @1056,1123
+* 14 Jun 1983
+D722. Correct a serious blunder: Set $\\{disc_width}\gets0$ before testing
+ if $s$ is null (caught by JS). @869
+# This is a real bug that existed since the beginning!
+ It showed up on page~37 of the
+ Version~0 |TRIP| manual, but I didn't notice the problem.
+C723\>708. Make optional spaces after \<dimen> like those after \<number>. @448
+C724\>568. Insert \\{every_display} before calling \\{build_page}. @1145
+I725\>648. Report \TeX's capacity on overflow errors in a way that's
+ fully consistent with other statistical reports. @42
+* 17 Jun 1983
+C726. Make all |\tracing| decisions on the basis of $\ge$ versus $<$,
+ not $\ne$ versus~$=$. @581
+# Today I finished the draft of Chapter 27 (the last chapter)!
+# The changes above were released as Version 0.99 on June 19, 1983.
+* 20 Jun 1983
+C727. Set |\catcode`\%=14| in |INITEX|. @232
+C728\>587. Call \\{normal_paragraph} when |\par| occurs in vertical mode. @1094
+# Once again I'm retiring about 8am and awaking about 4pm.
+* 21 Jun 1983
+C729\>558. Don't append an overfull rule solely because of\/ |\hbadness|. @666
+R730. Don't allow the glue-ratio of shrinking to be less than~$-1$. @810,811
+* 22 Jun 1983
+B731\>653. Declare the parameter to \\{print_roman_int} to be of type \\{integer},
+ instead of \\{nonnegative_integer} (found by Debby Clark). @69
+C732\>690. Make the keyword `|by|' optional (suggested by LL). @1236
+* 24 Jun 1983
+I733. Say `|preloaded|' when announcing \\{format_ident}. @1328
+* 25 Jun 1983
+R734. Add extra boxes and
+ glue to the output of alignment. [This thwarts possible attempts
+ at trickery by which system-dependent glue set values
+ computed by |\span| could have gotten into \TeX's registers by
+ things like |\valign| and |\vsplit|. It also has the advantage
+ of perfect accuracy in alignment of vertical rules.] @809
+C735. Make leaders affect the height or width of the enclosing boxes. @656,671
+# Today I'm mainly installing a much-improved format for change files
+ in |WEB| programs (suggested by DRF).
+* 28 Jun 1983
+C736. Permit |\unskip| in vertical mode when we know that it does nothing. @1106
+* 1 Jul 1983
+E737\>700. Avoid redundant boxes when things like `|{\bf A}|' occur in math. @1186
+G738. Add a `|scaled|' feature to |\font| input. @1258
+D739\>700. Remember to correct \\{delta} when an accented box changes. @742
+* 2 Jul 1983
+R740.Introduce \\{bypass_eoln}, to remove anomalous behavior on input files
+ of length~1. (Suggested by DRF after the problem was discovered by LL). @31
+* 4 Jul 1983
+G741. Allow codes like |^^b| as well as |^^B|. @352,355
+G742. Introduce new parameters |\escapechar|, |\endlinechar|, |\defaulthyphenchar|,
+ and |\defaultskewchar|, to make \TeX\ less dependent on the
+ character set. (This affects many modules, since a lot of
+ error messages must be broken up so that they use \\{print_esc}.)
+* 7 Jul 1983
+P743. Use a system-dependent function \\{erstat} when opening or closing
+ files (suggested by DRF). @27
+* 11 Jul 1983
+# The computer is back up after more than 50 hours down time
+ (due to air conditioning failure).
+I744. Show total glue in the output of\/ |\tracingpages|. @985
+R745. Guard against insertion into an hbox. @993
+C746. Legalize the assignment \<tokenvar>=\<tokenvar>. @1227
+I747. Introduce a new parameter |\errhelp|. @1283
+F748\>623. Don't forget to check \\{global_defs} when |\tabskip| is changed. @782
+* 12 Jul 1983
+C749. Allow an |\outer| macro to appear after |\string|, |\noexpand|,
+ and |\meaning| (Todd Allen). @369,471
+C750. Make `|\the|' an expandable control sequence (i.e., move it
+ from the stomach to the throat); this cleans up
+ several annoying glitches. @367
+C751\>620. Allow |\unhbox| and |\unhcopy| in math mode if the box is void. @1110
+* 13 Jul 1983
+# I lectured for four hours at the TUG meeting today after very little sleep!
+* 16 Jul 1983
+# The following were suggested by TUG meeting discussions.
+L752. Round the value of \\{default_rule} more properly: It should be 26215. @463
+Q753\>700. Fix |\mathaccent| again; it's still not right!
+ The final height should be the maximum of
+ the height of accented letter without superscript and
+ the height of unaccented letter with superscript. @742
+G754. Add a new feature |\newlinechar|. @59
+G755. Allow boxes and rules in discretionaries (suggested by somebody
+ from Hewlett-Packard). @1121
+I756\>X28. Show all token expansions, not just macros,
+ when |\tracingcommands|. @367
+C757. Allow |\char| in a |\hyphenation| list. @935
+G758. Introduce a new feature |\aftergroup|; it can be implemented with
+ \\{save_stack}. @326
+C759. Run the running dimensions to alignment boundaries (suggested
+ by ARK). @806
+* 17 Jul 1983
+R760. Zero out \\{hyf} values at the edges, so that
+ weird pattern data cannot lead to Pascal range checks. @965
+R761\>X190. Decrease the |hc| codes for hyphenation, so that code~127 cannot
+ possibly be matched. @937,962
+C762\>672. Allow whatsits after hyphenatable words. @899
+C763\>604. Represent an italic correction as an explicit kern. @1113
+* 18 Jul 1983
+C764. Allow lowercase letters in file names. @519
+I765. Change the message `|No output file|' to: `|No pages of output|'. @642
+I766. Confirm that a quiet mode is being entered, when error
+ interaction ends with |Q|, |R|, or |S| (suggested by ARK). @86
+# Version 0.999 was finally installed today; a new program listing has
+ been printed.
+# From now on, I plan to keep all section numbers unchanged.
+# I'm done writing Appendix~H; beginning to revise Chapter~20.
+* 25 Jul 1983
+C767\>663. Allow space after `|to|' in the |\read| command (FY). @1215
+# To bed at 1pm today.
+* 27 Jul 1983
+S768\>665. Stack the current type of\/ |\if|; this precaution is necessary
+ in general (FY). @498
+# To bed at 2pm today.
+* 29 Jul 1983
+E769. Avoid putting a control sequence in the hash table
+ when it occurs after |\ifx|. (Requested by Math Reviews people.) @507
+# Finished a version of {\sl The \TeX book\/} lacking only Appendices
+ D, E, and~I, for distribution to interested readers.
+# To bed at 10:30pm, planning to arise regularly at 6am for a change.
+* 31 Jul 1983
+I770\>766. Call \\{update_terminal} when going quiet (HWT). @86
+* 1 Aug 1983
+C771. Don't put an empty line at the end of an |\input| file! (This simplifies
+ the rules and the program, and also gets around a bug that occurred
+ at the end of files with $\\{end_line_char}<0$.) @362
+# The changes above went into Version 0.9999, which was widely distributed.
+* 16 Aug 1983
+B772\>665. Rectify a ridiculous gaffe: I initialized $q$ every time the loop
+ of \\{change_if_limit} was performed! (Found by FY.) @497
+I773\>648. Distinguish `|string|' from `|strings|' when reporting statistics. @1334
+A774. Introduce \\{lx}, to correct a bug in |\xleader| computations
+ (found by FY). @627
+* 20 Aug 1983
+F775. Don't forget to apply |\/| to ligatures. @1113
+# Today I began to read all previous issues of {\sl TUGboat}, in preparation for
+ Appendix~D.
+* 27 Aug 1983
+I776. Add debugging hack number~16, to help catch subtle data structure bugs. @1339
+E777. Remove redundant setting and resetting of \\{name_in_progress}. @531
+S778\>618. Suppress |\input| during a font size spec; otherwise
+ \\{cur_name} is clobbered (found by MDS). @1258
+G779. Introduce new conditionals |\ifhbox| and |\ifvbox|. @505
+* 29 Aug 1983
+D780\>750. Test for an empty list, if emptiness will mess up the data structure.
+ (Found by Todd Allen.) @478
+E781\>624. Use \\{fast_store_new_token} in another place for efficiency. @466
+I782. Say `|has only|' instead of `|has|'. @579
+# These changes yield Version 0.99999, used only at Stanford.
+* 30 Aug 1983
+C783. Make funny blank spaces showable. @298
+* 31 Aug 1983
+C784\>754. Make |\newlinechar| affect \\{print_char}, not just \\{print}. @58
+* 4 Sep 1983
+G785. Add new features |\lastkern|, |\lastpenalty|, |\unkern|, |\unpenalty|.
+ @424,996,1105
+# OK, Appendix D is finished!!
+# The above changes have been installed in Version 0.999999.
+* 17 Sep 1983
+P786\>548. Don't bother making duplicate font identifiers; that
+ was overkill, not really needed. @1258
+# Will this be the historic last change to \TeX?
+* 18 Sep 1983
+I787. Correct a minor inconsistency, `|display|' not `|displayed|'. @211
+* 20 Sep 1983
+C788\>604. Treat the kerns inserted for accents as explicit kerns. @1125
+* 26 Sep 1983
+I789. Change `|log|' to `|transcript|' in several messages. @535,1335
+# The index was finished today; I mailed the entire {\sl \TeX book\/} to
+ Massachusetts for final proofreading before publication.
+* 1 Oct 1983
+D790. Prevent uninitialized trie positions in case of overflow
+ (found by Bernd Schulze). @944
+* 7 Oct 1983
+# Henceforth our weekly `\TeX\ lunch' meetings will be called `\MF\ lunch'.
+# DRF begins to produce {\sl The \TeX book\/} on our APS phototypesetter.
+* 14 Oct 1983
+P791\>633. Ignore spaces at the ends of lines also in |TEX.POOL| (found
+ by DRF). @52
+D792\>610. Initialize the \\{history} variable at \\{start_here} (DRF). @1332
+* 18 Oct 1983
+I793. Extend \\{runaway} to catch runaway text (suggested by FY). @306
+D794. Reset \\{cur_cs} after \\{back_input}, not after scanning the
+ `|=|' (found by FY). @1226
+* 24 Oct 1983
+I795\>638. Change the error recovery for bad delimiters, in accordance with
+ the changed syntax. (Found by Barry Smith.) @1183
+* 9 Nov 1983
+E796. Optimize the code a bit more, based on empirical frequency data gathered
+ during September and October: In \S45, use the fact that the
+ result is almost always true. In \S380, delete `{\bf while}
+ \\{true} {\bf do}' since many compilers implement that badly.
+ Rewrite \S852 to avoid calling \\{badness} in the most common case.
+ @45,380,852
+* 3 Dec 1983
+F797. Don't forget to call |error| after the message has been
+ given (noticed by Gabi Kuper). @500
+# Version 1.0 released today incorporates all of the above.
+* 9 Dec 1983
+# Dinner party with 36 guests to celebrate \TeX's coming of age.
+* 2 Feb 1984
+S798\>786. Reinstall |\font| precautions that I thought were unnecessary.
+ I overlooked many problematic possibilities, like
+ `|{\font\a=x| |\global\a}| |\the\font|'
+ and `|\font\a=x| |\font\b=x| |\let\b=\undefined| |\the\a|', etc.
+ (Found by Mike Urban.) The new remedy involves removal of the
+ \\{font_ident} array and putting the identifiers into a frozen
+ part of the hash table; so there's a sprinkling of corrections
+ in lots of modules. But basically the change is quite conservative,
+ so it shouldn't spawn any new bugs (it says here). @222,267,1257
+* 9 Feb 1984
+S799. Remove the possibility of double interrupt, in a scenario
+ found by Clint Cuzzo. @1031
+* 12 Feb 1984
+Q800. Improve spacing in a formula like |$(A,<)$|. @764
+* 13 Feb 1984
+A801. Avoid a bad {\bf goto}, as diagnosed by Clint Cuzzo and George O'Connor.
+ (Must not go directly to \\{switch}.) @346
+E802. Conserve string pool space by not storing file name in two
+ guises (suggested by DRF). @537
+* 26 Feb 1984
+I803. Make scaled output look cleaner by printing fewer decimals whenever
+ this involves no loss of accuracy. (Suggested by \MF\ development.) @103
+* 2 Mar 1984
+R804. Maintain 17-digit accuracy, not 16; now
+ constants like `|.00000762939453126pt|' will round correctly. @452
+* 16 Mar 1984
+R805. Plug a loophole that permitted recursion in \\{get_next}, by disallowing
+ deletions in \\{check_outer_validity}. @336
+* 24 Mar 1984
+I806. Open the terminal before trying to wake it up, when the program starts bad.
+ @1332
+* 27 Mar 1984
+R807. Check that $k<63$, to avoid the
+ |\patterns{xxx...xxxdxxxdxxx}| anomaly found by Jacques D\'esarm\'enien. @962
+* 11 Apr 1984
+F808. Supply code for the missing case \\{adjust_node} in \\{copy_node_list}. @206
+# Yoicks, how could serious bugs like that have escaped detection?
+* 11 Jun 1984
+D809\>627. Initialize \\{char_base}, etc., for \\{null_font}.
+ (Found by Nick Briggs.) @552
+R810. Clear the \\{buffer} array initially (Briggs). @331
+* 21 Jun 1984
+C811. Look ahead for ligature or kern after a |\chardef|'d item
+ (D\'esarm\'enien). @1038
+* 4 Jul 1984
+R812. Make the quarterword constraint explicit with a
+ new `\\{bad}' case (19). @111
+* 7 Jul 1984
+E813. Optimize \\{firm_up_the_line} slightly,
+ to be consistent with the \MF\ program. @363
+* 8 Jul 1984
+I814. Give additional diagnostics when |\tracingmacros>1|. @323
+# The changes above were incorporated in Version 1.1, released July 9, 1984.
+* 27 Jul 1984
+I815. Say `|see| |the| |transcript| |file|' after handling offline |\show|
+ commands. (Suggested by \MF.) @1298
+* 20 Oct 1984
+I816. Allow `|0|' in response to error prompts. @84
+# Those two changes led to Version 1.2.
+* 25 Nov 1984
+R817. Don't forget to check for \\{null} before looking at subfields
+ of a node. (This was ``dirty Pascal,'' with two quarterword 0's
+ read as a halfword.) @846
+R818. Ditto in another place! @939
+E819. Remove the fixed-at-compile-time
+ partition between lower and upper memory. @116,125,162
+# This major change in memory management
+ completes Version 1.3, which was published in preliminary
+ looseleaf form as `\TeX: The Program'.
+* 20 Dec 1984
+R820. Keep the \\{node_size} field from overflowing if the lower part of memory
+ is too large. @125
+# That was another bug in existence from the beginning!
+* 5 Jan 1985
+I821. Improve the missing-format-file error (DRF). @524
+* 7 Jan 1985
+I822. Update the terminal right away so that the welcoming message will
+ appear as soon as possible (DRF). @61
+* 23 Jan 1985
+I823. Convey more uncertainty in the
+ help message at times of \\{confusion}. @95
+I824\>610. Improve the \\{history} logic in the \\{warning_issued} case. @245
+* 18 Feb 1985
+P825\>810. Stick to standard Pascal: Don't
+ use \\{first} in a {\bf for} loop. [Some procedures ``threaten'' it
+ globally, according to British Standard 6192, section 6.8.3.9.]
+ (Pointed out by CET.) @331
+* 11 Apr 1985
+S826. Prevent nonexistent characters from being output by
+ unusual combinations of ligatures and hyphenation. @915
+* 15 Apr 1985
+L827\>819. Compute memory usage correctly in |INITEX|; the previous number
+ was wrong because of a |WEB| text macro without parentheses (DRF). @164
+* 16 Apr 1985
+E828. Speed up \\{flush_list} by not calling \\{free_avail} (DRF). @123
+* 17 Apr 1985
+A829\>788. Introduce a special kind of kern for accent positioning;
+ it must not disappear after a line break. @837,879,1125
+* 18 Apr 1985
+R830\>755. Prevent |\lastbox| and |\unkern| from removing discretionary replacements.
+ @1081,1105
+# That completes Version 1.4.
+* 26 Apr 1985
+C831. Don't try \\{\TeX_area} if a nonstandard file area has been specified
+ (DRF). @537
+# That was \#401 in \TeX78; I never learn!
+* 30 Apr 1985
+C832\>754. Eliminate the limitation on |\write| length; the reason for it
+ has disappeared (Nancy Tuma). @1370
+* 8 May 1985
+D833\>819. Allocate two words for the head of the \\{active} list (CET). @162
+* 11 May 1985
+I834. Change \\{wterm} to \\{wterm_ln} after a bad beginning (Bill Gropp). @1332
+E835\>806. Don't open the terminal twice (CET). @1332
+* 22 May 1985
+R836. Test for \\{batch_mode} after trying to open the transcript file,
+ not before (DRF). @92
+R837. Be prepared for string pool overflow while reading the command line!
+ (This bug was first found in \MF, when it could occur more easily.) @525
+* 7 Aug 1985
+A838. Fix a bug in |\edef\foo{\iffalse\fi\the\toks0}|: \TeX\ should stay in the
+ loop when expanding non-|\the|. (Found by Dan Brotsky.) @478
+# The above changes were incorporated in Version 1.5.
+* 27 Nov 1985
+C839\>764. Make `|plain|' a lowercase name, for consistency with the manual. @521
+I840\>669. Wake up the terminal for |\show| commands. @1294,1297
+# The above changes were incorporated in Version 2.0, which was published
+ as Volume~B of the {\sl Computers \& Typesetting\/} series.
+* 15 Dec 1986
+I841. Punctuate the Poirot help message more carefully. @1283
+* 28 Jan 1987
+R842. Make sure that \\{max_in_open} doesn't exceed 127 (DRF). @14
+D843\>680. Don't allow a |\kern| to be clobbered at the end of a pre-break list
+ when a discretionary break is taken. (A missing `{\bf else}' was the
+ source of the error, diagnosed incorrectly before.) @881
+D844. Take account of discarded nodes when computing the background width
+ after a discretionary. @840
+# That was the first really serious bug detected for more than 17 months! I found it
+ while experimenting with right-to-left extensions.
+# Version 2.1 was released on January 26, 1987.
+* 5 Feb 1987
+E845. Remove cases in \\{shorthand_def} that cannot occur (found by Pat Monardo). @1224
+* 14 Apr 1987
+R846. Improve robustness of data structure display
+ when debugging (Ronaldo Am\'a). @174,182
+* 21 Apr 1987
+E847. Make the storage allocation algorithm more elegant and efficient. @127
+* 22 Apr 1987
+A848\>742. Calculate the empty-line condition properly when \\{end_line_char} is
+ absent. @360
+# The previous three changes were found while I was teaching a class based
+ on Volume~B; they led to Version 2.2.
+* 28 Apr 1987
+E849. Avoid closing a file when \TeX\ knows that it isn't open (JS). @560
+* 3 Aug 1987
+S850. Clean up unfinished output if it's necessary to
+ \\{jump_out} (Klaus Gunterman). @642
+# That makes Version 2.3; subsequent version numbers won't be logged here.
+* 19 Aug 1987
+A851. Indent rules properly in cases like\hfil\break
+ |\hangindent=1pt$$\halign{...\cr\noalign{\hrule}}$$|. @806
+* 20 Aug 1987
+S852. Introduce \\{co_backup} because of cases like
+ |\hskip 0pt plus 1fil\ifdim| (Alan Guth). @366
+* 9 Nov 1987
+S853. Change the calculation for number of leader boxes, so that
+ it won't be too sensitive to roundoff error near exact multiples
+ (M. F. Bridgland). @626
+* 17 Nov 1987
+A854. Replace my stupid algorithm
+ for fixed-point multiplication of negatives (WGS). @572
+* 12 Dec 1987
+B855. Fix a typo in the initialization of hyphenation tables (PB). @952
+# That error was almost completely harmless, thus undetectable,
+ except if some |\lccode| is~1 and no |\patterns| are given.
+* 23 Dec 1987
+S856\>564. Be more cautious when ``relaxing'' a previously undefined |\csname|;
+ you might be inside a group (CET). @372
+* 20 Apr 1988
+S857. Make sure \\{temp_head} is well-formed whenever it can be
+ printed in a ``runaway'' message: Consider constructions like
+ |\outer\def\a0{}\a\a| (Silvio Levy). @391
+* 24 Apr 1988
+S858\>618. Avoid conflicting use of the string pool in constructions like
+ |\def\\#1{}\input a\\\z| (Robert Messer). @260
+* 10 May 1988
+R859. Amend the |\patterns| data structure when $\\{trie_min}=0$
+ (PB). @951,953
+* 25 May 1988
+R860. Guarantee that \\{trie_pointer} cannot be out of range. @923
+S861\>618. Avoid additional bugs like \#858 in constructions
+ like |\input a\romannumeral1|, etc. @464,465,470
+R862\>618. Prevent similar string pool confusion that could occur
+ during the processing of |**\input\romannumeral6|. @525
+* 19 Jun 1988
+S863\>819. Prevent a negative dividend from rounding upward,
+ causing a loop (CET). @126
+E864\>819. Adopt a smoother allocation strategy when
+ memory is nearly gone (CET). @126
+* 20 Jun 1988
+D865\>852. Initialize \\{cur_order}, now that it's being backed up
+ (Tsunetoshi Hayashi). @439
+* 6 Nov 1988
+S866\>612. Disable \\{fatal_error} in \\{prompt_input}, so that
+ \\{open_log_file} can use it safely (Tim Morgan). @71
+S867\>836. Force terminal output whenever \\{open_log_file} fails. @535
+* 14 Dec 1988
+P868\>866. Restore \\{fatal_error} in \\{prompt_input}, but don't
+ let it be unsafe for \\{open_log_file}. @92,534
+* 23 Jan 1989
+D869. Give $q$ a legal value when recovering from ``infinite shrinkage''
+ error. @976,1004
+* 17 Feb 1989
+D870\>758. Avoid spurious error message for |\aftergroup\relax\dump| by avoiding
+ inaccessible |\aftergroup| tokens (FM and Rainer Sch\"opf). @280
+* 20 Mar 1989
+R871. Don't refer to \\{link}(\\{null}) even when it ``can't happen''
+ (PB). @791
+* 7 Jun 1989
+S872. Avoid confusion from |$$\begingroup\halign{#\cr}$$| (FM). @1130
+* 20 Jun 1989
+S873. Put fraction digits into dynamic memory, not the global \\{dig} array,
+ because of constructions like |.5\ifdim.6| (FM). @452
+* 17 Jul 1989
+S874. Prevent embarrassing attempts to report errors before the string
+ mechanism has been fully initialized, for example when the
+ command line exceeds the buffer size (WGS). @31
+* 16 Aug 1989
+M875. Allow integer products to be 31 bits long (FM). @105
+* 31 Aug 1989
+C876\>441. Increase the number of tokens shown by \\{token_show}
+ (J. Lavagnino). @295
+S877. Avoid confusion from |$$\begingroup\eqno$$| (FM). @1140
+# The recent TUG meeting turned out to be an extend-\TeX-for-the-nineties
+ party! I agreed that some extensions for non-English languages
+ ought to be made while I still knew how to do them. (In other words,
+ I broke my firm commitment to keeping \TeX\ completely stable;
+ but in this case nobody objected.) The following eleven changes
+ were coded during the month of September.
+* 30 Sep 1989
+G878. Install major change allowing general 8-bit code input. @38,352
+G879. Install major change allowing multiple hyphenation tables
+ (M. Ferguson). @923
+G880. Introduce new parameters |\lefthyphenmin| and |\righthyphenmin|. @923
+G881. Introduce major new ligature capabilities including implicit
+ boundary characters. @908,1037
+G882. Install new |\inputlineno| feature suggested by MDS. @424
+G883. Install new |\holdinginserts| feature suggested by FM. @1014
+G884. Install new |\badness| feature. @424,664
+G885. Install new |\emergencystretch| feature. @863
+G886. Install new |\errorcontextlines| feature suggested by FM. @311
+S887. Recover from anomaly when hyphenation |char_warning| clobbers
+ |old_setting|. @863
+P888. Make it easier to change the format extension (Don Hosek). @520,1328
+* 16 Oct 1989
+R889. Avoid range check in null font with |bc=256| (PB). @565
+* 22 Nov 1989
+S890\>856. Prevent \\{save_stack} conflicts in
+ |{\hbox\expandafter{\csname\endcsname}}| and\kern-3pt\break
+ similar constructions (WGS). @645,1117
+S891\>858. System-dependent parts of file names must be addressed relatively,
+ not absolutely (FM and Rainer Sch\"opf). @516,517
+* 3 Dec 1989
+G892\>880. Allow different hyphenmins in the same paragraph (M. Ferguson). @1376
+S893. Distinguish |\par| from characters on |\if| tests. (MVL). @334
+S894\>378. Alignments need to be more robust against malicious
+ attacks (MVL). @782
+C895. Don't let kerns in discretionaries disappear at breaks (MVL). @869
+Q896\>881. Make the new hyphenation reconstruction procedure less cautious,
+ so that it doesn't lose hyphens found by the old method. @914
+* 11 Dec 1989
+D897\>879. Make an undumped trie dumpable again (PB). @1325
+* 18 Dec 1989
+G898\>588. Allow access to page totals in |\output| routines
+ (FM and Chris Rowley). @421
+* 22 Jan 1990
+R899\>611. Recognize more cases of unbalanced |\output| (CET). @1026
+* 29 Jan 1990
+S900\>758. Make |\aftergroup| work properly after |\eqno| (Michael Downes).
+ @1194
+* 1 Feb 1990
+S901\>878. Fix one more case of \\{end_line_char_inactive} (WGS). @360
+* 22 Feb 1990
+R902. Don't lose the last active node when total demerits are very high (FM).
+ @836,854
+* 13 Mar 1990
+D903. Doublecheck math fonts after making equation number (MVL). @1194
+D904. Don't forget to rule out charnodes before testing \\{type} (MVL).
+ @805,1202
+* 23 Mar 1990
+F905\>881. Don't change the font of punctuation preceding a hyphenated word
+ (Scott C. Allendorf). @903
+I906. Balance the parentheses shown on the terminal during normal runs. @1335
+E907. Optimize |\ifx\p\q| after |\let\p=\q| (MVL). @508
+S908. Treat migration properly in displays (MVL). @1199,1205
+# We're now up to Version 3.0; I sincerely hope all bugs have been found.
+* 11 May 1990
+F909\>881. Initialize |\nullfont| ligature parameters (Lance Carnes). @552
+* 22 July 1990
+S910\>579. Treat |\prevgraf| as zero within |\write| (Bogus\l aw Jackowski).
+ @422
+* 26 July 1990
+S911. Report `|l.1|' when first line of file overflows buffer
+ (George Russell). @538
+* 5 December 1990
+S912\>878. Translate unprintable characters in font identifiers (WGS). @63
+* 28 December 1990
+R913. Avoid range check when there are 65536 or more pages (Eberhard Mattes).
+ @642
+* 20 September 1991
+I914\>878. Improve error message for |\mathchar| out of range. @436
+S915\>878. Retain unprintable internal strings in 8-bit form (FM). @59
+S916\>881. Retain right punctuation context for ligature reconstruction
+ (problem found by Brian Hamilton Kelly). @903
+* 10 January 1992
+S917\>881. Also avoid producing a double kern at boundary (CET). @897
+S918. Disallow |\setbox| where it doesn't work (Robert Hunt). @1241,1270
+S919. Robustify |\mskip| and |\mkern| in presence of negative quad (WGS).
+ @716,717
+S920\>679. Defend against `|}{|' in |\read| (Michael Downes). @483
+E921\>798. Save string memory if font occurs repeatedly (Bogus\l aw Jackowski).
+ @1260
+S922\>784. Don't let |\newlinechar| interrupt unprintable expansion (Bernd
+ Raichle). @59,60
+* 7 February 1992
+D923\>881. Restore |cur_l| properly when boundary character doesn't exist
+ (Mattes and Raichle). @1036
+* 17 July 1992
+C924\>892. Use current language at beginning of horizontal mode (Rainer
+ Sch\"opf and CET). @1091,1200
+* 17 December 1992
+R925\>879. Avoid (harmless) range errors (Philip Taylor and CET). @934,960
+* 25 February 1993
+C926\>881. Protect kerns inserted by boundary characters (William Baxter).
+ @837,866
+S927\>917. Don't let boundary kern disappear after hyphenation. @897
+* 26 June 1993
+R928\>668. Avoid potential future bug (Peter Breitenlohner). @628,637
+* 17 December 1993
+S929\>881. Boundary character representation shouldn't depend on the font
+ memory size (Berthold Horn). @549,1323
+* 10 March 1994
+R930. Huge font parameter number may exceed array bound (CET). @549
+* 4 September 1994
+F931\>926. Math kerns are explicit (Walter Carlip). @717
+R932. Avoid overflow on huge real-to-integer conversion. @625,634
+* 19 March 1995
+R933. Avoid spurious reference counts in format files (PB). @1335
+* 23 November 1998
+R934. Make sure that TeX is certifiably Y2K-safe. @1328
+* 12 July 1999
+A935\>255. |\xleaders| often drops the final box (Hiroshi Nakashima). @627,636
+* 30 August 2001
+R789. Don't allow a million unbalanced braces followed by |\cr|
+ outside of any alignment (Ralf Roth). @789
+R790. Don't allow end-template except at end of template (Roth). @325,1131
+* 30 September 2002
+Q791. Improve rounding of glue during output (M. F. Bridgland). @625,634
+\relax
+\bye
+
+Up to a point it is better to let the snags [bugs] be there
+than to spend such time in design that there are none
+(how many decades would this course take?).
+-- A M Turing
+ Proposals for Development in the Mathematics Division
+ of an Automatic Computing Engine (ACE)
+ Report E882, Executive Committee, National Physical Laboratory (NPL)
+ 1945; reprinted in April 1972 as NPL report Com Sci 57
+ page 18
+ quoted by Carpenter and Doran in The Computer Journal 20 (1977), 273.
+
+DRF David Fuchs
+HWT Howard Trickey
+FY Frank Yellin
+LL Leslie Lamport
+JS Jim Sterken
+ARK Arthur Keller
+CET Chris Thompson
+FM Frank Mittelbach (added subsequent to publication of paper)
+PB Peter Breitenlohner (ditto)
+WGS Wayne G. Sullivan (ditto)
+MVL Marc van Leeuwen (ditto)
+MDS Michael D. Spivak (ditto)
diff --git a/Master/texmf-doc/doc/english/knuth/errata/index.html b/Master/texmf-doc/doc/english/knuth/errata/index.html
new file mode 100644
index 00000000000..aaf02bf7b79
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/index.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML>
+<HEAD>
+<TITLE>Index of texmf/doc/general/errata/</TITLE>
+<!-- Created: UV, 1996/02/24 -->
+</HEAD>
+
+<BODY>
+<H1><IMG ALT="" SRC="../../html/icons/tex.xbm">
+ <IMG ALT="" SRC="../../html/icons/mf.xbm">
+ Index of <CODE>texmf/doc/general/errata/</CODE></H1>
+
+<HR>
+
+<H2>Errata in <CITE>Computers &amp; Typesetting</CITE></H2>
+<DL>
+ <!-- Note: files have been renamed to avoid name conflicts -->
+ <!-- since errata.{one,two,...,tex} all produce errata.dvi -->
+
+ <DT><A HREF="errata1.dvi">errata1.dvi</A><BR>
+ <DD>Errata in the first printing of <CITE>The TeXbook</CITE>
+ (October 1984)
+ <DT><A HREF="errata2.dvi">errata2.dvi</A><BR>
+ <DD>Errata in the second printing of <CITE>The TeXbook</CITE>
+ (January 1986)
+
+ <DT><A HREF="errata3.dvi">errata3.dvi</A><BR>
+ <DD>Errata in <CITE>Computers &amp; Typesetting</CITE>
+ (15 June 1987)
+ <DT><A HREF="errata4.dvi">errata4.dvi</A><BR>
+ <DD>Errata in <CITE>Computers &amp; Typesetting</CITE>
+ (20 Feb 1989)
+ <DT><A HREF="errata5.dvi">errata5.dvi</A><BR>
+ <DD>Errata in <CITE>Computers &amp; Typesetting</CITE>
+ (30 Sep 1989)
+ <DT><A HREF="errata6.dvi">errata6.dvi</A><BR>
+ <DD>Errata in <CITE>Computers &amp; Typesetting</CITE>
+ (31 Dec 1990)
+ <DT><A HREF="errata7.dvi">errata7.dvi</A><BR>
+ <DD>Errata in <CITE>Computers &amp; Typesetting</CITE>
+ (15 March 1992)
+ <DT><A HREF="errata8.dvi">errata8.dvi</A><BR>
+ <DD>Errata in <CITE>Computers &amp; Typesetting</CITE>
+ until the pubDTcation of the final printings.
+
+ <DT><A HREF="errata.dvi">errata.dvi</A><BR>
+ <DD>Errata in <CITE>Computers &amp; Typesetting</CITE>
+ since the pubDTcation of the final printings.
+</DL>
+<BR>
+
+
+<A HREF="../../index.html"><IMG SRC="../../html/icons/back.xbm"></A>
+<HR>
+<ADDRESS></ADDRESS>
+<!-- hhmts start -->
+Last modified: Sun Feb 25 16:02:20 MET 1996
+<!-- hhmts end -->
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/knuth/errata/logmac.tex b/Master/texmf-doc/doc/english/knuth/errata/logmac.tex
new file mode 100644
index 00000000000..8719efc497d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/logmac.tex
@@ -0,0 +1,107 @@
+% macros for the appendix to "Errors of TeX" paper
+\input manmac
+\voffset=-.3in
+\catcode`\^=7 % disable the indexing stuff
+\font\sltt=cmsltt9
+\font\logosl=logosl9
+\ninepoint
+\vsize=48pc \pageheight=\vsize
+\hsize=33.5pc
+
+\def\\{\bgroup\catcode`_=\active\identifier}
+{\catcode`_=\active \global\let_=\_}
+\def\identifier#1{\hbox{\it#1\/\kern.05em}\egroup} % italic type for identifiers
+
+\newdimen\codesize \setbox0=\hbox{\enspace M} \codesize=\wd0
+\setbox0=\hbox{\thinspace\S1111\kern\codesize} \rightskip=\wd0
+\newdimen\itemnosize \setbox0=\hbox{\bf999} \itemnosize=\wd0
+\setbox0=\hbox{$999\mapsto{}$\kern\itemnosize\enspace} \parindent=\wd0
+\newdimen\datemar \setbox0=\hbox{\bf 15 Mar 1977}
+\datemar=\hsize \advance\datemar-\wd0 \divide\datemar2
+\newdimen\hangamount \hangamount=\parindent \advance\hangamount 1em
+\everypar{\global\hangindent=\hangamount}
+\parfillskip=-\rightskip
+\finalhyphendemerits=0
+\interlinepenalty=100
+\smallskipamount=3pt plus 2pt
+\def\smallbreak{\fin\penalty-50\smallskip}
+
+\newbox\predec % for predecessor "mapsto" info
+\newbox\code % for the code letter
+\newbox\texsec % for TeX section numbers
+\newbox\cbox % the symbol used on commentlines
+\newbox\dbox % empty box used after datelines
+\setbox\dbox=\hbox to\datemar{}
+\setbox\cbox=\hbox to\itemnosize{\hfil$\bullet$}
+
+\newif\ifnothing \newif\ifnobreak
+\def\fin{\ifnothing\nothingfalse\else\endgroup
+ \unskip\nobreak\hfil\penalty500\enspace\null\nobreak\hfil\box\texsec
+ \box\code\endgraf\ifnobreak\nobreakfalse\nobreak\fi\fi}
+
+\catcode`\ =12 % tabs are ordinary characters
+\catcode`@=\active % @ signs denote a TeX section reference
+{\obeylines \gdef@#1
+ {\global\setbox\texsec=\hbox{\S$#1$}\lookahead}}
+\chardef\@=`\@
+{\catcode`X=\active \gdef X{\X}}
+\def\X{{\eightbf X}}
+\def\lightX{\hbox{\eightrm X}}
+\def\>#1\relax{\global\setbox\predec=\hbox{\let\X=\lightX
+ $#1\mapsto{}$}} % previous bug ref
+
+\def\checkvalid#1{\expandafter\ifx\csname#1!\endcsname\okay\else\invalidcode\fi}
+\def\okay{\okay}
+\def\makevalid#1{\expandafter\let\csname#1!\endcsname=\okay}
+\makevalid A % algorithm
+\makevalid B % blunder
+\makevalid C % cleanup
+\makevalid D % data structure
+\makevalid E % efficiency
+\makevalid F % forgotten case
+\makevalid G % generalization
+\makevalid I % interaction
+\makevalid L % language
+\makevalid M % mismatch
+\makevalid P % program organization
+\makevalid Q % quality
+\makevalid R % robustness
+\makevalid S % surprise
+\makevalid T % typo
+
+\def\lookahead{\futurelet\next\looky} % we'll do this at end of every line
+\def\looky{\if\next \let\cont\continuationline % tab mark
+ \else\if\next*\let\cont\dateline % asterisk
+ \else\if\next##\let\cont\commentline % sharp sign
+ \else\if\next\relax\let\cont\endit % \relax (gets us out)
+ \else\let\cont\dataline\fi\fi\fi\fi\cont} % otherwise should be a code letter
+\def\continuationline { } % insert space if a tab mark starts the next line
+\def\dateline* {\smallbreak\begingroup\bf\hfill\nobreaktrue
+ \global\setbox\code=\copy\dbox}
+\def\dataline#1{\fin\checkvalid#1%
+ \global\setbox\code=\hbox to\codesize{\enspace
+ \hskip0pt plus 3fil\rm#1\hskip0pt plus1fil}%
+ \begingroup\rm\catcode`X=\active\itemnumber}
+\def\itemnumber#1.{\catcode`X=11\setbox0=\hbox to\itemnosize{\bf\hss#1\relax}%
+ \setbox2=\hbox{\bf#1\relax}\ifdim\wd2>\wd0 \setbox0=\box2 \fi
+ \textindent{\hfil\box\predec\box0}}
+\def\commentline{\fin\afterassignment\begincomment\let\next}
+\def\begincomment{\begingroup\let\tt=\sltt
+ \let\MF=\slMF\sl\textindent{\hfil\copy\cbox}}
+
+\def\leftheadline{\hbox to \hsize{%
+ \vbox to 10pt{}% strut to position the baseline
+ {\tenrm\folio\kern1pc}% folio to left of text
+ \hfil\eightrm D. \ E. \ KNUTH\hfil% running head
+ }}
+\def\rightheadline{\hbox to \hsize{%
+ \vbox to 10pt{}% strut to position the baseline
+ \hfil\eightrm THE \ ERRORS \ OF \ \TeX\hfil% running head
+ {\kern1pc\tenrm\folio}% folio to right of text
+ }}
+
+\def\O#1{\hbox{\rm\char'23\kern-.2em\it#1\/\kern.05em}} % octal constant
+\def\slMF{{\logosl META}\-{\logosl FONT}}
+
+\def\endit{\fin\catcode`\^^M=5\let\par=\endgraf}
+\let\par=\lookahead \obeylines \nothingtrue
diff --git a/Master/texmf-doc/doc/english/knuth/errata/mf84.bug b/Master/texmf-doc/doc/english/knuth/errata/mf84.bug
new file mode 100644
index 00000000000..aaa36b33da8
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/mf84.bug
@@ -0,0 +1,2279 @@
+This file has been updated periodically ever since METAFONT84 was born.
+What you are about to read is "authentic source material" from the
+early days before the program converged. Module numbers on the first
+entries may bear little relation to those in Volume D.
+
+Entries are in chronological order; thus the most recent news appears
+at the bottom of the file.
+
+-------------------------------------------------------------------------------
+
+(rough list of all bugs found in MF after it passed syntax check)
+Starting with Version -100.0: [Mar 27, first run, about 00:30]
+1. fix_date_and_time was badly patched in INIMF.
+2. cur_tok function forgot "cur_tok:=p" at the end; PASCAL doesn't catch that.
+3. "multiletter control sequences" msgs should say "symbolic tokens".
+Version -99.0: [still Mar 27, done while waiting for WEAVE/TeX output]
+4. do_statement should initialize cur_type:=vacuous.
+5. find_variable has misplaced p:=equiv(p).
+6. one-character primitives shouldn't decrease str_ptr.
+7. clear_symbol had "q" at end where I meant to say "p".
+8. help message for extra token flushing improved.
+9. "buffer[k]" should be "buffer[j]" for 1-character id_lookup.
+10. def_delims forgot to get_next afterwards.
+11. type_command at beginning of statement wasn't diverted.
+12. menu always came out after help message.
+13. forgot to return after getting num/str token from token list.
+ Version -98.0: [March 28]
+14. scan_declared_variable flushes too much.
+15. ordered pairs: one level of indirection was forgotten.
+16. type declarations must add "unknown" bit.
+17. semicolon+ added to do_statement cases.
+18. base_ident should get max_str_ref.
+19. "internal[...]" missing in date for base_ident.
+20. do_binary(p,c) should be do_binary(p,d) after continue_path
+21. in scan_def after get_clear_symbol I need to get_next.
+22. get_next needed at end of scan_def.
+23. get_next needed at end of mode_command processing.
+24. randomseed missing error typo: `;' for `:='.
+25. print_nl("") at beginning of show.
+26. refcounts on macro calls were incremented twice.
+27. forgot to advance loc after getting num/str token from token list.
+28. "/" has the wrong command code.
+29. get_x_next needed after, e.g., "1/2" in scan_primary.
+30. take_fraction should be make_fraction in call of frac_mult.
+31. v:=dep_list(v) forgotten in dep+dep branch of add_or_subtract.
+32. q:=link(q) etc misplaced and omitted in p_plus_fq and p_plus_q.
+33. dep_finish recycled a dependency list twice.
+34. call of dep_finish should use null not cur_exp.
+35. decided that "3 3" shouldn't equal 9.
+[also put in new code for the addto command]
+ Version -97.0: [March 29]
+36. forget to set q:=qq in scan_expression.
+37. first line of print_path: forgot print_ln.
+38. typo in set_controls: right_y should be left_y.
+39. toss_knot_list forgot that it has a circular list to toss.
+40. print_exp shows big nodes backwards.
+41. angle brackets didn't look good in print_exp; took them out.
+42. left_brace must be between min_tertiary and max_tertiary.
+43. prev_dep should point back to tail, not head, of previous list.
+ (that error was in encapsulate and <Copy the big node>)
+44. nonlinear_eq should leave node p vacant, sometimes.
+45. conditional routine forgot that get_boolean starts with get_x_next.
+46. forgot get_x_next in processing of else.
+47. str_ref not initialized by make_string.
+48. param_start not initialized properly.
+49. "%EXPR" didn't look good in token list.
+50. "{loop}" not necessary in forever loops; there's already enough.
+51. macro name didn't come out right when tracing macros.
+52. macro parameters weren't shown when tracing macros.
+53. quote marks missing when displaying strings.
+54. parameter names on macro call trace should look nicer.
+55. statement beginning with bad token: error message needed.
+56. `->' desired in context lines of macro.
+57. forgot q:=loop_list_loc(s) in begin_iteration.
+[also put in new code for shipout]
+ Version -96.0: [March 30]
+58. forgot loop_type(s):=null in begin_iteration.
+59. forgot value(p):=null after type(p):=type(pp) in find_variable.
+60. forgot to delete_pen_ref after filling a contour.
+61. check that it's a cycle before calling make_spec.
+62. "if tracing_stats>0" should be "if internal[tracing_stats]>0"!
+63. forgot get_next after showdependencies.
+64. forgot link(r):=p at end of dependency list addition.
+65. extra `get_x_next' in <Scan a direction...>.
+66. typos in last half of <Remove open types...>: mind the p's and q's.
+67. take_fraction should be make_fraction in simple case of two givens.
+68. in print_exp of unknown type, stop if v=null.
+69. showtoken forgot to stop; also should be consistent with TeX.
+70. "continue" label needed in error routine, after all.
+71. id_lookup should treat length-one identifiers by simpler method.
+ (in particular, this allows it to find unprintable ones!)
+72. need psi[n+1]:=psi[1] in cyclic case of make_choices.
+73. tension/controls take primaries as arguments, not expressions.
+74. print_spec didn't initialize octant.
+75. print_spec: break lines into two, since they are quite long.
+76. smooth_moves not called in fill_spec.
+77. typo < for > in edge_prep.
+78. edge tracing misses half the corners, and forgot to set trace_y.
+79. edge_prep needs extra logic when rover=head.
+80. make_good should compute cur_d based on good values, not original values;
+ but we sometimes need the other alternative too.
+81. valid_sum: the test was backwards.
+82. print_weight blunder: ho(q) should be ho(info(q)).
+83. forgot init_gf in shipout.
+84. typo in <Finish the GF file>: if total_chars<>1 then print("s").
+85. initializations of ww, prev_w, and m were forgotten in ship_out.
+86. typos in initialization of prev_m and gf_min_x.
+87. forgot to update prev_n in ship_out.
+88. relax becomes "expandable".
+89. internal[x]>1 should be internal[x]>unity!
+90. forgot to restore normal scanner_status in pass_text.
+91. (end occurred when if...) was inevitable.
+[also put in new code for openwindow, display]
+ Version -95.0: [April 1]
+92. forgot to unscale the window numbers in that new code.
+93. had w<0 test instead of w<=0 in <Record a possible transition...>.
+94. prev_w:=w should be done in all cases of <Record a possible...>.
+95. forgot get_x_next after scanning `1/2'.
+96. in do_assignment, after recycle_value(p) I need to set type(p):=something.
+97. omit `.' after the equivalent in showtoken.
+98. in <Copy the big node p>, I said "until q=p"; I meant "until q=value(p)".
+99. print_macro_name said "info(link(a))"; meant "text(info(info(link(a))))".
+100. forgot get_x_next after macro_call in scan_primary.
+101. scan_primary installed dependent components badly (data structure error).
+102. new_structure failed in case of generic_subscript (data structure error).
+103. param_type case of print_cmd_mod had bad if/else nesting (language error).
+104. null_path forgot to return a value (language error).
+105. p_with_x_becoming_q had typos (q and f for x).
+106. <Copy the big node...> should end with cur_exp:=t, not r.
+107. subscripted definitions: out of sync; scan_primary loop needs revision.
+108. secondarydef went through scan_def instead of make_op_def.
+109. make_op_def forgot the final get_next.
+110. make_op_def also forgot to insert the general_macro preface.
+111. showvar shows too much of macro variables.
+ Version -94.0: [April 4]
+112. single_dependency needs to take account of the scale factor.
+113. add_or_subtract starts out with wrong v value. [bug 31 was fixed wrong]
+114. print_exp needs a case for t=independent.
+115. also numeric_type, and case v=null of pair_type, transform_type.
+116. end_token_list thought identity_macro and insertions had ref counts.
+117. disp_var should display also in case of generic subscripts.
+118. find_var should put value(pp):=null when it sets type(pp):=numeric_type.
+119. yet another problem in <Copy the big...>: copy_dep_list(dep_list(q)).
+120. scan_primary should flush_node_list(q) before make_exp_copy(p).
+121. make_scaled arguments reversed in p_over_v.
+[also added code for new internals: smoothing, autorounding]
+[also added code for showstats]
+ Version -90.0: [April 5]
+122. Should check range of variables when they become known.
+123. <Exclaim about...> should include begin...end (WEB language error).
+124. forever should be followed by a colon.
+125. dangling else problem in make_eq: "abc"="abc" considered false.
+126. showstats, showtoken should read the semicolon before stopping.
+127. print_variable_name balked at, e.g., xpart of a capsule.
+ Version -89.0: [April 6]
+128. after &foo, shouldn't assume there's an input file present.
+129. forever forgot get_next.
+130. pair=path and path=pair should coerce the pair to be a path.
+131. similarly in the operand to `addto'.
+[added new code for cull command]
+[minor revision of internal quantities; e.g., labeling is out, fontmaking is in]
+ Version -88.0: [April 7]
+132. "string" operator is renamed "str".
+133. min/max coordinates added to boc command.
+134. labeling_command removed; it will be implemented in macros.
+135. info(p) should be attr_loc(p) in flush_variable.
+136. make_spec didn't realize the need for xh and yh.
+137. gf_new_row parameters had sign reversed.
+138. the "numeric" case was left out of recycle_value.
+[added new code for special/numspecial]
+ Version -87.0: [April 13]
+139. q:=qq should apply also after <Splice...>, in scan_expr.
+140. param_size: better defined than a constant.
+141. surprise: back_input fails when cur_cmd=expr_arg, as it changes limit.
+142. <Subdivide...second time wrt x'-y'> forgot to change right_type(r).
+143. show <path> shows the whole path.
+144. expr like 0..1 leads to <Determine the path join...> with q undefined.
+145. typos in <Decide...clockwise>, clobbered dx2 and used right_type(p) twice.
+146. need to adjust expr_arg when macro is inside a macro!
+147. expr_arg forbidden to be in a text argument.
+148. frozen_relax added to prevent premature termination.
+[I took out the code used for debugging the screen interface]
+[added "cycle", a unary operator taking path to boolean]
+[added the code for concatenation and for str and for xpart..yypart]
+ Version -86.0: [April 25]
+149. not_scolded_yet was never set false after scolding.
+150. Missing "q:=s" at the end of <Make variable q known>.
+151. In @<Worry...@>, add get_next after back_error.
+152. New xpart routine didn't recycle other components of the big node.
+[added the "hard_times" case of multiplication]
+[added the complete set of boolean expressions]
+[added the eight transformations, applied to three kinds of expressions]
+[added the save command]
+[added the interim command]
+[added the let command]
+[added the pen operations]
+153. Incomplete help message on "Not a variable".
+154. forgot begin...end in the last section of materialize_pen.
+155. blunder <Insert a new line...>: length(p,s,q) should be length(s,q,r).
+156. <Construct the offset...>: forgot begin...end here too.
+157. "(newly created)" shd be " (newly created)".
+158. path_trans: forgot to unstash the capsule p.
+159. set_up_trans: transform_type should be transformed_by, in one place.
+160. <Install sines...>: had p instead of q, in several places.
+161. edges_trans: an edges variable isn't in a capsule.
+ Version -85.0: [May 2]
+162. begingroup ... endgroup should be allowed as compound statement.
+163. pausing shouldn't clobber "showit". (WAITS version only)
+164. Improved help message for isolated expressions.
+165. Bad error recovery after "Not a variable" in showvar.
+166. Typo in clear_symbol: name_type(p) instead of name_type(q).
+167. "%" and ";" to be left out of file names being input.
+168. dep_finish used v for two purposes; wrong declared type.
+169. autorounding 2 suppresses correction when the derivative isn't critical.
+170. tab characters should be changed to spaces on input. (WAITS version)
+171. harmful goto: Forgot to |return| after path_trans and edge_trans.
+[added ord, hex, oct, length, char, decimal, and jobname]
+ Version -80.0: [May 4]
+172. showvar still screwed up.
+173. don't clobber screen for prompt_input (WAITS only).
+174. length of non-cyclic path is one too high.
+175. <Evoke an error message...> evoked the wrong message.
+176. better error message needed on `Equation cannot be performed'.
+177. ">> " inserted before expression displays.
+178. <Finish linking...> should dup_offset also when n=0.
+179. pencircle was a factor of 2 too big.
+180. cosine of 180 should be -1 exactly.
+181. ord "" should be -1.
+182. shipout should allow expressions as well as variables.
+183. "mod outer_tag" needed in various tests on eq_type.
+184. merge_edges forgot to adjust for changes in m_offsets.
+185. typo, ww for w in print_pen.
+186. typo, "outer" for "errhelp" in print_cmd_mod (message case).
+[added "also"]
+[added "message", "errmessage", "errhelp"]
+[added "outer", "inner"]
+[added "readterminal", "readstring"]
+ Version -79.0: [May 6]
+187. read_toks forgot to include the general_macro token.
+188. offset_prep should treat n=0 like n=1.
+189. cusp transitions (from change 169) must be suppressed in envelope case.
+190. <Record a line segment...> shouldn't change xp or yp.
+191. <Find the initial slope...> was used too late.
+192. <Find the index...> had a redundant test (a relic of old code).
+193. <Compute test coeff...> wastefully made the same fraction three times.
+194. doublepath <cycle> should split the cycle.
+195. `if k=0' in fin_offset_prep should have been `if k=1'.
+196. `done:' misplaced in <Make the envelope moves...>.
+197. also move[move_ptr] should be initialized to 1 there, not 0.
+198. skew is used with p=q in fill_envelope.
+199. it's no use tracing subdivision for offsets, since everything is skewed.
+200. in <Record a line...>, round_unscaled should be floor_unscaled.
+201. unskewing: wrong formula (x was .5 too large).
+202. elliptical pens: better correction for the case gamma<=abs(alpha).
+203. dual env_move was updated badly, in both <Transfer...> and <Record...>.
+204. dual env_move to move: subscripts were off by 1.
+205. <Insert...dually...> should set ww:=knil(link(h)), not link(h).
+[added ++]
+ Version -70.0: [May 9]
+206. suppressed cusp rounding in envelope case too.
+207. `show' should use `>> ' when it shows an expression.
+208. streamlined the test for bad lambda and mu in |skew|.
+209. after linear_eq, must check if type(cur_exp)=known.
+210. print_spec surprise: contours might never travel toward the first octant!
+211. t0,t1,t2 sign was reversed in <Complete the offset splitting...>.
+ Version -69.0: [May 10]
+212. "showvar" changed to "showvariable".
+213. typo: r for r_delim in <Scan a text parameter...>.
+214. "newinternal" feature added.
+215. <Record a line...dually...> needs to update envmove at end of loop.
+216. smooth_moves shouldn't affect the extreme points.
+217. floor(unity*(n-1)/n) is unity when n is large; need to be more careful.
+218. major improvements to rounding, based on new theory of (x+eps,y+eps^2).
+219. pen offsets made symmetrical about the origin.
+220. p:=half(p+q) overflow problem in take_fraction, take_scaled.
+221. cull_edges now updates the max/min values too.
+222. make_spec needs to be more bullet-proof to rounding errors; added `dest's.
+223. xmult/ymult/zmult changed to xscaled/yscaled/zscaled.
+224. elliptical pens improved by temporarily allowing zero-length lines.
+[added edge transposition algorithm]
+ Version -67.0: [May 17]
+225. copy can encounter a vacuous expression, e.g. in a parameter.
+226. xy_swap_edges mustn't change w when inserting a large weight.
+227. in #222, had typo pp for r in <split ... second time ... x'-y'>.
+228. in #222, incorrectly assumed local max = global max of cubic.
+ Version -66.0: [May 19]
+229. bad_binary(c,p) should have been bad_binary(p,c).
+230. enabled comparison of unknown strings.
+231. fixed ring_delete to avoid unexpected scolding.
+232. should store character width info even when proofing<0.
+[added all the TFM commands and output routines]
+[added the `substring' operation]
+[added `point', `precontrol', `postcontrol'; deleted `direction']
+ Version -65.0: [May 24]
+233. Change error message `(t)point(u)' to `point(t)of(u)'.
+234. newinternal to allow a list of tokens.
+235. In <Feed...>, should check for overflow before begin_token_list.
+236. scan_def didn't allow for the case warning_info=null.
+ Version -60.0: [May 25]
+237. increased param_size.
+238. added <boolean><relation><boolean>.
+239. <Remove dead cubics> stopped too early if the first cubic was dead.
+240. bad_unary, bad_binary should distinguish pair from unknown pair.
+241. yet another "m<env_move[move_ptr]" test needs to be inserted.
+242. newinternal names need to go in the dump file.
+243. delete_mac_ref(v) should be delete_mac_ref(value(p)) in recycle_value.
+244. constant in <Decide...clockwise> was scaled instead of fraction.
+ Version -59.0: [May 27]
+245. break up initialize routine into two parts (cf init_prim in TeX)
+ Version -58.0: [May 28]
+246. do_ship_out should scan_expression, not scan_primary.
+247. offset_prep might clobber node q, so we need to search for q again.
+248. pair "1" = true! (blunder in type_test)
+249. allow strings x in `def f(expr x)=def g=x enddef enddef'.
+250. allow exprs in text parameters, in sufficiently easy cases.
+251. check right delimiters in macro_call.
+252. "Bad window number" message gave unscaled value.
+253. turnaround feature improves automatic rounding slightly.
+254. primaries changed to expressions in window and cull commands.
+255. scan_expression should make (0,0){0,0} a path, not a future path.
+256. showvariable and showtoken to allow lists; all shows made consistent.
+257. new internal quantity "windingcheck".
+258. delete warning message about edges never used.
+259. vardef: group the righthand side.
+260. show commands stop once each.
+261. cur_type should be vacuous after equation or assignment on outer level.
+ Version -57.0: [June 4]
+262. added xyzzy diagnostic about effect of autorounding.
+263. make_moves now puts xi_corr,eta_corr into halving.
+[otherwise "draw (0,0)..(9,-.00002)" and "draw (0,-.00002)..(9,0)" fail badly!]
+ Version -56.0: [June 6]
+264. smooth_moves changed completely; now is LR symmetric, cleaner.
+265. changed "unknown" to "known".
+266. pair to path conversion now done on length, makepen, reverse, etc.
+267. cycle now defined on arguments of any type.
+268. (re 218) sign was flipped in ceiling correction of <insert downward...>.
+[added union, subpath, penoffset, directiontime, intersectiontimes]
+
+Note: the first two draw statements in PENS.mf show an interesting effect.
+With autorounding, the curves are noticeably better, esp the small one.
+But there are two "holes", because of tiny discrepancies that I believe
+are unavoidable.
+Added later: Actually these are avoided by the new smooth_moves, but
+certain others will not be.
+ Version -50.0 [June 30]
+269. smoothing to be shut off at the retrograde transitions
+270. more care needed in the rootfinding part of find_direction_time.
+271. improved error recovery after "Isolated expression".
+ Version -40.0 [July 3] --- the first version to be "complete"!
+272. trivial change in <Exit...if the derivative $B(x_1,x_2,x_3;t)$...>.
+273. check that halfwords are large enough to hold edge/weight data.
+274. `path reverse (0,1)' should be true.
+275. xy_swap_edges might empty the structure; then x_reflect will fail!
+276. fix_offset was being done too often, due to improper range test.
+277. parameters come out even when tracingonline=0.
+278. step-until wasted r and didn't check syntax carefully.
+279. <Scan a group...> had typo: `line' for `group_line'.
+280. "You can't dump in a group" error was impossible.
+281. need better ETC cutoff in showmacro.
+282. print_exp needs to handle independents, because it's used by disp_var.
+283. suppress `#### xpart %CAPSULEnnnn' printouts.
+[added code for everyjob; this version wasn't complete after all!]
+ Version -30.0 [July 9]
+284. need better error/help after ` if s1=s2' when the strings are unknown.
+285. removed autorounding>2; it was leading to more glitches than it was worth.
+286. envelope filling of a cycle to be done by two calls of fill_envelope.
+287. "null" changed to "vacuous".
+288. cyclic path inserted in another path should retain its last arc.
+289. introduce several dozen "put_get" errors for improved recovery.
+290. suppress "with autorounding" when autorounding hasn't been set.
+291. {loop value} came out even when tracingonline=0.
+292. show commands should wake up the terminal before showing their output.
+293. forgot error message in `if true else'.
+ Version -20.0 [July 14]
+294. need to catch pens that are too large.
+295. make_eq dassn't change lhs (because this clobbers the memory links later).
+296. string usage is reported too high by showstats.
+297. bilin1 and add_mult_dep can call p_plus_fq with type(q)=proto_dependent.
+298. <Transform a known big node> forgot to recycle pp.
+299. in change number 286, the weight of the two paths should be the same.
+300. print_ln sometimes changed to print_nl("") in order to avoid blank lines.
+301. xyzzy to be combined with tracingedges.
+302. good3 entries should be 1 and 2 (not 1 and 0), to give desired symmetry.
+ Version -10.0 [July 17]
+303. had to add `new_if_limit' to `conditional'.
+304. `else' can be incomplete as well as `if' and `elseif'.
+305. new help "You can't redefine a parameter."
+306. print_edges should use cur_edges, because print_weight does.
+307. cull shouldn't round; it should use ordinary inequalities.
+308. obliterated variable left `0' token hanging in scan_primary.
+309. forgot recycle_value(p) in <Evoke...>.
+310. forgot to check improper culling amounts.
+311. `on' to be changed to `inwindow'.
+312. >=max_tfm_dimen should be simply >.
+ Version -9.0 [July 19]
+313. max_tfm_dimen needs to be decreased by design_size div 2^21.
+314. merge test data reporting into the screen display routines.
+315. use @# in printout at time of macro expansion tracing.
+316. bad recovery after "Incomplete string" error.
+317. @ should be usable as a parameter.
+318. spacing bad on `missing of' and `too many parameters' errors messages.
+319. keep track of largest str_ptr and pool_ptr values; showstats on two lines.
+ Version -8.0 [July 26] [introduced new test routines to study memory usage]
+320. make_pen doesn't recycle the knots
+321. flush_below often says free_node(2) on node of size 3.
+322. make_eq should recycle and free; do_equation shouldn't
+323. re #298 and #309: should also free the value nodes!
+324. the replacement text of a bad_var definition should be recycled.
+325. token lists left unrecycled in error recovery of addto, cull, display.
+ Version -7.0 [July 27]
+326. showall to put "(see the transcript file)" after >> if not tracingonline.
+327. remove redundant code: hex in print_the_digs; second l=1 in idlookup.
+328. procedures never called: b_open_in; round_scaled.
+329. need to zero cur_mod after back_expr in <Put the left bracket...>.
+330. <Print the coefficient...> now catches also numbers that round to 1.0.
+331. known_pair logic was obsolete; now it is massively simpler.
+332. fix_check_sum now zeroes the negative bytes; this simplifies other code.
+333. show_dependencies not to show parts of capsules.
+334. forgot to set fix_needed:=false!
+335. move fix_needed from add_or_subtract to dep_finish.
+336. test fix_needed in bilin1 and add_mult_dep.
+337. after back_expr in <Scan a mediation...>, forgot to unstash p.
+ Version 0.0 [July 28] [Hurray! The preliminary TRAP test is fully passed.]
+338. corrected blunder in definition of trans_spec type. (found by Karney)
+339. less extreme starting values of gf_min_x and its cousins.
+340. uninitialized left_curl was possible. (found by John Hobby)
+341. In <Reduce...straight line...>, need to test sign before the `div 3' ops.
+342. In pyth_add, remove `+2' when dividing by 4, to prevent overflow.
+343. "Not a variable" changed to "Not a suitable variable".
+344. known_pair forgot to reset cur_type.
+345. round and floor procedures need to work in the presence of huge arguments.
+346. major revision to allow independent variables to disappear silently:
+346a. delete null_path and <Declare the null value routines>.
+346b. delete the hard part of ring_delete, and delete <Scold...for using...>.
+346c. stash/unstash/flush_cur_exp routines to allow independent type.
+346d. print_exp to allow a ring that contains only capsules.
+346e. <Zero out...> becomes <Recycle an independent variable> (major new code).
+346f. stash_in needs code to handle the case cur_type=independent.
+346g. negation needs code to handle the case cur_type=independent.
+346h. take_part needs code to handle the case cur_type=independent.
+346i. do_binary needs code to handle either or both operands independent.
+346j. frac_mult needs code to handle the case cur_type=independent.
+346k. make_eq and try_eq too.
+346l. linear_eq needs to check if cur_exp=x and cur_type=independent.
+346m. linear_eq displays new dependency only when lhs is interesting.
+347. minor improvement for coding style/brevity: the "interesting" function.
+348. test `if t<independent' had been left out of print_exp (was dirty PASCAL).
+349. (begingroup save x;x+1000 endgroup,0) caused subtle bug during unsave.
+350. print_type(known) changed to "known numeric" for consistency.
+351. In <Change...to proto_dependent>, didn't watch for coefficients zeroed.
+352. check_mem now checks also the links in the dependency lists.
+353. null_pen initialization belongs in <Initialize tab...>, not <Set init...>.
+354. fix_dependencies has to worry about coefficients dropping to zero.
+355. add tracing to frac_mult.
+356. need cur_sym>0 at the time of end_read_terminal. (found by S Robinson)
+ Version 0.1 [August 30]
+357. Don't complain about winding_number<=0 when doing a doublepath.
+358. Need to test for max_coef=0 in offset_prep.
+359. Cusp detection should allow for more rounding error.
+360. Major change to path syntax, allowing {dir}..{dir} path joins.
+360a. `Fragments' disappear; new_fragment becomes new_knot.
+360b. print_path has simpler conventions.
+360c. future_path type disappears.
+360d. left_brace renumbered and removed from scan_tertiary.
+360e. some scan_tertiary code moves to new subroutine scan_direction.
+360f. scan_expression has a bunch of new code.
+361. scan_expression shouldn't have returned after cycle_hit.
+362. abort_path, scrap_knot logic removed from scan_expression.
+ Version 0.2 [September 12]
+363. new operator: makepath <pen primary>.
+364. define point/precontrol/postcontrol at endpoints and beyond. (JDH)
+365. union replaced by +; negation and subtraction allowed on edges.
+366. another new operator: totalweight <edges primary>. (JDH's idea)
+367. undelimited parameters may be preceded by an optional = or :=.
+368. base_area_length was wrong. (affects CH files)(found by Pavel)
+369. internal names to be allowable in suffixes.
+370. label not_found was misplaced in do_add_to. (found by PasMESA translator)
+371. progress report should be given at time of shipout.
+372. procedures make_choices, make_spec,fill_envelope split into shorter pieces.
+373. locals of cubic_intersection made global so that people could split it.
+ Version 0.3 [September 27]
+374. allow <future pen> ::= <pen> <transform>
+375. equation that's off by .0001 shouldn't be called inconsistent.
+376. bug in skew: must compute x_coord(q) and y_coord(q) exactly.
+377. right/left/up/down to be assigned to octants 1/5/2/6; was 1/4/2/7.
+378. boundedness to be allowed with any tension, and one-sidedly.
+379. eliminate coordinate nodes in path lists by passing angles instead (JDH).
+380. known_pair to free cur_exp after error msgs that might showdependencies.
+381. scan_primary sometimes accessed num before it had a value (found by Pavel).
+382. invalid characters should cause error message (suggested by PMB).
+ Version 0.4 [October 12]
+383. allow `0' in response to error prompts.
+384. put loop value on error context lines.
+385. change `ord' to `ASCII'.
+386. scantokens <string primary> to be permitted; readterminal goes away.
+387. expandafter <token> to be permitted.
+388. improved overflow conventions on make_fraction, make_scaled.
+389. variable=<value over 4096> should get its own error message.
+390. nice_pair first argument can be any integer.
+391. new feature, shortshow commands that don't pause.
+392. "harmless" bug in negate_edges, the sorted list can get out of sorts.
+393. ni too skimpy (15 instead of 63). (JDH)
+394. loop_ptr not initialized. (found by Paul Richards)
+395. bug in <Find the approximate type...>, q=null should goto done1. (Richards)
+396. empty_edges macro added for readability.
+397. x_reflect_edges might as well fix the offset as it goes.
+398. blunder: frozen_bad_vardef had the wrong eq_type.
+399. "name" changed to "tag".
+400. check_arith inserted after division of numeric tokens.
+401. stop_bit was not initialized in <Compile a ligature/kern...>.
+402. char 127 to be a string of length 1; slow_print added (therefore).
+403. pyth_sub added to the repertoire.
+404. minor change to calls on "confusion" in make_fraction, make_scaled. (JJW)
+ Version 0.5 [November 9]
+405. 4095.999999 should be erroneous.
+406. length <pair> to give the absolute value; argd changed to "angle".
+407. get_next changed to get_x_next wherever possible.
+408. z1..z2{curl 0} should be equivalent to z1..{curl 0}z2.
+409. scantokens "" should be fast.
+410. allow undelimited suffix and text parameters.
+411. warningcheck to allow large variable values passed over silently.
+412. "edges" changed to "picture".
+413. "winding" changed to "turning".
+414. <If consecutive knots...> had typo, "p" for "q".
+415. elliptical pens should have axis symmetry.
+416. slow_add introduced to catch arithmetic overflow on addition.
+417. add a turningnumber primitive.
+418. no carriage return between ">>" and "Edge structure...".
+419. install new memory management routines (from TeX version 1.3).
+420. generalized cull command. (suggested by Bruce Leban)
+421. bad goto: `x..' reports that x is vacuous, loses value of x.
+422. shortshows replaced by an internal variable "showstopping".
+423. major change, capsule tokens: lots of code and restrictions gone! (JDH)
+424. substring(a,b), subpath(a,b) to reverse the result when a>b.
+425. new GF format: z goes away. (suggested by ALS)
+426. another GF mod: chardw replaced by chardx/chardy, which are scaled. (PMB)
+427. make `&' have the same precedence always (not different for strings).
+428. wrong error message for 2"s" (bug introduced in change 369).
+429. variable l in show_context has to be declared type integer.
+430. bug in chop_path when both limits are large.
+ Version 0.6 [December 10]
+431. xoffset and yoffset to be added by shipout. [this affects GF comments]
+432. wake_up_terminal, not t_open_out, before "Ouch..." (Scott Robinson)
+433. undelimited suffix parameters to allow an optional delimiter, disallow =.
+434. showall... to be eliminated; tracingcapsules added.
+435. allow undelimited parameters after delimited ones.
+436. nullpen test in addto should test for any one-point pen.
+437. granularity parameter to affect autorounding (Bruce Leban)
+[this leads to major improvements suggested by JDH; lots of code changes!]
+[basically, make_spec is now responsible for autorounding; fill_spec just fills]
+438. node_size overflow problem must be prevented. (Paul Richards)
+439. allow unary + with a picture.
+440. nullpen should transform quickly to itself, if not shifted.
+441. print_edges should skip over null rows, if it doesn't already.
+442. open_base_file improved (following TeX's change number 302).
+443. output initialization improved (following TeX's change number 303).
+444. operators shouldn't fail because future pen isn't a pen. (JDH)
+445. intersection routine to quit in hard cases. (DRF)
+446. angle routine was off by epsilon on negative arguments. (Karney)
+447. octant assignment should look ahead further in ambiguous cases. (JDH)
+448. <Compute the incoming...> forgot that right_type(r)=endpoint could happen.
+449. turning_number calculated directly, not times 8.
+450. floor_scaled made more efficient by trading subtraction for multiplication.
+451. doublepath autorounding to compromise between east and west. (JDH)
+452. codes of picture_type and path_type interchanged, to simplify a "case".
+ Version 0.7 [January 17, 1985]
+453. def to allow both := and =. (NB)
+454. "keeping" and "dropping" instead of "including" and "excluding". (HWT)
+455. (see the transcript...): why, when tracingonline>0?
+456. dead cubics need to be removed also before xy_round. (NB)
+457. [re 433] I said get_x_next twice; a blunder.
+ Version 0.75 [January 23, 1985]
+458. Abbreviated boc command makes GF format more attractive for lowres. (GusF)
+ Version 0.76 [February 2]
+459. known and unknown might as well both be primitive.
+460. ab_vs_cd(a-d,b,c-b,d) simplifies to ab_vs_cd(a,b,c,d). (JDH)
+461. (from change 435) <Absorb undelimited...> must use k, not n.
+462. (from change 458) max_new_row added, since 165 wasn't updated to 164.
+ Version 0.77 [February 16]
+463. abbreviated version of tracingspecs is desired for turning number errors.
+464. improved octant number in pathological cases of quadrant_subdivide (JDH)
+465. xoffset,yoffset communicated to GF file when proofing>0.
+466. Poirot changed to Marple.
+467. reverse<cycle> starts the reversed path at the wrong time.
+468. Extra help given after `undefined coordinate' errors.
+469. Keep segment numbers from overflowing max_halfword. (JDH)
+470. Ditto for pen offset slope numbers.
+471. n_magic had min_halfword with wrong sign. (John Johnson)
+ Version 0.80 [April 1]
+472. In errhelp, % means <return>, %% means %. (BPL)
+473. tracing of envelopes should give symbolic octant names.
+474. (-x mod y) should be ((-x) mod y) in good_val.
+475. crossingpoint could overflow on 32-bit machines. (BPL)
+476. Improvements to abbreviated format of number 463.
+ Version 0.81 [April 4]
+477. `I hide(showdependencies)' in hint to become `I ???'.
+478. print_strange shouldn't wake up the terminal in scroll mode. (cf 463)
+479. flush_list procedure made a bit faster. (DRF)
+480. bounded velocities to be multiplied by .999 for safety.
+481. Detect error in declaration that tries to extend a vardef.
+482. print_strange puts turns in parentheses (cf 463).
+483. make_name_string shouldn't ever cause string space overflow.
+484. allow <picture primary> xscaled m yscaled n.
+485. checksum should consider values relative to designsize. (DRF)
+[I also increased max_strings to 2000.]
+
+[Note: Neenie found a case where missing pixels can occur, due to
+inconsistent rounding between left-to-right and right-to-left subdivision:
+pickup pencircle; draw
+(0,126)..controls (130.29451,126) and (288,126.00002)
+ ..(288,36)..controls (288,143.99998) and (132.97438,144)
+ ..(0,144)..controls (0,138) and (0,132)
+ ..cycle;
+The "right" way to fix this would be to develop a make_spec routine for
+non-cycles, and to copy a reversed spec, so that double paths would be
+guaranteed self-inverse. However, my later experiments showed that
+autorounding wasn't nearly as useful as I had expected it to be, hence I
+decided not to waste time beefing up this routine; no satisfactory
+automatic approach to rounding occurs to me.]
+ Version 0.90 [May 10]
+486. 180-degree turns to be clockwise for half of doublepath cycles.
+487. introduce fillin parameter.
+488. `numeric_type' moved before `known', so that print_exp works (Richards).
+489. numeric_type as unary op should include independent in its range (cf 346).
+ Version 0.91 [May 13]
+490. show_token_list gets null_tally parameter.
+491. if bad>0, change the code as in TeX changes 315, 316.
+492. batchmode change as in TeX 317.
+493. "and double autorounding" to be traced, if appropriate.
+494. introduce tracingrestores.
+ *`restoring a bad variable'?
+495. put decimal number into gf extension
+496. mediation put into scan_primary, so that round .5[a,b] works properly.
+497. cubic_intersection now has |tol| to compensate for rounding errors.
+498. find_direction_time needs to worry about degenerate case x3=y3=0.
+499. crossing_point(a,b,0) now yields fraction_one if a,b>0.
+500. diag_round shouldn't insist that b-a is even (see below).
+501. macro_call will show_macro with much larger limit.
+502. TFM file statistics are logged too.
+
+* Here's an example (found by Neenie) explaining bugfix 500:
+autorounding:=2; draw
+(7.03159,-9.31831)..controls (12.14732,-9.4386) and (17.4299,-6.82948)
+ ..(21.60132,0)..controls (27.47417,9.61507) and (37.87402,15.58647)
+ ..(43.74687,25.20154)..controls (51.16223,37.34201) and (57.31,50.171)
+ ..(63.45776,63.00002) withpen pencircle;
+The missing pixels are due to the following curious circumstances: (1) the
+middle cubic splits into three, when subdividing into octants; (2) the reverse
+curve splits too but with slightly different rounding, off by 1; (3) the old
+diag_round routine, when it ensures that b-a is even, computes aa=a+1 on
+one side of the curve, but aa=a-1 on the other side, thus making the
+rounding "safe" on only one side. (Namely, on one side we have consecutive
+values
+ b=1317666 a=1310720
+ b=1329617 a=1310721
+and on the other side,
+ b=-1329618 a=-1310720
+ b=-1317667 a=-1310721.)
+
+* Here's an example (by JDH) showing the necessary of bugfix 497:
+path p[];
+p1 = (1,0)..controls (1,0.10493) and (0.98347,0.20921)
+ ..(0.95105,0.30902)..controls (0.91862,0.40881) and (0.8707,0.50288)
+ ..(0.80902,0.58778);
+p2 = (0,0)..controls (0.63403,0.20601) and (1.26807,0.41203)
+ ..(1.9021,0.61804);
+show p1 intersectiontimes p2; % (-1,-1), without `tol'
+pickup pencircle;
+currenttransform := identity scaled 150;
+draw p1; draw p2;
+showit; % but they clearly intersect
+ Version 0.95 [Aug 12]
+503. `Se' changed to `SSE', etc. (suggested by RFS)
+504. Inconsisting diagonal rounding was introduced in bugfix 500.
+
+[the following lines from @<Determine the before...@> in diag_round:
+ if aa>bb then cc:=dd-half(aa-bb-1)@+else cc:=dd-half(aa-bb+1)
+ if a>b then c:=d-half(a-b-1)@+else c:=d-half(a-b+1)
+were replaced respectively by:
+ if right_type(p)>switch_x_and_y then cc:=dd-half(aa-bb+1)
+ else cc:=dd-half(aa-bb-1)
+ if right_type(p)>switch_x_and_y then c:=d-half(a-b-1)
+ else c:=d-half(a-b+1)
+in order to make the rounding consistent on adjacent octants;
+the following command caused `this can't happen':
+fill (33,7)..controls (32.63094,5.70827) and (32.06163,3.716)
+ ..(31.59488,3.36667)..controls (31.10509,3.00009) and (29.14824,3)
+ ..(27.85318,3)..controls (27.85286,3) and (23.84952,3)
+ ..(23.8492,3)..controls (23.73282,2) and (23.61646,1)
+ ..(23.50008,0)..controls (26.66672,0) and (29.83336,0)
+ ..(33,0)..controls (33.66667,2.33333) and (34.33333,4.66667)
+ ..(35,7)..controls (34.33333,7) and (33.66667,7)
+ ..cycle;]
+ Version 0.96 [Aug 17]
+505. allow comparison of transforms. [test by trying t=t when t is new...]
+506. {restoring...} shouldn't get through when tracingonline=0.
+507. better error message needed on `interim alpha:=0', `interim 0:=0'.
+508. make_op_def should put parameters in the other order.
+509. <Worry about...> should say get_x_next, not get_next.
+510. unif_rand to allow negative x, save on error messages.
+511. tidy up chop_string when b<0 and/or a>l.
+512. randomseed is automatically logged.
+513. change 495 messed up if gf file couldn't be opened. (found by DRF)
+[In INIMF.CH, 3-character extensions now have 0--9 or A--Z as leading digit.]
+ Version 0.97 [Sep 5]
+514. a[b,c] to be tried only if a is numeric type.
+515. simplified the code for length_op(string_type).
+516. citations of `Chapter xx' now replaced by correct references.
+517. <Log the subfile sizes...> to be in stat...tats version only.
+518. remove extra space after <insert> and <scantokens>.
+519. offsets should be included in the tracingoutput output.
+520. a vacuous expression should be considered known.
+521. charlist syntax changed from commas to colons.
+[also the WAITS version command-line reader was fixed to handle `^^W']
+ Version 0.99 [Sep 24]
+522. vardef's begingroup...endgroup should be accessible.
+523. allow an empty expression in for loops.
+ Version 0.999 [Oct 1]
+524. "charfam" changed to "charext".
+525. variable tt makes get_node slightly faster. (PROFILE suggests this)
+526. cur_cmd<=max should be tested before cur_cmd>=min. (PROFILE)
+527. fast_get_avail used in cur_tok and scan_primary. (PROFILE)
+ Version 0.9999 [Oct 27]
+528. Major change to representation of independent variables
+ ("serial number" added so that MF's equation solving doesn't depend
+ on vagaries of storage allocation)
+ [module number change: new module between old 585 and 586]
+ [in terms of new numbering, modules 232, 585--587, 589, 594, 597,
+ 601, 608, 610, 816--817, 855, 1198--1199 were affected]
+[I also reordered some of the cases in print_op, module 189,
+so that the program could be condensed in published version]
+ Version 0.99999 [Nov 13]
+529. forgot to decrease three_l in change 497!
+530. cubic_intersection to give approximation if max_patience exceeded.
+[the following example, found by NB, motivated this change:
+ show (
+ (36.00104,26.99951)..controls (36.00131,26.99979) and (36.00146,27.00017)
+ ..(36.00146,27.00055)
+ )intersectiontimes(
+ (36,27.00055)..controls (45.17148,21.12364) and (55.83588,18)
+ ..(66.72873,18)
+ );]
+ Version 0.999999 [Dec 2]
+531. hold_head needed (scan_toks calls cur_tok calls copy_edges). (D. Kosower)
+ Version 1.0 [January 4, 1986]
+532. Optimization in module 1174, suggested by LER (3 Feb 86)
+@x
+ if delta=0 then gf_out(skip0)
+ else begin gf_out(skip1); gf_out(delta);
+ end
+@y
+ begin gf_out(skip1); gf_out(delta);
+ end
+@z
+*** Late copies of version 1.0 include this correction;
+in particular, the program listing in Volume D was updated (with scissors)!
+ Changes subsequent to `Version 1.0' as published in C&T, Volume D:
+533. Inconsistent punctuation in user messages (found by Karl Berry, June 86)
+@x module 1134
+print_nl("Font metrics written on "); print(metric_file_name);
+@y
+print_nl("Font metrics written on "); print(metric_file_name); print_char(".");
+@z (that was installed in version 1.1)
+
+534. Possible arithmetic overflows (found by Klaus Guntermann, July 86)
+@x module 496
+while max_coef<fraction_one do
+@y
+while max_coef<fraction_half do
+@z (that was installed in version 1.2)
+
+535. Possible loop in nonstopmode (found by Chris Thompson, July 86)
+@x module 1206
+ @<Finish the \.{TFM} file@>;
+@y
+ internal[fontmaking]:=0; {avoid loop in case of fatal error}
+ @<Finish the \.{TFM} file@>;
+@z (that too was installed in version 1.2)
+
+536. Double rounding error should be avoided in make_ellipse (JDH, 22 Nov 86)
+@x module 533
+d:=take_fraction(d,delta);
+alpha:=abs(u); beta:=abs(v);
+if alpha<beta then
+ begin delta:=alpha; alpha:=beta; beta:=delta;
+ end; {now $\alpha=\max(\vert u\vert,\vert v\vert)$,
+ $\beta=\min(\vert u\vert,\vert v\vert)$}
+if internal[fillin]<>0 then d:=d-take_fraction(internal[fillin],beta+beta);
+d:=(d+4) div 8; alpha:=alpha div half_unit;
+@y
+alpha:=abs(u); beta:=abs(v);
+if alpha<beta then
+ begin alpha:=abs(v); beta:=abs(u);
+ end; {now $\alpha=\max(\vert u\vert,\vert v\vert)$,
+ $\beta=\min(\vert u\vert,\vert v\vert)$}
+if internal[fillin]<>0 then
+ d:=d-take_fraction(internal[fillin],make_fraction(beta+beta,delta));
+d:=take_fraction((d+4) div 8,delta); alpha:=alpha div half_unit;
+@z (That was the reason for version 1.3)
+
+537. Trivial change to a help message (version number is still 1.3).
+@x module 1086
+ ("Pretend that you're Miss Marple, examine all clues,")@/
+@y
+ ("Pretend that you're Miss Marple: Examine all clues,")@/
+@z
+
+538. Storage allocation can be more elegant and efficient (4/21/87)
+@x module 169
+if r=p then if ((rlink(p)<>rover) or (llink(p)<>rover)) then
+@y
+if r=p then if rlink(p)<>p then
+@z
+
+539. Unused variables can be eliminated. (Found by John Sauter, 5/5/87)
+@x module 158
+@<Glob...@>=
+@!temp_ptr:pointer; {a pointer variable for occasional emergency use}
+
+@y (I used it only in my change file!)
+@z
+@x module 280
+@!r,@!s,@!t:pointer; {registers for list traversal}
+@y
+@!s,@!t:pointer; {registers for list traversal}
+@z
+@x module 284
+@!sine,@!cosine:fraction; {trig functions of various angles}
+@y (the declarations in module 281 are correct, but in 284 they're superfluous)
+@z
+@x module 497
+var @!q,@!ww:pointer; {for list manipulation}
+@!du,@!dv:scaled; {for slope calculation}
+@!t0,@!t1,@!t2:integer; {test coefficients}
+@!t:fraction; {place where the derivative passes a critical slope}
+@!s:fraction; {slope or reciprocal slope}
+@!v:integer; {intermediate value for updating |x0..y2|}
+begin loop
+ begin q:=link(p); right_type(p):=k;
+@y
+var @!ww:pointer; {for list manipulation}
+@!du,@!dv:scaled; {for slope calculation}
+@!t0,@!t1,@!t2:integer; {test coefficients}
+@!t:fraction; {place where the derivative passes a critical slope}
+@!s:fraction; {slope or reciprocal slope}
+@!v:integer; {intermediate value for updating |x0..y2|}
+begin loop
+ begin right_type(p):=k;
+@z
+@x module 652
+@!s:0..param_size; {value of |param_start| on the current level}
+@y who knows why that line was there?
+@z
+@x module 862
+var @!p,@!q,@!r:pointer; {for list manipulation}
+@y
+var @!p:pointer; {for list manipulation}
+@z
+@x module 985
+@!vv:scaled; {initial value of |v|}
+@!q:pointer; {successor of |p|}
+begin vv:=v; p:=cur_exp;@/
+@y
+@!q:pointer; {successor of |p|}
+begin p:=cur_exp;@/
+@z
+@x module 1059
+@!t:small_number; {variant of |with_option|}
+@y
+@z
+
+540. Typo suppresses an error detection (Chris Thompson, 2May88)
+@x module 963
+ if txy mod unity=0 then if tyy mod unity=0 then
+@y
+ if txx mod unity=0 then if tyy mod unity=0 then
+@z
+
+541. get_x_token can lose a scanned declared variable (Chris Thompson, 4May88)
+@x module 1011
+if equiv(x)=null then new_root(x);
+@y
+@z
+@x module 1011
+done:scan_declared_variable:=h;
+@y
+done: if eq_type(x)<>tag_token then clear_symbol(x,false);
+if equiv(x)=null then new_root(x);
+scan_declared_variable:=h;
+@z
+
+542. Avoid negative divisor rounding upward (Chris Thompson, fixed 19Jun88)
+@x module 168
+else t:=(lo_mem_max+hi_mem_min+2) div 2; {|lo_mem_max+2<=t<hi_mem_min|}
+@y
+else t:=lo_mem_max+1+(hi_mem_min-lo_mem_max)div 2; {|lo_mem_max+2<=t<hi_mem_min|}
+@z
+
+543. Better strategy when near memory overflow (Chris Thompson)
+@x module 168
+begin if lo_mem_max+1000<hi_mem_min then t:=lo_mem_max+1000
+@y
+begin if hi_mem_min-lo_mem_max>=1998 then t:=lo_mem_max+1000
+@z
+
+544. Avoid fatal_error after terminal eof (Tim Morgan, reported 25Oct88)
+@x module 66 [serious problem occurred if this was called in open_log_file]
+if not input_ln(term_in,true) then fatal_error("End of file on the terminal!");
+@y
+if not input_ln(term_in,true) then t_open_in;
+@z
+
+545. Force terminal output when open_log_file aborts (6Nov88)
+@x module 789
+ begin print_err("I can't write on file `");
+@y
+ begin selector:=term_only; print_err("I can't write on file `");
+@z
+
+546. By popular request, undo #544 and fix the bug a more complex way.
+@x module 66 [this undoes change #544]
+if not input_ln(term_in,true) then t_open_in;
+@y
+if not input_ln(term_in,true) then fatal_error("End of file on the terminal!");
+@z
+@x module 87 [now we get to the new stuff]
+begin if job_name>0 then selector:=term_and_log
+@y
+begin if log_opened then selector:=term_and_log
+@z
+@x module 88
+ error;
+@y
+ if log_opened then error;
+@z
+@x module 782
+@!job_name:str_number; {principal file name}
+@y
+@!job_name:str_number; {principal file name}
+@!log_opened:boolean; {has the transcript file been opened?}
+@z
+@x module 783
+@<Initialize the output...@>=job_name:=0;
+@y
+@<Initialize the output...@>=job_name:=0; log_opened:=false;
+@z
+@x module 788
+selector:=log_only;
+@y
+selector:=log_only; log_opened:=true;
+@z
+@x module 789
+begin if interaction<scroll_mode then {bypass |fatal_error|}
+ begin selector:=term_only; print_err("I can't write on file `");
+@.I can't write on file x@>
+ print_file_name(cur_name,cur_area,cur_ext); print("'.");@/
+ job_name:=0; history:=fatal_error_stop; jump_out;
+ end; {abort the program without a log file}
+@y
+begin selector:=term_only;
+@z
+@x module 1023 [this change is optional, but it's a slight improvement]
+ if job_name<>0 then selector:=selector+2;
+@y
+ if log_opened then selector:=selector+2;
+@z
+@x module 1205
+if job_name>0 then
+@y
+if log_opened then
+@z
+@x module 1208
+if job_name>0 then {the log file is open}
+@y
+if log_opened then
+@z
+
+547. String startup problems corresponding to TeX change 355 (17 Jul 89)
+@x module 30 (Warning: This affects most change files!)
+ overflow("buffer size",buf_size);
+@:METAFONT capacity exceeded buffer size}{\quad buffer size@>
+@y
+ @<Report overflow of the input buffer, and abort@>;
+@z
+@x module 34
+consist of the remainder of the command line, after the part that invoked \MF.
+@y
+consist of the remainder of the command line, after the part that invoked \MF.
+
+The first line is special also because it may be read before \MF\ has
+input a base file. In such cases, normal error messages cannot yet
+be given. The following code uses concepts that will be explained later.
+
+@<Report overflow of the input buffer, and abort@>=
+if base_ident=0 then
+ begin write_ln(term_out,'Buffer size exceeded!'); goto final_end;
+@.Buffer size exceeded@>
+ end
+else begin cur_input.loc_field:=first; cur_input.limit_field:=last-1;
+ overflow("buffer size",buf_size);
+@:METAFONT capacity exceeded buffer size}{\quad buffer size@>
+ end
+@z
+@x module 1193
+k:=pool_ptr-4; undump_four_ASCII
+@y
+k:=pool_ptr-4; undump_four_ASCII;
+init_str_ptr:=str_ptr; init_pool_ptr:=pool_ptr;@/
+max_str_ptr:=str_ptr; max_pool_ptr:=pool_ptr
+@z
+@x module 1204
+tini@/
+@y
+init_str_ptr:=str_ptr; init_pool_ptr:=pool_ptr;@/
+max_str_ptr:=str_ptr; max_pool_ptr:=pool_ptr; fix_date_and_time;
+tini@/
+@z
+@x module 1204
+init_str_ptr:=str_ptr; init_pool_ptr:=pool_ptr;@/
+max_str_ptr:=str_ptr; max_pool_ptr:=pool_ptr;@/
+@y
+@z
+
+548. Major changes to allow 8-bit input, cf. TeX82 #359 (11 Sep 89).
+@x module 18
+@!ASCII_code=0..127; {seven-bit numbers}
+@y
+@!ASCII_code=0..255; {eight-bit numbers}
+@z
+@x module 19
+@d last_text_char=127 {ordinal number of the largest element of |text_char|}
+
+@<Local variables for init...@>=
+@!i:0..last_text_char;
+@y
+@d last_text_char=255 {ordinal number of the largest element of |text_char|}
+
+@<Local variables for init...@>=
+@!i:integer;
+@z
+@x module 21
+xchr[0]:=' '; xchr[@'177]:=' ';
+ {ASCII codes 0 and |@'177| do not appear in text}
+@y
+@z
+@x module 22
+for i:=1 to @'37 do xchr[i]:=' ';
+@y changing ' ' to chr(i) here will allow all 8-bit characters to get in
+for i:=0 to @'37 do xchr[i]:=' ';
+for i:=@'177 to @'377 do xchr[i]:=' ';
+@z
+@x module 23
+for i:=1 to @'176 do xord[xchr[i]]:=i;
+@y
+for i:=@'200 to @'377 do xord[xchr[i]]:=i;
+for i:=0 to @'176 do xord[xchr[i]]:=i;
+@z
+@x module 37
+@<Types...@>=
+@!pool_pointer = 0..pool_size; {for variables that point into |str_pool|}
+@!str_number = 0..max_strings; {for variables that point into |str_start|}
+
+@ @<Glob...@>=
+@!str_pool:packed array[pool_pointer] of ASCII_code; {the characters}
+@y [OK to make si(#)==#-128 and so(#)==#+128 (without parens) in change files]
+Some \PASCAL\ compilers won't pack integers into a single byte unless the
+integers lie in the range |-128..127|. To accommodate such systems
+we access the string pool only via macros that can easily be redefined.
+
+@d si(#) == # {convert from |ASCII_code| to |packed_ASCII_code|}
+@d so(#) == # {convert from |packed_ASCII_code| to |ASCII_code|}
+
+@<Types...@>=
+@!pool_pointer = 0..pool_size; {for variables that point into |str_pool|}
+@!str_number = 0..max_strings; {for variables that point into |str_start|}
+@!packed_ASCII_code = 0..255; {elements of |str_pool| array}
+
+@ @<Glob...@>=
+@!str_pool:packed array[pool_pointer] of packed_ASCII_code; {the characters}
+@z
+@x module 41
+begin str_pool[pool_ptr]:=#; incr(pool_ptr);
+@y
+begin str_pool[pool_ptr]:=si(#); incr(pool_ptr);
+@z
+@x module 45
+ begin if str_pool[j]<>buffer[k] then
+@y
+ begin if so(str_pool[j])<>buffer[k] then
+@z
+@x module 47
+var k,@!l:0..127; {small indices or counters}
+@y
+var k,@!l:0..255; {small indices or counters}
+@z
+@x module 47
+@<Make the first 128 strings@>;
+@y
+@<Make the first 256 strings@>;
+@z
+@x module 48
+@ @<Make the first 128...@>=
+for k:=0 to 127 do
+ begin if (@<Character |k| cannot be printed@>) then
+ begin append_char("^"); append_char("^");
+ if k<@'100 then append_char(k+@'100)
+ else append_char(k-@'100);
+@y
+@ @d app_lc_hex(#)==l:=#;
+ if l<10 then append_char(l+"0)@+else append_char(l-10+"a")
+
+@<Make the first 256...@>=
+for k:=0 to 255 do
+ begin if (@<Character |k| cannot be printed@>) then
+ begin append_char("^"); append_char("^");
+ if k<@'100 then append_char(k+@'100)
+ else if k<@'200 then append_char(k-@'100)
+ else begin app_lc_hex(k div 16); app_lc_hex(k mod 16);
+ end;
+@z
+@x module 59
+ begin print_char(str_pool[j]); incr(j);
+@y
+ begin print_char(so(str_pool[j])); incr(j);
+@z
+@x module 60
+ begin print(str_pool[j]); incr(j);
+@y
+ begin print(so(str_pool[j])); incr(j);
+@z
+@x module 85
+ begin if str_pool[j]<>"%" then print(str_pool[j])
+ else if j+1=str_start[err_help+1] then print_ln
+ else if str_pool[j+1]<>"%" then print_ln
+@y
+ begin if str_pool[j]<>si("%") then print(so(str_pool[j]))
+ else if j+1=str_start[err_help+1] then print_ln
+ else if str_pool[j+1]<>si("%") then print_ln
+@z
+@x module 199
+char_class[127]:=invalid_class;
+@y
+for k:=127 to 255 do char_class[k]:=invalid_class;
+@z
+@x module 200
+@d hash_is_full == (hash_used=1) {test if all positions are occupied}
+@d eq_type(#) == eqtb[#].lh {the current ``meaning'' of a symbolic token}
+@d equiv(#) == eqtb[#].rh {parametric part of a token's meaning}
+@d hash_base=129 {hashing actually starts here}
+@y [incidentally I fixed a bug re hash overflow here]
+@d eq_type(#) == eqtb[#].lh {the current ``meaning'' of a symbolic token}
+@d equiv(#) == eqtb[#].rh {parametric part of a token's meaning}
+@d hash_base=257 {hashing actually starts here}
+@d hash_is_full == (hash_used=hash_base) {are all positions occupied?}
+@z
+@x module 210
+for j:=0 to l-1 do buffer[j]:=str_pool[k+j];
+cur_sym:=id_lookup(0,l);@/
+if s>=128 then {we don't want to have the string twice}
+@y
+for j:=0 to l-1 do buffer[j]:=so(str_pool[k+j]);
+cur_sym:=id_lookup(0,l);@/
+if s>=256 then {we don't want to have the string twice}
+@z
+@x module 223
+begin c:=char_class[str_pool[str_start[r]]];
+@y
+begin c:=char_class[so(str_pool[str_start[r]])];
+@z
+@x module 717
+ begin buffer[first]:=str_pool[j]; incr(j); incr(first);
+@y
+ begin buffer[first]:=so(str_pool[j]); incr(j); incr(first);
+@z
+@x module 774
+for j:=str_start[a] to str_start[a+1]-1 do append_to_name(str_pool[j]);
+for j:=str_start[n] to str_start[n+1]-1 do append_to_name(str_pool[j]);
+for j:=str_start[e] to str_start[e+1]-1 do append_to_name(str_pool[j]);
+@y
+for j:=str_start[a] to str_start[a+1]-1 do append_to_name(so(str_pool[j]));
+for j:=str_start[n] to str_start[n+1]-1 do append_to_name(so(str_pool[j]));
+for j:=str_start[e] to str_start[e+1]-1 do append_to_name(so(str_pool[j]));
+@z
+@x module 912
+ else begin cur_exp:=round_unscaled(cur_exp) mod 128; cur_type:=string_type;
+ if cur_exp<0 then cur_exp:=cur_exp+128;
+@y
+ else begin cur_exp:=round_unscaled(cur_exp) mod 256; cur_type:=string_type;
+ if cur_exp<0 then cur_exp:=cur_exp+256;
+@z
+@x module 913
+ else n:=str_pool[str_start[cur_exp]]
+@y
+ else n:=so(str_pool[str_start[cur_exp]])
+@z
+@x ibid
+ begin m:=str_pool[k];
+@y
+ begin m:=so(str_pool[k]);
+@z
+@x module 976
+for k:=str_start[a] to str_start[a+1]-1 do append_char(str_pool[k]);
+for k:=str_start[b] to str_start[b+1]-1 do append_char(str_pool[k]);
+@y
+for k:=str_start[a] to str_start[a+1]-1 do append_char(so(str_pool[k]));
+for k:=str_start[b] to str_start[b+1]-1 do append_char(so(str_pool[k]));
+@z
+@x module 977
+ for k:=str_start[s]+b-1 downto str_start[s]+a do append_char(str_pool[k])
+else for k:=str_start[s]+a to str_start[s]+b-1 do append_char(str_pool[k]);
+@y
+ for k:=str_start[s]+b-1 downto str_start[s]+a do append_char(so(str_pool[k]))
+else for k:=str_start[s]+a to str_start[s]+b-1 do append_char(so(str_pool[k]));
+@z
+@x module 1103
+ begin c:=str_pool[str_start[cur_exp]]; goto found;
+@y
+ begin c:=so(str_pool[str_start[cur_exp]]); goto found;
+@z
+@x module 1160
+ for k:=str_start[s] to str_start[s+1]-1 do gf_out(str_pool[k]);
+ end;
+if t<>0 then for k:=str_start[t] to str_start[t+1]-1 do gf_out(str_pool[k]);
+@y
+ for k:=str_start[s] to str_start[s+1]-1 do gf_out(so(str_pool[k]));
+ end;
+if t<>0 then for k:=str_start[t] to str_start[t+1]-1 do gf_out(so(str_pool[k]));
+@z
+@x module 1192
+ w.b0:=str_pool[k]; w.b1:=str_pool[k+1];
+ w.b2:=str_pool[k+2]; w.b3:=str_pool[k+3];
+@y [often qi(so(x))=x, but not e.g. when "quarterwords" are two bytes]
+ w.b0:=qi(so(str_pool[k])); w.b1:=qi(so(str_pool[k+1]));
+ w.b2:=qi(so(str_pool[k+2])); w.b3:=qi(so(str_pool[k+3]));
+@z
+@x module 1193
+ str_pool[k]:=w.b0; str_pool[k+1]:=w.b1;
+ str_pool[k+2]:=w.b2; str_pool[k+3]:=w.b3
+@y
+ str_pool[k]:=si(qo(w.b0)); str_pool[k+1]:=si(qo(w.b1));
+ str_pool[k+2]:=si(qo(w.b2)); str_pool[k+3]:=si(qo(w.b3))
+@z
+
+549. Make ".base" more easily switchable (see TeX82 log #369).
+@x module 775 gets a new definition
+@y
+@d base_extension=".base" {the extension, as a \.{WEB} constant}
+@z now replace ".base" by base_extension in modules 784 and 1200.
+
+550. "This can't happen" happened because of nonmonotonic rounding
+ (bug found by Mark Eklof, fixed 7 Oct 89)
+@x module 411
+left_x(r):=x_coord(r);
+@y
+left_x(r):=x_coord(r);
+if right_x(p)>x_coord(r) then right_x(p):=x_coord(r);
+ {we always have |x_coord(p)<=right_x(p)|}
+@z
+@x ibid
+else if x_coord(r)>dest_x then x_coord(r):=dest_x;
+@y
+else begin if x_coord(r)>dest_x then
+ begin x_coord(r):=dest_x; left_x(r):=-x_coord(r); right_x(r):=x_coord(r);
+ end;
+ if left_x(q)>dest_x then left_x(q):=dest_x
+ else if left_x(q)<x_coord(r) then left_x(q):=x_coord(r);
+ end;
+@z
+@x module 412
+left_x(s):=x_coord(s);
+negate(x_coord(s)); right_x(s):=x_coord(s);
+negate(left_x(q));
+@y
+left_x(s):=x_coord(s); {now |x_coord(r)=right_x(r)<=left_x(s)|}
+if left_x(q)<dest_x then left_x(q):=-dest_x
+else if left_x(q)>x_coord(s) then left_x(q):=-x_coord(s)
+else negate(left_x(q));
+negate(x_coord(s)); right_x(s):=x_coord(s);
+@z
+@x module 415
+if x_coord(r)>dest_x then x_coord(r):=dest_x
+else if x_coord(r)<x_coord(pp) then x_coord(r):=x_coord(pp);
+if y_coord(r)<y_coord(pp) then y_coord(r):=y_coord(pp);
+left_y(r):=y_coord(r);
+@y
+if y_coord(r)<y_coord(pp) then y_coord(r):=y_coord(pp);
+left_y(r):=y_coord(r);
+if right_y(pp)>y_coord(r) then right_y(pp):=y_coord(r);
+ {we always have |y_coord(pp)<=right_y(pp)|}
+@z
+@x ibid
+else if y_coord(r)>dest_y then y_coord(r):=dest_y;
+@y
+else begin if y_coord(r)>dest_y then
+ begin y_coord(r):=dest_y; left_y(r):=-y_coord(r); right_y(r):=y_coord(r);
+ end;
+ if left_y(qq)>dest_y then left_y(qq):=dest_y
+ else if left_y(qq)<y_coord(r) then left_y(qq):=y_coord(r);
+ end;
+@z
+@x module 416
+if x_coord(s)>dest_x then x_coord(s):=dest_x
+else if x_coord(s)<x_coord(r) then x_coord(s):=x_coord(r);
+if y_coord(s)<dest_y then y_coord(s):=dest_y;
+if y_coord(s)<y_coord(r) then y_coord(s):=y_coord(r);
+right_type(s):=right_type(pp);
+left_y(s):=y_coord(s);
+negate(y_coord(s)); right_y(s):=y_coord(s);
+negate(left_y(qq));
+@y
+if y_coord(s)<dest_y then y_coord(s):=dest_y;
+if y_coord(s)<y_coord(r) then y_coord(s):=y_coord(r);
+right_type(s):=right_type(pp);
+left_y(s):=y_coord(s); {now |y_coord(r)=right_y(r)<=left_y(s)|}
+if left_y(qq)<dest_y then left_y(qq):=-dest_y
+else if left_y(qq)>y_coord(s) then left_y(qq):=-y_coord(s)
+else negate(left_y(qq));
+negate(y_coord(s)); right_y(s):=y_coord(s);
+@z
+@x module 424
+if y_coord(r)>dest_y then y_coord(r):=dest_y
+else if y_coord(r)<y_coord(p) then y_coord(r):=y_coord(p);
+if x_coord(r)<x_coord(p) then x_coord(r):=x_coord(p);
+left_x(r):=x_coord(r);@/
+y_coord(r):=y_coord(r)+x_coord(r); negate(x_coord(r));@/
+right_x(r):=x_coord(r); right_y(r):=right_y(r)-right_x(r);@/
+left_y(q):=left_y(q)+left_x(q); negate(left_x(q));@/
+dest_y:=dest_y+dest_x; negate(dest_x);
+@y
+if x_coord(p)+y_coord(r)>dest_x+dest_y then
+ begin y_coord(r):=dest_x+dest_y-x_coord(p);
+ if left_y(r)>y_coord(r) then
+ begin left_y(r):=y_coord(r);
+ if right_y(p)>y_coord(r) then right_y(p):=y_coord(r);
+ end;
+ end;
+if x_coord(r)<x_coord(p) then x_coord(r):=x_coord(p)
+else if x_coord(r)+y_coord(r)>dest_x+dest_y then
+ x_coord(r):=dest_x+dest_y-y_coord(r);
+left_x(r):=x_coord(r);
+if right_x(p)>x_coord(r) then right_x(p):=x_coord(r);
+ {we always have |x_coord(p)<=right_x(p)|}
+y_coord(r):=y_coord(r)+x_coord(r); right_y(r):=right_y(r)+x_coord(r);@/
+negate(x_coord(r)); right_x(r):=x_coord(r);@/
+left_y(q):=left_y(q)+left_x(q); negate(left_x(q));@/
+dest_y:=dest_y+dest_x; negate(dest_x);
+if right_y(r)>dest_y then right_y(r):=dest_y;
+if left_y(q)>dest_y then left_y(q):=dest_y
+else if left_y(q)<y_coord(r) then left_y(q):=y_coord(r);
+if right_y(r)>left_y(q) then right_y(r):=left_y(q);
+@z
+@x ibid
+else if x_coord(r)>dest_x then x_coord(r):=dest_x
+@y
+else begin if x_coord(r)>dest_x then
+ begin x_coord(r):=dest_x; left_x(r):=-x_coord(r); right_x(r):=x_coord(r);
+ end;
+ if left_x(q)>dest_x then left_x(q):=dest_x
+ else if left_x(q)<x_coord(r) then left_x(q):=x_coord(r);
+ end;
+@z
+@x module 425 is entirely replaced
+@y by the following code:
+@ @<Subdivide the cubic a second time with respect to $x'-y'$@>=
+begin split_cubic(r,t,dest_x,dest_y); s:=link(r);@/
+if x_coord(r)+y_coord(s)>dest_x+dest_y then
+ begin y_coord(s):=dest_x+dest_y-x_coord(r);
+ if left_y(s)>y_coord(s) then
+ begin left_y(s):=y_coord(s);
+ if right_y(r)>y_coord(s) then right_y(r):=y_coord(s);
+ end;
+ end;
+if x_coord(s)+y_coord(s)>dest_x+dest_y then x_coord(s):=dest_x+dest_y-y_coord(s)
+else begin if x_coord(s)<dest_x then x_coord(s):=dest_x;
+ if x_coord(s)<x_coord(r) then x_coord(s):=x_coord(r);
+ end;
+right_type(s):=right_type(p);
+left_x(s):=x_coord(s); {now |x_coord(r)=right_x(r)<=left_x(s)|}
+if left_x(q)<dest_x then
+ begin left_y(q):=left_y(q)+dest_x; left_x(q):=-dest_x;@+end
+else if left_x(q)>x_coord(s) then
+ begin left_y(q):=left_y(q)+x_coord(s); left_x(q):=-x_coord(s);@+end
+else begin left_y(q):=left_y(q)+left_x(q); negate(left_x(q));@+end;
+y_coord(s):=y_coord(s)+x_coord(s); right_y(s):=right_y(s)+x_coord(s);@/
+negate(x_coord(s)); right_x(s):=x_coord(s);@/
+dest_y:=dest_y+dest_x;
+if right_y(s)>dest_y then right_y(s):=dest_y;
+if left_y(q)>dest_y then left_y(q):=dest_y
+else if left_y(q)<y_coord(s) then left_y(q):=y_coord(s);
+if right_y(s)>left_y(q) then right_y(s):=left_y(q);
+end
+@z
+
+551. Major change for extended ligatures.
+@x module 11 (this may affect change files)
+@!lig_table_size=300; {maximum number of ligature/kern steps}
+@y
+@!lig_table_size=5000; {maximum number of ligature/kern steps, must be
+ at least 255 and at most 32510}
+@!max_kerns=500; {maximum number of distinct kern amounts}
+@z
+@x module 14 gets a new line of code
+@y
+if(lig_table_size<255)or(lig_table_size>32510)then bad:=7;
+@z
+@x module 186
+@d lig_kern_token=76 {the operators `\&{kern}' and `\.{=:}'}
+@d assignment=77 {the operator `\.{:=}'}
+@d colon=78 {the operator `\.:'}
+@#
+@d comma=79 {the operator `\.,'}
+@d end_of_statement==cur_cmd>comma
+@d semicolon=80 {the operator `\.;', must be |comma+1|}
+@d end_group=81 {end a group (\&{endgroup}), must be |semicolon+1|}
+@d stop=82 {end a job (\&{end}, \&{dump}), must be |end_group+1|}
+@y
+@d lig_kern_token=76
+ {the operators `\&{kern}' and `\.{=:}' and `\.{=:\char'174}, etc.}
+@d assignment=77 {the operator `\.{:=}'}
+@d skip_to=78 {the operation `\&{skipto}'}
+@d bchar_label=79 {the operator `\.{\char'174\char'174:}'}
+@d double_colon=80 {the operator `\.{::}'}
+@d colon=81 {the operator `\.:'}
+@#
+@d comma=82 {the operator `\.,', must be |colon+1|}
+@d end_of_statement==cur_cmd>comma
+@d semicolon=83 {the operator `\.;', must be |comma+1|}
+@d end_group=84 {end a group (\&{endgroup}), must be |semicolon+1|}
+@d stop=85 {end a job (\&{end}, \&{dump}), must be |end_group+1|}
+@z
+@x module 190
+@d max_given_internal=warning_check
+@y
+@d boundary_char=41 {the right boundary character for ligatures}
+@d max_given_internal=41
+@z
+@x module 192 gets two new lines of code
+@y
+primitive("boundarychar",internal_quantity,boundary_char);@/
+@!@:boundary_char_}{\&{boundarychar} primitive@>
+@z
+@x and module 193 gets one too
+@y
+int_name[boundary_char]:="boundarychar";
+@z
+@x and module 211 gets several
+@y (to be inserted in appropriate places)
+primitive("::",double_colon,0);
+@!@::: }{\.{::} primitive@>
+primitive("||:",bchar_label,0);
+@!@:::: }{\.{\char'174\char'174:} primitive@>
+primitive("skipto",skip_to,0);@/
+@!@:skip_to_}{\&{skipto} primitive@>
+@z
+@x as does module 212
+@y
+bchar_label:print("||:");
+double_colon:print("::");
+skip_to:print("skipto");
+@z
+@x module 1093 has new text (see TeX change 362 for module 545) and also this:
+@d stop_bit(#)==lig_kern[#].b0
+@d next_char(#)==lig_kern[#].b1
+@d op_bit(#)==lig_kern[#].b2
+@y
+@d skip_byte(#)==lig_kern[#].b0
+@d next_char(#)==lig_kern[#].b1
+@d op_byte(#)==lig_kern[#].b2
+@z
+@x module 1096 gets a new definition
+@y
+@d undefined_label==lig_table_size {an undefined local label}
+@z
+@x ...and some changed declarations
+@!char_remainder:array[eight_bits] of eight_bits; {the |remainder| byte}
+@!header_byte:array[1..header_size] of -1..255;
+ {bytes of the \.{TFM} header, or $-1$ if unset}
+@!lig_kern:array[0..lig_table_size] of four_quarters; {the ligature/kern table}
+@!nl:0..lig_table_size; {the number of ligature/kern steps so far}
+@!kern:array[eight_bits] of scaled; {distinct kerning amounts}
+@!nk:0..256; {the number of distinct kerns so far}
+@y
+@!char_remainder:array[eight_bits] of 0..lig_table_size; {the |remainder| byte}
+@!header_byte:array[1..header_size] of -1..255;
+ {bytes of the \.{TFM} header, or $-1$ if unset}
+@!lig_kern:array[0..lig_table_size] of four_quarters; {the ligature/kern table}
+@!nl:0..32767-256; {the number of ligature/kern steps so far}
+@!kern:array[0..max_kerns] of scaled; {distinct kerning amounts}
+@!nk:0..max_kerns; {the number of distinct kerns so far}
+@z
+@x ...and some new declarations
+@y
+@!skip_table:array[eight_bits] of 0..lig_table_size; {local label status}
+@!lk_started:boolean; {has there been a lig/kern step in this command yet?}
+@!bchar:integer; {right boundary character}
+@!bch_label:0..lig_table_size; {left boundary starting location}
+@!ll,@!lll:0..lig_table_size; {registers used for lig/kern processing}
+@!label_loc:array[0..256] of -1..lig_table_size; {lig/kern starting addresses}
+@!label_char:array[1..256] of eight_bits; {characters for |label_loc|}
+@!label_ptr:0..256; {highest position occupied in |label_loc|}
+@z
+@x module 1097
+ end;
+for k:=1 to header_size do header_byte[k]:=-1;
+bc:=255; ec:=0; nl:=0; nk:=0; ne:=0; np:=0;
+@y
+ skip_table[k]:=undefined_label;
+ end;
+for k:=1 to header_size do header_byte[k]:=-1;
+bc:=255; ec:=0; nl:=0; nk:=0; ne:=0; np:=0;@/
+internal[boundary_char]:=-unity;
+bch_label:=undefined_label;@/
+label_loc[0]:=-1; label_ptr:=0;
+@z
+@x module 1104
+procedure set_tag(@!c:eight_bits;@!t:small_number;@!r:eight_bits);
+begin if char_tag[c]=no_tag then
+ begin char_tag[c]:=t; char_remainder[c]:=r;
+@y
+procedure set_tag(@!c:halfword;@!t:small_number;@!r:halfword);
+begin if char_tag[c]=no_tag then
+ begin char_tag[c]:=t; char_remainder[c]:=r;
+ if t=lig_tag then
+ begin incr(label_ptr); label_loc[label_ptr]:=r; label_char[label_ptr]:=c;
+ end;
+@z
+@x module 1105
+if (c>" ")and(c<128) then print(c)
+@y
+if (c>" ")and(c<127) then print(c)
+else if c=256 then print("||")
+@z
+@x module 1106
+label continue;
+var @!c,@!cc:eight_bits; {character codes}
+@!k:0..256; {index into the |kern| array}
+@y
+label continue,done;
+var @!c,@!cc:0..256; {character codes}
+@!k:0..max_kerns; {index into the |kern| array}
+@z
+% also the previous code of module 1107 is inserted into 1106
+@x modules 1107--1111 are completely replaced
+@y by the following new code:
+@ @<Store a list of ligature/kern steps@>=
+begin lk_started:=false;
+continue: get_x_next;
+if(cur_cmd=skip_to)and lk_started then
+ @<Process a |skip_to| command and |goto done|@>;
+if cur_cmd=bchar_label then
+ begin c:=256; cur_cmd:=colon;@+end
+else begin back_input; c:=get_code;@+end;
+if(cur_cmd=colon)or(cur_cmd=double_colon)then
+ @<Record a label in a lig/kern subprogram and |goto continue|@>;
+if cur_cmd=lig_kern_token then @<Compile a ligature/kern command@>
+else begin print_err("Illegal ligtable step");
+@.Illegal ligtable step@>
+ help1("I was looking for `=:' or `kern' here.");
+ back_error; next_char(nl):=qi(0); op_byte(nl):=qi(0); rem_byte(nl):=qi(0);@/
+ skip_byte(nl):=stop_flag+1; {this specifies an unconditional stop}
+ end;
+if nl=lig_table_size then overflow("ligtable size",lig_table_size);
+@:METAFONT capacity exceeded ligtable size}{\quad ligtable size@>
+incr(nl);
+if cur_cmd=comma then goto continue;
+if skip_byte(nl-1)<stop_flag then skip_byte(nl-1):=stop_flag;
+done:end
+
+@ @<Put each...@>=
+primitive("=:",lig_kern_token,0);
+@!@:=:_}{\.{=:} primitive@>
+primitive("=:|",lig_kern_token,1);
+@!@:=:/_}{\.{=:\char'174} primitive@>
+primitive("=:|>",lig_kern_token,5);
+@!@:=:/>_}{\.{=:\char'174>} primitive@>
+primitive("|=:",lig_kern_token,2);
+@!@:=:/_}{\.{\char'174=:} primitive@>
+primitive("|=:>",lig_kern_token,6);
+@!@:=:/>_}{\.{\char'174=:>} primitive@>
+primitive("|=:|",lig_kern_token,3);
+@!@:=:/_}{\.{\char'174=:\char'174} primitive@>
+primitive("|=:|>",lig_kern_token,7);
+@!@:=:/>_}{\.{\char'174=:\char'174>} primitive@>
+primitive("|=:|>>",lig_kern_token,11);
+@!@:=:/>_}{\.{\char'174=:\char'174>>} primitive@>
+primitive("kern",lig_kern_token,128);
+@!@:kern_}{\&{kern} primitive@>
+
+@ @<Cases of |print_cmd...@>=
+lig_kern_token: case m of
+0:print("=:");
+1:print("=:|");
+2:print("|=:");
+3:print("|=:|");
+5:print("=:|>");
+6:print("|=:>");
+7:print("|=:|>");
+11:print("|=:|>>");
+othercases print("kern")
+endcases;
+
+@ Local labels are implemented by maintaining the |skip_table| array,
+where |skip_table[c]| is either |undefined_label| or the address of the
+most recent lig/kern instruction that skips to local label~|c|. In the
+latter case, the |skip_byte| in that instruction will (temporarily)
+be zero if there were no prior skips to this label, or it will be the
+distance to the prior skip.
+
+We may need to cancel skips that span more than 127 lig/kern steps.
+
+@d cancel_skips(#)==ll:=#;
+ repeat lll:=qo(skip_byte(ll)); skip_byte(ll):=stop_flag; ll:=ll-lll;
+ until lll=0
+@d skip_error(#)==begin print_err("Too far to skip");
+@.Too far to skip@>
+ help1("At most 127 lig/kern steps can separate skipto1 from 1::.");
+ error; cancel_skips(#);
+ end
+
+@<Process a |skip_to| command and |goto done|@>=
+begin c:=get_code;
+if nl-skip_table[c]>128 then {|skip_table[c]<<nl<=undefined_label|}
+ begin skip_error(skip_table[c]); skip_table[c]:=undefined_label;
+ end;
+if skip_table[c]=undefined_label then skip_byte(nl-1):=qi(0)
+else skip_byte(nl-1):=qi(nl-skip_table[c]-1);
+skip_table[c]:=nl-1; goto done;
+end
+
+@ @<Record a label in a lig/kern subprogram and |goto continue|@>=
+begin if cur_cmd=colon then
+ if c=256 then bch_label:=nl
+ else set_tag(c,lig_tag,nl)
+else if skip_table[c]<undefined_label then
+ begin ll:=skip_table[c]; skip_table[c]:=undefined_label;
+ repeat lll:=qo(skip_byte(ll));
+ if nl-ll>128 then
+ begin skip_error(ll); goto continue;
+ end;
+ skip_byte(ll):=qi(nl-ll-1); ll:=ll-lll;
+ until lll=0;
+ end;
+goto continue;
+end
+@x module 1112
+next_char(nl):=qi(c); op_bit(nl):=qi(cur_mod); stop_bit(nl):=qi(0);
+if cur_mod=0 then rem_byte(nl):=qi(get_code)
+@y
+begin next_char(nl):=qi(c); skip_byte(nl):=qi(0);
+if cur_mod<128 then {ligature op}
+ begin op_byte(nl):=qi(cur_mod); rem_byte(nl):=qi(get_code);
+ end
+@z
+@x ibid
+ begin if nk=256 then overflow("kern",256);
+@:METAFONT capacity exceeded kern}{\quad kern@>
+ incr(nk);
+ end;
+ rem_byte(nl):=qi(k);
+ end
+@y
+ begin if nk=max_kerns then overflow("kern",max_kerns);
+@:METAFONT capacity exceeded kern}{\quad kern@>
+ incr(nk);
+ end;
+ op_byte(nl):=kern_flag+(k div 256);
+ rem_byte(nl):=qi((k mod 256));
+ end;
+lk_started:=true;
+end
+@z
+@x module 1135
+tfm_two(6+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np);
+ {this is the total number of file words that will be output}
+tfm_two(lh); tfm_two(bc); tfm_two(ec); tfm_two(nw); tfm_two(nh);
+tfm_two(nd); tfm_two(ni); tfm_two(nl); tfm_two(nk); tfm_two(ne); tfm_two(np);
+@y
+@<Compute the ligature/kern program offset and implant the
+ left boundary label@>;
+tfm_two(6+lh+(ec-bc+1)+nw+nh+nd+ni+nl+lk_offset+nk+ne+np);
+ {this is the total number of file words that will be output}
+tfm_two(lh); tfm_two(bc); tfm_two(ec); tfm_two(nw); tfm_two(nh);
+tfm_two(nd); tfm_two(ni); tfm_two(nl+lk_offset); tfm_two(nk); tfm_two(ne);
+tfm_two(np);
+@z
+% modules 1137&1138 are combined into a single module
+% and so are modules 1140--1141, to make room for two new modules.
+@x module 1136 is moved to after old module 1141
+@y and changed to the following code:
+@ @<Log the subfile sizes of the \.{TFM} file@>=
+if bch_label<undefined_label then decr(nl);
+wlog_ln('(You used ',nw:1,'w,',@| nh:1,'h,',@| nd:1,'d,',@| ni:1,'i,',@|
+ nl:1,'l,',@| nk:1,'k,',@| ne:1,'e,',@|
+ np:1,'p metric file positions');
+wlog_ln(' out of ',@| '256w,16h,16d,64i,',@|
+ lig_table_size:1,'l,',max_kerns:1,'k,256e,',@|
+ max_font_dimen:1,'p)');
+end
+@z
+@x module 1139 is completely replaced
+@y by the following three modules:
+@ We need to output special instructions at the beginning of the
+|lig_kern| array in order to specify the right boundary character
+and/or to handle starting addresses that exceed 255. The |label_loc|
+and |label_char| arrays have been set up to record all the
+starting addesses; we have $-1=|label_loc|[0]<|label_loc|[1]\le\cdots
+\le|label_loc|[|label_ptr]|$.
+
+@<Compute the ligature/kern program offset...@>=
+bchar:=round_unscaled(internal[boundary_char]);
+if(bchar<0)or(bchar>255)then
+ begin bchar:=-1; lk_started:=false; lk_offset:=0;@+end
+else begin lk_started:=true; lk_offset:=1;@+end;
+@<Find the minimum |lk_offset| and adjust all remainders@>;
+if bch_label<undefined_label then
+ begin skip_byte(nl):=qi(255); next_char(nl):=qi(0);
+ op_byte(nl):=qi(((bch_label+lk_offset)div 256));
+ rem_byte(nl):=qi(((bch_label+lk_offset)mod 256));
+ incr(nl); {possibly |nl=lig_table_size+1|}
+ end
+
+@ @<Find the minimum |lk_offset|...@>=
+k:=label_ptr; {pointer to the largest unallocated label}
+if label_loc[k]+lk_offset>255 then
+ begin lk_offset:=0; lk_started:=false; {location 0 can do double duty}
+ repeat char_remainder[label_char[k]]:=lk_offset;
+ while label_loc[k-1]=label_loc[k] do
+ begin decr(k); char_remainder[label_char[k]]:=lk_offset;
+ end;
+ incr(lk_offset); decr(k);
+ until lk_offset+label_loc[k]<256;
+ {N.B.: |lk_offset=256| satisfies this when |k=0|}
+ end;
+if lk_offset>0 then
+ while k>0 do
+ begin char_remainder[label_char[k]]
+ :=char_remainder[label_char[k]]+lk_offset;
+ decr(k);
+ end
+
+@ @<Output the ligature/kern program@>=
+for k:=0 to 255 do if skip_table[k]<undefined_label then
+ begin print_nl("(local label "); print_int(k); print(":: was missing)");
+@.local label l:: was missing@>
+ cancel_skips(skip_table[k]);
+ end;
+if lk_started then {|lk_offset=1| for the special |bchar|}
+ begin tfm_out(255); tfm_out(bchar); tfm_two(0);
+ end
+else for k:=1 to lk_offset do {output the redirection specs}
+ begin ll:=label_loc[label_ptr];
+ if bchar<0 then
+ begin tfm_out(254); tfm_out(0);
+ end
+ else begin tfm_out(255); tfm_out(bchar);
+ end;
+ tfm_two(ll+lk_offset);
+ repeat decr(label_ptr);
+ until label_loc[label_ptr]<ll;
+ end;
+for k:=0 to nl-1 do tfm_qqqq(lig_kern[k]);
+for k:=0 to nk-1 do tfm_four(dimen_out(kern[k]))
+@z
+@x module 1205 gets a new declaration
+@y
+@!lk_offset:0..256; {extra words inserted at beginning of |lig_kern| array}
+@z
+
+552. Improved the covering/shortening routines. (18 Dec 89)
+@x module 1119 gets a new global variable
+@y
+@!excess:integer; {the list is this much too long}
+@z
+@x module 1120 gives it a value
+begin if min_cover(0)<=m then threshold:=0
+@y
+begin excess:=min_cover(0)-m;
+if excess<=0 then threshold:=0
+@z
+@x and module 1122 uses it
+begin repeat p:=link(p); info(p):=m;
+@y
+begin repeat p:=link(p); info(p):=m;
+decr(excess);@+if excess=0 then d:=0;
+@z
+@x and module 1122 also avoids overflow/ambiguous halving
+v:=half(l+value(p));
+@y
+v:=l+half(value(p)-l);
+@z
+
+553. Global variable used prematurely in do_add_to (Alan Jeffrey, 9 Feb 90)
+@x module 403
+@!cur_path_type:double_path_code..also_code; {likewise}
+@y
+@!cur_path_type:double_path_code..contour_code; {likewise}
+@z
+@x module 1059
+begin get_x_next; var_flag:=thing_to_add; scan_primary;
+if cur_type<>token_list then
+ @<Abandon edges command because there's no variable@>
+else begin lhs:=cur_exp; cur_path_type:=cur_mod;@/
+ cur_type:=vacuous; get_x_next; scan_expression;
+ if cur_path_type=also_code then @<Augment some edges by others@>
+@y
+@!add_to_type:double_path_code..also_code; {modifier of \&{addto}}
+begin get_x_next; var_flag:=thing_to_add; scan_primary;
+if cur_type<>token_list then
+ @<Abandon edges command because there's no variable@>
+else begin lhs:=cur_exp; add_to_type:=cur_mod;@/
+ cur_type:=vacuous; get_x_next; scan_expression;
+ if add_to_type=also_code then @<Augment some edges by others@>
+@z
+@x module 1064
+else begin lhs:=null;
+@y
+else begin lhs:=null; cur_path_type:=add_to_type;
+@z
+
+554. Balance the parens showing on the terminal (for Lispers).
+@x module 631
+@!in_open : 0..max_in_open; {the number of lines in the buffer, less one}
+@y
+@!in_open : 0..max_in_open; {the number of lines in the buffer, less one}
+@!open_parens : 0..max_in_open; {the number of open text files}
+@z
+@x module 657
+in_open:=0; max_buf_stack:=0;
+@y
+in_open:=0; open_parens:=0; max_buf_stack:=0;
+@z
+@x module 681
+ begin print_char(")"); force_eof:=false;
+ update_terminal; {show user that file has been read}
+@y
+ begin print_char(")"); decr(open_parens);
+ update_terminal; {show user that file has been read}
+ force_eof:=false;
+@z
+@x module 793
+print_char("("); print(name); update_terminal;
+@y
+print_char("("); incr(open_parens); print(name); update_terminal;
+@z
+@x module 1209
+if job_name=0 then open_log_file;
+@y
+if job_name=0 then open_log_file;
+while open_parens>0 do
+ begin print(" )"); decr(open_parens);
+ end;
+@z
+
+-----------Here I draw the line with respect to further changes
+
+555. Don't try system area if an area was given (see tex82.bug number 312;
+found by Jonathan Kew, May 1990)
+@x module 793
+ pack_file_name(cur_name,MF_area,cur_ext);
+ if a_open_in(cur_file) then goto done;
+@y
+ if cur_area="" then
+ begin pack_file_name(cur_name,MF_area,cur_ext);
+ if a_open_in(cur_file) then goto done;
+ end;
+@z
+
+556. Report correct line number when buffer overflows (CET, Jul 90).
+@x module 794
+begin if not input_ln(cur_file,false) then do_nothing;
+firm_up_the_line;
+buffer[limit]:="%"; first:=limit+1; loc:=start; line:=1;
+@y
+begin line:=1;
+if input_ln(cur_file,false) then do_nothing;
+firm_up_the_line;
+buffer[limit]:="%"; first:=limit+1; loc:=start;
+@z
+
+557. TeX82 bug 308, corrected in 1985, is also in MF! (Lutz Birkhahn, May91)
+@x module 176
+var_used:=lo_mem_stat_max+1-mem_min; dyn_used:=mem_top+1-hi_mem_stat_min;
+@y
+var_used:=lo_mem_stat_max+1-mem_min; dyn_used:=mem_top+1-hi_mem_min;
+@z
+
+558. Allow unprintable file names, as in TeX change 396 (19 Sep 91)
+(Much of this is redundant except for people who make nonportable
+versions that allow other 8-bit codes to be in variable names---and for
+those people only if they allow input of more codes than they can print!
+Still, it seems best to make the programs for TeX and MF as alike as possible.)
+@x module 59
+j:=str_start[s];
+while j<str_start[s+1] do
+ begin print_char(so(str_pool[j])); incr(j);
+ end;
+@y
+if (s<256)and(selector>pseudo) then print_char(s)
+else begin j:=str_start[s];
+ while j<str_start[s+1] do
+ begin print_char(so(str_pool[j])); incr(j);
+ end;
+ end;
+@z
+@x module 60
+j:=str_start[s];
+while j<str_start[s+1] do
+ begin print(so(str_pool[j])); incr(j);
+ end;
+@y
+if (s<256)and(selector>pseudo) then print_char(s)
+else begin j:=str_start[s];
+ while j<str_start[s+1] do
+ begin print(so(str_pool[j])); incr(j);
+ end;
+ end;
+@z
+@x module 61
+else begin print(base_ident); print_ln;
+@y
+else begin slow_print(base_ident); print_ln;
+@z
+@x module 79
+ print(input_stack[file_ptr].name_field);
+@y
+ slow_print(input_stack[file_ptr].name_field);
+@z
+@x module 223
+print(r);
+@y
+slow_print(r);
+@z
+@x module 254
+ print(int_name[q-(hash_end)]); print_char("=");
+@y
+ slow_print(int_name[q-(hash_end)]); print_char("=");
+@z
+@x module 254 again
+ print(text(q)); print_char("}");
+@y
+ slow_print(text(q)); print_char("}");
+@z
+@x module 638
+ if name<>null then print(text(name))
+@y
+ if name<>null then slow_print(text(name))
+@z
+@x module 664
+ if scanner_status=op_defining then print(text(warning_info))
+@y
+ if scanner_status=op_defining then slow_print(text(warning_info))
+@z
+@x module 664 again
+loop_defining: begin print("the text of a "); print(text(warning_info));
+@y
+loop_defining: begin print("the text of a "); slow_print(text(warning_info));
+@z
+@x module 722
+begin if n<>null then print(text(n))
+@y
+begin if n<>null then slow_print(text(n))
+@z
+@x module 722 again
+ if p=null then print(text(info(info(link(a)))))
+@y
+ if p=null then slow_print(text(info(info(link(a)))))
+@z
+@x module 725
+ print_nl(" Missing `"); print(text(r_delim));
+@y
+ print_nl(" Missing `"); slow_print(text(r_delim));
+@z
+@x module 773
+begin print(a); print(n); print(e);
+@y
+begin slow_print(a); slow_print(n); slow_print(e);
+@z
+@x module 790
+print(base_ident); print(" ");
+@y
+slow_print(base_ident); print(" ");
+@z
+@x module 793
+print_char("("); incr(open_parens); print(name); update_terminal;
+@y
+print_char("("); incr(open_parens); slow_print(name); update_terminal;
+@z
+@x module 998
+if info(lhs)>hash_end then print(int_name[info(lhs)-(hash_end)])
+@y
+if info(lhs)>hash_end then slow_print(int_name[info(lhs)-(hash_end)])
+@z
+@x module 999
+ print(int_name[info(lhs)-(hash_end)]);
+@y
+ slow_print(int_name[info(lhs)-(hash_end)]);
+@z
+@x module 1032
+else begin print_err("The token `"); print(text(r_delim));
+@y
+else begin print_err("The token `"); slow_print(text(r_delim));
+@z
+@x module 1034
+ else print(text(cur_sym));
+@y
+ else slow_print(text(cur_sym));
+@z
+@x module 1041
+else begin print(text(cur_sym)); print_char("=");
+@y
+else begin slow_print(text(cur_sym)); print_char("=");
+@z
+@x module 1042
+else begin print_char(""""); print(cur_mod); print_char("""");
+@y
+else begin print_char(""""); slow_print(cur_mod); print_char("""");
+@z
+@x module 1043
+ print("t delimiter that matches "); print(text(m));
+@y
+ print("t delimiter that matches "); slow_print(text(m));
+@z
+@x module 1043 again
+internal_quantity:print(int_name[m]);
+@y
+internal_quantity:slow_print(int_name[m]);
+@z
+@x module 1134
+print_nl("Font metrics written on "); print(metric_file_name); print_char(".");
+@y
+print_nl("Font metrics written on "); slow_print(metric_file_name);
+print_char(".");
+@z
+@x module 1182
+print_nl("Output written on "); print(output_file_name);
+@y
+print_nl("Output written on "); slow_print(output_file_name);
+@z
+@x module 1200
+print(w_make_name_string(base_file)); flush_string(str_ptr-1);
+print_nl(base_ident)
+@y
+slow_print(w_make_name_string(base_file)); flush_string(str_ptr-1);
+print_nl(""); slow_print(base_ident)
+@z
+@x module 1205
+ print(log_name); print_char(".");
+@y
+ slow_print(log_name); print_char(".");
+@z
+@x module 1213
+10: print(n);
+@y
+10: slow_print(n);
+@z
+
+------ The third printing of Volume D (October 1991) incorporated the above.
+
+559. Debugging routine never used since change 528; needed update then (JDH).
+@x module 617
+ p:=dep_list(p); r:=hi_mem_min;
+ repeat if info(p)>=r then
+@y
+ p:=dep_list(p); r:=inf_val;
+ repeat if value(info(p))>=value(r) then
+@z
+
+560. Corrections to blunders in change 550 (noted by B Jackowski, Jul 91).
+@x module 415 can use more paranoia even though no problems have occurred yet
+negate(left_y(qq)); negate(dest_y);@/
+@y
+negate(left_y(qq)); negate(dest_y);@/
+if x_coord(r)<x_coord(pp) then x_coord(r):=x_coord(pp)
+else if x_coord(r)>dest_x then x_coord(r):=dest_x;
+if left_x(r)>x_coord(r) then
+ begin left_x(r):=x_coord(r);
+ if right_x(pp)>x_coord(r) then right_x(pp):=x_coord(r);
+ end;
+if right_x(r)<x_coord(r) then
+ begin right_x(r):=x_coord(r);
+ if left_x(qq)<x_coord(r) then left_x(qq):=x_coord(r);
+ end;
+@z
+@x module 416 similarly
+negate(y_coord(s)); right_y(s):=y_coord(s);
+@y
+negate(y_coord(s)); right_y(s):=y_coord(s);
+if x_coord(s)<x_coord(r) then x_coord(s):=x_coord(r)
+else if x_coord(s)>dest_x then x_coord(s):=dest_x;
+if left_x(s)>x_coord(s) then
+ begin left_x(s):=x_coord(s);
+ if right_x(r)>x_coord(s) then right_x(r):=x_coord(s);
+ end;
+if right_x(s)<x_coord(s) then
+ begin right_x(s):=x_coord(s);
+ if left_x(qq)<x_coord(s) then left_x(qq):=x_coord(s);
+ end;
+@z
+@x module 424 similarly
+if x_coord(p)+y_coord(r)>dest_x+dest_y then
+ begin y_coord(r):=dest_x+dest_y-x_coord(p);
+ if left_y(r)>y_coord(r) then
+ begin left_y(r):=y_coord(r);
+ if right_y(p)>y_coord(r) then right_y(p):=y_coord(r);
+ end;
+ end;
+@y
+if y_coord(r)<y_coord(p) then y_coord(r):=y_coord(p)
+else if y_coord(r)>dest_y then y_coord(r):=dest_y;
+if x_coord(p)+y_coord(r)>dest_x+dest_y then
+ y_coord(r):=dest_x+dest_y-x_coord(p);
+if left_y(r)>y_coord(r) then
+ begin left_y(r):=y_coord(r);
+ if right_y(p)>y_coord(r) then right_y(p):=y_coord(r);
+ end;
+if right_y(r)<y_coord(r) then
+ begin right_y(r):=y_coord(r);
+ if left_y(q)<y_coord(r) then left_y(q):=y_coord(r);
+ end;
+@z
+@x in module 424, here's the serious bug introduced in change #550.
+if right_y(r)>dest_y then right_y(r):=dest_y;
+if left_y(q)>dest_y then left_y(q):=dest_y
+else if left_y(q)<y_coord(r) then left_y(q):=y_coord(r);
+if right_y(r)>left_y(q) then right_y(r):=left_y(q);
+@y
+if right_y(r)<y_coord(r) then
+ begin right_y(r):=y_coord(r);
+ if left_y(q)<y_coord(r) then left_y(q):=y_coord(r);
+ end;
+@z
+@x module 425 is analogous
+if x_coord(r)+y_coord(s)>dest_x+dest_y then
+ begin y_coord(s):=dest_x+dest_y-x_coord(r);
+ if left_y(s)>y_coord(s) then
+ begin left_y(s):=y_coord(s);
+ if right_y(r)>y_coord(s) then right_y(r):=y_coord(s);
+ end;
+ end;
+@y
+if y_coord(s)<y_coord(r) then y_coord(s):=y_coord(r)
+else if y_coord(s)>dest_y then y_coord(s):=dest_y;
+if x_coord(r)+y_coord(s)>dest_x+dest_y then
+ y_coord(s):=dest_x+dest_y-x_coord(r);
+if left_y(s)>y_coord(s) then
+ begin left_y(s):=y_coord(s);
+ if right_y(r)>y_coord(s) then right_y(r):=y_coord(s);
+ end;
+if right_y(s)<y_coord(s) then
+ begin right_y(s):=y_coord(s);
+ if left_y(q)<y_coord(s) then left_y(q):=y_coord(s);
+ end;
+@z
+@x module 425, the analogous bug
+dest_y:=dest_y+dest_x;
+if right_y(s)>dest_y then right_y(s):=dest_y;
+if left_y(q)>dest_y then left_y(q):=dest_y
+else if left_y(q)<y_coord(s) then left_y(q):=y_coord(s);
+if right_y(s)>left_y(q) then right_y(s):=left_y(q);
+@y
+if right_y(s)<y_coord(s) then
+ begin right_y(s):=y_coord(s);
+ if left_y(q)<y_coord(s) then left_y(q):=y_coord(s);
+ end;
+@z
+
+561. serious longstanding bug caused overflows and bad rounding (1 Mar 95)
+@x module 815
+begin if (max_c[dependent]>=fraction_one)or@|
+ (max_c[dependent] div @'10000 >= max_c[proto_dependent]) then
+@y
+begin if (max_c[dependent] div @'10000 >=
+ max_c[proto_dependent]) then
+@z
+
+562. final cleanup should not retain spurious reference counts (20 Mar 95)
+@x module 1209
+while open_parens>0 do
+@y
+while input_ptr>0 do
+ if token_state then end_token_list@+else end_file_reading;
+while loop_ptr<>null do stop_iteration;
+while open_parens>0 do
+@z
+@x module 1209
+ cur_if:=name_type(cond_ptr); cond_ptr:=link(cond_ptr);
+@y
+ cur_if:=name_type(cond_ptr); loop_ptr:=cond_ptr;
+ cond_ptr:=link(cond_ptr); free_node(loop_ptr,if_node_size);
+@z
+
+563. unprintable strings of length 1 need to be truly length 1 (27 Nov 95,
+pointed out by Ulrik Vieth)
+@x module 671
+ if loc=k+1 then cur_mod:=buffer[k]
+@y
+ if (loc=k+1) and (length(buffer[k])=1) then cur_mod:=buffer[k]
+@z
+
+564. minor improvement to pythagorean addition (22 Jan 97)
+@x module 124
+if a>0 then
+@y
+if b>0 then
+@z
+
+565. we need not raise hassles about two-digit years (23 Nov 98)
+@x module 1200
+print_int(round_unscaled(internal[year]) mod 100); print_char(".");
+@y
+print_int(round_unscaled(internal[year])); print_char(".");
+@z
+
+566. "this can't happen" can happen if coordinates are half vast
+ (Julian Gilbey, January 2001)
+@x module 402
+@!chopped:boolean; {have we truncated any of the data?}
+@y
+@!chopped:integer; {positive if data truncated,
+ negative if data dangerously large}
+@z
+@x module 402
+if internal[autorounding]>0 then xy_round;
+octant_subdivide; {complete the subdivision}
+if internal[autorounding]>unity then diag_round;
+@<Remove dead cubics@>;
+@<Insert octant boundaries and compute the turning number@>;
+while left_type(cur_spec)<>endpoint do cur_spec:=link(cur_spec);
+if tracing>0 then
+ if internal[autorounding]<=0 then print_spec(", after subdivision")
+@y
+if (internal[autorounding]>0)and(chopped=0) then xy_round;
+octant_subdivide; {complete the subdivision}
+if (internal[autorounding]>unity)and(chopped=0) then diag_round;
+@<Remove dead cubics@>;
+@<Insert octant boundaries and compute the turning number@>;
+while left_type(cur_spec)<>endpoint do cur_spec:=link(cur_spec);
+if tracing>0 then
+ if (internal[autorounding]<=0)or(chopped<>0) then
+ print_spec(", after subdivision")
+@z
+@x module 404
+@d procrustes(#)==if abs(#)>max_allowed then
+ begin chopped:=true;
+ if #>0 then #:=max_allowed@+else #:=-max_allowed;
+ end
+
+@<Truncate the values of all coordinates that exceed...@>=
+p:=cur_spec; k:=1; chopped:=false;
+@y
+@d procrustes(#)==if abs(#)>=dmax then
+ if abs(#)>max_allowed then
+ begin chopped:=1;
+ if #>0 then #:=max_allowed@+else #:=-max_allowed;
+ end
+ else if chopped=0 then chopped:=-1
+
+@<Truncate the values of all coordinates that exceed...@>=
+p:=cur_spec; k:=1; chopped:=0; dmax:=half(max_allowed);
+@z
+@x module 404
+if chopped then
+@y
+if chopped>0 then
+@z
+
+-------------
+567. The absolutely final change (to be made after my death)
+@x module 2
+@d banner=='This is METAFONT, Version 2.7182' {printed when \MF\ starts}
+@y
+@d banner=='This is METAFONT, Version $e$' {printed when \MF\ starts}
+@z
+When this change is made, the corresponding line should be changed in
+Volume D, and also on page 31 of The METAFONTbook.
+My last will and testament for METAFONT is that no further changes be made
+under any circumstances. Improved systems should not be called simply
+`METAFONT'; that name, unqualified, should refer only to the program for which
+I have taken personal responsibility. -- Don Knuth
diff --git a/Master/texmf-doc/doc/english/knuth/errata/tex82.bug b/Master/texmf-doc/doc/english/knuth/errata/tex82.bug
new file mode 100644
index 00000000000..2977f089156
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errata/tex82.bug
@@ -0,0 +1,9006 @@
+This file has been updated periodically ever since TeX82 was born;
+it has been summarized in "The errors of TeX," Software Practice &
+Experience, July 1989. Entries are in chronological order;
+thus the most recent news (including all bugfixes made since
+that article was published) appears at the bottom of the file.
+
+[Add 519 to these entry numbers to get the corresponding number in
+the published article. The article also translates all module
+numbers to their final form; what you are about to read is
+"authentic source material" from the early days before TeX converged.]
+
+-------------------------------------------------------------------------------
+
+First updates to the TeX82 listing published in September, 1982.
+(These changes were included in the original Version 0 of TeX, but they
+were discovered after the listing went to press.)
+
+1. Module 943, line 6 (bug discovered 9/28)
+change "if cur_cmd=char_num then" to
+ if (cur_cmd=letter) or (cur_cmd=other_char) then r:=qi(cur_chr)
+ else if cur_cmd=char_num then
+
+2. "pause" changed to "pausing" and "pause_code" to "pausing code", throughout.
+
+3. Module 719, lines 8 and 11 (bug discovered 9/28)
+insert "rule_save:=overfull_rule; overfull_rule:=0;" after "save_ptr-2;"
+insert "overfull_rule:=rule_save;" before "q:=p+list_offset;"
+and insert a declaration of "overfull_rule: scaled" in module 716.
+
+4. Module 1128, lines 6 and following (bug discovered 9/28)
+change "while n<>0 do" to "loop"
+change "goto done" to
+ begin scan_left_brace; new_save_level(false_group);
+ goto done;
+ end
+change "... return 1130>;" to
+ ... return 1130>
+ else if n=0 then
+ begin new_save_level(case_group); goto done;
+ end;
+and change "done: ... (false_group);" to "done:".
+
+5. Module 182, line 10 (suggestion by DRF on 9/30)
+change "0.0" to "?.?"
+
+6. Module 682, new definition of math_spacing (decision of 10/2)
+"0234000122*4000133**3**344*0400400*000000234000111*4111112341011"
+
+7. Module 684, new code for case "4" (decision of 10/2)
+"4": if cur_style<script_style then x:=thick_mu_skip_code else x:=0;
+[Also in module 682 line 7, say "...a conditional thick space (\nonscript..."]
+
+8. Module 11, trie_size changed from 7000 to 8000 because of new
+improved (but longer) hyphenation patterns (10/4)
+
+9. Module 453, forgot to change this when 454 changed (noted by DRF 10/6)
+format_default_length=20 (not 22)
+format_area_length=11 (not 13)
+
+ Changes to TEX.WEB made after Version 0 was released in October, 1982.
+
+Since copies of TEX.WEB are not supposed to be edited, there are
+two ways to make your version of TeX bug-free:
+ 1. Get a new copy of TEX.WEB.
+ 2. Put the corrections into your change file(s).
+Some people will find (1) easier than (2), except the main TeX sources at
+SCORE won't be updated quite as fast as the sources at SAIL (which have to
+be translated into ascii before they are sent to the outside world).
+Actually (2) will be quite easy, unless the list of changes becomes quite
+long, so it is the recommended procedure. In case (2) it would be useful
+to include a comment like "this is fix number xx" (using the numbering
+scheme in this file), so that the change could readily be deleted at some
+future time.
+
+10. Module 857 line -5 (bug discovered 10/8/82 by HWT)
+change it to: if h>0 then decr(h) else h:=trie_op_hash_size;
+
+11. Module 457 line 3 (typo discovered 10/9/82)
+change `\.!' to `\.\&'
+
+12. Module 1245 line 8 (bug fixed 10/9/82, discovered by MMD)
+insert the following between "begin" and "if":
+if format_ident<>0 then initialize; {erase preloaded format}
+
+** Version 0.1 incorporates the above changes.
+
+13. This is an extension to the language, put in to satisfy people who
+objected to the fact that \write (and \openout and \closeout) only
+caused action after being deferred to the next \shipout. Some applications
+call for immediate output, hence a new feature: \immediate followed by
+\openout or \write or \closeout causes the output action to take place
+without delay. For example, \immediate\write{x} is equivalent to
+\shipout\vbox{\write{x}} except that the latter also puts an empty
+page into the DVI file.
+
+The extension requires the following new code:
+13a. Insert `\immediate' after `\closeout' in module 1248.
+13b. Define immediate_code=4 and include the following in module 1252:
+ primitive("immediate",extension,immediate_code);
+13c. Include the following in module 1254:
+ immediate_code:print_esc("immediate");
+13d. And, in module 1256:
+ immediate_code:@<Implement \.{\\immediate}@>;
+13e. Finally, there's a new module inserted after old module 1280.
+Here is the WEB coding for this module:
+
+@ The presence of `\.{\\immediate}' causes the |do_extension| procedure
+to descend to one level of recursion. Nothing happens unless \.{\\immediate}
+is followed by `\.{\\openout}', `\.{\\write}', or `\.{\\closeout}'.
+@^recursion@>
+
+@<Implement \.{\\immediate}@>=
+begin get_nc_token;
+if (cur_cmd=extension)and(cur_chr<=close_node) then
+ begin p:=tail; do_extension; {append a whatsit node}
+ out_what(tail); {do the action immediately}
+ flush_node_list(tail); tail:=p; link(p):=null;
+ end
+else back_input;
+end;
+
+** Version 0.2 incorporates the above changes.
+
+14. Like change 11, this one doesn't affect the program, it just improves
+the documentation: Insert the following definitions in module 106:
+define set_glue_ratio_zero(#) == #:=0.0 {assign representation of zero ratio}
+define set_glue_ratio_one(#) == #:=1.0 {assign representation of unit ratio}
+
+These macros are now introduced in a dozen or so future modules, thereby
+eliminating most of the system-dependent changes needed elsewhere for ratios.
+(Note: I also changed 0 to 0.0 in two places of module 182, where a glue_ratio
+comparision was being made.)
+
+15. Change of module 576 (discovered by HWT, 10/14/82)
+"hd:quarterword" should be "hd:eight_bits".
+(The same error occurs in module 522, but in that module the remedy is
+simply to delete the declaration of hd, since this variable is no longer used.)
+
+16. A most embarrassing bug (discovered by DRF, 10/14/82)
+Replace module 531 by:
+
+@ A mild optimization of the output is performed by the |dvi_pop|
+routine, which issues a |pop| unless it is possible to cancel a
+`|push| |pop|' pair. The parameter to |dvi_pop| is the byte address
+following the old |push| that matches the new |pop|.
+
+@p procedure dvi_pop(@!l:integer);
+begin if (l=dvi_offset+dvi_ptr)and(dvi_ptr>0) then decr(dvi_ptr)
+else dvi_out(pop);
+end;
+
+Now we need to make a few changes to subsequent modules:
+16a. In 549, after "incr(cur_s)", insert
+ if cur_s>0 then dvi_out(push);
+and before "decr(cur_s)", insert
+ if cur_s>0 then dvi_pop(save_loc);
+
+16b. Delete "dvi_out(push);" and "dvi_pop;" from modules 553, 558, 562, 567.
+
+16c. Change module 559 just as in 16a.
+
+17. Module 605, line 6 (discovered 10/15/82)
+The test should be "prev_depth>ignore_depth"
+
+** Version 0.3 incorporates the above changes.
+
+18. Module 11 (noticed by WLS, 10/16/82)
+Delete the definition of align_size (it's harmless but never used)
+
+19. (This change and the next cause major changes to the TRIP output;
+file TRIP.LOG and its relatives are being kept up to date on area [tug,dek].)
+The change avoids error messages when vpackage is called during output.
+Such messages can occur when there was no error, because the page is being
+boxed without the \skip glue from its insertions; so they should be omitted.
+The user who really wants such messages can still get them by saying
+"\setbox255=\vbox to 1ht255{\unbox255}".
+In module 903, insert the followng before the declaration of "wait":
+ save_vbadness:integer; {saved value of |vbadness|}
+ save_vfuzz: scaled; {saved value of |vfuzz|}
+Then in module 924, insert
+ save_vbadness:=vbadness; vbadness:=inf_bad;
+ save_vfuzz:=vfuzz; vfuzz:=max_dimen; {inhibit error messages}
+before the call on vpackage, and
+ vbadness:=save_vbadness; vfuzz:=save_vfuzz;
+after.
+
+20. Module 917 computes |page_size| improperly. (Noticed 10/21/82)
+Delete the statement "page_so_far[1]:=page_so_far[1]+width(q);"
+and change the preceding statement to:
+ page_size:=page_size-h-width(q);
+(The comment about page_so_far in the first paragraph of module 895 is
+correct; I mistakenly introduced a bug in module 917 some months after
+writing the first draft of the code, believing that I was making the
+algorithm more elegant or something.)
+
+** Version 0.4 incorporates the above changes.
+
+21. Since TeX82 applied to (the "woven" documentation) TEX.TEX uses
+about 11500 words of variable-size memory, I'm increasing hi_mem_size
+(in module 12) from 12000 to 13000. Actually, I recommend using considerably
+larger values for mem_max and hi_mem_size, whenever possible.
+
+22. Addition of the \boxmaxdepth parameter (10/22/82):
+This involves renumbering hfuzz_code through dimen_pars, in module 234,
+to numbers 9 through 18; inserting the lines
+ @d box_max_depth_code=8 {maximum depth of explicit vboxes}
+ @d box_max_depth==dimen_par(box_max_depth_code)
+ box_max_depth_code:print_esc("boxmaxdepth");
+to module 234 and
+ primitive("boxmaxdepth",assign_dimen,box_max_depth_code);
+to module 235; and changing the call on vpack in module 996 to
+ vpackage(link(head),saved(2),saved(1),box_max_depth);
+
+** Version 0.5 incorporates the above changes.
+
+23. Module 1224, line 4 (bug found by GMK/HWT on 10/26/82)
+change "(k+x>eqtb_size)" to "(k+x>eqtb_size+1)"
+
+24. Module 247, line 13 (bug found 10/26/82)
+(bug was reflected in TRIP.LOG but not noticed)
+change "ch_code(p)" to "ch_code(p-single_base)"
+
+25. Module 670, line 18 (bug found 10/27/82)
+interchange the statements "fetch(...)" and "math_type(...):=..."
+(since the fetch routine sometimes has a side-effect of changing math_type)
+ A major change (Version 0.6) made on October 28:
+The following list of changes counts as "number 26" on the list.
+Fonts now have identifiers instead of code numbers; the "\:" primitive
+has disappeared; and there are associated new features for "\the".
+
+a. In module 11, delete bad_font_code.
+b. In modules 170 and 172, delete print_esc(":"), and change
+ `print_int(font_code' to `sprint_cs(font_ident'.
+c. In module 205, the comment for set_font is revised.
+d. In module 217, there are now five locations for control sequences
+ that are perpetually defined; undefined_control_sequence
+ is therefore defined to be frozen_control_sequence+5.
+e. In module 248, sprint_cs is now included among <Basic printing procedures>.
+f. Delete the primitive ":" in modules 250 and 251.
+g. Add to module 376: <Declare procedures that scan font-related stuff>
+h. In module 377, seven levels are now distinguished; we define
+ font_val=4, ident_val=5, tok_val=6.
+i. In module 380, delete the previous cases for def_family and set_font,
+ and the following takes the place of case assign_toks:
+ assign_toks,def_family,set_font,def_font: <Fetch a token list or
+ font number or font identifier, provided that level=tok_val>;
+j. Module 382 (which now has a new name) has this new ending:
+ else if cur_cmd=assign_toks then scanned_result(equiv(m))(tok_val)
+ else <Fetch a font number or a font identifier>
+k. Module 389 becomes
+ <Fetch a font number or a font identifier>=
+ if cur_cmd=set_font then scanned_result(cur_chr)(font_val)
+ else if cur_cmd=def_font then
+ scanned_result(font_ident[cur_font])(ident_val)
+ else begin scan_four_bit_int;
+ scanned_result(font_ident[equiv(m+cur_val)])(ident_val);
+ end
+l. In module 393, the relation `<>tok_val' becomes `<=mu_val'.
+m. In module 426, the relation `=tok_val' becomes '>=ident_val'.
+ Also add a new case to the case statement:
+ font_val: begin print(font_name[cur_val]);
+ if font_size[cur_val]<>font_dsize[cur_val] then
+ begin print(" at "); print_scaled(font_size[cur_val]);
+ print("pt");
+ end;
+ end;
+n. The body of module 427 becomes:
+ begin p:=temp_head; link(p):=null;
+ if cur_val_level=ident_val then store_new_token(cs_token_flag+cur_val)
+ else if cur_val<>null then
+ begin r:=link(cur_val); {do not copy the reference count}
+ while r<>null do
+ begin store_new_token(info(r)); r:=link(r);
+ end;
+ end;
+ the_toks:=p;
+ end
+o. In module 480, delete user_font_code; there's a new comment:
+ When the user defines \font\f, say, TeX assigns an internal number
+ to the user's font \f. For example, if this internal number is 13,
+ we will have font_ident[13]=p and equiv(p)=13, where p is the eqtb
+ location of the control sequence \f.
+p. In module 481, delete the declaration of font_number, and
+ replace the declaration of font_code by
+ font_ident:array[internal_font_number] of pointer;
+q. New stuff in module 483 (also delete references to font_number, font_code):
+ define bad_font_ident=frozen_control_sequence+4 {denotes a null font}
+ font_name[undefined_font]:="nullfont";
+ font_ident[undefined_font]:=bad_font_ident;
+ text(bad_font_ident):="nullfont"; eq_level(bad_font_ident):=level_one;
+ eq_type(bad_font_ident):=set_font;
+ equiv(bad_font_ident):=undefined_font;
+r. In module 490, parameter u is new of type pointer, and the
+ read_font_info subroutine is changed to a function that
+ returns an internal_font_number. There's a new local variable
+ g:internal_font_namber; {the number to return}
+ and we set g:=undefined_font immediately upon entering read_font_info.
+ Also set read_font_info:=g just before exiting.
+s. In module 491, print_int(u) becomes sprint_cs(u).
+t. Delete the statements involving font_code and font_number in module 506,
+ and set g:=f at the end of that module.
+u. The body of module 507 becomes:
+ <Declare procedures that scan font-related stuff>=
+ procedure scan_font_ident;
+ var f:internal_font_number;
+ begin <Get the next non-blank non-call...>;
+ if cur_cmd=set_font then f:=cur_chr
+ else begin print_nl("! Missing font identifier");
+ help2("I was looking for a control sequence whose")
+ ("current meaning has been defined by \font.");
+ back_error; f:=undefined_font;
+ end;
+ end;
+v. New beginning of module 508:
+ The following routine is used to implement `\texinfo f n'.
+ The boolean parameter writing is set true if the calling program
+ intends to change the parameter value.
+ <Declare procedures that scan font-related stuff>=
+and "scan_font_number" is changed to "scan_font_ident".
+w. In module 509, "print_int(font_code" becomes "sprint_cs(font_ident".
+ Also "font code is defined" becomes "\font is loaded" in the help.
+x. In module 940, the first line of help is changed to
+ "You have to specify a font identifier,"
+y. The set_font case in module 1138 reduces to
+ set_font: define(cur_font_loc,data,cur_chr);
+z. In module 1153, delete all the complicated stuff starting with "scan_int"
+ and substitute simply this:
+ scan_font_ident; define(p,data,cur_val);
+ end;
+aa. Change new_font to new_font(a) in module 1169, and add parameter
+ (a:small_number)
+ in module 1170. Also add the label common_ending, and declare
+ variable u to have type pointer. The code beginning with "scan_int"
+ is changed to the following:
+ get_token;
+ if cs_ptr=0 then
+ <Complain about the missing control sequence and return>;
+ u:=cs_ptr; scan_optional_equals; scan_file_name;
+ <Scan the ``at'' size specification>;
+ <If this font has already been loaded, set f to the internal
+ font number and goto common_ending>;
+ f:=read_font_info(u,cur_name,cur_area,s);
+ common_ending: define(u,set_font,f); font_ident[f]:=u;
+ exit:end;
+bb. New module 1172:
+ When the user gives a new identifier to a font that was previously
+ loaded, the new value becomes the font_ident of record.
+ Font names `xyz' and `XYZ' are considered to be different.
+ <If this font has already been loaded...>=
+ for f:=font_base+1 to font_ptr do
+ if [the test previously in module 1174] then goto common_ending
+cc. New module 1173:
+ <Complain about the missing control sequence and return>=
+ begin print_nl("! A font identifier must be a control sequence");
+ help2("You should say, e.g., `\font\f=fontfilename'.")
+ ("(I'm going to ignore the \font command you just gave.)");
+ back_error; return;
+ end
+dd. New module 1174:
+ <Cases of print_cmd_chr...>=
+ set_font:begin print("select font "); print(font_name[chr_code]);
+ if font_size[chr_code]<>font_dsize[chr_code] then
+ begin print(" at "); print_scaled(font_size[chr_code]);
+ print("pt");
+ end;
+ end;
+ee. Delete the comment at the beginning of module 1227, and delete the
+ loop for k:=0 to bad_font_code-1, and delete dump_int(undefined_font).
+ff. Delete the repeat loop in module 1228.
+gg. Change font_code to font_ident in module 1229, and change
+ print_int(font_code to sprint_int(font_ident.
+hh. In module 1230,
+ begin undump(single_base)(undefined_control_sequence)(font_ident[k]);
+ undump_qqqq(font_check[k]); [and continue as before]
+
+The changes above have been incorporated into Version 0.6.
+ The ill-fated Version 0.7
+
+27. (Here's a change that I retracted shortly after making it, since I
+discovered that the source was flaky after all; and I also found a reliable
+source [NBS Circular 570] confirming my original information. I include
+the note here only for historical purposes...)
+
+"After years of searching, I've finally found a definitive definition of
+the printer's point; and (unfortunately) my previous conjecture was wrong.
+The truth is that 83pc=35cm, exactly; so I am changing TeX to conform.
+This means some changes in the comments of modules 101 and 517, and the
+following changes to the program:
+
+"27a. In modules 547 and 571, the appropriate DVI numbers are now:
+ dvi_four(109375); dvi_four(2039808); {conversion ratio for sp}
+"27b. The guts of module 418 become:
+ if scan_keyword("in") then set_conversion(63246)(875)
+ else if scan_keyword("pc") then set_conversion(12)(1)
+ else if scan_keyword("cm") then set_conversion(996)(35)
+ else if scan_keyword("mm") then set_conversion(498)(175)
+ else if scan_keyword("bp") then set_conversion(10541)(10500)
+ else if scan_keyword("dd") then set_conversion(996)(931)
+ else if scan_keyword("cc") then set_conversion(11952)(931)
+ else..."
+
+*** Version 0.7 of TeX incorporated the changes above (82/10/30);
+this version was withdrawn on 82/11/2.
+ Changes subsequent to Version 0.6
+
+28. The experience with #27 did lead me to one improvement, thanks
+to Chuck Bigelow, with respect to Didot points. (11/4/82)
+Add the following comment to module 418:
+ According to the definitions here, $\rm2660\,dd\approx1000.33297\,mm$;
+ this agrees well with the value $\rm1000.333/,mm$ cited by Bosshard
+ in {\sl Technische Grundlagen zur Satzherstellung\/} (Bern, 1980).
+And change two lines of the code there as follows:
+ else if scan_keyword("dd") then set_conversion(1238)(1157)
+ else if scan_keyword("cc") then set_conversion(14856)(1157)
+
+29. The new font material is made more robust by ensuring that \the\font
+always returns a pointer to a control sequence whose command code is
+set_font. (Change 11/4/82)
+
+29a. The code changed in 26aa is changed again, to the following:
+ <If the next token isn't a control sequence, issue a complaint and
+ return; otherwise set u:=cs_ptr, and set hash_used to the
+ location of a ``frozen'' copy of the new font identifier>;
+ define(u,set_font,undefined_font);
+ scan_optional_equals; scan_file_name;
+ <Scan the ``at'' size specification>;
+ <If this font has already been loaded, set f to the internal
+ font number and goto common_ending>;
+ f:=read_font_info(u,cur_name,cur_area,s);
+ common_ending: equiv(u):=f; geq_define(hash_used,set_font,f);
+ font_ident[f]:=hash_used;
+ exit:end;
+29b. Instead of 26cc, here's the new module 1173:
+ We reserve a special control sequence for the font identifier;
+ this one cannot be redefined by the user, so it is safe to
+ return it as a value of \the\font.
+ <If the next token isn't a control sequence...>=
+ get_token;
+ if cs_ptr<hash_base then
+ begin print_nl(
+ "! A font identifier must be a multiletter control sequence");
+ help2("You should say, e.g., `\font\ffn=fontfilename'.")
+ ("(I'm going to ignore the \font command you just gave.)");
+ back_error; return;
+ end;
+ repeat if hash_is_full then overflow("hash size",hash_size);
+ decr(hash_used);
+ until text(hash_used)=0; {search for an empty location in hash}
+ u:=cs_ptr; text(hash_used):=text(u); {copy the name}
+ stat incr(cs_count); tats
+
+30. Module 993, replace lines 5 to 7 (11/5/82):
+else begin if k=vmode then new_save_level(vbox_group)
+ else begin new_save_level(vtop_group); k:=vmode;
+ end;
+ if looseness<>0 then eq_word_define(int_base+looseness_code,0);
+ if hanging_indent<>0 then
+ eq_word_define(dimen_base+hanging_indent_code,0);
+ if par_shape_ptr<>null then eq_define(par_shape_loc,shape_ref,null);
+ end;
+
+31. Module 403, replace line 5 (11/6/82):
+if cur_tok<cs_token_flag then
+ begin cur_val:=cur_chr;
+ if cur_cmd<=right_brace then
+ if cur_cmd=right_brace then incr(align_state)
+ else decr(align_state);
+ end
+
+32. Improvements to error recovery for bad alignments (11/6/82):
+In module 1039, replace "begin align_error; goto reswitch; end" by "align_error"
+In module 1040, delete "cur_cmd:=left_brace;" and "cur_cmd:=right_brace;"
+ and change "error" to "back_error"
+In module 1041, delete "cur_cmd:=relax;"
+
+33. More power to \let (11/8/82):
+33a. Module 1141 becomes:
+ <Assignments>+=
+ let: begin get_token;
+ if cs_ptr<>0 then <Carry out the \let operation>
+ else begin print_nl
+ ("! You can use \let only with control sequences");
+ help2("I'm not \let-ting anything change here,")
+ ("since I can only do things like `\let\a=b'.");
+ back_error;
+ end;
+ end;
+33b. Module 1142 becomes:
+ <Carry out the \let...>=
+ begin p:=cs_ptr;
+ repeat get_token;
+ until cur_cmd<>spacer;
+ if cur_tok=other_token+"=" then
+ begin get_token;
+ if cur_cmd=spacer then get_token;
+ end;
+ if cur_cmd>=call then add_token_ref(cur_chr);
+ define(p,cur_cmd,cur_chr);
+ end
+
+34. This change helps you see an undefined control sequence
+in certain unusual cases (discovered by JDH, 11/8/82):
+Add the clause "(base_ptr=input_ptr) or" to module 294, line 2.
+
+35. Here's an improvement in the formula for demerits; previously
+more weight was given to minimizing bad spacing on lines with penalties,
+so that (slightly loose hyphenated line)(OK line) was considered worse
+than (OK hyphenated line)(quite loose line). (fixed 11/8/82)
+Change lines 2--7 of module 772 to the following:
+ d:=line_penalty+b; d:=d*d;
+ if pi<>0 then
+ if pi>0 then d:=d+pi*pi
+ else if pi>eject_penalty then d:=d-pi*pi;
+
+36. Minor change to save buffer space in non-INITEX (11/10/82):
+Enclose the declaration of pool_file in module 50 by init...tini.
+
+37. Minor improvement in format for the context of error messages (11/13/82):
+37a. Module 289, type "inserted" split into "backed_up=3", "inserted=4"
+and the other type numbers increase: "macro=5", etc.
+37b. In module 296, backed_up: if loc=null then print_nl("<recently read>")
+ else print_nl("<to be read again> ");
+ inserted: print_nl("<inserted text> ");
+37c. Minor changes to comments in modules 289 and 293.
+37d. Change "inserted" to "backed_up" in module 294.
+37e. Add definition "back_list(#)==begin_token_list(#,backed_up)" in module 305.
+37f. In module 306, first test should be ">=backed_up", second "<=inserted".
+37g. Change ins_list to back_list in modules 307, 318, 375, 1195.
+37h. Add definition to module 308:
+ ins_error==begin back_error; token_type:=inserted; end
+37i. Change back_error to ins_error in modules 362, 1040, 1046.
+37j. Change "<to be read again>" to "<inserted text>" in module 973 help.
+
+38. Module 407, the error message is changed (11/11/82) to:
+"! Missing number, treated as zero".
+
+39. Fix anomaly when hbadness or vbadness is small (11/11/82):
+Module 593, line 2, "if (-x-total_shrink[normal]>hfuzz) or (hbadness<100)"
+Module 603, line 2, "if (-x-total_shrink[normal]>vfuzz) or (vbadness<100)"
+
+40. Added the \tokens primitive (11/13/82):
+In module 223, defined tokens_loc and tokens (analogous to every_par).
+In module 225, defined the primitive.
+In module 1146, changed the comment to include tokens_loc as a possibility.
+
+41. Change get_nc_token to get_token in module 374 (11/13/82).
+(In particular \def\foo{...}\foo won't say "undefined c.s." now!)
+(This change later retracted during debugging; it was found that
+"endv" aborts the job, so this cure was worse than the disease. Then
+it was re-established as part of the major change to conditionals,
+because endv needed to be more robust anyway.)
+
+42. In module 699, we make \span expand in a preamble (11/13/82).
+Change lines -7 through -3 to:
+ begin get_nc_token; goto reswitch;
+ end;
+
+43. Modules 321 and 322 have been altered for better efficiency (11/12/82)
+and better exposition; the three conditions of module 322 are now
+in separate if tests.
+
+44. Frozen control sequences are now unredefinable. (11/16/82)
+A new procedure get_r_token has been introduced to give uniform error
+messages for \def, \let, \read, \font, \mathchardef, and to make them
+incapable of changing the frozen equivalents.
+
+Incidentally, get_nc_token is changed to get_x_token; and ch_code
+becomes cat_code.
+ A major change (Version 0.8) made on November 14--16:
+Conditional statements are taken from semantics to syntax.
+
+This change, which counts as number 45 on the list, made it necessary
+to renumber the modules. And it was such a drastic change, the
+differences can only be sketched here, using the old module numbers
+for reference. A variety of other things were cleaned up because this
+change made it more natural for them to be handled differently.
+
+45a. Module 158, inserted a permanently empty token list called null_list.
+45b. Module 204, deleted if_test, case_branch, else_code, convert;
+ inserted end_cs_name.
+45c. Module 206, inserted if_test, fi_or_else, cs_name, convert, and
+ end_template (the latter comes after long_outer_call).
+45d. Module 217, there are now nine frozen control sequences; also null_cs.
+45e. Modules 247 and 248, must be able to print a null control sequence.
+45f. Module 268 (leave_transparent_group) disappears; comments in the
+ previous modules also are appropriately simplified.
+45g. Module 273, delete endv_token.
+45h. Modules 277 and 278, delete references to endv (it no longer appears).
+45i. After module 281, a procedure show_cur_cmd_chr takes the
+ code for tracing commands from module 937.
+45j. Module 317 now forbids \outer control sequences when skipping,
+ and inserts \fi in front of them, for error recovery.
+45k. Module 334 now uses null_cs if carriage-return is an escape.
+45l. Module 343 no longer has endv test.
+45m. Module 344, major extensions to expand_calls make it several modules
+ longer. It saves global variables like cur_val. It changes
+ end_template to endv. It processes cs_name and convert.
+ It processes if_test by calling the "conditional" procedure.
+ It processes fi_or_else by checking their legality, and (if legal)
+ updating the if stack.
+45n. Module 373 (pass_block) disappears.
+45o. After module 400, radix and cur_val and cur_val_level are initialized.
+45p. Module 428 changes so that conv_toks is a procedure rather than a
+ function; this procedure is invoked by expand_calls.
+45q. Modules 436 and 1032, delete reference to conv_toks.
+45r. After module 443, the entire part 48 moves to this part of the program,
+ and the parts are renumbered accordingly. \case is changed to
+ \ifcase, and it resides under the if_test command.
+ New routines are inserted to maintain a linked stack that records
+ the current state of conditionals. There's a procedure
+ pass_text that skips text while looking for \fi or \else or \or
+ on level zero with respect to \if...\fi nesting. The previous
+ routines for skip control via handle_right_brace are eliminated,
+ and the new ones are somewhat simpler. The new \ifcat is mostly
+ combined with the old \if; they no longer ignore spaces.
+ The scanner_status is set to normal while processing \ifx.
+ \ifx will consider \a to equal 0 after \let\a=0.
+45s. Modules 701, 707: endv_token is replaced by a token for a frozen
+ control sequence whose command code end_template makes it behave
+ like an outer_call. After expand_calls, it is converted to another
+ frozen control sequence, whose command code is endv. This two-step
+ facilitates error recovery, instead of giving a fatal error stop.
+45t. Module 874, remove "pass_block(1); goto done".
+45u. After module 1047, routine for end_cs_name prints an error message.
+45v. Module 1049, get_nc_token becomes get_token. (else $\ifmmode fails)
+45w. Module 1202 gets another case (end_template).
+45x. Module 1243, new warning is printed if the if stack isn't empty.
+ Changes after version 0.8
+
+46. Declare c : ascii_code in module 825 (noted by DRF, 11/21/82)
+
+47. Module 776 lines 4-6 (suggested by DRF, 11/21/82)
+threshold:=pretolerance;
+if threshold>=0 then
+ begin stat if tracing_stats>2 then
+ begin begin_diagnostic; print_nl("@@firstpass");
+ end; tats
+ second_pass:=false;
+ end
+else begin threshold:=tolerance; second_pass:=true;
+ end;
+
+48. Protection for DVI files (added 11/16/82)
+Replace lines 2 and 3 of module 570 by:
+ <Update the values of max_h and max_v; but if the page is too large,
+ goto done>;
+Move the statement "dead_cycles:=0" from module 570 to module 568.
+Declare "label done;" in module 568.
+And add the following new module after 570:
+
+@ Sometimes the user will generate a huge page because other error messages
+are being ignored. Such pages are not output to the \.{dvi} file, since they
+may confuse the printing software.
+
+@<Update the values of |max_h| and |max_v|; but if the page is too large...@>=
+if (height(p)>max_dimen)or(depth(p)>max_dimen)or(width(p)>max_dimen) then
+ begin print_nl("! Huge page cannot be shipped out");
+ help2("The page just created is more than 18 feet tall or")@/
+ ("more than 18 feet wide, so I suspect something went wrong.");
+ error;
+ if tracing_output=0 then
+ begin begin_diagnostic;
+ print_nl("The following box has been deleted:");
+ show_box(p);
+ end_diagnostic(true);
+ end;
+ goto done;
+ end;
+if height(p)+depth(p)>max_v then max_v:=height(p)+depth(p);
+if width(p)>max_h then max_h:=width(p)
+
+49. New features \everymath and \everydisplay (12/2/82).
+Make changes analogous to those for "\tokens" (see change 40).
+Put the following just before the end of module 1050:
+ if every_math<>null then begin_token_list(every_math,every_math_text);
+And put the following just before the end of module 1056:
+ if every_display<>null then
+ begin_token_list(every_display,every_display_text);
+
+50. New feature \futurelet (12/2/82):
+Module 1141 changes again. (Also, "let" and "futurelet" share cmd code "let".)
+let: begin n:=cur_chr;
+ get_r_token; p:=cs_ptr;
+ if n=normal then
+ begin repeat get_token;
+ until cur_cmd<>spacer;
+ if cur_tok=other_token+"=" then
+ begin get_token;
+ if cur_cmd=spacer then get_token;
+ end;
+ end
+ else begin get_token; q:=cur_tok; get_token; back_input;
+ cur_tok:=q; back_input; {look ahead, then back up}
+ end; {|back_input| doesn't affect |cur_cmd|, |cur_chr|}
+and continue with "if cur_cmd>=call", as before.
+
+*** The changes above have been incorporated into version 0.9 of TeX.
+ Changes after version 0.9
+
+51. new \endinput primitive (suggested by FY, 12/7/82):
+\input and \endinput both use the same command code. The cases in module
+955 are deleted and replaced by those in module 965 (which disappears),
+because \input is now allowed in any mode. The code for any_mode(input)
+is "if cur_chr=0 then start_input else force_eof:=true", and it moves from
+module 952 to just before module 1197. The global variable force_eof
+is initially false, and module 340 becomes (after first:=start;)
+ if not force_eof then
+ begin if input_ln.... else force_eof:=true;
+ end;
+ if force_eof then begin print_char(")"); force_eof:=false;...
+
+52. Module 1005, line 4 (12/8/82)
+change "if align_state<0" to "if (mode<0)or(align_state<0)"
+(This avoids embarrassing case where TeX says "type a command or say \end"
+but when you type \end it says "You can't use \end in restricted horiz mode".)
+
+53. Patch to the new code for \csname (12/21/82)
+After eq_type(cs_ptr):=relax, also say equiv(cs_ptr):=256.
+(This corrects a bug that would appear only if \csname occurs right
+after a file name.)
+
+54. Change 47 introduced a bug when tracingonline=0 (12/20/82)
+when omitting firstpass, also do "if tracing_stats>2 then begin_diagnostic;"
+
+55. \hskip -1pt plus 2pt was parsed as \hskip -(1pt plus 2pt)! (12/20/82)
+In module 421, before line -4, insert the following:
+ if negative then
+ begin cur_val:=-cur_val; negative:=false;
+ end;
+But then realize that "negative" is always false on line -2; simplify.
+
+56. Cosmetic change to paragraph statistics (12/23/82)
+tight_fit..very_loose_fit codes have been renumbered very_loose_fit..tight_fit.
+
+57. Module 729 changes to make TeX language more consistent (12/23/82):
+else if type(tail)<>glue_node then tail_append(new_penalty(inf_penalty))
+else begin type(tail):=penalty_node; delete_glue_ref(glue_ptr(tail));
+ flush_node_list(leader_ptr(tail)); penalty(tail):=inf_penalty;
+
+58. Commas are allowed as alternates to radix points. (12/23/82)
+define continental_point_token=other_token+"," {decimal point, Eurostyle}
+in module 400, and insert the following twice in 409:
+ if cur_tok=continental_point_token then cur_tok:=point_token;
+
+59. \hangindent becomes a normal parameter. (12/23/82)
+This simplifies the code in obvious ways; for example, module 1148 disappears.
+The command code hang_indent goes away too; what was previously called
+hanging_indent is then renamed hang_indent.
+
+60. \prevgraf becomes accessible. (12/23/82)
+This involves renaming the "after" field "pg_field" in the nest array;
+making a new command code set_prev_graf;
+including the following loop into scan_the:
+ nest[nest_ptr]:=cur_list; p:=nest_ptr;
+ while abs(nest[p].mode_field)<>vmode do decr(p);
+ scanned_result(nest[p].pg_field)(int_val);
+and including the following active procedure for any_mode(set_prev_graf):
+ procedure change_prev_graf;
+ var p:0..nest_size; {index into |nest|}
+ begin nest[nest_ptr]:=cur_list; p:=nest_ptr;
+ while abs(nest[p].mode_field)<>vmode do decr(p);
+ scan_optional_equals; scan_int;
+ if cur_val<0 then
+ begin print_nl("! Bad \prevgraf");
+ help1("I allow only nonnegative values here.");
+ int_error(cur_val);
+ end
+ else begin nest[p].pg_field:=cur_val; cur_list:=nest[nest_ptr];
+ end;
+ end;
+
+61. \clubpenalty is split off from \widowpenalty. (12/23/82)
+
+62. Bad bug in module 1005 (12/24/82)
+(must not go to reswitch if \par is a macro!)
+Instead of setting cur_cmd and cur_chr and goto reswitch, just back_input
+and set token_type:=inserted.
+
+63. \openin not to prompt if file not present (12/25/82)
+Change lines -4 and -3 of module 1183 to:
+ if a_open_in(read_file[n]) then read_open[n]:=just_open
+ else read_open[n]:=closed;
+
+64. New \jobname primitive (12/25/82)
+It is added to the "convert" command in the obvious way.
+In conv_toks, the relevant code is
+ if job_name=0 then open_log_file
+before "selector" is changed and
+ print(job_name)
+after.
+
+65. Better error recovery for math-only things (12/25/82):
+In module 952, don't goto reswitch after insert_dollar_sign.
+In module 954, first back_input, then set cur_tok, and
+don't bother to set cur_chr or cur_cmd; ins_error instead of back_error.
+
+66. Module 1163, line 3, insert "scan_optional_equals" (12/25/82).
+Also make \the\parshape allowed.
+
+67. The location where an \if begins is stacked (12/26/82)
+so that a better error message can be given for \end while \if is incomplete.
+This means two-word nodes instead of one-word nodes in the if stack.
+
+68. Change 30 is extended to \insert, \vadjust, \valign, \output (12/26/82)
+The one-time-only paragraph parameters are now cleared by a
+subroutine called normal_paragraph; hang_after is also set to 1.
+The essential change being made now is to call normal_paragraph in modules
+704, 932, 1009, and 1076.
+
+69. \pagetotal and \pagegoal are added (12/27/82)
+The changes are analogous to, but simpler than, those for \prevgraf.
+
+70. Tracing of page-optimization calculations (12/27/82)
+A bunch of print commands are added to modules 897, 914, and 918,
+activated if tracing_pages>0. Also, \tracingparagraphs is separated
+from \tracingstats.
+
+**** The changes above have been incorporated into version 0.91 of TeX
+
+71. The build_page procedure is broken in two parts (Dec 31, 1982)
+by making module 919 into a procedure called fire_up.
+
+72. \ifeven1\else is made legal by introducing if_code (Dec 31, 1982)
+This improves part of the code in change 45; if_limit has a specific
+value that recovers automatically from a former syntax error.
+
+73. Improvement to alignments when columns don't occur (Dec 31, 1982)
+Delete module 711; and where it was used in module 708, say this:
+ begin fin_col:=true; return;
+ end;
+Also, in module 717, replace the statement "width(q):=0" by
+"<Nullify width(q) and the tabskip glue following the current column>"
+where that new module has the following code:
+ begin width(q):=0; r:=link(q); s:=glue_ptr(r);
+ if s<>zero_glue then
+ begin add_glue_rel(zero_glue); delete_glue_ref(s);
+ glue_ptr(r):=zero_glue;
+ end;
+ end
+
+74. Better error message in overfull alignment (Dec 31, 1982)
+In module 717, don't set both height and width; set the height zero.
+Then in module 719, switch width to height if necessary. (People didn't
+understand the previous error messages, and I couldn't blame them.)
+
+*** The changes above have been incorporated into version 0.92 of TeX82
+*** (which was the last version of 1982, completed 11:59pm on December 31)
+ The first changes after 1982
+
+75. Modules 961 and 962 should be one module. (Jan 3, 1983)
+Also, the absolute constant 100 is replaced, and the test becomes
+ if ((page_head=page_tail)and(head=tail)and(dead_cycles=0))or
+ (dead_cycles>max_dead_cycles) then
+
+76. Surprise bug: module 1010. (Jan 3, 1983)
+The case "if head<>tail" needs an else clause: else pop_nest.
+Also remove the "<Scan an optional space>" in that module.
+
+77. Improvement to change 22 (Jan 4, 1983)
+In module 996, use box_max_depth from inside the \vbox:
+ @!d:scaled; {maximum depth}
+ begin d:=box_max_depth; unsave;... vpackage(...,d);
+
+78. \groupbegin and \groupend changed to \begingroup and \endgroup (Jan 4, 83)
+
+79. \deadcycles made accessible (Jan 4, 83)
+
+80. New calculations for split insertions (Jan 4, 83)
+In module 918, we now work with natural width, and add in the page depth too:
+The line "else w:=x_over_n..." is changed to
+ else begin w:=page_goal-page_total-page_depth;
+ if count(n)<>1000 then w:=x_over_n(w,count(n))*1000;
+ end;
+(Note that cur_page_height and cur_page_depth and page_size have been
+renamed page_total, page_depth, and page_goal, in accordance with new syntax.)
+
+*** The changes above have been incorporated into Version 0.93
+
+81. Old bug finally unearthed by PHY (Jan 6, 1983)
+insert "incompleat_node:=null;" after "push_nest;" in module 1097.
+
+82. Extension of change 69: \pageshrink, etc. added (Jan 6, 1983)
+
+83. \floatingpenalty and \insertpenalties added (Jan 6, 1983)
+Also, the insertion nodes now have a new format, so that the values of
+\floatingpenalty, \splittopskip, and \splitmaxdepth can be stored with
+each insertion; this requires the obvious changes in several places:
+a) Module 136, ins_node has fields float,depth,height,ins_ptr,split_top_ptr
+b) Module 184, these fields are displayed
+c) Module 198, ins_node case, also delete_glue_ref(split_top_ptr(p))
+d) Module 202, ins_node case, also add_glue_ref(split_top_ptr(p))
+e) Modules 226-228, new integer parameter \floatingpenalty
+f) Module 883, add parameter d to vert_break subroutine
+g) Module 885, use d instead of split_max_depth
+h) Module 890, argument split_max_depth to call of vert_break
+i) Module 894, change width to height (better name)
+j) Module 900, initialize insert_penalties here, not in 901
+k) Module 914, cost to be awful_bad if insert_penalties>=10000
+l) Module 916, add float(p) to insert_penalties if type(r)<>inserting
+m) Module 916, subtract page_depth from delta
+n) Module 918, subtract page_shrink from delta
+o) Module 918, argument depth(p) to call of vert_break
+p) Module 921, insert_penalties:=0, save split_top_skip before calling 925
+q) Module 921, restore split_top_skip before calling 924
+r) Module 928, set split_top_skip:=split_top_ptr(p) before prune_page_top
+s) Module 929, after q:=p, incr(insert_penalties)
+t) Module 929, before free_node, delete_glue_ref(split_top_ptr(p))
+u) Module 933, clear insert_penalties before calling 934
+v) Module 978, more local variables needed
+w) Module 1010, build the newfangled ins_node
+
+84. Scanner goes to new_line when <return> is category 13 (Jan 7, 1983)
+Insert state:=new_line in module 323 just before the reference to module 339;
+and delete "state:=new_line;" from modules 328 and 330 (and their names).
+
+85. Distinguish between user \kern and font \kern (Jan 9, 1983)
+The nontrivial parts of this are to change "type(s)<>kern_node" to
+"(type(s)<>kern_node)or(subtype(s)<>normal)" in modules 809 and 810;
+and to say "kern_node: if subtype(s)=explicit then goto done4" in module 812.
+The \kern primitive now has "explicit" instead of "normal" in 967.
+
+86. "ignorespace" becomes "ignorespaces" (Jan 9, 1983)
+
+87. Don't omit a blank space after \def, \message, \mark, etc. (Jan 9, 1983)
+<Scan an optional space> is removed from modules 431, 848, 874.
+"info(r):=space_token;" and "link(r):=get_avail; r:=link(r);" removed from 1278.
+
+*** The above changes appear in Version 0.94.
+ Version 0.95
+
+88. New active characters in math mode (Jan 12, 1983)
+In module 1062, add a label "restart" and change lines -3 and -2 as follows:
+fam(p):=(c div 256) mod 16;
+if c>=var_code then
+ if fam(p)<8 then fam(p):=cur_fam
+ else begin <Convert c to an active character whose equivalent is
+ ready to be scanned next>; goto restart;
+ end;
+In module 1064, the body of the procedure becomes
+begin if c>='4000 then <Convert c ...> else <the former body>; end
+And there's a new module:
+<Convert c...>=
+begin cs_ptr:=(c mod 128)+active_base;
+cur_cmd:=eq_type(cs_ptr); cur_chr:=equiv(cs_ptr); x_token; back_input;
+end
+
+89. Surprise bug: $1-$ treated the - as binary (Jan 15, 1983)
+New module <Convert a final bin_noad to an ord_noad>=
+ if r_type=bin_noad then type(r):=ord_noad
+is called in module 649 before the call of 678, and in module 651
+in the place where that code already appears.
+
+90. Another oversight (Jan 15, 1983)
+Add "space_factor:=1000;" after "push_nest" in modules 1027, 1029
+
+91. And a more embarrassing one (Jan 16, 1983)
+I forgot "spotless:=false;" at the beginning of the procedure in module 80.
+But while fixing this, I decided to make it more general since IBMers want
+a return code at the end of the job. So there's a history variable that has
+four values: spotless, warning_issued, error_message_issued, fatal_error_stop.
+a) module 75: declare history, define spotless etc.
+b) module 76: initialize history:=spotless
+c) module 80: if history<error_mess... then history:=error_mess...
+d) 80 and 90: history:=fatal_error_stop before jump_out
+e) 92: if history<error_message_issued then
+f) 232: if history=spotless then history:=warning_issued
+g) 1243: if history=warning_issued then print_nl("(see the log...)")
+
+92. "This can't happen" could happen, so there's new error recovery (Jan 16, 83)
+In module 933, replace the call on confusion by a call of the following module:
+ @ @<Recover from an unbalanced output routine@>=
+ begin print_nl("! Unbalanced \output routine");
+ help2("Your sneaky output routine has fewer real {'s than }'s.")@/
+ ("I can't handle that very well; good luck."); error;
+ repeat get_token;
+ until loc=null;
+ end
+In module 1278, replace the call on confusion by a call of:
+ @ @<Recover from an unbalanced write command@>=
+ begin print_nl("! Unbalanced \write command");
+ help2("On this page there's a \write with fewer real {'s than }'s.")@/
+ ("I can't handle that very well; good luck."); error;
+ repeat get_token;
+ until cur_tok=end_write_token;
+ end
+
+93. String overflow clobbered the log file (Jan 18, 1983)
+Also, "confusion" before log file open would cause problems. Also start_input
+calling open_log_file calling prompt_file_name calling fatal_error!
+To fix these anomalies, open_log_file no longer calls prompt_file_name,
+if interaction<scrollmode; instead, it terminates after printing what went
+wrong. Also, the fatal_error and overflow and confusion procedures call
+the following new subroutine:
+procedure normalize_selector;
+begin if job_name>0 then selector:=term_and_log else selector:=term_only;
+if interaction=batch_mode then decr(selector);
+if job_name=0 then open_log_file;
+end;
+
+94. \ifeof\fi loops infinitely (Jan 18, discovered by Lamport)
+Change 72 converted such a \fi to <space>\fi. Now it is converted to \relax\fi.
+
+95. \limitswitch changed to \displaylimits et al. (Jan 18, 1983)
+[Incidentally, this fixes a bug in the former positioning of \int\limitswitch]
+a) module 608: subtype of Op can be normal, limits, or no_limits.
+b) 620: display the subtype if not normal
+c) 667: new logic decides limits before looking at the operand (and the operand
+ is now called the nucleus); the italic correction is removed only if
+ it should not be put back
+d) 1069: subtype(tail):=cur_chr
+
+96. Minor changes to math in unusual cases (Jan 19, 1983)
+a:delete "if height(y)<=0 then height(y):=default_rule_thickness" in module 658
+b:move "if thickness(q)=default..." from module 664 to module 661
+c:delete module 1081, that error message isn't worth the bother
+d:in module 1062, char_num case, c:=math_code(cur_val) (if cur_val<128)
+e:in module 1064, a similar change
+
+97. Bad spacing from change 6 is corrected (Jan 19, 1983)
+underline, overline, radical, vcenter, and accent noads now revert to type
+Ord instead of type Inner.
+{...} produces type Ord also.
+There's a new primitive \mathinner.
+The new_noad function now produces an ord_noad (change its calls accordingly).
+And the default is changed in module 679 to t:=ord_noad; the fraction_noad
+case sets t:=inner_noad, and the (inner_noad,ord_noad) cases swap places.
+
+98. New \mathchoice primitive (Jan 19, 1983)
+a) module 204: new command
+b) 254: math_choice_group
+c) 614: style node three words long, so a choice node can be converted to it
+d) 614a: choice node has four subfields: display_mlist, text_mlits, etc.
+e) 1081a: routines to build a choice_node like 1027-1029 build discretionaries
+
+99. \input moves to syntax from semantics (Jan 19, 1983)
+a) 204, 206: renumber commands
+b) When input is to be expanded, if name_in_progress then insert_relax
+c) 459,464: name_in_pr:=true; begin_name;...end_name; name_in_pr:=false;
+d) 406,461: declare name_in_progress, a global boolean initially false
+
+100. \chardef joins \mathchardef (Jan 19, 1983)
+a) 204: math_only becomes math_given; add new command char_given
+b) 205: new command char_def
+c) 250,251: new primitive char_def
+d) 380: char_given,math_given yield integer after \the
+e) 401: char_given,math_given yield integer in context of integer
+f) 936,943: char_given treated like other_char
+g) 1062,1064: same, if cur_chr<128, else assume math_code(x)=x
+h) 1143,1144: char_def is analogous to math_char_def
+
+101. \unbox becomes \unhbox,\unvbox; also add \unhcopy (Jan 19, 1983)
+Module 1020 changes in the obvious way.
+
+102. \spacefactor, \pagetotal, etc. move to prefixed_command (Jan 20, 1983)
+
+103. \hrule in horizontal mode, \vrule in vertical mode: switch modes (Jan 20)
+
+104. \globaldefs parameter, affects prefixed_command (Jan 20, 1983)
+
+105. After looking at frequency counts, some optimizations made (Jan 21, 1983)
+a) "fast_get_avail" and "fast_store_new_token" introduced to speed up the loops
+in modules 360 and 431.
+b) some procedure call overhead eliminated in begin_token_list, end_token_list,
+back_input, and flush_node_list.
+c) a few if tests changed from "if a and b then" to "if a then if b then".
+
+106. Changes for space efficiency in math constructions (Jan 22, 1983)
+a) In module 1102, mlist_penalties:=(mode>0)
+b) The following code is inserted before "free_node" in module 639 (rebox):
+ if (is_char_node(p))and(link(p)=null) then
+ begin f:=font(p); v:=char_width(f)(char_info(f)(character(p)));
+ if v<>width(b) then link(p):=new_kern(width(b)-v);
+ end;
+c) A new module is called just before clean_box exits:
+<Simplify a trivial box>=
+q:=list_ptr(x);
+if is_char_node(q) then
+ begin r:=link(q);
+ if r<>null then if link(r)=null then if type(r)=kern_node then
+ begin free_node(r,small_node_size); link(q):=null;
+ end;
+ end
+
+107. Oversight in rebox routine (module 639) corrected (Jan 22, 1983)
+if type(b)=vlist_node then b:=hpack(b,natural);
+
+108. Module 217 clobbers eqtb[bad_font_ident] set in change 26q (Jan 22, 1983)
+Decided to fix this by making \nullfont a primitive.
+This means the procedure missing_font can be deleted, and the test for
+undefined font can be removed from the inner loop.
+(This reflects a rather dramatic change from TeX80, where
+a missing font was a fatal "Whoa" error!)
+Note: I thought I could delete module 646, but realized that it still provides
+a useful error message. The dump/undump routines (cf. change 26ee) now
+dump the null_font information too, as its parameters can be changed.
+
+109. End of program now lists all incomplete \ifs (Jan 24, 1983)
+
+110. Alignment preamble setup to allow \halign\lb (Jan 29, 1983)
+The statement "align_state:=-1000000;" is inserted near the beginning
+of module 695 (and the comment about align_state=-999999 is deleted).
+The constant -999999 is changed to -1000000 in modules 700 and 701.
+
+111. Forgot to test is_char_node(r) (Jan 30, 1983)
+in the <Simplify a trivial box> code of change 106c.
+By coincidence, this was caught since somebody used font number 11
+in the second character of a list of length 2!
+
+112. Improved format for stats at end of run (suggested by DRF, Jan 30, 1983)
+Module 1242 changes; nothing subtle.
+
+**** The changes above have been incorporated into version 0.95
+ Version 0.96
+
+113. space after one-symbol control sequences NOT to be ignored unless
+the catcode of that symbol is letter or spacer. (Jan 30, 1983)
+The name of module 334 changes slightly; the state is set based
+on cat_code(cur_chr), shortly after label start_cs.
+A new variable cat is introduced and set to cat_code(cur_chr) in modules
+334 and 336.
+
+114. trailing spaces removed on all lines of input (Jan 30, 1983)
+last_nonblank is added to input_ln routine (module 31)
+
+115. mmode+accent gives error but assumes math_accent (Feb 3, 1983)
+This goes into math_ac procedure (module 1075); module 1035 is eliminated.
+
+116. \iftrue and \iffalse (Feb 5, 1983)
+Simple addition of two new conditions.
+
+117. Bad calculation of size for \left and \right (Feb 6, 1983)
+In module 680, the first assignment to delta should be
+ delta:=(delta1 div 500)*delimiter_factor.
+
+118. \delimitershortfall (new name) replaces \delimiterlimit. (Feb 12)
+
+119. \abovewithdelims.. to be equivalent to \above (Feb 12)
+Module 1089 revised so that the delimiters are scanned before the dimension.
+
+120. Remove the kludgy math codes introduced in change 88 (Feb 12)
+\fam becomes a normal integer parameter
+and \mathcode stored with min_halfword added
+and \mathcode allowed to be 32768
+and current family is substituted only when it's in range.
+Also the initialization of mathcode for letters now specifies family 1.
+(This implies a dozen or so obvious revisions.)
+
+121. Bug in module 1152: max spacefactor is 32767 (Feb 12)
+also module 1013 gets a restricted range
+
+122. Octal output to be replaced by hexadecimal. (Feb 14)
+
+123. Forgot to include char_given in module 1037, re change 100 (Feb 14)
+
+124. vmode+valign,hmode+halign made legal transitions (Feb 17)
+
+125. \tracingrestores (Feb 18)
+This involves a lot of new, rather tedious code that's interspersed with the
+eqtb definitions (the body of a procedure called show_eqtb).
+
+126. New error message for hmode+hrule in -hmode. (Feb 25)
+head_for_vmode now suggests \leaders in this case. [improves change 103]
+
+127. under/overfull boxes in alignment: Better message. (Feb 27)
+par_begin_line becomes pack_begin_line, and it is set (negative) in
+module 719, read in modules 590 and 601.
+
+128. New \xcr feature. (suggested by Lamport comments, Mar 4)
+align_peek (module 702) ignores it, otherwise it acts like ordinary \cr.
+
+129. In stats, subtract out TeX's own string requirements (Mar 4)
+(cf. change 112)
+init_pool_ptr and init_str_ptr variables added in obvious way
+(declared in module 39, set in module 1240, used in module 1242)
+
+130. \everyhbox and \everyvbox. (Mar 6)
+The modifications are obvious; for example, module 1076 gets the statement
+ if every_vbox<>null then begin_token_list(every_vbox,every_vbox_text);
+and a similar pair of statements goes into module 993.
+
+131. Precaution in module 1105 error recovery (March 9, 1983)
+Change the first test to "if (a=null)or danger", in order to
+avoid accessing math_quad when the symbol fonts aren't known to be present.
+
+132. Installed float and unfloat to aid portability (suggested by HWT, 3/7/83)
+
+133. \dispskip becomes \abovedisplayskip and \belowdisplayskip (3/9/83)
+Also \dispaskip becomes \abovedisplayshortskip; \dispbskip similar.
+
+134. \romannumeral separated from \number (suggested by FY, March 10)
+Obvious changes; print_roman_int now accepts negative input but gives
+no output in such cases (the test in module 68 becomes "if n<=0 then return").
+
+135. scan_keyword to ignore leading spaces (Mar 12)
+In module 375, change "else begin" to
+"else if (cur_cmd<>spacer)or(p<>backup_head) then begin".
+
+136. Update to change 112 (Mar 14)
+Module 1242 now uses write and write_ln directly (saves space and time).
+
+137. Another change to page-break cost (suggested by Lamport, March 16)
+Cf. change 83k above; the relevant lines of module 914 now read
+ if b<awful_bad then
+ if pi<=eject_penalty then c:=pi
+ else if b<inf_bad then c:=b+pi+insert_penalties
+ else c:=deplorable
+ else c:=b;
+ if insert_penalties>=10000 then c:=awful_bad;
+and a similar change (but without insert_penalties) occurs in module 887.
+
+**** The changes above have been incorporated into version 0.96 (March 16, 1983)
+ Version 0.97
+
+138. \everyjob (suggested by FY, March 18)
+Module 936: main_control inserts every_job as its first action.
+
+139. Improved printout of macro definitions (March 19)
+In module 278, simply treat left_brace like right_brace.
+(This corresponds to the way the manual describes parameter matching.)
+
+140. Omit blanks as non-delimited parameters (March 19)
+In module 360, replace
+ else store_new_token(cur_tok);
+by
+ else @<Store the current token, but |goto continue| if it is
+ a blank space that would become an undelimited parameter@>;
+Then define @<Store the current token...@> to be:
+begin if cur_tok=space_token then
+ if info(r)<=end_match_token then
+ if info(r)>=match_token then goto continue;
+store_new_token(cur_tok);
+end
+
+141. Minor patch in module 386, catches mu_glue (March 21)
+begin cur_val:=zero_glue; cur_val_level:=glue_val;
+if not is_char_node(tail)and(mode<>0) then
+ begin if type(tail)=glue_node then
+ begin cur_val:=glue_ptr(tail);
+ if subtype(tail)=mu_glue then cur_val_level:=mu_val;
+ end;
+ end
+else if (mode=vmode)and(tail=head)and(last_page_glue<>max_halfword) then
+ cur_val:=last_page_glue;
+end
+
+142. Patch in module 699, \span expands only one level (March 21)
+(See previous change #42.) The "get_x_token" in the code
+while (cur_chr=span_code)and(cur_cmd=tab_mark) do get_x_token;
+should be replaced by:
+ begin get_token;
+ if cur_cmd>max_command then
+ begin expand_calls; get_token;
+ end;
+ end
+
+143. Single # in \tokens, \message, etc. (March 22)
+(The previous rule was really bad in connection with \uppercase,
+or with \write when #'s had to be given four times!)
+Module 437 should be prefaced with "if macro_def then".
+And get_token should become get_x_token there, if xpand is true.
+
+144. Keyword "to" required in \read. (March 22)
+This will avoid the common error of a missing space before the \cs.
+Also the stream number can be out of range, for terminal input.
+The stream number in a \write can be out of range too, for terminal output.
+Modules 1145 and 1258 and 1280, etc., change in the obvious ways.
+
+145. \ifeven<countnumber> replaced by \ifodd<number> (March 26)
+This makes the language more consistent.
+
+146. Big surprise bug relating to \if\if aabc\fi (March 26)
+(related to change 45; the possibility that cur_if might not be the
+correct one when the conditional is evaluated was discovered today)
+The main change is to add the change_if_limit procedure, and to add
+the variable save_cond_ptr and the code that now depends on it.
+
+147. \if and \ifcat should tolerate primitives (March 28)
+
+148. "absent" becomes "void", a better word (March 28)
+
+149. Module 990: \lastbox to clear the shift_amount (March 28)
+since I don't want to figure out what it means in all cases (\vsplit, etc)
+
+150. print_err("...") takes the place of print_nl("! ...") (DRF, March 29)
+And wake_up_terminal is introduced in module 34, and used in modules
+37, 70, 341, 441, 457, 463, 1210, 1240, 1246.
+
+151. \halign extended to periodic preambles (April 1)
+Modules 688--690: cur_loop introduced, stacked/unstacked
+Module 695: cur_loop initialized
+Module 700: cur_loop set up
+Module 708--709: cur_loop used and advanced
+
+152. \leaders to align by the smallest enclosing box. (April 1)
+Module 549: new local variable left_edge, initialized to cur_h
+Module 557: cur_h:=left_edge+leader_wd*((cur_h-left_edge) div leader_wd)
+Module 559: new local variable top_edge, initialized to cur_v-height(this_box)
+Module 566: analogous to 557
+
+153. hyphenation after whatsits is OK (April 1)
+In module 809, skip past whatsits
+
+154. \par in vertical mode should build_page (April 2)
+vmode+par_end moves from 952 to 1005
+
+155. Clear aux to zero in module 703 (April 2)
+
+156. Digits will switch families (April 4)
+(initialize their math codes differently in module 225)
+
+157. Refinement to correction 83m (April 7)
+the test for not splitting should be
+ if ((h<=0)or(h<=delta))and(height(p)+height(r)<=dimen(n)) then
+
+158. (re 128) \xcr renamed to \crcr, at Lamport's request. (April 8)
+
+159. Better error recovery in runaway preamble (April 11)
+Module 319, aligning: set align_state:=-1000000
+
+160. \read to get balanced braces (April 12)
+Module 440 changed to look more like 431.
+Module 443 gives error message if the \read goes off end of file.
+Module 319 removes \outer from forbidden control sequence that is \read.
+
+161. Bug found by Jim Sterken (April 14)
+Module 798 can make q a char_node, so module 794 needs this patch:
+ if not is_char_node(q) then
+to be inserted just before "if (type(q)=math_node)..."
+
+162. \uppercase and \lowercase to apply to all characters (April 15)
+module 1196 changes; also I put active_base before single_base in eqtb
+
+**** The changes above have been incorporated into version 0.97 (April 16, 1983)
+**** except the part of 144 about \read-1 was forgotten and put in 0.98 later
+ Version 0.98
+
+163. change small_number to 0..65 in module 814 (found by DRF, April 17)
+
+164. improved error recovery in module 1166 (suggested by DRF, April 17)
+after error: repeat get_token; until cur_cmd=right_brace; {flush the patterns}
+
+165. improved \read from terminal (suggested by Todd Allen at Yale, May 1)
+I had forgotten to implement the extended stream numbers in change 144.
+Also, the prompt is now omitted if n<0.
+
+166. \write n writes only to the log file, if n<0. (May 18)
+
+167. Unified syntax for parameters and registers. (May 18)
+a) Command code changes: def_font moved to before prefix;
+ register eliminated; set_register renamed register and
+ moved (with adv_register...div_register) to before prefix;
+ min_internal and max_internal defined.
+b) scan_the renamed scan_something_internal, and it acts on cur_tok.
+c) scan_int, scan_dimen, scan_glue simplified accordingly; instead of
+ testing for cur_cmd=the or cur_cmd=register, they now test
+ cur_cmd versus min_internal and max_internal.
+d) ins_the is removed.
+e) \minusthe is removed. Consequently "the_toks" needs no parameter.
+
+168. new parameters \hoffset, \voffset (May 18)
+
+169. \everycr (suggested by Spivak, installed May 24)
+
+170. \countdef, \dimendef, etc. (suggested by DRF long ago, installed May 25)
+Straightforward change to internal representation of assign_int and similar
+commands, so that the chr part is now a pointer to the eqtb location.
+
+171. \advance, \multiply, \divide (suggested by FY, installed May 25)
+
+172. \hyphenchar (May 25)
+A new command assign_font_int is introduced, and incorporated into
+scan_something_internal and prefixed_command in the usual way.
+The hyphen_char array entries are initialized in modules 483 and 506,
+allocated in 482, used in modules 809 [is hyphenation to be suppressed?],
+828 [insert the hyphen character], 946 [insert discretionary node
+following hyphen], 1027 [implementation of \-].
+hyphen_char[k] is dumped and undumped in modules 1229 and 1230.
+
+173. \skewchar (May 25)
+Loaded and fetched with the same command code as \hyphenchar.
+Module 659 gets a dozen more lines of program, to compute the skew.
+
+174. \noexpand (May 25)
+This involves: introduction of no_expand and dont_expand command codes;
+frozen_dont_expand as an internal marker; small change to get_next
+when that marker is sensed; change to processing of \if and \ifcat;
+implementation of no_expand in the expand_calls subroutine.
+I also changed the name of expand_calls to "expand".
+
+175. \meaning (May 25)
+This adds one case to the "convert" command.
+print_meaning is a new subroutine, using code that was in show_whatever.
+
+176. "dm" and "vu" are out, ".5\hsize" is in (May 25)
+Straightforward changes to module 416.
+
+177. \texinfo f n becomes \fontdimen n f (May 25)
+
+178. \afterassignment (suggested by ARK, May 27)
+
+179. \chardef\xx=5\xx shouldn't say that \xx is undefined (May 27)
+
+180. \relax to be ignored like spaces in math mode (May 28)
+and in a few other places: <Get next non-blank non-relax non-call token>
+is now used in modules 379, 988, 994, 1062, 1070, 1134, 1179
+(i.e., scan_left_brace, scan_box, scan_math, scan_delimiter, prefixed_command,
+do_assignments, and just after \leaders).
+
+181. improve \mathaccent wrt sub/superscripts (sugg by HWT, May 30)
+
+182. its_all_over: remove dead_cycles>max_dead_cycles (May 30)
+Modules 961 and 962 are combined and simplified.
+
+*** The changes above were installed into version 0.98 on May 31, 1983 ***
+ Version 0.99
+
+183. \mark and \insert and \vadjust allowed in restricted hmode (Jun 3)
+also in math; this is a comparatively big change
+[at present, \mark in a display causes TeX to crash with "can't happen"!]
+modules 652 and 679: mark_node,ins_node,adjust_node now permitted
+modules 576 and 578: t becomes a global variable adjust_tail
+modules 802 and 1110: new calling sequence to get the adjustments
+modules 254, 986, 993, 995, 996: adjusted_hbox_group for the new kind of hbox
+modules 698--690: cur_head and cur_tail added to alignment stack
+modules 703, 712, 715: adjustments gathered and appended during \halign
+
+184. \ht, \wd, and \dp (Jun 6)
+
+185. When displaying noads, use ^ and _ instead of ( and [ (Jun 6)
+
+186. A..F in hex constants could be otherchar as well as letter (Jun 6)
+
+187. Remove <scan optional space> from module 417 (Jun 7)
+(it was redundant code)
+
+188. \mkern .5\thinmuskip and \mkern\thinmuskip should be legal (Jun 7)
+
+189. 2.5\space\space\dimen0 should work (Jun 7)
+previously it worked after "plus" or "minus" only!
+
+190. <font identifier> to allow also \font for current font (Jun 7)
+"if cur_cmd=def_font then f:=cur_font else" added to module 507
+
+191. \gdef not to be global when \globaldefs<0 (Jun 7)
+"and (global_defs>=0)" added to module 1139
+
+192. \advance\spaceskip by-\spaceskip should yield zero_glue (Jun 7)
+the procedure trap_zero_glue is culled from module 1147
+
+193. \show should work with any token (Jun 7)
+
+194. \tokens to become 256 registers (Jun 8)
+\toks and \toksdef added in the straightforward way
+(this affects mainly eqtb, scan_something_internal, prefixed_command)
+
+195. allow \indent in math mode (Jun 8)
+also, \valign in math mode to give missing $ error
+modules 1001 and 1043 disappear; 1004 is generalized slightly.
+
+196. remove redundant code (Jun 8)
+In module 1044, there's no need to check cur_group and call off_save.
+Similarly in module 1053.
+
+197. new_write_whatsit shouldn't allow \openout-1, \closeout-1 (Jun 8)
+(simple change to module 1258)
+
+198. \lastbox should give error in math mode (Jun 8)
+(simple change to module 990)
+
+199. \leaders not followed by proper glue should be back_error (Jun 9)
+[I made the change; TRIP should test this error message!]
+
+200. Module 702, correction to beginning of \noalign (Jun 9)
+if mode=-vmode then normal_paragraph;
+
+201. After alphabetic constant, expand the optional space (Jun 10)
+
+202. Set space_factor:=1000 after rule or constructing an accent (Jun 12)
+That's in modules 964 and 1036.
+
+203. blunder in module 783 (caught by Jim Sterken, fixed Jun 14)
+disc_width:=0 needs to be set before testing if s=null
+(A real bug that existed since the beginning! It showed up on page 37
+ of the September 1982 TRIP manual; my hand-checking was incomplete...)
+
+204. Change to optional spaces after <dimen> (Jun 14)
+The optional space will now be analogous to that after <number>.
+
+205. Fix conflict between \output and \everydisplay (Jun 14)
+In change 49, I should have inserted every_display before calling build_page.
+
+206. Overflow errors to be consistent with statistics reporting (Jun 17)
+(See change 129.)
+
+207. \tracing switches to be all positive vs nonpositive (Jun 17)
+
+*** The changes above were installed into version 0.99 on June 19, 1983 ***
+ Version 0.999
+
+208. \catcode`\%=14 to be done by INITEX (Jun 20)
+
+209. \par in vmode to clear parshape etc. (Jun 21)
+Module 1005, which contains vmode+par_end, now calls normal_paragraph.
+
+210. Improvement to change 39 (Jun 21)
+Module 593, overfull_rule not appended if solely due to hbadness
+
+211. Alignment bug allows glue_set to be less than -1! (Jun 21)
+Modules 723 and 724 need to be patched.
+
+212. Correction to change 134 (found by Debby Clark, Jun 22)
+Module 68: n to be declared integer, not nonnegative_integer.
+
+213. "by" to be optional (suggested by Lamport, Jun 22)
+Module 1158 disappears
+
+214. Module 1235, slight change in format_ident message (Jun 24)
+
+215. New measures needed to thwart trickery (Jun 25)
+Glue set values computed by \span could have been brought into
+TeX's registers via, e.g., \valign and \vsplit; so the
+"kern" idea of module 722 is insufficient and should be abandoned.
+Extra boxes and glue are added; this has additional virtue
+of perfect accuracy in alignment of vertical rules.
+The main change is to introduce a new module after 722, in which s and t
+are updated for spans, and to eliminate the "equivalent kern" code from 719
+(the corresponding glue calculations are now done in the new module).
+
+216. leaders to affect height/width of their boxes (Jun 25)
+Module 583 splits into two parts (one for hpack, one for vpack).
+
+217. \unskip permitted a little more often (Jun 28)
+Module 1018 reports error only if last_page_glue<max_halfword.
+
+218. {\bf A} in math: not to make a box (Jul 1)
+Module 1093 changes as follows: info(saved(0)):=fin_mlist(null) becomes
+p:=fin_mlist(null); info(saved(0)):=p; if <simple case> then <simplify>.
+
+219. "scaled" feature added to \font input.
+
+220. \mathaccent still not working right? (Jul 2)
+Change 181, I forgot to correct delta when box x changed.
+
+221. Remove confusion possible on file of length 1 (found by Lamport)
+Correction suggested by DRF, July 2: introduce bypass_eoln
+
+222. Allow things like ^^b. (July 4)
+This simplifies modules 332 and 335; also affects 48 and 49.
+And (surprise) 58.
+
+223. \escapechar \defaulthyphenchar \defaultskewchar \endlinechar (July 4)
+to make TeX less dependent on the character set
+A lot of error messages are now broken up so that they use print_esc
+
+224. erstat added for file opening/closing (by DRF, July 7)
+That's module 27.
+
+225. \tracingpages output to show total glue too (July 11)
+Added a procedure called print_page_totals, used also by show_activities.
+Broke modules 214 and 896 into two modules each.
+
+226. Guard against insertion into an hbox (July 11)
+A new procedure ensure_vbox is called in modules 917 and 925.
+
+227. <tokenvar>=<tokenvar> allowed (July 11)
+
+228. \errhelp parameter added (July 11)
+
+229. get_preamble_token should look at global_defs (July 11)
+Module 699 is patched.
+
+*** The above changes installed in preliminary version 0.999 on July 12, 1983,
+but I decided later in the day to do a few more things:
+
+230. \string, \noexpand, \meaning to allow \outer (Todd Allen, July 12)
+
+231. \the to be an expandable control sequence (July 12)
+Several things in the language are cleaned up:
+a) \the\tenrm replaced by \fontname\tenrm [\fontname<font>]
+b) when expanding edef, etc., result of \the still expanded only only level
+c) expansion after \def not inhibited, since \noexpand is now present
+d) \the\the disallowed.
+
+232. \unhbox and \unhcopy allowed in math mode if the box is void (July 12)
+Module 1020 is extended to handle this case.
+
+233. Value of default_rule was incorrectly rounded (July 16)
+Module 424: default_rule=26214 {.39999 pt}
+
+234. \mathaccent still not right! (July 16)
+I need to make the final height the max of (height of accented letter w/o
+superscript, height of unaccented letter w superscript).
+
+235. \newlinechar parameter (July 16)
+simple change to print subroutine
+
+236. boxes and rules to be allowed in discretionaries (sugg by HP man, July 16)
+in fact this simply requires omitting of the prohibition (in module 1031)
+and a few more cases equivalent to kern_node in modules 754, 755, 784.
+
+237. \tracingcommands to show all expandable tokens (July 16)
+
+238. \char to be allowed in \hyphenation list (July 16)
+Module 848 changes in the obvious way.
+
+239. \aftergroup (July 16)
+A new save_type.
+
+240. Curtail running dimensions inside alignments (sugg by ARK, July 16)
+Module 720.
+
+241. Strange pattern data could cause PASCAL error (found July 17)
+Put "if hc[1]=127 then hyf[0]:=0;" at beginning of module 878.
+
+242. hc codes for hyphenation are one lower (July 17)
+e.g., hc[...]:=lc_code(...)-1. This makes code 127 impossible to match.
+
+243. whatsits also allowed after hyphenatable words (July 17)
+Module 812.
+
+244. \/ makes an explicit kern (July 17)
+"subtype(tail):=explicit" in module 1023.
+
+*** Version 0.999 installed July 17, 1983.
+But later in the day I decided to do a few more things:
+
+245. Lowercase letters allowed in file names (July 18)
+In module 452, omit the conversion to uppercase.
+
+246. "No output file" becomes "No pages of output." (July 18)
+Module 571.
+
+247. QRS on error leads to confirmation message (sugg by ARK, July 18)
+Module 84.
+
+*** The real version 0.999 finally installed July 18.
+ * Version 1.0
+
+(Changes made after the Version 0.999 listing of TeX82)
+(Henceforth the "final" module numbers are used)
+
+248. Module 1215, allow space in \read n to \cs (by FY, July 25, 1983)
+@x patch in get_r_token routine
+begin restart: get_token;
+@y
+begin restart: repeat get_token;
+until cur_tok<>space_token;
+@z
+
+249. Module 498, we must stack the current if type (FY, July 27)
+@x patch in conditional routine
+begin @<Push the condition stack@>;@+save_cond_ptr:=cond_ptr;@/
+@y
+@!this_if:small_number; {type of this conditional}
+begin @<Push the condition stack@>;@+save_cond_ptr:=cond_ptr;this_if:=cur_chr;@/
+@z
+Also replace cur_if by this_if in modules 501, 503, 506. The following
+patches do only what is necessary to make things work:
+@x
+ print_cmd_chr(if_test,cur_if);
+@y
+ print_cmd_chr(if_test,this_if);
+@z
+@x
+if cur_if=if_int_code then scan_int@+else scan_normal_dimen;
+@y
+if this_if=if_int_code then scan_int@+else scan_normal_dimen;
+@z
+@x
+if cur_if=if_char_code then b:=(n=cur_chr)@+else b:=(m=cur_cmd);
+@y
+if this_if=if_char_code then b:=(n=cur_chr)@+else b:=(m=cur_cmd);
+@z
+
+250. Module 507, \ifx need not put a control sequence in hash table (July 29)
+@x
+get_token; n:=cs_ptr; p:=cur_cmd; q:=cur_chr;
+get_token; if cur_cmd<>p then b:=false
+@y
+get_next; n:=cs_ptr; p:=cur_cmd; q:=cur_chr;
+get_next; if cur_cmd<>p then b:=false
+@z
+
+251. Module 86, message is lost (noticed by HWT, July 31)
+@x
+print("..."); print_ln; return;
+@y
+print("..."); print_ln; update_terminal; return;
+@z
+
+252. Don't put empty at end of \input file! (Aug 1)
+[This simplifies the rules and the program, and also gets around a bug
+that occurred at the end of files with \endlinechar<0.]
+@x Module 362:
+@ An empty line is inserted at the end of the file, if the last line
+wasn't already empty, because |input_ln| sets |last:=first| when
+it discovers an |eof|.
+@^empty line at end of file@>
+
+@<Read next line of file into |buffer|, or
+ |goto restart| if the file has ended@>=
+begin incr(line); first:=start;
+if not force_eof then
+ begin if input_ln(cur_file,true) then {not end of file}
+ firm_up_the_line {this sets |limit|}
+ else if limit<>start then firm_up_the_line
+ {if |pausing|, the user can add more lines}
+ else force_eof:=true;
+@y
+@ @<Read next line of file into |buffer|, or
+ |goto restart| if the file has ended@>=
+begin incr(line); first:=start;
+if not force_eof then
+ begin if input_ln(cur_file,true) then {not end of file}
+ firm_up_the_line {this sets |limit|}
+ else force_eof:=true;
+@z
+
+*** The changes above went into Version 0.9999, which was widely distributed
+
+253. Ridiculous blunder made in change 146 (found by FY, August 16)
+@x Correction to module 497
+else loop@+begin q:=cond_ptr;
+ if link(q)=p then
+ begin type(p):=l; return;
+ end;
+ if q=null then confusion("if");
+@:this can't happen if}{\quad if@>
+ q:=link(q);
+@y
+else begin q:=cond_ptr;
+ loop@+ begin if q=null then confusion("if");
+@:this can't happen if}{\quad if@>
+ if link(q)=p then
+ begin type(q):=l; return;
+ end;
+ q:=link(q);
+ end;
+@z
+
+254. Minor amendment to stat(s) printing (cf. change 129) (August 16)
+@x in module 1334
+ wlog_ln(' ',str_ptr-init_str_ptr:1,' strings out of ',
+ max_strings-init_str_ptr:1);@/
+@y
+ wlog(' ',str_ptr-init_str_ptr:1,' string');
+ if str_ptr<>init_str_ptr+1 then wlog('s');
+ wlog_ln(' out of ',
+@z
+
+255. Bug in \xleader computations (found by FY, August 18)
+@x in module 592
+@!lq,@!lr:integer; {quantities used in calculations for leaders}
+@y
+@!lq,@!lr,@!lx:integer; {quantities used in calculations for leaders}
+@z
+@x in module 626
+ begin edge:=cur_h+rule_wd;
+ @<Let |cur_h| be the position of the first box, and set |leader_wd|
+ to the spacing between corresponding parts of boxes@>;
+ while cur_h+leader_wd<=edge do
+ @<Output a leader box at |cur_h|,
+ then advance |cur_h| by |leader_wd|@>;
+@y
+ begin edge:=cur_h+rule_wd; lx:=0;
+ @<Let |cur_h| be the position of the first box, and set |leader_wd+lx|
+ to the spacing between corresponding parts of boxes@>;
+ while cur_h+leader_wd<=edge do
+ @<Output a leader box at |cur_h|,
+ then advance |cur_h| by |leader_wd+lx|@>;
+@z
+@x in module 627
+ leader_wd:=leader_wd+lx;
+@y
+@z
+@x in module 628
+cur_h:=save_h+leader_wd;
+@y
+cur_h:=save_h+leader_wd+lx;
+@z
+@x in module 635
+ begin edge:=cur_v+rule_ht;
+ @<Let |cur_v| be the position of the first box, and set |leader_ht|
+ to the spacing between corresponding parts of boxes@>;
+ while cur_v+leader_ht<=edge do
+ @<Output a leader box at |cur_v|,
+ then advance |cur_v| by |leader_ht|@>;
+@y
+ begin edge:=cur_v+rule_ht; lx:=0;
+ @<Let |cur_v| be the position of the first box, and set |leader_ht+lx|
+ to the spacing between corresponding parts of boxes@>;
+ while cur_v+leader_ht<=edge do
+ @<Output a leader box at |cur_v|,
+ then advance |cur_v| by |leader_ht+lx|@>;
+@z
+@x in module 636
+ leader_ht:=leader_ht+lx;
+@y
+@z
+@x in module 637
+cur_v:=save_v-height(leader_box)+leader_ht;
+@y
+cur_v:=save_v-height(leader_box)+leader_ht+lx;
+@z
+Also insert the following in modules 619 and 629:
+@!lx:scaled; {extra space between leader boxes}
+
+256. \/ should apply to ligatures! (August 20)
+@x in module 1113
+var f:internal_font_number; {the font in the |char_node|}
+begin if is_char_node(tail)and(tail<>head) then
+ begin f:=font(tail);
+ tail_append(new_kern(char_italic(f)(char_info(f)(character(tail)))));
+@y
+label exit;
+var p:pointer; {|char_node| at the tail of the current list}
+@!f:internal_font_number; {the font in the |char_node|}
+begin if tail<>head then
+ begin if is_char_node(tail) then p:=tail
+ else if type(tail)=ligature_node then p:=lig_char(tail)
+ else return;
+ f:=font(p);
+ tail_append(new_kern(char_italic(f)(char_info(f)(character(p)))));
+@z
+@x later in that same module
+end;
+@y
+exit: end;
+@z
+
+257. Another debugging hack. (August 27)
+@x module 1339
+15: begin font_in_short_display:=null_font; short_display(n);
+ end;
+@y
+15: begin font_in_short_display:=null_font; short_display(n);
+ end;
+16: panicking:=not panicking;
+@z
+
+258. Redundant code eliminated (August 27)
+Module 531 needn't set and reset name_in_progress [but it's harmless].
+
+259. Bug: \input shouldn't occur during font size spec (Spivak; fixed August 27)
+@x module 1258
+@ @<Scan the font size specification@>=
+@y
+@ @<Scan the font size specification@>=
+name_in_progress:=true; {this keeps |cur_name| from being changed}
+@z
+@x module 1258
+else s:=-1000
+@y
+else s:=-1000;
+name_in_progress:=false
+@z
+
+260. \ifhbox and \ifvbox introduced. (August 27)
+@x module 487
+@d ifx_code=10 { `\.{\\ifx}' }
+@d if_eof_code=11 { `\.{\\ifeof}' }
+@d if_true_code=12 { `\.{\\iftrue}' }
+@d if_false_code=13 { `\.{\\iffalse}' }
+@d if_case_code=14 { `\.{\\ifcase}' }
+@y
+@d if_hbox_code=10 { `\.{\\ifhbox}' }
+@d if_vbox_code=11 { `\.{\\ifvbox}' }
+@d ifx_code=12 { `\.{\\ifx}' }
+@d if_eof_code=13 { `\.{\\ifeof}' }
+@d if_true_code=14 { `\.{\\iftrue}' }
+@d if_false_code=15 { `\.{\\iffalse}' }
+@d if_case_code=16 { `\.{\\ifcase}' }
+@z
+@x
+primitive("ifx",if_test,ifx_code);
+@y
+primitive("ifhbox",if_test,if_hbox_code);
+@!@:if_hbox_}{\.{\\ifhbox} primitive@>
+primitive("ifvbox",if_test,if_vbox_code);
+@!@:if_vbox_}{\.{\\ifvbox} primitive@>
+primitive("ifx",if_test,ifx_code);
+@z
+@x module 488
+ ifx_code:print_esc("ifx");
+@y
+ if_hbox_code:print_esc("ifhbox");
+ if_vbox_code:print_esc("ifvbox");
+ ifx_code:print_esc("ifx");
+@z
+@x module 501
+if_void_code: @<Test if a box is void@>;
+@y
+if_void_code, if_hbox_code, if_vbox_code: @<Test box register status@>;
+@z
+@x module 505
+@ @<Test if a box is void@>=
+begin scan_eight_bit_int; b:=(box(cur_val)=null);
+end
+@y
+@ @<Test box register status@>=
+begin scan_eight_bit_int; p:=box(cur_val);
+if this_if=if_void_code then b:=(p=null)
+else if p=null then b:=false
+else if this_if=if_hbox_code then b:=(type(p)=hlist_node)
+else b:=(type(p)=vlist_node);
+end
+
+261. Serious data structure error (found by Todd Allen, August 29)
+@x module 478 (an error introduced in change 231)
+ q:=the_toks; link(p):=link(temp_head); p:=q;
+@y
+ q:=the_toks;
+ if link(temp_head)<>null then
+ begin link(p):=link(temp_head); p:=q;
+ end;
+@z
+
+262. Minor patch for efficiency (August 29)
+@x module 466
+ begin store_new_token(info(r)); r:=link(r);
+@y
+ begin fast_store_new_token(info(r)); r:=link(r);
+@z
+
+263. Minor patch to error message (August 29)
+@module 579
+ print(" has "); print_int(font_params[f]);
+ print(" fontdimen parameters");
+@.Font x has n fontdimen...@>
+@y
+ print(" has only "); print_int(font_params[f]);
+ print(" fontdimen parameters");
+@.Font x has only...@>
+@z
+
+*** The changes above comprise version 0.99999, used only at SAIL (August 29)
+
+264. funny blank spaces are showable (August 30)
+@x module 298
+spacer: print("blank space");
+@y
+spacer: chr_cmd("blank space ");
+@z
+
+265. \newlinechar [change 235] should affect print_char too (August 31)
+@x module 58
+procedure print_char(@!c:ascii_code); {prints a single character}
+begin case selector of
+term_and_log: begin wterm(xchr[c]); write(log_file,xchr[c]);
+ incr(term_offset); incr(file_offset);
+ if term_offset=max_print_line then
+ begin wterm_cr; term_offset:=0;
+ end;
+ if file_offset=max_print_line then
+ begin wlog_cr; file_offset:=0;
+ end;
+ end;
+log_only: begin write(log_file,xchr[c]); incr(file_offset);
+ if file_offset=max_print_line then print_ln;
+ end;
+term_only: begin wterm(xchr[c]); incr(term_offset);
+ if term_offset=max_print_line then print_ln;
+ end;
+no_print: do_nothing;
+pseudo: if tally<trick_count then trick_buf[tally mod error_line]:=c;
+new_string: begin if pool_ptr<pool_size then append_char(c);
+ end; {drop characters if the string space is full}
+othercases write(write_file[selector],xchr[c])
+endcases;@/
+incr(tally);
+end;
+@y
+procedure print_char(@!s:ascii_code); {prints a single character}
+label exit;
+begin if @<Character |s| is the current new-line character@> then
+ if selector<pseudo then
+ begin print_ln; return;
+ end;
+case selector of
+term_and_log: begin wterm(xchr[s]); wlog(xchr[s]);
+ incr(term_offset); incr(file_offset);
+ if term_offset=max_print_line then
+ begin wterm_cr; term_offset:=0;
+ end;
+ if file_offset=max_print_line then
+ begin wlog_cr; file_offset:=0;
+ end;
+ end;
+log_only: begin wlog(xchr[s]); incr(file_offset);
+ if file_offset=max_print_line then print_ln;
+ end;
+term_only: begin wterm(xchr[s]); incr(term_offset);
+ if term_offset=max_print_line then print_ln;
+ end;
+no_print: do_nothing;
+pseudo: if tally<trick_count then trick_buf[tally mod error_line]:=s;
+new_string: begin if pool_ptr<pool_size then append_char(s);
+ end; {drop characters if the string space is full}
+othercases write(write_file[selector],xchr[s])
+endcases;@/
+incr(tally);
+exit:end;
+
+266. \lastkern,\lastpenalty,\unkern,\unpenalty (September 4)
+@x module 208
+@d unskip=25 {nullify glue ( \.{\\unskip} )}
+@y
+@d remove_item=25 {nullify last item ( \.{\\unpenalty},
+ \.{\\unkern}, \.{\\unskip} )}
+@z
+@x module 208
+@d last_skip=69 {most recent glue ( \.{\\lastskip} )}
+@y
+@d last_item=69 {most recent item ( \.{\\lastpenalty},
+ \.{\\lastkern}, \.{\\lastskip} )}
+@z
+@x module 265
+primitive("lastskip",last_skip,0);@/
+@!@:last_skip_}{\.{\\lastskip} primitive@>
+@y
+@z
+@x module 265
+primitive("the",the,0);
+@!@:the_}{\.{\\the} primitive@>
+primitive("toks",toks_register,0);
+@!@:toks_}{\.{\\toks} primitive@>
+primitive("unskip",unskip,0);@/
+@!@:unskip_}{\.{\\unskip} primitive@>
+@y
+primitive("the",the,0);@/
+@!@:the_}{\.{\\the} primitive@>
+primitive("toks",toks_register,0);@/
+@!@:toks_}{\.{\\toks} primitive@>
+@z
+@x module 266
+last_skip: print_esc("lastskip");
+@y
+@z
+@x module 266
+unskip: print_esc("unskip");
+@y
+@z
+@x module 413
+last_skip: @<Fetch the glue in the current node, if any@>;
+@y
+last_item: @<Fetch an item in the current node, if appropriate@>;
+@z
+@x module 416 [I also changed the comment]
+primitive("dp",set_box_dimen,depth_offset);
+@!@:dp_}{\.{\\dp} primitive@>
+@y
+primitive("dp",set_box_dimen,depth_offset);
+@!@:dp_}{\.{\\dp} primitive@>
+primitive("lastpenalty",last_item,int_val);
+@!@:last_penalty_}{\.{\\lastpenalty} primitive@>
+primitive("lastkern",last_item,dimen_val);
+@!@:last_kern_}{\.{\\lastkern} primitive@>
+primitive("lastskip",last_item,glue_val);
+@!@:last_skip_}{\.{\\lastskip} primitive@>
+@z
+@x module 417
+else print_esc("dp");
+@y
+else print_esc("dp");
+last_item: if chr_code=int_val then print_esc("lastpenalty")
+else if chr_code=dimen_val then print_esc("lastkern")
+else print_esc("lastskip");
+@z
+@x module 424
+@ Here is where \.{\\lastskip} is implemented. The reference count will be
+updated later.
+@:last_skip_}{\.{\\lastskip} primitive@>
+
+@<Fetch the glue in the current node, if any@>=
+begin cur_val:=zero_glue; cur_val_level:=glue_val;
+if not is_char_node(tail)and(mode<>0) then
+ begin if type(tail)=glue_node then
+ begin cur_val:=glue_ptr(tail);
+ if subtype(tail)=mu_glue then cur_val_level:=mu_val;
+ end;
+ end
+else if (mode=vmode)and(tail=head)and(last_page_glue<>max_halfword) then
+ cur_val:=last_page_glue;
+end
+@y
+@ Here is where \.{\\lastpenalty}, \.{\\lastkern}, and \.{\\lastskip} are
+implemented. The reference count for \.{\\lastskip} will be updated later.
+
+@<Fetch an item in the current node...@>=
+begin if cur_chr=glue_val then cur_val:=zero_glue@+else cur_val:=0;
+cur_val_level:=cur_chr;
+if not is_char_node(tail)and(mode<>0) then
+ case cur_chr of
+ int_val: if type(tail)=penalty_node then cur_val:=penalty(tail);
+ dimen_val: if type(tail)=kern_node then cur_val:=width(tail);
+ glue_val: if type(tail)=glue_node then
+ begin cur_val:=glue_ptr(tail);
+ if subtype(tail)=mu_glue then cur_val_level:=mu_val;
+ end;
+ end {there are no other cases}
+else if (mode=vmode)and(tail=head) then
+ case cur_chr of
+ int_val: cur_val:=last_penalty;
+ dimen_val: cur_val:=last_kern;
+ glue_val: if last_glue<>max_halfword then cur_val:=last_glue;
+ end; {there are no other cases}
+end
+@z
+@x module 982 [also the comment changes]
+@!last_page_glue:pointer; {used to implement \.{\\lastskip}}
+@y
+@!last_glue:pointer; {used to implement \.{\\lastskip}}
+@!last_penalty:integer; {used to implement \.{\\lastpenalty}}
+@!last_kern:scaled; {used to implement \.{\\lastkern}}
+@z
+@x module 991
+last_page_glue:=max_halfword;
+@y
+last_glue:=max_halfword; last_penalty:=0; last_kern:=0;
+@z
+@x module 994
+@<Update the value of |last_page_glue|@>;
+@y
+@<Update the values of |last_glue|, |last_penalty|, and |last_kern|@>;
+@z
+@x module 996
+@ @<Update the value of |last_page_glue|@>=
+if last_page_glue<>max_halfword then delete_glue_ref(last_page_glue);
+if type(p)=glue_node then
+ begin last_page_glue:=glue_ptr(p); add_glue_ref(last_page_glue);
+ end
+else last_page_glue:=max_halfword
+@y
+@ @<Update the values of |last_glue|...@>=
+if last_glue<>max_halfword then delete_glue_ref(last_glue);
+last_penalty:=0; last_kern:=0;
+if type(p)=glue_node then
+ begin last_glue:=glue_ptr(p); add_glue_ref(last_glue);
+ end
+else begin last_glue:=max_halfword;
+ if type(p)=penalty_node then last_penalty:=penalty(p)
+ else if type(p)=kern_node then last_kern:=width(p);
+ end
+@z
+@x module 1017
+if last_page_glue<>max_halfword then delete_glue_ref(last_page_glue);
+@<Start a new current page@>; {this sets |last_page_glue:=max_halfword|}
+@y
+if last_glue<>max_halfword then delete_glue_ref(last_glue);
+@<Start a new current page@>; {this sets |last_glue:=max_halfword|}
+@z
+@x module 1048
+vmode+vmove,hmode+hmove,mmode+hmove,any_mode(last_skip),
+@y
+vmode+vmove,hmode+hmove,mmode+hmove,any_mode(last_item),
+@z
+@x module 1104
+any_mode(unskip): delete_skip;
+@y
+any_mode(remove_item): delete_last;
+@z
+@x module 1105
+procedure delete_skip;
+var p:pointer; {runs through the current list}
+begin if (mode=vmode)and(tail=head) then
+ @<Apologize for inability to do \.{\\unskip} now,
+ unless the previous node was not glue@>
+else begin if not is_char_node(tail) then if type(tail)=glue_node then
+@y
+procedure delete_last;
+var p:pointer; {runs through the current list}
+begin if (mode=vmode)and(tail=head) then
+ @<Apologize for inability to do the operation now,
+ unless \.{\\unskip} follows non-glue@>
+else begin if not is_char_node(tail) then if type(tail)=cur_chr then
+@z
+@x module 1106
+@ @<Apologize for inability to do \.{\\unskip}...@>=
+begin if last_page_glue<>max_halfword then
+ begin you_cant;
+ help2("Sorry...I'm usually unable to take things from the current")@/
+ ("page. Try `I\vskip-\lastskip' instead."); error;
+@y
+@ @<Apologize for inability to do the operation...@>=
+begin if (cur_chr<>glue_node)or(last_glue<>max_halfword) then
+ begin you_cant;
+ help2("Sorry...I'm usually unable to take things from the current")@/
+ ("page. Try `I\vskip-\lastskip' instead.");
+ if cur_chr=kern_node then help_line[0]:=
+ ("page. Try `I\kern-\lastkern' instead.")
+ else if cur_chr<>glue_node then help_line[0]:=@|
+ ("page. Perhaps you can make the output routine do it.");
+ error;
+@z
+@x module 1107
+primitive("unhbox",un_hbox,box_code);@/
+@y
+primitive("unpenalty",remove_item,penalty_node);@/
+@!@:un_penalty_}{\.{\\unpenalty} primitive@>
+primitive("unkern",remove_item,kern_node);@/
+@!@:un_kern_}{\.{\\unkern} primitive@>
+primitive("unskip",remove_item,glue_node);@/
+@!@:un_skip_}{\.{\\unskip} primitive@>
+primitive("unhbox",un_hbox,box_code);@/
+@z
+@x module 1108
+un_hbox: if chr_code=copy_code then print_esc("unhcopy")
+@y
+remove_item: if chr_code=glue_node then print_esc("unskip")
+ else if chr_code=kern_node then print_esc("unkern")
+ else print_esc("unpenalty");
+un_hbox: if chr_code=copy_code then print_esc("unhcopy")
+@z
+
+*** The above changes installed in version 0.999999 (September 5, 1983)
+
+267. Undo change 29: it was overkill and not needed (Sep 17)
+@x module 1257
+label exit, common_ending;
+var u:pointer; {user's font identifier}
+@!s:scaled; {stated ``at'' size, or negative of scaled magnification}
+@!f:internal_font_number; {runs through existing fonts}
+begin if job_name=0 then open_log_file;
+ {avoid confusing \.{texput} with the font name}
+@<If the next token isn't a suitable control sequence, issue a complaint
+ and |return|; otherwise set |u:=cs_ptr|, and set |hash_used| to the
+ location of a ``frozen'' copy of the new font identifier@>;
+define(u,set_font,null_font); scan_optional_equals; scan_file_name;
+@<Scan the font size specification@>;
+@<If this font has already been loaded, set |f| to the internal
+ font number and |goto common_ending|@>;
+f:=read_font_info(u,cur_name,cur_area,s);
+common_ending: equiv(u):=f; geq_define(hash_used,set_font,f);
+font_ident[f]:=hash_used;
+exit:end;
+@y
+label common_ending;
+var u:pointer; {user's font identifier}
+@!s:scaled; {stated ``at'' size, or negative of scaled magnification}
+@!f:internal_font_number; {runs through existing fonts}
+begin if job_name=0 then open_log_file;
+ {avoid confusing \.{texput} with the font name}
+get_r_token; u:=cs_ptr;
+define(u,set_font,null_font); scan_optional_equals; scan_file_name;
+@<Scan the font size specification@>;
+@<If this font has already been loaded, set |f| to the internal
+ font number and |goto common_ending|@>;
+f:=read_font_info(u,cur_name,cur_area,s);
+common_ending: equiv(u):=f; font_ident[f]:=u;
+end;
+@z
+@x module 1260
+@ We reserve a special control sequence for the font identifier; this one
+cannot be redefined by the user, so it is safe to return it as a value of
+\.{\\the\\font}.
+
+@<If the next token isn't a suitable control sequence...@>=
+get_r_token;
+if cs_ptr<hash_base then
+ begin print_err("A font identifier must be a multiletter control sequence");
+@.A font identifier...@>
+ help2("You should say, e.g., `\font\ffn=fontfilename'.")@/
+ ("(I'm going to ignore the \font command you just gave.)");
+ back_error; return;
+ end;
+repeat if hash_is_full then overflow("hash size",hash_size);
+@:TeX capacity exceeded hash size}{\quad hash size@>
+decr(hash_used);
+until text(hash_used)=0; {search for an empty location in |hash|}
+u:=cs_ptr; text(hash_used):=text(u); {copy the name}
+@!stat incr(cs_count);@+tats@;@/
+@y
+@z
+Note: Since module 1260 has disappeared, module 1258 has been split into two.
+
+268. Minor change to diagnostic output format (September 18)
+@x module 211 [print_mode]
+ 2:print("displayed math");
+@y
+ 2:print("display math");
+@z
+
+269. Kerns inserted for accents must be explicit (September 20)
+@x module 1123
+@!p,@!q: pointer; {character and box nodes}
+@y
+@!p,@!q,@!r:pointer; {character, box, and kern nodes}
+@z
+@x module 1125
+link(tail):=new_kern(delta); link(link(tail)):=p;
+link(p):=new_kern(-a-delta); tail:=link(p); p:=q;
+@y
+r:=new_kern(delta); subtype(r):=explicit; link(tail):=r; link(r):=p;
+tail:=new_kern(-a-delta); subtype(tail):=explicit; link(p):=tail; p:=q;
+@z
+
+270. "log" changed to "transcript" in a few output messages (Sep 26)
+@x module 535
+prompt_file_name("log file name",".log");
+@y
+prompt_file_name("transcript file name",".log");
+@z
+@x module 1293
+ ("lists on your terminal as well as on the log file.");
+@y
+ ("lists on your terminal as well as in the transcript file.");
+@z
+@x module 1335
+ print_nl("(see the log file for additional information)");
+@.see the log file...@>
+@y
+ print_nl("(see the transcript file for additional information)");
+@.see the transcript file...@>
+@z
+
+271. Uninitialized variable bug (found by Bernd Schulze, 1 Oct 83)
+@x module 944
+ begin if trie_op_ptr>=max_quarterword-1 then {overflow}
+ begin trie_op_ptr:=max_quarterword;
+ new_trie_op:=min_quarterword; return;
+@y we allow one more trie op (OK since trie_op_hash_size is big enough)
+ begin if trie_op_ptr=max_quarterword then {overflow}
+ begin new_trie_op:=min_quarterword; return;
+@z
+
+272. Spaces at end of lines ignored also in TEX.POOL (by DRF, 14 Oct 83)
+@x module 52
+ begin if eoln(pool_file) then bad_pool('! TEX.POOL line too short.');
+@.TEX.POOL line too short@>
+ read(pool_file,m); append_char(xord[m]);
+@y
+ begin if eoln(pool_file) then m:=' '@+else read(pool_file,m);
+ append_char(xord[m]);
+@z
+
+273. |history| updates (by DRF, 14 Oct 83)
+@x module 77
+deletions_allowed:=true; history:=spotless; error_count:=0;
+@y
+deletions_allowed:=true; error_count:=0; {|history| is initialized elsewhere}
+@z
+@x module 1332
+@p begin {@!|start_here|}
+@y
+@p begin {@!|start_here|}
+history:=fatal_error_stop; {in case we quit during initialization}
+@z
+@x ibid.
+main_control; {come to life}
+@y
+history:=spotless; {ready to go!}
+main_control; {come to life}
+@z
+
+274. improved "runaway" messages (suggested by FY, October 18)
+@x module 305 (the introductory comment is changed too)
+@d aligning=4 {|scanner_status| when reading an alignment preamble}
+
+@<Glob...@>=
+@!scanner_status : normal..aligning; {can a subfile end now?}
+@y
+@d aligning=4 {|scanner_status| when reading an alignment preamble}
+@d absorbing=5 {|scanner_status| when reading a balanced text}
+
+@<Glob...@>=
+@!scanner_status : normal..absorbing; {can a subfile end now?}
+@z
+@x module 306 (string space is also now conserved slightly)
+ defining: begin print("definition?"); p:=def_ref;
+ end;
+ matching: begin print("argument?"); p:=temp_head;
+ end;
+ aligning: begin print("preamble?"); p:=hold_head;
+ end;
+ end; {there are no other cases}
+ print_ln; show_token_list(link(p),null,error_line-10);
+@y
+ defining: begin print("definition"); p:=def_ref;
+ end;
+ matching: begin print("argument"); p:=temp_head;
+ end;
+ aligning: begin print("preamble"); p:=hold_head;
+ end;
+ absorbing: begin print("text"); p:=def_ref;
+ end;
+ end; {there are no other cases}
+ print_char("?");print_ln; show_token_list(link(p),null,error_line-10);
+@x module 339 (I also changed the module name)
+end; {there are no other cases}
+@y
+absorbing:begin print("text"); info(p):=right_brace_token+"}";
+ end;
+end; {there are no other cases}
+@z
+@x module 473
+begin scanner_status:=defining; warning_index:=cs_ptr;
+def_ref:=get_avail; info(def_ref):=null;
+@y
+begin if macro_def then scanner_status:=defining
+@+else scanner_status:=absorbing;
+warning_index:=cs_ptr; def_ref:=get_avail; info(def_ref):=null;
+@z
+
+275. similar, but this corrects a real bug (found by FY, October 18)
+@x module 1226
+ cs_ptr:=q;
+ @<Get the next non-blank non-relax non-call token@>;
+ if cur_cmd<>left_brace then @<If the righthand side is a token parameter
+ or token register, finish the assignment and |goto done|@>;
+ back_input; q:=scan_toks(false,false);
+@y
+ @<Get the next non-blank non-relax non-call token@>;
+ if cur_cmd<>left_brace then @<If the righthand side is a token parameter
+ or token register, finish the assignment and |goto done|@>;
+ back_input; cs_ptr:=q; q:=scan_toks(false,false);
+@z
+
+276. Change #119 should have changed module 1090 too (by Barry Smith, Oct 24)
+@x module 1183 [which was module 1090 at the time of change 119]
+begin if c mod delimited_code=above_code then scan_normal_dimen;
+if c>=delimited_code then
+ begin scan_delimiter(garbage,false); scan_delimiter(garbage,false);
+ end;
+@y
+begin if c>=delimited_code then
+ begin scan_delimiter(garbage,false); scan_delimiter(garbage,false);
+ end;
+if c mod delimited_code=above_code then scan_normal_dimen;
+@z
+
+277. Changes for efficiency, based on empirical frequency data (Nov 9)
+@x module 45 [since the result is true almost always]
+begin j:=str_start[s]; result:=false;
+while j<str_start[s+1] do
+ begin if str_pool[j]<>buffer[k] then goto not_found;
+@y
+begin j:=str_start[s];
+while j<str_start[s+1] do
+ begin if str_pool[j]<>buffer[k] then
+ begin result:=false; goto not_found;
+ end;
+@z
+@x module 380 [many compilers don't handle "while true do" very well]
+label done;
+begin loop begin get_next;
+@^inner loop@>
+ if cur_cmd<=max_command then goto done;
+ if cur_cmd>=call then
+ if cur_cmd<end_template then macro_call
+ else begin cs_ptr:=frozen_endv; cur_cmd:=endv;
+ goto done; {|cur_chr=null_list|}
+ end
+ else expand;
+ end;
+@y
+label restart,done;
+begin restart: get_next;
+@^inner loop@>
+if cur_cmd<=max_command then goto done;
+if cur_cmd>=call then
+ if cur_cmd<end_template then macro_call
+ else begin cs_ptr:=frozen_endv; cur_cmd:=endv;
+ goto done; {|cur_chr=null_list|}
+ end
+else expand;
+goto restart;
+@z
+@x module 829 [preparation for change to module 852]
+label exit,done,continue,deactivate;
+@y
+label exit,done,done1,continue,deactivate;
+@z
+@x module 830 [ditto]
+@!save_link:pointer; {temporarily holds value of |link(cur_p)|}
+@y
+@!save_link:pointer; {temporarily holds value of |link(cur_p)|}
+@!shortfall:scaled; {used in badness calculations}
+@z
+@x modue 851 [ditto]
+if cur_active_width[1]<line_width then
+@y
+shortfall:=line_width-cur_active_width[1]; {we're this much too short}
+if shortfall>0 then
+@z
+@x module 852 [avoid calling |badness| in most common case]
+else begin b:=badness(line_width-cur_active_width[1],cur_active_width[2]);
+@y
+else begin if shortfall>7230584 then if cur_active_width[2]<1663497 then
+ begin b:=inf_bad; fit_class:=very_loose_fit; goto done1;
+ end;
+ b:=badness(shortfall,cur_active_width[2]);
+@z
+@x module 852, continued
+ else fit_class:=decent_fit;
+@y
+ else fit_class:=decent_fit;
+ done1:
+@z
+@x module 853 [using |shortfall|, since we now have it]
+begin if cur_active_width[1]-line_width>cur_active_width[6] then
+ b:=inf_bad+1
+else b:=badness(cur_active_width[1]-line_width,cur_active_width[6]);
+@y
+begin if -shortfall>cur_active_width[6] then b:=inf_bad+1
+else b:=badness(-shortfall,cur_active_width[6]);
+@z
+
+278. Forgotten |error| call (noticed by Gabi Kuper, December 3, 1983)
+@x module 500
+ help1("I'm ignoring this; it doesn't match any \if.");
+@y
+ help1("I'm ignoring this; it doesn't match any \if.");
+ error;
+@z
+
+*** Version 1.0 released on December 3, 1983 incorporates all of the above.
+ Version 1.1
+
+279. Problem with change 267 (found by Mike Urban, received 2 Feb 84)
+(I had overlooked many problems, e.g. `{\font\a=x \global\a}\the\font'
+and `\font\a=x \font\b=x \let\b=\undefined \the\a', etc.
+The remedy involves removal of the font_ident array, so there's a
+sprinkling of corrections in lots of modules. But basically the change
+is quite conservative, so it shouldn't spawn any new bugs (it says here).)
+
+@x module 174 (removing a reference to |font_ident|)
+ else sprint_cs(font_ident[font(p)]);
+@y
+ else @<Print the font identifier for |font(p)|@>;
+@z
+@x module 176 (removing a reference to |font_ident|)
+ else sprint_cs(font_ident[font(p)]);
+@y
+ else @<Print the font identifier for |font(p)|@>;
+@z
+@x module 222 (redefining and expanding the `frozen' area)
+@d frozen_null_font=frozen_control_sequence+9 {permanent `\.{\\nullfont}'}
+@d frozen_dont_expand=frozen_control_sequence+10
+ {permanent `\.{\\notexpanded:}'}
+@d undefined_control_sequence=frozen_control_sequence+11 {dummy location}
+@y
+@d frozen_dont_expand=frozen_control_sequence+9
+ {permanent `\.{\\notexpanded:}'}
+@d frozen_null_font=frozen_control_sequence+10
+ {permanent `\.{\\nullfont}'}
+@d font_id_base=frozen_null_font-font_base
+ {begins table of 257 permanent font identifiers}
+@d undefined_control_sequence=frozen_null_font+257 {dummy location}
+@z
+@x module 234 (removing a reference to |font_ident|, awkwardly)
+print_char("="); sprint_cs(font_ident[equiv(n)]);
+@y
+print_char("=");@/
+print_esc(hash[font_id_base+equiv(n)].rh);
+ {that's |text(font_id_base+equiv(n))|}
+@z
+@x module 256 (adding a new macro, font_id_text)
+@d hash_is_full == (hash_used=hash_base) {test if all positions are occupied}
+@y
+@d hash_is_full == (hash_used=hash_base) {test if all positions are occupied}
+@d font_id_text(#) == text(font_id_base+#) {a frozen font identifier's name}
+@z
+@x module 262 (relaxing a former restriction)
+else if (text(p)<128)or(text(p)>=str_ptr) then print_esc("NONEXISTENT.")
+@y
+else if (text(p)<0)or(text(p)>=str_ptr) then print_esc("NONEXISTENT.")
+@z
+@x module 267 (pick up the changes from 174 and 176)
+@!@^Single-character primitives@>
+@y
+@!@^Single-character primitives@>
+
+Meanwhile, this is a convenient place to catch up on something we were unable
+to do before the hash table was defined:
+
+@<Print the font identifier for |font(p)|@>=
+print_esc(font_id_text(font(p)))
+@z
+@x module 415 (removing another reference to font_ident)
+ scanned_result(font_ident[cur_val])(ident_val);
+@y
+ scanned_result(font_id_base+cur_val)(ident_val);
+@z
+@x module 548 (change to the comment only)
+to the user's font~\.{\\f}. For example, if this internal number is 13,
+we will have |font_ident[13]=p| and |equiv(p)=13|, where |p| is the |eqtb|
+location of the control sequence~\.{\\f}.
+@y
+to the user's font~\.{\\f}. Adding this number to |font_id_base| gives the
+|eqtb| location of a ``frozen'' control sequence that will always select
+the font.
+@z
+@x module 549 (deleting the declaration of font_ident)
+@!font_ident:array[internal_font_number] of pointer; {the most recent user
+ font identifier corresponding to an internal font number}
+@y
+@z
+@x module 552 (deleting an unnecessary initialization of font_ident)
+font_ident[null_font]:=frozen_null_font;
+@y
+@z
+@x module 579 (removing another reference to font_ident)
+ begin print_err("Font "); sprint_cs(font_ident[f]);
+@y
+ begin print_err("Font "); print_esc(font_id_text(f));
+@z
+@x module 1257 (this is the real change!)
+begin if job_name=0 then open_log_file;
+ {avoid confusing \.{texput} with the font name}
+get_r_token; u:=cs_ptr;
+define(u,set_font,null_font); scan_optional_equals; scan_file_name;
+@<Scan the font size specification@>;
+@<If this font has already been loaded, set |f| to the internal
+ font number and |goto common_ending|@>;
+f:=read_font_info(u,cur_name,cur_area,s);
+common_ending: equiv(u):=f; font_ident[f]:=u;
+@y
+@!t:str_number; {name for the frozen font identifier}
+@!old_setting:0..max_selector; {holds |selector| setting}
+begin if job_name=0 then open_log_file;
+ {avoid confusing \.{texput} with the font name}
+get_r_token; u:=cs_ptr;
+if u>=hash_base then t:=text(u)
+else if u>=single_base then
+ if u=null_cs then t:="FONT"@+else t:=u-single_base
+else begin old_setting:=selector; selector:=new_string;
+ print("FONT"); print(u-active_base); selector:=old_setting;
+@.FONTx@>
+ str_room(1); t:=make_string;
+ end;
+define(u,set_font,null_font); scan_optional_equals; scan_file_name;
+@<Scan the font size specification@>;
+@<If this font has already been loaded, set |f| to the internal
+ font number and |goto common_ending|@>;
+f:=read_font_info(u,cur_name,cur_area,s);
+common_ending: equiv(u):=f; eqtb[font_id_base+f]:=eqtb[u]; font_id_text(f):=t;
+@z
+@x module 1260 (change to the comment only)
+the new value becomes the |font_ident| of record. Font names `\.{xyz}' and
+@y
+the new name becomes the font identifier of record. Font names `\.{xyz}' and
+@z
+@x module 1322 (no need to dump font_ident)
+begin dump_int(font_ident[k]);
+dump_qqqq(font_check[k]);
+@y
+begin dump_qqqq(font_check[k]);
+@z
+@x module 1322 (or to print from it)
+print_nl("\font"); sprint_cs(font_ident[k]); print_char("=");
+@y
+print_nl("\font"); print_esc(font_id_text(k)); print_char("=");
+@z
+@x module 1323 (or to undump it)
+begin undump(active_base)(undefined_control_sequence)(font_ident[k]);
+undump_qqqq(font_check[k]);@/
+@y
+begin undump_qqqq(font_check[k]);@/
+@z
+
+280. Double interrupt possibility (found by Clint Cuzzo, received 9 Feb 84)
+@x module 1031
+if interrupt>0 then if OK_to_interrupt then
+ begin back_input; pause_for_instructions; goto big_switch;
+@y
+if interrupt<>0 then if OK_to_interrupt then
+ begin back_input; check_interrupt; goto big_switch;
+@z
+
+281. Improve spacing in $(A,<)$. (12 Feb 84)
+@x module 764
+"0234000122*4000133**3**344*0400400*000000234000111*4111112341011"
+@y
+"0234000122*4000133**3**344*0400400*000000234000111*1111112341011"
+@z
+
+282. Bad goto! (diagnosis by Clint Cuzzo and George O'Connor, recd 13 Feb 84)
+@x module 344 (here we simply change the name of module 346)
+any_state_plus(invalid_char): @<Decry the invalid character and
+ |goto switch|@>;
+@y
+any_state_plus(invalid_char): @<Decry the invalid character and
+ |goto restart|@>;
+@z
+@x module 346 (because clear_for_error_prompt might make state=token_list)
+goto switch;
+@y
+goto restart;
+@z
+
+283. String pool economy (suggested by DRF, 13 Feb 84)
+@x module 537
+@<Read the first line of the new file@>;
+@y
+if name=str_ptr-1 then {we can conserve string pool space now}
+ begin flush_string; name:=cur_name;
+ end;
+@<Read the first line of the new file@>;
+@z
+
+284. Nicer scaled output (suggested by METAFONT development, 26 Feb 84)
+@x module 103
+be reproduced exactly. [{\sl Proof:\/} If round$(x)=\lfloor
+x+{1\over2}\rfloor$ and if $\alpha<1$, it is not difficult to verify that
+round$(\alpha\,\hbox{round}( \alpha^{-1}n))=n$ for all integers |n|. In
+our case $\alpha=2^{16}/10^5$.]
+
+@p procedure print_scaled(@!s:scaled); {prints scaled real, rounded to five
+ digits}
+begin if s<0 then
+ begin print_char("-"); negate(s); {print the sign, if negative}
+ end;
+print_int(s div unity); {print the integer part}
+s:=((s mod unity) * 3125 + 1024) div 2048;
+ {now |0<=s<100000| is the fraction part}
+print_char(".");
+repeat print_char("0"+(s div 10000)); s:=10*(s mod 10000);
+until s=0;
+end;
+@y
+be reproduced exactly; the ``simplest'' such decimal number is output,
+but there is always at least one digit following the decimal point.
+
+The invariant relation in the \&{repeat} loop is that a sequence of
+decimal digits yet to be printed will yield the original number if and only if
+they form a fraction~$f$ in the range $s-\delta\L10\cdot2^{16}f<s$.
+We can stop if and only if $f=0$ satisfies this condition; the loop will
+terminate before $s$ can possibly become zero.
+
+@p procedure print_scaled(@!s:scaled); {prints scaled real, rounded to five
+ digits}
+var delta:scaled; {amount of allowable inaccuracy}
+begin if s<0 then
+ begin print_char("-"); negate(s); {print the sign, if negative}
+ end;
+print_int(s div unity); {print the integer part}
+print_char(".");
+s:=10*(s mod unity)+5; delta:=10;
+repeat if delta>unity then s:=s+@'100000-(delta div 2); {round the last digit}
+print_char("0"+(s div unity)); s:=10*(s mod unity); delta:=delta*10;
+until s<=delta;
+end;
+@z
+
+*** Those six changes account for version 1.1 (February 29, 1984).
+*** And we put the following change in too, at the last minute:
+
+285. ".00000762939453126pt" didn't round correctly! (March 2, 1984)
+@x module 452
+ if k<16 then {digits for |k>=16| cannot affect the result}
+@y (Note, I also changed the comment in module 102: 16 -> 17)
+ if k<17 then {digits for |k>=17| cannot affect the result}
+@z
+
+*** Note: I changed "cs_ptr" to "cur_cs", since the name change is more
+indicative of the fact that this variable makes a trio with cur_cmd
+and cur_chr. The TEX.WEB source changed 78 times, as a result, but
+none of the author's change files were affected.
+(But note: "save_cs_ptr" was not changed to "save_cur_cs", because
+of a name conflict.)
+
+*** And the following two were slipped in at the last second:
+
+286. loophole permitted get_next recursion (March 16, 1984)
+@x module 336
+ begin @<Back up an outer control sequence so that it can be reread@>;
+@y
+ begin deletions_allowed:=false;
+ @<Back up an outer control sequence so that it can be reread@>;
+@z
+@x ibid
+ end;
+@y
+ deletions_allowed:=true;
+ end;
+@z [the changes to deletions_allowed in module 338 can now be removed]
+
+287. terminal not open when the program starts bad (March 24, 1984)
+@x module 1332
+initialize; {set global variables to their starting values}
+@<Check the ``constant'' values...@>@;
+if bad>0 then
+ begin wake_up_terminal;
+ wterm('Ouch---my internal constants have been',
+ ' clobbered!---case ',bad:1);
+@.Ouch...clobbered@>
+ goto final_end;
+ end;
+@y
+@<Check the ``constant'' values...@>@;
+if bad>0 then
+ begin t_open_out;
+ wterm('Ouch---my internal constants have been',
+ ' clobbered!---case ',bad:1);
+@.Ouch...clobbered@>
+ goto final_end;
+ end;
+initialize; {set global variables to their starting values}
+@z
+
+*** Note: "Cosmetic" changes were also made in module 363 ("print_ln"
+moved to after "wake_up_terminal") and in some commentary.
+
+*** Another last-minute correction:
+288. \patterns{xxx...xxxdxxxdxxx} anomaly found by JRD (Mar 27, 1984)
+@x module 962
+else begin hyf[k]:=cur_chr-"0"; digit_sensed:=true;
+@y
+else begin hyf[k]:=cur_chr-"0";
+ if k<63 then digit_sensed:=true;
+@z
+
+*** Yoicks, yet ANOTHER:
+289. a whole case of copy_node_list forgotten (Apr 11, 1984)
+@x module 206
+othercases confusion("copying")
+@y
+adjust_node: begin r:=get_node(small_node_size);
+ adjust_ptr(r):=copy_node_list(adjust_ptr(p));
+ end; {|words=1=small_node_size-1|}
+othercases confusion("copying")
+@z
+
+*** And "finally"...
+290. uninitialized variables could be accessed (found by Nick Briggs, June 11)
+@x module 552
+font_size[null_font]:=0; font_dsize[null_font]:=0;
+@y
+font_size[null_font]:=0; font_dsize[null_font]:=0;
+char_base[null_font]:=0; width_base[null_font]:=0;
+height_base[null_font]:=0; depth_base[null_font]:=0;
+italic_base[null_font]:=0; lig_kern_base[null_font]:=0;
+kern_base[null_font]:=0; exten_base[null_font]:=0;
+@z (actual values are immaterial except for debugging safeguards)
+
+291. same, cf. modules 355 and 389 (Nick Briggs, June 11)
+@x module 331
+scanner_status:=normal; first:=1;
+@y
+for first:=0 to buf_size do buffer[first]:=0;
+scanner_status:=normal; warning_index:=null; first:=1;
+@z (error was harmless except that it might trigger debugging checks)
+
+292. missing ligature/kern (found by JRD, June 21)
+@x module 1036
+ if (cur_cmd=letter)or(cur_cmd=other_char) then r:=qi(cur_chr)
+@y
+ if (cur_cmd=letter)or(cur_cmd=other_char)or(cur_cmd=char_given) then
+ r:=qi(cur_chr)
+@z
+
+293. quarterword constraint is made explicit (July 4)
+@x module 111
+if (buf_size>max_halfword) then bad:=18;
+@y
+if buf_size>max_halfword then bad:=18;
+if max_quarterword-min_quarterword<255 then bad:=19;
+@z
+
+294. trivial optimization made for consistency with MF (July 7)
+@x module 363
+if (pausing>0)and(interaction>nonstop_mode) then
+@y
+if pausing>0 then if interaction>nonstop_mode then
+@z
+
+295. \tracingmacros>1 for more diagnostics (July 8)
+@x module 323
+ if t=macro then param_start:=param_ptr@+else loc:=link(p);
+@y
+ if t=macro then param_start:=param_ptr
+ else begin loc:=link(p);
+ if tracing_macros>1 then
+ begin begin_diagnostic; print_nl("");
+ case t of
+ mark_text:print_esc("mark");
+ write_text:print_esc("write");
+ othercases print_cmd_chr(assign_toks,t-output_text+output_routine_loc)
+ endcases;@/
+ print("->"); token_show(p); end_diagnostic(false);
+ end;
+ end;
+@z
+
+*** The changes above were incorporated in Version 1.1, released July 9, 1984.
+ Version 1.2
+
+296. "see the transcript file" on offline show commands. (July 27, 1984)
+@x module 1293
+@ @d show_error==@;@/
+ if interaction<error_stop_mode then
+ begin help0; decr(error_count);
+ end
+ else if tracing_online>0 then
+ begin@t@>@;@/
+ help3("This isn't an error message; I'm just \showing something.")
+ @t\4\4@>@/
+ ("Type `I\show...' to show more (e.g., \show\cs,")@/
+ ("\showthe\count10, \showbox255, \showlists).");
+ end
+ else begin@t@>@;@/
+ help5("This isn't an error message; I'm just \showing something.")
+ @t\4\4@>@/
+ ("Type `I\show...' to show more (e.g., \show\cs,")@/
+ ("\showthe\count10, \showbox255, \showlists).")@/
+ ("And type `I\tracingonline=1\show...' to show boxes and")@/
+ ("lists on your terminal as well as in the transcript file.");
+ end;
+ error
+
+@<Declare act...@>=
+procedure show_whatever;
+var p:pointer; {tail of a token list to show}
+begin case cur_chr of
+show_code: @<Show the current meaning of a token@>;
+show_box_code: @<Show the current contents of a box@>;
+show_the_code: @<Show the current value of some parameter or register@>;
+othercases @<Show the current semantic nest@>
+endcases;
+end;
+@y
+@ @<Declare act...@>=
+procedure show_whatever;
+label common_ending;
+var p:pointer; {tail of a token list to show}
+begin case cur_chr of
+show_lists: begin begin_diagnostic; show_activities;
+ end;
+show_box_code: @<Show the current contents of a box@>;
+show_code: @<Show the current meaning of a token, then |goto common_ending|@>;
+othercases @<Show the current value of some parameter or register,
+ then |goto common_ending|@>
+endcases;@/
+@<Complete a potentially long \.{\\show} command@>;
+common_ending: if interaction<error_stop_mode then
+ begin help0; decr(error_count);
+ end
+else if tracing_online>0 then
+ begin@t@>@;@/
+ help3("This isn't an error message; I'm just \showing something.")@/
+ ("Type `I\show...' to show more (e.g., \show\cs,")@/
+ ("\showthe\count10, \showbox255, \showlists).");
+ end
+else begin@t@>@;@/
+ help5("This isn't an error message; I'm just \showing something.")
+ ("Type `I\show...' to show more (e.g., \show\cs,")@/
+ ("\showthe\count10, \showbox255, \showlists).")@/
+ ("And type `I\tracingonline=1\show...' to show boxes and")@/
+ ("lists on your terminal as well as in the transcript file.");
+ end;
+error;
+end;
+@z
+@x module 1294
+@ @<Show the current meaning of a token@>=
+begin get_token; print_nl("> ");
+if cur_cs<>0 then
+ begin sprint_cs(cur_cs); print_char("=");
+ end;
+print_meaning; show_error;
+@y
+@ @<Show the current meaning of a token...@>=
+begin get_token; print_nl("> ");
+if cur_cs<>0 then
+ begin sprint_cs(cur_cs); print_char("=");
+ end;
+print_meaning; goto common_ending;
+@z
+@x module 1296
+end_diagnostic(true);
+print_err("OK");
+@.OK@>
+show_error;
+@y
+@z
+@x module 1297
+flush_list(link(temp_head)); show_error;
+@y
+flush_list(link(temp_head)); goto common_ending;
+@z
+@x module 1298
+@ @<Show the current semantic nest@>=
+begin begin_diagnostic; show_activities; end_diagnostic(true);
+print_err("OK");
+show_error;
+@.OK@>
+end
+@y
+@ @<Complete a potentially long \.{\\show} command@>=
+end_diagnostic(true); print_err("OK");
+@.OK@>
+if selector=term_and_log then if tracing_online<=0 then
+ begin selector:=term_only; print(" (see the transcript file)");
+ selector:=term_and_log;
+ end
+@z
+
+297. allow `0' in response to error prompts (October 20, 1984)
+@x module 84
+"1","2","3","4","5","6","7","8","9": if deletions_allowed then
+@y
+"0","1","2","3","4","5","6","7","8","9": if deletions_allowed then
+@z
+ Versions 1.3 and 1.4
+
+298. Dirty PASCAL (two quarterword 0's were read as a halfword) (25 Nov 84)
+@x module 846
+print(" -> @@@@"); print_int(serial(prev_break(passive)));
+@y
+print(" -> @@@@");
+if prev_break(passive)=null then print_char("0")
+else print_int(serial(prev_break(passive)));
+@z
+
+299. Ditto! (25 Nov 84)
+@x module 934
+label reswitch, exit, found, not_found;
+@y
+label reswitch, exit, found, not_found, done;
+@z
+@x module 939
+while info(p)>n-3 do {eliminate hyphens \TeX\ doesn't like}
+ begin q:=link(p); free_avail(p); p:=q;
+ end;
+@<Insert the \(p)pair |(s,p)| into the exception table@>;
+@y
+loop@+ begin if p=null then goto done;
+ if info(p)<n-2 then goto done;
+ q:=link(p); free_avail(p); p:=q; {eliminate hyphens that \TeX\ doesn't like}
+ end;
+done: @<Insert the \(p)pair |(s,p)| into the exception table@>;
+@z
+
+300. Major change to memory management (25 Nov 84)
+[The following changes have two main merits: (1) TeX should run faster on
+virtual-memory systems when the jobs are small; (2) it should be possible
+to use the same production version of TeX both for jobs with lots of macros
+and few boxes as well as for jobs with lots of boxes and few macros, because
+the boundary line between the two types of storage is now chosen dynamically.]
+[The user is unaffected, except that there's only one "memory size" overflow
+error now instead of two.]
+[The TRIP test is now changed slightly: The correct settings of memory
+size parameters are now mem_min=mem_bot=1, mem_top=mem_max=3000.]
+
+@x module 11
+@!mem_max=30000; {greatest index in \TeX's internal |mem| array;
+ must be strictly less than |max_halfword|}
+@y
+@!mem_max=30000; {greatest index in \TeX's internal |mem| array;
+ must be strictly less than |max_halfword|;
+ must be equal to |mem_top| in \.{INITEX}, otherwise |>=mem_top|}
+@!mem_min=0; {smallest index in \TeX's internal |mem| array;
+ must be |min_halfword| or more;
+ must be equal to |mem_bot| in \.{INITEX}, otherwise |<=mem_bot|}
+@z
+@x module 12
+@d mem_base=0 {smallest index in the |mem| array; must not be less
+ than |min_halfword|}
+@d hi_mem_base=13000 {smallest index in the single-word area of |mem|;
+ must be substantially larger than |mem_base| and smaller than |mem_max|}
+@y
+@d mem_bot=0 {smallest index in the |mem| array dumped by \.{INITEX};
+ must not be less than |mem_min|}
+@d mem_top==30000 {largest index in the |mem| array dumped by \.{INITEX};
+ must be substantially larger than |mem_bot|
+ and not greater than |mem_max|}
+@z
+@x module 12
+ about |(mem_max-hi_mem_base)/6|, but 2100 is already quite generous}
+@y
+ about |(mem_max-mem_min)/10|, but 2100 is already quite generous}
+@z
+@x module 14
+if (hi_mem_base<mem_base+100)or(hi_mem_base+100>mem_max) then bad:=4;
+@y
+if mem_bot+1100>mem_top then bad:=4;
+@z
+@x module 111
+if (min_quarterword>0)or(max_quarterword<127) then bad:=11;
+@y
+init if (mem_min<>mem_bot)or(mem_max<>mem_top) then bad:=10;@+tini@;@/
+if (mem_min>mem_bot)or(mem_max<mem_top) then bad:=10;
+if (min_quarterword>0)or(max_quarterword<127) then bad:=11;
+@z
+@x module 111
+if (mem_base<min_halfword)or(mem_max>=max_halfword) then bad:=14;
+@y
+if (mem_min<min_halfword)or(mem_max>=max_halfword) then bad:=14;
+@z
+@x module 115
+value represents a null pointer.
+
+@d pointer==halfword {a flag or a location in |mem| or |eqtb|}
+@d null==mem_base {the null pointer}
+@y
+value represents a null pointer. \TeX\ does not assume that |mem[null]| exists.
+
+@d pointer==halfword {a flag or a location in |mem| or |eqtb|}
+@d null==min_halfword {the null pointer}
+@z
+@x module 116
+@ The |mem| array is divided once and for all into two regions that are
+allocated separately. Locations less than |hi_mem_base| are used for storing
+@y
+@ The |mem| array is divided into two regions that are allocated separately,
+but the dividing line between these two regions is not fixed; they grow
+together until finding their ``natural'' size in a particular job.
+Locations less than or equal to |lo_mem_max| are used for storing
+@z
+@x module 116
+relevant size when a node is freed. The remaining region of |mem| is
+allocated in single words using a conventional \.{AVAIL} stack.
+
+Incidentally, it would be feasible to construct implementations of \TeX\ that
+are based on 16-bit words instead of 32-bit words, for machines having
+comparatively small memories. In such cases it might be desirable to have
+two parallel arrays for the upper part of memory, called say \\{mem\_link}|[p]|
+and \\{mem\_info}|[p]|,
+since the single-word region in the present implementation
+consists entirely of |memory_word| items of type |two_halves|.
+@^small computers@>
+@y
+relevant size when a node is freed. Locations greater than or equal to
+|hi_mem_min| are used for storing one-word records; a conventional
+\.{AVAIL} stack is used for allocation in this region.
+
+Locations of |mem| between |mem_bot| and |mem_top| may be dumped as part
+of preloaded format files, by the \.{INITEX} preprocessor.
+@.INITEX@>
+Production versions of \TeX\ may extend the memory at both ends in order to
+provide more space; locations between |mem_min| and |mem_bot| are always
+used for variable-size nodes, and locations between |mem_top| and |mem_max|
+are always used for single-word nodes.
+
+The key pointers that govern |mem| allocation have a prescribed order:
+$$\hbox{|null<=mem_min<=mem_bot<lo_mem_max<
+ hi_mem_min<mem_top<=mem_end<=mem_max|.}$$
+@z
+@x module 116
+@!mem : array[mem_base..mem_max] of memory_word; {the big dynamic storage area}
+@y
+@!mem : array[mem_min..mem_max] of memory_word; {the big dynamic storage area}
+@!lo_mem_max : pointer; {the largest location of variable-size memory in use}
+@!hi_mem_min : pointer; {the smallest location of one-word memory in use}
+@z
+@x module 117
+@!max_var_used : integer; {how much memory was in use}
+@y
+@z
+@x module 118
+occur between |hi_mem_base| and |mem_end|, inclusive, are of type
+@y
+occur between |hi_mem_min| and |mem_end|, inclusive, are of type
+@z
+@x module 120
+else begin runaway; {if memory is exhausted, display possible runaway text}
+ overflow("macro memory size",mem_max+1-hi_mem_base);
+ {quit; all one-word nodes are busy}
+@:TeX capacity exceeded macro memory size}{\quad macro memory size@>
+ end;
+@y
+else begin decr(hi_mem_min); p:=hi_mem_min;
+ if hi_mem_min<=lo_mem_max then
+ begin runaway; {if memory is exhausted, display possible runaway text}
+ overflow("main memory size",mem_max+1-mem_min);
+ {quit; all one-word nodes are busy}
+@:TeX capacity exceeded main memory size}{\quad main memory size@>
+ end;
+ end;
+@z
+@x module 125
+label found,exit;
+@y
+label found,exit,restart;
+@z
+@x module 125
+begin p:=rover; {start at some free node in the ring}
+@y
+begin restart: p:=rover; {start at some free node in the ring}
+@z
+@x module 125
+overflow("box memory size",hi_mem_base-mem_base);
+ {sorry, nothing satisfactory is left}
+@:TeX capacity exceeded box memory size}{\quad box memory size@>
+found: link(r):=null; {this node is now nonempty}
+@!stat var_used:=var_used+s; {maintain usage statistics}
+if var_used>max_var_used then max_var_used:=var_used;
+@y
+if lo_mem_max+2<hi_mem_min then
+ @<Grow more variable-size memory and |goto restart|@>;
+overflow("main memory size",mem_max+1-mem_min);
+ {sorry, nothing satisfactory is left}
+@:TeX capacity exceeded main memory size}{\quad main memory size@>
+found: link(r):=null; {this node is now nonempty}
+@!stat var_used:=var_used+s; {maintain usage statistics}
+@z
+@x modules 126--127
+@ Empirical tests show that the routine in this section performs a
+|remove_node| operation about 0.75 times per allocation, on the average,
+after which it finds that |r>p+1| about 95\% of the time.
+
+@<Try to allocate...@>=
+q:=p+node_size(p); {find the physical successor}
+@^inner loop@>
+while is_empty(q) do @<Merge node |p| with node |q|@>;
+r:=q-s;
+if r>p+1 then @<Allocate from the top of node |p| and |goto found|@>;
+if r=p then if ((rlink(p)<>rover) or (llink(p)<>rover)) then
+ @<Allocate entire node |p| and |goto found|@>;
+node_size(p):=q-p {reset the size in case it grew}
+
+@ @<Merge node |p| with node |q|@>=
+begin t:=rlink(q);
+@^inner loop@>
+if q=rover then rover:=t;
+llink(t):=llink(q); rlink(llink(q)):=t;@/
+q:=q+node_size(q);
+end
+@y
+@ The lower part of |mem| grows by 1000 words at a time, unless
+we are very close to going under. When it grows, we simply link
+a new node into the available-space list. This method of controlled
+growth helps to keep the |mem| usage consecutive when \TeX\ is
+implemented on ``virtual memory'' systems.
+@^virtual memory@>
+
+@<Grow more variable-size memory and |goto restart|@>=
+begin if lo_mem_max+1000<hi_mem_min then t:=lo_mem_max+1000
+else t:=(lo_mem_max+hi_mem_min+2) div 2; {|lo_mem_max+2<=t<hi_mem_min|}
+p:=llink(rover); q:=lo_mem_max; rlink(p):=q; llink(rover):=q;@/
+rlink(q):=rover; llink(q):=p; link(q):=empty_flag; node_size(q):=t-lo_mem_max;@/
+lo_mem_max:=t; link(lo_mem_max):=null; info(lo_mem_max):=null;
+rover:=q; goto restart;
+end
+
+@ Empirical tests show that the routine in this section performs a
+node-merging operation about 0.75 times per allocation, on the average,
+after which it finds that |r>p+1| about 95\% of the time.
+
+@<Try to allocate...@>=
+q:=p+node_size(p); {find the physical successor}
+@^inner loop@>
+while is_empty(q) do {merge node |p| with node |q|}
+ begin t:=rlink(q);
+ if q=rover then rover:=t;
+ llink(t):=llink(q); rlink(llink(q)):=t;@/
+ q:=q+node_size(q);
+ end;
+r:=q-s;
+if r>p+1 then @<Allocate from the top of node |p| and |goto found|@>;
+if r=p then if ((rlink(p)<>rover) or (llink(p)<>rover)) then
+ @<Allocate entire node |p| and |goto found|@>;
+node_size(p):=q-p {reset the size in case it grew}
+@z
+% module 129 no longer refers to remove_node; I don't recall when it changed!
+@x module 134
+@d is_char_node(#) == (#>hi_mem_base)
+@y
+@d is_char_node(#) == (#>=hi_mem_min)
+@z
+@x module 162
+example, locations |mem_base| to |mem_base+3| are always used to store the
+specification for glue that is `\.{0pt plus 0pt minus 0pt}'. The
+following macro definitions accomplish the static allocation by giving
+symbolic names to the fixed positions. Dynamic allocation of variable-size
+nodes is restricted to locations |first_mem| through |(hi_mem_base-1)|,
+and single-word nodes are dynamically allocated in locations |second_mem|
+through |mem_max|, inclusive. It is harmless to let |lig_trick|, |garbage|,
+and |backup_head| share the same location of |mem|.
+
+@d zero_glue==mem_base {specification for \.{0pt plus 0pt minus 0pt}}
+@y
+example, locations |mem_bot| to |mem_bot+3| are always used to store the
+specification for glue that is `\.{0pt plus 0pt minus 0pt}'. The
+following macro definitions accomplish the static allocation by giving
+symbolic names to the fixed positions. Static variable-size nodes appear
+in locations |mem_bot| through |lo_mem_stat_max|, and static single-word nodes
+appear in locations |hi_mem_stat_min| through |mem_top|, inclusive. It is
+harmless to let |lig_trick|, |garbage|, and |backup_head| share the same
+location of |mem|.
+
+@d zero_glue==mem_bot {specification for \.{0pt plus 0pt minus 0pt}}
+@z
+@x module 162
+@d first_mem==fil_neg_glue+glue_spec_size {first dynamically allocatable word
+ in the variable-size |mem|}
+@#
+@d page_ins_head==hi_mem_base {list of insertion data for current page}
+@d contrib_head==hi_mem_base+1 {vlist of items not yet on current page}
+@d page_head==hi_mem_base+2 {vlist for current page}
+@d temp_head==hi_mem_base+3 {head of a temporary list of some kind}
+@d hold_head==hi_mem_base+4 {head of a temporary list of another kind}
+@d adjust_head==hi_mem_base+5 {head of adjustment list returned by |hpack|}
+@d active==hi_mem_base+6 {head of active list in |line_break|, needs two words}
+@d align_head==hi_mem_base+8 {head of preamble list for alignments}
+@d end_span==hi_mem_base+9 {tail of spanned-width lists}
+@d omit_template==hi_mem_base+10 {a constant token list}
+@d null_list==hi_mem_base+11 {permanently empty list}
+@d lig_trick==hi_mem_base+12 {a ligature masquerading as a |char_node|}
+@d garbage==hi_mem_base+12 {used for scrap information}
+@d backup_head==hi_mem_base+13 {head of token list built by |scan_keyword|}
+@d second_mem==hi_mem_base+14 {first dynamically allocatable word in
+ the one-word |mem|}
+@y
+@d lo_mem_stat_max==fil_neg_glue+glue_spec_size-1 {largest statically
+ allocated word in the variable-size |mem|}
+@#
+@d page_ins_head==mem_top {list of insertion data for current page}
+@d contrib_head==mem_top-1 {vlist of items not yet on current page}
+@d page_head==mem_top-2 {vlist for current page}
+@d temp_head==mem_top-3 {head of a temporary list of some kind}
+@d hold_head==mem_top-4 {head of a temporary list of another kind}
+@d adjust_head==mem_top-5 {head of adjustment list returned by |hpack|}
+@d active==mem_top-6 {head of active list in |line_break|, needs two words}
+@d align_head==mem_top-8 {head of preamble list for alignments}
+@d end_span==mem_top-9 {tail of spanned-width lists}
+@d omit_template==mem_top-10 {a constant token list}
+@d null_list==mem_top-11 {permanently empty list}
+@d lig_trick==mem_top-12 {a ligature masquerading as a |char_node|}
+@d garbage==mem_top-12 {used for scrap information}
+@d backup_head==mem_top-13 {head of token list built by |scan_keyword|}
+@d hi_mem_stat_min==mem_top-13 {smallest statically allocated word in
+ the one-word |mem|}
+@z
+@x module 164
+for k:=mem_base+1 to first_mem-1 do mem[k].sc:=0;
+ {all glue dimensions are zeroed}
+@^data structure assumptions@>
+k:=mem_base;@+while k<first_mem do {set first words of glue specifications}
+@y
+for k:=mem_bot+1 to lo_mem_stat_max do mem[k].sc:=0;
+ {all glue dimensions are zeroed}
+@^data structure assumptions@>
+k:=mem_bot;@+while k<=lo_mem_stat_max do
+ {set first words of glue specifications}
+@z
+@x module 164
+rover:=first_mem; link(rover):=empty_flag; {now initialize the dynamic memory}
+node_size(rover):=hi_mem_base-rover; {which is one big available node}
+llink(rover):=rover; rlink(rover):=rover;@/
+link(hi_mem_base):=null; info(hi_mem_base):=null;
+for k:=hi_mem_base+1 to second_mem-1 do
+ mem[k]:=mem[hi_mem_base];{clear list heads}
+@<Initialize the special list heads and constant nodes@>;
+avail:=null; mem_end:=second_mem-1; {initialize the one-word memory}
+var_used:=first_mem-mem_base; dyn_used:=second_mem-hi_mem_base;
+max_var_used:=var_used; {initialize statistics}
+@y
+rover:=lo_mem_stat_max+1;
+link(rover):=empty_flag; {now initialize the dynamic memory}
+node_size(rover):=1000; {which is a 1000-word available node}
+llink(rover):=rover; rlink(rover):=rover;@/
+lo_mem_max:=rover+1000; link(lo_mem_max):=null; info(lo_mem_max):=null;@/
+for k:=hi_mem_stat_min to mem_top do
+ mem[k]:=mem[lo_mem_max]; {clear list heads}
+@<Initialize the special list heads and constant nodes@>;
+avail:=null; mem_end:=mem_top;
+hi_mem_min:=hi_mem_stat_min; {initialize the one-word memory}
+var_used:=lo_mem_stat_max+1-mem_bot; dyn_used:=mem_top+1-hi_mem_stat_min;
+ {initialize statistics}
+@z
+@x module 165
+@t\hskip1em@>@!was_mem_end: pointer; {previous |mem_end|}
+@y
+@t\hskip1em@>@!was_mem_end,@!was_lo_max,@!was_hi_min: pointer;
+ {previous |mem_end|, |lo_mem_max|,and |hi_mem_min|}
+@z
+@x module 166
+@!debug was_mem_end:=mem_base; {indicate that everything was previously free}
+@y
+@!debug was_mem_end:=mem_min; {indicate that everything was previously free}
+was_lo_max:=mem_min; was_hi_min:=mem_max;
+@z
+@x module 167
+begin for p:=mem_base to mem_end do free[p]:=false; {you can probably
+ do this faster}
+@y
+begin for p:=mem_min to lo_mem_max do free[p]:=false; {you can probably
+ do this faster}
+for p:=hi_mem_min to mem_end do free[p]:=false; {ditto}
+@z
+@x module 167
+for p:=0 to mem_end do was_free[p]:=free[p]; {|was_free:=free| might be faster}
+was_mem_end:=mem_end;
+@y
+for p:=mem_min to lo_mem_max do was_free[p]:=free[p];
+for p:=hi_mem_min to mem_end do was_free[p]:=free[p];
+ {|was_free:=free| might be faster}
+was_mem_end:=mem_end; was_lo_max:=lo_mem_max; was_hi_min:=hi_mem_min;
+@z
+@x module 168
+ begin if (p>mem_end)or(p<second_mem) then clobbered:=true
+@y
+ begin if (p>mem_end)or(p<hi_mem_min) then clobbered:=true
+@z
+@x module 169
+repeat if (p>=hi_mem_base)or(p<first_mem) then clobbered:=true
+ else if (rlink(p)>=hi_mem_base)or(rlink(p)<first_mem) then clobbered:=true
+ else if not(is_empty(p))or(node_size(p)<2)or@|
+ (p+node_size(p)>hi_mem_base)or@| (llink(rlink(p))<>p) then clobbered:=true;
+@y
+repeat if (p>=lo_mem_max)or(p<mem_min) then clobbered:=true
+ else if (rlink(p)>=lo_mem_max)or(rlink(p)<mem_min) then clobbered:=true
+ else if not(is_empty(p))or(node_size(p)<2)or@|
+ (p+node_size(p)>lo_mem_max)or@| (llink(rlink(p))<>p) then clobbered:=true;
+@z
+@x module 170
+p:=mem_base;
+while p<=hi_mem_base do {node |p| should not be empty}
+@y
+p:=mem_min;
+while p<=lo_mem_max do {node |p| should not be empty}
+@z
+@x module 170
+ while (p<=hi_mem_base) and not free[p] do incr(p);
+ while (p<=hi_mem_base) and free[p] do incr(p);
+@y
+ while (p<=lo_mem_max) and not free[p] do incr(p);
+ while (p<=lo_mem_max) and free[p] do incr(p);
+@z
+@x module 171
+for p:=mem_base to mem_end do
+ if not free[p] and ((p>was_mem_end) or was_free[p]) then
+@y
+for p:=mem_min to lo_mem_max do
+ if not free[p] and ((p>was_lo_max) or was_free[p]) then
+ begin print_char(" "); print_int(p);
+ end;
+for p:=hi_mem_min to mem_end do
+ if not free[p] and
+ ((p<was_hi_min) or (p>was_mem_end) or was_free[p]) then
+@z
+@x module 172
+begin for q:=mem_base to mem_end do
+@y
+begin for q:=mem_min to lo_mem_max do
+@z
+@x module 172
+@<Search |eqtb| for equivalents equal to |p|@>;
+@y
+for q:=hi_mem_min to mem_end do
+ begin if link(q)=p then
+ begin print_nl("LINK("); print_int(q); print_char(")");
+ end;
+ if info(q)=p then
+ begin print_nl("INFO("); print_int(q); print_char(")");
+ end;
+ end;
+@<Search |eqtb| for equivalents equal to |p|@>;
+@z
+@x module 176
+if (p<hi_mem_base)or(p>mem_end) then print_esc("CLOBBERED.")
+@y
+if (p<hi_mem_min)or(p>mem_end) then print_esc("CLOBBERED.")
+@z
+@x module 178
+begin if (p<mem_base)or(p>=hi_mem_base) then print_char("*")
+@y
+begin if (p<mem_min)or(p>=lo_mem_max) then print_char("*")
+@z
+@x module 293
+if (p<hi_mem_base) or (p>mem_end) then
+@y
+if (p<hi_mem_min) or (p>mem_end) then
+@z
+@x module 639
+ print_int(dyn_used); print("; max so far: ");
+ print_int(max_var_used); print_char("&");
+ print_int(mem_end+1-hi_mem_base); print_ln;
+@y
+ print_int(dyn_used); print("; still untouched: ");
+ print_int(hi_mem_min-lo_mem_max-1); print_ln;
+@z
+@x module 857
+begin save_link:=link(cur_p); {this is OK even if |cur_p=null|}
+link(cur_p):=null; print_nl(""); short_display(link(printed_node));
+link(cur_p):=save_link; printed_node:=cur_p;
+@y
+begin print_nl("");
+if cur_p=null then short_display(link(printed_node))
+else begin save_link:=link(cur_p);
+ link(cur_p):=null; print_nl(""); short_display(link(printed_node));
+ link(cur_p):=save_link;
+ end;
+printed_node:=cur_p;
+@z
+@x module 1249
+if 2*max_halfword<hi_mem_base-mem_base then bad:=41;
+@y
+if 2*max_halfword<mem_top-mem_min then bad:=41;
+@z
+@x module 1307
+dump_int(hi_mem_base);@/
+@y
+dump_int(mem_bot);@/
+dump_int(mem_top);@/
+@z
+@x module 1308
+if x<>hi_mem_base then goto bad_fmt;
+@y
+if x<>mem_bot then goto bad_fmt;
+undump_int(x);
+if x<>mem_top then goto bad_fmt;
+@z
+@x module 1311
+dump_int(rover);
+p:=mem_base; q:=rover; x:=0;
+@y
+dump_int(lo_mem_max); dump_int(rover);
+p:=mem_bot; q:=rover; x:=0;
+@z
+@x module 1311
+var_used:=var_used+hi_mem_base-p; dyn_used:=mem_end+1-hi_mem_base;@/
+dump_int(mem_end); dump_int(avail);
+for k:=p to mem_end do dump_wd(mem[k]);
+x:=x+mem_end+1-p;
+@y
+var_used:=var_used+lo_mem_max-p; dyn_used:=mem_end+1-hi_mem_min;@/
+for k:=p to lo_mem_max do dump_wd(mem[k]);
+x:=x+lo_mem_max+1-p;
+dump_int(hi_mem_min); dump_int(avail);
+for k:=hi_mem_min to mem_end do dump_wd(mem[k]);
+x:=x+mem_end+1-hi_mem_min;
+@z
+@x module 1312
+undump(min_halfword)(hi_mem_base)(rover);
+p:=mem_base; q:=rover; x:=0;
+repeat for k:=p to q+1 do undump_wd(mem[k]);
+p:=q+node_size(q);
+if (p>hi_mem_base)or((q>=rlink(q))and(rlink(q)<>rover)) then goto bad_fmt;
+q:=rlink(q);
+until q=rover;
+undump_size(hi_mem_base)(mem_max)('mem max')(mem_end);
+undump(null)(mem_end)(avail);
+for k:=p to mem_end do undump_wd(mem[k]);
+undump_int(var_used); undump_int(dyn_used);
+max_var_used:=var_used
+@y
+undump(lo_mem_stat_max+1000)(hi_mem_stat_min-1)(lo_mem_max);
+undump(lo_mem_stat_max+1)(lo_mem_max)(rover);
+p:=mem_bot; q:=rover; x:=0;
+repeat for k:=p to q+1 do undump_wd(mem[k]);
+p:=q+node_size(q);
+if (p>lo_mem_max)or((q>=rlink(q))and(rlink(q)<>rover)) then goto bad_fmt;
+q:=rlink(q);
+until q=rover;
+for k:=p to lo_mem_max do undump_wd(mem[k]);
+if mem_min<mem_bot-2 then {make more low memory available}
+ begin p:=llink(rover); q:=mem_min+1;
+ link(mem_min):=null; info(mem_min):=null; {we don't use the bottom word}
+ rlink(p):=q; llink(rover):=q;@/
+ rlink(q):=rover; llink(q):=p; link(q):=empty_flag;
+ node_size(q):=mem_bot-q;
+ end;
+undump(lo_mem_max+1)(hi_mem_stat_min)(hi_mem_min);
+undump(null)(mem_top)(avail); mem_end:=mem_top;
+for k:=hi_mem_min to mem_end do undump_wd(mem[k]);
+undump_int(var_used); undump_int(dyn_used)
+@z
+@x module 1323
+undump(min_halfword)(hi_mem_base)(font_glue[k]);
+@y
+undump(min_halfword)(lo_mem_max)(font_glue[k]);
+@z
+@x module 1334
+ wlog_ln(' ',max_var_used:1,'&',mem_end+1-hi_mem_base:1,@|
+ ' words of memory out of ',
+ hi_mem_base-mem_base:1,'&',mem_max+1-hi_mem_base:1);@/
+@y
+ wlog_ln(' ',lo_mem_max-mem_min+mem_end-hi_mem_min+2:1,@|
+ ' words of memory out of ',mem_end+1-mem_min:1);@/
+@z that's the end of change number 300!
+
+301. node_size field could overflow if low mem was too large (Dec 20, 1984)
+[This bug existed from the beginning, if hi_mem_base-first_mem>max_halfword!]
+@x module 111
+if (mem_min<min_halfword)or(mem_max>=max_halfword) then bad:=14;
+@y
+if (mem_min<min_halfword)or(mem_max>=max_halfword)or@|
+ (mem_bot-mem_min>max_halfword+1) then bad:=14;
+@z
+@x module 125
+@!t:pointer; {temporary register}
+@y
+@!t:integer; {temporary register}
+@z
+@x module 125
+if lo_mem_max+2<hi_mem_min then
+@y
+if lo_mem_max+2<hi_mem_min then if lo_mem_max+2<=mem_bot+max_halfword then
+@z
+@x module 126
+rlink(q):=rover; llink(q):=p; link(q):=empty_flag; node_size(q):=t-lo_mem_max;@/
+@y
+if t>mem_bot+max_halfword then t:=mem_bot+max_halfword;
+rlink(q):=rover; llink(q):=p; link(q):=empty_flag; node_size(q):=t-lo_mem_max;@/
+@z
+
+302. Improvement to missing-format-file error (DRF, 5 Jan 85)
+@x module 524
+var j:0..buf_size; {the first space after the file name}
+begin if buffer[loc]="&" then
+ begin incr(loc); j:=loc; buffer[last]:=" ";
+ while buffer[j]<>" " do incr(j);
+ pack_buffered_name(0,loc,j-1); {try first without the system file area}
+ if w_open_in(fmt_file) then
+ begin loc:=j; goto found;
+ end;@/
+ pack_buffered_name(format_area_length,loc,j-1);
+ {now try the system format file area}
+ if w_open_in(fmt_file) then
+ begin loc:=j; goto found;
+ end;
+ wake_up_terminal;
+ wterm_ln('Sorry, I can''t find that format;',' will try PLAIN.');
+@.Sorry, I can't find...@>
+ end;
+ {now pull out all the stops: try for the system \.{PLAIN} file}
+pack_buffered_name(format_default_length-format_ext_length,1,0);
+if not w_open_in(fmt_file) then
+ begin wake_up_terminal;
+ wterm_ln('I can''t find the PLAIN format file!');
+@.I can't find PLAIN...@>
+@.PLAIN@>
+ open_fmt_file:=false; return;
+ end;
+found:open_fmt_file:=true;
+@y
+var j:0..buf_size; {the first space after the format file name}
+begin j:=loc;
+if buffer[loc]="&" then
+ begin incr(loc); j:=loc; buffer[last]:=" ";
+ while buffer[j]<>" " do incr(j);
+ pack_buffered_name(0,loc,j-1); {try first without the system file area}
+ if w_open_in(fmt_file) then goto found;
+ pack_buffered_name(format_area_length,loc,j-1);
+ {now try the system format file area}
+ if w_open_in(fmt_file) then goto found;
+ wake_up_terminal;
+ wterm_ln('Sorry, I can''t find that format;',' will try PLAIN.');
+@.Sorry, I can't find...@>
+ update_terminal;
+ end;
+ {now pull out all the stops: try for the system \.{PLAIN} file}
+pack_buffered_name(format_default_length-format_ext_length,1,0);
+if not w_open_in(fmt_file) then
+ begin wake_up_terminal;
+ wterm_ln('I can''t find the PLAIN format file!');
+@.I can't find PLAIN...@>
+@.PLAIN@>
+ open_fmt_file:=false; return;
+ end;
+found:loc:=j; open_fmt_file:=true;
+@z
+
+303. Welcoming message appears sooner (DRF, Jan 7)
+@x module 61
+else begin print(format_ident); print_ln;
+ end;
+@y
+else begin print(format_ident); print_ln;
+ end;
+update_terminal;
+@z
+
+304. Minor change to help message in "confusion" (Jan 23)
+@x module 95
+ help2("One of your earlier faux pas has wounded me deeply,")@/
+ ("so I'm barely conscious. Please fix it and try again.");
+@y
+ help2("One of your faux pas seems to have wounded me deeply...")@/
+ ("in fact, I'm barely conscious. Please fix it and try again.");
+@z
+
+305. Improved logic for `(see the transcript file...)' (Jan 23)
+@x module 245
+if history=spotless then history:=warning_issued;
+if (tracing_online<=0)and(selector=term_and_log) then decr(selector);
+@y
+if (tracing_online<=0)and(selector=term_and_log) then
+ begin decr(selector);
+ if history=spotless then history:=warning_issued;
+ end;
+@z
+
+306. Change 291 violated standard PASCAL (CET1, Feb 18)
+@x module 331
+for first:=0 to buf_size do buffer[first]:=0;
+@y since some procedures `threaten' |first| globally [BS/6192 sec 6.8.3.9]
+first:=buf_size; repeat buffer[first]:=0; decr(first); until first=0;
+@z
+
+307. Nonexistent character could be output via ligature hyphenation (April 11)
+@x module 582 (slight inefficiency removed while correcting this)
+begin if (font_bc[f]<=c)and(font_ec[f]>=c) then
+@y
+begin if font_bc[f]<=c then if font_ec[f]>=c then
+@z
+@x module 892 (likewise)
+@!hu:array[1..63] of ASCII_code; {like |hc|, before conversion to lowercase}
+@y
+@!hu:array[1..63] of ASCII_code; {like |hc|, before conversion to lowercase}
+@!hyf_char:integer; {hyphen character of the relevant font}
+@z
+@x module 896 (likewise)
+done2: if hyphen_char[hf]<0 then goto done1;
+if hyphen_char[hf]>255 then goto done1;
+@y
+done2: hyf_char:=hyphen_char[hf];
+if hyf_char<0 then goto done1;
+if hyf_char>255 then goto done1;
+@z
+@x module 912 and another local variable
+@!c:ASCII_code; {character temporarily replaced by a hyphen}
+@y
+@!c:ASCII_code; {character temporarily replaced by a hyphen}
+@!hyf_node:pointer; {the hyphen, if it exists}
+@z
+@x module 915 (this is the real bugfix)
+minor_tail:=null; c:=hu[i+1]; hu[i+1]:=hyphen_char[hf];
+repeat l:=reconstitute(l+1,i+1);
+if minor_tail=null then pre_break(r):=link(hold_head)
+else link(minor_tail):=link(hold_head);
+minor_tail:=link(hold_head);
+if link(minor_tail)<>null then minor_tail:=link(minor_tail);
+until l>i;
+hu[i+1]:=c; {restore the character in the hyphen position}
+decr(l); hyf[l]:=0
+@y
+minor_tail:=null; hyf_node:=new_character(hf,hyf_char);
+if hyf_node<>null then
+ begin incr(i); c:=hu[i]; hu[i]:=hyf_char;
+ end;
+repeat l:=reconstitute(l+1,i);
+if minor_tail=null then pre_break(r):=link(hold_head)
+else link(minor_tail):=link(hold_head);
+minor_tail:=link(hold_head);
+if link(minor_tail)<>null then minor_tail:=link(minor_tail);
+until l=i;
+if hyf_node<>null then
+ begin hu[i]:=c; {restore the character in the hyphen position}
+ free_avail(hyf_node); decr(i); l:=i;
+ end;
+hyf[i]:=0
+@z
+@x module 918
+begin r:=new_disc; pre_break(r):=new_character(hf,hyphen_char[hf]);
+@y
+begin r:=new_disc; pre_break(r):=new_character(hf,hyf_char);
+@z
+
+308. Improper memory usage computed by INITEX in change 300. (DRF, April 15)
+@x module 162
+@d hi_mem_stat_min==mem_top-13 {smallest statically allocated word in
+ the one-word |mem|}
+@y
+@d hi_mem_stat_min==mem_top-13 {smallest statically allocated word in
+ the one-word |mem|}
+@d hi_mem_stat_usage=14 {the number of one-word nodes always present}
+@z
+@x module 164 (text macro without parentheses strikes again!)
+var_used:=lo_mem_stat_max+1-mem_bot; dyn_used:=mem_top+1-hi_mem_stat_min;
+@y
+var_used:=lo_mem_stat_max+1-mem_bot; dyn_used:=hi_mem_stat_usage;
+@z
+
+309. A faster |flush_list| routine for the inner loop. (DRF, April 16)
+@x module 123
+var q:pointer; {the successor of node |p|}
+begin while p<>null do
+ begin q:=link(p); free_avail(p); p:=q;
+ end;
+@y
+var @!q,@!r:pointer; {list traversers}
+begin if p<>null then
+ begin r:=p;
+ repeat q:=r; r:=link(r); @!stat decr(dyn_used);@+tats@/
+ until r=null; {now |q| is the last node on the list}
+ link(q):=avail; avail:=p;
+ end;
+@z
+
+310. Kern for accent positioning could disappear after a line break (April 17)
+(Change 269 fixed only part of the problem!)
+@x module 155
+@d explicit=1 {|subtype| of kern nodes from \.{\\kern} and \.{\\/} and accents}
+@y
+@d explicit=1 {|subtype| of kern nodes from \.{\\kern} and \.{\\/}}
+@d acc_kern=2 {|subtype| of kern nodes from accents}
+@z
+@x module 191
+if subtype(p)<=explicit then
+ begin print_esc("kern");
+ if subtype(p)=explicit then print_char(" ");
+ print_scaled(width(p));
+@y
+if subtype(p)<>mu_glue then
+ begin print_esc("kern");
+ if subtype(p)<>normal then print_char(" ");
+ print_scaled(width(p));
+ if subtype(p)=acc_kern then print(" (for accent)");
+@.for accent@>
+@z
+@x module 837
+ math_node,kern_node: break_width[1]:=break_width[1]-width(s);
+@y
+ math_node,kern_node: if subtype(s)=acc_kern then goto done
+ else break_width[1]:=break_width[1]-width(s);
+@z
+@x module 879
+ if non_discardable(q) then goto done1;
+@y
+ if non_discardable(q) then goto done1;
+ if subtype(q)=acc_kern then if type(q)=kern_node then goto done1;
+@z
+@x module 1125
+r:=new_kern(delta); subtype(r):=explicit; link(tail):=r; link(r):=p;
+tail:=new_kern(-a-delta); subtype(tail):=explicit; link(p):=tail; p:=q;
+@y
+r:=new_kern(delta); subtype(r):=acc_kern; link(tail):=r; link(r):=p;
+tail:=new_kern(-a-delta); subtype(tail):=acc_kern; link(p):=tail; p:=q;
+@z
+
+311. \lastbox and \unkern must not remove discretionary replacements (April 18)
+(Change 236 introduced this bug!)
+@x module 1079
+label exit;
+var p:pointer; {runs through the current list}
+@y
+label exit, done;
+var @!p,@!q:pointer; {run through the current list}
+@!m:quarterword; {the length of a replacement list}
+@z
+@x modules 1080 and 1081
+ @<Apologize for inability to do \.{\\lastbox} now@>
+else begin if not is_char_node(tail) then
+ if (type(tail)=hlist_node)or(type(tail)=vlist_node) then
+ begin p:=head; cur_box:=tail; shift_amount(cur_box):=0;
+ while link(p)<>tail do p:=link(p);
+ tail:=p; link(p):=null;
+ end;
+ end;
+end
+
+@ @<Apologize for inability to do \.{\\lastbox} now@>=
+begin you_cant;
+help2("Sorry...I'm usually unable to take things from the current")@/
+ ("page. This \lastbox will therefore be void."); error;
+end
+@y
+ begin you_cant;
+ help2("Sorry...I usually can't take things from the current page.")@/
+ ("This \lastbox will therefore be void."); error;
+ end
+else begin if not is_char_node(tail) then
+ if (type(tail)=hlist_node)or(type(tail)=vlist_node) then
+ @<Remove the last box, unless it's part of a discretionary@>;
+ end;
+end
+
+@ @<Remove the last box...@>=
+begin q:=head;
+repeat p:=q;
+if not is_char_node(q) then if type(q)=disc_node then
+ begin for m:=1 to replace_count(q) do p:=link(p);
+ if p=tail then goto done;
+ end;
+q:=link(p);
+until q=tail;
+cur_box:=tail; shift_amount(cur_box):=0;
+tail:=p; link(p):=null;
+done: end
+@z
+@x module 1105
+var p:pointer; {runs through the current list}
+@y
+label exit;
+var @!p,@!q:pointer; {run through the current list}
+@!m:quarterword; {the length of a replacement list}
+@z
+@x module 1105
+ begin p:=head;
+ while link(p)<>tail do p:=link(p);
+ link(p):=null; flush_node_list(tail); tail:=p;
+ end;
+ end;
+end;
+@y
+ begin q:=head;
+ repeat p:=q;
+ if not is_char_node(q) then if type(q)=disc_node then
+ begin for m:=1 to replace_count(q) do p:=link(p);
+ if p=tail then return;
+ end;
+ q:=link(p);
+ until q=tail;
+ link(p):=null; flush_node_list(tail); tail:=p;
+ end;
+ end;
+exit:end;
+@z
+@x module 1106
+ help2("Sorry...I'm usually unable to take things from the current")@/
+ ("page. Try `I\vskip-\lastskip' instead.");
+ if cur_chr=kern_node then help_line[0]:=
+ ("page. Try `I\kern-\lastkern' instead.")
+ else if cur_chr<>glue_node then help_line[0]:=@|
+ ("page. Perhaps you can make the output routine do it.");
+@y
+ help2("Sorry...I usually can't take things from the current page.")@/
+ ("Try `I\vskip-\lastskip' instead.");
+ if cur_chr=kern_node then help_line[0]:=
+ ("Try `I\kern-\lastkern' instead.")
+ else if cur_chr<>glue_node then help_line[0]:=@|
+ ("Perhaps you can make the output routine do it.");
+@z
+@x module 1120
+if n<128 then replace_count(tail):=n
+@y
+if n<=max_quarterword then replace_count(tail):=n
+@z
+
+
+*** Note by DEK, 18 Apr 1985
+(The code for version 1.3 has been published by Addison-Wesley under the
+title "TeX: The Program". It was phototypeset on our APS, but does not
+contain changes > 300. Some of those changes have been made in versions
+of TeX called 1.3; but the exact definition of version 1.3 is somewhat
+vague. Version 1.4 was released on April 18, 1985, after
+making change 311. At present I believe Version 1.4 will be identical
+to Version 2.0 except perhaps for things like index entries in the
+documentation and slightly revised help messages. Version 2.0 will
+coincide with the publication of Volume 1 of Computers and Typesetting,
+which will come out when METAFONT and Computer Modern are both finished.)
+ Version 1.5
+312. if nonstandard area specified, don't try TEX_area too. (DRF, 26 Apr 85)
+@x module 537
+ pack_file_name(cur_name,TEX_area,cur_ext);
+ if a_open_in(cur_file) then goto done;
+@y
+ if cur_area="" then
+ begin pack_file_name(cur_name,TEX_area,cur_ext);
+ if a_open_in(cur_file) then goto done;
+ end;
+@z
+
+313. length of \write need no longer be limited (cf 235). (NBT, 30 Apr 85)
+@x module 1370
+show_token_list(link(def_ref),null,buf_size-10); print_ln;
+@y
+show_token_list(link(def_ref),null,10000000); print_ln;
+@z
+
+314. bug introduced in #300, just lucky it didn't cause trouble (CET1, 8 May 85)
+@x module 162
+@d active==mem_top-6 {head of active list in |line_break|, needs two words}
+@y
+@d active==mem_top-7 {head of active list in |line_break|, needs two words}
+@z
+
+315. Missing eoln after last typeout (Gropp, 11 May 85)
+@x module 1332
+ wterm('Ouch---my internal constants have been',
+@y
+ wterm_ln('Ouch---my internal constants have been',
+@z
+
+316. Redundancy (CET1, 17 May 85)
+[Change 287 was apparently introduced because of a faulty assumption,
+although its change to the calling of "initialize" was valid.]
+@x module 1332
+ begin t_open_out;
+ wterm_ln('Ouch---my internal constants have been',
+ ' clobbered!---case ',bad:1);
+@y
+ begin wterm_ln('Ouch---my internal constants have been clobbered!',
+ '---case ',bad:1);
+@z
+
+317. batchmode to see if log file couldn't be opened (DRF, 22 May 85)
+@x module 92
+if interaction=batch_mode then decr(selector);
+if job_name=0 then open_log_file;
+@y
+if job_name=0 then open_log_file;
+if interaction=batch_mode then decr(selector);
+@z
+
+318. If the string pool overflows while reading the command line... (22 May 85)
+[This bug was first found in METAFONT, when it could occur more easily]
+@x module 525
+begin str_room(name_length);
+for k:=1 to name_length do append_char(xord[name_of_file[k]]);
+make_name_string:=make_string;
+@y
+begin if (pool_ptr+name_length>pool_size)or(str_ptr=max_strings) then
+ make_name_string:="?"
+else begin for k:=1 to name_length do append_char(xord[name_of_file[k]]);
+ make_name_string:=make_string;
+ end;
+@z
+
+319. Bug in \edef\foo{\iffalse\fi\the\toks0} (found by Dan Brotsky, 7 Aug 85)
+@x module 478
+ if cur_cmd<>the then goto done2;
+ q:=the_toks;
+ if link(temp_head)<>null then
+ begin link(p):=link(temp_head); p:=q;
+ end;
+@y
+ if cur_cmd<=max_command then goto done2;
+ if cur_cmd<>the then expand
+ else begin q:=the_toks;
+ if link(temp_head)<>null then
+ begin link(p):=link(temp_head); p:=q;
+ end;
+ end;
+@z
+
+*** Version 1.5 was released on August 7, 1985.
+
+320. Lowercase `plain' for consistency with the manual
+@x module 521
+TEX_format_default:='TeXformats:PLAIN.fmt';
+@.TeXformats@>
+@.PLAIN@>
+@y
+TEX_format_default:='TeXformats:plain.fmt';
+@.TeXformats@>
+@.plain@>
+@z (index entries also changed to lowercase in modules 524, 1331)
+
+321. Terminal woken up by \show and \showthe (November 27, 1985)
+@x module 1294
+begin get_token; print_nl("> ");
+@y
+begin get_token;
+if interaction=error_stop_mode then wake_up_terminal;
+print_nl("> ");
+@z
+@x module 1297
+begin p:=the_toks; print_nl("> "); token_show(temp_head);
+@y
+begin p:=the_toks;
+if interaction=error_stop_mode then wake_up_terminal;
+print_nl("> "); token_show(temp_head);
+@z
+ Changes subsequent to `Version 2.0' as published in C&T, Volume B:
+
+322. Trivial change to a help message.
+@x module 1283
+ ("Pretend that you're Hercule Poirot, examine all clues,")@/
+@y
+ ("Pretend that you're Hercule Poirot: Examine all clues,")@/
+@z
+
+323. Precaution since |index| can be as high as |max_in_open|. (DRF)
+@x module 14
+if hash_prime>hash_size then bad:=5;
+@y
+if hash_prime>hash_size then bad:=5;
+if max_in_open>=128 then bad:=6;
+@z
+
+324. \kern clobbered at end of pre-break list in discretionary break.
+@x module 881
+ |disc_break:=true|@>;
+ if not is_char_node(q) then
+ if (type(q)=math_node)or(type(q)=kern_node) then width(q):=0;
+@y
+ |disc_break:=true|@>
+ else if (type(q)=math_node)or(type(q)=kern_node) then width(q):=0;
+@z
+
+325. width after discretionary didn't take account of discarded nodes.
+@x module 830 (slight redefinition)
+@!t:quarterword; {replacement count, if |cur_p| is a discretionary node}
+@y
+@!t:integer; {node count, if |cur_p| is a discretionary node}
+@z
+@x module 837 (slight rearrangement)
+if (break_type=unhyphenated)or(cur_p=null) then
+ begin s:=cur_p;
+ while s<>null do
+ begin if is_char_node(s) then goto done;
+ case type(s) of
+ glue_node:@<Subtract glue from |break_width|@>;
+ penalty_node: do_nothing;
+ math_node,kern_node: if subtype(s)=acc_kern then goto done
+ else break_width[1]:=break_width[1]-width(s);
+ othercases goto done
+ endcases;@/
+ s:=link(s);
+ end;
+ end
+else @<Compute the discretionary |break_width| values@>;
+@y
+s:=cur_p;
+if break_type>unhyphenated then if cur_p<>null then
+ @<Compute the discretionary |break_width| values@>;
+while s<>null do
+ begin if is_char_node(s) then goto done;
+ case type(s) of
+ glue_node:@<Subtract glue from |break_width|@>;
+ penalty_node: do_nothing;
+ math_node,kern_node: if subtype(s)=acc_kern then goto done
+ else break_width[1]:=break_width[1]-width(s);
+ othercases goto done
+ endcases;@/
+ s:=link(s);
+ end;
+@z
+@x module 840 (this is the main change to fix the bug)
+begin t:=replace_count(cur_p); s:=cur_p;
+while t>0 do
+ begin decr(t); s:=link(s);
+ @<Subtract the width of node |s| from |break_width|@>;
+ end;
+s:=post_break(cur_p);
+while s<>null do
+ begin @<Add the width of node |s| to |break_width|@>;
+@y
+begin t:=replace_count(cur_p); v:=cur_p; s:=post_break(cur_p);
+while t>0 do
+ begin decr(t); v:=link(v);
+ @<Subtract the width of node |v| from |break_width|@>;
+ end;
+while s<>null do
+ begin @<Add the width of node |s| to |break_width| and increase |t|,
+ unless it's discardable@>;
+@z
+@x module 840, continued
+break_width[1]:=break_width[1]+disc_width;
+@y
+break_width[1]:=break_width[1]+disc_width;
+if t=0 then s:=link(v); {more nodes may also be discardable after the break}
+@z
+@x module 841 (here we just change |s| to |v|)
+@<Subtract the width of node |s|...@>=
+if is_char_node(s) then
+ begin f:=font(s);
+ break_width[1]:=break_width[1]-char_width(f)(char_info(f)(character(s)));
+ end
+else case type(s) of
+ ligature_node: begin f:=font(lig_char(s));@/
+ break_width[1]:=@|break_width[1]-
+ char_width(f)(char_info(f)(character(lig_char(s))));
+ end;
+ hlist_node,vlist_node,rule_node,kern_node:
+ break_width[1]:=break_width[1]-width(s);
+@y
+@<Subtract the width of node |v|...@>=
+if is_char_node(v) then
+ begin f:=font(v);
+ break_width[1]:=break_width[1]-char_width(f)(char_info(f)(character(v)));
+ end
+else case type(v) of
+ ligature_node: begin f:=font(lig_char(v));@/
+ break_width[1]:=@|break_width[1]-
+ char_width(f)(char_info(f)(character(lig_char(v))));
+ end;
+ hlist_node,vlist_node,rule_node,kern_node:
+ break_width[1]:=break_width[1]-width(v);
+@z
+@x module 842
+ hlist_node,vlist_node,rule_node,kern_node:
+ break_width[1]:=break_width[1]+width(s);
+ othercases confusion("disc2")
+@:this can't happen disc2}{\quad disc2@>
+ endcases
+@y
+ hlist_node,vlist_node,rule_node:break_width[1]:=break_width[1]+width(s);
+ kern_node: if (t=0)and(subtype(s)<>acc_kern) then t:=-1 {discardable}
+ else break_width[1]:=break_width[1]+width(s);
+ othercases confusion("disc2")
+@:this can't happen disc2}{\quad disc2@>
+ endcases;
+incr(t)
+@z
+
+*** Version 2.1 was released on January 26, 1987.
+
+326. Removal of redundant code (found by Pat Monardo, 5 Feb 87)
+@x module 1224 [this change need not be made, since it has no effect]
+ char_def_code: define(p,char_given,cur_val);
+ math_char_def_code: define(p,math_given,cur_val);
+@y the cases cannot occur, so we simply don't list them
+@z
+
+327. More robustness is needed when debugging (Ronaldo Am\'a, 14 Apr 87)
+@x module 174
+begin while p>null do
+@y maybe mem_min>null (but nodes shouldn't be put in location mem_min exactly)
+begin while p>mem_min do
+@z
+@x module 182
+@p procedure show_node_list(@!p:pointer); {prints a node list symbolically}
+@y
+@p procedure show_node_list(@!p:integer); {prints a node list symbolically}
+@z
+@x module 182, continued
+while p>null do
+@y
+while p>mem_min do
+@z
+
+328. Storage allocation can be more elegant and efficient (4/21/87)
+@x module 127
+if r=p then if ((rlink(p)<>rover) or (llink(p)<>rover)) then
+@y
+if r=p then if rlink(p)<>p then
+@z
+
+329. Miscalculation of empty-line condition (April 22, 1987)
+@x module 360
+ begin if limit=start then {previous line was empty}
+@y
+ begin if (end_line_char<0)or(end_line_char>127) then incr(limit);
+ if limit=start then {previous line was empty}
+@z
+
+330. A case where we don't have to assume system bookkeeping (April 28, 1987)
+@x module 560
+done: b_close(tfm_file); read_font_info:=g;
+@y [suggested by Jim Sterken]
+done: if file_opened then b_close(tfm_file);
+read_font_info:=g;
+@z [this was not a bug, according to the comment in module 28]
+
+331. jump_out must fix unfinished output (Found by Klaus Gunterman, 3 Aug 87)
+@x module 593
+doing_leaders:=false; dead_cycles:=0;
+@y
+doing_leaders:=false; dead_cycles:=0; cur_s:=-1;
+@z
+@x module 617
+cur_s:=-1; ensure_dvi_open;
+@y
+ensure_dvi_open;
+@z
+@x module 640
+dvi_out(eop); incr(total_pages);
+@y
+dvi_out(eop); incr(total_pages); cur_s:=-1;
+@z
+@x module 642
+if total_pages=0 then print_nl("No pages of output.")
+@y
+while cur_s>-1 do
+ begin if cur_s>0 then dvi_out(pop)
+ else begin dvi_out(eop); incr(total_pages);
+ end;
+ decr(cur_s);
+ end;
+if total_pages=0 then print_nl("No pages of output.")
+@z
+
+332. \hangindent=1pt$$\halign{...\cr\noalign{\hrule}}$$ problem (19 Aug 87)
+@x module 805
+q:=link(head);
+@y
+q:=link(head); s:=head;
+@z
+@x module 805, continued
+ q:=link(q);
+@y
+ s:=q; q:=link(q);
+@z
+@x module 806
+if is_running(depth(q)) then depth(q):=depth(p);
+@y
+if is_running(depth(q)) then depth(q):=depth(p);
+if o<>0 then
+ begin r:=link(q); link(q):=null; q:=hpack(q,natural);
+ shift_amount(q):=o; link(q):=r; link(s):=q;
+ end;
+@z
+
+333. \hskip 0pt plus 1fil\ifdim problem (found by Alan Guth, 20 Aug 87)
+@x module 366
+@!cvl_backup,@!radix_backup:small_number; {to save |cur_val_level| and |radix|}
+@y
+@!cvl_backup,@!radix_backup,@!co_backup:small_number;
+ {to save |cur_val_level|, etc.}
+@z
+@x
+backup_backup:=link(backup_head);
+@y
+co_backup:=cur_order; backup_backup:=link(backup_head);
+@z
+@x
+link(backup_head):=backup_backup;
+@y
+cur_order:=co_backup; link(backup_head):=backup_backup;
+@z
+
+334. leaders too sensitive near exact multiples (M. F. Bridgland, 9 Nov 87)
+@x module 626
+ begin edge:=cur_h+rule_wd; lx:=0;
+@y
+ begin rule_wd:=rule_wd+10; {compensate for floating-point rounding}
+ edge:=cur_h+rule_wd; lx:=0;
+@z
+@x ibid
+ cur_h:=edge; goto next_p;
+@y
+ cur_h:=edge-10; goto next_p;
+@z
+@x module 635
+ begin edge:=cur_v+rule_ht; lx:=0;
+@y
+ begin rule_ht:=rule_ht+10; {compensate for floating-point rounding}
+ edge:=cur_v+rule_ht; lx:=0;
+@z
+@x ibid
+ cur_v:=edge; goto next_p;
+@y
+ cur_v:=edge-10; goto next_p;
+@z
+
+335. Glitch in fixed-point multiplication of negatives (W.G. Sullivan, 17Nov87)
+@x module 572
+begin alpha:=16*z; beta:=16;
+while z>=@'40000000 do
+ begin z:=z div 2; beta:=beta div 2;
+ end;
+@y
+begin alpha:=16;
+while z>=@'40000000 do
+ begin z:=z div 2; alpha:=alpha+alpha;
+ end;
+beta:=256 div alpha; alpha:=alpha*z;
+@z
+
+336. If there are no \patterns and some \lccode is 1 (Breitenlohner, 12Dec87)
+@x module 952
+trie_link(0):=0; trie_char(0):=0; trie_op(0):=0;
+@y
+trie_link(0):=0; trie_char(0):=0; trie_op(0):=min_quarterword;
+@z
+
+337. \csname might encounter undefined_cs in a group (Chris Thompson, 23Dec87)
+@x module 372
+ begin eqtb[cur_cs]:=eqtb[frozen_relax];
+@y
+ begin eq_define(cur_cs,relax,256);
+@z
+
+338. \outer\def\a0{}\a\a shows temp_head list garbage (Silvio Levy, 20Apr88)
+@x module 391
+repeat if (info(r)>match_token+127)or(info(r)<match_token) then s:=null
+else begin match_chr:=info(r)-match_token; s:=link(r); r:=s;
+ p:=temp_head; link(p):=null; m:=0;
+@y
+repeat link(temp_head):=null;
+if (info(r)>match_token+127)or(info(r)<match_token) then s:=null
+else begin match_chr:=info(r)-match_token; s:=link(r); r:=s;
+ p:=temp_head; m:=0;
+@z
+
+339. \def\\#1{}\input a\\\z failed (Robert Messer, 24Apr88)
+@x module 259
+var h:integer; {hash code}
+@y
+var h:integer; {hash code}
+@!d:integer; {number of characters in incomplete current string}
+@z
+@x module 260
+str_room(l);
+for k:=j to j+l-1 do append_char(buffer[k]);
+text(p):=make_string;
+@y
+str_room(l); d:=cur_length;
+while pool_ptr>str_start[str_ptr] do
+ begin decr(pool_ptr); str_pool[pool_ptr+l]:=str_pool[pool_ptr];
+ end; {move current string up to make room for another}
+for k:=j to j+l-1 do append_char(buffer[k]);
+text(p):=make_string; pool_ptr:=pool_ptr+d;
+@z
+
+340. Make patterns work when trie_min=0 (Peter Breitenlohner, 10May88)
+@x module 951
+trie_max:=128; trie_min:=128; trie_link(0):=1; trie_taken[0]:=false;
+@y
+trie_max:=128; trie_min:=128; trie_link(0):=1; trie_taken[0]:=false;
+trie_link(trie_size):=0; trie_back(0):=trie_size; {wrap around}
+@z
+@x module 953
+begin c:=trie_c[p]; {we have |c>0|}
+if c<trie_min then trie_min:=c;
+z:=trie_link(trie_min-1); {get the first conceivably good hole}
+@y
+begin c:=trie_c[p];
+if c<trie_min then trie_min:=c;
+if trie_min=0 then z:=trie_link(trie_size)
+else z:=trie_link(trie_min-1); {get the first conceivably good hole}
+@z
+@x module 966
+r:=0; {finally, we will zero out the holes}
+@y
+r:=trie_size; {finally, we will zero out the holes}
+@z
+
+341. Avoid possible trie_pointer out of range (24May88)
+@x module 923
+hc[0]:=127; hc[hn+1]:=127; hc[hn+2]:=256; {insert delimiters}
+@y
+hc[0]:=127; hc[hn+1]:=127; hc[hn+2]:=128; {insert delimiters}
+@z
+
+342. \input a\romannumeral1 etc.; similar to bug 339. (25May88)
+@x module 464
+@p function str_toks:pointer; {changes the current string to a token list}
+@y
+@p function str_toks(@!b:pool_pointer):pointer;
+ {changes the string |str_pool[b..pool_ptr]| to a token list}
+@z
+@x module 464, continued
+p:=temp_head; link(p):=null; k:=str_start[str_ptr];
+@y
+p:=temp_head; link(p):=null; k:=b;
+@z
+@x module 464, concluded
+pool_ptr:=str_start[str_ptr]; str_toks:=p;
+@y
+pool_ptr:=b; str_toks:=p;
+@z
+@x module 465
+begin get_x_token; scan_something_internal(tok_val,false);
+if cur_val_level>=ident_val then @<Copy the token list@>
+else begin old_setting:=selector; selector:=new_string;
+@y
+@!b:pool_pointer; {base of temporary string}
+begin get_x_token; scan_something_internal(tok_val,false);
+if cur_val_level>=ident_val then @<Copy the token list@>
+else begin old_setting:=selector; selector:=new_string; b:=pool_ptr;
+@z
+@x module 465, continued
+ selector:=old_setting; the_toks:=str_toks;
+@y
+ selector:=old_setting; the_toks:=str_toks(b);
+@z
+@x module 470
+begin c:=cur_chr; @<Scan the argument for command |c|@>;
+old_setting:=selector; selector:=new_string;
+@<Print the result of command |c|@>;
+selector:=old_setting; link(garbage):=str_toks; ins_list(link(temp_head));
+@y
+@!b:pool_pointer; {base of temporary string}
+begin c:=cur_chr; @<Scan the argument for command |c|@>;
+old_setting:=selector; selector:=new_string; b:=pool_ptr;
+@<Print the result of command |c|@>;
+selector:=old_setting; link(garbage):=str_toks(b); ins_list(link(temp_head));
+@z
+
+343. **\input\romannumeral6 confusion bypassed (25May88)
+@x module 525
+begin if (pool_ptr+name_length>pool_size)or(str_ptr=max_strings) then
+@y
+begin if (pool_ptr+name_length>pool_size)or(str_ptr=max_strings)or
+ (cur_length>0) then
+@z
+
+344. Avoid negative dividend rounding upward (Chris Thompson, fixed 19Jun88)
+@x module 126
+else t:=(lo_mem_max+hi_mem_min+2) div 2; {|lo_mem_max+2<=t<hi_mem_min|}
+@y
+else t:=lo_mem_max+1+(hi_mem_min-lo_mem_max)div 2; {|lo_mem_max+2<=t<hi_mem_min|}
+@z
+
+345. Better strategy when near memory overflow (Chris Thompson)
+@x module 126
+begin if lo_mem_max+1000<hi_mem_min then t:=lo_mem_max+1000
+@y
+begin if hi_mem_min-lo_mem_max>=1998 then t:=lo_mem_max+1000
+@z
+
+346. An omission from change 333 (Tsunetoshi Hayashi, reported 20June88)
+@x module 439
+cur_val:=0; cur_val_level:=int_val; radix:=0;
+@y
+cur_val:=0; cur_val_level:=int_val; radix:=0; cur_order:=0;
+@z
+
+347. Avoid fatal_error after terminal eof (Tim Morgan, reported 25Oct88)
+@x module 71 [serious problem occurred if this was called in open_log_file]
+if not input_ln(term_in,true) then fatal_error("End of file on the terminal!");
+@y
+if not input_ln(term_in,true) then t_open_in;
+@z
+
+348. Force terminal output when open_log_file aborts (6Nov88)
+@x module 535
+ begin print_err("I can't write on file `");
+@y
+ begin selector:=term_only; print_err("I can't write on file `");
+@z
+
+349. By popular request, undo #347 and fix the bug a more complex way.
+@x module 71 [this undoes change #347]
+if not input_ln(term_in,true) then t_open_in;
+@y
+if not input_ln(term_in,true) then fatal_error("End of file on the terminal!");
+@z
+@x module 92 [now we get to the new stuff]
+begin if job_name>0 then selector:=term_and_log
+@y
+begin if log_opened then selector:=term_and_log
+@z
+@x module 93
+ error;
+@y
+ if log_opened then error;
+@z
+@x module 527
+@!job_name:str_number; {principal file name}
+@y
+@!job_name:str_number; {principal file name}
+@!log_opened:boolean; {has the transcript file been opened?}
+@z
+@x module 528
+@<Initialize the output...@>=job_name:=0; name_in_progress:=false;
+@y
+@<Initialize the output...@>=
+job_name:=0; name_in_progress:=false; log_opened:=false;
+@z
+@x module 534
+selector:=log_only;
+@y
+selector:=log_only; log_opened:=true;
+@z
+@x module 535
+begin if interaction<scroll_mode then {bypass |fatal_error|}
+ begin selector:=term_only; print_err("I can't write on file `");
+@.I can't write on file x@>
+ print_file_name(cur_name,cur_area,cur_ext); print("'.");@/
+ job_name:=0; history:=fatal_error_stop; jump_out;
+ end; {abort the program without a log file}
+@y
+begin selector:=term_only;
+@z
+@x module 1265 [this change is optional, but it's a slight improvement]
+if job_name<>0 then selector:=selector+2;
+@y
+if log_opened then selector:=selector+2;
+@z
+@x module 1333
+if job_name>0 then
+@y
+if log_opened then
+@z
+@x module 1334
+if job_name>0 then {the log file is open}
+@y
+if log_opened then
+@z
+
+350. Forgotten update in error recovery (Breitenlohner, 20 Jan 89)
+@x module 976
+ glue_ptr(p):=r;
+@y
+ glue_ptr(p):=r; q:=r;
+@z
+@x module 1004
+ glue_ptr(p):=r;
+@y
+ glue_ptr(p):=r; q:=r;
+@z
+
+351. Avoid error \aftergroup\relax\dump (Mittelbach&Schoepf, 17 Feb 89)
+@x module 280
+begin check_full_save_stack;
+save_type(save_ptr):=insert_token; save_level(save_ptr):=level_zero;
+save_index(save_ptr):=t; incr(save_ptr);
+@y
+begin if cur_level>level_one then
+ begin check_full_save_stack;
+ save_type(save_ptr):=insert_token; save_level(save_ptr):=level_zero;
+ save_index(save_ptr):=t; incr(save_ptr);
+ end;
+@z
+
+352. Cosmetic change to validate comment in 115 (Breitenlohner, 20 Mar 89)
+@x module 791
+begin q:=link(cur_align);
+if (cur_align=null)or(q=null) then confusion("endv");
+@y
+begin if cur_align=null then confusion("endv");
+q:=link(cur_align);@+if q=null then confusion("endv");
+@z
+
+353. $$\begingroup\halign{#\cr}$$ caused confusion (Mittelbach, 7 Jun 89)
+@x module 1130
+mmode+halign: if privileged then init_align;
+@y
+mmode+halign: if privileged then
+ if cur_group=math_shift_group then init_align
+ else off_save;
+@z
+
+354. Conflict in global array dig with .5\ifdim.6 (Mittelbach, 20 Jun 89)
+@x module 450
+@!k:small_number; {number of digits in a decimal fraction}
+@y
+@!k,@!kk:small_number; {number of digits in a decimal fraction}
+@!p,@!q:pointer; {top of decimal digit stack}
+@z
+@x module 452
+begin k:=0; get_token; {|point_token| is being re-scanned}
+loop@+ begin get_x_token;
+ if (cur_tok>zero_token+9)or(cur_tok<zero_token) then goto done1;
+ if k<17 then {digits for |k>=17| cannot affect the result}
+ begin dig[k]:=cur_tok-zero_token; incr(k);
+ end;
+ end;
+done1: f:=round_decimals(k);
+@y
+begin k:=0; p:=null; get_token; {|point_token| is being re-scanned}
+loop@+ begin get_x_token;
+ if (cur_tok>zero_token+9)or(cur_tok<zero_token) then goto done1;
+ if k<17 then {digits for |k>=17| cannot affect the result}
+ begin q:=get_avail; link(q):=p; info(q):=cur_tok-zero_token;
+ p:=q; incr(k);
+ end;
+ end;
+done1: for kk:=k downto 1 do
+ begin dig[kk-1]:=info(p); q:=p; p:=link(p); free_avail(q);
+ end;
+f:=round_decimals(k);
+@z
+
+355. String startup problems (Wayne Sullivan, 17 Jul 89)
+@x module 31 (Warning: This affects most change files!)
+ overflow("buffer size",buf_size);
+@:TeX capacity exceeded buffer size}{\quad buffer size@>
+@y
+ @<Report overflow of the input buffer, and abort@>;
+@z
+@x module 35
+consist of the remainder of the command line, after the part that invoked
+\TeX.
+@y
+consist of the remainder of the command line, after the part that invoked
+\TeX.
+
+The first line is special also because it may be read before \TeX\ has
+input a format file. In such cases, normal error messages cannot yet
+be given. The following code uses concepts that will be explained later.
+
+@<Report overflow of the input buffer, and abort@>=
+if format_ident=0 then
+ begin write_ln(term_out,'Buffer size exceeded!'); goto final_end;
+@.Buffer size exceeded@>
+ end
+else begin cur_input.loc_field:=first; cur_input.limit_field:=last-1;
+ overflow("buffer size",buf_size);
+@:TeX capacity exceeded buffer size}{\quad buffer size@>
+ end
+@z
+@x module 1310
+k:=pool_ptr-4; undump_four_ASCII
+@y
+k:=pool_ptr-4; undump_four_ASCII;
+init_str_ptr:=str_ptr; init_pool_ptr:=pool_ptr
+@z
+@x module 1332
+tini@/
+@y
+init_str_ptr:=str_ptr; init_pool_ptr:=pool_ptr; fix_date_and_time;
+tini@/
+@z
+@x module 1332
+init_str_ptr:=str_ptr; init_pool_ptr:=pool_ptr;@/
+@y
+@z
+
+356. Allow integer products to be 31 bits long (Mittelbach, 16 Aug 89)
+@x module 105
+@p function nx_plus_y(@!n:integer;@!x,@!y:scaled):scaled;
+begin if n<0 then
+ begin negate(x); negate(n);
+ end;
+if n=0 then nx_plus_y:=y
+else if ((x<=(@'7777777777-y) div n)and(-x<=(@'7777777777+y) div n)) then
+ nx_plus_y:=n*x+y
+else begin arith_error:=true; nx_plus_y:=0;
+ end;
+end;
+@y
+@d nx_plus_y(#)==mult_and_add(#,@'7777777777)
+@d mult_integers(#)==mult_and_add(#,0,@'17777777777)
+
+@p function mult_and_add(@!n:integer;@!x,@!y,@!max_answer:scaled):scaled;
+begin if n<0 then
+ begin negate(x); negate(n);
+ end;
+if n=0 then mult_and_add:=y
+else if ((x<=(max_answer-y) div n)and(-x<=(max_answer+y) div n)) then
+ mult_and_add:=n*x+y
+else begin arith_error:=true; mult_and_add:=0;
+ end;
+end;
+@z
+@x module 1240
+ if q=multiply then cur_val:=nx_plus_y(eqtb[l].int,cur_val,0)
+@y
+ if q=multiply then
+ if p=int_val then cur_val:=mult_integers(eqtb[l].int,cur_val)
+ else cur_val:=nx_plus_y(eqtb[l].int,cur_val,0)
+@z
+
+357. Raise the maximum number of tokens normally shown (pointed out by
+John Lavagnino in TeXhax on 19 May 89; corrected on 31 Aug 89).
+@x module 295
+begin if p<>null then show_token_list(link(p),null,1000);
+@y
+begin if p<>null then show_token_list(link(p),null,10000000);
+@z
+@x module 1370 (this part of the change is cosmetic only)
+show_token_list(link(def_ref),null,10000000); print_ln;
+@y
+token_show(def_ref); print_ln;
+@z
+
+358. Like 353, but with $$\begingroup\eqno$$ (Mittelbach, 25 Jul 89)
+@x module 1140
+mmode+eq_no: if privileged then start_eq_no;
+@y
+mmode+eq_no: if privileged then
+ if cur_group=math_shift_group then start_eq_no
+ else off_save;
+@z
+
+359. Major extension to 8-bit character input. (These changes, and a few that
+follow, were discussed during the 10th TUG meeting and installed during
+the week of 10 Sep 1989. They bring the implementation of TeX82 up to date with
+international developments and experience, and I believe they mark the
+final development of this program into a completely stable system.)
+Several changes to the documentation (not the program) are omitted here.
+@x module 18
+@!ASCII_code=0..127; {seven-bit numbers}
+@y
+@!ASCII_code=0..255; {eight-bit numbers}
+@z
+@x module 19
+@d last_text_char=127 {ordinal number of the largest element of |text_char|}
+
+@<Local variables for init...@>=
+@!i:0..last_text_char;
+@y
+@d last_text_char=255 {ordinal number of the largest element of |text_char|}
+
+@<Local variables for init...@>=
+@!i:integer;
+@z
+@x module 21
+xchr[0]:=' '; xchr[@'177]:=' ';
+ {ASCII codes 0 and |@'177| do not appear in text}
+@y
+@z
+@x module 23
+for i:=1 to @'37 do xchr[i]:=' ';
+@y changing ' ' to chr(i) here will allow all 8-bit characters to get in
+for i:=0 to @'37 do xchr[i]:=' ';
+for i:=@'177 to @'377 do xchr[i]:=' ';
+@z
+@x module 24
+for i:=1 to @'176 do xord[xchr[i]]:=i;
+@y
+for i:=@'200 to @'377 do xord[xchr[i]]:=i;
+for i:=0 to @'176 do xord[xchr[i]]:=i;
+@z
+@x module 38
+@<Types...@>=
+@!pool_pointer = 0..pool_size; {for variables that point into |str_pool|}
+@!str_number = 0..max_strings; {for variables that point into |str_start|}
+
+@ @<Glob...@>=
+@!str_pool:packed array[pool_pointer] of ASCII_code; {the characters}
+@y [OK to make si(#)==#-128 and so(#)==#+128 (without parens) in change files]
+Some \PASCAL\ compilers won't pack integers into a single byte unless the
+integers lie in the range |-128..127|. To accommodate such systems
+we access the string pool only via macros that can easily be redefined.
+
+@d si(#) == # {convert from |ASCII_code| to |packed_ASCII_code|}
+@d so(#) == # {convert from |packed_ASCII_code| to |ASCII_code|}
+
+@<Types...@>=
+@!pool_pointer = 0..pool_size; {for variables that point into |str_pool|}
+@!str_number = 0..max_strings; {for variables that point into |str_start|}
+@!packed_ASCII_code = 0..255; {elements of |str_pool| array}
+
+@ @<Glob...@>=
+@!str_pool:packed array[pool_pointer] of packed_ASCII_code; {the characters}
+@z
+@x module 42
+begin str_pool[pool_ptr]:=#; incr(pool_ptr);
+@y
+begin str_pool[pool_ptr]:=si(#); incr(pool_ptr);
+@z
+@x module 45
+ begin if str_pool[j]<>buffer[k] then
+@y
+ begin if so(str_pool[j])<>buffer[k] then
+@z
+@x module 47
+var k,@!l:0..127; {small indices or counters}
+@y
+var k,@!l:0..255; {small indices or counters}
+@z
+@x module 47
+@<Make the first 128 strings@>;
+@y
+@<Make the first 256 strings@>;
+@z
+@x module 48
+@ @<Make the first 128...@>=
+for k:=0 to 127 do
+ begin if (@<Character |k| cannot be printed@>) then
+ begin append_char("^"); append_char("^");
+ if k<@'100 then append_char(k+@'100)
+ else append_char(k-@'100);
+@y
+@ @d app_lc_hex(#)==l:=#;
+ if l<10 then append_char(l+"0)@+else append_char(l-10+"a")
+
+@<Make the first 256...@>=
+for k:=0 to 255 do
+ begin if (@<Character |k| cannot be printed@>) then
+ begin append_char("^"); append_char("^");
+ if k<@'100 then append_char(k+@'100)
+ else if k<@'200 then append_char(k-@'100)
+ else begin app_lc_hex(k div 16); app_lc_hex(k mod 16);
+ end;
+@z
+@x module 59
+ begin print_char(str_pool[j]); incr(j);
+@y
+ begin print_char(so(str_pool[j])); incr(j);
+@z
+@x modules 59 and 60
+else if s<128 then
+@y
+else if s<256 then
+@z
+@x module 60
+ begin print(str_pool[j]); incr(j);
+@y
+ begin print(so(str_pool[j])); incr(j);
+@z
+@x module 63
+if c>=0 then if c<128 then print(c);
+@y
+if c>=0 then if c<256 then print(c);
+@z
+@x module 68
+@ In certain situations, \TeX\ prints either a standard visible ASCII
+character or its hexadecimal ASCII code.
+
+@p procedure print_ASCII(@!c:integer); {prints a character or its code}
+begin if (c>=0) and (c<=127) then print(c)
+else begin print_char("[");
+ if c<0 then print_int(c)@+else print_hex(c);
+ print_char("]");
+ end;
+end;
+@y
+@ Old versions of \TeX\ needed a procedure called |print_ASCII| whose function
+is now subsumed by |print|. We retain the old name here as a possible aid to
+future software arch\ae ologists.
+
+@d print_ASCII == print
+@z
+@x module 69
+ begin print_char(str_pool[j]); n:=n-v;
+ end;
+ if n<=0 then return; {nonpositive input produces no output}
+ k:=j+2; u:=v div (str_pool[k-1]-"0");
+ if str_pool[k-1]="2" then
+ begin k:=k+2; u:=u div (str_pool[k-1]-"0");
+ end;
+ if n+u>=v then
+ begin print_char(str_pool[k]); n:=n+u;
+ end
+ else begin j:=j+2; v:=v div (str_pool[j-1]-"0");
+@y
+ begin print_char(so(str_pool[j])); n:=n-v;
+ end;
+ if n<=0 then return; {nonpositive input produces no output}
+ k:=j+2; u:=v div (so(str_pool[k-1])-"0");
+ if str_pool[k-1]=si("2") then
+ begin k:=k+2; u:=u div (so(str_pool[k-1])-"0");
+ end;
+ if n+u>=v then
+ begin print_char(so(str_pool[k])); n:=n+u;
+ end
+ else begin j:=j+2; v:=v div (so(str_pool[j-1])-"0");
+@z
+@x module 70
+ begin print_char(str_pool[j]); incr(j);
+@y
+ begin print_char(so(str_pool[j])); incr(j);
+@z
+@x module 222
+@d single_base=active_base+128 {equivalents of one-letter control sequences}
+@d null_cs=single_base+128 {equivalent of \.{\\csname\\endcsname}}
+@y
+@d single_base=active_base+256 {equivalents of one-character control sequences}
+@d null_cs=single_base+256 {equivalent of \.{\\csname\\endcsname}}
+@z
+@x module 230
+ {table of 128 command codes (the ``catcodes'')}
+@d lc_code_base=cat_code_base+128 {table of 128 lowercase mappings}
+@d uc_code_base=lc_code_base+128 {table of 128 uppercase mappings}
+@d sf_code_base=uc_code_base+128 {table of 128 spacefactor mappings}
+@d math_code_base=sf_code_base+128 {table of 128 math mode mappings}
+@d int_base=math_code_base+128 {beginning of region 5}
+@y
+ {table of 256 command codes (the ``catcodes'')}
+@d lc_code_base=cat_code_base+256 {table of 256 lowercase mappings}
+@d uc_code_base=lc_code_base+256 {table of 256 uppercase mappings}
+@d sf_code_base=uc_code_base+256 {table of 256 spacefactor mappings}
+@d math_code_base=sf_code_base+256 {table of 256 math mode mappings}
+@d int_base=math_code_base+256 {beginning of region 5}
+@z
+@x module 232
+for k:=0 to 127 do
+@y
+for k:=0 to 255 do
+@z
+@x module 236
+@d del_code_base=count_base+256 {128 delimiter code mappings}
+@d dimen_base=del_code_base+128 {beginning of region 6}
+@y
+@d del_code_base=count_base+256 {256 delimiter code mappings}
+@d dimen_base=del_code_base+256 {beginning of region 6}
+@z
+@x module 240
+for k:=0 to 127 do del_code(k):=-1;
+@y
+for k:=0 to 255 do del_code(k):=-1;
+@z
+@x module 264
+begin if s<128 then cur_val:=s+single_base
+@y
+begin if s<256 then cur_val:=s+single_base
+@z
+@x ibid
+ for j:=0 to l-1 do buffer[j]:=str_pool[k+j];
+@y
+ for j:=0 to l-1 do buffer[j]:=so(str_pool[k+j]);
+@z
+@x module 289
+@d cs_token_flag==@'10000 {amount added to the |eqtb| location in a
+ token that stands for a control sequence; is a multiple of~256}
+@y
+@d cs_token_flag==@'7777 {amount added to the |eqtb| location in a
+ token that stands for a control sequence; is a multiple of~256, less~1}
+@z
+@x module 293
+ if (info(p)<0)or(c>127) then print_esc("BAD.")
+@y
+ if info(p)<0 then print_esc("BAD.")
+@z
+@x module 341
+@!cat:0..15; {|cat_code(cur_chr)|, usually}
+@y
+@!cat:0..15; {|cat_code(cur_chr)|, usually}
+@!c,@!cc:ASCII_code; {constituents of a possible expanded code}
+@!d:2..3; {number of excess characters in an expanded code}
+@z
+@x module 352
+@<If this |sup_mark| starts a control character...@>=
+begin if (cur_chr=buffer[loc])and(loc<limit) then
+ begin if buffer[loc+1]<@'100 then cur_chr:=buffer[loc+1]+@'100
+ else cur_chr:=buffer[loc+1]-@'100;
+ loc:=loc+2; goto reswitch;
+ end;
+@y
+@ Notice that a code like \.{\^\^8} becomes \.x if not followed by a hex digit.
+
+@d is_hex(#)==(((#>="0")and(#<="9"))or((#>="a")and(#<="f")))
+@d hex_to_cur_chr==
+ if c<="9" then cur_chr:=c-"0" @+else cur_chr:=c-"a"+10;
+ if cc<="9" then cur_chr:=16*cur_chr+cc-"0"
+ else cur_chr:=16*cur_chr+cc-"a"+10
+
+@<If this |sup_mark| starts an expanded character...@>=
+begin if cur_chr=buffer[loc] then if loc<limit then
+ begin c:=buffer[loc+1]; @+if c<@'200 then {yes we have an expanded char}
+ begin loc:=loc+2;
+ if is_hex(c) then if loc<=limit then
+ begin cc:=buffer[loc]; @+if is_hex(cc) then
+ begin incr(loc); hex_to_cur_chr; goto reswitch;
+ end;
+ end;
+ if c<@'100 then cur_chr:=c+@'100 @+else cur_chr:=c-@'100;
+ goto reswitch;
+ end;
+ end;
+@z
+@x module 355
+ begin cur_chr:=buffer[k+1];
+ if cur_chr<@'100 then buffer[k-1]:=cur_chr+@'100
+ else buffer[k-1]:=cur_chr-@'100;
+ limit:=limit-2; first:=first-2;
+ while k<=limit do
+ begin buffer[k]:=buffer[k+2]; incr(k);
+ end;
+ goto start_cs;
+ end;
+@y
+begin c:=buffer[k+1]; @+if c<@'200 then {yes, one is indeed present}
+ begin d:=2;
+ if is_hex(c) then @+if k+2<=limit then
+ begin cc:=buffer[k+2]; @+if is_hex(cc) then incr(d);
+ end;
+ if d>2 then
+ begin hex_to_cur_chr; buffer[k-1]:=cur_chr;
+ end
+ else if c<@'100 then buffer[k-1]:=c+@'100
+ else buffer[k-1]:=c-@'100;
+ limit:=limit-d; first:=first-d;
+ while k<=limit do
+ begin buffer[k]:=buffer[k+d]; incr(k);
+ end;
+ goto start_cs;
+ end;
+ end;
+@z
+@x module 360
+There is one more branch.
+@y
+There is one more branch.
+
+@d end_line_char_inactive == (end_line_char<0)or(end_line_char>255)
+@z
+@x ibid
+ if (end_line_char<0)or(end_line_char>127) then decr(limit)
+@y
+ if end_line_char_inactive then decr(limit)
+@z
+@x modules 362 and 483 and 538 and 1337
+if (end_line_char<0)or(end_line_char>127) then decr(limit)
+@y
+if end_line_char_inactive then decr(limit)
+@z
+@x module 391
+if (info(r)>match_token+127)or(info(r)<match_token) then s:=null
+@y
+if (info(r)>match_token+255)or(info(r)<match_token) then s:=null
+@z
+@x module 407
+ ((cur_chr=str_pool[k])or(cur_chr=str_pool[k]-"a"+"A")) then
+@y
+ ((cur_chr=so(str_pool[k]))or(cur_chr=so(str_pool[k])-"a"+"A")) then
+@z
+@x module 414
+begin scan_seven_bit_int;
+@y
+begin scan_char_num;
+@z
+@x module 432
+|scan_something_internal|:
+
+@<Declare procedures that scan restricted classes of integers@>=
+procedure scan_seven_bit_int;
+begin scan_int;
+if (cur_val<0)or(cur_val>127) then
+ begin print_err("Bad character code");
+@.Bad character code@>
+ help2("The numeric code for a character must be between 0 and 127.")@/
+ ("I changed this one to zero."); int_error(cur_val); cur_val:=0;
+ end;
+end;
+@y
+|scan_something_internal|.
+@z (and I'll interchange modules 434 and 435)
+@x module 442
+if cur_val>127 then
+@y
+if cur_val>255 then
+@z
+@x module 464
+ begin t:=str_pool[k];
+@y
+ begin t:=so(str_pool[k]);
+@z
+@x module 506 (correction needed twice)
+if (cur_cmd>active_char)or(cur_chr>127) then
+@y
+if (cur_cmd>active_char)or(cur_chr>255) then
+@z
+@x module 519
+for j:=str_start[a] to str_start[a+1]-1 do append_to_name(str_pool[j]);
+for j:=str_start[n] to str_start[n+1]-1 do append_to_name(str_pool[j]);
+for j:=str_start[e] to str_start[e+1]-1 do append_to_name(str_pool[j]);
+@y
+for j:=str_start[a] to str_start[a+1]-1 do append_to_name(so(str_pool[j]));
+for j:=str_start[n] to str_start[n+1]-1 do append_to_name(so(str_pool[j]));
+for j:=str_start[e] to str_start[e+1]-1 do append_to_name(so(str_pool[j]));
+@z
+@x module 526
+if (cur_cmd>active_char)or(cur_chr>127) then
+@y
+if (cur_cmd>active_char)or(cur_chr>255) then
+@z
+@x module 603 (change to be made twice)
+ dvi_out(str_pool[k]);
+@y
+ dvi_out(so(str_pool[k]));
+@z
+@x module 617
+ for s:=str_start[str_ptr] to pool_ptr-1 do dvi_out(str_pool[s]);
+@y
+ for s:=str_start[str_ptr] to pool_ptr-1 do dvi_out(so(str_pool[s]));
+@z
+@x module 766
+ begin case str_pool[r_type*8+t+magic_offset] of
+@y
+ begin case so(str_pool[r_type*8+t+magic_offset]) of
+@z
+@x module 780
+@d span_code=128 {distinct from any character}
+@d cr_code=129 {distinct from |span_code| and from any character}
+@y
+@d span_code=256 {distinct from any character}
+@d cr_code=257 {distinct from |span_code| and from any character}
+@z
+@x module 815
+label done,done1,done2,done3,done4;
+@y
+label done,done1,done2,done3,done4,continue;
+@z
+@x module 896
+ else if (type(s)=kern_node)and(subtype(s)=normal) then c:=128
+ else if type(s)=whatsit_node then c:=128
+ else goto done1;
+ if c<128 then if lc_code(c)<>0 then
+ if (lc_code(c)=c)or(uc_hyph>0) then goto done2
+ else goto done1;
+ s:=link(s);
+@y
+ else if (type(s)=kern_node)and(subtype(s)=normal) then goto continue
+ else if type(s)=whatsit_node then goto continue
+ else goto done1;
+ if lc_code(c)<>0 then
+ if (lc_code(c)=c)or(uc_hyph>0) then goto done2
+ else goto done1;
+continue: s:=link(s);
+@z
+@x module 897
+ if c>=128 then goto done3;
+ if (lc_code(c)=0)or(hn=63) then goto done3;
+ hb:=s; incr(hn); hu[hn]:=c; hc[hn]:=lc_code(c)-1;
+@y
+ if lc_code(c)=0 then goto done3;
+ if hn=63 then goto done3;
+ hb:=s; incr(hn); hu[hn]:=c; hc[hn]:=lc_code(c);
+@z
+@x module 898
+if c>=128 then goto done3;
+if (lc_code(c)=0)or(j=63) then goto done3;
+incr(j); hu[j]:=c; hc[j]:=lc_code(c)-1;@/
+@y
+if lc_code(c)=0 then goto done3;
+if j=63 then goto done3;
+incr(j); hu[j]:=c; hc[j]:=lc_code(c);@/
+@z
+@x module 923
+hc[0]:=127; hc[hn+1]:=127; hc[hn+2]:=128; {insert delimiters}
+@y
+hc[0]:=0; hc[hn+1]:=0; hc[hn+2]:=256; {insert delimiters}
+@z
+@x ibid
+ while hc[l]=trie_char(z) do
+@y
+ while hc[l]=qo(trie_char(z)) do
+@z
+@x module 931
+ repeat if str_pool[u]<hc[j] then goto not_found;
+ if str_pool[u]>hc[j] then goto done;
+@y
+ repeat if so(str_pool[u])<hc[j] then goto not_found;
+ if so(str_pool[u])>hc[j] then goto done;
+@z
+@x module 937
+else begin if (cur_chr>127)or(lc_code(cur_chr)=0) then
+@y
+else begin if lc_code(cur_chr)=0 then
+@z
+@x ibid
+ begin incr(n); hc[n]:=lc_code(cur_chr)-1;
+@y
+ begin incr(n); hc[n]:=lc_code(cur_chr);
+@z
+@x module 945
+@!init @!trie_c:packed array[trie_pointer] of ASCII_code; {characters to match}
+@y
+@!init @!trie_c:packed array[trie_pointer] of packed_ASCII_code;
+ {characters to match}
+@z
+% In modules 951--954, change "127" to "255" and "128" to "256"
+@x module 952
+trie_link(0):=0; trie_char(0):=0; trie_op(0):=min_quarterword;
+@y
+trie_link(0):=0; trie_char(0):=min_quarterword; trie_op(0):=min_quarterword;
+@z
+@x module 953
+begin c:=trie_c[p];
+@y
+begin c:=so(trie_c[p]);
+@z
+@x module 955
+ begin if trie_link(h+trie_c[q])=0 then goto not_found;
+@y
+ begin if trie_link(h+so(trie_c[q]))=0 then goto not_found;
+@z
+@x module 956
+repeat z:=h+trie_c[q]; trie_back(trie_link(z)):=trie_back(z);
+@y
+repeat z:=h+so(trie_c[q]); trie_back(trie_link(z)):=trie_back(z);
+@z
+@x module 959
+ begin q:=trie_l[p]; c:=trie_c[p];
+ trie_link(z+c):=trie_ref[q]; trie_char(z+c):=c; trie_op(z+c):=trie_o[p];
+@y
+ begin q:=trie_l[p]; c:=so(trie_c[p]);
+ trie_link(z+c):=trie_ref[q]; trie_char(z+c):=qi(c); trie_op(z+c):=trie_o[p];
+@z
+@x module 962
+ begin if cur_chr="." then cur_chr:=128 {edge-of-word delimiter}
+ else begin cur_chr:=lc_code(cur_chr);
+ if cur_chr=0 then
+ begin print_err("Nonletter");
+@.Nonletter@>
+ help1("(See Appendix H.)"); error; cur_chr:=128;
+ end;
+ end;
+ if k<63 then
+ begin incr(k); hc[k]:=cur_chr-1; hyf[k]:=0; digit_sensed:=false;
+ end;
+ end
+else begin hyf[k]:=cur_chr-"0";
+ if k<63 then digit_sensed:=true;
+ end
+@y
+ begin if cur_chr="." then cur_chr:=0 {edge-of-word delimiter}
+ else begin cur_chr:=lc_code(cur_chr);
+ if cur_chr=0 then
+ begin print_err("Nonletter");
+@.Nonletter@>
+ help1("(See Appendix H.)"); error;
+ end;
+ end;
+ if k<63 then
+ begin incr(k); hc[k]:=cur_chr; hyf[k]:=0; digit_sensed:=false;
+ end;
+ end
+ else if k<63 then
+ begin hyf[k]:=cur_chr-"0"; digit_sensed:=true;
+ end;
+ end
+@z
+@x module 963
+ while (p>0)and(c>trie_c[p]) do
+@y
+ while (p>0)and(c>so(trie_c[p])) do
+@z
+@x ibid
+ if (p=0)or(c<trie_c[p]) then
+@y
+ if (p=0)or(c<so(trie_c[p])) then
+@z
+@x module 964
+trie_c[p]:=c; trie_o[p]:=min_quarterword;
+@y
+trie_c[p]:=si(c); trie_o[p]:=min_quarterword;
+@z
+@x module 965
+if hc[1]=127 then hyf[0]:=0;
+if hc[k]=127 then hyf[k]:=0;
+@y
+if hc[1]=0 then hyf[0]:=0;
+if hc[k]=0 then hyf[k]:=0;
+@z
+@x module 966
+h.rh:=0; h.b0:=min_quarterword; h.b1:=0; {|trie_link:=0|,
+ |trie_op:=min_quarterword|, |trie_char:=0|}
+@y
+h.rh:=0; h.b0:=min_quarterword; h.b1:=min_quarterword; {|trie_link:=0|,
+ |trie_op:=min_quarterword|, |trie_char:=qi(0)|}
+@z
+@x module 1034
+if c<128 then
+@y
+@z
+@x ibid
+else space_factor:=1000
+@y
+@z
+@x module 1151
+letter,other_char,char_given: if cur_chr>=128 then c:=cur_chr
+ else begin c:=ho(math_code(cur_chr));
+@y
+letter,other_char,char_given: begin c:=ho(math_code(cur_chr));
+@z
+@x module 1154
+mmode+letter,mmode+other_char,mmode+char_given: if cur_chr<128 then
+ set_math_char(ho(math_code(cur_chr)))
+ else set_math_char(cur_chr);
+mmode+char_num: begin scan_char_num; cur_chr:=cur_val;
+ if cur_chr<128 then set_math_char(ho(math_code(cur_chr)))
+ else set_math_char(cur_chr);
+@y
+mmode+letter,mmode+other_char,mmode+char_given:
+ set_math_char(ho(math_code(cur_chr)));
+mmode+char_num: begin scan_char_num; cur_chr:=cur_val;
+ set_math_char(ho(math_code(cur_chr)));
+@z
+@x module 1232
+ p:=cur_chr; scan_seven_bit_int; p:=p+cur_val; scan_optional_equals;
+@y
+ p:=cur_chr; scan_char_num; p:=p+cur_val; scan_optional_equals;
+@z
+@x module 1233
+else n:=127
+@y
+else n:=255
+@z
+@x module 1289
+ begin if t>=cs_token_flag then t:=t-active_base;
+ c:=t mod 256;
+ if c<128 then if equiv(b+c)<>0 then t:=256*(t div 256)+equiv(b+c);
+ if t>=cs_token_flag then info(p):=t+active_base
+ else info(p):=t;
+@y
+ begin c:=t mod 256;
+ if equiv(b+c)<>0 then info(p):=t-c+equiv(b+c);
+@z
+@x module 1309
+ w.b0:=str_pool[k]; w.b1:=str_pool[k+1];
+ w.b2:=str_pool[k+2]; w.b3:=str_pool[k+3];
+@y [often qi(so(x))=x, but not e.g. when "quarterwords" are two bytes]
+ w.b0:=qi(so(str_pool[k])); w.b1:=qi(so(str_pool[k+1]));
+ w.b2:=qi(so(str_pool[k+2])); w.b3:=qi(so(str_pool[k+3]));
+@z
+@x module 1310
+ str_pool[k]:=w.b0; str_pool[k+1]:=w.b1;
+ str_pool[k+2]:=w.b2; str_pool[k+3]:=w.b3
+@y
+ str_pool[k]:=si(qo(w.b0)); str_pool[k+1]:=si(qo(w.b1));
+ str_pool[k+2]:=si(qo(w.b2)); str_pool[k+3]:=si(qo(w.b3))
+@z
+@x module 1368
+for k:=str_start[str_ptr] to pool_ptr-1 do dvi_out(str_pool[k]);
+@y
+for k:=str_start[str_ptr] to pool_ptr-1 do dvi_out(so(str_pool[k]));
+@z
+
+360. Major change to allow multiple hyphenation tables.
+I've combined this with the code for a minor change:
+361. New parameters \lefthyphenmin and \righthyphenmin.
+@x module 11 (affects most change files!)
+@!trie_size=8000; {space for hyphenation patterns; should be larger for
+ \.{INITEX} than it is in production versions of \TeX}
+@y
+@!trie_size=8000; {space for hyphenation patterns; should be larger for
+ \.{INITEX} than it is in production versions of \TeX}
+@!trie_op_size=500; {space for ``opcodes'' in the hyphenation patterns}
+@z
+@x module 212
+known as |space_factor|; it holds the current space factor used in spacing
+calculations. In math mode, |aux| is also known as |incompleat_noad|; if
+@y
+known as |space_factor| and |clang|; it holds the current space factor used in
+spacing calculations, and the current language used for hyphenation.
+(The value of |clang| is undefined in restricted horizontal mode.)
+In math mode, |aux| is also known as |incompleat_noad|; if
+@z
+@x ibid
+ @!pg_field,@!aux_field,@!ml_field: integer;
+@y
+ @!pg_field,@!ml_field: integer;
+ @!aux_field: memory_word;
+@z
+@x module 213
+@d prev_depth==aux {the name of |aux| in vertical mode}
+@d space_factor==aux {the name of |aux| in horizontal mode}
+@d incompleat_noad==aux {the name of |aux| in math mode}
+@y
+@d prev_depth==aux.sc {the name of |aux| in vertical mode}
+@d space_factor==aux.hh.lh {part of |aux| in horizontal mode}
+@d clang==aux.hh.rh {the other part of |aux| in horizontal mode}
+@d incompleat_noad==aux.int {the name of |aux| in math mode}
+@z
+@x module 218
+@!a:integer; {auxiliary}
+@y
+@!a:memory_word; {auxiliary}
+@z
+@x module 219
+ if a<=ignore_depth then print("ignored")
+ else print_scaled(a);
+ if nest[p].pg_field<>0 then
+ begin print(", prevgraf ");
+ print_int(nest[p].pg_field); print(" line");
+ if nest[p].pg_field<>1 then print_char("s");
+ end;
+ end;
+1: begin print_nl("spacefactor "); print_int(a);
+ end;
+2: if a<>null then
+ begin print("this will be denominator of:"); show_box(a);
+@y
+ if a.sc<=ignore_depth then print("ignored")
+ else print_scaled(a.sc);
+ if nest[p].pg_field<>0 then
+ begin print(", prevgraf ");
+ print_int(nest[p].pg_field); print(" line");
+ if nest[p].pg_field<>1 then print_char("s");
+ end;
+ end;
+1: begin print_nl("spacefactor "); print_int(a.hh.lh);
+ if m>0 then if a.hh.rh>0 then
+ begin print(", current language "); print_int(a.hh.rh);
+ end;
+ end;
+2: if a.int<>null then
+ begin print("this will be denominator of:"); show_box(a.int);
+@z
+@x modules 236--238
+@d int_pars=50 {total number of integer parameters}
+@y
+@d language_code=50 {current hyphenation table}
+@d left_hyphen_min_code=51 {minimum left hyphenation fragment size}
+@d right_hyphen_min_code=52 {minimum right hyphenation fragment size}
+@d int_pars=53 {total number of integer parameters}
+@z and define/print these new parameters appropriately (mimicking new_line_char)
+@x module 418
+else begin cur_val:=aux;
+ if m=vmode then cur_val_level:=dimen_val@+else cur_val_level:=int_val;
+ end
+@y
+else if m=vmode then
+ begin cur_val:=prev_depth; cur_val_level:=dimen_val;
+ end
+else begin cur_val:=space_factor; cur_val_level:=int_val;
+ end
+@z
+@x module 775
+ begin mode:=-vmode; prev_depth:=nest[nest_ptr-2].aux_field;
+@y
+ begin mode:=-vmode; prev_depth:=nest[nest_ptr-2].aux_field.sc;
+@z
+@x module 786
+begin push_nest; mode:=(-hmode-vmode)-mode; aux:=0;
+@y
+begin push_nest; mode:=(-hmode-vmode)-mode;
+if mode=-hmode then space_factor:=0 @+else prev_depth:=0;
+@z
+@x module 863
+loop@+ begin @<Create an active breakpoint representing the beginning of
+ the paragraph@>;
+@y
+loop@+ begin if threshold>inf_bad then threshold:=inf_bad;
+ if second_pass then @<Initialize for hyphenating a paragraph@>;
+ @<Create an active breakpoint representing the beginning of the paragraph@>;
+@z
+@x module 891
+passes on only about 5 per cent of the paragraphs.
+@y
+passes on only about 5 per cent of the paragraphs.
+
+@<Initialize for hyphenating...@>=
+begin @!init if trie_not_ready then init_trie; @+tini@;@/
+l_hyf:=left_hyphen_min-1;@+if l_hyf<0 then l_hyf:=0;
+r_hyf:=right_hyphen_min-1;@+if r_hyf<0 then r_hyf:=0;
+min_hyf:=l_hyf+r_hyf+2; cur_lang:=0;
+end
+@z
+@x module 892
+@!hyf_char:integer; {hyphen character of the relevant font}
+@y
+@!hyf_char:integer; {hyphen character of the relevant font}
+@!cur_lang:ASCII_code; {current hyphenation table of interest}
+@!l_hyf,@!r_hyf,@!min_hyf:integer; {limits on fragment sizes}
+@z
+@x module 894
+begin s:=link(cur_p);
+@y
+begin if min_hyf>63 then goto done1;
+s:=link(cur_p);
+@z
+@x module 896
+ else if type(s)=whatsit_node then goto continue
+@y
+ else if type(s)=whatsit_node then
+ begin @<Advance \(p)past a whatsit node in the \(p)pre-hyphenation loop@>;
+ goto continue;
+ end
+@z
+@x module 899 (title of this module also changes appropriately)
+if hn<5 then goto done1;
+@y
+if hn<min_hyf then goto done1;
+@z
+@x module 902
+for j:=2 to hn-3 do if odd(hyf[j]) then goto found1;
+@y
+for j:=l_hyf+1 to hn-r_hyf-1 do if odd(hyf[j]) then goto found1;
+@z
+@x module 920
+$p_1\ldots p_k$ by setting |@t$z_1$@>:=@t$p_1$@>| and then, for |1<i<=k|,
+@y
+$p_1\ldots p_k$ by letting $z_0$ be one greater than the relevant language index
+and then, for |1<=i<=k|,
+@z
+@x ibid
+the letters in |hc[(l-k+1)..l@,]|, we perform all of the required operations
+for this pattern by carrying out the following little program: Set
+|v:=trie_op(@t$z_k$@>)|. Then set |hyf[l-hyf_distance[v]]:=@tmax@>(
+hyf[l-hyf_distance[v]], hyf_num[v])|, and |v:=hyf_next[v]|; repeat, if
+necessary, until |v=min_quarterword|.
+@y
+the letters in |hc[(l-k+1)..l@,]| of language |t|,
+we perform all of the required operations
+for this pattern by carrying out the following little program: Set
+|v:=trie_op(@t$z_k$@>)|. Then set |v:=v+op_start[t]|,
+|hyf[l-hyf_distance[v]]:=@tmax@>(hyf[l-hyf_distance[v]], hyf_num[v])|,
+and |v:=hyf_next[v]|; repeat, if necessary, until |v=min_quarterword|.
+@z
+@x module 921
+@!hyf_distance:array[quarterword] of small_number; {position |k-j| of $n_j$}
+@!hyf_num:array[quarterword] of small_number; {value of $n_j$}
+@!hyf_next:array[quarterword] of quarterword; {continuation of this |trie_op|}
+@y
+@!hyf_distance:array[1..trie_op_size] of small_number; {position |k-j| of $n_j$}
+@!hyf_num:array[1..trie_op_size] of small_number; {value of $n_j$}
+@!hyf_next:array[1..trie_op_size] of quarterword; {continuation code}
+@!op_start:array[ASCII_code] of 0..trie_op_size; {offset for current language}
+@z
+@x module 922
+@!v:quarterword; {an index into |hyf_distance|, etc.}
+@y
+@!v:integer; {an index into |hyf_distance|, etc.}
+@z
+@x module 923
+for j:=0 to hn-2 do
+ begin z:=hc[j]; l:=j;
+@y
+if trie_char(cur_lang+1)<>qi(cur_lang) then return; {no patterns for |cur_lang|}
+for j:=0 to hn-r_hyf do
+ begin z:=trie_link(cur_lang+1)+hc[j]; l:=j;
+@z
+@x ibid
+found: hyf[1]:=0; hyf[hn-2]:=0; hyf[hn-1]:=0; hyf[hn]:=0
+@y
+found: for j:=0 to l_hyf do hyf[j]:=0;
+for j:=0 to r_hyf do hyf[hn-j]:=0
+@z
+@x module 924
+repeat i:=l-hyf_distance[v];
+@y
+repeat v:=v+op_start[cur_lang]; i:=l-hyf_distance[v];
+@z
+@x module 930
+h:=hc[1];
+@y
+h:=hc[1]; incr(hn); hc[hn]:=cur_lang;
+@z
+@x ibid
+not_found:
+@y
+not_found: decr(hn)
+@z
+@x module 931
+ goto found;
+@y
+ decr(hn); goto found;
+@z
+@x module 934
+@p procedure new_hyph_exceptions; {enters new exceptions}
+label reswitch, exit, found, not_found, done;
+@y
+@d set_cur_lang==if language<=0 then cur_lang:=0
+ else if language>255 then cur_lang:=0
+ else cur_lang:=language
+
+@p procedure new_hyph_exceptions; {enters new exceptions}
+label reswitch, exit, found, not_found;
+@z
+@x ibid
+begin scan_left_brace; {a left brace must follow \.{\\hyphenation}}
+@y
+begin scan_left_brace; {a left brace must follow \.{\\hyphenation}}
+set_cur_lang;
+@z
+@x module 935
+ spacer,right_brace: begin if n>4 then @<Enter a hyphenation exception@>;
+@y
+ spacer,right_brace: begin if n>1 then @<Enter a hyphenation exception@>;
+@z
+@x module 938
+begin if n>1 then
+@y
+begin if n<63 then
+@z
+@x module 939
+begin str_room(n); h:=0;
+@y
+begin incr(n); hc[n]:=cur_lang; str_room(n); h:=0;
+@z
+@x ibid
+loop@+ begin if p=null then goto done;
+ if info(p)<n-2 then goto done;
+ q:=link(p); free_avail(p); p:=q; {eliminate hyphens that \TeX\ doesn't like}
+ end;
+done: @<Insert the \(p)pair |(s,p)| into the exception table@>;
+@y
+@<Insert the \(p)pair |(s,p)| into the exception table@>;
+@z
+@x module 942
+@p@!init @<Declare procedures for preprocessing hyphenation patterns@>@;
+@y
+@<Declare subprocedures for |line_break|@>=
+@!init @<Declare procedures for preprocessing hyphenation patterns@>@;
+@z
+@x module 943
+@d quarterword_diff=max_quarterword-min_quarterword
+@d trie_op_hash_size=quarterword_diff+quarterword_diff {double}
+
+@<Glob...@>=
+@!init@! trie_op_hash:array[0..trie_op_hash_size] of quarterword;
+ {trie op codes for triples}
+tini@;@/
+@t\hskip1em@>@!trie_op_ptr:quarterword; {highest |trie_op| assigned}
+@y
+@<Glob...@>=
+@!init@! trie_op_hash:array[-trie_op_size..trie_op_size] of 0..trie_op_size;
+ {trie op codes for quadruples}
+@!trie_used:array[ASCII_code] of quarterword;
+ {largest opcode used so far for this language}
+@!trie_op_lang:array[1..trie_op_size] of ASCII_code;
+ {language part of a hashed quadruple}
+@!trie_op_val:array[1..trie_op_size] of quarterword;
+ {opcode corresponding to a hashed quadruple}
+@!trie_op_ptr:0..trie_op_size; {number of stored ops so far}
+tini
+@z
+@x module 944 should be entirely replaced
+@y by the following code:
+@ It's tempting to remove the |overflow| stops in the following procedure;
+|new_trie_op| could return |min_quarterword| (thereby simply ignoring
+part of a hyphenation pattern) instead of aborting the job. However, that would
+lead to different hyphenation results on different installations of \TeX\
+using the same patterns. The |overflow| stops are necessary for portability
+of patterns.
+
+@<Declare procedures for preprocessing hyph...@>=
+function new_trie_op(@!d,@!n:small_number;@!v:quarterword):quarterword;
+label exit;
+var h:-trie_op_size..trie_op_size; {trial hash location}
+@!u:quarterword; {trial op code}
+@!l:0..trie_op_size; {pointer to stored data}
+begin h:=abs(n+313*d+361*v+1009*cur_lang) mod (trie_op_size+trie_op_size)
+ - trie_op_size;
+loop@+ begin l:=trie_op_hash[h];
+ if l=0 then {empty position found for a new op}
+ begin if trie_op_ptr=trie_op_size then
+ overflow("pattern memory ops",trie_op_size);
+ u:=trie_used[cur_lang];
+ if u=max_quarterword then
+ overflow("pattern memory ops per language",
+ max_quarterword-min_quarterword);
+ incr(trie_op_ptr); incr(u); trie_used[cur_lang]:=u;
+ hyf_distance[trie_op_ptr]:=d;
+ hyf_num[trie_op_ptr]:=n; hyf_next[trie_op_ptr]:=v;
+ trie_op_lang[trie_op_ptr]:=cur_lang; trie_op_hash[h]:=trie_op_ptr;
+ trie_op_val[trie_op_ptr]:=u; new_trie_op:=u; return;
+ end;
+ if (hyf_distance[l]=d)and(hyf_num[l]=n)and(hyf_next[l]=v)
+ and(trie_op_lang[l]=cur_lang) then
+ begin new_trie_op:=trie_op_val[l]; return;
+ end;
+ if h>-trie_op_size then decr(h)@+else h:=trie_op_size;
+ end;
+exit:end;
+@z
+@x module 945: move the code from this module into 946, and introduce new code:
+@y
+@ After |new_trie_op| has compressed the necessary opcode information,
+plenty of information is available to unscramble the data into the
+final form needed by our hyphenation algorithm.
+
+@<Sort the hyphenation op tables into proper order@>=
+op_start[0]:=-min_quarterword;
+for j:=1 to 255 do op_start[j]:=op_start[j-1]+qo(trie_used[j-1]);
+for j:=1 to trie_op_ptr do
+ trie_op_hash[j]:=op_start[trie_op_lang[j]]+trie_op_val[j]; {destination}
+for j:=1 to trie_op_ptr do while trie_op_hash[j]>j do
+ begin k:=trie_op_hash[j];@/
+ t:=hyf_distance[k]; hyf_distance[k]:=hyf_distance[j]; hyf_distance[j]:=t;@/
+ t:=hyf_num[k]; hyf_num[k]:=hyf_num[j]; hyf_num[j]:=t;@/
+ t:=hyf_next[k]; hyf_next[k]:=hyf_next[j]; hyf_next[j]:=t;@/
+ trie_op_hash[j]:=trie_op_hash[k]; trie_op_hash[k]:=k;
+ end
+@z
+@x module 949: Move this code to just after the new module 945!
+mentioned so far, let's write a procedure that does the initialization.
+
+@<Declare procedures for preprocessing hyph...@>=
+procedure init_pattern_memory; {gets ready to build a linked trie}
+var h:0..trie_op_hash_size; {an index into |trie_op_hash|}
+@!p:trie_pointer; {an index into |trie_hash|}
+begin for h:=0 to trie_op_hash_size do trie_op_hash[h]:=min_quarterword;
+trie_op_ptr:=min_quarterword; trie_root:=0; trie_c[0]:=0; trie_ptr:=0;
+for p:=0 to trie_size do trie_hash[p]:=0;
+end;
+@y
+mentioned so far, let's write down the code that gets them started.
+
+@<Initialize table entries...@>=
+for k:=-trie_op_size to trie_op_size do trie_op_hash[k]:=0;
+for k:=0 to 255 do trie_used[k]:=min_quarterword;
+trie_op_ptr:=0;
+@z
+@x module 950
+@t\hskip1em@>@!trie_min:trie_pointer;
+ {all locations |<=trie_min| are vacant in |trie|}
+tini@;@/
+@t\hskip1em@>@!trie_max:trie_pointer; {largest location used in |trie|}
+@y
+@t\hskip10pt@>@!trie_min:array[ASCII_code] of trie_pointer;
+ {the first possible slot for each character}
+@t\hskip10pt@>@!trie_max:trie_pointer; {largest location used in |trie|}
+@t\hskip10pt@>@!trie_not_ready:boolean; {is the trie still in linked form?}
+tini
+@z
+@x modules 951 and 952
+@ Here is how these data structures are initialized.
+
+@<Declare procedures for preprocessing hyph...@>=
+procedure init_trie_memory; {gets ready to pack into |trie|}
+var p:trie_pointer; {index into |trie_ref|, |trie|, |trie_taken|}
+begin for p:=0 to trie_ptr do trie_ref[p]:=0;
+trie_max:=256; trie_min:=256; trie_link(0):=1; trie_taken[0]:=false;
+trie_link(trie_size):=0; trie_back(0):=trie_size; {wrap around}
+for p:=1 to 256 do
+ begin trie_back(p):=p-1; trie_link(p):=p+1; trie_taken[p]:=false;
+ end;
+end;
+
+@ Each time \.{\\patterns} appears, it overrides any patterns that were
+entered earlier, so the arrays are not initialized until \TeX\ sees
+\.{\\patterns}. However, some of the global variables must be
+initialized when \.{INITEX} is loaded, in case the user never mentions
+any \.{\\patterns}.
+
+@<Initialize table entries...@>=
+trie_op_ptr:=min_quarterword;@/
+trie_link(0):=0; trie_char(0):=min_quarterword; trie_op(0):=min_quarterword;
+for k:=1 to 255 do trie[k]:=trie[0];
+trie_max:=255;
+@y
+@ Each time \.{\\patterns} appears, it contributes further patterns to
+the future trie, which will be built only when hyphenation is attempted or
+when a format file is dumped. The boolean variable |trie_not_ready|
+will change to |false| when the trie is compressed; this will disable
+further patterns.
+
+@<Initialize table entries...@>=
+trie_not_ready:=true; trie_root:=0; trie_c[0]:=si(0); trie_ptr:=0;
+
+@ Here is how the trie-compression data structures are initialized.
+If storage is tight, it would be possible to overlap |trie_op_hash|,
+|trie_op_lang|, and |trie_op_val| with |trie|, |trie_hash|, and |trie_taken|,
+because we finish with the former just before we need the latter.
+
+@<Get ready to compress the trie@>=
+@<Sort the hyphenation...@>;
+for p:=0 to trie_size do trie_hash[p]:=0;
+trie_root:=compress_trie(trie_root); {identify equivalent subtries}
+for p:=0 to trie_ptr do trie_ref[p]:=0;
+for p:=0 to 255 do trie_min[p]:=p+1;
+trie_link(0):=1; trie_max:=0
+@z
+@x module 953
+begin c:=so(trie_c[p]);
+if c<trie_min then trie_min:=c;
+if trie_min=0 then z:=trie_link(trie_size)
+else z:=trie_link(trie_min-1); {get the first conceivably good hole}
+loop@+ begin if z<c then goto not_found;
+ h:=z-c;@/
+@y
+@!l,@!r:trie_pointer; {left and right neighbors}
+@!ll:1..256; {upper limit of |trie_min| updating}
+begin c:=so(trie_c[p]);
+z:=trie_min[c]; {get the first conceivably good hole}
+loop@+ begin h:=z-c;@/
+@z
+@x module 956
+repeat z:=h+so(trie_c[q]); trie_back(trie_link(z)):=trie_back(z);
+trie_link(trie_back(z)):=trie_link(z); trie_link(z):=0; q:=trie_r[q];
+@y
+repeat z:=h+so(trie_c[q]); l:=trie_back(z); r:=trie_link(z);
+trie_back(r):=l; trie_link(l):=r; trie_link(z):=0;
+if l<256 then
+ begin if z<256 then ll:=z @+else ll:=256;
+ repeat trie_min[l]:=r; incr(l);
+ until l=ll;
+ end;
+q:=trie_r[q];
+@z
+@x module 958 is entirely replaced
+@y by the following new code:
+@ When the whole trie has been allocated into the sequential table, we
+must go through it once again so that |trie| contains the correct
+information. Null pointers in the linked trie will be represented by the
+value~0, which properly implements an ``empty'' family.
+
+@<Move the data into |trie|@>=
+h.rh:=0; h.b0:=min_quarterword; h.b1:=min_quarterword; {|trie_link:=0|,
+ |trie_op:=min_quarterword|, |trie_char:=qi(0)|}
+if trie_root=0 then {no patterns were given}
+ begin for r:=0 to 256 do trie[r]:=h;
+ trie_max:=256;
+ end
+else begin trie_fix(trie_root); {this fixes the non-holes in |trie|}
+ r:=0; {now we will zero out all the holes}
+ repeat s:=trie_link(r); trie[r]:=h; r:=s;
+ until r>trie_max;
+ end;
+trie_char(0):=qi("?"); {make |trie_char(c)<>c| for all |c|}
+@z
+@x module 960
+@!r,@!s:trie_pointer; {used to clean up the packed |trie|}
+@!h:two_halves; {template used to zero out |trie|'s holes}
+begin scan_left_brace; {a left brace must follow \.{\\patterns}}
+init_pattern_memory;@/
+@<Enter all of the patterns into a linked trie, until coming to a right
+ brace@>;
+trie_root:=compress_trie(trie_root); {compress the trie}
+@<Pack the trie@>;
+end;
+@y
+begin if trie_not_ready then
+ begin set_cur_lang; scan_left_brace; {a left brace must follow \.{\\patterns}}
+ @<Enter all of the patterns into a linked trie, until coming to a right
+ brace@>;
+ end
+else begin print_err("Too late for "); print_esc("patterns");
+ help1("All patterns must be given before typesetting begins.");
+ error; link(garbage):=scan_toks(false,false); flush_list(def_ref);
+ end;
+end;
+@z
+@x module 963
+q:=0;
+while l<k do
+ begin incr(l); c:=hc[l]; p:=trie_l[q]; first_child:=true;
+@y
+q:=0; hc[0]:=cur_lang;
+while l<=k do
+ begin c:=hc[l]; incr(l); p:=trie_l[q]; first_child:=true;
+@z
+@x module 966 now says that the first call ``takes'' location 1,
+@y and the Pascal code in this module is entirely replaced by the following:
+@<Declare procedures for preprocessing hyphenation patterns@>=
+procedure init_trie;
+var @!p:trie_pointer; {pointer for initialization}
+@!j,@!k,@!t:integer; {all-purpose registers for initialization}
+@!r,@!s:trie_pointer; {used to clean up the packed |trie|}
+@!h:two_halves; {template used to zero out |trie|'s holes}
+begin @<Get ready to compress the trie@>;
+if trie_root<>0 then
+ begin first_fit(trie_root); trie_pack(trie_root);
+ end;
+@<Move the data into |trie|@>;
+trie_not_ready:=false;
+end;
+@z
+@x module 1033 gets new code before main_loop_1
+@y
+if mode>0 then if language<>clang then fix_language;
+@z
+@x modules 1091 and 1200
+push_nest; mode:=hmode; space_factor:=1000;
+@y
+push_nest; mode:=hmode; space_factor:=1000; clang:=0;
+@z
+@x module 1324
+for k:=0 to trie_max do dump_hh(trie[k]);
+dump_int(trie_op_ptr);
+for k:=min_quarterword+1 to trie_op_ptr do
+ begin dump_int(hyf_distance[k]);
+ dump_int(hyf_num[k]);
+ dump_int(hyf_next[k]);
+ end;
+print_ln; print_int(hyph_count); print(" hyphenation exception");
+if hyph_count<>1 then print_char("s");
+print_nl("Hyphenation trie of length "); print_int(trie_max);
+@.Hyphenation trie...@>
+print(" has "); print_int(qo(trie_op_ptr)); print(" op");
+if trie_op_ptr<>min_quarterword+1 then print_char("s")
+@y
+print_ln; print_int(hyph_count); print(" hyphenation exception");
+if hyph_count<>1 then print_char("s");
+if trie_not_ready then init_trie;
+dump_int(trie_max);
+for k:=0 to trie_max do dump_hh(trie[k]);
+dump_int(trie_op_ptr);
+for k:=1 to trie_op_ptr do
+ begin dump_int(hyf_distance[k]);
+ dump_int(hyf_num[k]);
+ dump_int(hyf_next[k]);
+ end;
+print_nl("Hyphenation trie of length "); print_int(trie_max);
+@.Hyphenation trie...@>
+print(" has "); print_int(trie_op_ptr); print(" op");
+if trie_op_ptr<>1 then print_char("s");
+print(" out of "); print_int(trie_op_size);
+for k:=255 downto 0 do if trie_used[k]>min_quarterword then
+ begin print_nl(" "); print_int(qo(trie_used[k]));
+ print(" for language "); print_int(k);
+ dump_int(k); dump_int(qo(trie_used[k]));
+ end
+@z
+@x module 1325
+undump_size(0)(trie_size)('trie size')(trie_max);
+for k:=0 to trie_max do undump_hh(trie[k]);
+undump(min_quarterword)(max_quarterword)(trie_op_ptr);
+for k:=min_quarterword+1 to trie_op_ptr do
+ begin undump(0)(63)(hyf_distance[k]); {a |small_number|}
+ undump(0)(63)(hyf_num[k]);
+ undump(min_quarterword)(max_quarterword)(hyf_next[k]);
+ end
+@y
+undump_size(0)(trie_size)('trie size')(j); {|trie_max|}
+for k:=0 to j do undump_hh(trie[k]);
+undump_size(0)(trie_op_size)('trie op size')(j); {|trie_op_ptr|}
+for k:=1 to j do
+ begin undump(0)(63)(hyf_distance[k]); {a |small_number|}
+ undump(0)(63)(hyf_num[k]);
+ undump(min_quarterword)(max_quarterword)(hyf_next[k]);
+ end;
+k:=256;
+while j>0 do
+ begin undump(0)(k-1)(k); undump(1)(j)(x); j:=j-x; op_start[k]:=qo(j);
+ end;
+@!init trie_not_ready:=false @+tini
+@z
+@x module 1341 gets two new definitions
+@y
+@d language_node=4 {|subtype| in whatsits that change the current language}
+@d stored_language(#)==mem[#+1].int {language number, in the range |0..255|}
+@z
+@x module 1344 gets a new definition and a new Pascal statement
+@y
+@d set_language_code=5 {command modifier for \.{\\setlanguage}}
+primitive("setlanguage",extension,set_language_code);@/
+@!@:set_language_}{\.{\\setlanguage} primitive@>
+@z
+@x module 1346 gets a new case
+@y
+ set_language_code:print_esc("setlanguage");
+@z
+@x module 1348 gets a new case
+@y
+set_language_code:@<Implement \.{\\setlanguage}@>;
+@z
+@x module 1356 gets a new case
+@y
+language_node:begin print_esc("setlanguage");
+ print_int(stored_language(p));
+ end;
+@z
+% in modules 1357 and 1358, change "close_node" to "close_node,language_node".
+@x module 1362 becomes two modules
+@ @<Advance \(p)past a whatsit node in the |line_break| loop@>=do_nothing
+@y
+@ @<Advance \(p)past a whatsit node in the \(l)|line_break| loop@>=
+if subtype(cur_p)=language_node then cur_lang:=stored_language(cur_p)
+
+@ @<Advance \(p)past a whatsit node in the \(p)pre-hyphenation loop@>=
+if subtype(s)=language_node then cur_lang:=stored_language(s)
+@z and old module 1367 is moved to just before the old module 1378
+@x module 1373 gets a new case
+@y
+language_node:do_nothing;
+@z
+@x new modules before the system-dependent changes (i.e. before the old 1376)
+@y
+@ @<Implement \.{\\setlanguage}@>=
+if abs(mode)<>hmode then report_illegal_case
+else begin new_whatsit(language_node,small_node_size);
+ scan_int;
+ if cur_val<=0 then clang:=0
+ else if cur_val>255 then clang:=0
+ else clang:=cur_val;
+ stored_language(tail):=clang;
+ end
+
+@ Finally, we need a subroutine that comes into play when a character of
+a non-|clang| language is being appended to the current paragraph.
+
+@<Declare action...@>=
+procedure fix_language;
+var @!l:ASCII_code; {the new current language}
+begin if language<=0 then l:=0
+else if language>255 then l:=0
+else l:=language;
+if l<>clang then
+ begin new_whatsit(language_node,small_node_size);
+ stored_language(tail):=l; clang:=l;
+ end;
+end;
+@z
+
+362. Major extension to ligature capability.
+@x module 143
+a linked list of character nodes for those characters.
+@y
+a linked list of character nodes for all original characters that have been
+deleted. (This list might be empty if the characters that generated the
+ligature were retained in other nodes.)
+
+The |subtype| field is 0, plus 2 and/or 1 if the original source of the
+ligature included implicit left and/or right boundaries.
+@z
+@x in module 144 add the following procedure to the existing code
+@y
+function new_lig_item(@!c:quarterword):pointer;
+var p:pointer; {the new node}
+begin p:=get_node(small_node_size); character(p):=c; lig_ptr(p):=null;
+new_lig_item:=p;
+end;
+@z
+@x module 193
+font_in_short_display:=font(lig_char(p));
+short_display(lig_ptr(p)); print_char(")");
+@y
+if subtype(p)>1 then print_char("|");
+font_in_short_display:=font(lig_char(p)); short_display(lig_ptr(p));
+if odd(subtype(p)) then print_char("|");
+print_char(")");
+end
+@z
+@x modules 208 and 209
+@d radical=65 {square root and similar signs ( \.{\\radical} )}
+@y
+@d no_boundary=65 {suppress boundary ligatures ( \.{\\noboundary} )}
+@d radical=66 {square root and similar signs ( \.{\\radical} )}
+@z and so on, adding 1 to each definition until getting to max_command=100
+@x module 265 gets a new statement
+@y
+primitive("noboundary",no_boundary,0);@/
+@!@:no_boundary_}{\.{\\noboundary} primitive@>
+@z
+@x module 266 gets a new case
+@y
+no_boundary:print_esc("noboundary");
+@z
+@x module 545 is entirely replaced
+@y by the following new specifications:
+@ The |lig_kern| array contains instructions in a simple programming language
+that explains what to do for special letter pairs. Each word in this array is a
+|@!lig_kern_command| of four bytes.
+
+\yskip\hang first byte: |skip_byte|, indicates that this is the final program
+ step if the byte is 128 or more, otherwise the next step is obtained by
+ skipping this number of intervening steps.\par
+\hang second byte: |next_char|, ``if |next_char| follows the current character,
+ then perform the operation and stop, otherwise continue.''\par
+\hang third byte: |op_byte|, indicates a ligature step if less than~128,
+ a kern step otherwise.\par
+\hang fourth byte: |remainder|.\par
+\yskip\noindent
+In a kern step, an
+additional space equal to |kern[256*(op_byte-128)+remainder]| is inserted
+between the current character and |next_char|. This amount is
+often negative, so that the characters are brought closer together
+by kerning; but it might be positive.
+
+There are eight kinds of ligature steps, having |op_byte| codes $4a+2b+c$ where
+$0\le a\le b+c$ and $0\le b,c\le1$. The character whose code is
+|remainder| is inserted between the current character and |next_char|;
+then the current character is deleted if $b=0$, and |next_char| is
+deleted if $c=0$; then we pass over $a$~characters to reach the next
+current character (which may have a ligature/kerning program of its own).
+
+If the very first instruction of the |lig_kern| array has |skip_byte=255|,
+the |next_char| byte is the so-called right boundary character of this font;
+the value of |next_char| need not lie between |bc| and~|ec|.
+If the very last instruction of the |lig_kern| array has |skip_byte=255|,
+there is a special ligature/kerning program for a left boundary character,
+beginning at location |256*op_byte+remainder|.
+The interpretation is that \TeX\ puts implicit boundary characters
+before and after each consecutive string of characters from the same font.
+These implicit characters do not appear in the output, but they can affect
+ligatures and kerning.
+
+If the very first instruction of a character's |lig_kern| program has
+|skip_byte>128|, the program actually begins in location
+|256*op_byte+remainder|. This feature allows access to large |lig_kern|
+arrays, because the first instruction must otherwise
+appear in a location |<=255|.
+
+Any instruction with |skip_byte>128| in the |lig_kern| array must have
+|256*op_byte+remainder<nl|. If such an instruction is encountered during
+normal program execution, it denotes an unconditional halt; no ligature
+command is performed.
+
+@d stop_flag=qi(128) {value indicating `\.{STOP}' in a lig/kern program}
+@d kern_flag=qi(128) {op code for a kern step}
+@d skip_byte(#)==#.b0
+@d next_char(#)==#.b1
+@d op_byte(#)==#.b2
+@d rem_byte(#)==#.b3
+@z
+@x module 549
+@<Glob...@>=
+@y
+@d non_char==qi(256) {a |halfword| code that can't match a real character}
+@d non_address==font_mem_size {a spurious |font_index|}
+
+@<Glob...@>=
+@z
+@x module 548 gets a new type definition
+@y
+@!font_index=0..font_mem_size;
+@z
+@x module 549
+ {current \.{\\skewchar} values}
+@y
+ {current \.{\\skewchar} values}
+@!bchar_label:array[internal_font_number] of font_index;
+ {start of |lig_kern| program for left boundary character,
+ |non_address| if there is none}
+@!font_bchar:array[internal_font_number] of min_quarterword..non_char;
+ {right boundary character, |non_char| if there is none}
+@!font_false_bchar:array[internal_font_number] of min_quarterword..non_char;
+ {|font_bchar| if it doesn't exist in the font, otherwise |non_char|}
+@z
+@x module 557
+@d char_kern_end(#)==rem_byte(#)].sc
+@y NOTE: Optimize kern_base_offset in your change file! It's a constant.
+@d char_kern_end(#)==256*op_byte(#)+rem_byte(#)].sc
+@d kern_base_offset==256*(kern_flag)
+@d lig_kern_restart_end(#)==256*op_byte(#)+rem_byte(#)+32768-kern_base_offset
+@d lig_kern_restart(#)==lig_kern_base[#]+lig_kern_restart_end
+@z
+@x module 560
+@!z:scaled; {the design size or the ``at'' size}
+@y
+@!bch_label:integer; {left boundary start location, or infinity}
+@!bchar:0..256; {right boundary character, or 256}
+@!z:scaled; {the design size or the ``at'' size}
+@z
+@x module 566
+kern_base[f]:=lig_kern_base[f]+nl;
+exten_base[f]:=kern_base[f]+nk;
+@y
+kern_base[f]:=lig_kern_base[f]+nl-kern_base_offset;
+exten_base[f]:=kern_base[f]+kern_base_offset+nk;
+@z
+@x module 573: The entire module is replaced
+@y by the following code.
+@ @d check_existence(#)==@t@>@;@/
+ begin check_byte_range(#);
+ qw:=char_info(f)(#); {N.B.: not |qi(#)|}
+ if not char_exists(qw) then abort;
+ end
+
+@<Read ligature/kern program@>=
+bch_label:=@'77777; bchar:=256;
+if nl>0 then
+ begin for k:=lig_kern_base[f] to kern_base[f]+kern_base_offset-1 do
+ begin store_four_quarters(font_info[k].qqqq);
+ if a>128 then
+ begin if 256*c+d>=nl then abort;
+ if a=255 then if k=lig_kern_base[f] then bchar:=b;
+ end
+ else begin if b<>bchar then check_existence(b);
+ if c<128 then check_existence(d) {check ligature}
+ else if 256*(c-128)+d>=nk then abort; {check kern}
+ if a<128 then if k-lig_kern_base[f]+a+1>=nl then abort;
+ end;
+ end;
+ if a=255 then bch_label:=256*c+d;
+ end;
+for k:=kern_base[f]+kern_base_offset to exten_base[f]-1 do
+ store_scaled(font_info[k].sc);
+@z
+@x module 574 (actually a bugfix)
+ if a<>0 then check_byte_range(a);
+ if b<>0 then check_byte_range(b);
+ if c<>0 then check_byte_range(c);
+ check_byte_range(d);
+@y
+ if a<>0 then check_existence(a);
+ if b<>0 then check_existence(b);
+ if c<>0 then check_existence(c);
+ check_existence(d);
+@z
+@x module 576
+font_name[f]:=nom;
+@y
+if bch_label<nl then bchar_label[f]:=bch_label+lig_kern_base[f]
+else bchar_label[f]:=non_address;
+font_bchar[f]:=qi(bchar);
+font_false_bchar[f]:=qi(bchar);
+if bchar<=ec then if bchar>=bc then
+ begin qw:=char_info(f)(bchar); {N.B.: not |qi(bchar)|}
+ if char_exists(qw) then font_false_bchar[f]:=non_char;
+ end;
+font_name[f]:=nom;
+@z
+@x module 708 (slight but optional optimization)
+continue: if (qo(y)>=font_bc[g])and(qo(y)<=font_ec[g]) then
+ begin q:=char_info(g)(y);
+@y
+if (qo(y)>=font_bc[g])and(qo(y)<=font_ec[g]) then
+ begin continue: q:=char_info(g)(y);
+@z
+@x module 740 (another bugfix)
+ i:=char_info(f)(y);
+@y
+ i:=char_info(f)(y);
+ if not char_exists(i) then goto done;
+@z
+@x module 741
+ repeat cur_i:=font_info[a].qqqq;
+ if qo(next_char(cur_i))=skew_char[cur_f] then
+ begin if op_bit(cur_i)>=kern_flag then
+ s:=char_kern(cur_f)(cur_i);
+ goto done1;
+ end;
+ incr(a);
+ until stop_bit(cur_i)>=stop_flag;
+@y
+ cur_i:=font_info[a].qqqq;
+ if skip_byte(cur_i)>stop_flag then
+ begin a:=256*(qo(op_byte(cur_i)))+rem_byte(cur_i);
+ cur_i:=font_info[a].qqqq;
+ end;
+ loop begin if qo(next_char(cur_i))=skew_char[cur_f] then
+ begin if op_byte(cur_i)>=kern_flag then
+ if skip_byte(cur_i)<=stop_flag then s:=char_kern(cur_f)(cur_i);
+ goto done1;
+ end;
+ if skip_byte(cur_i)>=stop_flag then goto done1
+ else a:=a+qo(skip_byte(cur_i))+1;
+ cur_i:=font_info[a].qqqq;
+ end;
+@z
+@x module 749 (yet another bugfix of the same type!)
+@!p,@!v,@!x,@!y,@!z:pointer; {temporary registers for box construction}
+@y
+@!p,@!v,@!x,@!y,@!z:pointer; {temporary registers for box construction}
+@!c:quarterword;@+@!i:four_quarters; {registers for character examination}
+@z
+@x ibid
+ begin cur_c:=rem_byte(cur_i); character(nucleus(q)):=cur_c;
+ cur_i:=char_info(cur_f)(cur_c);
+@y
+ begin c:=rem_byte(cur_i); i:=char_info(cur_f)(c);
+ if char_exists(i) then
+ begin cur_c:=c; cur_i:=i; character(nucleus(q)):=c;
+ end;
+@z
+@x module 752
+@!p:pointer; {temporary register for list manipulation}
+@y
+@!p,@!r:pointer; {temporary registers for list manipulation}
+@z
+@x ibid
+ repeat cur_i:=font_info[a].qqqq;@/
+ @<If instruction |cur_i| is a kern with |cur_c|,
+ attach the kern after |q| and |return|;
+ or if it is a ligature with |cur_c|, combine
+ noads |q| and |p| and |goto restart|@>;
+ incr(a);
+ until stop_bit(cur_i)>=stop_flag;
+@y
+ cur_i:=font_info[a].qqqq;
+ if skip_byte(cur_i)>stop_flag then
+ begin a:=lig_kern_restart(cur_f)(cur_i);
+ cur_i:=font_info[a].qqqq;
+ end;
+ loop@+ begin @<If instruction |cur_i| is a kern with |cur_c|, attach
+ the kern after~|q|; or if it is a ligature with |cur_c|, combine
+ noads |q| and~|p| appropriately; then |return| if the cursor has
+ moved past a noad, or |goto restart|@>;
+ if skip_byte(cur_i)>=stop_flag then return;
+ a:=a+qo(skip_byte(cur_i))+1;
+ cur_i:=font_info[a].qqqq;
+ end;
+@z
+@x The entire code of module 753 is revised
+@y and should be replaced by the following:
+@ Note that a ligature between an |ord_noad| and another kind of noad
+is replaced by an |ord_noad|, when the two noads collapse into one.
+But we could make a parenthesis (say) change shape when it follows
+certain letters. Presumably a font designer will define such
+ligatures only when this convention makes sense.
+
+\chardef\?='174 % vertical line to indicate character retention
+
+@<If instruction |cur_i| is a kern with |cur_c|, ...@>=
+if next_char(cur_i)=cur_c then if skip_byte(cur_i)<=stop_flag then
+ if op_byte(cur_i)>=kern_flag then
+ begin p:=new_kern(char_kern(cur_f)(cur_i));
+ link(p):=link(q); link(q):=p; return;
+ end
+ else begin check_interrupt; {allow a way out of infinite ligature loop}
+ case op_byte(cur_i) of
+ qi(1),qi(5): character(nucleus(q)):=rem_byte(cur_i); {\.{=:\?}, \.{=:\?>}}
+ qi(2),qi(6): character(nucleus(p)):=rem_byte(cur_i); {\.{\?=:}, \.{\?=:>}}
+ qi(3),qi(7),qi(11):begin r:=new_noad; {\.{\?=:\?}, \.{\?=:\?>}, \.{\?=:\?>>}}
+ character(nucleus(r)):=rem_byte(cur_i);
+ fam(nucleus(r)):=fam(nucleus(q));@/
+ link(q):=r; link(r):=p;
+ if op_byte(cur_i)<qi(11) then math_type(nucleus(r)):=math_char
+ else math_type(nucleus(r)):=math_text_char; {prevent combination}
+ end;
+ othercases begin link(q):=link(p);
+ character(nucleus(q)):=rem_byte(cur_i); {\.{=:}}
+ mem[subscr(q)]:=mem[subscr(p)]; mem[supscr(q)]:=mem[supscr(p)];@/
+ free_node(p,noad_size);
+ end
+ endcases;
+ if op_byte(cur_i)>qi(3) then return;
+ math_type(nucleus(q)):=math_char; goto restart;
+ end
+@z
+@x module 862
+@!q,@!r,@!s:pointer; {miscellaneous nodes of temporary interest}
+@y
+@!q,@!r,@!s,@!prev_s:pointer; {miscellaneous nodes of temporary interest}
+@z
+@x module 892
+nodes $p_a$ and~$p_b$ in the description above are placed into variables
+@y
+nodes $p_{a-1}$ and~$p_b$ in the description above are placed into variables
+@z
+@x ibid
+@!hc:array[0..65] of halfword; {word to be hyphenated}
+@y
+@!hc:array[0..65] of 0..256; {word to be hyphenated}
+@z
+@x ibid
+@!hu:array[1..63] of ASCII_code; {like |hc|, before conversion to lowercase}
+@y
+@!hu:array[0..63] of 0..256; {like |hc|, before conversion to lowercase}
+@z
+@x module 894
+s:=link(cur_p);
+@y
+prev_s:=cur_p; s:=link(prev_s);
+@z
+@x module 895
+label done,found,not_found,found1,exit;
+@y
+label common_ending,done,found,found1,not_found,not_found+1,exit;
+@z
+@x module 896
+ else if type(s)=ligature_node then
+ begin q:=lig_ptr(s); c:=qo(character(q)); hf:=font(q);
+ end
+@y
+ else if type(s)=ligature_node then
+ if lig_ptr(s)=null then goto continue
+ else begin q:=lig_ptr(s); c:=qo(character(q)); hf:=font(q);
+ end
+@z
+@x ibid
+continue: s:=link(s);
+@y
+continue: prev_s:=s; s:=link(prev_s);
+@z
+@x ibid
+ha:=s
+@y
+ha:=prev_s
+@z
+@x module 898
+begin j:=hn; q:=lig_ptr(s);
+if font(q)<>hf then goto done3;
+repeat c:=qo(character(q));
+if lc_code(c)=0 then goto done3;
+if j=63 then goto done3;
+incr(j); hu[j]:=c; hc[j]:=lc_code(c);@/
+q:=link(q);
+until q=null;
+@y
+begin if font(lig_char(s))<>hf then goto done3;
+j:=hn; q:=lig_ptr(s);
+while q>null do
+ begin c:=qo(character(q));
+ if lc_code(c)=0 then goto done3;
+ if j=63 then goto done3;
+ incr(j); hu[j]:=c; hc[j]:=lc_code(c);@/
+ q:=link(q);
+ end;
+@z
+@x module 900 gets three new global variables
+@y
+@!init_list:pointer; {list of punctuation characters preceding the word}
+@!init_lig:boolean; {does |init_list| represent a ligature?}
+@!init_lft:boolean; {if so, did the ligature involve a left boundary?}
+@z
+@x module 901
+@!q,@!r,@!s:pointer; {temporary registers for list manipulation}
+@y
+@!p,@!q,@!r,@!s:pointer; {temporary registers for list manipulation}
+@!bchar:halfword; {right boundary character of hyphenated word, or |non_char|}
+@z
+@x module 903 should be entirely replaced
+@y by the following:
+@ If hyphens are in fact going to be inserted, \TeX\ first deletes the
+subsequence of nodes between |ha| and~|hb|. An attempt is made to
+preserve the effect that implicit boundary characters and punctuation marks
+had on ligatures inside the hyphenated word, by storing a left boundary or
+preceding character in |hu[0]| and by storing a possible right boundary
+in |bchar|. We set |j:=0| if |hu[0]| is to be part of the reconstruction;
+otherwise |j:=1|.
+The variable |s| will point to the tail of the current hlist, and
+|q| will point to the node following |hb|, so that
+things can be hooked up after we reconstitute the hyphenated word.
+
+@<Replace nodes |ha..hb| by a sequence of nodes...@>=
+q:=link(hb); link(hb):=null; r:=link(ha); link(ha):=null; bchar:=non_char;
+if type(hb)=ligature_node then if odd(subtype(hb)) then
+ bchar:=font_bchar[hf];
+if is_char_node(ha) then
+ begin init_list:=ha; init_lig:=false; hu[0]:=qo(character(ha));
+ end
+else if type(ha)=ligature_node then
+ begin init_list:=lig_ptr(ha); init_lig:=true; init_lft:=(subtype(ha)>1);
+ hu[0]:=qo(character(lig_char(ha)));
+ if init_list=null then if init_lft then
+ begin hu[0]:=256; init_lig:=false;
+ end; {in this case a ligature will be reconstructed from scratch}
+ free_node(ha,small_node_size);
+ end
+else goto not_found+1; {no punctuation found}
+s:=cur_p; {we have |cur_p<>ha| because |type(cur_p)=glue_node|}
+while link(s)<>ha do s:=link(s);
+j:=0; goto common_ending;
+not_found+1: j:=1; s:=ha; init_list:=null;
+if not is_char_node(r) then if type(r)=ligature_node then
+ if subtype(r)>1 then
+ begin j:=0; hu[0]:=256; init_lig:=false;
+ end;
+common_ending: flush_node_list(r);
+@<Reconstitute nodes for the hyphenated word, inserting discretionary hyphens@>;
+flush_list(init_list)
+@z
+@x modules 905--911 are entirely replaced
+@y by the following new code:
+Still further complications arise in the presence of ligatures that do not
+delete the original characters. When punctuation precedes the word being
+hyphenated, \TeX's method is not perfect under all possible scenarios,
+because punctuation marks and letters can propagate information back and forth.
+For example, suppose the original pre-hyphenation pair
+\.{*a} changes to \.{*y} via a \.{\?=:} ligature, which changes to \.{xy}
+via a \.{=:\?} ligature; if $p_{a-1}=\.x$ and $p_a=\.y$, the reconstitution
+procedure isn't smart enough to obtain \.{xy} again. In such cases the
+font designer should include a ligature that goes from \.{xa} to \.{xy}.
+
+@ The processing is facilitated by a subroutine called |reconstitute|. Given
+a string of characters $x_j\ldots x_n$, there is a smallest index $m\ge j$
+such that the ``translation'' of $x_j\ldots x_n$ by ligatures and kerning
+has the form $y_1\ldots y_t$ followed by the translation of $x_{m+1}\ldots x_n$,
+where $y_1\ldots y_t$ is some nonempty sequence of character, ligature, and
+kern nodes. We call $x_j\ldots x_m$ a ``cut prefix'' of $x_j\ldots x_n$.
+For example, if $x_1x_2x_3=\.{fly}$, and if the font contains `fl' as a
+ligature and a kern between `fl' and `y', then $m=2$, $y=2$, and $y_1$ will
+be a ligature node for `fl' followed by an appropriate kern node~$y_2$.
+In the most common case, $x_j$~forms no ligature with $x_{j+1}$ and we
+simply have $m=j$, $y_1=x_j$. If $m<n$ we can repeat the procedure on
+$x_{m+1}\ldots x_n$ until the entire translation has been found.
+
+The |reconstitute| function returns the integer $m$ and puts the nodes
+$y_1\ldots y_t$ into a linked list starting at |link(hold_head)|,
+getting the input $x_j\ldots x_n$ from the |hu| array. If $x_j=256$,
+we consider $x_j$ to be an implicit left boundary character; in this
+case |j| must be strictly less than~|n|. There is a
+parameter |bchar|, which is either 256 or an implicit right boundary character
+assumed to be present just following~$x_n$. (The value |hu[n+1]| is never
+explicitly examined, but the algorithm imagines that |bchar| is there.)
+
+If there exists an index |k| in the range $j\le k\le m$ such that |hyf[k]|
+is odd and such that the result of reconstitute would have been different
+if $x_{k+1}$ had been |hchar|, then |reconstitute| sets |hyphen_passed|
+to the smallest such~|k|. Otherwise it sets |hyphen_passed| to zero.
+
+A special convention is used in the case |j=0|: Then we assume that the
+translation of |hu[0]| appears in a special list of charnodes starting at
+|init_list|; moreover, if |init_lig| is |true|, then |hu[0]| will be
+a ligature character, involving a left boundary if |init_lft| is |true|.
+This facility is provided for cases when a hyphenated
+word is preceded by punctuation (like single or double quotes) that might
+affect the translation of the beginning of the word.
+
+@<Glob...@>=
+@!hyphen_passed:small_number; {first hyphen in a ligature, if any}
+
+@ @<Declare the function called |reconstitute|@>=
+function reconstitute(@!j,@!n:small_number;@!bchar,@!hchar:halfword):
+ small_number;
+label continue,done;
+var @!p:pointer; {temporary register for list manipulation}
+@!t:pointer; {a node being appended to}
+@!q:four_quarters; {character information or a lig/kern instruction}
+@!cur_rh:halfword; {hyphen character for ligature testing}
+@!test_char:halfword; {hyphen or other character for ligature testing}
+@!w:scaled; {amount of kerning}
+@!k:font_index; {position of current lig/kern instruction}
+begin hyphen_passed:=0; t:=hold_head; w:=0; link(hold_head):=null;
+ {at this point |ligature_present=lft_hit=rt_hit=false|}
+@<Set up data structures with the cursor following position |j|@>;
+continue:@<If there's a ligature or kern at the cursor position, update the data
+ structures, possibly advancing~|j|; continue until the cursor moves@>;
+@<Append a ligature and/or kern to the translation;
+ |goto continue| if the stack of inserted ligatures is nonempty@>;
+reconstitute:=j;
+end;
+
+@ The reconstitution procedure shares many of the global data structures
+by which \TeX\ has processed the words before they were hyphenated.
+There is an implied ``cursor'' between characters |cur_l| and |cur_r|;
+these characters will be tested for possible ligature activity. If
+|ligature_present| then |cur_l| is a ligature character formed from the
+original characters following |cur_q| in the current translation list.
+There is a ``ligature stack'' between the cursor and character |j+1|,
+consisting of pseudo-ligature nodes linked together by their |link| fields.
+This stack is normally empty unless a ligature command has created a new
+character that will need to be processed later. A pseudo-ligature is
+a special node having a |character| field that represents a potential
+ligature and a |lig_ptr| field that points to a |char_node| or is |null|.
+We have
+$$|cur_r|=\cases{|character(lig_stack)|,&if |lig_stack>null|;\cr
+ |qi(hu[j+1])|,&if |lig_stack=null| and |j<n|;\cr
+ bchar,&if |lig_stack=null| and |j=n|.\cr}$$
+
+@<Glob...@>=
+@!cur_l,@!cur_r:halfword; {characters before and after the cursor}
+@!cur_q:pointer; {where a ligature should be detached}
+@!lig_stack:pointer; {unfinished business to the right of the cursor}
+@!ligature_present:boolean; {should a ligature node be made for |cur_l|?}
+@!lft_hit,@!rt_hit:boolean; {did we hit a ligature with a boundary character?}
+
+@ @d append_charnode_to_t(#)== begin link(t):=get_avail; t:=link(t);
+ font(t):=hf; character(t):=#;
+ end
+@d set_cur_r==begin if j<n then cur_r:=qi(hu[j+1])@+else cur_r:=bchar;
+ if odd(hyf[j]) then cur_rh:=hchar@+else cur_rh:=non_char;
+ end
+
+@<Set up data structures with the cursor following position |j|@>=
+cur_l:=qi(hu[j]); cur_q:=t;
+if j=0 then
+ begin ligature_present:=init_lig; p:=init_list;
+ if ligature_present then lft_hit:=init_lft;
+ while p>null do
+ begin append_charnode_to_t(character(p)); p:=link(p);
+ end;
+ end
+else if cur_l<non_char then append_charnode_to_t(cur_l);
+lig_stack:=null; set_cur_r
+
+@ We may want to look at the lig/kern program twice, once for a hyphen
+and once for a normal letter. (The hyphen might appear after the letter
+in the program, so we'd better not try to look for both at once.)
+
+@<If there's a ligature or kern at the cursor position, update...@>=
+if cur_l=non_char then
+ begin k:=bchar_label[hf];
+ if k=non_address then goto done@+else q:=font_info[k].qqqq;
+ end
+else begin q:=char_info(hf)(cur_l);
+ if char_tag(q)<>lig_tag then goto done;
+ k:=lig_kern_start(hf)(q); q:=font_info[k].qqqq;
+ if skip_byte(q)>stop_flag then
+ begin k:=lig_kern_restart(hf)(q); q:=font_info[k].qqqq;
+ end;
+ end; {now |k| is the starting address of the lig/kern program}
+if cur_rh<non_char then test_char:=cur_rh@+else test_char:=cur_r;
+loop@+begin if next_char(q)=test_char then if skip_byte(q)<=stop_flag then
+ if cur_rh<non_char then
+ begin hyphen_passed:=j; hchar:=non_char; cur_rh:=non_char;
+ goto continue;
+ end
+ else begin if hchar<non_char then if odd(hyf[j]) then
+ begin hyphen_passed:=j; hchar:=non_char;
+ end;
+ if op_byte(q)<kern_flag then
+ @<Carry out a ligature replacement, updating the cursor structure
+ and possibly advancing~|j|; |goto continue| if the cursor doesn't
+ advance, otherwise |goto done|@>;
+ w:=char_kern(hf)(q); goto done; {this kern will be inserted below}
+ end;
+ if skip_byte(q)>=stop_flag then
+ if cur_rh=non_char then goto done
+ else begin cur_rh:=non_char; goto continue;
+ end;
+ k:=k+qo(skip_byte(q))+1; q:=font_info[k].qqqq;
+ end;
+done:
+
+@ @d wrap_lig(#)==if ligature_present then
+ begin p:=new_ligature(hf,cur_l,link(cur_q));
+ if lft_hit then
+ begin subtype(p):=2; lft_hit:=false;
+ end;
+ if # then if lig_stack=null then
+ begin incr(subtype(p)); rt_hit:=false;
+ end;
+ link(cur_q):=p; t:=p; ligature_present:=false;
+ end
+@d pop_lig_stack==begin if lig_ptr(lig_stack)>null then
+ begin link(t):=lig_ptr(lig_stack); {this is a charnode for |hu[j+1]|}
+ t:=link(t); incr(j);
+ end;
+ p:=lig_stack; lig_stack:=link(p); free_node(p,small_node_size);
+ if lig_stack=null then set_cur_r@+else cur_r:=character(lig_stack);
+ end {if |lig_stack| isn't |null| we have |cur_rh=non_char|}
+
+@<Append a ligature and/or kern to the translation...@>=
+wrap_lig(rt_hit);
+if w<>0 then
+ begin link(t):=new_kern(w); t:=link(t); w:=0;
+ end;
+if lig_stack>null then
+ begin cur_q:=t; cur_l:=character(lig_stack); ligature_present:=true;
+ pop_lig_stack; goto continue;
+ end
+
+@ @<Carry out a ligature replacement, updating the cursor structure...@>=
+begin if cur_l=non_char then lft_hit:=true;
+if j=n then if lig_stack=null then rt_hit:=true;
+check_interrupt; {allow a way out in case there's an infinite ligature loop}
+case op_byte(q) of
+qi(1),qi(5):begin cur_l:=rem_byte(q); {\.{=:\?}, \.{=:\?>}}
+ ligature_present:=true;
+ end;
+qi(2),qi(6):begin cur_r:=rem_byte(q); {\.{\?=:}. \.{\?=:>}}
+ if lig_stack>null then character(lig_stack):=cur_r
+ else begin lig_stack:=new_lig_item(cur_r);
+ if j=n then bchar:=non_char
+ else begin p:=get_avail; lig_ptr(lig_stack):=p;
+ character(p):=qi(hu[j+1]); font(p):=hf;
+ end;
+ end;
+ end;
+qi(3):begin cur_r:=rem_byte(q); {\.{\?=:\?}}
+ p:=lig_stack; lig_stack:=new_lig_item(cur_r); link(lig_stack):=p;
+ end;
+qi(7),qi(11):begin wrap_lig(false); {\.{\?=:\?>}, \.{\?=:\?>>}}
+ cur_q:=t; cur_l:=rem_byte(q); ligature_present:=true;
+ end;
+othercases begin cur_l:=rem_byte(q); ligature_present:=true; {\.{=:}}
+ if lig_stack>null then pop_lig_stack
+ else if j=n then goto done
+ else begin append_charnode_to_t(cur_r); incr(j); set_cur_r;
+ end;
+ end
+endcases;
+if op_byte(q)>qi(4) then if op_byte(q)<>qi(7) then goto done;
+goto continue;
+end
+@z
+@x module 912
+@!c:ASCII_code; {character temporarily replaced by a hyphen}
+@y
+@!c:ASCII_code; {character temporarily replaced by a hyphen}
+@!c_loc:0..63; {where that character came from}
+@!r_count:integer; {replacement count for discretionary}
+@z
+@x modules 913--918 are to be completely replaced
+@y by the following code:
+@ When the following code is performed, |hyf[0]| and |hyf[hn]| will be zero.
+
+@<Reconstitute nodes for the hyphenated word...@>=
+repeat l:=j; j:=reconstitute(j,hn,bchar,qi(hyf_char))+1;
+if hyphen_passed=0 then
+ begin link(s):=link(hold_head);
+ while link(s)>null do s:=link(s);
+ if odd(hyf[j-1]) then
+ begin l:=j; hyphen_passed:=j-1; link(hold_head):=null;
+ end;
+ end;
+if hyphen_passed>0 then
+ @<Create and append a discretionary node as an alternative to the
+ unhyphenated word, and continue to develop both branches until they
+ become equivalent@>;
+until j>hn;
+link(s):=q
+
+@ @d advance_major_tail==begin major_tail:=link(major_tail); incr(r_count);
+ end
+
+@<Create and append a discretionary node as an alternative...@>=
+begin r:=get_node(small_node_size);
+link(r):=link(hold_head); type(r):=disc_node;
+major_tail:=r; r_count:=0;
+while link(major_tail)>null do advance_major_tail;
+i:=hyphen_passed;
+@<Put the \(c)characters |hu[l..i]| and a hyphen into |pre_break(r)|@>;
+@<Put the \(c)characters |hu[i+1..@,]| into |post_break(r)|, appending to this
+ list and to |major_tail| until synchronization has been achieved@>;
+@<Move pointer |s| to the end of the current list, and set |replace_count(r)|
+ appropriately@>;
+end
+
+@ The new hyphen might combine with the previous character via ligature
+or kern. At this point we have |l-1<=i<=j| and |i<hn|.
+
+@<Put the \(c)characters |hu[l..i]| and a hyphen into |pre_break(r)|@>=
+minor_tail:=null; pre_break(r):=null; hyf_node:=new_character(hf,hyf_char);
+if hyf_node<>null then
+ begin incr(i); c:=hu[i]; hu[i]:=hyf_char; free_avail(hyf_node);
+ end;
+while l<=i do
+ begin l:=reconstitute(l,i,font_bchar[hf],non_char)+1;
+ if link(hold_head)>null then
+ begin if minor_tail=null then pre_break(r):=link(hold_head)
+ else link(minor_tail):=link(hold_head);
+ minor_tail:=link(hold_head);
+ while link(minor_tail)>null do minor_tail:=link(minor_tail);
+ end;
+ end;
+if hyf_node<>null then
+ begin hu[i]:=c; {restore the character in the hyphen position}
+ l:=i; decr(i);
+ end
+
+@ The synchronization algorithm begins with |l=i+1<=j|.
+
+@<Put the \(c)characters |hu[i+1..@,]| into |post_break(r)|...@>=
+minor_tail:=null; post_break(r):=null; c_loc:=0;
+if bchar_label[hf]<non_address then {put left boundary at beginning of new line}
+ begin decr(l); c:=hu[l]; c_loc:=l; hu[l]:=256;
+ end;
+while l<j do
+ begin repeat l:=reconstitute(l,hn,bchar,non_char)+1;
+ if c_loc>0 then
+ begin hu[c_loc]:=c; c_loc:=0;
+ end;
+ if link(hold_head)>null then
+ begin if minor_tail=null then post_break(r):=link(hold_head)
+ else link(minor_tail):=link(hold_head);
+ minor_tail:=link(hold_head);
+ while link(minor_tail)>null do minor_tail:=link(minor_tail);
+ end;
+ until l>=j;
+ while l>j do
+ @<Append characters of |hu[j..@,]| to |major_tail|, advancing~|j|@>;
+ end
+
+@ @<Append characters of |hu[j..@,]|...@>=
+begin j:=reconstitute(j,hn,bchar,non_char)+1;
+link(major_tail):=link(hold_head);
+while link(major_tail)>null do advance_major_tail;
+end
+
+@ Ligature insertion can cause a word to grow exponentially in size. Therefore
+we must test the size of |r_count| here, even though the hyphenated text
+was at most 63 characters long.
+
+@<Move pointer |s| to the end of the current list...@>=
+if r_count>127 then {we have to forget the discretionary hyphen}
+ begin link(s):=link(r); link(r):=null; flush_node_list(r);
+ end
+else begin link(s):=r; replace_count(r):=r_count;
+ end;
+s:=major_tail
+@z
+@x module 1030
+@d main_loop=70 {go here to typeset |cur_chr| in the current font}
+@d main_loop_1=71 {like |main_loop|, but |(f,c)| = current font and char}
+@d main_loop_2=72 {like |main_loop_1|, but |c| is known to be in range}
+@d main_loop_3=73 {like |main_loop_2|, but several variables are set up}
+@d append_normal_space=74 {go here to append a normal space between words}
+@y
+@d main_loop=70 {go here to typeset a string of consecutive characters}
+@d main_loop_wrapup=80 {go here to finish a character or ligature}
+@d main_loop_move=90 {go here to advance the ligature cursor}
+@d main_loop_move_lig=95 {same, when advancing past a generated ligature}
+@d main_loop_lookahead=100 {go here to bring in another character, if any}
+@d main_lig_loop=110 {go here to check for ligatures or kerning}
+@d append_normal_space=120 {go here to append a normal space between words}
+@z
+@x ibid
+label big_switch,reswitch,main_loop,main_loop_1,main_loop_2,main_loop_3,
+@y
+label big_switch,reswitch,main_loop,main_loop_wrapup,
+ main_loop_move,main_loop_move+1,main_loop_move+2,main_loop_move_lig,
+ main_loop_lookahead,main_loop_lookahead+1,
+ main_lig_loop,main_lig_loop+1,main_lig_loop+2,
+@z
+@x ibid
+@<Local variables for the inner loop of |main_control|@>@;
+@y
+@z
+@x ibid
+hmode+char_num: begin scan_char_num; cur_chr:=cur_val; goto main_loop;
+ end;
+@y
+hmode+char_num: begin scan_char_num; cur_chr:=cur_val; goto main_loop;@+end;
+hmode+no_boundary: begin get_x_token;
+ if (cur_cmd=letter)or(cur_cmd=other_char)or(cur_cmd=char_given)or
+ (cur_cmd=char_num) then cancel_boundary:=true;
+ goto reswitch;
+ end;
+@z
+@x modules 1032--1040 are all to be replaced
+@y by the following code:
+@ The following part of the program was first written in a structured
+manner, according to the philosophy that ``premature optimization is
+the root of all evil.'' Then it was rearranged into pieces of
+spaghetti so that the most common actions could proceed with little or
+no redundancy.
+
+The original unoptimized form of this algorithm resembles the
+|reconstitute| procedure, which was described earlier in connection with
+hyphenation. Again we have an implied ``cursor`` between characters
+|cur_l| and |cur_r|. The main difference is that the |lig_stack| can now
+contain a charnode as well as pseudo-ligatures; that stack is now
+usually nonempty, because the next character of input (if any) has been
+appended to it. In |main_control| we have
+$$|cur_r|=\cases{|character(lig_stack)|,&if |lig_stack>null|;\cr
+ |font_bchar[cur_font]|,&otherwise.\cr}$$
+Several additional global variables are needed.
+
+@<Glob...@>=
+@!main_f:internal_font_number; {the current font}
+@!main_i:four_quarters; {character information bytes for |cur_l|}
+@!main_j:four_quarters; {ligature/kern command}
+@!main_k:font_index; {index into |font_info|}
+@!main_p:pointer; {temporary register for list manipulation}
+@!main_s:integer; {space factor value}
+@!bchar:halfword; {right boundary character of current font, or |non_char|}
+@!false_bchar:halfword; {nonexistent character matching |bchar|, or |non_char|}
+@!cancel_boundary:boolean; {should the left boundary be ignored?}
+@!ins_disc:boolean; {should we insert a discretionary node?}
+
+@ The boolean variables of the main loop are normally false, and always reset
+to false before the loop is left. That saves us the extra work of initializing
+each time.
+
+@<Set init...@>=
+ligature_present:=false; cancel_boundary:=false; lft_hit:=false; rt_hit:=false;
+ins_disc:=false;
+
+@ We leave |space_factor| unchanged if |sf_code(cur_chr)=0|; otherwise we
+set it to |sf_code(cur_chr)|, except that the space factor never changes
+from a value less than 1000 to a value exceeding 1000. The most common
+case is |sf_code(cur_chr)=1000|, so we want that case to be fast.
+
+The overall structure of the main loop is presented here. Some program labels
+are inside the individual sections.
+
+@d adjust_space_factor==@t@>@;@/
+ main_s:=sf_code(cur_chr);
+ if main_s=1000 then space_factor:=1000
+ else if main_s<1000 then
+ begin if main_s>0 then space_factor:=main_s;
+ end
+ else if space_factor<1000 then space_factor:=1000
+ else space_factor:=main_s
+
+@<Append character |cur_chr|...@>=
+adjust_space_factor;@/
+main_f:=cur_font;
+bchar:=font_bchar[main_f]; false_bchar:=font_false_bchar[main_f];
+if mode>0 then if language<>clang then fix_language;
+fast_get_avail(lig_stack); font(lig_stack):=main_f; cur_l:=qi(cur_chr);
+character(lig_stack):=cur_l;@/
+cur_q:=tail;
+if cancel_boundary then
+ begin cancel_boundary:=false; main_k:=non_address;
+ end
+else main_k:=bchar_label[main_f];
+if main_k=non_address then goto main_loop_move+2; {no left boundary processing}
+cur_r:=cur_l; cur_l:=non_char;
+goto main_lig_loop+1; {begin with cursor after left boundary}
+@#
+main_loop_wrapup:@<Make a ligature node, if |ligature_present|;
+ insert a null discretionary, if appropriate@>;
+main_loop_move:@<If the cursor is immediately followed by the right boundary,
+ |goto reswitch|; if it's followed by an invalid character, |goto big_switch|;
+ otherwise move the cursor one step to the right and |goto main_lig_loop|@>;
+main_loop_lookahead:@<Look ahead for another character, or leave |lig_stack|
+ empty if there's none there@>;
+main_lig_loop:@<If there's a ligature/kern command relevant to |cur_l| and
+ |cur_r|, adjust the text appropriately; exit to |main_loop_wrapup|@>;
+main_loop_move_lig:@<Move the cursor past a pseudo-ligature, then
+ |goto main_loop_lookahead| or |main_lig_loop|@>
+
+@ If the current horizontal list is empty, the reference to |character(tail)|
+here is not strictly legal, since |tail| will be a node freshly returned by
+|get_avail|. But this should cause no problem on most implementations, and we
+do want the inner loop to be fast.
+@^dirty Pascal@>
+
+A discretionary break is not inserted for an explicit hyphen when we are in
+restricted horizontal mode. In particular, this avoids putting discretionary
+nodes inside of other discretionaries.
+
+@d pack_lig(#)== {the parameter is either |rt_hit| or |false|}
+ begin main_p:=new_ligature(main_f,cur_l,link(cur_q));
+ if lft_hit then
+ begin subtype(main_p):=2; lft_hit:=false;
+ end;
+ if # then if lig_stack=null then
+ begin incr(subtype(main_p)); rt_hit:=false;
+ end;
+ link(cur_q):=main_p; tail:=main_p; ligature_present:=false;
+ end
+
+@d wrapup(#)==if cur_l<non_char then
+ begin if character(tail)=qi(hyphen_char[main_f]) then if link(cur_q)>null then
+ ins_disc:=true;
+ if ligature_present then pack_lig(#);
+ if ins_disc then
+ begin ins_disc:=false;
+ if mode>0 then tail_append(new_disc);
+ end;
+ end
+
+@<Make a ligature node, if |ligature_present|;...@>=
+wrapup(rt_hit)
+
+@ @<If the cursor is immediately followed by the right boundary...@>=
+if lig_stack=null then goto reswitch;
+cur_q:=tail; cur_l:=cur_r; {or |character(lig_stack)|}
+main_loop_move+1:if not is_char_node(lig_stack) then goto main_loop_move_lig;
+main_loop_move+2:if(cur_chr<font_bc[main_f])or(cur_chr>font_ec[main_f]) then
+ begin char_warning(main_f,cur_chr); free_avail(lig_stack); goto big_switch;
+ end;
+main_i:=char_info(main_f)(cur_l);
+if not char_exists(main_i) then
+ begin char_warning(main_f,cur_chr); free_avail(lig_stack); goto big_switch;
+ end;
+tail_append(lig_stack) {|main_loop_lookahead| is next}
+
+@ Here we are at |main_loop_move_lig|.
+When we begin this code we have |cur_l=character(lig_stack)| and |cur_q=tail|.
+
+@<Move the cursor past a pseudo-ligature...@>=
+main_p:=lig_ptr(lig_stack);
+if main_p>null then tail_append(main_p);
+temp_ptr:=lig_stack; lig_stack:=link(temp_ptr);
+free_node(temp_ptr,small_node_size);
+main_i:=char_info(main_f)(cur_l); ligature_present:=true;
+if lig_stack=null then
+ if main_p>null then goto main_loop_lookahead
+ else cur_r:=bchar
+else cur_r:=character(lig_stack);
+goto main_lig_loop
+
+@ The result of \.{\\char} can participate in a ligature or kern, so we must
+look ahead for it.
+
+@<Look ahead for another character...@>=
+get_next; {set only |cur_cmd| and |cur_chr|, for speed}
+if cur_cmd=letter then goto main_loop_lookahead+1;
+if cur_cmd=other_char then goto main_loop_lookahead+1;
+if cur_cmd=char_given then goto main_loop_lookahead+1;
+x_token; {now expand and set |cur_cmd|, |cur_chr|, |cur_tok|}
+if cur_cmd=letter then goto main_loop_lookahead+1;
+if cur_cmd=other_char then goto main_loop_lookahead+1;
+if cur_cmd=char_given then goto main_loop_lookahead+1;
+if cur_cmd=char_num then
+ begin scan_char_num; cur_chr:=cur_val; goto main_loop_lookahead+1;
+ end;
+if cur_cmd=no_boundary then bchar:=non_char;
+cur_r:=bchar; lig_stack:=null; goto main_lig_loop;
+main_loop_lookahead+1: adjust_space_factor;
+fast_get_avail(lig_stack); font(lig_stack):=main_f;
+cur_r:=qi(cur_chr); character(lig_stack):=cur_r;
+if cur_r=false_bchar then cur_r:=non_char {this prevents spurious ligatures}
+
+@ Even though comparatively few characters have a lig/kern program, several
+of the instructions here count as part of \TeX's inner loop, since a
+potentially long sequential search must be performed. For example, tests with
+Computer Modern Roman showed that about 40 per cent of all characters
+actually encountered in practice had a lig/kern program, and that about four
+lig/kern commands were investigated for every such character.
+
+At the beginning of this code we have |main_i=char_info(main_f)(cur_l)|.
+
+@<If there's a ligature/kern command...@>=
+if char_tag(main_i)<>lig_tag then goto main_loop_wrapup;
+main_k:=lig_kern_start(main_f)(main_i); main_j:=font_info[main_k].qqqq;
+if skip_byte(main_j)<=stop_flag then goto main_lig_loop+2;
+main_k:=lig_kern_restart(main_f)(main_j);
+main_lig_loop+1:main_j:=font_info[main_k].qqqq;
+main_lig_loop+2:if next_char(main_j)=cur_r then
+ if skip_byte(main_j)<=stop_flag then
+ @<Do ligature or kern command, returning to |main_lig_loop|
+ or |main_loop_wrapup| or |main_loop_move|@>;
+if skip_byte(main_j)=qi(0) then incr(main_k)
+else begin if skip_byte(main_j)>=stop_flag then goto main_loop_wrapup;
+ main_k:=main_k+qo(skip_byte(main_j))+1;
+ end;
+goto main_lig_loop+1
+
+@ When a ligature or kern instruction matches a character, we know from
+|read_font_info| that the character exists in the font, even though we
+haven't verified its existence in the normal way.
+
+This section could be made into a subroutine, if the code inside
+|main_control| needs to be shortened.
+
+\chardef\?='174 % vertical line to indicate character retention
+
+@<Do ligature or kern command...@>=
+begin if op_byte(main_j)>=kern_flag then
+ begin wrapup(rt_hit);
+ tail_append(new_kern(char_kern(main_f)(main_j))); goto main_loop_move;
+ end;
+if cur_l=non_char then lft_hit:=true
+else if lig_stack=null then rt_hit:=true;
+check_interrupt; {allow a way out in case there's an infinite ligature loop}
+case op_byte(main_j) of
+qi(1),qi(5):begin cur_l:=rem_byte(main_j); {\.{=:\?}, \.{=:\?>}}
+ main_i:=char_info(main_f)(cur_l); ligature_present:=true;
+ end;
+qi(2),qi(6):begin cur_r:=rem_byte(main_j); {\.{\?=:}, \.{\?=:>}}
+ if lig_stack=null then {right boundary character is being consumed}
+ begin lig_stack:=new_lig_item(cur_r); bchar:=non_char;
+ end
+ else if is_char_node(lig_stack) then {|link(lig_stack)=null|}
+ begin main_p:=lig_stack; lig_stack:=new_lig_item(cur_r);
+ lig_ptr(lig_stack):=main_p;
+ end
+ else character(lig_stack):=cur_r;
+ end;
+qi(3):begin cur_r:=rem_byte(main_j); {\.{\?=:\?}}
+ main_p:=lig_stack; lig_stack:=new_lig_item(cur_r);
+ link(lig_stack):=main_p;
+ end;
+qi(7),qi(11):begin wrapup(false); {\.{\?=:\?>}, \.{\?=:\?>>}}
+ cur_q:=tail; cur_l:=rem_byte(main_j);
+ main_i:=char_info(main_f)(cur_l); ligature_present:=true;
+ end;
+othercases begin cur_l:=rem_byte(main_j); ligature_present:=true; {\.{=:}}
+ if lig_stack=null then goto main_loop_wrapup
+ else goto main_loop_move+1;
+ end
+endcases;
+if op_byte(main_j)>qi(4) then
+ if op_byte(main_j)<>qi(7) then goto main_loop_wrapup;
+if cur_l<non_char then goto main_lig_loop;
+main_k:=bchar_label[main_f]; goto main_lig_loop+1;
+end
+@z
+% HINTS for making main_control shorter if you need to conserve space:
+% (1) make pack_lig(#) a procedure call instead of a macro call
+% (2) make the code of @<Do ligature...@> a function that returns one of
+% four values; you goto a label based on the value returned.
+@x module 1042
+begin p:=font_glue[cur_font];
+if p=null then
+ begin f:=cur_font; p:=new_spec(zero_glue); k:=param_base[f]+space_code;
+ width(p):=font_info[k].sc; {that's |space(f)|}
+ stretch(p):=font_info[k+1].sc; {and |space_stretch(f)|}
+ shrink(p):=font_info[k+2].sc; {and |space_shrink(f)|}
+ font_glue[f]:=p;
+@y
+begin main_p:=font_glue[cur_font];
+if main_p=null then
+ begin main_p:=new_spec(zero_glue); main_k:=param_base[cur_font]+space_code;
+ width(main_p):=font_info[main_k].sc; {that's |space(cur_font)|}
+ stretch(main_p):=font_info[main_k+1].sc; {and |space_stretch(cur_font)|}
+ shrink(main_p):=font_info[main_k+2].sc; {and |space_shrink(cur_font)|}
+ font_glue[cur_font]:=main_p;
+@z
+@x module 1045
+any_mode(relax),vmode+spacer,mmode+spacer,mmode+no_boundary:do_nothing;
+@y
+any_mode(relax),vmode+spacer,mmode+spacer:do_nothing;
+@z
+@x module 1090
+ vmode+ex_space:@t@>@;@/
+@y
+ vmode+ex_space,vmode+no_boundary:@t@>@;@/
+@z
+@x module 1322
+dump_int(font_glue[k]);@/
+@y
+dump_int(font_glue[k]);@/
+dump_int(bchar_label[k]);
+dump_int(font_bchar[k]);
+dump_int(font_false_bchar[k]);@/
+@z
+@x module 1323
+undump(min_halfword)(lo_mem_max)(font_glue[k]);@/
+@y
+undump(min_halfword)(lo_mem_max)(font_glue[k]);@/
+undump(0)(font_mem_size)(bchar_label[k]);
+undump(min_quarterword)(non_char)(font_bchar[k]);
+undump(min_quarterword)(non_char)(font_false_bchar[k]);
+@z
+
+363. New \inputlineno feature desired by Spivak
+@x module 416 gets a new definition and a new statement
+@y
+@d input_line_no_code=glue_val+1 {code for \.{\\inputlineno}}
+primitive("inputlineno",last_item,input_line_no_code);
+@!@:input_line_no_}{\.{\\inputlineno} primitive@>
+@z and module 417 changes in the obvious way
+@x module 424 gets new code at the beginning
+@y
+if cur_chr>glue_val then
+ begin cur_val:=line; cur_val_level:=int_val;
+ end
+else
+@z
+
+364. New feature \holdinginserts suggested by Mittelbach.
+@x modules 236--238 get a new integer parameter
+@d int_pars=53 {total number of integer parameters}
+@y
+@d holding_inserts_code=53 {do not remove insertion nodes from \.{\\box255}}
+@d int_pars=54 {total number of integer parameters}
+@z and appropriate further lines are added to match all the other parameters
+@x module 1014
+@<Prepare all the boxes involved in insertions to act as queues@>;
+q:=hold_head; link(q):=null; prev_p:=page_head; p:=link(prev_p);
+while p<>best_page_break do
+ begin if type(p)=ins_node then @<Either insert the material
+ specified by node |p| into the appropriate box, or
+ hold it for the next page; also delete node |p| from
+ the current page@>
+@y
+if holding_inserts<=0 then
+ @<Prepare all the boxes involved in insertions to act as queues@>;
+q:=hold_head; link(q):=null; prev_p:=page_head; p:=link(prev_p);
+while p<>best_page_break do
+ begin if type(p)=ins_node then
+ begin if holding_inserts<=0 then
+ @<Either insert the material specified by node |p| into the
+ appropriate box, or hold it for the next page;
+ also delete node |p| from the current page@>;
+ end
+@z
+% also insert begin...end around the Pascal code of module 1018
+
+365. New \badness feature (which I'd been resisting for years)
+@x module 416 gets a new definition and a new statement
+@y
+@d badness_code=glue_val+2 {code for \.{\\badness}}
+primitive("badness",last_item,badness_code);
+@!@:badness_}{\.{\\badness} primitive@>
+@z and module 417 changes in the obvious way
+@x module 424 (the new code just added in #363)
+ begin cur_val:=line; cur_val_level:=int_val;
+@y
+ begin if cur_chr=input_line_no_code then cur_val:=line
+ else cur_val:=last_badness; {|cur_chr=badness_code|}
+ cur_val_level:=int_val;
+@z
+@x module 646 gets a new global variable
+@y
+@!last_badness:integer; {badness of the most recently packaged box}
+@z
+@x module 648
+@ @<Set init...@>=adjust_tail:=null;
+@y
+@ @<Set init...@>=adjust_tail:=null; last_badness:=0;
+@z
+@x modules 649 and 668
+@!b:integer; {badness of the new box}
+begin r:=get_node(box_node_size); type(r):=hlist_node;
+@y (except it's vlist_node in 668)
+begin last_badness:=0; r:=get_node(box_node_size); type(r):=hlist_node;
+@z (except it's vlist_node in 668)
+% change b to last_badness in modules 660&674 (4 times), 667&678 (3 times)
+@x modules 658 and 673
+if (hbadness<inf_bad)and(o=normal)and(list_ptr(r)<>null) then
+@y (except it's vbadness in 673)
+if o=normal then if list_ptr(r)<>null then
+@z
+@x modules 664 and 676
+ begin set_glue_ratio_one(glue_set(r)); {this is the maximum shrinkage}
+@y
+ begin last_badness:=1000000;
+ set_glue_ratio_one(glue_set(r)); {use the maximum shrinkage}
+@z
+@x ibid
+else if (hbadness<100)and(o=normal)and(list_ptr(r)<>null) then
+@y (except it's vbadness in 676)
+else if o=normal then if list_ptr(r)<>null then
+@z
+
+366. New \emergencystretch feature
+@x modules 247--248 get a new dimen parameter
+@d dimen_pars=20 {total number of dimension parameters}
+@y
+@d emergency_stretch_code=20 {reduces badnesses on final pass of line-breaking}
+@d dimen_pars=21 {total number of dimension parameters}
+@z and appropriate further lines are added to match all the other parameters
+@x module 828
+@!second_pass:boolean; {is this our second attempt to break this paragraph?}
+@y
+@!second_pass:boolean; {is this our second attempt to break this paragraph?}
+@!final_pass:boolean; {is this our final attempt to break this paragraph?}
+@z
+% change second_pass to final_pass in modules 854 and 873
+@x module 863
+ second_pass:=false;
+ end
+else begin threshold:=tolerance; second_pass:=true;
+@y
+ second_pass:=false; final_pass:=false;
+ end
+else begin threshold:=tolerance; second_pass:=true;
+ final_pass:=(emergency_stretch<=0);
+@z
+@x ibid
+ @!stat if tracing_paragraphs>0 then print_nl("@@secondpass");@;@+tats@/
+ threshold:=tolerance; second_pass:=true; {if at first you don't
+ succeed, \dots}
+@y
+ if not second_pass then
+ begin@!stat if tracing_paragraphs>0 then print_nl("@@secondpass");@;@+tats@/
+ threshold:=tolerance; second_pass:=true; final_pass:=(emergency_stretch<=0);
+ end {if at first you don't succeed, \dots}
+ else begin @!stat if tracing_paragraphs>0 then
+ print_nl("@@finalpass");@;@+tats@/
+ background[2]:=background[2]+emergency_stretch; final_pass:=true;
+ end;
+@z
+
+367. New \errorcontextlines feature suggested by a TUG participant
+@x modules 236--238 get a new integer parameter
+@d int_pars=54 {total number of integer parameters}
+@y
+@d error_context_lines_code=54 {maximum intermediate line pairs shown}
+@d int_pars=55 {total number of integer parameters}
+@z and appropriate further lines are added to match all the other parameters
+@x module 311
+@<Local variables for formatting calculations@>@/
+begin base_ptr:=input_ptr; input_stack[base_ptr]:=cur_input;
+ {store current state}
+loop@+begin cur_input:=input_stack[base_ptr]; {enter into the context}
+ @<Display the current context@>;
+ if (state<>token_list) then
+ if (name>17) or (base_ptr=0) then goto done;
+@y
+@!nn:integer; {number of contexts shown so far, less one}
+@!bottom_line:boolean; {have we reached the final context to be shown?}
+@<Local variables for formatting calculations@>@/
+begin base_ptr:=input_ptr; input_stack[base_ptr]:=cur_input;
+ {store current state}
+nn:=-1; bottom_line:=false;
+loop@+begin cur_input:=input_stack[base_ptr]; {enter into the context}
+ if (state<>token_list) then
+ if (name>17) or (base_ptr=0) then bottom_line:=true;
+ if (base_ptr=input_ptr)or bottom_line or(nn<error_context_lines) then
+ @<Display the current context@>
+ else if nn=error_context_lines then
+ begin print_nl("..."); incr(nn); {omitted if |error_context_lines<0|}
+ end;
+ if bottom_line then goto done;
+@z
+% also insert begin...end around the Pascal code of module 312
+% and add the statement "incr(nn)" to that module
+
+368. char_warning inside hyphenation could clobber old_setting
+@x module 863
+done: @!stat if tracing_paragraphs>0 then end_diagnostic(true);@;@+tats@/
+@y
+done: @!stat if tracing_paragraphs>0 then
+ begin end_diagnostic(true); normalize_selector;
+ end;@+tats@/
+@z
+
+369. Make ".fmt" more easily switchable (Don Hosek).
+@x module 520 gets a new definition
+@y
+@d format_extension=".fmt" {the extension, as a \.{WEB} constant}
+@z now replace ".fmt" by format_extension in modules 529 and 1328.
+
+370. Possible range check on weird nullfont (Breitenlohner, 16 Oct 89).
+@x module 565
+if (bc>ec+1)or(ec>255) then abort;
+@y
+if (bc>ec+1)or(ec>255) then abort;
+if bc>255 then {|bc=256| and |ec=255|}
+ begin bc:=1; ec:=0;
+ end;
+@z
+
+371. Prevent save_stack conflicts, e.g. in {\hbox\expandafter{\csname
+ \endcsname}} (found by Sullivan).
+@x module 645
+@p procedure scan_spec; {scans a box specification and left brace}
+label found;
+begin if scan_keyword("to") then saved(0):=exactly
+@.to@>
+else if scan_keyword("spread") then saved(0):=additional
+@.spread@>
+else begin saved(0):=additional; saved(1):=0;
+ goto found;
+ end;
+scan_normal_dimen; saved(1):=cur_val;
+found: save_ptr:=save_ptr+2; scan_left_brace;
+@y
+@p procedure scan_spec(@!c:group_code;@!three_codes:boolean);
+ {scans a box specification and left brace}
+label found;
+var @!s:integer; {temporarily saved value}
+@!spec_code:exactly..additional;
+begin if three_codes then s:=saved(0);
+if scan_keyword("to") then spec_code:=exactly
+@.to@>
+else if scan_keyword("spread") then spec_code:=additional
+@.spread@>
+else begin spec_code:=additional; cur_val:=0;
+ goto found;
+ end;
+scan_normal_dimen;
+found: if three_codes then
+ begin saved(0):=s; incr(save_ptr);
+ end;
+saved(0):=spec_code; saved(1):=cur_val; save_ptr:=save_ptr+2;
+new_save_level(c); scan_left_brace;
+@z
+@x module 774
+scan_spec; new_save_level(align_group);@/
+@y
+scan_spec(align_group,false);@/
+@z
+@x module 1073
+ if t=0 then saved(0):=cur_val@+else saved(0):=-cur_val;
+ scan_box;
+ end;
+any_mode(leader_ship): begin saved(0):=leader_flag-a_leaders+cur_chr; scan_box;
+ end;
+any_mode(make_box): begin saved(0):=0; begin_box;
+ end;
+@y
+ if t=0 then scan_box(cur_val)@+else scan_box(-cur_val);
+ end;
+any_mode(leader_ship): scan_box(leader_flag-a_leaders+cur_chr);
+any_mode(make_box): begin_box(0);
+@z
+@x module 1075
+procedure box_end;
+var p:pointer; {|ord_noad| for new box in math mode}
+begin if saved(0)<box_flag then @<Append box |cur_box| to the current list,
+ shifted by |saved(0)|@>
+else if saved(0)<ship_out_flag then @<Store \(c)|cur_box| in a box register@>
+else if cur_box<>null then
+ if saved(0)>ship_out_flag then @<Append a new leader node that
+ uses |cur_box|@>
+@y
+procedure box_end(@!box_context:integer);
+var p:pointer; {|ord_noad| for new box in math mode}
+begin if box_context<box_flag then @<Append box |cur_box| to the current list,
+ shifted by |box_context|@>
+else if box_context<ship_out_flag then @<Store \(c)|cur_box| in a box register@>
+else if cur_box<>null then
+ if box_context>ship_out_flag then @<Append a new leader node that
+ uses |cur_box|@>
+@z
+@x module 1076
+ begin shift_amount(cur_box):=saved(0);
+@y
+ begin shift_amount(cur_box):=box_context;
+@z
+@x module 1077
+if saved(0)<box_flag+256 then
+ eq_define(box_base-box_flag+saved(0),box_ref,cur_box)
+else geq_define(box_base-box_flag-256+saved(0),box_ref,cur_box)
+@y
+if box_context<box_flag+256 then
+ eq_define(box_base-box_flag+box_context,box_ref,cur_box)
+else geq_define(box_base-box_flag-256+box_context,box_ref,cur_box)
+@z
+@x module 1078
+ begin append_glue; subtype(tail):=saved(0)-(leader_flag-a_leaders);
+@y
+ begin append_glue; subtype(tail):=box_context-(leader_flag-a_leaders);
+@z
+@x module 1079
+procedure begin_box;
+@y
+procedure begin_box(@!box_context:integer);
+@z
+@x ibid
+box_end; {in simple cases, we use the box immediately}
+@y
+box_end(box_context); {in simple cases, we use the box immediately}
+@z
+@x module 1083
+incr(save_ptr); scan_spec;
+if k=hmode then
+ if (saved(-3)<box_flag)and(abs(mode)=vmode) then
+ new_save_level(adjusted_hbox_group)
+ else new_save_level(hbox_group)
+else begin if k=vmode then new_save_level(vbox_group)
+ else begin new_save_level(vtop_group); k:=vmode;
+@y
+saved(0):=box_context;
+if k=hmode then
+ if (box_context<box_flag)and(abs(mode)=vmode) then
+ scan_spec(adjusted_hbox_group,true)
+ else scan_spec(hbox_group,true)
+else begin if k=vmode then scan_spec(vbox_group,true)
+ else begin scan_spec(vtop_group,true); k:=vmode;
+@z
+@x module 1084
+procedure scan_box; {the next input should specify a box or perhaps a rule}
+begin @<Get the next non-blank non-relax...@>;
+if cur_cmd=make_box then begin_box
+else if (saved(0)>=leader_flag)and((cur_cmd=hrule)or(cur_cmd=vrule)) then
+ begin cur_box:=scan_rule_spec; box_end;
+@y
+procedure scan_box(@!box_context:integer);
+ {the next input should specify a box or perhaps a rule}
+begin @<Get the next non-blank non-relax...@>;
+if cur_cmd=make_box then begin_box(box_context)
+else if (box_context>=leader_flag)and((cur_cmd=hrule)or(cur_cmd=vrule)) then
+ begin cur_box:=scan_rule_spec; box_end(box_context);
+@z
+@x module 1086
+pop_nest; box_end;
+@y
+pop_nest; box_end(saved(0));
+@z
+@x module 1117
+else begin incr(save_ptr); saved(-1):=0; scan_left_brace;
+ new_save_level(disc_group); push_nest; mode:=-hmode; space_factor:=1000;
+@y
+else begin incr(save_ptr); saved(-1):=0; new_save_level(disc_group);
+ scan_left_brace; push_nest; mode:=-hmode; space_factor:=1000;
+@z
+@x module 1119
+incr(saved(-1)); scan_left_brace; new_save_level(disc_group);
+@y
+incr(saved(-1)); new_save_level(disc_group); scan_left_brace;
+@z
+@x module 1167
+mmode+vcenter: begin scan_spec; new_save_level(vcenter_group); normal_paragraph;
+@y
+mmode+vcenter: begin scan_spec(vcenter_group,false); normal_paragraph;
+@z
+@x module 1172
+scan_left_brace; push_math(math_choice_group);
+@y
+push_math(math_choice_group); scan_left_brace;
+@z
+@x module 1174
+incr(saved(-1)); scan_left_brace; push_math(math_choice_group);
+@y
+incr(saved(-1)); push_math(math_choice_group); scan_left_brace;
+@z
+@x module 1241
+ if global then saved(0):=box_flag+256+cur_val
+ else saved(0):=box_flag+cur_val;
+ scan_optional_equals; scan_box;
+@y
+ if global then n:=256+cur_val@+else n:=cur_val;
+ scan_optional_equals; scan_box(box_flag+n);
+@z
+
+372. Bugfix 339 didn't go far enough (found by Sch\"opf and Mittelbach).
+@x module 516 [NOTE: THIS AFFECTS ALMOST ALL CHANGE FILES!]
+@ And here's the second.
+@^system dependencies@>
+
+@p function more_name(@!c:ASCII_code):boolean;
+begin if c=" " then more_name:=false
+else begin if (c=">")or(c=":") then
+ begin area_delimiter:=pool_ptr; ext_delimiter:=0;
+ end
+ else if (c=".")and(ext_delimiter=0) then ext_delimiter:=pool_ptr;
+ str_room(1); append_char(c); {contribute |c| to the current string}
+@y
+@ And here's the second. The string pool might change as the file name is
+being scanned, since a new \.{\\csname} might be entered; therefore we keep
+|area_delimiter| and |ext_delimiter| relative to the beginning of the current
+string, instead of assigning an absolute address like |pool_ptr| to them.
+@^system dependencies@>
+
+@p function more_name(@!c:ASCII_code):boolean;
+begin if c=" " then more_name:=false
+else begin str_room(1); append_char(c); {contribute |c| to the current string}
+ if (c=">")or(c=":") then
+ begin area_delimiter:=cur_length; ext_delimiter:=0;
+ end
+ else if (c=".")and(ext_delimiter=0) then ext_delimiter:=cur_length;
+@z
+@x module 517 [NOTE: THIS DOES TOO, AND SO DOES THE NEXT!]
+else begin cur_area:=str_ptr; incr(str_ptr);
+ str_start[str_ptr]:=area_delimiter+1;
+@y
+else begin cur_area:=str_ptr;
+ str_start[str_ptr+1]:=str_start[str_ptr]+area_delimiter; incr(str_ptr);
+@z
+@x ibid
+else begin cur_name:=str_ptr; incr(str_ptr);
+ str_start[str_ptr]:=ext_delimiter; cur_ext:=make_string;
+@y
+else begin cur_name:=str_ptr;
+ str_start[str_ptr+1]:=str_start[str_ptr]+ext_delimiter-area_delimiter-1;
+ incr(str_ptr); cur_ext:=make_string;
+@z
+
+373. Allow multiple hyphenmins in the same paragraph (Mike Ferguson).
+@x module 212, two new fields for list_state_record
+@y
+ @!lhm_field,@!rhm_field: quarterword;
+@z
+@x module 213, two new macros to access those fields
+@y
+@d lhmin==cur_list.lhm_field {\.{\\lefthyphenmin} at start of paragraph}
+@d rhmin==cur_list.rhm_field {\.{\\righthyphenmin} at start of paragraph}
+@z
+@x module 215, two new initializations
+@y
+lhmin:=0; rhmin:=0;
+@z
+@x module 218
+ if nest[p].ml_field<0 then print(" (\output routine)");
+@y
+ if m=hmode then@+if(nest[p].lhm_field<>2)or(nest[p].rhm_field<>3)then
+ begin print(" (hyphenmin "); print_int(nest[p].lhm_field); print_char(",");
+ print_int(nest[p].rhm_field); print_char(")");
+ end;
+ if nest[p].ml_field<0 then print(" (\output routine)");
+@z
+@x module 891
+l_hyf:=left_hyphen_min-1;@+if l_hyf<0 then l_hyf:=0;
+r_hyf:=right_hyphen_min-1;@+if r_hyf<0 then r_hyf:=0;
+min_hyf:=l_hyf+r_hyf+2; cur_lang:=0;
+@y
+l_hyf:=lhmin; r_hyf:=rhmin; cur_lang:=0;
+@z
+@x module 892
+@!l_hyf,@!r_hyf,@!min_hyf:integer; {limits on fragment sizes}
+@y
+@!l_hyf,@!r_hyf:integer; {limits on fragment sizes}
+@z
+@x module 894
+begin if min_hyf>63 then goto done1;
+prev_s:=cur_p; s:=link(prev_s);
+if s<>null then
+ begin @<Skip to node |ha|, or |goto done1| if no hyphenation
+ should be attempted@>;
+ @<Skip to node |hb|, putting letters into |hu| and |hc|@>;
+ @<Check that the nodes following |hb| permit hyphenation and that at least
+ |min_hyf| letters have been found, otherwise |goto done1|@>;
+@y
+begin prev_s:=cur_p; s:=link(prev_s);
+if s<>null then
+ begin @<Skip to node |ha|, or |goto done1| if no hyphenation
+ should be attempted@>;
+ if l_hyf+r_hyf>63 then goto done1;
+ @<Skip to node |hb|, putting letters into |hu| and |hc|@>;
+ @<Check that the nodes following |hb| permit hyphenation and that at least
+ |l_hyf+r_hyf| letters have been found, otherwise |goto done1|@>;
+@z
+@x module 899
+if hn<min_hyf then goto done1;
+@y
+if hn<l_hyf+r_hyf then goto done1;
+@z
+@x module 902
+for j:=l_hyf+1 to hn-r_hyf-1 do if odd(hyf[j]) then goto found1;
+@y
+for j:=l_hyf to hn-r_hyf do if odd(hyf[j]) then goto found1;
+@z
+@x module 923
+for j:=0 to hn-r_hyf do
+@y
+for j:=0 to hn-r_hyf+1 do
+@z
+@x ibid
+found: for j:=0 to l_hyf do hyf[j]:=0;
+for j:=0 to r_hyf do hyf[hn-j]:=0
+@y
+found: for j:=0 to l_hyf-1 do hyf[j]:=0;
+for j:=0 to r_hyf-1 do hyf[hn-j]:=0
+@z
+@x module 1091 begins with a new subroutine
+@y
+function norm_min(@!h:integer):small_number;
+begin if h<=0 then norm_min:=1@+else if h>=63 then norm_min:=63@+
+else norm_min:=h;
+end;
+@z
+@x module 1091 then uses the new subroutine
+push_nest; mode:=hmode; space_factor:=1000; clang:=0;
+@y
+lhmin:=norm_min(left_hyphen_min); rhmin:=norm_min(right_hyphen_min);
+push_nest; mode:=hmode; space_factor:=1000; clang:=0;
+@z
+@x module 1341
+@d stored_language(#)==mem[#+1].int {language number, in the range |0..255|}
+@y
+@d what_lang(#)==link(#+1) {language number, in the range |0..255|}
+@d what_lhm(#)==type(#+1) {minimum left fragment, in the range |1..63|}
+@d what_rhm(#)==subtype(#+1) {minimum right fragment, in the range |1..63|}
+@z
+@x module 1356
+ print_int(stored_language(p));
+@y
+ print_int(what_lang(p)); print(" (hyphenmin ");
+ print_int(what_lhm(p)); print_char(",");
+ print_int(what_rhm(p)); print_char(")");
+@z
+@x modules 1362 and 1363
+@ @<Advance \(p)past a whatsit node in the \(l)|line_break| loop@>=
+if subtype(cur_p)=language_node then cur_lang:=stored_language(cur_p)
+
+@ @<Advance \(p)past a whatsit node in the \(p)pre-hyphenation loop@>=
+if subtype(s)=language_node then cur_lang:=stored_language(s)
+@y
+@ @d adv_past(#)==@+if subtype(#)=language_node then
+ begin cur_lang:=what_lang(#); l_hyf:=what_lhm(#); r_hyf:=what_rhm(#);@+end
+
+@<Advance \(p)past a whatsit node in the \(l)|line_break| loop@>=@+
+adv_past(cur_p)
+
+@ @<Advance \(p)past a whatsit node in the \(p)pre-hyphenation loop@>=@+
+adv_past(s)
+@z
+@x module 1376
+ stored_language(tail):=l; clang:=l;
+@y
+ what_lang(tail):=l; clang:=l;@/
+ what_lhm(tail):=norm_min(left_hyphen_min);
+ what_rhm(tail):=norm_min(right_hyphen_min);
+@z
+@x module 1377
+ stored_language(tail):=clang;
+@y
+ what_lang(tail):=clang;
+ what_lhm(tail):=norm_min(left_hyphen_min);
+ what_rhm(tail):=norm_min(right_hyphen_min);
+@z
+
+374. Make \par and end_template definitely non-character (Marc van Leeuwen)
+@x module 14 gets a new line
+@y
+if mem_top<256+11 then bad:=7; {we will want |null_list>255|}
+@z
+@x module 334
+primitive("par",par_end,0); par_loc:=cur_val; par_token:=cs_token_flag+par_loc;
+@y
+primitive("par",par_end,256); {cf. |scan_file_name|}
+par_loc:=cur_val; par_token:=cs_token_flag+par_loc;
+@z
+
+375. Alignments must be more robust to prevent crashes (Marc van Leeuwen)
+@x module 324
+else if token_type=u_template then align_state:=0;
+@y
+else if token_type=u_template then
+ if align_state>500000 then align_state:=0
+ else fatal_error("(interwoven alignment preambles are not allowed)");
+@.interwoven alignment preambles...@>
+@z
+@x module 782
+if (cur_cmd=assign_glue)and(cur_chr=glue_base+tab_skip_code) then
+@y
+if cur_cmd=endv then
+ fatal_error("(interwoven alignment preambles are not allowed)");
+@.interwoven alignment preambles...@>
+if (cur_cmd=assign_glue)and(cur_chr=glue_base+tab_skip_code) then
+@z
+@x module 791
+p:=link(q);
+@y
+if align_state<500000 then
+ fatal_error("(interwoven alignment preambles are not allowed)");
+@.interwoven alignment preambles...@>
+p:=link(q);
+@z
+
+376. Avoid kern removal in discretionary breaks (Marc van Leeuwen)
+@x module 815
+label done,done1,done2,done3,done4,continue;
+@y
+label done,done1,done2,done3,done4,done5,continue;
+@z
+@x module 866
+glue_node: begin @<If node |cur_p| is a legal breakpoint, call |try_break|@>;
+ @<Update the active widths by including the glue in |glue_ptr(cur_p)|@>;
+@y
+glue_node: begin @<If node |cur_p| is a legal breakpoint, call |try_break|;
+ then update the active widths by including the glue in |glue_ptr(cur_p)|@>;
+@z
+@x ibid
+disc_node: @<Try to break after a discretionary fragment@>;
+@y
+disc_node: @<Try to break after a discretionary fragment, then |goto done5|@>;
+@z
+@x ibid
+end
+@y
+done5:end
+@z
+Combine modules 868 and 869 into a single module, with a semicolon between.
+@x module 870 (which becomes module 869) gets ... in its title
+@y and the following new code just before its final "end":
+r:=replace_count(cur_p); s:=link(cur_p);
+while r>0 do
+ begin @<Add the width of node |s| to |act_width|@>;
+ decr(r); s:=link(s);
+ end;
+prev_p:=cur_p; cur_p:=s; goto done5;
+@z
+@x Now module 871 becomes 870, and we add a new (very similar) module 871:
+@y
+@ @<Add the width of node |s| to |act_width|@>=
+if is_char_node(s) then
+ begin f:=font(s);
+ act_width:=act_width+char_width(f)(char_info(f)(character(s)));
+ end
+else case type(s) of
+ ligature_node: begin f:=font(lig_char(s));
+ act_width:=act_width+
+ char_width(f)(char_info(f)(character(lig_char(s))));
+ end;
+ hlist_node,vlist_node,rule_node,kern_node:
+ act_width:=act_width+width(s);
+ othercases confusion("disc4")
+@:this can't happen disc4}{\quad disc4@>
+ endcases
+@z
+@x module 877
+@!disc_break:boolean; {was the current break at a discretionary node?}
+@y
+@!disc_break:boolean; {was the current break at a discretionary node?}
+@!post_disc_break:boolean; {and did it have a nonempty post-break part?}
+@z
+@x ibid
+if cur_p<>null then @<Prune unwanted nodes at the beginning of the next line@>;
+@y
+if cur_p<>null then if not post_disc_break then
+ @<Prune unwanted nodes at the beginning of the next line@>;
+@z
+@x module 881
+q:=cur_break(cur_p); disc_break:=false;
+@y
+q:=cur_break(cur_p); disc_break:=false; post_disc_break:=false;
+@z
+@x module 883
+ if not is_char_node(s) then if next_break(cur_p)<>null then
+ if cur_break(next_break(cur_p))=s then s:=r;
+@y that subtle bug is no longer possible so we can remove the code
+@z
+@x module 884
+link(s):=r; r:=post_break(q); post_break(q):=null;
+@y
+link(s):=r; r:=post_break(q); post_break(q):=null; post_disc_break:=true;
+@z
+
+377. Pick up a few discretionary hyphens that were lost because of
+the new (cautious) algorithm.
+@x module 914
+@ @d advance_major_tail==begin major_tail:=link(major_tail); incr(r_count);
+ end
+
+@<Create and append a discretionary node as an alternative...@>=
+begin r:=get_node(small_node_size);
+@y
+@ In this repeat loop we will insert another discretionary if |hyf[j-1]| is
+odd, after both branches of the previous discretionary end at position |j-1|.
+Strictly speaking, we aren't justified in doing this, because we don't know
+that a hyphen after |j-1| is truly independent of those branches. But in almost
+all applications we would rather not lose a potentially valuable hyphenation
+point. (Consider the word `difficult', where the letter `c' is in position |j|.)
+
+@d advance_major_tail==begin major_tail:=link(major_tail); incr(r_count);
+ end
+
+@<Create and append a discretionary node as an alternative...@>=
+repeat r:=get_node(small_node_size);
+@z
+@x ibid
+i:=hyphen_passed;
+@y
+i:=hyphen_passed; hyf[i]:=0;
+@z
+@x ibid
+end
+@y
+hyphen_passed:=j-1; link(hold_head):=null;
+until not odd(hyf[j-1])
+@z
+
+378. Undumped trie must also be dumpable again (Breitenlohner, 11 Dec 89)
+@x module 1325
+undump_size(0)(trie_size)('trie size')(j); {|trie_max|}
+for k:=0 to j do undump_hh(trie[k]);
+undump_size(0)(trie_op_size)('trie op size')(j); {|trie_op_ptr|}
+@y
+undump_size(0)(trie_size)('trie size')(j); @+init trie_max:=j;@+tini
+for k:=0 to j do undump_hh(trie[k]);
+undump_size(0)(trie_op_size)('trie op size')(j); @+init trie_op_ptr:=j;@+tini
+@z
+@x ibid
+k:=256;
+while j>0 do
+ begin undump(0)(k-1)(k); undump(1)(j)(x); j:=j-x; op_start[k]:=qo(j);
+@y
+init for k:=0 to 255 do trie_used[k]:=min_quarterword;@+tini
+k:=256;
+while j>0 do
+ begin undump(0)(k-1)(k); undump(1)(j)(x);@+init trie_used[k]:=qi(x);@+tini
+ j:=j-x; op_start[k]:=qo(j);
+@z
+
+379. Allow output routine to access page totals. (Suggested by Frank
+Mittelbach and Chris Rowley, December 1989)
+@x module 421
+begin if page_contents=empty then
+@y
+begin if (page_contents=empty) and (not output_active) then
+@z
+
+380. Slightly more robust recovery and detection of \output anomalies.
+(Suggested by Chris Thompson, provoked by George Russell, January 1990)
+@x module 1026
+begin if loc<>null then @<Recover from an unbalanced output routine@>;
+@y
+begin if (loc<>null) or
+ ((token_type<>output_text)and(token_type<>backed_up)) then
+ @<Recover from an unbalanced output routine@>;
+@z
+@x module 1027
+help2("Your sneaky output routine has fewer real {'s than }'s.")@/
+@y
+help2("Your sneaky output routine has problematic {'s and/or }'s.")@/
+@z
+
+381. \eqno\aftergroup*$$ should yield * after the $$ (Michael Downes, 29 Jan 90)
+@x module 1194
+ begin cur_mlist:=p; cur_style:=text_style; mlist_penalties:=false;
+@y
+ begin @<Check that another \.\$ follows@>;
+ cur_mlist:=p; cur_style:=text_style; mlist_penalties:=false;
+@z
+@x ibid
+else begin @<Check that another \.\$ follows@>;
+@y
+else begin if a=null then @<Check that another \.\$ follows@>;
+@z
+
+382. Missed a case in the 8-bit change (Wayne Sullivan, 1 Feb 1990)
+@x module 360
+ begin if (end_line_char<0)or(end_line_char>127) then incr(limit);
+@y
+ begin if end_line_char_inactive then incr(limit);
+@z
+
+383. Linebreaking needs to be more robust when total demerits get
+very high (Frank Mittelbach, 22 Feb 1990)
+@x module 830
+@!artificial_badness:boolean; {has |b| been forced to zero?}
+@y
+@!artificial_demerits:boolean; {has |d| been forced to zero?}
+@z
+@x module 833 (this change is cosmetic only)
+@!minimal_demerits:array[very_loose_fit..tight_fit] of scaled; {best total
+ demerits known for current line class and position, given the fitness}
+@!minimum_demerits:scaled; {best total demerits known for current line class
+@y
+@!minimal_demerits:array[very_loose_fit..tight_fit] of integer; {best total
+ demerits known for current line class and position, given the fitness}
+@!minimum_demerits:integer; {best total demerits known for current line class
+@z
+@x module 836 here we want to ensure that total_demerits < awful_bad
+minimum_demerits:=minimum_demerits+abs(adj_demerits);
+@y
+if abs(adj_demerits)>=awful_bad-minimum_demerits then
+ minimum_demerits:=awful_bad-1
+else minimum_demerits:=minimum_demerits+abs(adj_demerits);
+@z
+@x module 851
+begin @!stat artificial_badness:=false;@+tats@/
+@y
+begin artificial_demerits:=false;@/
+@z
+@x module 854
+ begin b:=0; {set badness zero, this break is forced}
+ @!stat artificial_badness:=true;@+tats
+ end
+@y
+ artificial_demerits:=true {set demerits zero, this break is forced}
+@z
+@x module 855
+@<Compute the demerits, |d|, from |r| to |cur_p|@>;
+@y
+if artificial_demerits then d:=0
+else @<Compute the demerits, |d|, from |r| to |cur_p|@>;
+@z
+@x module 856
+if artificial_badness then print_char("*")@+else print_int(b);
+@.*\relax@>
+print(" p="); print_int(pi);
+print(" d="); print_int(d);
+@y
+if b>inf_bad then print_char("*")@+else print_int(b);
+@.*\relax@>
+print(" p="); print_int(pi); print(" d=");
+if artificial_demerits then print_char("*")@+else print_int(d);
+@z
+@x module 859
+d:=line_penalty+b; d:=d*d;
+@y
+begin d:=line_penalty+b;
+if abs(d)>=10000 then d:=100000000@+else d:=d*d;
+@z
+@x ibid
+if abs(fit_class-fitness(r))>1 then d:=d+adj_demerits
+@y
+if abs(fit_class-fitness(r))>1 then d:=d+adj_demerits;
+end
+@z
+
+384. Math fonts may disappear outside of \eqno (Marc van Leeuwen).
+@x module 1194
+ if danger then flush_math;
+@y
+ danger:=false;
+ @<Check that the necessary fonts for math symbols are present;
+ if not, flush the current math lists and set |danger:=true|@>;
+@z
+
+385. Forgot to rule out charnode when testing for node type (Marc van Leeuwen).
+@x module 805
+ begin if type(q)=unset_node then
+ @<Set the unset box |q| and the unset boxes in it@>
+ else if type(q)=rule_node then
+ @<Make the running dimensions in rule |q| extend to the
+ boundaries of the alignment@>;
+@y
+ begin if not is_char_node(q) then
+ if type(q)=unset_node then
+ @<Set the unset box |q| and the unset boxes in it@>
+ else if type(q)=rule_node then
+ @<Make the running dimensions in rule |q| extend to the
+ boundaries of the alignment@>;
+@z
+@x module 903
+if type(hb)=ligature_node then if odd(subtype(hb)) then
+@y
+if not is_char_node(hb) then
+ if type(hb)=ligature_node then if odd(subtype(hb)) then
+@z
+@x module 1202
+ if p<>null then if type(p)=glue_node then d:=0;
+@y
+ if p<>null then if not is_char_node(p) then if type(p)=glue_node then d:=0;
+@z
+
+386. Don't change the font of punctuation before a hyphenated word
+ (Scott Allendorf, reported 7 Mar 90)
+@x module 895
+label common_ending,done,found,found1,not_found,not_found+1,exit;
+@y
+label common_ending,done,found,found1,found2,not_found,exit;
+@z
+@x module 903
+if is_char_node(ha) then
+ begin init_list:=ha; init_lig:=false; hu[0]:=qo(character(ha));
+ end
+else if type(ha)=ligature_node then
+ begin init_list:=lig_ptr(ha); init_lig:=true; init_lft:=(subtype(ha)>1);
+ hu[0]:=qo(character(lig_char(ha)));
+ if init_list=null then if init_lft then
+ begin hu[0]:=256; init_lig:=false;
+ end; {in this case a ligature will be reconstructed from scratch}
+ free_node(ha,small_node_size);
+ end
+else goto not_found+1; {no punctuation found}
+s:=cur_p; {we have |cur_p<>ha| because |type(cur_p)=glue_node|}
+while link(s)<>ha do s:=link(s);
+j:=0; goto common_ending;
+not_found+1: j:=1; s:=ha; init_list:=null;
+if not is_char_node(r) then if type(r)=ligature_node then
+ if subtype(r)>1 then
+ begin j:=0; hu[0]:=256; init_lig:=false;
+ end;
+@y
+if is_char_node(ha) then
+ if font(ha)<>hf then goto found2
+ else begin init_list:=ha; init_lig:=false; hu[0]:=qo(character(ha));
+ end
+else if type(ha)=ligature_node then
+ if font(lig_char(ha))<>hf then goto found2
+ else begin init_list:=lig_ptr(ha); init_lig:=true; init_lft:=(subtype(ha)>1);
+ hu[0]:=qo(character(lig_char(ha)));
+ if init_list=null then if init_lft then
+ begin hu[0]:=256; init_lig:=false;
+ end; {in this case a ligature will be reconstructed from scratch}
+ free_node(ha,small_node_size);
+ end
+else begin {no punctuation found; look for left boundary}
+ if not is_char_node(r) then if type(r)=ligature_node then
+ if subtype(r)>1 then goto found2;
+ j:=1; s:=ha; init_list:=null; goto common_ending;
+ end;
+s:=cur_p; {we have |cur_p<>ha| because |type(cur_p)=glue_node|}
+while link(s)<>ha do s:=link(s);
+j:=0; goto common_ending;
+found2: s:=ha; j:=0; hu[0]:=256; init_lig:=false; init_list:=null;
+@z
+
+387. Balance the parens showing on the terminal (for Lispers).
+@x module 304
+@!in_open : 0..max_in_open; {the number of lines in the buffer, less one}
+@y
+@!in_open : 0..max_in_open; {the number of lines in the buffer, less one}
+@!open_parens : 0..max_in_open; {the number of open text files}
+@z
+@x module 331
+in_open:=0; max_buf_stack:=0;
+@y
+in_open:=0; open_parens:=0; max_buf_stack:=0;
+@z
+@x module 362
+ begin print_char(")"); force_eof:=false;
+ update_terminal; {show user that file has been read}
+@y
+ begin print_char(")"); decr(open_parens);
+ update_terminal; {show user that file has been read}
+ force_eof:=false;
+@z
+@x module 537
+print_char("("); print(name); update_terminal; state:=new_line;
+@y
+print_char("("); incr(open_parens); print(name); update_terminal;
+state:=new_line;
+@z
+@x module 1334
+if job_name=0 then open_log_file;
+@y
+if job_name=0 then open_log_file;
+while open_parens>0 do
+ begin print(" )"); decr(open_parens);
+ end;
+@z
+
+388. Optimize \ifx\p\q after \let\p=\q (Marc van Leeuwen says that
+ AmS-TeX uses this a lot).
+@x module 508
+ while (p<>null)and(q<>null) do
+ if info(p)<>info(q) then p:=null
+ else begin p:=link(p); q:=link(q);
+ end;
+b:=((p=null)and(q=null));
+@y
+if p=q then b:=true
+else begin while (p<>null)and(q<>null) do
+ if info(p)<>info(q) then p:=null
+ else begin p:=link(p); q:=link(q);
+ end;
+ b:=((p=null)and(q=null));
+ end;
+@z
+@x module 538 (while we're at it, might as well optimize this too)
+begin if not input_ln(cur_file,false) then do_nothing;
+@y
+begin if input_ln(cur_file,false) then do_nothing;
+@z
+@x module 1020 (and this)
+else begin wait:=false; s:=ins_ptr(p);
+ link(last_ins_ptr(r)):=s; s:=last_ins_ptr(r);
+@y
+else begin wait:=false; s:=last_ins_ptr(r); link(s):=ins_ptr(p);
+@z
+
+389. Treat migration properly in displays (Marc van Leeuwen).
+@x module 1199 (a bad bug that really has bitten)
+adjust_tail:=adjust_head; b:=hpack(p,natural);
+@y
+adjust_tail:=adjust_head; b:=hpack(p,natural); p:=list_ptr(b);
+@z
+@x module 1204
+shift_amount(b):=s+d; append_to_vlist(b);
+if t<>adjust_head then
+ begin link(tail):=link(adjust_head); tail:=t;
+ end
+@y
+shift_amount(b):=s+d; append_to_vlist(b)
+@z
+@x module 1205
+ tail_append(new_penalty(post_display_penalty));
+ end
+else begin tail_append(new_penalty(post_display_penalty));
+ tail_append(new_param_glue(g2));
+ end
+@y
+ g2:=0;
+ end;
+if t<>adjust_head then {migrating material comes after equation number}
+ begin link(tail):=link(adjust_head); tail:=t;
+ end;
+tail_append(new_penalty(post_display_penalty));
+if g2>0 then tail_append(new_param_glue(g2))
+@z
+
+-----------Here I draw the line with respect to further changes
+
+390. Uninitialized nullfont parameters (found by Lance Carnes, 11 May 90).
+@x module 552
+hyphen_char[null_font]:="-"; skew_char[null_font]:=-1;
+@y
+hyphen_char[null_font]:="-"; skew_char[null_font]:=-1;
+bchar_label[null_font]:=non_address;
+font_bchar[null_font]:=non_char; font_false_bchar[null_font]:=non_char;
+@z
+
+391. Disable \write{\the\prevgraf} (B. Jackowski, July 1990).
+@x module 422
+begin nest[nest_ptr]:=cur_list; p:=nest_ptr;
+while abs(nest[p].mode_field)<>vmode do decr(p);
+scanned_result(nest[p].pg_field)(int_val);
+end
+@y
+if mode=0 then scanned_result(0)(int_val) {|prev_graf=0| within \.{\\write}}
+else begin nest[nest_ptr]:=cur_list; p:=nest_ptr;
+ while abs(nest[p].mode_field)<>vmode do decr(p);
+ scanned_result(nest[p].pg_field)(int_val);
+ end
+@z
+
+392. Report correct line number when buffer overflows (George Russell).
+@x module 538
+begin if input_ln(cur_file,false) then do_nothing;
+firm_up_the_line;
+if end_line_char_inactive then decr(limit)
+else buffer[limit]:=end_line_char;
+first:=limit+1; loc:=start; line:=1;
+@y
+begin line:=1;
+if input_ln(cur_file,false) then do_nothing;
+firm_up_the_line;
+if end_line_char_inactive then decr(limit)
+else buffer[limit]:=end_line_char;
+first:=limit+1; loc:=start;
+@z
+
+-------------
+Note: When making change 376, I forgot to delete the redundant
+code in module 883, and I should also have changed the name of that
+module. These cosmetic changes (and some changes to the comments)
+were made in version 3.14, in addition to the following two changes.
+-------------
+
+393. Show unprintable characters in font id's (Wayne Sullivan, Dec 1990)
+@x module 63
+print(s);
+@y
+slow_print(s);
+@z
+@x module 262 can now be spruced up
+else begin print_esc(""); slow_print(text(p));
+@y
+else begin print_esc(text(p));
+@z
+@x and module 263 likewise
+else begin print_esc(""); slow_print(text(p));
+ end;
+@y
+else print_esc(text(p));
+@z
+
+394. Avoid range check if total_pages>65535 (Eberhard Mattes, Dec 1990)
+@x module 642
+ dvi_out(total_pages div 256); dvi_out(total_pages mod 256);@/
+@y
+ dvi_out((total_pages div 256) mod 256); dvi_out(total_pages mod 256);@/
+@z
+
+395. Less confusing error message (18 Sep 91)
+@x module 436
+ begin print_err("Bad math code");
+@.Bad math code@>
+ help2("A numeric math code must be between 0 and 32767.")@/
+@y (because a \mathcode can be 32768, but not a \mathchar)
+ begin print_err("Bad mathchar");
+@.Bad mathchar@>
+ help2("A mathchar number must be between 0 and 32767.")@/
+@z
+
+396. Internal strings should not be expanded even if unprintable;
+i.e., selector=new_string => print(c)==print_char(c), print(s)==slow_print(s).
+This change completes what I began with number 393 (18 Sep 91).
+@x modules 59 and 60 (same change to both)
+ else if (@<Character |s| is the current new-line character@>) then
+ if selector<pseudo then
+ begin print_ln; return;
+ end;
+@y
+ else if selector>pseudo then
+ begin print_char(s); return; {internal strings are not expanded}
+ end
+ else if (@<Character |s| is the current new-line character@>) then
+ if selector<pseudo then
+ begin print_ln; return;
+ end;
+@z
+@x module 61
+else begin print(format_ident); print_ln;
+@y
+else begin slow_print(format_ident); print_ln;
+@z
+@x module 84
+ print(input_stack[base_ptr].name_field);
+@y
+ slow_print(input_stack[base_ptr].name_field);
+@z
+@x module 518
+begin print(a); print(n); print(e);
+@y
+begin slow_print(a); slow_print(n); slow_print(e);
+@z
+@x module 536
+print(format_ident); print(" ");
+@y
+slow_print(format_ident); print(" ");
+@z
+@x module 537
+print_char("("); incr(open_parens); print(name); update_terminal;
+@y
+print_char("("); incr(open_parens); slow_print(name); update_terminal;
+@z
+@x module 581
+ print(font_name[f]); print_char("!"); end_diagnostic(false);
+@y
+ slow_print(font_name[f]); print_char("!"); end_diagnostic(false);
+@z
+@x module 642
+ print_nl("Output written on "); print(output_file_name);
+@y
+ print_nl("Output written on "); slow_print(output_file_name);
+@z
+@x module 1261
+set_font:begin print("select font "); print(font_name[chr_code]);
+@y
+set_font:begin print("select font "); slow_print(font_name[chr_code]);
+@z
+@x module 1280
+print(s); update_terminal;
+@y
+slow_print(s); update_terminal;
+@z
+@x module 1283
+begin print_err(s);
+@y
+begin print_err(""); slow_print(s);
+@z
+@x module 1328
+print(w_make_name_string(fmt_file)); flush_string;
+print_nl(format_ident)
+@y
+slow_print(w_make_name_string(fmt_file)); flush_string;
+print_nl(""); slow_print(format_ident)
+@z
+@x module 1333
+ print(log_name); print_char(".");
+@y
+ slow_print(log_name); print_char(".");
+@z
+@x module 1339
+10: print(n);
+@y
+10: slow_print(n);
+@z
+
+397. Retain more right context for reconstructing ligatures (19 Sep 91)
+@x module 892
+@!l_hyf,@!r_hyf:integer; {limits on fragment sizes}
+@y
+@!l_hyf,@!r_hyf:integer; {limits on fragment sizes}
+@!hyf_bchar:halfword; {boundary character after $c_n$}
+@z
+@x module 897
+ c:=qo(character(s));
+@y
+ hyf_bchar:=character(s); c:=qo(hyf_bchar);
+@z
+@x module 897 again
+ s:=link(s);
+@y
+ s:=link(s); hyf_bchar:=non_char;
+@z
+@x module 898
+j:=hn; q:=lig_ptr(s);
+@y
+j:=hn; q:=lig_ptr(s);@+if q>null then hyf_bchar:=character(q);
+@z
+@x module 903
+q:=link(hb); link(hb):=null; r:=link(ha); link(ha):=null; bchar:=non_char;
+@y
+q:=link(hb); link(hb):=null; r:=link(ha); link(ha):=null; bchar:=hyf_bchar;
+@z
+
+398. Patch the previous code, which could cause double kerning (CET1, 29 Sep 91)
+@x module 897
+ hb:=s; incr(hn); hu[hn]:=c; hc[hn]:=lc_code(c);
+ end
+ else if type(s)=ligature_node then
+ @<Move the characters of a ligature node to |hu| and |hc|;
+ but |goto done3| if they are not all letters@>
+ else if (type(s)<>kern_node)or(subtype(s)<>normal) then goto done3;
+ s:=link(s); hyf_bchar:=non_char;
+@y
+ hb:=s; incr(hn); hu[hn]:=c; hc[hn]:=lc_code(c); hyf_bchar:=non_char;
+ end
+ else if type(s)=ligature_node then
+ @<Move the characters of a ligature node to |hu| and |hc|;
+ but |goto done3| if they are not all letters@>
+ else if (type(s)=kern_node)and(subtype(s)=normal) then hb:=s
+ else goto done3;
+ s:=link(s);
+@z
+@x module 898
+hb:=s; hn:=j;
+@y
+hb:=s; hn:=j;
+if odd(subtype(s)) then hyf_bchar:=font_bchar[hf]@+else hyf_bchar:=non_char;
+@z
+@x module 903
+if not is_char_node(hb) then
+ if type(hb)=ligature_node then if odd(subtype(hb)) then
+ bchar:=font_bchar[hf];
+@y
+@z
+
+399. Disallow \setbox in do_assignments (problem found by Robert Hunt, Nov 91)
+@x module 76
+@!deletions_allowed:boolean; {is it safe for |error| to call |get_token|?}
+@y
+@!deletions_allowed:boolean; {is it safe for |error| to call |get_token|?}
+@!set_box_allowed:boolean; {is it safe to do a \.{\\setbox} assignment?}
+@z
+@x module 77
+deletions_allowed:=true; error_count:=0; {|history| is initialized elsewhere}
+@y
+deletions_allowed:=true; set_box_allowed:=true;
+error_count:=0; {|history| is initialized elsewhere}
+@z
+@x module 1241
+ scan_optional_equals; scan_box(box_flag+n);
+@y
+ if set_box_allowed then scan_box(box_flag+n)
+ else begin print_err("Improper "); print_esc("setbox");
+@.Improper \\setbox@>
+ help2("Sorry, \setbox is not allowed after \halign in a display,")@/
+ ("or between \accent and an accented character."); error;
+ end;
+@z
+@x module 1270
+ prefixed_command;
+@y
+ set_box_allowed:=false; prefixed_command; set_box_allowed:=true;
+@z
+
+400. Defend against negative cur_mu (Wayne Sullivan, Nov 91)
+@x module 716
+begin n:=x_over_n(m,@'200000); f:=remainder;@/
+@y
+begin n:=x_over_n(m,@'200000); f:=remainder;@/
+if f<0 then
+ begin decr(n); f:=f+@'200000;
+ end;
+@z
+@x module 717
+ begin n:=x_over_n(m,@'200000); f:=remainder;@/
+@y
+ begin n:=x_over_n(m,@'200000); f:=remainder;@/
+ if f<0 then
+ begin decr(n); f:=f+@'200000;
+ end;
+@z
+
+401. Defend against `|}{|' in |\read| (Michael Downes).
+@x module 483
+ store_new_token(cur_tok);
+@y
+ if align_state<1000000 then {unmatched `\.\}' aborts the line}
+ begin repeat get_token; until cur_tok=0;
+ align_state:=1000000; goto done;
+ end;
+ store_new_token(cur_tok);
+@z
+
+402. Economize string storage under multiple \font defs (B. Jackowski)
+@x module 1257
+@!old_setting:0..max_selector; {holds |selector| setting}
+@y
+@!old_setting:0..max_selector; {holds |selector| setting}
+@!flushable_string:str_number; {string not yet referenced}
+@z
+@x module 1260
+for f:=font_base+1 to font_ptr do
+ if str_eq_str(font_name[f],cur_name)and str_eq_str(font_area[f],cur_area) then
+ begin if s>0 then
+@y
+flushable_string:=str_ptr-1;
+for f:=font_base+1 to font_ptr do
+ if str_eq_str(font_name[f],cur_name)and str_eq_str(font_area[f],cur_area) then
+ begin if cur_name=flushable_string then
+ begin flush_string; cur_name:=font_name[f];
+ end;
+ if s>0 then
+@z
+
+403. Don't look for \newlinechar within unprintable chars (B. Raichle, Nov 91)
+@x module 59
+var j:pool_pointer; {current character code position}
+@y
+var j:pool_pointer; {current character code position}
+@!nl:integer; {new-line character to restore}
+@z
+@x
+ else if selector>pseudo then
+ begin print_char(s); return; {internal strings are not expanded}
+ end
+ else if (@<Character |s| is the current new-line character@>) then
+ if selector<pseudo then
+ begin print_ln; return;
+ end;
+@y
+ else begin if selector>pseudo then
+ begin print_char(s); return; {internal strings are not expanded}
+ end;
+ if (@<Character |s| is the current new-line character@>) then
+ if selector<pseudo then
+ begin print_ln; return;
+ end;
+ nl:=new_line_char; new_line_char:=-1;
+ {temporarily disable new-line character}
+ j:=str_start[s];
+ while j<str_start[s+1] do
+ begin print_char(so(str_pool[j])); incr(j);
+ end;
+ new_line_char:=nl; return;
+ end;
+@z
+@x module 60
+label exit;
+var j:pool_pointer; {current character code position}
+begin if s>=str_ptr then s:="???" {this can't happen}
+@.???@>
+else if s<256 then
+ if s<0 then s:="???" {can't happen}
+ else if selector>pseudo then
+ begin print_char(s); return; {internal strings are not expanded}
+ end
+ else if (@<Character |s| is the current new-line character@>) then
+ if selector<pseudo then
+ begin print_ln; return;
+ end;
+j:=str_start[s];
+while j<str_start[s+1] do
+ begin print(so(str_pool[j])); incr(j);
+ end;
+exit:end;
+label exit;
+var j:pool_pointer; {current character code position}
+begin if s>=str_ptr then s:="???" {this can't happen}
+@.???@>
+else if s<256 then
+ if s<0 then s:="???" {can't happen}
+ else if selector>pseudo then
+ begin print_char(s); return; {internal strings are not expanded}
+ end
+ else if (@<Character |s| is the current new-line character@>) then
+ if selector<pseudo then
+ begin print_ln; return;
+ end;
+j:=str_start[s];
+while j<str_start[s+1] do
+ begin print(so(str_pool[j])); incr(j);
+ end;
+exit:end;
+@y
+var j:pool_pointer; {current character code position}
+begin if (s>=str_ptr) or (s<256) then print(s)
+else begin j:=str_start[s];
+ while j<str_start[s+1] do
+ begin print(so(str_pool[j])); incr(j);
+ end;
+ end;
+end;
+@z
+
+404. False boundary character logic was incorrect (found by Eberhard
+ Mattes and Bernd Raichle, 6 Feb 92)
+@x module 1036
+cur_q:=tail; cur_l:=cur_r; {or |character(lig_stack)|}
+@y the following is needed since cur_r might have been changed to non_char
+cur_q:=tail; cur_l:=character(lig_stack);
+@z
+
+405. New paragraph and resume-after-display should continue current
+ \language (Sch\"opf and Thompson, 17 July 92)
+@@@ Undo the changes to modules 212, 213, 215 in change number 373.
+@x module 218
+ if m=hmode then@+if(nest[p].lhm_field<>2)or(nest[p].rhm_field<>3)then
+ begin print(" (hyphenmin "); print_int(nest[p].lhm_field); print_char(",");
+ print_int(nest[p].rhm_field); print_char(")");
+ end;
+@y
+ if m=hmode then if (nest[p].pg_field <> @'40600000) then
+ begin print(" (language"); print_int(nest[p].pg_field mod @'200000);
+ print(":hyphenmin"); print_int(nest[p].pg_field div @'20000000);
+ print_char(","); print_int((nest[p].pg_field div @'200000) mod @'100);
+ print_char(")");
+ end;
+@z
+@x module 816
+pop_nest;
+@y prev_graf now carries the language parameters at start of horizontal mode
+init_cur_lang:=prev_graf mod @'200000;
+init_l_hyf:=prev_graf div @'20000000;
+init_r_hyf:=(prev_graf div @'200000) mod @'100;
+pop_nest;
+@z
+@x module 891
+l_hyf:=lhmin; r_hyf:=rhmin; cur_lang:=0;
+@y
+cur_lang:=init_cur_lang; l_hyf:=init_l_hyf; r_hyf:=init_r_hyf;
+@z
+@x module 892
+@!cur_lang:ASCII_code; {current hyphenation table of interest}
+@!l_hyf,@!r_hyf:integer; {limits on fragment sizes}
+@y
+@!cur_lang,@!init_cur_lang:ASCII_code; {current hyphenation table of interest}
+@!l_hyf,@!r_hyf,@!init_l_hyf,@!init_r_hyf:integer; {limits on fragment sizes}
+@z
+@x module 1091
+lhmin:=norm_min(left_hyphen_min); rhmin:=norm_min(right_hyphen_min);
+push_nest; mode:=hmode; space_factor:=1000; clang:=0;@/
+@y
+push_nest; mode:=hmode; space_factor:=1000; set_cur_lang; clang:=cur_lang;
+prev_graf:=(norm_min(left_hyphen_min)*@'100+norm_min(right_hyphen_min))
+ *@'200000+cur_lang;
+@z
+@x module 1200
+push_nest; mode:=hmode; space_factor:=1000; clang:=0;
+@y
+push_nest; mode:=hmode; space_factor:=1000; set_cur_lang; clang:=cur_lang;
+prev_graf:=(norm_min(left_hyphen_min)*@'100+norm_min(right_hyphen_min))
+ *@'200000+cur_lang;
+@z
+
+406. Avoid (harmless) range errors (Philip Taylor and CET1, 17 Dec 92).
+@x module 934
+var n:small_number; {length of current word}
+@!j:small_number; {an index into |hc|}
+@y
+var n:0..64; {length of current word; not always a |small_number|}
+@!j:0..64; {an index into |hc|}
+@z
+@x module 960
+var k,@!l:small_number; {indices into |hc| and |hyf|}
+@y
+var k,@!l:0..64; {indices into |hc| and |hyf|;
+ not always in |small_number| range}
+@z
+
+407. Kerns inserted via boundary chars should not disappear (William E. Baxter,
+ 25 Feb 93)
+@x module 837
+Kern nodes for accents are treated specially: They do not
+disappear at a line break.
+@y
+Kern nodes do not disappear at a line break unless they are |explicit|.
+@z
+@x ibid
+ math_node,kern_node: if subtype(s)=acc_kern then goto done
+ else break_width[1]:=break_width[1]-width(s);
+@y
+ math_node: break_width[1]:=break_width[1]-width(s);
+ kern_node: if subtype(s)<>explicit then goto done
+ else break_width[1]:=break_width[1]-width(s);
+@z
+@x module 839
+plus $l_1$, so the length from |cur_p| to |cur_p| should be $\gamma+l_0+l_1-l$,
+minus the length of nodes that will be discarded after the discretionary break.
+@y (this change and the next two should have been made long ago, with #376!)
+plus $l_1$, so the length from |cur_p| to |cur_p| should be $\gamma+l_0+l_1-l$.
+If the post-break text of the discretionary is empty, a break may also
+discard~|q|; in that unusual case we subtract the length of~|q| and any
+other nodes that will be discarded after the discretionary break.
+@z
+@x module 840
+ begin @<Add the width of node |s| to |break_width| and increase |t|,
+ unless it's discardable@>;
+ s:=link(s);
+ end;
+break_width[1]:=break_width[1]+disc_width;
+if t=0 then s:=link(v); {more nodes may also be discardable after the break}
+@y
+ begin @<Add the width of node |s| to |break_width|@>;
+ s:=link(s);
+ end;
+break_width[1]:=break_width[1]+disc_width;
+if post_break(cur_p)=null then s:=link(v);
+ {nodes may be discardable after the break}
+@z
+@x module 842 (which now has a new title)
+ hlist_node,vlist_node,rule_node:break_width[1]:=break_width[1]+width(s);
+ kern_node: if (t=0)and(subtype(s)<>acc_kern) then t:=-1 {discardable}
+ othercases confusion("disc2")
+@:this can't happen disc2}{\quad disc2@>
+ endcases;
+incr(t)
+@y
+ hlist_node,vlist_node,rule_node,kern_node:
+ break_width[1]:=break_width[1]+width(s);
+ othercases confusion("disc2")
+@:this can't happen disc2}{\quad disc2@>
+ endcases
+@z
+@x module 866
+kern_node: kern_break;
+@y
+kern_node: if subtype(cur_p)=explicit then kern_break
+ else act_width:=act_width+width(cur_p);
+@z
+@x module 868
+ else if precedes_break(prev_p) then try_break(0,unhyphenated);
+@y
+ else if precedes_break(prev_p) then try_break(0,unhyphenated)
+ else if (type(prev_p)=kern_node)and(subtype(prev_p)<>explicit) then
+ try_break(0,unhyphenated);
+@z
+@x module 879
+ if subtype(q)=acc_kern then if type(q)=kern_node then goto done1;
+@y
+ if type(q)=kern_node then if subtype(q)<>explicit then goto done1;
+@z
+
+408. Prevent boundary kern from disappearing after hyphenation (25 Feb 93)
+@x module 897
+ else if (type(s)=kern_node)and(subtype(s)=normal) then hb:=s
+@y
+ else if (type(s)=kern_node)and(subtype(s)=normal) then
+ begin hb:=s;
+ hyf_bchar:=font_bchar[hf];
+ end
+@z
+
+409. Avoid potential future bug [P Breitenlohner] (26 Jun 93)
+@x module 628 [shift_amount(leader_box)=0 now but maybe not in extensions]
+dvi_v:=save_v; dvi_h:=save_h; cur_v:=save_v;
+@y
+dvi_v:=save_v; dvi_h:=save_h; cur_v:=base_line;
+@z
+@x module 637
+dvi_v:=save_v; dvi_h:=save_h; cur_h:=save_h;
+@y
+dvi_v:=save_v; dvi_h:=save_h; cur_h:=left_edge;
+@z
+
+410. Mustn't let |non-address| depend on |font_mem_size|
+@x module 549
+@d non_address==font_mem_size {a spurious |font_index|}
+@y
+@d non_address=0 {a spurious |bchar_label|}
+@z
+@x module 916
+if bchar_label[hf]<non_address then {put left boundary at beginning of new line}
+@y
+if bchar_label[hf]<>non_address then {put left boundary at beginning of new line}
+@z
+@x module 1323, this will detect obsolete format files
+undump(0)(font_mem_size)(bchar_label[k]);
+@y
+undump(0)(fmem_ptr-1)(bchar_label[k]);
+@z
+
+411. Allow large |font_mem_size|, many font parameters.
+@x module 549
+@!font_params:array[internal_font_number] of halfword; {how many font
+@y
+@!font_params:array[internal_font_number] of font_index; {how many font
+@z
+
+412. Math kerns are explicit; this matters, after change 405 (W Carlip, Sep 94)
+@x module 717
+ width(p):=mu_mult(width(p)); subtype(p):=normal;
+@y
+ width(p):=mu_mult(width(p)); subtype(p):=explicit;
+@z
+
+413. Avoid overflow on real-to-integer conversion
+@x module 619
+@!edge:scaled; {left edge of sub-box, or right edge of leader space}
+@y
+@!edge:scaled; {left edge of sub-box, or right edge of leader space}
+@!glue_temp:real; {glue value before rounding}
+@z
+@x module 625
+@ @<Move right or output leaders@>=
+begin g:=glue_ptr(p); rule_wd:=width(g);
+if g_sign<>normal then
+ begin if g_sign=stretching then
+ begin if stretch_order(g)=g_order then
+ rule_wd:=rule_wd+round(float(glue_set(this_box))*stretch(g));
+@^real multiplication@>
+ end
+ else begin if shrink_order(g)=g_order then
+ rule_wd:=rule_wd-round(float(glue_set(this_box))*shrink(g));
+@y
+@ @d vet_glue(#)== glue_temp:=#;
+ if glue_temp>float_constant(1000000000) then
+ glue_temp:=float_constant(1000000000)
+ else if glue_temp<-float_constant(1000000000) then
+ glue_temp:=-float_constant(1000000000)
+
+@<Move right or output leaders@>=
+begin g:=glue_ptr(p); rule_wd:=width(g);
+if g_sign<>normal then
+ begin if g_sign=stretching then
+ begin if stretch_order(g)=g_order then
+ begin vet_glue(float(glue_set(this_box))*stretch(g));
+@^real multiplication@>
+ rule_wd:=rule_wd+round(glue_temp);
+ end;
+ end
+ else if shrink_order(g)=g_order then
+ begin vet_glue(float(glue_set(this_box))*shrink(g));
+ rule_wd:=rule_wd-round(glue_temp);
+@z
+@x module 629
+@!edge:scaled; {bottom boundary of leader space}
+@y
+@!edge:scaled; {bottom boundary of leader space}
+@!glue_temp:real; {glue value before rounding}
+@z
+@x module 634
+ rule_ht:=rule_ht+round(float(glue_set(this_box))*stretch(g));
+@^real multiplication@>
+ end
+ else begin if shrink_order(g)=g_order then
+ rule_ht:=rule_ht-round(float(glue_set(this_box))*shrink(g));
+@y
+ begin vet_glue(float(glue_set(this_box))*stretch(g));
+@^real multiplication@>
+ rule_ht:=rule_ht+round(glue_temp);
+ end;
+ end
+ else if shrink_order(g)=g_order then
+ begin vet_glue(float(glue_set(this_box))*shrink(g));
+ rule_ht:=rule_ht-round(glue_temp);
+@z
+
+414. final cleanup should not retain spurious reference counts (20 Mar 95)
+@x module 1335
+while open_parens>0 do
+@y
+while input_ptr>0 do
+ if state=token_list then end_token_list@+else end_file_reading;
+while open_parens>0 do
+@z
+@x module 1335, continued
+ cur_if:=subtype(cond_ptr); cond_ptr:=link(cond_ptr);
+@y
+ cur_if:=subtype(cond_ptr); temp_ptr:=cond_ptr;
+ cond_ptr:=link(cond_ptr); free_node(temp_ptr,if_node_size);
+@z
+@x module 1335, concluded
+ begin @!init store_fmt_file; return;@+tini@/
+@y
+ begin @!init for c:=top_mark_code to split_bot_mark_code do
+ if cur_mark[c]<>null then delete_token_ref(cur_mark[c]);
+ store_fmt_file; return;@+tini@/
+@z
+
+415. we need not raise hassles about two-digit years (23 Nov 98)
+@x module 1328
+print_int(year mod 100); print_char(".");
+@y
+print_int(year); print_char(".");
+@z
+
+416. \xleaders often drops the final box (Hiroshi Nakashima, 12 July 99)
+@x modules 627 and 636
+ else begin lx:=(2*lr+lq+1) div (2*lq+2); {round|(lr/(lq+1))|}
+@y
+ else begin lx:=lr div (lq+1);
+@z
+
+417. disallow 100000 unbalanced }s outside of alignment (Ralf Roth, 30 Aug 01)
+@x module 789
+to another alignment is being scanned.
+
+@<Insert the \(v)\<v_j>...@>=
+begin if scanner_status=aligning then
+@y
+to another alignment is being scanned, or when no alignment preamble is active.
+
+@<Insert the \(v)\<v_j>...@>=
+begin if (scanner_status=aligning) or (cur_align=null) then
+@z
+
+418. don't allow end-template except at end of template (Roth, 30 Aug 01)
+@x module 325
+while (state=token_list)and(loc=null) do end_token_list; {conserve stack space}
+@y
+while (state=token_list)and(loc=null)and(token_type<>v_template) do
+ end_token_list; {conserve stack space}
+@z
+@x module 390
+while (state=token_list)and(loc=null) do end_token_list; {conserve stack space}
+@y
+while (state=token_list)and(loc=null)and(token_type<>v_template) do
+ end_token_list; {conserve stack space}
+@z
+@x module 1131
+during an entire alignment, until |fin_align| removes it.
+
+@<Declare act...@>=
+procedure do_endv;
+begin if cur_group=align_group then
+@y
+during an entire alignment, until |fin_align| removes it.
+
+A devious user might force an |endv| command to occur just about anywhere;
+we must defeat such hacks.
+
+@<Declare act...@>=
+procedure do_endv;
+begin base_ptr:=input_ptr; input_stack[base_ptr]:=cur_input;
+while (input_stack[base_ptr].index_field<>v_template) and
+ (input_stack[base_ptr].loc_field=null) and
+ (input_stack[base_ptr].state_field=token_list) do decr(base_ptr);
+if (input_stack[base_ptr].index_field<>v_template) or
+ (input_stack[base_ptr].loc_field<>null) or
+ (input_stack[base_ptr].state_field<>token_list) then
+ fatal_error("(interwoven alignment preambles are not allowed)");
+@.interwoven alignment preambles...@>
+ if cur_group=align_group then
+@z
+
+419. Improve rounding of glue during output.
+@x module 3
+@!@^dirty \PASCAL@>
+@y
+@!@^dirty \PASCAL@>
+
+Incidentally, \PASCAL's standard |round| function can be problematical,
+because it disagrees with the IEEE floating-point standard.
+Many implementors have
+therefore chosen to substitute their own home-grown rounding procedure.
+@z
+@x module 619
+begin this_box:=temp_ptr; g_order:=glue_order(this_box);
+@y
+@!cur_glue:real; {glue seen so far}
+@!cur_g:scaled; {rounded equivalent of |cur_glue| times the glue ratio}
+begin cur_g:=0; cur_glue:=float_constant(0);
+this_box:=temp_ptr; g_order:=glue_order(this_box);
+@z
+@x module 625
+begin g:=glue_ptr(p); rule_wd:=width(g);
+if g_sign<>normal then
+ begin if g_sign=stretching then
+ begin if stretch_order(g)=g_order then
+ begin vet_glue(float(glue_set(this_box))*stretch(g));
+@^real multiplication@>
+ rule_wd:=rule_wd+round(glue_temp);
+ end;
+ end
+ else if shrink_order(g)=g_order then
+ begin vet_glue(float(glue_set(this_box))*shrink(g));
+ rule_wd:=rule_wd-round(glue_temp);
+ end;
+ end;
+@y
+begin g:=glue_ptr(p); rule_wd:=width(g)-cur_g;
+if g_sign<>normal then
+ begin if g_sign=stretching then
+ begin if stretch_order(g)=g_order then
+ begin cur_glue:=cur_glue+stretch(g);
+ vet_glue(float(glue_set(this_box))*cur_glue);
+@^real multiplication@>
+ cur_g:=round(glue_temp);
+ end;
+ end
+ else if shrink_order(g)=g_order then
+ begin cur_glue:=cur_glue-shrink(g);
+ vet_glue(float(glue_set(this_box))*cur_glue);
+ cur_g:=round(glue_temp);
+ end;
+ end;
+rule_wd:=rule_wd+cur_g;
+@z
+@x module 629
+begin this_box:=temp_ptr; g_order:=glue_order(this_box);
+@y
+@!cur_glue:real; {glue seen so far}
+@!cur_g:scaled; {rounded equivalent of |cur_glue| times the glue ratio}
+begin cur_g:=0; cur_glue:=float_constant(0);
+this_box:=temp_ptr; g_order:=glue_order(this_box);
+@z
+@x module 634
+begin g:=glue_ptr(p); rule_ht:=width(g);
+if g_sign<>normal then
+ begin if g_sign=stretching then
+ begin if stretch_order(g)=g_order then
+ begin vet_glue(float(glue_set(this_box))*stretch(g));
+@^real multiplication@>
+ rule_ht:=rule_ht+round(glue_temp);
+ end;
+ end
+ else if shrink_order(g)=g_order then
+ begin vet_glue(float(glue_set(this_box))*shrink(g));
+ rule_ht:=rule_ht-round(glue_temp);
+ end;
+ end;
+@y
+begin g:=glue_ptr(p); rule_ht:=width(g)-cur_g;
+if g_sign<>normal then
+ begin if g_sign=stretching then
+ begin if stretch_order(g)=g_order then
+ begin cur_glue:=cur_glue+stretch(g);
+ vet_glue(float(glue_set(this_box))*cur_glue);
+@^real multiplication@>
+ cur_g:=round(glue_temp);
+ end;
+ end
+ else if shrink_order(g)=g_order then
+ begin cur_glue:=cur_glue-shrink(g);
+ vet_glue(float(glue_set(this_box))*cur_glue);
+ cur_g:=round(glue_temp);
+ end;
+ end;
+rule_ht:=rule_ht+cur_g;
+@z
+
+-----------
+420. The absolutely final change (to be made after my death)
+@x module 2
+@d banner=='This is TeX, Version 3.141592' {printed when \TeX\ starts}
+@y
+@d banner=='This is TeX, Version $\pi$' {printed when \TeX\ starts}
+@z
+When this change is made, the corresponding line should be changed in
+Volume B, and also on page 23 of The TeXbook.
+My last will and testament for TeX is that no further changes be made
+under any circumstances. Improved systems should not be called simply `TeX';
+that name, unqualified, should refer only to the program for which I have
+taken personal responsibility. -- Don Knuth
+
+ * Possibly nice ideas that will not be implemented
+
+. classes of marks analogous to classes of insertions
+
+. \showcontext to show the current location without stopping for error
+
+. \show commands to be less like errors
+
+. \everyeof to insert tokens before an \input file ends
+ (strange example: \everyeof{\noexpand} will allow things
+ like \xdef\a{\input foo}!)
+
+. generalize \leftskip and \rightskip to token lists (problems with
+ displayed math then)
+
+. generalize \widowline and \clubline to go further into a paragraph
+
+. \lastbox to remove and box a charnode if one is there
+
+. \lastbox to set a new quantity \lastboxshift, to preserve info now lost
+
+. \posttolerance for third pass of line breaking
+
+* Design errors that are too late to fix
+
+. additional parameters should be in symbol fonts to govern the space between
+ rules and text in \over, \sqrt, etc.
+
+. multilingual typesetting doesn't work properly when the \lccode changes
+ within a paragraph
+
+. large accents cannot be brought close to small letters in math mode
+
+. \hyphenation is not sensitive to \language
+
+* Bad ideas that will not be implemented
+
+. several people want to be able to remove arbitrary elements of lists,
+ but that must never be done because some of those elements (e.g. kerns
+ for accents) depend on floating point arithmetic
+
+. if anybody wants letter spacing desperately they should put it in their own
+ private version (e.g. generalize the hpack routine) and NOT call it TeX.
diff --git a/Master/texmf-doc/doc/english/knuth/errorlog.tex b/Master/texmf-doc/doc/english/knuth/errorlog.tex
new file mode 100644
index 00000000000..ff41f9b3bcd
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/errorlog.tex
@@ -0,0 +1,2914 @@
+% Appendix to the Errors of TeX paper (updated)
+% Section numbers now adjusted to TeX 3.0 equivalents
+% NB: tab marks are significant in this file, they signal continuation lines
+%\magnification=\magstephalf
+%\pageno=35
+\input logmac
+* 10 Mar 1978
+L1. Rename a few external variables to make their first six letters unique.
+D2. Initialize \\{escape_char} to $-1$, not 0 [it will be set to the
+ first character input]. @240
+L3. Fix bug: The test `$\\{id}<\O{200}$' was supposed to distinguish one-letter
+ identifiers from longer (packed) ones, but negative values of
+ \\{id} also pass this test. @356
+B4. Fix bug: I wrote `{\bf while} $\alpha\land(\beta\lor\gamma)$' when I meant
+ `{\bf while} $(\alpha\land\beta)\lor\gamma$'. @259
+R5. Initialize the input routines in |INITEX| [at this time a short,
+ separate program not under user control], in case errors occur. @1337
+E6. Don't initialize \\{mem} in |INITEX|, it wastes time. @164
+B7. Change `\\{new_line}' [which denotes a lexical scanning state] to
+ `\\{next_line}' [which denotes
+ \\{carriage_return} and \\{line_feed}] in print commands.
+F8. Include additional test `$\\{mem}[p] \ne 0\; \land$' in \\{check_mem}. @168
+M9. Fix inconsistency between the \\{eq_level} conventions of \\{macro_def} and
+ \\{eq_define}. @277
+# About six hours of debugging time today.
+# |INITEX| appears to work,
+ and the test routine got through \\{start_input},
+ \\{chcode} [the \TeX78 command for assigning a \\{cat_code}],
+ \\{get_next}, and \\{back_input} the first time.
+* 11 Mar 1978
+I10. Insert space before `|(|' on terminal when opening a new file. @537
+F11. Put `$p\gets \\{link}(p)$' into the loop of \\{show_token_list},
+ so that it doesn't loop forever. @292
+L12. Shift the last item found by \\{scan_toks} into the \\{info} field.
+ [With |SAIL| all packing of fields was done by arithmetic operations,
+ not by the compiler.] @474
+B13\>12. Fix the previous bugfix: I shifted by the wrong amount. @474
+I14. Add a feature that prints a warning when the end of a file page occurs within
+ a macro definition or call. [System dependent.] @336
+# Unintended bugs in my test routine [a format intended eventually to typeset
+ {\sl The Art of Computer Programming\/}] helped check out the
+ error recovery mechanisms.
+ For example, I had `|\lft{#}|' instead of `|\lft{##}|' inside a macro,
+ and three cases of improper |{|~and~|}| nesting.
+F15. Add the forgotten case `\\{set_font}:' to \\{eq_destroy}. @275
+C16. Change |\require| to |\input|. @376
+F17. Add code for the case $\\{cur_cmd}=0$ [later known as the case
+ `$\,t\ge\\{cs_token_flag}$'] when scanning a tokenlist. @357
+# That's the first ``big'' error I've spotted so far.
+I18. Introduce a `|d|' option in the error routine, to facilitate debugging. @84
+L19. Assign a floating-point constant \\{ignore_depth} to \\{prev_depth},
+ instead of assigning the integer constant \\{flag}
+ [since \\{prev_depth} is type \\{real} in \TeX78]. @215
+I20. Improve the readability and spacing of \\{show_node_list} output. @182,187
+F21. Set the variable $v$ before using the {\bf case} construction in
+ \\{show_node_list}, because there's one case where $v$
+ didn't receive a value [as part of the field unpacking]. @182
+# About seven hours today.
+* 12 Mar 1978
+# One hour to enter yesterday's corrections and recompile.
+# At this point \TeX\ correctly located further unintended syntax errors
+ in |acphdr| [the test file].
+I22. Insert \\{debug_help} into \\{succumb}, giving a chance to look at memory
+ before the system dies. @93
+D23. Use \\{eq_destroy} wherever necessary in \\{unsave}. @283
+L24. Change `$t \gets (t-1)$ mod 8' to `$t \gets (t-1)$ land~7' in \\{id_name},
+ since |SAIL| has $-1$~mod~$8 = -1$. [At this time, \\{id_name} is a
+ routine that unpacks control sequence names, according to a scheme
+ that will become obsolete after change \#422.]
+S25. Remove the space that appears at end of paragraph.
+ (I hadn't anticipated that.) @816
+L26. Throw away unwanted \\{line_feed} after getting a \\{carriage_return}
+ in response to \\{in_chr_w} [a system routine for
+ input from the terminal]. @83
+B27. Delete spurious call to \\{flush_list} in \\{end_token_list}. @324
+# Why did I make such a silly mistake?
+F28. Fix bug in \\{get_x_token}: I forgot to say `\\{macro_call}' (which is the
+ main point of that routine)! @380
+# While tracking that bug down, I found out incidentally that kerning is okay.
+# Also \TeX\ correctly caught an error |0p| for |0pt|.
+L29. Fix bug in \\{scan_spec} ({\bf while} instead of {\bf repeat}). @404
+M30. Make the table entries for |\hfill| and |\hskip| consistent with the
+ program conventions. @1058
+L31. Disable unforeseen coercion: When \\{scan_spec} put \\{hsize} on
+ \\{save_stack}, the value changed from \\{real} to \\{integer}. @645
+I32. Use `|*|' instead of `|-1.0|' for running dimensions
+ of rules in \\{show_node_list}. @176
+D33. Clear \\{mem}[\\{head}] to null in \\{push_nest} [in \TeX82, this
+ will be done by \\{get_avail}]. @216
+# A vrule link got clobbered because I forgot to do this.
+I34. Translate ASCII control codes to special form when displaying them. @48,68
+# Ligatures work, but \\{show_node_list} showed them funny.
+F35. Remember to clear parameters off \\{save_stack} in \\{package} routine. @1086
+# About eight hours today.
+* 13 Mar 1978
+D36. Introduce a new variable \\{hang_first} [later the sign of \\{hang_after}]. @849
+E37\>36. Simplify the new code, realizing that if $\\{hang_indent}=0$ then
+ \\{hang_first} is irrelevant. @848
+# Time sharing is very slow today, so I'm mostly reading technical reports while
+ waiting\/ {\bf three hours} for compiler, editor, and loading routine.
+# I'm not counting this as debugging time!
+# (Came back in the evening.)
+P38. Spruce up the comments in the \\{line_break} routine, which appears to be
+ almost working. @813
+D39. Rethink the setting of \\{best_line}; it's 1 too high in many cases.
+ [The final line of a paragraph was handled in a treacherous way.] @874
+D40. Compute proper initialization for
+ \\{prev_depth} when beginning an |\hbox|
+ with a paragraph inside. [This refers to a special `paragraph box'
+ construction, used when an hbox of specified size becomes overfull;
+ \TeX78 doesn't have the concept of internal vertical mode.] @1083
+D41. Also initialize \\{tail} in that case. @1083
+M42. Also put the result of line-breaking into the correct list.
+T43. Fix a typo in the \\{free_node} routine (`\\{link}' not `\\{llink}');
+ by strange chance it had been harmless until today. @130
+F44. Fix bug: \\{post_line_break} forgot to set \\{adjust_tail}. @889
+D45. Update \\{act_width} properly when looking for end of word while
+ line breaking. @866
+B46. Repair the ``tricky'' part of \\{get_node}: I used the \\{info} field
+ when I meant to say \\{llink}. @127
+# Now the |\corners| macro of |acphdr| works! [See |\setcornerrules|
+ in {\sl The \TeX book}, page 417.]
+D47. Reset \\{contrib_tail} properly in \\{build_page}. @995
+T48. Fix typo (|-| for |+|) in computation of \\{page_total}. @1004
+S49. Change the page-breaking logic: \TeX\ reached \\{fire_up} with
+ $\\{best_page_break}=\\{null}$ in one case,
+ since the badness was too bad. @1005
+M50. Perform the operation \\{delete_token_ref}(\\{top_mark}) only when
+ $\\{top_mark}\ne0$. @1012
+F51. Make \\{scan_toks} omit the initial |{| of an |\output| routine. @473
+I52. Insert a comma to make memory usage statistics look better. @639
+# About seven good hours of debugging today.
+# Tomorrow will be first-output day (I hope).
+* 14 Mar 1978
+# (Came in evening after sleeping most of day, to get computer at better time.)
+# (Some day we will have personal computers and will live more normally.)
+# 8:30pm, began to enter corrections to yesterday's problems.
+I53. Issue an error message for non-character in filename or in font name. @771
+I54. Display `|...|' for omitted stuff in \\{show_context} routine. @643
+L55. Watch out for the |SAIL| syntax `$\alpha+\beta\mathbin{\rm lsh}\gamma$';
+ it doesn't shift $\alpha+\beta$ left (only $\beta$). @464
+# That error was very hard to track down; it created a spurious link field
+ and sent $\\{hash}[0]=\null$|\beta| to the scanner!
+# I could have found this bug an hour sooner if I had looked at the correct
+ stack entries for \\{name} and \\{token_type}.
+D56. Show the correct page number when tracing pages before output is shipped. @638
+F57. Remember to nullify a box after using it. @1079
+I58. Issue an error message if\/ |\box255| isn't consumed by the output routine. @1015
+# I'm having trouble with the |BAIL| debugger;
+ it makes an illegal memory reference and dies,
+ when single-stepping past the entry to recursive procedures
+ \\{hlist_out} and \\{vlist_out}. So I have to reload and be careful
+ to go thru these procedures at high speed.
+P59. Fix bug in comment (memory parameter description said $\ge$ not $\le$). @11
+B60. Fix typo in definition of rule output (said $x,y$ not $\\{x0},\\{y0}$).
+ [This part of the code went away when |DVI| files were introduced.]
+B61. Correct the embarrassing bug in shellsort, where I said `$\le\\{str}[k]$'
+ not `$\le t$'.
+ [The first \TeX\ had to sort all output by vertical position on page.]
+M62. Make \\{start_input} set up \\{job_name} in the form needed by \\{shipout};
+ it uses obsolete conventions. @532,537
+L63. Insert |(| and |)| into the |SAIL| macro definition of \\{new_string}.
+ [This macro was for pre-|DVI| output.]
+M64. Unscramble the parameters of \\{out_rule}:
+ The declaration was $(\\{x0},\\{y0},\\{x1},\\{y1})$
+ while the call was $(\\{x0},\\{x1},\\{y0},\\{y1})$.
+# 4:30am, \TeX's first page is successfully output!
+# (It was `|\titlepage\setcpage1\corners\eject\end|'.)
+* 15 Mar 1978
+# 10:30pm. Today I'm instrumenting the line-breaking routine and putting it
+ through a bunch of tests.
+# (The inserted instrumentation had bugs that won't be mentioned here.)
+C65. Don't abort the job when \\{eq_destroy} redefines a
+ \TeX\ control sequence. @275
+# The first word of a paragraph won't be hyphenated \dots\ so be it!
+T66. Fix the typo in \\{line_break} that spoils the test for
+ `letters in the same font'. @896
+# The effect of that typo was to suppress all hyphenation attempts.
+B67\>25. Replace the space at paragraph end by fillglue, not by zero. @816
+L68. Pack the hyphen character properly into its node. @582
+T69. Fix a typo (`{\tentex\char'30}' for `|+|')
+ in the computation of \\{break_width}. @838
+M70. Change the |\end| maneuver; the present code doesn't end the job,
+ since I forgot that \\{back_input} uses \\{cur_tok}. @1054
+A71. Add a parameter to \\{try_break}, since the width is different at
+ a discretionary hyphen. [This problem will be solved differently in \TeX82,
+ when discretionaries become much more general.] @840
+F72. Bypass kern nodes in pre-hyphenation. @896
+F73. Supply code for the forgotten case `$<$ |"a"|' in pre-hyphenation.
+ [This case was later generalized to a test of \\{lc_code}.] @897
+B74. Change $\\{mem}[q]$ to $\\{prev_break}(q)$ in the
+ reverse-linking loop. @878
+# (Such blunders. Am I getting feeble-minded?)
+A75. Introduce special logic for \\{eject_penalty}; I was wrong
+ to think that forced ejection was exactly like an
+ infinitely negative penalty. @851
+A76. Use $(1+b)^2-p^2$ when computing demerits with $p<0$. @859
+# 6:30am. The line-breaking algorithm appears to be working fine
+ and efficiently.
+ On small measures (about 20 characters per line), it gives overfull boxes
+ instead of spaced out ones. Surprising but satisfactory.
+* 16 Mar 1978
+# 9pm. The plan for tonight is to test page breaking and more paragraphing.
+G77. Insert `|\topskip|' glue at beginning of page. @1001
+I78. Add `|\pausing|' feature. @363
+M79. Fix discrepancy: In \\{make_accent} I called \\{vpackage}
+ with a pointer to the first list item, but \\{vpackage} itself assumes
+ that the parameter is a pointer to that pointer. [The
+ \\{vpackage} of \TeX82 will be different.] @668
+# I checked for other lapses like that. Result: 14 calls OK, 12 NG.
+M80. Create a new temporary list head location, \\{hold_head}, since there's
+ a case where \\{vpackage} is improperly called with
+ parameter \\{temp_head}. [At this time \\{vpackage} uses \\{temp_head}
+ to make a list of all insertions found.] @1014
+# 11:30pm. The machine is tied up again.
+F81. Write code to handle charnodes in vlists; I forgot that I'd decided
+ to allow them. [Later I prohibited them again!] @669
+F82. Combine the page lists before pruning off glue
+ in \\{fire_up}; otherwise the pruning doesn't go far enough. @1017
+B83\>25. Fix typo where line-breaking starts: `\\{fill_glue}' should be
+ `\\{new_glue}(\\{fill_glue})'. @816
+I84. Add |/q| to |xspool| command (cosmetic change). [This changes a system
+ command that causes \TeX\ output to be printed on the Xerox Graphics
+ Printer (XGP), the progenitor of future laser printers;
+ the |/q| option says that the queue of printing requests should be
+ displayed on the user's terminal.] @642
+E85. Don't write a form feed after the last page of output. @642
+# To fix this, I reorganized \\{ship_out}, and it became simpler.
+T86. Correct a typo (`{\tentex\char'30}' for `|+|') in the \\{vlist_node} case
+ within \\{hlist_out}. [The output routines were quite different
+ at this time, because output went directly to the XGP.] @622
+I87. Change the message `|completed page|' to `|Completed for page|'. @638
+B88\>48. Fix yet another typo in the computation of \\{page_total}: My original
+ code said $\\{stretch}(p)$ instead of $\\{stretch}(q)$ (terrible). @1004
+P89. Document the dirty trick about \\{bot_mark}'s reference count.
+ [That trick is, fortunately, no longer useful.] @1016
+A90. Rethink the algorithm for contributing an insertion: The original code
+ tests for a page break after incrementing the totals but
+ before the \\{contrib_list} is updated. [\TeX78 handles insertions
+ in a hardwired manner that will be greatly generalized in \TeX82.]
+F91. Fix \\{get_node} again:
+ After the variable memory overflows, control falls through to \\{found}
+ instead of going to the \\{overflow} call. @125
+# I spent several hours tracking down that data structure bug!
+B92. Change \\{new_line} to \\{next_line} in yet another print command (see \#7).
+A93\>75. Amend the line-breaking algorithm:
+ |\break| in paragraph doesn't work with really bad breaks. @851
+# A problem to be diagnosed tomorrow: Each time I run the test program,
+ the amount of memory in use grows by 13 cells not returned.
+# Seven hours tonight.
+* 17 Mar 1978
+G94. Introduce \\{dead_cycles} to keep |\end| active until \\{ship_out}
+ occurs. @1054
+E95. Don't call \\{line_break} with an empty list. @1096
+S96. Take proper account of the (infinite) fillglue when computing
+ the width of a paragraph line preceding a display. @1146
+M97. Add a new parameter to \\{hpack} so that \\{line_break} won't be called
+ at the wrong time.
+ [This is for the soon-to-be-obsolete feature described in \#40.]
+L98. Give a warning message if there's an |\hfill| in the middle of a paragraph;
+ fillglue upsets the line breaker,
+ because floating-point calculations don't have sufficient accuracy. @868
+# I spent an hour looking for another bug in \TeX, but the following one was in \MF:
+ The \\{xgp_height} data in fonts had been supplied wrong.
+# It took two hours to recompile 32 fonts with proto-\MF.
+R99. Make \\{show_node_list} and \\{show_token_list}
+ more robust in the presence of software bugs. @182
+D100\>97. Do not remove nodes with \\{eject_penalty},
+ when the new parameter to \\{hpack} is \\{true}.
+E101\>97. Put a fast exit into \\{hpack}; e.g., at glue nodes, test `{\bf if}
+ \\{paragraphing} $\land$ $\langle$current width is large$\rangle$'.
+# 2am. I have to go to bed ``early'' tonight.
+* 18 Mar 1978
+# 3:30pm. (Saturday)
+I102. Add a parameter to \\{check_mem} (to suppress display unless needed). @167
+G103. Introduce a user-settable parameter |\maxdepth|, and
+ pass it as a parameter to \\{vpackage}. @668
+# I realized the need for |\maxdepth| while fixing insertions (see \#90).
+G104. Introduce a user-settable parameter for \\{line_break}: The constant
+ 2.0 in my original algorithm becomes |\jpar|
+ [later |\tolerance|], to be set like |\tracing|. @828
+D105. Reclaim the \\{eject_penalty} nodes removed during line-breaking. @879
+# (Those were the 13 extra nodes reported on Thursday.)
+# The \\{init_align} procedure worked right the first time!
+# Also \\{init_row}, \\{init_col}. But then\thinspace\dots
+S106. Rethink the command codes: \\{endv} in a token list has too high a
+ code for the assumptions of \\{get_next}. @207
+A107. Add a \\{prev_cmd} variable for processing delimited macro parameters;
+ the original algorithm loses track of braces.
+ [The rules will change slightly in \TeX82, and
+ \\{rbrace_ptr} will take on a similar function.] @400
+S108. Make the \\{get_next} routine intercept |&| and |\cr| tokens. @342
+# I'd thought I could just put |&| and |\cr| into
+ \\{big_switch} [i.e., in the stomach of \TeX, not the eyes];
+ that was a great big mistake.
+R109. Make more error checks on \\{endv}; e.g., it must not occur in
+ a macro definition or call. @780
+S110\>108. No, rethink alignments again; the new program still fails! @768
+# For the first time I can glimpse the
+ hairiness of alignment in general (e.g., `|\halign{\u#\v&...|'
+ when |\u| and |\v| are defined to include |&|'s and possible
+ alignments themselves).
+# I think there's a ``simple'' solution, by considering only whether
+ an alignment is currently active [in \S342].
+# 11:30pm. Went to bed.
+* 19 Mar 1978
+# Woke up with ``better'' idea on how to handle |&| and |\cr|.
+# (Namely, to consider a special kind of\/ |\def| whose parameters don't interrupt
+ on |&|'s and |\cr|'s.)
+# But replaced this by a much better idea (to introduce \\{align_state}).
+# 11pm. Began to use computer. Performed major surgery
+ (inserting \\{align_state} and updating the associated routines
+ and documentation).
+D111. Pop the alignment stacks in \\{fin_align}. @800
+T112\>110. Fix a (newly inserted) typo in \\{show_context}. @314
+D113\>110. Set \\{align_state} false when a live |&| or |\cr| is found.
+ [Originally \\{align_state} was of type \\{boolean}.] @789
+I114. Insert |\cr| when `|}|' occurs prematurely in an alignment. @1132
+M115. Remember to record \\{glue_stretch} when packaging an unset node. @796
+# I had a mistake in |acphdr| definition of\/ |\quoteformat|; also extra spaces.
+# My first test programs, used before today, were contrived to test macro
+ expansion, line-breaking, and page layout.
+# Next I'm using a test program based on Volume 2.
+C116. Make carriage-return, space, and tab equivalent for macro matching. @348
+F117. Omit the reference count node when displaying a mark. @176
+B118. Correct a silly slip: I wrote `\\{type_displacement}' instead of
+ `\\{value_displacement}' when packing data in a penalty node. @158
+M119. Don't go to \\{build_page} after seeing |\noindent|; \TeX\ isn't
+ ready for that.
+ [In the original program, this was an instance of a bad {\bf goto}.] @1091
+# I had undesired spaces coming thru the scanner in my macro definitions
+ of\/ |\tenpoint| [see {\sl The \TeX book}, page 414].
+# 4am. \TeX\ now knows enough to typeset page 1 of Volume 2!
+# Also it did its first ``math formula'' (namely `|$X$|') without crucial error.
+# (Except that the italic correction was missing for some reason.)
+D120. Remember to decrement \\{cur_level} in \\{fin_align}. [The routines will
+ eventually become more general and use \\{unsave} here.] @800
+D121. Remember to increment \\{cur_level} in error corrections by
+ \\{handle_right_brace}. [A better procedure will be adopted later.] @1069
+T122. Fix a typo: (`|{|' instead of `|}|') in error message for $\\{mmode}+
+ \\{math_shift}$. @1065
+R123\>99. Make \\{show_noad_list} more robust and more like the new
+ \\{show_node_list}. [The routines will be combined in \TeX82.] @690
+L124. Fix a typo in \\{char_box}: should say \\{font_info_real}.
+ [In \TeX78 a single array
+ is used for both \\{real} and \\{integer}; in \TeX82 things will be
+ \\{scaled}.] @554
+B125. Fix typos in the definitions of \\{default_rule_thickness} and
+ \\{big_op_spacing}; they shouldn't start at \\{mathex}(7). @701
+B126. Reverse the \\{before} and \\{after} conventions in math nodes. @1196
+# I had them backwards; this turned
+ hyphenation on just before math, and off just after it!
+# Seven and a half hours debugging today.
+ Got through the test program a little more.
+ But \TeX\ blew up on `|$Y+1$|'; tomorrow I hope to find out why.
+* 20 Mar 1978
+# 8pm. I decided to work next on a super-hairy formula.
+C127. Change `|\ascii|' to `|\cc|' (character code). [This name will change again
+ later, to `|\char|'.] @265
+E128. Don't bother to store a penalty node at the beginning of |$$| when
+ the paragraph-so-far fits on a single line, since such a penalty
+ has already been stored. [These conventions will change later, and
+ the |\predisplaypenalty| will always be stored.] @1203
+S129. Avoid reference to \\{tail} in \\{build_page},
+ if $\\{nest_ptr}>0$. @995
+B130. Correct a silly
+ slip in \\{math_comp} (the exact opposite of what I did in \#118). @1158
+B131. Rectify my mental lapse in \\{make_fraction}; I said \\{nucleus} instead of
+ \\{thickness}. @743
+F132. Mask off the math class when scanning delimiters. @1160
+C133. Allow an optional space after |\def{...}|. [This decision
+ will be retracted later.] @473
+# My test example is so complicated it causes the semantic stacks to overflow!
+L134. Don't test for no pages output by looking at the channel status. @642
+T135. Fix typo in definition of\/ |\mathop| (\\{open_noad} not \\{op_noad}). @1156
+A136. Rewrite \\{fin_mlist}, because `|\left(...\above...\right)|' doesn't
+ parse correctly; the |\left| goes into the numerator,
+ the |\right| into the denominator. @1184
+B137. Correct the use of \\{depth_threshold} in \\{print_subsidiary_data}:
+ Simple fields get shown while others look empty. @692
+I138\>78. Return the carriage before showing the first line of a new file
+ when pausing. @538
+M139. Fix bug: The call \\{show_noad_list}(\\{mem}[|..|]) should be
+ \\{show_noad_list}(|..|), in the \\{incompleat_noad} case
+ of \\{show_activities}. @219
+# 3am. The whole messy formula has been parsed correctly into a tree.
+# The easy part is done, now comes the harder part.
+F140. Don't shift single characters down in \\{make_op}. @749
+D141. Make \\{clean_box} return a box (as its name implies), not an hlist. @720
+# Font info still isn't quite right, it has the wrong value of \\{quad}.
+A142. Retain the italic correction when doing \\{rebox};
+ can make $\\{glue_set}\ne0$ a flag for this. [A better
+ solution will be adopted later.] @715
+B143. Fix the bug that makes \\{rebox} bomb out: $\\{value}(p)$ should be
+ $\\{value}(\\{mem}[p])$. @715
+# 6am; ten hours today. \TeX\ didn't do |$\pi\over2$| correctly, but was close.
+# I found that the \\{rebox} problem (\#142) went away when I fixed the
+ \\{clean_box} problem (\#141); but I
+ will leave the extra stuff about $\\{glue_set} \ne 0$
+ in the program anyway, just for weird cases.
+E144. Omit extra levels of boxing when possible in \\{clean_box}. @721
+# (To do this, I need to face the \\{rebox} problem anyway.)
+* 21 Mar 1978
+# 10pm. The computer is rather heavily loaded tonight.
+F145. Don't forget \\{thickness} when making a square-root sign (see \#131).
+ [The rule thickness will later be derived from the character height.] @737
+L146. Define $p$ local to the \\{make_fraction} routine. @743
+# Unwittingly using the global $p$ was a disaster.
+I147. Don't show the amount of \\{glue_set} when it's zero. @186
+D148\>142. Make \\{glue_set} nonzero in the result of \\{var_delimiter}. @706
+F149. Fix bug: The \\{math_glue} function didn't return any result. @716
+T150. Fix typo in \\{char_box} ($c$ not $w$); this caused a subscripted~$P$ to come
+ out the same width as an unsubscripted~$P$. [Later changes in the rules
+ will move this computation to \S755.] @709
+P151\>144. Revise \\{clean_box} to do operations that are needed
+ often because of the \\{rebox} change. @720
+D152. Use the new \\{clean_box} to avoid a bug in |\sqrt{\raise...}|. @737
+Q153. Change the definition of\/ |\not| so that it's a relation
+ (which will butt against the following relation). [All math
+ symbols and Greek letters are defined in |INITEX| at this
+ time, not in a changeable format definition.]
+I154. Give error message `{\tt Large delimiter must be
+ in mathex font}', instead of calling \\{confusion},
+ since the error can occur.
+ [This particular error is impossible in \TeX82.] @706
+F155. Change the use of $p$ in \\{var_delimiter}; it isn't always set when I say
+ {\bf goto} \\{found}. @706
+# Another font problem now surfaced: The mathex meta-font didn't compute \TeX\ info
+ in a machine-independent way.
+ (It took two hours to correct this.)
+D156. Don't forget to set $\\{type}(b)$ in all relevant cases of
+ \\{var_delimiter}. @708
+B157. Use the correct sign convention for \\{shift_amount} in \\{hpackage}. @653
+F158. Always kern by \\{delta} when there's no superscript. @755
+M159. Declare \\{space_table} to be $[0\,.\,.\,6,0\,.\,.\,6]$
+ not $[0\,.\,.\,7,0\,.\,.\,7]$; otherwise its entries are
+ pre\-loaded into the wrong positions. [The \\{space_table} in \TeX78 is
+ $7\times7$; it will become $8\times8$ in \TeX82,
+ represented as a string called \\{math_spacing}.] @764
+C160. Use a negative value, not zero, to represent a null delimiter.
+ [Actually zero will come back again later.] @685
+C161\>127. Change |\cc| to |\char|. @265
+L162. Don't use tricky subtraction on packed data when changing $q$ to
+ an \\{ord_noad} in \\{mlist_to_hlist}; subtraction isn't always safe. @729
+B163. Fix two typos in the \\{space_table} (|*| for |0|). @764
+F164. Initialize \\{cur_size} everywhere (I forgot it in two places). @703
+A165. Reset \\{op_noad} before resetting \\{bin_noad}. @728
+F166. Treat $\\{display_style}+\\{cramped}$ the same as \\{display_style}
+ inside \\{make_op}. @749
+B167. Shift the character correctly in the non-|\displaystyle| case of
+ \\{make_op}. @749
+# Still another font problem: The italic corrections are wrong because
+ the corresponding array was declared \\{real} in proto-\MF\ (and
+ italic corrections were used in nonstandard way in |mathex|).
+B168. Use \\{depth} instead of \\{height} in \\{var_delimiter}.
+ [Later, both were used.] @714
+Q169. Skew the accents according to the font \\{slant}. [Soon retracted.] @741
+# At this point I think nearly all the math routines have been exercised.
+# Tomorrow they should work!
+# Eight hours debugging today.
+* 22 Mar 1978
+# (Wednesday, but actually Thursday:
+ I began at midnight because I was proofreading a paper.)
+# I checked out the font access tables, slowly (i.e., all the |\mathcode|
+ and special-character name entries were catalogued).
+Q170\>169. Do {\bf not\/} consider slants after all in the math accent
+ routine, since slanted math letters are put differently into fonts. @741
+B171. Don't use $q$ for two different things simultaneously
+ in \\{make_math_accent}. @738
+F172. Fix bug in \\{compact_list} (I forgot to advance the loop variable).
+ [This procedure became unnecessary in \TeX82.]
+M173. Avoid conflict between \\{var_delimiter} and \\{mlist_to_hlist}, which
+ want to use \\{temp_head} simultaneously. @713
+T174. Fix bad typo in \\{overbar} routine ($b$ for $p$). @705
+# Finally \TeX\ got to \\{after_math} after dealing with that
+ hairy formula\thinspace\dots
+T175. Fix another bad typo: $p$ for $b$ this time. @1199
+L176. Insert more parentheses (twice) because of `|lsh|' precedence
+ in |SAIL|. @1199
+M177\>36. Use the new hanging-indentation conventions when formatting displayed
+ equations. @1199
+Q178. Recompute penalties so that break is allowed after \\{punct_noad}s. @761
+F179. Center the large delimiters vertically. @749
+Q180. Round all rule sizes (up) before drawing them. @589
+Q181. Provide more space over $x$ in $\sqrt x$, and more space atop vincula.
+ @705,737
+Q182. Make large delimiters large enough to cover formula height
+ (important for subscripts, superscripts). @762
+I183. Insert |/ntn=33| on XGP prompt message so that complex math
+ won't blow the device driver. [See \#84.]
+P184\>161. Update the comment about the meaning of\/ |\char|, since it
+ can be used in math mode. @208
+# Six hours today.
+* 23 Mar 1978
+# 11pm, Maundy Thursday.
+C185\>104. Make |\tracing| and |\jpar| follow block structure. @283
+# It took me two hours to enter yesterday's corrections,
+ because the changes were so numerous.
+M186. Fix bad call on \\{begin_token_list} when marks are to be scanned. @396
+# Now the formula looks like it should, modulo problems in fonts.
+Q187. Prevent an exponent from going below baseline + xheight/4. @758
+B188. Change \\{quad} to \\{math_quad} when finishing a display
+ (several places). @1199
+A189. Don't use \\{append_to_vlist} when putting an |\eqno| box on a separate
+ line, because the page shouldn't break at glue there.
+ [Later, the \\{append} will be used but preceded by an
+ infinite penalty.] @1205
+S190. Increase the input \\{stack_size}; \TeX\ may need to back up a lot. @11
+A191. Don't assume that $p$ always points to a glue node when
+ a page is broken. @1017
+A192. Use \\{epsilon} in \\{scan_spec} (I had used a different
+ small constant). [This was a kludge to avoid the extra
+ parameter later called \\{exactly} or \\{additional}.] @645
+R193. Introduce a new procedure \\{scan_positive_length}, to prevent
+ negative or zero lengths in \\{scan_rule_spec}.
+ [This restrictive rule will be ``overruled'' later.] @463
+B194. Fix ridiculous bug in the leaders routine of \\{vlist_out}:
+ I had the initialization {\sl inside\/} the loop! @635
+L195. Eliminate confusion between the two temp variables named $h$;
+ one is \\{real} and the other is \\{integer}. @629
+F196. Include forgotten case (\\{leader_node}) in \\{hlist_out}.
+ [Type \\{leader_node} will be absorbed
+ into \\{glue_node} in \TeX82.] @622
+F197. Don't forget to compute \\{x0} in variable horizontal rules. @624
+# Seven and a half hours today.
+# \TeX\ seems to be ready to tackle my test file based on Volume 2.
+S198. Calculate \\{y00} in horizontal rules as an integer number of pixels
+ from the baseline, so that the baseline doesn't jump. @589
+* 25 Mar 1978
+# 2am Saturday. (Might as well drop Friday.)
+D199\>185. Make \\{def_code} consistent with the new |\tracing| conventions.
+ [Many tracing options are packed into a single
+ parameter called |\tracing|.] @1233
+R200\>185. Don't allow users to change nonexistent things like |\catcode1000|. @1232
+F201\>110. Reset \\{align_state} at beginning of \\{init_align}. @774
+F202. Don't forget \\{scan_left_brace} after |\noalign|. @785
+F203\>110. Set $\\{cur_cs}\gets 0$ in \\{get_next}, after |\cr|
+ causes a switch to the $\langle v_j\rangle$ template. @342
+# Ouch, that was a big bad bug, which took me three hours to find
+ (since I thought \TeX's low-level scanning mechanism was working).
+# Note to myself: I\/ {\bf knew\/} it would be cleaner to define \\{get_next}
+ so that it sets \\{cur_cs} to zero every time it begins [i.e.,
+ in \S341, where this change will in fact be made in \TeX82].
+ But I had avoided this on grounds of efficiency in the inner loop.
+ Well, now I have earned this tiny bit of efficiency.
+D204. Prohibit the first word of an unavailable node from becoming negative.
+ [The storage allocator of \TeX78 uses
+ a negative value to signify a node that is available, just as
+ `$\\{link}=\\{max_halfword}$' will signal availability in \TeX82.] @124
+# That was another bad one, it's not my night.
+# At least I'm developing more subtle diagnostic techniques.
+M205. Remember to un-negate the top \\{save_stack} entry
+ when \\{handle_right_brace} finishes an \\{insert_group}.
+ [This routine was completely revised in \TeX82.] @1100
+F206\>185. Initialize |\jpar| [i.e., |\tolerance|]. @240
+B207. Correct the display of insertion nodes by \\{show_node_list}. @188
+R208. Prevent \\{show_token_list} from generating really long strings
+ when in a loop. @292
+D209. Increase the reference count of \\{bot_mark} when
+ \\{vpackage} finds it. [This was later the job of \\{fire_up}.] @1016
+M210. Remember that the tokenlist for a mark ends with a |}|. @1101
+D211. Don't let \\{vpackage} lose the top insert. (It fails when
+ the very first item is a |\topinsert|.) @1014
+A212. And when that stupid code is corrected, make it handle
+ insertions first-in-first-out. @1018
+# Seven hours today.
+* 26 Mar 1978
+# Easter Sunday, will work till sunrise.
+I213. Add an `|i|' feature to the \\{error} recovery routine. @87
+I214. Include a prompt. @87
+C215. Ignore space after |\noalign{...}|. @1133
+# Otherwise, things are going well tonight;
+ I'm finding more bugs in my test program than in \TeX.
+# The `|i|' feature is proving to be very helpful.
+# I increased the size of \\{mem}
+ (now $\\{lo_mem_max}=3500$, $\\{mem_max}=10000$).
+# In fact I just needed to increase it again
+ (now $\\{lo_mem_max}=4500$, $\\{mem_max}=11000$).
+R216. Make |INITEX| output \\{mem_top} for consistency checking. @1307
+A217. Calculate the size of delimiters by considering the enclosed formula's
+ distance from the axis, not from the baseline. @762
+# I'm having trouble with a |SAIL| compiler bug; I must rearrange the program,
+ more or less at random, until it
+ compiles correctly. I hope the bug isn't more severe than it appears.
+D218\>210. Don't put a new group on \\{save_stack} if a null mark is expanded.
+ [\TeX82 will remove the `|}|' from the mark text.] @386
+# I had to redo the typewriter-style font since its width tables were wrong.
+# And I increased low-memory size again to 5500, then 6500.
+# Finally the entire test program was \TeX ed. Happy Easter! Six hours today.
+* 27 Mar 1978
+# Beginning at 2:30am.
+A219. Move |\vcenter| processing to the first pass of \\{mlist_to_hlist};
+ otherwise the height, depth, subscripts, etc., are way off. @733
+C220. Omit space after closing |$$|. @1200
+# Spacing is wrong in the formula $Y_1+\cdots+Y_k$; I have to rethink the use
+ of three dots.
+G221. Make conditional thin space available to user as |\|{\tentex\char'34}.
+ [Later will retract this.] @226
+Q222. Introduce |\dispaskip| and |\dispbskip| [later called
+ |\abovedisplayshortskip| and |\belowdisplayshortskip|]. @226
+# Reminder: I need to test line-breaking with embedded math formulas.
+I223. Make sure that $\\{interaction}\ne\\{error_stop_mode}$
+ in the `|Whoa|' error [\\{fatal_error}]. @93
+B224. Fix a big mistake in the \\{style_node} routine (which points to a glue spec,
+ not to glue itself); somehow this didn't cause trouble yesterday.
+ [In \TeX78, style nodes double as placeholders for math glue
+ like thin spaces.] @732
+C225. Make |\fntfam| obey group structure. [\TeX78's |\fntfam| operation
+ is a combination of \TeX82's
+ |\textfont|, |\scriptfont|, and |\scriptscriptfont|.] @1234
+# At this point the test routine for Volume 2 works perfectly.
+# But I will change the page width in order to check harder cases.
+Q226\>178. Disable automatic line breaks after punctuation in math
+ (e.g., consider $f(x,y)$). @761
+S227. Represent italic corrections as boxes, not glue, so that they won't be broken.
+ [The |\kern| command doesn't exist yet.] @1113
+# Eight hours today.
+B228. Fix a bug that just clobbered the memory: Call \\{free_avail}, not
+ \\{free_node}, in the \\{ins_node} case of \\{vpackage}.
+ [This logic will change completely in \TeX82.] @1019
+* 29 Mar 1978
+# (Wednesday) Again beginning at 2:30am.
+Q229. Put still more space above and below fraction lines in displayed
+ formulas. @746
+G230\>189. Install an infinite penalty feature, which positively suppresses breaks;
+ use it in displayed formulas whose |\eqno| doesn't fit. @1205
+F231. Call \\{build_page} after finishing a display; and don't
+ go to the |\noindent| routine because of the next remark. @1200
+S232. Put |\parskip| glue just before a paragraph, not just after
+ (since it interferes with a penalty after). @1091
+# Although the test program gives correct output, it generates 46 locations
+ of variable-size memory and 280 of one-word memory that are not freed.
+F233. Recycle the ulists and vlists in \\{fin_align}. @801
+M234\>25. Fix bug when deleting space at end of paragraph:
+ \\{delete_glue_ref}(\\{cur_node}) not
+ \\{delete_glue_ref}(\\{value}(\\{cur_node})). @816
+# There's also a more mysterious type of uncollected garbage,
+ a \\{fraction_noad} corresponding to
+ |$p\choose$|, an \\{incompleat_noad} not completed.
+# Couldn't find that one, so I recompiled with \#233 and \#234 corrected.
+# Now it gains just 10 locations of variable-size memory and 7 of the other kind.
+I235. Extend \\{search_mem} to search \\{eqtb} also. @255
+D236\>143. Fix bug in \\{rebox} when $\\{list_ptr}(b)=0$. @715
+# The seven one-word nodes were generated by this bug;
+ \\{rebox}\kern-1pt\ put them onto a linked list starting with
+ $\\{mem}[0]$, growing at the far end!
+D237. Remember to complete each \\{incompleat_noad}. @1184
+# This solved the other mystery. I had never noticed that my test output
+ was actually wrong: |$p\choose k$| came out as `$k$'.
+# After these corrections, the test routine worked\thinspace\dots\ I feel
+ that \TeX\ is now pretty well debugged
+ (except perhaps for error recovery)---it's time to celebrate!
+* 1 Apr 1978
+I238. Don't quit after file lookup fails. @530
+* 2 Apr 1978
+P239. Add \\{\TeX_font_area}, so that it's easier to change the
+ default library area associated with a device. @514
+* 3 Apr 1978
+L240. Insert parentheses again, to cope with the precedence of\/ |lsh|
+ when packing data. (See \#55 and \#176.) @1114
+# I had never tried $\\{hmode}+\\{discretionary}$ before!
+M241. Remember that \\{back_error} requires \\{cur_tok} to be set.
+ (Problem can arise during error recovery on parameter |#|$n$
+ with $n$ out of range.) @476
+* 4 Apr 1978
+I242. Add a deletion feature to the \\{error} routine. @88
+* 5 Apr 1978
+Q243. Reset \\{space_factor} after |\/| [this was later rescinded]
+ and after math in text. @1196
+* 10 Apr 1978
+G244\>104. Replace |\jpar| and |\tracing| by a new primitive |\chpar| for parameters.
+ It allows a user to change those quantities as well as the penalties for
+ hyphens, relations, binary ops, widows. @209
+* 14 May 1978
+# Beginning to typeset a real book (Volume 2, second edition), not just a test.
+Q245. Make math in text end with spacing as if it were
+ followed by punctuation. [This rule will soon be rescinded.] @760
+F246. Insert |\times| into the hash table; I left it out by mistake.
+ [It will eventually move into |plain.tex|.]
+C247. Change the names of Scandinavian accents from |\o|, |\oslash|,
+ |\Oslash| to |\a|, |\o|, |\O|. [This will also move to |plain|.]
+* 17 May 1978
+B248. Fix a silly bug that hasn't been tweaked until today:
+ `|\halign to size|' [obsolete in \TeX82] used \\{vsize}
+ instead of \\{hsize}. @645
+* 19 May 1978
+G249. Add a |\topbaseline| feature [later called |\topskip|]. @1001
+Q250\>245. Subtract the math spacing change of May 14. @760
+A251. Skip past blanks in the \\{scan_math} procedure. [This blank-skipping
+ will eventually go into \\{scan_left_brace}.] @403
+I252. Introduce a \\{missing_brace} routine [later generalized] to improve
+ error recovery in $\\{mmode}+\\{math_shift}$, when the top
+ of \\{save_stack} isn't a \\{math_shift_group}. @1065
+Q253. Adjust the math spacing between closing parentheses and
+ Ord, Op, Open, Punct. @764
+Q254. Make the underline go further under. @735
+S255\>96. Compute the proper natural width when a displayed equation follows
+ a paragraph whose fillglue has been deleted by \\{line_break}. @1146
+* 20 May 1978
+A256. Fix the spurious value of \\{prev_depth} inside alignments. @775
+S257. Consider (and defeat) the following scenario:
+ The u and v lists are built in \\{init_align} using \\{temp_head};
+ then while scanning `|\tabskip 2pt\rt{...}|' the macro |\rt| is expanded,
+ clobbering \\{temp_head}. @779
+# That bug was more subtle than usual.
+Q258. Add the parameter \\{num3}, so that the positioning of\/ |\atop|
+ can be different from that for fractions. @700
+Q259. Add new parameters \\{delim1} and \\{delim2}, so that
+ |\comb| can use fixed size delimiters, not computed as with |\left|. @748
+* 22 May 1978
+C260\>221. Change |\|{\tentex\char'34} to |\|{\tentex\char'35} and introduce
+ |\|{\tentex\char'34} as the negative of\/ |\|{\tentex\char'35}.
+ [Later obsolete.] @226
+L261. Fix the display of negative penalty nodes; \\{show_node_list} is confused
+ when a negative value has been packed into the middle of a word. @194
+# Memory overflow just occurred with $\\{lo_mem_max}=7500$ and $\\{mem_max}=16384$.
+ So I have to go to 15-bit pointers. (A problem on 32-bit machines?)
+* 23 May 1978
+Q262. Add a new parameter \\{big_op_spacing5}, for
+ extra space above and below limits of big displayed operators. @751
+F263. Initialize \\{incompleat_noad} in |$$\halign{...}$$|. @775
+# That was another heretofore-untested operation. How much of the code
+ has not yet been exercised?
+F264\>238. Close the file when doing lookup-failure recovery. @27
+I265. Improve the error recovery for `|Extra &|'. @792
+R266. The top piece must be calculated mod 128 in \\{var_delimiter},
+ to guarantee a valid subscript range. [Obsolete in \TeX82.] @546
+B267\>252. Fix a blunder in new \\{missing_brace} code. @1065
+B268\>262. Fix a blunder in new code for limits on display operators. @751
+* 26 May 1978
+Q269. Don't insert a new penalty after an explicit penalty in math mode. @767
+# The hash table overflowed; I ought to make it much bigger.
+R270\>110. Avoid possible bad memory references in alignment
+ when there is erroneous input after |\cr|. [Instead of
+ \\{extra_info}, the value of \\{cur_align} in \TeX78 is negated,
+ because we need only distinguish |\cr| from |&|.] @789
+S271. Make the dimension parameters like |\hsize| all global, so that they can
+ be set in the |\output| routine. @279
+# This led to major simplifications, also to major surgery.
+# [But it was a kludgy decision, overruled in \TeX82.]
+D272\>94. Don't forget to set the type of the new null box in the |\end| routine. @1054
+* 27 May 1978
+# The data overflowed memory again, both low and high, doing Section 3.3.2.
+R273\>184. Mask off extra bits of\/ |\char| in math mode,
+ to avoid bad memory references. @1151
+B274. Zero out the negative |\medmuskip| in script styles. @732
+* 29 May 1978
+S275. Be prepared to handle an undefined control sequence during \\{get_x_token}.
+ (Can fix this by brute force, using \\{get_token} instead of \\{get_next}.)
+ @380
+D276. Correct the superscript shift when a single character is raised. @758
+R277\>184. Mask off all but 7 bits in |\char| routine,
+ to avoid space-factor index out of range. @435
+# More memory capacity overflows.
+E278\>22. Fix \TeX's overflow stop so that I don't have to wait for loading of the
+ |BAIL| debug routines. [System dependent.] @93
+F279. Remember to adjust the page number
+ when a file page ends in mid-macro. [System dependent.] @306
+* 5 Jun 1978
+R280. Make sure that the arguments of positioning commands don't overflow
+ their field size. @610
+I281. Report the excess amount when giving an overfull box warning. @666,677
+* 7 Jun 1978
+Q282. Use $\ge$ instead of $>$ as termination criterion in \\{var_delimiter}. @714
+R283. Disallow |\eject| in math mode. [In \TeX78, |\eject| is
+ distinct from |\break|; in horizontal mode it includes
+ \TeX82's `|\vadjust{\break}|'.] @1102
+Q284. Don't put too much clearance above |\sqrt| in text style. @737
+* 9 Jun 1978
+G285\>110. Make \\{align_state} an integer variable, not \\{boolean},
+ so that |\eqalign| can be within another |\eqalign|. @309
+C286. A |\mark| should expand its input. @1101
+* 10 Jun 1978
+E287. Provide for preloading of fonts. @1320
+L288. Close the output file before switching to edit the input file with
+ the `|e|' option. @84
+E289. Return adjustments found by \\{hpack} to free storage if
+ they're not used. [Later, \\{hpack} will detach them only
+ when they're used.] @655
+Q290. Strive for consistency between \\{make_under} and \\{make_over}.
+ @735
+* 18 Jun 1978
+B291\>236. Fix a serious error in \\{rebox}
+ (`$b$' instead of `$\\{list_ptr}(b)$'). @715
+# Strange that such a bug would now surface for the first time!
+C292. Remove |\deg| from |INITEX|, since macros suffice.
+Q293. Add an extra hyphenation penalty for two hyphenated lines in a row. @859
+* 19 Jun 1978
+S294. Introduce the `\\{no_new_control_sequence}' switch. Among other things,
+ this will prevent an undefined control sequence following \\{scan_math}
+ from clobbering the save stack. @259
+* 20 Jun 1978
+L295. Change the badness test
+ `$\\{glue}\le0.0$' to `$\\{glue}\le0.0001$'. [\TeX82 will avoid such
+ problems by calculating badness without floating point arithmetic.] @99
+R296. Force \\{badness} to be at most $10^{19}$. @108
+I297. Add \\{end_template} for better error recovery in alignments. @375
+E298\>287. Make |INITEX| more like the real \TeX; my simple scheme for
+ font preloading was no good because it left thousands of `dead'
+ words in memory. @8
+E299. Economize disk space by using internal arrays in load
+ modules that aren't being reinitialized. [System dependent.]
+E300. Move the declaration of \\{mem} to the semantics module, so that the
+ object code will be more efficient. [System dependent. The code of
+ \TeX78 was divided into separately compiled modules for syntax,
+ semantics, output, extensions, and general organization.]
+* 21 Jun 1978
+# Today I'm working on the user manual.
+C301. Disallow |\input| except in vertical mode. [I will change this in
+ \TeX82, treating |\input| as a case of expansion.] @378
+I302. Add error recovery for \\{endv} and \\{par_end} occurring in math mode.
+ @1047
+G303. Generalize |\ifT| to |\if T|. @506
+* 22 Jun 1978
+F304. Preload the |\bullet| [later done by |plain.tex|].
+D305\>256. Get the correct \\{prev_depth} at the beginning of an alignment. @775
+C306. Change |\eject| so that it ejects only once. @1000
+* 14 Jul 1978
+I307. Look in standard area if a file isn't found in the user's area. @537
+I308. Echo all online inputs in the transcript file. @71
+* 19 Jul 1978
+Q309. Equalize spacing when only one of numerator/denominator is big. @745
+Q310. Prevent subscript from getting too high above baseline. @757
+R311. Avoid infinite loop when stack overflows: \\{push_input} should say
+ `{\bf if} $\\{input_ptr}\ge\\{stack_size}\;\land\;\\{interaction}=
+ \\{error_stop_mode}$'. @321
+* 22 Jul 1978
+C312. Make |\quad| meaningful outside math mode. (All fonts must
+ be generated again!) @558
+I313. Show the nesting level at the end of \\{show_activities}.
+ [But I decided not to do this in \TeX82.] @218
+C314. Put in |\>| [namely, |\mskip\medmuskip|;
+ \TeX78 already has |\|{\tentex\char'35}, for conditional |\thinmuskip|,
+ as well as the negative amounts |\<|,~|\|{\tentex\char'34}].
+ Change the name of vector accent from |\>| to |\b|. [Math spacing
+ operators will become much more general in \TeX82.] @716
+* 25 Jul 1978
+Q315\>94. Give the correct |\hsize| and |\vsize| to the null boxes created
+ at |\end|. @1054
+A316\>94. And don't ``append'' them. [Later this was changed, so
+ that it would work better with generalized output routines.] @1054
+I317\>297. Remove the control sequence |\endv|,
+ since error recovery is now better. @375
+I318. Define another mode of tracing: It says `|OK|' and stops after
+ |\showlists|. @1298
+Q319\>244. Give better defaults to parameters. [Later done by |plain.tex|.] @209
+I320. Allow more bits in the packed representation of\/ |\showboxdepth|. @238
+I321. Scan past delimiters and/or dimensions when recovering from
+ ambiguous fractions. @1183
+R322. Reduce accent numbers modulo 128 or 512, depending on the
+ mode. @1165
+I323. Include a warning, `|(\end occurred on level ...)|'. @1335
+* 28 Jul 1978
+# (I'm writing Chapter 27 of the manual: `Recovery From Errors'.)
+I324. Improve the error message in \\{scan_digit}. [This procedure will change
+ its name to \\{scan_eight_bit_int}, when the number of registers
+ increases from 10 to~256.] @433
+I325. Don't report overfull boxes if they're less than .1~point
+ over. @666,677
+I326. Give the user extra chances to define the font, if \\{read_font_info}
+ is unsuccessful. @560
+I327. Change default recovery for bad parameter number from |#1| to |##|, since
+ |#1| won't always work and since |##| is probably intended. @479
+I328. Omit the |"Negative?"| message on things like \\{scan_char_num}. @435
+I329. Improve error recovery when a large delimiter isn't in family~3.
+ [Obsolete.]
+I330. Give a more appropriate error message when the input is `|$\right|'. @1192
+# Currently \TeX\ says `|Missing $|'!
+I331. Call \\{back_input} before the error message in \\{back_error},
+ not afterwards. @327
+* 1 Aug 1978
+I332. Give an appropriate warning when there's no input file and the user
+ types `|e|'. @84
+L333. Increase the system pushdownlist size so that the manual will compile.
+ [Procedures \\{hlist_out} and \\{vlist_out} can recurse deeply.]
+# Yesterday I distributed 45 preliminary copies of the manual; today I
+ took out the ``debugging hooks'' and put \TeX\ up as a system program.
+* 2 Aug 1978
+# I'm typing Volume 2 again (currently in Section 4.2.2). Culture shock!
+G334. Introduce a |\ragged| parameter, to indicate a degree of raggedness.
+ [Previously, ragged-right setting was performed when the
+ |\tolerance|/100 was odd! Eventually a better approach,
+ with |\rightskip| and such things, will be discovered.] @886
+Q335. Omit the `widow penalty' in one-line paragraphs. @890
+* 5 Aug 1978
+G336. Generalize |\pageno| to |\count|\<digit>. @236
+D337\>285. Update \\{align_state} when recovering from `|Missing {|' and
+ `|Extra }|' errors. @1069,1127
+I338. Show ``runaway'' tokens, making it easier to pinpoint an error. @306
+* 22 Aug 1978
+G339. Add |\predisplaypenalty|. @1203
+I340. Clarify error messages; they should indicate when something has been
+ inserted, etc. @1064
+* 23 Aug 1978
+I341\>114. Substitute `|Extra }|' for the losing `|Missing \cr|' error message. @1069
+I342\>213. Go past online insertions in \\{show_context}. @311
+Q343. Exact no penalty for breaking one line before a display. @1145
+I344\>338. Check for runaways at end of file. @362
+I345. Give error message when a macro argument begins with |}|. @395
+* 24 Aug 1978
+L346\>213. Remove extra line-feed in \\{show_context} after printing insertions.
+ [System dependent.] @318
+* 25 Aug 1978
+Q347. Leave no glue at top of page, even after |\eject|. @997
+* 27 Aug 1978
+P348. Adopt Guy Steele's new version of the \TeX\ source files. [He has
+ recently made a copy and modified it by introducing
+ compile-time switches for MIT conventions as an alternative to SUAI.
+ This is the first time that \TeX\ is being ported to another site;
+ additional switches for PARC, TENEX, TOPS10, and TOPS20 will be
+ added later, using the Steele style.]
+* 1 Sep 1978
+Q349. Don't pass over leader nodes in the \\{try_break} background
+ computation. [At this time, leaders have not yet been
+ unified with glue.] @837
+Q350\>82. Prune away all penalties at the top of a page. @997
+* 4 Sep 1978
+I351\>338. Include `|\|' in error message about a runaway argument. @306
+* 8 Sep 1978
+# I just remade all the fonts, with increased ligature field size.
+B352\>350. Insert a necessary {\bf goto} statement in the first branch of
+ the new penalty routine within \\{build_page}. @997
+* 30 Sep 1978
+M353\>338. Make the token list for runaway arguments meaningful outside
+ of \\{macro_call}. (I just had a runaway argument ending with
+ `|\lcm|', which turned out to be the
+ control sequence in hashtable location 0.) @371
+R354. Avoid infinite loop when recovering from |$$| in
+ restricted horizontal mode. @1138
+L355. Fix two hyphenation bugs related to |-ages|, |-ers|.
+ [A completely new algorithm for hyphenation will go into \TeX82.]
+Q356. Add |-est| to hyphenation routine;
+ also disable |puz-zled| and |rat-tled|, etc.
+* 4 Oct 1978
+G357. Add new primitive |\vtop|. @1087
+Q358. Treat implicit kerns properly after discretionary hyphens have been
+ inserted. @914
+* 4 Nov 1978
+Q359. Forget the half quad originally required at left and right when
+ centering displayed equations without equation numbers. @1202
+* 11 Nov 1978
+R360. Don't let the postamble come out empty. [This could occur if no fonts were
+ selected.] @642
+* 15 Nov 1978
+C361. Allow optional space after digit in \\{scan_int} routine. @444
+* 17 Nov 1978
+R362. Make the \\{check_mem} procedure slightly more robust. @167
+* 20 Nov 1978
+C363. Make the |\par| in a |\def| match the |\par| that comes automatically with
+ a blank line. (Suggested by Terry Winograd.) @351
+G364. Add new parameter |\mathsurround| for spacing before and after
+ math in text. @1196
+G365. Extend |\advance| to allow increase by other than unity. [At this
+ time it applies only to the ten |\count| registers, and it is
+ called |\advcount|.] @1238
+* 25 Nov 1978
+G366. Add a new primitive: |\unskip|. @1105
+G367. Add new primitives |\uppercase| and |\lowercase|. @1288
+* 28 Nov 1978
+M368\>338. Don't let |\mark| and \\{macro_call} interfere with each other's
+ \\{scanner_status}. @306
+M369. Omit extra |}| after \\{show_node_list} shows a |\mark|,
+ since the right brace is already there. (See \#210.) @176
+G370. Add a new primitive suggested by Terry Winograd: |\xdef|. @1218
+* 29 Nov 1978
+S371. Delete a space following |\else{...}| also in the
+ false case. [\TeX78 uses braces, not |\fi|, for conditionals.]
+D372\>320. Make |\tracing| set |\showboxbreadth| as advertised. @198
+F373. Account properly for kerns in width calculations of \\{line_break}.
+ @866
+Q374\>364. Delete a \\{math_node} at the beginning of a line. @148
+A375\>339. Guarantee that |\predisplaypenalty=10000| will suppress page breaking
+ before a display. @1005
+* 6 Dec 1978
+L376. Change the file opening statement to allow lines up to 150 characters long.
+ [System dependent.]
+* 16 Jan 1979
+F377\>365. Initialize \\{negative} properly in the |\advance| routine
+ with a |\count| as argument. @440
+* 20 Jan 1979
+R378. Try to keep complex, buggy preambles of alignments from
+ crashing the program. @789
+* 17 Feb 1979
+I379\>376. Give more detailed information when warning about a
+ long line being broken. [System dependent;
+ the buffer size in \TeX78 is very limited.]
+L380. Declare $p$ local to \\{try_break}, for the ``rare'' case code.
+ [My original program included the following comment:
+ ``This case can arise only in weird circumstances due to
+ changing line lengths, and the code may in fact never be executed.''
+ Later Michael Plass will discover that variable line lengths require an
+ entirely different algorithm, using \\{last_special_line}.]
+ @847
+F381\>334. Don't omit the raggedness correction when the
+ last line of paragraph has to shrink. [Obsolete in \TeX82.]
+* 22 Feb 1979
+F382\>363. Don't forget to return from \\{get_x_token} after finding |\par|. @351
+Q383. Add a new parameter: |\lineskiplimit|. @679
+C384. Change the syntactic sugar:
+ `|\hbox par|' replaces `|\hjust to ...{overfull}|'. [This vastly improves on
+ the old idea (see \#40), but there still is no internal vertical mode.]
+C385. Introduce new names |\hbox| and |\vbox| for |\hjust| and |\vjust|. @1071
+G386. Add a new condition: |\ifpos|. [It will later be
+ generalized to |\ifnum| and |\ifdim|.] @513
+G387. Add |vu| and |\varunit|. [\TeX82 will eventually allow arbitrary
+ internal dimensions as units of measure.] @453
+G388\>312. Add an |em| unit. @455
+C389. Legalize |\hbox spread |\<negative dimension> [since \\{scan_spec}
+ no longer uses the sign as a flag]. @645
+* 10 Mar 1979
+C390\>370. Make \\{scan_toks} expand |\count| during |\xdef|. [This will
+ change later when |\the| and |\number| are introduced.] @367
+* 23 Mar 1979
+Q391. Put only 100000\thinspace pt stretch at the end of a paragraph instead of
+ 10000000000\thinspace pt.
+ [In \TeX78, ``infinite'' glue is actually finite but large; in the
+ language of \TeX82 we would say that |\parfillskip|, which is
+ not yet user-settable, is being changed to be like |\hfil| instead of
+ like |\hfill|.] @816
+Q392. Treat the last line of a paragraph more consistently with
+ the other lines (e.g., when |\hfil| appears in mid-paragraph), by
+ effectively inserting \\{inf_penalty} at the end. @816
+* 31 Mar 1979
+S393. Ensure that penalty nodes aren't wiped out, in weird cases where
+ breaks occur at penalties that normally disappear. @879
+* 27 Apr 1979
+A394. Correct the page number count when files begin with an empty page.
+ [System dependent.]
+G395. Allow the \\{math_code} table to be changeable via |\chcode|.
+ [In \TeX82, |\chcode| will split into |\mathcode| and |\catcode|.] @1232
+I396\>332. Don't accept `|e|' after an error message if not
+ inputting from a file. @84
+* 29 May 1979
+F397. Don't call \\{end_file_reading} if you haven't already invoked
+ \\{begin_file_reading}; this could happen when trying to
+ recover from an error in \\{start_input}.@537
+* 7 Jun 1979
+A398\>306. Be sure to eject two pages,
+ when |\eject| comes just at the time another break is preferable
+ (e.g., when the page has just become too full). @1005
+* 27 Jun 1979
+I399\>354. Don't say `|You can't do that in math mode|' when the user
+ says `|$$|' in restricted horizontal mode! @1138
+* 30 Jun 1979
+G400. Add |wd|, |dp|, |ht| dimension units. @455
+I401\>307. Don't try the system area for file names whose area is explicitly
+ indicated. @537
+* 1 Jul 1979
+G402. Allow letters as (ASCII) numbers [without the |`| marker introduced
+ later]. @442
+* 2 Jul 1979
+F403. Fix a |\gdef| bug: If the control sequence was never defined before
+ [this later became the \\{restore_zero} option],
+ don't remove it at group end. @282
+* 16 Jul 1979
+I404\>320. Update \\{show_noad_list} to be like \\{show_node_list}.
+ [The two routines, originally separate, will be merged in \TeX82.] @238
+* 18 Jul 1979
+G405. Extend capacity from 32 fonts to 64 fonts if desired. @134
+Q406. Add new \\{extra_space} parameter to all text fonts (requested
+ by Frances Yao). @558
+F407. Make each \\{node_noad} print properly in \\{show_noad_list}. @183
+Q408. Make |\jpar| allow any break if it is 1000000 or more.
+ [In \TeX82, a |\tolerance| of 10000 or more allows any break.] @851
+* 23 Jul 1979
+E409. Introduce new primitives |\hfil|, |vfil|, |\hfilneg|, |\vfilneg|. @1058
+G410. Add |\ifmmode|. @501
+G411. Add |\firstmark|. @1012,1016
+C412. Allow break at leaders (horizontal mode only). @149
+* 25 Jul 1979
+I413\>213. Revise \\{error} so that online insertions work properly
+ after end-of-file errors. @336
+B414\>411. Change `{\bf if} $\\{first_mark}\ne0$' to
+ `{\bf if} $\\{first_mark}\ge0$' [because $-1$
+ is used to indicate `not yet given a value']. @1012
+* 28 Jul 1979
+C415\>370. Stop |\xdef| from expanding control sequences after |\def|'s.
+ [This decision will be rescinded later, after several more years of
+ experience with macro expansion will suggest better ways to cure
+ the problem.] @366
+I416. Change symbolic printout for control symbols. [System dependent.] @49
+L417\>308. Avoid linefeeds in the transcript file. [System dependent.]
+C418\>370. Expand |topmark|, etc., in |\xdef|. @366
+* 4 Aug 1979
+B419\>413. Fix an error introduced recently: |\par| was suddenly
+ omitted at end of page. [System dependent.]
+* 11 Aug 1979
+P420. Change error messages that use |SAIL| characters not in
+ standard ASCII. @360
+* 28 Aug 1979
+D421\>411. Move the command `$\\{first_mark}\gets-1$' from \\{vpackage}
+ to \\{fire_up}. @1012
+S422\>403. Correct a serious |\gdef| bug:
+ Control sequences don't obey a last-in-first-out
+ discipline, so \TeX\ loses things from the hash table when deleting a
+ control sequence. @259
+# To fix this, I either need to restrict \TeX\ (so that
+ |\gdef| can be used inside a group only for control sequences already
+ defined on the outer level) or need to change the hash table algorithm.
+ Although all applications of \TeX\ known to me will agree to the
+ former restriction, I've chosen the latter alternative, because it gives me
+ a chance to improve the language: Control sequences
+ of arbitrary length will now be recognized.
+D423. Make sure that \\{unsave} cannot call \\{eq_destroy}
+ with a value from the upper part of \\{eqtb}. @282
+# I noticed this long-standing bug while fixing \#422. It had very
+ low probability of causing damage (e.g., it required a certain field
+ of a floating-point number to have a certain value), but it would have
+ been devastating on the day it first showed up!
+* 29 Aug 1979
+F424. Call \\{eq_destroy} when a control sequence is |\gdef|'ed
+ after being |\def|'ed. @283
+F425\>418. Treat the first token consistently
+ when |\topmark| and its cousins are expanded in \\{scan_toks}. @477
+# Now I've checked things pretty carefully and I think \TeX\ is ``fully debugged.''
+* 25 Jan 1980
+I426\>338. Display runaway alignment preambles. @306
+G427. Introduce active characters (one-stroke control sequences).
+ [I don't yet go
+ all the way: The meanings of `|x|' and `|\x|' have to be identical.] @344
+* 7 Feb 1980
+F428\>314. Fix a glaring omission: Op space |\>| was
+ never implemented in math mode! @716
+* 25 Feb 1980
+G429. Add a new dimension `|ex|' (for units of xheight). @455
+* 3 Mar 1980
+C430\>427. Allow the control sequence |\:| to be redefined
+ [it was the `select font' operator];
+ this allows the character |:| to be active. [Obsolete.]
+* 23 Mar 1980
+# An extend-\TeX-for-the-eighties party:
+G431. Add a new |\copy| feature. @204
+G432. Add a new |\unbox| feature. @1110
+G433. Add a new |\open| feature [later |\openout|]. @1351
+G434. Add a new |\send| feature [later |\write|]. @1352.
+G435. Add a new |\leqno| feature, requested by MDS. @1204
+G436. Add a new |\ifdimen| feature [later |\ifdim|]. @513
+C437. Make |\|\<space> in vertical mode begin a paragraph. @1090
+G438. Add a new |\font| feature [replacing the silly previous convention that
+ a font must be defined when it is first selected]. @1256
+G439. Add new |\parval| and |\codeval| features [later
+ |\the|\thinspace\<whatever>\thinspace]. @413
+C440\>427. Don't let active characters gobble the following space. @344
+G441\>208. Add a new parameter to govern amount of token list dumped. [Obsolete.] @295
+G442. Add a new |\linebreak| feature [later replaced by |\break|]. @831
+* 25 Mar 1980
+# (Still working on the above, also thought of more.)
+G443. Add a new |\mskip| feature. @716
+G444. Add a new |\newname| feature (soon changed to |\let|). @1221
+G445\>430. Allow any control sequence to be redefined. @275
+I446. Send the output to the user's current file area, even when
+ input comes from elsewhere. @532
+* 27 Mar 1980
+Q447. Compute the xheight for accents in math mode from
+ family~1, not family~3. [Obsolete.]
+* 28 Mar 1980
+Q448. Increase minimum clearance between subscript and superscript. @759
+* 29 Mar 1980
+Q449\>222. When a display follows a display, the second should have the
+ `shortskip' glue. @1146
+* 4 Apr 1980
+A450\>445. Look at current token meanings when trying to recognize
+ |\tabskip| in alignment preambles. @782
+* 23 Apr 1980
+I451. Estimate the length of printed output, for the new
+ priority feature on our XGP device driver. [System dependent.]
+C452\>434. Break long |\send| lines
+ into pieces so that the file can be read in again. [System dependent.]
+* 19 May 1980
+Q453\>182. Don't make |\left| and |\right| delimiters too large; they
+ need to be only 90\% of the enclosed size. [This eventually
+ became |\delimiterfactor|.] @762
+* 21 May 1980
+G454. Add a new |\pagebreak| feature [later |\vadjust{\break}|]. @655
+* 13 Jun 1980
+# Today I'm beginning to overhaul the line-breaking routine,
+ and I'll also install miscellaneous goodies.
+G455. Allow a radical sign to be in different font positions. @737
+E456. Clear empty tokenlists off input stacks to allow deeper recursions
+ (suggested by Jim Boyce's macros for chess positions). @325
+G457. Make |\spaceskip| and |\parfillskip| changeable. @1228
+G458. Add a new parameter |\rfudge| (per request of Zippel) [later |\mag|]. @288
+G459. Add a new parameter |\loose| [later |\looseness|];
+ now parameters are allowed to take negative values. @875
+E460. Remove the variable \\{just_par}. [Obsolete; it was the \\{real} equivalent
+ of an \\{integer}].
+* 14 Jun 1980
+Q461. Install new line-breaking routines, including |\parshape|.
+ (These major changes are introduced as Michael Plass
+ and I write our article.) @813
+G462. Add a new parameter |\exhyf| [later |\exhyphenpenalty|]. @869
+* 16 Jun 1980
+S463\>444. Change conventions in \\{eqtb} so that glue is distinguishable
+ from other equivalents. @275
+A464\>444. Don't expand |\b| in |\xdef{\d\b{...}}| after |\let\d=\def|.
+ [Obsolete.]
+D465\>444. Avoid creating dead storage when doing \\{unsave} in certain regions. @275
+* 17 Jun 1980
+C466. Allow negative dimensions in rules. @138
+* 19 Jun 1980
+B467\>463. Make the new test for glue at the outer level of \\{show_eqtb}. @252
+* 27 Jun 1980
+Q468\>453. Don't let |\left| and |\right| become too small for big matrices.
+ [This eventually became |\delimitershortfall|.] @762
+* 3 Aug 1980
+Q469. Don't move extra-wide, numbered equations flush left unless
+ they begin with glue. @1202
+* 15 Sep 1980
+M470\>461. Say `$\ge\\{fz}$' instead of `$>\\{fz}$' in the pre-hyphenation
+ routine; I'd forgotten my definition of \\{fz} [a variable used to test
+ for a sequence of lowercase letters in the same font]. @897
+R471\>395. Check the range of the index in |\chcode| before saving the old value.
+ @1232
+* 18 Sep 1980
+D472\>457. Don't forget to increase the reference count to |\parfillskip|,
+ or it will mysteriously vanish. @816
+* 19 Sep 1980
+C473\>412. Make leaders break like glue in both horizontal and vertical modes.
+ @149
+Q474\>364. Make |\mathsurround| break properly at left and right end of lines.
+ @879
+* 13 Oct 1980
+I475\>461. Remove spurious overfull boxes generated when the looseness criterion
+ fails. [Obsolete.]
+A476\>461. Redesign the iteration for looseness; breakpoints were not chosen
+ optimally. @875
+E477\>461. Avoid storing a lot of breakpoints when they are dominated by
+ others. @836
+B478\>366. Don't say `\\{cur_node}' when you mean `\\{mem}[\\{cur_node}]'. @1105
+Q479\>461. Prefer the oldest break to the youngest break
+ when two break nodes have the same total demerits. @836
+L480\>461. Don't make badness too big for floating-point calculations,
+ when forced to make an overfull box. [Obsolete.]
+* 10 Dec 1980
+R481. Make it impossible to get unmatched `|}|' in a delimited macro
+ argument. @392
+G482. Add new |\topsep| and |\botsep| features. [These are \TeX78's
+ way to put space at the edge of inserts,
+ replaced in \TeX82 by the |\skip| register corresponding
+ to an |\insert| class.] @1009
+* 6 Jan 1981
+P483. Install new routines for reading the font metrics, using Ramshaw's
+ |TFM| files instead of\/ |TFX| files. @539
+I484. Abort after reporting 100 errors, if not pausing on errors. @82
+G485. Add new |\spacefactor| and |\specskip| and |\skip| primitives.
+ [At this time we write `|\specskip3=10pt|' and `|\skip3|' for what
+ will become `|\skip3=10pt|' and `|\hskip\skip3|' in \TeX82.] @1060
+G486\>366. |\unskip| is now allowed in internal vertical mode. @1105
+* 26 Jan 1981
+B487\>482. Don't say `\\{mem}[$q$]' when you mean `$q$'. (See \#143 and \#478.) @1009
+* 27 Feb 1981
+I488\>417. Put some linefeeds back into the transcript file, in order
+ to prevent overprinting in listings. [System dependent.]
+G489. Add a new |\dpenalty| feature [later |\postdisplaypenalty|]. @1205
+G490. Add the dimension |cc| for European users. @458
+C491. Make \\{scan_keyword} match uppercase letters as alternatives
+ to lowercase ones (suggested by Barbara Beeton's experiments
+ with |\uppercase|). @407
+I492. Add nonstop mode so that overnight batch processing is possible. @73
+* 2 Mar 1981
+S493\>422. Fix a still more serious |\gdef| bug: The generality
+ of\/ |\gdef| almost makes it a crime to
+ forget {\sl any\/} control sequence names, ever! (The previous bug was
+ only the tip of an iceberg.) @259
+I494. Issue warning message at the end of a file page if nesting level isn't zero.
+ [System dependent.]
+* 5 Mar 1981
+I495. Keep track of maximum memory usage, for statistical
+ reporting. [Obsolete.] @125
+Q496\>350. Prune away glue and penalties at top of page after marks, sends,
+ inserts. @1000
+G497. Allow |\mark| in horizontal mode. [Later it will
+ be |\vadjust{\mark...}|.] @655
+C498. Allow optional space before a required left brace, e.g., |\if AA {...}|.
+ [See \#251.] @403
+I499. Issue an incomplete |\if| error, to help catch a bad |\if|. @336
+* 17 Mar 1981
+I500\>494. Omit the warning message at end of a file page unless
+ the nesting level has changed on that page. [System dependent.]
+Q501\>310. Fix the spacing when there is a very tall subscript with
+ a superscript. @759
+* 20 Mar 1981
+S502\>371. Make space-eating after |\else| fully consistent between the
+ true and false cases. [Obsolete.]
+* 24 Mar 1981
+B503\>496. Change \\{glue_spec_size} to \\{ins_spec_size}
+ in \\{vpackage} [where insertions are done]. [Obsolete.]
+* 5 Apr 1981
+B504\>501. Fix a typo (`|+|' instead of `|-|') in the new subscript code;
+ this shifted certain subscripts down instead of up. @759
+* 18 Apr 1981
+G505. Make leaders with rules of specified size act like variable rules.
+ @626,635
+* 29 Apr 1981
+A506\>461. Don't consider $\\{badness}>\\{threshold}$ at a line |\break|
+ except in an emergency. @854
+* 13 Jul 1981
+C507\>402. Allow other characters as numbers. @442
+R508\>294. Avoid dead storage if a \\{no_new_control_sequence} error occurs.
+ [Obsolete.] @259
+G509. Add a new |\ifx| feature. @507
+G510. Add new features |\xleaders| and |\cleaders|. @626,635
+* 14 Jul 1981
+S511\>507. Amend the new code for constants;
+ the `|.|' in `|.5|' is thought to mean \O{056}! @442
+L512\>507. And fix an egregious blunder in that code: New commands at the
+ end of a procedure are ignored when earlier statements
+ exit via {\bf return}. @442
+* 4 Aug 1981
+P513. Accept alphabetic codes for all online error recovery options,
+ instead of insisting on control codes like line feed or form feed.
+ [The original error-recovery codes were suggested by the
+ conventions of the |SAIL| compiler.] @84
+G514. Add a new |\thebox| feature [later |\lastbox|]. @1079
+* 7 Aug 1981
+G515. Add |fil|, |fill|, and |filll| as units for glue stretching
+ or shrinking. @454
+I516. Suppress the overfull box error when shrinkage amount is negative. @664
+* 9 Aug 1981
+Q517. Let unset boxes inherit the size of their parent in alignments. @810
+* 12 Apr 1982
+F518. Make |INITEX| dump out the \\{font_dsize} array needed by
+ the new |DVI| output module. @1322
+* 1 May 1982
+S519\>151. Fix \\{clean_box} so that \\{mlist_to_hlist} cannot make
+ $\\{link}(q)=0$ and $\\{type}(q)=\\{glue_node}$. @720
+# [That was the historic final change to \TeX78. All subsequent entries
+ in this log refer to \TeX82.]
+* 15 Jul 1982
+# Finished draft of test program and began debugging about 1430
+ [2:30\thinspace pm]. Taking my time.
+BX1. Change \\{eqtb}[\\{cur_font}] to \\{eqtb}[\\{cur_font_loc}]. @232
+# Not logging changes to the exposition.
+# Compile time is about 2 minutes CPU, times 5 for time-sharing;
+ add another half minute for linking and loading.
+# Hash table and \\{get_next} seem to be working, with no changes needed!
+# Time out 1630--1815 for Jill's birthday party.
+LX2. Insert {\bf begin} \dots~{\bf end} around \\{dump_int} macro. @1305
+IX3. Print two blank spaces before date in \\{open_log_file}. @536
+AX4. Update $x$ and \\{var_used} outside the {\bf for} loop. @1311
+BX5. Change {\bf if} $=$ to {\bf if} $\ne$ as loop exit condition. @1315,1316
+# The |TRIP| test should preload more fonts.
+LX6. Insert {\bf begin} \dots~{\bf end} around statistics output. @1334
+FX7. Must \\{get_x_token} when scanning a number. @445
+IX8. Interactive \\{debug_help} needs to print a newline. @1338
+FX9. Include \\{ignore_spaces} and \\{math_accent} in \\{print_cmd_char} cases. @266
+IX10. Don't call \\{confusion} when \\{print_cmd_char} sees unknown code. @298
+# Compiler bug causes stack overflow. Retiring for the night at 2145.
+* 16 Jul 1982
+# Starting at 0700; DRF has fixed the compiler.
+RX11. Allow arbitrary integer parameters in diagnostic print routines. @237,699
+TX12. Say \\{cur_tok}, not \\{cur_val}, when you mean \\{cur_tok}. @440
+FX13. Make |\pause| effective also on first line of a file. @538
+FX14. Show context after online deletion. @88
+IX15. Bypass reference count when \\{debug_help} shows a token list. @1339
+BX16. Change `{\bf case} $p$' to `{\bf case} \\{type}($p$)'. @1000
+FX17. Fix timing of \\{print_ln} when scrolling help messages. @90
+PX18. Make \\{other_char} the default category for ASCII control codes too. @232
+AX19. Use special scanning method for font number in \\{new_font}. @1257
+# Eating lunch, 1020--1035, while the machine slowly recompiles everything.
+FX20. Don't forget to increase $k$ in the {\bf while} loop. @355
+DX21. Adjust \\{limit} properly after line changed when pausing. @363
+FX22. Remember to return a value in \\{new_spec} and \\{new_penalty}. @151,158
+# Now stepping through \\{line_break} in simple case.
+AX23. Don't prune unwanted nodes if $\\{cur_p}=\\{null}$. @877
+FX24. Print a closing parenthesis when displaying glue nodes. @189
+SX25. Use \\{last}, not \\{limit}, in \\{term_input}; else error prompt causes
+ trouble when $\\{state}=\\{token_list}$. @71,87
+DX26. Set $\\{first}\gets\\{limit}+1$ after \\{init_terminal}. @331
+DX27. Make sure \\{set_trick_count} is always performed. @317
+* 17 Jul 1982
+IX28. Add new diagnostic feature |\tracingcommands|. @299,1031
+# Debugging of system-dependent code not shown in this log.
+# Tangling \TeX\ now takes 1.75 minutes; about 75K bytes, 108K tokens.
+# Redundant semicolon sends Pascal compiler into infinite loop!
+FX29. Initialize $\\{passive}\gets\\{null}$. @864
+AX30. Fix pseudoprinting when the line is empty. @318
+EX31. Merge adjacent free areas of dynamic memory before dumping. @131
+FX32. Print the word |mode| in \\{print_mode}. @211
+IX33. Improve message and help in case of weird error. @415
+GX34. Allow optional space after |\def| and similar constructions. @473
+MX35. Declare \\{alpha} to be integer in \\{read_font_info}. @560
+AX36. Fix timing of \\{back_input} in \\{scan_dimen}. @448
+IX37. Back up after missing number error. @446
+IX38. Show the `|at|' size that is considered improper. @1259
+IX39. Streamline the dialog in \\{debug_help}. @1338
+MX40. Take output of \\{the_toks} from the advertised place. @467,1297
+TX41. Say \\{trie_fix}($q$), not \\{trie_fix}($p$). @959
+SX42. Decrease low limit of \\{error_count} to $-1$. @76
+* 18 Jul 1982
+FX43. Clear initial reference count of macro definitions. @473
+AX44. Fix timing of \\{back_input} in \\{scan_glue}. @461
+BX45. Use \\{cur_val_level}, not \\{cur_val}, when checking levels. @461
+BX46. Multiply |fil| units by $2^{16}$ for correct scaling. @454
+BX47. Don't confuse \\{glue_base} with \\{skip_base}. @1237
+AX48. Fix \\{print_scaled} so that 0.01 doesn't come out |0.1|. @103
+IX49\>X28. Show mode changes when tracing commands. @299
+LX50. Don't say {\bf if} $(n=0)\lor(\,\ldots\;\hbox{\bf div}\;n)$ in Pascal. @105
+BX51. Don't confuse \\{box_flag} with \\{box_code}. @1075
+SX52. Reset \\{offset} on \\{print_ln} even in \\{no_print} mode. @57
+SX53. Fix restarting of interrupts after \\{big_switch}. @1031
+LX54. Don't loop {\bf for} $k\gets a$ {\bf to} $b-1$ when $b=0$ if $k$ is
+ declared nonnegative.
+IX55. Put `|=|' sign into the \\{format_ident}. @1328
+SX56. Allow $r$ to be any integer in \\{get_node}. @125
+IX57. Don't put the output of \\{print_file_name} in quotes. @518
+IX58. Say `|dumped|' after dumping. @1311
+EX59. Eliminate unnecessary initialization code. @1332
+LX60. Get the file reading started right when beginning to undump. @1308
+IX61. Give forlorn message if format file can't be loaded. @1303
+FX62. Assign value to \\{cur_val} after glue arithmetic. @1239,1240
+* 19 Jul 1982
+LX63. Don't say {\bf if} $p>\\{max}\lor\\{free}[p]$ in Pascal. @169
+AX64. Fix memory-undump logic; loops are out of phase with input. @1312
+BX65. Undump \\{hyph_word}[$j$], not \\{hyph_word}[$k$]. @1325
+# At last |trip.fmt| loads without bombing out.
+PX66. Remove assignment of array to array, not allowed by IBM Pascal
+ (Susan Plass). @167
+PX67. Simplify an expression that's too big for IBM Pascal (Susan Plass). @1009
+AX68. Go to \\{contribute}, not \\{done}, after insertions. @1000
+IX69. Decrease \\{depth_threshold} if there's not enough string space. @198
+IX70. Show rules as `{\tt\char`\|}' in short displays. @175
+IX71. Don't show null glue in short displays. @175
+SX72. Set $\\{job_name}\gets0$ as part of output initialization. @528
+SX73. Don't complain of infinite shrinkage on |0pt minus 0fil|. @825,976,1009
+IX74. Use different prompt at beginning when accepting a file name. @37
+FX75. Reset \\{last_glue} on nonglue nodes. @996
+BX76. Remember to call \\{error} after printing |OK|. @1293
+LX77. Insert {\bf begin} \dots{ \bf end} around program text of section. @1025
+FX78. Define the |\shipout| primitive. @1071,1073
+AX79. Introduce \\{write_loc} analogous to \\{par_loc}. @1344,1371
+FX80. Dump and undump \\{par_loc} and \\{write_loc}. @1313,1314
+FX81. Allow \\{the} in \\{scan_the} [later \\{scan_something_internal}]. @413
+EX82. Interchange command codes $\\{the}:=:\\{number}$ [later \\{convert}]. @210
+BX83. Don't confuse \\{breadth} with \\{depth}. @236
+IX84. Add string printing feature to \\{debug_help}. @1339
+FX85. Set $\\{state}\gets\\{mid_line}$ in \\{begin_file_reading}. @328
+# Time out 2105--2200 to pick up Jenny from driving lesson.
+LX86. Keep $c\le127$ when deleting 99 tokens. @88
+SX87. Don't check for \\{str_room} error when $\\{selector}=\\{new_string}$. @1328
+* 21 Jul 1982
+IX88. Gather more statistics: String usage, font info, hyphen exceptions, stacks. @1334
+DX89\>X79. Initialize \\{write_loc} from \\{cur_val}, not from \\{cs_ptr}. @1344
+FX90. Remember to pack file name for |\open|. @1374
+SX91\>X34. Defuse |\outer| test before scanning optional space after `|}|'. @473
+SX92. Don't allow \\{prepare_mag} to cause errors after \\{jump_out}. @84
+# The first page of |DVI| output is {\sl perfect\/}! Pause to play piano.
+BX93. Don't confuse \\{dimen_base} with \\{scaled_base}. @1237
+DX94. Initialize $\\{link}(\\{page_head})\gets\\{null}$ when beginning a page. @991
+SX95. Correct \\{cur_height} more often, since \\{max_depth} might be negative. @972,973
+AX96. Calculate page dimensions properly after vertical kerns. @973
+SX97. Install new \\{page_contents} logic to handle interaction between
+ insertions and |\topskip|. @987,1008
+SX98. Allow \\{top_skip} glue to be a valid breakpoint. @1001
+FX99. Don't forget to count \\{dyn_used} in inner loop [erroneous analysis
+ retracted later]. @1034
+FX100. Set $p\gets q$ after migration step. @655
+FX101. Clear \\{prev_graf} to zero at start of paragraph. @1091
+LX102. Put parens into negated \\{leader_flag} macro. @1078
+# Time out 1720--1920 for John's birthday dinner.
+DX103. Scale \\{best_height} when adjusting \\{page_goal}. @1010
+AX104. Simplify logic of split insertions; three states become two. @981,1019,1020
+MX105. Don't omit first character when showing a macro argument. @400
+RX106. Prevent clobberage if macros have too many parameters. @390
+* 22 Jul 1982
+IX107. Tell how many |DVI| bytes were output. @642
+IX108\>X88. Adjust for singular or plural statistics. @1320,1334
+SX109\>X98. Consider \\{page_head} a glue node, to inhibit unwanted break. @988
+DX110. Introduce \\{new_skip_param} to keep reference counts updated. @679,969,1001
+DX111. Record the correct size of new insertion after it's split. @1010
+DX112. Use \\{free_node}, not \\{flush_node_list}, when recycling insertion
+ nodes. @1022
+SX113. Make online insertions work after \\{get_next} is interrupted. @87,324,343
+BX114. Print newline on interruption stop. @98
+SX115\>X34. Put space before \\{end_write_token}. @1371
+BX116. Don't confuse \\{glue_order} with \\{stretch_order}. @838
+TX117. Set $\\{max_dimen}\gets\hbox{\it'7777777777\/}$, not {\it'777777777}. @421
+MX118. Make |\global\textfont| legal. @1211
+BX119. Fetch |\the\textfont| with \\{equiv}, not \\{fam_font}. @415
+BX120. Call $\\{new_ligature}(f,l,\ldots)$ not $(f,c,\ldots)$. @1035
+RX121. Make \\{show_box} work on random garbage. @174,177
+DX122. Count reference to \\{zero_glue} from \\{cond_math_glue}. @1171
+* 23 Jul 1982
+RX123. Allow $\\{avail}=\\{null}$ when undumping. @1312
+BX124\>X110. Set $\\{width}(\\{glue_ptr}(p))$, not $\\{width}(p)$. @679
+AX125. Put \\{begin_file_reading} inside the \\{start_input} loop. @537
+BX126\>X116. Don't confuse \\{glue_stretch} with \\{stretch_order} [the previous
+ fix went only half\-way]. @838
+BX127. Negate $x$ when calculating badness of shrinkage. @667,678
+LX128\>X121. Remove dangling {\bf else} that parses wrong. @174
+IX129\>X28. Print newline before |{|, not after |}|, when tracing commands. @299
+IX130. Remove colon from overfull box messages. @663,675
+DX131\>X97. Compute \\{page_goal} properly when the first box arrives after
+ inserts. @1001
+BX132. Don't confuse \\{page_size} [now \\{page_goal}] with \\{best_size}. @1017
+AX133. Put heldover insertions at front of contribution list. @1023
+SX134\>X88. Output stats before closing |DVI| file, since the latter
+ decreases \\{font_ptr}. @1333
+TX135. Don't call a |\vbox| an |\hbox|. @674
+TX136. Fix misplaced {\bf end} caused by editing error. @675
+* 24 Jul 1982
+DX137. Don't \\{eq_destroy} any paragraph shape when \\{par_shape} is null. @275
+IX138. Omit blank before |\message| at the beginning of a line. @1280
+AX139\>X104. Don't try to split an insertion when \\{best_node} isn't the
+ split one. @1021
+LX140. Correct another case of `{\bf if} $x\land y$' misunderstood by Pascal.
+ @1021
+IX141. Provide diagnostic info about insertions via |\showlists|. @986
+IX142. Add `|inside a group|' to clarify a warning message. @1335
+IX143. Report \\{prev_depth} on a separate line in |\showlists|. @219
+SX144. Back up input to avoid unexpected clobberage of \\{cur_tok}. @1090
+# Wow what a bug: \\{new_graf} calls \\{build_page}, which invokes the
+ output routine, after which `\/{\bf goto} \\{reswitch}' is a {\sl disaster}.
+DX145. Add insertion glue to \\{page_so_far} instead of subtracting it from
+ the goal. @1009
+IX146. Put extra blank line before overfull box warning. @660
+CX147. Define break at kern consistently between horizontal and vertical lists. @973,1000
+DX148. Renumber so that math nodes are nondiscardable. @147
+TX149. Correct the \\{char_kern} macro: |#|, not $f$. @557
+FX150. Decrease $l$ after reconstituting discretionary break. @916
+EX151. Simplify the hyphen routine, knowing that $\\{link}(s)=\\{null}$. @918
+FX152. Initialize $r\gets q$ in discretionary destruction routine. @883
+* 25 Jul 1982
+AX153. Don't add interline penalty after last line of paragraph. @890
+IX154. Adjust spacing in diagnostic messages. @245
+DX155. Avoid simultaneous use of \\{temp_head} by \\{prune_page_top} and the
+ page builder. @1017
+FX156. Clear the \\{post_break} field of simple discretionaries. @916
+AX157. Split \\{offset} into independent variables \\{term_offset},
+ \\{file_offset}. @54,57,58
+# Am freezing current program as version $-0.25$; a week of TUG lectures
+ begins tomorrow.
+* 5 Aug 1982
+IX158. The `|.err|' file should be `|.log|' instead. @534
+GX159. Allow |\special| strings to contain more than 256 bytes. @585,1368
+MX160\>X99. Undo ``correction'' to a non-bug. @1034
+IX161. Suggest |\&| in help message for unexpected |&|. @1128
+GX162. Make `|E|' a standard option for exiting. @84
+GX163. Restore the use of dead cycles \`a la \TeX78. @1024,1054
+# The previous six changes were suggested during discussions with \TeX82 class.
+SX164. Fix global variable conflict between \\{open_log_file} and \\{new_font}. @1257
+CX165. Allow optional `|=|' when assign to font parameter. @1253
+FX166. Set \\{cur_val} after increasing the number of font parameters. @580
+DX167. Set \\{hash_brace} when matching `|{|'. @476
+IX168\>X88. Clarify meaning of statistics printed. @1334
+GX169. Change |DVI| format to include design size. @602,1260
+DX170. Introduce \\{def_ref} for \\{runaway} messages. @306
+MX171. Restore \\{cur_cs} before calling \\{scan_toks}. @1226
+AX172\>X157. Update \\{print_nl} to dual offset conventions. @62
+AX173\>X163. Move endgame logic inside \\{main_control}, because the output
+ routine becomes active. @1054
+* 6 Aug 1982
+CX174. Allow |INITEX| to load format files. @1337
+EX175. Conserve input stack space by deleting finished token lists. @325
+IX176\>X74. Print the opening `|**|' in the transcript file. @534
+# Now ready to try breaking new ground in |TRIP|.
+SX177. Preserve \\{align_state} from tokens deleted online. @88
+DX178. Set $t$ in all branches of \\{scan_toks}. @473
+SX179. Change `$\\{cur_cmd}\le\\{right_brace}$' to `$\\{cur_tok}\le
+ \\{right_brace_limit}$'; otherwise |\relax| gets through. @477
+CX180. Allow optional |=| when setting |\spacefactor|; disallow zero. @1243
+BX181. Change \\{vpackage}(\\{head}) to \\{vpackage}(\\{link}(\\{head})). @796
+# Shades of 1978!
+LX182. Insert missing {\bf begin} \dots{ \bf end}. @798
+* 7 Aug 1982
+LX183. Keep \\{trie_max} declared in non-|INITEX| [later rescinded]. @950
+DX184. Watch out for empty token list when copying. @466
+DX185. Free unused reference count slot when defining |\everypar|. @1226
+GX186\>X163. Introduce |\maxdeadcycles|. @1012
+# I believe the \\{line_break} routine has passed its test perfectly.
+SX187. Don't put discretionary after |-| inside a discretionary. @1039
+CX188. Change `|\minus|' to `|\minusthe|' [this feature retracted later]. @413
+BX189. Change \\{cur_p} to $r$ (three places). @875
+AX190. Increase range of \\{hc} to \\{halfword}; otherwise end-of-word mark
+ might match a vacant entry in the trie. @892
+FX191. Initialize $b$ in \\{shift_case} routine. @1288
+EX192. Don't back up if a space follows a decimal fraction. @452
+BX193. Don't confuse \\{glue_base} with \\{dimen_base}. @1145
+LX194. Guard against anomalous floating-point values in glue display. @186
+* 8 Aug 1982
+SX195. Avoid infinite loop when |\outer| leads to runaways. @339
+# I worked on that problem about two hours before fixing it.
+IX196. Move final \\{debug_help} to \\{succumb}, except in batch mode. @93
+RX197. Insert kern after spanned box, to defeat access to floating point. @808
+* 9 Aug 1982
+CX198. Include |\leftskip| and |\rightskip| in displayed equations [rescinded
+ later]. @1199
+IX199. Trace line-break computations if $\\{tracing_stats}>2$. @846,856
+DX200. Keep \\{prev_p} up to date when passing a string. @867
+# Now stepping through math stuff; a lot is working.
+DX201. Set $\\{link}(p)\gets z$ when making a fraction. @747
+CX202. Don't reset space factor when beginning |\valign|. @775
+IX203. Don't show glue setting if $\\{glue_sign}=\\{normal}$. @186
+DX204. Clear \\{glue_stretch} and \\{glue_shrink} when creating an unset box. @801
+BX205. Do \\{vpack} in hmode and vice versa when aligning. @804
+AX206. Remove fallacious call to \\{confusion} after alignment in display. @1206
+AX207. Don't test $\\{mode}=\\{vmode}$ in display, test $\\{nest_ptr}=1$. @1145
+FX208. Show an \\{inner_noad} as well as the other types. @690,696
+DX209. Renumber \\{mu_glue} and \\{cond_math_glue} so that the glue display logic
+ works. @149
+BX210. Don't confuse \\{cur_size} with \\{cur_style}. @703
+FX211. Advance $p\gets q$ during second pass over mlist. @761
+IX212. Add helpful hint about |\tracingonline=1|. @1293
+TX213. Delete spurious statement left from sloppy editing. @710
+DX214. Change the subtype when \\{mskip} becomes \\{hskip}. @732
+FX215. Don't forget to use the remainder when computing math glue. @716
+IX216\>X199. Improve paragraph diagnostics using \\{short_display}. @857
+IX217\>X199. Introduce \\{artificial_badness} for better diagnostics. @854,856
+* 11 Aug 1982
+AX218. Introduce \\{char_box} subroutine so that \\{var_delimiter} adds italic
+ correction. @709
+SX219. Save font and char in local variables of \\{make_math_accent}, since
+ it can be recursive. @738
+FX220. Call \\{error} after decrying an invalid character. @346
+* 12 Aug 1982
+IX221\>X199. Install new format for showing break nodes. @846
+# I have been testing \\{line_break} and I think it's working fine.
+BX222. Change $q$ to $p$, in order to catch empty alignments. @812,1206
+SX223. Disallow third part of discretionary in math mode. @1120
+DX224. Don't change \\{tail} if discretionary third part is empty. @1120
+IX225. Say |nonscript|, not |non_script|. @189
+SX226. Inhibit math if |\scriptfont3| is improper. @1195
+IX227\>X199. Introduce {\tt\@}|firstpass| and {\tt\@}|secondpass| comments. @863
+TX228. Change $p$ to $r$ when you mean $r$. @1204
+IX229\>X108. Say |page|, not |pages|, if there's only |1|. @642
+IX230. Insert space before |[]| on truncated |\showlists|. @182
+* 28 Aug 1982
+# Back from vacation after having looked at hardcopy listing of |TRIP| test.
+GX231. Allow |dm| as a unit [later |.5dm1| will be |.5\dimen1|]. @455
+IX232\>X108. Singularize |prevgraf 1 lines|. @219
+IX233. Omit trailing zero count registers when showing completed page numbers. @638
+LX234. Avoid clobbering $a$ by introducing a new local variable $t$. @986
+DX235\>X216. Fix diagnostic printing of discretionaries. @858
+IX236. Don't show unset stretch/shrink that's zero. @185
+CX237\>X198. Make |\halign| in displays consistent with other displays. (Namely,
+ ignore |\leftskip| and |\rightskip| in nonaligned displays;
+ respect the paragraph shape in aligned displays.) @800,1199
+IX238. Parenthesize `|If you're confused ...|'. @403
+IX239. Say `|\fraction|', not `|\xabovex|'. @697
+FX240. Remember to {\bf return} when you should. @1153
+PX241. Use absolute value to make sure {\bf div} is unambiguous. @737
+BX242\>X218. Don't confuse depth with height. @709
+BX243. Use $\\{delta}-\\{height}$, not $\\{height}-\\{delta}$. @736
+BX244. Increase \\{shift_down} to increase the clearance. @745
+IX245. Don't back up after improper use of |\the|. @428
+IX246. Don't give |0pt| as the default result when looking for \\{tok_val}. @428
+FX247. Initialize \\{second_indent} in the easy case. @848
+FX248. Package the equation number. @1204
+QX249. Don't resort to $v\gets\\{max_dimen}$ when glue doesn't stretch or
+ shrink. @1148
+IX250. Insert newline before showing current |\botmark|.
+FX251. Call \\{error} after giving error message. @784
+AX252. Change implementation of |\number|; it should \\{scan_int}, not
+ something internal. @471
+PX253. Introduce symbolic constants like \\{format_area_length}. @524
+PX254. Change \\{quit} to \\{jump_out}, since some compilers treat \\{quit}
+ as a reserved word. @81
+LX255. Add more parentheses to get proper parsing. @1260
+IX256. Say |please| in order to be friendly (or at least polite). @360
+BX257. Don't confuse \\{cur_vcmd} with \\{cur_chr}. @508
+IX258. Use |&| instead of |!| to specify a preloaded format. @1337
+TX259\>X177. Correct |s3| to |s4|. @88
+GX260. Introduce new primitive |\mathchardef|, to save space and time. @1224
+CX261. Use the |[]| convention for noads as well as nodes. @692
+TX262. Correct spelling in call to \\{primitive}: |\xatopx| should be |\xoverx|
+ [later renamed, thank goodness]. @1178
+* 30 Aug 1982
+RX263. Don't fetch \\{link}(\\{null}) in malformed list. @175
+SX264. Initialize \\{align_state} at a better time so that \\{align_peek}
+ doesn't see |&| or |\span|. @785,791
+SX265. Outlaw preamble interfering with $\\{align_state}=0$. @789
+CX266. Add level of grouping to alignment to tabskip locality. @774
+FX267. Check \\{align_state} when scanning $\langle u_j\rangle$. @783
+AX268. Move `\\{unsave}; \\{new_save_level}' from \\{main_control} into
+ \\{fin_col}. @791,1131
+SX269\>X180. Remember \\{cur_chr} when you're looking for optional `|=|'. @1243
+TX270. Change $q$ to $r$ [in code now obsolete]. @804
+IX271. Disable interrupts during \\{back_error} so that help messages aren't
+ clobbered. @327
+SX272. Introduce \\{slow_print} for printing control sequences. @60
+IX273. Initialize \\{del_code}(|"."|$)\gets0$ for error recovery. @240
+SX274. Call \\{end_file_reading} before calling \\{check_outer_validity}. @362
+IX275. Don't delete an extra `|}|' when |\par| will help find a runaway. @395
+* 31 Aug 1982
+BX276. Don't confuse \\{thin_muskip} with \\{thin_muskip_code}. @413
+FX277\>X266. Recover from error if new \\{align_group} ends abnormally. @1132
+IX278. Recover from error if |\par| occurs when $\\{align_state}<0$. @1094
+CX279. Make |\hskip\the\thinmuskip| and |\mskip\the\baselineskip| erroneous. @413
+GX280. Add |\muskip| and |\setmuskip| analogs to |skip| and |\setskip|. @413,1228
+EX281. Don't output |pop| right after |push|. @601
+# The |TRIP| test looks right; now to test for wasted memory.
+# When memory should be empty I find $\\{dyn_used}=18$, $\\{var_used}=267$.
+* 1 Sep 1982
+# Made special |MEMTEX| program, designed to track all memory allocation.
+DX282. Delete reference to \\{last_glue} when a page is packaged. @1017
+IX283. Include \\{save_stack} in the \\{search_mem} debugging routine. @285
+CX284. Disallow |\vfill| in restricted horizontal mode. @1095
+# Most of the memory locations I thought were wasted were actually in good use.
+# Total 192 hours (approx) debugging time so far since July 15.
+* 2 Sep 1982
+# Now looking at all zero counts in profile and extending |TRIP|.
+EX285. Simplify the creation of |vtop| boxes. @1087
+CX286. Set $\\{space_factor}\gets1000$ after |\hbox|. @1076
+PX287. Introduce preamble into |DVI| format. @617
+SX288. Give special \\{chr_code} to |\relax|. @265
+IX289. Don't show `|(null)|' when token list is null, just show nothing. @295
+EX290. Delete the procedure \\{write_name_string}, which is never used.
+CX291. Rename |\xabovex| to |\abovewithdelims|; do the same for
+ |\xatopx| and |\xoverx|. @1178
+QX292. Improve \\{clean_box} so that it recognizes cleanliness better. @720
+IX293. Report a |Missing delimiter| more meaningfully. @1161
+RX294. Give \\{endv_token} a \\{chr} code of 128 so that it will end a file name. @289
+RX295. Test present of math fonts {\sl after\/} parsing an mlist, not
+ before. @1138,1195
+IX296. Omit `|recent contributions|' and/or `|current page|' when they are
+ empty. @218,986
+IX297. Display what \TeX\ has deleted after improper discretionary list
+ has arisen. @1121
+IX298. Show what math character was undefined. @723
+IX299. Improve the |Incompatible magnification| error; break it into two lines. @288
+DX300. Put new cases into \\{flush_node_list}, to recycle mlist noads. @698
+* 6 Sep 1982
+FX301\>X300. Insert a necessary `{\bf goto} \\{done}' in that new material. @698
+# It took two hours to diagnose that {\bf goto} problem.
+TX302\>X295. Change `|2|' to `|3|' in help message for extension fonts. @1195
+IX303. Add a special note if material is being held over for the next output. @986
+RX304. Divide before multiplying in \\{make_left_right}, to avoid overflow. @762
+IX305. Introduce the \\{box_error} routine. @992
+FX306. Clear \\{arith_error} after overflow has been reported. @460
+BX307\>X249. Don't confuse \\{stretch} with \\{glue_stretch}. @1148
+DX308. Set $\\{glue_sign}\gets\\{normal}$ when packaging with glue ratio
+ zero. @558,664
+AX309. Test for overflow before attaching the sign. @448
+# That all worked! Now trying |min_quarterword| negative.
+LX310. Take absolute value before applying {\bf mod} in \\{new_trie_op}. @944
+LX311. Say $\\{qi}(c)$, not $c$, when testing |TFM| flags [now obsolete]. @573
+LX312. Initialize \\{token_ref_count}(\\{def_ref}) to \\{null}, not zero. @473
+LX313. Change the type of \\{vsplit} parameter $n$ from \\{quarterword} to
+ \\{eight_bits}. @977
+LX314. Initialize \\{null-delimiter} different form \\{null_character}. @685
+LX315. Insert \\{qi} twice in \\{scan_delimiter}. @1160
+FX316. Insert \\{qi} in \\{scan_math}. @1151
+FX317. Insert \\{qo} in \\{fetch}. @722,723
+FX318. Insert \\{qi} in \\{set_math_char}. @1155
+FX319. Insert \\{qi} in \\{math_ac}. @1165
+FX320. Insert \\{qo} in \\{mlist_to_hlist}. @755
+IX321. Use brackets around 8-bit characters in \\{print_ASCII}. @68
+IX322. Include \\{hyph_list} in the \\{search_mem} debugging routine. @933
+# Now compiling non-|INITEX| to try an industrial-strength version.
+LX323. Add {\bf return} to \\{final_cleanup}, because some Pascal compilers
+ insist that each label be used. @1335
+DX324. Compute \\{par_token} when undumping. @1314
+* 11 Sep 1982
+IX325. Emit newline before file name, if near end of line. @537
+CX326. Define |\ifx| for arbitrary tokens. @507
+* 12 Sep 1982
+IX327. Don't ask users to type |x| twice before exiting. @84
+GX328. Install new features |\openin|, |\read|, |\ifeof|, |\closein|; rename
+ existing |\open|, |\send|, |\close| to be |\openout|, |\write|,
+ |\closeout|. @209,313,1275
+GX329. Install new feature |\expandafter|. @368
+PX330. Change the default file area from `|<TeX>|' to `|TeXinputs:|'. @574
+* 13 Sep 1982
+GX331. Install new feature |\string|. @472
+AX332. Remove spurious space printed by |sprint_cs|. @263
+# All tests passed now! But when I played with the system I found another bug
+ (undetected by |TRIP|):
+FX333. Set $r\gets s$ after matching macro parameter tokens. @397
+* 16 Sep 1982
+IX334\>X199. Introduce serial numbers in line-break records, improving
+ readability and independence. @846
+IX335. Don't abort when \\{file_name_size} is exceeded. @519
+* 17 Sep 1982
+IX336. Remove unwanted period from font capacity message. @567
+* 18 Sep 1982
+GX337\>X329. Make |\expandafter| more powerful by moving it from semantics
+ to syntax [i.e., from stomach to mouth]. @368
+* 19 Sep 1982
+IX338. Improve error recovery for `|Missing number|'. @415
+* 22 Sep 1982
+QX339. Suppress italic correction between letters in math mode except in math
+ fonts. @752
+* 24 Sep 1982
+PX340. Define $\\{null}=\\{mem_bot}$, not \\{min_halfword}, because there's
+ a reference to \\{link}(\\{null}) in \\{try_break}. @115
+DX341. Initialize $\\{str_start}[0]\gets0$. @47
+IX342. Avoid blank space at beginning of line. @638
+DX343. Set type of new box in math mode to \\{ord_noad}, not \\{inner_noad}. @1076
+* 28 Sep 1982
+# Here are the first changes made to the preliminary listing of \TeX82 that was
+ published by the \TeX\ project earlier this month.
+F520. Insert the missing cases \\{letter} and \\{other_char} after
+ \\{x_token} looks ahead. @1038
+C521. Change `|\pause|' to `|\pausing|'. @236
+D522. Reset \\{overfull_rule} when determining tabskip glue. @804
+A523. Fix the logic for scanning |\ifcase| [in obsolete syntax---everything
+ is still done with braces since `|\fi|' doesn't exist yet]. @509
+* 30 Sep 1982
+I524. Change |"0.0"| to |"?.?"| (suggested by DRF). @186
+* 2 Oct 1982
+Q525. Use conditional thin spacing next to `Inner' noads. @764
+Q526. Make thick spaces conditional. @766
+* 4 Oct 1982
+P527. Increase \\{trie_size} from 7000 to 8000, because of Frank Liang's improved
+ (but longer) hyphenation patterns. @11
+* 6 Oct 1982
+F528\>X330. Change the string lengths to match the new \\{\TeX_format_default}. @520
+# Version 0 of \TeX\ is being released today!
+* 8 Oct 1982
+B529. Fix a blunder: I decreased $h$ mod a quarterword when it should have
+ been decreased mod \\{trie_op_hash_size} (HWT). @944
+* 9 Oct 1982
+P530\>X258. Fix a typo (`|!|' not `|&|') in the |WEB| documentation. @524
+F531. Remember to call \\{initialize} if a different format was preloaded
+ (Max D{\'\i}az). @1337
+# Version 0.1 incorporates the above changes.
+* 12 Oct 1982
+G532. Add the `|\immediate|' feature, by popular request. @1375
+# Version 0.2 incorporates this (somewhat extensive) change.
+* 13 Oct 1982
+P533. Introduce new |WEB| macros so that \\{glue_ratio} is more easily changed. @109
+# I began writing {\sl The \TeX book\/} today: edited the old preface and
+ searched in the library for quotations.
+* 14 Oct 1982
+B534. Change the type of \\{hd} to \\{eight_bits}; it's
+ not a \\{quarterword} (HWT). @649
+S535\>X281. Revise the optimization of\/ |DVI| commands: It's not always safe to eliminate
+ \\{pop} when the preceding byte is \\{push}, since |DVI| commands
+ have variable length! (Embarrassing oversight caught by DRF.) @601
+* 15 Oct 1982
+C536. Test `$\\{prev_depth}>\\{ignore_depth}$', not `$\ne$'. @679
+# Version 0.3 incorporates the above changes.
+* 16 Oct 1982
+P537. Omit definition of \\{align_size}; it's never used (Bill Scherlis). @11
+I538. Inhibit error messages when packaging box 255. @1017
+* 21 Oct 1982
+A539\>X145. Subtract $\\{width}(q)$ from \\{page_goal}, don't add it to
+ $\\{page_so_far}[1]$. @1009
+# Version 0.4 incorporates the above changes.
+* 22 Oct 1982
+P540. Increase the amount of lower (variable-size) memory from 12000 to 13000,
+ since the \TeX\ program listing now needs about 11500. [At this time
+ there still is a fixed boundary between upper and lower memory.] @12
+G541. Add a new parameter |\boxmaxdepth|. @1086
+# Version 0.5 incorporates the above changes.
+* 26 Oct 1982
+B542. Fix an off-by-one error caught by Gabi Kuper and HWT.
+ (I forgot `${}+1$'). @1317
+B543. Fix the spacing of displayed control sequences: \\{print_cs} should base its
+ decision on $\\{cat_code}(p-\\{single_base})$, not $\\{cat_code}(p)$. @262
+# The |TRIP| test detected this bug, but I didn't notice.
+* 27 Oct 1982
+S544. Set \\{math_type} before saying $\\{fetch}(\\{nucleus}(q))$, since
+ fetching can have a side effect. @752
+* 28 Oct 1982
+G545. Install a major change: Fonts now have identifiers instead of code letters.
+ Eliminate the `|\:|' primitive, and give corresponding new
+ features to `|\the|'. @209
+# Actually I began making these changes on October 26, but I needed two days
+ to debug them and to put Humpty Dumpty together again.
+# At this time I'm also drafting macros for typesetting {\sl The \TeX book}.
+# The above changes have been incorporated into Version 0.6.
+* 30 Oct 1982
+# After years of searching, I've finally found a definitive definition of
+ the printer's point; and (unfortunately) my previous conjecture was
+ wrong. The truth is that $\rm83\,pc=35\,cm$, exactly;
+ so I am changing \TeX\ to conform.
+C546. Revise unit definitions for the `real' printer's point. @458,617
+# Version 0.7 incorporates the above.
+* 1 Nov 1982
+# Oops! Retract error \#546, and retract \TeX\ Version 0.7;
+ the source of my information about points was flaky after all.
+ My original suppositions were correct,
+ as confirmed by NBS Circular 570.
+* 4 Nov 1982
+C547. Revise the definition of |dd|, conforming to the definitive value
+ shown me by Chuck Bigelow. @458
+R548\>545. Introduce ``frozen'' copies of
+ font identifiers, to be returned by |\the\font|, so that font
+ manipulation is more robust. @1257
+* 5 Nov 1982
+D549. Reset \\{looseness} and paragraph shape when beginning a |\vbox|. @1083
+* 6 Nov 1982
+D550. De-update \\{align_state} when braces are in constants. @442
+I551\>X294. Improve error recovery for bad alignments. @1127
+# Today I wrapped up Chapters 4 and 5.
+* 8 Nov 1982
+G552. Give more power to |\let|: the right-hand side needn't be a control
+ sequence. @1221
+I553. Amend \\{show_context} to say
+ `$(\\{base_ptr}=\\{input_ptr})\lor{}$'; otherwise undefined control
+ sequences can be invisible in unusual cases (John Hobby). @312
+A554. Compute demerits more suitably by adding a penalty squared, instead of
+ adding penalties before squaring. @859
+# Previously a slightly loose hyphenated line followed by a decent line
+ was considered worse than a decent hyphenated line followed by
+ a quite loose line.
+* 10 Nov 1982
+E555. Save a bit of buffer space by declaring \\{pool_file} only in
+ |INITEX|. @50
+* 11 Nov 1982
+I556. Introduce a new context indicator to clarify \TeX's scanning state:
+ A special type
+ called \\{backed_up} is distinguished from other kinds of \\{inserted}
+ lists; it is called `recently read' or `to be read again', while
+ others are called `inserted'. @314
+I557. Append a comment, `|treated as zero|', to the missing-number message. @446
+I558. Ignore the settings of\/ |\hfuzz| or |\vfuzz| if\/ |\hbadness| or |\vbadness|
+ is less than 100. @666,677
+* 13 Nov 1982
+# Major surgery on the program is planned for today, because of new ideas
+ suggested by correspondence with MDS and other macro writers.
+G559. Introduce a new |\tokens| register; this will be useful and easy to add,
+ since \TeX\ already can handle |\everypar| and |\output|. @1227
+C560\>X34. Change \\{get_x_token} to \\{get_token} when scanning an optional
+ space; then a construction like
+ |\def\foo{...}\foo| won't complain that |\foo| is undefined. @443
+# This change was retracted when it was being debugged, because it could
+ cause \\{endv} to abort the job. Then it was re-established again
+ when I found that \\{endv} needed to be more robust anyway.
+ [But it was eventually rescinded again.]
+G561. Make |\span| mean `expand' in a preamble. @782
+E562. Use three separate {\bf if\/} tests instead of
+ `$\land$' in the inner loop of \\{get_next}, to gain efficiency. @342
+R563. Introduce \\{get_r_token} so that assignments have uniform error
+ messages and so that frozen equivalents cannot be changed. @1215
+# I gave a few variables more mnemonic names as I made these changes.
+C564. Move conditional statements from the semantics (`stomach') part of
+ \TeX\ to the syntax (`mouth') part, by introducing `|\fi|'.
+ Also introduce |\csname| and |\endcsname|. @372,489\hbox{--}500
+# This makes macros much more predictable and logical, but it is by far
+ the most drastic change ever made to \TeX. The program began to come
+ back to life only after three days of solid hacking.
+# Several other things were cleaned up as part of this change
+ because it is now more natural to handle them differently.
+ For example, a null control sequence has now become more logical.
+# The result of all this is called Version 0.8.
+* 18 Nov 1982
+# Today I resumed writing Chapter 8. Tomorrow I'm $\,2^{14}$ days old!
+* 21 Nov 1982
+F565. Declare $c$ as a local variable for hyphenation (DRF). @912
+E566. Omit the ``first pass'' and try hyphenations immediately,
+ if\/ |\pretolerance| is negative (suggested by DRF). @863
+R567. Don't ship out incredibly huge pages; they might foul up
+ |DVI| files. @641
+* 2 Dec 1982
+G568. Add new features |\everymath| and |\everydisplay|. @1139,1145
+G569. Add a new feature |\futurelet|. @1221
+# The changes above have been incorporated into Version 0.9 of TeX.
+* 7 Dec 1982
+G570. Add a new |\endinput| primitive (suggested by FY). @362,378
+* 8 Dec 1982
+I571. Try \\{off_save}, if\/ |\par| occurs in restricted horizontal mode.
+ (This avoids embarrassment if \TeX\ says `type a command or
+ say |\end|', then when you type |\end| it says you can't!)
+ [However, I soon retracted this change.] @1094
+* 21 Dec 1982
+A572. Redefine |\relax| so that its \\{chr} field exceeds 127. (This facilitates
+ the test for end in \\{scan_file_name}.) @265
+F573\>566. Call \\{begin_diagnostic} when omitting
+ the first pass of line breaking. @863
+A574. Fix the logic of glue scanning: In |\hskip-1pt plus2pt| the minus should
+ apply only to the |1pt|. @461
+* 23 Dec 1982
+I575. Renumber the decimal codes in paragraph statistics for loose and tight
+ lines; they were ordered backwards. @817
+C576. Treat a paragraph that ends with leaders like a paragraph that
+ ends with glue. @816
+C577. Allow commas as alternates to radix points, for Europeans. @438
+C578. Change |\hangindent| to a normal dimension parameter. [It had been
+ a combination of\/ |\hangindent| and |\hangafter|, with special
+ syntax.] @247
+G579. Make |\prevgraf| accessible to users. @422,1244
+G580. Split |\clubpenalty| off from |\widowpenalty|. @890
+# I'm typing Chapter 14 while making these changes.
+* 24 Dec 1982
+S581. Use \\{back_input} instead of {\bf goto} \\{reswitch} when
+ inserting |\par|, because |\par| may have changed. @1095
+* 25 Dec 1982
+# It's 10pm after a very Merry Christmas!
+I582\>X328. Don't prompt for a new file name if\/ |\openin| doesn't find a file. @1275
+G583. Add a new |\jobname| primitive. @472
+I584. Give the user a way to delete the dollar sign, when \TeX\ decides
+ to insert one. @1047
+C585. Allow optional equals after |\parshape|, and implement |\the\parshape|.
+ @423,1248
+* 26 Dec 1982
+I586. Add an \\{if_line_field} to the condition stack entries,
+ so that more informative error messages can be given. @489
+D587\>549. Introduce a \\{normal_paragraph} procedure, since initialization is needed
+ also within |\insert|, |\vadjust|, |\valign|, |\output|. @1070
+* 27 Dec 1982
+G588. Give users access to |\pagetotal| and |\pagegoal|. (Analogous to
+ \#679 and \#585, but simpler.) @1245
+I589\>X199. Introduce |\tracingpages|, allowing users to see
+ page-optimization calculations. Also split |\tracingparagraphs| off from
+ |\tracingstats|. @987,1005,1011
+# The changes above have been incorporated into Version 0.91 of \TeX.
+* 31 Dec 1982
+P590. Break the \\{build_page} procedure into two parts, by extracting
+ the section now called \\{fire_up}. [This is necessary because
+ some Pascal compilers, notably for IBM mainframes, cannot
+ deal with large procedures.] @1012
+S591\>564. Make |\ifodd1\else| legal by introducing \\{if_code}. @489
+Q592. Improve alignments when columns don't occur: Don't append null boxes
+ for columns missing before |\cr|, and zero out the tabskip
+ glue after nonpresent columns. @802
+I593. Make the error message about overfull alignment more intelligible.
+ @801,804
+# The changes above have been incorporated into Version 0.92 of \TeX82,
+ which was the last version of 1982,
+ completed at 11:59pm on December 31.
+* 3 Jan 1983
+# Today I'm beginning to write Chapter 15, and
+ planning the |\output| routine of |plain.tex|.
+C594\>X186. Change the logic of \\{its_all_over}; use \\{max_dead_cycles}
+ here too, instead of the fixed constant~100. @1054
+F595\>X34. Don't forget to \\{pop_nest} when an insert is empty. Also disallow
+ optional space after |\insert|$\,n\,$|{...}|. @1100
+* 4 Jan 1983
+C596\>541. Use the |\boxmaxdepth| that's declared inside a |\vbox| when packaging it.
+ @1086
+C597. Rename |\groupbegin| and |\groupend| as |\begingroup| and
+ |\endgroup|. @265
+G598\>594. Make |\deadcycles| accessible to users. @1246
+Q599. Base the split insertions on natural height plus depth, not
+ on \\{delta}. @1010
+# The changes above have been incorporated into Version 0.93.
+* 6 Jan 1983
+D600. Add \\{push_math} to handle a case where I forgot
+ to clear \\{incompleat_noad}. (This long-standing bug was
+ unearthed today by Phyllis Winkler.) @1136
+G601\>588. Add |\pageshrink|, etc., too. @1245
+G602. Introduce new parameters |\floatingpenalty|, |\insertpenalties|. Also
+ adopt a new internal representation of insertion nodes,
+ so that |\floatingpenalty|, |\splittopskip| and |\splitmaxdepth|
+ can be stored with each insertion. @140,1008
+* 7 Jan 1983
+Q603. Improve the rules for entering \\{new_line}, in particular
+ when the end-of-line character is active. @343
+* 9 Jan 1983
+Q604. Distinguish between implicit and explicit kerns. @155,896
+C605. Change the name |\ignorespace| to |\ignorespaces|. @265
+C606\>560. Don't omit a blank space after |\def|, |\message|, |\mark|, etc.;
+ the previous hodge-podge of rules is impossible to learn. @473
+# The above changes appear in Version 0.94.
+* 12 Jan 1983
+# Beginning to write the chapters on math today.
+G607. Add a new feature: active characters in math mode. @1151
+* 15 Jan 1983
+A608. Fix a surprise bug: `|$1-$|' treated the |-| as binary. @729
+D609. Initialize \\{space_factor} inside discretionaries. @1117
+* 16 Jan 1983
+F610. Fix an incredibly embarrassing bug: I forgot to update \\{spotless} in the
+ \\{error} routine!
+# While fixing this, I decided to change
+ \\{spotless} to a more general \\{history} variable, as suggested
+ by IBMers who want a return code. @76,82,1335
+I611. Replace two calls of \\{confusion} by attempts at error recovery, in places
+ where `|This can't happen|' could actually happen. @1027,1372
+* 18 Jan 1983
+R612. Introduce the \\{normalize_selector} routine
+ to protect against startup anomalies
+ when the transcript file isn't open. Also make \\{open_log_file}
+ terminate in some cases. @92,535
+R613\>591. Insert |\relax|, not a blank space, to cure infinite
+ loop like |\ifeof\fi| (LL). @510
+G614. Change the old |\limitswitch| to |\limits|, |\nolimits|, and
+ |\displaylimits|. Incidentally, this fixes a bug in the former
+ positioning of integral signs. @682,749
+C615. Give a |\char| in math mode its inherited |\mathcode|. @1151
+Q616\>525. Make underline, overline, radical, vcenter, accent noads and |{...}|
+ all revert to type Ord instead of type Inner. Introduce a new primitive
+ |\mathinner|. (This fixes the spacing, which
+ got worse in some ways after change \#525.) @761
+# I'm working on Appendix G today.
+* 19 Jan 1983
+G617. Introduce a |\mathchoice| primitive. @1174
+C618. Move |\input| from the stomach to the mouth. @378
+C619\>X260. Introduce |\chardef|, analogous to |\mathchardef|. @1038,1224
+G620. Change |\unbox| to |\unhbox| and |\unvbox|; also add |\unhcopy|. @1110
+C621. Consider |\spacefactor|, |\pagetotal|, etc., as part of
+ \\{prefixed_command}, even though they are always global. @1211
+* 20 Jan 1983
+C622. Switch modes when |\hrule| occurs in horizontal mode or |\vrule|
+ in vertical. @1090,1094
+G623. Add a new |\globaldefs| feature. @1211
+* 21 Jan 1983
+E624. Optimize the code, in places where it's important (based on
+ frequency counts of \TeX\ usage
+ accumulated during the past week): Introduce \\{fast_get_avail}
+ and \\{fast_store_new_token}; reduce procedure-call overhead
+ in \\{begin_token_list}, \\{end_token_list}, \\{back_input},
+ \\{flush_node_list}; change some tests from `{\bf if} $a\land b$' to
+ `{\bf if}~$a$ {\bf then if}~$b$'. @122,371
+* 22 Jan 1983
+E625. Save space in math lists: Don't insert penalties within restricted
+ horizontal mode; simplify trivial boxes. @721,1196
+S626. Fix a surprising oversight in the \\{rebox} routine:
+ Ensure that $b$ isn't a vbox. @715
+C627\>545. Make |\nullfont| a primitive, so that \\{cur_font} always
+ has a value. (This is a dramatic improvement over \TeX78, where a
+ missing font was a fatal error called `|Whoa|'!) @552
+* 24 Jan 1983
+I628\>586. List all incomplete |\if|'s when the job ends. @1335
+* 29 Jan 1983
+C629\>552. Change initialization of \\{align_state} so that |\halign\bgroup|
+ works. @777
+* 30 Jan 1983
+D630\>625. Be sure to test `\\{is_char_node}($q$)' when checking for a trivial
+ box. @721
+# By extraordinary coincidence, this bug was caught when somebody
+ used font number~11 ($=\\{kern_node}$) in the second character
+ of a list of length~2!
+I631\>X168. Improve format for stats at end of run, as suggested by DRF. @1334
+# The changes above have been incorporated into Version 0.95.
+C632. Don't ignore the space after a control symbol (except `|\ |'). @354
+P633. Remove all trailing spaces at the right of input lines,
+ so that there's perfect compatibility with IBM systems that
+ extend short lines with spaces. @31
+* 3 Feb 1983
+I634. Assume that a \\{math_accent} was intended, after giving an error
+ message in the case $\\{mmode}+\\{accent}$. @1165
+G635. Add new primitives |\iftrue| and |\iffalse|. @488
+* 6 Feb 1983
+A636\>X304. Improve the accuracy of fixed-point arithmetic when
+ calculating sizes for |\left| and |\right|. (I had started by
+ dividing \\{delimiter_factor}, not \\{delta1}, by 500.) @762
+* 12 Feb 1983
+C637. Change the name |\delimiterlimit| to |\delimitershortfall|. @248
+C638. Make |\abovewithdelims..| equivalent to |\above|; change the
+ order of operands so that delimiters precede the dimension. @1182
+C639\>607. Remove the kludgy math codes introduced earlier;
+ make |\fam| a normal integer parameter and allow |\mathcode|
+ to equal $2^{15}$. @1233
+R640. Don't let |\spacefactor| become more than $2^{15}$. @1233,1243
+# I finished drafting Chapter 17 today.
+* 14 Feb 1983
+I641\>639. Replace octal output (\\{print_octal}) by hexadecimal (\\{print_hex})
+ so that math codes are clearer. @67
+F642\>619. Don't forget \\{char_given} in the \\{math_accent} routine. @1124
+* 17 Feb 1983
+C643\>622. Switch modes when |\halign| occurs in horizontal mode, or |\valign|
+ in vertical mode. @1090,1094
+* 18 Feb 1983
+I644. Add a new feature |\tracingrestores|. This requires a new procedure called
+ \\{show_eqtb}, whose code can be
+ interspersed with the \\{eqtb} definitions. @252
+* 25 Feb 1983
+I645\>622. Suggest using |\leaders| when the user tries a horizontal rule
+ in restricted horizontal mode. @1095
+* 27 Feb 1983
+I646. Specify the range of source lines, when giving warning messages
+ for underfull or overfull boxes in alignments. @662,675
+# Why did it take me all day to type the middle part of Chapter 18?
+* 4 Mar 1983
+G647. Introduce a new feature |\xcr| (suggested by LL). [Changed later to
+ `|\crcr|'.] @785
+I648\>631. Subtract out \TeX's own string requirements from the stats. @1334
+* 6 Mar 1983
+G649. Add new features |\everyhbox| and |\everyvbox|. @1083,1167
+* 9 Mar 1983
+R650\>X295. Avoid accessing \\{math_quad} when the symbol fonts aren't known
+ to be present. @1199
+P651\>533. Introduce \\{float} and \\{unfloat} macros to aid portability (HWT). @109
+C652. Introduce new names |\abovedisplayskip| and |\belowdisplayskip| for
+ the old |\dispskip|; also |\abovedisplayshortskip| and
+ |\belowdisplayshortskip| for the old |\dispaskip| and |\dispbskip|. @226
+* 10 Mar 1983
+C653. Unbundle |\romannumeral| from |\number| (suggested by FY). @468
+* 12 Mar 1983
+C654. Ignore leading spaces in \\{scan_keyword}. @407
+* 14 Mar 1983
+E655\>631. Use \\{write} and \\{write_ln} directly when printing stats. @1334
+* 16 Mar 1983
+Q656\>602. Refine the page-break cost function (introducing `\\{deplorable}',
+ which is not quite `\\{awful_bad}'), after suggestion by LL. @974,1005
+# The changes above have been incorporated into Version 0.96.
+* 18 Mar 1983
+G657. Add a new feature |\everyjob| suggested by FY. @1030
+* 19 Mar 1983
+I658. Don't treat left braces specially when showing macros. @294
+C659. Ignore blanks that would otherwise become undelimited arguments. @393
+* 21 Mar 1983
+F660\>X280. Make |\lastskip| handle \\{mu_glue} as well as ordinary glue. @424
+C661\>561. Expand only one level in a preamble |\span|. @782
+* 22 Mar 1983
+C662. Let a single |#| suffice in |\tokens|, |\message|, etc. (The previous rule,
+ in which |##| was always required as in macros, was a loser especially
+ in |\write| where you had to say |####|!) @477
+C663\>X328. Require the keyword `|to|' in |\read|. (This will avoid the common error
+ of an incomplete constant when no space appears
+ before the |\cs|.) Also allow terminal
+ I/O as a default when a stream number is out of range. @482,1225,1370
+* 26 Mar 1983
+C664. Replace |\ifeven|\<countnumber> by |\ifodd|\<number>, for better
+ consistency of language. @504
+S665\>564. Introduce the \\{change_if_limit}, to overcome a big surprise
+ bug relating to |\if\if aabc\fi|. @497
+# Such examples show that \\{cur_if} might not be current,
+ in my original implementation.
+* 28 Mar 1983
+G666\>X326. Tolerate non-characters as arguments to |\if| and |\ifcat|. @506
+C667. Change `|absent|' to `|void|', a better word. @487
+C668. Clear the \\{shift_amount} in |\lastbox|, since I don't
+ want to figure out what it means in all cases. @1081
+* 29 Mar 1983
+I669. Wake up the terminal before giving an error message. (This
+ means a special \\{print_err} procedure is introduced.)
+ (Suggested by DRF.) @34,73
+* 1 Apr 1983
+# Today I finished Chapter 21 (boxes) and began to draft Chapter 22 (alignments).
+G670. Allow periodic preambles in alignments. @793
+C671. Make |\leaders| line up according to the smallest
+ enclosing box. @627,636
+Q672. Allow hyphenation after whatsits (e.g., after items for an index). @896
+* 2 Apr 1983
+Q673. Call \\{build_page} when |\par| occurs in vertical mode. @1094
+C674. Clear \\{aux} in \\{init_row}, for tidyness. @786
+* 4 Apr 1983
+C675. Let digits switch families in math mode. @232
+* 7 Apr 1983
+Q676\>602. Refine the test for not splitting an insertion. @1008
+* 8 Apr 1983
+C677\>647. Rename |\xcr| as |\crcr|, at LL's request. @780
+* 9 Apr 1983
+# Took a day off and had a chance to help print a sample page on
+ a 150-year-old letterpress in Murphys, California.
+* 11 Apr 1983
+I678. Recover more sensibly after a runaway preamble. @339
+* 12 Apr 1983
+C679\>X328. Make |\read| span several input lines, if necessary to get
+ balanced braces. @482
+* 14 Apr 1983
+S680. Fix a subtle bug found by JS: \S882 can make $q$ a \\{char_node},
+ so we need to test `{\bf if} $\lnot\\{is_char_node}(q)$'.
+ [Actually I discovered much later that the real bug was
+ to omit `{\bf else}' at this point.] @881
+* 15 Apr 1983
+C681. Make |\uppercase| and |\lowercase| apply to all characters, regardless
+ of category. @1289
+# 7:30am. After working all night, I completed a draft of the manual thru
+ Chapter 22, for distribution to volunteer readers.
+# 5pm. The changes above have been incorporated into Version 0.97.
+* 17 Apr 1983
+R682. Change `\\{small_number}' to `$0\,.\,.\,65$' in the
+ hyphenation routine (DRF). @901
+I683. Flush patterns in the input when the user tries |\patterns|
+ outside of\/ |INITEX| (suggested by DRF). @1252
+# Tomorrow I fly to England, where I'll lecture and write a paper about
+ `Literate Programming' [{\sl Comp.~J. \bf27} (1984), 97--111].
+* 14 May 1983
+I684\>663. Improve the behavior of\/ |\read| from terminal
+ (suggested by Todd Allen at Yale).
+ [I'd forgotten to implement the extended stream numbers in \#663.
+ Also, the prompt is now omitted if $n<0$.] @484
+* 18 May 1983
+I685. Restrict |\write| $n$ to the transcript file only, if $n<0$. @1350
+C686\>X188. Unify the syntax for registers and internal quantities. (Remove
+ primitives called `|\insthe|' and `|\minusthe|'; rename
+ \\{scan_the} to \\{scan_something_internal}, and change its
+ interface accordingly; clean up command codes generally.) @209,413
+G687. Introduce new parameters |\hoffset|, |\voffset|. @617
+* 24 May 1983
+G688. Introduce a new parameter |\everycr| (suggested by MDS). @774,799
+# Many macro writers and preliminary-manual readers have been requesting
+ new features; I'll try to keep the language as concise and consistent
+ as possible.
+* 25 May 1983
+G689. Introduce |\countdef|, |\dimendef|, etc.\ (suggested by DRF long ago,
+ easy now in view of \#686). @1224
+G690. Introduce |\advance|, |\multiply|, |\divide| (suggested by FY). @1240
+G691. Introduce |\hyphenchar|; this requires a new command
+ \\{assign_font_int}, plus minor changes to about 15 modules. @915
+G692. Introduce |\skewchar| (easy because of \#691). @741
+G693. Introduce |\noexpand|. (I had difficulty thinking of how to
+ implement this one!) @358,369
+G694. Introduce |\meaning|. @296
+G695\>X231. Remove `|dm|' and `|vu|'; allow the more general `|.5\hsize|'. @455
+C696. Change `|\texinfo| $f$ $n$' to `|\fontdimen| $n$ $f$'. @578
+* 27 May 1983
+G697. Add a new feature |\afterassignment| (suggested by ARK). @1269
+C698\>619. Adjust the timing so that commands like `|\chardef\xx=5\xx|'
+ behave sensibly. @1224
+* 28 May 1983
+C699. Ignore `|\relax|' as if it were a space, in math mode and in a few other
+ places where |\relax| would otherwise be erroneous. @404
+Q700. Improve |\mathaccent| spacing with respect to subscripts
+ and superscripts (suggested by HWT). @742
+* 30 May 1983
+C701\>598. Terminate a job only when $\\{dead_cycles}=0$. @1054
+# The changes above constitute Version 0.98.
+* 3 Jun 1983
+# I finished the draft of Chapter 23 (output routines) today.
+G702. Allow |\mark| and |\insert| and |\vadjust| in restricted
+ horizontal mode, and also in math mode. (This is a comparatively
+ big change, triggered by the fact that |\mark| in a display
+ presently causes \TeX\ to crash with `|This can't happen|'!)
+ The global variable \\{adjust_tail} is introduced. @796,888,1085
+* 6 Jun 1983
+G703\>695. Replace (and generalize) the previous uses of\/ |ht|, |wd|, and |dp|
+ in dimensions by introducing the new control sequences
+ |\ht|, |\wd|, and |\dp|. @1247
+I704. Display sub-parts of noads with the symbols |^| and |_| instead of
+ |(| and~|[|. @696
+C705\>694. Allow |A..F| in hex constants to be \\{other_char} as well as
+ \\{letter}. @445
+* 7 Jun 1983
+E706\>654. Remove an instance of \<Scan optional space>, since it's now
+ redundant. @457
+C707. Legalize |\mkern\thinmuskip| and |\mkern5\thinmuskip|. @456
+C708. Clean up the treatment of optional spaces in numerical specifications. @455
+# A construction like |2.5\space\space\dimen0| was previously
+ valid after `|plus|' or `|minus|' only!
+# I'm obviously working on Chapter~24 today.
+C709\>545. Allow `|\font|' as a \<font identifier> for the current font. @577
+C710\>623. Don't make |\gdef| global when $\\{global_defs}<0$. @1218
+E711. Produce \\{zero_glue} as the outcome of
+ |\advance\spaceskip by-\spaceskip|. @1229
+I712. Make |\show| do something appropriate for every possible token. @1294
+G713\>559. Replace the (single) |\tokens| parameter by an array of
+ 256 token registers. @230
+C714. Allow |\indent| in math mode; also make |\valign| in math mode produce the
+ `|Missing|~|$|' error. @1046,1093
+E715. Remove redundant code: There's no need to check \\{cur_group}
+ or call \\{off_save} when starting alignments or equation numbers
+ in displays. @1130,1142
+* 8 Jun 1983
+C716. Disallow |\openout-1| and |\closeout-1|. @1350
+C717. Disallow |\lastbox| in math mode. @1080
+* 9 Jun 1983
+I718. Call \\{back_error}, not \\{error}, when |\leaders| aren't followed by
+ proper glue. @1078
+D719. Initialize for a possible paragraph, after |\noalign|
+ in a |\valign|. @785
+* 10 Jun 1983
+C720\>708. Expand the optional space after an ASCII constant. @442
+* 12 Jun 1983
+C721. Set $\\{space_factor}\gets1000$ after a rule or a
+ constructed accent. @1056,1123
+* 14 Jun 1983
+D722. Correct a serious blunder: Set $\\{disc_width}\gets0$ before testing
+ if $s$ is null (caught by JS). @869
+# This is a real bug that existed since the beginning!
+ It showed up on page~37 of the
+ Version~0 |TRIP| manual, but I didn't notice the problem.
+C723\>708. Make optional spaces after \<dimen> like those after \<number>. @448
+C724\>568. Insert \\{every_display} before calling \\{build_page}. @1145
+I725\>648. Report \TeX's capacity on overflow errors in a way that's
+ fully consistent with other statistical reports. @42
+* 17 Jun 1983
+C726. Make all |\tracing| decisions on the basis of $\ge$ versus $<$,
+ not $\ne$ versus~$=$. @581
+# Today I finished the draft of Chapter 27 (the last chapter)!
+# The changes above were released as Version 0.99 on June 19, 1983.
+* 20 Jun 1983
+C727. Set |\catcode`\%=14| in |INITEX|. @232
+C728\>587. Call \\{normal_paragraph} when |\par| occurs in vertical mode. @1094
+# Once again I'm retiring about 8am and awaking about 4pm.
+* 21 Jun 1983
+C729\>558. Don't append an overfull rule solely because of\/ |\hbadness|. @666
+R730. Don't allow the glue-ratio of shrinking to be less than~$-1$. @810,811
+* 22 Jun 1983
+B731\>653. Declare the parameter to \\{print_roman_int} to be of type \\{integer},
+ instead of \\{nonnegative_integer} (found by Debby Clark). @69
+C732\>690. Make the keyword `|by|' optional (suggested by LL). @1236
+* 24 Jun 1983
+I733. Say `|preloaded|' when announcing \\{format_ident}. @1328
+* 25 Jun 1983
+R734. Add extra boxes and
+ glue to the output of alignment. [This thwarts possible attempts
+ at trickery by which system-dependent glue set values
+ computed by |\span| could have gotten into \TeX's registers by
+ things like |\valign| and |\vsplit|. It also has the advantage
+ of perfect accuracy in alignment of vertical rules.] @809
+C735. Make leaders affect the height or width of the enclosing boxes. @656,671
+# Today I'm mainly installing a much-improved format for change files
+ in |WEB| programs (suggested by DRF).
+* 28 Jun 1983
+C736. Permit |\unskip| in vertical mode when we know that it does nothing. @1106
+* 1 Jul 1983
+E737\>700. Avoid redundant boxes when things like `|{\bf A}|' occur in math. @1186
+G738. Add a `|scaled|' feature to |\font| input. @1258
+D739\>700. Remember to correct \\{delta} when an accented box changes. @742
+* 2 Jul 1983
+R740.Introduce \\{bypass_eoln}, to remove anomalous behavior on input files
+ of length~1. (Suggested by DRF after the problem was discovered by LL). @31
+* 4 Jul 1983
+G741. Allow codes like |^^b| as well as |^^B|. @352,355
+G742. Introduce new parameters |\escapechar|, |\endlinechar|, |\defaulthyphenchar|,
+ and |\defaultskewchar|, to make \TeX\ less dependent on the
+ character set. (This affects many modules, since a lot of
+ error messages must be broken up so that they use \\{print_esc}.)
+* 7 Jul 1983
+P743. Use a system-dependent function \\{erstat} when opening or closing
+ files (suggested by DRF). @27
+* 11 Jul 1983
+# The computer is back up after more than 50 hours down time
+ (due to air conditioning failure).
+I744. Show total glue in the output of\/ |\tracingpages|. @985
+R745. Guard against insertion into an hbox. @993
+C746. Legalize the assignment \<tokenvar>=\<tokenvar>. @1227
+I747. Introduce a new parameter |\errhelp|. @1283
+F748\>623. Don't forget to check \\{global_defs} when |\tabskip| is changed. @782
+* 12 Jul 1983
+C749. Allow an |\outer| macro to appear after |\string|, |\noexpand|,
+ and |\meaning| (Todd Allen). @369,471
+C750. Make `|\the|' an expandable control sequence (i.e., move it
+ from the stomach to the throat); this cleans up
+ several annoying glitches. @367
+C751\>620. Allow |\unhbox| and |\unhcopy| in math mode if the box is void. @1110
+* 13 Jul 1983
+# I lectured for four hours at the TUG meeting today after very little sleep!
+* 16 Jul 1983
+# The following were suggested by TUG meeting discussions.
+L752. Round the value of \\{default_rule} more properly: It should be 26215. @463
+Q753\>700. Fix |\mathaccent| again; it's still not right!
+ The final height should be the maximum of
+ the height of accented letter without superscript and
+ the height of unaccented letter with superscript. @742
+G754. Add a new feature |\newlinechar|. @59
+G755. Allow boxes and rules in discretionaries (suggested by somebody
+ from Hewlett-Packard). @1121
+I756\>X28. Show all token expansions, not just macros,
+ when |\tracingcommands|. @367
+C757. Allow |\char| in a |\hyphenation| list. @935
+G758. Introduce a new feature |\aftergroup|; it can be implemented with
+ \\{save_stack}. @326
+C759. Run the running dimensions to alignment boundaries (suggested
+ by ARK). @806
+* 17 Jul 1983
+R760. Zero out \\{hyf} values at the edges, so that
+ weird pattern data cannot lead to Pascal range checks. @965
+R761\>X190. Decrease the |hc| codes for hyphenation, so that code~127 cannot
+ possibly be matched. @937,962
+C762\>672. Allow whatsits after hyphenatable words. @899
+C763\>604. Represent an italic correction as an explicit kern. @1113
+* 18 Jul 1983
+C764. Allow lowercase letters in file names. @519
+I765. Change the message `|No output file|' to: `|No pages of output|'. @642
+I766. Confirm that a quiet mode is being entered, when error
+ interaction ends with |Q|, |R|, or |S| (suggested by ARK). @86
+# Version 0.999 was finally installed today; a new program listing has
+ been printed.
+# From now on, I plan to keep all section numbers unchanged.
+# I'm done writing Appendix~H; beginning to revise Chapter~20.
+* 25 Jul 1983
+C767\>663. Allow space after `|to|' in the |\read| command (FY). @1215
+# To bed at 1pm today.
+* 27 Jul 1983
+S768\>665. Stack the current type of\/ |\if|; this precaution is necessary
+ in general (FY). @498
+# To bed at 2pm today.
+* 29 Jul 1983
+E769. Avoid putting a control sequence in the hash table
+ when it occurs after |\ifx|. (Requested by Math Reviews people.) @507
+# Finished a version of {\sl The \TeX book\/} lacking only Appendices
+ D, E, and~I, for distribution to interested readers.
+# To bed at 10:30pm, planning to arise regularly at 6am for a change.
+* 31 Jul 1983
+I770\>766. Call \\{update_terminal} when going quiet (HWT). @86
+* 1 Aug 1983
+C771. Don't put an empty line at the end of an |\input| file! (This simplifies
+ the rules and the program, and also gets around a bug that occurred
+ at the end of files with $\\{end_line_char}<0$.) @362
+# The changes above went into Version 0.9999, which was widely distributed.
+* 16 Aug 1983
+B772\>665. Rectify a ridiculous gaffe: I initialized $q$ every time the loop
+ of \\{change_if_limit} was performed! (Found by FY.) @497
+I773\>648. Distinguish `|string|' from `|strings|' when reporting statistics. @1334
+A774. Introduce \\{lx}, to correct a bug in |\xleader| computations
+ (found by FY). @627
+* 20 Aug 1983
+F775. Don't forget to apply |\/| to ligatures. @1113
+# Today I began to read all previous issues of {\sl TUGboat}, in preparation for
+ Appendix~D.
+* 27 Aug 1983
+I776. Add debugging hack number~16, to help catch subtle data structure bugs. @1339
+E777. Remove redundant setting and resetting of \\{name_in_progress}. @531
+S778\>618. Suppress |\input| during a font size spec; otherwise
+ \\{cur_name} is clobbered (found by MDS). @1258
+G779. Introduce new conditionals |\ifhbox| and |\ifvbox|. @505
+* 29 Aug 1983
+D780\>750. Test for an empty list, if emptiness will mess up the data structure.
+ (Found by Todd Allen.) @478
+E781\>624. Use \\{fast_store_new_token} in another place for efficiency. @466
+I782. Say `|has only|' instead of `|has|'. @579
+# These changes yield Version 0.99999, used only at Stanford.
+* 30 Aug 1983
+C783. Make funny blank spaces showable. @298
+* 31 Aug 1983
+C784\>754. Make |\newlinechar| affect \\{print_char}, not just \\{print}. @58
+* 4 Sep 1983
+G785. Add new features |\lastkern|, |\lastpenalty|, |\unkern|, |\unpenalty|.
+ @424,996,1105
+# OK, Appendix D is finished!!
+# The above changes have been installed in Version 0.999999.
+* 17 Sep 1983
+P786\>548. Don't bother making duplicate font identifiers; that
+ was overkill, not really needed. @1258
+# Will this be the historic last change to \TeX?
+* 18 Sep 1983
+I787. Correct a minor inconsistency, `|display|' not `|displayed|'. @211
+* 20 Sep 1983
+C788\>604. Treat the kerns inserted for accents as explicit kerns. @1125
+* 26 Sep 1983
+I789. Change `|log|' to `|transcript|' in several messages. @535,1335
+# The index was finished today; I mailed the entire {\sl \TeX book\/} to
+ Massachusetts for final proofreading before publication.
+* 1 Oct 1983
+D790. Prevent uninitialized trie positions in case of overflow
+ (found by Bernd Schulze). @944
+* 7 Oct 1983
+# Henceforth our weekly `\TeX\ lunch' meetings will be called `\MF\ lunch'.
+# DRF begins to produce {\sl The \TeX book\/} on our APS phototypesetter.
+* 14 Oct 1983
+P791\>633. Ignore spaces at the ends of lines also in |TEX.POOL| (found
+ by DRF). @52
+D792\>610. Initialize the \\{history} variable at \\{start_here} (DRF). @1332
+* 18 Oct 1983
+I793. Extend \\{runaway} to catch runaway text (suggested by FY). @306
+D794. Reset \\{cur_cs} after \\{back_input}, not after scanning the
+ `|=|' (found by FY). @1226
+* 24 Oct 1983
+I795\>638. Change the error recovery for bad delimiters, in accordance with
+ the changed syntax. (Found by Barry Smith.) @1183
+* 9 Nov 1983
+E796. Optimize the code a bit more, based on empirical frequency data gathered
+ during September and October: In \S45, use the fact that the
+ result is almost always true. In \S380, delete `{\bf while}
+ \\{true} {\bf do}' since many compilers implement that badly.
+ Rewrite \S852 to avoid calling \\{badness} in the most common case.
+ @45,380,852
+* 3 Dec 1983
+F797. Don't forget to call |error| after the message has been
+ given (noticed by Gabi Kuper). @500
+# Version 1.0 released today incorporates all of the above.
+* 9 Dec 1983
+# Dinner party with 36 guests to celebrate \TeX's coming of age.
+* 2 Feb 1984
+S798\>786. Reinstall |\font| precautions that I thought were unnecessary.
+ I overlooked many problematic possibilities, like
+ `|{\font\a=x| |\global\a}| |\the\font|'
+ and `|\font\a=x| |\font\b=x| |\let\b=\undefined| |\the\a|', etc.
+ (Found by Mike Urban.) The new remedy involves removal of the
+ \\{font_ident} array and putting the identifiers into a frozen
+ part of the hash table; so there's a sprinkling of corrections
+ in lots of modules. But basically the change is quite conservative,
+ so it shouldn't spawn any new bugs (it says here). @222,267,1257
+* 9 Feb 1984
+S799. Remove the possibility of double interrupt, in a scenario
+ found by Clint Cuzzo. @1031
+* 12 Feb 1984
+Q800. Improve spacing in a formula like |$(A,<)$|. @764
+* 13 Feb 1984
+A801. Avoid a bad {\bf goto}, as diagnosed by Clint Cuzzo and George O'Connor.
+ (Must not go directly to \\{switch}.) @346
+E802. Conserve string pool space by not storing file name in two
+ guises (suggested by DRF). @537
+* 26 Feb 1984
+I803. Make scaled output look cleaner by printing fewer decimals whenever
+ this involves no loss of accuracy. (Suggested by \MF\ development.) @103
+* 2 Mar 1984
+R804. Maintain 17-digit accuracy, not 16; now
+ constants like `|.00000762939453126pt|' will round correctly. @452
+* 16 Mar 1984
+R805. Plug a loophole that permitted recursion in \\{get_next}, by disallowing
+ deletions in \\{check_outer_validity}. @336
+* 24 Mar 1984
+I806. Open the terminal before trying to wake it up, when the program starts bad.
+ @1332
+* 27 Mar 1984
+R807. Check that $k<63$, to avoid the
+ |\patterns{xxx...xxxdxxxdxxx}| anomaly found by Jacques D\'esarm\'enien. @962
+* 11 Apr 1984
+F808. Supply code for the missing case \\{adjust_node} in \\{copy_node_list}. @206
+# Yoicks, how could serious bugs like that have escaped detection?
+* 11 Jun 1984
+D809\>627. Initialize \\{char_base}, etc., for \\{null_font}.
+ (Found by Nick Briggs.) @552
+R810. Clear the \\{buffer} array initially (Briggs). @331
+* 21 Jun 1984
+C811. Look ahead for ligature or kern after a |\chardef|'d item
+ (D\'esarm\'enien). @1038
+* 4 Jul 1984
+R812. Make the quarterword constraint explicit with a
+ new `\\{bad}' case (19). @111
+* 7 Jul 1984
+E813. Optimize \\{firm_up_the_line} slightly,
+ to be consistent with the \MF\ program. @363
+* 8 Jul 1984
+I814. Give additional diagnostics when |\tracingmacros>1|. @323
+# The changes above were incorporated in Version 1.1, released July 9, 1984.
+* 27 Jul 1984
+I815. Say `|see| |the| |transcript| |file|' after handling offline |\show|
+ commands. (Suggested by \MF.) @1298
+* 20 Oct 1984
+I816. Allow `|0|' in response to error prompts. @84
+# Those two changes led to Version 1.2.
+* 25 Nov 1984
+R817. Don't forget to check for \\{null} before looking at subfields
+ of a node. (This was ``dirty Pascal,'' with two quarterword 0's
+ read as a halfword.) @846
+R818. Ditto in another place! @939
+E819. Remove the fixed-at-compile-time
+ partition between lower and upper memory. @116,125,162
+# This major change in memory management
+ completes Version 1.3, which was published in preliminary
+ looseleaf form as `\TeX: The Program'.
+* 20 Dec 1984
+R820. Keep the \\{node_size} field from overflowing if the lower part of memory
+ is too large. @125
+# That was another bug in existence from the beginning!
+* 5 Jan 1985
+I821. Improve the missing-format-file error (DRF). @524
+* 7 Jan 1985
+I822. Update the terminal right away so that the welcoming message will
+ appear as soon as possible (DRF). @61
+* 23 Jan 1985
+I823. Convey more uncertainty in the
+ help message at times of \\{confusion}. @95
+I824\>610. Improve the \\{history} logic in the \\{warning_issued} case. @245
+* 18 Feb 1985
+P825\>810. Stick to standard Pascal: Don't
+ use \\{first} in a {\bf for} loop. [Some procedures ``threaten'' it
+ globally, according to British Standard 6192, section 6.8.3.9.]
+ (Pointed out by CET.) @331
+* 11 Apr 1985
+S826. Prevent nonexistent characters from being output by
+ unusual combinations of ligatures and hyphenation. @915
+* 15 Apr 1985
+L827\>819. Compute memory usage correctly in |INITEX|; the previous number
+ was wrong because of a |WEB| text macro without parentheses (DRF). @164
+* 16 Apr 1985
+E828. Speed up \\{flush_list} by not calling \\{free_avail} (DRF). @123
+* 17 Apr 1985
+A829\>788. Introduce a special kind of kern for accent positioning;
+ it must not disappear after a line break. @837,879,1125
+* 18 Apr 1985
+R830\>755. Prevent |\lastbox| and |\unkern| from removing discretionary replacements.
+ @1081,1105
+# That completes Version 1.4.
+* 26 Apr 1985
+C831. Don't try \\{\TeX_area} if a nonstandard file area has been specified
+ (DRF). @537
+# That was \#401 in \TeX78; I never learn!
+* 30 Apr 1985
+C832\>754. Eliminate the limitation on |\write| length; the reason for it
+ has disappeared (Nancy Tuma). @1370
+* 8 May 1985
+D833\>819. Allocate two words for the head of the \\{active} list (CET). @162
+* 11 May 1985
+I834. Change \\{wterm} to \\{wterm_ln} after a bad beginning (Bill Gropp). @1332
+E835\>806. Don't open the terminal twice (CET). @1332
+* 22 May 1985
+R836. Test for \\{batch_mode} after trying to open the transcript file,
+ not before (DRF). @92
+R837. Be prepared for string pool overflow while reading the command line!
+ (This bug was first found in \MF, when it could occur more easily.) @525
+* 7 Aug 1985
+A838. Fix a bug in |\edef\foo{\iffalse\fi\the\toks0}|: \TeX\ should stay in the
+ loop when expanding non-|\the|. (Found by Dan Brotsky.) @478
+# The above changes were incorporated in Version 1.5.
+* 27 Nov 1985
+C839\>764. Make `|plain|' a lowercase name, for consistency with the manual. @521
+I840\>669. Wake up the terminal for |\show| commands. @1294,1297
+# The above changes were incorporated in Version 2.0, which was published
+ as Volume~B of the {\sl Computers \& Typesetting\/} series.
+* 15 Dec 1986
+I841. Punctuate the Poirot help message more carefully. @1283
+* 28 Jan 1987
+R842. Make sure that \\{max_in_open} doesn't exceed 127 (DRF). @14
+D843\>680. Don't allow a |\kern| to be clobbered at the end of a pre-break list
+ when a discretionary break is taken. (A missing `{\bf else}' was the
+ source of the error, diagnosed incorrectly before.) @881
+D844. Take account of discarded nodes when computing the background width
+ after a discretionary. @840
+# That was the first really serious bug detected for more than 17 months! I found it
+ while experimenting with right-to-left extensions.
+# Version 2.1 was released on January 26, 1987.
+* 5 Feb 1987
+E845. Remove cases in \\{shorthand_def} that cannot occur (found by Pat Monardo). @1224
+* 14 Apr 1987
+R846. Improve robustness of data structure display
+ when debugging (Ronaldo Am\'a). @174,182
+* 21 Apr 1987
+E847. Make the storage allocation algorithm more elegant and efficient. @127
+* 22 Apr 1987
+A848\>742. Calculate the empty-line condition properly when \\{end_line_char} is
+ absent. @360
+# The previous three changes were found while I was teaching a class based
+ on Volume~B; they led to Version 2.2.
+* 28 Apr 1987
+E849. Avoid closing a file when \TeX\ knows that it isn't open (JS). @560
+* 3 Aug 1987
+S850. Clean up unfinished output if it's necessary to
+ \\{jump_out} (Klaus Gunterman). @642
+# That makes Version 2.3; subsequent version numbers won't be logged here.
+* 19 Aug 1987
+A851. Indent rules properly in cases like\hfil\break
+ |\hangindent=1pt$$\halign{...\cr\noalign{\hrule}}$$|. @806
+* 20 Aug 1987
+S852. Introduce \\{co_backup} because of cases like
+ |\hskip 0pt plus 1fil\ifdim| (Alan Guth). @366
+* 9 Nov 1987
+S853. Change the calculation for number of leader boxes, so that
+ it won't be too sensitive to roundoff error near exact multiples
+ (M. F. Bridgland). @626
+* 17 Nov 1987
+A854. Replace my stupid algorithm
+ for fixed-point multiplication of negatives (WGS). @572
+* 12 Dec 1987
+B855. Fix a typo in the initialization of hyphenation tables (PB). @952
+# That error was almost completely harmless, thus undetectable,
+ except if some |\lccode| is~1 and no |\patterns| are given.
+* 23 Dec 1987
+S856\>564. Be more cautious when ``relaxing'' a previously undefined |\csname|;
+ you might be inside a group (CET). @372
+* 20 Apr 1988
+S857. Make sure \\{temp_head} is well-formed whenever it can be
+ printed in a ``runaway'' message: Consider constructions like
+ |\outer\def\a0{}\a\a| (Silvio Levy). @391
+* 24 Apr 1988
+S858\>618. Avoid conflicting use of the string pool in constructions like
+ |\def\\#1{}\input a\\\z| (Robert Messer). @260
+* 10 May 1988
+R859. Amend the |\patterns| data structure when $\\{trie_min}=0$
+ (PB). @951,953
+* 25 May 1988
+R860. Guarantee that \\{trie_pointer} cannot be out of range. @923
+S861\>618. Avoid additional bugs like \#858 in constructions
+ like |\input a\romannumeral1|, etc. @464,465,470
+R862\>618. Prevent similar string pool confusion that could occur
+ during the processing of |**\input\romannumeral6|. @525
+* 19 Jun 1988
+S863\>819. Prevent a negative dividend from rounding upward,
+ causing a loop (CET). @126
+E864\>819. Adopt a smoother allocation strategy when
+ memory is nearly gone (CET). @126
+* 20 Jun 1988
+D865\>852. Initialize \\{cur_order}, now that it's being backed up
+ (Tsunetoshi Hayashi). @439
+* 6 Nov 1988
+S866\>612. Disable \\{fatal_error} in \\{prompt_input}, so that
+ \\{open_log_file} can use it safely (Tim Morgan). @71
+S867\>836. Force terminal output whenever \\{open_log_file} fails. @535
+* 14 Dec 1988
+P868\>866. Restore \\{fatal_error} in \\{prompt_input}, but don't
+ let it be unsafe for \\{open_log_file}. @92,534
+* 23 Jan 1989
+D869. Give $q$ a legal value when recovering from ``infinite shrinkage''
+ error. @976,1004
+* 17 Feb 1989
+D870\>758. Avoid spurious error message for |\aftergroup\relax\dump| by avoiding
+ inaccessible |\aftergroup| tokens (FM and Rainer Sch\"opf). @280
+* 20 Mar 1989
+R871. Don't refer to \\{link}(\\{null}) even when it ``can't happen''
+ (PB). @791
+* 7 Jun 1989
+S872. Avoid confusion from |$$\begingroup\halign{#\cr}$$| (FM). @1130
+* 20 Jun 1989
+S873. Put fraction digits into dynamic memory, not the global \\{dig} array,
+ because of constructions like |.5\ifdim.6| (FM). @452
+* 17 Jul 1989
+S874. Prevent embarrassing attempts to report errors before the string
+ mechanism has been fully initialized, for example when the
+ command line exceeds the buffer size (WGS). @31
+* 16 Aug 1989
+M875. Allow integer products to be 31 bits long (FM). @105
+* 31 Aug 1989
+C876\>441. Increase the number of tokens shown by \\{token_show}
+ (J. Lavagnino). @295
+S877. Avoid confusion from |$$\begingroup\eqno$$| (FM). @1140
+# The recent TUG meeting turned out to be an extend-\TeX-for-the-nineties
+ party! I agreed that some extensions for non-English languages
+ ought to be made while I still knew how to do them. (In other words,
+ I broke my firm commitment to keeping \TeX\ completely stable;
+ but in this case nobody objected.) The following eleven changes
+ were coded during the month of September.
+* 30 Sep 1989
+G878. Install major change allowing general 8-bit code input. @38,352
+G879. Install major change allowing multiple hyphenation tables
+ (M. Ferguson). @923
+G880. Introduce new parameters |\lefthyphenmin| and |\righthyphenmin|. @923
+G881. Introduce major new ligature capabilities including implicit
+ boundary characters. @908,1037
+G882. Install new |\inputlineno| feature suggested by MDS. @424
+G883. Install new |\holdinginserts| feature suggested by FM. @1014
+G884. Install new |\badness| feature. @424,664
+G885. Install new |\emergencystretch| feature. @863
+G886. Install new |\errorcontextlines| feature suggested by FM. @311
+S887. Recover from anomaly when hyphenation |char_warning| clobbers
+ |old_setting|. @863
+P888. Make it easier to change the format extension (Don Hosek). @520,1328
+* 16 Oct 1989
+R889. Avoid range check in null font with |bc=256| (PB). @565
+* 22 Nov 1989
+S890\>856. Prevent \\{save_stack} conflicts in
+ |{\hbox\expandafter{\csname\endcsname}}| and\kern-3pt\break
+ similar constructions (WGS). @645,1117
+S891\>858. System-dependent parts of file names must be addressed relatively,
+ not absolutely (FM and Rainer Sch\"opf). @516,517
+* 3 Dec 1989
+G892\>880. Allow different hyphenmins in the same paragraph (M. Ferguson). @1376
+S893. Distinguish |\par| from characters on |\if| tests. (MVL). @334
+S894\>378. Alignments need to be more robust against malicious
+ attacks (MVL). @782
+C895. Don't let kerns in discretionaries disappear at breaks (MVL). @869
+Q896\>881. Make the new hyphenation reconstruction procedure less cautious,
+ so that it doesn't lose hyphens found by the old method. @914
+* 11 Dec 1989
+D897\>879. Make an undumped trie dumpable again (PB). @1325
+* 18 Dec 1989
+G898\>588. Allow access to page totals in |\output| routines
+ (FM and Chris Rowley). @421
+* 22 Jan 1990
+R899\>611. Recognize more cases of unbalanced |\output| (CET). @1026
+* 29 Jan 1990
+S900\>758. Make |\aftergroup| work properly after |\eqno| (Michael Downes).
+ @1194
+* 1 Feb 1990
+S901\>878. Fix one more case of \\{end_line_char_inactive} (WGS). @360
+* 22 Feb 1990
+R902. Don't lose the last active node when total demerits are very high (FM).
+ @836,854
+* 13 Mar 1990
+D903. Doublecheck math fonts after making equation number (MVL). @1194
+D904. Don't forget to rule out charnodes before testing \\{type} (MVL).
+ @805,1202
+* 23 Mar 1990
+F905\>881. Don't change the font of punctuation preceding a hyphenated word
+ (Scott C. Allendorf). @903
+I906. Balance the parentheses shown on the terminal during normal runs. @1335
+E907. Optimize |\ifx\p\q| after |\let\p=\q| (MVL). @508
+S908. Treat migration properly in displays (MVL). @1199,1205
+# We're now up to Version 3.0; I sincerely hope all bugs have been found.
+* 11 May 1990
+F909\>881. Initialize |\nullfont| ligature parameters (Lance Carnes). @552
+* 22 July 1990
+S910\>579. Treat |\prevgraf| as zero within |\write| (Bogus\l aw Jackowski).
+ @422
+* 26 July 1990
+S911. Report `|l.1|' when first line of file overflows buffer
+ (George Russell). @538
+* 5 December 1990
+S912\>878. Translate unprintable characters in font identifiers (WGS). @63
+* 28 December 1990
+R913. Avoid range check when there are 65536 or more pages (Eberhard Mattes).
+ @642
+* 20 September 1991
+I914\>878. Improve error message for |\mathchar| out of range. @436
+S915\>878. Retain unprintable internal strings in 8-bit form (FM). @59
+S916\>881. Retain right punctuation context for ligature reconstruction
+ (problem found by Brian Hamilton Kelly). @903
+* 10 January 1992
+S917\>881. Also avoid producing a double kern at boundary (CET). @897
+S918. Disallow |\setbox| where it doesn't work (Robert Hunt). @1241,1270
+S919. Robustify |\mskip| and |\mkern| in presence of negative quad (WGS).
+ @716,717
+S920\>679. Defend against `|}{|' in |\read| (Michael Downes). @483
+E921\>798. Save string memory if font occurs repeatedly (Bogus\l aw Jackowski).
+ @1260
+S922\>784. Don't let |\newlinechar| interrupt unprintable expansion (Bernd
+ Raichle). @59,60
+* 7 February 1992
+D923\>881. Restore |cur_l| properly when boundary character doesn't exist
+ (Mattes and Raichle). @1036
+* 17 July 1992
+C924\>892. Use current language at beginning of horizontal mode (Rainer
+ Sch\"opf and CET). @1091,1200
+* 17 December 1992
+R925\>879. Avoid (harmless) range errors (Philip Taylor and CET). @934,960
+* 25 February 1993
+C926\>881. Protect kerns inserted by boundary characters (William Baxter).
+ @837,866
+S927\>917. Don't let boundary kern disappear after hyphenation. @897
+* 26 June 1993
+R928\>668. Avoid potential future bug (Peter Breitenlohner). @628,637
+* 17 December 1993
+S929\>881. Boundary character representation shouldn't depend on font
+ memory size (Berthold Horn). @549,1323
+* 10 March 1994
+R930. Huge font parameter number may exceed array bound (CET). @549
+* 4 September 1994
+F931\>926. Math kerns are explicit (Walter Carlip). @717
+R932. Avoid overflow on huge real-to-integer conversion. @625,634
+* 19 March 1995
+R933. Avoid spurious reference counts in format files (PB). @1335
+\relax
+\bye
+
+Up to a point it is better to let the snags [bugs] be there
+than to spend such time in design that there are none
+(how many decades would this course take?).
+-- A M Turing
+ Proposals for Development in the Mathematics Division
+ of an Automatic Computing Engine (ACE)
+ Report E882, Executive Committee, National Physical Laboratory (NPL)
+ 1945; reprinted in April 1972 as NPL report Com Sci 57
+ page 18
+ quoted by Carpenter and Doran in The Computer Journal 20 (1977), 273.
+
+DRF David Fuchs
+HWT Howard Trickey
+FY Frank Yellin
+LL Leslie Lamport
+JS Jim Sterken
+ARK Arthur Keller
+CET Chris Thompson
+FM Frank Mittelbach (added subsequent to publication of paper)
+PB Peter Breitenlohner (ditto)
+WGS Wayne G. Sullivan (ditto)
+MVL Marc van Leeuwen (ditto)
+MDS Michael D. Spivak (ditto)
diff --git a/Master/texmf-doc/doc/english/knuth/expr.mf b/Master/texmf-doc/doc/english/knuth/expr.mf
new file mode 100644
index 00000000000..fe05a01322f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/expr.mf
@@ -0,0 +1,5 @@
+string s[]; s1="abra";
+path p[]; p1=(0,0)..(3,3); p2=(0,0)..(3,3)..cycle;
+tracingonline:=1; scrollmode;
+forever: message "gimme an expr: "; s0:=readstring;
+show scantokens s0; endfor
diff --git a/Master/texmf-doc/doc/english/knuth/index.html b/Master/texmf-doc/doc/english/knuth/index.html
new file mode 100644
index 00000000000..b3b0e7b9658
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/index.html
@@ -0,0 +1,193 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML>
+<HEAD>
+<TITLE>Index of texmf/doc/knuth/</TITLE>
+<!-- Created: UV, 1996/02/25 -->
+<!-- Last Updated: UV, 1998/08/15 -->
+</HEAD>
+
+<BODY>
+<H1>Index of <CODE>texmf/doc/knuth/</CODE></H1>
+
+<HR>
+
+<P> This page provides access to documentation from Donald Knuth
+about various aspects of TeX:
+<UL>
+ <LI><A HREF="#manuals">
+ TeX &amp; METAFONT Manuals</A>
+ <LI><A HREF="#examples">
+ TeX &amp; METAFONT Examples</A>
+ <LI><A HREF="#errorlog">
+ TeX &amp; METAFONT Errata</A>
+ <LI><A HREF="#triptrap">
+ Literate Programming</A>
+ <LI><A HREF="#triptrap">
+ Trip &amp; Trap Test Manuals</A>
+ <LI><A HREF="#errata">
+ Errata in <CITE>Computers &amp; Typesetting</CITE></A>
+</UL>
+
+
+<HR>
+<H2><A NAME="manuals">TeX &amp; METAFONT Manuals</A></H2>
+
+<P>
+These manuals are distributed only for people to see the
+examples of TeX input, not for use in the preparation of books
+like <CITE>The TeXbook</CITE> or <CITE>The TeXbook</CITE>.
+These manuals are copyrighted and should not be TeXed!
+<DL>
+ <DT><A HREF="texbook.tex">texbook.tex</A><BR>
+ <DD>This file is the TeX source of <CITE>The TeXbook</CITE>
+ by Donald E. Knuth, last updated in August 1998.
+
+ <DT><A HREF="mfbook.tex">mfbook.tex</A><BR>
+ <DD>This file is the TeX source of <CITE>The METAFONTbook</CITE>
+ by Donald E. Knuth, last updated in August 1998.
+
+ <DT><A HREF="mfman.mf">mfman.mf</A><BR>
+ <DD>This file is the METAFONT source of most of the figures
+ in the <CITE>The METAFONTbook</CITE>. It can be run
+ through METAFONT and GFtoDVI to produce proof sheets.
+</DL>
+
+
+<H2><A NAME="examples">TeX &amp; METAFONT Examples</A></H2>
+<DL>
+ <DT><A HREF="story.tex">story.tex</A><BR>
+ <DD>This is the canonical example file for TeX which is
+ described in Chapter 6 of <CITE>The TeXbook</CITE>.
+
+ <DT><A HREF="io.mf">io.mf</A><BR>
+ <DD>This is the canonical example file for METAFONT which is
+ described in Chapter 5 of <CITE>The METAFONTbook</CITE>.
+
+ <DT><A HREF="expr.mf">expr.mf</A><BR>
+ <DD>This is another example file for METAFONT which is
+ described in Chapter 8 of <CITE>The METAFONTbook</CITE>.
+</DL>
+
+
+<H2><A NAME="errorlog">TeX &amp; METAFONT Errata</A></H2>
+<DL>
+ <DT><A HREF="errorlog.dvi"><CITE>The Error Log of TeX</CITE></A> (DVI)<BR>
+ <DD>This is an updated version of the appendix of the paper
+ <CITE>The Errors of TeX</CITE>, last updated in March 1995.
+ It includes a chronological listing of all changes and bug
+ fixes in TeX (both TeX78 and TeX82) that have been
+ applied since March 1978.
+
+ <DT><A HREF="errata/tex82.bug">tex82.bug</A><BR>
+ <DD>This is a chronological listing of all changes and bug
+ fixes in TeX (specifically TeX82) that have been
+ applied since September 1982.
+
+ <DT><A HREF="errata/mf84.bug">mf84.bug</A><BR>
+ <DD>This is a chronological listing of all changes and bug
+ fixes in METAFONT (specifcally MF84) that have been
+ applied since March 1984.
+
+ <DT><A HREF="errata/cm85.bug">cm85.bug</A><BR>
+ <DD>This is a chronological listing of all changes and bug
+ fixes in the Computer Modern fonts (CM85) that have been
+ applied since April 1985.
+</DL>
+
+
+<H2><A NAME="litprog">Literate Programming</A></H2>
+<DL>
+ <DT><A HREF="webman.dvi">
+ <CITE>The WEB System of Structured Documentation</CITE></A> (DVI)<BR>
+ <DD>This is an abridged version of the manual that describes
+ the WEB system. Not included here are the WEB listings of
+ the <code>tangle</code> and <code>weave</code> programs.
+
+ <DT><A HREF="web.dvi">
+ <CITE>Literate Programming</CITE></A> (DVI)<BR>
+ <DD>This is an online version of the article
+ <CITE>Literate Programming</CITE> by Donald E. Knuth
+ published in <CITE>The Computer Journal</CITE> 1984
+ that describes the philosophy of the WEB system.
+
+ <DT><A HREF="primes.web">primes.web</A><BR>
+ <DD>This is the WEB source of the example program discussed
+ in the article <CITE>Literate Programming</CITE>.
+ (A PASCAL program to print a table of prime numbers.)
+</DL>
+
+
+<H2><A NAME="triptrap">Trip &amp; Trap Test Manuals</A></H2>
+<DL>
+ <DT><A HREF="tripman.dvi">
+ <CITE>A torture test for TeX</CITE></A> (DVI)<BR>
+ <DD>This is an abridged version of the manual that describes
+ the <CODE>trip</CODE> test, a torture test for TeX.
+ (Most of the appendices have been left out since nobody
+ really would want to read that anyway.)
+
+ <DT><A HREF="trapman.dvi">
+ <CITE>A torture test for METAFONT</CITE></A> (DVI)<BR>
+ <DD>This is an abridged version of the manual that describes
+ the <CODE>trap</CODE> test, a torture test for METAFONT.
+ (Most of the appendices have been left out since nobody
+ really would want to read that anyway.)
+</DL>
+
+<H2><A NAME="errata">Errata in <CITE>Computers &amp; Typesetting</CITE></A></H3>
+<UL>
+ <!-- Note: files have been renamed to avoid name conflicts -->
+ <!-- since errata.{one,two,...,tex} all produce errata.dvi -->
+
+ <LI><A HREF="errata/errata1.dvi">
+ Errata in <CITE>The TeXbook</CITE></A> (in the first printing)
+ (October 1984)
+ <LI><A HREF="errata/errata2.dvi">
+ Errata in <CITE>The TeXbook</CITE></A> (in the second printing)
+ (January 1986)
+
+ <LI><A HREF="errata/errata3.dvi">
+ Errata in <CITE>Computers &amp; Typesetting</CITE></A>
+ (15 June 1987)
+ <LI><A HREF="errata/errata4.dvi">
+ Errata in <CITE>Computers &amp; Typesetting</CITE></A>
+ (20 February 1989)
+ <LI><A HREF="errata/errata5.dvi">
+ Errata in <CITE>Computers &amp; Typesetting</CITE></A>
+ (30 September 1989)
+ <LI><A HREF="errata/errata6.dvi">
+ Errata in <CITE>Computers &amp; Typesetting</CITE></A>
+ (31 December 1990)
+ <LI><A HREF="errata/errata7.dvi">
+ Errata in <CITE>Computers &amp; Typesetting</CITE></A>
+ (15 March 1992)
+ <LI><A HREF="errata/errata8.dvi">
+ Errata in <CITE>Computers &amp; Typesetting</CITE></A><BR>
+ (unntil the publication of the `final' printing of Volume C, June 1993)
+ <LI><A HREF="errata/errata9.dvi">
+ Errata in <CITE>Computers &amp; Typesetting</CITE></A><BR>
+ (unntil the publication of the `final' printing of Volume A, April 1996)
+ <LI><A HREF="errata/errata.dvi">
+ Errata in <CITE>Computers &amp; Typesetting</CITE></A><BR>
+ (since the publication of the `final' printings, as of August 1998)
+</UL>
+<UL>
+ <LI><A HREF="http://www-cs-faculty.stanford.edu/~knuth/abcde.html">
+ http://www-cs-faculty.stanford.edu/~knuth/abcde.html</A><BR>
+ Don Knuth's <CITE>Computers &amp; Typesetting</CITE> WWW page.
+
+ <LI><A HREF="http://www-cs-faculty.stanford.edu/~knuth/err-abcde.ps.gz">
+ http://www-cs-faculty.stanford.edu/~knuth/err-abcde.ps.gz</A><BR>
+ Don Knuth's latest errata for <CITE>Computers &amp; Typesetting</CITE>.
+</UL>
+<BR>
+
+<A HREF="../index.html">
+<IMG ALT="Index of texmf/doc/" SRC="../html/icons/back.xbm"></A>
+<HR>
+<ADDRESS></ADDRESS>
+<!-- hhmts start -->
+Last modified: Sat Aug 15 19:22:01 CEST 1998
+<!-- hhmts end -->
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/knuth/io.mf b/Master/texmf-doc/doc/english/knuth/io.mf
new file mode 100644
index 00000000000..58a8be68db2
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/io.mf
@@ -0,0 +1,23 @@
+mode_setup;
+ em#:=10pt#; cap#:=7pt#;
+ thin#:=1/3pt#; thick#:=5/6pt#;
+ o#:=1/5pt#;
+define_pixels(em,cap);
+define_blacker_pixels(thin,thick);
+define_corrected_pixels(o);
+ curve_sidebar=round 1/18em;
+beginchar("O",0.8em#,cap#,0); "The letter O";
+ penpos1(thick,10); penpos2(.1[thin,thick],90-10);
+ penpos3(thick,180+10); penpos4(thin,270-10);
+ x1l=w-x3l=curve_sidebar; x2=x4=.5w;
+ y1=.49h; y2l=-o; y3=.51h; y4l=h+o;
+ penstroke z1e{down}..z2e{right}
+ ..z3e{up}..z4e{left}..cycle;
+ penlabels(1,2,3,4); endchar;
+def test_I(expr code,trial_stem,trial_width) =
+ stem#:=trial_stem*pt#; define_blacker_pixels(stem);
+ beginchar(code,trial_width*em#,cap#,0); "The letter I";
+ penpos1(stem,15); penpos2(.9stem,12); penpos3(stem,10);
+ x1=x2=x3=.5w; y1=h; y2=.55h; y3=0; x2l:=1/6[x2l,x2];
+ penstroke z1e..z2e{down}..z3e;
+ penlabels(1,2,3); endchar; enddef;
diff --git a/Master/texmf-doc/doc/english/knuth/mfman.mf b/Master/texmf-doc/doc/english/knuth/mfman.mf
new file mode 100644
index 00000000000..0bbe24f9de6
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/mfman.mf
@@ -0,0 +1,2474 @@
+% This file generates most of the figures for The METAFONTbook
+
+def clear_all = clearit; clearxy; pickup standardpen;
+proofrulethickness 0;
+enddef;
+
+def heavy_dot expr z =
+ makelabel.top("",z-(1,0));
+ makelabel.top("",z+(1,0));
+ makelabel.top("",z-(0,1));
+ makelabel.top("",z+(0,1));
+ makelabel.top("",z+(1,1)/sqrt2);
+ makelabel.top("",z+(1,-1)/sqrt2);
+ makelabel.top("",z-(1,1)/sqrt2);
+ makelabel.top("",z-(1,-1)/sqrt2);
+ enddef;
+
+def font_setup=
+define_pixels(u,tiny,axis,hheight,border);
+define_blacker_pixels(hair,thin,thick,rulethickness);
+pickup if tiny<.5: nullpen else: pencircle scaled tiny fi;
+tinypen:=savepen;
+currenttransform:=identity slanted slant yscaled aspect_ratio;
+enddef;
+
+mode=proof; mode_setup;
+standardpen=savepen;
+
+"Figure 2a"; % 6 points and a grid
+clear_all;
+pair offset; offset=(.5,.5);
+z1=(0,100)+offset;
+z2=(100,100)+offset;
+z3=(200,100)+offset;
+z4=(0,0)+offset;
+z5=(100,0)+offset;
+z6=(200,0)+offset;
+proofrulethickness .8;
+proofrule (z1+(0,5),z4-(0,5)); proofrule (z4-(5,0),z6+(5,0));
+makelabel.top("1 ",z1);
+makelabel.top("2 ",z2);
+makelabel.top("3 ",z3);
+makelabel.bot("4 ",z4);
+makelabel.bot("5 ",z5);
+makelabel.bot("6 ",z6);
+for k=1 upto 6: heavy_dot z[k]; endfor;
+pickup pencircle;
+for x=10 step 10 until 200: draw (x,-5)+offset..(x,105)+offset; endfor
+for y=10 step 10 until 100: draw (-5,y)+offset..(205,y)+offset; endfor
+showit;
+shipit;
+
+"Figure A2a"; % 6 points and a grid and two more points
+clear_all;
+proofoffset(30,0);
+pair offset; offset=(.5,.5);
+z1=(0,100)+offset;
+z2=(100,100)+offset;
+z3=(200,100)+offset;
+z4=(0,0)+offset;
+z5=(100,0)+offset;
+z6=(200,0)+offset;
+proofrulethickness .8;
+proofrule (z1+(0,5),z4-(0,5)); proofrule (z4-(5,0),z6+(5,0));
+makelabel.top("1 ",z1);
+makelabel.top("2 ",z2);
+makelabel.top("3 ",z3);
+makelabel.bot("4 ",z4);
+makelabel.bot("5 ",z5);
+makelabel.bot("6 ",z6);
+for k=1 upto 6: heavy_dot z[k]; endfor;
+makelabel.lft("(-5,15)",(-5,15)+offset);
+makelabel.top("(60,30) ",(60,30)+offset);
+%makelabel.top(" ,30) ",(60,30)+offset);
+%makelabel.top("(60 ",(60,30)+offset);
+heavy_dot (-5,15)+offset;
+heavy_dot (60,30)+offset;
+pickup pencircle;
+for x=10 step 10 until 200: draw (x,-5)+offset..(x,105)+offset; endfor
+for y=10 step 10 until 100: draw (-5,y)+offset..(205,y)+offset; endfor
+showit;
+shipit;
+
+"Figure 2b"; % 6 points and a line
+clear_all;
+z1=(0,100);
+z2=(100,100);
+z3=(200,100);
+z4=(0,0);
+z5=(100,0);
+z6=(200,0);
+draw (x1-epsilon,y1)..(x6,y6);
+makelabel.lft("1 ",z1);
+makelabel.lft("2",z2);
+makelabel.rt("3",z3);
+makelabel.lft("4",z4);
+makelabel.lft("5",z5);
+makelabel.rt(" 6",z6);
+showit;
+shipit;
+
+"Figure 2c"; % 6 points and three lines (hex symbol, version 1)
+clear_all;
+z1=(0,100);
+z2=(100,100);
+z3=(200,100);
+z4=(0,0);
+z5=(100,0);
+z6=(200,0);
+draw z1..z6; draw z2..z5; draw z3..z4;
+for k=1 upto 6: drawdot z[k]; endfor
+makelabel.lft("1 ",z1);
+makelabel.lft("2 ",z2);
+makelabel.rt(" 3",z3);
+makelabel.lft("4 ",z4);
+makelabel.lft("5 ",z5);
+makelabel.rt(" 6",z6);
+showit;
+shipit;
+
+"Figure 2d"; % hex symbols with top and bottom adjusted
+clear_all;
+top z1=(0,100);
+top z2=(100,100);
+top z3=(200,100);
+bot z4=(0,0);
+bot z5=(100,0);
+bot z6=(200,0);
+draw z1..z6; draw z2..z5; draw z3..z4;
+for k=1 upto 6: drawdot z[k]; endfor
+makelabel.lft("1 ",z1);
+makelabel.lft("2 ",z2);
+makelabel.rt(" 3",z3);
+makelabel.lft("4 ",z4);
+makelabel.lft("5 ",z5);
+makelabel.rt(" 6",z6);
+showit;
+clearxy; pair offset; offset=(250,0);
+pickup pencircle scaled .6pt;
+top z1=(0,100)+offset;
+top z2=(100,100)+offset;
+top z3=(200,100)+offset;
+bot z4=(0,0)+offset;
+bot z5=(100,0)+offset;
+bot z6=(200,0)+offset;
+draw z1..z6; draw z2..z5; draw z3..z4;
+for k=1 upto 6: drawdot z[k]; endfor
+makelabel.lft("1 ",z1);
+makelabel.lft("2 ",z2);
+makelabel.rt(" 3",z3);
+makelabel.lft("4 ",z4);
+makelabel.lft("5 ",z5);
+makelabel.rt(" 6",z6);
+proofrule ((-5,100),(210,100)+offset);
+proofrule ((-5,0),(210,0)+offset);
+showit;
+shipit;
+
+"Figure 2e"; % stick-letter A
+b#:=250/36pt#; a#:=150/36pt#; s#:=30/36pt#;
+define_pixels(b,a,s);
+def A(expr alpha)=
+beginchar (incr(charcode),s#+a#+s#,b#,0);
+pickup standardpen;
+bot z1=(good.x s,0); z5=z1+(a,0);
+z3=(1/2[x1,x5],good.y b);
+z2=alpha[z1,z3]; z4=alpha[z5,z3];
+draw z1..z3; draw z3..z5; draw z2..z4;
+drawdot z1; drawdot z5; drawdot z3;
+makelabel.lft("1 ",z1);
+makelabel.lft("2 ",z2);
+makelabel.top("3 ",z3);
+makelabel.rt(" 4",z4);
+makelabel.rt(" 5",z5);
+endchar; enddef;
+
+A((3-sqrt5)/2); % (area above bar / area below) = golden ratio
+
+"Figure 3a"; % 4 points and 3 midpoints
+clear_all;
+z1=(.5,.5); z2=(40.5,80.5); z3=(150.5,100.5); z4=(300.5,.5);
+z12=1/2[z1,z2]; z23=1/2[z2,z3]; z34=1/2[z3,z4];
+pickup pencircle;
+draw z1--z2--z3--z4;
+heavy_dot z1; heavy_dot z2; heavy_dot z3; heavy_dot z4;
+makelabel.lft("1",z1);
+makelabel.lft("2",z2);
+makelabel.top(" 3",z3);
+makelabel.rt("4",z4);
+makelabel.rt("12",z12);
+makelabel.bot(" 23",z23);
+makelabel.bot("34 ",z34);
+showit;
+shipit;
+
+"Figure 3b"; % 4 points and 6 midpoints
+clear_all;
+z1=(.5,.5); z2=(40.5,80.5); z3=(150.5,100.5); z4=(300.5,.5);
+z12=1/2[z1,z2]; z23=1/2[z2,z3]; z34=1/2[z3,z4];
+z123=1/2[z12,z23]; z234=1/2[z23,z34]; z1234=1/2[z123,z234];
+heavy_dot z1; heavy_dot z2; heavy_dot z3; heavy_dot z4;
+pickup pencircle;
+draw z1--z2--z3--z4; draw z12--z23--z34; draw z123--z234;
+makelabel.lft("1",z1);
+makelabel.lft("2",z2);
+makelabel.top(" 3",z3);
+makelabel.rt("4",z4);
+makelabel.lft("12",z12);
+makelabel.top("23 ",z23);
+makelabel.rt("34",z34);
+makelabel.bot(" 123",z123);
+makelabel.bot("234 ",z234);
+makelabel.bot("1234",z1234);
+showit;
+shipit;
+
+"Figure 3c"; % 4 points and infinitely many midpoints
+clear_all;
+z1=(.5,.5); z2=(40.5,80.5); z3=(150.5,100.5); z4=(300.5,.5);
+heavy_dot z1; heavy_dot z2; heavy_dot z3; heavy_dot z4;
+pickup pencircle;
+
+def makedot(expr x)= special " 1";
+ numspecial xpart x; numspecial ypart x enddef;
+
+def recurse(expr a,b,c,d)=
+dist:=abs(a-d);
+if dist>4:
+begingroup save e,f,g,h,i,j; pair e,f,g,h,i,j;
+e=(a+b)/2; makedot(e);
+f=(b+c)/2; makedot(f);
+g=(c+d)/2; makedot(g);
+h=(e+f)/2; makedot(h);
+i=(f+g)/2; makedot(i);
+j=(h+i)/2; makedot(j);
+if dist>20: draw a--b--c--d; draw e--f--g; draw h--i; fi
+recurse(a,e,h,j); recurse(j,i,g,d);
+endgroup;
+fi enddef;
+
+makedot(z1); makedot(z2); makedot(z3); makedot(z4); recurse(z1,z2,z3,z4);
+shipit;
+
+"Figure 3d"; % 4 points and various cubics
+clear_all;
+z1=(0,0); z2=5/6(40,80); z3=5/6(150,100); z4=5/6(300,0);
+draw z1..controls z2 and z3..z4;
+drawdot z1; drawdot z4;
+makelabel.lft("1 ",z1);
+makelabel.lft("2",z2);
+makelabel.rt("3",z3);
+makelabel.rt(" 4",z4);
+pair offset; offset:=(325,0);
+draw (z1..controls z3 and z2..z4) shifted offset;
+drawdot z1+offset; drawdot z4+offset;
+makelabel.lft("1 ",z1+offset);
+makelabel.lft("3",z2+offset);
+makelabel.rt("2",z3+offset);
+makelabel.rt(" 4",z4+offset);
+offset:=(0,-100);
+draw (z2..controls z1 and z3..z4) shifted offset;
+drawdot z2+offset; drawdot z4+offset;
+makelabel.lft("2",z1+offset);
+makelabel.lft("1 ",z2+offset);
+makelabel.rt("3",z3+offset);
+makelabel.rt(" 4",z4+offset);
+offset:=(325,-100);
+draw (z1..controls z4 and z2..z3) shifted offset;
+drawdot z1+offset; drawdot z3+offset;
+makelabel.lft("1 ",z1+offset);
+makelabel.lft("3",z2+offset);
+makelabel.rt(" 4",z3+offset);
+makelabel.rt("2",z4+offset);
+showit;
+shipit;
+
+"Figure 3e"; % example curves with automatic control points
+clear_all;
+z1=(0,100); z2=(100,100); z3=(200,100);
+z4=(0,0); z5=(100,0); z6=(200,0);
+path p; p=z4..z1..z2..z6;
+draw p;
+drawdot z4; drawdot z6;
+makelabel.bot.nodot(" 1",z1);
+makelabel.top.nodot(" 2",z2);
+makelabel.rt.nodot("3",z3+(2,0));
+makelabel.rt.nodot(" 4",z4);
+makelabel.rt.nodot("5",z5+(2,0));
+makelabel.rt.nodot(" 6",z6);
+for k=1 upto 6: heavy_dot z[k]; endfor;
+for k=1 upto length p: heavy_dot postcontrol k-1 of p;
+ heavy_dot precontrol k of p; endfor
+pair offset; offset=(325,0);
+p:=(z5..z4..z1..z3..z6..z5) shifted offset; draw p;
+drawdot z5+offset;
+makelabel.bot.nodot(" 1",z1+offset);
+makelabel.top.nodot("2",z2+offset+(0,2));
+makelabel.bot.nodot("3 ",z3+offset);
+makelabel.top.nodot(" 4",z4+offset);
+makelabel.top.nodot("5",z5+offset+(0,5));
+makelabel.top.nodot("6 ",z6+offset);
+for k=1 upto 6: heavy_dot z[k]+offset; endfor;
+for k=1 upto length p: heavy_dot postcontrol k-1 of p;
+ heavy_dot precontrol k of p; endfor
+showit;
+shipit;
+
+"Figure 3f"; % bean shape with automatic control points
+clear_all;
+z1=(0,100); z2=(100,100); z3=(200,100);
+z4=(0,0); z5=(100,0); z6=(200,0);
+path p; p=z5..z4..z1..z3..z6..cycle;
+draw p;
+makelabel.bot.nodot(" 1",z1);
+makelabel.bot.nodot("2",z2-(0,2));
+makelabel.bot.nodot("3 ",z3);
+makelabel.top.nodot(" 4",z4+(-1,1));
+makelabel.top.nodot("5",z5+(0,5));
+makelabel.top.nodot("6 ",z6+(1,1));
+for k=1 upto 6: heavy_dot z[k]; endfor;
+for k=1 upto length p: heavy_dot postcontrol k-1 of p;
+ heavy_dot precontrol k of p; endfor
+showit;
+shipit;
+
+"Figure 3g"; % bean shape with more tension between 1 and 3
+clear_all;
+z1=(0,100); z2=(100,100); z3=(200,100);
+z4=(0,0); z5=(100,0); z6=(200,0);
+path p; p=z5..z4..z1..tension1.2..z3..z6..cycle;
+draw p;
+makelabel.bot.nodot(" 1",z1);
+makelabel.bot.nodot("2",z2-(0,2));
+makelabel.bot.nodot("3 ",z3);
+makelabel.top.nodot(" 4",z4+(-1,1));
+makelabel.top.nodot("5",z5+(0,5));
+makelabel.top.nodot("6 ",z6+(1,1));
+for k=1 upto 6: heavy_dot z[k]; endfor;
+for k=1 upto length p: heavy_dot postcontrol k-1 of p;
+ heavy_dot precontrol k of p; endfor
+showit;
+shipit;
+
+"Figure 3h"; % bean shape with more tension before and after 1
+clear_all;
+z1=(0,100); z2=(100,100); z3=(200,100);
+z4=(0,0); z5=(100,0); z6=(200,0);
+path p; p=z5..z4..tension 1 and 1.5..z1..tension 1.5 and 1..z3..z6..cycle;
+draw p;
+makelabel.bot.nodot(" 1",z1);
+makelabel.bot.nodot("2",z2-(0,2));
+makelabel.bot.nodot("3 ",z3);
+makelabel.top.nodot(" 4",z4+(-1,1));
+makelabel.top.nodot("5",z5+(0,5));
+makelabel.top.nodot("6 ",z6+(1,1));
+for k=1 upto 6: heavy_dot z[k]; endfor;
+for k=1 upto length p: heavy_dot postcontrol k-1 of p;
+ heavy_dot precontrol k of p; endfor
+showit;
+shipit;
+
+"Figure 3i"; % bean shape with straight bottom
+clear_all;
+z1=(0,100); z2=(100,100); z3=(200,100);
+z4=(0,0); z5=(100,0); z6=(200,0);
+path p; p=z5..z4{left}..z1..z3..z6{left}..cycle;
+draw p;
+makelabel.bot.nodot(" 1",z1-(1,1));
+makelabel.bot.nodot("2",z2-(0,2));
+makelabel.bot.nodot("3 ",z3+(1,-1));
+makelabel.top.nodot(" 4",z4+(0,5));
+makelabel.top.nodot("5",z5+(0,5));
+makelabel.top.nodot("6 ",z6+(0,5));
+for k=1 upto 6: heavy_dot z[k]; endfor;
+for k=1 upto length p: heavy_dot postcontrol k-1 of p;
+ heavy_dot precontrol k of p; endfor
+showit;
+shipit;
+
+"Figure 3j"; % example with direction specified
+clear_all;
+z1=(0,100); z2=(100,100); z3=(200,100);
+z4=(0,0); z5=(100,0); z6=(200,0);
+path p; p=z4..z2{z3-z4}..z3;
+draw p;
+makelabel.rt.nodot("1",z1+(0,-9));
+makelabel.rt.nodot("2",z2+(1,-11));
+makelabel.rt.nodot("3",z3+(1,-11));
+makelabel.rt.nodot("4",z4+(1,-11));
+makelabel.rt.nodot("5",z5+(0,-9));
+makelabel.rt.nodot("6",z6+(0,-9));
+for k=1 upto 6: heavy_dot z[k]; endfor;
+for k=1 upto length p: heavy_dot postcontrol k-1 of p;
+ heavy_dot precontrol k of p; endfor
+showit;
+shipit;
+
+"Figure 3k"; % wiggly shape for exercise
+clear_all;
+z1=(0,100); z2=(100,100); z3=(200,100);
+z4=(0,0); z5=(100,0); z6=(200,0);
+path p; p=z5..z4{z4-z2}..z1..z3..z6{z2-z6}..cycle;
+draw p;
+makelabel.bot.nodot(" 1",z1-(2,2));
+makelabel.bot.nodot("2",z2-(0,2));
+makelabel.bot.nodot("3 ",z3+(2,-2));
+makelabel.bot.nodot(" 4",z4);
+makelabel.top.nodot("5",z5+(0,5));
+makelabel.bot.nodot("6 ",z6);
+for k=1 upto 6: heavy_dot z[k]; endfor;
+showit;
+shipit;
+
+"Figure 3l"; % examples of varying curl
+clear_all;
+z1=(0,100); z2=(100,100); z3=(200,100);
+z4=(0,0); z5=(100,0); z6=(200,0);
+path p; p=z4{curl0}..z2{z3-z4}..{curl0}z3;
+draw p;
+drawdot z4; drawdot z3;
+makelabel.rt.nodot("1",z1+(0,-9));
+makelabel.rt.nodot("2",z2+(1,-11));
+makelabel.rt.nodot("3",z3+(1,-11));
+makelabel.rt.nodot("4",z4+(1,-11));
+makelabel.rt.nodot("5",z5+(0,-9));
+makelabel.rt.nodot("6",z6+(0,-9));
+for k=1 upto 6: heavy_dot z[k]; endfor;
+for k=1 upto length p: heavy_dot postcontrol k-1 of p;
+ heavy_dot precontrol k of p; endfor
+pair offset; offset=(325,0);
+p:=(z4{curl2}..z2{z3-z4}..{curl2}z3) shifted offset; draw p;
+drawdot z4+offset; drawdot z3+offset;
+makelabel.rt.nodot("1",z1+(0,-9)+offset);
+makelabel.rt.nodot("2",z2+(1,-11)+offset);
+makelabel.rt.nodot("3",z3+(1,-11)+offset);
+makelabel.rt.nodot("4",z4+(1,-11)+offset);
+makelabel.rt.nodot("5",z5+(0,-9)+offset);
+makelabel.rt.nodot("6",z6+(0,-9)+offset);
+for k=1 upto 6: heavy_dot z[k]+offset; endfor;
+for k=1 upto length p: heavy_dot postcontrol k-1 of p;
+ heavy_dot precontrol k of p; endfor
+showit;
+shipit;
+
+"Figure 3m"; % two directions specified
+clear_all;
+z1=(0,100); z2=(100,100); z3=(200,100);
+z4=(0,0); z5=(100,0); z6=(200,0);
+path p; p=z4{z2-z4}..z6{down};
+draw p;
+drawdot z4; drawdot z6;
+makelabel.rt.nodot("1",z1+(2,0));
+makelabel.rt.nodot("2",z2+(2,0));
+makelabel.rt.nodot("3",z3+(2,0));
+makelabel.bot.nodot(" 4",z4);
+makelabel.rt.nodot("5",z5+(2,0));
+makelabel.rt.nodot(" 6",z6);
+for k=1 upto 6: heavy_dot z[k]; endfor;
+for k=1 upto length p: heavy_dot postcontrol k-1 of p;
+ heavy_dot precontrol k of p; endfor
+showit;
+shipit;
+
+"Figure 3n"; % two control points specified
+clear_all;
+z1=(0,100); z2=(100,100); z3=(200,100);
+z4=(0,0); z5=(100,0); z6=(200,0);
+path p; p=z4..controls z1 and z2..z6;
+draw p;
+drawdot z4; drawdot z6;
+makelabel.rt.nodot("1",z1+(2,0));
+makelabel.rt.nodot("2",z2+(2,0));
+makelabel.rt.nodot("3",z3+(2,0));
+makelabel.rt.nodot(" 4",z4);
+makelabel.rt.nodot("5",z5+(2,0));
+makelabel.rt.nodot(" 6",z6);
+for k=1 upto 6: heavy_dot z[k]; endfor;
+showit;
+shipit;
+
+"Figure 4a"; % bean shape with elliptical pens
+clear_all;
+z1=(0,100); z2=(100,100); z3=(200,100);
+z4=(0,0); z5=(100,0); z6=(200,0);
+path p; p=z5..z4..z1..z3..z6..cycle;
+pickup pencircle xscaled .8pt yscaled .2pt rotated 30;
+draw p;
+makelabel.bot(" 1",z1);
+makelabel.bot("2",z2);
+makelabel.bot(" 3",z3);
+makelabel.top("4 ",z4);
+makelabel.top("",z5); makelabel.top.nodot("5",z5+(0,5));
+makelabel.top("",z6); makelabel.top.nodot("6 ",z6+(1,1));
+pair offset; offset=(325,0);
+pickup pencircle xscaled .8pt rotated 30;
+draw p shifted offset;
+makelabel.bot(" 1",z1+offset);
+makelabel.bot("2",z2+offset);
+makelabel.bot(" 3",z3+offset);
+makelabel.top("4 ",z4+offset);
+makelabel.top("",z5+offset); makelabel.top.nodot("5",z5+(0,5)+offset);
+makelabel.top("",z6+offset); makelabel.top.nodot("6 ",z6+(1,1)+offset);
+showit;
+shipit;
+
+"Figure 4b"; % T of METAFONT logo
+alpha:=.45; % controls bar location and similar things
+beta:=.2; % controls squareness of bowls
+numeric h#, xx#, yy#, o#, s#, u#, ph#, pv#;
+numeric leftstemloc, barheight;
+ h#=6; % height of characters, in pt
+ xx#=0.6; % extra length of certain features, in pt
+ u#=4/9; % unit width, in pt
+ s#=0; % extra sidebar, in pt
+ o#=1/9; % overshoot of curves, in pt
+ ph#=2/3; % horizontal thickness of pen, in pt
+yy#=xx#; define_whole_pixels(xx,yy);
+define_pixels(s,u);
+define_corrected_pixels(o);
+pv#=.9ph#; define_blacker_pixels(ph,pv);
+pickup pencircle xscaled ph yscaled pv;
+logo_pen:=savepen;
+leftstemloc:=good.x((2.5u#+s#)*pt);
+barheight:=good.y(alpha*h#*pt);
+def beginlogochar(suffix c)(expr n) = % code c; width is n units plus sidebars
+ beginchar(str c,n*u#+2s#,h#,0); pickup logo_pen enddef;
+
+beginlogochar(T,13);
+if odd(w-ph): w:=w+1; fi % allows a symmetric stem
+x1+x2=2x3=2x4=w; lft.x1=-epsilon; % I tried s-o instead; was not as good
+y1=y2=y3; top.y1=h; bot.y4=-o;
+draw z1..z2; draw z3..z4;
+labels.rt(2,3);
+makelabel.top("1",z1);
+makelabel.top("4",z4);
+endchar;
+
+"Figure 4c"; % M of METAFONT logo
+alpha:=.45; % controls bar location and similar things
+beta:=.2; % controls squareness of bowls
+numeric h#, xx#, yy#, o#, s#, u#, ph#, pv#;
+numeric leftstemloc, barheight;
+ h#=6; % height of characters, in pt
+ xx#=0.6; % extra length of certain features, in pt
+ u#=4/9; % unit width, in pt
+ s#=0; % extra sidebar, in pt
+ o#=1/9; % overshoot of curves, in pt
+ ph#=2/3; % horizontal thickness of pen, in pt
+yy#=xx#; define_whole_pixels(xx,yy);
+define_pixels(s,u);
+define_corrected_pixels(o);
+pv#=.9ph#; define_blacker_pixels(ph,pv);
+pickup pencircle xscaled ph yscaled pv;
+logo_pen:=savepen;
+leftstemloc:=good.x((2.5u#+s#)*pt);
+barheight:=good.y(alpha*h#*pt);
+def beginlogochar(suffix c)(expr n) = % code c; width is n units plus sidebars
+ beginchar(str c,n*u#+2s#,h#,0); pickup logo_pen enddef;
+
+beginlogochar(M,18);
+x1+x5=x2+x4=2x3=w; x1=x2=leftstemloc;
+y1=y5; y2=y4; bot.y1=-o; top y2=h+o; y3=y1+yy;
+draw z1--z2--z3--z4--z5;
+labels.rt(3,5);
+makelabel.lft("1",z1);
+makelabel.bot("2",z2);
+makelabel.bot("4",z4);
+endchar;
+
+"Figure 4d"; % solid kidney bean
+clear_all;
+z1=(0,100); z2=(100,100); z3=(200,100);
+z4=(0,0); z5=(100,0); z6=(200,0);
+path p; p=z5..z4..z1..z3..z6..cycle;
+fill p;
+makelabel.bot(" 1",z1);
+makelabel.bot("2",z2);
+makelabel.bot("3 ",z3);
+makelabel.top(" 4",z4);
+makelabel.top("5",z5);
+makelabel.top("6 ",z6);
+showit;
+shipit;
+
+"Figure 4e"; % black triangle character for exercises
+beginchar(oct"170", 5pt#, 6.25pt#, 0);
+t:=(2-sqrt3)/2;
+x1=x2=w-x3+.5-t=round .43pt; y3=.5+floor.5h; % MANUAL font has it different!
+%x1=x2=w-x3=round .43pt; y3=.5+floor.5h;
+z1-z2=(z3-z2) rotated 60;
+y2:=t+round(y2-t); y1:=h-y2;
+fill z1--z2--z3--cycle;
+labels.lft(1,2); labels.rt(3); endchar;
+
+"Figure 4f"; % black bean with white holes
+clear_all;
+z1=(0,100); z2=(100,100); z3=(200,100);
+z4=(0,0); z5=(100,0); z6=(200,0);
+path p; p=z5..z4..z1..z3..z6..cycle;
+fill p;
+unfill 1/4[z4,z2]..3/4[z4,z2]..cycle;
+unfill 1/4[z6,z2]..3/4[z6,z2]..cycle;
+makelabel.bot(" 1",z1);
+makelabel.bot("2",z2);
+makelabel.bot("3 ",z3);
+makelabel.top(" 4",z4);
+makelabel.top("5",z5);
+makelabel.top("6 ",z6);
+showit;
+shipit;
+
+"Figure 4g"; % black bean with skewed interior cutout
+clear_all;
+z1=(0,100); z2=(100,100); z3=(200,100);
+z4=(0,0); z5=(100,0); z6=(200,0);
+path p; p=z5..z4..z1..z3..z6..cycle;
+fill p;
+z0=(.8[x1,x2],.5[y1,y4]);
+for k=1 upto 6: z[k]'=.2[z[k],z0]; endfor
+unfill z5'..z4'..z1'..z3'..z6'..cycle;
+makelabel.bot("0",z0);
+makelabel.top("1 ",z1);
+makelabel.top("2",z2);
+makelabel.top(" 3",z3);
+makelabel.bot("4 ",z4);
+makelabel.bot("5",z5);
+makelabel.bot(" 6",z6);
+makelabel.bot(" 1'",z1');
+makelabel.bot(" 2'",z2');
+makelabel.bot("3' ",z3');
+makelabel.top(" 4'",z4');
+makelabel.top("5'",z5');
+makelabel.top("6' ",z6');
+showit;
+shipit;
+
+"Figure 4h"; % sample penstroke
+clear_all;
+penpos1(1.2pt,30); penpos2(1.0pt,45); penpos3(0.8pt,90);
+z1=(0,2pt); z2=(4pt,0); x3=9pt; y3l=y2r;
+penstroke z1e..z2e{right}..z3e{right};
+labels.top(2r,3r);
+labels.bot(2l,3l);
+labels.rt(3,1r);
+labels.lft(1l,2);
+makelabel.top("1 ",z1);
+showit;
+shipit;
+
+"Figure 4i"; % cyclic penstroke example
+clear_all;
+d:=25;
+penpos1(d,30);
+penpos2(d,60);
+penpos3(d,210);
+penpos4(d,240);
+y1=.51y2r; y2r=175; y3=.49y2r; y4r=0;
+x1r=175; x2=x4=.5x1r; x3r=0;
+penstroke z1e{up}..z2e{left}..z3e{down}..z4e{right}..cycle;
+labels.lft(1l,2,3r,4);
+labels.rt(1r,3l);
+labels.top(2r,3,4l);
+labels.bot(1,2l,4r);
+showit;
+shipit;
+
+"Figure 4j"; % I from IOnian font
+clear_all;
+em#:=10pt#; cap#:=7pt#;
+bar#:=.8pt#;
+stem#:=.9pt#;
+thin#:=.8pt#;
+thick#:=1pt#;
+define_pixels(em,cap);
+define_blacker_pixels(thin,thick,bar,stem);
+beginchar(27,.35em#,cap#,0); % "The letter I"; \IOI=27
+ penpos1(stem,15); penpos2(.9stem,12); penpos3(stem,10);
+ x1=x2=x3=.5w; y1=h; y2=.55h; y3=0;
+ x2l:=1/6[x2l,x2];
+ penstroke z1e..z2e{down}..z3e;
+labels.top(1,2,1r);
+labels.lft(2l);
+labels.rt(2r);
+labels.bot(3,3l);
+makelabel("",z1l); makelabel("",z3r);
+makelabel.lft.nodot("1l",z1l-(0,2));
+makelabel.rt.nodot("3r",z3r+(0,2));
+endchar;
+
+"Figure 4k"; % fixed pens versus penstrokes
+clear_all;
+z1=(0,0); z2=(150,0);
+pickup pencircle xscaled 0.8pt rotated 25;
+draw z1..z2..cycle;
+labels.lft(1,2);
+clearxy;
+pair offset; offset=(250,0);
+penpos1(0.8pt,25); penpos2(0.8pt,25);
+z1=(0,0)+offset; z2=(150,0)+offset;
+penstroke z1e..z2e..cycle;
+labels.lft(1l,2l);
+labels.rt(1r,2r);
+labels.bot(1,2);
+showit;
+shipit;
+
+"Figure 4l"; % hex symbol with pen-pressure adjustments
+%b#:=1.0pt#; define_blacker_pixels(b); % FOR INITIAL TESTS ONLY
+%beginchar(0,500/36pt#,250/36pt#,0); % that's magnified 2.5 as in the type
+b#:=0.4pt#; define_blacker_pixels(b);
+beginchar(0,200/36pt#,100/36pt#,0);
+pickup pencircle scaled b;
+w:=2good.x .5w;
+top z1=(0,h); top z2=(.5w,h); top z3=(w,h);
+bot z4=(0,0); bot z5=(.5w,0); bot z6=(w,0);
+draw z2..z5;
+for k=1 upto 6: drawdot z[k]; endfor
+z1'=.25[z1,z6]; z6'=.75[z1,z6];
+z3'=.25[z3,z4]; z4'=.75[z3,z4];
+ theta1:=angle(z6-z1)+90;
+ theta3:=angle(z4-z3)+90;
+penpos1'(b,theta1); penpos6'(b,theta1); penpos7(.6b,theta1);
+penpos3'(b,theta3); penpos4'(b,theta3); penpos8(.6b,theta3);
+z7=z8=.5[z1,z6];
+draw z1..z1'; draw z6'..z6;
+ penstroke z1'e{z6'-z1'}..z7e..{z6'-z1'}z6'e;
+draw z3..z3'; draw z4'..z4;
+ penstroke z3'e{z4'-z3'}..z8e..{z4'-z3'}z4'e;
+labels.top(1'r,3'l,4'l,6'r);
+labels.bot(1'l,3'r,4'r,6'l);
+forsuffixes $=1',3',4',6': makelabel("",z$); endfor
+makelabel.lft("1 ",z1);
+makelabel.lft("2 ",z2);
+makelabel.rt(" 3",z3);
+makelabel.lft("4 ",z4);
+makelabel.lft("5 ",z5);
+makelabel.rt(" 6",z6);
+makelabel.top("8l ",z8l);
+makelabel.top(" 7r",z7r);
+makelabel.bot("7l ",z7l);
+makelabel.bot(" 8r",z8r);
+endchar;
+
+"Figure 4m"; % same, cut sharp at the terminals, and inside the box
+%b#:=1.0pt#; define_blacker_pixels(b); % FOR INITIAL TESTS ONLY
+%beginchar(0,500/36pt#,250/36pt#,0); % that's magnified 2.5 as in the type
+b#:=0.4pt#; define_blacker_pixels(b);
+beginchar(0,200/36pt#,100/36pt#,0);
+pickup pencircle scaled b;
+w:=2good.x .5w;
+x1l=x4l=0;x2=x5=.5w;x3r=x6r=w;
+y1r=y2=y3l=h; y4r=y5=y6l=0;
+z1'=.25[z1,z6]; z6'=.75[z1,z6]; theta1:=angle(w,-h)+90;
+z3'=.25[z3,z4]; z4'=.75[z3,z4]; theta3:=angle(-w,-h)+90;
+z7=z8=.5[z1,z6];
+penpos1(b,theta1); penpos6(b,theta1);
+penpos1'(b,theta1); penpos6'(b,theta1); penpos7(.6b,theta1);
+penpos3(b,theta3); penpos4(b,theta3);
+penpos3'(b,theta3); penpos4'(b,theta3); penpos8(.6b,theta3);
+penstroke z1e..z1'e{z6'-z1'}..z7e..{z6'-z1'}z6'e..z6e;
+penpos2(b,0); penpos5(b,0); penstroke z2e..z5e;
+penstroke z3e..z3'e{z4'-z3'}..z8e..{z4'-z3'}z4'e..z4e;
+penlabels(1,1',2,3,3',4,4',5,6,6');
+labels.top(1r,1'r,2,3l,3'l,4l,4'l,6r,6'r);
+labels.bot(1l,1'l,3r,3'r,4r,4'r,5,6l,6'l);
+labels.lft(2l,5l);
+labels.rt(2r,5r);
+forsuffixes $=1,1',3,3',4,4',6,6': makelabel("",z$); endfor
+makelabel.top("8l ",z8l);
+makelabel.top(" 7r",z7r);
+makelabel.bot("7l ",z7l);
+makelabel.bot(" 8r",z8r);
+endchar;
+
+"Figure A5a"; % S from IOnian font
+clear_all;
+em#:=10pt#; cap#:=7pt#;
+slab#:=.8pt#;
+stem#:=.9pt#;
+thin#:=.8pt#;
+thick#:=5/6pt#;
+ o#:=1/5pt#;
+define_corrected_pixels(o);
+define_pixels(em,cap);
+define_blacker_pixels(thin,thick,slab,stem);
+beginchar(25,5/9em#,cap#,0); % "The letter S"; /IOS=25
+penpos1(slab,70);
+penpos2(.5slab,80);
+penpos3(.5[slab,thick],200);
+penpos5(.5[slab,thick],210);
+penpos6(.7slab,80);
+penpos7(.25[slab,thick],72);
+x1=x5; y1r=.94h+o;
+x2=x4=x6=.5w; y2r=h+o; y4=.54h; y6l=-o;
+x3r=.04em; y3=.5[y4,y2];
+x5l=w-.03em; y5=.5[y4,y6];
+.5[x7l,x7]=.04em; y7l=.12h-o;
+path trial; trial=z3{down}..z4..{down}z5;
+pair dz; dz=direction 1 of trial;
+penpos4(thick,angle dz-90);
+penstroke z1e..z2e{left}..z3e{down}..z4e{dz}..z5e{down}..z6e{left}..z7e;
+labels.lft(2,3r,5r,6,7);
+labels.rt(1,3l,4,5l);
+labels.top(1r,2r,3,4l,5,6r,7r);
+labels.bot(1l,2l,4r,6l,7l);
+endchar;
+
+"Figure 8a"; % twenty points on p2
+clear_all;
+path p[]; p1=(0,0)..(3,3); p2=(0,0)..(3,3)..cycle;
+transform t; t=identity scaled 60 shifted (50,0);
+pair zz;
+z=(1.5,1.5) transformed t;
+pickup pencircle;
+draw p2 transformed t;
+for n=0 upto 19: zz:=point n/10 of p2 transformed t;
+ heavy_dot zz;
+ makelabel.top.nodot(decimal(n/10) if n mod 10=0:&".0" fi,
+.09[zz,z] shifted(.05xpart(z-zz),-6.5)); endfor
+%.1[zz,z] shifted(.1xpart(z-zz),-8)); endfor
+shipit;
+showit;
+
+"Figure 11a"; % E of METAFONT logo
+alpha:=.45; % controls bar location and similar things
+beta:=.2; % controls squareness of bowls
+numeric h#, xx#, yy#, o#, s#, u#, ph#, pv#;
+numeric leftstemloc, barheight;
+ h#=6; % height of characters, in pt
+ xx#=0.6; % extra length of certain features, in pt
+ u#=4/9; % unit width, in pt
+ s#=0; % extra sidebar, in pt
+ o#=1/9; % overshoot of curves, in pt
+ ph#=2/3; % horizontal thickness of pen, in pt
+yy#=xx#; define_whole_pixels(xx,yy);
+define_pixels(s,u);
+define_corrected_pixels(o);
+pv#=.9ph#; define_blacker_pixels(ph,pv);
+pickup pencircle xscaled ph yscaled pv;
+logo_pen:=savepen;
+leftstemloc:=good.x((2.5u#+s#)*pt);
+barheight:=good.y(alpha*h#*pt);
+def beginlogochar(suffix c)(expr n) = % code c; width is n units plus sidebars
+ beginchar(str c,n*u#+2s#,h#,0); pickup logo_pen enddef;
+
+beginlogochar(E,14);
+x1=x2=x3=leftstemloc; x4=x6=w-x1+o; x5=x4-xx;
+y1=y6; y2=y5; y3=y4; bot.y1=0; top.y3=h; y2=barheight;
+draw z6--z1--z3--z4; draw z2..z5;
+labels.rt(1,2,3);
+labels.lft(4,5,6);
+endchar;
+
+"Figure 12a"; % cmr10 left parenthesis
+u#:=20/36pt#;
+tiny#:=0;
+axis#:=90/36pt#;
+hheight#:=250/36pt#;
+border#:=20/36pt#;
+hair#:=8/36pt#;
+thin#:=9/36pt#;
+thick#:=25/36pt#;
+slant:=0;
+rulethickness:=.4pt#;
+
+font_setup;
+beginchar("(",7u#, hheight#+border#, hheight#+border#-2axis#);
+italcorr (hheight#+border#)*slant-.5u#;
+pickup tinypen;
+penpos1(hair-tiny,0); penpos3(hair-tiny,0);
+penpos2(.75[thin,thick]-tiny,0);
+rt x1r = rt x3r = w-u; lft x2l = x1-4u;
+top y1=h; y2=.5[y1,y3]=axis;
+filldraw z1l{curl 4}..z2l..{curl 4}z3l--
+ z3r{curl 4}..z2r..{curl 4}z1r--cycle;
+labels.top(3,2);
+labels.bot(1);
+labels.lft(1l,2l,3l);
+labels.rt(1r,2r,3r);
+endchar;
+
+"Figure 12b"; % cmbx10 left parenthesis
+u#:=23/36pt#;
+tiny#:=0;
+axis#:=90/36pt#;
+hheight#:=250/36pt#;
+border#:=20/36pt#;
+hair#:=13/36pt#;
+thin#:=17/36pt#;
+thick#:=41/36pt#;
+slant:=0;
+
+font_setup;
+beginchar("(",7u#, hheight#+border#, hheight#+border#-2axis#);
+italcorr (hheight#+border#)*slant-.5u#;
+pickup tinypen;
+penpos1(hair-tiny,0); penpos3(hair-tiny,0);
+penpos2(.75[thin,thick]-tiny,0);
+rt x1r = rt x3r = w-u; lft x2l = x1-4u;
+top y1=h; y2=.5[y1,y3]=axis;
+filldraw z1l{curl 4}..z2l..{curl 4}z3l--
+ z3r{curl 4}..z2r..{curl 4}z1r--cycle;
+labels.top(3,2);
+labels.bot(1);
+labels.lft(1l,2l,3l);
+labels.rt(1r,2r,3r);
+endchar;
+
+"Figure 12c"; % cmvtt10 left parenthesis
+u#:=21/36pt#;
+tiny#:=22/36pt#;
+axis#:=110/36pt#;
+hheight#:=220/36pt#;
+border#:=30/36pt#;
+hair#:=22/36pt#;
+thin#:=25/36pt#;
+thick#:=25/36pt#;
+slant:=0;
+
+font_setup;
+beginchar("(",7u#, hheight#+border#, hheight#+border#-2axis#);
+italcorr (hheight#+border#)*slant-.5u#;
+pickup tinypen;
+penpos1(hair-tiny,0); penpos3(hair-tiny,0);
+penpos2(.75[thin,thick]-tiny,0);
+rt x1r = rt x3r = w-u; lft x2l = x1-4u;
+top y1=h; y2=.5[y1,y3]=axis;
+filldraw z1l{curl 4}..z2l..{curl 4}z3l--
+ z3r{curl 4}..z2r..{curl 4}z1r--cycle;
+labels.top(3,2);
+labels.bot(1);
+labels.lft(1l,2l,3l);
+labels.rt(1r,2r,3r);
+endchar;
+
+"Figure 12d"; % cmssdc10 left parenthesis
+u#:=19/36pt#;
+tiny#:=8/36pt#;
+axis#:=95/36pt#;
+hheight#:=250/36pt#;
+border#:=20/36pt#;
+hair#:=23/36pt#;
+thin#:=40/36pt#;
+thick#:=40/36pt#;
+slant:=0;
+
+font_setup;
+beginchar("(",7u#, hheight#+border#, hheight#+border#-2axis#);
+italcorr (hheight#+border#)*slant-.5u#;
+pickup tinypen;
+penpos1(hair-tiny,0); penpos3(hair-tiny,0);
+penpos2(.75[thin,thick]-tiny,0);
+rt x1r = rt x3r = w-u; lft x2l = x1-4u;
+top y1=h; y2=.5[y1,y3]=axis;
+filldraw z1l{curl 4}..z2l..{curl 4}z3l--
+ z3r{curl 4}..z2r..{curl 4}z1r--cycle;
+labels.top(3,2);
+labels.bot(1);
+labels.lft(1l,2l,3l);
+labels.rt(1r,2r,3r);
+endchar;
+
+"Figure 12e"; % cmti10 left parenthesis
+u#:=18.4/36pt#;
+tiny#:=7/36;
+axis#:=90/36pt#;
+hheight#:=250/36pt#;
+border#:=20/36pt#;
+hair#:=8/36pt#;
+thin#:=11/36pt#;
+thick#:=23/36pt#;
+slant:=.25;
+
+font_setup;
+beginchar("(",7u#, hheight#+border#, hheight#+border#-2axis#);
+italcorr (hheight#+border#)*slant-.5u#;
+pickup tinypen;
+penpos1(hair-tiny,0); penpos3(hair-tiny,0);
+penpos2(.75[thin,thick]-tiny,0);
+rt x1r = rt x3r = w-u; lft x2l = x1-4u;
+top y1=h; y2=.5[y1,y3]=axis;
+filldraw z1l{curl 4}..z2l..{curl 4}z3l--
+ z3r{curl 4}..z2r..{curl 4}z1r--cycle;
+labels.top(3,2);
+labels.bot(1);
+labels.lft(1l,2l,3l);
+labels.rt(1r,2r,3r);
+endchar;
+currenttransform:=identity yscaled aspect_ratio;
+
+"Figure 12f"; % Dangerous bend symbol
+def font_setup=
+define_pixels(u,tiny,axis,hheight,border);
+define_blacker_pixels(hair,thin,thick,rulethickness);
+pickup if tiny<.5: nullpen else: pencircle scaled tiny fi;
+tinypen:=savepen;
+currenttransform:=identity slanted slant;
+enddef;
+
+% typical cmr10 parameters
+u#:=20/36pt#;
+tiny#:=0;
+axis#:=90/36pt#;
+hheight#:=250/36pt#;
+border#:=20/36pt#;
+hair#:=8/36pt#;
+thin#:=9/36pt#;
+thick#:=25/36pt#;
+fixwidth:=0;
+slant:=0;
+rulethickness#:=.4pt#;
+
+baselinedistance#:=11pt#;
+heavyline#:=50/36pt#;
+font_setup;
+define_whole_pixels(baselinedistance);
+define_blacker_pixels(heavyline);
+
+beginchar(127,25u#,hheight#+border#,0);
+pickup pencircle scaled rulethickness;
+top y1=25/27h; lft x4=0;
+x1+x1=x1a+x1b=x4b+x2a=x4+x2=x4a+x2b=x3b+x3a=x3+x3=w;
+x4a=x4b=x4+u; x3b=x1a=x1-2u;
+y4+y4=y4a+y4b=y3b+y1a=y3+y1=y3a+y1b=y2b+y2a=y2+y2=0;
+y1a=y1b=y1-2/27h; y4b=y2a=y4+4/27h;
+draw z1a..z1..z1b---z2a..z2..z2b---
+ z3a..z3..z3b---z4a..z4..z4b---cycle; % signboard
+x10=x11=x12=x13=good.x(.5w-u); x14=x15=x16=x17=w-x10;
+y10=y14=28/27h+epsilon; bot y13=-baselinedistance;
+z11=(z10..z13) intersectionpoint (z1a{z1a-z4b}..z1{right});
+y15=y11; y16=y12=-y11; y17=y20=y21=y13;
+draw z11--z10--z14--z15; draw z12--z13; draw z16--z17; % signpost
+x20=w-x21; x21-x20=16u; draw z20--z21; % ground level
+x36=w-x31; x36-x31=8u; x32=x33=x36; x31=x34=x35;
+y31=-y36=12/27h; y32=-y35=9/27h; y33=-y34=3/27h;
+pickup pencircle scaled heavyline;
+draw z32{z32-z31}..z33---z34..z35{z36-z35}; % the dangerous bend
+pickup penrazor xscaled heavyline rotated (angle(z32-z31)+90);
+draw z31--z32; draw z35--z36; % upper and lower bars
+labels.top(11,15,2a,4b,4,2,32,34);
+labels.bot(10,14,2b,4a,33,35);
+labels.lft(1a,3b,12,13,21,36);
+labels.rt(1,1b,3a,3,16,20,17,31);
+endchar;
+
+"Figure 13a"; % Possible cube
+clear_all;
+fudge_factor:=1/2;
+s#:=5pt#*fudge_factor; define_pixels(s); % side of the square
+z1=(-epsilon,-epsilon); z2=(s+epsilon,-epsilon);
+ z3=(-epsilon,s+epsilon); z4=(s+epsilon,s+epsilon);
+for k=1 upto 4: z[k+4]=z[k]+(2/3s,1/3s); endfor
+pickup pencircle scaled (.4pt*fudge_factor);
+draw z5--z6--z8--z7--cycle;
+pickup pencircle scaled (1.6pt*fudge_factor);
+erase draw z2--z4--z3;
+pickup pencircle scaled (.4pt*fudge_factor);
+draw z1--z2--z4--z3--cycle;
+for k=1 upto 4: draw z[k]--z[k+4]; endfor
+labels.top(1,2,5,6);
+labels.bot(3,4,7,8);
+showit;
+shipit;
+
+"Figure 14a"; % El Palo Alto
+begingroup save flex; clear_all;
+def flex(text t) = % puts dots into normal flex
+ hide(n_:=0;
+ for z=t: z_[incr n_]:=z; makelabel("",z); endfor
+ dz_:=z_[n_]-z_1)
+ z_1 for k=2 upto n_-1: ...z_[k]{dz_} endfor ...z_[n_] enddef;
+
+def grid= proofoffset (30,0);
+ for y:=0 step 50 until 650: proofrule((-110,y),(110,y));
+ makelabel.lft.nodot(str[y],(100,y+5));
+ endfor;
+ for x:=-100 step 50 until 100: proofrule((x,-10),(x,660));endfor enddef;
+
+path branch[],trunk;
+
+branch1=
+ flex((0,660),(-9,633),(-22,610))
+ &flex((-22,610),(-3,622),(17,617))
+ &flex((17,617),(7,637),(0,660))
+ &cycle;
+
+branch2=
+ flex((30,570),(10,590),(-1,616))
+ &flex((-1,616),(-11,592),(-29,576),(-32,562))
+ &flex((-32,562),(-10,577),(30,570))
+ &cycle;
+
+branch3=
+ flex((-1,570),(-17,550),(-40,535))
+ &flex((-40,535),(-45,510),(-60,477))
+ &flex((-60,477),(-20,505),(40,512))
+ &flex((40,512),(31,532),(8,550),(-1,570))
+ &cycle;
+
+branch4=
+ flex((0,509),(-14,492),(-32,481))
+ &flex((-32,481),(-42,455),(-62,430))
+ &flex((-62,430),(-20,450),(42,448))
+ &flex((42,448),(38,465),(4,493),(0,509))
+ &cycle;
+
+branch5=
+ flex((-22,470),(-23,435),(-44,410))
+ &flex((-44,410),(-10,421),(35,420))
+ &flex((35,420),(15,455),(-22,470))
+ &cycle;
+
+branch6=
+ flex((18,375),(9,396),(5,420))
+ &flex((5,420),(-5,410),(-50,375),(-50,350))
+ &flex((-50,350),(-25,375),(18,375))
+ &cycle;
+
+branch7=
+ flex((0,400),(-13,373),(-30,350))
+ &flex((-30,350),(0,358),(30,350))
+ &flex((30,350),(13,373),(0,400))
+ &cycle;
+
+branch8=
+ flex((50,275),(45,310),(3,360))
+ &flex((3,360),(-20,330),(-70,300),(-100,266))
+ &flex((-100,266),(-75,278),(-60,266))
+ &flex((-60,266),(0,310),(50,275))
+ &cycle;
+
+branch9=
+ flex((10,333),(-15,290),(-43,256))
+ &flex((-43,256),(8,262),(58,245))
+ &flex((58,245),(34,275),(10,333))
+ &cycle;
+
+branch10=
+ flex((8,262),(-21,249),(-55,240))
+ &flex((-55,240),(-51,232),(-53,220))
+ &flex((-53,220),(-28,229),(27,235))
+ &flex((27,235),(16,246),(8,262))
+ &cycle;
+
+branch11=
+ flex((0,250),(-25,220),(-70,195))
+ &flex((-70,195),(-78,180),(-90,170))
+ &flex((-90,170),(-5,188),(74,183))
+ &flex((74,183),(34,214),(0,250))
+ &cycle;
+
+branch12=
+ flex((8,215),(-35,175),(-72,155))
+ &flex((-72,155),(-75,130),(-92,110),(-95,88))
+ &flex((-95,88),(-65,117),(-54,104))
+ &flex((-54,104),(10,151),(35,142))..flex((42,130),(60,123),(76,124))
+ &flex((76,124),(62,146),(26,180),(8,215))&cycle;
+
+trunk=(0,660)---(-12,70)..{curl 5}(-28,-8)
+ &flex((-28,-8),(-16,-4),(-10,-11))
+ &flex((-10,-11),(0,-5),(14,-10))
+ &flex((14,-10),(20,-6),(29,-11))
+ &(29,-11){curl 4}..(10,100)---cycle;
+
+makelabel("",(-12,70));
+makelabel("",(10,100));
+
+pickup pencircle scaled 2;
+draw trunk;
+for n=1 upto 12: draw branch[n]; endfor
+grid;
+showit;shipit;
+endgroup;
+
+"Figure 14b"; % Detail of one branch
+clear_all;
+pair zz[];
+zz1=(0,509);
+zz2=(-14,492);
+zz3=(-32,481);
+zz4=(-42,455);
+zz5=(-62,430);
+zz6=(-20,450);
+zz7=(42,448);
+zz8=(38,465);
+zz9=(4,493);
+for n=1 upto 9: z[n]=(zz[n]+(62,-430)) scaled 2.5; endfor
+pickup pencircle;
+filldraw flex(z1,z2,z3)&flex(z3,z4,z5)
+ &flex(z5,z6,z7)&flex(z7,z8,z9,z1)&cycle;
+labels.lft(2,3,4,5);
+labels.rt(1,7,8,9);
+labels.bot(6);
+showit; shipit;
+
+"Figure 14c"; % superellipses
+clear_all;
+w:=100; h:=150;
+pickup pencircle xscaled 0.7pt yscaled 0.2pt rotated 30;
+forsuffixes ss=65,70,75,80: s:=ss/100;
+draw superellipse((w,.5h),(.5w,h),(0,.5h),(.5w,0),s) shifted (150/.05(s-.65),0);
+makelabel.top.nodot("."&str ss,(.5w,.45h) shifted (150/.05(s-.65),0));
+endfor
+showit;
+shipit;
+
+"Figure 14d"; % demo of joinery
+clear_all;
+pickup standardpen;
+z0=(0,100); z1=(50,0); z2=(180,0);
+for n=3 upto 9: z[n]=z[n-3]+(200,0); endfor
+draw z0..z1---z2...{up}z3
+ & z3..z4--z5...{up}z6
+ & z6...z7---z8..{up}z9;
+makelabel.bot("0 ",z0);
+makelabel.bot("6 ",z6);
+labels.bot(3,9);
+labels.rt(1,4,7);
+labels.lft(2,5,8);
+showit;
+shipit;
+
+"Figure 14e"; % JofA logo
+beginchar("A",29mm#*.22,25mm#*.22,0);
+interim autorounding:=0; interim smoothing:=0;
+if odd(w-h): h:=h-1; fi
+thick#:=2mm#*.22; thin#:=5/4mm#*.22;
+define_whole_blacker_pixels(thick,thin);
+forsuffixes @=a,b,c: transform @;
+ forsuffixes e=l,r: path @e,@'e; numeric t@[]e; endfor endfor
+penpos1(thick,0); penpos2(thick,90); penpos3(thick,180); penpos4(thick,270);
+penpos5(thick,0); penpos6(thick,90); penpos7(thick,180); penpos8(thick,270);
+x2=x4=x6=x8=.5[x5,x7]=.5w; x1r=w; x3r=0; x5-x7=y6-y8;
+y1=y3=y5=y7=.5[y6,y8]=.5h; y2r=h; y4r=0; y6r=round.75h;
+forsuffixes e=l,r: a.e=b'e=c'e=superellipse(z1e,z2e,z3e,z4e,.75);
+ a'e=b.e=c.e=superellipse(z5e,z6e,z7e,z8e,.72); endfor
+penpos.a1(thin,0); penpos.a5(whatever,-90); penpos.a9(thin,180);
+x.a1l-x.a9l=1/3(x5l-x7l); x.a5=.5w; y.a1=y.a9; y.a5r=4/7h;
+x.a3l=x.a1l; x.a3r=x.a1r; x.a4r=1/6[x.a3r,x1l]; x0=.5w; y0=.52h;
+x.a6l+x.a4l=x.a6r+x.a4r=x.a7l+x.a3l=x.a7r+x.a3r=x.a9+x.a1=w;
+y.a3r=y.a4r=y.a6r=y.a7r=.2[y2l,y0]; y.a3l=y.a4l=y.a6l=y.a7l=y.a3r-thin;
+z.a4l=z.a4r+(thin,0)rotated(angle(z.a4r-z.a5r)+90)
+ +whatever*(z.a4r-z.a5r); z.a4l-z.a5l=whatever*(z.a4r-z.a5r);
+z=a.r intersectionpoint (z0--(w,0)); y.a1-y.a5=length(z-z0);
+b=identity shifted(0,y0-y.a1)rotatedaround(z0,90-angle(z0-(w,0)));
+c=b reflectedabout (z2,z4);
+for n=1,3,4,5,6,7,9: forsuffixes e=l,,r: forsuffixes @=b,c:
+ z@[n]e=z.a[n]e transformed @; endfor endfor endfor
+forsuffixes e=l,r: forsuffixes @=a,b,c:
+ z@2e=@r intersectionpoint (z@1e--z@3e);
+ z@8e=@r intersectionpoint (z@9e--z@7e);
+ t@1e=xpart(@e intersectiontimes (z@1l--z@3l));
+ t@9e=xpart(@e intersectiontimes (z@9l--z@7l));
+ t@4e=xpart(@'e intersectiontimes (z@5r--z@4l));
+ t@6e=xpart(@'e intersectiontimes (z@5r--z@6l)); endfor endfor
+penstroke subpath(t.a9e,t.b6e) of a.e;
+penstroke subpath(t.b4e,t.c4e) of b'e;
+penstroke subpath(t.c6e,t.a1e+8) of c'e;
+penstroke subpath(t.a6e,t.b9e) of a'e;
+penstroke subpath(t.b1e,t.c1e) of b.e;
+penstroke subpath(t.c9e,t.a4e+8) of c.e;
+forsuffixes @=a,b,c:
+ penstroke z@2e--z@3e--z@4e--z@5e--z@6e--z@7e--z@8e; endfor
+labels.lft(0,1l,3r,3,5l,7r,7,a1l,a2l,a3l,a6l,
+ a6r,a8r,a9r,b2l,b5,b5r,b9,c1,c2r,c5l);
+labels.rt(1,1r,3l,5,5r,7l,a1r,a2r,a4l,a4r,a7l,
+ a9l,b1,b2r,b5l,c2l,c5,c5r,c9);
+labels.top(2r,2,2l,4l,6r,6,6l,8l,a3r,a7r,a8l,
+ b1l,b3l,b3r,b6r,b6l,b8r,b9r,c1l,c3l,c3r,c6r,c6l,c8r,c9r);
+labels.bot(2r,2,2l,4,4r,8,8r,a1,a5l,a5,a5r,a9,
+ b1r,b4l,b4r,b7l,b7r,b8l,c1r,c4l,c4r,c7l,c7r,c8l);
+makelabel("",z.b9l);
+makelabel("",z.c9l);
+makelabel.lft.nodot("b9l",z.b9l-(0,3));
+makelabel.rt.nodot("c9l",z.c9l-(0,3));
+endchar;
+
+"Figure 15a"; % four u's
+beginchar("4",11pt#,11pt#,0);
+pickup pencircle scaled 3/4pt yscaled 1/3 rotated 30;
+save t; transform t;
+t=identity rotatedaround((.5w,.5h),-90);
+x2=.35w; x3=good.x .6w;
+y2=good.y .1h; top y3=round .4h+eps;
+save p; path p; p=z2{right}...{up}z3;
+top z1=point .5 of p transformed t;
+draw z1...z2{right}...{up}z3;
+addto currentpicture also currentpicture transformed t;
+addto currentpicture also currentpicture transformed(t transformed t);
+labels.bot(1,3); labels.rt(2); endchar;
+
+"Figure 16a"; % circular pen polygon
+clear_all;
+path p;
+p=makepath(pencircle scaled 20) scaled 10 shifted (110,110);
+if length p<>32: error; fi
+fill p;
+for k=1 upto length p: heavy_dot point k of p; endfor
+for x=0 step 10 until 220: proofrule((x,0),(x,220)); endfor
+for y=0 step 10 until 220: proofrule((0,y),(220,y)); endfor
+proofrulethickness .8;
+proofrule ((0,110),(220,110)); proofrule ((110,0),(110,220));
+showit;
+shipit;
+
+"Figure 16b"; % elliptical pen polygon
+clear_all;
+path p;
+p=makepath(pencircle xscaled 30 yscaled 20) scaled 10 shifted (160,110);
+if length p<>40: error; fi
+fill p;
+for k=1 upto length p: heavy_dot point k of p; endfor
+for x=0 step 10 until 320: proofrule((x,0),(x,220)); endfor
+for y=0 step 10 until 220: proofrule((0,y),(320,y)); endfor
+proofrulethickness .8;
+proofrule ((0,110),(320,110)); proofrule ((160,0),(160,220));
+showit;
+shipit;
+
+"Figure 16c"; % elliptical pen hexagon
+clear_all;
+path p;
+p=makepath((pencircle xscaled 30) yscaled 20) scaled 10 shifted (160,110);
+if length p<>6: error; fi
+fill p;
+for k=1 upto length p: heavy_dot point k of p; endfor
+for x=0 step 10 until 320: proofrule((x,0),(x,220)); endfor
+for y=0 step 10 until 220: proofrule((0,y),(320,y)); endfor
+proofrulethickness .8;
+proofrule ((0,110),(320,110)); proofrule ((160,0),(160,220));
+showit;
+shipit;
+
+"Figure 16d"; % cutoff version of Figure 3n
+clear_all;
+z1=(0,100); z2=(100,100); z3=(200,100);
+z4=(0,0); z5=(100,0); z6=(200,0);
+path p; p=z4..controls z1 and z2..z6;
+cutdraw p;
+makelabel.rt.nodot("1",z1+(2,0));
+makelabel.rt.nodot("2",z2+(2,0));
+makelabel.rt.nodot("3",z3+(2,0));
+makelabel.rt.nodot(" 4",z4);
+makelabel.rt.nodot("5",z5+(2,0));
+makelabel.rt.nodot(" 6",z6);
+for k=1 upto 6: heavy_dot z[k]; endfor;
+showit;
+shipit;
+
+"Figure 16e"; % cutoff version of Figure 4b
+alpha:=.45; % controls bar location and similar things
+beta:=.2; % controls squareness of bowls
+numeric h#, xx#, yy#, o#, s#, u#, ph#, pv#;
+numeric leftstemloc, barheight;
+ h#=6; % height of characters, in pt
+ xx#=0.6; % extra length of certain features, in pt
+ u#=4/9; % unit width, in pt
+ s#=0; % extra sidebar, in pt
+ o#=1/9; % overshoot of curves, in pt
+ ph#=2/3; % horizontal thickness of pen, in pt
+yy#=xx#; define_whole_pixels(xx,yy);
+define_pixels(s,u);
+define_corrected_pixels(o);
+pv#=.9ph#; define_blacker_pixels(ph,pv);
+pickup pencircle xscaled ph yscaled pv;
+logo_pen:=savepen;
+leftstemloc:=good.x((2.5u#+s#)*pt);
+barheight:=good.y(alpha*h#*pt);
+def beginlogochar(suffix c)(expr n) = % code c; width is n units plus sidebars
+ beginchar(str c,n*u#+2s#,h#,0); pickup logo_pen enddef;
+
+beginlogochar(T,13);
+if odd(w-ph): w:=w+1; fi % allows a symmetric stem
+x1+x2=2x3=2x4=w; lft.x1=0;
+y1=y2=y3; top.y1=h; y4=0;
+draw z1--z2;
+cutoff(z1,170);
+cutoff(z2,-10);
+draw z3--z4;
+cutoff(z4,-80);
+labels.rt(1);
+labels.lft(2);
+labels.bot(3);
+makelabel.top("4",z4);
+endchar;
+
+"Figure 16f"; % tilde with pencircle
+clear_all;
+pickup pencircle xscaled .8pt yscaled .2pt rotated 50;
+z1=(0,0); z4=(200,30);
+z2-z1=z4-z3=whatever*dir 50;
+y2-y1=3(y4-y1);
+draw z1..controls z2 and z3..z4;
+makelabel.lft("1 ",z1);
+makelabel.rt(" 4",z4);
+showit;
+shipit;
+
+"Figure 16g"; % tilde with pensquare
+clear_all;
+pickup pensquare xscaled .8pt yscaled .2pt rotated 50;
+z1=(0,0); z4=(200,30);
+z2-z1=z4-z3=whatever*dir 50;
+y2-y1=3(y4-y1);
+draw z1..controls z2 and z3..z4;
+makelabel.lft("1 ",z1);
+makelabel.rt(" 4",z4);
+showit;
+shipit;
+
+"Figure 16h"; % fancy serif with pencircle
+clear_all;
+pickup pencircle xscaled .8pt yscaled .2pt rotated 20;
+z1=(20,175); bot z3=(0,0);
+z4=(50,0); z6=(25,175);
+x2=x1; z2=z3+whatever*dir 20;
+x5=x6; z5=z4+whatever*dir -20;
+pair dishing; dishing=(8,0) rotated 20;
+filldraw z1..controls z2..z3
+--(flex(z3,.5[z3,z4]+dishing,z4))shifted(0,-epsilon)
+-- z4..controls z5..z6--cycle;
+showit;
+labels.lft(1,2,3);
+labels.rt(4,5,6);
+shipit;
+
+"Figure 16i"; % fancy serif with pensquare
+clear_all;
+pickup pensquare xscaled .8pt yscaled .2pt rotated 20;
+z1=(20,175); bot z3=(0,0);
+z4=(50,0); z6=(25,175);
+x2=x1; z2=z3+whatever*dir 20;
+x5=x6; z5=z4+whatever*dir -20;
+pair dishing; dishing=(8,0) rotated 20;
+filldraw z1..controls z2..z3
+--(flex(z3,.5[z3,z4]+dishing,z4))shifted(0,-epsilon)
+-- z4..controls z5..z6--cycle;
+showit;
+labels.lft(1,2,3);
+labels.rt(4,5,6);
+shipit;
+
+"Figure 18a"; % O of METAFONT logo
+alpha:=.45; % controls bar location and similar things
+beta:=.2; % controls squareness of bowls
+numeric h#, xx#, yy#, o#, s#, u#, ph#, pv#;
+numeric leftstemloc, barheight;
+ h#=6; % height of characters, in pt
+ xx#=0.6; % extra length of certain features, in pt
+ u#=4/9; % unit width, in pt
+ s#=0; % extra sidebar, in pt
+ o#=1/9; % overshoot of curves, in pt
+ ph#=2/3; % horizontal thickness of pen, in pt
+yy#=xx#; define_whole_pixels(xx,yy);
+define_pixels(s,u);
+define_corrected_pixels(o);
+pv#=.9ph#; define_blacker_pixels(ph,pv);
+pickup pencircle xscaled ph yscaled pv;
+logo_pen:=savepen;
+leftstemloc:=good.x((2.5u#+s#)*pt);
+barheight:=good.y(alpha*h#*pt);
+def beginlogochar(expr c)(expr n) = % code c; width is n units plus sidebars
+ beginchar(c,n*u#+2s#,h#,0); pickup logo_pen enddef;
+
+def super_half(suffix i,j,k) =
+ draw z.i{0,y.j-y.i}
+ ... (.8[x.j,x.i],.8[y.i,y.j]){z.j-z.i}
+ ... z.j{x.k-x.i,0}
+ ... (.8[x.j,x.k],.8[y.k,y.j]){z.k-z.j}
+ ... z.k{0,y.k-y.j} enddef;
+
+beginlogochar("O",15);
+x1=x4=.5w; top y1=h+o; bot y4=-o;
+x2=w-x3=good.x(1.5u+s);
+y2=y3=barheight;
+super_half(2,1,3); super_half(3,4,2);
+labels.lft(2); labels.rt(1,3,4); endchar;
+
+"Figure A18a"; % A of METAFONT logo
+alpha:=.45; % controls bar location and similar things
+beta:=.2; % controls squareness of bowls
+numeric h#, xx#, yy#, o#, s#, u#, ph#, pv#;
+numeric leftstemloc, barheight;
+ h#=6; % height of characters, in pt
+ xx#=0.6; % extra length of certain features, in pt
+ u#=4/9; % unit width, in pt
+ s#=0; % extra sidebar, in pt
+ o#=1/9; % overshoot of curves, in pt
+ ph#=2/3; % horizontal thickness of pen, in pt
+yy#=xx#; define_whole_pixels(xx,yy);
+define_pixels(s,u);
+define_corrected_pixels(o);
+pv#=.9ph#; define_blacker_pixels(ph,pv);
+pickup pencircle xscaled ph yscaled pv;
+logo_pen:=savepen;
+leftstemloc:=good.x((2.5u#+s#)*pt);
+barheight:=good.y(alpha*h#*pt);
+def beginlogochar(expr c)(expr n) = % code c; width is n units plus sidebars
+ beginchar(c,n*u#+2s#,h#,0); pickup logo_pen enddef;
+
+def super_half(suffix i,j,k) =
+ draw z.i{0,y.j-y.i}
+ ... (.8[x.j,x.i],.8[y.i,y.j]){z.j-z.i}
+ ... z.j{x.k-x.i,0}
+ ... (.8[x.j,x.k],.8[y.k,y.j]){z.k-z.j}
+ ... z.k{0,y.k-y.j} enddef;
+
+beginlogochar("A",15);
+x1=.5w;
+x2=x4=leftstemloc;
+x3=x5=w-x2;
+top y1=h+o;
+y2=y3=barheight;
+bot y4=bot y5=-o;
+draw z4--z2--z3--z5;
+super_half(2,1,3);
+labels.top(2,3,4,5);
+labels.rt(1);
+endchar;
+
+"Figure 18b"; % serif points
+clear_all;
+def serif(suffix $)(expr breadth,theta,left_jut,right_jut)=
+ penpos$(breadth/abs sind theta,0);
+z$a-z$l=z$f-z$r=(bracket/abs sind theta)*dir theta;
+y$c=y$d; y$b=y$e=y$; y$b-y$c=if theta<0:-fi slab;
+x$b=x$c=x$l-left_jut; x$d=x$e=x$r+right_jut;
+enddef;
+
+def serif_edge suffix $ =
+ (serif_bracket($a,$l,$b)--z$c
+ --z$d--reverse serif_bracket($f,$r,$e)) enddef;
+
+def serif_bracket(suffix i,j,k) =
+ (z.i{z.j-z.i}...serif_darkness[z.j,.5[z.i,z.k] ]{z.k-z.i}
+ ...z.k{z.k-z.j}) enddef;
+
+serif_darkness:=1/4; slab:=50; bracket:=175;
+z$=(150,slab);
+serif($,100,75,80,90);
+pickup pencircle scaled 2; draw serif_edge $;
+labels.lft($l,$a);
+labels.rt($,$r,$f);
+labels.top($b,$e);
+labels.bot($c,$d);
+showit;
+shipit;
+
+"Figure 18c"; % AI by outlines
+clear_all;
+def serif(suffix $)(expr breadth,theta,left_jut,right_jut)=
+ penpos$(breadth/abs sind theta,0);
+z$a-z$l=z$f-z$r=(bracket/abs sind theta)*dir theta;
+y$c=y$d; y$b=y$e=y$; y$b-y$c=if theta<0:-fi slab;
+x$b=x$c=x$l-left_jut; x$d=x$e=x$r+right_jut;
+enddef;
+
+def serif_edge suffix $ =
+ (serif_bracket($a,$l,$b)--z$c
+ --z$d--reverse serif_bracket($f,$r,$e)) enddef;
+
+def serif_bracket(suffix i,j,k) =
+ (z.i{z.j-z.i}...serif_darkness[z.j,.5[z.i,z.k] ]{z.k-z.i}
+ ...z.k{z.k-z.j}) enddef;
+
+serif_darkness:=1/3;
+slab#:=1/4pt#;
+bracket#:=1pt#;
+jut#:=.9pt#;
+u#:=3/5pt#;
+ht#:=7pt#;
+thin#:=.5pt#;
+thick#:=1.1pt#;
+define_pixels(slab,bracket,jut,u,ht,thin,thick);
+
+beginchar("A",13u#,ht#,0);
+z1=(.5w,round 1.05h); x4l=w-x5r=u; y4l=y5r=slab;
+numeric theta[]; theta4=angle(z1-z4l); theta5=angle(z1-z5r);
+serif(4,thin,theta4,.6jut,jut); serif(5,thick,theta5,jut,.6jut);
+z0=z4r+whatever*dir theta4=z5l+whatever*dir theta5;
+fill z1--serif_edge4--z0 & z0--serif_edge5--z1 & cycle;
+penpos2(whatever,theta4); penpos3(whatever,theta5);
+y2r=y3r=.5[y4,y0]; y2l=y3l=y2r-thin;
+z2=whatever[z1,z4r]; z3=whatever[z1,z5l];
+penstroke z2e--z3e;
+labels.lft(3,5l,5,4a,5a);
+labels.rt(2,4r,4f,5f);
+labels.top(1,2r,3r,4l,5r,4b,4e,5b,5e);
+labels.bot(0,2l,3l,4,4c,4d,5c,5d);
+
+ww:=w; % special hacks to get two on one
+picture tmp; tmp:=currentpicture;
+proofrule((w,-d.o_),(w,h.o_));
+endgroup;
+
+beginchar("I",6u#,ht#,0);
+currentpicture:=tmp;
+currenttransform:=currenttransform shifted(ww,0);
+x1=x2=.5w; y1=h-y2; y2=slab;
+serif(1,thick,-90,1.1jut,1.1jut); serif(2,thick,90,1.1jut,1.1jut);
+fill serif_edge 2 -- reverse serif_edge 1 -- cycle;
+w:=w+ww;
+labels.lft(1a,2a,1l);
+labels.rt(1f,2f,1,1r);
+labels.top(2l,2,2r,2e,1c,1d);
+labels.bot(2d,1b,1e);
+makelabel("",z2b); makelabel("",z2c);
+makelabel.rt.nodot("2b",z2b+(0,3));
+makelabel.rt.nodot("2c",z2c-(0,3));
+endchar;
+
+currenttransform:=identity yscaled aspect_ratio;
+
+"Figure A18b"; % H by outlines
+clear_all;
+def serif(suffix $)(expr breadth,theta,left_jut,right_jut)=
+ penpos$(breadth/abs sind theta,0);
+z$a-z$l=z$f-z$r=(bracket/abs sind theta)*dir theta;
+y$c=y$d; y$b=y$e=y$; y$b-y$c=if theta<0:-fi slab;
+x$b=x$c=x$l-left_jut; x$d=x$e=x$r+right_jut;
+enddef;
+
+def serif_edge suffix $ =
+ (serif_bracket($a,$l,$b)--z$c
+ --z$d--reverse serif_bracket($f,$r,$e)) enddef;
+
+def serif_bracket(suffix i,j,k) =
+ (z.i{z.j-z.i}...serif_darkness[z.j,.5[z.i,z.k] ]{z.k-z.i}
+ ...z.k{z.k-z.j}) enddef;
+
+serif_darkness:=1/3;
+slab#:=1/4pt#;
+bracket#:=1pt#;
+jut#:=.9pt#;
+u#:=3/5pt#;
+ht#:=7pt#;
+thin#:=.5pt#;
+thick#:=1.1pt#;
+define_pixels(slab,bracket,jut,u,ht,thin,thick);
+
+beginchar("H",13u#,ht#,0);
+x1=x2=x5=3u; x3=x4=x6=w-x1; y1c=y3c=h; y2c=y4c=0;
+serif(1,thick,-90,jut,jut);
+serif(2,thick,90,jut,jut);
+serif(3,thick,-90,jut,jut);
+serif(4,thick,90,jut,jut);
+fill serif_edge 2 -- reverse serif_edge 1 -- cycle;
+fill serif_edge 4 -- reverse serif_edge 3 -- cycle;
+penpos5(thin,90); penpos6(thin,90);
+y5=y6=.52h; penstroke z5e--z6e;
+labels.lft(1a,2a,3a,4a,5,1,2,1l,2l,3l,4l);
+labels.rt(1f,2f,3f,4f,6,3,4,1r,2r,3r,4r);
+labels.top(1c,1d,2b,2e,4b,4e,3c,3d,5r,6r);
+labels.bot(1b,1e,2c,2d,4c,4d,3b,3e,5l,6l);
+endchar;
+
+"Figure 18d"; % AI by broadpen
+clear_all;
+def bot_serif(suffix $)(expr xx,theta,left_jut,right_jut)=
+ penpos$(xx,0);
+z$a-z$l=z$f-z$r=(bracket/abs sind theta)*dir theta;
+y$c=top y$l; y$d=y$r; x$c=x$l-left_jut; x$d=x$r+right_jut;
+z$b=z$l+whatever*dir theta=z$c+whatever*dir phi;
+z$e=z$r+whatever*dir theta=z$d+whatever*dir -phi;
+enddef;
+
+def top_serif(suffix $)(expr xx,theta,left_jut,right_jut)=
+ penpos$(xx,0);
+z$a-z$l=z$f-z$r=(bracket/abs sind theta)*dir theta;
+%y$c=top y$l; y$d=y$r; x$c=x$l-left_jut; x$d=x$r+right_jut;
+y$c=y$d=y$; x$c=x$l-left_jut; x$d=x$r+right_jut;
+z$b=z$l+whatever*dir theta=z$c+whatever*dir -phi;
+z$e=z$r+whatever*dir theta=z$d+whatever*dir phi;
+enddef;
+
+def bot_serif_edge suffix $ =
+ (z$a..controls z$b..z$c
+ --(flex(z$c,.5[z$c,z$d]+dishing,z$d)) shifted (0,-epsilon)
+ -- z$d..controls z$e..z$f) enddef;
+
+def top_serif_edge suffix $ =
+ (z$a..controls z$b..z$c
+ --(flex(z$c,.5[z$c,z$d]-dishing,z$d)) shifted (0,+epsilon)
+ -- z$d..controls z$e..z$f) enddef;
+
+phi:=20;
+pair dishing; dishing:=(1/4pt,0) rotated phi;
+bracket#:=1pt#;
+jut#:=.9pt#;
+u#:=3/5pt#;
+ht#:=7pt#;
+px#:=.8pt#;
+py#:=.2pt#;
+xx#:=.3pt#;
+define_pixels(bracket,jut,u,ht,px,py,xx);
+
+pickup pensquare xscaled px yscaled py rotated phi; broad_pen:=savepen;
+
+beginchar("A",13u#,ht#,0); pickup broad_pen;
+z1=(.5w,top h); lft x4l=w-rt x5r=1.2u; y4l=y5r=0;
+numeric theta[]; theta4=angle(z1-z4l); theta5=angle(z1-z5r);
+numeric xxx;
+px*sind(theta5-phi)+xxx*sind theta5 = px*cosd phi+xx;
+bot_serif(4,0,theta4,.8jut,.8jut);
+bot_serif(5,xxx,theta5,.6jut,.8jut);
+z0=z4r+whatever*dir theta4=z5l+whatever*dir theta5;
+filldraw z1--bot_serif_edge4--z0 & z0--bot_serif_edge5--z1 & cycle;
+top y2=top y3=.45 bot y0; z2=whatever[z1,z4r]; z3=whatever[z1,z5l];
+draw z2--z3;
+labels.lft(4a,4b,4c,4,5l,5a,5c);
+labels.rt(4f,4e,5r,5d,5e,5f);
+labels.top(1,2,3,5b);
+labels.bot(0,4d,5);
+
+ww:=w; % special hacks to get two on one
+picture tmp; tmp:=currentpicture;
+proofrule((w,-d.o_),(w,h.o_));
+endgroup;
+
+beginchar("I",6u#,ht#,0); pickup broad_pen;
+currentpicture:=tmp;
+currenttransform:=currenttransform shifted(ww,0);
+x1=x2=.5w; y1=h; y2=0;
+top_serif(1,xx,-90,1.1jut,1.1jut);
+bot_serif(2,xx,90,1.1jut,1.1jut);
+filldraw bot_serif_edge 2 -- reverse top_serif_edge 1 -- cycle;
+labels.lft(1l,2l,1a,1b,1c,2a,2b);
+labels.rt(1r,2r,1d,1e,1f,2d,2e,2f);
+labels.top(1);
+labels.bot(2,2c);
+w:=w+ww;
+endchar;
+
+currenttransform:=identity yscaled aspect_ratio;
+
+"Figure A18c"; % H by broadpen
+clear_all;
+def bot_serif(suffix $)(expr xx,theta,left_jut,right_jut)=
+ penpos$(xx,0);
+z$a-z$l=z$f-z$r=(bracket/abs sind theta)*dir theta;
+y$c=top y$l; y$d=y$r; x$c=x$l-left_jut; x$d=x$r+right_jut;
+z$b=z$l+whatever*dir theta=z$c+whatever*dir phi;
+z$e=z$r+whatever*dir theta=z$d+whatever*dir -phi;
+enddef;
+
+def top_serif(suffix $)(expr xx,theta,left_jut,right_jut)=
+ penpos$(xx,0);
+z$a-z$l=z$f-z$r=(bracket/abs sind theta)*dir theta;
+y$c=y$d=y$; x$c=x$l-left_jut; x$d=x$r+right_jut;
+z$b=z$l+whatever*dir theta=z$c+whatever*dir -phi;
+z$e=z$r+whatever*dir theta=z$d+whatever*dir phi;
+enddef;
+
+def bot_serif_edge suffix $ =
+ (z$a..controls z$b..z$c
+ --(flex(z$c,.5[z$c,z$d]+dishing,z$d))shifted (0,-epsilon)
+ -- z$d..controls z$e..z$f) enddef;
+
+def top_serif_edge suffix $ =
+ (z$a..controls z$b..z$c
+ --(flex(z$c,.5[z$c,z$d]-dishing,z$d))shifted (0,+epsilon)
+ -- z$d..controls z$e..z$f) enddef;
+
+phi:=20;
+pair dishing; dishing:=(1/4pt,0) rotated phi;
+bracket#:=1pt#;
+jut#:=.9pt#;
+u#:=3/5pt#;
+ht#:=7pt#;
+px#:=.8pt#;
+py#:=.2pt#;
+xx#:=.3pt#;
+define_pixels(bracket,jut,u,ht,px,py,xx);
+
+pickup pensquare xscaled px yscaled py rotated phi; broad_pen:=savepen;
+
+beginchar("H",13u#,ht#,0); pickup broad_pen;
+x1=x2=x5=3u; x3=x4=x6=w-x1; y1=y3=h; y2=y4=0;
+top_serif(1,xx,-90,jut,jut);
+bot_serif(2,xx,90,jut,jut);
+top_serif(3,xx,-90,jut,jut);
+bot_serif(4,xx,90,jut,jut);
+filldraw bot_serif_edge 2 -- reverse top_serif_edge 1 -- cycle;
+filldraw bot_serif_edge 4 -- reverse top_serif_edge 3 -- cycle;
+y5=y6=.52h; draw z5--z6;
+labels.lft(l1,2l,3l,4l,1a,1b,1c,2a,2b,2c,3a,3b,3c,4a,4b,4c);
+labels.rt(1r,2r,3r,4r,1d,1e,1f,2d,2e,2f,3d,3e,3f,4d,4e,4f);
+labels.top(1,3);
+labels.bot(2,4,5,6);
+endchar;
+
+currenttransform:=identity yscaled aspect_ratio;
+
+"Figure 20a"; % example of `solve'
+clear_all;
+z1=(0,25); z2=(100,100); z3=(300,100); z4=(320,0);
+vardef upward(expr x)=
+ ypart direction 1 of (z1{z2-z1}..(x,y2)..{z4-z3}z4)>0 enddef;
+z=(solve upward(x2,x3),y2);
+pickup pencircle scaled 4;
+draw z1{z2-z1}..z..{z4-z3}z4;
+pickup pencircle scaled 2;
+draw z1--z2; draw z3--z4;
+makelabel.lft("z1 ",z1);
+makelabel.lft("z2 ",z2);
+makelabel.rt(" z3",z3);
+makelabel.rt(" z4",z4);
+makelabel.top.nodot("z",z+(0,2));
+forsuffixes $=1,2,3,4,: heavy_dot z$; endfor
+showit;
+shipit;
+
+"Figure 21a"; % N of METAFONT logo
+alpha:=.45; % controls bar location and similar things
+beta:=.2; % controls squareness of bowls
+numeric h#, xx#, yy#, o#, s#, u#, ph#, pv#;
+numeric leftstemloc, barheight;
+ h#=6; % height of characters, in pt
+ xx#=0.6; % extra length of certain features, in pt
+ u#=4/9; % unit width, in pt
+ s#=0; % extra sidebar, in pt
+ o#=1/9; % overshoot of curves, in pt
+ ph#=2/3; % horizontal thickness of pen, in pt
+yy#=xx#; define_whole_pixels(xx,yy);
+define_pixels(s,u);
+define_corrected_pixels(o);
+pv#=.9ph#; define_blacker_pixels(ph,pv);
+pickup pencircle xscaled ph yscaled pv;
+logo_pen:=savepen;
+leftstemloc:=good.x((2.5u#+s#)*pt);
+barheight:=good.y(alpha*h#*pt);
+def beginlogochar(expr c)(expr n) = % code c; width is n units plus sidebars
+ beginchar(c,n*u#+2s#,h#,0); pickup logo_pen enddef;
+
+beginlogochar("N",15);
+x1+x4=x1+x3=x2+x5=w; x1=x2=leftstemloc;
+y1=y4=y3-yy; bot.y1=-o; y2=y5; top.y5=h+o;
+draw z1--z2--z3; draw z4..z5;
+labels.top(1,3,4);
+labels.bot(2,5);
+endchar;
+
+"Figure 21b"; % random N of METAFONT logo, nine-point size
+randomseed:=1;
+
+vardef noise=normaldeviate*.1pt enddef;
+
+ht#:=.9*6pt#;
+xgap#:=.9*0.6pt#;
+u#:=.91*4/9pt#;
+s#:=.08pt#;
+o#:=1/10pt#;
+px#:=.9*2/3pt#;
+ygap#:=(ht#/13.5u#)*xgap#;
+leftstemloc#:=2.5u#+s#;
+barheight#:=.45ht#;
+define_pixels(s,u,xgap,ygap,leftstemloc,barheight);
+py#:=.9px#; define_blacker_pixels(px,py);
+pickup pencircle xscaled px yscaled py; logo_pen:=savepen;
+define_corrected_pixels(o);
+
+def beginlogochar(expr c,n) =
+ beginchar(c,n*u#+2s#,ht#,0); pickup logo_pen enddef;
+
+beginlogochar("N",15);
+x1=leftstemloc+noise;
+x2=leftstemloc+noise;
+x4=w-leftstemloc+noise;
+x5=w-leftstemloc+noise;
+bot y1=noise-o;
+top y2=h+o+noise;
+y3=y4+ygap+noise;
+bot y4=noise-o;
+top y5=h+o+noise;
+z3=whatever[z4,z5];
+draw z1--z2--z3; draw z4--z5;
+labels.top(1,3,4);
+labels.bot(2,5);
+endchar;
+
+"Figure 21c"; % random N of METAFONT logo, nine-point size
+randomseed:=2;
+
+vardef noise=normaldeviate*.1pt enddef;
+
+ht#:=.9*6pt#;
+xgap#:=.9*0.6pt#;
+u#:=.91*4/9pt#;
+s#:=.08pt#;
+o#:=1/10pt#;
+px#:=.9*2/3pt#;
+ygap#:=(ht#/13.5u#)*xgap#;
+leftstemloc#:=2.5u#+s#;
+barheight#:=.45ht#;
+define_pixels(s,u,xgap,ygap,leftstemloc,barheight);
+py#:=.9px#; define_blacker_pixels(px,py);
+pickup pencircle xscaled px yscaled py; logo_pen:=savepen;
+define_corrected_pixels(o);
+
+def beginlogochar(expr c,n) =
+ beginchar(c,n*u#+2s#,ht#,0); pickup logo_pen enddef;
+
+beginlogochar("N",15);
+x1=leftstemloc+noise;
+x2=leftstemloc+noise;
+x4=w-leftstemloc+noise;
+x5=w-leftstemloc+noise;
+bot y1=noise-o;
+top y2=h+o+noise;
+y3=y4+ygap+noise;
+bot y4=noise-o;
+top y5=h+o+noise;
+z3=whatever[z4,z5];
+draw z1--z2--z3; draw z4--z5;
+labels.top(1,3,4);
+labels.bot(2,5);
+endchar;
+
+"Figure 21d"; % random N of METAFONT logo, nine-point size
+randomseed:=3;
+
+vardef noise=normaldeviate*.1pt enddef;
+
+ht#:=.9*6pt#;
+xgap#:=.9*0.6pt#;
+u#:=.91*4/9pt#;
+s#:=.08pt#;
+o#:=1/10pt#;
+px#:=.9*2/3pt#;
+ygap#:=(ht#/13.5u#)*xgap#;
+leftstemloc#:=2.5u#+s#;
+barheight#:=.45ht#;
+define_pixels(s,u,xgap,ygap,leftstemloc,barheight);
+py#:=.9px#; define_blacker_pixels(px,py);
+pickup pencircle xscaled px yscaled py; logo_pen:=savepen;
+define_corrected_pixels(o);
+
+def beginlogochar(expr c,n) =
+ beginchar(c,n*u#+2s#,ht#,0); pickup logo_pen enddef;
+
+beginlogochar("N",15);
+x1=leftstemloc+noise;
+x2=leftstemloc+noise;
+x4=w-leftstemloc+noise;
+x5=w-leftstemloc+noise;
+bot y1=noise-o;
+top y2=h+o+noise;
+y3=y4+ygap+noise;
+bot y4=noise-o;
+top y5=h+o+noise;
+z3=whatever[z4,z5];
+draw z1--z2--z3; draw z4--z5;
+labels.top(1,3,4);
+labels.bot(2,5);
+endchar;
+
+"Figure 24a"; % Ionian O at 200 pixels/inch
+ss:=10;
+begingroup interim hppp:=200/72.27; % lowres parameters
+interim blacker:=.65; % make pens a bit blacker
+interim o_correction:=.4; % but don't overshoot as much
+ em#:=10pt#; cap#:=7pt#;
+ thin#:=1/3pt#; thick#:=5/6pt#;
+ o#:=1/5pt#;
+define_pixels(em,cap);
+define_blacker_pixels(thin,thick);
+define_corrected_pixels(o);
+ curve_sidebar:=round 1/18em;
+pair u,uu,v;
+beginchar("O",0.8em#,cap#,0);
+ penpos1(thick,10); penpos2(.1[thin,thick],90-10);
+ penpos3(thick,180+10); penpos4(thin,270-10);
+ x1l=w-x3l=curve_sidebar; x2=x4=.5w;
+ y1=.49h; y2l=-o; y3=.51h; y4l=h+o;
+ penstroke (z1e{down}..z2e{right}
+ ..z3e{up}..z4e{left}..cycle) scaled ss;
+for m=0 upto w: proofrule((m*ss,0),(m*ss,h*ss)); endfor
+for n=0 upto h: proofrule((0,n*ss),(w*ss,n*ss)); endfor
+proofrulethickness 1;
+forsuffixes e=l,r:
+ u:=round((point 0 of path_.e)/ss);
+ for t=0 step 1/64 until 4:
+ v:=round((point t of path_.e)/ss);
+ if u<>v: if abs(u-v)=1: proofrule(u*ss,v*ss);
+ else: del:=1/128; tt:=t-del;
+ forever: uu:=round((point tt of path_.e)/ss);
+ exitif abs(u-uu)=1;
+ if del=epsilon:ddt;fi
+ del:=del/2;
+ tt:=tt if uu=u:+ else:-fi del; endfor
+ proofrule(u*ss,uu*ss); proofrule(uu*ss,v*ss); fi
+ u:=v; fi endfor
+ endfor
+showit;
+shipit;
+endgroup;
+endgroup;
+numeric u,uu,v;
+
+"Figure 24b"; % Ionian O at 200 pixels/inch, unrounded position
+ss:=10;
+begingroup interim hppp:=200/72.27; % lowres parameters
+interim blacker:=.65; % make pens a bit blacker
+interim o_correction:=.4; % but don't overshoot as much
+ em#:=10pt#; cap#:=7pt#;
+ thin#:=1/3pt#; thick#:=5/6pt#;
+ o#:=1/5pt#;
+define_pixels(em,cap);
+define_blacker_pixels(thin,thick);
+define_corrected_pixels(o);
+ curve_sidebar:= 1/18em;
+pair u,uu,v;
+beginchar("O",0.8em#,cap#,0);
+ penpos1(thick,10); penpos2(.1[thin,thick],90-10);
+ penpos3(thick,180+10); penpos4(thin,270-10);
+ x1l=w-x3l=curve_sidebar; x2=x4=.5w;
+ y1=.49h; y2l=-o; y3=.51h; y4l=h+o;
+ penstroke (z1e{down}..z2e{right}
+ ..z3e{up}..z4e{left}..cycle) scaled ss;
+for m=0 upto w: proofrule((m*ss,0),(m*ss,h*ss)); endfor
+for n=0 upto h: proofrule((0,n*ss),(w*ss,n*ss)); endfor
+proofrulethickness 1;
+forsuffixes e=l,r:
+ u:=round((point 0 of path_.e)/ss);
+ for t=0 step 1/64 until 4:
+ v:=round((point t of path_.e)/ss);
+ if u<>v: if abs(u-v)=1: proofrule(u*ss,v*ss);
+ else: del:=1/128; tt:=t-del;
+ forever: uu:=round((point tt of path_.e)/ss);
+ exitif abs(u-uu)=1;
+ if del=epsilon:ddt;fi
+ del:=del/2;
+ tt:=tt if uu=u:+ else:-fi del; endfor
+ proofrule(u*ss,uu*ss); proofrule(uu*ss,v*ss); fi
+ u:=v; fi endfor
+ endfor
+showit;
+shipit;
+endgroup;
+endgroup;
+numeric u,uu,v;
+
+"Figure 24c"; % Fig 24b shifted right .05 pixel
+ss:=10;
+begingroup interim hppp:=200/72.27; % lowres parameters
+interim blacker:=.65; % make pens a bit blacker
+interim o_correction:=.4; % but don't overshoot as much
+ em#:=10pt#; cap#:=7pt#;
+ thin#:=1/3pt#; thick#:=5/6pt#;
+ o#:=1/5pt#;
+define_pixels(em,cap);
+define_blacker_pixels(thin,thick);
+define_corrected_pixels(o);
+ curve_sidebar:= 1/18em;
+pair u,uu,v;
+beginchar("O",0.8em#,cap#,0);
+ penpos1(thick,10); penpos2(.1[thin,thick],90-10);
+ penpos3(thick,180+10); penpos4(thin,270-10);
+ x1l=w-x3l=curve_sidebar; x2=x4=.5w;
+ y1=.49h; y2l=-o; y3=.51h; y4l=h+o;
+ penstroke (z1e{down}..z2e{right}
+ ..z3e{up}..z4e{left}..cycle) shifted (.05,0) scaled ss;
+for m=0 upto w: proofrule((m*ss,0),(m*ss,h*ss)); endfor
+for n=0 upto h: proofrule((0,n*ss),(w*ss,n*ss)); endfor
+proofrulethickness 1;
+forsuffixes e=l,r:
+ u:=round((point 0 of path_.e)/ss);
+ for t=0 step 1/64 until 4:
+ v:=round((point t of path_.e)/ss);
+ if u<>v: if abs(u-v)=1: proofrule(u*ss,v*ss);
+ else: del:=1/128; tt:=t-del;
+ forever: uu:=round((point tt of path_.e)/ss);
+ exitif abs(u-uu)=1;
+ if del=epsilon:ddt;fi
+ del:=del/2;
+ tt:=tt if uu=u:+ else:-fi del; endfor
+ proofrule(u*ss,uu*ss); proofrule(uu*ss,v*ss); fi
+ u:=v; fi endfor
+ endfor
+showit;
+shipit;
+endgroup;
+endgroup;
+numeric u,uu,v;
+
+"Figure 24d"; % Fig 24c shifted right .05 pixel
+ss:=10;
+begingroup interim hppp:=200/72.27; % lowres parameters
+interim blacker:=.65; % make pens a bit blacker
+interim o_correction:=.4; % but don't overshoot as much
+ em#:=10pt#; cap#:=7pt#;
+ thin#:=1/3pt#; thick#:=5/6pt#;
+ o#:=1/5pt#;
+define_pixels(em,cap);
+define_blacker_pixels(thin,thick);
+define_corrected_pixels(o);
+ curve_sidebar:= 1/18em;
+pair u,uu,v;
+beginchar("O",0.8em#,cap#,0);
+ penpos1(thick,10); penpos2(.1[thin,thick],90-10);
+ penpos3(thick,180+10); penpos4(thin,270-10);
+ x1l=w-x3l=curve_sidebar; x2=x4=.5w;
+ y1=.49h; y2l=-o; y3=.51h; y4l=h+o;
+ penstroke (z1e{down}..z2e{right}
+ ..z3e{up}..z4e{left}..cycle) shifted (.1,0) scaled ss;
+for m=0 upto w: proofrule((m*ss,0),(m*ss,h*ss)); endfor
+for n=0 upto h: proofrule((0,n*ss),(w*ss,n*ss)); endfor
+proofrulethickness 1;
+forsuffixes e=l,r:
+ u:=round((point 0 of path_.e)/ss);
+ for t=0 step 1/64 until 4:
+ v:=round((point t of path_.e)/ss);
+ if u<>v: if abs(u-v)=1: proofrule(u*ss,v*ss);
+ else: del:=1/128; tt:=t-del;
+ forever: uu:=round((point tt of path_.e)/ss);
+ exitif abs(u-uu)=1;
+ if del=epsilon:ddt;fi
+ del:=del/2;
+ tt:=tt if uu=u:+ else:-fi del; endfor
+ proofrule(u*ss,uu*ss); proofrule(uu*ss,v*ss); fi
+ u:=v; fi endfor
+ endfor
+showit;
+shipit;
+endgroup;
+endgroup;
+numeric u,uu,v;
+
+"Figure 24e"; % hash mark
+numeric u;
+u#:=10/18pt#; define_pixels(u);
+beginchar(0,15u#,250/36pt#,70/36pt#);
+pickup pencircle scaled (.4pt+blacker);
+lft x1=round u-eps; x3=x1; x2=x4=w-x1;
+y1=y2=good.y(.5[-d,h]+1.1pt); y3=y4=h-d-y1;
+draw z1--z2; draw z3--z4;
+lft x6=round 3u; x7=w-x6;
+x8=good.x .5w; x5-x6=x7-x8;
+top y5=top y7=h+eps; bot y6=bot y8=-d-eps;
+draw z5--z6; draw z7--z8;
+labels.top(6,8);
+labels.bot(5,7);
+labels.lft(2,4);
+labels.rt(1,3);
+endchar;
+
+"Figure 24f"; % Ionian O at 200 pixels/inch, autorounding=1
+ss:=10;
+begingroup interim hppp:=200/72.27; % lowres parameters
+interim blacker:=.65; % make pens a bit blacker
+interim o_correction:=.4; % but don't overshoot as much
+ em#:=10pt#; cap#:=7pt#;
+ thin#:=1/3pt#; thick#:=5/6pt#;
+ o#:=1/5pt#;
+define_pixels(em,cap);
+define_blacker_pixels(thin,thick);
+define_corrected_pixels(o);
+ curve_sidebar:= 1/18em;
+interim autorounding:=1;
+interim granularity:=10;
+beginchar("O",0.8em#,cap#,0);
+ penpos1(thick,10); penpos2(.1[thin,thick],90-10);
+ penpos3(thick,180+10); penpos4(thin,270-10);
+ x1l=w-x3l=curve_sidebar; x2=x4=.5w;
+ y1=.49h; y2l=-o; y3=.51h; y4l=h+o;
+ penstroke (z1e{down}..z2e{right}
+ ..z3e{up}..z4e{left}..cycle) scaled ss;
+for m=0 upto w: proofrule((m*ss,0),(m*ss,h*ss)); endfor
+for n=0 upto h: proofrule((0,n*ss),(w*ss,n*ss)); endfor
+proofrulethickness 1;
+pair u;
+for v= % pairs gotten from tracingedges on a separate run!
+(2,9), (2,6), (3,6), (3,4), (4,4), (4,3), (5,3), (5,2), (6,2),
+(6,1), (8,1), (8,0), (14,0), (14,1), (16,1), (16,2), (17,2), (17,3),
+(18,3), (18,4), (19,4), (19,7), (20,7), (20,13), (19,13), (19,15),
+(18,15), (18,16), (17,16), (17,17), (16,17), (16,18), (14,18), (14,19),
+(8,19), (8,18), (6,18), (6,17), (5,17), (5,16), (4,16), (4,15), (3,15),
+(3,12), (2,12), (2,9)
+:if known u: proofrule(u*ss,v*ss) ; fi
+u:=v; endfor
+
+pair u;
+for v=
+(4,9), (4,7), (5,7), (5,5), (6,5),
+(6,4), (7,4), (7,3), (9,3), (9,2), (14,2), (14,3), (15,3), (15,4), (16,4),
+(16,5), (17,5), (17,7), (18,7), (18,12), (17,12), (17,14), (16,14),
+(16,15), (15,15), (15,16), (13,16), (13,17), (8,17), (8,16), (7,16),
+(7,15), (6,15), (6,14), (5,14), (5,12), (4,12), (4,9)
+:if known u: proofrule(u*ss,v*ss) ; fi
+u:=v; endfor
+showit;
+shipit;
+endgroup;
+endgroup;
+numeric u;
+
+"Figure 24g"; % Ionian O at 200 pixels/inch, autorounding=2
+ss:=10;
+begingroup interim hppp:=200/72.27; % lowres parameters
+interim blacker:=.65; % make pens a bit blacker
+interim o_correction:=.4; % but don't overshoot as much
+ em#:=10pt#; cap#:=7pt#;
+ thin#:=1/3pt#; thick#:=5/6pt#;
+ o#:=1/5pt#;
+define_pixels(em,cap);
+define_blacker_pixels(thin,thick);
+define_corrected_pixels(o);
+ curve_sidebar:= 1/18em;
+interim autorounding:=2;
+interim granularity:=10;
+beginchar("O",0.8em#,cap#,0);
+ penpos1(thick,10); penpos2(.1[thin,thick],90-10);
+ penpos3(thick,180+10); penpos4(thin,270-10);
+ x1l=w-x3l=curve_sidebar; x2=x4=.5w;
+ y1=.49h; y2l=-o; y3=.51h; y4l=h+o;
+ penstroke (z1e{down}..z2e{right}
+ ..z3e{up}..z4e{left}..cycle) scaled ss;
+for m=0 upto w: proofrule((m*ss,0),(m*ss,h*ss)); endfor
+for n=0 upto h: proofrule((0,n*ss),(w*ss,n*ss)); endfor
+proofrulethickness 1;
+pair u;
+for v=
+(2,9), (2,6), (3,6),
+(3,4), (4,4), (4,3), (5,3), (5,2), (6,2), (6,1), (8,1), (8,0), (14,0),
+(14,1), (16,1), (16,2), (17,2), (17,3), (18,3), (18,4), (19,4), (19,7),
+(20,7), (20,13), (19,13), (19,15), (18,15), (18,16), (17,16), (17,17),
+(16,17), (16,18), (14,18), (14,19), (8,19), (8,18), (6,18), (6,17),
+(5,17), (5,16), (4,16), (4,15), (3,15), (3,12), (2,12), (2,9)
+:if known u: proofrule(u*ss,v*ss) ; fi
+u:=v; endfor
+
+pair u;
+for v=
+(4,9), (4,7), (5,7), (5,5), (6,5),
+(6,4), (7,4), (7,3), (9,3), (9,2), (13,2), (13,3), (15,3), (15,4), (16,4),
+(16,5), (17,5), (17,7), (18,7), (18,12), (17,12), (17,14), (16,14),
+(16,15), (15,15), (15,16), (13,16), (13,17), (9,17), (9,16), (7,16),
+(7,15), (6,15), (6,14), (5,14), (5,12), (4,12), (4,9)
+:if known u: proofrule(u*ss,v*ss) ; fi
+u:=v; endfor
+showit;
+shipit;
+endgroup;
+endgroup;
+numeric u;
+
+"Figure 24h"; % Ionian O at 200 pixels/inch, autorounding=0, smoothing=1
+ss:=10;
+begingroup interim hppp:=200/72.27; % lowres parameters
+interim blacker:=.65; % make pens a bit blacker
+interim o_correction:=.4; % but don't overshoot as much
+ em#:=10pt#; cap#:=7pt#;
+ thin#:=1/3pt#; thick#:=5/6pt#;
+ o#:=1/5pt#;
+define_pixels(em,cap);
+define_blacker_pixels(thin,thick);
+define_corrected_pixels(o);
+ curve_sidebar:= 1/18em;
+beginchar("O",0.8em#,cap#,0);
+ penpos1(thick,10); penpos2(.1[thin,thick],90-10);
+ penpos3(thick,180+10); penpos4(thin,270-10);
+ x1l=w-x3l=curve_sidebar; x2=x4=.5w;
+ y1=.49h; y2l=-o; y3=.51h; y4l=h+o;
+ penstroke (z1e{down}..z2e{right}
+ ..z3e{up}..z4e{left}..cycle) scaled ss;
+for m=0 upto w: proofrule((m*ss,0),(m*ss,h*ss)); endfor
+for n=0 upto h: proofrule((0,n*ss),(w*ss,n*ss)); endfor
+proofrulethickness 1;
+pair u;
+for v=
+(2,9), (2,5), (3,5),
+(3,3), (4,3), (4,2), (6,2), (6,1), (8,1), (8,0), (14,0), (14,1), (16,1),
+(16,2), (17,2), (17,3), (18,3), (18,4), (19,4), (19,6), (20,6), (20,14),
+(19,14), (19,16), (18,16), (18,17), (16,17), (16,18), (14,18), (14,19),
+(8,19), (8,18), (6,18), (6,17), (5,17), (5,16), (4,16), (4,15), (3,15),
+(3,13), (2,13), (2,9)
+:if known u: proofrule(u*ss,v*ss) ; fi
+u:=v; endfor
+
+pair u;
+for v=
+(4,10), (4,9), (5,9), (5,5), (6,5),
+(6,4), (7,4), (7,3), (8,3), (8,2), (14,2), (14,3), (15,3), (15,4), (16,4),
+(16,6), (17,6), (17,8), (18,8), (18,10), (17,10), (17,13), (16,13),
+(16,15), (15,15), (15,16), (14,16), (14,17), (8,17), (8,16), (7,16),
+(7,15), (6,15), (6,13), (5,13), (5,11), (4,11), (4,10)
+:if known u: proofrule(u*ss,v*ss) ; fi
+u:=v; endfor
+showit;
+shipit;
+endgroup;
+endgroup;
+numeric u;
+
+"Figure 27a"; % Modification of Fig. 14b
+clear_all;
+pair zz[];
+zz1=(0,509);
+zz2=(-14,492);
+zz3=(-32,481);
+zz4=(-42,455);
+zz5=(-62,430);
+zz6=(-20,452);
+zz7=(42,448);
+zz8=(38,465);
+zz9=(4,493);
+for n=1 upto 9: z[n-1]=(zz[n]+(62,-430)) scaled 2.5; heavy_dot z[n-1]; endfor
+pickup pencircle scaled 3;
+draw flex(z0,z1,z2)&flex(z2,z3,z4)
+ &flex(z4,z5,z6)&flex(z6,z7,z8,z0)&cycle;
+labels.lft(1,2,3,4);
+labels.rt(0,6,7,8);
+labels.bot(5);
+showit; shipit;
+
+"Figure Da"; % Neenie's problem
+clear_all;
+z1l=(0,240-y); z1r=(15,288-y);
+z0l-z0r=z1l-z1r; z0r=(144,189-y); y0l=0;
+pickup pencircle scaled 2;
+numeric a,b,c,d;
+a=x1l; b=y1r; (c,d)=z0r;
+draw z0l--z0r--z1r--z1l--cycle;
+proofrule((a,d),(a,b)); proofrule((a,b),(a-d+b,b));
+for z=z0l,z0r,z1l,z1r,(a,b): heavy_dot z; endfor
+makelabel.bot.nodot("<=",z1r+(3,-8));
+makelabel.lft("(a,b)",(a,b));
+makelabel.top("z1r",z1r);
+makelabel.lft("z1l",z1l);
+makelabel.rt("(c,d)",z0r);
+makelabel.lft("z0r ",z0r);
+makelabel.lft("z0l ",z0l);
+showit; shipit;
+
+"Figure Ea"; % T of METAFONT logo, with italic correction
+alpha:=.45; % controls bar location and similar things
+beta:=.2; % controls squareness of bowls
+numeric h#, xx#, yy#, o#, s#, u#, ph#, pv#;
+numeric leftstemloc, barheight;
+ h#=6; % height of characters, in pt
+ xx#=0.6; % extra length of certain features, in pt
+ u#=4/9; % unit width, in pt
+ s#=0; % extra sidebar, in pt
+ o#=1/9; % overshoot of curves, in pt
+ ph#=2/3; % horizontal thickness of pen, in pt
+yy#=xx#; define_whole_pixels(xx,yy);
+define_pixels(s,u);
+define_corrected_pixels(o);
+pv#=.9ph#; define_blacker_pixels(ph,pv);
+pickup pencircle xscaled ph yscaled pv;
+logo_pen:=savepen;
+leftstemloc:=good.x((2.5u#+s#)*pt);
+barheight:=good.y(alpha*h#*pt);
+def beginlogochar(suffix c)(expr n) = % code c; width is n units plus sidebars
+ beginchar(str c,n*u#+2s#,h#,0); pickup logo_pen enddef;
+slant:=0;
+
+beginlogochar(T,13);
+italcorr h#*slant+.5u#;
+if odd(w-ph): w:=w+1; fi % allows a symmetric stem
+x1+x2=2x3=2x4=w; lft.x1=-epsilon; % I tried s-o instead; was not as good
+y1=y2=y3; top.y1=h; bot.y4=-o;
+draw z1..z2; draw z3..z4;
+labels.rt(2,3);
+makelabel.top("1",z1);
+makelabel.top("4",z4);
+endchar;
+
+"Figure Eb"; % F of METAFONT logo
+alpha:=.45; % controls bar location and similar things
+beta:=.2; % controls squareness of bowls
+numeric h#, xx#, yy#, o#, s#, u#, ph#, pv#;
+numeric leftstemloc, barheight;
+ h#=6; % height of characters, in pt
+ xx#=0.6; % extra length of certain features, in pt
+ u#=4/9; % unit width, in pt
+ s#=0; % extra sidebar, in pt
+ o#=1/9; % overshoot of curves, in pt
+ ph#=2/3; % horizontal thickness of pen, in pt
+yy#=xx#; define_whole_pixels(xx,yy);
+define_pixels(s,u);
+define_corrected_pixels(o);
+pv#=.9ph#; define_blacker_pixels(ph,pv);
+pickup pencircle xscaled ph yscaled pv;
+logo_pen:=savepen;
+leftstemloc:=good.x((2.5u#+s#)*pt);
+barheight:=good.y(alpha*h#*pt);
+def beginlogochar(suffix c)(expr n) = % code c; width is n units plus sidebars
+ beginchar(str c,n*u#+2s#,h#,0); pickup logo_pen enddef;
+
+beginlogochar(F,14);
+x1=x2=x3=leftstemloc; x4=w-x1+o; x5=x4-xx;
+y2=y5; y3=y4; bot.y1=-o; top.y3=h; y2=barheight;
+draw z1--z3--z4; draw z2--z5;
+labels.rt(2,3);
+labels.lft(4,5);
+labels.top(1);
+endchar;
+
+"Figure Ec"; % cmr10 period
+u#:=20/36pt#;
+dot_diam#:=38/36pt#;
+body_height#:=270/36pt#; % height of tallest characters
+asc_height#:=250/36pt#; % height of lowercase ascenders
+x_height#:=155/36pt#; % height of lowercase without ascenders
+bar_height#:=87/36pt#; % height of crossbar in lowercase e
+desc_depth#:=70/36pt#; % depth of lowercase descenders
+body_depth#:=90/36pt#;
+fine#:=7/36pt#;
+
+define_pixels(u);
+define_whole_blacker_pixels(dot_diam,fine);
+define_whole_vertical_pixels(body_height,asc_height,x_height,bar_height,
+ desc_depth,body_depth);
+
+beginchar(".",5u#,dot_diam#,0);
+def makebox(text rule) =
+ for y=0,asc_height,body_height,x_height,bar_height,-desc_depth,-body_depth:
+ rule((0,y),(w,y)); endfor % horizontals
+ for x=0,w: rule((x,-body_depth),(x,body_height)); endfor % verticals
+ for x=u step u until w-1:
+ rule((x,-body_depth),(x,body_height)); endfor % more verticals
+ if charic<>0:
+ rule((w+charic*pt,h.o_),(w+charic*pt,.5h.o_)); fi % italic correction
+ enddef;
+pickup pencircle scaled fine;
+penpos1(dot_diam-fine,0); penpos2(dot_diam-fine,90);
+x1l=good.x(x1l+.5w-x1); bot y2l=0; z1=z2;
+filldraw z1l...z2l...z1r...z2r...cycle; % roundish dot
+labels.lft(1,1l);
+labels.rt(2,1r);
+labels.top(2r);
+labels.bot(2l);
+endchar;
+
+"Figure Ed"; % cmr10 emdash
+u#:=20/36pt#;
+dot_diam#:=38/36pt#;
+body_height#:=270/36pt#; % height of tallest characters
+asc_height#:=250/36pt#; % height of lowercase ascenders
+x_height#:=155/36pt#; % height of lowercase without ascenders
+bar_height#:=87/36pt#; % height of crossbar in lowercase e
+desc_depth#:=70/36pt#; % depth of lowercase descenders
+body_depth#:=90/36pt#;
+vair#:=8/36pt#; % vertical diameter of hairlines
+
+define_pixels(u);
+define_whole_blacker_pixels(dot_diam,vair);
+define_whole_vertical_pixels(body_height,asc_height,x_height,bar_height,
+ desc_depth,body_depth);
+
+beginchar(oct"174",18u#,x_height#,0);
+def makebox(text rule) =
+ for y=0,asc_height,body_height,x_height,bar_height,-desc_depth,-body_depth:
+ rule((0,y),(w,y)); endfor % horizontals
+ for x=0,w: rule((x,-body_depth),(x,body_height)); endfor % verticals
+ for x=u step u until w-1:
+ rule((x,-body_depth),(x,body_height)); endfor % more verticals
+ if charic<>0:
+ rule((w+charic*pt,h.o_),(w+charic*pt,.5h.o_)); fi % italic correction
+ enddef;
+italcorr .61803x_height#*0 + .5u#;
+pickup nullpen;
+penpos1(vair,90); penpos2(vair,90);
+y1r=y2r=good.y(y1r+.61803h-y1);
+lft x1=-eps; rt x2=w+eps;
+penstroke z1e--z2e; % crossbar
+labels.lft(1);
+labels.rt(2);
+labels.top(1r,2r);
+labels.bot(1l,2l);
+endchar;
+
+bye
diff --git a/Master/texmf-doc/doc/english/knuth/primes.web b/Master/texmf-doc/doc/english/knuth/primes.web
new file mode 100644
index 00000000000..e68aab9a011
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/primes.web
@@ -0,0 +1,414 @@
+% limbo material
+\font\ninerm=cmr9 % was amr9
+\let\mc=\ninerm % medium caps for names like PASCAL
+\def\WEB{{\tt WEB}}
+\def\PASCAL{{\mc PASCAL}}
+\def\[{\ifhmode\ \fi$[\![$}
+\def\]{$]\!]$\ }
+\def\<{$\langle\,$}
+\def\>{$\,\rangle$}
+\def\Dijk{{2}} % unnecessary when combined with text of paper
+\def\goto{{3}} % ditto
+\hyphenation{Dijk-stra} % ditto
+\def\sec{{\tensy x}}
+\hsize=84mm
+
+@* Printing primes: An example of \WEB.
+The following program is essentially the same as Edsger Dijkstra's
+@^Dijkstra, Edsger@> ``first example of step-wise program composition,''
+found on pages 26--39 of his {\sl Notes on Structured Programming},$^{\Dijk}$
+but it has been translated into the \WEB\ language. @.WEB@>
+
+\[Double brackets will be used in what follows to enclose comments
+relating to \WEB\ itself, because the chief purpose of this program
+is to introduce the reader to the \WEB\ style of documentation.
+\WEB\ programs are always broken into small sections, each
+of which has a serial number; the present section is number~1.\]
+
+Dijkstra's program prints a table of the first thousand prime numbers. We
+shall begin as he did, by reducing the entire program to its top-level
+description. \[Every section in a \WEB\ program begins with optional {\it
+commentary\/} about that section, and ends with optional {\it program
+text\/} for the section. For example, you are now reading part of the
+commentary in \sec1, and the program text for \sec1 immediately follows
+the present paragraph. Program texts are specifications of \PASCAL\
+programs; they either use \PASCAL\ language directly, or they use angle
+brackets to represent \PASCAL\ code that appears in other sections. For
+example, the angle-bracket notation `\X2:Program to print $\ldots$
+numbers\X' is \WEB's way of saying the following: ``The \PASCAL\ text to
+be inserted here is called `Program to print $\ldots$ numbers', and you
+can find out all about it by looking at section~2.'' One of the main
+characteristics of \WEB\ is that different parts of the program are
+usually abbreviated, by giving them such an informal top-level
+description.\]
+
+@p @<Program to print the first thousand prime numbers@>
+
+@ This program has no input, because we want to keep it rather simple.
+The result of the program will be to produce a list of the first
+thousand prime numbers, and this list will appear on the |output| file.
+
+Since there is no input, we declare the value |m=1000| as a compile-time
+constant. The program itself is capable of generating the first
+|m| prime numbers for any positive |m|, as long as the computer's
+finite limitations are not exceeded.
+
+\[The program text below specifies the ``expanded meaning'' of `\X2:Program
+to print $\ldots$ numbers\X'; notice that it involves the top-level
+descriptions of three other sections. When those top-level descriptions
+are replaced by their expanded meanings, a syntactically correct \PASCAL\
+program will be obtained.\]
+
+@<Program to print...@>=
+program print_primes(output);
+const @!m=1000; @<Other constants of the program@>@;
+var @<Variables of the program@>@;
+begin @<Print the first |m| prime numbers@>;
+end.
+
+@* Plan of the program.
+We shall proceed to fill out the rest of the program by making whatever
+decisions seem easiest at each step; the idea will be to strive for
+simplicity first and efficiency later, in order to see where this leads us.
+The final program may not be optimum, but we want it to be reliable,
+well motivated, and reasonably fast.
+
+Let us decide at this point to maintain a table that includes all of the
+prime numbers that will be generated, and to separate the generation
+problem from the printing problem.
+
+\[The \WEB\ description you are reading once again follows a pattern that
+will soon be familiar: A typical section begins with comments and
+ends with program text. The comments motivate and explain noteworthy
+features of the program text.\]
+
+@<Print the first...@>=
+@<Fill table |p| with the first |m| prime numbers@>;
+@<Print table |p|@>
+
+@ How should table |p| be represented? Two possibilities suggest
+themselves: We could construct a sufficiently large array
+of boolean values in which the $k$th entry is |true| if and only if the
+number~|k| is prime; or we could build an array of integers in which
+the |k|th entry is the |k|th prime number. Let us choose the latter
+alternative, by introducing an integer array called |p[1..m]|.
+
+In the documentation below, the notation `|p[k]|' will refer to the
+|k|th element of array~|p|, while `$p_k$' will refer to the $k$th
+prime number. If the program is correct, |p[k]| will either be
+equal to $p_k$ or it will not yet have been assigned any value.
+
+\[Incidentally, our program will eventually make use of several
+more variables as we refine the data structures. All of the sections
+where variables are declared will be called `\X4:Variables of the
+program\X'; the number `{\eightrm4}' in this name refers to the
+present section, which is the first section to specify the
+expanded meaning of `\<Variables of the program\>'.
+The note `{\eightrm See also $\ldots$}' refers to all of the other
+sections that have the same top-level description. The expanded meaning of
+`\X4:Variables of the program\X' consists of all the program texts
+for this name, not just the text found in~\sec4.\]
+
+@<Variables...@>=@!p:array[1..m] of integer;
+ {the first |m| prime numbers, in increasing order}
+
+@* The output phase.
+Let's work on the second part of the program first. It's not as interesting
+as the problem of computing prime numbers; but the job of printing must be
+done sooner or later, and we might as well do it sooner, since it will
+be good to have it done. \[And it is easier to learn \WEB\ when reading a
+program that has comparatively few distracting complications.\]
+
+Since |p| is simply an array of integers, there is little difficulty
+in printing the output, except that we need to decide upon a suitable
+output format. Let us print the table on separate pages, with |rr| rows
+and |cc| columns per page, where every column is |ww| character positions
+wide. In this case we shall choose |rr=50|, |cc=4|, and |ww=10|, so that
+the first 1000 primes will appear on five pages. The program will
+not assume that |m| is an exact multiple of $|rr|\cdot|cc|$.
+@^output format@>
+
+@<Other constants...@>=
+@!rr=50; {this many rows will be on each page in the output}
+@!cc=4; {this many columns will be on each page in the output}
+@!ww=10; {this many character positions will be used in each column}
+
+@ In order to keep this program reasonably free of notations that
+are uniquely \PASCAL esque, \[and in order to illustrate more of the
+facilities of \WEB,\] a few macro definitions for low-level output
+instructions are introduced here. All of the output-oriented commands
+in the remainder of the program will be stated in terms of five
+simple primitives called |print_string|, |print_integer|, |print_entry|,
+|new_line|, and |new_page|.
+
+\[Sections of a \WEB\ program are allowed to contain {\it macro definitions\/}
+between the opening comments and the closing program text. The
+general format for each section is actually tripartite: commentary,
+then definitions, then program. Any of the three parts may be absent;
+for example, the present section contains no program text.\]
+
+\[Simple macros simply substitute a bit of \PASCAL\ code for an
+identifier. Parametric macros are similar, but they also substitute
+an argument wherever `\#' occurs in the macro definition. The first three
+macro definitions here are parametric; the other two are simple.\]
+
+@d print_string(#)==write(#) {put a given string into the |output| file}
+@d print_integer(#)==write(#:1) {put a given integer into the |output|
+ file, in decimal notation, using only as many digit positions as necessary}
+@d print_entry(#)==write(#:ww) {like |print_integer|, but |ww| character
+ positions are filled, inserting blanks at the left}
+@d new_line==write_ln {advance to a new line in the |output| file}
+@d new_page==page {advance to a new page in the |output| file}
+
+@ Several variables are needed to govern the output process. When we begin
+to print a new page, the variable |page_number| will be the ordinal number
+of that page, and |page_offset| will be such that |p[page_offset]| is the
+first prime to be printed. Similarly, |p[row_offset]| will be the first
+prime in a given row.
+
+\[Notice the notation `$+\S$' below; this indicates that the present
+section has the same name as a previous section, so the program text
+will be appended to some text that was previously specified.\]
+
+@<Variables...@>=
+@!page_number:integer; {one more than the number of pages printed so far}
+@!page_offset:integer; {index into |p| for the first entry on the current page}
+@!row_offset:integer; {index into |p| for the first entry in the current row}
+@!c:0..cc; {runs through the columns in a row}
+
+@ Now that appropriate auxiliary variables have been introduced, the process
+of outputting table~|p| almost writes itself.
+
+@<Print table |p|@>=
+begin page_number:=1; page_offset:=1;
+while page_offset<=m do
+ begin @<Output a page of answers@>;
+ page_number:=page_number+1;
+ page_offset:=page_offset+rr*cc;
+ end;
+end
+
+@ A simple heading is printed at the top of each page.
+@^output format@> @^page headings@>
+
+@<Output a page of answers@>=
+begin print_string('The First ');
+print_integer(m);@/
+print_string(' Prime Numbers --- Page ');
+print_integer(page_number);
+new_line; new_line; {there's a blank line after the heading}
+for row_offset:=page_offset to page_offset+rr-1 do
+ @<Output a line of answers@>;
+new_page;
+end
+
+@ The first row will contain
+$$\hbox{|p[1]|, |p[1+rr]|, |p[1+2*rr]|, \dots;}$$
+a similar pattern holds for each value of the |row_offset|.
+
+@<Output a line of answers@>=
+begin for c:=0 to cc-1 do
+ if row_offset+c*rr<=m then print_entry(p[row_offset+c*rr]);
+new_line;
+end
+
+@* Generating the primes.
+The remaining task is to fill table~|p| with the correct numbers.
+Let us do this by generating its entries one at a time: Assuming that
+we have computed all primes that are |j|~or less, we will advance |j|
+to the next suitable value, and continue doing this until the
+table is completely full.
+
+The program includes a provision to initialize the variables in certain
+data structures that will be introduced later.
+
+@<Fill table |p|...@>=
+@<Initialize the data structures@>;
+while k<m do
+ begin @<Increase |j| until it is the next prime number@>;
+ k:=k+1; p[k]:=j;
+ end
+
+@ We need to declare the two variables |j| and~|k| that were just
+introduced.
+
+@<Variables...@>=
+@!j:integer; {all primes |<=j| are in table |p|}
+@!k:0..m; {this many primes are in table |p|}
+
+@ So far we haven't needed to confront the issue of what a prime number
+is. But everything else has been taken care of, so we must delve into
+a bit of number theory now.
+
+By definition, a number is called prime if it is an integer greater
+than~1 that is not evenly divisible by any smaller prime number. Stating
+this another way, the integer |j>1| is not prime if and only if there
+exists a prime number $p_n<j$ such that |j| is a multiple of~$p_n$.
+@^prime number, definition of@>
+
+Therefore the section of the program that is called `\<Increase |j| until
+it is the next prime number\>' could be coded very simply:
+`\ignorespaces|repeat j:=j+1;|\unskip\
+\<Give to~|j_prime| the meaning: |j|~is a prime number\>;
+\ignorespaces|until j_prime|\unskip'.
+And to compute the boolean value |j_prime|, the following
+would suffice: `\ignorespaces|j_prime:=true; for n:=1 to k do|\unskip\
+\<If |p[n]| divides |j|, set |j_prime:=false|\>'.
+
+@ However, it is possible to obtain a much more efficient algorithm by
+using more facts of number theory. In the first place, we can speed
+things up a bit by recognizing that $p_1=2$ and that all subsequent
+primes are odd; therefore we can let |j| run through odd values only.
+Our program now takes the following form:
+
+@<Increase |j| until...@>=
+repeat j:=j+2; @<Update variables that depend on~|j|@>;
+@<Give to |j_prime| the meaning: |j|~is a prime number@>;
+until j_prime
+
+@ The |repeat| loop in the previous section introduces a boolean
+variable |j_prime|, so that it will not be necessary to resort to
+a |goto| statement. (We are following Dijkstra,$^\Dijk$ not Knuth.$^\goto$)
+@^Dijkstra, Edsger@> @^Knuth, Donald E.@>
+
+@<Variables...@>=
+@!j_prime:boolean; {is |j| a prime number?}
+
+@ In order to make the odd-even trick work, we must of course initialize
+the variables |j|, |k|, and |p[1]| as follows.
+
+@<Init...@>=
+j:=1; k:=1; p[1]:=2;
+
+@ Now we can apply more number theory in order to obtain further
+economies. If |j| is not prime, its smallest prime factor $p_n$ will
+be $\sqrt j$ or less. Thus if we know a number |ord| such that
+$$p[|ord|]^2>j,$$ and if |j| is odd, we need only test for divisors
+in the set $\{p[2], \ldots, p[|ord|-1]\}$. This is much faster than
+testing divisibility by $\{p[2],\ldots,p[k]\}$, since |ord| tends
+to be much smaller than~|k|. \ (Indeed, when |k| is large, the
+celebrated ``prime number theorem'' implies that the value of |ord|
+will be approximately $2\sqrt{k/\!\ln k}$.)
+
+Let us therefore introduce |ord| into the data structure. A moment's
+thought makes it clear that |ord| changes in a simple way when |j|
+increases, and that another variable |square| facilitates the
+updating process.
+
+@<Variables...@>=
+@!ord:2..ord_max; {the smallest index |>=2| such that $p_{ord}^2>j$}
+@!square:integer; {$|square|=p_{ord}^2$}
+
+@ @<Init...@>=
+ord:=2; square:=9;
+
+@ The value of |ord| will never get larger than a certain value
+|ord_max|, which must be chosen sufficiently large. It turns out that
+|ord| never exceeds~30 when |m=1000|.
+
+@<Other const...@>=
+@!ord_max=30; {$p_{ord\_max}^2$ must exceed $p_m$}
+
+@ When |j| has been increased by~2, we must increase |ord| by unity
+when $j=p_{ord}^2$, i.e., when |j=square|.
+
+@<Update variables that depend on~|j|@>=
+if j=square then
+ begin ord:=ord+1;
+ @<Update variables that depend on~|ord|@>;
+ end
+
+@ At this point in the program, |ord| has just been increased by unity,
+and we want to set $|square|:=p_{ord}^2$. A surprisingly subtle point
+arises here: How do we know that $p_{ord}$ has already been computed,
+i.e., that |ord<=k|? If there were a gap in the sequence of prime numbers,
+such that $p_{k+1}>p_k^2$ for some~$k$, then this part of the program would
+refer to the yet-uncomputed value |p[k+1]| unless some special test were
+made.
+
+Fortunately, there are no such gaps. But no simple proof of this fact is
+known. For example, Euclid's famous demonstration that there are
+infinitely many prime numbers is strong enough to prove only that
+$p_{k+1}<=p_1\ldots p_k+1$. Advanced books on number theory come to our
+rescue by showing that much more is true; for example, ``Bertrand's
+postulate'' @^Bertrand, Joseph, postulate@> states that $p_{k+1}<2p_k$
+for all~$k$.
+
+@<Update variables that depend on~|ord|@>=
+square:=p[ord]*p[ord]; {at this point |ord<=k|}
+
+@* The inner loop.
+Our remaining task is to determine whether or not a given integer~|j| is prime.
+The general outline of this part of the program is quite simple,
+using the value of |ord| as described above.
+
+@<Give to |j_prime|...@>=
+n:=2; j_prime:=true;
+while (n<ord) and j_prime do
+ begin @<If |p[n]| is a factor of~|j|, set |j_prime:=false|@>;
+ n:=n+1;
+ end
+
+@ @<Var...@>=
+@!n:2..ord_max; {runs from 2 to |ord| when testing divisibility}
+
+@ Let's suppose that division is very slow or nonexistent on our
+machine. We want to detect nonprime odd numbers, which are odd multiples
+of the set of primes $\{p_2,\ldots,p_{ord}\}$.
+
+Since |ord_max| is small, it is reasonable to maintain an auxiliary table of
+the smallest odd multiples that haven't already been used to show that
+some~|j| is nonprime. In other words, our goal is to ``knock out'' all
+of the odd multiples of each $p_n$ in the set $\{p_2,\ldots,p_{ord}\}$,
+and one way to do this is to introduce an auxiliary table that serves as
+a control structure for a set of knock-out procedures that are being
+simulated in parallel. (The so-called ``sieve of Eratosthenes''
+@^Eratosthenes, sieve of@> generates primes by a similar method, but
+it knocks out the multiples of each prime serially.)
+
+The auxiliary table suggested by these considerations is a |mult|
+array that satisfies the following invariant condition: For |2<=n<ord|,
+|mult[n]| is an odd multiple of $p_n$ such that $|mult|[n]<j+2p_n$.
+
+@<Var...@>=
+@!mult:array[2..ord_max] of integer; {runs through multiples of primes}
+
+@ When |ord| has been increased, we need to initialize a new element of
+the |mult| array. At this point $j=p[|ord|-1]^2$, so there is no
+need for an elaborate computation.
+
+@<Update variables that depend on~|ord|@>=
+mult[ord-1]:=j;
+
+@ The remaining task is straightforward, given the data structures
+already prepared. Let us recapitulate the current situation: The
+goal is to test whether or not |j|~is divisible by~$p_n$, without
+actually performing a division. We know that $j$~is odd, and that
+|mult[n]| is an odd multiple of~$p_n$ such that $|mult|[n]<j+2p_n$.
+If |mult[n]<j|, we can increase |mult[n]| by $2p_n$ and the same
+conditions will hold. On the other hand if |mult[n]>=j|, the
+conditions imply that |j|~is divisible by~$p_n$ if and only if
+|j=mult[n]|.
+
+@<If...@>=
+while mult[n]<j do mult[n]:=mult[n]+p[n]+p[n];
+if mult[n]=j then j_prime:=false
+
+@* Index.
+Every identifier used in this program is shown here together with a list
+of the section numbers where that identifier appears. The section number
+is underlined if the identifier was defined in that section. However,
+one-letter identifiers are indexed only at their point of definition,
+since such identifiers tend to appear almost everywhere. \[An index like
+this is prepared automatically by the \WEB\ software, and it is appended
+to the final section of the program. However, underlining of section
+numbers is not automatic; the user is supposed to mark identifiers
+at their point of definition in the \WEB\ source file.\]
+
+This index also refers to some of the places where key elements of the
+program are treated. For example, the entries for `Output format' and
+`Page headings' indicate where details of the output format are
+discussed. Several other topics that appear in the documentation
+(e.g., `Bertrand's postulate') have also been indexed. \[Special
+instructions within a \WEB\ source file can be used to insert
+essentially anything into the index.\]
diff --git a/Master/texmf-doc/doc/english/knuth/story.tex b/Master/texmf-doc/doc/english/knuth/story.tex
new file mode 100644
index 00000000000..fcbaa4151af
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/story.tex
@@ -0,0 +1,18 @@
+\hrule
+\vskip 1in
+\centerline{\bf A SHORT STORY}
+\vskip 6pt
+\centerline{\sl by A. U. Thor} % !`?`?! (modified)
+\vskip .5cm
+Once upon a time, in a distant
+ galaxy called \"O\"o\c c,
+there lived a computer
+named R.~J. Drofnats.
+
+Mr.~Drofnats---or ``R. J.,'' as
+he preferred to be called---% error has been fixed!
+was happiest when he was at work
+typesetting beautiful documents.
+\vskip 1in
+\hrule
+\vfill\eject
diff --git a/Master/texmf-doc/doc/english/knuth/trap.mf b/Master/texmf-doc/doc/english/knuth/trap.mf
new file mode 100644
index 00000000000..adf4d7bd48b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/trap.mf
@@ -0,0 +1,170 @@
+% This is a diabolical test file for MF84. Don't get stuck.
+if not known inimf: .inimf.=.0. % next lines are skipped if format loaded
+ inimf; nonstopmode; tracingtitles:=day; showstopping:=year; hppp:=1000;
+ << == >> ::: || `` '' -- !! ?? ## && @@ $$ [[ ]] {{ }} . (( 5.5.5 )) ++ "..";
+ begingroup save =; let=,; save,; newinternal $=,; let ):=, endgroup;
+ let year=month; showvariable errorstopmode,readstring,2,"2",,,(,),<<,year;
+ tracingrestores:=tracingcommands:=.00000762939453125; % that's 2^(-17)
+ if tracingcommands>0:tracingcommands:=if not cycle "":1.1 forever;fi;
+ tracingcommands:=2.1 exitif tracingcommands>2 endfor; showtoken |=:|>;
+ tracingedges:=1/.00001; tracingequations:=$+1; p~=tracingedges+.00001;
+ interim tracingspecs:=tracingpens:=tracingchoices:=tracingstats:=
+ warningcheck:=tracingoutput:=tracingmacros:=1; $:=ASCII""; $:=x; p~:=p~;
+ delimiters (); delimiters begintext endtext; vardef foo(text t)=t enddef;
+ def lig(text t,|)=ligtable0::for *=1step1until60:0kern boundarychar+*,endfor
+ skipto0;ligtable t:t|0,skipto255;boundarychar:=boundarychar+51.29999enddef;
+ foo begintext interim proofing:=(-.5; shipout nullpicture; special"3" endtext;
+ for n=tracingpens step 1 until proofing:fi endfor showstats; let!!=skipto;
+ path p~; p~=(0,0)..controls (15,4) and (-15,-12)..(4,0); everyjob /*\;;
+ vardef /*\`'@#=message @ & str#@ &jobname&char ASCII'`&str@#!enddef;
+ let next=dump; vardef `'='` enddef; def '`="\*/" enddef;
+elseif known"": `'pass[2.]; outer\; let next=\; delimiters ^~7! fi
+next\; % the second pass will now compute silently; the first pass will halt
+batchmode; ^~7,endgroup pausing:=1; exitif p exitif boolean pen pencircle endfor
+scantokens begingroup message char0&"watch this"; "pair p[],';"&char-1endgroup
+path p[][]p,w,qw; qw=(1,-2)..(2,-1)..(2.5,0.5)..(1,2)..(turningnumber',2.5);
+numeric p[][]; p[[ [$] ]]=10000000000000000; "this string constant is incomplete
+string foo[]p,p~if true:[]; p~000=char34&char200&char34;
+boolean p[]~,boolean fi.boolean; showvariable boolean; def\\= =end enddef;
+picture e[]e[], e[], p~[]~[][]; show length scantokens p~0;
+pen p~[]~,q["a",qq; p~1~=q=pencircle scaled mexp(-3016.57654);
+transform p,pp0; if p=p:qq=makepen((1,0)..cycle) xscaled hex "1000";fi
+qq:=makepen((0,0)..(1,0)..(0,1)..(0,0)..(1,0)..(0,1)..cycle);
+vardef p[][]p~ begintext suffix a,b endtext())suffix@=show #@; p.a.b() enddef;
+expandafter let\endtext\\; outer endtext,\,;;qq:=pencircle scaled 4.5 yscaled 2;
+(6,12)-p7=(0,1)transformed p=(2/(x-x),3/0)transformed p;
+p1\2p=p007=begintext if string p~[$]: p.1.2-p.1.199999,1 endtext transformed p;
+showstopping:=0;showvariable p; p=p; let [[=begingroup; let ]]=endgroup;
+(xxpart p+.002,yxpart p)=1[p1,p2]=(5,y+.00001)=(5,y)=(yypart p,xypart p);
+reverse(p~..cycle) transformed p=p2. 3.p;
+p[000000000001]2p~(,[2]3p~,-)=p~1~2[pausing];
+vardef p~[]@# tertiary t:=if p@ @=@ @p fi; vardef p[][]p~[]=BAD; inner ;;
+show p~[-2]~[3000,x]++4000>path p3; showvariable p,P;
+numeric p[]~; p3~=2alpha; p[1/$]~=3beta;
+begingroup save p; showvariable p; 3beta=1]]; showvariable p;
+def//expr;=enddef;def!primary!false):!fi enddef;
+def _aa__ secondary _a_=if(true enddef; qq:=makepen(qw..(qw scaled$)..cycle);
+primarydef _**__=[[show _*__]] enddef;
+secondarydef _***__=expandafter __ scantokens"**oct"_ enddef;
+// //pencircle slanted length p~**makepen reverse subpath p7-p2 of
+ (p7{p2}..controls _aa__ not odd.1(15) and known p or !p2and-p2..{1,1}(-p2
+ {curl- +1)..tension atleast1..cycle sqrt2++sqrt2***[[]];
+[[interim proofing:=charcode:=-20.5;chardp:=-2048;shipout nullpicture]];
+if charexists -275.50002>known p0 0p=known p~: randomseed charcode; fi
+randomseed:="goof"; a[($,18++1+-+18),(2,3)]=b[(3,2),(1,$);
+show (^+1,~+2) slanted-1 yscaled-2 zscaled-(3,4), p transformed(pp xscaled 9),
+ pp shifted (1,2) transformed(p transformed p), -_[0][1,2]; show
+floor sind mlog sqrt mexp200cosd angle(normaldeviate,uniformdeviate-chardp);
+string s[]; s1=s2=s4; s3=s5; s1=s2; if s1<=s4<>(s1<>s3):show[[char34=s2:=s3]]fi;
+substring penoffset point.1of.p~of[[pencircle]]rotated1080/2/1/3of decimal
+ directiontime postcontrol-1.5of(p~&cycle)-precontrol1/2of p~(p~)=s1:=s4:=s4;
+path p~[]; p~1=p2{length" "}&cycle; p~1=p2=p~0; p2..controls-p2..cycle=p~2;(p7
+..tension1.2..p~[length p~2]..p~2&{0,1}p2..tension1and atleast1..cycle)..tension
+ x..{curl1}-p7{curl hex "IsBad"}..tension.75and.74999..p2{0,1}&p2{_,'}..cycle:=p
+ ~4; subpath(-9,9)of subpath(3.5001,7.00001)of p~4=p~6;
+show p~6, directiontime(1,2) of p~6, directiontime(1,-1.00001) of p~6;
+p~3=(0,0)..controls (1,1) and (0,1)..(1,0); show p2..p2{p7}&{$,$}cycle,
+ (directiontime(1,1) of subpath(.314159,1) of p~3)[.314159,1];
+p~5=(subpath(0,.25)of p~3&subpath(.25,1)of p~3)shifted begintext1,0;
+p~3:=2/3'zscaled'{p~3}..controls(2,2/3(3))and penoffset(1/2x,y)of(0,1)(1,0);
+show p~3 intersectiontimes reverse p~3, point.17227 of p~3, point1-.28339of p~3;
+show point xpart(p~5 intersectiontimes p~5 shifted (.01,0))of p~5-
+ point ypart(p~5 intersectiontimes p~5 shifted (.01,0))of p~5;
+[[interim tracingedges:=1; e[-1+-+ -1.00001]=nullpicture; addto e1 also[[
+addto e0 doublepath p~5 scaled 3 withpen q; e0=e1=e2; cull e1 dropping (0,.1);
+nullpicture]];show e1 shifted(4089,-4095), e2 shifted(-4095,4092)shifted (-3,0),
+e2 shifted(4089,-4095)]];addto e1 also e2 shifted(-2,$); e1:=e1 shifted(-4,$);
+addto e0 also e1rotated89.999+e1scaled$; show e0 xscaled-10 yscaled2 xscaled82
+yscaled683;addto e1 doublepath (0,9) withweight-3 withweight turningnumber p~6
+ withpen pencircle xscaled(oct"180"++1) rotated-angle(64,$) shifted (9,8)
+ withpen makepen(($,$)..(1,0)..(1,1)..($,0)..($,$)&cycle)xscaled4095.49999;
+show e1, totalweight e1; chardp:=charcode:=5; xoffset:=-1.5; shipout e1;
+showstats; addto e2doublepath p~ yscaled1/60; e3:=e2 yscaled 0;
+autorounding:=2; addto e3doublepath(.5,0)..(3.5,1.5)withweight2;
+tracingspecs:=0; q:=makepen((1,1)..cycle) yscaled 1.5;
+p~8=(($,yy)rotated p{0,1}..{0,$}(1,0){0,$}..cycle)scaled2shifted(1000.49,9);
+turningcheck:=1;addto e2doublepath p~8 withpen q withweight p withpen cycle p;
+[[interim autorounding:=xx=.1; addto e2 contour p~8 withpen q withweight2]];
+chardx:=chardp:=charext:=-14.5;shipout-(-e0-e2)+e2shifted(0,6turningnumber p~8);
+p~9=(0,0)..(1,.5)..(5,1.5)..(7,2.5)..(12,3.5)..(13,4);addto e3 doublepath p~9;
+smoothing:=1; addto e3 doublepath p~9; addto e3 doublepath (-4095,0)..tension
+3/4 and 999..(0,2); show e3 rotated-90, (e0+e0) rotated90$ rotated90;
+if "a" if "ab">"b" elseif path reverse (3,4): >="aa":foo elseif fi "bar"
+else if '-(1,yy)<': :fi else def dup text t=[[t;save enddef;def|suffix$=,$
+enddef; def||tertiary p=show substring p of("a" enddef;||(2,$)&"bc");
+tertiarydef x++y=[[dup showtoken x;]];def quote x expr z of y=z enddef;
+ texts(quote x=(y+0)y+y)("xx",foo(x))=0]] enddef; def texts(text t,tt)expr?=
+ for n:=,for n"yy":n,length if false:endfor tt,t,:if string n:forsuffixes n=
+ foo1,[foo(n)],':show t,tt|(n;exitif not('<='+(?,yy)) endfor for m= :+endfor
+ for m=alpha step-1.1 3$: +m endfor fi endfor enddef; show (0,0){curl2}..
+ subpath(23.3,4.5)of p~9{curl3}..($,$){curl4}..cycle;numspecial p~++2+3;[[
+let?=if;save if,\;def if=endinput?enddef;def texts=input enddef;texts trap ]];
+dup[[def texts secondary x=primarydef y++y=x@y enddef; showtoken++;x enddef]]\;
+proofing:=1;texts:="a"&"b";% strings "yy" and "ab" no longer appear in memory
+texts-1.00001a1=-(a2+a3+a4+a5+a6);-(a3,a2)/.99999=-(a4+a5+[[showdependencies;
+a6]],a3+a4+a5+a6)]]; 1.00001a4+1=a5+a6; alpha:=.9alpha+7; showdependencies;
+a5=a6=2/3-a6; cull e1 dropping($,4a5)withweight1.5; charcode:=chardp:=27;
+openwindow 3 from (0,0) to (0,0) at "whoops"; addto p; shipout p; cull p;
+openwindow -.5 from ($,$) to ($,$) at (0,0); special p; numspecial "p";
+openwindow 15.49999 from (0,32*1024) to (1,31*1057) at (0,0); shipout e1;
+openwindow 5 from (0,length((0,0){0,0})) to (4,2) at ($,1);
+openwindow 6 from (length($,0),1) to (3,10) at (-5,2);
+display nullpicture; display p inwindow 3; display p inwindow 6;
+display e1 inwindow 6; cull e0 dropping (0.1,4095.999999) withweight 3.5
+withweight-3.5; display e0 inwindow 5.5; addto e0 also p; addto e0 contour 0;
+display e0 inwindow 5.49999; addto e0 contour p~9;
+display e1 inwindow 3+3; display e0e0 inwindow[[vardef e[]e=enddef;6]];
+addto e0 also e1; display e0 inwindow 5; ligtable||:255|=:|>>0,skipto0;
+display e1 inwindow 15; display e1 inwindow 6;
+show [[interim tracingcommands:=0; lig("g")(=:|); lig("h":"i")(|=:);
+lig("j")(|=:>);lig("k")(=:|>); lig("l")(|=:|>)]];
+b1:=c.a[ [[let c=++;vardef b=enddef;1]] ]; ligtable"m":0=:0,skipto5;
+!!; errhelp 0; errmessage "Be like Jane";
+errhelp "He%%%lp%"; errmessage""; errhelp ""; errmessage "Another";
+headerbyte 0; headerbyte(48.5)substring(-9,9)of"long"; for\=0:\
+headerbyte 9:2a6,"q"; fontdimen 9:2a6,"q"; fontdimen 1:2048;
+fontmaking:=1; extensible 5 5,"c"255.5,"d"; charlist 0:5:"a":"d";
+ligtable255:255::"a"=:"b","d" kern -2048,"c":0:99.5:"e"|=:|"f",0kern';
+ligtable 5:0; def clear(text x)=interim x:=$ enddef; clear(hppp); vppp=0;
+[[clear(tracingmacros); clear(tracingcommands); clear(tracingoutput\;
+ clear(proofing);designsize:=.99999;charcode:=ASCII char-418.5;vppp:=designsize;
+ def dp expr d = charcode:=charcode+1; chardp:=d; shipout nullpicture enddef;
+ dp 13; dp 12; dp 0; dp 21; dp -2; dp 17; dp 11; dp 3; charic:=-1000; dp -1;
+ dp 25; dp 31; dp 19; dp 7; charwd:=256; chardy:=6; dp 23; dp 30]];
+def f(suffix@@)(expr a,b)(text t)=numeric w; show a; % wipes out the old w
+addto @@ contour (0,0)..(2,0)..(1,$)..(1,1)..cycle withpen qq; % strange path
+addto @@ doublepath (0,0){1,1}..{2,1}(2,1) withpen qq; % carefully chosen
+addto @@ doublepath(($,$){1,0}..(1,1){1,0})scaled.5 withpen nullpen;
+cull @@ keeping (4,4) withweight1.5; enddef; def g(suffix$)=show $ enddef;
+addto e0 contour (0,0){1,0}..{1,0}(1,0){0,$}..{0,1}cycle withpen qq;
+f(e[3,w); g(e3,transformed p,penoffset-(1,1.3)of(pencircle scaled20 yscaled-.5),
+ directiontime (0,1) of ((0,0)..controls(1,1)and($,1)..(3,0)),
+ point 3.14159 of p~9 intersectiontimes subpath (3.14159,4) of p~9,
+ (($,1.1)..(1,$)) intersectiontimes precontrol$ of (0,0);
+addto e3 doublepath(-4094.99998,0)..(4094.99998,-.00001) withpen penoffset 0 of
+pencircle; addto e3 also e3 shifted (0,257); ,"flushed with pride"; numeric xx;
+def f(expr x,y,z)=showdependencies;tracingcapsules:=1;showdependencies;show
+ 1/3(3,6)*((x+y)+(y-x)), (1,1)/sqrt2 zscaled (x+1,x+2) - (x+1,x+2) rotated 45,
+ (0,1) zscaled (1,y+2)-(1,y+2) rotated 90 enddef; f((xx+1)/.3,(yy-1)/.5,(xx,0));
+'=(1000o3-4000(o1-o2)+4000o2+9,-.01o3+3ooo+
+ [[oo=9/10(o2+o4+o5-20);o4=o5=8/9(o1+.5o2); o6=-.0001o2;showdependencies;
+ numeric o[];xpart(alfa,[[pair alfa;0]])]])=-2/3[[save p;(p$,1-p$)]];
+xoffset:=yoffset:=4000[[oo=.5ooo=2*-1/2(ooo+[[numeric ooo;1]]);oo]];
+for @=angle(sqrt$,mlog$):charext:=uniformdeviate$;charht:=2048;granularity:=-8;
+addto e3 contour (0,-100)..tension 500..(100,-99)..tension 3000..cycle;
+tracingoutput:=@; shipout e3; special "bye"; interim char 99 = "c"; true=false;
+[[clear(tracingcommands); charcode:=ASCII char 269-13; shipout+nullpicture;
+"careful" quote for for = @ step 200 until 2*2600: &" METAFONT" endfor;]];
+scrollmode; "hello again"&char31; save p; fillin:=-.043;
+def f expr x=let )=]; let [=(; show _ enddef; begingroup tracingspecs:=1;
+show nullpen, makepath.qq, makepath(q rotated1), makepath pencircle rotated $;
+addto e0 doublepath (0,2){0,$}..{0,$}(0,1)..{1,0}(3,0)..(4,0){1,0}..cycle
+ withpen makepen((0,0)..(5,2.9)..(4,3)..cycle); tracingonline:=1; f xx[1);
+showdependencies; qq:=q; showstats; bye endtext
+% things not tested:
+% interaction (error insertion/deletion, interrupts, \pausing, files not there)
+% date, time; initialization of random number generator without randomseed
+% system-dependent parsing of file names, areas, extensions
+% certain error messages, especially fatal ones
+% things that can't happen in INIMF
+% unusual cases of fixed-point arithmetic
diff --git a/Master/texmf-doc/doc/english/knuth/trap.pl b/Master/texmf-doc/doc/english/knuth/trap.pl
new file mode 100644
index 00000000000..bae32a41fb4
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/trap.pl
@@ -0,0 +1,490 @@
+(CODINGSCHEME Q)
+(DESIGNSIZE R 128.0)
+(COMMENT DESIGNSIZE IS IN POINTS)
+(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
+(CHECKSUM O 5546464252)
+(FONTDIMEN
+ (SLANT R 2047.999999)
+ (SPACE R 0.0)
+ (STRETCH R 0.0)
+ (SHRINK R 0.0)
+ (XHEIGHT R 0.0)
+ (QUAD R 0.0)
+ (EXTRASPACE R 0.0)
+ (PARAMETER D 8 R 0.0)
+ (PARAMETER D 9 R 0.005208)
+ (PARAMETER D 10 R 0.0)
+ )
+(BOUNDARYCHAR O 377)
+(LIGTABLE
+ (COMMENT THIS PART OF THE PROGRAM IS NEVER USED!
+ )
+ (LABEL BOUNDARYCHAR)
+ (/LIG/>> O 377 O 0)
+ (KRN O 0 R 0.0)
+ (KRN O 0 R 0.0078125)
+ (KRN O 0 R 0.015625)
+ (KRN O 0 R 0.0234375)
+ (KRN O 0 R 0.03125)
+ (KRN O 0 R 0.0390625)
+ (KRN O 0 R 0.046875)
+ (KRN O 0 R 0.0546875)
+ (KRN O 0 R 0.0625)
+ (KRN O 0 R 0.0703125)
+ (KRN O 0 R 0.078125)
+ (KRN O 0 R 0.0859375)
+ (KRN O 0 R 0.09375)
+ (KRN O 0 R 0.1015625)
+ (KRN O 0 R 0.109375)
+ (KRN O 0 R 0.1171875)
+ (KRN O 0 R 0.125)
+ (KRN O 0 R 0.1328125)
+ (KRN O 0 R 0.140625)
+ (KRN O 0 R 0.1484375)
+ (KRN O 0 R 0.15625)
+ (KRN O 0 R 0.1640625)
+ (KRN O 0 R 0.171875)
+ (KRN O 0 R 0.1796875)
+ (KRN O 0 R 0.1875)
+ (KRN O 0 R 0.1953125)
+ (KRN O 0 R 0.203125)
+ (KRN O 0 R 0.2109375)
+ (KRN O 0 R 0.21875)
+ (KRN O 0 R 0.2265625)
+ (KRN O 0 R 0.234375)
+ (KRN O 0 R 0.2421875)
+ (KRN O 0 R 0.25)
+ (KRN O 0 R 0.2578125)
+ (KRN O 0 R 0.265625)
+ (KRN O 0 R 0.2734375)
+ (KRN O 0 R 0.28125)
+ (KRN O 0 R 0.2890625)
+ (KRN O 0 R 0.296875)
+ (KRN O 0 R 0.3046875)
+ (KRN O 0 R 0.3125)
+ (KRN O 0 R 0.3203125)
+ (KRN O 0 R 0.328125)
+ (KRN O 0 R 0.3359375)
+ (KRN O 0 R 0.34375)
+ (KRN O 0 R 0.3515625)
+ (KRN O 0 R 0.359375)
+ (KRN O 0 R 0.3671875)
+ (KRN O 0 R 0.375)
+ (KRN O 0 R 0.3828125)
+ (KRN O 0 R 0.390625)
+ (KRN O 0 R 0.3984375)
+ (KRN O 0 R 0.40625)
+ (KRN O 0 R 0.4140625)
+ (KRN O 0 R 0.421875)
+ (KRN O 0 R 0.4296875)
+ (KRN O 0 R 0.4375)
+ (KRN O 0 R 0.4453125)
+ (KRN O 0 R 0.453125)
+ (KRN O 0 R 0.4609375)
+ (SKIP D 1)
+ (LABEL C g)
+ (LIG/ C g O 0)
+ (STOP)
+ (KRN O 0 R 0.400782)
+ (KRN O 0 R 0.408594)
+ (KRN O 0 R 0.416407)
+ (KRN O 0 R 0.424219)
+ (KRN O 0 R 0.432032)
+ (KRN O 0 R 0.439844)
+ (KRN O 0 R 0.447657)
+ (KRN O 0 R 0.455469)
+ (KRN O 0 R 0.463282)
+ (KRN O 0 R 0.471094)
+ (KRN O 0 R 0.478907)
+ (KRN O 0 R 0.486719)
+ (KRN O 0 R 0.494532)
+ (KRN O 0 R 0.502344)
+ (KRN O 0 R 0.510157)
+ (KRN O 0 R 0.517969)
+ (KRN O 0 R 0.525782)
+ (KRN O 0 R 0.533594)
+ (KRN O 0 R 0.541407)
+ (KRN O 0 R 0.549219)
+ (KRN O 0 R 0.557032)
+ (KRN O 0 R 0.564844)
+ (KRN O 0 R 0.572657)
+ (KRN O 0 R 0.580469)
+ (KRN O 0 R 0.588282)
+ (KRN O 0 R 0.596094)
+ (KRN O 0 R 0.603907)
+ (KRN O 0 R 0.611719)
+ (KRN O 0 R 0.619532)
+ (KRN O 0 R 0.627344)
+ (KRN O 0 R 0.635157)
+ (KRN O 0 R 0.642969)
+ (KRN O 0 R 0.650782)
+ (KRN O 0 R 0.658594)
+ (KRN O 0 R 0.666407)
+ (KRN O 0 R 0.674219)
+ (KRN O 0 R 0.682032)
+ (KRN O 0 R 0.689844)
+ (KRN O 0 R 0.697657)
+ (KRN O 0 R 0.705469)
+ (KRN O 0 R 0.713282)
+ (KRN O 0 R 0.721094)
+ (KRN O 0 R 0.728907)
+ (KRN O 0 R 0.736719)
+ (KRN O 0 R 0.744532)
+ (KRN O 0 R 0.752344)
+ (KRN O 0 R 0.760157)
+ (KRN O 0 R 0.767969)
+ (KRN O 0 R 0.775782)
+ (KRN O 0 R 0.783594)
+ (KRN O 0 R 0.791407)
+ (KRN O 0 R 0.799219)
+ (KRN O 0 R 0.807032)
+ (KRN O 0 R 0.814844)
+ (KRN O 0 R 0.822657)
+ (KRN O 0 R 0.830469)
+ (KRN O 0 R 0.838282)
+ (KRN O 0 R 0.846094)
+ (KRN O 0 R 0.853907)
+ (KRN O 0 R 0.861719)
+ (SKIP D 1)
+ (LABEL C h)
+ (LABEL C i)
+ (/LIG C i O 0)
+ (STOP)
+ (KRN O 0 R 0.801562)
+ (KRN O 0 R 0.809375)
+ (KRN O 0 R 0.817187)
+ (KRN O 0 R 0.825)
+ (KRN O 0 R 0.832812)
+ (KRN O 0 R 0.840625)
+ (KRN O 0 R 0.848437)
+ (KRN O 0 R 0.85625)
+ (KRN O 0 R 0.864062)
+ (KRN O 0 R 0.871875)
+ (KRN O 0 R 0.879687)
+ (KRN O 0 R 0.8875)
+ (KRN O 0 R 0.895312)
+ (KRN O 0 R 0.903125)
+ (KRN O 0 R 0.910937)
+ (KRN O 0 R 0.91875)
+ (KRN O 0 R 0.926562)
+ (KRN O 0 R 0.934375)
+ (KRN O 0 R 0.942187)
+ (KRN O 0 R 0.95)
+ (KRN O 0 R 0.957812)
+ (KRN O 0 R 0.965625)
+ (KRN O 0 R 0.973437)
+ (KRN O 0 R 0.98125)
+ (KRN O 0 R 0.989062)
+ (KRN O 0 R 0.996875)
+ (KRN O 0 R 1.004687)
+ (KRN O 0 R 1.0125)
+ (KRN O 0 R 1.020312)
+ (KRN O 0 R 1.028125)
+ (KRN O 0 R 1.035937)
+ (KRN O 0 R 1.04375)
+ (KRN O 0 R 1.051562)
+ (KRN O 0 R 1.059375)
+ (KRN O 0 R 1.067187)
+ (KRN O 0 R 1.075)
+ (KRN O 0 R 1.082812)
+ (KRN O 0 R 1.090625)
+ (KRN O 0 R 1.098437)
+ (KRN O 0 R 1.10625)
+ (KRN O 0 R 1.114062)
+ (KRN O 0 R 1.121875)
+ (KRN O 0 R 1.129687)
+ (KRN O 0 R 1.1375)
+ (KRN O 0 R 1.145312)
+ (KRN O 0 R 1.153125)
+ (KRN O 0 R 1.160937)
+ (KRN O 0 R 1.16875)
+ (KRN O 0 R 1.176562)
+ (KRN O 0 R 1.184375)
+ (KRN O 0 R 1.192187)
+ (KRN O 0 R 1.2)
+ (KRN O 0 R 1.207812)
+ (KRN O 0 R 1.215625)
+ (KRN O 0 R 1.223437)
+ (KRN O 0 R 1.23125)
+ (KRN O 0 R 1.239062)
+ (KRN O 0 R 1.246875)
+ (KRN O 0 R 1.254687)
+ (KRN O 0 R 1.2625)
+ (SKIP D 1)
+ (LABEL C j)
+ (/LIG> C j O 0)
+ (SKIP D 123)
+ (KRN O 0 R 1.202344)
+ (KRN O 0 R 1.210156)
+ (KRN O 0 R 1.217969)
+ (KRN O 0 R 1.225781)
+ (KRN O 0 R 1.233594)
+ (KRN O 0 R 1.241406)
+ (KRN O 0 R 1.249219)
+ (KRN O 0 R 1.257031)
+ (KRN O 0 R 1.264844)
+ (KRN O 0 R 1.272656)
+ (KRN O 0 R 1.280469)
+ (KRN O 0 R 1.288281)
+ (KRN O 0 R 1.296094)
+ (KRN O 0 R 1.303906)
+ (KRN O 0 R 1.311719)
+ (KRN O 0 R 1.319531)
+ (KRN O 0 R 1.327344)
+ (KRN O 0 R 1.335156)
+ (KRN O 0 R 1.342969)
+ (KRN O 0 R 1.350781)
+ (KRN O 0 R 1.358594)
+ (KRN O 0 R 1.366406)
+ (KRN O 0 R 1.374219)
+ (KRN O 0 R 1.382031)
+ (KRN O 0 R 1.389844)
+ (KRN O 0 R 1.397656)
+ (KRN O 0 R 1.405469)
+ (KRN O 0 R 1.413281)
+ (KRN O 0 R 1.421094)
+ (KRN O 0 R 1.428906)
+ (KRN O 0 R 1.436719)
+ (KRN O 0 R 1.444531)
+ (KRN O 0 R 1.452344)
+ (KRN O 0 R 1.460156)
+ (KRN O 0 R 1.467969)
+ (KRN O 0 R 1.475781)
+ (KRN O 0 R 1.483594)
+ (KRN O 0 R 1.491406)
+ (KRN O 0 R 1.499219)
+ (KRN O 0 R 1.507031)
+ (KRN O 0 R 1.514844)
+ (KRN O 0 R 1.522656)
+ (KRN O 0 R 1.530469)
+ (KRN O 0 R 1.538281)
+ (KRN O 0 R 1.546094)
+ (KRN O 0 R 1.553906)
+ (KRN O 0 R 1.561719)
+ (KRN O 0 R 1.569531)
+ (KRN O 0 R 1.577344)
+ (KRN O 0 R 1.585156)
+ (KRN O 0 R 1.592969)
+ (KRN O 0 R 1.600781)
+ (KRN O 0 R 1.608594)
+ (KRN O 0 R 1.616406)
+ (KRN O 0 R 1.624219)
+ (KRN O 0 R 1.632031)
+ (KRN O 0 R 1.639844)
+ (KRN O 0 R 1.647656)
+ (KRN O 0 R 1.655469)
+ (KRN O 0 R 1.663281)
+ (SKIP D 1)
+ (LABEL C k)
+ (LIG/> C k O 0)
+ (SKIP D 62)
+ (KRN O 0 R 1.603125)
+ (KRN O 0 R 1.610937)
+ (KRN O 0 R 1.61875)
+ (KRN O 0 R 1.626562)
+ (KRN O 0 R 1.634375)
+ (KRN O 0 R 1.642187)
+ (KRN O 0 R 1.65)
+ (KRN O 0 R 1.657812)
+ (KRN O 0 R 1.665625)
+ (KRN O 0 R 1.673437)
+ (KRN O 0 R 1.68125)
+ (KRN O 0 R 1.689062)
+ (KRN O 0 R 1.696875)
+ (KRN O 0 R 1.704687)
+ (KRN O 0 R 1.7125)
+ (KRN O 0 R 1.720312)
+ (KRN O 0 R 1.728125)
+ (KRN O 0 R 1.735937)
+ (KRN O 0 R 1.74375)
+ (KRN O 0 R 1.751562)
+ (KRN O 0 R 1.759375)
+ (KRN O 0 R 1.767187)
+ (KRN O 0 R 1.775)
+ (KRN O 0 R 1.782812)
+ (KRN O 0 R 1.790625)
+ (KRN O 0 R 1.798437)
+ (KRN O 0 R 1.80625)
+ (KRN O 0 R 1.814062)
+ (KRN O 0 R 1.821875)
+ (KRN O 0 R 1.829687)
+ (KRN O 0 R 1.8375)
+ (KRN O 0 R 1.845312)
+ (KRN O 0 R 1.853125)
+ (KRN O 0 R 1.860937)
+ (KRN O 0 R 1.86875)
+ (KRN O 0 R 1.876562)
+ (KRN O 0 R 1.884375)
+ (KRN O 0 R 1.892187)
+ (KRN O 0 R 1.9)
+ (KRN O 0 R 1.907812)
+ (KRN O 0 R 1.915625)
+ (KRN O 0 R 1.923437)
+ (KRN O 0 R 1.93125)
+ (KRN O 0 R 1.939062)
+ (KRN O 0 R 1.946875)
+ (KRN O 0 R 1.954687)
+ (KRN O 0 R 1.9625)
+ (KRN O 0 R 1.970312)
+ (KRN O 0 R 1.978125)
+ (KRN O 0 R 1.985937)
+ (KRN O 0 R 1.99375)
+ (KRN O 0 R 2.001562)
+ (KRN O 0 R 2.009375)
+ (KRN O 0 R 2.017187)
+ (KRN O 0 R 2.025)
+ (KRN O 0 R 2.032812)
+ (KRN O 0 R 2.040625)
+ (KRN O 0 R 2.048437)
+ (KRN O 0 R 2.05625)
+ (KRN O 0 R 2.064062)
+ (STOP)
+ (LABEL C l)
+ (/LIG/> C l O 0)
+ (SKIP D 1)
+ (LABEL C m)
+ (LIG O 0 O 0)
+ (STOP)
+ (LIG C a C b)
+ (KRN C d R -15.999999)
+ (LABEL C c)
+ (LABEL C d)
+ (/LIG/ C e C f)
+ (KRN O 0 R 0.0)
+ (STOP)
+ (COMMENT THIS PART OF THE PROGRAM IS NEVER USED!
+ )
+ )
+(CHARACTER O 0
+ (CHARWD R 2.0)
+ (CHARHT R 15.999999)
+ (CHARDP R 0.234375)
+ (CHARIC R -7.8125)
+ (NEXTLARGER O 5)
+ )
+(CHARACTER O 5
+ (CHARWD R 0.0)
+ (CHARDP R -0.113281)
+ (VARCHAR
+ (TOP O 5)
+ (MID C c)
+ (REP C d)
+ )
+ )
+(CHARACTER O 33
+ (CHARWD R 0.0)
+ (CHARDP R 0.2109375)
+ )
+(CHARACTER O 137
+ (CHARWD R 0.0)
+ (CHARDP R 0.1015625)
+ )
+(CHARACTER O 140
+ (CHARWD R 0.0)
+ (CHARDP R 0.089844)
+ )
+(CHARACTER C a
+ (CHARWD R 0.0)
+ (NEXTLARGER C d)
+ )
+(CHARACTER C b
+ (CHARWD R 0.0)
+ (CHARDP R 0.1640625)
+ )
+(CHARACTER C c
+ (CHARWD R 0.0)
+ (CHARDP R -0.011719)
+ (COMMENT
+ (/LIG/ C e C f)
+ (KRN O 0 R 0.0)
+ )
+ )
+(CHARACTER C d
+ (CHARWD R 0.0)
+ (CHARDP R 0.1328125)
+ (COMMENT
+ (/LIG/ C e C f)
+ (KRN O 0 R 0.0)
+ )
+ )
+(CHARACTER C e
+ (CHARWD R 0.0)
+ (CHARDP R 0.089844)
+ )
+(CHARACTER C f
+ (CHARWD R 0.0)
+ (CHARDP R 0.0234375)
+ )
+(CHARACTER C g
+ (CHARWD R 0.0)
+ (CHARDP R -0.011719)
+ (CHARIC R -7.8125)
+ (COMMENT
+ (LIG/ C g O 0)
+ )
+ )
+(CHARACTER C h
+ (CHARWD R 0.0)
+ (CHARDP R 0.1953125)
+ (CHARIC R -7.8125)
+ (COMMENT
+ (/LIG C i O 0)
+ )
+ )
+(CHARACTER C i
+ (CHARWD R 0.0)
+ (CHARDP R 0.2421875)
+ (CHARIC R -7.8125)
+ (COMMENT
+ (/LIG C i O 0)
+ )
+ )
+(CHARACTER C j
+ (CHARWD R 0.0)
+ (CHARDP R 0.1484375)
+ (CHARIC R -7.8125)
+ (COMMENT
+ (/LIG> C j O 0)
+ (LIG C a C b)
+ (KRN C d R -15.999999)
+ (/LIG/ C e C f)
+ (KRN O 0 R 0.0)
+ )
+ )
+(CHARACTER C k
+ (CHARWD R 0.0)
+ (CHARDP R 0.0546875)
+ (CHARIC R -7.8125)
+ (COMMENT
+ (LIG/> C k O 0)
+ (LIG C a C b)
+ (KRN C d R -15.999999)
+ (/LIG/ C e C f)
+ (KRN O 0 R 0.0)
+ )
+ )
+(CHARACTER C l
+ (CHARWD R 2.0)
+ (CHARDP R 0.1796875)
+ (CHARIC R -7.8125)
+ (COMMENT
+ (/LIG/> C l O 0)
+ (LIG C a C b)
+ (KRN C d R -15.999999)
+ (/LIG/ C e C f)
+ (KRN O 0 R 0.0)
+ )
+ )
+(CHARACTER C m
+ (CHARWD R 2.0)
+ (CHARHT R 15.999999)
+ (CHARDP R 0.234375)
+ (CHARIC R -7.8125)
+ (COMMENT
+ (LIG O 0 O 0)
+ )
+ )
+(CHARACTER O 354
+ (CHARWD R 0.0)
+ (CHARDP R -15.999999)
+ )
diff --git a/Master/texmf-doc/doc/english/knuth/trapman.tex b/Master/texmf-doc/doc/english/knuth/trapman.tex
new file mode 100644
index 00000000000..7968c6e44ea
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/trapman.tex
@@ -0,0 +1,400 @@
+% The TRAP manual: How to validate MF --- last updated by D E Knuth on 4 Dec 89
+\font\eighttt= cmtt8
+\font\eightrm= cmr8
+\font\titlefont=cmssdc10 at 40pt
+\let\mc=\eightrm
+\font\logo=manfnt % font used for the METAFONT logo
+\def\MF{{\logo META}\-{\logo FONT}}
+\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
+
+\def\verbatim#1{\begingroup \frenchspacing
+ \def\do##1{\catcode`##1=12 } \dospecials
+ \parskip 0pt \parindent 0pt
+ \catcode`\ =\active \catcode`\^^M=\active
+ \tt \def\par{\ \endgraf} \obeylines \obeyspaces
+ \input #1 \endgroup}
+% a blank line will be typeset at the end of the file;
+% if you're unlucky it will appear on a page by itself!
+{\obeyspaces\global\let =\ }
+
+\output{\shipout\box255\global\advance\pageno by 1} % for the title page only
+\null
+\vfill
+\centerline{\titlefont A Torture Test}
+\vskip8pt
+\centerline{\titlefont for \logo ()*+,-.*}
+\vskip 24pt
+\centerline{by Donald E. Knuth}
+\centerline{Stanford University}
+\vskip 6pt
+\centerline{({\sl Version 2, January 1990\/})}
+\vfill
+\centerline{\vbox{\hsize 4in
+\noindent Programs that claim to be implementations of \MF84 are
+supposed to be able to process the test routine contained in this
+report, producing the outputs contained in this report.}}
+\vskip 24pt
+{\baselineskip 9pt
+\eightrm\noindent
+The preparation of this report was supported in part by the National Science
+Foundation under grants IST-8201926 and MCS-8300984,
+and by the System Development Foundation.
+{\logo opqrstuq} is a trademark of Addison-Wesley Publishing Company.
+
+
+}\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.
+People often think that their programs are ``debugged'' when large applications
+have been run successfully. But system programmers know that a typical large
+application tends to use at most about 50 per cent of the instructions
+in a typical compiler. Although the other half of the code---which tends
+to be the ``harder half''---might be riddled with errors, the system seems
+to be working quite impressively until an unusual case shows up on the
+next day. And on the following day another error manifests itself, and so on;
+months or years go by before certain parts of the compiler are even
+activated, much less tested in combination with other portions of the system,
+if user applications provide the only tests.
+
+How then shall we go about testing a compiler? Ideally we would like to
+have a formal proof of correctness, certified by a computer.
+This would give us a lot of confidence,
+although of course the formal verification program might itself be incorrect.
+A more serious drawback of automatic verification is that the formal
+specifications of the compiler are likely to be wrong, since they aren't
+much easier to write than the compiler itself. Alternatively, we can
+substitute an informal proof of correctness: The programmer writes his or
+her code in a structured manner and checks that appropriate relations
+remain invariant, etc. This helps greatly to reduce errors, but it cannot
+be expected to remove them completely; the task of checking a large
+system is sufficiently formidable that human beings cannot do it without
+making at least a few slips here and there.
+
+Thus, we have seen that test programs are unsatisfactory if they are simply
+large user applications; yet some sort of test program is needed because
+proofs of correctness aren't adequate either. People have proposed schemes
+for constructing test data automatically from a program text, but such
+approaches run the risk of circularity, since they cannot assume that a
+given program has the right structure.
+
+I have been having good luck with a somewhat different approach,
+first used in 1960 to debug an {\mc ALGOL} compiler. The idea is to
+construct a test file that is about as different from a typical user
+application as could be imagined. Instead of testing things that people
+normally want to do, the file tests complicated things that people would
+never dare to think of, and it embeds these complexities in still
+more arcane constructions. Instead of trying to make the compiler do the
+right thing, the goal is to make it fail (until the bugs have all been found).
+
+To write such a fiendish test routine, one simply gets into a nasty frame
+of mind and tries to do everything in the unexpected way. Parameters
+that are normally positive are set negative or zero; borderline cases
+are pushed to the limit; deliberate errors are made in hopes that the
+compiler will not be able to recover properly from them.
+
+A user's application tends to exercise 50\%\ of a compiler's logic,
+but my first fiendish tests tend to improve this to about 90\%. As the
+next step I generally make use of frequency-counting software to identify
+the instructions that have still not been called upon. Then I add ever more
+fiendishness to the test routine, until more than 99\%\ of the code
+has been used at least once. (The remaining bits are things that
+can occur only if the source program is really huge, or if certain
+fatal errors are detected; or they are cases so similar to other well-tested
+things that there can be little doubt of their validity.)
+
+Of course, this is not guaranteed to work. But my experience in 1960 was
+that only two bugs were ever found in that {\mc ALGOL} compiler after it
+correctly translated that original fiendish test. And one of those bugs
+was actually present in the results of the test; I simply had failed to
+notice that the output was incorrect. Similar experiences occurred later
+during the 60s and 70s, with respect to a few assemblers, compilers,
+and simulators that I wrote.
+
+This method of debugging, combined with the methodology of structured
+programming and informal proofs (otherwise known as careful desk checking),
+leads to greater reliability of production software than any other
+method I know. Therefore I have used it in developing \MF84, and the
+main bulk of this report is simply a presentation of the test program
+that was used to get the bugs out of \MF.
+
+Such a test file is useful also after a program has been debugged, since
+it can be used to give some assurance that subsequent modifications don't
+mess things up.
+
+The test file is called \.{TRAP.MF}, because of my warped sense of humor:
+\MF's companion system, \TeX, has a similar test file called \.{TRIP}, and I
+couldn't help thinking about Billy Goat Gruff and the story of ``trip,
+trap, trip, trap.''
+
+The contents of this test file are so remote from what people actually
+do with \MF, I feel apologetic if I have to explain the correct
+translation of \.{TRAP.MF}; nobody really cares about most of the
+nitty-gritty rules that are involved. Yet I believe \.{TRAP} exemplifies
+the sort of test program that has outstanding diagnostic ability, as
+explained above.
+
+If somebody claims to have a correct implementation of \MF, I will not
+believe it until I see that \.{TRAP.MF} is translated properly.
+I propose, in fact, that a program must meet two criteria before it
+can justifiably be called \MF: (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 \.{TRAP.MF}.
+
+\MF\ is in the public domain, and its algorithms are published;
+I've done this since I do not want to discourage its use by placing
+proprietary restrictions on the software. However, I don't want
+faulty imitations to masquerade as \MF\ processors, since users
+want \MF\ to produce identical results on different machines.
+Hence I am planning to do whatever I can to suppress any systems that
+call themselves \MF\ without meeting conditions (1) and~(2).
+I have copyrighted the programs so that I have some chance to forbid
+unauthorized copies; I explicitly authorize copying of correct
+\MF\ implementations, and not of incorrect ones!
+
+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 a test of \MF, given
+a tape that contains copies of the other appendices.
+
+Appendix B is \.{TRAP.MF}, the fiendish test file that has already
+been mentioned. People who think that they understand \MF\ are challenged
+to see if they know what \MF\ is supposed to do with this file.
+People who know only a little about \MF\ might still find it
+interesting to study Appendix~B, just to get some insights into the
+methodology advocated here.
+
+Appendix C is \.{TRAPIN.LOG}, a correct transcript file \.{TRAP.LOG}
+that results if \.{INIMF} is applied to \.{TRAP.MF}. (\.{INIMF} is
+the name of a version of \MF\ that does certain initializations;
+this run of \.{INIMF} also creates a binary base file called \.{TRAP.BASE}.)
+
+Appendix D is a correct transcript file \.{TRAP.LOG} that results if
+\.{INIMF} or any other version of \MF\ is applied to \.{TRAP.MF}
+with base file \.{TRAP.BASE}.
+
+Appendix E is \.{TRAP.TYP}, the symbolic version of a correct output
+file \.{TRAP.72270GF} that was produced at the same time as the \.{TRAP.LOG}
+file of Appendix~D.
+
+Appendix F is \.{TRAP.PL}, the symbolic version of a correct output
+file \.{TRAP.TFM} that was produced at the same time as the \.{TRAP.LOG}
+file of Appendix~D.
+
+Appendix G is \.{TRAP.FOT}, an abbreviated version of Appendix D that
+appears on the user's terminal during the run that produces \.{TRAP.LOG},
+\.{TRAP.72270GF}, and \.{TRAP.TFM}.
+
+The debugging of \MF\ and the testing of the adequacy of \.{TRAP.MF}
+could not have been done nearly as well as reported here except for
+the magnificent software support provided by my colleague David R. Fuchs.
+In particular, he extended our local Pascal compiler so that
+frequency counting and a number of other important features were added
+to its online debugging abilities.
+
+The method of testing advocated here has one chief difficulty that deserves
+comment: I had to verify by hand that \MF\ did the right things
+to \.{TRAP.MF}. This took many hours, and perhaps I have missed
+something (as I did in 1960); I must confess that I have not checked
+every single number in Appendices D, E, and~F. However, I'm willing to pay
+$\$$81.92 to the first finder of any remaining bug in \MF, and I will
+be surprised if that bug doesn't show up also in one of these appendices.
+
+\vfill\eject
+
+\section Appendix A: How to test \MF.
+
+\item{0.} Let's assume that you have a tape containing \.{TRAP.MF},
+\.{TRAPIN.LOG}, \.{TRAP.LOG}, \.{TRAP.TYP}, \.{TRAP.PL}, and \.{TRAP.FOT},
+as in Appendices B, C, D, E, F, and~G. Furthermore, let's suppose that you
+have a working \.{WEB} system, and that you have working programs
+\.{TFtoPL} and \.{GFtype}, as described in the \TeX ware and \MF ware reports.
+
+\item{1.} Prepare a version of \.{INIMF}. (This means that your \.{WEB}
+change file should have {\bf init} and {\bf tini} defined to be null.)
+The {\bf debug} and {\bf gubed} macros should be null, in order to
+activate special printouts that occur when $\\{tracingedges}>1.0$.
+The {\bf stat} and {\bf tats} macros should also be null, so that
+statistics are kept. Set \\{mem\_top} and \\{mem\_max} to 3000
+(or to \\{mem\_min} plus 3000, if \\{mem\_min} isn't zero),
+for purposes of this test version.
+Also set $\\{error\_line}=64$, $\\{half\_error\_line}=32$,
+$\\{max\_print\_line}=72$, $\\{screen\_width}=100$, and
+$\\{screen\_depth}=200$; these parameters affect many of the lines of
+the test output, so your job will be much easier if you use the same
+settings that were used to produce Appendix~E. Also (if possible) set
+$\\{gf\_buf\_size}=8$, since this tests more parts of the program.
+You probably should also use the ``normal'' settings of other parameters
+found in \.{MF.WEB} (e.g., $\\{max\_internal}=100$, $\\{buf\_size}=500$,
+etc.), since these show up in a few lines of the test output. Finally,
+change \MF's screen-display routines by putting the following simple lines
+in the change file:
+$$\vbox{\halign{\tt#\hfil\cr
+\char`\@x Screen routines:\cr
+begin init\char`\_screen:=false;\cr
+\char`\@y\cr
+begin init\char`\_screen:=true;
+ \char`\{screen instructions will be logged\char`\}\cr
+\char`\@z\cr}}$$
+None of the other screen routines (\\{update\_screen}, \\{blank\_rectangle},
+\\{paint\_row}) should be changed in any way; the effect will be to have
+\MF's actions recorded in the transcript files instead of on the screen,
+in a machine-independent way.
+
+\item{2.} Run the \.{INIMF} prepared in step 1. In response to the first
+`\.{**}' prompt, type carriage return (thus getting another `\.{**}').
+Then type `\.{\char`\\input trap}'. You should get an output that matches
+the file \.{TRAPIN.LOG} (Appendix~C). Don't be alarmed by the error
+messages that you see, unless they are different from those in Appendix~C.
+
+\def\sp{{\char'40}}
+\item{3.} Run \.{INIMF} again. This time type `\.{\sp\&trap\sp\sp trap\sp}'.
+(The spaces in this input help to check certain parts of \MF\ that
+aren't otherwise used.) You should get outputs \.{TRAP.LOG}, \.{TRAP.72270GF},
+and \.{TRAP.TFM}.
+Furthermore, your terminal should receive output that matches \.{TRAP.FOT}
+(Appendix~G). During the middle part of this test, however, the terminal
+will not be getting output, because \.{batchmode} is being
+tested; don't worry if nothing seems to be happening for a while---nothing
+is supposed to.
+
+\item{4.} Compare the \.{TRAP.LOG} file from step 3 with the ``master''
+\.{TRAP.LOG} file of step~0. (Let's hope you put that master file in a
+safe place so that it wouldn't be clobbered.) There should be perfect
+agreement between these files except in the following respects:
+
+\itemitem{a)} The dates and possibly the file names will
+naturally be different.
+
+\itemitem{b)} 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.
+
+\itemitem{c)} Help messages may be different; indeed, the author encourages
+non-English help messages in versions of \MF\ for people who don't
+understand English as well as some other language.
+
+\itemitem{d)} The total number and length of strings at the end and/or
+``still untouched'' may well be different.
+
+\itemitem{e)} If your \MF\ uses a different memory allocation or
+packing scheme, the memory usage statistics may change.
+
+\itemitem{f)} If you use a different storage allocation scheme, the
+capsule numbers will probably be different, but the order of variables
+should be unchanged when dependent variables are shown. \MF\ should also
+choose the same variables to be dependent.
+
+\itemitem{g)} If your computer handles integer division of negative operands
+in a nonstandard way, you may get results that are rounded differently.
+Although \TeX\ is careful to be machine-independent in this regard,
+\MF\ is not, because integer divisions are present in so many places.
+
+\item{5.} Use \.{GFtype} to convert your file \.{TRAP.72270GF} to a file
+\.{TRAP.TYP}. (Both of \.{GFtype}'s options, i.e., mnemonic output and image
+output, should be enabled so that you get the maximum amount of output.)
+The resulting file should agree with the master \.{TRAP.TYP} file of step~0,
+assuming that your \.{GFtype} has the ``normal'' values of compile-time
+constants ($\\{top\_pixel}=69$, etc.).
+
+\item{6.} Use \.{TFtoPL} to convert your file \.{TRAP.TFM} to a file
+\.{TRAP.PL}. The resulting file should agree with the master \.{TRAP.PL}
+file of step~0.
+
+\item{7.} You might also wish to test \.{TRAP} with other versions of
+\MF\ (i.e., \.{VIRMF} or a production version with another base file
+preloaded). It should work unless \MF's primitives have been redefined in
+the base file. However, this step isn't essential, since all the code of
+\.{VIRMF} appears in \.{INIMF}; you probably won't catch any more errors
+this way, unless they would already become obvious from normal use of
+the~system.
+
+\vfill\eject
+
+\section Appendix B: The \.{TRAP.MF} 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.
+\runninghead{APPENDIX B: \.{TRAP.MF} (CONTINUED)}
+
+\vskip 8pt
+\begingroup\count255=0
+\everypar{\global\advance\count255 by 1
+ \hbox to 20pt{\sevenrm\hfil\the\count255\ \ }}
+\verbatim{trap.mf}
+\endgroup
+\vfill\eject
+
+\section Appendix C: The \.{TRAPIN.LOG} file.
+When \.{INIMF} makes the \.{TRAP.BASE} file, it also creates a file called
+\.{TRAP.LOG} that looks like this.
+\runninghead{APPENDIX C: \.{TRAPIN.LOG} (CONTINUED)}
+
+\vskip8pt
+\verbatim{trapin.log}
+\vfill\eject
+
+\section Appendix D: The \.{TRAP.LOG} file.
+Here is the major output of the \.{TRAP} test; it is generated by running
+\.{INIMF} and loading \.{TRAP.BASE}, then reading \.{TRAP.MF}.
+\runninghead{APPENDIX D: \.{TRAP.LOG} (CONTINUED)}
+
+{\let\tt=\eighttt\leftskip 1in\baselineskip 9pt plus .1pt minus .1pt
+\vskip8pt
+\verbatim{trap.log}
+}
+\vfill\eject
+
+\section Appendix E: The \.{TRAP.TYP} file.
+Here is another major component of the test. It shows the output of \.{GFtype}
+applied to the file \.{TRAP.72270GF} that is created at the same time
+Appendix D was produced.
+\runninghead{APPENDIX E: \.{TRAP.TYP} (CONTINUED)}
+
+{\let\tt=\eighttt\leftskip 1in\baselineskip 9pt plus .1pt minus .1pt
+\vskip8pt
+\verbatim{trap.typ}
+}
+\vfill\eject
+
+\section Appendix F: The \.{TRAP.PL} file.
+In this case we have the output of \.{TFtoPL}
+applied to the file \.{TRAP.TFM} that is created at the same time
+Appendix D was produced.
+\runninghead{APPENDIX F: \.{TRAP.PL} (CONTINUED)}
+
+{\let\tt=\eighttt\leftskip 1in\baselineskip 9pt plus .1pt minus .1pt
+\vskip8pt
+\verbatim{trap.pl}
+}
+\vfill\eject
+
+\section Appendix G: The \.{TRAP.FOT} file.
+This shows what appeared on the terminal while Appendix D was being produced.
+\runninghead{APPENDIX G: \.{TRAP.FOT} (CONTINUED)}
+
+\vskip8pt
+\verbatim{trap.fot}
+
+\vfill\end
diff --git a/Master/texmf-doc/doc/english/knuth/trip.pl b/Master/texmf-doc/doc/english/knuth/trip.pl
new file mode 100644
index 00000000000..6a38a92316b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/trip.pl
@@ -0,0 +1,833 @@
+(FAMILY UNSPECIFIED)
+(FACE F MRR)
+(CODINGSCHEME TEX TEST: NOT A REAL FONT)
+(DESIGNSIZE R 10.0)
+(COMMENT DESIGNSIZE IS IN POINTS)
+(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
+(CHECKSUM O 32107654321)
+(FONTDIMEN
+ (SLANT R -2.0)
+ (SPACE R 0.400001)
+ (STRETCH R 0.200001)
+ (SHRINK R 0.1)
+ (XHEIGHT R 0.45)
+ (QUAD R 1.0)
+ (EXTRASPACE R 0.200001)
+ (PARAMETER D 8 R 0.05)
+ (PARAMETER D 9 R 0.1)
+ (PARAMETER D 10 R 0.200001)
+ (PARAMETER D 11 R 0.3)
+ (PARAMETER D 12 R 0.400001)
+ (PARAMETER D 13 R 0.5)
+ )
+(BOUNDARYCHAR C Z)
+(LIGTABLE
+ (LABEL C t)
+ (KRN O 0 R -1.0)
+ (KRN O 0 R -0.01)
+ (KRN O 0 R -0.02)
+ (KRN O 0 R -0.03)
+ (KRN O 0 R -0.04)
+ (KRN O 0 R -0.05)
+ (KRN O 0 R -0.06)
+ (KRN O 0 R -0.07)
+ (KRN O 0 R -0.08)
+ (KRN O 0 R -0.09)
+ (KRN O 0 R -0.1)
+ (KRN O 0 R -0.11)
+ (KRN O 0 R -0.12)
+ (KRN O 0 R -0.13)
+ (KRN O 0 R -0.14)
+ (KRN O 0 R -0.15)
+ (KRN O 0 R -0.16)
+ (KRN O 0 R -0.17)
+ (KRN O 0 R -0.18)
+ (KRN O 0 R -0.19)
+ (KRN O 0 R -0.2)
+ (KRN O 0 R -0.21)
+ (KRN O 0 R -0.22)
+ (KRN O 0 R -0.23)
+ (KRN O 0 R -0.24)
+ (KRN O 0 R -0.25)
+ (KRN O 0 R -0.26)
+ (KRN O 0 R -0.27)
+ (KRN O 0 R -0.28)
+ (KRN O 0 R -0.29)
+ (KRN O 0 R -0.3)
+ (KRN O 0 R -0.31)
+ (KRN O 0 R -0.32)
+ (KRN O 0 R -0.33)
+ (KRN O 0 R -0.34)
+ (KRN O 0 R -0.35)
+ (KRN O 0 R -0.36)
+ (KRN O 0 R -0.37)
+ (KRN O 0 R -0.38)
+ (KRN O 0 R -0.39)
+ (KRN O 0 R -0.4)
+ (KRN O 0 R -0.41)
+ (KRN O 0 R -0.42)
+ (KRN O 0 R -0.43)
+ (KRN O 0 R -0.44)
+ (KRN O 0 R -0.45)
+ (KRN O 0 R -0.46)
+ (KRN O 0 R -0.47)
+ (KRN O 0 R -0.48)
+ (KRN O 0 R -0.49)
+ (KRN O 0 R -0.5)
+ (KRN O 0 R -0.51)
+ (KRN O 0 R -0.52)
+ (KRN O 0 R -0.53)
+ (KRN O 0 R -0.54)
+ (KRN O 0 R -0.55)
+ (KRN O 0 R -0.56)
+ (KRN O 0 R -0.57)
+ (KRN O 0 R -0.58)
+ (KRN O 0 R -0.59)
+ (KRN O 0 R -0.6)
+ (KRN O 0 R -0.61)
+ (KRN O 0 R -0.62)
+ (KRN O 0 R -0.63)
+ (KRN O 0 R -0.64)
+ (KRN O 0 R -0.65)
+ (KRN O 0 R -0.66)
+ (KRN O 0 R -0.67)
+ (KRN O 0 R -0.68)
+ (KRN O 0 R -0.69)
+ (KRN O 0 R -0.7)
+ (KRN O 0 R -0.71)
+ (KRN O 0 R -0.72)
+ (KRN O 0 R -0.73)
+ (KRN O 0 R -0.74)
+ (KRN O 0 R -0.75)
+ (KRN O 0 R -0.76)
+ (KRN O 0 R -0.77)
+ (KRN O 0 R -0.78)
+ (KRN O 0 R -0.79)
+ (KRN O 0 R -0.8)
+ (KRN O 0 R -0.81)
+ (KRN O 0 R -0.82)
+ (KRN O 0 R -0.83)
+ (KRN O 0 R -0.84)
+ (KRN O 0 R -0.85)
+ (KRN O 0 R -0.86)
+ (KRN O 0 R -0.87)
+ (KRN O 0 R -0.88)
+ (KRN O 0 R -0.89)
+ (KRN O 0 R -0.9)
+ (KRN O 0 R -0.91)
+ (KRN O 0 R -0.92)
+ (KRN O 0 R -0.93)
+ (KRN O 0 R -0.94)
+ (KRN O 0 R -0.95)
+ (KRN O 0 R -0.96)
+ (KRN O 0 R -0.97)
+ (KRN O 0 R -0.98)
+ (KRN O 0 R -0.99)
+ (KRN O 0 R -1.0)
+ (KRN O 0 R -1.01)
+ (KRN O 0 R -1.02)
+ (KRN O 0 R -1.03)
+ (KRN O 0 R -1.04)
+ (KRN O 0 R -1.05)
+ (KRN O 0 R -1.06)
+ (KRN O 0 R -1.07)
+ (KRN O 0 R -1.08)
+ (KRN O 0 R -1.09)
+ (KRN O 0 R -1.1)
+ (KRN O 0 R -1.11)
+ (KRN O 0 R -1.12)
+ (KRN O 0 R -1.13)
+ (KRN O 0 R -1.14)
+ (KRN O 0 R -1.15)
+ (KRN O 0 R -1.16)
+ (KRN O 0 R -1.17)
+ (KRN O 0 R -1.18)
+ (KRN O 0 R -1.19)
+ (KRN O 0 R -1.2)
+ (KRN O 0 R -1.21)
+ (KRN O 0 R -1.22)
+ (KRN O 0 R -1.23)
+ (KRN O 0 R -1.24)
+ (KRN O 0 R -1.25)
+ (KRN O 0 R -1.26)
+ (KRN O 0 R -1.27)
+ (KRN O 0 R -1.28)
+ (KRN O 0 R -1.29)
+ (KRN O 0 R -1.3)
+ (KRN O 0 R -1.31)
+ (KRN O 0 R -1.32)
+ (KRN O 0 R -1.33)
+ (KRN O 0 R -1.34)
+ (KRN O 0 R -1.35)
+ (KRN O 0 R -1.36)
+ (KRN O 0 R -1.37)
+ (KRN O 0 R -1.38)
+ (KRN O 0 R -1.39)
+ (KRN O 0 R -1.4)
+ (KRN O 0 R -1.41)
+ (KRN O 0 R -1.42)
+ (KRN O 0 R -1.43)
+ (KRN O 0 R -1.44)
+ (KRN O 0 R -1.45)
+ (KRN O 0 R -1.46)
+ (KRN O 0 R -1.47)
+ (KRN O 0 R -1.48)
+ (KRN O 0 R -1.49)
+ (KRN O 0 R -1.5)
+ (KRN O 0 R -1.51)
+ (KRN O 0 R -1.52)
+ (KRN O 0 R -1.53)
+ (KRN O 0 R -1.54)
+ (KRN O 0 R -1.55)
+ (KRN O 0 R -1.56)
+ (KRN O 0 R -1.57)
+ (KRN O 0 R -1.58)
+ (KRN O 0 R -1.59)
+ (KRN O 0 R -1.6)
+ (KRN O 0 R -1.61)
+ (KRN O 0 R -1.62)
+ (KRN O 0 R -1.63)
+ (KRN O 0 R -1.64)
+ (KRN O 0 R -1.65)
+ (KRN O 0 R -1.66)
+ (KRN O 0 R -1.67)
+ (KRN O 0 R -1.68)
+ (KRN O 0 R -1.69)
+ (KRN O 0 R -1.7)
+ (KRN O 0 R -1.71)
+ (KRN O 0 R -1.72)
+ (KRN O 0 R -1.73)
+ (KRN O 0 R -1.74)
+ (KRN O 0 R -1.75)
+ (KRN O 0 R -1.76)
+ (KRN O 0 R -1.77)
+ (KRN O 0 R -1.78)
+ (KRN O 0 R -1.79)
+ (KRN O 0 R -1.8)
+ (KRN O 0 R -1.81)
+ (KRN O 0 R -1.82)
+ (KRN O 0 R -1.83)
+ (KRN O 0 R -1.84)
+ (KRN O 0 R -1.85)
+ (KRN O 0 R -1.86)
+ (KRN O 0 R -1.87)
+ (KRN O 0 R -1.88)
+ (KRN O 0 R -1.89)
+ (KRN O 0 R -1.9)
+ (KRN O 0 R -1.91)
+ (KRN O 0 R -1.92)
+ (KRN O 0 R -1.93)
+ (KRN O 0 R -1.94)
+ (KRN O 0 R -1.95)
+ (KRN O 0 R -1.96)
+ (KRN O 0 R -1.97)
+ (KRN O 0 R -1.98)
+ (KRN O 0 R -1.99)
+ (KRN O 0 R -2.0)
+ (KRN O 0 R -2.01)
+ (KRN O 0 R -2.02)
+ (KRN O 0 R -2.03)
+ (KRN O 0 R -2.04)
+ (KRN O 0 R -2.05)
+ (KRN O 0 R -2.06)
+ (KRN O 0 R -2.07)
+ (KRN O 0 R -2.08)
+ (KRN O 0 R -2.09)
+ (KRN O 0 R -2.1)
+ (KRN O 0 R -2.11)
+ (KRN O 0 R -2.12)
+ (KRN O 0 R -2.13)
+ (KRN O 0 R -2.14)
+ (KRN O 0 R -2.15)
+ (KRN O 0 R -2.16)
+ (KRN O 0 R -2.17)
+ (KRN O 0 R -2.18)
+ (KRN O 0 R -2.19)
+ (KRN O 0 R -2.2)
+ (KRN O 0 R -2.21)
+ (KRN O 0 R -2.22)
+ (KRN O 0 R -2.23)
+ (KRN O 0 R -2.24)
+ (KRN O 0 R -2.25)
+ (KRN O 0 R -2.26)
+ (KRN O 0 R -2.27)
+ (KRN O 0 R -2.28)
+ (KRN O 0 R -2.29)
+ (KRN O 0 R -2.3)
+ (SKIP D 3)
+ (LABEL O 55)
+ (LIG O 0 O 55)
+ (/LIG> C q C p)
+ (LABEL O 57)
+ (KRN C A R 0.1)
+ (STOP)
+ (KRN O 0 R -2.31)
+ (KRN O 0 R -2.32)
+ (KRN O 0 R -2.33)
+ (KRN O 0 R -2.34)
+ (KRN O 0 R -2.35)
+ (KRN O 0 R -2.36)
+ (KRN O 0 R -2.37)
+ (KRN O 0 R -2.38)
+ (KRN O 0 R -2.39)
+ (KRN O 0 R -2.4)
+ (KRN O 0 R -2.41)
+ (KRN O 0 R -2.42)
+ (KRN O 0 R -2.43)
+ (KRN O 0 R -2.44)
+ (KRN O 0 R -2.45)
+ (KRN O 0 R -2.46)
+ (KRN O 0 R -2.47)
+ (KRN O 0 R -2.48)
+ (KRN O 0 R -2.49)
+ (KRN O 0 R -2.5)
+ (KRN O 0 R -2.51)
+ (KRN O 0 R -2.52)
+ (KRN O 0 R -2.53)
+ (KRN O 0 R -2.54)
+ (KRN O 0 R -2.55)
+ (KRN O 0 R -2.56)
+ (KRN O 0 R -2.57)
+ (/LIG/>> C r C s)
+ (SKIP D 9)
+ (LABEL C p)
+ (/LIG/ C q C r)
+ (/LIG/> C r C t)
+ (LIG C t C t)
+ (STOP)
+ (LABEL C q)
+ (/LIG/ C u C p)
+ (/LIG/ C s C r)
+ (KRN C t R 0.1)
+ (/LIG> C r C t)
+ (SKIP D 2)
+ (LABEL C r)
+ (LIG/ C u C q)
+ (/LIG C q C u)
+ (STOP)
+ (/LIG/ C p C s)
+ (KRN C s R 0.3)
+ (STOP)
+ (LABEL C s)
+ (LIG/> C p C q)
+ (KRN C r R 0.1)
+ (STOP)
+ (LABEL C u)
+ (/LIG C Z C p)
+ (LIG C p C r)
+ (STOP)
+ (LABEL BOUNDARYCHAR)
+ (LIG/ C q C q)
+ (/LIG C 1 C 5)
+ (KRN O 55 R -0.1)
+ (STOP)
+ (LABEL C 1)
+ (/LIG/ C 1 C 2)
+ (/LIG/ C 2 C 3)
+ (/LIG> O 55 C 1)
+ (SKIP D 1)
+ (LABEL C 2)
+ (/LIG/ C 1 C 3)
+ (/LIG/ C 3 C 4)
+ (SKIP D 2)
+ (LABEL C 3)
+ (/LIG/ C 1 C 4)
+ (/LIG/ C 2 C 4)
+ (/LIG/ C 4 C 5)
+ (SKIP D 3)
+ (LABEL C 4)
+ (/LIG/ C 1 C 5)
+ (/LIG/ C 2 C 5)
+ (/LIG/ C 3 C 5)
+ (/LIG/ C 5 C 6)
+ (SKIP D 4)
+ (LABEL C 5)
+ (/LIG/ C 1 C 6)
+ (/LIG/ C 2 C 6)
+ (/LIG/ C 3 C 6)
+ (/LIG/ C 4 C 6)
+ (/LIG/ C 6 C 7)
+ (SKIP D 5)
+ (LABEL C 6)
+ (/LIG/ C 1 C 7)
+ (/LIG/ C 2 C 7)
+ (/LIG/ C 3 C 7)
+ (/LIG/ C 4 C 7)
+ (/LIG/ C 5 C 7)
+ (/LIG/>> C Z C 7)
+ (STOP)
+ (LABEL C 7)
+ (KRN C Z R 0.1)
+ (LABEL C A)
+ (LIG C A C A)
+ (KRN C B R 0.200001)
+ (KRN O 55 R 0.3)
+ (KRN C 1 R -0.200001)
+ (STOP)
+ (LABEL C B)
+ (LIG C B C A)
+ (LIG O 55 C C)
+ (KRN C C R 0.400001)
+ (STOP)
+ (LABEL C C)
+ (LIG C A O 202)
+ (LIG O 57 C B)
+ (STOP)
+ )
+(CHARACTER O 0
+ (CHARWD R 0.700001)
+ (CHARHT R -0.1)
+ (CHARDP R 0.200001)
+ )
+(CHARACTER O 55
+ (CHARWD R -0.5)
+ (COMMENT
+ (LIG O 0 O 55)
+ (/LIG> C q C p)
+ (KRN C A R 0.1)
+ )
+ )
+(CHARACTER O 57
+ (CHARWD R 0.1)
+ (COMMENT
+ (KRN C A R 0.1)
+ )
+ )
+(CHARACTER C 1
+ (CHARWD R 0.0)
+ (COMMENT
+ (/LIG/ C 1 C 2)
+ (/LIG/ C 2 C 3)
+ (/LIG> O 55 C 1)
+ (/LIG/ C 3 C 4)
+ (/LIG/ C 4 C 5)
+ (/LIG/ C 5 C 6)
+ (/LIG/ C 6 C 7)
+ (/LIG/>> C Z C 7)
+ )
+ )
+(CHARACTER C 2
+ (CHARWD R 0.0)
+ (COMMENT
+ (/LIG/ C 1 C 3)
+ (/LIG/ C 3 C 4)
+ (/LIG/ C 4 C 5)
+ (/LIG/ C 5 C 6)
+ (/LIG/ C 6 C 7)
+ (/LIG/>> C Z C 7)
+ )
+ )
+(CHARACTER C 3
+ (CHARWD R 0.0)
+ (COMMENT
+ (/LIG/ C 1 C 4)
+ (/LIG/ C 2 C 4)
+ (/LIG/ C 4 C 5)
+ (/LIG/ C 5 C 6)
+ (/LIG/ C 6 C 7)
+ (/LIG/>> C Z C 7)
+ )
+ )
+(CHARACTER C 4
+ (CHARWD R 0.0)
+ (COMMENT
+ (/LIG/ C 1 C 5)
+ (/LIG/ C 2 C 5)
+ (/LIG/ C 3 C 5)
+ (/LIG/ C 5 C 6)
+ (/LIG/ C 6 C 7)
+ (/LIG/>> C Z C 7)
+ )
+ )
+(CHARACTER C 5
+ (CHARWD R 0.0)
+ (COMMENT
+ (/LIG/ C 1 C 6)
+ (/LIG/ C 2 C 6)
+ (/LIG/ C 3 C 6)
+ (/LIG/ C 4 C 6)
+ (/LIG/ C 6 C 7)
+ (/LIG/>> C Z C 7)
+ )
+ )
+(CHARACTER C 6
+ (CHARWD R 0.0)
+ (COMMENT
+ (/LIG/ C 1 C 7)
+ (/LIG/ C 2 C 7)
+ (/LIG/ C 3 C 7)
+ (/LIG/ C 4 C 7)
+ (/LIG/ C 5 C 7)
+ (/LIG/>> C Z C 7)
+ )
+ )
+(CHARACTER C 7
+ (CHARWD R 0.0)
+ (COMMENT
+ (KRN C Z R 0.1)
+ (LIG C A C A)
+ (KRN C B R 0.200001)
+ (KRN O 55 R 0.3)
+ (KRN C 1 R -0.200001)
+ )
+ )
+(CHARACTER C A
+ (CHARWD R 0.200001)
+ (CHARHT R 0.700001)
+ (CHARDP R 0.1)
+ (CHARIC R 0.1)
+ (COMMENT
+ (LIG C A C A)
+ (KRN C B R 0.200001)
+ (KRN O 55 R 0.3)
+ (KRN C 1 R -0.200001)
+ )
+ )
+(CHARACTER C B
+ (CHARWD R 0.3)
+ (CHARHT R 0.8)
+ (CHARDP R 0.200001)
+ (COMMENT
+ (LIG C B C A)
+ (LIG O 55 C C)
+ (KRN C C R 0.400001)
+ )
+ )
+(CHARACTER C C
+ (CHARWD R 0.400001)
+ (COMMENT
+ (LIG C A O 202)
+ (LIG O 57 C B)
+ )
+ )
+(CHARACTER C M
+ (CHARWD R 0.6)
+ (CHARIC R 0.200001)
+ (VARCHAR
+ (MID C A)
+ (BOT C B)
+ (REP O 0)
+ )
+ )
+(CHARACTER C a
+ (CHARWD R 0.200001)
+ (CHARHT R 0.700001)
+ (CHARDP R 0.1)
+ (CHARIC R 0.1)
+ (NEXTLARGER O 202)
+ )
+(CHARACTER C b
+ (CHARWD R 0.3)
+ (CHARHT R 0.8)
+ (CHARDP R 0.200001)
+ (NEXTLARGER C M)
+ )
+(CHARACTER C p
+ (CHARWD R 0.0)
+ (COMMENT
+ (/LIG/ C q C r)
+ (/LIG/> C r C t)
+ (LIG C t C t)
+ )
+ )
+(CHARACTER C q
+ (CHARWD R 0.0)
+ (COMMENT
+ (/LIG/ C u C p)
+ (/LIG/ C s C r)
+ (KRN C t R 0.1)
+ (/LIG> C r C t)
+ (/LIG/ C p C s)
+ (KRN C s R 0.3)
+ )
+ )
+(CHARACTER C r
+ (CHARWD R 0.0)
+ (COMMENT
+ (LIG/ C u C q)
+ (/LIG C q C u)
+ )
+ )
+(CHARACTER C s
+ (CHARWD R 0.0)
+ (COMMENT
+ (LIG/> C p C q)
+ (KRN C r R 0.1)
+ )
+ )
+(CHARACTER C t
+ (CHARWD R 0.0)
+ (COMMENT
+ (KRN O 0 R -1.0)
+ (KRN O 0 R -0.01)
+ (KRN O 0 R -0.02)
+ (KRN O 0 R -0.03)
+ (KRN O 0 R -0.04)
+ (KRN O 0 R -0.05)
+ (KRN O 0 R -0.06)
+ (KRN O 0 R -0.07)
+ (KRN O 0 R -0.08)
+ (KRN O 0 R -0.09)
+ (KRN O 0 R -0.1)
+ (KRN O 0 R -0.11)
+ (KRN O 0 R -0.12)
+ (KRN O 0 R -0.13)
+ (KRN O 0 R -0.14)
+ (KRN O 0 R -0.15)
+ (KRN O 0 R -0.16)
+ (KRN O 0 R -0.17)
+ (KRN O 0 R -0.18)
+ (KRN O 0 R -0.19)
+ (KRN O 0 R -0.2)
+ (KRN O 0 R -0.21)
+ (KRN O 0 R -0.22)
+ (KRN O 0 R -0.23)
+ (KRN O 0 R -0.24)
+ (KRN O 0 R -0.25)
+ (KRN O 0 R -0.26)
+ (KRN O 0 R -0.27)
+ (KRN O 0 R -0.28)
+ (KRN O 0 R -0.29)
+ (KRN O 0 R -0.3)
+ (KRN O 0 R -0.31)
+ (KRN O 0 R -0.32)
+ (KRN O 0 R -0.33)
+ (KRN O 0 R -0.34)
+ (KRN O 0 R -0.35)
+ (KRN O 0 R -0.36)
+ (KRN O 0 R -0.37)
+ (KRN O 0 R -0.38)
+ (KRN O 0 R -0.39)
+ (KRN O 0 R -0.4)
+ (KRN O 0 R -0.41)
+ (KRN O 0 R -0.42)
+ (KRN O 0 R -0.43)
+ (KRN O 0 R -0.44)
+ (KRN O 0 R -0.45)
+ (KRN O 0 R -0.46)
+ (KRN O 0 R -0.47)
+ (KRN O 0 R -0.48)
+ (KRN O 0 R -0.49)
+ (KRN O 0 R -0.5)
+ (KRN O 0 R -0.51)
+ (KRN O 0 R -0.52)
+ (KRN O 0 R -0.53)
+ (KRN O 0 R -0.54)
+ (KRN O 0 R -0.55)
+ (KRN O 0 R -0.56)
+ (KRN O 0 R -0.57)
+ (KRN O 0 R -0.58)
+ (KRN O 0 R -0.59)
+ (KRN O 0 R -0.6)
+ (KRN O 0 R -0.61)
+ (KRN O 0 R -0.62)
+ (KRN O 0 R -0.63)
+ (KRN O 0 R -0.64)
+ (KRN O 0 R -0.65)
+ (KRN O 0 R -0.66)
+ (KRN O 0 R -0.67)
+ (KRN O 0 R -0.68)
+ (KRN O 0 R -0.69)
+ (KRN O 0 R -0.7)
+ (KRN O 0 R -0.71)
+ (KRN O 0 R -0.72)
+ (KRN O 0 R -0.73)
+ (KRN O 0 R -0.74)
+ (KRN O 0 R -0.75)
+ (KRN O 0 R -0.76)
+ (KRN O 0 R -0.77)
+ (KRN O 0 R -0.78)
+ (KRN O 0 R -0.79)
+ (KRN O 0 R -0.8)
+ (KRN O 0 R -0.81)
+ (KRN O 0 R -0.82)
+ (KRN O 0 R -0.83)
+ (KRN O 0 R -0.84)
+ (KRN O 0 R -0.85)
+ (KRN O 0 R -0.86)
+ (KRN O 0 R -0.87)
+ (KRN O 0 R -0.88)
+ (KRN O 0 R -0.89)
+ (KRN O 0 R -0.9)
+ (KRN O 0 R -0.91)
+ (KRN O 0 R -0.92)
+ (KRN O 0 R -0.93)
+ (KRN O 0 R -0.94)
+ (KRN O 0 R -0.95)
+ (KRN O 0 R -0.96)
+ (KRN O 0 R -0.97)
+ (KRN O 0 R -0.98)
+ (KRN O 0 R -0.99)
+ (KRN O 0 R -1.0)
+ (KRN O 0 R -1.01)
+ (KRN O 0 R -1.02)
+ (KRN O 0 R -1.03)
+ (KRN O 0 R -1.04)
+ (KRN O 0 R -1.05)
+ (KRN O 0 R -1.06)
+ (KRN O 0 R -1.07)
+ (KRN O 0 R -1.08)
+ (KRN O 0 R -1.09)
+ (KRN O 0 R -1.1)
+ (KRN O 0 R -1.11)
+ (KRN O 0 R -1.12)
+ (KRN O 0 R -1.13)
+ (KRN O 0 R -1.14)
+ (KRN O 0 R -1.15)
+ (KRN O 0 R -1.16)
+ (KRN O 0 R -1.17)
+ (KRN O 0 R -1.18)
+ (KRN O 0 R -1.19)
+ (KRN O 0 R -1.2)
+ (KRN O 0 R -1.21)
+ (KRN O 0 R -1.22)
+ (KRN O 0 R -1.23)
+ (KRN O 0 R -1.24)
+ (KRN O 0 R -1.25)
+ (KRN O 0 R -1.26)
+ (KRN O 0 R -1.27)
+ (KRN O 0 R -1.28)
+ (KRN O 0 R -1.29)
+ (KRN O 0 R -1.3)
+ (KRN O 0 R -1.31)
+ (KRN O 0 R -1.32)
+ (KRN O 0 R -1.33)
+ (KRN O 0 R -1.34)
+ (KRN O 0 R -1.35)
+ (KRN O 0 R -1.36)
+ (KRN O 0 R -1.37)
+ (KRN O 0 R -1.38)
+ (KRN O 0 R -1.39)
+ (KRN O 0 R -1.4)
+ (KRN O 0 R -1.41)
+ (KRN O 0 R -1.42)
+ (KRN O 0 R -1.43)
+ (KRN O 0 R -1.44)
+ (KRN O 0 R -1.45)
+ (KRN O 0 R -1.46)
+ (KRN O 0 R -1.47)
+ (KRN O 0 R -1.48)
+ (KRN O 0 R -1.49)
+ (KRN O 0 R -1.5)
+ (KRN O 0 R -1.51)
+ (KRN O 0 R -1.52)
+ (KRN O 0 R -1.53)
+ (KRN O 0 R -1.54)
+ (KRN O 0 R -1.55)
+ (KRN O 0 R -1.56)
+ (KRN O 0 R -1.57)
+ (KRN O 0 R -1.58)
+ (KRN O 0 R -1.59)
+ (KRN O 0 R -1.6)
+ (KRN O 0 R -1.61)
+ (KRN O 0 R -1.62)
+ (KRN O 0 R -1.63)
+ (KRN O 0 R -1.64)
+ (KRN O 0 R -1.65)
+ (KRN O 0 R -1.66)
+ (KRN O 0 R -1.67)
+ (KRN O 0 R -1.68)
+ (KRN O 0 R -1.69)
+ (KRN O 0 R -1.7)
+ (KRN O 0 R -1.71)
+ (KRN O 0 R -1.72)
+ (KRN O 0 R -1.73)
+ (KRN O 0 R -1.74)
+ (KRN O 0 R -1.75)
+ (KRN O 0 R -1.76)
+ (KRN O 0 R -1.77)
+ (KRN O 0 R -1.78)
+ (KRN O 0 R -1.79)
+ (KRN O 0 R -1.8)
+ (KRN O 0 R -1.81)
+ (KRN O 0 R -1.82)
+ (KRN O 0 R -1.83)
+ (KRN O 0 R -1.84)
+ (KRN O 0 R -1.85)
+ (KRN O 0 R -1.86)
+ (KRN O 0 R -1.87)
+ (KRN O 0 R -1.88)
+ (KRN O 0 R -1.89)
+ (KRN O 0 R -1.9)
+ (KRN O 0 R -1.91)
+ (KRN O 0 R -1.92)
+ (KRN O 0 R -1.93)
+ (KRN O 0 R -1.94)
+ (KRN O 0 R -1.95)
+ (KRN O 0 R -1.96)
+ (KRN O 0 R -1.97)
+ (KRN O 0 R -1.98)
+ (KRN O 0 R -1.99)
+ (KRN O 0 R -2.0)
+ (KRN O 0 R -2.01)
+ (KRN O 0 R -2.02)
+ (KRN O 0 R -2.03)
+ (KRN O 0 R -2.04)
+ (KRN O 0 R -2.05)
+ (KRN O 0 R -2.06)
+ (KRN O 0 R -2.07)
+ (KRN O 0 R -2.08)
+ (KRN O 0 R -2.09)
+ (KRN O 0 R -2.1)
+ (KRN O 0 R -2.11)
+ (KRN O 0 R -2.12)
+ (KRN O 0 R -2.13)
+ (KRN O 0 R -2.14)
+ (KRN O 0 R -2.15)
+ (KRN O 0 R -2.16)
+ (KRN O 0 R -2.17)
+ (KRN O 0 R -2.18)
+ (KRN O 0 R -2.19)
+ (KRN O 0 R -2.2)
+ (KRN O 0 R -2.21)
+ (KRN O 0 R -2.22)
+ (KRN O 0 R -2.23)
+ (KRN O 0 R -2.24)
+ (KRN O 0 R -2.25)
+ (KRN O 0 R -2.26)
+ (KRN O 0 R -2.27)
+ (KRN O 0 R -2.28)
+ (KRN O 0 R -2.29)
+ (KRN O 0 R -2.3)
+ (KRN O 0 R -2.31)
+ (KRN O 0 R -2.32)
+ (KRN O 0 R -2.33)
+ (KRN O 0 R -2.34)
+ (KRN O 0 R -2.35)
+ (KRN O 0 R -2.36)
+ (KRN O 0 R -2.37)
+ (KRN O 0 R -2.38)
+ (KRN O 0 R -2.39)
+ (KRN O 0 R -2.4)
+ (KRN O 0 R -2.41)
+ (KRN O 0 R -2.42)
+ (KRN O 0 R -2.43)
+ (KRN O 0 R -2.44)
+ (KRN O 0 R -2.45)
+ (KRN O 0 R -2.46)
+ (KRN O 0 R -2.47)
+ (KRN O 0 R -2.48)
+ (KRN O 0 R -2.49)
+ (KRN O 0 R -2.5)
+ (KRN O 0 R -2.51)
+ (KRN O 0 R -2.52)
+ (KRN O 0 R -2.53)
+ (KRN O 0 R -2.54)
+ (KRN O 0 R -2.55)
+ (KRN O 0 R -2.56)
+ (KRN O 0 R -2.57)
+ (/LIG/>> C r C s)
+ (/LIG/ C p C s)
+ (KRN C s R 0.3)
+ )
+ )
+(CHARACTER C u
+ (CHARWD R 0.0)
+ (COMMENT
+ (/LIG C Z C p)
+ (LIG C p C r)
+ )
+ )
+(CHARACTER O 202
+ (CHARWD R 0.400001)
+ )
diff --git a/Master/texmf-doc/doc/english/knuth/trip.tex b/Master/texmf-doc/doc/english/knuth/trip.tex
new file mode 100644
index 00000000000..a9205e52d5e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/trip.tex
@@ -0,0 +1,448 @@
+% This is a diabolical test file for TeX82. Watch your step.
+\immediate\catcode `{ = 1 \endlinechar=13
+\catcode `} = 2
+\catcode `$ = 3 {\catcode`$13\gdef\dol{$}}
+\catcode `& = 4
+\let\paR=\par
+\let\%=\relax
+\outer\xdef\par{\catcode `\% 14}
+ % this line should change % from type 5 to type 14
+\let\par=\paR \defaulthyphenchar=`- \defaultskewchar=256
+\ifx\initex\undefined \def\initex{} % next lines are skipped if format loaded
+ \catcode `# = 6 \catcode `U=\catcode`# % # for parameters
+ \catcode `^ = 7 \catcode `| = 8 % ^ for superscripts and | for subscripts
+ \catcode `~ = 9 % ~ will be ignored
+ \catcode `* = 10 % * will be like a space
+ \catcode `E = 12 % E is not a letter
+ \catcode`\@ = 15 % @ will be invalid
+ \catcode `^^A = 0008 % this is another way to get a subscript
+ \catcode `\^^@ = 11 % a strange letter will be allowed
+ \catcode `\^^? = \badness % and so will a strange escape delimiter
+ \fontdimen12\nullfont=13pt % give the null font more parameters
+ \font\trip = trip\relax % see TRIP.PL for details of this font
+ ^^?trip \font\smalltrip=trip scaled 500 % this will be our symbols font
+ \global\fontdimen22\smalltrip 7pt % the axis height
+ \textfont2=\smalltrip \scriptfont2 \smalltrip \scriptscriptfont2 \smalltrip
+ \nonstopmode\lccode256-0\mathchardef\a="8000\def\a{ SCALED 3~2769}
+ \font\rip=trip\a % font \rip will be the same as \trip
+ \skewchar\rip=`B \countdef\countz % \countz will be \count0
+ \def\on{1} \toksdef\tokens=256 \show\errorstopmode
+ \showthe\font \showthe\pageshrink \showthe\pagegoal
+ \font\bigtr^^@p=trip at20pt\textfont3=\bigtr^^@p % this will be extension font
+ \skip200 = 10pt plUs5fil\ifdim\hsize<\hsize\fi lllminus 0 fill
+ \setbox200=\vbox{\hrule\vskip\skip200} \wd200-2pt \setbox100=\hbox{A}
+ \skipdef\shkip100\shkip -18pt plus\catcode`\}fil minus 10fil
+ \advance\shkip by \skip200 \dimen33=3pt \count33=-\dimen33
+ \divide\shkip by \count33
+ \multiply\shkip by \count33 % so \skip100=-6pt plus 3filll minus 9fil
+ \count200 -5 \multiply\count200 by -100 % \count200 is 500
+ \count100=1000000 \divide\count100 by \count200 % \count100 is 2000
+ \dimen100=,00152587890625in % (100/65536)in = 7227sp
+ \multiply\dimen100 by 65536 \divide\dimen100 by 9 % \dimen100 is 803pt
+ \lineskip 0pt plus 40pt
+ \baselineskip=10pt plus 41pt
+ \parskip -0pt plus 42pt minus 8pt
+ \splittopskip 1pt plus 43pt
+ \splitmaxdepth -2pt \boxmaxdepth 1000pt
+ \belowdisplayskip 3pt plus 44pt minus\baselineskip \abovedisplayskip3pt
+ \abovedisplayshortskip 1pt plus 45pt minus\dimen100
+ \belowdisplayshortskip -\count33sp plus 46pt
+ \global\mathchardef\minus"232D % mathbin, family 3, character "2D (-)
+ \thinmuskip 1mu plus 2fill minus 3mu
+ \medmuskip 2mu minus 3mu
+ \thickmuskip -4mu
+ \def\gobble#1{} \floatingpenalty 100 \holdinginserts1
+ \everypar{A\insert200{\baselineskip400pt\splittopskip\count15pt\hbox{\vadjust
+ {\penalty999}}\hbox to -10pt{}}\showthe\pagetotal\showthe\pagegoal
+ \advance\count15by1\mark{\the\count15}\splitmaxdepth-1pt
+ \paR\gobble} % this aborts every paragraph abruptly
+ \def\weird#1{\csname\expandafter\gobble\string#1 \string\csname\endcsname}
+ \message{\the\output\weird\one on line \the\inputlineno}
+ \hyphenpenalty 88 \exhyphenpenalty 89 \badness
+ \clubpenalty 125 \widowpenalty 125 \displaywidowpenalty -125
+ \brokenpenalty 37
+ \interlinepenalty -125
+ \doublehyphendemerits 1000
+ \finalhyphendemerits 100000
+ \mag 2000 \righthyphenmin=1000000000
+ \delimiterfactor 10 \delimitershortfall 190pt
+ \showboxbreadth 55 \showboxdepth 9999 \chardef\nul0\def\0{\nul}
+ \tracingstats=4 \tracinglostchars=2 \tracingparagraphs\day \tracingpages\year
+ \chardef\?=`b \lccode`A=1 \let\^^bbb \hyphenchar\trip=1
+ \language-1\hyphenation\relax{b-\?-\char`b -\^^bb-^^62-^^" -t- }\lccode`149
+ {\everypar{\parindent\\\looseness-1}\skipdef\\8\language\?\\.01014pt\patterns
+ {0111}\emergencystretch9pt\language255\patterns{\the\\} % \patterns{.01015pt}
+ {\language256\patterns{0111 \?50AA1b3 *1AcA. bb bb1 0B2B0 b1c}} % *==space
+ \pretolerance-1\setbox0=\hbox{11}\setbox0=\hbox{\hbadness100\valign{#\cr
+ \hskip-9pt7A\righthyphenmin0\setlanguage\?\unhbox0{*\language`b11\noboundary}
+ 1Z1pts\patterns{q9q} -\0qq \showlists{\language\?\noboundary111}%
+ \hyphenchar\rip=`-\cr}}\patterns{toolate}\showbox0}
+ \showboxbreadth 9999\lefthyphenmin=2\righthyphenmin=3
+ \nulldelimiterspace --+.1pt \mathcode`q="3171
+ \scriptspace\if00-0.\fi\ifnum'\ifnum10=10 12="\fi
+ A 01p\ifdim1,0pt<`^^Abpt\fi\fi % this boils down to -0.01pt
+ \overfullrule 5pt \voffset-2pt
+ \def\sh{\ifnum\count4>10\else\dimen5=\count4pt
+ \advance\dimen5 by 10pt
+ \xdef\a{\a\the\count4pt \the\dimen5}
+ \advance\count4 by 1 \sh\fi}
+ \count4=1 \def\a{} \sh % \def\a{1pt 11pt 2pt 12pt ... 10pt 20pt}
+ \let\next=\dump \everyjob{\message{#}}
+\else\let\next=\relax\fi
+\next % if no format was preloaded, this will dump the trip.fmt file and halt
+\tracingcommands2\tracingrestores+2\write-1{log file only\the\prevgraf}
+\openout-'78terminal \openout10=tr\romannumeral1 \gobble\newcs pos
+\write10{} % writing three lines on tripos.tex (the first line is empty)
+\write10{\uppercase{\number{\outputpenalty}}} % 0{\outputpenalty} + error
+\write10{[\uppercase{\romannumeral-\the\outputpenalty}[} % "mmmmmmmmmm" (-10000)
+\vsize 2000pt
+\vbadness=1
+\topskip 20pt plus 1fil
+\penalty -12345 % this will be ignored since the page is still empty
+\maxdepth=2pt
+\tracingoutput\on
+\moveleft20pt\copy200
+\moveright20pt\hbox{\vrule depth20pt height-19pt width1pt}
+\penalty-10000 % now we'll compute silently for awhile, after default output
+\batchmode\output={\tracingcommands0\showthe\outputpenalty
+ \showboxbreadth 9999 \showboxdepth 9999 \hoffset1sp
+ {\setbox 254=\box255\shipout\ifvbox2\ifhbox254 \error\fi54\copy25\fi4}
+ \ifvoid 254\relax\else\error\fi
+ }
+\setbox255\vbox{}
+\dimen200=10000pt
+{\output{\dimen 9=\ht200\count5=\dimen9\global\countz=\outputpenalty
+ \ifnum\holdinginserts>0\global\holdinginserts0\unvbox255\penalty\countz
+ \else\setbox255\copy255 % at end of group, \box255 reverts to former value
+ \shipout\hbox{\box100\box200\vsplit 255 to 55pt}
+ \unvcopy255\showlists\showthe\insertpenalties\showthe\pageshrink
+ \globaldefs1\halign{#\tabskip\lineskip\cr}
+ \showboxdepth1\showboxbreadth2\fi
+ \message{\topmark:\firstmark:\botmark:\splitfirstmark:\splitbotmark}}
+ \insert100{\def\box{\vbox to 267.7pt{}} \vskip0pt plus 1fil
+ \baselineskip 0pt \lineskip 0pt minus .4pt
+ \box \penalty-101 \box \penalty-100 \box \penalty-1000
+ } % since \dimen100=803pt<3*267.7pt, the insertion splits;
+ % and the natural height+depth of the split-off part is 267.7pt;
+ % now since \count100=2000,
+ % this insertion adds about 535.4pt to the current page
+ \topskip1pt plus 44pt
+ \vbox spread 1000pt{} % beginning of new page
+ \insertpenalties=-50\penalty12345
+ \cleaders\hbox{\lower2pt\vbox to 17pt{}
+ \leaders\hrule\hskip10pt
+ \cleaders\hbox{A}\hskip 9pt % the A is 2pt wide
+ \leaders\hbox{A}\hskip 9pt
+ \xleaders\hbox{A}\hskip 9pt
+ \write111{\help} % \write will be ignored in leaders
+ }\vskip50pt minus 10pt
+ \mark{alpha}
+ AAA\everypar=\errhelp % because of previous \everypar, this makes 3 paragraphs
+ % and each paragraph consists of A\insert 200{400pt of stuff}\mark{n}
+ % but \count200=500 so the inserts are rated 200pt each
+ % so the third insertion will be split
+ \kern-50pt
+ A\hfill\vadjust{\newlinechar128\special{^^80\the\prevdepth}\penalty-5000}%
+ \penalty-1000000000 % forces line break in paragraph
+ % this is not the end of paragraph
+ A\par\insert200{\vskip10000pt\floatingpenalty3}% this insert will be held over
+ \pagefilstretch-1pt\showthe\insertpenalties\penalty99999999\showlists
+ \showthe\pagefilllstretch\vskip 1000pt\penalty-333\hbox to 23pt{} % output now
+ \vsize.pt\global\vsize=16383.99999237060546875pt % page size \approx infinity
+ } % now we revert to the former output routine
+{\tracingoutput-2\tracingstats1\shipout\hbox{\closeout10\closeout-10}}
+\showthe\everypar
+\everypar{}\showthe\everypar
+\def\showlonglists{{\tracingcommands0\pagefillstretch-1\dimen100
+ \showboxbreadth 9999 \showboxdepth 9999 \showlists \pagegoal=10000pt}}
+\tracingmacros=1
+\def\t12#101001#{-.#1pt} \let\T=\t
+\dimendef\varunit=222\varunit=+1,001\ifdim.5\mag>0cc0\fi1pt
+\ifdim -0.01001\varunit=\t120100101001001{\relax}\else\error\fi
+\countz=-1
+\ifodd\count0\advance\countz by -1\fi
+\penalty -12345 % output the remaining stuff
+\tracingmacros\tracingstats % the next part tests line-break computations
+% the two competing ways to set the paragraph have respective demerits
+% (30+l)^2+(30+l)^2+a and (51+l)^2+l^2, where a=adjdemerits, l=linepenalty
+\adjdemerits=782
+\linepenalty=1
+\def\1#1{\hbox to#1pt{}}
+\valign{\baselineskip20ptplus1pt\global\parfillskip0pt
+ \global\global\leftskip4pt
+ \rightskip-1pt
+ \global\hsize13pt
+ \setbox2\12
+ \noindent\copy2\hskip2pt plus5pt minus1pt
+ \copy2\hskip5pt minus2pt
+ \lower2pt\11\hskip3pt % this affects depth of the second line
+ \copy2 \hskip2pt plus.5pc
+ \box2#\cr
+ \noalign{\spacefactor=2000\global\xspaceskip=-1pt}
+ \noalign{ \vrule width0pt{ }}
+ \cr % set that paragraph with a=782, l=1 (demerits 2704 vs 2705)
+ \adjdemerits=784 \cr % increase a, so the second alternative is better
+ \linepenalty=2\hbadness=51\cr % increase l by 1, suppress diagnostic typeout
+ \noalign{ \spacefactor=1}}\message{\the\spacefactor}
+{\hsize1000pt\par\parindent1pt\indent}\leftskip3pt\def\?{\vrule width-2pt
+ \hbox spread2pt{}}\noindent\indent\hbox spread2pt{\hskip0pt plus-1bp}%
+\discretionary{\?AAAB}{\?B-}{\?/A\kern2pt}\unkern % the widths are 7pt, 4pt, 6pt
+\showthe\lastkern\vbox{\hrule width 6pt} \par % should set with nothing overfull
+\penalty-22222 % end of demerits test, hyphenation is next
+\looseness-10
+\uchyph=1
+\hsize 100pt
+A /A\char`A BBBBCACAC//% that becomes /k[AA]k[BB]k[BB][CA][CA][C/]/,
+ % where [] means a ligature and k means a kern.
+ % the word "aabbbbcaca" should be hyphenated to "aa1b3b2b2b1c1aca",
+ % which becomes {[AA]k-||[AA]k}{B-|[BB]kBk|[BB][BB]}{-||}{C-|A|[CA]}[CA]
+ % if I use the notation {x|y|z} for \discretionary{x}{y}{z}.
+\vadjust{\uchyph=0\ BBBBBB}% underfull box will show no hyphens
+\vadjust{\ \closeout1BBBBBB}{\hyphenchar\trip`C}% this time we get hyphens
+\hyphenation{BbB-BbB}\vadjust{\ BBBBBB\kern0ptB}% different hyphens
+\hyphenchar\rip`-\vadjust{\def\B{B}\ \pretolerance10000 B\B BBBB} % no hyphens
+
+\hbox{\sfcode`B=1234AB aB }\noindent \scriptscriptfont3 \smalltrip
+$$\eqno^{}$\scriptfont3=\rip\fontdimen2\smalltrip=0pt
+{\rightskip0pt plus 104pt minus 100fil
+ \looseness 5 \spaceskip 4pt plus 2pt minus 1fil
+ A\spacefactor32767\discretionary{}{\kern2pt-}{B\kern2pt} C$ \scriptfont2=\trip
+ \mathsurround143pt$ C $\mathsurround40pt$$\mathsurround60pt\hbox{$$}$\par}
+\uccode`m=`A\font\mumble=mumble\input tripos % "AAAAAAAAAA"+errors
+\par\penalty-33333 % end hyphenation, math is next
+{\catcode`?=13 \font?xyzzy at0pt\font ? xyzzy scaled1?} % nonexistent
+\font\enorm=trip at 2047.999992370605468749999 pt
+\font\ip trip at -10pt % through the looking glass
+\showthe$
+\showthe\font
+\message{\fontname\ip}
+\rip
+\textfont1=\font \scriptfont1=\smalltrip \scriptscriptfont1=\bigtr^^@p % [sick]
+\def\symbolpar #1*#2*#3*{\global\fontdimen#1\smalltrip = #3 pt}
+{\tracingmacros-1
+ \symbolpar8 num1 9.1
+ \symbolpar9 num2 9.2
+ \symbolpar10 num3 9.3
+ \symbolpar11 denom1 3.1
+ \symbolpar12 denom2 3.2
+ \symbolpar13 sup1 8.1
+ \symbolpar"E sup2 8.2
+ \symbolpar15 sup3 8.3
+ \symbolpar16 sub1 4.1
+ \symbolpar17 sub2 4.2
+ \symbolpar18 supdrop 0.3
+ \symbolpar19 subdrop 0.4
+ \symbolpar20 delim1 10
+ \symbolpar21 delim2 20
+ }
+\mathcode`+='20457 % mathbin, family 1, character '57 (/)
+\mathcode`=="322D % mathrel, family 2, character "2D (-)
+\delcode`["161361 % small (family 1, character "61 (a)), large (3,"61)
+\catcode`(=13 \catcode`(=13 \mathcode`y"7320\mathcode`z"8000
+\def({\delimiter"4162362 }{\catcode`z=13\global\let z=(}
+\parshape 10 \a \chardef\x200
+\hangindent- \parshape pt\hangafter-12% \parshape will take precedence
+\begingroup
+\looseness 2
+\rightskip 0pt plus 10fil minus 1sp
+\--\--\char-0-A\- % this makes lines 1 to 3
+$$\number\the\delcode`\relax\over{{{}}}}\pagestretch=-1\pagetotal\showlists
+\begingroup\halign to\the\displaywidth{#&#\crcr\crcr\cr} % makes lines 4--6
+\global\count6=\displayindent
+\predisplaypenalty=101
+\global\postdisplaypenalty-\predisplaysize* \global\setbox=
+\eqno % another error (actually causes two error messages and inserts $$)
+\looseness-2
+$\right\relax\mathchardef\minus="322D % locally \minus is the same as =
+\left.A\over A\abovewithdelims.?\right(+\mskip1A\minus=A+\penalty+1000A
+\relpenalty-2222
+\binoppenalty-3333
+\mathsurround.11em$\x % this formula goes on line 7
+$$ % here we begin a hairy display that covers lines 8 to 10
+\vadjust{\penalty7}\mkern-9mu\the\prevgraf \prevgraf=8 \insert255{\penalty999}
+\x\vcenter spread-2pt{} {\mathaccent"32D {A}}|-
+^{\raise 2pt\hbox{a}\displaystyle\char`+\textstyle}
+\overline{^A A|\minus\mathinner{}^
+ {A \mathchar"141 \char`B^^A{\mathaccent"7161
+ {\mathop A \mathbin A \mathopen A \mathpunct A\mathclose A \mathrel A
+ \global\scriptscriptfont0=\trip
+ \mathaccent"161 {\fam13A9\the\scriptscriptfont-1}}}}}
+\mathop\char`B^\mathchar"143
+\mathop b\nolimits\limits|C
+\mathord \radical"161 % missing { will be inserted
+ {\textstyle\radical"282382{\left(\scriptscriptstyle\mathop{\underline{
+ A\atop\displaystyle A|{A\hfil\over B\nonscript\kern1pt}^=}}
+ \nolimits|{\mathop y\nonscript\textstyle\nonscript\mskip9mu minus1fil
+ \showthe\lastskip B\abovewithdelims(.2pt\displaylimits}^z
+ \discretionary{\showthe\spacefactor-}{\smalltrip A\hss}{\smalltrip A}
+ \right[A}}}
+\let\penalty=\minus \aftergroup\expandafter
+\eqno\aftergroup\relax\scriptstyle\penalty % reader, be alert
+(\mathpunct{AA}
+|{B\fam1-}^{\hbox{A}}{\above9pt{v\overwithdelims..
+ \displaystyle{pq\atopwithdelims((\vrule height 9pt}}
+ \show\penalty \showlonglists
+ $\expandafter$\csname!\endcsname % end of hairy display, missing } inserted
+\parshape=-1 % now the hanging indentation is relevant
+\leftskip \parshape pt plus -10fil
+\spacefactor1\raise1pt\hbox{\special{\the\hangafter} } \penalty-10000
+\showbox0\spacefactor=0
+\write10{\the\spacefactor}\par % it's illegal to \write the space factor
+} % this fails to match \begingroup
+\aftergroup\lccode\aftergroup`\endgroup A`a % this restores \parshape
+\mark{\the\spacefactor} % \spacefactor: not in vertical mode
+$$\global\count7=\predisplaysize
+\mskip18mu minus 18mu \catcode`J=13 \catcode`j=\the\catcode`J \def j{\relax}
+\vtop to\displaywidth{\everydisplay{\global}\vbox to -1sp{}\noindent$$
+ \count9=\predisplaysize\lowercase{AaJ}$\ifvmode$\fi}\hss
+\leqno\mathchardef A\/\left(\over\left(\global\errorcontextlines5$$
+
+\hangindent1pt\par\showthe\hangindent\hangindent 254cm
+\parfillskip 0pt plus 100pt \fontdimen6\the\scriptfont2=-19sp
+\the\fam % begins a paragraph, but there's no 0 in the font
+A \char'202$$\global\count8=\predisplaysize\leqno\kern1009pt$\par
+\showlists {\catcode`!13\global\everyhbox{\def!{}}}
+\count5=\lastskip % \lastskip=3pt (\belowdisplayskip)
+\baselineskip 10pt
+{\sfcode`A=500\vfuzz18pt\everyvbox{ }% overfull \vbox won't be shown: 37-8=11+18
+ \vbox to 11pt{\hsize 10pt\tolerance 1 A A A A A\clubpenalty10000\par
+ \hbadness100\hfuzz 3pt A A A A A\leaders\vrule\hskip5pt\par}
+ \message{\the\badness}}
+\vbox to 10pt{\hbadness 99\hfuzz1pt\hbox to 0pt{\hskip 10pt minus 9pt}
+ \hbadness100\hbox to 10bp{\hskip 0pt plus 10pt}\tracingcommands1
+ \if\the\badness\fi\message{\the\badness}}\lineskiplimit-1pt\everyhbox{}
+\def\space{ } \dimendef\df=188 \dimen188=1pt
+\vbox to 11pt{\tracinglostchars-9 A\/\space\space\ignorespaces\space\space J
+ \vskip2pt\moveleft1pt\vbox to10pt{\boxmaxdepth=-1pt\mark{vii}}\vskip3pt
+ \unskip\setbox22=\lastbox\showthe\lastskip % \lastskip=-1pt (\baselineskip)
+ \unskip\vskip-\lastskip\kern\lastkern\penalty\lastkern\showbox22}
+\showbox22\kern3pt\message{\the\lastkern}\unkern
+\show\botmark \catcode`;13\def;{\setbox`; }
+\lineskiplimit-0.9999 \space\df\space\count9 0
+\vbox\space to 11pt{\accent\x\space\accent\space"42 \def\^^M{\ } ; \char'101
+ A\ \fontdimen 4 \trip = 88 pt\ \spaceskip 2 pt \
+ \vskip 10pt minus 10pt}
+\penalty-2147483647 % that's the largest value TeX will scan
+\penalty-2147483648 % see?
+\tabskip 1009.9sp minus .25cc % and now for alignment tests
+\let\A=\relax\count1=2{\errhelp{all is lost}\errmessage{}}
+\def\d#1\d{#1#1} \looseness-1
+\setbox3=\vtop{\vskip-3mm} % this box has a depth of -3mm
+\halign spread-12.truedd{&#\span\iftrue\A\span\else\span\fi\span&
+ \vbox{\halign to 0pt{\t2\dp3\A\crcr}#A}
+ &\hss\tabskip1ex plus7200bp minus 4\wd4\d#\d\cr % \d#\d becomes (erroneous) ##
+ \global\let\t=\tabskip \spaceskip=4pt minus 1sp
+ \def\A{B}\def\xx{\global\gdef\A{\global\count\count1=####\cr
+ \omit\cr\tabskip}}\expandafter\xx\span % please don't ask what this does
+ A&\omit\valign to -5pt{#&#\cr A\char`}\span\cr{ }\span\cr}\cr
+ \global\edef\A{\uppercase{
+ \message{\fontname\smalltrip\the\font\romannumeral1009}\lowercase{vq}} }
+ \lccode`Q=`b \span\omit$$\span\A&\show\cr\omit\cr
+ \noalign{\global\prevdepth20pt\errmessage{\count2=\the\count2}}
+ \omit\mark{a}&\omit\mark{b}\cr} % \count2 was set to -6mm=-1118806sp
+\errmessage{\prevdepth=\the\prevdepth}
+\penalty-88888 % end alignment test, now miscellaneous error messages
+\newlinechar`Y\global\unskip\show^^Y\newlinechar\lastpenalty\unpenalty\unkern
+\lastbox\penalty5\message{\the\lastpenalty\the\newlinechar}\textfont16=\relax
+\outer\def{}?
+\dimen5=-'7777777777sp\showthe\dimen5 % this should be OK
+\dimen6=-'40000pt\showthe\dimen6 % this should overflow
+\dimen7=.51\dimen5\showthe\dimen7 \multiply\dimen7 2\showthe\dimen7
+\a^^@^^@a@ % an undefined control sequence followed by invalid character
+{\aftergroup\gobble\aftergroup\c\gdef\b{\c} \def\c{} \b} % \c undefined
+\def\b#1\par{}
+\outer\gdef\a^^@^^@a#1\par#2{}\tokens{\a^^@^^@a\par!
+\long\gdef\l#1{}
+\outer\global\long\edef\lo#1#2U3#4#5#6#7#8#8#9#{\relax}
+\ifcase 1 \undefined\or\l\par\b{\par % occurrence of \par aborts \b
+\b{\l\undefined}\par\else\b{\par}\fi % but not there!
+\ifcase\iftrue-1a\else\fi \ifcase0\fi\else\ifcase5\fi\fi
+\catcode`^^C = 6 % another parameter symbol
+\let\^^C=\halign
+\def\^^@^^C{}
+\^^C{{\span\ifcase3 \lo#\cr............89{}\cr} % runaway preamble?
+\def\a^^C1{\d#1\d\l{#2}\l#1\par\a^^@^^@a#1\par# % runaway in definition; #2 bad
+\xdef\a^^C1{\d#1\d\l{#2}\l#1\par\a^^@^^@a#1\par# % runaway in definition; #2 OK!
+\T^^?a^^@^^@a\par{\lo\par % runaway in use
+\lo\par\par\par P \par\par\par\par\par\par89{} \muskip3=-\thickmuskip
+\muskipdef\shmip=3 \shmip=5mu plus \muskip3minus.5\shmip \showthe\shmip
+{\advance\shmip by \shkip\endlinechar-1
+\divide\shmip by \shkip\endlinechar`}
+\global\multiply\shmip by 2
+\showthe\shmip
+\div^^)de\count88
+By ^^p \toks1={\a\test}
+^\leaders\vrule\mskip\shmip M\leaders\hrule\nonscript\hskip\thinmuskip
+
+{\setbox3\hbox{\vfill\vsplit 3 0pt}
+\def\a#2{}
+\show A
+\show\a^^@^^@a
+\show (
+\message{\meaning\lo\noexpand\lo}
+\show\^^C
+\show\batchmode
+\show\error
+\showthe\output
+\showthe\thinmuskip
+\showthe\fontdimen1\enorm
+\ifx T\span\else\par\if\span\else\else\else\fi\fi
+\ifdim72p\iftrue t1i\fi n\fi\fi \message{\jobname\ifx\lo\lo OK}\fi
+\hangindent 2pt
+{\if 11 \prevgraf=-1\if 0123\error\else\relax\fi\else\error\fi
+ \prevgraf1\global\hangafter=2}\showthe\hangafter\showthe\prevgraf
+\char'203\showthe\prevgraf$\indent\mark{twain}
+\setbox3\hbox{\vrule}&\moveleft\lastbox % can't do that in math mode
+\unhbox234\unhcopy3\accent\x\vfill\vfil\vfilneg\vss % \vfill exits, \vss bad
+\def\a}{\let\a\xyzzy\csname a\endcsname}
+\def\a{ab
+
+ \c}\def\b{ab*\par\c}\let\c\b \def\b{\a\c} \ifx\a\ifx \.
+\else\expandafter\ifx\b \ifinner\error\else\relax\fi\else\error\fi\fi
+\ifvmode$\ifmmode\hbox tt\ifhmode\hfilneg\else\error\fi}$\fi\fi % missing {
+\noalign\omit\endcsname % these are extra
+\fontdimen 1000=20\varunit\showthe\fontdimen1000\trip\let\PAR=\par
+\gdef\par{\relax\PAR}\expandafter\ifx\csname xyzzy\endcsname\relax \mag=1999
+
+\fi\noindent{\halign to 1truemm\expandafter{\csname#\endcsname#&#&\l{#}\cr
+ \global\futurelet\endt\foo&\show\endt&$&&&.}
+
+\hbox{\/\hrule\textfont3=\enorm\prevdepth\advance\xspaceskip by-\xspaceskip
+ \spacefactor2000{ }\everymath{\radical"3}\fontdimen2\rip=0pt
+ $62{}\delimiterfactor1600\left(Aa\right\delimiter"300$AA\/}
+\openin 15 tripos\closein 15\iftrue{\ifeof 15\openin 100 tripos
+ \def\loop{\ifeof 0\let\loop=\relax\else{\global\read0to \a}\show\a\fi\loop}
+ \catcode`015\catcode`[1\outer\def\uppercase{}\loop}\else\fi
+}\def\test#1{\let\test= }\test. \show\test
+\def\a#1{\ifcat#1 \message\ifx#1 {\iffalse\fi\the\tokens\fi\fi}}
+\pretolerance-1\tokens\toks1\unhbox16\par\everycr{\noalign{\penalty97}}
+\the\tokens\ifcase1\or\ifeof\fi\def\stopinput{\error\let\input\die}
+\let\lb={\let\rb=}\halign\relax{\span\iffalse}\fi\cr#&\ifnum0=`{\fi\cr\cr}
+\let\e\expandafter\def\trap#1{}\def\unbalanced{\halign\lb}\unbalanced#\cr
+ \relax\e\e\e\err\e\e\e\endt\e\trap\cr\noexpand\cr}
+
+\expandafter\stopinput\input tripos\endinput\input % one line of tripos
+\setbox10=\vbox to8192pt{\hbox{\hbox{\vadjust{A}}}}\vrule\unhbox10\hrule
+\output{\showthe\deadcycles\global\advance\countz by1\global\globaldefs-1
+ \gdef\local{}\unvbox255\end\rb}\futurelet\dump\maxdeadcycles=3\show\dump
+\catcode`q=7 \catcode`\qqM=0 \expandafter\let\csname^^Mendcsname=\^^@\relax
+\relax\catcode`\qq1qM=13 \defqqM{\relax}#\begingroup{\showboxdepth=4\showbox10}
+
+\long\def\l#1\l{#1}\immediate\write10{\string\caution \l} % living dangerously
+\escapechar`|\tracingoutput0\shipout\vbox{\copy10qq5e^5cbox10}
+\setbox9\hbox{\fontdimen8\rip 0pt % \over becomes \atop in \scriptstyle
+ \afterassignment\relax\advance\prevdepth\afterassignment\relax\futurelet\x
+ \message{\noexpand\l\meaning\l\the\skewchar\ip}\vbox{\hyphenchar\ip-1%
+ \-\ BBBBBB\par\hyphenchar\ip`?\-\ BBBBBB}\if$\expandafter\noexpand\dol\fi%
+ \expandafter\expandafter\noexpand\undefined\noexpand\expandafter%
+ $\begingroup\mathop{\vbox{\vss}}\limits^\mathchoice{}a}{A|{}}{\mathchoice}
+ {}{\relax{}{B\over}\endgroup\showlonglists$}\showboxbreadth9\showboxdepth9
+\showbox9\PAR{\output{}\penalty-10001\deadcycles=2}\scrollmode%
+\hbox{\write-100000{\if01{\else unbal}\fi}\showlists\tracingonline1%
+\escapechar127\global\tracingoutput1\global\escapechar256\end
+% things not tested:
+% interaction (error insertion/deletion, interrupts, \pausing, files not there)
+% system-dependent parsing of file names, areas, extensions
+% certain error messages, especially fatal ones
+% things that can't happen in INITEX
+% unusual cases of fixed-point arithmetic
diff --git a/Master/texmf-doc/doc/english/knuth/tripman.tex b/Master/texmf-doc/doc/english/knuth/tripman.tex
new file mode 100644
index 00000000000..7634c8c9e78
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/tripman.tex
@@ -0,0 +1,413 @@
+% The TRIP manual: How to validate TeX --- last updated by D E Knuth on 4 Dec 89
+\font\eighttt= cmtt8
+\font\eightrm= cmr8
+\font\titlefont= cmr7 scaled\magstep5
+\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
+
+\def\verbatim#1{\begingroup \frenchspacing
+ \def\do##1{\catcode`##1=12 } \dospecials
+ \parskip 0pt \parindent 0pt
+ \catcode`\ =\active \catcode`\^^M=\active
+ \tt \def\par{\ \endgraf} \obeylines \obeyspaces
+ \input #1 \endgroup}
+% a blank line will be typeset at the end of the file;
+% if you're unlucky it will appear on a page by itself!
+{\obeyspaces\global\let =\ }
+
+\output{\shipout\box255\global\advance\pageno by 1} % for the title page only
+\null
+\vfill
+\centerline{\titlefont A torture test for \TeX}
+\vskip 18pt
+\centerline{by Donald E. Knuth}
+\centerline{Stanford University}
+\vskip 6pt
+\centerline{({\sl Version 3, January 1990\/})}
+\vfill
+\centerline{\vbox{\hsize 4in
+\noindent Programs that claim to be implementations of \TeX82 are
+supposed to be able to process the test routine contained in this
+report, producing the outputs contained in this report.}}
+\vskip 24pt
+{\baselineskip 9pt
+\eightrm\noindent
+The preparation of this report was supported in part by the National Science
+Foundation under grants IST-8201926 and MCS-8300984,
+and by the System Development Foundation.
+`\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.
+People often think that their programs are ``debugged'' when large applications
+have been run successfully. But system programmers know that a typical large
+application tends to use at most about 50 per cent of the instructions
+in a typical compiler. Although the other half of the code---which tends
+to be the ``harder half''---might be riddled with errors, the system seems
+to be working quite impressively until an unusual case shows up on the
+next day. And on the following day another error manifests itself, and so on;
+months or years go by before certain parts of the compiler are even
+activated, much less tested in combination with other portions of the system,
+if user applications provide the only tests.
+
+How then shall we go about testing a compiler? Ideally we would like to
+have a formal proof of correctness, certified by a computer.
+This would give us a lot of confidence,
+although of course the formal verification program might itself be incorrect.
+A more serious drawback of automatic verification is that the formal
+specifications of the compiler are likely to be wrong, since they aren't
+much easier to write than the compiler itself. Alternatively, we can
+substitute an informal proof of correctness: The programmer writes his or
+her code in a structured manner and checks that appropriate relations
+remain invariant, etc. This helps greatly to reduce errors, but it cannot
+be expected to remove them completely; the task of checking a large
+system is sufficiently formidable that human beings cannot do it without
+making at least a few slips here and there.
+
+Thus, we have seen that test programs are unsatisfactory if they are simply
+large user applications; yet some sort of test program is needed because
+proofs of correctness aren't adequate either. People have proposed schemes
+for constructing test data automatically from a program text, but such
+approaches run the risk of circularity, since they cannot assume that a
+given program has the right structure.
+
+I have been having good luck with a somewhat different approach,
+first used in 1960 to debug an {\mc ALGOL} compiler. The idea is to
+construct a test file that is about as different from a typical user
+application as could be imagined. Instead of testing things that people
+normally want to do, the file tests complicated things that people would
+never dare to think of, and it embeds these complexities in still
+more arcane constructions. Instead of trying to make the compiler do the
+right thing, the goal is to make it fail (until the bugs have all been found).
+
+To write such a fiendish test routine, one simply gets into a nasty frame
+of mind and tries to do everything in the unexpected way. Parameters
+that are normally positive are set negative or zero; borderline cases
+are pushed to the limit; deliberate errors are made in hopes that the
+compiler will not be able to recover properly from them.
+
+A user's application tends to exercise 50\%\ of a compiler's logic,
+but my first fiendish tests tend to improve this to about 90\%. As the
+next step I generally make use of frequency-counting software to identify
+the instructions that have still not been called upon. Then I add ever more
+fiendishness to the test routine, until more than 99\%\ of the code
+has been used at least once. (The remaining bits are things that
+can occur only if the source program is really huge, or if certain
+fatal errors are detected; or they are cases so similar to other well-tested
+things that there can be little doubt of their validity.)
+
+Of course, this is not guaranteed to work. But my experience in 1960 was
+that only two bugs were ever found in that {\mc ALGOL} compiler after it
+correctly translated that original fiendish test. And one of those bugs
+was actually present in the results of the test; I simply had failed to
+notice that the output was incorrect. Similar experiences occurred later
+during the 60s and 70s, with respect to a few assemblers, compilers,
+and simulators that I wrote.
+
+This method of debugging, combined with the methodology of structured
+programming and informal proofs (otherwise known as careful desk checking),
+leads to greater reliability of production software than any other
+method I know. Therefore I have used it in developing \TeX82, and the
+main bulk of this report is simply a presentation of the test program
+that was used to get the bugs out of \TeX.
+
+Such a test file is useful also after a program has been debugged, since
+it can be used to give some assurance that subsequent modifications don't
+mess things up.
+
+The test file is called \.{TRIP.TEX}, because of my warped sense of humor:
+\TeX\ is pronounced ``techhh'', so the name reminded me of a
+triptych (and besides, I wanted to take a trip through the program while
+tripping it up, etc.).
+
+The contents of this test file are so remote from what people actually
+do with \TeX, I feel apologetic if I have to explain the correct
+translation of \.{TRIP.TEX}; nobody really cares about most of the
+nitty-gritty rules that are involved. Yet I believe \.{TRIP} exemplifies
+the sort of test program that has outstanding diagnostic ability, as
+explained above.
+
+If somebody claims to have a correct implementation of \TeX, I will not
+believe it until I see that \.{TRIP.TEX} is translated properly.
+I 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 \.{TRIP.TEX}.
+
+\TeX\ is in the public domain, and its algorithms are published;
+I've done this since I do not want to discourage its use by placing
+proprietary restrictions on the software. However, I don't want
+faulty imitations to masquerade as \TeX\ processors, since users
+want \TeX\ to produce identical results on different machines.
+Hence I am planning to do whatever I can to suppress any systems that
+call themselves \TeX\ without meeting conditions (1) and~(2).
+I have copyrighted the programs so that I have some chance to forbid
+unauthorized copies; I explicitly authorize copying of correct
+\TeX\ implementations, and not of incorrect ones!
+
+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 a test of \TeX, given
+a tape that contains copies of the other appendices.
+
+Appendix B is \.{TRIP.TEX}, the fiendish test file that has already
+been mentioned. People who think that they understand \TeX\ are challenged
+to see if they know what \TeX\ is supposed to do with this file.
+People who know only a little about \TeX\ might still find it
+interesting to study Appendix~B, just to get some insights into the
+methodology advocated here.
+
+Appendix C is \.{TRIP.PL}, the property-list description of a
+special font called \.{trip}. This is the only font used by \.{TRIP.TEX}.
+There are no graphic characters associated with \.{trip} that could
+possibly be printed; indeed, \.{TRIP.PL} describes the properties of a font
+that is as weird as the ``document'' described by \.{TRIP.TEX}.
+
+Appendix D is \.{TRIPIN.LOG}, a correct transcript file \.{TRIP.LOG}
+that results if \.{INITEX} is applied to \.{TRIP.TEX}. (\.{INITEX} is
+the name of a version of \TeX\ that does certain initializations;
+this run of \.{INITEX} also creates a binary format file called \.{TRIP.FMT}.)
+
+Appendix E is a correct transcript file \.{TRIP.LOG} that results if
+\.{INITEX} or any other version of \TeX\ is applied to \.{TRIP.TEX}
+with format \.{TRIP.FMT}.
+
+Appendix F is \.{TRIP.TYP}, the symbolic version of a correct output
+file \.{TRIP.DVI} that was produced at the same time as the \.{TRIP.LOG}
+file of Appendix~E.
+
+Appendix G is \.{TRIPOS.TEX}, a short file written out and read in
+by \TeX\ when it processes \.{TRIP.TEX}.
+
+Appendix H is \.{TRIP.FOT}, an abbreviated version of Appendix E that
+appears on the user's terminal during the run that produces \.{TRIP.LOG}
+and \.{TRIP.DVI}.
+
+The debugging of \TeX\ and the testing of the adequacy of \.{TRIP.TEX}
+could not have been done nearly as well as reported here except for
+the magnificent software support provided by my colleague David R. Fuchs.
+In particular, he extended our local Pascal compiler so that
+frequency counting and a number of other important features were added
+to its online debugging abilities.
+
+The method of testing advocated here has one chief difficulty that deserves
+comment: I had to verify by hand that \TeX\ did the right things
+to \.{TRIP.TEX}. This took many hours, and perhaps I have missed
+something (as I did in 1960); I must confess that I have not checked
+every single number in Appendices E and~F. However, I'm willing to pay
+\$327.68 to the first finder of any remaining bug in \TeX, and I will
+be surprised if that bug doesn't show up also in Appendix~E. (I plan to
+write a technical report about all of the errors ultimately found in \TeX; that
+report will tell whether any bugs are discovered between now and~then!)
+
+\vfill\eject
+
+\section Appendix A: How to test \TeX.
+
+\item{0.} Let's assume that you have a tape containing \.{TRIP.TEX},
+\.{TRIP.PL}, \.{TRIPIN.LOG}, \.{TRIP.LOG}, \.{TRIP.TYP}, and \.{TRIP.FOT},
+as in Appendices B, C, D, E, F, and~G. Furthermore, let's suppose that you
+have a working \.{WEB} system, and that you have working programs \.{TFtoPL},
+\.{PLtoTF}, \.{DVItype}, as described in the \TeX ware report.
+
+\item{1.} Use \.{PLtoTF} to convert \.{TRIP.PL} into \.{TRIP.TFM}.
+Then use \.{TFtoPL} to convert \.{TRIP.TFM} into \.{TMP.PL}. Check that
+\.{TMP.PL} is identical to \.{TRIP.PL} (this is a partial test of \.{PLtoTF}
+and \.{TFtoPL}). Install \.{TRIP.TFM} in the standard file area for
+\TeX\ font metric files.
+
+\item{2.} Prepare a special version of \.{INITEX}. (This means that your \.{WEB}
+change file should have {\bf init} and {\bf tini} defined to be null.)
+The {\bf stat} and {\bf tats} macros should also be null, so that
+statistics are kept and other special features are enabled. Set
+\\{mem\_min} and \\{mem\_bot} equal to~1, and set \\{mem\_top} and
+\\{mem\_max} equal to~3000, for purposes of this test version. Also set
+$\\{error\_line}=64$, $\\{half\_error\_line}=32$, and
+$\\{max\_print\_line}=72$; these parameters affect many of the lines of
+the test output, so your job will be much easier if you use the same
+settings that were used to produce Appendix~E. You probably should also
+use the ``normal'' settings of other parameters found in \.{TEX.WEB}
+(e.g., $\\{stack\_size}=200$, $\\{font\_max}=75$, etc.), since these show
+up in a few lines of the test output. Your test version should not
+change the default definition of unprintable characters (\S49 of the program).
+
+\item{3.} Run the \.{INITEX} prepared in step 2. In response to the first
+`\.{**}' prompt, type carriage return (thus getting another `\.{**}').
+Then type `\.{\char`\\input trip}'. You should get an output that matches
+the file \.{TRIPIN.LOG} (Appendix~D). Don't be alarmed by the error
+messages that you see, unless they are different from those in Appendix~D.
+
+\def\sp{{\char'40}}
+\item{4.} Run \.{INITEX} again. This time type `\.{\sp\&trip\sp\sp trip\sp}'.
+(The spaces in this input help to check certain parts of \TeX\ that
+aren't otherwise used.) You should get outputs \.{TRIP.LOG}, \.{TRIP.DVI},
+and \.{TRIPOS.TEX}; there will also be an empty file \.{8TERMINAL.TEX}.
+Furthermore, your terminal should receive output that matches \.{TRIP.FOT}
+(Appendix~H). During the middle part of this test, however, the terminal
+will not be getting output, because \.{\char'134batchmode} is being
+tested; don't worry if nothing seems to be happening for a while---nothing
+is supposed to.
+
+\item{5.} Compare the \.{TRIP.LOG} file from step 4 with the ``master''
+\.{TRIP.LOG} file of step~0. (Let's hope you put that master file in a
+safe place so that it wouldn't be clobbered.) There should be perfect
+agreement between these files except in the following respects:
+
+\itemitem{a)} The dates and possibly the file names will
+naturally be different.
+
+\itemitem{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 \.{\char'134hbox} or \.{\char'134vbox} line;
+all other numbers should agree exactly, since they are computed with
+integer arithmetic in a prescribed system-independent manner.
+
+\itemitem{c)} The amount of space in kerns that are marked ``for accent''
+are, similarly, subject to system-dependent rounding.
+
+\itemitem{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.
+
+\itemitem{e)} Help messages may be different; indeed, the author encourages
+non-English help messages in versions of \TeX\ for people who don't
+understand English as well as some other language.
+
+\itemitem{f)} The total number and length of strings at the end may well
+be different.
+
+\itemitem{g)} If your \TeX\ uses a different memory allocation or
+packing scheme or \.{DVI} output logic, the memory usage statistics may change.
+
+\item{6.} Use \.{DVItype} to convert your file \.{TRIP.DVI} to a file
+\.{TRIP.TYP}. The following options should be set when using \.{DVItype}:
+$$\vbox{\halign{#\hfil&\hfil#\cr
+Output level = 2\cr
+Starting page = \.{*.*.*.*.*.*.*.*.*.*}\hskip-20pt\cr
+Number of pages = 1000000&(this is the default)\cr
+Resolution = 7227/100&(this is one point per pixel)\cr
+New magnification = 0&(this is the default)\cr}}$$
+The resulting file should agree with the master \.{TRIP.TYP} file of step~0,
+except that some of the values might be a little off due to floating-point
+rounding discrepancies. Furthermore there may be differences between
+`\\{right}' and `\\w' and `\\x' commands, and between `\\{down}' and `\\y'
+and `\\z'; the key thing is that all characters and rules and \\{xxx}'s should
+be in almost the same positions as specified in Appendix~F.
+(If your \.{DVI}-writing routines differ substantially from those in
+\.{TEX.WEB}, you may want to write a \.{DVIcompare} program that
+detects any substantive differences between two given \.{DVI} files. Such
+a routine would be of general use besides.
+On the other hand, if you have set \\{dvi\_buf\_size} to 800, then your
+\.{DVI} file should be virtually identical to the one supplied.)
+
+\item{7.} You might also wish to test \.{TRIP} with other versions of
+\TeX\ (i.e., \.{VIRTEX} or a production version with other fonts and
+macros preloaded). It should work unless \TeX's primitives have been
+redefined. However, this step isn't essential, since all the code of
+\.{VIRTEX} appears in \.{INITEX}; you probably won't catch any more errors
+this way, unless they would already become obvious from normal use of
+the~system.
+
+\vfill\eject
+
+\section Appendix B: The \.{TRIP.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.
+\runninghead{APPENDIX B: \.{TRIP.TEX} (CONTINUED)}
+
+\vskip 8pt
+\begingroup\count255=0
+\everypar{\global\advance\count255 by 1
+ \hbox to 20pt{\sevenrm\hfil\the\count255\ \ }}
+\verbatim{trip.tex}
+\endgroup
+\vfill\eject
+
+\section Appendix C: The \.{TRIP.PL} file.
+The ``font'' defined here has only a few characters, but they include all
+the complexities that \TeX\ must deal with: ligatures, kerns,
+lists of characters, and extensible characters. Some of the dimensions
+are negative, just to make things worse yet. (The format of property-list
+files like this is explained in the documentation to \.{PLtoTF}, in
+the \TeX ware report.)
+\runninghead{APPENDIX C: \.{TRIP.PL} (CONTINUED)}
+
+\vskip8pt
+\verbatim{trip.pl}
+\vfill\eject
+
+\section Appendix D: The \.{TRIPIN.LOG} file.
+When \.{INITEX} makes the \.{TRIP.FMT} file, it also creates a file called
+\.{TRIP.LOG} that looks like this.
+\runninghead{APPENDIX D: \.{TRIPIN.LOG} (CONTINUED)}
+
+\vskip8pt
+\verbatim{tripin.log}
+\vfill\eject
+
+\section Appendix E: The \.{TRIP.LOG} file.
+Here is the major output of the \.{TRIP} test; it is generated by running
+\.{INITEX} and loading \.{TRIP.FMT}, then reading \.{TRIP.TEX}.
+\runninghead{APPENDIX E: \.{TRIP.LOG} (CONTINUED)}
+
+{\let\tt=\eighttt\leftskip 1in\baselineskip 9pt plus .1pt minus .1pt
+\vskip8pt
+\verbatim{trip.log}
+}
+\vfill\eject
+
+\section Appendix F: The \.{TRIP.TYP} file.
+Here is another major component of the test. It shows the output of \.{DVItype}
+applied to the file \.{TRIP.DVI} that was created at the same time
+Appendix E was produced.
+\runninghead{APPENDIX F: \.{TRIP.TYP} (CONTINUED)}
+
+{\let\tt=\eighttt\leftskip 1in\baselineskip 9pt plus .1pt minus .1pt
+\vskip8pt
+\verbatim{trip.typ}
+}
+\vfill\eject
+
+\section Appendix G: The \.{TRIPOS.TEX} file.
+This short file was written out once and read in twice, during the time
+Appendix E was being produced. There are only three lines, the first of
+which is blank.
+\runninghead{APPENDIX G: \.{TRIPOS.TEX} (CONTINUED)}
+
+\vskip8pt
+\verbatim{tripos.tex}
+\vfill\eject
+
+\section Appendix H: The \.{TRIP.FOT} file.
+This shows what appeared on the terminal while Appendix E was being produced.
+\runninghead{APPENDIX H: \.{TRIP.FOT} (CONTINUED)}
+
+\vskip8pt
+\verbatim{trip.fot}
+
+\vfill\end
diff --git a/Master/texmf-doc/doc/english/knuth/web.tex b/Master/texmf-doc/doc/english/knuth/web.tex
new file mode 100644
index 00000000000..1920be4042b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/web.tex
@@ -0,0 +1,1477 @@
+% Page layout
+\input webmac
+\output{\setbox0=\box255}\eject % get rid of spurious WEBMAC page
+
+\font\man=manfnt scaled \magstep3 %manfnt
+\font\CompJtitle=cmbx10 scaled\magstep4 %ambx10
+\font\CompJabstract=cmb10 %amb10
+\font\tenssb=cmssdc10 %amssmc10
+\font\tenss=cmss10 %amss10
+\font\tenssi=cmssi10 %amssi10
+\font\eightss=cmss8 %helvetica at 8truebp
+\font\eightssi=cmssi8 %helveticai at 8truebp
+\font\eightssb=cmssq8 %helveticab at 8truebp
+\font\eighttt=cmtt8 %amtt8
+\font\ninerm=cmr9 %amr9
+\let\mc=\ninerm % medium caps for names like PASCAL
+
+\newdimen\pagewidth \newdimen\pageheight \newdimen\ruleht
+\hsize=177mm \vsize=249mm
+\parindent=1em % this is needed for WEB output
+\pagewidth=\hsize \pageheight=\vsize \ruleht=1pt
+\abovedisplayskip=11pt plus 3pt minus 8pt
+\abovedisplayshortskip=0pt plus 3pt
+\belowdisplayskip=11pt plus 3pt minus 8pt
+\belowdisplayshortskip=6pt plus 3pt minus 3pt
+
+\newif\iftitle
+\def\titlepage{\global\titletrue} % for pages without headlines
+
+\def\leftheadline{\hbox to \pagewidth{%
+ \vbox to 8pt{}\hss \eightrm D. E. KNUTH\hss}}
+\def\rightheadline{\hbox to \pagewidth{%
+ \vbox to 8pt{}\hss \eightrm LITERATE PROGRAMMING\hss}}
+\hoffset=-.25in \voffset=-.6in
+
+\newinsert\lefttop \newinsert\righttop
+\count\lefttop=1000 \count\righttop=1000
+\dimen\lefttop=\maxdimen \dimen\righttop=\maxdimen
+\skip\lefttop=25pt plus 3pt minus 3pt
+\skip\righttop=\skip\lefttop
+\def\leftfloat{\insert\lefttop\bgroup
+ \floatingpenalty=0
+ \penalty0
+ \vbox\bgroup}
+\def\rightfloat{\insert\righttop\bgroup
+ \floatingpenalty=0
+ \penalty0
+ \vbox\bgroup}
+\def\endfloat{\egroup\egroup}
+
+\def\onepageout#1{\shipout\vbox{ % here we define one page of output
+ \offinterlineskip % butt the boxes together
+ \vbox to 9mm{ % this part goes on top of the regular pages
+ \iftitle % the next is used for title pages
+ \global\titlefalse % reset the titlepage switch
+ \hbox to\pagewidth{\leaders\CJrule\hfill}
+ \else\ifodd\pageno \rightheadline\else\leftheadline\fi\fi
+ \vfill} % this completes the \vbox to 9mm
+ \vbox to \pageheight{
+ #1 % now insert the main information
+ \boxmaxdepth=\maxdepth
+ } % this completes the \vbox to \pageheight
+ \baselineskip=7mm \lineskiplimit=0pt
+ \hbox to\pagewidth{%
+ \ifodd\pageno\hfil\tenss submitted to THE COMPUTER JOURNAL%
+ \tenssb\quad\folio
+ \else\tenssb\folio\quad
+ \tenss submitted to THE COMPUTER JOURNAL\hfil\fi}
+ }
+ \advancepageno}
+
+\output{\onepageout{\unvbox255}}
+
+\newbox\partialpage
+\def\begindoublecolumns{\begingroup
+ \output={\global\setbox\partialpage=\vbox{\unvbox255}}\eject
+ \output={\doublecolumnout} \hsize=84mm \vsize=510mm}
+\def\enddoublecolumns{\output={\balancecolumns}\eject
+ \endgroup \pagegoal=\vsize}
+
+\def\doublecolumnout{\dimen0=\pageheight
+ \advance\dimen0 by-\ht\partialpage \splittopskip=\topskip
+ \ifdim\ht\lefttop>0pt \setbox255=\vbox{\unvbox\lefttop
+ \setbox0=\lastbox\unvbox0\vskip\skip\lefttop\unvbox255}\fi
+ \setbox0=\vsplit255 to\dimen0
+ \ifdim\ht\righttop>0pt \setbox255=\vbox{\unvbox\righttop
+ \setbox0=\lastbox\unvbox0\vskip\skip\righttop\unvbox255}\fi
+ \setbox2=\vsplit255 to\dimen0
+ \onepageout\pagesofar
+ \unvbox255 \penalty\outputpenalty}
+\def\pagesofar{\unvbox\partialpage
+ \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}}
+\def\balancecolumns{\setbox0=\vbox{\unvbox255} \dimen0=\ht0
+ \advance\dimen0 by\topskip \advance\dimen0 by-\baselineskip
+ \divide\dimen0 by2 \splittopskip=\topskip
+ {\vbadness=10000 \loop \global\setbox3=\copy0
+ \global\setbox1=\vsplit3 to\dimen0
+ \ifdim\ht3>\dimen0 \global\advance\dimen0 by1pt \repeat}
+ \setbox0=\vbox to\dimen0{\unvbox1}
+ \setbox2=\vbox to\dimen0{\unvbox3}
+ \pagesofar}
+
+\def\CJrule{\hrule height\ruleht}
+\baselineskip=11pt
+\parskip=0pt plus 1pt
+\def\beginsection #1\par{\goodbreak\vskip9mm plus4mm minus 2mm
+ \vbox{\CJrule width \hsize \kern5pt}
+ \kern-3pt
+ \nointerlineskip
+ \leftline{\strut\bf#1}
+ \CJrule
+ \kern12pt\nobreak\noindent\ignorespaces}
+\def\caption #1. #2.{\leftline{\def\TeX{T\kern-.2em\lower.5ex\hbox{E}X}%
+ \tenssb Figure #1.\enspace\tenss#2.}}
+
+\def\WEB{{\tt WEB}}
+\def\PASCAL{{\mc PASCAL}}
+\def\sec{{\tensy x}}
+\def\<{$\langle\,$}
+\def\>{$\,\rangle$}
+\newbox\circlebox
+\setbox\circlebox=\hbox{\man Y}
+\def\encircle#1{\kern6pt\hbox to\wd\circlebox{\hss\tt#1\hss}\kern-\wd\circlebox
+ \raise10pt\copy\circlebox\kern6pt}
+
+\def\ttverbatim{\begingroup \tt \parindent=0pt \obeylines
+ \uncatcodespecials \catcode`/=0 \obeyspaces}
+\let\endverbatim=\endgroup
+{\obeyspaces\global\let =\ } % let active space = control space
+\def\uncatcodespecials{\def\do##1{\catcode`##1=12 }\dospecials}
+\def\cvdots{\kern3pt\qquad\smash\vdots}
+
+\newcount\refno \newif\ifshowit
+\def\ref{\showittrue\makeref}
+\def\silentref{\showitfalse\makeref}
+\def\references{} % this will grow until it holds all the references
+\def\makeref#1#2{\advance\refno by1 \edef#1{{\the\refno}}%
+ \toks0=\expandafter{\references}%
+ {\def\rm{\eightss}\def\sl{\eightssi}\def\bf{\eightssb}\def\tt{\eighttt}%
+ \def\TeX{T\kern-.2em\lower.5ex\hbox{E}\kern-.000em X}%
+ \xdef\references{\the\toks0 \noexpand\item{\the\refno.}#2\par}}%
+ \ifshowit\edef\next{\spacefactor=\the\spacefactor\space}%
+ $^{\the\refno}$\next\fi}
+\hyphenation{Dijk-stra}
+\hyphenchar\tentt=-1 % no hyphenation in the typewriter font
+
+\titlepage
+\leftline{\kern13mm\CompJtitle Literate Programming}
+\kern6mm
+\CJrule
+\kern4.5mm
+\leftline{\kern13mm\bf Donald E. Knuth}
+\kern2pt
+\leftline{\kern13mm\eightrm Computer Science Department, Stanford University,
+ Stanford, CA 94305, USA}
+\kern4mm
+\CJrule
+\kern6mm
+\leftline{\kern13mm\vbox{\hsize=151mm\CompJabstract\noindent
+The author and his associates have been experimenting for the past several
+years with a programming language and documentation system called \WEB.
+This paper presents \WEB\ by example, and discusses why the new
+system appears to be an improvement over previous ones.}}
+\bigskip\bigskip
+\begindoublecolumns
+
+\beginsection A. INTRODUCTION
+
+The past ten years have witnessed substantial improvements in programming
+methodology. This advance, carried out under the banner of ``structured
+programming,'' has led to programs that are more reliable and easier to
+comprehend; yet the results are not entirely satisfactory. My purpose
+in the present paper is to propose another motto that may be appropriate
+for the next decade, as we attempt to make further progress in the
+state of the art. I believe that the time is ripe for significantly
+better documentation of programs, and that we can best achieve this by
+considering programs to be {\it works of literature}. Hence, my title:
+``Literate Programming.''
+
+Let us change our traditional attitude to the construction of programs:
+Instead of imagining that our main task is to instruct a {\it computer\/}
+what to do, let us concentrate rather on explaining to {\it human beings\/}
+what we want a computer to do.
+
+The practitioner of literate programming can be regarded as an essayist, whose
+main concern is with exposition and excellence of style. Such an author,
+with thesaurus in hand, chooses the names of variables carefully and explains
+what each variable means. He or she strives for a program that is
+comprehensible because its concepts have been introduced in an order that
+is best for human understanding, using a mixture of formal and informal
+methods that re\"\i nforce each other.
+
+I dare to suggest that such advances in documentation are possible because
+of the experiences I've had during the past several years while working
+intensively on software development. By making use of several ideas that
+have existed for a long time, and by applying them systematically in a
+slightly new way, I've stumbled across a method of composing programs
+that excites me very much. In fact, my enthusiasm is so great that I must warn
+the reader to discount much of what I shall say as the ravings of a fanatic
+who thinks he has just seen a great light.
+
+Programming is a very personal activity, so I can't be certain that what has
+worked for me will work for everybody. Yet the impact of this new approach on
+my own style has been profound, and my excitement has continued unabated
+for more than two years. I~enjoy the new methodology so much that it is hard
+for me to refrain from going back to every program that I've ever written
+and recasting it in ``literate'' form. I~find myself unable to resist working
+on programming tasks that I would ordinarily have assigned to student
+research assistants; and why? Because it seems to me that at last I'm able
+to write programs as they should be written. My programs are not only
+explained better than ever before; they also are better programs,
+because the new methodology encourages me to do a better job. For these
+reasons I am compelled to write this paper, in hopes that my experiences
+will prove to be relevant to others.
+
+I must confess that there may also be a bit of malice in my choice of
+a title. During the 1970s I was coerced like everybody else into adopting
+the ideas of structured programming, because I couldn't bear to be found
+guilty of writing {\it unstructured\/} programs. Now I have a chance
+to get even. By coining the phrase ``literate programming,'' I am imposing
+a moral commitment on everyone who hears the term; surely nobody wants
+to admit writing an {\it il{}literate\/} program.
+
+\beginsection B. THE \WEB\ SYSTEM
+
+I hope, however, to demonstrate in this paper that the title is not merely
+wordplay. The ideas of literate programming have been embodied in a language
+and a suite of computer programs that have been developed at Stanford
+University during the past few years as part of my research on algorithms
+and on digital typography. This language and its associated programs
+have come to be known as the \WEB\ system. My goal in what follows is
+to describe the philosophy that underlies \WEB, to present examples
+of programs in the \WEB\ language, and to discuss what may be the future
+implications of this work.
+
+I chose the name \WEB\ partly because it was one of the few three-letter
+words of English that hadn't already been applied to computers. But as time
+went on, I've become extremely pleased with the name, because I~think
+that a complex piece of software is, indeed, best regarded as a {\it web\/}
+that has been delicately pieced together from simple materials. We
+understand a complicated system by understanding its simple parts, and by
+understanding the simple relations between those parts and their immediate
+neighbors. If we express a program as a web of ideas, we can emphasize
+its structural properties in a natural and satisfying way.
+
+\WEB\ itself is chiefly a combination of two other languages:
+(1)~a document formatting language and (2)~a programming language.
+My prototype \WEB\ system uses \TeX\ as the document formatting
+language and \PASCAL\ as the programming language, but the same
+principles would apply equally well if other languages were
+substituted. Instead of \TeX, one could use a language like Scribe
+or Troff; instead of \PASCAL, one could use {\mc ADA}, {\mc ALGOL},
+{\mc LISP}, {\mc COBOL}, {\mc FORTRAN}, {\mc APL}, {\mc C}, etc., or
+even assembly language. The main point is that \WEB\ is inherently
+bilingual, and that such a combination of languages proves to be much
+more powerful than either single language by itself. \WEB\ does not
+make the other languages obsolete; on the contrary, it enhances them.
+
+I naturally chose \TeX\ to be the document formatting language, in the
+first \WEB\ system, because \TeX\ is my own creation;\ref\TeXbook{D. E. Knuth,
+{\sl The \TeX book}. Addison-Wesley, Reading, Mass., U.S.A. (1983).}
+I wanted to acquire a lot of experience in harnessing \TeX\ to a variety
+of different tasks. I~chose \PASCAL\ as the programming language because
+it has received such widespread support from educational institutions all
+over the world; it is not my favorite language for system programming, but
+it has become a ``second language'' for so many programmers that it
+provides an exceptionally effective medium of communication. Furthermore
+\WEB\ itself has a macro-processing ability that makes \PASCAL's
+limitations largely irrelevant.
+
+Document formatting languages are newcomers to the computing scene, but
+their use is spreading rapidly. Therefore I'm confident that we will be
+able to expect each member of the next generation of programmers to be
+familiar with a document language as well as a programming language,
+as part of their basic education. Once a person knows both of the
+underlying languages, there's no trick at all to learning \WEB, because
+the \WEB\ user's manual is fewer than ten pages long.
+
+A \WEB\ user writes a program that serves
+as the source language for two different system routines. (See Figure~1.)
+One line of processing is called {\it weaving\/} the web; it produces
+a document that describes the program clearly and that facilitates program
+maintenance. The other line of processing is called {\it tangling\/} the
+web; it produces a machine-executable program. The program and its
+documentation are both generated from the same source, so they are
+consistent with each other.
+
+\bigskip
+\centerline{\vbox{
+ \halign{&\hss#\hss\cr
+ &&&\TeX\cr
+ \noalign{\vskip-4pt}
+ &&\encircle{TEX}&\enspace\rightarrowfill\enspace&\encircle{DVI}\cr
+ \multispan2\hfil\smash{\raise4pt\hbox{\tt WEAVE}\kern-1pt}$\nearrow$ \cr
+ \noalign{\vskip6pt}
+ \encircle{WEB}\cr
+ \noalign{\vskip6pt}
+ \multispan2\hfil\smash{\lower6pt\hbox{\tt TANGLE}\kern-1pt}$\searrow$ \cr
+ &&\encircle{PAS}&\enspace\rightarrowfill\enspace&\encircle{REL}\cr
+ \noalign{\vskip-2pt}
+ &&&\mc\ PASCAL\ \cr}
+ }}
+\nobreak\medskip
+\caption 1. Dual usage of a {\tt WEB} file.
+\bigbreak
+
+Let's look at this process in slightly more detail. Suppose you have
+written a \WEB\ program and put it into a computer text file called
+{\tt COB.WEB} (say). To generate hardcopy documentation for your program,
+you can run the {\tt WEAVE} processor; this is a system program that takes
+the file {\tt COB.WEB} as input and produces another file {\tt COB.TEX}
+as output. Then you run the \TeX\ processor, which takes {\tt COB.TEX}
+as input and produces {\tt COB.DVI} as output. The latter file,
+{\tt COB.DVI}, is a ``device-independent'' binary description of how
+to typeset the documentation, so you can get printed output by applying
+one more system routine to this file.
+
+You can also follow the other branch of Figure~1, by running the
+{\tt TANGLE} processor; this is a system program that takes the file
+{\tt COB.WEB} as input and produces a new file {\tt COB.PAS} as output.
+Then you run the \PASCAL\ compiler, which converts {\tt COB.PAS} to
+a binary file {\tt COB.REL} (say). Finally, you can run your program
+by loading and executing {\tt COB.REL}. The process of ``compile, load,
+and go'' has been slightly lengthened to ``tangle, compile, load, and go.''
+
+\beginsection C. A COMPLETE EXAMPLE
+
+Now it's time for me to stop presenting general platitudes and to move on
+to something tangible. Let us look at a real program that has been written
+in \WEB. The numbered paragraphs that follow are the actual output of a
+\WEB\ file that has been ``woven'' into a document; a computer has also
+generated the indexes that appear at the program's end. If my claims for
+the advantages of literate programming have any merit, you should be able
+to understand the following description more easily than you could
+have understood the same program when presented in a more conventional
+way. However, I am trying here to explain the format of \WEB\ documentation
+at the same time as I am discussing the details of a nontrivial algorithm,
+so the description below is slightly longer than it would be if it were
+written for people who already have been introduced to \WEB.
+
+\silentref\Dijk{O.-J.~Dahl, E.~W. Dijkstra, and C.~A.~R. Hoare,
+{\sl Structured Programming}. Academic Press, London and New York (1972).}
+\silentref\goto{D. E. Knuth, Structured programming with {\bf go to}
+statements. {\sl Computing Surveys\/ \bf6}, 261--301 (1974).}
+
+Here, then, is the computer-generated output:
+
+\bigskip
+\CJrule
+\medskip
+\begingroup
+\def\prune\input webmac{\input primes.contents}
+\def\Z#1#2#3{\line{\ignorespaces#1\ \dotfill\ {\tensy x}#2}}
+\def\M#1.{\MN#1.\iftrue\medbreak\startsection\ignorespaces}
+\def\firstmod{1}
+\def\N#1.#2.{\MN#1.\iftrue\nobreak
+ \ifx\modno\firstmod\medskip\else\bigskip\fi
+ \CJrule\medbreak\startsection
+ {\bf\ignorespaces#2.\quad}\ignorespaces}
+\def\inx{\par\medbreak
+ \def\:##1, {\par\hangindent2em\noindent##1:\kern1em}
+ \def\[##1]{$\underline{##1}$}
+ \rm \rightskip0pt plus2.5em \tolerance10000 \let\*=\lapstar
+ \hyphenpenalty10000 \parindent0pt}
+\def\fin{\par\bigskip\CJrule\medbreak
+ \parfillskip0pt plus1fil
+ \def\note##1##2.{\hfil\penalty-1\hfilneg\quad{\eightrm##1 ##2.}}
+ \def\U{\note{Used in}}
+ \def\:{\par\hangindent 2em}\let\*=*}
+\let\con=\par
+\parskip=0pt
+\expandafter\prune\input primes
+\endgroup
+
+\beginsection D. HOW THE EXAMPLE WAS SPECIFIED
+
+Everything reproduced above, from the table of contents preceding the
+program to the indexes of identifiers and section names at the end,
+was generated by applying the program {\tt WEAVE} to a source file
+{\tt PRIMES.WEB} written in the \WEB\ language. Let us now look at that
+file {\tt PRIMES.WEB}, in order to get an idea of what a \WEB\ user
+actually types.
+
+There's no need to show very much of {\tt PRIMES.WEB}, however, because
+that file is reflected quite faithfully by the formatted output. Figure~2
+contains enough of the \WEB\ source to indicate the general flavor;
+a reader who is familiar with the rudiments of \TeX\ will be able to
+reconstruct all of {\tt PRIMES.WEB} by looking only at the formatted
+output and Figure~2.
+
+\leftfloat
+\ttverbatim
+/hrule
+/medskip
+\font\ninerm=cmr9
+\let\mc=\ninerm % medium caps
+\def\WEB{{\tt WEB}}
+\def\PASCAL{{\mc PASCAL}}
+\def\[{\ifhmode\ \fi$[\mkern-2mu[$}
+\def\]{$]\mkern-2mu]$\ }
+/cvdots
+\hyphenation{Dijk-stra}
+/medskip
+@* Printing primes: An example of \WEB.
+The following program is essentially the same
+as Edsger Dijkstra's @^Dijkstra, Edsger@>
+``first example of step-wise program
+composition,'' found on pages 26--39
+of his {\sl Notes on Structured
+Programming},$^\Dijk$ but it has been
+translated into the \WEB\ language. @.WEB@>
+/medskip
+\[Double brackets will be used in what
+follows to enclose comments relating to \WEB\
+/cvdots
+an informal top-level description.\]
+/medskip
+@p @<Program to print the first thousand
+prime numbers@>
+/endverbatim
+\medskip
+\caption 2a. The beginning of {\tt PRIMES.WEB}.
+\medskip
+\hrule
+\endfloat
+
+Figure 2a starts with \TeX\ commands (not shown in full) that make it
+convenient to typeset double brackets $[\mkern-2mu[\ldots]\mkern-2mu]$
+and to give special typographic treatment to names like `\WEB' and `\PASCAL'.
+A \WEB\ user generally begins by declaring such special aspects of the
+document format; for example, if nonstandard fonts of type are needed,
+they are usually stated first. It may also be necessary to specify the
+correct hyphenation of non-English words that appear in the document.
+
+Then comes `{\tt@*}', which starts the program proper. \WEB\ uses the
+symbol `{\tt@}' as an escape character for special instructions to the
+{\tt WEAVE} and {\tt TANGLE} processors. Everything between such special
+commands is either expressed in \TeX\ language or in \PASCAL\ language,
+depending on the context.
+
+Each section of the program begins either with `{\tt@ }' (i.e., at-sign
+and space) or `{\tt@*}' (i.e., at-sign and asterisk); \WEB\ supplies the
+section numbers automatically. The latter case, `{\tt@*}', denotes a
+{\it major section\/} of the program, for which a special title is given.
+This title will appear in boldface type, and it will also appear in the
+table of contents, and as a running headline on all pages of the
+woven documentation until another major section begins. Each major section
+starts at the top of a page. (Such page beginnings have been indicated
+by horizontal lines in our example, because \WEB's normal output format
+has been adapted to the format of this journal. The output of {\tt WEAVE}
+usually has a lot more white space, and the individual lines of text
+are usually quite a bit wider.)
+
+The lines that follow in Figure~2a show a few more \WEB\ instructions:
+`{\tt@\char`^}' marks the beginning of an index entry to be set in roman
+type; `{\tt@>}' marks the end of an argument to a \WEB\ command;
+`{\tt@.}'\ marks the beginning of an index entry to be set in typewriter
+type; `{\tt@p}' marks the beginning of the \PASCAL\ program; and `{\tt@<}'
+marks the beginning of a top-level description, i.e., of a section
+name in the \WEB\ program.
+
+\rightfloat
+\ttverbatim
+/hrule
+/medskip
+@ This program has no input, because we want
+to keep it rather simple. The result of the
+program will be to produce a list of the
+first thousand prime numbers, and this list
+will appear on the |output| file.
+/medskip
+Since there is no input, we declare the value
+|m=1000| as a compile-time constant. The
+program itself is capable of generating the
+first |m| prime numbers for any positive |m|,
+as long as the computer's finite limitations
+are not exceeded.
+/medskip
+\[The program text below specifies the
+``expanded meaning'' of `\X2:Program to print
+$\ldots$ numbers\X'; notice that it involves
+the top-level descriptions of three other
+sections. When those top-level descriptions
+are replaced by their expanded meanings, a
+syntactically correct \PASCAL\ program will
+be obtained.\]
+/medskip
+@<Program to print...@>=
+program print_primes(output);
+const @!m=1000;
+@<Other constants of the program@>@;
+var @<Variables of the program@>@;
+begin @<Print the first |m| prime numbers@>;
+end.
+/endverbatim
+\medskip
+\caption 2b. The \WEB\ code that generated \sec2.
+\ttverbatim
+/bigskip
+/hrule
+/medskip
+@ In order to keep this program reasonably
+free of notations that are uniquely
+\PASCAL esque, \[and in order to illustrate
+/cvdots
+The first three macro definitions here are
+parametric; the other two are simple.\]
+/medskip
+@d print_string(#)==write(#)
+ {put a given string into the |output| file}
+@d print_integer(#)==write(#:1)
+ {put a given integer into the |output|
+ file, in decimal notation, using only as
+ many digit positions as necessary}
+@d print_entry(#)==write(#:ww)
+ {like |print_integer|, but
+ |ww| character positions are filled,
+ inserting blanks at the left}
+@d new_line==write_ln
+ {advance to a new line in the |output| file}
+@d new_page==page
+ {advance to a new page in the |output| file}
+/endverbatim
+\medskip
+\caption 2c. The \WEB\ code that generated \sec6.
+\medskip
+\hrule
+\endfloat
+
+Figure 2b immediately follows Figure~2a in the \WEB\ file. This material
+is what generated \sec2 of the documentation, and it illustrates the
+bilingual nature of \WEB: The commentary at the beginning of each section
+is typed in \TeX\ language, and the program text at the end is typed
+in \PASCAL\ language.
+
+Language-switching between \TeX\ and \PASCAL\ is occasionally desirable.
+For example, when you refer to technical details about the program, you
+usually want to describe them in \PASCAL, hence you want {\tt WEAVE} to format
+them with the typographic conventions it uses for \PASCAL\ programs.
+Conversely, when you put comments in a \PASCAL\ program, you want
+the text of those comments to be formatted by \TeX\ in the normal way.
+\WEB\ files use vertical bars to introduce \PASCAL\ formatting in the
+midst of \TeX\ formatting; for example, Figure~2b says `{\tt the
+|output| file}' in order to typeset `the \\{output} file'.
+
+The program text in Figure~2b begins with `{\tt@<}' instead of with the
+`{\tt@p}' command used in Figure~2a, because the program text in~\sec2
+is the expansion of a specific top-level description. Notice that the
+top-level description has been abbreviated to `{\tt@<Program to print...@>}'.
+Since the names of sections tend to be rather long, it is a nuisance to
+type them in full each time; \WEB\ allows you to type `{\tt...}'\ after you
+have given enough text to identify the remainder uniquely.
+
+The `{\tt@!}'\ operation in the program text of Figure~2b governs the
+underlining of index entries. The `{\tt@;}'\ specifies an invisible symbol
+that has the effect of a semicolon in \PASCAL\ syntax. Commands such as these
+are comparatively unimportant, but they are available for polishing up
+the final documentation when you want to maintain fine control.
+
+Figure 2c shows key portions of the \WEB\ text that generated \sec6.
+Notice that the command `{\tt@d}' introduces a macro definition.
+All features of \WEB\ that appear in our example program are illustrated
+in Figures 2a, 2b, and~2c; the remainder of {\tt PRIMES.WEB} simply
+uses the same conventions again and again. In fact, most of the \WEB\
+file is much simpler than the examples shown here; Figure~2 has
+illustrated only the difficult parts.
+
+\beginsection E. THE TANGLED OUTPUT
+
+Figure 3 shows the \PASCAL\ program {\tt PRIMES.PAS} that results when
+{\tt TANGLE} is applied to {\tt PRIMES.WEB}. This program is not intended
+for human consumption---it's only supposed to be readable by a \PASCAL\
+compiler---so {\tt TANGLE} does not go to great pains to produce a
+beautiful format. Notice that underlines have been removed from the
+identifier names, and that all of the letters have been converted to
+uppercase (except in strings); {\tt TANGLE} tries to produce a format
+that will be acceptable to a standard \PASCAL\ compiler.
+
+{\tt TANGLE} removes all of the commentary in the \WEB\ file, but it
+inserts new comments of its own. If for some reason you need
+to correlate the tangled \PASCAL\ code with the woven documentation,
+you can find the program text for, say, \sec8 by looking between
+the comments `{\tt\char`\{8:\char`\}}' and `{\tt\char`\{:8\char`\}}'.
+
+A comparison of Figure~3 to Figure~2 should make it clear why the
+{\tt TANGLE} processor has acquired its name.
+
+\rightfloat
+\ttverbatim
+/hrule
+/medskip
+{1:}{2:}PROGRAM PRINTPRIMES(OUTPUT);
+CONST M=1000;{5:}RR=50;CC=4;WW=10;{:5}{19:}
+ORDMAX=30;{:19}VAR{4:}
+P:ARRAY[1..M]OF INTEGER;{:4}{7:}
+PAGENUMBER:INTEGER;PAGEOFFSET:INTEGER;
+ROWOFFSET:INTEGER;C:0..CC;{:7}{12:}J:INTEGER;
+K:0..M;{:12}{15:}JPRIME:BOOLEAN;{:15}{17:}
+ORD:2..ORDMAX;SQUARE:INTEGER;{:17}{23:}
+N:2..ORDMAX;{:23}{24:}
+MULT:ARRAY[2..ORDMAX]OF INTEGER;{:24}
+BEGIN{3:}{11:}{16:}J:=1;K:=1;P[1]:=2;{:16}
+{18:}ORD:=2;SQUARE:=9;{:18};
+WHILE K<M DO BEGIN{14:}REPEAT J:=J+2;{20:}
+IF J=SQUARE THEN BEGIN ORD:=ORD+1;{21:}
+SQUARE:=P[ORD]*P[ORD];{:21}{25:}
+MULT[ORD-1]:=J;{:25};END{:20};{22:}N:=2;
+JPRIME:=TRUE;
+WHILE(N<ORD)AND JPRIME DO BEGIN{26:}
+WHILE MULT[N]<J DO MULT[N]:=MULT[N]+P[N]+P[N]
+;IF MULT[N]=J THEN JPRIME:=FALSE{:26};N:=N+1;
+END{:22};UNTIL JPRIME{:14};K:=K+1;P[K]:=J;
+END{:11};{8:}BEGIN PAGENUMBER:=1;
+PAGEOFFSET:=1;
+WHILE PAGEOFFSET<=M DO BEGIN{9:}
+BEGIN WRITE('The First ');WRITE(M:1);
+WRITE(' Prime Numbers --- Page ');
+WRITE(PAGENUMBER:1);WRITELN;WRITELN;
+FOR ROWOFFSET:=PAGEOFFSET TO PAGEOFFSET+RR-1
+DO{10:}
+BEGIN FOR C:=0 TO CC-1 DO IF ROWOFFSET+C*RR<=
+M THEN WRITE(P[ROWOFFSET+C*RR]:WW);WRITELN;
+END{:10};PAGE;END{:9};
+PAGENUMBER:=PAGENUMBER+1;
+PAGEOFFSET:=PAGEOFFSET+RR*CC;END;END{:8}{:3};
+END.{:2}{:1}
+/endverbatim
+\medskip
+\caption 3. PASCAL program generated from the \WEB\ file.
+\medskip
+\hrule
+\endfloat
+
+\beginsection F. THE WOVEN OUTPUT
+
+I mentioned earlier that {\tt WEAVE} is a program that converts a file
+like {\tt PRIMES.WEB} into a file {\tt PRIMES.TEX} that is a syntactically
+correct source file for \TeX. Figure~4 gives a sampling of {\tt PRIMES.TEX},
+which is even more unreadable than {\tt PRIMES.PAS}. The instructions that
+cause \TeX\ to produce formatted \PASCAL\ programs, with appropriate
+typefaces and indentation, etc., are somewhat complex because they are
+supposed to give decent results regardless of the page size.
+
+There is no need to discuss Figure~4 further in the present paper, because
+the details of ``pretty printing'' are not relevant to my main theme.
+I have shown this much of {\tt PRIMES.TEX} only to make the point that
+it is nice to have a program like {\tt WEAVE} to do all the formatting;
+computer programs are not easy to typeset.
+
+\leftfloat
+\ttverbatim
+/hrule
+/medskip
+\input webmac
+\font\ninerm=cmr9
+/cvdots
+syntactically correct \PASCAL\ program will
+be obtained.\]
+/medskip
+\Y\P$\4\X2:Program to print the first
+thousand prime numbers\X\S$\6
+\4\&{program}\1\ \37$\\{print\_primes}(%
+\\{output})$;\6
+\4\&{const} \37$\|m=1000$;\5
+\X5:Other constants of the program\X\6
+\4\&{var} \37\X4:Variables of the program\X\6
+\&{begin} \37\X3:Print the first \|m prime
+numbers\X;\6
+\&{end}.\par
+\U section~1.\fi
+/cvdots
+The first three macro definitions here are
+parametric; the other two are simple.\]
+/medskip
+\Y\P\D \37$\\{print\_string}(\#)\S\\{write}(%
+\#)$\C{put a given string into the %
+\\{output} file}\par
+/cvdots
+\inx
+\:{Bertrand, Joseph, postulate}, 21.
+\:\\{boolean}, 15.
+/cvdots
+\:\.{WEB}, 1.
+\:\\{write}, 6.
+\:\\{write\_ln}, 6.
+\:\\{ww}, \[5], 6.
+\fin
+/cvdots
+\:\X4, 7, 12, 15, 17, 23, 24:Variables of
+the program\X
+\U section~2.
+\con
+/endverbatim
+\medskip
+\caption 4. \TeX\ program generated from the \WEB\ file.
+\medskip
+\hrule
+\endfloat
+
+\beginsection G. ADDITIONAL BELLS AND WHISTLES
+
+A system like \WEB\ can be successful only if it is capable of handling
+large programs as well as small ones, and only if it is complete enough
+to take care of all the practical requirements that arise when many
+different kinds of programs are considered. A small example like
+{\tt PRIMES.WEB} is a satisfactory vehicle for illustrating the general
+ideas, but it cannot be convincing as a demonstration of \WEB's ability
+to produce quality software in the ``real world.'' My original design
+of \WEB\ in September, 1981, was followed by a year of extensive
+experiments, so that by the time Version~1 was released in
+September, 1982, I could be fairly confident that the language was
+reasonably complete. Since then only one or two small extensions
+have proved to be necessary; and although numerous enhancements can
+easily be imagined, I believe that a useful stopping point for a
+working system called {\tt WEB83} has been reached.
+
+A full description of {\tt WEB83} appears in a Stanford report,\ref\WEBman%
+{D. E. Knuth, {\sl The \WEB\kern-2pt\ System of Structured Documentation}.
+Stanford Computer Science Report CS980 (September 1983).}
+which also contains the complete \WEB\ programs for {\tt WEAVE} and
+{\tt TANGLE}. The full language contains only a few features that
+do not show up in the {\tt PRIMES} example considered above:
+
+\def\nindent#1{\noindent\hbox to\parindent{#1)\hfil}\ignorespaces}
+\smallskip
+\nindent1 There are facilities to override {\tt WEAVE}'s
+automatic formatting of \PASCAL\ programs. For example, it is
+possible to force a statement to begin on a new line, or to force
+several statements to appear on the same line, or to suggest
+a desirable breakpoint in the middle of a long expression. In
+unusual cases, {\tt WEAVE} must parse program fragments that
+are not syntactically complete---for example, there may be a
+{\bf begin} without a matching {\bf end}---so a \WEB\ user must
+be given a chance to control the results. Furthermore there is a
+facility for changing {\tt WEAVE}'s formatting rules by declaring
+that a certain identifier should be treated as a certain \PASCAL\
+reserved word, or by declaring that a certain reserved word
+should be treated as an ordinary identifier.
+
+\smallskip
+\nindent2 There is a way to force {\tt TANGLE} to omit a
+space between two adjacent pieces of text, so that a name
+like `\\{x3}' can be manufactured from `\|x' and `\\3'. Similarly,
+there is a way to pass an arbitrary sequence of characters through
+{\tt TANGLE} so that the same sequence will appear ``verbatim'' in
+the \PASCAL\ file; and there is a way to force beginning-of-line
+in that file. The latter extensions have proved to be necessary
+to deal with various nonstandard conventions of different \PASCAL\ compilers.
+When a comment in braces is sent to the \PASCAL\ file, {\tt TANGLE}
+is careful not to introduce further braces inside the comment.
+
+\smallskip
+\nindent3 There are facilities for octal and hexadecimal constants in \WEB\
+thees. {\tt TANGLE} converts such constants to decimal form; {\tt WEAVE} gives
+them an appropriate typographic treatment.
+
+\smallskip
+\nindent4 There is a facility for dealing with alphabetic constants.
+When a program contains a double-quoted character like {\tt"A"},
+{\tt TANGLE} converts this to an integer between 0 and~127 that
+equals the corresponding {\mc ASCII} code (in this case 65).
+The use of {\mc ASCII} code facilitates the construction of software
+that is readily portable from one machine to another, independent of
+the actual character set in use.
+
+\smallskip
+\nindent5 Furthermore, if a double-quoted constant is a string
+of several characters, like {\tt"cat"}, {\tt TANGLE} converts it
+into a unique integer that is 128 or more. A special {\it string pool
+file\/} is written, containing all of the strings that have been
+specially encoded in this way. I have used this general mechanism only
+in large programs, but experience has shown that it makes quite a
+nice substitute for the string-processing capabilities that \PASCAL\
+lacks. (Incidentally, I noticed after several months that a program
+needs to have some indication that the string-pool file it is reading
+contains the same strings that {\tt TANGLE} generated when the program
+itself was tangled. Therefore a ``check sum'' is included in the
+string pool file; each program is able to refer to its own check sum
+and to compare it with the value in the file. This check-sum extension
+was one of the last features to be added to \WEB.)
+
+\smallskip
+\nindent6 The {\tt PRIMES} example illustrates macros with
+parameters and macros without parameters. \WEB\ also allows ``numeric''
+macros, which are small integer constants; {\tt TANGLE} is capable of
+doing simple arithmetic on such constants. This feature of \WEB\ was
+introduced specifically to overcome \PASCAL's unfortunate inability to
+do compile-time arithmetic. For example, it is impossible to have a
+\PASCAL\ array whose bounds are `$0\to n-1$', or to write
+`$20+3:$' as the label of one of the cases in `{\bf case} $x+y$';
+\WEB's numeric macros make it possible for {\tt TANGLE} to
+preprocess such constants.
+
+\beginsection H. OCCAM'S RAZOR
+
+I would also like to mention several things that were intentionally left
+out of \WEB, since I have tried to keep the language as simple as I could.
+
+There are no ``conditional macros,'' nor does {\tt TANGLE}
+evaluate Boolean expressions that might influence the
+output. I~found that everything I needed could be done
+satisfactorily by commenting out the optional code.
+
+For example, a system program is often designed to gather statistics about
+its own operation, but such statistics-gathering is pointless unless someone
+is actually going to use the results. In order to make the instrumentation
+code optional, I include the word `{\bf stat}' just before any special
+code for statistics, and `{\bf tats}' just after such code; and I tell
+{\tt WEAVE} to regard {\bf stat} and {\bf tats} as if they were {\bf begin}
+and {\bf end}. But {\bf stat} and {\bf tats} are actually simple macros.
+When I do want to gather the statistics, I define {\bf stat} and {\bf tats} to
+be null; but in a production version of the software, I make {\bf stat}
+expand to~`{\tt@\char`\{}' and {\bf tats} expand to~`{\tt@\char`\}}',
+where {\tt@\char`\{} and {\tt@\char`\}} are special braces that {\tt TANGLE}
+does not remove. Thus the optional code appears as a harmless comment in
+the \PASCAL\ program.
+
+\WEB's macros are allowed to have at most one parameter. Again, I did this
+in the interests of simplicity, because I noticed that most applications
+of multiple parameters could in fact be reduced to the one-parameter case.
+For example, suppose that you want to define something like
+$$\hbox{\tt mac(\#1,\#2) == m[\#1*r+\#2]}$$
+which \WEB\ doesn't permit. You can get essentially the same result
+with two one-parameter macros
+$$\vbox{\halign{\tt#\hfil\cr
+mac\char`\_tail(\#) == \#]\cr
+mac(\#) == m[\#*r+mac\char`\_tail\cr}}$$
+since, e.g., `{\tt mac(a)(b)}' will expand into `{\tt m[a*r+b]}'.
+
+Here is another example that indicates some of the surprising generality
+of one-parameter macros: Consider the two definitions
+$$\vbox{\halign{\tt#\hfil\cr
+define two\char`\_cases(\#)==case j of\cr
+\ \ \ \ \ \ \ \ \ \ \ \ \ 1:\#(1); 2:\#(2); end\cr
+define reset\char`\_file(\#)==reset(file@\&\#)\cr}}$$
+where `{\tt@\char`\&}' in the second definition is the concatenation operation
+that pastes two texts together. You can now say
+$$\hbox{\tt two\char`\_cases(reset\char`\_file)}$$
+and the resulting \PASCAL\ output will be
+$$\vbox{\halign{\tt#\hfil\cr
+case j of\cr
+1:reset(file1);\cr
+2:reset(file2);\cr
+end\cr}}$$
+In other words, the name of one macro can usefully be a parameter to
+another macro. This particular trick makes it possible to live with
+\PASCAL\ compilers that do not allow arrays of files.
+
+\beginsection I. PORTABILITY
+
+One of the goals of my \TeX\ research has been to produce portable
+software, and the {\tt WEB} system has been extremely helpful in this
+respect. Although my own work is done on a DEC-10 computer with
+Stanford's one-of-a-kind operating system, the software developed
+with \WEB\ has already been transported successfully to a wide
+variety of computers made by other manufacturers (including IBM,
+Control Data, XEROX, Hewlett-Packard), and to a variety
+of different operating systems for those machines. To my knowledge,
+no other software of such complexity has ever been transported to
+so many different machines. It seems likely that \TeX\ will soon be
+operating on all but the smallest of the world's computer systems.
+
+To my surprise, the main bottleneck to portability of the \TeX ware
+has been the lack of suitable \PASCAL\ compilers, because \PASCAL\ has
+often been implemented without system programming in mind. Anybody
+who has a decent \PASCAL\ compiler can install \WEB\ (and all programs
+written in \WEB) without great difficulty, essentially as follows:
+
+\smallskip
+\item{1)} Start with the three files {\tt WEAVE.WEB}, {\tt TANGLE.WEB}, and
+{\tt TANGLE.PAS}. (The programs have not been copyrighted, so
+these files are not difficult to obtain.)
+
+\item{2)} Run {\tt TANGLE.PAS} through your \PASCAL\ compiler to
+get a working {\tt TANGLE} program.
+
+\item{3)} Check your {\tt TANGLE} by applying it to {\tt TANGLE.WEB};
+your output file should match {\tt TANGLE.PAS}.
+
+\item{4)} Apply your {\tt TANGLE} to the file {\tt WEAVE.WEB}, obtaining
+{\tt WEAVE.PAS}; then apply \PASCAL\ to {\tt WEAVE.PAS} and you'll
+have a working {\tt WEAVE} system.
+
+\item{5)} The same process applies to any software written in \WEB,
+notably to \TeX\ itself. (However, you need fonts and suitable output
+equipment in order to make proper use of \TeX; that may be another
+bottleneck.) Once you have \TeX\ working, you can apply {\tt WEAVE}
+and \TeX\ to your \WEB\ files, thereby getting program documents
+as illustrated above.
+
+\smallskip\noindent
+Notice that a {\tt TANGLE.PAS} file is needed in order to get this
+``bootstrapping'' process started. If you have just {\tt WEAVE.WEB}
+and {\tt TANGLE.WEB}, you can't do the first step.
+
+However, anybody who has looked seriously into the question of software
+portability will realize that my comments in the preceding paragraphs
+have been oversimplified. I have glossed over some serious
+problems that arise: Character sets are different; file naming conventions
+are different; special conventions are needed to interact with a user's
+terminal; data is packed differently on different machines; floating-point
+arithmetic is always nonstandard and sometimes nonexistent; users want
+``friendly'' interaction with existing programs for editing and spooling;
+etc., etc. Furthermore, many of the world's \PASCAL\ compilers are incredibly
+bizarre. Therefore it is quite na\"\i ve to believe that a single program
+{\tt TANGLE.PAS} could actually work on very many different machines, or
+even that one single source file {\tt TANGLE.WEB} could be adequate; some
+system-dependent\kern-.5pt\kern.5pt\ changes are inevitable.
+
+The \WEB\ system caters to system-dependent changes in a simple but surprisingly
+effective way that I neglected to mention when I listed its other features.
+Both {\tt TANGLE} and {\tt WEAVE} are designed to work with
+{\it two\/} input files, not just one: In addition to a \WEB\ source file
+like {\tt TEX.WEB}, there is also a ``change file'' {\tt TEX.CH} that
+contains whatever changes are needed to customize \TeX\ for a particular
+system. (Similarly, the source files {\tt WEAVE.WEB} and {\tt TANGLE.WEB}
+are accompanied by {\tt WEAVE.CH} and {\tt TANGLE.CH}.)
+
+Here's how change files work: Each change has the form ``replace
+$x_1\ldots x_m$ by $y_1\ldots y_n$,'' for some $m\ge 1$ and $n\ge0$;
+here $x_i$ and~$y_j$ represent lines in the change file.
+The {\tt WEAVE} and {\tt TANGLE} programs
+read data from the \WEB\ input file until finding a line that matches
+$x_1$; this line, and the $m-1$ following lines, are replaced by
+$y_1\ldots y_n$. An error message is given if the $m$ lines replaced did
+not match $x_1\ldots x_m$ perfectly.
+
+For example, the program {\tt PRIMES.WEB} invokes a \\{page} procedure to
+begin a new page; but \\{page} was not pres\-ent in Wirth's original \PASCAL\
+and it is defined rather vaguely in the \PASCAL\ standard. Therefore
+a system-dependent change may be needed here. A change file {\tt
+PRIMES.CH} could be made by copying the line
+$$\hbox{\tt @d new\char`\_page==page}$$ from
+Figure~2c and specifying one or more appropriate replacement lines.
+
+The program {\tt TANGLE} itself contains about 190 sections, and a
+typical installation will have to change about 15 of these. If you
+want to transport {\tt TANGLE} to a new environment, you therefore
+need to create a suitable file {\tt TANGLE.CH} that modifies 15~or~so parts
+of {\tt TANGLE.WEB}. (Examples of {\tt TANGLE.CH} are provided to
+all people who receive {\tt TANGLE.WEB}, so that each implementor has
+a model of what to do.) You need to insert your changes by hand into
+{\tt TANGLE.PAS}, until you have a {\tt TANGLE} program that works
+sufficiently well to support further bootstrapping. But you never
+actually change the master file {\tt TANGLE.WEB}.
+
+This approach has two important advantages. First, the same
+master file {\tt TANGLE.WEB} is used by everybody, and it
+contains the basic logic of {\tt TANGLE} that really defines the
+essence of tangling. The system-dependent changes do not affect
+any of the subtle parts of {\tt TANGLE}'s control structures or
+data structures. Second, when the official {\tt TANGLE} has been
+upgraded to a newer version, a brand new {\tt TANGLE.WEB} will
+almost always work with the old {\tt TANGLE.CH}, since changes
+are rarely made to the system-dependent parts. In other words,
+this dual-input-file scheme works when the \WEB\ file is constant
+and the {\tt CH} file is modified, and it also works when the
+{\tt CH} file is constant but the \WEB\ file is modified.
+
+Change files were added to \WEB\ about three months after the system was
+initially designed, based on our initial experiences with people who had
+volunteered to participate in portability experiments. We realized
+about a year later that {\tt WEAVE} could be modified so that
+only the changed parts of a program would (optionally) be printed; thus,
+it's now possible to document the changes by listing only the sections
+that are actually affected by the {\tt CH} file that {\tt WEAVE} has
+processed. We also generalized the original format of {\tt CH} files,
+which permitted only changes that extended to the end of a section. These
+two important ideas were among the final enhancements incorporated into
+{\tt WEB83}.
+
+\beginsection J. PROGRAMS AS WEBS
+
+When I first began to work with the ideas that eventually became the
+\WEB\ system, I thought that I would be designing a language for ``top-down''
+programming, where a top-level description is given first and successively
+refined. On the other hand I knew that I often created major parts
+of programs in a ``bottom-up'' fashion, starting with the definitions of
+basic procedures and data structures and gradually building more and
+more powerful subroutines. I had the feeling that top-down and bottom-up
+were opposing methodologies: one more suitable for program exposition
+and the other more suitable for program creation.
+
+But after gaining experience with \WEB, I have come to realize that there is
+no need to choose once and for all between top-down and bottom-up, because
+a program is best thought of as a web instead of a tree. A hierarchical
+structure is present, but the most important thing about a program is
+its structural relationships. A complex piece of software consists of
+simple parts and simple relations between those parts; the programmer's
+task is to state those parts and those relationships, in whatever order
+is best for human comprehension---not in some rigidly determined
+order like top-down or bottom-up.
+
+When I'm writing a longish program like {\tt TANGLE.WEB} or {\tt WEAVE.WEB}
+or {\tt TEX.WEB}, I invariably have strong feelings about what part of the
+whole should be tackled next. For example, I'll come to a point where I need
+to define a major data structure and its conventions, before I'll feel
+happy about going further. My experiences have led me to believe that a
+person reading a program is, likewise, ready to comprehend it by
+learning its various parts in approximately the order in which it
+was written. The {\tt PRIMES.WEB} example illustrates this principle on
+a small scale; the decisions that Dijkstra made as he composed the original
+program$^\Dijk$ appear in the \WEB\ documentation in the same order.
+
+Top-down programming gives you a strong idea of where you are going, but
+it forces you to keep a lot of plans in your head; suspense builds up
+because nothing is really nailed down until the end. Bottom-up programming
+has the advantage that you continually wield a more and more powerful
+pencil, as more and more subroutines have been constructed; but it forces
+you to postpone the overall program organization until the last minute,
+so you might flounder aimlessly.
+
+When I tear up the first draft of a program and start over, my second draft
+usually considers things in almost the same order as the first one did.
+Sometimes the ``correct'' order is top-down, sometimes it is bottom-up,
+and sometimes it's a mixture; but always it's an order that makes sense on
+expository grounds.
+
+Thus the \WEB\ language allows a person to express programs
+in a ``stream of consciousness'' order. {\tt TANGLE} is able to scramble
+everything up into the arrangement that a \PASCAL\ compiler demands. This
+feature of \WEB\ is perhaps its greatest asset; it makes a \WEB-written
+program much more readable than the same program written purely in
+\PASCAL, even if the latter program is well commented. And the fact that there's
+no need to be hung up on the question of top-down versus bottom-up---since
+a programmer can now view a large program as a web, to be explored in
+a psychologically correct order---is perhaps the greatest lesson I have
+learned from my recent experiences.
+
+Another surprising thing that I learned while using \WEB\ was that
+traditional programming languages had been causing me to write inferior
+programs, although I hadn't realized what I was doing. My original idea was that
+\WEB\ would be merely a tool for documentation, but I actually found that
+my \WEB\ programs were better than the programs I had been writing
+in other languages. How could this be?
+
+Well, imagine that you are writing a small subroutine that updates part
+of a data structure, and suppose that the updating takes only
+one or two lines of code. In practical programs, there's often something
+that can go wrong, if the user's input is incorrect, so the subroutine
+has to check that the input is correct before doing the update.
+Thus, the subroutine has the general form
+$$\vbox{\halign{#\hfil\cr
+\&{procedure} \\{update};\cr
+\&{begin if} \<input data is invalid\> \&{then}\cr
+\quad \<Issue an error message and try to recover\>;\cr
+\<Update the data structure\>;\cr
+\&{end}.\cr}}$$
+A subtle phenomenon occurs in traditional programming languages: While
+writing the program for `\<Issue an error message and try to recover\>',
+a programmer subconsciously tries to get by with the fewest possible
+lines of code, since the program for `\<Update the data structure\>' is
+quite short. If an extensive error recovery is actually programmed, the
+subroutine will appear to have error-message printing as its main purpose.
+But the programmer knows that the error is really an exceptional case that
+arises only rarely; therefore a lengthy error recovery doesn't look right,
+and most programmers will minimize it (without realizing that they are doing
+so) in order to make the subroutine's appearance match its intended behavior.
+On the other hand when the same task is programmed with \WEB, the purpose
+of \\{update} can be shown quite clearly, and the possibility of error
+recovery can be reduced to a mere mention when \\{update} is defined.
+When another section entitled `\<Issue an error message and try to
+recover\>' is subsequently written, the whole point of that section is to do
+the best error recovery, and it becomes quite natural to write a better program
+as a result.
+
+This fact---that \WEB\ allows you to let each part of the program have
+its appropriate size, without distorting the readability of other parts---means
+that good programmers find their \WEB\ programs better than their \PASCAL\
+programs, even though their \PASCAL\ programs once looked like the work
+of an expert.
+
+\beginsection K. STYLISTIC ISSUES
+
+I found that my style of using \WEB\ evolved quite a bit during the first
+year. The general format, in which each section beings with commentary and
+ends with a formal program fragment, is extremely versatile; you have the
+freedom to say anything you want, yet you must make a decision about how
+you'll do it. I imagine that different programmers will converge to
+quite different styles, but I would like to note down some of the things
+that have seemed to work best for me.
+
+Consider first the question of macros versus section names. A named section,
+like `\<Issue an error message and try to recover\>', is essentially the
+same as a parameterless macro; \WEB\ provides both. I prefer to use
+parameterless macros for ``small'' things that can be embodied in a word
+or two, but named sections for longer portions of the program that
+merit a fuller description.
+
+I usually start the name of a section with an imperative verb, but I give
+a declarative commentary at the beginning of a section. Thus,
+{\tt PRIMES.WEB} says `{\bf 8.}~Now that appropriate $\ldots$
+\X8:Print table $p$\X$\;\S\;$\dots\thinspace'; I wouldn't do the opposite
+and say `{\bf8.}~Print the table. \X8:Code for printing\X$\;\S\;$\dots'.
+
+The name of a section (enclosed in angle brackets) should be long enough
+to encapsulate the essential characteristics of the code in that section,
+but it should not be too verbose. I found very early that it would be a
+mistake to include all of the assumptions about local and global variables
+in the name of each section, even though such information would strictly
+be necessary to isolate that section as an independent module. The trick is
+to find a balance between formal and informal exposition so that a reader
+can grasp what is happening without being overwhelmed with detail.\ref\Naur%
+{P. Naur, Formalization in program development. {\sl BIT\/ \bf22},
+437--453 (1982).}
+
+Another lesson I learned early in the game was that the name of a section
+should explicitly mention any nonstandard control structures, even though
+its data structures can often be left implied. Furthermore, if the control
+flow is properly explained, you can avoid the usual errors associated
+with \&{goto} statements; such statements can safely be introduced in
+a restrained but natural manner.
+
+For example, \sec14 of the prime-printing example could be reprogrammed as
+follows, using `\&{loop}' as a macro abbreviation for `\&{while} \\{true}
+\&{do}':
+$$\vbox{\halign{\hbox to\hsize{#\hfil}\cr
+\X14:Increase $j$ until it is the next prime number\X$\;\S$\cr
+\quad\&{loop begin} $j\K j+2$;\cr
+\qquad\X20:Update variables that depend on $j$\X;\cr
+\qquad\X22:If $j$ is prime, \&{goto} \\{found}\X;\cr
+\qquad\&{end};\cr
+\\{found}:\cr}}$$
+With this change, \sec22 could become
+$$\vbox{\halign{\hbox to\hsize{#\hfil}\cr
+\X22:If $j$ is prime, \&{goto} \\{found}\X$\;\S$\cr
+\quad$n\K2$;\cr
+\quad\&{while} $n<\\{ord}$ \&{do}\cr
+\qquad\&{begin} \X26:If $p[n]$ is a factor of $j$, \&{goto} \\{not\_found}\X;\cr
+\qquad$n\K n+1$;\cr
+\qquad\&{end};\cr
+\quad\&{goto} \\{found};\cr
+\\{not\_found}:\cr}}$$
+if \sec26 changes in the obvious way. The resulting program will be more
+efficient on most machines; and I believe that it is actually easier to
+read and to write, in spite of the fact that two \&{goto} statements
+appear, because the labels have been used with appropriate interpretations
+of their abstract significance.
+
+Of course, \PASCAL\ makes it difficult to use \&{goto} statements,
+because Wirth decided that labels should be numeric, and that they
+should be declared in advance. If I were to introduce the \&{goto}
+statements as suggested, I would have to define numeric macros
+\\{found} and \\{not\_found}, and I would have to insert
+`\&{label} \\{found}, \\{not\_found}' into the program at the right place.
+Such extra work is a bit of a nuisance, but it can be done in \WEB\ without
+spoiling the exposition.
+
+\PASCAL\ has a few other misfeatures that prove to be inconvenient with
+respect to \WEB\ exposition. The worst of these is the inability to
+declare local variables in the midst of a program or procedure. For
+example, a programmer often finds it most natural to define an integer
+variable when a \&{for} loop is introduced, but the rules of \PASCAL\
+insist that such a variable be declared rather far away from
+that \&{for} loop. My \WEB\ programs overcome this problem by having
+sections like `\<Local variables for \\{xyzzy}\>' whenever there's a
+rather lengthy procedure `\\{xyzzy}' whose local variables should not
+be declared all at once. But when a procedure is short, say only half
+a dozen sections long, there's usually no harm in declaring its local
+variables in \PASCAL\ style, because the entire text of the procedure will
+tend to appear on one or two adjacent pages of the documentation.
+
+Another slightly awkward aspect of \PASCAL\ is its treatment of semicolons.
+If you look closely at the prime-number example, you'll see that I had to
+be a bit careful about where I put semicolons; sometimes they occur at the
+end of the expanded text of a section, but usually they don't. With
+a little self discipline, a person can learn to do this quite satisfactorily,
+but it is a nuisance until you get used to it.
+
+\beginsection L. ECONOMIC ISSUES
+
+What does it cost to use \WEB? Let's look first at the lowest level, where
+computer costs are considered, because it is easy to make quantitative
+statements at this level. The running time to {\tt TANGLE} a \WEB\ file is
+approximately the same as the time needed to compile the resulting
+\PASCAL\ program; hence the extra preprocessing does not cost much.
+Similarly, {\tt WEAVE} doesn't take long to produce a file for \TeX.
+However, \TeX\ needs a comparatively large amount of time to typeset the
+final document. For example, if we assume that each page requires four
+seconds, it will take four minutes to produce a 60-page document. The
+running time for {\tt WEAVE}-plus-\TeX\ is quite reasonable when you
+consider that your program is effectively being
+converted into a fairly substantial booklet; but the costs are sufficiently
+large to discourage remaking and reprinting such a booklet more than once or
+twice a day. When a new program is being developed, it is therefore customary
+to work with hardcopy documentation that is slightly obsolete, and to read
+the \WEB\ source file itself when up-to-date information is required;
+the source file is sufficiently easy to read for such purposes.
+
+The costs of \WEB\ are more difficult to estimate at higher levels, but I have
+found to my surprise that the total time of writing and debugging a \WEB\
+program is no greater than the total time of writing and debugging an
+{\mc ALGOL} or {\mc PASCAL} program, even though my \WEB\ programs are
+much better, and even though I am putting substantially more documentation
+into the programs. Therefore I have lately been using \WEB\ for all of my
+programming, even for one-off jobs that I write ``for my eyes only'' just
+to explore occasional problems. The extra time I spend in preparing additional
+commentary is regained because the debugging time is reduced.
+
+In retrospect, the fact that a ``literate'' program takes much less time to
+debug is not surprising, because the \WEB\ language encourages a discipline
+that I was previously unwilling to impose on myself. I had known for a long
+time that the programs I construct for publication in a book, or the programs
+that I construct in front of a class, have tended to be comparatively free
+of errors, because I am forced to clarify my thoughts as I do the programming.
+By contrast, when writing for myself alone, I have often taken shortcuts that
+proved later to be dreadful mistakes. It's harder for me to fool myself in
+such ways when I'm writing a \WEB\ program, because I'm in ``expository
+mode'' (analogous to classroom lecturing) whenever a \WEB\ is being spun.
+Ergo, less debugging time.
+
+Now that I am writing all my programs in \WEB, an unforeseen problem has,
+however, arisen: I suddenly have a collection of programs that seem quite
+beautiful in my own eyes, and I have a compelling urge to publish all of
+them so that everybody can admire these works of art. A nice little 10-page
+program can easily be written and debugged in an afternoon and evening;
+if I keep accumulating such gems, I'll soon run out of storage space,
+and my office will be encrusted with webs of my own making. There is no
+telling what will happen if lots of other people catch \WEB\ fever and
+start foisting their creations on each other. I can already envision the
+appearance of a new journal, to be entitled {\sl Webs}, for the publication
+of literate programs; I imagine that it will have a large backlog and
+a large group of dedicated editors and referees.
+
+\beginsection M. RELATED WORK
+
+Nothing about \WEB\ is really new; I have simply combined a bunch of
+ideas that have been in the air for a long time. I would like to
+summarize in the next few paragraphs the things that had the greatest
+influence on my thinking as I put those pieces together.
+
+George Forsythe wrote in 1966 that ``A useful algorithm is a substantial
+contribution to knowledge. Its publication constitutes an important
+piece of schol\-ar\-ship.''\ref\GEF{G. E. Forsythe, Algorithms for
+scientific computation. {\sl Communications of the ACM\/ \bf9}, 255--256
+(1966).} His comments have always inspired me to strive for excellence
+in programming, and they have played a major r\^^Dole in shaping my present
+view that it is worthwhile to consider {\it every\/} program as a
+work of literature.
+
+The design of \WEB\ was influenced primarily by the pioneering work
+of Pierre-Arnoul de Marneffe,\ref\deM{P. A. de Marneffe, {\sl Holon
+Programming}. Univ.~de Liege, Service D'Informatique (December, 1973).}$^,$%
+\ref\deMR{P. A. de Marneffe and D. Ribbens, Holon Programming, in
+A. G\"unther et al.\ (eds.), {\sl International Computing Symposium 1973\/},
+Amsterdam, North-Holland (1974).} whose research on what he called
+``Holon Programming'' has not received the attention it deserves. His
+work was, in turn, inspired by Arthur Koestler's excellent treatise
+on the structure of complex systems and organisms;\ref\Koest{A.
+Koestler, {\sl The Ghost in the Machine}. New York, Macmillan (1968).}
+thus we have another connection between programming and literature.
+A somewhat similar system was independently created by Edwin Towster.\ref\Tow%
+{E. Towster, A convention for explicit declaration of environments
+and top-down refinement of data. {\sl IEEE Transactions on Software
+Engineering\/ \bf SE--5}, 374--386 (1979).}
+
+I owe a great debt to Edsger Dijkstra, Tony Hoare, Ole-Johan Dahl, and
+Niklaus Wirth for opening my eyes to the importance of abstraction in the
+reading and writing of programs, and to Peter Naur for stressing the
+importance of a balance between formal and informal methods.
+
+Tony Hoare provided a special impetus for \WEB\ when he suggested in 1978
+that I should publish my program for \TeX. Since very few large-scale
+software systems were available in the literature, he had been trying to
+promote the publication of well-written programs. Hoare's suggestion was
+actually rather terrifying to me, and I'm sure he knew that he was posing
+quite a challenge. As a professor of computer science, I was quite
+comfortable publishing papers about toy problems that could be polished up
+nicely and presented in an elegant manner; but I had no idea how to take a
+piece of real software, with all the compromises necessary to make it
+useful to a large class of people on a wide variety of systems, and to open
+it up to public scrutiny. How could a supposedly respectable academic, like
+me, reveal the way he actually writes large programs? And could a large
+program be made intelligible? My previous attempts along these
+lines\ref\CF{D. E. Knuth, Computer-drawn flow charts. {\sl
+Communications of the ACM\/ \bf 6}, 555--563 (1963).} were by now
+hopelessly out of date. I decided that this would be a good time to try
+out de Marneffe's ideas; furthermore, the \TeX\ system itself provided me
+with new tools for printing and format control, so I suspected that it
+would be possible to obtain state-of-the-art documentation by making
+proper use of typography.
+
+It is interesting to reread some of the comments that Tony made ten years
+ago in his keynote address to the first ACM symposium on Principles
+of Programming Languages:\ref\Hoare{C. A. R. Hoare, {\sl Hints on
+Programming Language Design}. Stanford Computer Science Report CS403
+(October 1973).}
+\smallskip
+{\narrower\noindent
+Documentation must be regarded as an integral part of the process of
+design and coding. A good programming language will encourage and
+assist the programmer to write clear, self-documenting code, and even
+perhaps to develop and display a pleasant style of writing.
+\smallskip}
+\noindent He foresaw many future trends, but not the impending improvements in
+typesetting quality:
+\smallskip
+{\narrower\noindent
+It is of course possible for a compiler or service program to expand the
+abbreviations, fill in the defaults, and make explicit the assumptions.
+But in practice, experience shows that it is very unlikely that the
+output of a computer will ever be more readable than its input, except
+in such trivial but important aspects as improved indentation.
+\smallskip}
+
+Typographic formatting of computer programs has a long tradition, originating
+with {\mc ALGOL} and its immediate precursors. I'm not sure who made the
+first experiments, but I believe that the lion's share of the credit
+for developing excellent programming-language typography belongs to two
+people: Peter Naur, who edited the {\mc ALGOL~60} report\ref\Alg{P. Naur
+(ed.)~et al., Report on the algorithmic language ALGOL 60.
+{\sl Communications of the ACM\/ \bf3}, 299--314.} and gave special
+care to its presentation; and Myrtle Kellington, who served for many years
+as executive editor of ACM publications and set the standards that have
+been adopted by other journals. The computing profession owes much to
+these people, who made published programs so much more readable than they
+would otherwise have been; the magnitude of their contribution can only
+be appreciated by people who submit computer programs to journals
+like {\sl Acta Arithmetica\/} whose editors are unfamiliar with computer
+science. Bill McKeeman called attention to formatting issues when he
+published Algorithm~268, ``{\mc ALGOL~60} reference language editor,''
+in 1965.\ref\McK{W. M. McKeeman, Algorithm 268. {\sl Communications
+of the ACM\/ \bf8}, 667--668 (1965).} There has been a flowering of
+such algorithms in recent years; the papers by Oppen\ref\DO{D. Oppen,
+Prettyprinting. {\sl ACM Transactions on Programming Languages and
+Systems\/ \bf2}, 465--483 (1980).} and by Rose and Welsh\ref\RW{G. A.
+Rose and J. Welsh, Formatted programming languages. {\sl Software---%
+Practice \char'46\ Experience\/ \bf11}, 651--669 (1981).} are particularly
+noteworthy.
+
+I began to design \WEB\ in the spring of 1979, when I constructed a prototype
+system that was called {\tt DOC}. Luis Trabb~Pardo helped me to develop
+a suitable style of exposition at that time; then Ignacio Zabala~Salelles
+gave a {\tt DOC} a thorough test when he prepared a full implementation
+of \TeX\ in \PASCAL. Zabala's implementation was successfully transported
+to many different computers,\ref\Z{I. Zabala and L. Trabb Pardo,
+The status of the PASCAL implementation of \TeX. {\sl TUGboat\/ \bf1},
+16--17 (1980).}\silentref\ZZ{I. Zabala, \TeX-PASCAL and PASCAL compilers.
+{\sl TUGboat\/ \bf2} (1), 11--12 (1981).}\silentref\ZZZ{I. Zabala,
+Some feedback from PTEX installations. {\sl TUGboat\/ \bf2} (2), 16--19
+(1981).}$^-$\ref\ZZZZ{I. A. Zabala, How
+portable is PASCAL? Draft of paper in preparation (1982).}
+and this experience was of immense value to me when I cast \WEB\ into its
+present form in 1981. Since then many significant improvements have been
+suggested by my colleague David R. Fuchs, and I have also benefited from
+the experiences of a large number of outstanding people who volunteered to
+be guinea pigs for pre-released versions of \TeX. It's impossible for me
+to name everyone who has helped, but I would like to give special thanks
+to Arthur Samuel, Howard Trickey, Joe Weening, and Pierre MacKay for
+important contributions. I'm fortunate indeed to share a working
+environment with such stimulating people.
+
+When I originally designed the \WEB\ system, I spent about six
+weeks preparing the files {\tt TANGLE.WEB} and {\tt WEAVE.WEB},
+during which time I was continually changing the language and
+trying different styles of exposition. (The programs were neither
+long nor complicated, but this was rather intensive work, so I
+didn't get much else done during those six weeks. The first two
+weeks were actually spent drafting the first ten per cent of what
+is now {\tt TEX.WEB}.) Then I spent about six tedious hours with
+a text editor, hand-simulating the behavior of {\tt TANGLE} on
+{\tt TANGLE.WEB}, so that I had a program {\tt TANGLE.PAS} that
+was ripe for debugging. At first I had to correct errors both in
+{\tt TANGLE.WEB} and {\tt TANGLE.PAS}, but soon {\tt TANGLE} was
+working well enough that I needed only {\tt TANGLE.WEB} as a
+source file. Then {\tt WEAVE.WEB} could be tangled and debugged
+too. The total time to create ``Version~0'' of the \WEB\ system,
+including the language design and the time to debug the programs
+and write a brief manual for users, was about eight weeks; then
+enhancements were added at the rate of about one per month for
+the next 18 months. As a result of this experience I think it's
+reasonable to state that a {\tt WEB}-like system can be created
+from scratch in a fairly short time, for some other pair of
+languages besides \TeX\ and \PASCAL, by an expert system
+programmer who is conversant with both languages. Indeed, I spoke
+about \WEB\ on a recent visit to London and one of the people in
+the audience decided to test this hypothesis; shortly afterwards I
+received an elegant report from Harold Thimbleby, who had just constructed
+an excellent system called {\tt Cweb}, based on Troff/Nroff and {\mc
+C} instead of \TeX\ and \PASCAL.\ref\Thim{H. Thimbleby, {\sl Cweb}.
+Preprint, University of York (August 1983).}
+
+\beginsection N. RETROSPECT AND PROSPECTS
+
+Enthusiastic reports about new computer languages, by the authors of those
+languages, are commonplace. Hence I'm well aware of the fact that my own
+experiences cannot be extrapolated too far. I also realize that, whenever I have
+encountered a problem with \WEB, I've simply changed
+the system; other users of \WEB\ cannot operate under the same ground rules.
+
+However, I believe that I have stumbled on a way of programming that produces
+better programs that are more port\-able and more easily understood and
+maintained; furthermore, the system seems to work with large programs as
+well as with small ones. I'm pleased that my work on typography, which
+began as an application of computers to another field, has come full circle
+and become an application of typography to the heart of
+computer science; I like to think of \WEB\ as a neat ``spinoff'' of my
+research on \TeX. However, all of my experiences with this system have
+been highly colored by my own tastes, and only time will tell if a large
+number of other people will find \WEB\ to be equally attractive and useful.
+
+I made a conscious decision not to design a language that would be
+suitable for everybody. My goal was to provide a tool for system
+programmers, not for high school students or for hobbyists. I don't have
+anything against high school students and hobbyists, but I don't believe
+every computer language should attempt to offer all things to all people.
+A user of \WEB\ needs to be good enough at computer science that he or she
+is comfortable dealing with several languages simultaneously. Since
+\WEB\ combines \TeX\ and \PASCAL\ with a few rules of its own, \WEB\ programs
+can contain \WEB\ syntax errors, \TeX\ syntax errors, \PASCAL\ syntax errors,
+and algorithmic errors; in practice, all four types of errors occur, and
+a bit of sophistication is needed to sort out which is which. Computer
+scientists tend to be better at such things than other people. I have found
+that \WEB\ programs can be debugged rapidly in spite of the profusion
+of languages, but I'm sure that many other intelligent people will find
+such a task difficult.
+
+In other words, \WEB\ seems to be specifically for the peculiar breed of
+people who are called computer scientists. And I'm pretty sure that there
+are also a lot of computer scientists who will not enjoy using \WEB; some
+of us are glad that traditional programming languages have comparatively
+primitive capabilities for inserted comments, because such difficulties provide
+a good excuse for not documenting programs well. Thus, \WEB\ may be only for the
+subset of computer scientists who like to write and to explain what they
+are doing. My hope is that the ability to make explanations more natural will
+cause more programmers to discover the joys of literate programming,
+because I believe it's quite a pleasure to combine verbal and mathematical
+skills; but perhaps I'm hoping for too much. The fact that at least one
+paper has been written that is a syntactically correct {\mc ALGOL 68}
+program\ref\ft{C. H. Lindsey, ALGOL 68 with fewer tears. {\sl The
+Computer Journal\/ \bf15}, 176--188 (1972).} encourages me to persevere
+in my hopes for the future. Perhaps we will even one day find Pulitzer
+prizes awarded to computer programs.
+
+And what about the future of \WEB? If the next year or so of trial use
+shows that a lot of other people besides myself become ``hooked'' on this
+method of programming, there will be many ways to incorporate the \WEB\
+philosophy into a really effective programming environment. For example,
+it will be worthwhile to produce a unified system that does both
+tangling and compiling, instead of using separate programs as in Figure~1;
+and it will also be worthwhile to carry the unification one step further,
+so that run-time debugging as well as syntactic debugging can be done
+entirely in terms of the \WEB\ source language. Furthermore, a \WEB-like
+system could be designed to incorporate additional modularization,
+so that it would be easier to compile different parts of a program
+independently. The new generation of graphic workstations makes it
+desirable to display selected program sections on demand, by using \TeX\
+only on the sections that are of current interest, instead of producing
+hardcopy for an entire document. And so on; a considerable amount of
+additional research and development will be appropriate if the idea
+of literate programming catches on.
+
+\bigskip\leftline{\bf Acknowledgements}
+\smallskip
+{\eightrm\baselineskip9pt
+\noindent The preparation of this paper was supported in part by
+the National Science Foundation under grants IST-8201926 and MCS-8300984,
+and by the System Development Foundation. `\TeX' is a trademark of the
+American Mathematical Society.\par}
+
+\enddoublecolumns % prepare for the references
+\bigskip\bigskip
+\hbox to\pagewidth{\hss\bf REFERENCES\hss\strut}
+\CJrule width\pagewidth
+\bigskip
+\begindoublecolumns
+\let\rm=\eightss \let\sl=\eightssi \let\bf=\eightssb \rm
+\baselineskip=9pt
+\tolerance=1000
+\references
+\bigskip
+\noindent
+Received September 1983
+\enddoublecolumns
+\kern6mm
+\CJrule width\pagewidth
+\bye
diff --git a/Master/texmf-doc/doc/english/knuth/webman.tex b/Master/texmf-doc/doc/english/knuth/webman.tex
new file mode 100644
index 00000000000..61e12a28789
--- /dev/null
+++ b/Master/texmf-doc/doc/english/knuth/webman.tex
@@ -0,0 +1,1672 @@
+% WEB user manual -- last updated by D E Knuth on 4 Dec 89
+\input webmac
+\parskip 0pt plus 1pt
+\def\RA{\char'31 } % right arrow
+\def\hang{\hangindent 4em\ignorespaces}
+\font\ninerm=cmr9
+\font\ninett=cmtt9
+\font\eighttt=cmtt8
+\let\mc=\ninerm % medium caps for names like SAIL
+\def\PASCAL{Pascal}
+\font\quoterm=cmssq8
+\font\quoteit=cmssqi8
+\def\pb{\.{|...|}}
+\def\lpile{\def\cr{\hfill\endline}\matrix} % I only use \lpile by itself
+
+\outer\def\section #1.{\penalty-50\vskip 12pt plus 3pt minus 3pt
+ \noindent{\bf #1.}\quad\ignorespaces}
+
+\def\lheader{\mainfont\the\pageno\hfill\sc\runninghead\hfill}
+\def\rheader{\hfill\sc\runninghead\hfill\mainfont\the\pageno}
+\def\runninghead{{\tentt WEB} USER MANUAL}
+
+% This verbatim mode assumes that no ? appears in the text being copied.
+\def\verbatim{\begingroup
+ \def\do##1{\catcode`##1=12 } \dospecials
+ \parskip 0pt \parindent 0pt
+ \catcode`\ =13 \catcode`\^^M=13
+ \tt \catcode`\?=0 \verbatimdefs \verbatimgobble}
+{\catcode`\^^M=13{\catcode`\ =13\gdef\verbatimdefs{\def^^M{\ \par}\let =\ }} %
+ \gdef\verbatimgobble#1^^M{}}
+ \centerline{\titlefont The {\ttitlefont WEB} System
+ of Structured Documentation}
+
+\vskip 15pt plus 3pt minus 3pt
+\noindent This memo describes how to write programs in the
+\.{WEB} language; and it also includes the full \.{WEB} documentation for
+\.{WEAVE} and \.{TANGLE}, the programs that read \.{WEB} input and produce
+\TeX\ and \PASCAL\ output, respectively. The philosophy behind \.{WEB} is
+that an experienced system programmer, who wants to provide the best
+possible documentation of software products, needs two things
+simultaneously: a language like \TeX\ for formatting, and a language like
+\PASCAL\ for programming. Neither type of language can provide the best
+documentation by itself. But when both are appropriately combined, we
+obtain a system that is much more useful than either language separately.
+
+The structure of a software program may be thought of as a ``web'' that is
+made up of many interconnected pieces. To document such a program, we want
+to explain each individual part of the web and how it relates to its
+neighbors. The typographic tools provided by \TeX\ give us an opportunity
+to explain the local structure of each part by making that structure
+visible, and the programming tools provided by \PASCAL\ make it possible
+for us to specify the algorithms formally and unambiguously. By combining
+the two, we can develop a style of programming that maximizes our ability
+to perceive the structure of a complex piece of software, and at the same
+time the documented programs can be mechanically translated into a working
+software system that matches the documentation.
+
+Since \.{WEB} is an experimental system developed for internal use within
+the \TeX\ project at Stanford, this report is rather terse, and it assumes
+that the reader is an experienced programmer who is highly motivated to
+read a detailed description of \.{WEB}'s rules. Furthermore, even if a
+less terse manual were to be written, the reader would have to be warned
+in advance that \.{WEB} is not for beginners and it never will be: The
+user of \.{WEB} must be familiar with both \TeX\ and \PASCAL. When one
+writes a \.{WEB} description of a software system, it is possible to make
+mistakes by breaking the rules of \.{WEB} and/or the rules of \TeX\ and/or
+the rules of \PASCAL. In practice, all three types of errors will occur,
+and you will get different error messages from the different language
+processors. In compensation for the sophisticated expertise needed to cope
+with such a variety of languages, however, experience has shown that
+reliable software can be created quite rapidly by working entirely in
+\.{WEB} from the beginning; and the documentation of such programs seems
+to be better than the documentation obtained by any other known method.
+Thus, \.{WEB} users need to be highly qualified, but they can get some
+satisfaction and perhaps even a special feeling of accomplishment when
+they have successfully created a software system with this method.
+
+To use \.{WEB}, you prepare a file called \.{COB.WEB} (say), and then you
+apply a system program called \.{WEAVE} to this file, obtaining an output
+file called \.{COB.TEX}. When \TeX\ processes \.{COB.TEX}, your output
+will be a ``pretty printed'' version of \.{COB.WEB} that takes appropriate
+care of typographic details like page layout and the use of indentation,
+italics, boldface, etc.; this output will contain extensive cross-index
+information that is gathered automatically. You can also submit the same
+file \.{COB.WEB} to another system program called \.{TANGLE}, which will
+produce a file \.{COB.PAS} that contains the \PASCAL\ code of your \.{COB}
+program. The \PASCAL\ compiler will convert \.{COB.PAS} into
+machine-language instructions corresponding to the algorithms that were so
+nicely formatted by \.{WEAVE} and \TeX. Finally, you can (and should)
+delete the files \.{COB.TEX} and \.{COB.PAS}, because \.{COB.WEB} contains
+the definitive source code. Examples of the behavior of \.{WEAVE} and
+\.{TANGLE} are appended to this manual.
+
+Besides providing a documentation tool, \.{WEB} enhances the \PASCAL\
+language by providing a rudimentary macro capability together with the
+ability to permute pieces of the program text, so that a large system can
+be understood entirely in terms of small modules and their local
+interrelationships. The \.{TANGLE} program is so named because it takes a
+given web and moves the modules from their web structure into the order
+required by \PASCAL; the advantage of programming in \.{WEB} is that the
+algorithms can be expressed in ``untangled'' form, with each module
+explained separately. The \.{WEAVE} program is so named because it takes
+a given web and intertwines the \TeX\ and \PASCAL\ portions contained in
+each module, then it knits the whole fabric into a structured document.
+(Get it? Wow.) Perhaps there is some deep connection here with the fact
+that the German word for ``weave'' is ``{\it web\/}'', and the
+corresponding Latin imperative is ``{\it texe\/}''!
+
+It is impossible to list all of the related work that has influenced the
+design of \.{WEB}, but the key contributions should be mentioned
+here.\quad (1)~Myrtle Kellington, as executive editor for ACM
+publications, developed excellent typographic standards for the
+typesetting of Algol programs during the 1960s, based on the original
+designs of Peter Naur; the subtlety and quality of this influential work
+can be appreciated only by people who have seen what happens when other
+printers try to typeset Algol without the advice of ACM's copy
+editors.\quad(2)~Bill McKeeman introduced a program intended to automate
+some of this task [Algorithm 268, ``Algol~60 reference language editor,''
+{\sl CACM \bf8} (1965), 667--668]; and a considerable flowering of such
+programs has occurred in recent years [see especially Derek Oppen,
+``Prettyprinting,'' {\sl ACM TOPLAS \bf2} (1980), 465--483; G.~A. Rose and
+J. Welsh, ``Formatted programming languages,'' {\sl SOFTWARE Practice
+\char`\&\ Exper.\ \bf11} (1981), 651--669].\quad(3)~The top-down style of
+exposition encouraged by \.{WEB} was of course chiefly influenced by Edsger
+Dijkstra's essays on structured programming in the late 1960s. The less
+well known work of Pierre-Arnoul de Marneffe [``Holon programming: A
+survey,'' Univ.\ de Liege, Service Informatique, Liege, Belgium, 1973; 135
+pp.\null] also had a significant influence on the author as \.{WEB} was
+being formulated.\quad(4)~Edwin Towster has proposed a similar style of
+documentation in which the programmer is supposed to specify the relevant
+data structure environment in the name of each submodule [``A convention
+for explicit declaration of environments and top-down refinement of
+data,'' {\sl IEEE Trans.\ on Software Eng.\ \bf SE--5} (1979), 374--386];
+this requirement seems to make the documentation a bit too verbose,
+although experience with \.{WEB} has shown that any unusual control
+structure or data structure should definitely be incorporated into the
+module names on psychological grounds.\quad(5)~Discussions with Luis
+Trabb~Pardo in the spring of 1979 were extremely helpful for setting up a
+prototype version of \.{WEB} that was called \.{DOC}.\quad (6)~Ignacio
+Zabala's extensive experience with \.{DOC}, in which he created a full
+implementation of \TeX\ in \PASCAL\ that was successfully transported to
+many different computers, was of immense value while \.{WEB} was taking
+its present form.\quad(7)~David~R. Fuchs made several crucial suggestions
+about how to make \.{WEB} more portable; he and Arthur~L. Samuel
+coordinated the initial installations of \.{WEB} on dozens of computer
+systems, making changes to the code so that it would be acceptable to
+a wide variety of \PASCAL\ compilers.\quad(8)~The name \.{WEB} itself
+was chosen in honor of my wife's mother, Wilda Ernestine Bates.
+
+The appendices to this report contain complete \.{WEB} programs for the
+\.{WEAVE} and \.{TANGLE} processors. A study of these examples, together
+with an attempt to write \.{WEB} programs by yourself, is the best way
+to understand why \.{WEB} has come to be like it is.
+ \section General rules.
+A \.{WEB} file is a long string of text that has been divided into
+individual lines. The exact line boundaries are not terribly crucial, and
+a programmer can pretty much chop up the \.{WEB} file in whatever way seems
+to look best as the file is being edited; but string constants and control
+texts must end on the same line on which they begin, since this convention
+helps to keep errors from propagating. The end of a line means
+the same thing as a blank space.
+
+Two kinds of material go into \.{WEB} files: \TeX\ text and \PASCAL\ text.
+A programmer writing in \.{WEB} should be thinking both of the
+documentation and of the \PASCAL\ program that he or she is creating;
+i.e., the programmer should be instinctively aware of the different
+actions that \.{WEAVE} and \.{TANGLE} will perform on the \.{WEB} file.
+\TeX\ text is essentially copied without change by \.{WEAVE}, and it is
+entirely deleted by \.{TANGLE}, since the \TeX\ text is ``pure
+documentation.'' \PASCAL\ text, on the other hand, is formatted by
+\.{WEAVE} and it is shuffled around by \.{TANGLE}, according to rules that
+will become clear later. For now the important point to keep in mind is
+that there are two kinds of text. Writing \.{WEB} programs is something
+like writing \TeX\ documents, but with an additional ``\PASCAL\ mode''
+that is added to \TeX's horizontal mode, vertical mode, and math mode.
+
+A \.{WEB} file is built up from units called {\sl modules\/} that are more
+or less self-contained. Each module has three parts:
+
+\yskip\item{1)} A \TeX\ part, containing explanatory material about what
+is going on in the module.
+
+\item{2)} A definition part, containing macro definitions that serve as
+abbreviations for \PASCAL\ constructions that would be less comprehensible
+if written out in full each time.
+
+\item{3)} A \PASCAL\ part, containing a piece of the program that
+\.{TANGLE} will produce. This \PASCAL\ code should ideally be about a
+dozen lines long, so that it is easily comprehensible as a unit and so
+that its structure is readily perceived.
+
+\yskip\noindent The three parts of each module must appear in this order;
+i.e., the \TeX\ commentary must come first, then the definitions, and
+finally the \PASCAL\ code. Any of the parts may be empty.
+
+\eject % page break inserted Dec 88
+
+A module begins with the pair of symbols `\.{@\ }' or `\.{@*}', where
+`\.{\ }' denotes a blank space. A module ends
+at the beginning of the next module (i.e., at the next
+`\.{@\ }' or `\.{@*}'), or at the end of the file, whichever comes first.
+The \.{WEB} file may also contain material that is not part of any module
+at all, namely the text (if any) that occurs before the first module.
+Such text is said to be ``in limbo''; it is ignored by \.{TANGLE}
+and copied essentially verbatim by \.{WEAVE}, so its function is to
+provide any additional formatting instructions that may be desired in the
+\TeX\ output. Indeed, it is customary to begin a \.{WEB} file with
+\TeX\ code in limbo that loads special fonts, defines special macros,
+changes the page sizes, and/or produces a title page.
+
+Modules are numbered consecutively, starting with 1; these numbers appear
+at the beginning of each module of the \TeX\ documentation, and they appear
+as bracketed comments at the beginning of the code generated by that
+module in the \PASCAL\ program.
+
+Fortunately, you never mention these numbers yourself when you are writing
+in \.{WEB}. You just say `\.{@\ }' or `\.{@*}' at the beginning of each
+new module, and the numbers are supplied automatically by \.{WEAVE} and
+\.{TANGLE}. As far as you are concerned, a module has a
+{\sl name\/} instead of a number; such a name is specified by writing
+`\.{@<}' followed by \TeX\ text followed by `\.{@>}'. When \.{WEAVE}
+outputs a module name, it replaces the `\.{@<}' and `\.{@>}' by
+angle brackets and inserts the module number in small type. Thus, when you
+read the output of \.{WEAVE} it is easy to locate any module that is
+referred to in another module.
+
+For expository purposes, a module name should be a good description of the
+contents of that module; i.e., it should stand for the abstraction
+represented by the module. Then the module can be ``plugged into'' one or
+more other modules in such a way
+that unimportant details of its inner workings
+are suppressed. A module name therefore ought to be long enough to convey
+the necessary meaning. Unfortunately, however, it is laborious to type
+such long names over and over again, and it is also difficult to specify a
+long name twice in exactly the same way so that \.{WEAVE} and \.{TANGLE}
+will be able to match the names to the modules. To ameliorate this difficulty,
+\.{WEAVE} and \.{TANGLE} let you abbreviate a module name
+after its first appearance in the \.{WEB} file; you can type simply
+`\.{@<$\alpha$...@>}', where $\alpha$ is any string that is a prefix of
+exactly one module name appearing in the file. For example, `\.{@<Clear
+the arrays@>}' can be abbreviated to `\.{@<Clear...@>}' if no other module
+name begins with the five letters `\.{Clear}'. Module names must otherwise
+match character for character, except that consecutive blank spaces and/or
+tab marks are treated as equivalent to single spaces, and such spaces are
+deleted at the beginning and end of the name. Thus, `\.{@< Clear { }the
+arrays @>}' will also match the name in the previous example.
+
+We have said that a module begins with `\.{@\ }' or `\.{@*}', but we
+didn't say how it gets divided up into a \TeX\ part, a definition part,
+and a \PASCAL\ part. The definition part begins with the first appearance
+of `\.{@d}' or `\.{@f}' in the module, and the \PASCAL\ part begins with
+the first appearance of `\.{@p}' or `\.{@<}'. The latter option `\.{@<}'
+stands for the beginning of a module name, which is the name of the module
+itself. An equals sign (\.=) must follow the `\.{@>}' at the end of this
+module name; you are saying, in effect, that the module name stands for
+the \PASCAL\ text that follows, so you say `$\langle\,$module
+name$\,\rangle=\null$\PASCAL\ text'. Alternatively, if the \PASCAL\ part
+begins with `\.{@p}' instead of a module name, the current module is said
+to be {\sl unnamed}. Note that module names cannot appear in the
+definition part of a module, because the first `\.{@<}' in a module
+signals the beginning of its \PASCAL\ part. But any number of module names
+might appear in the \PASCAL\ part, once it has started.
+
+The general idea of \.{TANGLE} is to make a \PASCAL\ program out of these
+modules in the following way: First all the \PASCAL\ parts of unnamed
+modules are copied down, in order; this constitutes the initial
+approximation $T_0$ to the text of the program. (There should be at least
+one unnamed module, otherwise there will be no program.) Then all module
+names that appear in the initial text $T_0$ are replaced by the \PASCAL\
+parts of the corresponding modules, and this substitution process
+continues until no module names remain. Then all defined macros are
+replaced by their equivalents, according to certain rules that are
+explained later. The resulting \PASCAL\ code is ``sanitized'' so that it
+will be acceptable to an average garden-variety \PASCAL\ compiler; i.e.,
+lowercase letters are converted to uppercase, long identifiers are
+chopped, and the lines of the output file are constrained to be at most 72
+characters long. All comments will have been removed from this \PASCAL\
+program except for the meta-comments delimited by `\.{@\{}' and
+`\.{@\}}', as explained below, and except for the module-number comments
+that point to the source location where each piece of the program text
+originated in the \.{WEB} file.
+
+If the same name has been given to more than one module, the \PASCAL\ text
+for that name is obtained by putting together all of the \PASCAL\ parts in
+the corresponding modules. This feature is useful, for example, in a
+module named `Global variables in the outer block', since one can then
+declare global variables in whatever modules those variables are
+introduced. When several modules have the same name, \.{WEAVE} assigns the
+first module number as the number corresponding to that name, and it
+inserts a note at the bottom of that module telling the reader to `See
+also sections so-and-so'; this footnote gives the numbers of all the other
+modules having the same name as the present one. The \PASCAL\ text
+corresponding to a module is usually formatted by \.{WEAVE} so that the
+output has an equivalence sign in place of the equals sign in the \.{WEB}
+file; i.e., the output says `$\langle\,$module
+name$\,\rangle\equiv\null$\PASCAL\ text'. However, in the case of the second
+and subsequent appearances of a module with the same name, this `$\equiv$'
+sign is replaced by `$\mathrel+\equiv$', as an indication that the \PASCAL\
+text that follows is being appended to the \PASCAL\ text of another
+module.
+
+The general idea of \.{WEAVE} is to make a \.{TEX} file from the \.{WEB}
+file in the following way: The first line of the \.{TEX} file will be
+`\.{\\input webmac}'; this will cause \TeX\ to read in the macros that
+define \.{WEB}'s documentation conventions. The next lines of the file
+will be copied from whatever \TeX\ text is in limbo before the first
+module. Then comes the output for each module in turn, possibly
+interspersed with end-of-page marks. Finally, \.{WEAVE} will generate a
+cross-reference index that lists each module number in which each \PASCAL\
+identifier appears, and it will also generate an alphabetized list
+of the module names, as well as a table of contents that
+shows the page and module numbers for each ``starred'' module.
+
+What is a ``starred'' module, you ask? A module that begins with `\.{@*}'
+instead of `\.{@\ }' is slightly special in that it denotes a new major
+group of modules. The `\.{@*}' should be followed by the title of this
+group, followed by a period. Such modules will always start on a new page
+in the \TeX\ output, and the group title will appear as a running headline
+on all subsequent pages until the next starred module. The title will also
+appear in the table of contents, and in boldface type at the beginning of
+its module. Caution: Do not use \TeX\ control sequences in such titles,
+unless you know that the \.{webmac} macros will do the right thing with
+them. The reason is that these titles are converted to uppercase when
+they appear as running heads, and they are converted to boldface when they
+appear at the beginning of their modules, and they are also written out to
+a table-of-contents file used for temporary storage while \TeX\ is
+working; whatever control sequences you use must be meaningful in all
+three of these modes.
+
+The \TeX\ output produced by \.{WEAVE} for each module consists of
+the following: First comes the module number (e.g., `\.{\\M123.}'
+at the beginning of module 123, except that `\.{\\N}' appears in place of
+`\.{\\M}' at the beginning of a starred module). Then comes the
+\TeX\ part of the module, copied almost verbatim except as noted
+below. Then comes the definition part and the \PASCAL\ part, formatted
+so that there will be a little extra space between them if both are
+nonempty. The definition and \PASCAL\ parts are obtained by inserting
+a bunch of funny looking \TeX\ macros into the \PASCAL\ program; these
+macros handle typographic details about fonts and proper math spacing,
+as well as line breaks and indentation.
+
+When you are typing \TeX\ text, you will probably want to make frequent
+reference to variables and other quantities in your \PASCAL\ code, and you
+will want those variables to have the same typographic treatment
+when they appear in your text as when they appear in your
+program. Therefore the \.{WEB} language allows you to get the effect of
+\PASCAL\ editing within \TeX\ text, if you place `\.|' marks before and
+after the \PASCAL\ material. For example, suppose you want to say something
+like this:
+$$\hbox{The characters are placed into \\{buffer}, which is a
+\&{packed} \&{array} $[1\to\|n]$ \&{of} \\{char}.}$$
+The \TeX\ text would look like this in your \.{WEB} file:
+$$\.{The characters are placed into |buffer|, which is a |packed
+array [1..n] of char|.}$$
+And \.{WEAVE} translates this into something you are glad you didn't have
+to type:
+$$\lpile{\.{The characters are placed into \\\\\{buffer\},}\cr
+ \.{which is a \\\&\{packed\}{ }\\\&\{array\}{ }\$
+ [1\\to\\|n]\${ }\\\&\{of\}{ }\\\\\{char\}.}\cr}$$
+Incidentally, the cross-reference index that \.{WEAVE} would make, in
+the presence of a comment like this, would include
+the current module number as one of the index entries for \\{buffer}
+\vadjust{\eject}% page break inserted Dec 88
+and \\{char}, even though \\{buffer} and \\{char}
+might not appear in the \PASCAL\ part of
+this module. Thus, the index covers references to identifiers in
+the explanatory comments as well as in the program itself; you will
+soon learn to appreciate this feature. However, the identifiers
+\&{packed} and \&{array} and \|n\ and \&{of\/} would not be indexed,
+because \.{WEAVE} does not make index entries for reserved words or
+single-letter identifiers. Such identifiers are felt to be so ubiquitous
+that it would be pointless to mention every place where they occur.
+
+Speaking of identifiers, the author of \.{WEB} thinks that
+\\{IdentifiersSeveralWordsLong} look terribly ugly when they mix
+uppercase and lowercase letters. He recommends that
+\\{identifiers\_several\_words\_long} be written with underline characters
+to get a much better effect. The actual identifiers sent to the \PASCAL\
+compiler by \.{TANGLE} will have such underlines removed, and \.{TANGLE}
+will check to make sure that two different identifiers do not become
+identical when this happens. (In fact, \.{TANGLE} even checks that
+the first seven characters of identifiers are unique, when lowercase
+letters have been converted to uppercase; the number seven in this
+constraint is more strict than \PASCAL's eight, and it can
+be changed if desired.) The \.{WEAVE} processor will properly
+alphabetize identifiers that have embedded underlines
+when it makes the index.
+
+Although a module begins with \TeX\ text and ends with \PASCAL\ text, we
+have noted that the dividing line isn't sharp, since \PASCAL\ text can be
+included in \TeX\ text if it is enclosed in `\pb'. Conversely, \TeX\ text
+also appears frequently within \PASCAL\ text, because everything in
+comments (i.e., between left and right braces) is treated as \TeX\ text.
+Furthermore, a module name consists of \TeX\ text; thus, a \.{WEB} file
+typically involves constructions like `\.{if} \.x \.= \.0 \.{then}
+\.{@<Empty} \.{the} \.{|buffer|} \.{array@>}' where we go back and forth
+between \PASCAL\ and \TeX\ conventions in a natural way.
+ \section Macros.
+A \.{WEB} programmer can define three kinds of macros to make the programs
+shorter and more readable:
+
+\yskip\hang`\.{@d} \\{identifier} \.= \\{constant}' defines a {\sl numeric\/}
+macro, allowing \.{TANGLE} to do rudimentary arithmetic.
+
+\yskip\hang`\.{@d} \\{identifier} \.{==} \PASCAL\ text' defines a {\sl
+simple\/} macro, where the identifier will be replaced by the \PASCAL\ text
+when \.{TANGLE} produces its output.
+
+\yskip\hang`\.{@d} \\{identifier}\.{(\#) ==} \PASCAL\ text' defines a
+{\sl parametric\/} macro, where the identifier will be replaced by the \PASCAL\
+text and where occurrences of \.{\#} in that \PASCAL\ text will be
+replaced by an argument.
+
+\yskip\noindent In all three cases, the identifier must have length greater
+than one; it must not be a single letter.
+
+Numeric macros are subject to the following restrictions:\quad
+(1)~The identifier must
+be making its first appearance in the \.{WEB} file;
+a numeric macro must be defined before it is used.\quad
+(2)~The right-hand side of the numeric definition must be made entirely from
+integer constants, numeric macros, preprocessed strings (see below), and
+plus~signs or minus signs. No other operations or symbols are allowed,
+not even parentheses, except that \PASCAL-like comments (enclosed in
+braces) can appear. Indeed, comments are recommended, since it is usually
+wise to give a brief explanation of the significance of each identifier as
+it is defined.\quad
+(3)~The numeric value must be less than $2^{15}=32768$ in absolute value.
+(For larger values, you can use `\.{==}' in place of~`\.=', thus making use
+of a simple macro instead of a numeric one. Note, however, that simple
+macros sometimes have a different effect. For example, consider the three
+definitions `\.{@d n1=2 @d n2=2+n1 @d n3==2+n1}'; then `\.{x-n2}' will
+expand into `\.{x-4}', while `\.{x-n3}' will expand into `\.{x-2+2}' which
+is quite different! It is wise to include parentheses in non-numeric
+macros, e.g., `\.{@d n3==(2+n1)}', to avoid such errors.)
+
+When constants are connected by plus signs or minus
+signs in a \PASCAL\ program, \.{TANGLE} does the arithmetic before putting
+the constant into the output file. Therefore it is permissible to say, for
+example, `\&{array} $[0\,.\,.\,\\{size}-1]$' if \\{size} has been declared
+as a macro; note that \PASCAL\ doesn't allow this kind of compile-time
+arithmetic if \\{size} is a \&{constant} quantity in the program. Another
+use of \.{TANGLE}'s arithmetic is to make \&{case} statement labels such
+as `$\\{flag}+1$' legitimate. Of course, it is improper to change \.{2+2}
+into \.4 without looking at the surrounding context; many counterexamples
+exist, such as the phrases `\.{-2+2}', `\.{x/2+2}', and `\.{2+2E5}'. The
+program for \.{TANGLE}, in the appendix, gives precise details about this
+conversion, which \.{TANGLE} does only when it is safe.
+
+The right-hand sides of simple and parametric macros
+are required to have balanced parentheses, and the \PASCAL\ texts of
+modules must have balanced parentheses too. Therefore when the argument
+to a para\-metric macro appears in parentheses, both parentheses
+will belong to the same \PASCAL\ text.
+
+The appendices to this report contain hundreds of typical examples of the
+usefulness of \.{WEB} macros, so it is not necessary to dwell on the
+subject here. However, the reader should know that \.{WEB}'s apparently
+primitive macro capabilities can actually do a lot of rather surprising
+things. Here is a construction that sheds further light on what is
+possible: After making the definitions
+$$\catcode`\#=12
+\lpile{\.{@d two\_cases(#)==case j of 1:#(1); 2:#(2); end}\cr
+\.{@d reset\_file(#)==reset(input\_file@\&#)}\cr}$$
+one can write `\.{two\_cases(reset\_file)}' and the resulting \PASCAL\
+output will be
+$$\.{case j of 1:reset(input\_file1); 2:reset(input\_file2); end}$$
+(but in uppercase letters and with \.\_'s removed).
+The `\.{@\&}' operation used here joins together two adjacent tokens
+into a single token, as explained later; otherwise the \PASCAL\ file would
+contain a space between \.{input\_file} and the digit that followed it.
+This trick can be used to provide the effect of an array of files, if you
+are unfortunate enough to have a \PASCAL\ compiler that doesn't allow such
+arrays. Incidentally, the cross-reference index made by \.{WEAVE} from
+this example would contain the identifier \\{input\_file} but it would not
+contain \\{input\_file1} or \\{input\_file2}. Furthermore, \.{TANGLE}
+would not catch the error that \.{INPUTFILE1} and \.{INPUTFILE2} both
+begin with the same nine letters; one should be more careful when using
+`\.{@\&}'! But such aspects of the construction in this trick are
+peripheral to our main point, which is that a parametric macro name without
+arguments can be used as an argument to another parametric macro.
+
+Although \.{WEB}'s macros are allowed to have at most one parameter, the
+following example shows that this is not as much of a restriction as it
+may seem at first. Let \\{amac} and \\{bmac} be any parametric macros, and
+suppose that we want to get the effect of
+$$\catcode`\#=12
+\.{@d cmac(#1,#2) == amac(#1) bmac(#2)}$$
+which \.{WEB} doesn't permit. The solution is to make the definitions
+$$\catcode`\#=12
+\lpile{\.{@d cmac(#) == amac(#) dmac}\cr
+\.{@d dmac(#) == bmac(#)}\cr}$$
+and then to say `\.{cmac(x)(y)}'.
+
+There is one restriction in the generality of \.{WEB}'s parametric
+macros, however: the argument to a para\-metric macro must not come from
+the expansion of a macro that has not already been ``started.'' For
+example, here is one of the things \.{WEB} cannot handle:
+$$\catcode`\#=12
+\lpile{\.{@d arg == (p)}\cr
+\.{@d identity(#) == #}\cr
+\.{@p identity arg}\cr}$$
+In this case \.{TANGLE} will complain that the \.{identity} macro is not
+followed by an argument in parentheses.
+
+The \.{WEB} language has another feature that is somewhat similar to a
+numeric macro. A {\sl preprocessed string\/} is a string that is like
+a \PASCAL\ string but delimited by double-quote marks (\.") instead of
+single-quotes. Double-quote marks inside of such strings are indicated by
+giving two double-quotes in a row. If a preprocessed string is
+of length one (e.g., \.{"A"} or \.{""""}), it will be treated by \.{TANGLE}
+as equivalent to the corresponding ASCII-code integer (e.g., \.{65} or
+\.{34}). And if a preprocessed string is not of length one, it will be
+converted into an integer equal to 256 or more. A {\sl string pool\/}
+containing all such strings will be written out by the \.{TANGLE}
+processor; this string pool file consists of string 256, then string 257,
+etc., where each string is followed by an end-of-line and prefixed by two
+decimal digits that define its length. Thus, for example, the empty string
+\.{""} would be represented in the string pool file by a line containing
+the two characters `\.{00}', while the string \.{"""String"""} would be
+represented by `\.{08"String"}'. A given string appears at most once in
+the string pool; the use of such a pool makes it easier to cope with
+\PASCAL's restrictions on string manipulation. The string pool ends with
+`\.{*nnnnnnnnn}', where \.{nnnnnnnnn} is a decimal number
+called the {\sl string pool check sum}. If any string changes, the check
+sum almost surely changes too; thus, the `\.{@\$}' feature
+described below makes it possible for a program to assure itself that it
+is reading its own string pool.
+
+Here is a simple example that combines numeric macros with preprocessed
+strings of length one:
+$$\lpile{\.{@d upper\_case\_Y = "Y"}\cr
+\.{@d case\_difference = -"y"+upper\_case\_Y}\cr}$$
+The result is to define
+$\\{upper\_case\_Y}=89$, $\\{case\_difference}=-32$.
+ \section Control codes.
+We have seen several magic uses of `\.{@}' signs in \.{WEB} files, and it
+is time to make a systematic study of
+these special features. A \.{WEB} {\sl control code\/}
+is a two-character combination of which the first is `\.@'.
+
+Here is a complete list of the legal control codes. The letters $L$, $T$,
+$P$, $M$, $C$, and/or $S$ following each code indicate whether or not that
+code is allowable in limbo, in \TeX\ text, in \PASCAL\ text, in module
+names, in comments, and/or in strings. A bar over such a letter means
+that the control code terminates the present part of the \.{WEB} file; for
+example, $\overline L$ means that this control code ends the limbo material
+before the first module.
+
+\def\@#1[#2] {\yskip\hangindent 2em\noindent\.{@#1\unskip
+ \spacefactor1000{ }}$[#2]$\quad}
+\def\oP{\overline P}
+\def\oT{\overline T\mskip1mu}
+
+\@@ [C,L,M,P,S,T] A double \.@ denotes the single character `\.@'. This is
+the only control code that is legal in limbo, in comments, and in strings.
+
+\@\ [\overline L,\oP,\oT] This denotes the beginning of a new
+(unstarred) module. A tab mark or end-of-line (carriage return)
+is equivalent to a space when it follows an \.@ sign.
+
+\@* [\overline L,\oP,\oT] This denotes the beginning of a new starred
+module, i.e., a module that begins a new major group. The title of the new
+group should appear after the \.{@*}, followed by a period. As explained
+above, \TeX\ control sequences should be avoided in such titles unless
+they are quite simple. When \.{WEAVE} and \.{TANGLE} read a \.{@*}, they
+print an asterisk on the terminal
+followed by the current module number, so that the user
+can see some indication of progress. The very first module should be starred.
+
+\@d [\oP,\oT] Macro definitions begin with \.{@d} (or \.{@D}), followed by
+the \PASCAL\ text for one of the three kinds of macros, as explained
+earlier.
+
+\@f [\oP,\oT] Format definitions begin with \.{@f} (or \.{@F}); they cause
+\.{WEAVE} to treat identifiers in a special way when they appear in
+\PASCAL\ text. The general form of a format definition is `\.{@f} \|l \.{==}
+\|r', followed by an optional comment enclosed in braces, where \|l and \|r
+are identifiers; \.{WEAVE} will subsequently treat identifier \|l as it
+currently treats \|r. This feature allows a \.{WEB} programmer to invent
+new reserved words and/or to unreserve some of \PASCAL's reserved
+identifiers. The definition part of each module consists of any number of
+macro definitions (beginning with \.{@d}) and format definitions (beginning
+with \.{@f}), intermixed in any order.
+
+\@p [\oP,\oT] The \PASCAL\ part of an unnamed module begins with \.{@p}
+(or \.{@P}). This causes \.{TANGLE} to append the following \PASCAL\ code
+to the initial program text $T_0$ as explained above. The \.{WEAVE}
+processor does not cause a `\.{@p}' to appear explicitly in the \TeX\
+output, so if you are creating a \.{WEB} file based on a \TeX-printed
+\.{WEB} documentation you have to remember to insert \.{@p} in the
+appropriate places of the unnamed modules.
+
+\@< [P,\oT] A module name begins with \.{@<} followed by \TeX\ text followed
+by \.{@>}; the \TeX\ text should not contain any \.{WEB} control codes
+except \.{@@}, unless these control codes appear in \PASCAL\ text that
+is delimited by \pb. The module name may be abbreviated, after its first
+appearance in a \.{WEB} file, by giving any unique prefix followed by \.{...},
+where the three dots immediately precede the closing \.{@>}. No module name
+should be a prefix of another. Module names may not appear in \PASCAL\
+text that is enclosed in \pb, nor may they appear in the definition part
+of a module (since the appearance of a module name ends the definition
+part and begins the \PASCAL\ part).
+
+\@\' [P,T] This denotes an octal constant, to be formed from the
+succeeding digits. For example, if the \.{WEB} file contains `\.{@\'100}',
+the \.{TANGLE} processor will treat this an equivalent to `\.{64}';
+the constant will be formatted as ``\O{100}'' in the \TeX\ output
+produced via \.{WEAVE}. You should use octal notation only for positive
+constants; don't try to get, e.g., $-1$ by saying `\.{@\'777777777777}'.
+
+\@" [P,T] A hexadecimal constant; `\.{@"D0D0}' tangles to \.{53456} and
+weaves to `\H{D0D0}'.
+
+\@\$ [P] This denotes the string pool check sum.
+
+\@\{ [P] The beginning of a ``meta comment,'' i.e., a comment
+that is supposed to appear in the \PASCAL\ code, is indicated by
+\.{@\{} in the \.{WEB} file. Such delimiters can be used as
+isolated symbols in macros or modules, but they should be properly nested
+in the final \PASCAL\ program. The \.{TANGLE} processor will convert
+`\.{@\{}' into `\.\{' in the \PASCAL\ output file, unless
+the output is already part of a meta-comment; in the latter case
+`\.{@\{}' is converted into `\.[', since \PASCAL\ does not allow
+nested comments. Incidentally, module numbers are automatically inserted
+as meta-comments into the \PASCAL\ program, in order to help correlate the
+outputs of \.{WEAVE} and \.{TANGLE} (see Appendix~C\null). Meta-comments
+can be used to put conditional text into a \PASCAL\ program; this helps to
+overcome one of the limitations of \.{WEB}, since the simple macro
+processing routines of \.{TANGLE} do not include the dynamic evaluation of
+boolean expressions.
+
+\@\} [P] The end of a ``meta comment'' is indicated by `\.{@\}}'; this is
+converted either into `\.\}' or `\.{]}' in the \PASCAL\ output, according
+to the conventions explained for \.{@\{} above.
+
+\@\& [P] The \.{@\&} operation causes whatever is on its left to be
+adjacent to whatever is on its right, in the \PASCAL\ output. No spaces or
+line breaks will separate these two items. However, the thing on the left
+should not be a semicolon, since a line break might occur after a semicolon.
+
+\@\^ [P,T] The ``control text'' that follows, up to the next
+`\.{@>}', will be entered into the index together with the identifiers of
+the \PASCAL\ program; this text will appear in roman type. For example, to
+put the phrase ``system dependencies'' into the index, you can type
+`\.{@\^system dependencies@>}' in each module
+that you want to index as system dependent. A control text, like a string,
+must end on the same line of the \.{WEB} file as it began. Furthermore,
+no \.{WEB} control codes are allowed in a control text, not even
+\.{@@}. (If you need an \.{@} sign you can get around this restriction by
+typing `\.{\\AT!}'.)
+
+\@. [P,T] The ``control text'' that follows will be entered into the index
+in \.{typewriter} \.{type}; see the rules for `\.{@\^}', which is analogous.
+
+\@: [P,T] The ``control text'' that follows will be entered into the index
+in a format controlled by the \TeX\ macro `\.{\\9}', which the user
+should define as desired; see the rules for `\.{@\^}', which is analogous.
+
+\@t [P] The ``control text'' that follows, up to the next `\.{@>}', will
+be put into a \TeX\ \.{\\hbox} and formatted along with the neighboring
+\PASCAL\ program. This text is ignored by \.{TANGLE}, but it can be used
+for various purposes within \.{WEAVE}. For example, you can make comments
+that mix \PASCAL\ and classical mathematics, as in `$\\{size}<2^{15}$', by
+typing `\.{|size < @t\$2\^\{15\}\$@>|}'. A control text must end on the
+same line of the \.{WEB} file as it began, and it may not contain any
+\.{WEB} control codes.
+
+\@= [P] The ``control text'' that follows, up to the next `\.{@>}', will
+be passed verbatim to the \PASCAL\ program.
+
+\@\\ [P] Force end-of-line here in the \PASCAL\ program file.
+
+\@! [P,T] The module number in an index entry will be underlined if `\.{@!}'
+immediately precedes the identifier or control text being indexed. This
+convention is used to distinguish the modules where an identifier is
+defined, or where it is explained in some special way, from the modules
+where it is used. A~reserved word or an identifier of length one will not
+be indexed except for underlined entries. An `\.{@!}' is implicitly inserted
+by \.{WEAVE} just after the reserved words \&{function}, \&{procedure},
+\&{program}, and \&{var}, and just after \.{@d} and \.{@f}. But you should
+insert your own `\.{@!}' before the definitions of types, constants,
+variables, parameters, and components of records and enumerated types that
+are not covered by this implicit convention, if you want to improve the
+quality of the index that you get.
+
+\@? [P,T] This cancels an implicit (or explicit) `\.{@!}', so that the next
+index entry will not be underlined.
+
+\@, [P] This control code inserts a thin space in \.{WEAVE}'s output; it is
+ignored by \.{TANGLE}. Sometimes you need this extra space if you are using
+macros in an unusual way, e.g., if two identifiers are adjacent.
+
+\@/ [P] This control code causes a line break to occur within a \PASCAL\
+program formatted by \.{WEAVE}; it is ignored by \.{TANGLE}. Line breaks
+are chosen automatically by \TeX\ according to a scheme that works 99\%\
+of the time, but sometimes you will prefer to force a line break so that
+the program is segmented according to logical rather than visual criteria.
+Caution: `\.{@/}' should be used only after statements or clauses, not in
+the middle of an expression; use \.{@|} in the middle of expressions, in
+order to keep \.{WEAVE}'s parser happy.
+
+\@| [P] This control code specifies an optional line break in the midst of
+an expression. For example, if you have a long condition between \&{if} and
+\&{then}, or a long expression on the right-hand side of an assignment
+statement, you can use `\.{@|}' to specify breakpoints more logical than
+the ones that \TeX\ might choose on visual grounds.
+
+\@\# [P] This control code forces a line break, like \.{@/} does,
+and it also causes a little extra white space to appear between the lines at
+this break. You might use it, for example, between procedure definitions or
+between groups of macro definitions that are logically separate but within
+the same module.
+
+\@+ [P] This control code cancels a line break that might otherwise be
+inserted by \.{WEAVE}, e.g., before the word `\&{else}', if you want to
+put a short if-then-else construction on a single line. It is ignored by
+\.{TANGLE}.
+
+\@; [P] This control code is treated like a semicolon, for formatting
+purposes, except that it is invisible. You can use it, for example, after
+a module name when the \PASCAL\ text represented by that module name ends
+with a semicolon.
+
+\yskip\noindent
+The last six control codes (namely `\.{@,}', `\.{@/}', `\.{@|}',
+`\.{@\#}', `\.{@+}', and `\.{@;}') have no effect on the \PASCAL\
+program output by \.{TANGLE}; they merely help to improve the readability
+of the \TeX-formatted \PASCAL\ that is output by \.{WEAVE}, in unusual
+circumstances. \.{WEAVE}'s built-in formatting method is fairly good, but
+it is incapable of handling all possible cases, because it must deal with
+fragments of text involving macros and module names; these fragments do
+not necessarily obey \PASCAL's syntax. Although \.{WEB} allows you to
+override the automatic formatting, your best strategy is not to worry
+about such things until you have seen what \.{WEAVE} produces automatically,
+since you will probably need to make only a few corrections when you are
+touching up your documentation.
+
+Because of the rules by which every module is broken into three parts,
+the control codes `\.{@d}', `\.{@f}', and `\.{@p}' are not allowed to occur
+once the \PASCAL\ part of a module has begun.
+ \section Additional features and caveats.
+
+1. The character pairs `\.{(*}', `\.{*)}', `\.{(.}', and `\.{.)}' are
+converted automatically in \PASCAL\ text as though they were
+`\.{@\{}', `\.{@\}}', `\.[', and `\.]', respectively, except
+of course in strings. Furthermore in certain installations of \.{WEB} that
+{\def\\#1#2{`{\tentex\char'#1#2}'}%
+have an extended character set, the characters \\32, \\34, \\35, \\30,
+\\36, \\04, \\37, \\05, and \\06}
+can be typed as abbreviations for
+`\.{<>}', `\.{<=}', `\.{>=}', `\.{:=}', `\.{==}', `\.{and}', `\.{or}',
+`\.{not}', and `\.{in}', respectively. However, the latter abbreviations
+are not used in the standard versions of \.{WEAVE.WEB} and \.{TANGLE.WEB}
+that are distributed to people who are installing \.{WEB} on other
+computers, and the programs are designed to produce only standard ASCII
+characters as output if the input consists entirely of ASCII characters.
+
+2. If you have an extended character set, all of the characters listed
+in Appendix C of {\sl The \TeX book\/} can be used in strings. But you should
+stick to standard ASCII characters if you want to write programs that will
+be useful to all the poor souls out there who don't have extended
+character sets.
+
+3. The \TeX\ file output by \.{WEAVE} is broken into lines having at most
+80 characters each. The algorithm that does this line breaking is unaware
+of \TeX's convention about comments following `\.\%' signs on a line. When
+\TeX\ text is being copied, the existing line breaks are copied as well,
+so there is no problem with `\.\%' signs unless the original \.{WEB} file
+contains a line more than eighty characters long or a line with \PASCAL\
+text in \pb\ that expands to more than eighty characters long. Such lines
+should not have `\.\%' signs.
+
+4. \PASCAL\ text is translated by a ``bottom up'' procedure that
+identifies each token as a ``part of speech'' and combines parts of speech
+into larger and larger phrases as much as possible according to a special
+grammar that is explained in the documentation of \.{WEAVE}. It is easy to
+learn the translation scheme for simple constructions like single
+identifiers and short expressions, just by looking at a few examples of
+what \.{WEAVE} does, but the general mechanism is somewhat complex because
+it must handle much more than \PASCAL\ itself. Furthermore the output
+contains embedded codes that cause \TeX\ to indent and break lines as
+necessary, depending on the fonts used and the desired page width. For
+best results it is wise to adhere to the following restrictions:
+
+\yskip\itemitem{a)}Comments in \PASCAL\ text should appear only after
+statements or clauses; i.e., after semicolons, after reserved words like
+\&{then} and \&{do}, or before reserved words like \&{end} and \&{else}.
+Otherwise \.{WEAVE}'s parsing method may well get mixed up.
+
+\itemitem{b)}Don't enclose long \PASCAL\ texts in \pb, since the
+indentation and line breaking codes are omitted when the \pb\ text is
+translated from \PASCAL\ to \TeX. Stick to simple expressions or
+statements.
+
+\yskip
+5. Comments and module names are not permitted in \pb\ text. After a `\.|'
+signals the change from \TeX\ text to \PASCAL\ text, the next `\.|' that is
+not part of a string or control text ends the \PASCAL\ text.
+
+6. A comment must have properly nested occurrences of left and right
+braces, otherwise \.{WEAVE} and \.{TANGLE} will not know where the comment
+ends. However, the character pairs `\.{\\\{}' and `\.{\\\}}' do not count
+as left and right braces in comments, and the character pair `\.{\\|}'
+does not count as a delimiter that begins \PASCAL\ text. (The actual rule
+is that a character after `\.\\' is ignored; hence in `\.{\\\\\{}' the
+left brace {\sl does\/} count.) At present, \.{TANGLE} and \.{WEAVE} treat
+comments in slightly different ways, and it is necessary to satisfy both
+conventions: \.{TANGLE} ignores `\.|' characters entirely, while \.{WEAVE}
+uses them to switch between \TeX\ text and \PASCAL\ text. Therefore, a
+comment that includes a brace in a string in \pb---e.g., `\.{\{{ }look at
+this |"\{"| \}}'---will be handled correctly by \.{WEAVE}, but \.{TANGLE}
+will think there is an unmatched left brace. In order to satisfy both
+processors, one can write `\.{\{{ }look at this \\leftbrace\\{ }\}}', after
+setting up`\.{\\def\\leftbrace\{|"\{"|\}}'.
+
+7. Reserved words of \PASCAL\ must appear entirely in lowercase letters
+in the \.{WEB} file; otherwise their special nature will not be recognized
+by \.{WEAVE}. You could, for example, have a macro named \\{END} and it
+would not be confused with \PASCAL's \&{end}.
+
+However, you may not want to capitalize macro names just to distinguish them
+from other identifiers. Here is a way to unreserve \PASCAL's reserved word
+`\&{type}' and to substitute another word `\&{mtype}' in the \.{WEB} file.
+$$\vbox{\halign{\tt #\hfil\cr
+@d type(\char'43) == mem[\char'43].t\cr
+@d mtype == t \char'100\char'46{} y \char'100\char'46{} p
+ \char'100\char'46{} e\cr
+@f mtype == type\cr
+@f type == true\cr}}$$
+In the output of \.{TANGLE}, the macro \.{mtype} now produces `\.{TYPE}'
+and the macro \.{type(x)} now produces `\.{MEM[X].T}'. In the output of
+\.{WEAVE}, these same inputs produce \&{mtype} and \\{type}(\|x),
+respectively.
+
+8. The \.{@f} feature allows you to define one identifier to act like
+another, and these format definitions are carried out sequentially, as the
+example above indicates. However, a given identifier has only one printed format
+throughout the entire document (and this format will even be used before
+the \.{@f} that defines it). The reason is that \.{WEAVE} operates in two
+passes; it processes \.{@f}'s and cross-references on the first pass and
+it does the output on the second.
+
+9. You may want some \.{@f} formatting that doesn't correspond to any
+existing reserved word. In that case, \.{WEAVE} could be extended in a
+fairly obvious way to include new ``reserved words'' in its vocabulary.
+The identifier `\&{xclause}' has in fact been included already as a
+reserved word, so that it can be used to format the `\&{loop}' macro,
+where `\&{loop}' is defined to be equivalent to `\&{while \\{true} do}'.
+
+10. Sometimes it is desirable to insert spacing into \PASCAL\ code that is
+more general than the thin space provided by `\.{@,}'. The \.{@t} feature
+can be used for this purpose; e.g., `\.{@t\\hskip 1in@>}' will
+leave one inch of blank space. Furthermore, `\.{@t\\4@>}' can be
+used to backspace by one unit of indentation, since the control sequence
+\.{\\4} is defined in \.{webmac} to be such a backspace. (This
+control sequence is used, for example, at the beginning of lines that
+contain labeled statements, so that the label will stick out a little at
+the left.)
+
+11. \.{WEAVE} and \.{TANGLE} are designed to work with two input files,
+called \\{web\_file} and \\{change\_file}, where \\{change\_file} contains
+data that overrides selected portions of \\{web\_file}. The resulting merged
+text is actually what has been called the \.{WEB} file elsewhere in this
+report.
+
+Here's how it works: The change file consists of zero or more ``changes,''
+where a change has the form `\.{@x}$\langle$old lines$\rangle$\.{@y}$\langle$%
+new lines$\rangle$\.{@z}'. The special control codes \.{@x}, \.{@y}, \.{@z},
+which are allowed only in change files, must appear at the beginning of a line;
+the remainder of such a line is ignored.
+The $\langle$old lines$\rangle$ represent material that exactly matches
+consecutive lines of the \\{web\_file}; the $\langle$new lines$\rangle$
+represent zero or more lines that are supposed to replace the old. Whenever
+the first ``old line'' of a change is found to match a line in the
+\\{web\_file}, all the other lines in that change must match too.
+
+Between changes, before the first change, and after the last change,
+the change file can have any number of lines that do not begin with
+`\.{@x}', `\.{@y}', or~`\.{@z}'. Such lines are bypassed and not used for
+matching purposes.
+
+This dual-input feature is useful when working with a master \.{WEB} file
+that has been received from elsewhere (e.g., \.{TANGLE.WEB} or
+\.{WEAVE.WEB} or \.{TEX.WEB}), when changes are desirable to customize the
+program for your local computer system. You will be able to debug your
+system-dependent changes without clobbering the master web file; and once
+your changes are working, you will be able to incorporate them readily
+into new releases of the master web file that you might receive from time
+to time.
+ \section Appendices.
+The basic ideas of \.{WEB} can be understood most easily by looking at
+examples of ``real'' programs. Appendix~A shows the \.{WEB} input that
+generated modules 55--59 of the \.{WEAVE} program; Appendix~B shows the
+corresponding \TeX\ code output by \.{WEAVE}; and Appendix~C shows excerpts
+from the corresponding \PASCAL\ code output by \.{TANGLE}.
+
+The complete webs for \.{WEAVE} and \.{TANGLE} appear as the bulk of this
+report, in Appendices D and~E. The reader should first compare Appendix~A
+to the corresponding portion of Appendix~D; then the same material should
+be compared to Appendices B and~C. Finally, if time permits, the reader may
+enjoy studying the complete programs in Appendices D and~E, since \.{WEAVE}
+and \.{TANGLE} contain several interesting aspects, and since an attempt
+has been made in these appendices to evolve a style of programming that
+makes good use of the \.{WEB} language.
+
+Finally, Appendix F is the `\.{webmac}' file that sets \TeX\ up to accept
+the output of \.{WEAVE}; Appendix~G discusses how to use some of its macros
+to vary the output formats; and Appendix~H discusses what needs to be done
+when \.{WEAVE} and \.{TANGLE} are installed in a new operating environment.
+ \section Performance statistics.
+The programs in Appendices D and E will optionally keep statistics on
+how much memory they require. Here is what they once printed out when
+processing themselves:
+
+\def\pstat#1#2#3
+#4{\yskip\noindent\.{#1} applied to \.{#2} (cpu time #3 sec)\par
+\halign{\quad\tt##\hfil\cr#4}}
+
+\pstat{TANGLE}{TANGLE}{15}
+{Memory usage statistics:\cr
+456 names, 215 replacement texts;\cr
+3396+3361 bytes, 6685+7329+5805 tokens.\cr}
+
+\pstat{TANGLE}{WEAVE}{30}
+{Memory usage statistics:\cr
+692 names, 339 replacement texts;\cr
+4576+4294 bytes, 10184+9875+9150 tokens.\cr}
+
+\pstat{WEAVE}{TANGLE}{45}
+{Memory usage statistics: 478 names, 2045 cross references, 4159+3729 bytes;\cr
+parsing required 684 scraps, 1300 texts, 3766 tokens, 119 levels;\cr
+sorting required 34 levels.\cr}
+
+\pstat{WEAVE}{WEAVE}{65}
+{Memory usage statistics: 737 names, 3306 cross references, 4896+4962 bytes;\cr
+parsing required 684 scraps, 1300 texts, 3766 tokens, 119 levels;\cr
+sorting required 73 levels.\cr}
+
+\yskip\noindent The cpu time for \PASCAL\ to process \.{TANGLE.PAS} was
+approximately 13 seconds, and \.{WEAVE.PAS} took approximately 26 seconds;
+thus the tangling time was slightly more than the compiling time. The cpu
+time for \TeX\ to process \.{TANGLE.TEX} was approximately 500 seconds,
+and \.{WEAVE.TEX} took approximately 750 seconds (i.e., about 7
+seconds per printed page, where these pages are substantially larger than
+the pages in a normal book). All cpu times quoted are for a DECsystem-10.
+
+\def\K{{\mc K}}
+The file \.{TANGLE.WEB} is about 125\K\ characters long; \.{TANGLE}
+reduces it to a file \.{TANGLE.PAS} whose size is about 42\K\ characters,
+while \.{WEAVE} expands it to a file \.{TANGLE.TEX} of about 185\K\null.
+The corresponding file sizes for \.{WEAVE.WEB}, \.{WEAVE.PAS}, and
+\.{WEAVE.TEX} are 180\K, 89\K, and 265\K.
+
+The much larger file \.{TEX.WEB} led to the following numbers:
+
+\pstat{TANGLE}{TEX}{110}
+{Memory usage statistics:\cr
+3750 names, 1768 replacement texts;\cr
+41895+41053 bytes, 42378+45074+41091 tokens.\cr}
+
+\pstat{WEAVE}{TEX}{270}
+{Memory usage statistics: 3412 names, 19699 cross references,
+ 37900+40232 bytes;\cr
+parsing required 685 scraps, 1303 texts, 3784 tokens, 104 levels;\cr
+sorting required 52 levels.\cr}
+
+\yskip\noindent
+\PASCAL\ did \.{TEX.PAS} in about 75 seconds; \TeX\ did \.{TEX.TEX}
+in about 3600.
+ % Here is a quotation that could not really be omitted
+
+\vfill
+
+{\baselineskip9pt
+\halign to\hsize{\hfil\quoteit#\tabskip 0pt plus 100pt&
+ \hfil\quoteit#\tabskip 0pt\cr
+O, what a tangled web we weave&
+ O, what a tangled WEB we weave\cr
+When first we practise to deceive!&
+ When \TeX\ we practise to conceive!\cr
+\noalign{\vskip 2pt}
+\quoterm ---SIR WALTER SCOTT, {\quoteit Marmion} 6:17 (1808)&
+ \quoterm ---RICHARD PALAIS (1982)\cr
+}}
+\eject
+ \def\runninghead{APPENDIX A --- {\tentt WEB} FILE FORMAT}
+\section Appendix A.
+This excerpt from \.{WEAVE.WEB} produced modules 55--59 in Appendix~D.
+Note that some of the lines are indented to show the program structure.
+The indentation is ignored by \.{WEAVE} and \.{TANGLE}, but users find
+that \.{WEB} files are quite readable if they have some such indentation.
+
+\vskip 6pt
+\begingroup \def\tt{\eighttt} \baselineskip9pt
+% Note to myself: I had to remove SAIL characters from the file here!
+% Also tabs replaced by double-space. The changes were made in WEAVE source.
+\verbatim
+@* Searching for identifiers.
+The hash table described above is updated by the |id_lookup| procedure,
+which finds a given identifier and returns a pointer to its index in
+|byte_start|. The identifier is supposed to match character by character
+and it is also supposed to have a given |ilk| code; the same name may be
+present more than once if it is supposed to appear in the index with
+different typesetting conventions.
+If the identifier was not already present, it is inserted into the table.
+
+Because of the way \.{WEAVE}'s scanning mechanism works, it is most convenient
+to let |id_lookup| search for an identifier that is present in the |buffer|
+array. Two other global variables specify its position in the buffer: the
+first character is |buffer[id_first]|, and the last is |buffer[id_loc-1]|.
+
+@<Glob...@>=
+@!id_first:0..long_buf_size; {where the current identifier begins in the buffer}
+@!id_loc:0..long_buf_size; {just after the current identifier in the buffer}
+@#
+@!hash:array [0..hash_size] of sixteen_bits; {heads of hash lists}
+
+@ Initially all the hash lists are empty.
+
+@<Local variables for init...@>=
+@!h:0..hash_size; {index into hash-head array}
+
+@ @<Set init...@>=
+for h:=0 to hash_size-1 do hash[h]:=0;
+
+@ Here now is the main procedure for finding identifiers (and index
+entries). The parameter |t| is set to the desired |ilk| code. The
+identifier must either have |ilk=t|, or we must have
+|t=normal| and the identifier must be a reserved word.
+
+@p function id_lookup(@!t:eight_bits):name_pointer; {finds current identifier}
+label found;
+var i:0..long_buf_size; {index into |buffer|}
+@!h:0..hash_size; {hash code}
+@!k:0..max_bytes; {index into |byte_mem|}
+@!w:0..ww-1; {row of |byte_mem|}
+@!l:0..long_buf_size; {length of the given identifier}
+@!p:name_pointer; {where the identifier is being sought}
+begin l:=id_loc-id_first; {compute the length}
+@<Compute the hash code |h|@>;
+@<Compute the name location |p|@>;
+if p=name_ptr then @<Enter a new name into the table at position |p|@>;
+id_lookup:=p;
+end;
+
+@ A simple hash code is used: If the sequence of
+ASCII codes is $c_1c_2\ldots c_m$, its hash value will be
+$$(2^{n-1}c_1+2^{n-2}c_2+\cdots+c_n)\,\bmod\,|hash_size|.$$
+
+@<Compute the hash...@>=
+h:=buffer[id_first]; i:=id_first+1;
+while i<id_loc do
+ begin h:=(h+h+buffer[i]) mod hash_size; incr(i);
+ end
+?endgroup % end of verbatim mode
+\endgroup
+\vfill\eject
+ \def\runninghead{APPENDIX B --- TRANSLATION BY {\tentt WEAVE}}
+\section Appendix B.
+This excerpt from \.{WEAVE.TEX} corresponds to Appendix A.
+
+% I've inserted \vfill's here at the blank lines, to squeeze this on one page!
+\begingroup \def\tt{\eighttt} \baselineskip9pt
+\verbatim
+?vfill?verbatimgobble
+\N55. Searching for identifiers.
+The hash table described above is updated by the \\{id\_lookup} procedure,
+which finds a given identifier and returns a pointer to its index in
+\\{byte\_start}. The identifier is supposed to match character by character
+and it is also supposed to have a given \\{ilk} code; the same name may be
+present more than once if it is supposed to appear in the index with
+different typesetting conventions.
+If the identifier was not already present, it is inserted into the table.
+?vfill?verbatimgobble
+Because of the way \.{WEAVE}'s scanning mechanism works, it is most convenient
+to let \\{id\_lookup} search for an identifier that is present in the %
+\\{buffer}
+array. Two other global variables specify its position in the buffer: the
+first character is $\\{buffer}[\\{id\_first}]$, and the last is $\\{buffer}[%
+\\{id\_loc}-1]$.
+?vfill?verbatimgobble
+\Y\P$\4\X9:Globals in the outer block\X\mathrel{+}\S$\6
+\4\\{id\_first}: \37$0\to\\{long\_buf\_size}$;\C{where the current identifier
+begins in the buffer}\6
+\4\\{id\_loc}: \37$0\to\\{long\_buf\_size}$;\C{just after the current
+identifier in the buffer}\7
+\4\\{hash}: \37\&{array} $[0\to\\{hash\_size}]$ \1\&{of}\5
+\\{sixteen\_bits};\C{heads of hash lists}\2\par
+\fi
+?vfill?verbatimgobble
+\M56. Initially all the hash lists are empty.
+?vfill?verbatimgobble
+\Y\P$\4\X16:Local variables for initialization\X\mathrel{+}\S$\6
+\4\|h: \37$0\to\\{hash\_size}$;\C{index into hash-head array}\par
+\fi
+?vfill?verbatimgobble
+\M57. \P$\X10:Set initial values\X\mathrel{+}\S$\6
+\&{for} $\|h\K0\mathrel{\&{to}}\\{hash\_size}-1$ \1\&{do}\5
+$\\{hash}[\|h]\K0$;\2\par
+\fi
+?vfill?verbatimgobble
+\M58. Here now is the main procedure for finding identifiers (and index
+entries). The parameter \|t is set to the desired \\{ilk} code. The
+identifier must either have $\\{ilk}=\|t$, or we must have
+$\|t=\\{normal}$ and the identifier must be a reserved word.
+?vfill?verbatimgobble
+\Y\P\4\&{function}\1\ \37$\\{id\_lookup}(\|t:\\{eight\_bits})$: \37\\{name%
+\_pointer};\C{finds current identifier}\6
+\4\&{label} \37\\{found};\6
+\4\&{var} \37\|i: \37$0\to\\{long\_buf\_size}$;\C{index into \\{buffer}}\6
+\|h: \37$0\to\\{hash\_size}$;\C{hash code}\6
+\|k: \37$0\to\\{max\_bytes}$;\C{index into \\{byte\_mem}}\6
+\|w: \37$0\to\\{ww}-1$;\C{row of \\{byte\_mem}}\6
+\|l: \37$0\to\\{long\_buf\_size}$;\C{length of the given identifier}\6
+\|p: \37\\{name\_pointer};\C{where the identifier is being sought}\2\6
+\&{begin} \37$\|l\K\\{id\_loc}-\\{id\_first}$;\C{compute the length}\6
+\X59:Compute the hash code \|h\X;\6
+\X60:Compute the name location \|p\X;\6
+\&{if} $\|p=\\{name\_ptr}$ \1\&{then}\5
+\X62:Enter a new name into the table at position \|p\X;\2\6
+$\\{id\_lookup}\K\|p$;\6
+\&{end};\par
+\fi
+?vfill?verbatimgobble
+\M59. A simple hash code is used: If the sequence of
+ASCII codes is $c_1c_2\ldots c_m$, its hash value will be
+$$(2^{n-1}c_1+2^{n-2}c_2+\cdots+c_n)\,\bmod\,\\{hash\_size}.$$
+?vfill?verbatimgobble
+\Y\P$\4\X59:Compute the hash code \|h\X\S$\6
+$\|h\K\\{buffer}[\\{id\_first}]$;\5
+$\|i\K\\{id\_first}+1$;\6
+\&{while} $\|i<\\{id\_loc}$ \1\&{do}\6
+\&{begin} \37$\|h\K(\|h+\|h+\\{buffer}[\|i])\mathbin{\&{mod}}\\{hash\_size}$;\5
+$\\{incr}(\|i)$;\6
+\&{end}\2\par
+\U section~58.\fi
+?endgroup
+\endgroup
+\eject
+ \def\runninghead{APPENDIX C --- TRANSLATION BY {\tentt TANGLE}}
+\section Appendix C.
+The \.{TANGLE} processor converts \.{WEAVE.WEB} into a syntactically
+correct (but not very pretty) \PASCAL\ program \.{WEAVE.PAS}.
+The first three and last two lines of output are shown here, together with the
+lines of code generated by modules 55--62 and the environments of
+those lines. There are 1559 lines in all; the notation
+`\.. \\. \\.' stands for portions that are not shown.
+
+Note that, for example, the code corresponding to
+module 55 begins with `\.{\{55:\}}' and ends with `\.{\{:55\}}';
+the code from modules 59--62 has been tangled into the code from module 58.
+
+\vskip6pt
+\verbatim
+{2:}{4:}{$C-,A+,D-}{[$C+,D+]}{:4}
+PROGRAM WEAVE(WEBFILE,CHANGEFILE,TEXFILE);LABEL 9999;CONST{8:}
+MAXBYTES=45000;MAXNAMES=5000;MAXMODULES=2000;HASHSIZE=353;BUFSIZE=100;
+ . . .
+TOKPTR:0..MAXTOKS;{MAXTOKPTR,MAXTXTPTR:0..MAXTOKS;}{:53}{55:}
+IDFIRST:0..LONGBUFSIZE;IDLOC:0..LONGBUFSIZE;
+HASH:ARRAY[0..HASHSIZE]OF SIXTEENBITS;{:55}{63:}CURNAME:NAMEPOINTER;
+ . . .
+PROCEDURE INITIALIZE;VAR{16:}I:0..127;{:16}{40:}WI:0..1;{:40}{56:}
+H:0..HASHSIZE;{:56}{247:}C:ASCIICODE;{:247}BEGIN{10:}HISTORY:=0;{:10}
+ . . .
+TOKPTR:=1;TEXTPTR:=1;TOKSTART[0]:=1;TOKSTART[1]:=1;{MAXTOKPTR:=1;
+MAXTXTPTR:=1;}{:54}{57:}FOR H:=0 TO HASHSIZE-1 DO HASH[H]:=0;{:57}{94:}
+SCANNINGHEX:=FALSE;{:94}{102:}MODTEXT[0]:=32;{:102}{124:}OUTPTR:=1;
+ . . .
+IF R=0 THEN XREF[P]:=XREFPTR ELSE XMEM[R].XLINKFIELD:=XREFPTR;END;{:51}
+{58:}FUNCTION IDLOOKUP(T:EIGHTBITS):NAMEPOINTER;LABEL 31;
+VAR I:0..LONGBUFSIZE;H:0..HASHSIZE;K:0..MAXBYTES;W:0..1;
+L:0..LONGBUFSIZE;P:NAMEPOINTER;BEGIN L:=IDLOC-IDFIRST;{59:}
+H:=BUFFER[IDFIRST];I:=IDFIRST+1;
+WHILE I<IDLOC DO BEGIN H:=(H+H+BUFFER[I])MOD HASHSIZE;I:=I+1;END{:59};
+{60:}P:=HASH[H];
+WHILE P<>0 DO BEGIN IF(BYTESTART[P+2]-BYTESTART[P]=L)AND((ILK[P]=T)OR((T
+=0)AND(ILK[P]>3)))THEN{61:}BEGIN I:=IDFIRST;K:=BYTESTART[P];W:=P MOD 2;
+WHILE(I<IDLOC)AND(BUFFER[I]=BYTEMEM[W,K])DO BEGIN I:=I+1;K:=K+1;END;
+IF I=IDLOC THEN GOTO 31;END{:61};P:=LINK[P];END;P:=NAMEPTR;
+LINK[P]:=HASH[H];HASH[H]:=P;31:{:60};IF P=NAMEPTR THEN{62:}
+BEGIN W:=NAMEPTR MOD 2;
+IF BYTEPTR[W]+L>MAXBYTES THEN BEGIN WRITELN(TERMOUT);
+WRITE(TERMOUT,'! Sorry, ','byte memory',' capacity exceeded');ERROR;
+HISTORY:=3;JUMPOUT;END;
+IF NAMEPTR+2>MAXNAMES THEN BEGIN WRITELN(TERMOUT);
+WRITE(TERMOUT,'! Sorry, ','name',' capacity exceeded');ERROR;HISTORY:=3;
+JUMPOUT;END;I:=IDFIRST;K:=BYTEPTR[W];
+WHILE I<IDLOC DO BEGIN BYTEMEM[W,K]:=BUFFER[I];K:=K+1;I:=I+1;END;
+BYTEPTR[W]:=K;BYTESTART[NAMEPTR+2]:=K;NAMEPTR:=NAMEPTR+1;ILK[P]:=T;
+XREF[P]:=0;END{:62};IDLOOKUP:=P;END;{:58}{66:}
+FUNCTION MODLOOKUP(L:SIXTEENBITS):NAMEPOINTER;LABEL 31;VAR C:0..4;
+ . . .
+WRITE(TERMOUT,'(That was a fatal error, my friend.)');END;END{:263};
+END.{:261}
+?endgroup
+\vfill\eject
+ \pageno=197 % take account of the page numbers for App's D and E.
+ \def\runninghead{APPENDIX F --- MACROS FOR FORMATTING}
+\section Appendix F: The \.{webmac.tex} file.
+This is the file that extends ``plain \TeX'' format in order to support the
+features needed by the output of \.{WEAVE}.
+
+\vskip6pt
+\verbatim
+% standard macros for WEB listings (in addition to PLAIN.TEX)
+\xdef\fmtversion{\fmtversion+WEBMAC4.0} % identifies current set of macros
+\parskip 0pt % no stretch between paragraphs
+\parindent 1em % for paragraphs and for the first line of Pascal text
+
+\font\eightrm=cmr8 \let\sc=\eightrm % NOT a caps-and-small-caps font!
+\let\mainfont=\tenrm
+\font\titlefont=cmr7 scaled\magstep4 % title on the contents page
+\font\ttitlefont=cmtt10 scaled\magstep2 % typewriter type in title
+\font\tentex=cmtex10 % TeX extended character set (used in strings)
+
+\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
+\def\|#1{\hbox{$#1$}} % one-letter identifiers look a bit better this way
+\def\&#1{\hbox{\bf#1\/}} % boldface type for reserved words
+\def\.#1{\hbox{\tentex % typewriter type for strings
+ \let\\=\BS % backslash in a string
+ \let\'=\RQ % right quote in a string
+ \let\`=\LQ % left quote in a string
+ \let\{=\LB % left brace in a string
+ \let\}=\RB % right brace in a string
+ \let\~=\TL % tilde in a string
+ \let\ =\SP % space in a string
+ \let\_=\UL % underline in a string
+ \let\&=\AM % ampersand in a string
+ #1}}
+\def\#{\hbox{\tt\char`\#}} % parameter sign
+\def\${\hbox{\tt\char`\$}} % dollar sign
+\def\%{\hbox{\tt\char`\%}} % percent sign
+\def\^{\ifmmode\mathchar"222 \else\char`^ \fi} % pointer or hat
+% circumflex accents can be obtained from \^^D instead of \^
+\def\AT!{@} % at sign for control text
+
+\chardef\AM=`\& % ampersand character in a string
+\chardef\BS=`\\ % backslash in a string
+\chardef\LB=`\{ % left brace in a string
+\def\LQ{{\tt\char'22}} % left quote in a string
+\chardef\RB=`\} % right brace in a string
+\def\RQ{{\tt\char'23}} % right quote in a string
+\def\SP{{\tt\char`\ }} % (visible) space in a string
+\chardef\TL=`\~ % tilde in a string
+\chardef\UL=`\_ % underline character in a string
+
+\newbox\bak \setbox\bak=\hbox to -1em{} % backspace one em
+\newbox\bakk\setbox\bakk=\hbox to -2em{} % backspace two ems
+
+\newcount\ind % current indentation in ems
+\def\1{\global\advance\ind by1\hangindent\ind em} % indent one more notch
+\def\2{\global\advance\ind by-1} % indent one less notch
+\def\3#1{\hfil\penalty#10\hfilneg} % optional break within a statement
+\def\4{\copy\bak} % backspace one notch
+\def\5{\hfil\penalty-1\hfilneg\kern2.5em\copy\bakk\ignorespaces}% optional break
+\def\6{\ifmmode\else\par % forced break
+ \hangindent\ind em\noindent\kern\ind em\copy\bakk\ignorespaces\fi}
+\def\7{\Y\6} % forced break and a little extra space
+
+\let\yskip=\smallskip
+\def\to{\mathrel{.\,.}} % double dot, used only in math mode
+\def\note#1#2.{\Y\noindent{\hangindent2em\baselineskip10pt\eightrm#1~#2.\par}}
+\def\lapstar{\rlap{*}}
+\def\startsection{\Q\noindent{\let\*=\lapstar\bf\modstar.\quad}}
+\def\defin#1{\global\advance\ind by 2 \1\&{#1 }} % begin `define' or `format'
+\def\A{\note{See also section}} % crossref for doubly defined section name
+\def\As{\note{See also sections}} % crossref for multiply defined section name
+\def\B{\mathopen{\.{@\{}}} % begin controlled comment
+\def\C#1{\ifmmode\gdef\XX{\null$\null}\else\gdef\XX{}\fi % Pascal comments
+ \XX\hfil\penalty-1\hfilneg\quad$\{\,$#1$\,\}$\XX}
+\def\D{\defin{define}} % macro definition
+\def\E{\cdot10^} % exponent in floating point constant
+\def\ET{ and~} % conjunction between two section numbers
+\def\ETs{, and~} % conjunction between the last two of several section numbers
+\def\F{\defin{format}} % format definition
+\let\G=\ge % greater than or equal sign
+\def\H#1{\hbox{\rm\char"7D\tt#1}} % hexadecimal constant
+\let\I=\ne % unequal sign
+\def\J{\.{@\&}} % TANGLE's join operation
+\let\K=\gets % left arrow
+\let\L=\le % less than or equal sign
+\outer\def\M#1.{\MN#1.\ifon\vfil\penalty-100\vfilneg % beginning of section
+ \vskip12ptminus3pt\startsection\ignorespaces}
+\outer\def\N#1.#2.{\MN#1.\vfil\eject % beginning of starred section
+ \def\rhead{\uppercase{\ignorespaces#2}} % define running headline
+ \message{*\modno} % progress report
+ \edef\next{\write\cont{\Z{#2}{\modno}{\the\pageno}}}\next % to contents file
+ \ifon\startsection{\bf\ignorespaces#2.\quad}\ignorespaces}
+\def\MN#1.{\par % common code for \M, \N
+ {\xdef\modstar{#1}\let\*=\empty\xdef\modno{#1}}
+ \ifx\modno\modstar \onmaybe \else\ontrue \fi \mark{\modno}}
+\def\O#1{\hbox{\rm\char'23\kern-.2em\it#1\/\kern.05em}} % octal constant
+\def\P{\rightskip=0pt plus 100pt minus 10pt % go into Pascal mode
+ \sfcode`;=3000
+ \pretolerance 10000
+ \hyphenpenalty 10000 \exhyphenpenalty 10000
+ \global\ind=2 \1\ \unskip}
+\def\Q{\rightskip=0pt % get out of Pascal mode
+ \sfcode`;=1500 \pretolerance 200 \hyphenpenalty 50 \exhyphenpenalty 50 }
+\let\R=\lnot % logical not
+\let\S=\equiv % equivalence sign
+\def\T{\mathclose{\.{@\}}}} % terminate controlled comment
+\def\U{\note{This code is used in section}} % crossref for use of a section
+\def\Us{\note{This code is used in sections}} % crossref for uses of a section
+\let\V=\lor % logical or
+\let\W=\land % logical and
+\def\X#1:#2\X{\ifmmode\gdef\XX{\null$\null}\else\gdef\XX{}\fi % section name
+ \XX$\langle\,$#2{\eightrm\kern.5em#1}$\,\rangle$\XX}
+\def\Y{\par\yskip}
+\let\Z=\let % now you can \send the control sequence \Z
+\def\){\hbox{\.{@\$}}} % sign for string pool check sum
+\def\]{\hbox{\.{@\\}}} % sign for forced line break
+\def\=#1{\kern2pt\hbox{\vrule\vtop{\vbox{\hrule
+ \hbox{\strut\kern2pt\.{#1}\kern2pt}}
+ \hrule}\vrule}\kern2pt} % verbatim string
+\let\~=\ignorespaces
+\let\*=*
+
+\def\onmaybe{\let\ifon=\maybe} \let\maybe=\iftrue
+\newif\ifon \newif\iftitle \newif\ifpagesaved
+\def\lheader{\mainfont\the\pageno\eightrm\qquad\rhead\hfill\title\qquad
+ \tensy x\mainfont\topmark} % top line on left-hand pages
+\def\rheader{\tensy x\mainfont\topmark\eightrm\qquad\title\hfill\rhead
+ \qquad\mainfont\the\pageno} % top line on right-hand pages
+\def\page{\box255 }
+\def\normaloutput#1#2#3{\ifodd\pageno\hoffset=\pageshift\fi
+ \shipout\vbox{
+ \vbox to\fullpageheight{
+ \iftitle\global\titlefalse
+ \else\hbox to\pagewidth{\vbox to10pt{}\ifodd\pageno #3\else#2\fi}\fi
+ \vfill#1}} % parameter #1 is the page itself
+ \global\advance\pageno by1}
+
+\def\rhead{\.{WEB} OUTPUT} % this running head is reset by starred sections
+\def\title{} % an optional title can be set by the user
+\def\topofcontents{\centerline{\titlefont\title}
+ \vfill} % this material will start the table of contents page
+\def\botofcontents{\vfill} % this material will end the table of contents page
+\def\contentspagenumber{0} % default page number for table of contents
+\newdimen\pagewidth \pagewidth=6.5in % the width of each page
+\newdimen\pageheight \pageheight=8.7in % the height of each page
+\newdimen\fullpageheight \fullpageheight=9in % page height including headlines
+\newdimen\pageshift \pageshift=0in % shift righthand pages wrt lefthand ones
+\def\magnify#1{\mag=#1\pagewidth=6.5truein\pageheight=8.7truein
+ \fullpageheight=9truein\setpage}
+\def\setpage{\hsize\pagewidth\vsize\pageheight} % use after changing page size
+\def\contentsfile{CONTENTS} % file that gets table of contents info
+\def\readcontents{\input CONTENTS}
+
+\newwrite\cont
+\output{\setbox0=\page % the first page is garbage
+ \openout\cont=\contentsfile
+ \global\output{\normaloutput\page\lheader\rheader}}
+\setpage
+\vbox to \vsize{} % the first \topmark won't be null
+
+\def\ch{\note{The following sections were changed by the change file:}
+ \let\*=\relax}
+\newbox\sbox % saved box preceding the index
+\newbox\lbox % lefthand column in the index
+\def\inx{\par\vskip6pt plus 1fil % we are beginning the index
+ \write\cont{} % ensure that the contents file isn't empty
+ \closeout\cont % the contents information has been fully gathered
+ \output{\ifpagesaved\normaloutput{\box\sbox}\lheader\rheader\fi
+ \global\setbox\sbox=\page \global\pagesavedtrue}
+ \pagesavedfalse \eject % eject the page-so-far and predecessors
+ \setbox\sbox\vbox{\unvbox\sbox} % take it out of its box
+ \vsize=\pageheight \advance\vsize by -\ht\sbox % the remaining height
+ \hsize=.5\pagewidth \advance\hsize by -10pt
+ % column width for the index (20pt between cols)
+ \parfillskip 0pt plus .6\hsize % try to avoid almost empty lines
+ \def\lr{L} % this tells whether the left or right column is next
+ \output{\if L\lr\global\setbox\lbox=\page \gdef\lr{R}
+ \else\normaloutput{\vbox to\pageheight{\box\sbox\vss
+ \hbox to\pagewidth{\box\lbox\hfil\page}}}\lheader\rheader
+ \global\vsize\pageheight\gdef\lr{L}\global\pagesavedfalse\fi}
+ \message{Index:}
+ \parskip 0pt plus .5pt
+ \outer\def\:##1, {\par\hangindent2em\noindent##1:\kern1em} % index entry
+ \let\ttentry=\. \def\.##1{\ttentry{##1\kern.2em}} % give \tt a little room
+ \def\[##1]{$\underline{##1}$} % underlined index item
+ \rm \rightskip0pt plus 2.5em \tolerance 10000 \let\*=\lapstar
+ \hyphenpenalty 10000 \parindent0pt}
+\def\fin{\par\vfill\eject % this is done when we are ending the index
+ \ifpagesaved\null\vfill\eject\fi % output a null index column
+ \if L\lr\else\null\vfill\eject\fi % finish the current page
+ \parfillskip 0pt plus 1fil
+ \def\rhead{NAMES OF THE SECTIONS}
+ \message{Section names:}
+ \output{\normaloutput\page\lheader\rheader}
+ \setpage
+ \def\note##1##2.{\hfil\penalty-1\hfilneg\quad{\eightrm##1 ##2.}}
+ \linepenalty=10 % try to conserve lines
+ \def\U{\note{Used in section}} % crossref for use of a section
+ \def\Us{\note{Used in sections}} % crossref for uses of a section
+ \def\:{\par\hangindent 2em}\let\*=*\let\.=\ttentry}
+\def\con{\par\vfill\eject % finish the section names
+ \rightskip 0pt \hyphenpenalty 50 \tolerance 200
+ \setpage
+ \output{\normaloutput\page\lheader\rheader}
+ \titletrue % prepare to output the table of contents
+ \pageno=\contentspagenumber \def\rhead{TABLE OF CONTENTS}
+ \message{Table of contents:}
+ \topofcontents
+ \line{\hfil Section\hbox to3em{\hss Page}}
+ \def\Z##1##2##3{\line{\ignorespaces##1
+ \leaders\hbox to .5em{.\hfil}\hfil\ ##2\hbox to3em{\hss##3}}}
+ \readcontents\relax % read the contents info
+ \botofcontents \end} % print the contents page(s) and terminate
+?endgroup
+\vfill\eject
+ \def\runninghead{APPENDIX G --- NOTES ON FORMATTING}
+\section Appendix G: How to use \.{WEB} macros.
+The macros in \.{webmac} make it possible to produce a variety of formats
+without editing the output of \.{WEAVE}, and the purpose of this appendix
+is to explain some of the possibilities.
+
+\def\point#1.{\yskip\indent#1.\quad\ignorespaces}
+
+\point 1. Three fonts have been declared in addition to the standard fonts of
+\.{PLAIN} format: You can say `\.{\{\\sc STUFF\}}' to get {\sc STUFF}
+in small caps; and you can select the largish fonts \.{\\titlefont}
+and \.{\\ttitlefont} in the title of your document, where \.{\\ttitlefont}
+is a typewriter style of type.
+
+\point 2. When you mention an identifier in \TeX\ text, you normally call
+it `\.{|identifier|}'. But you can also say `\.{\\\\\{identifier\}}'. The
+output will look the same in both cases, but the second alternative
+doesn't put \\{identifier} into the index, since
+it bypasses \.{WEAVE}'s translation from \PASCAL\ mode.
+
+\point 3. To get typewriter-like type, as when referring to `\.{WEB}', you
+can use the `\.{\\.}' macro (e.g., `\.{\\.\{WEB\}}'). In the argument to
+this macro you should insert an additional backslash before the symbols
+listed as `special string characters' in the index to \.{WEAVE}, i.e.,
+before backslashes and dollar signs and the like.
+A `\.{\\\ }' here will result in the visible space symbol; to get an
+invisible space following a control sequence you can say `\.{\{\ \}}'.
+
+\point 4. The three control sequences \.{\\pagewidth}, \.{\\pageheight},
+and \.{\\fullpageheight} can be redefined in the limbo section at the
+beginning of your \.{WEB} file, to change the dimensions of each page.
+The standard settings
+$$\lpile{\.{\\pagewidth=6.5in}\cr
+ \.{\\pageheight=8.7in}\cr
+ \.{\\fullpageheight=9in}\cr}$$
+were used to prepare the present report; \.{\\fullpageheight} is
+\.{\\pageheight} plus room for the additional heading and page numbers at
+the top of each page. If you change any of these quantities, you should
+call the macro \.{\\setpage} immediately after making the change.
+
+\point 5. The \.{\\pageshift} macro defines an amount by which right-hand
+pages (i.e., odd-numbered pages) are shifted right with respect to
+left-hand (even-numbered) ones. By adjusting this amount you may be
+able to get two-sided output in which the page numbers line up on
+opposite sides of each sheet.
+
+\point 6. The \.{\\title} macro will appear at the top of each page
+in small caps. For example, Appendix~D was produced after saying
+`\.{\\def\\title\{WEAVE\}}'.
+
+\point 7. The first page usually is assigned page number 1.
+To start on page 16, with contents
+on page 15, say this: `\.{\\def\\contentspagenumber\{15\}}
+\.{\\pageno=\\contentspagenumber} \.{\\advance\\pageno by 1}'. (Appendix~D
+was generated that way.)
+
+\point 8. The macro \.{\\iftitle} will suppress the header line if it is
+defined by `\.{\\titletrue}'. The normal value is \.{\\titlefalse}
+except for the table of contents; thus, the contents
+page is usually unnumbered.
+
+Two macros are provided to give flexibility to the table of
+contents: \.{\\topofcontents} is invoked just before the contents
+info is read, and \.{\\botofcontents} is invoked just after.
+For example, Appendix~D was produced with the following definitions:
+$$\lpile{\.{\\def\\topofcontents\{\\null\\vfill}\cr
+ \.{ { }\\titlefalse \% include headline on the contents page}\cr
+ \.{ { }\\def\\rheader\{\\mainfont Appendix D\\hfil 15\}}\cr
+ \.{ { }\\centerline\{\\titlefont The \{\\ttitlefont WEAVE\}{ }processor\}}\cr
+ \.{ { }\\vskip 15pt \\centerline\{(Version 4)\}{ }\\vfill\}}\cr}$$
+Redefining \.{\\rheader}, which is the headline for right-hand pages,
+suffices in this case to put the desired information at the top of the
+contents page.
+
+\point 9. Data for the table of contents is written to a file that
+is read after the indexes have been \TeX ed; there's one line of data
+for every starred module. For example, when Appendix~D was being generated,
+a file \.{CONTENTS.TEX} containing
+$$\lpile{\.{\\Z \{{ }Introduction\}\{1\}\{16\}}\cr
+ \.{\\Z \{{ }The character set\}\{11\}\{19\}}\cr}$$
+and similar lines was created. The \.{\\topofcontents} macro could
+redefine \.{\\Z} so that the information appears in another format.
+
+\point 10. Sometimes it is necessary or desirable to divide the output of
+\.{WEAVE} into subfiles that can be processed separately. For example,
+the listing of \TeX\ runs to more than 500 pages, and that is enough to
+exceed the capacity of many printing devices and/or their software.
+When an extremely large job isn't cut into smaller pieces, the entire
+process might be spoiled by a single error of some sort, making it
+necessary to start everything over.
+
+Here's a safe way to break a woven file into three parts:
+Say the pieces are $\alpha$,
+$\beta$, and $\gamma$, where each piece begins with a starred module.
+All macros should be defined in the opening limbo section of $\alpha$,
+and copies of this \TeX\ code should be placed at the
+beginning of $\beta$ and of $\gamma$. In order to process the parts
+separately, we need to take care of two things: The starting page
+numbers of $\beta$ and $\gamma$ need to be set up properly, and
+the table of contents data from all three runs needs to be
+accumulated.
+
+The \.{webmac} macros include two control sequences \.{\\contentsfile} and
+\.{\\readcontents} that facilitate the necessary processing. We include
+`\.{\\def\\contentsfile\{CONT1\}}' in the limbo section of $\alpha$, and
+we include `\.{\\def\\contentsfile\{CONT2\}}' in the limbo section of
+$\beta$; this causes \TeX\ to write the contents data for $\alpha$ and $\beta$
+into \.{CONT1.TEX} and \.{CONT2.TEX}. Now in $\gamma$ we say
+$$\.{\\def\\readcontents\{\\input CONT1 \\input CONT2 \\input CONTENTS\}};$$
+this brings in the data from all three pieces, in the proper order.
+
+However, we still need to solve the page-numbering problem. One way to
+do it is to include the following in the limbo material for $\beta$:
+$$\lpile{\.{\\message\{Please type the last page number of part 1: \}}\cr
+ \.{\\read -1 to \\temp \\pageno=\\temp \\advance\\pageno by 1}\cr}$$
+Then you simply provide the necessary data when \TeX\ requests
+it; a similar construction is used at the beginning of $\gamma$.
+
+This method can, of course, be used to divide a woven file into
+any number of pieces.
+
+\point 11. Sometimes it is nice to include things in the index that are
+typeset in a special way. For example, we might want to have an
+index entry for `\TeX'. \.{WEAVE} provides two simple ways to
+typeset an index entry (unless the entry is an identifier or a reserved word):
+`\.{@\^}' gives roman type, and `\.{@.}' gives typewriter type.
+But if we try to typeset `\TeX' in roman type by saying, e.g.,
+`\.{@\^\\TeX@>}', the backslash character gets in the way,
+and this entry wouldn't appear in the index with the T's.
+
+The solution is to use the `\.{@:}' feature, declaring a macro that
+simply removes a sort key as follows:
+$$\.{\\def\\9\#1\{\}}$$
+Now you can say, e.g., `\.{@:TeX\}\{\\TeX@>}' in your \.{WEB} file; \.{WEAVE}
+puts it into the index alphabetically, based on the sort key, and
+produces the macro call `\.{\\9\{TeX\}\{\\TeX\}}' which will ensure that
+the sort key isn't printed.
+
+A similar idea can be used to insert hidden material into module
+names so that they are alphabetized in whatever way you might wish.
+Some people call these tricks ``special refinements''; others call
+them ``kludges''.
+
+\point 12. The control sequence \.{\\modno} is set to the number of the
+module being typeset.
+
+\point 13. If you want to list only the modules that have changed,
+together with the index, put the command `\.{\\let\\maybe=\\iffalse}' in
+the limbo section before the first module of your \.{WEB} file. It's
+customary to make this the first change in your change file.
+
+\point 14. To get output in languages other than English, redefine the
+macros \.{\\A}, \.{\\As}, \.{\\ET}, \.{\\ETs}, \.{\\U}, \.{\\Us},
+\.{\\ch}, \.{\\fin}, and \.{\\con}. \.{WEAVE} itself need not be changed.
+
+\vfill\eject
+ \def\runninghead{APPENDIX H --- GETTING STARTED}
+\section Appendix H: Installing the \.{WEB} system.
+Suppose you want to use the \.{WEB} programs on your computer, and suppose
+that you can't simply borrow them from somebody else who has the same
+kind of machine. Here's what to do:
+
+\yskip
+\def\step(#1){\par\hangindent 2em\noindent\hbox to 2em{\hfil(#1) }\ignorespaces}
+\step(1) Get a tape that contains the files \.{WEAVE.WEB}, \.{TANGLE.WEB},
+\.{TANGLE.PAS}, and \.{WEBMAC.TEX}. The tape will probably also contain an
+example change file \.{TANGLE.CH}.
+\step(2) Look at the sections of \.{TANGLE} that are listed under ``system
+dependencies'' in the index of Appendix~E above, and figure out what changes
+(if any) will be needed for your system.
+\step(3) Make a change file \.{TANGLE.CH} that contains the changes of~(2);
+do not change your copy of \.{TANGLE.WEB}, leave it intact. (The
+rules for change files are explained at the end of the manual just before
+the appendices; you may want to look at the example change file that
+arrived with your copy of \.{TANGLE.WEB}. It's also a good idea to
+define all the ``switches'' like \&{debug} and \&{gubed} to be null in your
+first change files; then you can sure that your compiler will handle
+all of the code.)
+\step(4) Make the changes of (2) in your copy of \.{TANGLE.PAS}. (If these
+changes are extensive, you might be better off finding some computer that
+that already has \.{TANGLE} running, and making the new \.{TANGLE.PAS}
+from \.{TANGLE.WEB} and your \.{TANGLE.CH}.)
+\step(5) Use your \PASCAL\ compiler to convert your copy of \.{TANGLE.PAS}
+to a running program \.{TANGLE}.
+\step(6) Check your changes as follows: Run \.{TANGLE} on \.{TANGLE.WEB}
+and your \.{TANGLE.CH}, yielding $\.{TANGLE.PAS}'$; make a running
+program $\.{TANGLE}'$ by applying \PASCAL\ to
+$\.{TANGLE.PAS}'$; run $\.{TANGLE}'$ on \.{TANGLE.WEB} and
+your \.{TANGLE.CH}, yielding $\.{TANGLE.PAS}''$; and check
+that $\.{TANGLE.PAS}''$ is identical to
+$\.{TANGLE.PAS}'$. Once this test has been passed, you have got a
+working \.{TANGLE} program.
+\step(7) Make a change file \.{WEAVE.CH} analogous to (3), but this time
+consider the system-dependent parts of \.{WEAVE} that are listed in
+the index to Appendix~D.
+\step(8) Run \.{TANGLE} on \.{WEAVE.WEB} and your \.{WEAVE.CH}, obtaining
+\.{WEAVE.PAS}.
+\step(9) Use \PASCAL\ on \.{WEAVE.PAS} to make a running \.{WEAVE} program.
+\step(10) Run \.{WEAVE} on \.{TANGLE.WEB} and \.{TANGLE.CH} to produce
+\.{TANGLE.TEX}.
+\step(11) Run \TeX\ on \.{TANGLE.TEX}, obtaining a listing analogous to
+Appendix~E. This listing will incorporate your changes.
+\step(12) Run \.{WEAVE} on \.{WEAVE.WEB} and your \.{WEAVE.CH} to produce
+\.{WEAVE.TEX}.
+\step(13) Run \TeX\ on \.{WEAVE.TEX}, obtaining a listing analogous to
+Appendix~D that incorporates your changes.
+
+\yskip\noindent
+This description assumes that you already have a working \TeX82 system.
+But what if you don't have \TeX82? Then you start with a tape that also
+contains \.{TEX.WEB} and \.{plain.tex}, and you refer to a hardcopy
+listing of the \TeX82 program corresponding to \.{TEX.WEB}. Between steps
+(10) and (11) you do the following:
+
+\yskip
+\def\substep(10.#1){\par\hangindent 4em\noindent
+ \hbox to 4em{\hfil(10.#1) }\ignorespaces}
+\substep(10.1) Make a change file \.{TEX.CH} to fix the system dependent
+portions of \.{TEX.WEB}, in a manner analogous to step~(2). Since \TeX\ is
+a much more complex program than \.{WEAVE} or \.{TANGLE}, there are more
+system-dependent features to think about, but by now you will be good at
+making such modifications. Do not make any changes to \.{TEX.WEB}.
+\substep(10.2) Make an almost-copy of your \.{TEX.CH} called \.{INITEX.CH};
+this one will have the `\&{init}' and `\&{tini}' macros redefined in order
+to make the initialization version of \TeX. It also might have smaller
+font memory and dynamic memory areas, since \.{INITEX} doesn't need as
+much memory for such things; by setting the memory smaller in \.{INITEX},
+you guarantee that the production system will have a ``cushion.''
+\substep(10.3) Run \.{TANGLE} on \.{TEX.WEB} and \.{INITEX.CH}, obtaining
+\.{INITEX.PAS} and \.{TEX.POOL}.
+\substep(10.4) Run \PASCAL\ on \.{INITEX.PAS}, obtaining \.{INITEX}.
+\substep(10.5) Run \.{INITEX} on \.{TEX.POOL}, during which run you type
+`\.{plain}' and `\.{\\dump}'. This will produce a file \.{plain.fmt}
+containing the data needed to initialize \TeX's memory.
+\substep(10.6) Run \.{TANGLE} on \.{TEX.WEB} and the \.{TEX.CH} of (10.1),
+obtaining \.{TEX.PAS}.
+\substep(10.7) Run \PASCAL\ on \.{TEX.PAS}, obtaining \.{VIRTEX}.
+\substep(10.8) If your operating system supports programs whose core images
+have been saved, run \.{VIRTEX}, type `\.{\&plain}', then save the core image
+and call it \TeX. Otherwise, \.{VIRTEX} will be your \TeX, and it will
+read `\.{plain.fmt}' (or some other \.{fmt} file) each time you run.
+
+\yskip
+This 21-step process may seem long, but it is actually an oversimplification,
+since you also need fonts and a way to print the device-independent files
+that \TeX\ spews out. On the other hand, the total number of steps is not
+quite so large when you consider that \.{TANGLE}-followed-by-\PASCAL\ and
+\.{WEAVE}-followed-by-\TeX\ may be regarded as single operations.
+
+If you have only the present report, not a tape, you will have to prepare
+files \.{WEAVE.WEB} and \.{TANGLE.WEB} by hand, typing them into the
+computer by following Appendices D and E. Then you have to simulate the
+behavior of \.{TANGLE} by converting \.{TANGLE.WEB} manually into
+\.{TANGLE.PAS}; with a good text editor this takes about six hours. Then
+you have to correct errors that were made in all this hand work; but still
+the whole project is not impossibly difficult, because in fact the entire
+development of \.{WEAVE} and \.{TANGLE} (including the writing of the
+programs and this manual) took less than two months of work.
+ \vfill\end
diff --git a/Master/texmf-doc/doc/english/l2tabu-english/l2tabuen.pdf b/Master/texmf-doc/doc/english/l2tabu-english/l2tabuen.pdf
new file mode 100644
index 00000000000..e2e9bb6a310
--- /dev/null
+++ b/Master/texmf-doc/doc/english/l2tabu-english/l2tabuen.pdf
Binary files differ
diff --git a/Master/texmf-doc/doc/english/l2tabu-english/l2tabuen.tex b/Master/texmf-doc/doc/english/l2tabu-english/l2tabuen.tex
new file mode 100644
index 00000000000..f78c01170fd
--- /dev/null
+++ b/Master/texmf-doc/doc/english/l2tabu-english/l2tabuen.tex
@@ -0,0 +1,1800 @@
+%%%------------------------------------------------------------------
+%%% Filename: l2tabuen.tex
+%%% Author: Mark Trettin, Jürgen Fenn <juergen.fenn@gmx.de>
+%%% Created: 24 December 2004
+%%% Time-stamp: none
+%%% Version: $Id: l2tabuen.tex,v 1.8.5.1 $
+%%%
+%%% Copyright (C) 2004 by Mark Trettin and Jürgen Fenn
+%%%------------------------------------------------------------------
+%%% TODO:
+%%% - \input{../asdf/} instead of \input ../asdf/
+
+\documentclass[11pt,a4paper,pagesize,tablecaptionabove,abstracton,pointlessnumbers]{scrartcl}
+%--------------- Basic Configuration (German, 8bit) ----------------
+%\usepackage[ngerman]{babel} % Switch to German
+\usepackage[latin1]{inputenc} % Direct input of German umlauts etc.
+\usepackage[T1]{fontenc} % T1 Fonts
+%%% Times/Helvetica/Courier *only* for minimizing the size of this file
+%% as these fonts do not have to be inserted into the output document.
+\usepackage{mathptmx} % Times/Maths \rmdefault
+\usepackage[scaled=.90]{helvet} % Scaling Helvetica \sfdefault
+\usepackage{courier} % Courier \ttdefault
+\usepackage{multicol}
+
+\typearea[current]{current} % Calculate typearea anew
+%------------ additional packages (graphics, tables) ---------------
+\usepackage{xspace} % automatic blanks after macros
+\usepackage{booktabs,array} % nicer tables
+\usepackage[english]{varioref} % modifyed for the version publicised
+ % as current versionf of fancy, and
+ % varioref do not work together
+ % (still not?!)
+\usepackage{textcomp} % additional characters
+\usepackage[nofancy]{rcsinfo} % RCS Informationen in title
+\usepackage{enumerate}
+\usepackage{calc} % we must calculate
+\usepackage{eurosans} % the Euro
+%--------------------------- Formatting ---------------------------
+%%% Captions
+\setkomafont{caption}{\normalcolor\small\sffamily\slshape}
+\setkomafont{captionlabel}{\normalcolor\upshape\small\sffamily\bfseries}
+%--------------------------- PDF Options ---------------------------
+\ifpdfoutput{% % needs KOMA-Script class
+ \usepackage{hyperref} % hyperref settings for pdf
+ \hypersetup{%
+ pdfauthor={(c) 2004 Mark Trettin and Juergen Fenn},%
+ pdftitle={l2tabuen -- An essential guide to \LaTeXe\ usage},%
+ pdfsubject={Some hints on LaTeX2e},%
+ bookmarksopen=true,% Temp
+ backref=true,%
+ pdffitwindow=true,%
+ pdfpagelayout=OneColumn,%
+ colorlinks=true,%
+ linkcolor=red,%
+ linktocpage=true,%
+ backref=true,%
+ pdfstartview=FitH,%
+ bookmarksopen=true,%
+ bookmarksopenlevel=2,%
+ bookmarksnumbered=false,%
+ urlcolor=blue%
+ }%
+ \usepackage[activate=normal]{pdfcprot} % character protruding using pdftex
+ \newcommand{\EMail}[1]{\href{mailto:#1?Subject=[l2tabu.pdf]}{email: \texttt{#1}}}
+ \newcommand{\News}[1]{\href{news:#1}{\texttt{#1}}}
+ \newcommand{\MID}[2]{\href{http://groups.google.com/groups?as_umsgid=#1}%
+ {Message-ID: \texttt{<#2>}}}
+ % \usepackage{color} % For preview-latex (in pdf tree)
+ }%
+%--------------------------- PS Options ----------------------------
+ {%
+ \usepackage{hyperref}
+ \newcommand{\EMail}[1]{\href{mailto:#1}{Email: \texttt{#1}}}
+ \newcommand{\News}[1]{\href{news:#1}{\texttt{#1}}}
+ \newcommand{\MID}[2]{\href{M-ID: <#1>}{Message-ID: \texttt{<#2>}}}
+ }
+\usepackage{color} % comment out for preview-latex
+%-------------------------- new commands --------------------------
+%%% documentation: SansSerif
+\newcommand{\TB}{\textbackslash}
+\newcommand{\Doku}[1]{\textsf{#1}\xspace}
+%%% Paket ,Klasse, Bibstil (packages, classes, bib style): SansSerif, Slanted
+%\newcommand{\Paket}[2][sty]{\textsf{\textsl{#2.#1}}\xspace}
+\newcommand{\Paket}[1]{\textsf{\textsl{#1.sty}}\xspace}
+\newcommand{\Klasse}[1]{\textsf{\textsl{#1.cls}}\xspace}
+\newcommand{\Bst}[1]{\textsf{\textsl{#1.bst}}\xspace}
+%%% Options: SansSerif
+\newcommand{\Option}[1]{\textsf{#1}\xspace}
+%%% \Use{graphicx} --> \usepackage{graphicx}
+%%% \UseO{dvips}{graphicx} --> \usepackage[dvips]{graphicx}
+\newcommand{\Use}[1]{\texttt{\textbackslash usepackage\{#1\}}}
+\newcommand{\UseO}[2]{\texttt{\TB usepackage[#1]\{#2\}}}
+\newcommand{\UseV}[2]{\texttt{\TB usepackage\{#1\}[#2]}}
+\newcommand{\UseOV}[3]{\texttt{\TB usepackage[#1]\{#2\}[#3]}}
+%%% Footnotes
+\deffootnote{2.5em}{1em}{\thefootnotemark\ \ \ }%
+\setlength{\footnotesep}{12pt}
+%%% Nonfrenchspacing
+\nonfrenchspacing
+%%% Bibliography
+\newcommand{\Bib}[1]{\texttt{\textbackslash bibliographystyle\{#1\}}}
+%%% environment TODO: redefine, for this looks rather bad
+\newcommand{\Env}[2]{\raggedright\texttt{\textbackslash begin\{#1\}\\
+ #2\\ \textbackslash end\{#1\}}}
+%%% \newcommand
+\newcommand{\NewCom}[3][]{\texttt{\textbackslash newcommand{#1}\{\textbackslash#2\}\{#3\}}}
+\newcommand{\ReNewCom}[3][]{\texttt{\textbackslash renewcommand{#1}\{\textbackslash#2\}\{#3\}}}
+%%% Stolen from scrguide ;-)
+\DeclareRobustCommand*{\Macro}[1]{\mbox{\texttt{\char`\\#1}}}
+\DeclareRobustCommand*{\LMacro}[2]{\mbox{\texttt{\char`\\#1\{#2\}}}}
+\DeclareRobustCommand*{\GMacro}[2]{\mbox{\texttt{\{\char`\\#1\ #2\}}}}
+% DANTE
+\providecommand{\CTANserver}{ftp.dante.de}
+% Make CTAN:// be an alias of ftp://\CTANserver/tex-archive/
+\makeatletter
+\def\url@#1{\expandafter\url@@#1\@nil}
+\def\url@@#1://#2\@nil{%
+ \def\@tempa{#1}\def\@tempb{CTAN}\ifx\@tempa\@tempb
+ \hyper@linkurl{\Hurl{#1:#2}}{ftp://\CTANserver/tex-archive/#2}%
+ \else
+ \hyper@linkurl{\Hurl{#1://#2}}{#1://#2}%
+ \fi
+}
+\makeatother
+%%% Farben
+\definecolor{gruen}{rgb}{0,0.55,0}
+\definecolor{rot}{rgb}{1,0,0}
+\newcommand{\FIXME}[1]{\marginline{FIXME: #1!}}
+\newsavebox{\Quelle}
+
+\newenvironment{bspcode}[1]{%
+ \sbox{\Quelle}{\footnotesize From: #1}
+ \center
+ \rule{\linewidth}{1.5pt}
+}{%
+ \rule{\linewidth}{1.5pt}
+ \usebox{\Quelle}
+ \endcenter%
+}
+
+%%% Macros for replacing FIXME:
+\newcommand{\Ersetze}[2]{\par\noindent Replace: \textcolor{red}{#1}
+ by \textcolor{gruen}{#2}}
+\newcommand{\Ersetzx}[3][.5\textwidth]{%
+ \par\noindent%
+ \begin{minipage}[t]{#1}
+ \raggedright
+ Replace:\\
+ \textcolor{rot}{#2}
+ \end{minipage}%
+ \hfill%
+ \begin{minipage}[t]{(\linewidth - #1)-.02\linewidth}
+ \raggedright
+ by\\
+ \textcolor{gruen}{#3}
+ \end{minipage}%
+}
+% Width for "Ersetze" macros :-(
+\newsavebox{\Breite}
+%%% A hack by Heiko Oberdiek for acroread under Linux
+\pdfstringdefDisableCommands{%
+ \edef\quotedblbase{\string"}%
+ \edef\textquotedblleft{\string"}%
+}
+%%% a very, very crude Hack for typesetting a URL in one line
+%%% *without* any additional spacing. :-(
+\newcommand{\biburl}[1]{\hfill\\URL:~\url{#1}}
+%------------------- defining columns in tables --------------------
+% needs array
+\newcolumntype{v}[1]{>{\raggedright\hspace{0pt}}p{#1}} % v column, like
+ % p column, but
+ % raggedright
+\newcolumntype{V}[1]{>{\footnotesize\raggedright\hspace{0pt}}p{#1}}
+\newcolumntype{N}{>{\footnotesize}l}
+\newcolumntype{C}{>{\footnotesize}c}
+%----------------------------- title ------------------------------
+\title{An essential guide to \LaTeXe{} usage\\[1em]
+ \LARGE\mdseries\rmfamily Obsolete commands and packages}
+
+\author{Original German version\thanks{Based on the German version
+ 1.8 of \Doku{l2tabu}.}\\
+ by Mark Trettin\thanks{\EMail{Mark.Trettin@gmx.de}}%
+ \and%
+ English translation\\
+ by Jürgen Fenn\thanks{\EMail{juergen.fenn@gmx.de}}}
+
+\date{\today}
+
+% \rcsInfoRevision\ \\
+% \rcsInfoLongDate}
+%----------------------- begin of document -----------------------
+\begin{document}
+%\begin{Form}\end{Form}
+\pagestyle{headings}
+%%% RCS Info for version control
+\rcsInfo $Id: l2tabuen.tex,v 1.8.5.1 2005/01/23 00:00:00 juergen Exp $
+\maketitle
+\begin{abstract}
+ \noindent
+ This is the English version \rcsInfoRevision{} of \Doku{l2tabu},
+ focusing on obsolete commands and packages, and demonstrating the
+ most severe mistakes most \LaTeX{} users are prone to make. You
+ should read this guide if you want to improve on your \LaTeX{} code.
+\end{abstract}
+
+\subsection*{Legal notice}
+\label{sec:legalnotice}
+
+Copyright \copyright{} 2005 by Mark Trettin and Jürgen Fenn.
+\medskip
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the licence is included in appendix \ref{sec:fdl}.
+
+\subsection*{Acknowledgements}%\addcontentsline{toc}{section}{Acknowledgements}%
+
+Reading the German-language \TeX{} newsgroup \News{de.comp.text.tex}
+one of us (Mark Trettin) found that most discussions were about
+obsolete or, say, `bad' packages, and commands. So he decided to write
+a brief summary to supply a practical guide to \LaTeX. His paper was
+called \Doku{altepakete.pdf} in the first place and soon it was
+praised by senior developers writing to the group. It is recommended
+for reading ever since. Later it was renamed by vote of participants
+in \News{de.comp.text.tex} to \Doku{l2tabu}, corresponding to
+\Doku{l2kurz}, the German title of \Doku{lshort}\cite{l2kurz:99}, and
+the German translation of `taboo'. This was about two years
+ago.\footnote{\Doku{altepakete} was first announced on 18 February
+ 2003 on \News{de.comp.text.tex}.} I (Jürgen Fenn) joined Mark later
+for translating his paper into English in order to help it spread to
+those users who do not speak German.
+
+In this article we give a demonstration of the most common mistakes in
+using \LaTeX. We also explain how to avoid them. This overview is
+neither meant to replace introductions such as
+\Doku{lshort}~\cite{l2kurz:99} nor the \Doku{De-TeX-FAQ}~\cite[version
+72]{faq:02} nor the \Doku{UK FAQ}~\cite[version 3.13]{ukfaq:99}. Our
+goal is just to give a small overview of how to write `good' \LaTeXe\
+code.
+
+\subsection*{More translations of this paper}
+
+Please note that besides the German original `Das
+\LaTeXe-Sündenregister oder Veraltete Befehle, Pakete und andere
+Fehler. Tipps zu \LaTeXe' and this English version, there are more
+translations of this paper. They all can be found in the respective
+subdirectories at
+\begin{quote}
+\url{CTAN://info/l2tabu/}
+\end{quote}
+So far \Doku{l2tabu} has been translated into English, French, and
+Italian.
+
+\subsection*{How to get in touch with the authors}
+
+We are grateful for any suggestions, improvements, or comments.
+Please address your emails directly to the translator of the
+English\footnote{\EMail{juergen.fenn@gmx.de}. -- Download of
+ \Doku{l2tabuen} from: \url{CTAN://info/l2tabu/english/}}, the
+French\footnote{See the French translation \Doku{l2tabufr} by Yvon
+ Henel at \url{CTAN://info/l2tabu/french/}}, or the
+Italian\footnote{See the Italian translation \Doku{l2tabuit} by
+ Emanuele Zannarini at \url{CTAN://info/l2tabu/italian/}} version
+respectively.
+
+Please tell us whether you have found \Doku{l2tabu} useful. We rely on
+your feedback for improving our guide.
+
+\subsection*{Thanks to\dots}
+
+\dots{}
+Ralf Angeli,
+Christoph Bier,
+Christian Faulhammer,
+Jürgen Fenn,
+Ulrike Fischer,
+Yvon Henel,
+Yvonne Hoffmüller,
+David Kastrup,
+Markus Kohm,
+Thomas Lotze,
+Frank Mittelbach,
+Heiko Oberdiek,
+Walter Schmidt,
+Stefan Stoll,
+Knut Wenzig,
+Emanuele Zannarini,
+and
+Reinhard Zierke
+for tips, remarks, and corrections of the German original version.
+
+\subsection*{Contributors to the English translation}
+
+Barbara Beeton,
+Christoph Bier,
+Klas Elmgren,
+Yvon Henel,
+Hendrik Maryns,
+Walter Schmidt,
+Maarten Sneep,
+Stefan Ulrich,
+Jos\'{e} Carlos Santos,
+Knut Wenzig,
+Bruno Wöhrer, and
+Federico Zenith
+have contributed to the English version, making suggestions, or
+encouraging development.\\
+
+\noindent If we have forgotten anyone please
+send an email to the maintainer of the respective language version.
+
+%\newpage
+
+
+\clearpage
+\tableofcontents
+%\clearpage
+
+\section{`Deadly sins'---The most severe mistakes in using \LaTeXe}
+\label{sec:todsunden}
+In this section we probably have gathered together the most severe
+mistakes that appear again and again in \News{de.comp.text.tex},
+leaving regulars either with a flush of anger or weeping with tears
+in their eyes. \texttt{;-)}
+
+\subsection{\Paket{a4}, \Paket{a4wide}}
+\label{sec:paketa4-paketa4wide}
+
+Do not use these `two' packages any longer. You should delete them
+without replacement from your \LaTeX{} source. Use the class option
+\Option{a4paper} instead. Speaking in terms of typography these
+packages, or others similar to these do not provide good layout. What
+is even worse, there is more than one version of these packages
+around, and different versions of those packages are incompatible with
+one another, providing deviating settings for page margins. So you
+may not trust that your document will look the same -- or just as bad?
+-- when being compiled on someone else's system when exchanging
+\LaTeX{} source.
+
+\Ersetze{\Paket{a4}, \normalcolor or \color{red} \Paket{a4wide}}{class option \Option{a4paper}}
+
+\subsection{Modifying page layout}
+\label{sec:layoutanderungen}
+Page margins produced by the standard classes (\Klasse{article},
+\Klasse{report}, \Klasse{book}) are often deemed too wide by European
+users printing on A4 paper. They should use the corresponding classes
+from the \KOMAScript{} bundle instead (\Klasse{scrartcl},
+\Klasse{scrreprt}, \Klasse{scrbook}). These classes have been made
+with a European point of view on typography in mind. You can also use
+\Paket{typearea} which is part of \KOMAScript{} with any other
+document class. The documentation included in the bundle provides some
+more information. Indeed, this very paper was typeset using
+\Klasse{scrartcl}.
+
+If you really need to use page margins altogether different from the
+ones produced by \Paket{typearea} use \Paket{geometry}, or
+\Paket{vmargin} because these packages provide reasonable proportions
+in setting page margins. Do not use \Macro{oddsidemargin} or similar
+commands for modifying page layout.
+
+Under no circumstances change \Macro{hoffset}, or \Macro{voffset},
+unless you really understand what \TeX{} is doing here.
+
+\subsection{Changing packages and document classes}
+\label{sec:ander-von-paket}
+Never modify \LaTeX{} class files (\emph{e.g.}, \Klasse{article},
+\Klasse{scrbook}) or packages (style files, \emph{e.g.},
+\Paket{varioref}, \Paket{color}) directly! If you do not want to make
+yourself a `container class', or a \texttt{.sty} file of your own you
+should \emph{copy} the class, or style files, edit \emph{the copy},
+and save it as a \emph{different} file using a \emph{different} file
+name.
+
+On how to create container classes see the
+\Doku{De-TeX-FAQ}~\cite[question 5.1.5]{faq:02}.
+
+\paragraph{Note:}
+\label{sec:hinweis}
+
+Install any additional files, or packages in the local texmf tree in
+your \texttt{\$HOME} directory. Otherwise these changes will be
+overwritten when upgrading your \TeX{} distribution. Styles or
+packages you only need in one particular project or which you may want
+to hand on to someone you wish to share your project with may as well
+be saved in the current working directory. See the
+\Doku{De-TeX-FAQ}~\cite[question 5.1.4]{faq:02}, or the \Doku{UK
+ FAQ}\cite[`Installing \LaTeX\ files', section K, `Where to put new
+files', question 77]{ukfaq:99}.
+
+\subsection{Changing inter-line space using \texttt{\textbackslash
+ baselinestretch}}
+\label{sec:ander-des-zeil}
+
+As a rule of thumb, parameters should be set on the highest possible
+level within a user interface. So if you want to reset inter-line
+space you can do so on three levels:
+\begin{enumerate}
+\item Either by using the \Paket{setspace} package;
+\item or by using the \LaTeX{} command \LMacro{linespread}{<factor>};
+\item or by redefining \Macro{baselinestretch}.
+\end{enumerate}
+Redefining parameters such as \Macro{baselinestretch} works on the
+lowest level available---which should better be left to packages. The
+\Macro{linespread} command is provided for this, so it is a better way
+to get more inter-line space than fiddling with
+\Macro{baselinestretch}. It is even better, though, to use
+\Paket{setspace} which also takes care of space in footnotes and list
+environments that you usually don't want to change when modifying
+inter-line space.
+
+So if you just need some more spacing between lines, say, you would
+like to set spacing to one half or to double spacing, \Paket{setspace}
+provides the easiest way to achieve this. However, if you only want to
+use fonts other than Computer Modern you may use
+\LMacro{linespread}{<factor>}. For example, when using Palatino
+\LMacro{linespread}{1.05} would be appropriate.
+
+\subsection[Parindent and the spread between paragraphs
+(\texttt{\textbackslash{}parindent},
+\texttt{\textbackslash{}parskip})]{Paragraph indent and the spread
+ between paragraphs (\texttt{\textbackslash{}parindent},
+ \texttt{\textbackslash{}parskip})}
+\label{sec:absatz-und-abst}
+
+It may make sense to change the indent of the first line in paragraphs
+(\Macro{parindent}). However, if you do so, please note the following:
+\begin{itemize}
+\item Never use absolute sizes (\emph{e.g.}, `mm') to modify paragraph
+ indent. Use sizes that depend on font size, such as `em',
+ \emph{e.g.} The latter does \emph{not} mean that indent adapts
+ automatically when changing the font size. Rather, the value that
+ goes with the font currently activated is used.
+\item Always use \LaTeX{} commands. For example, this may make it
+ easier to parse\footnote{That is to say, analyse syntactically, or
+ split up.} a \LaTeX{} file through an external program, or
+ script. Your code will be easier to maintain, too. So problems
+ concerning compatibility with other packages can be avoided as well
+ (\Paket{calc}, \emph{e.g.}).
+ \Ersetze{\Macro{parindent}\texttt{=1em}}{\LMacro{setlength}{\Macro{parindent}}\{1em\}}
+\end{itemize}
+%
+In case you prefer some additional space between paragraphs to
+paragraph indent for marking the start of a new paragraph (`zero
+paragraph indent') do \emph{not} use
+\color{red}
+\begin{verbatim}
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{\baselineskip}
+\end{verbatim}
+\normalcolor
+%
+The \Macro{parskip} macro should not be used as it will also modify
+settings for list environments, table of contents etc., and headings.
+
+\Paket{parskip}, however, as well as the \KOMAScript\ classes go to
+some lengths to avoid these side effects. On how to use these
+\KOMAScript{} class options (\Option{parskip}, \Option{halfparskip},
+etc.) see \Doku{scrguien}~\cite{kohm:03}. When using one of the
+\KOMAScript{} classes you do \emph{not} need to load \Paket{parskip}.
+
+\subsection{Separating maths formulae from continuous text using \texttt{\$\$\dots\$\$}}
+\label{sec:abges-form-mit}
+
+Please don't do this! \texttt{\$\$\dots\$\$} is a Plain \TeX{}
+command. It will modify vertical spacing within formulae, rendering
+them inconsistent. This is why it should be avoided in \LaTeX{} (see
+section~\vref{sec:mathematiksatz}; note the warning concerning
+\texttt{displaymath} along with the \Paket{amsmath} package). What's
+more, class option \Option{fleqn} won't work any more.
+
+\Ersetze{\texttt{\$\$\dots\$\$}}{%
+\parbox[t]{.3\textwidth}{%
+\Macro{[}\texttt{\dots}\Macro{]}\\
+\textcolor{black}{or}\\
+\Env{displaymath}{\dots}}}
+
+\subsection{\texttt{\textbackslash def} vs. \texttt{\textbackslash newcommand}}
+\label{sec:def-vs.-newcommand}
+
+\emph{Always} use \NewCom{<name>}{\dots} for defining
+macros.\footnote{See \cite[section 2.7.2]{clsguide}, \cite[section
+ 3.4]{usrguide}.}
+
+\emph{Never} use \Macro{def}\LMacro{<name>}{\dots}. The main problem
+with \Macro{def} is that no check is done on whether there already
+exists another macro of the same name. So a macro defined earlier may
+be overwritten without any error warning.
+
+Macros may be re-defined using \ReNewCom{<name>}{\dots}.
+
+If you know \emph{why} you need to use \Macro{def} you will probably
+know about the pros and cons of this command. Then, you may as well
+ignore this subsection.
+
+\subsection{Should I use \texttt{\textbackslash sloppy}?}
+\label{sec:verw-von-textttt}
+
+Frankly speaking, the \Macro{sloppy} switch should not be used at all.
+Most notably you shouldn't use it in the preamble of a document. If
+line breaks appear in single paragraphs you should
+
+\begin{enumerate}
+\item check whether the right hyphenation patterns, \emph{e.g.},
+ \Paket{(n)german}, and T1 fonts have been loaded (see
+ \Doku{De-TeX-FAQ}\cite[section 5.3]{faq:02}), or the \Doku{UK
+ FAQ}\cite[`Hyphenation', section Q.7]{ukfaq:99};
+\item put your text in other words. You do not necessarily need to
+ change the sentence the line break problem appears in. It may
+ suffice to change the preceding, or the next sentence;
+\item slightly change some parameters \TeX{} uses in its line-breaking
+ mechanism. Axel Reichert suggested the following
+ solution\footnote{Of course you may change these values according to
+ taste, but beware of fiddling with \TB\texttt{emergencystretch}.
+ Otherwise you'll get quite sloppy justified text as you would get
+ with a rather well-known text processor.} on
+ \News{de.comp.text.tex}:\footnote{The posting may be found as
+ \MID{a84us0$plqcm$7@ID-30533.news.dfncis.de}{a84us0\$plqcm\$7@ID-30533.news.dfncis.de}}:
+
+ \begin{minipage}[t]{\linewidth}
+\begin{verbatim}
+\tolerance 1414
+\hbadness 1414
+\emergencystretch 1.5em
+\hfuzz 0.3pt
+\widowpenalty=10000
+\vfuzz \hfuzz
+\raggedbottom
+\end{verbatim}
+ % \hspace{\baselineskip} % Yup, I know this isn't correct! ;-)
+ \end{minipage}
+ \par
+
+ Note that warnings appearing with the above settings \emph{really}
+ should be taken seriously. You \emph{should} consider putting your
+ text in other words, then.
+\end{enumerate}
+%
+Only if this fails you may try to typeset the following paragraph more
+`loosely' using the \texttt{sloppypar} environment.
+\begin{figure}[htp]
+ % If someone should wonder about the additional \fussy or the
+ % missing \sloppy : Use the Source Luke! \parbox by default typesets
+ % \sloppy, so for the original linebreak \fussy is required.
+ \begin{minipage}[t]{.45\textwidth}
+ \centering {\fontsize{10pt}{12pt}\fontencoding{OT1}\selectfont
+ \fbox{\parbox{16.27em}{\fussy%
+ tatata tatata tatata tatata tatata tatata tata\-tata tatata tatata
+ tatata tatata tatata tatata tata\-tata tatata tatata tatata tatata
+ ta\-tatatatt\-ta tatata tatata tatata tatata tatata tatata
+ ta\-ta\-ta\-ta}}}
+ \caption{\LaTeX' s default settings}%
+ \label{fig:beispiel-mit-latex}%
+ \end{minipage}%
+ \hfill%
+ \begin{minipage}[t]{.45\textwidth}
+ \centering
+ {\fontsize{10pt}{12pt}\fontencoding{OT1}\selectfont
+ \fbox{\parbox{16.27em}{%
+ tatata tatata tatata tatata tatata tatata tata\-tata tatata tatata
+ tatata tatata tatata tatata tata\-tata tatata tatata tatata tatata
+ ta\-tatatatt\-ta tatata tatata tatata tatata tatata tatata
+ ta\-ta\-ta\-ta}}}
+ \caption{This demonstrates the effect of \texttt{\string\sloppy}}
+ \label{fig:beisp-mit-textttstr}
+ \end{minipage}
+\end{figure}
+
+In figures~\ref{fig:beispiel-mit-latex} and
+\vref{fig:beisp-mit-textttstr} I have tried to show the effect of
+\Macro{sloppy}. This also depends on the font employed. When using
+Times the negative effects of \Macro{sloppy} do not show as extremely
+as with, say, Computer Modern. The effect in principle, however,
+should become clear.
+
+In \News{comp.text.tex} Markus Kohm has posted an example that shows
+this effect even better. With his kind permission I quote his code
+appendix~\vref{sec:beispiel-zu-sloppy}.
+
+%----------------------- section "Obsolete" ------------------------
+\section{Some obsolete commands and packages}
+\label{sec:obsoletes}
+
+Markus Kohm has written a Perl script you can test your files online
+with for the most common mistakes. See
+\url{http://kohm.de.tf/markus/texidate.html}. Please note, however,
+that this script is not a complete \TeX{} parser. This is why it will
+only check for the most common mistakes. Please test your file first,
+then post for help to a newsgroup, or to a mailing list.
+
+\subsection{Commands}
+\label{sec:befehle}
+
+\subsubsection{Changing font style}
+\label{sec:ander-des-schr}
+Table~\vref{tab:befehle-zur-anderung} shows obsolete and `proper'
+commands in \LaTeXe{} side by side for changing font style. Macros
+called `local' only apply to their own argument whereas those called
+`global/switch' will apply to all following text till the end of the
+document.
+
+\paragraph{Why not use obsolete commands?}
+\label{sec:warum-sollte-man}
+
+Obsolete commands do not support \LaTeXe's new font selection scheme,
+or NFSS. \GMacro{bf}{foo}, for example, resets all font attributes
+which had been set earlier before it prints \emph{foo} in bold face.
+This is why you cannot simply define a bold-italics style by
+\GMacro{it}{\Macro{bf Test}} only. (This definition will produce:
+{\it\bf Test}.) On the other hand, the new commands
+\LMacro{textbf}{\LMacro{textit}{Test}} will behave as expected
+producing: \textbf{\textit{Test}}. Apart from that, with the former
+commands there is no `italic correction', cf. for instance {\it
+ half}hearted (\GMacro{it}{half}\texttt{hearted}) to
+\textit{half}hearted (\LMacro{textit}{half}\texttt{hearted}).
+
+For an overview of NFSS see \cite{fntguide}.
+
+\begin{table}
+ \begin{minipage}{\textwidth}
+ \renewcommand{\footnoterule}{}
+ \centering
+ \caption{Commands for changing font style}
+ \label{tab:befehle-zur-anderung}
+ \begin{tabular}{@{}lll@{}}
+ \toprule
+ \multicolumn{1}{@{}N}{obsolete}&
+ \multicolumn{2}{C@{}}{Replacement in \LaTeXe}\\
+ \cmidrule(l){2-3}
+ &
+ \multicolumn{1}{N}{local} &
+ \multicolumn{1}{N@{}}{global/switch}\\
+ \cmidrule(r){1-1}\cmidrule(lr){2-2}\cmidrule(l){3-3}
+ \GMacro{bf}{\dots} & \LMacro{textbf}{\dots} & \Macro{bfseries}\\
+ --- & \LMacro{emph}{\dots} & \Macro{em}\footnote{May be useful
+ when defining macros. In continuous text \LMacro{emph}{\dots}
+ should be preferred to \Macro{em}.}\\
+ \GMacro{it}{\dots} & \LMacro{textit}{\dots} & \Macro{itshape}\\
+ --- & \LMacro{textmd}{\dots} & \Macro{mdseries}\\
+ \GMacro{rm}{\dots} & \LMacro{textrm}{\dots} & \Macro{rmfamily}\\
+ \GMacro{sc}{\dots} & \LMacro{textsc}{\dots} & \Macro{scshape}\\
+ \GMacro{sf}{\dots} & \LMacro{textsf}{\dots} & \Macro{sffamily}\\
+ \GMacro{sl}{\dots} & \LMacro{textsl}{\dots} & \Macro{slshape}\\
+ \GMacro{tt}{\dots} & \LMacro{texttt}{\dots} & \Macro{ttfamily}\\
+ --- & \LMacro{textup}{\dots} & \Macro{upshape}\\
+ \bottomrule
+ \end{tabular}
+\end{minipage}
+\end{table}
+
+\subsubsection{Mathematical fractions (\texttt{\textbackslash over} vs. \texttt{\textbackslash frac})}
+\label{sec:textb-over-vs}
+
+Avoid the \Macro{over} command. \Macro{over} is a \TeX{} command which
+due to the syntax differing from \LaTeX's is even more complicated to
+parse or which cannot be parsed at all. The \Paket{amsmath} package
+redefines \verb+\frac{}{}+ which will result in error messages when
+using \Macro{over}. Another point in favour of using \verb+\frac{}{}+
+is that it is easier to fill in both the fraction's numerator and
+denominator, especially with more complex fractions.
+
+\Ersetze{\texttt{\$a \textbackslash over b\$}}%
+{\texttt{\$\textbackslash frac\{a\}\{b\}\$}}
+
+\subsubsection{Centring text using \texttt{\textbackslash centerline}}
+\label{sec:centerline}
+
+The \Macro{centerline} command is another \TeX{} command you should
+not use. On the one hand \Macro{centerline} is incompatible with some
+\LaTeX{} packages, such as \Paket{color}. On the other hand the
+package may yield unexpected results.
+\emph{E.g.}:
+\begin{center}
+ \begin{minipage}[t]{.45\textwidth}
+\begin{verbatim}
+\begin{enumerate}
+\item \centerline{An item}
+\end{enumerate}
+\end{verbatim}
+ \end{minipage}%
+ \hfill%
+% \hspace{.05\textwidth}%
+ \fbox{ \begin{minipage}[t]{.45\textwidth}
+ \begin{enumerate}
+ \item \centerline{An item}
+ \end{enumerate}
+ \end{minipage}}
+\end{center}
+\Ersetze{\LMacro{centerline}{\dots}}%
+{\parbox[t]{.3\textwidth}{%
+ \GMacro{centering}{\dots}\\
+\textcolor{black}{or}\\
+\Env{center}{\dots}
+}}
+
+\paragraph{Note:}
+\label{sec:anmerkung-5}
+
+On how to centre graphics and tables see
+section~\vref{sec:gleit-figure-table}.
+
+\subsection{Class files and packages}
+\label{sec:pakete}
+
+\subsubsection{\Klasse{scrlettr} vs. \Klasse{scrlttr2}}
+\label{sec:paketscrl-vs.-pakets}
+
+\Klasse{scrlettr} class from the \KOMAScript\ bundle is obsolete. It
+was replaced by \Klasse{scrlttr2}. In order to produce a
+layout \emph{similar} to the former \KOMAScript\ letter class use
+class option \Option{KOMAold} which provides a compatibility mode.
+
+\sbox{\Breite}{\texttt{\textbackslash documentclass\{scrltter\}}}
+\Ersetzx[\wd\Breite]{\texttt{\textbackslash documentclass\{scrlettr\}}}%
+{\texttt{\textbackslash documentclass[KOMAold]\{scrlttr2\}}}
+
+\paragraph{Note:}
+\label{sec:anmerkung-3}
+
+For new templates and letters use the new interface. It is definitely
+more flexible.
+
+It is not possible to elaborate on the differences between the two
+user interfaces in this overview. See \Doku{scrguien}~\cite{kohm:03}
+for details.
+
+\subsubsection{\Paket{epsf}, \Paket{psfig}, \Paket{epsfig} vs.
+ \Paket{graphics}, \Paket{graphicx}}
+\label{sec:grafikeinbindung}
+
+The \Paket{epsf} and the \Paket{psfig} packages have been replaced by
+\Paket{graphics} and \Paket{graphicx}. \Paket{epsfig} is just a
+wrapper\footnote{A `wrapper' here denotes a style file which itself
+ loads another one or more style files, hence modelling functions.}
+for processing old documents which had been done using \Paket{psfig}
+with the \Paket{graphicx} package.
+
+As \Paket{epsfig} uses \Paket{graphicx} internally \Paket{epsfig}
+still \emph{may} be used. You should not use it, though, for new
+documents. \Paket{graphics} or \Paket{graphicx} should be preferred,
+then. \Paket{epsfig} is mainly provided for reasons of compatibility,
+as mentioned above.
+
+For the differences between \Paket{graphics}, and \Paket{graphicx} see
+\Doku{grfguide}~\cite{graphicx:99}. For hints on centring graphics see
+section~\vref{sec:gleit-figure-table}.
+
+\sbox{\Breite}{\LMacro{psfig}{file=Bild,\dots}}
+\Ersetze{\parbox[t]{\wd\Breite}{\Use{psfig}\\%
+ \LMacro{psfig}{file=image,\dots}}}%
+{\parbox[t]{.45\textwidth}{%
+ \Use{graphicx}\\%
+ \texttt{\textbackslash includegraphics[\dots]\{image\}}}}
+
+\subsubsection{\Paket{doublespace} vs. \Paket{setspace}}
+\label{sec:zeilenabstande}
+
+For changing inter-line space use the \Paket{setspace} package.
+\Paket{doublespace} is obsolete. It was replaced by \Paket{setspace}.
+Cf. section ~\vref{sec:ander-des-zeil}.
+
+\Ersetze{\Use{doublespace}}{\Use{setspace}}
+
+\subsubsection{\Paket{fancyheadings}, \Paket{scrpage} vs. \Paket{fancyhdr}, \Paket{scrpage2}}
+\label{sec:lebende-kolumn}
+
+The \Paket{fancyheadings} package was replaced by \Paket{fancyhdr}.
+Another way to modify headings is provided by the \Paket{scrpage2}
+package from the \KOMAScript\ bundle. Do not use \Paket{scrpage} for
+it is obsolete. For documentation on \Paket{scrpage2} see
+\Doku{scrguien}~\cite{kohm:03}.
+
+\Ersetze{\Use{fancyheadings}}{\Use{fancyhdr}}
+\Ersetze{\Use{scrpage}}{\Use{scrpage2}}
+
+\subsubsection{The \Paket{caption} family of packages}
+\label{sec:die-caption-famile}
+
+The \Paket{caption2} package should no longer be used because there is
+a new version (v3.x) of \Paket{caption}. Please make sure to use the
+latest version of this package by loading \Paket{caption} like this:
+\Ersetze{\Use{caption}}{\UseV{caption}{2004/07/16}}
+
+In case you used \Paket{caption2} before, please have a look into the
+package documentation \Doku{anleitung}~\cite[section~8]{caption:04}.
+
+\subsubsection{\Paket{isolatin}, \Paket{umlaut} vs. \Paket{inputenc}}
+\label{sec:eingabe-von-umlauten}
+
+\paragraph{Some general notes: }
+\label{sec:generelles}
+
+Basically there are four ways to input German \emph{umlauts} and
+other non-ASCII characters:
+
+\begin{enumerate}
+\item \verb+H{\"u}lle+: This will work on any given system anytime.
+
+ The main disadvantages, however, are that
+ kerning\footnote{`Kerning' means including positive or negative
+ space between characters depending on which characters are to be
+ typeset.} between letters is disturbed badly; it is extremely
+ complicated to input at least in a German-language text; and it is
+ rather hard to read in source code.
+
+ So this variant should \emph{always} be avoided due to the problems
+ as far as kerning is concerned.
+
+\item With \verb+H\"ulle+ or \verb+H\"{u}lle+ the abovementioned
+ problems as far as kerning is concerned do not appear. It can be
+ used on every system, too.
+
+ However it is just as tricky to input and to read the text as with
+ the above variant.
+
+ This variant does make sense, however, when defining macros or style
+ files for it does not require a particular text file encoding nor
+ any additional packages.\label{item:die-eingabe-der}
+
+\item With \Paket{(n)german} or the \Option{(n)german} option in
+ \Paket{babel} German \emph{umlauts} can be input easier
+ (\verb+H"ulle+). Again this will work on all systems. As both
+ \Paket{babel} and \Paket{(n)german} are available on all \TeX\
+ systems there should be no problems as far as compatibility is
+ concerned.
+
+ However, this again is tricky to input, and the source is
+ comparatively hard to read.
+
+ This variant is best for use in continuous text. But it should be
+ avoided in macro definitions and in preambles.
+
+\item Direct input (\verb+Hülle+). The advantage of this variant is
+ obvious. You can input and read the continuous source text just as
+ any other `normal' text.
+
+ On the other hand you have to tell \LaTeX\ which input encoding is
+ used. There may also be problems when exchanging files between
+ different systems. This is \emph{not} a problem for \TeX, or \LaTeX\
+ itself, but it may cause \emph{problems in displaying text in
+ editors} on different systems. For example, a Euro currency
+ symbol encoded in iso-8859-15 (latin9) may be \emph{displayed} in an
+ editor on a windows box (CP1252) as \textcurrency\ .
+
+ This variant is quite good for continuous text. It should, however,
+ be avoided in macro definitions and in preambles.
+\end{enumerate}
+%
+To sum it up, in macros, in preambles, and in style files
+\verb+H\"ulle+, or \verb+H\"{u}lle+ should be used, while in the rest
+of the text you should either use \verb+H"ulle+, or \verb+Hülle+.
+
+\paragraph{Input Encoding}
+\label{sec:eingabekodierung-1}
+
+Do \emph{not} use the packages \Paket{isolatin1}, \Paket{isolatin}, or
+\Paket{umlaut} for setting input encoding! Those packages are either
+obsolete, or they are not available on any given system.
+
+Use \Paket{inputenc}. There are four options available:
+\begin{description}
+\item[latin1/latin9] for Unix-like systems (latin1 also works on MS
+ Windows and Mac OS\,X)
+\item[ansinew] for MS Windows
+\item[applemac] for the Macintosh\footnote{latin1 encoding is
+ recommended for OS\,X users, too, as it is better fit for
+ exchanging files cross-platform than applemac. If you do so you
+ should, however, check the encoding settings of your editor first.
+ In the long run you might like to switch to unicode, but please
+ note that unicode support in \Paket{inputenc} still is a work in
+ progress at this point of time. Some users say they are content
+ with \Paket{ucs} from the \textsf{unicode} package.}
+\item[cp850] for OS/2
+\end{description}
+
+\Ersetze{\Use{isolatin1}}{\UseO{latin1}{inputenc}}
+\Ersetze{\Use{umlaut}}{\UseO{latin1}{inputenc}}
+
+\subsubsection{\Paket{t1enc} vs. \Paket{fontenc}}
+\label{sec:schriftkodierung}
+
+Generally speaking, the topic has been dealt with sufficiently in both
+the \Doku{De-TeX-FAQ}~\cite[questions 5.3.2, 5.3.3, 10.1.10]{faq:02},
+and the \Doku{UK FAQ}~\cite[`Why use \emph{fontenc} rather than
+\emph{t1enc}', question 328]{ukfaq:99}. So all that remains to be said
+is that \Paket{t1enc} is obsolete and hence should be replaced by
+\Paket{fontenc}.
+
+\Ersetze{\Use{t1enc}}{\UseO{T1}{fontenc}}
+
+\subsubsection{\Bst{natdin} vs. \Bst{dinat}}
+\label{sec:liter-nach-din}
+
+Style file \Bst{natdin} was replaced by \Bst{dinat}.
+\Ersetze{\Bib{natdin}}{\Bib{dinat}}
+
+\subsection{Fonts}
+\label{sec:schriften}
+
+`Fonts and \LaTeX' is a troublesome topic. Most discussions in
+\News{de.comp.text.tex} start with the question why fonts display so
+`fuzzy' in Adobe Acrobat\textsuperscript{\textregistered} Reader. Most
+answers point to the \Paket{times} or \Paket{pslatex} packages.
+However, those packages use completely different sets of fonts.
+
+For an overview of \LaTeXe's New Font Selection Scheme, or NFSS see
+\cite{fntguide}.
+
+For making Computer Modern fonts display just fine in \emph{acroread}
+see \Doku{De-TeX-FAQ}~\cite[question 9.2.3]{faq:02}, or \Doku{UK
+ FAQ}~\cite[`The wrong type of fonts in PDF', question 100]{ukfaq:99}.
+
+\subsubsection{\Paket{times}}
+\label{sec:pakettimes}
+
+\Paket{times} is obsolete (see \Doku{psnfss2e} \cite{psnfss:02}). It
+does set \Macro{rmdefault} to Times, \Macro{sfdefault} to Helvetica,
+and \Macro{ttdefault} to Courier. But it does \emph{not} use the
+corresponding mathematical fonts. What's more, Helvetica is not scaled
+correctly which makes it appear too big in comparison. So if you want
+to use the combination Times/\/Helvetica/\/Courier you should use:
+
+\sbox{\Breite}{\UseO{scaled=.95}{helvet}}
+\Ersetze{\Use{times}}%
+{\parbox[t]{\wd\Breite}{%
+ \Use{mathptmx}\\
+ \UseO{scaled=.90}{helvet}\\
+ \Use{courier}}}
+
+\paragraph{Note.}
+\label{sec:anmerkung-1}
+
+The scaling factor for \Paket{helvet} together with Times should be
+somewhere between $0.90$ and $0.92$.
+
+\subsubsection{\Paket{mathptm}}
+\label{sec:mathptm}
+
+\Paket{mathptm} is the predecessor to \Paket{mathptmx}. So please use
+the latter for typesetting mathematical formulae in Times.
+
+\Ersetze{\Use{mathptm}}{\Use{mathptmx}}
+
+\subsubsection{\Paket{pslatex}}
+\label{sec:paketpslatex}
+
+\Paket{pslatex} internally works like \Paket{mathptm}$+$
+\Paket{helvet} (scaled). However, it uses a Courier font scaled too
+narrowly. The main disadvantage in using \Paket{pslatex} is that it
+does \emph{not} work with T1 and TS1 encodings.
+
+\Ersetze{\Use{pslatex}}{\parbox[t]{\wd\Breite}{\Use{mathptmx}\\\UseO{scaled=.90}{helvet}\\\Use{courier}}}
+
+\paragraph{Note on Courier for all combinations of Times/Helvetica}
+\label{sec:anmerkung-zu-allen}
+
+You do not have to load \Paket{courier} at all. You may use the usual
+\texttt{cmtt} font for typewriter faces.
+
+\subsubsection{\Paket{palatino}}
+\label{sec:paketpalatino}
+
+\Paket{palatino} behaves like \Paket{times} -- apart from setting
+\Macro{rmdefault} to Palatino, of course. \Paket{palatino} is
+obsolete, too. This is why it should not be used any more.
+
+\Ersetze{\Use{palatino}}{\parbox[t]{\wd\Breite}{\Use{mathpazo}\\\UseO{scaled=.95}{helvet}\\\Use{courier}}}
+
+\paragraph{Note:}
+\label{sec:anmerkung-2}
+
+Scaling factor for \Paket{helvet} in combination with Palatino should
+be set to $0.95$.
+
+Helvetica is \emph{not} the `best' sans-serif font at all for use with
+Palatino. It rather is the best \emph{freely-available} one. He that
+possesses a CorelDraw\textsuperscript{\textregistered}-CD (this may
+well be an older version) can use Palatino quite well along with
+Frutiger\footnote{Bitstream Humanist 777, bfr}, or
+Optima\footnote{Bitstream Zapf Humanist, bop}. Walter Schmidt supplies
+adaptations for using some PostScript fonts with \TeX{} on his
+homepage.\footnote{Fonts for \TeX:
+ \url{http://home.vr-web.de/was/fonts}}
+
+\subsubsection{\Paket{mathpple}}
+\label{sec:paketmathpple}
+
+This package was a predecessor to \Paket{mathpazo}. It lacks some
+symbol fonts. So those fonts are taken from the Euler fonts instead.
+Some other symbols are not fit for use with Palatino as the font
+metrics are not correct. For details cf.
+\Doku{psnfss2e}~\cite{psnfss:02}.
+
+\subsubsection{Typesetting upright greek letters}
+\label{sec:aufr-griech-buchst}
+
+The passages I have marked as red in the following are not obsolete in
+the sense of `you should not use this any more', but now editing text
+is made much easier by \Paket{upgreek}. For some more hints on usage
+please see the documentation \Doku{upgreek}~\cite{upgreek:01}.
+
+\minisec{The \Paket{pifont} tricks}\nopagebreak[4]
+\sbox{\Breite}{\NewCom{uppi}{\LMacro{Pisymbol}{psy}\{112\}}}
+\Ersetzx[\wd\Breite]{%
+ \Use{pifont}\\
+ \NewCom{uppi}{\LMacro{Pisymbol}{psy}\{112\}}\\
+ \Macro{uppi}\\
+ \textcolor{black}{or}\\
+ \NewCom[{[1]}]{upgreek}{\%\\
+ ~\Macro{usefont}\{U\}\{psy\}\{m\}\{n\}\#1}\\
+ \LMacro{upgreek}{p}
+}%
+{%
+ \Use{upgreek}\\
+ \$\Macro{uppi}\$
+}
+
+\minisec{The \Paket{babel} trick}
+
+\Ersetzx[\wd\Breite]{%
+ \UseO{greek,\dots}{babel}\\
+ \NewCom[{[1]}]{upgreek}{\%\\
+ ~\LMacro{foreignlanguage}{greek}\{\#1\}}\\
+ \LMacro{upgreek}{p}
+ }
+ {%
+ \Use{upgreek}\\
+ \$\Macro{uppi}\$
+}
+
+\subsubsection{\Paket{euler} vs. \Paket{eulervm}}
+\label{sec:euler-eulervm}
+
+Use \Paket{eulervm} instead of \Paket{euler} for mathematical
+typesetting. \Paket{eulervm} is a \LaTeX{} package for using the
+eulervm fonts. These are virtual math fonts based on both the Euler
+and the CM fonts. consuming less of \TeX's resources and supplying
+some improved math symbols. Improved \texttt{$\backslash$hslash} and
+\texttt{$\backslash$hbar} are also supplied. Please see the package
+documentation \Doku{eulervm}~\cite{eulervm:04} for details.
+
+\Ersetze{\Use{euler}}{\parbox[t]{\wd\Breite}{\Use{eulervm}}}
+
+%-------------------- section "Miscellanous" ---------------------
+\section{Miscellaneous}
+\label{sec:verschiedenes}
+
+This section -- apart from \vref{sec:der-anhang} -- gives some more
+general advice than the `deadly sins' section, pp.
+\pageref{sec:todsunden}\,ff.
+
+\subsection{Floats---`figure', `table'}
+\label{sec:gleit-figure-table}
+
+For centring a float environment we recommend you use
+\Macro{centering} instead of \newline\LMacro{begin}{center} \dots{}
+\LMacro{end}{center} because the latter will include an additional
+vertical skip you can do without in most cases.
+\sbox{\Breite}{\LMacro{includegraphics}{bild}}
+\Ersetze{\parbox[t]{\wd\Breite}{%
+ \Env{figure}{\Env{center}{\LMacro{includegraphics}{bild}}} }}%
+{\parbox[t]{\wd\Breite}{%
+ \Env{figure}{\Macro{centering}\\%
+ \LMacro{includegraphics}{bild}} }}
+
+\paragraph{Note:}
+\label{sec:anmerkung-4}
+
+However, when centring a region within continuous text or within a
+\verb+titlepage+ environment this additional space may be welcome!
+
+\subsection{The appendix}
+\label{sec:der-anhang}
+
+The appendix is introduced by the \Macro{appendix} \emph{command}.
+Note that this is \emph{not an environment}.
+
+\sbox{\Breite}{\LMacro{begin}{appendix}}
+\Ersetze{\parbox[t]{\wd\Breite}{%
+ \Env{appendix}%
+ {\LMacro{section}{Blub}}}}%
+{\parbox[t]{.33\textwidth}{%
+ \Macro{appendix}\\
+ \LMacro{section}{Blub} }}
+
+\subsection{Mathematical typesetting}
+\label{sec:mathematiksatz}
+
+Generally speaking, you should use \Paket{amsmath} for advanced
+mathematical typesetting, providing a number of new environments replacing
+\texttt{eqnarray} in the first place. The main advantages of the
+package are these:
+
+\begin{itemize}
+\item Spacing within and around environments is more consistent.
+\item Equation numbering will be placed in a way so that they will not
+ be printed over any more.
+\item Some new environments, \emph{e.g.}, \texttt{split}, provide a
+ solution to split up long equations easily.
+\item It is easy to define new operators (similar to \Macro{sin} etc.)
+ with proper spacing.
+\end{itemize}
+
+\paragraph{Warning:}
+\label{sec:warnung}
+
+When using \Paket{amsmath} you should \emph{never} use the
+\texttt{displaymath}, \texttt{eqnarray}, or \texttt{eqnarray*}
+environments because those are not supported by \Paket{amsmath}.
+Otherwise this would lead to inconsistent spacing.
+
+\texttt{\textbackslash [\dots\textbackslash]} is adapted correctly by
+\Paket{amsmath}. So it may be used instead of \texttt{displaymath}.
+\texttt{eqnarray}, and \texttt{eqnarray*} may be replaced by
+\texttt{align}, or \texttt{align*}. For a complete overview of
+\Paket{amsmath} see \Doku{amsldoc}~\cite{amsldoc:99}.
+
+\sbox{\Breite}{\LMacro{includegraphics}{bild}}
+\Ersetze{%
+ \parbox[t]{\wd\Breite}{%
+ \Env{eqnarray}{%
+ a \&=\& b \textbackslash\textbackslash\\
+ b \&=\& c \textbackslash\textbackslash\\
+ a \&=\& c
+ }
+ }}%
+ {\parbox[t]{\wd\Breite}{%
+ \Env{align}{%
+ a \&= b \textbackslash\textbackslash\\
+ b \&= c \textbackslash\textbackslash\\
+ a \&= c
+ }
+ }}
+
+
+\subsection{How to use \texttt{\TB graphicspath}}
+\label{sec:die-verwendung-von}
+
+There are several reasons why you should avoid the
+\Macro{graphicspath} macro. Replace it by setting environment variable
+\texttt{TEXINPUTS}:\footnote{Cf. David Carlisle's answer on Markus
+ Kohm's `Bug-Report' at\newline
+ \url{http://www.latex-project.org/cgi-bin/ltxbugs2html?pr=latex/2618}}
+\begin{enumerate}
+\item There are \emph{different} seperators in path names on different
+ platforms. While MS Windows and Unices both use a slash `/', a colon
+ `:' is used on Macintosh systems.
+\item \TeX{} search takes longer than with using the kpathsea library
+ (with today's fast chips this is not as important an argument as it
+ used to be).
+\item \TeX's memory is limited, and every picture uses part of this
+ memory. What's more, memory is not cleared during the compiling
+ process.
+\end{enumerate}
+%
+In a Bourne shell use
+\begin{verbatim}
+$ TEXINPUTS=PictureDir:$TEXINPUTS latex datei.tex
+\end{verbatim}
+or add to \verb+~/.profile+
+\begin{verbatim}
+export TEXINPUTS=./PictureDir:$TEXINPUTS
+\end{verbatim}%$
+In the latter case the files in \texttt{PictureDir} will be found
+within the current working directory.
+
+\noindent
+Up to MS~Windows~98 the environment variable is set by adding
+\begin{verbatim}
+set TEXINPUTS=.\PictureDir;%TEXINPUTS%
+\end{verbatim}
+to your \texttt{autoexec.bat}. On MS Windows~NT-based systems
+according to the `Microsoft Knowledge Base' the variable can be set by
+rightclicking at \textsf{My Computer $\rightarrow$ System Properties
+ $\rightarrow$ Advanced $\rightarrow$ Environment
+ variables}.\footnote{On Windows~2000 you may use:
+ \textsf{Start} $\rightarrow$ Settings $\rightarrow$ Control Panel
+ $\rightarrow$ System.}
+
+The above are only some suggestions on how to proceed. I am well aware
+that \texttt{TEXINPUTS} may be set in different ways. Please see the
+documentation of your operating system, or of your \TeX{} distribution
+for more.
+
+\subsection{Language-specific macros -- \texttt{\textbackslash*name}}
+\label{sec:die-macroname-makros}
+
+From time to time the question comes up in \News{de.comp.text.tex} how
+to modify, \emph{e.g.}, the `References' heading to `Literaturliste'
+or to something else. So I have compiled those macros in
+table~\vref{tab:von-paketng-btw}. They have been taken from the
+\Paket{german} package. Users who want to adapt macro output to other
+languages may as well refer to this table as an example.
+
+So if you want to change the heading `List of Figures' to, say,
+`Pictures' you may use the following command:
+\begin{verbatim}
+\renewcommand*{\listfigurename}{Pictures}
+\end{verbatim}
+The other macros are changed in the same way respectively. With
+\Paket{babel} use the \Macro{addto} macro. For more details see the
+\Doku{De-TeX-FAQ}~\cite{faq:02}.
+
+\begin{table}
+ \begin{minipage}{\textwidth}
+ \centering
+ \caption{Macros defined by \Paket{(n)german} or by \Paket{babel}
+ with the \Option{(n)german} option}
+ \label{tab:von-paketng-btw}
+ \begin{tabular}{@{}lll@{}}
+ \toprule
+ \multicolumn{1}{@{}N}{Name of macro} &
+ \multicolumn{1}{N}{Original definition} &
+ \multicolumn{1}{N@{}}{Usual output in German} \\
+ \cmidrule(r){1-1}\cmidrule(lr){2-2}\cmidrule(l){3-3}
+ \Macro{prefacename} & Preface & Vorwort \\
+ \Macro{refname}\footnote{In \texttt{article} class only.}
+ & References & Literatur \\
+ \Macro{abstractname} & Abstract & Zusammenfassung \\
+ \Macro{bibname}\footnote{In \texttt{report} and
+ \texttt{book} classes only.}
+ & Bibliography & Literaturverzeichnis \\
+ \Macro{chaptername} & Chapter & Kapitel \\
+ \Macro{appendixname} & Appendix & Anhang \\
+ \Macro{contentsname} & Contents & Inhaltsverzeichnis \\
+ \Macro{listfigurename} & List of Figures & Abbildungsverzeichnis \\
+ \Macro{listtablename} & List of Tables & Tabellenverzeichnis \\
+ \Macro{indexname} & Index & Index \\
+ \Macro{figurename} & Figure & Abbildung \\
+ \Macro{tablename} & Table & Tabelle \\
+ \Macro{partname} & Part & Teil \\
+ \Macro{enclname} & encl & Anlage(n) \\
+ \Macro{ccname} & cc & Verteiler \\
+ \Macro{headtoname} & To & An \\
+ \Macro{pagename} & Page & Seite \\
+ \Macro{seename} & see & siehe \\
+ \Macro{alsoname} & see also & siehe auch \\
+ \bottomrule
+ \end{tabular}
+ \end{minipage}
+\end{table}
+\clearpage
+\appendix
+
+\begin{thebibliography}{99}\addcontentsline{toc}{section}{References}%
+
+\bibitem{amsldoc:99} \textsc{American Mathematical Society}:
+ \emph{User's Guide for the {\texttt{amsmath}} Package}. December 1999,
+ Version~2.0. \biburl{CTAN://macros/latex/required/amslatex/}.
+
+\bibitem{graphicx:99} \textsc{David~P. Carlisle}: \emph{Packages in the
+ `graphics' bundle}. January 1999.
+ \biburl{CTAN://macros/latex/required/graphics/}.
+
+\bibitem{ukfaq:99}\textsc{Robin Fairbairns}: \emph{The UK \TeX\ FAQ.
+ Your 375 Questions Answered.} WWW, Version~3.13, 4 January 2005,
+ \biburl{http://www.tex.ac.uk/faq}.
+
+\bibitem{kohm:03} \textsc{Markus Kohm}, \textsc{Frank Neukam} und
+ \textsc{Axel Kielhorn}: \emph{The KOMA-Script Bundle}.
+ \Doku{scrguien}.
+ \biburl{CTAN://macros/latex/supported/koma-script/}.
+
+\bibitem{clsguide} \textsc{The \LaTeX3 Project}: \LaTeXe{} for
+ class and package writers. 1999.
+ \biburl{CTAN://macros/latex/doc/clsguide.pdf}
+
+\bibitem{fntguide} \textsc{The \LaTeX3 Project}: \LaTeXe{} font
+ selection. 2000.
+ \biburl{CTAN://macros/latex/doc/fntguide.pdf}
+
+\bibitem{usrguide} \textsc{The \LaTeX3 Project}: \LaTeXe{} for
+ authors. 2001.
+ \biburl{CTAN://macros/latex/doc/usrguide.pdf}
+
+\bibitem{faq:02} \textsc{Bernd Raichle}, \textsc{Rolf Niepraschk} und
+ \textsc{Thomas Hafner}: \emph{Fragen und Antworten (FAQ) über das
+ Textsatzsystem {\TeX\ }und DANTE, Deutschsprachige
+ Anwendervereinigung {\TeX\ }e.V.} WWW, Version~72. September 2003,
+ \biburl{http://www.dante.de/faq/de-tex-faq/}.
+
+\bibitem{upgreek:01} \textsc{Walter Schmidt}: \emph{The
+ {\textsf{upgreek}} package for {\LaTeXe}}. May 2001, Version~1.0.
+ \biburl{CTAN://macros/latex/contrib/supported/was/}.
+
+\bibitem{psnfss:02} \textsc{Walter Schmidt}: \emph{Using common
+ PostScript fonts with {\LaTeX}}. April 2002, PSNFSS version 9.0.
+ \biburl{CTAN://macros/latex/required/psnfss/psnfss2e.pdf}
+
+\bibitem{eulervm:04} \textsc{Walter Schmidt}: \emph{The Euler Virtual Math
+ Fonts for use with {\LaTeX}}. Januar 2004, Version~3.0a.
+ \biburl{CTAN://fonts/eulervm/}
+
+\bibitem{l2kurz:99} \textsc{Walter Schmidt}, \textsc{Jörg Knappen},
+ \textsc{Hubert Partl} und \textsc{Irene Hyna}:
+ \emph{{\LaTeXe}-Kurzbeschreibung}. April 1999, Version~2.1.
+ \biburl{CTAN://info/lshort/german/}. English Translation available
+ at \biburl{CTAN://info/lshort/english/}
+
+\bibitem{caption:04} \textsc{Axel Sommerfeld}:
+ \emph{Setzen von Abbildungs- und Tabellenbeschriftungen mit dem
+ caption-Paket}. Juli 2004, Version~3.0c.
+ \biburl{CTAN://macros/latex/contrib/caption/}.
+\end{thebibliography}
+\begin{center}$\ast$\ $\ast$\ $\ast$\end{center}
+\bigskip
+%---------------------------------------------------------------------
+\section{An example illustrating the effect of the \texttt{\TB sloppy}
+ command}
+\label{sec:beispiel-zu-sloppy}
+This is the example Markus Kohm published earlier:
+\begin{bspcode}{\MID{8557097.gEimXdBtjU@ID-107054.user.dfncis.de}{8557097.gEimXdBtjU@ID-107054.user.dfncis.de}}%
+\footnotesize
+\begin{verbatim}
+\documentclass{article}
+
+\setlength{\textwidth}{20em}
+\setlength{\parindent}{0pt}
+\begin{document}
+\typeout{First without \string\sloppy\space and underfull \string\hbox}
+
+tatata tatata tatata tatata tatata tatata ta\-ta\-tata
+tatata tatata tatata tatata tatata tatata tata\-tata
+tatata tatata tatata tatata ta\-tatatatt\-ta
+tatata tatata tatata tatata tatata tatata ta\-ta\-ta\-ta
+
+\typeout{done.}
+
+\sloppy
+\typeout{Second with \string\sloppy\space and underfull \string\hbox}
+
+tatata tatata tatata tatata tatata tatata ta\-ta\-tata
+tatata tatata tatata tatata tatata tatata tata\-tata
+tatata tatata tatata tatata ta\-tatatatt\-ta
+tatata tatata tatata tatata tatata tatata ta\-ta\-ta\-ta
+
+\typeout{done.}
+\end{document}
+\end{verbatim}
+\end{bspcode}
+
+\clearpage
+%---------------------------------------------------------------------
+\setlength{\columnsep}{2em}
+\setlength{\columnseprule}{.5pt}
+\begin{multicols}{2}
+\section{GNU Free Documentation Licence}
+\label{sec:fdl}
+
+\tiny
+
+\begin{center}
+
+ Version 1.2, November 2002
+
+
+ Copyright \copyright 2000,2001,2002 Free Software Foundation, Inc.
+
+ \bigskip
+
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ \bigskip
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+\end{center}
+
+\subsubsection*{Preamble}
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document "free" in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+\subsubsection*{1. APPLICABILITY AND DEFINITIONS}
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The \textbf{"Document"}, below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as \textbf{"you"}. You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A \textbf{"Modified Version"} of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A \textbf{"Secondary Section"} is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject. (Thus, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The \textbf{"Invariant Sections"} are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The \textbf{"Cover Texts"} are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A \textbf{"Transparent"} copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not "Transparent" is called \textbf{"Opaque"}.
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification. Examples of
+transparent image formats include PNG, XCF and JPG. Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The \textbf{"Title Page"} means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+A section \textbf{"Entitled XYZ"} means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as \textbf{"Acknowledgements"},
+\textbf{"Dedications"}, \textbf{"Endorsements"}, or \textbf{"History"}.)
+To \textbf{"Preserve the Title"}
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+\subsubsection*{2. VERBATIM COPYING}
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+\subsubsection*{3. COPYING IN QUANTITY}
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+\subsubsection*{4. MODIFICATIONS}
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+\begin{itemize}
+\item[A.]
+ Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+
+\item[B.]
+ List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has fewer than five),
+ unless they release you from this requirement.
+
+\item[C.]
+ State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+
+\item[D.]
+ Preserve all the copyright notices of the Document.
+
+\item[E.]
+ Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+
+\item[F.]
+ Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+
+\item[G.]
+ Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+
+\item[H.]
+ Include an unaltered copy of this License.
+
+\item[I.]
+ Preserve the section Entitled "History", Preserve its Title, and add
+ to it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section Entitled "History" in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+
+\item[J.]
+ Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the "History" section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+
+\item[K.]
+ For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the section all
+ the substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+
+\item[L.]
+ Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+
+\item[M.]
+ Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+
+\item[N.]
+ Do not retitle any existing section to be Entitled "Endorsements"
+ or to conflict in title with any Invariant Section.
+
+\item[O.]
+ Preserve any Warranty Disclaimers.
+\end{itemize}
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+\subsubsection*{5. COMBINING DOCUMENTS}
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications". You must delete all sections
+Entitled "Endorsements".
+
+\subsubsection*{6. COLLECTIONS OF DOCUMENTS}
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+\subsubsection*{7. AGGREGATION WITH INDEPENDENT WORKS}
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+\subsubsection*{8. TRANSLATION}
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+\subsubsection*{9. TERMINATION}
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+\subsubsection*{10. FUTURE REVISIONS OF THIS LICENSE}
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+\subsubsection*{ADDENDUM: How to use this License for your documents}
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+\begin{quote}
+ Copyright \copyright YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled "GNU
+ Free Documentation License".
+\end{quote}
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+
+\begin{quote}
+ with the Invariant Sections being LIST THEIR TITLES, with the
+ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+\end{quote}
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+
+\end{multicols}
+%--------------------------------------------------------------------
+\section{\Doku{l2tabuen} revision history}
+
+\begin{description}
+\item[v1.8.5.1] Some typos fixed in the section on
+ `graphicspath'. Thanks to Jos\'{e} Carlos Santos.
+\item[v1.8.5] Adapted to the UK \TeX{} FAQ v3.13.
+\item[v1.8.4] GNU FDL made applicable to \Doku{l2tabuen}. `Revision
+ history' added.
+\end{description}
+\begin{center}$\ast$\ $\ast$\ $\ast$\end{center}
+\end{document}
+%%% Local variables:
+%%% mode: LaTeX
+%%% TeX-master: t
+%%% coding: iso-8859-1
+%%% End:
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-1.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-1.ltx
new file mode 100644
index 00000000000..a523e988ea8
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-1.ltx
@@ -0,0 +1,26 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {sprite}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {sprite}
+\input{smallsta.spr}
+\begin{picture}(100,100)(-100,-100)
+\put(25,-40){\makebox(0,0){\eecstar}}
+\put(25,40){\makebox(0,0){\eecstar}}
+\put(40,-25){\makebox(0,0){\eecstar}}
+\put(40,25){\makebox(0,0){\eecstar}}
+\put(-25,-40){\makebox(0,0){\eecstar}}
+\put(-25,40){\makebox(0,0){\eecstar}}
+\put(-40,-25){\makebox(0,0){\eecstar}}
+\put(-40,25){\makebox(0,0){\eecstar}}
+\put(0,-50){\makebox(0,0){\eecstar}}
+\put(-50,0){\makebox(0,0){\eecstar}}
+\put(0,50){\makebox(0,0){\eecstar}}
+\put(50,0){\makebox(0,0){\eecstar}}
+\put(0,0){\makebox(0,0){\Large $\mathcal{EULISP}$}}
+\end{picture}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-10.pic b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-10.pic
new file mode 100644
index 00000000000..8f05630da8c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-10.pic
@@ -0,0 +1,16 @@
+\documentclass{ppex}
+\nonstopmode
+
+\pagestyle{empty}
+\setlength\textwidth{213.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+
+.PS
+line "o--1" above ; circle
+line "o--m" above ; move
+box invis "relationships"
+.PE
+\usebox\graph
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-11.pic b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-11.pic
new file mode 100644
index 00000000000..036a0d50bf2
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-11.pic
@@ -0,0 +1,30 @@
+\documentclass{ppex}
+\nonstopmode
+
+\pagestyle{empty}
+\setlength\textwidth{213.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+
+.PS
+define rect X box width 0.5i height 0.3i X
+A: rect "Class" ; move down right from A.se
+B: rect "Object"; move down left
+C: rect "Person"; move down left
+D: rect "Male" ; move down right from C.c
+E: rect "Caller"; move down left
+G: rect "Lesley"; move down left from D.c
+F: rect "John"
+line from 2/3 <A.sw,A.se> to B.n
+line from 1/3 <A.sw,A.se> \
+ to 1/3 <C.nw,C.ne>
+line dashed from B.sw \
+ to 2/3 <C.nw,C.ne>
+line dashed from C.sw to D.ne
+line dashed from C.se to E.nw
+line from D.sw to F.n
+line from E.sw to G.n
+.PE
+\usebox\graph
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-12.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-12.ltx
new file mode 100644
index 00000000000..d628f734479
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-12.ltx
@@ -0,0 +1,288 @@
+\documentclass{ppex}
+\nonstopmode
+
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+
+\expandafter\ifx\csname graph\endcsname\relax \newbox\graph\fi
+\expandafter\ifx\csname graphtemp\endcsname\relax \newdimen\graphtemp\fi
+\setbox\graph=\vtop{\vskip 0pt\hbox{%
+ \special{pn 7}%
+ \special{pa 100 3000}%
+ \special{pa 4100 3000}%
+ \special{fp}%
+ \special{pa 100 3000}%
+ \special{pa 100 0}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 3.417in
+ \rlap{\kern 2.100in\lower\graphtemp\hbox to 0pt{\hss Male and female burials per decade ($n \approx 4300$)\hss}}%
+ \special{pa 100 2487}%
+ \special{pa 0 2487}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 2.487in
+ \rlap{\kern 0.000in\lower\graphtemp\hbox to 0pt{\hss 50 }}%
+ \special{pa 100 2158}%
+ \special{pa 0 2158}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 2.158in
+ \rlap{\kern 0.000in\lower\graphtemp\hbox to 0pt{\hss 100 }}%
+ \special{pa 100 1829}%
+ \special{pa 0 1829}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 1.829in
+ \rlap{\kern 0.000in\lower\graphtemp\hbox to 0pt{\hss 150 }}%
+ \special{pa 100 1500}%
+ \special{pa 0 1500}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 1.500in
+ \rlap{\kern 0.000in\lower\graphtemp\hbox to 0pt{\hss 200 }}%
+ \special{pa 100 1171}%
+ \special{pa 0 1171}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 1.171in
+ \rlap{\kern 0.000in\lower\graphtemp\hbox to 0pt{\hss 250 }}%
+ \special{pa 100 842}%
+ \special{pa 0 842}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 0.842in
+ \rlap{\kern 0.000in\lower\graphtemp\hbox to 0pt{\hss 300 }}%
+ \special{pa 100 513}%
+ \special{pa 0 513}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 0.513in
+ \rlap{\kern 0.000in\lower\graphtemp\hbox to 0pt{\hss 350 }}%
+ \special{pa 100 184}%
+ \special{pa 0 184}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 0.184in
+ \rlap{\kern 0.000in\lower\graphtemp\hbox to 0pt{\hss 400 }}%
+ \special{pa 346 3000}%
+ \special{pa 346 3100}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 3.225in
+ \rlap{\kern 0.346in\lower\graphtemp\hbox to 0pt{\hss 1800\hss}}%
+ \special{pa 715 3000}%
+ \special{pa 715 3100}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 3.225in
+ \rlap{\kern 0.715in\lower\graphtemp\hbox to 0pt{\hss 1820\hss}}%
+ \special{pa 1084 3000}%
+ \special{pa 1084 3100}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 3.225in
+ \rlap{\kern 1.084in\lower\graphtemp\hbox to 0pt{\hss 1840\hss}}%
+ \special{pa 1454 3000}%
+ \special{pa 1454 3100}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 3.225in
+ \rlap{\kern 1.454in\lower\graphtemp\hbox to 0pt{\hss 1860\hss}}%
+ \special{pa 1823 3000}%
+ \special{pa 1823 3100}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 3.225in
+ \rlap{\kern 1.823in\lower\graphtemp\hbox to 0pt{\hss 1880\hss}}%
+ \special{pa 2192 3000}%
+ \special{pa 2192 3100}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 3.225in
+ \rlap{\kern 2.192in\lower\graphtemp\hbox to 0pt{\hss 1900\hss}}%
+ \special{pa 2562 3000}%
+ \special{pa 2562 3100}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 3.225in
+ \rlap{\kern 2.562in\lower\graphtemp\hbox to 0pt{\hss 1920\hss}}%
+ \special{pa 2931 3000}%
+ \special{pa 2931 3100}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 3.225in
+ \rlap{\kern 2.931in\lower\graphtemp\hbox to 0pt{\hss 1940\hss}}%
+ \special{pa 3300 3000}%
+ \special{pa 3300 3100}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 3.225in
+ \rlap{\kern 3.300in\lower\graphtemp\hbox to 0pt{\hss 1960\hss}}%
+ \special{pa 3670 3000}%
+ \special{pa 3670 3100}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 3.225in
+ \rlap{\kern 3.670in\lower\graphtemp\hbox to 0pt{\hss 1980\hss}}%
+ \special{pa 346 2816}%
+ \special{pa 346 2757}%
+ \special{fp}%
+ \special{pa 346 2757}%
+ \special{pa 530 2757}%
+ \special{fp}%
+ \special{pa 530 2757}%
+ \special{pa 530 2816}%
+ \special{fp}%
+ \special{pa 530 2816}%
+ \special{pa 530 2658}%
+ \special{fp}%
+ \special{pa 530 2658}%
+ \special{pa 715 2658}%
+ \special{fp}%
+ \special{pa 715 2658}%
+ \special{pa 715 2816}%
+ \special{fp}%
+ \special{pa 715 2816}%
+ \special{pa 715 2224}%
+ \special{fp}%
+ \special{pa 715 2224}%
+ \special{pa 900 2224}%
+ \special{fp}%
+ \special{pa 900 2224}%
+ \special{pa 900 2816}%
+ \special{fp}%
+ \special{pa 900 2816}%
+ \special{pa 900 2033}%
+ \special{fp}%
+ \special{pa 900 2033}%
+ \special{pa 1084 2033}%
+ \special{fp}%
+ \special{pa 1084 2033}%
+ \special{pa 1084 2816}%
+ \special{fp}%
+ \special{pa 1084 2816}%
+ \special{pa 1084 1592}%
+ \special{fp}%
+ \special{pa 1084 1592}%
+ \special{pa 1269 1592}%
+ \special{fp}%
+ \special{pa 1269 1592}%
+ \special{pa 1269 2816}%
+ \special{fp}%
+ \special{pa 1269 2816}%
+ \special{pa 1269 1836}%
+ \special{fp}%
+ \special{pa 1269 1836}%
+ \special{pa 1454 1836}%
+ \special{fp}%
+ \special{pa 1454 1836}%
+ \special{pa 1454 2816}%
+ \special{fp}%
+ \special{pa 1454 2816}%
+ \special{pa 1454 1467}%
+ \special{fp}%
+ \special{pa 1454 1467}%
+ \special{pa 1638 1467}%
+ \special{fp}%
+ \special{pa 1638 1467}%
+ \special{pa 1638 2816}%
+ \special{fp}%
+ \special{pa 1638 2816}%
+ \special{pa 1638 586}%
+ \special{fp}%
+ \special{pa 1638 586}%
+ \special{pa 1823 586}%
+ \special{fp}%
+ \special{pa 1823 586}%
+ \special{pa 1823 2816}%
+ \special{fp}%
+ \special{pa 1823 2816}%
+ \special{pa 1823 875}%
+ \special{fp}%
+ \special{pa 1823 875}%
+ \special{pa 2008 875}%
+ \special{fp}%
+ \special{pa 2008 875}%
+ \special{pa 2008 2816}%
+ \special{fp}%
+ \special{pa 2008 2816}%
+ \special{pa 2008 1408}%
+ \special{fp}%
+ \special{pa 2008 1408}%
+ \special{pa 2192 1408}%
+ \special{fp}%
+ \special{pa 2192 1408}%
+ \special{pa 2192 2816}%
+ \special{fp}%
+ \special{pa 2192 2816}%
+ \special{pa 2192 954}%
+ \special{fp}%
+ \special{pa 2192 954}%
+ \special{pa 2377 954}%
+ \special{fp}%
+ \special{pa 2377 954}%
+ \special{pa 2377 2816}%
+ \special{fp}%
+ \special{pa 2377 2816}%
+ \special{pa 2377 1289}%
+ \special{fp}%
+ \special{pa 2377 1289}%
+ \special{pa 2562 1289}%
+ \special{fp}%
+ \special{pa 2562 1289}%
+ \special{pa 2562 2816}%
+ \special{fp}%
+ \special{pa 2562 2816}%
+ \special{pa 2562 928}%
+ \special{fp}%
+ \special{pa 2562 928}%
+ \special{pa 2746 928}%
+ \special{fp}%
+ \special{pa 2746 928}%
+ \special{pa 2746 2816}%
+ \special{fp}%
+ \special{pa 2746 2816}%
+ \special{pa 2746 914}%
+ \special{fp}%
+ \special{pa 2746 914}%
+ \special{pa 2931 914}%
+ \special{fp}%
+ \special{pa 2931 914}%
+ \special{pa 2931 2816}%
+ \special{fp}%
+ \special{pa 2931 2816}%
+ \special{pa 2931 1217}%
+ \special{fp}%
+ \special{pa 2931 1217}%
+ \special{pa 3116 1217}%
+ \special{fp}%
+ \special{pa 3116 1217}%
+ \special{pa 3116 2816}%
+ \special{fp}%
+ \special{pa 3116 2816}%
+ \special{pa 3116 914}%
+ \special{fp}%
+ \special{pa 3116 914}%
+ \special{pa 3300 914}%
+ \special{fp}%
+ \special{pa 3300 914}%
+ \special{pa 3300 2816}%
+ \special{fp}%
+ \special{pa 3300 2816}%
+ \special{pa 3300 184}%
+ \special{fp}%
+ \special{pa 3300 184}%
+ \special{pa 3485 184}%
+ \special{fp}%
+ \special{pa 3485 184}%
+ \special{pa 3485 2816}%
+ \special{fp}%
+ \special{pa 3485 2816}%
+ \special{pa 3485 849}%
+ \special{fp}%
+ \special{pa 3485 849}%
+ \special{pa 3670 849}%
+ \special{fp}%
+ \special{pa 3670 849}%
+ \special{pa 3670 2816}%
+ \special{fp}%
+ \special{pa 3670 2816}%
+ \special{pa 3670 1625}%
+ \special{fp}%
+ \special{pa 3670 1625}%
+ \special{pa 3854 1625}%
+ \special{fp}%
+ \special{pa 3854 1625}%
+ \special{pa 3854 2816}%
+ \special{fp}%
+ \hbox{\vrule depth3.500in width0pt height 0pt}%
+ \kern 4.100in
+ }%
+}%
+\box\graph
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-2.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-2.ltx
new file mode 100644
index 00000000000..e239c19466f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-2.ltx
@@ -0,0 +1,12 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {sprite}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {sprite}
+\input{bigstar.spr}
+\centerline{\bigeecstar}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-3.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-3.ltx
new file mode 100644
index 00000000000..3412db692a5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-3.ltx
@@ -0,0 +1,45 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {sprite}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {sprite}
+\sprite{\dvixbm}(32,32)[0.300in,0.300in]
+:....BBBBBBBBBBBBBBBBBB.......... |
+:....BBBBBBBBBBBBBBBBBBB......... |
+:....BBBBBBBBBBBBBBBBBB.B........ |
+:....BB.BBBB..BBBB..BBB..B....... |
+:....B.B..B...B..B.BB.B...B...... |
+:....B.BBB.BB.B..B...BB....B..... |
+:....B.B...BB..BB..BBBB.....B.... |
+:....BB..BB.BBBB..B.B.BBBBBBBB... |
+:....BBB..BBBBBBBBB..BB..BBB.B... |
+:....BBBB.BB..BB..BBBBBBB...BB... |
+:....BBBB.B.BBB.BB.BBBBB.BB.BB... |
+:....BBB.BB.BBBBBB.BBBBBB.BB.B... |
+:....BBB.B.B..BB..BBBBBBBB.B.B... |
+:....BBB.B.B..BB..BBBBBBBBB..B... |
+:....BBB.BB.BB.BB.BBBBBBBBBB.B... |
+:....BBB.BB..BB..BBBBBBBB.BB.B... |
+:....BBB.BBBBBBBBBBBBBBBBB.BBB... |
+:....BBB.BBBBBBBBBBBBBBBBBB.BB... |
+:....BB.BBBBBBBBBBBBBBBBBBBBBB... |
+:....BB.BBBBBBBBBBBBBBBBB.BBBB... |
+:....B.BBBBBB.BBBBBB.BBBBB.BBB... |
+:.....BB..B..BBBBBBB.BBBBBB.BB... |
+:.....BBB...BBBBBB..BBBBB.BBBB... |
+:....B.BBB.BBBBBB.BBBBBB.BBBBB... |
+:.....BBBBBBBBB..BBBBBB.B.BBBB... |
+:....B.........BBBBBB.BBBBBBBB... |
+:....B.BBBBBBBBBBBBBBB.BBBBBBB... |
+:....BB.BBBBBBBBBB..BBBBBBBBBB... |
+:....BBB.BBBBBBB..BBBBBBBBBBBB... |
+:....BBBB.......BBBBBBBBBBBBBB... |
+:....BBBBBBBBBBBBBBBBBBBBBBBBB... |
+:.....BBBBBBBBBBBBBBBBBBBBBBBB... |
+\endsprite
+\framebox{\dvixbm}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-4.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-4.ltx
new file mode 100644
index 00000000000..88a6c593d98
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-4.ltx
@@ -0,0 +1,20 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {rawfonts,pictex}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {rawfonts,pictex}
+\beginpicture
+\normalgraphs
+\longticklength=3pt
+\setcoordinatesystem units <.02in,.08in>
+\setplotarea x from 1780 to 1990, y from 0 to 30
+\axis bottom label {burials of women per year} ticks
+ numbered from 1780 to 1980 by 20 /
+\axis left ticks numbered from 0 to 30 by 5 /
+\grid 10 20 \setquadratic \plot "year.wom"
+\endpicture
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-5.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-5.ltx
new file mode 100644
index 00000000000..92c9fc4d5f4
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-5.ltx
@@ -0,0 +1,28 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {rawfonts,pictex}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {rawfonts,pictex}
+\beginpicture
+\normalgraphs
+\setcoordinatesystem units <.02in,.01in>
+\setplotarea x from 1780 to 1990, y from 0 to 220
+\longticklength=3pt
+\axis bottom label {decade} ticks
+numbered from 1780 to 1980 by 20 /
+\axis left
+label {\stack {No.,of,burials}}
+ticks withvalues 20 40 60 80 100 120 140 160 180 200 /
+from 0 to 200 by 40 /
+\setbars <-2pt,0pt> breadth <0pt> baseline at y = 0
+\linethickness=4pt
+\plot "decade.wom"
+\setbars < 2pt, 0pt> breadth <4pt> baseline at y = 0
+\linethickness=.25pt
+\plot "decade.men"
+\endpicture
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-6.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-6.ltx
new file mode 100644
index 00000000000..893d3b5a777
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-6.ltx
@@ -0,0 +1,21 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {graphics,rawfonts,pictex}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {graphics,rawfonts,pictex}
+\beginpicture
+\setcoordinatesystem units <10pt,.03pt>
+\setplotarea x from -1 to 24, y from 0 to 4500
+\axis left label
+\rotatebox{90}{Number of Coins ($\surd$)} ticks
+numbered from 0 to 4500 by 500 /
+\shaderectangleson
+\setbars breadth <15pt> baseline at y = 0
+baselabels ([tl] <2.5pt,-5pt>)
+\plot "coins.dat"
+\endpicture
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-7.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-7.ltx
new file mode 100644
index 00000000000..cd7e34bc3b6
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-7.ltx
@@ -0,0 +1,17 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {dratex,aldratex}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {dratex,aldratex}
+\Draw
+ \Scale(1,0.6)
+ \PieChartSpec(1,50,25)()
+ \PieChart(10 & 30 & 15 & 5)
+ \Move(0,-6)
+ \DrawOvalArc(50,50)(180,360)
+\EndDraw
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-8.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-8.ltx
new file mode 100644
index 00000000000..a6697392ab9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-8.ltx
@@ -0,0 +1,174 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {latexsym}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {latexsym}
+% GNUPLOT: LaTeX picture
+\setlength{\unitlength}{0.240900pt}
+\ifx\plotpoint\undefined\newsavebox{\plotpoint}\fi
+\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}%
+\begin{picture}(1500,900)(0,0)
+\font\gnuplot=cmr10 at 10pt
+\gnuplot
+\sbox{\plotpoint}{\rule[-0.200pt]{0.400pt}{0.400pt}}%
+\put(220.0,113.0){\rule[-0.200pt]{292.934pt}{0.400pt}}
+\put(220.0,113.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(198,113){\makebox(0,0)[r]{0}}
+\put(1416.0,113.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(220.0,182.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(198,182){\makebox(0,0)[r]{20}}
+\put(1416.0,182.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(220.0,252.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(198,252){\makebox(0,0)[r]{40}}
+\put(1416.0,252.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(220.0,321.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(198,321){\makebox(0,0)[r]{60}}
+\put(1416.0,321.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(220.0,391.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(198,391){\makebox(0,0)[r]{80}}
+\put(1416.0,391.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(220.0,460.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(198,460){\makebox(0,0)[r]{100}}
+\put(1416.0,460.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(220.0,530.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(198,530){\makebox(0,0)[r]{120}}
+\put(1416.0,530.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(220.0,599.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(198,599){\makebox(0,0)[r]{140}}
+\put(1416.0,599.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(220.0,669.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(198,669){\makebox(0,0)[r]{160}}
+\put(1416.0,669.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(220.0,738.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(198,738){\makebox(0,0)[r]{180}}
+\put(1416.0,738.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(220.0,808.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(198,808){\makebox(0,0)[r]{200}}
+\put(1416.0,808.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(220.0,877.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(198,877){\makebox(0,0)[r]{220}}
+\put(1416.0,877.0){\rule[-0.200pt]{4.818pt}{0.400pt}}
+\put(220.0,113.0){\rule[-0.200pt]{0.400pt}{4.818pt}}
+\put(220,68){\makebox(0,0){1800}}
+\put(220.0,857.0){\rule[-0.200pt]{0.400pt}{4.818pt}}
+\put(355.0,113.0){\rule[-0.200pt]{0.400pt}{4.818pt}}
+\put(355,68){\makebox(0,0){1820}}
+\put(355.0,857.0){\rule[-0.200pt]{0.400pt}{4.818pt}}
+\put(490.0,113.0){\rule[-0.200pt]{0.400pt}{4.818pt}}
+\put(490,68){\makebox(0,0){1840}}
+\put(490.0,857.0){\rule[-0.200pt]{0.400pt}{4.818pt}}
+\put(625.0,113.0){\rule[-0.200pt]{0.400pt}{4.818pt}}
+\put(625,68){\makebox(0,0){1860}}
+\put(625.0,857.0){\rule[-0.200pt]{0.400pt}{4.818pt}}
+\put(760.0,113.0){\rule[-0.200pt]{0.400pt}{4.818pt}}
+\put(760,68){\makebox(0,0){1880}}
+\put(760.0,857.0){\rule[-0.200pt]{0.400pt}{4.818pt}}
+\put(896.0,113.0){\rule[-0.200pt]{0.400pt}{4.818pt}}
+\put(896,68){\makebox(0,0){1900}}
+\put(896.0,857.0){\rule[-0.200pt]{0.400pt}{4.818pt}}
+\put(1031.0,113.0){\rule[-0.200pt]{0.400pt}{4.818pt}}
+\put(1031,68){\makebox(0,0){1920}}
+\put(1031.0,857.0){\rule[-0.200pt]{0.400pt}{4.818pt}}
+\put(1166.0,113.0){\rule[-0.200pt]{0.400pt}{4.818pt}}
+\put(1166,68){\makebox(0,0){1940}}
+\put(1166.0,857.0){\rule[-0.200pt]{0.400pt}{4.818pt}}
+\put(1301.0,113.0){\rule[-0.200pt]{0.400pt}{4.818pt}}
+\put(1301,68){\makebox(0,0){1960}}
+\put(1301.0,857.0){\rule[-0.200pt]{0.400pt}{4.818pt}}
+\put(1436.0,113.0){\rule[-0.200pt]{0.400pt}{4.818pt}}
+\put(1436,68){\makebox(0,0){1980}}
+\put(1436.0,857.0){\rule[-0.200pt]{0.400pt}{4.818pt}}
+\put(220.0,113.0){\rule[-0.200pt]{292.934pt}{0.400pt}}
+\put(1436.0,113.0){\rule[-0.200pt]{0.400pt}{184.048pt}}
+\put(220.0,877.0){\rule[-0.200pt]{292.934pt}{0.400pt}}
+\put(45,495){\makebox(0,0){\shortstack{Number \\of \\burials}}}
+\put(828,23){\makebox(0,0){Protestant Cemetery decades}}
+\put(220.0,113.0){\rule[-0.200pt]{0.400pt}{184.048pt}}
+\put(1306,812){\makebox(0,0)[r]{'decade.wom'}}
+\put(1328.0,812.0){\rule[-0.200pt]{15.899pt}{0.400pt}}
+\put(220,123){\usebox{\plotpoint}}
+\multiput(220.00,123.58)(1.637,0.496){39}{\rule{1.395pt}{0.119pt}}
+\multiput(220.00,122.17)(65.104,21.000){2}{\rule{0.698pt}{0.400pt}}
+\multiput(288.00,144.58)(0.568,0.499){115}{\rule{0.554pt}{0.120pt}}
+\multiput(288.00,143.17)(65.850,59.000){2}{\rule{0.277pt}{0.400pt}}
+\multiput(355.00,203.58)(1.916,0.495){33}{\rule{1.611pt}{0.119pt}}
+\multiput(355.00,202.17)(64.656,18.000){2}{\rule{0.806pt}{0.400pt}}
+\multiput(423.58,221.00)(0.499,0.957){131}{\rule{0.120pt}{0.864pt}}
+\multiput(422.17,221.00)(67.000,126.206){2}{\rule{0.400pt}{0.432pt}}
+\multiput(490.58,346.56)(0.499,-0.610){133}{\rule{0.120pt}{0.588pt}}
+\multiput(489.17,347.78)(68.000,-81.779){2}{\rule{0.400pt}{0.294pt}}
+\multiput(558.00,266.58)(0.819,0.498){79}{\rule{0.754pt}{0.120pt}}
+\multiput(558.00,265.17)(65.436,41.000){2}{\rule{0.377pt}{0.400pt}}
+\multiput(625.58,307.00)(0.499,2.207){133}{\rule{0.120pt}{1.859pt}}
+\multiput(624.17,307.00)(68.000,295.142){2}{\rule{0.400pt}{0.929pt}}
+\multiput(693.00,606.59)(5.069,0.485){11}{\rule{3.929pt}{0.117pt}}
+\multiput(693.00,605.17)(58.846,7.000){2}{\rule{1.964pt}{0.400pt}}
+\multiput(760.00,611.92)(0.975,-0.498){67}{\rule{0.877pt}{0.120pt}}
+\multiput(760.00,612.17)(66.179,-35.000){2}{\rule{0.439pt}{0.400pt}}
+\multiput(828.58,578.00)(0.499,0.618){133}{\rule{0.120pt}{0.594pt}}
+\multiput(827.17,578.00)(68.000,82.767){2}{\rule{0.400pt}{0.297pt}}
+\multiput(896.00,660.92)(0.507,-0.499){129}{\rule{0.506pt}{0.120pt}}
+\multiput(896.00,661.17)(65.950,-66.000){2}{\rule{0.253pt}{0.400pt}}
+\multiput(963.58,596.00)(0.499,0.507){133}{\rule{0.120pt}{0.506pt}}
+\multiput(962.17,596.00)(68.000,67.950){2}{\rule{0.400pt}{0.253pt}}
+\multiput(1031.00,665.58)(0.884,0.498){73}{\rule{0.805pt}{0.120pt}}
+\multiput(1031.00,664.17)(65.329,38.000){2}{\rule{0.403pt}{0.400pt}}
+\multiput(1098.58,699.70)(0.499,-0.869){133}{\rule{0.120pt}{0.794pt}}
+\multiput(1097.17,701.35)(68.000,-116.352){2}{\rule{0.400pt}{0.397pt}}
+\multiput(1166.58,585.00)(0.499,0.807){131}{\rule{0.120pt}{0.745pt}}
+\multiput(1165.17,585.00)(67.000,106.454){2}{\rule{0.400pt}{0.372pt}}
+\multiput(1233.58,693.00)(0.499,0.817){133}{\rule{0.120pt}{0.753pt}}
+\multiput(1232.17,693.00)(68.000,109.437){2}{\rule{0.400pt}{0.376pt}}
+\multiput(1301.58,801.43)(0.499,-0.649){131}{\rule{0.120pt}{0.619pt}}
+\multiput(1300.17,802.71)(67.000,-85.714){2}{\rule{0.400pt}{0.310pt}}
+\multiput(1368.58,712.02)(0.499,-1.379){133}{\rule{0.120pt}{1.200pt}}
+\multiput(1367.17,714.51)(68.000,-184.509){2}{\rule{0.400pt}{0.600pt}}
+\put(1306,767){\makebox(0,0)[r]{'decade.men'}}
+\multiput(1328,767)(20.756,0.000){4}{\usebox{\plotpoint}}
+\put(1394,767){\usebox{\plotpoint}}
+\put(220,134){\usebox{\plotpoint}}
+\multiput(220,134)(18.886,8.610){4}{\usebox{\plotpoint}}
+\multiput(288,165)(7.610,19.310){9}{\usebox{\plotpoint}}
+\multiput(355,335)(13.059,16.132){5}{\usebox{\plotpoint}}
+\multiput(423,419)(11.241,17.448){6}{\usebox{\plotpoint}}
+\multiput(490,523)(17.309,-11.454){4}{\usebox{\plotpoint}}
+\multiput(558,478)(8.372,18.992){8}{\usebox{\plotpoint}}
+\multiput(625,630)(7.827,19.223){9}{\usebox{\plotpoint}}
+\multiput(693,797)(8.017,-19.145){8}{\usebox{\plotpoint}}
+\multiput(760,637)(5.530,-20.005){12}{\usebox{\plotpoint}}
+\multiput(828,391)(8.294,19.026){9}{\usebox{\plotpoint}}
+\multiput(896,547)(10.726,-17.769){6}{\usebox{\plotpoint}}
+\multiput(963,436)(10.105,18.130){7}{\usebox{\plotpoint}}
+\multiput(1031,558)(18.729,-8.945){3}{\usebox{\plotpoint}}
+\multiput(1098,526)(17.775,-10.717){4}{\usebox{\plotpoint}}
+\multiput(1166,485)(16.397,12.726){4}{\usebox{\plotpoint}}
+\multiput(1233,537)(4.999,20.144){14}{\usebox{\plotpoint}}
+\multiput(1301,811)(5.106,-20.118){13}{\usebox{\plotpoint}}
+\multiput(1368,547)(6.079,-19.845){11}{\usebox{\plotpoint}}
+\put(1436,325){\usebox{\plotpoint}}
+\put(1350,767){\raisebox{-.8pt}{\makebox(0,0){$\Diamond$}}}
+\put(220,134){\raisebox{-.8pt}{\makebox(0,0){$\Diamond$}}}
+\put(288,165){\raisebox{-.8pt}{\makebox(0,0){$\Diamond$}}}
+\put(355,335){\raisebox{-.8pt}{\makebox(0,0){$\Diamond$}}}
+\put(423,419){\raisebox{-.8pt}{\makebox(0,0){$\Diamond$}}}
+\put(490,523){\raisebox{-.8pt}{\makebox(0,0){$\Diamond$}}}
+\put(558,478){\raisebox{-.8pt}{\makebox(0,0){$\Diamond$}}}
+\put(625,630){\raisebox{-.8pt}{\makebox(0,0){$\Diamond$}}}
+\put(693,797){\raisebox{-.8pt}{\makebox(0,0){$\Diamond$}}}
+\put(760,637){\raisebox{-.8pt}{\makebox(0,0){$\Diamond$}}}
+\put(828,391){\raisebox{-.8pt}{\makebox(0,0){$\Diamond$}}}
+\put(896,547){\raisebox{-.8pt}{\makebox(0,0){$\Diamond$}}}
+\put(963,436){\raisebox{-.8pt}{\makebox(0,0){$\Diamond$}}}
+\put(1031,558){\raisebox{-.8pt}{\makebox(0,0){$\Diamond$}}}
+\put(1098,526){\raisebox{-.8pt}{\makebox(0,0){$\Diamond$}}}
+\put(1166,485){\raisebox{-.8pt}{\makebox(0,0){$\Diamond$}}}
+\put(1233,537){\raisebox{-.8pt}{\makebox(0,0){$\Diamond$}}}
+\put(1301,811){\raisebox{-.8pt}{\makebox(0,0){$\Diamond$}}}
+\put(1368,547){\raisebox{-.8pt}{\makebox(0,0){$\Diamond$}}}
+\put(1436,325){\raisebox{-.8pt}{\makebox(0,0){$\Diamond$}}}
+\end{picture}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-9.pic b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-9.pic
new file mode 100644
index 00000000000..c6028b1d9b1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/1-4-9.pic
@@ -0,0 +1,21 @@
+\documentclass{ppex}
+\nonstopmode
+
+\pagestyle{empty}
+\setlength\textwidth{231.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+
+.PS
+ellipse "\textit{Ready!}"
+spline right 1i then down 0.7i \
+ left 3i then right 2i
+ellipse "\textbf{Steady!!}"
+spline right 1i then down 0.7i \
+ left 3i then right 2i
+ellipse "\textbf{\itshape Go!!!}"
+.PE
+
+\usebox\graph
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/10-1-1.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/10-1-1.ltx
new file mode 100644
index 00000000000..c0e2394d412
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/10-1-1.ltx
@@ -0,0 +1,28 @@
+\documentclass{ppex}
+\nonstopmode
+
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+
+\begin{small}
+\newcommand\demotest{For the price of \pounds45, almost anything can
+ be found floating in fields. !`THE DAZED BROWN FOX QUICKLY GAVE
+ 12345--67890 JUMPS! --- ?`But aren't Kafka's Schlo{\ss} and
+ {\AE}sop's {\OE}uvres often na{\"\i}ve vis-\`{a}-vis the d{\ae}monic
+ ph{\oe}nix's official r\^{o}le in fluffy souffl\'{e}s?}
+\begin{description}
+\raggedright
+\item[Times Roman]{\fontfamily{ptm}\selectfont\demotest}
+\item[Palatino]{\fontfamily{ppl}\selectfont\demotest}
+\item[New Century Schoolbook]{\fontfamily{pnc}\selectfont\demotest}
+\item[AvantGarde]{\fontfamily{pag}\selectfont\demotest}
+\item[Bookman]{\fontfamily{pbk}\selectfont\demotest}
+\item[Helvetica]{\fontfamily{phv}\selectfont\demotest}
+\item[Courier]{\fontfamily{pcr}\selectfont\demotest}
+\item[Zapf Chancery]{\fontfamily{pzc}\fontshape{it}\selectfont\demotest}
+\end{description}
+\end{small}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/10-1-2.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/10-1-2.ltx
new file mode 100644
index 00000000000..e3d066710cb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/10-1-2.ltx
@@ -0,0 +1,48 @@
+\documentclass{ppex}
+\nonstopmode
+
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+
+The default math mode font is $math\ italic$. This should not be
+confused with ordinary \emph{text italic}.
+\verb|\mathbf| produces $\mathbf{bold-face\ roman}$ letters.
+Greek is available in upper and lower case:
+\(\alpha,\beta, \Gamma, \Delta \dots \omega, \Omega\)
+There is also a calligraphic font for upper-case letters;
+these are produced by the \verb|\mathcal| command:
+\( \mathcal{ABCDE} \)
+
+
+\begin{equation}
+ \phi(t)=\frac{1}{\sqrt{2\pi}}
+ \int^t_0 e^{-x^2/2} dx
+\end{equation}
+
+\begin{equation}
+ \prod_{j\geq 0}
+ \left(\sum_{k\geq 0}a_{jk} z^k\right)
+= \sum_{k\geq 0} z^n
+ \left( \sum_{{k_0,k_1,\ldots\geq 0}
+ \atop{k_0+k_1+\ldots=n} }
+ a{_0k_0}a_{1k_1}\ldots \right)
+\end{equation}
+
+\begin{equation}
+\pi(n) = \sum_{m=2}^{n}
+ \left\lfloor \left(\sum_{k=1}^{m-1}
+ \lfloor(m/k)/\lceil m/k\rceil
+ \rfloor \right)^{-1}
+ \right\rfloor
+\end{equation}
+
+\begin{equation}
+\{\underbrace{%
+ \overbrace{\mathstrut a,\ldots,a}^{k\ a's},
+ \overbrace{\mathstrut b,\ldots,b}^{l\ b's}}
+ _{k+1\ \mathrm{elements}} \}
+\end{equation}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/10-1-3.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/10-1-3.ltx
new file mode 100644
index 00000000000..c7cdc84fac0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/10-1-3.ltx
@@ -0,0 +1,48 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {mathptm}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {mathptm}
+The default math mode font is $math\ italic$. This should not be
+confused with ordinary \emph{text italic}.
+\verb|\mathbf| produces $\mathbf{bold-face\ roman}$ letters.
+Greek is available in upper and lower case:
+\(\alpha,\beta, \Gamma, \Delta \dots \omega, \Omega\)
+There is also a calligraphic font for upper-case letters;
+these are produced by the \verb|\mathcal| command:
+\( \mathcal{ABCDE} \)
+
+
+\begin{equation}
+ \phi(t)=\frac{1}{\sqrt{2\pi}}
+ \int^t_0 e^{-x^2/2} dx
+\end{equation}
+
+\begin{equation}
+ \prod_{j\geq 0}
+ \left(\sum_{k\geq 0}a_{jk} z^k\right)
+= \sum_{k\geq 0} z^n
+ \left( \sum_{{k_0,k_1,\ldots\geq 0}
+ \atop{k_0+k_1+\ldots=n} }
+ a{_0k_0}a_{1k_1}\ldots \right)
+\end{equation}
+
+\begin{equation}
+\pi(n) = \sum_{m=2}^{n}
+ \left\lfloor \left(\sum_{k=1}^{m-1}
+ \lfloor(m/k)/\lceil m/k\rceil
+ \rfloor \right)^{-1}
+ \right\rfloor
+\end{equation}
+
+\begin{equation}
+\{\underbrace{%
+ \overbrace{\mathstrut a,\ldots,a}^{k\ a's},
+ \overbrace{\mathstrut b,\ldots,b}^{l\ b's}}
+ _{k+1\ \mathrm{elements}} \}
+\end{equation}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/10-1-4.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/10-1-4.inl
new file mode 100644
index 00000000000..208deea8631
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/10-1-4.inl
@@ -0,0 +1,8 @@
+
+\begin{Pilist}{psy}{'247}
+\item Do not forget the Symbol font,
+\item which can have effects like
+ \Piline{psy}{"AA}
+\item and individual symbols like
+ \Pisymbol{psy}{"C4}.
+\end{Pilist}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/10-1-5.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/10-1-5.inl
new file mode 100644
index 00000000000..39f91c4924a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/10-1-5.inl
@@ -0,0 +1,21 @@
+
+\begin{Piautolist}{pzd}{'254}
+\item text inside list,
+ \begin{Piautolist}{psy}{'141}
+ \item text inside list,
+ \item text inside list,
+ \begin{enumerate}
+ \item text inside list,
+ \begin{Piautolist}{pzd}{'56}
+ \item text inside list,
+ \label{pilabel}
+ \item text inside list,
+ \end{Piautolist}
+ \item text inside list,
+ \end{enumerate}
+ \item text inside list,
+ \end{Piautolist}
+\item text inside list.
+\end{Piautolist}
+We can also refer to item
+\ref{pilabel} as usual.
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/10-5-1.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/10-5-1.ltx
new file mode 100644
index 00000000000..bff625a6d58
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/10-5-1.ltx
@@ -0,0 +1,86 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {lucmin}\def \ttdefault {cmtt}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {lucmin}\def \ttdefault {cmtt}
+The default math mode font is $math\ italic$. This should not be
+confused with ordinary \emph{text italic}.
+\verb|\mathbf| produces $\mathbf{bold}\mbox{-}\mathbf{face\ roman}$ letters.
+If you wish to have
+{\boldmath $bold\mbox{-}face\ math\ italic$} letters and bold-face Greek
+letters and mathematical symbols, use the \verb|\boldmath| command
+\emph{before} going into math mode. This changes the default math
+fonts to bold. Greek is available in upper and lower case:
+\(\alpha,\beta, \Gamma, \Delta \dots \omega, \Omega\)
+
+\begin{tabular}{ll}
+normal: \( x = 2\pi \Rightarrow x \simeq 6.28 \)\\
+mathbf: \(\mathbf{x} = 2\pi \Rightarrow x \simeq 6.28 \)\\
+boldmath: {\boldmath \(x = \mathbf{2}\pi \Rightarrow x
+ \simeq{\mathbf{6.28}} \)}\\
+\end{tabular}
+
+\noindent There is also a calligraphic font for upper-case letters;
+these are produced by the \verb|\mathcal| command:
+\( \mathcal{ABCDE} \)
+
+
+\begin{equation}
+ \phi(t)=\frac{1}{\sqrt{2\pi}}
+ \int^t_0 e^{-x^2/2} dx
+\end{equation}
+
+\begin{equation}
+ \prod_{j\geq 0}
+ \left(\sum_{k\geq 0}a_{jk} z^k\right)
+= \sum_{k\geq 0} z^n
+ \left( \sum_{{k_0,k_1,\ldots\geq 0}
+ \atop{k_0+k_1+\ldots=n} }
+ a{_0k_0}a_{1k_1}\ldots \right)
+\end{equation}
+
+\begin{equation}
+\pi(n) = \sum_{m=2}^{n}
+ \left\lfloor \left(\sum_{k=1}^{m-1}
+ \lfloor(m/k)/\lceil m/k\rceil
+ \rfloor \right)^{-1}
+ \right\rfloor
+\end{equation}
+
+\begin{equation}
+\{\underbrace{%
+ \overbrace{\mathstrut a,\ldots,a}^{k\ a's},
+ \overbrace{\mathstrut b,\ldots,b}^{l\ b's}}
+ _{k+1\ \mathrm{elements}} \}
+\end{equation}
+
+\begin{displaymath}
+\mbox{W}^+\
+\begin{array}{l}
+\nearrow\raise5pt\hbox{$\mu^+ + \nu_{\mu}$}\\
+\rightarrow \pi^+ +\pi^0 \\[5pt]
+\rightarrow \kappa^+ +\pi^0 \\
+\searrow\lower5pt\hbox{$\mathrm{e}^+
+ +\nu_{\scriptstyle\mathrm{e}}$}
+\end{array}
+\end{displaymath}
+
+\begin{displaymath}
+\frac{\pm
+\left|\begin{array}{ccc}
+x_1-x_2 & y_1-y_2 & z_1-z_2 \\
+l_1 & m_1 & n_1 \\
+l_2 & m_2 & n_2
+\end{array}\right|}{
+\sqrt{\left|\begin{array}{cc}l_1&m_1\\
+l_2&m_2\end{array}\right|^2
++ \left|\begin{array}{cc}m_1&n_1\\
+n_1&l_1\end{array}\right|^2
++ \left|\begin{array}{cc}m_2&n_2\\
+n_2&l_2\end{array}\right|^2}}
+\end{displaymath}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/11-3-1.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/11-3-1.ltx
new file mode 100644
index 00000000000..1eed02b6377
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/11-3-1.ltx
@@ -0,0 +1,23 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstricks,graphicx}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstricks,graphicx}
+\newcommand{\Page}[2]{% angle, filename
+ \uput[#1]{#1}(0,0){%
+ \includegraphics[width=.5in]{#2}}}
+\fbox{%
+ \begin{pspicture}(-2,-2)(2,2)
+ \psset{labelsep=.8cm}
+ \Page{360}{p1} \Page{36}{p2}
+ \Page{72}{p3} \Page{108}{p4}
+ \Page{144}{p5} \Page{180}{p6}
+ \Page{216}{p7} \Page{252}{p8}
+ \Page{324}{p9}
+ \end{pspicture}%
+}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/11-6-1.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/11-6-1.inl
new file mode 100644
index 00000000000..893f3532f70
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/11-6-1.inl
@@ -0,0 +1,2 @@
+\usepackage {pstricks,graphicx}
+absurd \pscirclebox{$\surd$}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-1.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-1.mp
new file mode 100644
index 00000000000..0525d56798b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-1.mp
@@ -0,0 +1,15 @@
+
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+pickup pencircle scaled 4pt
+ yscaled .2pt rotated 60;
+n:=4;
+for i := (n*20) step -(n) until (n):
+ c:=((n*20)-i)/(n*2);
+ draw (i,0)..(0,i)..(-i,0)
+ ..(0,-(i-n))..(i-n,0)
+ withcolor ((100-i)/100,i/100,0);
+endfor
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-10.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-10.ltx
new file mode 100644
index 00000000000..7d0aa6ea788
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-10.ltx
@@ -0,0 +1,46 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstall}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstall}
+\definecolor{pink}{rgb}{1, .75, .8}
+\definecolor{wheat}{rgb}{.96, .87, .7}
+\definecolor{lightblue}{rgb}{.68, .85, .9}
+\definecolor{brown}{rgb}{.65, .16, .16}
+\definecolor{palegreen}{rgb}{.6, .98, .6}
+\definecolor{white}{rgb}{1, 1, 1 }
+\begin{pspicture}(10,8)
+\psset{fillstyle=solid,linestyle=none,linewidth=0}
+\psframe[fillcolor=lightblue](10,8)
+% sun
+\pscircle[fillcolor=yellow](2,6){.8}
+% rays
+\bgroup
+\psset{linecolor=yellow,linestyle=solid,linewidth=.3}
+\degrees[8]
+\multido{\i=1+1}{8}{\rput{\i}(2,6){\psline(1,0)(1.5,0)}}
+\egroup
+% grass
+\pspolygon[fillcolor=green](6,0)(10,2)(10,0)
+% kite
+\psdiamond[fillcolor=red,gangle=-45](8,6)(1.5,2.5)
+\rput{45}(8,6){\pnode(-2.5,0){Kitetail}}
+\rput{-10}(.8,1.5){\psdiamond[fillcolor=yellow](.6,.1)(.6,.3)}
+\rput{-80}(.8,1.5){\psdiamond[fillcolor=yellow](.6,.1)(.6,.3)}
+\pnode(.8,1.5){Tailend}
+\nccurve[fillstyle=none,angleA=270,angleB=125,ncurvB=.9,ncurvA=1.4,
+ linestyle=dotted,dotstyle=square,linewidth=.25]{Kitetail}{Tailend}
+\def\bunting{\pstriangle(.35,.35)}
+\psset{fillcolor=red,labelsep=.01}
+\naput[nrot=115,npos=.15]{\bunting}
+\nbput[nrot=25,npos=.15]{\bunting}
+\naput[nrot=75,npos=.4]{\bunting}
+\nbput[nrot=115,npos=.4]{\bunting}
+\naput[nrot=115,npos=.7]{\bunting}
+\nbput[nrot=25,npos=.7]{\bunting}
+\end{pspicture}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-11.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-11.ltx
new file mode 100644
index 00000000000..ab2f7b530e3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-11.ltx
@@ -0,0 +1,93 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstall}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstall}
+\definecolor{pink}{rgb}{1, .75, .8}
+\definecolor{wheat}{rgb}{.96, .87, .7}
+\definecolor{lightblue}{rgb}{.68, .85, .9}
+\definecolor{brown}{rgb}{.65, .16, .16}
+\definecolor{palegreen}{rgb}{.6, .98, .6}
+\definecolor{white}{rgb}{1, 1, 1 }
+\DeclareFixedFont{\curly}{T1}{pzc}{m}{it}{30}
+%
+% The cat is designed to appear on a 10 x 10 grid
+% cat head
+\def\Cathead{%
+ \pscircle[fillcolor=black](5,4.2){2.5}%
+% ears
+ \bgroup
+ \psset{linecolor=black,fillcolor=pink,linewidth=.05,linestyle=solid}
+ \rput{45}(5,4.2){\pspolygon(2.5,.5)(2.5,-.5)(3.5,0)}
+ \rput{135}(5,4.2){\pspolygon(2.5,.5)(2.5,-.5)(3.5,0)}
+ \egroup
+}
+% eyes, nose and whiskers
+\def\Catface{%
+ \pscircle[fillcolor=yellow](4,5.2){.5}
+ \psdiamond[fillcolor=gray](4,5.2)(.2,.5)
+ \pscircle[fillcolor=yellow](6,5.2){.5}
+ \psdiamond[fillcolor=gray](6,5.2)(.2,.5)
+% nose
+ \rput{180}(5,4.6){\pstriangle[fillcolor=pink](.5,.5)}
+ % whiskers
+ \bgroup
+ \psset{linecolor=white,linestyle=solid,linewidth=.1}
+ \rput{5}(5,4.2){\psline(.8,0)(1.8,0)}
+ \rput{15}(5,4.2){\psline(.8,0)(1.8,0)}
+ \rput{165}(5,4.2){\psline(.8,0)(1.8,0)}
+ \rput{175}(5,4.2){\psline(.8,0)(1.8,0)}
+ \egroup
+}
+% paws
+\def\Catpaws{%
+ \pscircle[fillcolor=black](1,4.2){.8}
+ \pscircle[fillcolor=black](9,4.2){.8}
+% claws
+ \bgroup
+ \psset{fillcolor=yellow}
+ \def\clawsize{.4,.4}
+ \rput{180}(1,4.4){\pstriangle(\clawsize)}
+ \rput{180}(1,4.4){\pstriangle(-.45,0)(\clawsize)}
+ \rput{180}(1,4.4){\pstriangle(.45,0)(\clawsize)}
+ \rput{180}(9,4.4){\pstriangle(\clawsize)}
+ \rput{180}(9,4.4){\pstriangle(-.45,0)(\clawsize)}
+ \rput{180}(9,4.4){\pstriangle(.45,0)(\clawsize)}
+ \egroup
+}
+% wall
+\def\Wall{%
+ \psframe[fillcolor=brown](0,0)(10,4)
+}
+% The whole cat on its wall
+\def\Cat#1{%
+ {\psset{unit=#1}
+ \Cathead\Catface\Catpaws\Wall}%
+}
+% bricks
+\def\Bricks{%
+ \bfseries\large
+ \psset{fillcolor=wheat}
+ \psframe(1,.4)(2.5,1.9)
+ \rput[bl](1.1,1){\LaTeX}
+ \psframe(5,.4)(6.3,1.9)
+ \psframe(7,.4)(8.5,1.9)
+ \psframe(2,2.2)(3.2,3.7)
+ \rput[bl]{90}(2.6,2.4){\normalsize$e=mc^2$}
+ \psframe(5.3,2.2)(8,3.7)
+ \rput[bl](5.4,2.8){\textsc{PostScript}}
+}
+\begin{pspicture}(10,8)
+\psset{fillstyle=solid,linestyle=none,linewidth=0}
+\psframe[fillcolor=lightblue](10,8)
+\Cat{1}
+\rput[bl]{5}(1,1){\curly\color{white}Don Knuth Rules OK}
+\Bricks
+\rput(7,1){\Cat{.1}}
+\rput(.1,2){\Cat{.15}}
+\end{pspicture}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-12.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-12.ltx
new file mode 100644
index 00000000000..2b4cca48b8a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-12.ltx
@@ -0,0 +1,111 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstcol,pst-plot,pst-node,pst-eps,graphicx}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstcol,pst-plot,pst-node,pst-eps,graphicx}
+\begin{tabular}{c}
+\def\ProcessVector#1{%
+\PSTtoEPS{../figures/plates/#1.ps2}{\fileplot{#1.dat}}
+\rput(0,0){\includegraphics{../figures/plates/#1.ps2}}%
+}
+%limits: 43.617743 -12.420219 43.880484 -12.233311
+\psset{fillstyle=solid,plotstyle=polygon,linewidth=.4pt}
+\psset{unit=1.2mm}% range is 0.262741
+\definecolor{color100}{rgb}{0,.7,0}
+\definecolor{color200}{rgb}{0,.6,0}
+\definecolor{color300}{rgb}{0,.5,0}
+\definecolor{color400}{rgb}{0,.4,0}
+\definecolor{color500}{rgb}{0,.3,0}
+\definecolor{color600}{rgb}{0,.2,0}
+\definecolor{color700}{rgb}{0,.1,0}
+\definecolor{colorCOAST}{gray}{.8}
+\framebox{%
+\bgroup\begin{pspicture}(0,0)(100.0,71.1377364)
+\pspolygon[fillstyle=vlines,hatchwidth=.3pt,hatchsep=8pt,linecolor=gray](0,0)(0,71.1377364)
+(100.0,71.1377364)(100.0,0)
+%layer COAST
+\psset{fillcolor=colorCOAST}
+\ProcessVector{moh174}
+\ProcessVector{moh170}
+\ProcessVector{moh28}
+\ProcessVector{moh27}
+\ProcessVector{moh26}
+\ProcessVector{moh25}
+\ProcessVector{moh23}
+\ProcessVector{moh5}
+\ProcessVector{moh4}
+\ProcessVector{moh3}
+\ProcessVector{moh2}
+\ProcessVector{moh1}
+\psset{linestyle=none}
+%layer 100
+\psset{fillcolor=color100}
+\ProcessVector{moh29}
+\ProcessVector{moh11}
+\ProcessVector{moh10}
+\ProcessVector{moh9}
+\ProcessVector{moh8}
+\ProcessVector{moh7}
+\ProcessVector{moh6}
+%layer 200
+\psset{fillcolor=color200}
+\ProcessVector{moh30}
+\ProcessVector{moh21}
+\ProcessVector{moh20}
+\ProcessVector{moh19}
+\ProcessVector{moh18}
+\ProcessVector{moh17}
+%layer 300
+\psset{fillcolor=color300}
+\ProcessVector{moh31}
+\ProcessVector{moh16}
+%layer 400
+\psset{fillcolor=color400}
+\ProcessVector{moh32}
+\ProcessVector{moh22}
+%layer 500
+\psset{fillcolor=color500}
+\ProcessVector{moh33}
+%layer 600
+\psset{fillcolor=color600}
+\ProcessVector{moh34}
+%layer 700
+\psset{fillcolor=color700}
+\ProcessVector{moh15}
+\ProcessVector{moh14}
+\ProcessVector{moh13}
+\ProcessVector{moh12}
+\end{pspicture}\egroup
+}
+\\[6pt]
+(a)\\[20pt]
+\bgroup
+\psset{arrows=->,fillcolor=white,fillstyle=solid}
+\def\Show#1{\psshadowbox{#1}}
+\definecolor{pink}{rgb}{1, .75, .8}
+\begin{psmatrix}[mnode=r,ref=t]
+ \psframebox[linestyle=none,framesep=.75]{%
+ \begin{psmatrix}
+ [name=A,ref=c]\Show{Stakeholder}
+ \end{psmatrix}} &
+ \psframebox[fillstyle=solid,fillcolor=pink,framesep=.75]{%
+ \rule{1cm}{0pt}
+ \begin{psmatrix}[ref=c]
+ [name=B]\Show{Goal} & \Show{Criteria}\\
+ \Show{Sub-goal} & \Show{Justification}
+ \ncline{1,1}{1,2}
+ \ncline{1,1}{2,2}
+ \ncline{1,1}{2,1}\tlput{Strategy}
+ \ncline{2,1}{2,2}
+ \end{psmatrix}}
+\end{psmatrix}
+\ncline[angleB=180]{A}{B}\naput[npos=.7]{Model}
+\egroup
+\\
+\rule{0pt}{20pt} (b)
+\end{tabular}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-2.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-2.mp
new file mode 100644
index 00000000000..4eaaf5bed34
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-2.mp
@@ -0,0 +1,59 @@
+input boxes
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+defaultfont:="ptmb8r";
+vardef labelarrow
+ (suffix BoxA,BoxB) expr Line =
+ drawarrow Line
+ cutbefore bpath BoxA
+ cutafter bpath BoxB;
+ point (.5*length Line) of Line
+enddef;
+color yellow,orange;
+yellow:=red+green;
+orange:=red+(green/2);
+boxjoin(a.n=b.s-(0,.3in));
+defaultscale:=1.2;
+circmargin:=4pt;
+circleit.In("in");
+circleit.One("1"); circleit.Two("2");
+circleit.Three("3"); circleit.Four("4");
+boxjoin(); circmargin:=16pt;circleit.X("");X.c=Four.c;
+drawunboxed(One,Two,Three,Four,In,X);
+drawarrow In.n--One.s;
+label.rt("a",
+ labelarrow(One,Two) One.c--Two.c)
+ withcolor red;
+label.rt("b",
+ labelarrow(Two,Three) Two.c--Three.c)
+ withcolor green;
+label.rt("b",
+ labelarrow(Three,Four) Three.c--Four.c)
+ withcolor green;
+label.rt("a",
+ labelarrow(Four,Two) Four.c{dir335}..
+ {dir205}Two.c) withcolor red;
+label.lft("a",
+ labelarrow(Three,Two) Three.c{dir205}..
+ {dir335}Two.c) withcolor red;
+label.lft("b",
+ labelarrow(Four,One) Four.c{dir180}..
+ tension2..One.c) withcolor green;
+label.rt("b",
+ labelarrow(One,One) One.c{dir45}..One.c+(40,0)..
+ {dir120}One.c) withcolor green;
+label.rt("a",
+ labelarrow(Two,Two) Two.c{dir65}..Two.c+(40,0)..
+ {dir100}Two.c) withcolor red;
+fill bpath One withcolor blue;
+draw pic One withcolor white;
+fill bpath Two withcolor yellow;
+draw pic Two;
+fill bpath Three withcolor orange;
+draw pic Three withcolor white;
+draw bpath Four ;
+pickup pencircle scaled 2pt;
+draw bpath X dashed evenly withcolor (1 , .75, .8);
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-3.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-3.mp
new file mode 100644
index 00000000000..5514cb1821b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-3.mp
@@ -0,0 +1,24 @@
+
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+input graph
+path m,w,last;
+draw begingraph(2.4in,1.75in);
+setrange((1800,0),(whatever,whatever));
+gdata ("decade.dat",y,
+ last:=((scantokens y1),0);
+ augment.w(y1,y2);
+ augment.m(y1,y3););
+gfill (1800,0)--w--last--cycle
+ withcolor red;
+gfill (1800,0)--m--last--cycle
+ withcolor green;
+pickup pencircle scaled 3pt ;
+gdraw w dashed withdots;
+pickup pencircle scaled .75pt ;
+glabel.bot (btex Number of burials per decade
+ ($n \approx 4300$) etex,OUT);
+endgraph;
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-4.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-4.mp
new file mode 100644
index 00000000000..4f2e95623e3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-4.mp
@@ -0,0 +1,34 @@
+
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+input graph
+path m;
+numeric n,width;
+width:=20;
+defaultscale:=0.6;
+n:=0;
+def bar(expr name,value,r,g,b) =
+ path q;
+ q:=(n,0)--(n,value)--
+ (n+width,value)--(n+width,0)--cycle;
+ gfill q withcolor (r,g,b);
+ gdraw q;
+ picture p;
+ p = name infont defaultfont
+ scaled defaultscale
+ rotated 90;
+ glabel.rt(image(unfill bbox p; draw p),(n,10));
+ n:=n+width;
+enddef;
+draw begingraph(2.4in,1.75in);
+setrange((0,0),(11*width,100));
+drawoptions(withcolor red);
+autogrid(,otick.lft);
+drawoptions();
+gdata ("chap.dat",c,
+ bar(c1,(scantokens c2),
+(scantokens c3),(scantokens c4),(scantokens c5)););
+endgraph;
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-5.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-5.ltx
new file mode 100644
index 00000000000..0384b4e29d3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-5.ltx
@@ -0,0 +1,22 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstall}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstall}
+\definecolor{pink}{rgb}{1, .75, .8}
+\begin{pspicture}(-3,-2.2)(3,2.2)
+\psset{linestyle=none}
+\def\curly#1{{\fontfamily{pzc}\fontsize{17}{17}\itshape#1}}
+\pstextpath[c]{\psarcn(0,0){2}{180}{0}}{\curly{The Unseen University}}
+\pstextpath[c]{\psarc(0,0){2}{180}{0}}{\curly{Ankh-Morpork,
+Discworld}}
+\pscircle[fillstyle=gradient,
+gradangle=45,gradbegin=pink,gradend=yellow](0,0){1.7}
+\rput[B](0,0){{\Large\itshape\bfseries Rincewind, Arch Chancellor}}
+\psset{linestyle=solid}
+\end{pspicture}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-6.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-6.ltx
new file mode 100644
index 00000000000..a62b4938ddf
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-6.ltx
@@ -0,0 +1,16 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstall}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstall}
+\definecolor{lightblue}{rgb}{.68, .85, .9}
+\fontfamily{ptm}\selectfont
+\pscharpath[fillstyle=solid,linecolor=red,
+ fillcolor=lightblue,linewidth=2pt,
+ linewidth=1.5pt]
+{\fontsize{1.5in}{1.5in}\selectfont \LaTeX}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-7.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-7.ltx
new file mode 100644
index 00000000000..2f5969bf669
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-7.ltx
@@ -0,0 +1,22 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstall}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstall}
+\begin{pspicture}(-5,-3)(5,1.2)
+\psset{fillstyle=solid,shadow=true,shadowangle=0}
+\DeclareFixedFont{\babyfont}{T1}{zmn}{m}{n}{3cm}
+\DeclareFixedFont{\wordfont}{T1}{zmn}{m}{n}{2cm}
+\def\Cc#1#2{\pscharpath[fillcolor=#1]{#2}}
+\bfseries
+\rput(0,0){\babyfont
+\Cc{red}B\Cc{green}A\Cc{yellow}B%
+\Cc{red}{Y'}\Cc{blue}S}
+\rput(0,-2){{\wordfont
+\Cc{blue}{WORLD}}}
+\end{pspicture}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-8.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-8.ltx
new file mode 100644
index 00000000000..dc7f4eda2b4
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-8.ltx
@@ -0,0 +1,28 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstall}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstall}
+\DeclareFixedFont{\bigsf}{T1}{phv}{b}{n}{1.75cm}
+\DeclareFixedFont{\tinyrm}{T1}{ptm}{m}{n}{2mm}
+\newcounter{myN}
+\setcounter{myN}{300}
+\begin{pspicture}(0,0)(13,1.4)
+\pscharclip[linecolor=red,fillstyle=solid,
+ fillcolor=yellow]
+ {\rput[bl](0,0){\bigsf CHOCOLATE}}
+\rput[t]{90}(0,0)
+ {\vbox
+ {\hsize=4cm \offinterlineskip \raggedright\tinyrm\color{black}
+ \loop
+ \addtocounter{myN}{-1}
+ \ifnum\value{myN}>0
+ nuts and raisins
+ \repeat}}
+\endpscharclip
+\end{pspicture}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-9.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-9.ltx
new file mode 100644
index 00000000000..ecbd61a121f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/12-0-9.ltx
@@ -0,0 +1,60 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstall}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstall}
+\def\CubeSide#1#2#3#4{
+\ThreeDput[normal=#1](#2){
+\psframe*[linecolor=#3](4,4)
+\rput(2,2){\footnotesize#4}}
+}
+\catcode`\<=12
+\catcode`\>=12
+\def\TheCube#1#2{%
+\begin{pspicture}(-9,-9)(9,9)
+\bfseries
+\ifcase #1 \relax
+\or %1
+ \psset{viewpoint=-1 -1 #2}
+ \rput[l](-8,-6){{\normalsize Viewpoint: -1 -1 #2}}
+ \ifnum#2>0\ThreeDput[normal=0 0 1]{\psgrid(-3,-3)(6,6)}\fi
+ \CubeSide{-1 0 0}{0,4,0}{yellow}{FRONT}
+ \CubeSide{0 -1 0}{0,0,0}{blue}{FRONT}
+\or %2
+ \psset{viewpoint=1 -1 #2}
+ \rput[l](-8,-6){{\normalsize Viewpoint: 1 -1 #2}}
+ \ifnum#2>0\ThreeDput[normal=0 0 1]{\psgrid(-3,-3)(6,6)}\fi
+ \CubeSide{0 -1 0}{0,0,0}{blue}{FRONT}
+ \CubeSide{1 0 0}{4,0,0}{white}{BACK}
+\or %3
+ \psset{viewpoint=1 1 #2}
+ \rput[l](-8,-6){{\normalsize Viewpoint: 1 1 #2}}
+ \ifnum#2>0\ThreeDput[normal=0 0 1]{\psgrid(-3,-3)(6,6)}\fi
+ \CubeSide{1 0 0}{4,0,0}{white}{BACK}
+ \CubeSide{0 1 0}{4,4,0}{green}{BACK}
+\or %4
+ \psset{viewpoint=-1 1 #2}
+ \rput[l](-8,-6){{\normalsize Viewpoint: -1 1 #2}}
+ \ifnum#2>0\ThreeDput[normal=0 0 1]{\psgrid(-3,-3)(6,6)}\fi
+ \CubeSide{0 1 0}{4,4,0}{green}{BACK}
+ \CubeSide{-1 0 0}{0,4,0}{yellow}{FRONT}
+\fi
+\ifnum#2<0
+ \CubeSide{0 0 -1}{0,4,0}{magenta}{BOT}
+\else
+ \CubeSide{0 0 1}{0,0,4}{red}{TOP}
+\fi
+\end{pspicture}
+}
+\psset{unit=.25cm,subgriddiv=0}
+\begin{tabular}{cc}
+\TheCube{1}{1}&
+\TheCube{2}{1}\\
+\TheCube{3}{1}&
+\TheCube{4}{1}\\
+\end{tabular}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-1.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-1.inl
new file mode 100644
index 00000000000..f53aafd4192
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-1.inl
@@ -0,0 +1,5 @@
+\usepackage {graphics}
+\setlength\fboxsep{0pt}
+left\HR
+ \fbox{\includegraphics{w.eps}}%
+\HR right
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-10.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-10.inl
new file mode 100644
index 00000000000..62c4bdf6c14
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-10.inl
@@ -0,0 +1,5 @@
+\usepackage {graphicx}
+left\HR
+ \fbox{\includegraphics
+ [width=10mm]{w.eps}}%
+\HR right
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-11.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-11.inl
new file mode 100644
index 00000000000..6afbeafc9a1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-11.inl
@@ -0,0 +1,5 @@
+\usepackage {graphicx}
+left\HR
+ \fbox{\includegraphics
+ [height=20mm,width=30mm]{w.eps}}%
+\HR right
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-12.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-12.inl
new file mode 100644
index 00000000000..1594bc60079
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-12.inl
@@ -0,0 +1,6 @@
+\usepackage {graphicx}
+left\HR
+ \fbox{\includegraphics
+ [height=20mm,width=30mm,%
+ keepaspectratio]{w.eps}}%
+\HR right
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-13.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-13.inl
new file mode 100644
index 00000000000..de86e511117
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-13.inl
@@ -0,0 +1,5 @@
+\usepackage {graphicx}
+left\HR
+ \fbox{\includegraphics
+ [angle=-45]{w.eps}}%
+\HR right
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-14.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-14.inl
new file mode 100644
index 00000000000..728e7043f6d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-14.inl
@@ -0,0 +1,6 @@
+\usepackage {graphicx}
+\HR\fbox{\includegraphics
+ [angle=45,width=30mm]%
+ {w.eps}%
+ }%
+\HR
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-15.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-15.inl
new file mode 100644
index 00000000000..5086f939aa3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-15.inl
@@ -0,0 +1,6 @@
+\usepackage {graphicx}
+\HR\fbox{\includegraphics
+ [width=30mm,angle=45]%
+ {w.eps}%
+ }%
+\HR
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-16.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-16.inl
new file mode 100644
index 00000000000..1df429d6a3d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-16.inl
@@ -0,0 +1,4 @@
+\usepackage {graphicx}
+left\HR\fbox{%
+ \includegraphics[angle=-60]
+ {w.eps}}\HR right
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-17.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-17.inl
new file mode 100644
index 00000000000..5a3026f4b94
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-17.inl
@@ -0,0 +1,5 @@
+\usepackage {graphicx}
+left\HR\fbox{%
+ \includegraphics[angle=-60,%
+ height=15mm]%
+ {w.eps}}\HR right
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-18.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-18.inl
new file mode 100644
index 00000000000..dc796c42913
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-18.inl
@@ -0,0 +1,5 @@
+\usepackage {graphicx}
+left\HR\fbox{%
+ \includegraphics[angle=-60,%
+ totalheight=15mm]%
+ {w.eps}}\HR right
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-19.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-19.inl
new file mode 100644
index 00000000000..e806e6a129d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-19.inl
@@ -0,0 +1,6 @@
+\usepackage {graphicx}
+left\HR\fbox{%
+ \includegraphics[angle=-60,%
+ totalheight=20mm,%
+ width=30mm]%
+ {w.eps}}\HR right
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-2.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-2.inl
new file mode 100644
index 00000000000..4c7fedca89d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-2.inl
@@ -0,0 +1,9 @@
+\usepackage {graphics}
+left\HR
+ \fbox{\includegraphics
+ [120,120][150,200]{w.eps}}
+\HR right \quad
+left\HR
+ \fbox{\includegraphics*
+ [120,120][150,200]{w.eps}}
+\HR right
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-20.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-20.inl
new file mode 100644
index 00000000000..0a734d409fd
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-20.inl
@@ -0,0 +1,7 @@
+\usepackage {graphicx}
+left\HR\fbox{%
+ \includegraphics[angle=-60,%
+ totalheight=20mm,%
+ width=30mm,%
+ keepaspectratio]%
+ {w.eps}}\HR right
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-3.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-3.inl
new file mode 100644
index 00000000000..0c1cf687d24
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-3.inl
@@ -0,0 +1,10 @@
+\usepackage {graphics}
+left\HR
+ \fbox{\scalebox{.5}{%
+ \includegraphics{w.eps}}}%
+\HR right
+\quad
+left\HR
+ \fbox{\scalebox{.5}[2]{%
+ \includegraphics{w.eps}}}%
+\HR right
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-4.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-4.inl
new file mode 100644
index 00000000000..d248add6d80
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-4.inl
@@ -0,0 +1,10 @@
+\usepackage {graphics}
+left\HR
+ \fbox{\resizebox{10mm}{!}{%
+ \includegraphics{w.eps}}}%
+\HR right
+\quad
+left\HR
+ \fbox{\resizebox{20mm}{10mm}{%
+ \includegraphics{w.eps}}}%
+\HR right
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-5.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-5.inl
new file mode 100644
index 00000000000..58230acfa40
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-5.inl
@@ -0,0 +1,6 @@
+\usepackage {graphics}
+left\HR
+ \fbox{\rotatebox{45}{%
+ \includegraphics{w.eps}}}%
+\HR right
+
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-6.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-6.inl
new file mode 100644
index 00000000000..1b243865954
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-6.inl
@@ -0,0 +1,4 @@
+\usepackage {graphicx}
+left\HR
+ \includegraphics[draft]{w.eps}%
+\HR right
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-7.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-7.inl
new file mode 100644
index 00000000000..33d08ffad7b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-7.inl
@@ -0,0 +1,10 @@
+\usepackage {graphicx}
+left\HR\fbox{%
+ \includegraphics
+ [bb=120 120 150 200]%
+ {w.eps}}\HR right
+\qquad
+left\HR\fbox{%
+ \includegraphics
+ [bb=120 120 150 200,clip]%
+ {w.eps}}\HR right
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-8.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-8.inl
new file mode 100644
index 00000000000..af70745aaa3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-8.inl
@@ -0,0 +1,10 @@
+\usepackage {graphicx}
+left\HR\fbox{%
+ \includegraphics
+ [viewport=20 20 50 100,clip]%
+ {w.eps}}\HR right
+\quad
+left\HR\fbox{%
+ \includegraphics
+ [trim= 5 5 10 10,clip]%
+ {w.eps}}\HR right
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-9.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-9.inl
new file mode 100644
index 00000000000..9a052933255
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-2-9.inl
@@ -0,0 +1,5 @@
+\usepackage {graphicx}
+left\HR
+ \fbox{\includegraphics
+ [scale=.5]{w.eps}}%
+\HR right
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-1.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-1.inl
new file mode 100644
index 00000000000..0e0198c851d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-1.inl
@@ -0,0 +1,5 @@
+\usepackage {graphicx}
+\scalebox{2}{%
+ This text is large.}\\
+ This text is normal.\\
+\scalebox{0.5}{This text is tiny.}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-10.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-10.ltx
new file mode 100644
index 00000000000..cdc348a1112
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-10.ltx
@@ -0,0 +1,21 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {graphicx}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {graphicx}
+\setlength{\fboxsep}{0mm}
+\providecommand{\HR}{\rule{1em}{0.4pt}}
+\HR\fbox{\rotatebox{45}{%
+ \fbox{\parbox{3em}%
+ {Red\\Green\\Blue}}}}\HR
+\HR\fbox{\rotatebox{45}{%
+ \fbox{\parbox[t]{3em}%
+ {Red\\Green\\Blue}}}}\HR
+\HR\fbox{\rotatebox{45}{%
+ \fbox{\parbox[b]{3em}%
+ {Red\\Green\\Blue}}}}\HR
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-11.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-11.ltx
new file mode 100644
index 00000000000..3c02cee6189
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-11.ltx
@@ -0,0 +1,72 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {epic,pspicture,array}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {epic,pspicture,array}
+\small
+\setlength{\unitlength}{0.75mm} %FMi was 1mm
+ \begin{picture}(100,100)
+%\graphpaper[5](0,0)(100,100)
+ \thicklines
+ \put(20,10){\framebox(50,80){}}
+%% label points in bounding box
+ \put(20,10){\makebox(-1,-1)[tr]{\texttt{[lb]}}}
+ \put(20,35){\makebox(-1,-1)[tr]{\texttt{[lB]}}}
+ \put(20,35){\makebox(0,0){{\Large$\bullet$}}}
+ \put(20,51){\makebox(-1,+2)[br]{\texttt{[lc]}}}
+ \put(20,91){\makebox(-1,+2)[br]{\texttt{[lt]}}}
+ \put(45,10){\makebox(0,-1)[tc]{\texttt{[cb]} or \texttt{[b]}}}
+ \put(45,35){\makebox(0,-1)[tl]{\texttt{[cB]} or \texttt{[B]}}}
+ \put(45,51){\makebox(0,+3)[bl]{\texttt{[c]}}}
+ \put(45,50){\makebox(0,0){{\Large$\diamond$}}}
+ \put(45,91){\makebox(0,+9)[bc]{\texttt{[ct]} or \texttt{[t]}}}
+ \put(70,10){\makebox(1,-1)[tl]{\texttt{[rb]}}}
+ \put(70,35){\makebox(1,-1)[tl]{\texttt{[rB]}}}
+ \put(70,51){\makebox(1,+2)[bl]{\texttt{[rc]}}}
+ \put(70,91){\makebox(1,+2)[bl]{\texttt{[rt]}}}
+ \thinlines
+%% centerlines
+ \dashline[+30]{3}(20,50)(70,50)
+ \dashline[+30]{3}(45,10)(45,90)
+%% baseline
+ \dottedline{1}(20,35)(85,35)
+%% material for vertical dimensions
+ \dottedline{1}(70,10)(92,10) % bottom extension to right
+ \dottedline{1}(70,90)(92,90) % top extension to right
+ \put(79,60){\Vector(0,-25)}
+ \put(79,65){\Vector(0,25)}
+ \put(79,62.5){\makebox(0,0){\texttt{height}}}
+ \put(79,20){\Vector(0,-10)}
+ \put(79,25){\Vector(0,10)}
+ \put(79,22.5){\makebox(0,0){\texttt{depth}}}
+ \put(90,48){\Vector(0,-38)}
+ \put(90,52){\Vector(0,38)}
+ \put(90,50){\makebox(0,0){\texttt{ totalheight}}}
+%% material for horizontal dimension
+ \put(20,10){\Line(0,-8)}
+ \put(70,10){\Line(0,-8)}
+ \put(35,4){\Vector(-15,0)}
+ \put(55,4){\Vector(15,0)}
+ \put(45,4){\makebox(0,0){\texttt{length}}}
+%% material for labeling center and reference points
+ \put(52.5,46){\Vector(-6,3.5)}
+ \put(52.5,45){\makebox(0,0)[tc]{\shortstack{center\\point}}}
+ \put(10,40){\Vector(9,-4)}
+ \put(10,40){\makebox(0,0)[bc]{\shortstack{reference\\point}}}
+%% material for labels of axes and baseline
+ \put(32.5,60){\Vector(5,-9)}
+ \put(32.5,65){\Vector(12.,9)}
+ \put(32.5,61){\makebox(0,0)[bc]{centerline}}
+ \put(32.5,25){\Vector(5,9)}
+ \put(32.5,24){\makebox(0,0)[tc]{baseline}}
+ \end{picture}
+
+\begin{tabular}{l*3{>{\ttfamily}ll}}
+\emph{horizontal alignment} & l & left & r & right & c & centre \\
+\emph{vertical alignment} & t & top & b & bottom & B & baseline
+\end{tabular}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-12.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-12.ltx
new file mode 100644
index 00000000000..63fdebfd3c4
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-12.ltx
@@ -0,0 +1,18 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {graphics,pspicture}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {graphics,pspicture}
+\setlength{\unitlength}{1mm}
+\begin{picture}(50,40)
+\put(15,20){\circle{20}}
+\put(40,20){%
+ \scalebox{1}[2]{\circle{20}}}
+\put(40,20){%
+ \scalebox{1}[.5]{\circle*{20}}}
+\end{picture}\qquad
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-13.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-13.inl
new file mode 100644
index 00000000000..15db195b053
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-13.inl
@@ -0,0 +1,7 @@
+\usepackage {graphics,pspicture}
+\fbox{\resizebox{5cm}{20mm}{%
+ \rotatebox{45}{\parbox{3cm}%
+{\raggedright
+ TUG96 in Russia TUG96 in Russia
+ TUG96 in Russia TUG96 in Russia
+ TUG96 in Russia}}}}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-14.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-14.ltx
new file mode 100644
index 00000000000..e2b625d77f8
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-14.ltx
@@ -0,0 +1,16 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {graphics,pspicture}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {graphics,pspicture}
+\begin{tabular}{rrr}
+\rotatebox{45}{ Column 1} &
+\rotatebox{45}{ Column 2} &
+\rotatebox{45}{ Column 3} \\\hline
+1& 2& 3 \\ 4& 5& 6 \\ 7& 8& 9 \\\hline
+\end{tabular}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-15.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-15.inl
new file mode 100644
index 00000000000..987ecb3f343
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-15.inl
@@ -0,0 +1,9 @@
+\usepackage {graphics,pspicture}
+% Zero height rule of width of one quad
+\newcommand{\IR}[1]{\rule{1em}{0pt}%
+ \makebox[0cm][c]{\rotatebox{45}{\ #1}}}
+\begin{tabular}{rrr}
+\IR{Column 1} & \IR{Column 2}
+ & \IR{Column 3} \\\hline
+1& 2& 3 \\ 4& 5& 6 \\ 7& 8& 9 \\\hline
+\end{tabular}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-16.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-16.inl
new file mode 100644
index 00000000000..d4668b13f5d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-16.inl
@@ -0,0 +1,14 @@
+\usepackage {graphics}
+\[
+\begin{array}{ccccc}
+ a_{11} \\
+ a_{21} & a_{22} \\
+ a_{31} & a_{32} &
+ a_{33}\Bpara{0}{7}{61}{65} \\
+ a_{41} & a_{42} &
+ a_{43} & a_{44} \\
+ a_{51} & a_{52} &
+ a_{53}\Bpara{-8}{-6}{-90}{58}
+ & a_{54} & a_{55}
+ \end{array}
+\]
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-17.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-17.inl
new file mode 100644
index 00000000000..ac6aca115f9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-17.inl
@@ -0,0 +1,11 @@
+\usepackage {graphics}
+\Large
+\begin{tabular}{|c|c|c|} \hline
+\multicolumn{2}{|c|}{}& 13 \\\cline{3-3}
+\multicolumn{2}{|c|}{
+ A\Bpara{15}{7}{180}{24}}
+ & 23 \\\cline{3-3}
+\multicolumn{2}{|c|}{
+ \Bpara{5}{0}{90}{22}}& 33 \\\hline
+41 & 42 & 43 \\\hline
+\end{tabular}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-2.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-2.inl
new file mode 100644
index 00000000000..f427390d1fe
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-2.inl
@@ -0,0 +1,5 @@
+\usepackage {graphicx}
+\framebox{\scalebox{2}{%
+ \parbox{.5in}{America \&\\Europe}}}
+\framebox{\scalebox{2}[1.5]{%
+ \parbox{.5in}{America \&\\Europe}}}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-3.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-3.inl
new file mode 100644
index 00000000000..22e1f12908d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-3.inl
@@ -0,0 +1,3 @@
+\usepackage {graphicx}
+America?\reflectbox{America?} \\
+America?\scalebox{-1}[1]{America?}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-4.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-4.inl
new file mode 100644
index 00000000000..a35882a9ffa
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-4.inl
@@ -0,0 +1,7 @@
+\usepackage {graphicx}
+America?\scalebox{-1}{America?} \\
+America?\scalebox{1}[-1]{America?}\\
+America?\makebox[0mm][r]{%
+ \scalebox{-1}{America?}}\\
+\makebox[0mm][l]{America?}%
+ \scalebox{1}[-1]{America?}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-5.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-5.inl
new file mode 100644
index 00000000000..f0469651fa0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-5.inl
@@ -0,0 +1,7 @@
+\usepackage {graphicx}
+\framebox{\resizebox{5mm}{!}{%
+ \parbox{14mm}{London, \\
+ Berlin \&\\Paris}}}
+\framebox{\resizebox{!}{10mm}{%
+ \parbox{14mm}{London, \\
+ Berlin \&\\Paris}}}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-6.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-6.inl
new file mode 100644
index 00000000000..0d95b260640
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-6.inl
@@ -0,0 +1,10 @@
+\usepackage {graphicx}
+\HR\begin{tabular}{@{}lll@{}}
+ K\"oln & Lyon & Oxford \\
+ Rhein & Rh\^one & Thames
+ \end{tabular}\HR\par\bigskip
+\HR\resizebox{2cm}{.5cm}{%
+ \begin{tabular}{@{}lll@{}}
+ K\"oln & Lyon & Oxford \\
+ Rhein & Rh\^one & Thames
+ \end{tabular}}\HR
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-7.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-7.inl
new file mode 100644
index 00000000000..0d95b39a750
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-7.inl
@@ -0,0 +1,9 @@
+\usepackage {graphicx}
+\HR\framebox{\resizebox{\width}
+ {.7\height}{%
+ \parbox{14mm}{London, \\
+ Berlin \&\\Paris}}}\HR
+\framebox{\resizebox{\width}
+ {.7\totalheight}{%
+ \parbox{14mm}{London, \\
+ Berlin \&\\Paris}}}\HR
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-8.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-8.inl
new file mode 100644
index 00000000000..d7eb589a15a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-8.inl
@@ -0,0 +1,13 @@
+\usepackage {graphicx}
+\HR
+\resizebox{20mm}{30mm}{%
+ \begin{tabular}{@{}lll@{}}
+ K\"oln & Lyon & Oxford \\
+ Rhein & Rh\^one & Thames
+ \end{tabular}}\HR
+\HR
+\resizebox*{20mm}{30mm}{%
+ \begin{tabular}{@{}lll@{}}
+ K\"oln & Lyon & Oxford \\
+ Rhein & Rh\^one & Thames
+ \end{tabular}}\HR
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-9.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-9.inl
new file mode 100644
index 00000000000..c66d3521066
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/2-3-9.inl
@@ -0,0 +1,7 @@
+\usepackage {graphicx}
+\setlength{\fboxsep}{0mm}
+\newcommand{\MyRot}[1]{%
+ \fbox{\rotatebox{#1}{%
+ rotation $#1^\circ$}}}
+\MyRot{0} \MyRot{45} \MyRot{90}
+\MyRot{135} \MyRot{180} \MyRot{225}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-1.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-1.mp
new file mode 100644
index 00000000000..315d65a630e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-1.mp
@@ -0,0 +1,7 @@
+
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+ draw (0,0)..(50,20)..(40,30)..(30,20)
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-2.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-2.mp
new file mode 100644
index 00000000000..f47f3d97266
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-2.mp
@@ -0,0 +1,8 @@
+
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+draw (0, 50)..(0,0)..
+ (60,40)..(60,10)..cycle;
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-3.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-3.mp
new file mode 100644
index 00000000000..bad64fab6c4
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-3.mp
@@ -0,0 +1,7 @@
+
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+ draw (0,0)--(50,20)--(40,30)--(30,20)
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-4.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-4.mp
new file mode 100644
index 00000000000..0572b47e17d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-4.mp
@@ -0,0 +1,14 @@
+
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+u=2.5cm;
+path p;
+p= (0,0) {dir 130}..
+ {dir -130}(0.25u,0){dir 130}..
+ {dir -130}(0.5u,0){dir 130}..
+ {dir -130}(0.75u,0){dir 130}..
+ {dir -130}(u,0);
+draw p rotated -90;
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-5.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-5.mp
new file mode 100644
index 00000000000..b4f9d851a51
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-5.mp
@@ -0,0 +1,13 @@
+
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+path p,q;
+u=.5cm;
+q=(0u,0u)--(6u,0u)--(4u,3u);
+draw q;
+p=(0u,0u){curl 4000}..(6u,0u)
+ ..{curl 4000}(4u,3u);
+draw p;
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-6.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-6.mp
new file mode 100644
index 00000000000..82212a0167a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-6.mp
@@ -0,0 +1,13 @@
+
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+pickup pencircle scaled 4pt
+ yscaled .2pt rotated 60;
+n:=5;
+for i := (n*20) step -(n) until (n):
+ draw (i,0)..(0,i)..(-i,0)
+ ..(0,-(i-n))..(i-n,0);
+endfor
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-7.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-7.mp
new file mode 100644
index 00000000000..282251ee456
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-7.mp
@@ -0,0 +1,18 @@
+
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+u=1cm;
+path p[];
+p1:=(.5u,.5u)--(1.5u,.5u)--(.5u,1.5u)
+ --(1.5u,1.5u)--(.5u,.5u)--cycle;
+fill (p1 shifted (0,2.5u))
+ rotatedaround ((u,3.5u),90);
+draw p1 shifted (u,4u);
+fill p1 shifted (3.5u,3u);
+p2 =(2u,2u)..(u,3.5u)..(2u,5u)
+ ..(4.5u,4u)..(7u,5u);
+pickup pencircle scaled 4pt;
+draw p2;
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-8.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-8.mp
new file mode 100644
index 00000000000..16450d947c0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-8.mp
@@ -0,0 +1,30 @@
+
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+boolean timetofillbox; timetofillbox := true;
+partway := 0.9;
+l := .75in; u := 1.75in; n := 4;
+theta := 360/n;
+z1 = (0,u);
+for i := 2 upto n: z[i] = z1 rotated ((i-1)*theta); endfor
+forever:
+ path p;
+ p := z1
+ for j := 2 upto n: --z[j] endfor --cycle;
+ if timetofillbox:
+ fill p;
+ timetofillbox := false;
+ else:
+ unfill p;
+ timetofillbox := true;
+ fi
+ pair Z[];
+ for j := 1 upto n: Z[j] := partway[z[j-1],z[j]]; endfor
+ Z1 := partway[z[n],z1];
+ for j := 1 upto n: x[j] := xpart Z[j]; y[j] := ypart Z[j]; endfor
+ if not timetofillbox: l := abs(z1); fi
+ exitif l < .05u;
+endfor
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-9.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-9.mp
new file mode 100644
index 00000000000..4cac01cd7eb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-1-9.mp
@@ -0,0 +1,87 @@
+
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+size=75;
+path p[];
+def pointtopair(expr x,y,z)=
+(-x*cosd a + y*sind a,
+ -x*sind a * sind b -y*cosd a * sind b
+ + z*cosd b)
+enddef;
+%
+%basic path (the shape of the boundary)
+%can be molded, can be constrained etc
+p1:= (0,3size){right}..
+ {down}(1.1size,1.75size){down}..
+ (.35size,.75size)..(.175size,.375size)..
+ {left}origin;
+%path with regular---nearly so---
+%distributed points
+n:=0;%number of points along the curve
+p10:= point 0 of p1 hide(n:=n+1)..
+ for t:=1 upto 19: hide(n:=n+1)
+ point .05t of p1..endfor
+ point 1 of p1 hide(n:=n+1)..
+ for t:=1 upto 13: hide(n:=n+1)
+ point 1+t/14 of p1..endfor
+ point 2 of p1 hide(n:=n+1)..
+ for t:=1 upto 3: hide(n:=n+1)
+ point 2+t/4 of p1..endfor
+ point 3 of p1 hide(n:=n+1)..
+ for t:=1 upto 3: hide(n:=n+1)
+ point 3+t/4 of p1..endfor
+ origin;
+%viewing angle parameters
+b:=-10; a:=60;
+p100:= for k=0 upto n-1:
+ pointtopair(0,xpart(point k of p10),
+ ypart(point k of p10))..
+ endfor pointtopair(0,0,0);
+p200:= for k=0 upto n-1:
+ pointtopair(xpart(point k of p10), 0,
+ ypart(point k of p10))..
+ endfor pointtopair(0,0,0);
+p300:= for k=0 upto n-1:
+ pointtopair(0,-xpart(point n-k of p10),
+ 3size-ypart(point n-k of p10))..
+ endfor pointtopair(0,0,0);
+p400:= for k=0 upto n-1:
+ pointtopair(-xpart(point n-k of p10),
+ 0, 3size-ypart(point n-k of p10))..
+ endfor pointtopair(0,0,0);
+%
+fill (-1.5size,-size)--(-1.5size,5size)--
+ (1.5size,5size)--(1.5size,-size)--cycle;
+%
+drawoptions(withcolor white);
+%
+pickup pencircle scaled .5pt;
+%Top ring and hang up (rope)
+draw point 0 of p100..
+ point 0 of p100 + (0,.1size)..cycle;
+draw point 0 of p100 + (0,.1size)..
+ point 0 of p100 + (0,3size);
+%Draw boundary curves
+draw p100; draw p200; draw p300; draw p400;
+%
+%Draw (partially hidden) regular surfaces
+pickup pencircle scaled .1pt;
+for k=0 step 1 until n:
+ draw point k of p200..point n-k of p300;
+endfor
+for k=0 upto n:
+ draw point k of p400..point n-k of p100;
+endfor
+fill p100..reverse p200..cycle withcolor black;
+%Front
+pickup pencircle scaled .1pt;
+draw p100; draw p200;
+draw point 0 of p100--origin;
+%
+%Draw regular surface which is in sight
+for k=0 step 1 until n:
+ draw point k of p100..point n-k of p200;
+endfor
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-2-1.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-2-1.mp
new file mode 100644
index 00000000000..7059c792ad9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-2-1.mp
@@ -0,0 +1,15 @@
+
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+u=2pt;
+labeloffset:=10pt;
+defaultfont:="ptmb8r";
+dotlabel.ulft ("upper left",(100u,100u));
+label.urt (btex upper right etex,(100u,100u));
+label.llft ("lower left",(100u,100u));
+label.lrt (btex $x_1,y_1$ etex,(100u,100u));
+draw (50u,100u)--(150u,100u);
+draw (100u,125u)--(100u,75u);
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-2-2.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-2-2.mp
new file mode 100644
index 00000000000..071f6414c2b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-2-2.mp
@@ -0,0 +1,23 @@
+
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+defaultscale:=1.4; u=1pt;
+picture p,q; gap:=18u;
+for i := 0 upto 6:
+ z[i]=(0u,i * gap * u);
+endfor;
+draw z0--z6;
+dotlabels.lft(0,1,2,3,4,5,6);
+q=thelabel.urt(btex Poly\TeX etex ,z0);
+draw q;
+draw q reflectedabout(z0,z0+(2u,0));
+draw q shifted(0,gap) withcolor red;
+fill bbox q shifted(0,2*gap*u) withcolor green;
+draw q shifted(0,2*gap*u) withcolor white;
+draw q scaled 2 shifted(0,5*gap*u);
+p=q rotatedabout(z0,45);
+draw p shifted(10u,3*gap*u);
+draw bbox currentpicture withcolor green;
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-2-3.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-2-3.mp
new file mode 100644
index 00000000000..3de72abce8a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-2-3.mp
@@ -0,0 +1,26 @@
+
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+verbatimtex
+\documentclass{article}
+\usepackage{times,amsmath}
+\begin{document}
+etex;
+picture p; path q;
+p:=thelabel(btex \Large
+\begin{minipage}{4in}
+\begin{gather}
+\iint\limits_A f(x,y)\,dx\,dy\qquad
+\iiint\limits_A f(x,y,z)\,dx\,dy\,dz\\
+\iiiint\limits_A f(w,x,y,z)\,dw\,dx\,dy\,dz
+\qquad\idotsint\limits_A f(x_1,\dots,x_k)
+\end{gather}
+\end{minipage}
+etex,(0,0));
+q:=fullcircle scaled 2.5in;
+fill q withcolor black;
+clip p to q;
+draw p rotated (90) withcolor white;
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-1.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-1.mp
new file mode 100644
index 00000000000..74457e9ca90
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-1.mp
@@ -0,0 +1,11 @@
+input boxes
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+boxjoin(a.se=b.nw);
+boxit.one("One");
+boxit.two("Two");
+drawboxed(one,two);
+drawarrow one.n{up}..two.n;
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-10.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-10.mp
new file mode 100644
index 00000000000..c206e6465c9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-10.mp
@@ -0,0 +1,18 @@
+input graph
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+draw begingraph(2.5in,1.75in);
+gfill "yearw.dat" withcolor red;
+for y=10,20,30:
+ itick.lft(format("%g",y),y);
+endfor
+otick.top("19th century",1850);
+otick.top("20th century",1950);
+frame.llft;
+autogrid(,);
+endgraph;
+
+
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-11.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-11.mp
new file mode 100644
index 00000000000..8a7f0325486
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-11.mp
@@ -0,0 +1,17 @@
+input graph
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+draw begingraph(2.5in,1.5in);
+numeric p[]; path r;
+for j := 0 upto 100: p[j]:=0; endfor
+gdata ("ages.dat",y, age:=(scantokens y1);
+ p[age]:=p[age] + 1;);
+r:=(0,0)
+ for j := 1 upto 100: --(j,p[j]) endfor;
+gdraw r;
+frame.llft;
+endgraph;
+
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-12.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-12.mp
new file mode 100644
index 00000000000..03131abecfe
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-12.mp
@@ -0,0 +1,23 @@
+input graph
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+draw begingraph(2.5in,1.75in);
+setrange(origin,(100,100));
+numeric p[]; path r;
+for j := 0 step 10 until 100:
+ p[j]:=0; endfor
+def check(expr age) =
+ if age < 100:
+ xage:=round(age/10) * 10;
+ p[xage]:=p[xage] + 1; fi
+enddef;
+gdata ("ages.dat",y,
+ check((scantokens y1)););
+r:=(0,0) for j := 0 step 10 until 100:
+ --(j,p[j]) endfor --(100,0);
+gfill r -- cycle withcolor blue;
+frame.llft;
+endgraph;
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-13.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-13.mp
new file mode 100644
index 00000000000..7ebc0fe8550
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-13.mp
@@ -0,0 +1,27 @@
+input graph
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+path m,w,last;
+draw begingraph(3in,2in);
+setrange((1800,0),(whatever,whatever));
+gdata ("decade.dat",y,
+ last:=((scantokens y1),0);
+ augment.w(y1,y2);
+ augment.m(y1,y3););
+gfill (1800,0)--w--last--cycle
+ withcolor red;
+gfill (1800,0)--m--last--cycle
+ withcolor green;
+pickup pencircle scaled 3pt;
+gdraw w dashed withdots;
+pickup pencircle scaled .75pt;
+glabel.bot (btex Number of burials per decade
+ ($n \approx 4300$) etex,OUT);
+endgraph
+rotated 90;
+
+
+
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-14.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-14.mp
new file mode 100644
index 00000000000..3d4794377a3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-14.mp
@@ -0,0 +1,20 @@
+input graph
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+path s; numeric x,y;
+draw begingraph(2.5in,1.75in);
+gdata ("students.dat",c,
+ x:=(scantokens c1) * 12;
+ y:=(scantokens c2);
+ augment.s((x-5,0)--
+ (x-5,y)-- (x+5,y)--
+ (x+5,0));
+ if y < 0: glabel.top(c2,(x,0)); fi
+ if y > 0: glabel.bot(c2,(x,0)); fi
+);
+gfill s--cycle withcolor .5white;
+frame.llft;
+endgraph;
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-15.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-15.mp
new file mode 100644
index 00000000000..79bf68da1d3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-15.mp
@@ -0,0 +1,24 @@
+input graph
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+path m; numeric n,width;
+width:=20; defaultscale:=0.6; n:=0;
+def bar(expr name,value) =
+ gfill(n,0)--(n,value)--
+ (n+width,value)--(n+width,0)--cycle
+ withcolor (value/100,value/100,value/100);
+ picture p;
+ p = name infont defaultfont
+ scaled defaultscale rotated 90;
+ glabel.rt
+ (image(unfill bbox p; draw p),(n,10));
+ n:=n+width;
+enddef;
+draw begingraph(2.5in,1.75in);
+setrange((0,0),(11*width,100));
+autogrid(,otick.lft);
+gdata("chap.dat",c,bar(c1,(scantokens c2)););
+endgraph;
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-16.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-16.mp
new file mode 100644
index 00000000000..82c5e02073f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-16.mp
@@ -0,0 +1,30 @@
+input graph
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+path m[],w[];
+def wcheck(expr decade,value) =
+ augment.w1(decade,0);
+ augment.w1(decade,value);
+ augment.w1(decade+5,value);
+ augment.w1(decade+5,0);
+enddef;
+def mcheck(expr decade,value) =
+ augment.m1(decade+5,0);
+ augment.m1(decade+5,value);
+ augment.m1(decade+10,value);
+ augment.m1(decade+10,0);
+enddef;
+draw begingraph(3.75in,2in);
+gdata ("decade.dat",y,
+ wcheck((scantokens y1),(scantokens y2));
+ mcheck((scantokens y1),(scantokens y3)););
+gfill m1--cycle;
+gdraw w1;
+glabel.bot (btex Number of burials per decade
+ ($n \approx 4300$) etex,OUT);
+frame.llft;
+endgraph rotated 90;
+
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-17.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-17.mp
new file mode 100644
index 00000000000..b8ce2ff6222
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-17.mp
@@ -0,0 +1,33 @@
+input graph
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+numeric r,last; path c,w;
+r:=5; c:=fullcircle scaled 2r;
+last:=0.0;
+def wedge (expr lang,value,perc) =
+ numeric current,n,half,xoff,yoff;
+ picture p;
+ n:=perc*3.6;
+ current:=last+n; half:=last+(n/2);
+ w:=buildcycle((0,0)--(2r,0) rotated last,
+ c, (2r,0)--(0,0) rotated current);
+ gfill w withcolor (0,0.8-(perc/100),0);
+ gdraw w;
+ if perc > 5:
+ p = lang infont defaultfont
+ scaled defaultscale;
+ glabel(image(unfill bbox p; draw p),
+ 3/4r*dir(half));
+ fi;
+ last:=current;
+enddef;
+draw begingraph(3in,3in);
+defaultscale:=0.7;
+gdata ("langs.dat",c,
+ wedge(c1, (scantokens c2),
+ (scantokens c3)););
+autogrid(,); frame withcolor white;
+endgraph;
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-18.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-18.mp
new file mode 100644
index 00000000000..45a199c6560
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-18.mp
@@ -0,0 +1,21 @@
+input graph
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+draw begingraph(2.5in,2.5in);
+n:=10;
+defaultscale:=0.7;
+pickup pensquare scaled 3pt;
+setrange((1700,0),(whatever,whatever));
+gdata("stones.dat", s,
+gdraw ((scantokens s2),n)--
+ ((scantokens s3),n);
+glabel.lft(s1,(scantokens s2)-3,n);
+n:=n+16;);
+pickup pensquare scaled .5pt;
+frame.bot;
+autogrid(otick.bot,);
+endgraph;
+
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-19.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-19.mp
new file mode 100644
index 00000000000..7b1ef7b0b12
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-19.mp
@@ -0,0 +1,23 @@
+input graph
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+def sq(expr x,y,num,perc) =
+ gfill(x,y)--(x+10,y)--
+ (x+10,y+10)--(x,y+10)--cycle
+ withcolor (perc/100,perc/100,perc/100);
+ glabel(num,(x+5,y+5))
+ if perc < 50: withcolor white fi;
+enddef;
+defaultscale:=0.7;
+draw begingraph(70mm,80mm);
+setrange((20,10),(110,110));
+autogrid(,);
+gdata ("pot.dat",c,
+ sq((scantokens c1)*10,
+ (scantokens c2)*10,
+ c3, (scantokens c4)););
+endgraph;
+
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-2.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-2.mp
new file mode 100644
index 00000000000..9eba0885819
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-2.mp
@@ -0,0 +1,11 @@
+input boxes
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+boxjoin(a.se=b.nw-(10,-10));
+boxit.one("One");
+boxit.two("Two");
+drawunboxed(one,two);
+drawarrow one.n{dir 45}..two.n;
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-3.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-3.mp
new file mode 100644
index 00000000000..f970222eb70
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-3.mp
@@ -0,0 +1,19 @@
+input boxes
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+boxjoin(a.n=b.s-(20,60));
+boxit.one("One");
+circleit.two("Two");
+drawboxes(one,two);
+boxjoin();
+boxit.three("Three");
+three.w=one.e+(20,0);
+fill bpath three withcolor green;
+draw bpath three;
+draw pic(three) withcolor red;
+drawarrow one.c--two.c
+ cutbefore bpath one
+ cutafter bpath two;
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-4.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-4.mp
new file mode 100644
index 00000000000..3cfd0e58474
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-4.mp
@@ -0,0 +1,18 @@
+input boxes
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+boxjoin(a.e=b.w-(30,0));
+boxit.one("One");
+circleit.two("Two");
+drawboxed(one,two);
+label.lft("1.",one.w);
+label.rt("2.",two.e);
+label.top("a.",
+ point .5*length (one.c{dir 45}..two.c)
+ of (one.c{dir 45}..two.c) );
+draw one.c{dir 45}..two.c
+ cutbefore bpath one
+ cutafter bpath two;
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-5.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-5.mp
new file mode 100644
index 00000000000..880a88c93d5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-5.mp
@@ -0,0 +1,21 @@
+input boxes
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+vardef labelarrow
+ (suffix BoxA,BoxB) expr Line =
+ drawarrow Line
+ cutbefore bpath BoxA
+ cutafter bpath BoxB;
+ point (.5*length Line) of Line
+enddef;
+defaultscale:=2;
+boxjoin(a.e=b.w-(.75in,1.5in));
+boxit.one("One"); circleit.two("Two");
+drawboxed(one,two);
+label.lft("1.",one.w);
+label.rt("2.",two.e);
+label.top("a.",labelarrow(one,two)
+ one.c{dir90}..tension0.8..{dir90}two.s);
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-6.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-6.mp
new file mode 100644
index 00000000000..c5dc4b3a898
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-6.mp
@@ -0,0 +1,47 @@
+input boxes
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+defaultfont:="ptmb8r";
+vardef labelarrow
+ (suffix BoxA,BoxB) expr Line =
+ drawarrow Line
+ cutbefore bpath BoxA
+ cutafter bpath BoxB;
+ point (.5*length Line) of Line
+enddef;
+color yellow,orange;
+yellow:=red+green; orange:=red+(green/2);
+boxjoin(a.n=b.s-(0,.5in));
+defaultscale:=1.5; circmargin:=4pt;
+circleit.In("in"); circleit.One("1"); circleit.Two("2");
+circleit.Three("3"); circleit.Four("4");
+boxjoin(); circmargin:=16pt; circleit.X(""); X.c=Four.c;
+drawunboxed(One,Two,Three,Four,In,X);
+drawarrow In.n--One.s;
+label.rt("a",labelarrow(One,Two) One.c--Two.c)
+ withcolor red;
+label.rt("b",labelarrow(Two,Three) Two.c--Three.c)
+ withcolor green;
+label.rt("b",labelarrow(Three,Four) Three.c--Four.c)
+ withcolor green;
+label.rt("a",labelarrow(Four,Two) Four.c{dir335}..
+ {dir205}Two.c) withcolor red;
+label.lft("a",labelarrow(Three,Two) Three.c{dir205}..
+ {dir335}Two.c) withcolor red;
+label.lft("b",labelarrow(Four,One) Four.c{dir180}..
+ tension2..One.c) withcolor green;
+label.rt("b",labelarrow(One,One) One.c{dir45}..One.c+(40,0)
+ ..{dir120}One.c) withcolor green;
+label.rt("a",labelarrow(Two,Two) Two.c{dir65}..Two.c+(40,0)
+ ..{dir100}Two.c) withcolor red;
+fill bpath One withcolor blue;
+fill bpath Two withcolor yellow;
+fill bpath Three withcolor orange;
+draw bpath Four; draw pic Two;
+draw pic One withcolor white;
+draw pic Three withcolor white;
+pickup pencircle scaled 2pt;
+draw bpath X dashed evenly withcolor (1 , .75, .8);
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-7.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-7.mp
new file mode 100644
index 00000000000..194fd1d8aca
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-7.mp
@@ -0,0 +1,19 @@
+input graph
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+draw begingraph(2.5in,1.75in);
+gdraw "yearm.dat" dashed evenly;
+gdraw "yearw.dat";
+glabel.lft
+ (btex (solid) Women etex, 1960,30);
+glabel.lft
+ (btex (dashed) Men etex ,1870,30);
+glabel.bot
+ (btex Number of burials per year
+ ($n \approx 4300$) etex,OUT);
+endgraph;
+
+
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-8.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-8.mp
new file mode 100644
index 00000000000..9d8fcff36ba
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-8.mp
@@ -0,0 +1,18 @@
+input graph
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+draw begingraph(2.5in,1.75in);
+gdraw "yearm.dat"
+ plot btex $\bullet$ etex;
+gdraw "yearw.dat"
+ plot btex $\circ$ etex;
+glabel.bot
+ (btex Burials etex,OUT);
+glabel.lft
+ (btex Number etex rotated 90,OUT);
+endgraph;
+
+
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-9.mp b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-9.mp
new file mode 100644
index 00000000000..8617e0b7be0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-3-9.mp
@@ -0,0 +1,15 @@
+input graph
+defaultfont:="ptmr8r";
+warningcheck:=0;
+beginfig(1)
+draw begingraph(2.5in,1.75in);
+gfill "yearw.dat" withcolor red;
+autogrid(grid.bot,itick.rt)
+ withcolor .5white;
+frame.llft;
+endgraph;
+
+
+
+endfig;
+end;
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-4-1.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/3-4-1.ltx
new file mode 100644
index 00000000000..a6b24fb7a90
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-4-1.ltx
@@ -0,0 +1,21 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {mfpic}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {mfpic}
+\begin{mfpic}[1]{-20}{80}{-20}{80}
+\pen{.3pt}\axes
+\lines{(1,1),(10,10),(30,10),(50,60),(70,80)}
+\pen{3pt}
+\arc[p]{(0,0),10,80,80}
+\pen{1pt}
+\shade\circle{(40,40),10}
+\arrow\dotted
+ \curve{(-10,-10),(5,10),(20,40),(-20,60)}
+\gfill\bclosed\lines{(60,-10),(5,-5),(30,10)}
+\end{mfpic}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-4-2.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/3-4-2.ltx
new file mode 100644
index 00000000000..62f96d991bf
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-4-2.ltx
@@ -0,0 +1,14 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {mfpic}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {mfpic}
+\begin{mfpic}[15]{-3}{3}{-3}{3}
+\axes
+\function{-2,2,0.1}{((x**3)-x)/2}
+\end{mfpic}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-4-3.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/3-4-3.ltx
new file mode 100644
index 00000000000..681b728b0dd
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-4-3.ltx
@@ -0,0 +1,27 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {mfpic}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {mfpic}
+\begin{mfpic}[1.2]{-50}{50}{-50}{50}
+\pen{.3pt}
+\newcommand{\petal}%
+ {\bclosed\lines{(30,10),(0,0),(10,30)}}
+\newcommand{\halfflower}%
+{\begin{coords}
+ \gfill\petal
+ \turn{45}\petal
+ \turn{45}\shade\draw\petal
+ \turn{45}\hatch\draw\petal
+ \end{coords}
+}
+\halfflower
+\turn{180}
+\halfflower
+\gclear\draw\circle{(0,0),10}
+\end{mfpic}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-4-4.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/3-4-4.ltx
new file mode 100644
index 00000000000..6357a5df403
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-4-4.ltx
@@ -0,0 +1,49 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {graphics,mfpic}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {graphics,mfpic}
+\rotatebox{90}{\fbox{%
+\begin{mfpic}[1.7][4]{-10}{200}{-5}{35}
+\newcommand{\XmyLabel}[2]{%
+ \tlabel[bc](#1,-5){{\scriptsize#2}}
+ \lines{(#1,0),(#1,-2)}%
+}
+\newcommand{\YmyLabel}[1]{%
+ \tlabel[br](-5,#1){{\scriptsize#1}}
+ \lines{(0,#1),(-2,#1)}%
+}
+\XmyLabel{0}{1800}\XmyLabel{50}{1850}
+\XmyLabel{100}{1900}\XmyLabel{150}{1950}
+\YmyLabel{5}\YmyLabel{10}
+\YmyLabel{15}\YmyLabel{20}
+\arrow\lines{(0,30),(0,0),(200,0)}
+\lines{(03,3), (17,2), (19,10), (21,14),
+(23,6), (26,6), (28,5), (30,14), (32,9),
+(34,9), (36,10), (38,7), (40,7),
+(42,13), (44,13), (46,14), (48,13),
+(50,11), (52,13), (54,5), (56,13),
+(58,10), (60,14), (62,17), (64,14),
+(66,10), (68,23), (70,16), (72,27),
+(74,22), (76,28), (78,22), (80,17),
+(82,29), (84,13), (86,11), (88,12),
+(90,7), (92,6), (94,6), (96,3), (98,8),
+(100,12), (102,9), (104,14), (106,6),
+(108,19), (110,6), (112,12), (114,11),
+(116,11), (118,6), (120,5), (122,14),
+(124,13), (126,17), (128,20), (130,9),
+(132,16), (134,11), (136,11), (138,11),
+(140,12), (142,11), (144,12), (146,13),
+(148,7), (150,5), (152,11), (154,10),
+(156,18), (158,13), (160,16), (162,26),
+(164,25), (166,18), (168,18), (170,12),
+(172,13), (174,16), (176,11), (178,14),
+(180,11), (182,5), (184,15), (186,3)}
+\tcaption[.8,.75]{Burials per year in the
+Protestant Cemetery, Rome.}
+\end{mfpic}}}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-4-5.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/3-4-5.ltx
new file mode 100644
index 00000000000..2df7e92272f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-4-5.ltx
@@ -0,0 +1,17 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {mfpic,ifthen}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {mfpic,ifthen}
+\newcounter{mfcntA}
+\begin{mfpic}[1.5]{-30}{40}{-25}{25}
+\setcounter{mfcntA}{-30}
+ \whiledo{\themfcntA<31}{%
+ \ellipse[\themfcntA]{(0,0),40,12}
+ \addtocounter{mfcntA}{6}}%
+\end{mfpic}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/3-4-6.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/3-4-6.ltx
new file mode 100644
index 00000000000..910a959eef3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/3-4-6.ltx
@@ -0,0 +1,25 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {mfpic,ifthen}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {mfpic,ifthen}
+\begin{mfpic}[1.5]{-40}{50}{-48}{50}
+\newcounter{mfcntA}
+\newcounter{mfcntB}
+\setcounter{mfcntA}{50}
+\setcounter{mfcntB}{48}
+\whiledo{\themfcntA>1}{%
+ \expandafter\curve{(\themfcntA,0),
+ (0,\themfcntA),
+ (-\themfcntA,0),
+ (0,-\themfcntB),
+ (\themfcntB,0)}
+ \addtocounter{mfcntA}{-2}%
+ \addtocounter{mfcntB}{-2}%
+ }
+\end{mfpic}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-1.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-1.inl
new file mode 100644
index 00000000000..6730b90c0f2
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-1.inl
@@ -0,0 +1,8 @@
+\usepackage {pstcol}
+\begin{pspicture}(0,0)(5,4)
+ \newpsstyle{bomb}{fillcolor=gray,fillstyle=solid,
+ linestyle=dashed,linewidth=2pt}
+ \pscircle[style=bomb](2,2){.5}
+ \pscircle(.5,.5){.5}
+ \pswedge[style=bomb](4,.5){1}{20}{130}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-10.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-10.ltx
new file mode 100644
index 00000000000..d6b93e2c3e1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-10.ltx
@@ -0,0 +1,152 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstcol,pst-node,pst-coil}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstcol,pst-node,pst-coil}
+\makeatletter
+\newdimen\CurX
+\newdimen\CurY \newdimen\Cir@temp
+\newcount\Cir@direction % 0 right, 1 left, 2 up, 3 down
+\Cir@direction0
+\def\SetX#1{\CurX=#1pt}
+\def\SetY#1{\CurY=#1pt}
+\def\ShowDirection{%
+ \typeout{Direction:
+ \ifcase\Cir@direction right\or left\or up\or down\fi,
+ now at (\strip@pt\CurX,\strip@pt\CurY)}%
+}
+\def\ShowXY{\message{(\strip@pt\CurX,\strip@pt\CurY)}}
+
+\def\Down#1{\advance\CurY by -#1\p@\Cir@direction3%\ShowDirection
+}
+\def\Up#1{\advance\CurY by #1\p@\Cir@direction2%\ShowDirection
+}
+\def\Left#1{\advance\CurX by -#1\p@\Cir@direction1%\ShowDirection
+}
+\def\Right#1{\advance\CurX by #1\p@\Cir@direction0%\ShowDirection
+}
+\def\MyBox#1#2{% width,height
+ \pssetlength{\Cir@temp}{#1}%
+ \rule{\Cir@temp}{\z@}%
+ \pssetlength{\Cir@temp}{#2}%
+ \rule{\z@}{\Cir@temp}%
+}
+\def\Point#1{%
+\rput(\strip@pt\CurX,\strip@pt\CurY){\pnode{#1}}%
+}
+\def\Switch#1{%
+\message{[Switch] #1}\ShowXY
+\relax
+\ifcase\Cir@direction % right
+ \rput[b](\strip@pt\CurX,\strip@pt\CurY){\rnode[b]{#1}{%
+ \psline(.5,.4)%
+ \psarc{<-}{.4}{-10}{70}%
+ \MyBox{.5}{.4}%
+ }}%
+ \advance\CurX by .5\p@
+\or % left
+ \advance\CurX by -.5\p@
+ \rput[b](\strip@pt\CurX,\strip@pt\CurY){\rnode[b]{#1}{%
+ \psline(0,0)(.5,.4)%
+ \psarc{<-}{.4}{-10}{70}%
+ \MyBox{.5}{.4}%
+ }}%
+\fi
+}
+
+\def\Battery#1{%
+\message{[Battery] #1}\ShowXY
+\relax
+\ifcase\Cir@direction % right
+ \rput[r](\strip@pt\CurX,\strip@pt\CurY){\rnode{#1}{%
+ \psline(0,-.4)(0,.4)%
+ \psline(.2,-.2)(.2,.2)%
+ \MyBox{.2}{.8}%
+ }}%
+ \advance\CurX by .2\p@
+\or % left
+ \advance\CurX by -.2\p@
+ \rput[r](\strip@pt\CurX,\strip@pt\CurY){\rnode{#1}{%
+ \psline(0,-.4)(0,.4)%
+ \psline(.2,-.2)(.2,.2)%
+ \MyBox{.2}{.8}%
+ }}%
+\or % up
+ \advance\CurY by .2\p@
+ \rput[b](\strip@pt\CurX,\strip@pt\CurY){\rnode{#1}{%
+ \psline(.1,.2)(.9,.2)%
+ \psline(0.3,0)(0.7,0)%
+ \MyBox{1}{.2}%
+ }}%
+\or % down
+ \rput[b](\strip@pt\CurX,\strip@pt\CurY){\rnode{#1}{%
+ \psline(-.4,0)(.4,0)%
+ \psline(-.2,-.2)(.2,-.2)%
+ \MyBox{1}{.2}%
+ }}%
+ \advance\CurY by -.2\p@
+\fi
+}
+
+\def\Resistor{\message{[Resistor]}\ShowXY
+ \@ifnextchar[{\@ResInd}{\@ResInd[1]{pszigzag}}}
+\def\Inductor{\message{[Inductor]}\ShowXY
+ \@ifnextchar[{\@ResInd}{\@ResInd[1]{pscoil}}}
+
+\def\@ResInd[#1]#2#3{%
+ \ifcase\Cir@direction % right
+ \rput[l](\strip@pt\CurX,\strip@pt\CurY){\rnode{#3}{%
+ \csname #2\endcsname[coilarm=.01,coilwidth=.3](0,.15)(#1,.15)%
+ \MyBox{#1}{.3}%
+ }}%
+ \advance\CurX by #1\p@
+ \or % left
+ \advance\CurX by -#1\p@
+ \rput[l](\strip@pt\CurX,\strip@pt\CurY){\rnode{#3}{%
+ \csname #2\endcsname[coilarm=.01,coilwidth=.3](0,.15)(#1,.15)%
+ \MyBox{#1}{.3}%
+ }}%
+ \or % up
+ \rput[b](\strip@pt\CurX,\strip@pt\CurY){\rnode{#3}{%
+ \csname #2\endcsname[coilarm=.01,coilwidth=.3](.15,0)(.15,#1)%
+ \MyBox{.3}{#1}%
+ }}%
+ \advance\CurY by #1\p@
+ \or % down
+ \advance\CurY by -#1\p@
+ \rput[b](\strip@pt\CurX,\strip@pt\CurY){\rnode{#3}{%
+ \csname #2\endcsname[coilarm=.01,coilwidth=.3](.15,0)(.15,#1)%
+ \MyBox{.3}{#1}%
+ }}%
+ \fi
+}
+\makeatother
+
+\begin{pspicture}(5,5)
+\SetX{1}
+\Up{1}
+\Battery{A}
+\Up{1}
+\Right{2}
+\Resistor{B}
+\Right{1}
+\Down{.3}
+\Inductor{C}
+\Down{.5}
+\Left{1}
+\Switch{D}
+\ncangle[angleA=90,angleB=180,armB=0]{A}{B}
+\ncangle[angleA=0,angleB=90,armB=0]{B}{C}
+\ncput[ref=l]{~~~$i=i_{\mbox{max}}(1-w^{-t/3})$}
+\ncangle[angleA=-90,armB=0,angleB=0]{C}{D}
+\ncangle[angleA=180,armB=0,angleB=-90]{D}{A}
+\nput{180}{A}{10V}
+\nput{90}{B}{R}
+\nput{0}{C}{3mH}
+\nput{270}{D}{S}
+\end{pspicture}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-11.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-11.ltx
new file mode 100644
index 00000000000..de81d61aba9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-11.ltx
@@ -0,0 +1,83 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstcol,graphics,pst-eps,pst-plot}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstcol,graphics,pst-eps,pst-plot}
+\newcommand{\ProcessVector}[1]{%
+\PSTtoEPS{#1.eps}{\fileplot{#1.dat}}
+\rput(0,0){\includegraphics{#1.eps}}%
+}
+%limits: 43.617743 -12.420219 43.880484 -12.233311
+\psset{fillstyle=solid,plotstyle=polygon,linewidth=.4pt}
+\psset{unit=1mm}% range is 0.262741
+\definecolor{color100}{gray}{.7}
+\definecolor{color200}{gray}{.6}
+\definecolor{color300}{gray}{.5}
+\definecolor{color400}{gray}{.4}
+\definecolor{color500}{gray}{.3}
+\definecolor{color600}{gray}{.2}
+\definecolor{color700}{gray}{.1}
+\definecolor{colorCOAST}{gray}{.8}
+\framebox{%
+\begin{pspicture}(0,0)(100.0,71.1377364)
+\pspolygon[fillstyle=vlines,hatchwidth=.3pt,hatchsep=8pt,linecolor=gray](0,0)(0,71.1377364)
+(100.0,71.1377364)(100.0,0)
+%layer COAST
+\psset{fillcolor=colorCOAST}
+\ProcessVector{moh174}
+\ProcessVector{moh170}
+\ProcessVector{moh28}
+\ProcessVector{moh27}
+\ProcessVector{moh26}
+\ProcessVector{moh25}
+\ProcessVector{moh23}
+\ProcessVector{moh5}
+\ProcessVector{moh4}
+\ProcessVector{moh3}
+\ProcessVector{moh2}
+\ProcessVector{moh1}
+\psset{linestyle=none}
+%layer 100
+\psset{fillcolor=color100}
+\ProcessVector{moh29}
+\ProcessVector{moh11}
+\ProcessVector{moh10}
+\ProcessVector{moh9}
+\ProcessVector{moh8}
+\ProcessVector{moh7}
+\ProcessVector{moh6}
+%layer 200
+\psset{fillcolor=color200}
+\ProcessVector{moh30}
+\ProcessVector{moh21}
+\ProcessVector{moh20}
+\ProcessVector{moh19}
+\ProcessVector{moh18}
+\ProcessVector{moh17}
+%layer 300
+\psset{fillcolor=color300}
+\ProcessVector{moh31}
+\ProcessVector{moh16}
+%layer 400
+\psset{fillcolor=color400}
+\ProcessVector{moh32}
+\ProcessVector{moh22}
+%layer 500
+\psset{fillcolor=color500}
+\ProcessVector{moh33}
+%layer 600
+\psset{fillcolor=color600}
+\ProcessVector{moh34}
+%layer 700
+\psset{fillcolor=color700}
+\ProcessVector{moh15}
+\ProcessVector{moh14}
+\ProcessVector{moh13}
+\ProcessVector{moh12}
+\end{pspicture}
+}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-2.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-2.inl
new file mode 100644
index 00000000000..a5dd9305897
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-2.inl
@@ -0,0 +1,8 @@
+\usepackage {pstcol}
+\begin{pspicture}(0,0)(2,2)\showgrid
+\pscustom[fillstyle=solid,
+ fillcolor=gray]{%
+ \pscurve(0,.5)(1,1.5)(.9,1)
+ \pscurve[liftpen=0](2,.5)(1,.1)(0,.1)
+}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-3.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-3.inl
new file mode 100644
index 00000000000..a2fba923de8
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-3.inl
@@ -0,0 +1,8 @@
+\usepackage {pstcol}
+\begin{pspicture}(0,0)(2,2)\showgrid
+\pscustom[fillstyle=solid,
+ fillcolor=gray]{%
+ \pscurve(0,.5)(1,1.5)(.9,1)
+ \pscurve[liftpen=1](2,.5)(1,.1)(0,.1)
+}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-4.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-4.inl
new file mode 100644
index 00000000000..1971051f97d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-4.inl
@@ -0,0 +1,8 @@
+\usepackage {pstcol}
+\begin{pspicture}(0,0)(2,2)\showgrid
+\pscustom[fillstyle=solid,
+ fillcolor=gray]{%
+ \pscurve(0,.5)(1,1.5)(.9,1)
+ \pscurve[liftpen=2](2,.5)(1,.1)(0,.1)
+}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-5.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-5.ltx
new file mode 100644
index 00000000000..b4ede3f1ee5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-5.ltx
@@ -0,0 +1,46 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstcol,multido}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstcol,multido}
+\input random.tex
+\newdimen\X \newdimen\Y\newdimen\Coor
+% #1 is number of steps
+\newcommand{\RandomWalk}[1]{%
+\setrandim\X{0pt}{1pt}
+\setrandim\Y{0pt}{1pt}
+\psdots[dotstyle=*,dotsize=6pt]
+ (\pointless\X,\pointless\Y)
+\pscustom{%
+ \moveto(\pointless\X,\pointless\Y)
+ \multido{\i=1+1}{#1}{%
+ \MoveCoordinate{\X}
+ \MoveCoordinate{\Y}
+ \lineto(\pointless\X,\pointless\Y)}}}
+% Computation of new horizontal
+% or vertical position of point
+\newcommand{\MoveCoordinate}[1]{%
+ \setrandim\Coor{-0.03pt}{0.03pt}
+ \advance #1 by \Coor
+ \ifdim#1>1pt #1=1pt \fi
+ \ifdim#1<0pt #1=0pt \fi
+}
+\newcommand{\randomdemo}[2]{{%
+ \psframe[linewidth=0.6mm](1,1)
+ \rput(#1,#2){\RandomWalk{300}}
+ \psset{linecolor=red}
+ \rput(#1,#2){\RandomWalk{200}}
+ \psset{linecolor=green}
+ \rput(#1,#2){\RandomWalk{100}}
+}}
+\psset{unit=5,dimen=middle}
+\framebox{\begin{pspicture}(1,3)
+ \randomdemo{0}{0}
+ \randomdemo{0}{1}
+ \randomdemo{0}{2}
+\end{pspicture}}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-6.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-6.inl
new file mode 100644
index 00000000000..48b744b8169
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-6.inl
@@ -0,0 +1,11 @@
+\usepackage {pstcol}
+\begin{pspicture}(0,0)(2,1)\showgrid
+\pscustom{%
+ \pscurve(0,.6)(1,.9)(2,.6)
+ \gsave
+ \pscurve[liftpen=1](2,.4)(1,.1)(0,.4)
+ \fill[fillstyle=solid,fillcolor=lightgray]
+ \grestore
+}
+ \pscurve[liftpen=2](2,.4)(1,.1)(0,.4)
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-7.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-7.ltx
new file mode 100644
index 00000000000..cacc0ae9788
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-7.ltx
@@ -0,0 +1,20 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstcol,pstpoly}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstcol,pstpoly}
+\PstRegularPolygon
+\PstRegularPolygon[RPolyNbSides=11]
+\PstRegularPolygon[RPolyOffset=2]
+\PstRegularPolygon[linecolor=red,RPolyIntermediatePoint=0.2]
+\PstRegularPolygon[linestyle=dashed,RPolyCurves,RPolyOffset=2,
+ RPolyIntermediatePoint=0.75]
+
+\PstRegularPolygon[unit=2,RPolyNbSides=9,RPolyOffset=2]
+\PstRegularPolygon[unit=2,RPolyNbSides=27,RPolyOffset=7,RPolyCurves,
+ RPolyIntermediatePoint=0.1]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-8.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-8.inl
new file mode 100644
index 00000000000..0bf5fa939e3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-8.inl
@@ -0,0 +1,28 @@
+\usepackage {pstcol,multido,pst-node}
+\definecolor{lightblue}{rgb}{.68, .85, .9}
+\psset{unit=.825cm}\begin{pspicture}(10,8)
+\psset{fillstyle=solid,linestyle=none,linewidth=0}
+\psframe[fillcolor=lightblue](10,8)
+\pscircle[fillcolor=yellow](2,6){.8} % Sun
+{% Rays
+ \psset{linecolor=yellow,linestyle=solid,linewidth=.3}
+ \degrees[8]
+ \multido{\i=1+1}{8}{\rput{\i}(2,6){\psline(1,0)(1.5,0)}}
+}%
+\pspolygon[fillcolor=green](6,0)(10,2)(10,0)% Grass
+\psdiamond[fillcolor=red,gangle=-45](8,6)(1.5,2.5)% Kite
+\rput{45}(8,6){\pnode(-2.5,0){Kitetail}}
+\rput{-10}(.8,1.5){\psdiamond[fillcolor=yellow](.6,.1)(.6,.3)}
+\rput{-80}(.8,1.5){\psdiamond[fillcolor=yellow](.6,.1)(.6,.3)}
+\pnode(.8,1.5){Tailend}
+\nccurve[fillstyle=none,angleA=270,angleB=125,ncurvB=.9,ncurvA=1.4,
+ linestyle=dotted,dotstyle=square,linewidth=.25]{Kitetail}{Tailend}
+\newcommand{\bunting}{\pstriangle(.35,.35)}
+\psset{fillcolor=red,labelsep=.01}
+\naput[nrot=115,npos=.15]{\bunting}
+\nbput[nrot=25,npos=.15]{\bunting}
+\naput[nrot=75,npos=.4]{\bunting}
+\nbput[nrot=115,npos=.4]{\bunting}
+\naput[nrot=115,npos=.7]{\bunting}
+\nbput[nrot=25,npos=.7]{\bunting}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-9.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-9.inl
new file mode 100644
index 00000000000..c7fd9fc2ede
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-10-9.inl
@@ -0,0 +1,80 @@
+\usepackage {pstcol}
+\DeclareFixedFont{\curly}{T1}{pzc}{m}{it}{30}
+\definecolor{wheat}{rgb}{.96, .87, .7}
+\definecolor{brown}{rgb}{.65, .16, .16}
+\definecolor{lightblue}{rgb}{.68, .85, .9}
+%
+% The cat is designed to appear on a 10 x 10 grid
+% cat head
+\newcommand{\Cathead}{%
+ \pscircle[fillcolor=black](5,4.2){2.5}%
+% ears
+ {%
+ \psset{linecolor=black,fillcolor=pink,linewidth=.05,linestyle=solid}
+ \rput{45}(5,4.2){\pspolygon(2.5,.5)(2.5,-.5)(3.5,0)}
+ \rput{135}(5,4.2){\pspolygon(2.5,.5)(2.5,-.5)(3.5,0)}
+ }%
+}
+% eyes, nose and whiskers
+\newcommand{\Catface}{%
+ \pscircle[fillcolor=yellow](4,5.2){.5}
+ \psdiamond[fillcolor=gray](4,5.2)(.2,.5)
+ \pscircle[fillcolor=yellow](6,5.2){.5}
+ \psdiamond[fillcolor=gray](6,5.2)(.2,.5)
+% nose
+ \rput{180}(5,4.6){\pstriangle[fillcolor=pink](.5,.5)}
+ % whiskers
+ {%
+ \psset{linecolor=white,linestyle=solid,linewidth=.1}
+ \rput{5}(5,4.2){\psline(.8,0)(1.8,0)}
+ \rput{15}(5,4.2){\psline(.8,0)(1.8,0)}
+ \rput{165}(5,4.2){\psline(.8,0)(1.8,0)}
+ \rput{175}(5,4.2){\psline(.8,0)(1.8,0)}
+ }%
+}
+% paws with claws
+\newcommand{\Catpaws}{%
+ \pscircle[fillcolor=black](1,4.2){.8}
+ \pscircle[fillcolor=black](9,4.2){.8}
+ {%
+ \psset{fillcolor=yellow}
+ \newcommand{\clawsize}{.4,.4}
+ \rput{180}(1,4.4){\pstriangle(\clawsize)}
+ \rput{180}(1,4.4){\pstriangle(-.45,0)(\clawsize)}
+ \rput{180}(1,4.4){\pstriangle(.45,0)(\clawsize)}
+ \rput{180}(9,4.4){\pstriangle(\clawsize)}
+ \rput{180}(9,4.4){\pstriangle(-.45,0)(\clawsize)}
+ \rput{180}(9,4.4){\pstriangle(.45,0)(\clawsize)}
+ }%
+}
+% wall
+\newcommand{\Wall}{%
+ \psframe[fillcolor=brown](0,0)(10,4)
+}
+% The whole cat on its wall
+\newcommand{\Cat}[1]{%
+ {\psset{unit=#1}
+ \Cathead\Catface\Catpaws\Wall}%
+}
+% bricks
+\newcommand{\Bricks}{%
+ \bfseries\large
+ \psset{fillcolor=wheat}
+ \psframe(1,.4)(2.5,1.9)
+ \rput[bl](1.1,1){\LaTeX}
+ \psframe(5,.4)(6.3,1.9)
+ \psframe(7,.4)(8.5,1.9)
+ \psframe(2,2.2)(3.2,3.7)
+ \rput[bl]{90}(2.6,2.4){\normalsize$e=mc^2$}
+ \psframe(5.3,2.2)(8,3.7)
+ \rput[bl](5.4,2.8){\textsc{PostScript}}
+}
+\begin{pspicture}(10,8)
+ \psset{fillstyle=solid,linestyle=none,linewidth=0}
+ \psframe[fillcolor=lightblue](10,8)
+ \Cat{1}
+ \rput[bl]{5}(1,1){\curly\color{white}Don Knuth Rules OK}
+ \Bricks
+ \rput(7,1){\Cat{.1}}
+ \rput(.1,2){\Cat{.15}}
+ \end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-2-1.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-2-1.inl
new file mode 100644
index 00000000000..bfbc44c71e5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-2-1.inl
@@ -0,0 +1,5 @@
+\usepackage {pstcol}
+\begin{pspicture}(0,0)(2,2)\showgrid
+\psline[linewidth=1pt,linecolor=gray]
+ {<->}(0.5,0)(0,1)(1,1.5)(1.5,1)(.5,.5)
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-2-2.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-2-2.inl
new file mode 100644
index 00000000000..8d4f6b6e1da
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-2-2.inl
@@ -0,0 +1,4 @@
+\usepackage {pstcol}
+\begin{pspicture}(0,0)(1,1)\showgrid
+\psline(0,0)(1,1)
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-2-3.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-2-3.inl
new file mode 100644
index 00000000000..52199ab094f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-2-3.inl
@@ -0,0 +1,5 @@
+\usepackage {pstcol}
+\begin{pspicture}(0,0)(1,2)\showgrid
+\psset{xunit=.5cm,yunit=2cm}
+\psline(0,0)(1,1)
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-2-4.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-2-4.inl
new file mode 100644
index 00000000000..fcc5abf5304
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-2-4.inl
@@ -0,0 +1,6 @@
+\usepackage {pstcol}
+\resizebox{.5cm}{2cm}{%
+\begin{pspicture}(1,1)
+ \psline(0,0)(1,1)
+\end{pspicture}
+}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-2-5.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-2-5.inl
new file mode 100644
index 00000000000..28ea95079ef
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-2-5.inl
@@ -0,0 +1,13 @@
+\usepackage {pstcol}
+\psset{unit=.5cm}
+\begin{pspicture}(10,10)
+\psset{subgriddiv=0,linewidth=.8}
+\psgrid
+\psset{dimen=inner}
+\psframe
+ (1,1)(4,4)
+\psframe[dimen=middle,linecolor=red]
+ (6,6)(9,9)
+\psframe[dimen=outer,linecolor=yellow]
+ (0,6)(4,9)
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-3-1.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-3-1.inl
new file mode 100644
index 00000000000..c24918ccdc1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-3-1.inl
@@ -0,0 +1,6 @@
+\usepackage {pstcol}
+\begin{pspicture}(-1,0)(2,2)
+ \psclip{\psdiamond(1.5,0.2)(2.0,0.5)}
+ \Huge Scary Monsters
+ \endpsclip
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-3-2.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-3-2.inl
new file mode 100644
index 00000000000..9d099c7c3af
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-3-2.inl
@@ -0,0 +1,6 @@
+\usepackage {pstcol}
+\begin{pspicture}(0,0)(2.2,2)\showgrid
+\rput(.1,.1){\psline(0,0)(1.3,1.3)}
+\psset{linestyle=dashed}
+\rput{-20}(1.2,.4){\psline(0,0)(1,0)}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-1.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-1.inl
new file mode 100644
index 00000000000..cdb689d1874
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-1.inl
@@ -0,0 +1,4 @@
+\usepackage {pstcol}
+\begin{pspicture}(0,0)(2,1)\showgrid
+ \psline(2,1)
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-10.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-10.inl
new file mode 100644
index 00000000000..44b3dc0d482
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-10.inl
@@ -0,0 +1,8 @@
+\usepackage {pstcol}
+\begin{pspicture}(0,0)(3,2)\showgrid
+ \psdots[linecolor=blue,dotstyle=triangle,
+ dotscale=2](0,0.5)(1,2)(2.8,1.5)
+ \pscurve[linecolor=cyan,showpoints=true]
+ {->}%
+ (0,1.2)(1.3,1.8)(3,0.4)(0.5,0.2)
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-11.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-11.inl
new file mode 100644
index 00000000000..1a027034dce
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-11.inl
@@ -0,0 +1,6 @@
+\usepackage {pstcol}
+\begin{pspicture}(0,0)(3,2)\showgrid
+ \parabola[linecolor=red]{<->}%
+ (0.3,0.3)(1.5,1.5)
+ \psarc(2,1.5){1}{180}{320}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-12.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-12.inl
new file mode 100644
index 00000000000..7b5b32e69d2
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-12.inl
@@ -0,0 +1,6 @@
+\usepackage {pstcol}
+\begin{pspicture}(0,0)(4,2)\showgrid
+ \psbezier[linewidth=0.8mm,linecolor=red,
+ showpoints=true]{|->}%
+ (1,0)(4,1)(2,2)(0,0)
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-2.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-2.inl
new file mode 100644
index 00000000000..2819457e97e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-2.inl
@@ -0,0 +1,5 @@
+\usepackage {pstcol}
+\begin{pspicture}(0,0)(2,1)\showgrid
+ \psline[linewidth=0.6mm,doubleline=true,
+ doublesep=0.5mm]{->}(2,1)
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-3.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-3.inl
new file mode 100644
index 00000000000..967926d063d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-3.inl
@@ -0,0 +1,4 @@
+\usepackage {pstcol}
+\begin{pspicture}(0,0)(2,1)\showgrid
+ \psline[linestyle=dashed](2,1)
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-4.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-4.inl
new file mode 100644
index 00000000000..2414cdce960
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-4.inl
@@ -0,0 +1,8 @@
+\usepackage {pstcol}
+\begin{pspicture}(0,0)(4,2)\showgrid
+ \psline[linearc=0.25,showpoints=true]%
+ {->}(1,0)(4,0.3)(2,2)(0,0.5)
+ \psline[linestyle=dashed,
+ linecolor=blue,
+ arrowlength=3]{<->}(0,1)(3,0)(4,2)
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-5.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-5.inl
new file mode 100644
index 00000000000..58086ece067
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-5.inl
@@ -0,0 +1,10 @@
+\usepackage {pstcol}
+\definecolor{pink}{rgb}{1, .75, .8}
+\begin{pspicture}(0,0)(4.5,2)\showgrid
+ \psframe[linestyle=dashed]
+ (0.5,0.5)(3,1.5)
+ \psframe[fillstyle=solid,fillcolor=pink]
+ (.5,0)(4.5,1)
+ \psframe[fillstyle=solid,fillcolor=white,
+ framearc=0.5](3,0.2)(3.8,0.8)
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-6.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-6.inl
new file mode 100644
index 00000000000..e0c61cb885d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-6.inl
@@ -0,0 +1,6 @@
+\usepackage {pstcol}
+\begin{pspicture}(0,0)(4,2)\showgrid
+ \psdiamond(1.5,1.5)(1.5,0.5)
+ \pstriangle[fillstyle=solid,
+ fillcolor=yellow](2,0)(3,1)
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-7.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-7.inl
new file mode 100644
index 00000000000..563cca252c3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-7.inl
@@ -0,0 +1,10 @@
+\usepackage {pstcol}
+\definecolor{lightblue}{rgb}{.68, .85, .9}
+\begin{pspicture}(0,0)(3,2)\showgrid
+ \pscircle[linewidth=1mm,linecolor=green]
+ (1,1){1}
+ \pscircle[linestyle=none,fillstyle=solid,
+ fillcolor=lightblue](1,1){0.5}
+ \pscircle[fillstyle=crosshatch](2.5,1.5)
+ {0.5}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-8.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-8.inl
new file mode 100644
index 00000000000..8f96f4b8eb8
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-8.inl
@@ -0,0 +1,9 @@
+\usepackage {pstcol,pst-grad}
+\begin{pspicture}(0,0)(3,2)\showgrid
+ \psframe[framearc=0.25,
+ fillstyle=gradient,
+ gradangle=30,
+ gradbegin=yellow,
+ gradend=red]
+ (0.5,0.5)(2.5,1.5)
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-9.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-9.inl
new file mode 100644
index 00000000000..cbbfd3745ff
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-4-9.inl
@@ -0,0 +1,10 @@
+\usepackage {pstcol}
+\begin{pspicture}(0,0)(4,2)\showgrid
+ \psellipse[linecolor=green,
+ fillstyle=vlines,
+ hatchangle=0]
+ (1,1)(1,0.5)
+ \pswedge[fillstyle=solid,
+ fillcolor=lightgray]
+ (2.5,1){1}{0}{120}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-1.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-1.inl
new file mode 100644
index 00000000000..3070cf31572
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-1.inl
@@ -0,0 +1,2 @@
+\usepackage {pstricks}
+\psframebox{The Buck Stops Here}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-10.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-10.inl
new file mode 100644
index 00000000000..6200e00ca47
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-10.inl
@@ -0,0 +1,11 @@
+\usepackage {pstcol,pst-text}
+\begin{pspicture}(-4,-3.2)(3,0.2)
+ \psset{linecolor=lightgray}
+ \pstextpath
+ {\pscurve(-4,-2)(-2,0)(0,-3)(2,-1)(3,-2)}
+ {\color{blue}
+ If you want to type
+ $3 \int^x_y = \sum^{n=1}_{33}$
+ and let it follow along a
+ curving line \ldots}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-11.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-11.inl
new file mode 100644
index 00000000000..f4a2d469ece
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-11.inl
@@ -0,0 +1,12 @@
+\usepackage {pstricks}
+\begin{pspicture}(0,0)(4.2,6.2)
+\pstextpath[l]
+ {\pscurve(0,0)(2,2)(4,0)}
+ {Left justified}
+\pstextpath[c]
+ {\pscurve(0,2)(2,4)(4,2)}
+ {Centred text}
+\pstextpath[r]
+ {\pscurve(0,4)(2,6)(4,4)}
+ {Right justified}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-12.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-12.inl
new file mode 100644
index 00000000000..85cfa953abe
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-12.inl
@@ -0,0 +1,16 @@
+\usepackage {pstcol}
+\definecolor{pink}{rgb}{1, .75, .8}
+\begin{pspicture}(-3,-2.2)(3,2.2)
+\psset{linestyle=none}
+\newcommand{\curly}[1]{{\fontfamily{pzc}%
+ \fontsize{17}{17}\itshape#1}}
+\pstextpath[c]{\psarcn(0,0){2}{180}{0}}
+ {\curly{The Unseen University}}
+\pstextpath[c]{\psarc(0,0){2}{180}{0}}
+ {\curly{Ankh-Morpork,Discworld}}
+\pscircle[fillstyle=gradient,
+ gradangle=45,gradbegin=pink,
+ gradend=yellow](0,0){1.7}
+\rput[B](0,0){{\Large\itshape\bfseries
+ Rincewind, Arch Chancellor}}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-13.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-13.ltx
new file mode 100644
index 00000000000..86ed428d392
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-13.ltx
@@ -0,0 +1,50 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstricks,pst-text}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstricks,pst-text}
+ \begin{pspicture}(9,12)
+ \small
+ \psset{linestyle=none}
+ \pstextpath[r]{\pscurve(1.5,8)(3,9)(4.45,6.5)}
+ {Tous les souvenirs de nagu^^e8re}
+ \pstextpath[r]{\pscurve(1,7)(2,7.5)(4.45,6)}
+ {O mes amis partis en guerre}
+ \pstextpath[r]{\pscurve(1,6)(2,6.7)(4.45,5.2)}
+ {Jaillissent vers le firmament}
+ \pstextpath[r]{\pscurve(0.8,5)(2,5.8)(4.45,4.4)}
+ {Et vos regards en l'eau dormant}
+ \pstextpath[r]{\pscurve(1,4.3)(2,5)(4.45,3.8)}
+ {Meurent m^^e9lancoliquement}
+ \pstextpath[r]{\pscurve(0.3,3.2)(2,4.3)(4.45,3.3)}
+ {O^^f9 sont-ils Braque et Max Jacob}
+ \pstextpath[r]{\pscurve(0.2,2.7)(2,3.5)(3.8,3.2)(4.45,2.8)}
+ {Derain aux yeux gris comme l'aube}
+ \rput(4.5,7.3){\bfseries\Huge ?}
+ \pstextpath[l]{\pscurve(4.55,6.5)(6.5,8.7)(7.8,8)}
+ {O^^f9 sont Raynal Billy Dalize}
+ \pstextpath[l]{\pscurve(4.55,5.8)(6.5,7.5)(8.3,6.4)}
+ {Dont les noms se m^^e9lancolisent}
+ \pstextpath[l]{\pscurve(4.55,5.2)(6.5,6.6)(7.6,6.4)(8.2,5.2)(8.5,5.4)}
+ {Comme des pas dans une ^^e9glise}
+ \pstextpath[l]{\pscurve(4.55,4.5)(6.5,5.8)(8.5,4.7)}
+ {O^^f9 est Cremnitz qui s'engagea}
+ \pstextpath[l]{\pscurve(4.55,3.8)(6.5,4.7)(8.5,4)}
+ {Peut-^^eatre sont-ils morts d^^e9j^^e0}
+ \pstextpath[l]{\pscurve(4.55,3.2)(6.5,4.2)(9,2.8)}
+ {De souvenirs mon ^^e2me est pleine}
+ \pstextpath[l]{\pscurve(4.55,2.4)(5,3)(6.5,3.5)(8.8,2.3)}
+ {Le jet d'eau pleure sur ma peine}
+ \pstextpath[c]{\pscurve(-0.1,1.4)(4.5,2.2)(9,1.4)}
+{{\footnotesize\scshape Ceux qui sont partis ^^e0 la guerre au nord se battent
+ maintenant}}
+ \pstextpath[c]{\pscurve(2.1,1.2)(4.5,0.8)(6.9,1.3)}
+ {Le soir tombe {\bfseries\Huge O} sanglante mer}
+ \pstextpath[c]{\pscurve(0,1)(4.5,0)(9,1)}
+ {Jardins o^^f9 saigne abondamment le laurier rose fleur guerri^^e8re}
+ \end{pspicture}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-14.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-14.ltx
new file mode 100644
index 00000000000..825f15ef099
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-14.ltx
@@ -0,0 +1,17 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstcol,pst-char}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstcol,pst-char}
+\definecolor{lightblue}{rgb}{.68, .85, .9}
+\begin{pspicture}(0,-1)(8.7,2.5)
+\fontfamily{ptm}\selectfont
+\pscharpath[fillstyle=solid,linecolor=red,
+ fillcolor=lightblue,linewidth=2pt]
+{\fontsize{1.5in}{1.5in}\selectfont \LaTeX}
+\end{pspicture}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-15.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-15.ltx
new file mode 100644
index 00000000000..4401b4b4343
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-15.ltx
@@ -0,0 +1,22 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstcol,pst-char}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstcol,pst-char}
+\begin{pspicture}(-5,-3)(5,1.2)
+ \psset{fillstyle=solid,shadow=true,shadowangle=0}
+ \DeclareFixedFont{\babyfont}{T1}{zmn}{m}{n}{3cm}
+ \DeclareFixedFont{\wordfont}{T1}{zmn}{m}{n}{2cm}
+ \newcommand{\Cc}[2]{\pscharpath[fillcolor=#1]{#2}}
+ \bfseries
+ \rput(0,0){\babyfont
+ \Cc{red}B\Cc{green}A\Cc{yellow}B%
+ \Cc{red}{Y'}\Cc{blue}S}
+ \rput(0,-2){{\wordfont
+ \Cc{blue}{WORLD}}}
+\end{pspicture}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-16.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-16.ltx
new file mode 100644
index 00000000000..89874c185bb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-16.ltx
@@ -0,0 +1,30 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstcol,pst-char,ifthen}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstcol,pst-char,ifthen}
+\DeclareFixedFont{\bigsf}{T1}{phv}{b}{n}{1.75cm}
+\DeclareFixedFont{\tinyrm}{T1}{ptm}{m}{n}{2mm}
+\newcounter{myN}
+\setcounter{myN}{300}
+\begin{pspicture}(0,0)(11,1.4)
+\pscharclip[linecolor=red,fillstyle=solid,
+ fillcolor=yellow]
+ {\rput[bl](0,0){\bigsf CHOCOLATE}}
+\rput[t]{90}(0,0)
+ {\begin{minipage}{4cm}
+ \offinterlineskip
+ \raggedright\tinyrm\color{black}%
+ \whiledo{\value{myN}>0}%
+ {%
+ \addtocounter{myN}{-1}
+ nuts and raisins
+ }%
+ \end{minipage}}%
+\endpscharclip
+\end{pspicture}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-2.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-2.inl
new file mode 100644
index 00000000000..0340a396490
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-2.inl
@@ -0,0 +1,5 @@
+\usepackage {pstricks}
+ \psframebox[fillstyle=solid,
+ fillcolor=black]
+ {\bfseries\color{white}%
+ \LARGE Beware of The Dog}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-3.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-3.ltx
new file mode 100644
index 00000000000..391f82d7a30
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-3.ltx
@@ -0,0 +1,16 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstcol}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstcol}
+ \psframebox{The dragon}
+ \psframebox{\psframebox[linecolor=green]{ate}
+ \psframebox[linecolor=blue]
+ {\psframebox[linecolor=red]{the women} and
+ \psframebox[linecolor=red]{children}%
+ }}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-4.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-4.inl
new file mode 100644
index 00000000000..ba571b2a04d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-4.inl
@@ -0,0 +1,7 @@
+\usepackage {pstcol}
+ \psshadowbox[fillstyle=solid,
+ fillcolor=yellow]
+ {\color{red}
+ \begin{tabular}{c}
+ Chapter 1\\We go to sea
+ \end{tabular}}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-5.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-5.inl
new file mode 100644
index 00000000000..36be410579b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-5.inl
@@ -0,0 +1,3 @@
+\usepackage {pstricks}
+ \pscirclebox[doubleline=true]
+ {\bfseries STOP!}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-6.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-6.inl
new file mode 100644
index 00000000000..aadc4495173
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-6.inl
@@ -0,0 +1,5 @@
+\usepackage {pstcol}
+ \psdblframebox[linecolor=green,
+ linestyle=dotted,linewidth=3pt,
+ dotstyle=*]
+ {\color{red}All Hail Caesar!}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-7.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-7.inl
new file mode 100644
index 00000000000..4589d036a92
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-7.inl
@@ -0,0 +1,2 @@
+\usepackage {pstricks}
+ \psdiabox{\sffamily No Parking}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-8.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-8.inl
new file mode 100644
index 00000000000..bc3d05b8ca7
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-8.inl
@@ -0,0 +1,5 @@
+\usepackage {pstcol,pst-grad}
+ \pstribox[shadow=true,fillstyle=gradient,
+ gradbegin=green,gradend=red]
+ {\color{white}\Huge
+ $\frac{\alpha}{\Omega}$}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-9.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-9.inl
new file mode 100644
index 00000000000..4ae89bccea8
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-5-9.inl
@@ -0,0 +1,3 @@
+\usepackage {pstcol,pst-grad}
+ \psovalbox[linecolor=red]
+ {\color{blue}Today's Menu}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-1.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-1.inl
new file mode 100644
index 00000000000..2a47a101c28
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-1.inl
@@ -0,0 +1,9 @@
+\usepackage {pstricks}
+\begin{pspicture}(0,0)(5,5)\showgrid
+\rput(1,1){\rnode{A}{Dog}}
+\rput(2,4){\rnode{B}{Cat}}
+\rput(4,2){Mouse}
+\ncline{A}{B}
+\nccurve[linestyle=dotted]{A}{B}
+\ncarc[linestyle=dashed]{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-10.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-10.inl
new file mode 100644
index 00000000000..36a2d0fd29f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-10.inl
@@ -0,0 +1,6 @@
+\usepackage {pstricks}
+\begin{pspicture}(-.2,-.5)(3,1)\showgrid
+\rput(.5,.5){\trinode{A}{Cat}}
+\rput(2.5,.5){\trinode{B}{Dog}}
+\ncline{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-11.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-11.inl
new file mode 100644
index 00000000000..e8a4bb4cf91
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-11.inl
@@ -0,0 +1,6 @@
+\usepackage {pstricks}
+\begin{pspicture}(-.2,-.5)(3,1)\showgrid
+\dotnode(.5,.5){A}
+\dotnode(2.5,.5){B}
+\ncline{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-12.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-12.inl
new file mode 100644
index 00000000000..5d056ee36df
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-12.inl
@@ -0,0 +1,6 @@
+\usepackage {pstricks}
+\begin{pspicture}(-.2,-.5)(3,1)\showgrid
+\fnode(.5,.5){A}
+\fnode(2.5,.5){B}
+\ncline{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-13.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-13.inl
new file mode 100644
index 00000000000..214f2520287
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-13.inl
@@ -0,0 +1,6 @@
+\usepackage {pstricks}
+\begin{pspicture}(-.2,-.5)(3,1)\showgrid
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,.5){\rnode{B}{\psframebox{Dog}}}
+\ncline{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-14.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-14.inl
new file mode 100644
index 00000000000..ac71f177660
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-14.inl
@@ -0,0 +1,6 @@
+\usepackage {pstricks}
+\begin{pspicture}(-.2,-.5)(3,2)\showgrid
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\nccurve[angleB=180]{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-15.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-15.inl
new file mode 100644
index 00000000000..1cfbc6f9102
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-15.inl
@@ -0,0 +1,6 @@
+\usepackage {pstricks}
+\begin{pspicture}(-.2,-.5)(3,2)\showgrid
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\nccurve{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-16.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-16.inl
new file mode 100644
index 00000000000..fa639ab7c6b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-16.inl
@@ -0,0 +1,7 @@
+\usepackage {pstricks}
+\begin{pspicture}(-.2,-.5)(3,1)\showgrid
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,.5){\rnode{B}{\psframebox{Dog}}}
+\ncarc{->}{A}{B}
+\ncarc{->}{B}{A}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-17.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-17.inl
new file mode 100644
index 00000000000..68a77cbda40
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-17.inl
@@ -0,0 +1,6 @@
+\usepackage {pstricks}
+\begin{pspicture}(-.2,-.5)(3,2)\showgrid
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncbar{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-18.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-18.inl
new file mode 100644
index 00000000000..cc2e706443c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-18.inl
@@ -0,0 +1,6 @@
+\usepackage {pstricks}
+\begin{pspicture}(-.2,-.5)(3,2)\showgrid
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncdiag[angleB=180]{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-19.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-19.inl
new file mode 100644
index 00000000000..95ed6700016
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-19.inl
@@ -0,0 +1,6 @@
+\usepackage {pstricks}
+\begin{pspicture}(-.2,-.5)(3,2)\showgrid
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncdiagg[angleB=180]{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-2.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-2.inl
new file mode 100644
index 00000000000..0af528aaf5c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-2.inl
@@ -0,0 +1,6 @@
+\usepackage {pstricks}
+\begin{pspicture}(-.2,-.5)(3,1)\showgrid
+\rput(.5,.5){\rnode{A}{Cat}}
+\rput(2.5,.5){\rnode{B}{Dog}}
+\ncline{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-20.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-20.inl
new file mode 100644
index 00000000000..a5e26782d77
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-20.inl
@@ -0,0 +1,6 @@
+\usepackage {pstricks}
+\begin{pspicture}(-.2,-.5)(3,2)\showgrid
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncangle[angleB=180]{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-21.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-21.inl
new file mode 100644
index 00000000000..1432e9adc03
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-21.inl
@@ -0,0 +1,6 @@
+\usepackage {pstricks}
+\begin{pspicture}(-.2,-.5)(3,2)\showgrid
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncangles[angleB=180]{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-22.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-22.inl
new file mode 100644
index 00000000000..16b10fc1821
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-22.inl
@@ -0,0 +1,6 @@
+\usepackage {pstricks}
+\begin{pspicture}(-.2,-.5)(3,2)\showgrid
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncloop[loopsize=.25,angleB=180]{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-23.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-23.inl
new file mode 100644
index 00000000000..6c7dfab192d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-23.inl
@@ -0,0 +1,5 @@
+\usepackage {pstricks}
+\begin{pspicture}(-.2,-.5)(3,2)\showgrid
+\rput(1,.5){\rnode{A}{\psframebox{Cat}}}
+\nccircle{->}{A}{.5}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-24.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-24.inl
new file mode 100644
index 00000000000..4179cf6c66d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-24.inl
@@ -0,0 +1,7 @@
+\usepackage {pstcol,pst-node,pst-coil}
+\begin{pspicture}(-.2,-.5)(3.5,5)\showgrid
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(3,4.5){\rnode{B}{\psframebox{Dog}}}
+\psset{coilarm=.01,coilwidth=.3}
+\nccoil{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-25.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-25.inl
new file mode 100644
index 00000000000..9bb7a0c0648
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-25.inl
@@ -0,0 +1,7 @@
+\usepackage {pstcol,pst-node,pst-coil}
+\begin{pspicture}(-.2,-.5)(3.5,5)\showgrid
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(3,4.5){\rnode{B}{\psframebox{Dog}}}
+\psset{coilarm=.01,coilwidth=.3}
+\nczigzag{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-26.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-26.ltx
new file mode 100644
index 00000000000..96e648f5bca
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-26.ltx
@@ -0,0 +1,35 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstcol,pst-node,multido}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstcol,pst-node,multido}
+\newcounter{CtA} \newcounter{CtB}
+\newcommand{\Wheel}[3]{{%
+\color{black} \psset{unit=#2}
+\pspicture(-1,-1.2)(1,1.2)
+\SpecialCoor \degrees[#1]
+\multido{\ia=1+1}{#1}{%
+ \setcounter{CtA}{\ia}%
+ \stepcounter{CtA}%
+ \setcounter{CtB}{#1}%
+ \addtocounter{CtB}{-\ia}%
+ \multido{\ib=\value{CtA}+1}
+ {\value{CtB}}{#3(1;\ia)(1;\ib)}}
+\multido{\i=1+1}{#1}{%
+ \rput(1;\i){%
+ \pscirclebox[fillstyle=solid,
+ fillcolor=white]%
+ {\footnotesize\i}}}
+\endpspicture}}% end of newcommand
+{\color{white}
+\fbox{\Wheel{3}{1.2}{\psline}
+\Wheel{5}{1.2}{\psline}}
+
+\psset{arcangle=10}
+\fbox{\Wheel{12}{3}{\pcarc[linecolor=blue]}}
+}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-27.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-27.inl
new file mode 100644
index 00000000000..d7f7c1ba49b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-27.inl
@@ -0,0 +1,14 @@
+\usepackage {pstricks,pst-node}
+\begin{pspicture}(0,0)(2.5,5)
+\begin{psmatrix}[rowsep=1.5cm]
+ & City &\\
+ {\tiny Shack} & House & {\Large Hotel}
+ \psset{arrows=<<-}
+ \ncline{1,2}{2,1}<{a}
+ \ncline{1,2}{2,2}>{b}
+ \ncline{1,2}{2,3}>{b}
+ \psset{arrows=-,linestyle=dotted}
+ \ncline{2,1}{2,2}
+ \ncline{2,2}{2,3}
+\end{psmatrix}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-28.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-28.inl
new file mode 100644
index 00000000000..a6b6cbe8d11
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-28.inl
@@ -0,0 +1,9 @@
+\usepackage {pstricks,pst-node}
+\begin{psmatrix}
+ A & B \\
+ $\sqrt{\frac{x + y}{z}}$ & D
+ \ncline{1,1}{1,2}
+ \ncline{1,2}{2,2}
+ \ncline{2,2}{2,1}
+ \ncline{2,1}{1,1}
+\end{psmatrix}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-29.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-29.inl
new file mode 100644
index 00000000000..733e1725436
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-29.inl
@@ -0,0 +1,11 @@
+\usepackage {pstcol,pst-node}
+\psset{arrows=->,labelsep=3pt,
+linecolor=gray,mnode=circle}
+\begin{psmatrix}[rowsep=20pt,colsep=28pt]
+ A & B \\ $\sqrt{\frac{x + y}{z}}$ & D
+ \psset{linestyle=dotted}
+ \ncline{1,1}{1,2}^{\emph{firstly}}
+ \ncline{1,2}{2,2}>{\emph{next}}
+ \ncline{2,2}{2,1}_{\emph{then}}
+ \ncline{2,1}{1,1}<{\emph{lastly}}
+\end{psmatrix}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-3.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-3.inl
new file mode 100644
index 00000000000..aea774cdb6f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-3.inl
@@ -0,0 +1,6 @@
+\usepackage {pstricks}
+\begin{pspicture}(-.2,-.5)(3,1)\showgrid
+\rput(.5,.5){\Rnode{A}{Cat}}
+\rput(2.5,.5){\Rnode{B}{Dog}}
+\ncline{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-30.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-30.inl
new file mode 100644
index 00000000000..ad5a69aa0da
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-30.inl
@@ -0,0 +1,14 @@
+\usepackage {pstcol,pst-node}
+\psset{arrows=->,labelsep=3pt,
+linecolor=gray,mnode=circle}
+\begin{psmatrix}[rowsep=20pt,colsep=28pt]
+A & B \\
+ $\sqrt{\frac{x + y}{z}}$ & D
+ \psset{linestyle=dotted}
+ \ncline{1,1}{1,2}\naput{\emph{firstly}}
+ \ncline{1,2}{2,2}\naput{\emph{next}}
+ \ncline{2,2}{2,1}\naput{\emph{then}}
+ \ncline{2,1}{1,1}\naput{\emph{lastly}}
+ \nccurve[ncurv=2,
+ linestyle=solid,angleA=90]{1,1}{2,2}
+\end{psmatrix}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-31.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-31.ltx
new file mode 100644
index 00000000000..8bbbbf8f3a0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-31.ltx
@@ -0,0 +1,19 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstricks,pst-node}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstricks,pst-node}
+\psset{framearc=.4}
+\begin{psmatrix}[colsep=3]
+ \pnode{A}&\psframebox{Waiting} & \psframebox{Calculating}
+ \ncline[arrows=->]{1,1}{1,2}
+ \psset{offset=-.1}
+ \ncline[arrows=->]{1,2}{1,3}\naput{{\scriptsize TRIGGER/activated}}
+ \psset{offset=.1}
+ \ncline[arrows=<-]{1,2}{1,3}\nbput{{\scriptsize [4,11]/finished}}
+\end{psmatrix}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-32.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-32.ltx
new file mode 100644
index 00000000000..67a19b1dbf4
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-32.ltx
@@ -0,0 +1,30 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstcol,pst-node}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstcol,pst-node}
+\psset{arrows=->,fillcolor=white,fillstyle=solid}
+\newcommand{\Show}[1]{\psshadowbox{#1}}
+\definecolor{pink}{rgb}{1, .75, .8}
+\begin{psmatrix}[mnode=r,ref=t]
+ \psframebox[linestyle=none,framesep=.75]{%
+ \begin{psmatrix}
+ [name=A,ref=c]\Show{Stakeholder}
+ \end{psmatrix}} &
+ \psframebox[fillstyle=solid,fillcolor=pink,framesep=.75]{%
+ \rule{1cm}{0pt}
+ \begin{psmatrix}[ref=c]
+ [name=B]\Show{Goal} & \Show{Criteria}\\
+ \Show{Sub-goal} & \Show{Justification}
+ \ncline{1,1}{1,2}
+ \ncline{1,1}{2,2}
+ \ncline{1,1}{2,1}\tlput{Strategy}
+ \ncline{2,1}{2,2}
+ \end{psmatrix}}
+\end{psmatrix}
+\ncline[angleB=180]{A}{B}\naput[npos=.7]{Model}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-33.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-33.inl
new file mode 100644
index 00000000000..dce8f7a029e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-33.inl
@@ -0,0 +1,15 @@
+\usepackage {pstricks,pst-node}
+\psset{framearc=.2}
+\begin{psmatrix}[rowsep=1cm,colsep=-10pt]
+ [name=A]\psframebox{requirements}\\
+ &[name=B]\psframebox{design}\\
+ &&[name=C]\psframebox{coding}\\
+ &&&[name=D]\psframebox{testing}\\
+ &&&&[name=E]\psframebox{operations}
+ \psset{arrows=->,armA=0,angleB=90}
+ \ncangle{A}{B} \ncangle{B}{C}
+ \ncangle{C}{D} \ncangle{D}{E}
+ \psset{angleB=-90,angleA=180}
+ \ncangle{B}{A} \ncangle{C}{B}
+ \ncangle{D}{C} \ncangle{E}{D}
+\end{psmatrix}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-34.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-34.inl
new file mode 100644
index 00000000000..403eae8be63
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-34.inl
@@ -0,0 +1,5 @@
+\usepackage {pstricks,pst-node,pst-tree}
+\pstree{\TC}{
+ \TC
+ \TC
+}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-35.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-35.inl
new file mode 100644
index 00000000000..f1bbe729f0d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-35.inl
@@ -0,0 +1,9 @@
+\usepackage {pstricks,pst-node,pst-tree}
+\pstree{\TC}{
+ \pstree{\TC}{\TC \TC}
+ \pstree{\TC}{\TC \TC}
+ \pstree{\TC}{\pstree{\TC}{\TC \TC}
+ \TC \TC
+ }
+}
+
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-36.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-36.inl
new file mode 100644
index 00000000000..c993e1a9c4a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-36.inl
@@ -0,0 +1,11 @@
+\usepackage {pstricks,pst-node,pst-tree}
+\pstree[nodesep=2pt,
+ levelsep=20pt]{\TR{grandfather}}
+{\pstree{\TR{uncle}}{\TR{cousin}}
+ \pstree{\TR{father}}
+ {\pstree{\TR{brother}}{\TR{nephew}}
+ \pstree{\TR{Me}}
+ {\pstree{\TR{son}}{\TR{grandson}}
+ }
+ }
+}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-37.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-37.inl
new file mode 100644
index 00000000000..a49da319ec9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-37.inl
@@ -0,0 +1,11 @@
+\usepackage {pstricks,pst-node,pst-tree}
+\pstree{\Tdot}
+{
+\Tdot
+\pstree{\Tdot}
+ {
+ \pstree{\Tdot}
+ {\Tdot \Tdot \Tdot}
+ \Tdot
+ }
+}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-38.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-38.inl
new file mode 100644
index 00000000000..7630f55a991
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-38.inl
@@ -0,0 +1,18 @@
+\usepackage {pstricks,pst-node,pst-tree}
+\psset{labelsep=2pt,tnpos=a,radius=2pt}
+\pstree[treemode=R]{\TC*~{25}}
+{
+\TC*~{5}~[tnpos=r]{$L_a$}
+\taput{$a$}
+\pstree{\TC*~{20}\tbput{$b$}}
+ {
+ \pstree{\TC*~{15}\taput{$a$}}
+ {
+ \TC*~{7}~[tnpos=r]{$L_{baa}$}\taput{$a$}
+ \TC*~{5}~[tnpos=r]{$L_{bab}$}\taput{$b$}
+ \TC*~{3}~[tnpos=r]{$L_{bac}$}\tbput{$c$}
+ }
+ \TC*~{5}~[tnpos=r]{$L_{bb}$}
+ \tbput{$b$}
+ }
+}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-39.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-39.ltx
new file mode 100644
index 00000000000..99ca945ede3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-39.ltx
@@ -0,0 +1,26 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstcol,pst-node,pst-tree}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstcol,pst-node,pst-tree}
+\definecolor{pink}{rgb}{1, .75, .8}
+\renewcommand\psedge{\nccurve}
+\newcommand{\Female}[2][]{{\psset{linecolor=pink}\TR[#1]{\emph{#2}}}}
+\newcommand{\Male}[2][]{{\psset{linecolor=blue}\TR[#1]{#2}}}
+\psset{nodesep=2pt,angleA=90,angleB=-90}
+\pstree[treemode=U]{\Female{{\bfseries Matilde}}}{
+ \pstree{\Male{Sebastian}}{
+ \pstree{\Male[name=P]{Philip}}{\Male{Frederick}\Female{Ethel}}
+ \pstree{\Female[name=W]{Mary}}{\Male{Lionel}\Female{Agnes}}}
+ \pstree{\Female{Leonor}}{
+ \pstree{\Male[name=R]{Ra\'ul}}{\Male{Joaquim}\Female{J\'ulia}}
+ \pstree{\Female[name=A]{Am\'elia}}{\Male{\'Alvaro}\Female{Augusta}}}
+}
+\psset{linecolor=green,doubleline=true,linestyle=dotted}
+\ncline{P}{W}\nbput{1940}
+\ncline{R}{A}\nbput{1954}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-4.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-4.inl
new file mode 100644
index 00000000000..2dd5f751cb9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-4.inl
@@ -0,0 +1,6 @@
+\usepackage {pstricks}
+\begin{pspicture}(-.2,-.5)(3,1)\showgrid
+\pnode(.5,.5){A}
+\pnode(2.5,.5){B}
+\ncline{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-40.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-40.ltx
new file mode 100644
index 00000000000..639e8eaee7b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-40.ltx
@@ -0,0 +1,34 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstricks,pst-node,pst-tree}
+\pagestyle{empty}
+\setlength\textwidth{231.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstricks,pst-node,pst-tree}
+\newcommand{\Item}[1]{\Tr[ref=l]{%
+ \psframebox[linestyle=none]{#1}}}
+\renewcommand{\psedge}{\ncangle}
+\psset{xbbd=1.5cm,treemode=R,
+ angleB=-180,angleA=0,levelsep=72pt}
+\pstree{\Item{langs}}{%
+ \Item{german}
+ \pstree{\Item{greek}}{%
+ \Item{h kelly}
+ \pstree{\Item{levy}}{%
+ \Item{doc}
+ \Item{src}
+ }
+ }
+ \Item{italian}
+ \pstree{\Item{russian}}{
+ \Item{hyphen}
+ }
+ \pstree{\Item{turkish}}{%
+ \Item{hyphen}
+ \Item{inputs}
+ \Item{mf}
+ }
+}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-41.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-41.inl
new file mode 100644
index 00000000000..0749fa788a8
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-41.inl
@@ -0,0 +1,16 @@
+\usepackage {pstricks,pst-node,pst-tree}
+\newcommand{\XX}[1]{%
+ \Tr{\psframebox{\rule{0pt}{9pt}#1}}}
+\renewcommand{\psedge}{\ncangle}
+\psset{angleB=90,angleA=-90,
+ levelsep=36pt,armB=14pt}
+\pstree{\XX{grandmother}}
+ {\pstree{\XX{aunt}}{\XX{cousin}}
+ \pstree{\XX{mother}}
+ {\pstree{\XX{sister}}{\XX{niece}}
+ \pstree{\XX{Me}}
+ {\pstree{\XX{daughter}}
+ {\XX{granddaughter}}
+ }
+ }
+ }
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-42.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-42.inl
new file mode 100644
index 00000000000..68bf3ae0727
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-42.inl
@@ -0,0 +1,24 @@
+\usepackage {pstcol,pst-node,pst-tree,graphics}
+\rotatebox{90}{%
+\psset{nodesep=2pt}
+\newcommand{\XX}[2]{%
+ \TR{\ensuremath{#1_{\mbox{#2}}}}%
+}
+\pstree[xbbr=1.5cm]{\XX{R}{AMSU}}
+ {
+ \XX{S}{RawData}
+ \pstree{\XX{S}{combine}
+ \trput{\ensuremath{\oplus}}
+ \tlput{\ensuremath{\oplus}}}
+ {
+ \psset{linestyle=dashed}
+ \XX{R}{Modes}
+ \XX{R}{Normal}
+ \XX{R}{Vertical}
+ \XX{R}{Latched}
+ \XX{R}{Tripped}
+ \XX{R}{Other}
+ }
+ \XX{S}{GenerateData}
+ }
+}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-43.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-43.inl
new file mode 100644
index 00000000000..9e7e74ef9f3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-43.inl
@@ -0,0 +1,13 @@
+\usepackage {pstcol,pst-node,pst-tree}
+\psset{framearc=.2,levelsep=4cm,
+ armB=1cm,angleB=-180}
+\renewcommand{\psedge}{\ncangle}
+\newcommand{\TreeBox}[1]{\Tr{\psframebox{#1}}}
+\pstree[treemode=R]{\TreeBox{Monitor}}
+{\psset{offsetA=4pt}
+ \TreeBox{Attitude Generator}
+ \naput[npos=2.5]{{\small init}}
+ \nbput[npos=2.5]{{\small stop}}
+ \psset{offsetA=-4pt}
+ \TreeBox{Normal Generator}
+ }
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-44.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-44.inl
new file mode 100644
index 00000000000..cf9ba9c40c1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-44.inl
@@ -0,0 +1,15 @@
+\usepackage {pstcol,pst-node,pst-tree}
+\psset{arrows=->,framearc=.2}
+\newcommand{\Treebox}[1]{%
+ \Tr{\psframebox{#1}}}
+\pstree[treemode=R]
+{\Treebox{A$\rightarrow$B}}{
+\pstree{
+ \Treebox{B$\rightarrow$C}
+ }{
+ \Treebox{A$\rightarrow$D}
+\pstree[treemode=L]
+ {\Treebox{B$\rightarrow$E}}
+ {\Tn\TC[arrows=<-]}
+ }
+}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-45.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-45.inl
new file mode 100644
index 00000000000..65079f51bf6
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-45.inl
@@ -0,0 +1,5 @@
+\usepackage {pstcol,pst-node,pst-tree}
+\pstree{\Tp}{
+ \Tcircle{A}
+ \Tcircle{B}
+}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-46.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-46.inl
new file mode 100644
index 00000000000..e023775ec2d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-46.inl
@@ -0,0 +1,17 @@
+\usepackage {pstcol,pst-node,pst-tree}
+\psset{angleB=-90,arrows=->,nrot=:U}
+\newcommand{\molesworth}[1]{%
+ \pstree[#1]{\Tdia{ }}
+ {
+ \Tp[arrows=->,edge={\ncbar[angleA=180]}]
+ \nbput{Gabbitas}
+ {\psset{linestyle=dashed,arrows=-} \Tp }
+ \Tp[arrows=->,edge={\ncbar}]
+ \naput{Thring}
+ }
+}
+\psset{showbbox=true}
+\begin{tabular}{l}
+\molesworth{}\\[1cm]
+\molesworth{xbbl=1cm,xbbr=1cm}
+\end{tabular}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-5.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-5.inl
new file mode 100644
index 00000000000..e8ede1cba21
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-5.inl
@@ -0,0 +1,6 @@
+\usepackage {pstricks}
+\begin{pspicture}(-.2,-.5)(3,1)\showgrid
+\cnode(.5,.5){.2}{A}
+\cnode(2.5,.5){.2}{B}
+\ncline{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-6.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-6.inl
new file mode 100644
index 00000000000..86b9b2baab9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-6.inl
@@ -0,0 +1,7 @@
+\usepackage {pstricks}
+\begin{pspicture}(-.2,-.5)(3,1)\showgrid
+\psset{radius=.3}
+\Cnode(.5,.5){A}
+\Cnode(2.5,.5){B}
+\ncline{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-7.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-7.inl
new file mode 100644
index 00000000000..de97442eb1d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-7.inl
@@ -0,0 +1,6 @@
+\usepackage {pstricks}
+\begin{pspicture}(-.2,-.5)(3,1)\showgrid
+\rput(.5,.5){\circlenode{A}{Cat}}
+\rput(2.5,.5){\circlenode{B}{Dog}}
+\ncline{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-8.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-8.inl
new file mode 100644
index 00000000000..d59baa3cd09
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-8.inl
@@ -0,0 +1,6 @@
+\usepackage {pstricks}
+\begin{pspicture}(-.2,-.5)(3,1)\showgrid
+\rput(.5,.5){\ovalnode{A}{Cat}}
+\rput(2.5,.5){\ovalnode{B}{Dog}}
+\ncline{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-9.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-9.inl
new file mode 100644
index 00000000000..09eab19e97a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-6-9.inl
@@ -0,0 +1,6 @@
+\usepackage {pstricks}
+\begin{pspicture}(-.2,-.5)(3,1)\showgrid
+\rput(.5,.5){\dianode{A}{Cat}}
+\rput(2.5,.5){\dianode{B}{Dog}}
+\ncline{A}{B}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-7-1.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/4-7-1.ltx
new file mode 100644
index 00000000000..de490276227
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-7-1.ltx
@@ -0,0 +1,18 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstcol,pst-plot}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstcol,pst-plot}
+\begin{pspicture}(-1,-2.5)(9,2.5)
+\psset{xunit=.25mm,yunit=2cm}
+\psset{plotpoints=50}
+\psplot[linestyle=dashed,linecolor=blue]{0}{360}{x sin}
+\psplot[plotstyle=dots,dotstyle=triangle]{0}{360}{x cos}
+\psset{plotpoints=200}
+\psplot[linecolor=red]{0}{360}{x dup sin exch cos mul}
+\end{pspicture}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-7-2.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/4-7-2.ltx
new file mode 100644
index 00000000000..ab3469f597c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-7-2.ltx
@@ -0,0 +1,21 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstcol,pst-plot}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstcol,pst-plot}
+\begin{tabular}{ccc}
+\begin{pspicture}(-0.75,-0.75)(3,2)\psaxes(3,2)\end{pspicture}&
+\begin{pspicture}(-0.75,-2)(3,0.75)\psaxes(3,-2)\end{pspicture}&
+\begin{pspicture}(-0.75,-.75)(3,2)\psaxes(2,1)(0,0)(3,2)\end{pspicture}\\
+\verb|psaxes(3,2)| & \verb|psaxes(3,-2)| & \verb|psaxes(2,1)(0,0)(3,2)| \\[20pt]
+\begin{pspicture}(-3,-0.5)(0.75,2.5)\psaxes(-3,2)\end{pspicture}&
+\begin{pspicture}(-3,-2)(0.5,0.75)\psaxes(-3,-2)\end{pspicture}&
+\begin{pspicture}(-1,-2)(0,0)\psaxes(0,0)(-1,0)(1,1)\end{pspicture}\\
+\verb|psaxes(-3,2)| &\verb|psaxes(-3,-2)|
+& \verb|psaxes(0,0)(-1,0)(1,1)|\\
+\end{tabular}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-7-3.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/4-7-3.ltx
new file mode 100644
index 00000000000..0f3adaad8c5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-7-3.ltx
@@ -0,0 +1,17 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstcol,pst-plot}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstcol,pst-plot}
+\readdata{\foo}{words.dat}
+\psset{yunit=.2mm,xunit=4mm}
+\begin{pspicture}(-2,-50)(20,250)
+\psaxes[axesstyle=frame,dy=50\psyunit,Dy=50,tickstyle=bottom,
+ fillcolor=gray,fillstyle=solid](1,1)(18,229)
+\dataplot[plotstyle=line,linecolor=white]{\foo}
+\end{pspicture}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-7-4.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/4-7-4.ltx
new file mode 100644
index 00000000000..cd988e015fc
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-7-4.ltx
@@ -0,0 +1,52 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstcol,calc}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstcol,calc}
+\newcounter{lastval}
+\newcounter{thishalf}
+\newcounter{thisval}
+\definecolor{wheat}{rgb}{.96, .87, .7}
+\definecolor{lightblue}{rgb}{.68, .85, .9}
+\definecolor{brown}{rgb}{.65, .16, .16}
+\definecolor{pink}{rgb}{1, .75, .8}
+\definecolor{palegreen}{rgb}{.6, .98, .6}
+\definecolor{white}{rgb}{1, 1, 1 }
+\newcommand\lang[4]{% name, value, percentage, color
+ \setcounter{thisval}{\value{lastval}}
+ \addtocounter{thisval}{#3}
+ \pswedge[fillcolor=#4]{1}{\thelastval}{\thethisval}%
+ \setcounter{thishalf}{((\value{thisval}-\value{lastval})/2)+\value{lastval}}
+ %\typeout{#1: \thethishalf}%
+ \ifnum#3>200\rput(1.3;\thethishalf){#1}\fi
+ \setcounter{lastval}{\value{thisval}}
+}
+\bgroup\psset{unit=3}
+\centerline{\begin{pspicture}(-1.3,-1.3)(1.3,1.3)
+\psset{fillstyle=solid}
+\degrees[10000]
+\SpecialCoor
+\setcounter{lastval}{0}
+\lang{Romanian}{1}{3}{green}
+\lang{Czech}{2}{6}{blue}
+\lang{Bulgarian}{4}{11}{green}
+\lang{Japanese}{4}{11}{palegreen}
+\lang{Dutch}{7}{20}{black}
+\lang{Norwegian}{20}{56}{cyan}
+\lang{Greek}{26}{73}{magenta}
+\lang{Swedish}{34}{95}{lightgray}
+\lang{Danish}{46}{129}{white}
+\lang{French}{83}{232}{pink}
+\lang{Latin}{146}{409}{wheat}
+\lang{Russian}{243}{680}{white}
+\lang{Italian}{391}{1093}{gray}
+\lang{German}{508}{1421}{lightblue}
+\lang{unknown}{599}{1676}{red}
+\lang{English}{1462}{4085}{yellow}
+\end{pspicture}}
+\egroup
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-8-1.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-8-1.inl
new file mode 100644
index 00000000000..631deae5ee5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-8-1.inl
@@ -0,0 +1,4 @@
+\usepackage {pstcol,pst-3d}
+\psshadow[Tshadowangle=45,
+ Tshadowsize=2.5]
+ {\LARGE\bfseries Words with a shadow}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-8-2.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-8-2.inl
new file mode 100644
index 00000000000..96cef751cbf
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-8-2.inl
@@ -0,0 +1,7 @@
+\usepackage {pstcol,pst-3d}
+
+ \pstilt{45}{I Feel Ill!}
+
+\begin{pspicture}(0,-2)(2,1)
+ \pstilt{-75}{\psgrid(0,0)(2,2)}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-8-3.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/4-8-3.ltx
new file mode 100644
index 00000000000..9c75de23ad3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-8-3.ltx
@@ -0,0 +1,17 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstcol,pst-3d}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstcol,pst-3d}
+\begin{pspicture}(-5,-3)(4,3)
+ \psset{unit=.3cm}
+ \psset{viewpoint=-1 -1 1}
+ \ThreeDput[normal=0 0 1]{\psgrid(-3,-3)(6,6)}
+ \ThreeDput[normal=-1 0 0](0,4,0){
+ \psframe*[linecolor=yellow](4,4)}
+\end{pspicture}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-8-4.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/4-8-4.ltx
new file mode 100644
index 00000000000..29c3f55d8fb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-8-4.ltx
@@ -0,0 +1,60 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstcol,pst-3d}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstcol,pst-3d}
+\def\CubeSide#1#2#3#4{
+\ThreeDput[normal=#1](#2){
+\psframe*[linecolor=#3](4,4)
+\rput(2,2){\footnotesize#4}}
+}
+\catcode`\<=12
+\catcode`\>=12
+\def\TheCube#1#2{%
+\begin{pspicture}(-9,-7)(9,9)
+\bfseries
+\ifcase #1 \relax
+\or %1
+ \psset{viewpoint=-1 -1 #2}
+ \rput[l](-8,-6){{\normalsize Viewpoint: -1 -1 #2}}
+ \ifnum#2>0\ThreeDput[normal=0 0 1]{\psgrid(-3,-3)(6,6)}\fi
+ \CubeSide{-1 0 0}{0,4,0}{yellow}{FRONT}
+ \CubeSide{0 -1 0}{0,0,0}{blue}{FRONT}
+\or %2
+ \psset{viewpoint=1 -1 #2}
+ \rput[l](-8,-6){{\normalsize Viewpoint: 1 -1 #2}}
+ \ifnum#2>0\ThreeDput[normal=0 0 1]{\psgrid(-3,-3)(6,6)}\fi
+ \CubeSide{0 -1 0}{0,0,0}{blue}{FRONT}
+ \CubeSide{1 0 0}{4,0,0}{white}{BACK}
+\or %3
+ \psset{viewpoint=1 1 #2}
+ \rput[l](-8,-6){{\normalsize Viewpoint: 1 1 #2}}
+ \ifnum#2>0\ThreeDput[normal=0 0 1]{\psgrid(-3,-3)(6,6)}\fi
+ \CubeSide{1 0 0}{4,0,0}{white}{BACK}
+ \CubeSide{0 1 0}{4,4,0}{green}{BACK}
+\or %4
+ \psset{viewpoint=-1 1 #2}
+ \rput[l](-8,-6){{\normalsize Viewpoint: -1 1 #2}}
+ \ifnum#2>0\ThreeDput[normal=0 0 1]{\psgrid(-3,-3)(6,6)}\fi
+ \CubeSide{0 1 0}{4,4,0}{green}{BACK}
+ \CubeSide{-1 0 0}{0,4,0}{yellow}{FRONT}
+\fi
+\ifnum#2<0
+ \CubeSide{0 0 -1}{0,4,0}{magenta}{BOT}
+\else
+ \CubeSide{0 0 1}{0,0,4}{red}{TOP}
+\fi
+\end{pspicture}
+}
+\psset{unit=.3cm,subgriddiv=0}
+\begin{tabular}{cc}
+\TheCube{1}{1}&
+\TheCube{2}{1}\\[-10pt]
+\TheCube{3}{1}&
+\TheCube{4}{1}\\
+\end{tabular}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-8-5.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/4-8-5.ltx
new file mode 100644
index 00000000000..8596174605c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-8-5.ltx
@@ -0,0 +1,84 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstcol,pst-3d}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstcol,pst-3d}
+\newcommand\DieFrame[1][darkgray]
+ {\psframe[linecolor=black,fillcolor=#1,fillstyle=solid](4,4)}
+\newcommand\SpotColor{white}
+\newcommand\DieOne{\DieFrame[lightgray]
+ \pscircle*[linecolor=\SpotColor](2,2){.3}
+}
+\newcommand\DieTwo{\DieFrame[lightgray]
+ \pscircle*[linecolor=\SpotColor](1,2){.3}
+ \pscircle*[linecolor=\SpotColor](3,2){.3}
+}
+\newcommand\DieThree{\DieFrame[lightgray]
+ \pscircle*[linecolor=\SpotColor](1,1){.3}
+ \pscircle*[linecolor=\SpotColor](2,2){.3}
+ \pscircle*[linecolor=\SpotColor](3,3){.3}
+}
+\newcommand\DieFour{\DieFrame
+ \pscircle*[linecolor=\SpotColor](1,1){.3}
+ \pscircle*[linecolor=\SpotColor](3,3){.3}
+ \pscircle*[linecolor=\SpotColor](1,3){.3}
+ \pscircle*[linecolor=\SpotColor](3,1){.3}
+}
+\newcommand\DieFive{\DieFrame
+ \pscircle*[linecolor=\SpotColor](1,1){.3}
+ \pscircle*[linecolor=\SpotColor](3,3){.3}
+ \pscircle*[linecolor=\SpotColor](1,3){.3}
+ \pscircle*[linecolor=\SpotColor](3,1){.3}
+ \pscircle*[linecolor=\SpotColor](2,2){.3}
+}
+\newcommand\DieSix{\DieFrame
+ \pscircle*[linecolor=\SpotColor](1,1){.3}
+ \pscircle*[linecolor=\SpotColor](1,2){.3}
+ \pscircle*[linecolor=\SpotColor](1,3){.3}
+ \pscircle*[linecolor=\SpotColor](3,1){.3}
+ \pscircle*[linecolor=\SpotColor](3,2){.3}
+ \pscircle*[linecolor=\SpotColor](3,3){.3}
+}
+\newcommand\DieSide[3]{\ThreeDput[normal=#1](#2){#3}}
+\def\TheDie#1#2(#3)(#4){%
+ \begin{pspicture}(#3)(#4)
+ \ifcase #1 \relax
+ \or %1
+ \psset{viewpoint=-1 -1 #2}
+ \DieSide{-1 0 0}{0,4,0}{\DieThree}
+ \DieSide{0 -1 0}{0,0,0}{\DieFive}
+ \or %2
+ \psset{viewpoint=1 -1 #2}
+ \DieSide{0 -1 0}{0,0,0}{\DieFive}
+ \DieSide{1 0 0}{4,0,0}{\DieFour}
+ \or %3
+ \psset{viewpoint=1 1 #2}
+ \DieSide{1 0 0}{4,0,0}{\DieFour}
+ \DieSide{0 1 0}{4,4,0}{\DieTwo}
+ \or %4
+ \psset{viewpoint=-1 1 #2}
+ \DieSide{0 1 0}{4,4,0}{\DieTwo}
+ \DieSide{-1 0 0}{0,4,0}{\DieThree}
+ \fi
+ \ifnum#2<0
+ \DieSide{0 0 -1}{0,4,0}{\DieSix}
+ \else
+ \DieSide{0 0 1}{0,0,4}{\DieOne}
+ \fi
+ \end{pspicture}}
+\psset{unit=.5cm}
+\begin{tabular}{ccc}
+ \TheDie{1}{1}(-4,-0.5)(5,7.5)&
+ \TheDie{2}{1}(-1.5,-1.5)(7.5,6.5)&
+ \TheDie{3}{1}(-4,-3)(5,5)\\
+ \TheDie{4}{1}(-6.5,-2)(2.5,6)&
+ \TheDie{1}{-1}(-4,-3)(5,5)&
+ \TheDie{2}{-1}(-1.5,-1.5)(7.5,6.5)\\
+ \TheDie{3}{-1}(-4,-0.5)(5,7.5)&
+ \TheDie{4}{-1}(-6.5,-2)(2.5,6)\\
+\end{tabular}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-9-1.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-9-1.inl
new file mode 100644
index 00000000000..fdfe5809a85
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-9-1.inl
@@ -0,0 +1,4 @@
+\usepackage {pstricks}
+\begin{pspicture}(0,0)(2,2)\showgrid
+\multirput(0,0)(.2,.2){10}{$\pi$}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-9-10.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/4-9-10.ltx
new file mode 100644
index 00000000000..d6b93e2c3e1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-9-10.ltx
@@ -0,0 +1,152 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {pstcol,pst-node,pst-coil}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {pstcol,pst-node,pst-coil}
+\makeatletter
+\newdimen\CurX
+\newdimen\CurY \newdimen\Cir@temp
+\newcount\Cir@direction % 0 right, 1 left, 2 up, 3 down
+\Cir@direction0
+\def\SetX#1{\CurX=#1pt}
+\def\SetY#1{\CurY=#1pt}
+\def\ShowDirection{%
+ \typeout{Direction:
+ \ifcase\Cir@direction right\or left\or up\or down\fi,
+ now at (\strip@pt\CurX,\strip@pt\CurY)}%
+}
+\def\ShowXY{\message{(\strip@pt\CurX,\strip@pt\CurY)}}
+
+\def\Down#1{\advance\CurY by -#1\p@\Cir@direction3%\ShowDirection
+}
+\def\Up#1{\advance\CurY by #1\p@\Cir@direction2%\ShowDirection
+}
+\def\Left#1{\advance\CurX by -#1\p@\Cir@direction1%\ShowDirection
+}
+\def\Right#1{\advance\CurX by #1\p@\Cir@direction0%\ShowDirection
+}
+\def\MyBox#1#2{% width,height
+ \pssetlength{\Cir@temp}{#1}%
+ \rule{\Cir@temp}{\z@}%
+ \pssetlength{\Cir@temp}{#2}%
+ \rule{\z@}{\Cir@temp}%
+}
+\def\Point#1{%
+\rput(\strip@pt\CurX,\strip@pt\CurY){\pnode{#1}}%
+}
+\def\Switch#1{%
+\message{[Switch] #1}\ShowXY
+\relax
+\ifcase\Cir@direction % right
+ \rput[b](\strip@pt\CurX,\strip@pt\CurY){\rnode[b]{#1}{%
+ \psline(.5,.4)%
+ \psarc{<-}{.4}{-10}{70}%
+ \MyBox{.5}{.4}%
+ }}%
+ \advance\CurX by .5\p@
+\or % left
+ \advance\CurX by -.5\p@
+ \rput[b](\strip@pt\CurX,\strip@pt\CurY){\rnode[b]{#1}{%
+ \psline(0,0)(.5,.4)%
+ \psarc{<-}{.4}{-10}{70}%
+ \MyBox{.5}{.4}%
+ }}%
+\fi
+}
+
+\def\Battery#1{%
+\message{[Battery] #1}\ShowXY
+\relax
+\ifcase\Cir@direction % right
+ \rput[r](\strip@pt\CurX,\strip@pt\CurY){\rnode{#1}{%
+ \psline(0,-.4)(0,.4)%
+ \psline(.2,-.2)(.2,.2)%
+ \MyBox{.2}{.8}%
+ }}%
+ \advance\CurX by .2\p@
+\or % left
+ \advance\CurX by -.2\p@
+ \rput[r](\strip@pt\CurX,\strip@pt\CurY){\rnode{#1}{%
+ \psline(0,-.4)(0,.4)%
+ \psline(.2,-.2)(.2,.2)%
+ \MyBox{.2}{.8}%
+ }}%
+\or % up
+ \advance\CurY by .2\p@
+ \rput[b](\strip@pt\CurX,\strip@pt\CurY){\rnode{#1}{%
+ \psline(.1,.2)(.9,.2)%
+ \psline(0.3,0)(0.7,0)%
+ \MyBox{1}{.2}%
+ }}%
+\or % down
+ \rput[b](\strip@pt\CurX,\strip@pt\CurY){\rnode{#1}{%
+ \psline(-.4,0)(.4,0)%
+ \psline(-.2,-.2)(.2,-.2)%
+ \MyBox{1}{.2}%
+ }}%
+ \advance\CurY by -.2\p@
+\fi
+}
+
+\def\Resistor{\message{[Resistor]}\ShowXY
+ \@ifnextchar[{\@ResInd}{\@ResInd[1]{pszigzag}}}
+\def\Inductor{\message{[Inductor]}\ShowXY
+ \@ifnextchar[{\@ResInd}{\@ResInd[1]{pscoil}}}
+
+\def\@ResInd[#1]#2#3{%
+ \ifcase\Cir@direction % right
+ \rput[l](\strip@pt\CurX,\strip@pt\CurY){\rnode{#3}{%
+ \csname #2\endcsname[coilarm=.01,coilwidth=.3](0,.15)(#1,.15)%
+ \MyBox{#1}{.3}%
+ }}%
+ \advance\CurX by #1\p@
+ \or % left
+ \advance\CurX by -#1\p@
+ \rput[l](\strip@pt\CurX,\strip@pt\CurY){\rnode{#3}{%
+ \csname #2\endcsname[coilarm=.01,coilwidth=.3](0,.15)(#1,.15)%
+ \MyBox{#1}{.3}%
+ }}%
+ \or % up
+ \rput[b](\strip@pt\CurX,\strip@pt\CurY){\rnode{#3}{%
+ \csname #2\endcsname[coilarm=.01,coilwidth=.3](.15,0)(.15,#1)%
+ \MyBox{.3}{#1}%
+ }}%
+ \advance\CurY by #1\p@
+ \or % down
+ \advance\CurY by -#1\p@
+ \rput[b](\strip@pt\CurX,\strip@pt\CurY){\rnode{#3}{%
+ \csname #2\endcsname[coilarm=.01,coilwidth=.3](.15,0)(.15,#1)%
+ \MyBox{.3}{#1}%
+ }}%
+ \fi
+}
+\makeatother
+
+\begin{pspicture}(5,5)
+\SetX{1}
+\Up{1}
+\Battery{A}
+\Up{1}
+\Right{2}
+\Resistor{B}
+\Right{1}
+\Down{.3}
+\Inductor{C}
+\Down{.5}
+\Left{1}
+\Switch{D}
+\ncangle[angleA=90,angleB=180,armB=0]{A}{B}
+\ncangle[angleA=0,angleB=90,armB=0]{B}{C}
+\ncput[ref=l]{~~~$i=i_{\mbox{max}}(1-w^{-t/3})$}
+\ncangle[angleA=-90,armB=0,angleB=0]{C}{D}
+\ncangle[angleA=180,armB=0,angleB=-90]{D}{A}
+\nput{180}{A}{10V}
+\nput{90}{B}{R}
+\nput{0}{C}{3mH}
+\nput{270}{D}{S}
+\end{pspicture}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/4-9-2.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/4-9-2.inl
new file mode 100644
index 00000000000..3f323be0622
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/4-9-2.inl
@@ -0,0 +1,5 @@
+\usepackage {pstricks}
+\begin{pspicture}(0,0)(3,3)\showgrid
+\multips(.5,.5)(.4,.4){5}
+ {\pscircle{.35}}
+\end{pspicture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-2-1.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-2-1.ltx
new file mode 100644
index 00000000000..abd31749f47
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-2-1.ltx
@@ -0,0 +1,15 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all]{xy}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all]{xy}
+\[
+\xymatrix{
+ A & *+[F]{\sum_{i=n}^m {i^2}} \\
+ & {\bullet} & D \ar[ul]
+}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-1.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-1.ltx
new file mode 100644
index 00000000000..8ae38404282
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-1.ltx
@@ -0,0 +1,15 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {xy}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {xy}
+\[\begin{xy}
+ 0*{DL} ,+/r1cm/*{DR}
+ ,<0cm,1cm>*{UL} ,<1cm,1cm>*{UR}
+ ,(5,5)*{5,5}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-2.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-2.ltx
new file mode 100644
index 00000000000..cafec3363d1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-2.ltx
@@ -0,0 +1,17 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {xy}
+\[\begin{xy} 0;<5mm,0mm>:
+ 0*{DL} ,(2,0)*{DR} ,<0cm,1cm>*{UL} ,(2,2)*{UR}
+ ,0+(4,0)="NO"*{\mathtt{DL}}
+ ,"NO"+(2,2)="SUR"*{\mathtt{UR}}
+ ,"SUR"-<1cm,0cm>*{\mathtt{UL}}
+ ,"SUR"-(0,2)*{\mathtt{DR}}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-3.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-3.ltx
new file mode 100644
index 00000000000..173f592b0ca
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-3.ltx
@@ -0,0 +1,14 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {xy}
+\[\begin{xy}
+ 0*{DL};<1cm,1cm>*{UR}**@{-}
+ ,<0cm,1cm>*{UL};<1cm,0cm>*{DR}**@{=}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-4.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-4.ltx
new file mode 100644
index 00000000000..cd8013efa60
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-4.ltx
@@ -0,0 +1,14 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [frame]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [frame]{xy}
+\[\begin{xy}
+ 0*+[o][F]{DL};<2cm,1cm>*+[F]{UR} **@{.}
+ ?<*@{<<} ?(0.5)*!/_3mm/{\Omega} ?>>>*@{>}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-5.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-5.ltx
new file mode 100644
index 00000000000..e59016e5aec
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-5.ltx
@@ -0,0 +1,15 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {xy}
+\[\begin{xy}
+ 0*=+{l}="l" ;<2cm,8mm>*=+{r}="r" **@{-}
+ ,<4mm,10mm>*+{ll} ;<25mm,2mm>*+{rr} **@{--}
+ ?!{"r";"l"}*{\oplus}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-6.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-6.ltx
new file mode 100644
index 00000000000..53dd01436a8
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-6.ltx
@@ -0,0 +1,14 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [frame]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [frame]{xy}
+\[\begin{xy}
+ (0,0)*@{o}*!UL{Box1}*\frm{-}*@{x}
+ ,(20,0)*@{o}*!RD{Box2}*\frm{-}*@{x}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-7.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-7.ltx
new file mode 100644
index 00000000000..f90df3a0e87
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-7.ltx
@@ -0,0 +1,15 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [frame,arrow,curve]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [frame,arrow,curve]{xy}
+\[\begin{xy}
+ (0,0)*@{*}*[F]{Box1}!UL="a",*@{x}
+ ,(20,0)*@{*}*[F]{Box2}!RD*@{x}
+ ,\ar@/^20pt/"a", \POS"a"!DR(.8)*@{+}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-8.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-8.ltx
new file mode 100644
index 00000000000..7dc80034d3d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-8.ltx
@@ -0,0 +1,18 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [frame]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [frame]{xy}
+\[\begin{xy}
+ ,(0,0)*+=[o][F]\txt{Box}
+ ,(12,0)*+=[o]=<9mm>[F]\txt{Box}
+ ,(0,12)*+=[o]+[F]\txt{Box}
+ ,(12,12)*+=[o]++[F]\txt{Box}
+ ,(0,24)*+=[o]-[F]\txt{Box}
+ ,(12,24)*+=[o]--[F]\txt{Box}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-9.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-9.ltx
new file mode 100644
index 00000000000..5c9bf582317
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-3-9.ltx
@@ -0,0 +1,23 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [frame]{xy}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [frame]{xy}
+\[
+\newcommand{\smbf}{\small\bfseries} \newcommand{\smit}{\small\itshape}
+\begin{xy}
+ 0*=(22,14)!UR!(-10,-8)[F]\txt\smbf{center\\of box}="box";
+ "box"+L*+!R\txt\small{Left\\side}
+ ,"box"+R*+!L\txt\small{Right\\side}
+ ,"box"+D*+!U\txt\small{Bottom side}
+ ,"box"+U*+!D\txt\small{Top side}
+ ,"box"+LD*@{*}*+!RU\txt<2cm>\smit{Lower left diagonal}
+ ,"box"+RD*@{*}*+!LU\txt<2cm>\smit{Lower right diagonal}
+ ,"box"+LU*@{*}*+!RD\txt<2cm>\smit{Upper left diagonal}
+ ,"box"+RU*@{*}*+!LD\txt<2cm>\smit{Upper right diagonal}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-4-1.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-4-1.ltx
new file mode 100644
index 00000000000..c2d9502b532
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-4-1.ltx
@@ -0,0 +1,21 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [curve,frame]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [curve,frame]{xy}
+\[\begin{xy}
+ 0*[o]+{L};(50,20)*[o]+{R}="R"
+ **\crv{} ?(.6)*@{+}*^+!UL{0}
+ ,"R" **\crv{(30,30)} ?*@{+}*^+!DR{1}
+ ,"R" **\crv{(20,30)&(30,40)} ?*@{+}*^+!DR{2}
+ ,"R" **\crv{(10,-20)&(25,-20)&(40,20)}
+ ?(.4)*@{+}*^+!DR{3}
+ ,"R" **\crv{(0,-10)&(12,-20)&(28,25)&(40,20)}
+ ?(.4)*@{+}*^+!DR{4}
+ \end{xy}\]
+
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-4-2.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-4-2.ltx
new file mode 100644
index 00000000000..ead7fd09861
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-4-2.ltx
@@ -0,0 +1,17 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [curve]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [curve]{xy}
+\[\begin{xy}
+ 0*+{L};(50,20)*+{R}
+ **\crv{~*=<2mm>{.}(20,30)&(30,35)}
+ **\crv~Lc{~**@{==}~*{\bullet}%
+ (20,-15)&(30,-15)}
+\end{xy}\]
+
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-4-3.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-4-3.ltx
new file mode 100644
index 00000000000..68645e608a7
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-4-3.ltx
@@ -0,0 +1,15 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [frame]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [frame]{xy}
+\[\begin{xy}
+ 0*+++{L}*\frm<2pt>{-,}
+ ,(10,10)*++{M}*\frm{o};
+ (20,15)*+{R}*\frm{=}**\frm{o-}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-4-4.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-4-4.ltx
new file mode 100644
index 00000000000..dff7e298128
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-4-4.ltx
@@ -0,0 +1,19 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [frame]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [frame]{xy}
+\[\begin{xy}
+ (0,0)*+++{L}="l";
+ p+(15,10)*+++{M}**\frm{_)}% 1
+ **\frm{\{} % 2
+ ;**\frm{\}} % 3
+ ,p+(15,10)*+++{R}**\frm{(} % 4
+ **\frm{\}} % 5
+ ;"l"**\frm{^\}} % 6
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-1.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-1.ltx
new file mode 100644
index 00000000000..e1c4a455907
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-1.ltx
@@ -0,0 +1,20 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [arrow]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [arrow]{xy}
+\[\begin{xy}
+ (0,-20)="a", (0,0)="b"
+ \ar@{<.||} @<24mm> "a";"b"
+ \ar@^{<.||} @<16mm> "a";"b"
+ \ar@_{<.||} @<8mm> "a";"b"
+ \ar@0{<.||} "a";"b"
+ \ar@1{<.||} @<-8mm> "a";"b"
+ \ar@2{<.||} @<-16mm> "a";"b"
+ \ar@3{<.||} @<-24mm> "a";"b"
+ \end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-10.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-10.ltx
new file mode 100644
index 00000000000..c772d6262b3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-10.ltx
@@ -0,0 +1,32 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [graph,curve,arc]{xy}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [graph,curve,arc]{xy}
+\newgraphescape{N}[1]{!{\save-/4mm/-/4pt/;p+/4mm/:
+ (-1,1);(-1,-1)**@{-} ?(.25)="N#1a" ?(.75)="N#1b",
+ (-1,1);(0,1)**@{-} ; (0,-1),{\ellipse_{}} ; (-1,-1)**@{-},
+ (0,0);(1,0)**{}*!E\cir<2pt>{}!C-E="N#1"\restore \POS"N#1"}}
+\newgraphescape{I}[1]{!{\save-/4mm/-/2pt/;p+/4mm/:
+ (-1,1);(-1,-1)**@{-} ?="I#1a", (-1,1);(.667,0)**@{-};(-1,-1)**@{-},
+ (0,0);**{}*!E\cir<2pt>{}!C-E="I#1"\restore \POS"I#1"}}
+\newgraphescape{B}{!{*=0@{*}}}
+\newgraphescape{R}{!{;p+/r4mm/**{};}}
+\newgraphescape{p}[2]{[#1!{"#2";p+/^/}]}
+\newcommand{\circuit}[1]{\xygraph{~{0;<10mm,0mm>:<0mm,9mm>::0}#1}}
+\[\begin{array}{c}
+\circuit{ []!R!N1 ("N1a"([l]x - ?), "N1b"([l]y - ?))
+ [r]!I2 ("N1" - "I2a") - [r]{x\land y}}\\
+\circuit{ []x
+ [rrr]!R!I1 ("I1a"("x" - ?))
+ [drr]!R!N1 ("I1" -`r[d]`"N1a""N1a", "N1b"!plx y - "N1b")
+ "I1"[dddd]!R!I2 ("I2a"[l]!puy!B - `d"I2a""I2a")
+ "N1"[dd]!R!N2 ("I1a"[l(.5)]!pux!B -`d"N2a""N2a", "I2" -`r[u]`"N2b""N2b")
+ [urr]!R!N3 ("N1" -`r[d]`"N3a""N3a", "N2" -`r[u]`"N3b""N3b")
+ - [r]{x\mathrel{\textrm{xor}}y}}
+\end{array}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-11.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-11.ltx
new file mode 100644
index 00000000000..a5563d5891d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-11.ltx
@@ -0,0 +1,14 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,2cell]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,2cell]{xy}
+\UseTwocells
+\[
+\xymatrix{L\rtwocell^u_d & R}
+\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-12.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-12.ltx
new file mode 100644
index 00000000000..44627d96b55
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-12.ltx
@@ -0,0 +1,20 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,2cell]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,2cell]{xy}
+\UseAllTwocells
+\[
+\xymatrix @=15mm {
+ L_1 \rlowertwocell<-3>_{a_1}{<-1>}
+ \rcompositemap<6>_{a_2}^{a_3}{\omit}
+& R_1 \dtwocell<0>_{a_4}{"}
+\\ L_2 \uuppertwocell_u^d{\omit}
+ \rtwocell<2>{'id}
+& R_2
+ }\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-13.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-13.ltx
new file mode 100644
index 00000000000..ff5d69bd3c8
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-13.ltx
@@ -0,0 +1,25 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,2cell]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,2cell]{xy}
+\UseAllTwocells
+\[
+\renewcommand{\objectstyle}{\scriptstyle}
+\renewcommand{\labelstyle}{\scriptstyle}
+\xymatrix @=1pc {
+&& \bullet \ar[2,2]
+\\ \\
+ \bullet \ar[-2,2]
+ \rrtwocell {=}
+ \xtwocell[0,4]{}\omit{^<-4>a}
+&& x_b \ar[rr] \ar[dr]_{\mathrm{id}_x}
+ \rrtwocell\omit{<1.5>}
+&& \bullet
+\\ &&& x_e \ar[ur]
+}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-14.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-14.ltx
new file mode 100644
index 00000000000..f03ef029aea
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-14.ltx
@@ -0,0 +1,25 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,2cell]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,2cell]{xy}
+\UseTwocells
+\[
+\xymatrix @R=2.0pc @C=.8pc {
+& \bullet \ar @/^1ex/ [rr]
+&& \bullet \ar @/^1ex/ [dr]
+\\ \bullet \urtwocell<2> \rrtwocell<2>
+ \drtwocell<2> \xtwocell[1,3]{}\omit
+ \xtwocell[-1,3]{}\omit
+&& \bullet \ar @/_1ex/ [ur]
+ \ar @/^1ex/ [dr]
+ \rrtwocell\omit
+&& \bullet
+\\ & \bullet \ar @/_1ex/ [rr]
+&& \bullet \ar @/_1ex/ [ur]
+}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-15.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-15.ltx
new file mode 100644
index 00000000000..99631042110
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-15.ltx
@@ -0,0 +1,15 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,poly]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,poly]{xy}
+\[\begin{xy} /r10mm/:
+ , 0 ,{\xypolygon6{}}
+ ,+/r22mm/,{\xypolygon6{@{o}}}
+ ,+/r22mm/,{*@{o}\xypolygon6{@{*}}}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-16.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-16.ltx
new file mode 100644
index 00000000000..276c4182d9c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-16.ltx
@@ -0,0 +1,15 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,poly]{xy}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,poly]{xy}
+\[\begin{xy} /r10mm/:
+ , 0 ,{*@{o}\xypolygon6{~*{\dir{*}}}}
+ ,+/r22mm/,{\xypolygon6{~<{.}~>{}~={30}{\dir{*}}}}
+ ,+/r22mm/,{\xypolygon6{~<{=}~>{:}{\dir{*}}}}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-17.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-17.ltx
new file mode 100644
index 00000000000..0eee020ab82
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-17.ltx
@@ -0,0 +1,31 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,poly]{xy}
+\pagestyle{empty}
+\setlength\textwidth{135.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,poly]{xy}
+\newcounter{node}
+%
+\[
+\renewcommand{\objectstyle}{\scriptstyle}
+\newcommand{\Letter}%
+ {{\setcounter{node}%
+ {\xypolynode}\Alph{node}}}
+%
+\begin{xy} /r11mm/:
+ (2,4.8), {\xypolygon6{~*{\xypolynode}}}
+ ,(2,2.5), {*{0}*\cir<5pt>{}
+ \xypolygon6{~*{\xybox{%
+ *{\xypolynode}*\cir<2mm>{}}}}}
+ ,(2,0) , {\xypolygon6{%
+ ~><{@/_.5ex/}
+ ~>>{_{\delta^{\xypolynode}_{\xypolynum}}}
+ ~<<{@{=}}
+ ~<>{|\uparrow}
+ ~*{\Letter}}}
+\end{xy}
+\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-18.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-18.ltx
new file mode 100644
index 00000000000..9023ff8cf96
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-18.ltx
@@ -0,0 +1,23 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,poly]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,poly]{xy}
+\[\begin{xy}/r9mm/:
+ (0,0),{\xypolygon6{%
+ ~:{(1,-.1):(0,.33)::}~<{-}}}
+ ,(0,2),{\xypolygon6{%
+ ~:{(1,-.2):(0,.5)::}~<{-}}}
+ ,(2.5,0),{\xypolygon6{%
+ ~:{(1,.2):(0,-.3)::}~<{-}}}
+ ,(2.5,2),{\xypolygon6{%
+ ~:{(1,.3):(0,-.6)::}~<{-}}}
+ ,(5,0)="O", +(-.5,3)="T","O"
+ ,{\xypolygon6{~:{(1,0.2):(0,.4)::}
+ ~<>{;"T"**@{-}}}}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-19.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-19.ltx
new file mode 100644
index 00000000000..3333268a0a8
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-19.ltx
@@ -0,0 +1,23 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,poly]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,poly]{xy}
+\[\begin{xy} /r1cm/:
+ {\xypolygon4"F"{~:{(0,.6)::}}},+(.8,1.3)
+ ,{\xypolygon4"B"{~:{(.7,0):(0,.7)::}}}
+ ,"F1";"B1"**@{.} ,"F2";"B2"**@{.}
+ ,"F3";"B3"**@{.} ,"F4";"B4"**@{.}
+\end{xy}
+\qquad
+\begin{xy} /1cm/:
+ {\xypolygon4"F"{~:{(0,.6)::}}},+(.8,1.3)
+ ,{\xypolygon4"B"{~:{(.7,0):(0,.7)::}}}
+ ,"F1";"B1"**@{.} ,"F2";"B2"**@{.}
+ ,"F3";"B3"**@{.} ,"F4";"B4"**@{.}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-2.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-2.ltx
new file mode 100644
index 00000000000..0f348f60c04
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-2.ltx
@@ -0,0 +1,21 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [curve,arrow,frame]{xy}
+\pagestyle{empty}
+\setlength\textwidth{135.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [curve,arrow,frame]{xy}
+\[\begin{xy} <1cm,0cm>:
+ (0,0)*+@{*}="a"*+!DL{\mathrm{A}},"a"
+ \ar@(dr,dl)
+ \ar@{~>} (2,0)*+@{*}="b"*+!DR{\mathrm{B}},"b"
+ \ar@(r,d) "b";"b"
+ \ar@{<->} "b";(2,2)*+@{*}="c"*+!UR{\mathrm{C}},"c"
+ \ar@(u,r) "c";"c" |*=<2pt>[o][F]{}
+ \ar@(ul,dr) "c"; (0,2)*+@{*}="d"*+!U{\mathrm{D}},"d"
+ \ar@(ul,ur) "d";"d"
+ \ar@{.>}@`{(-0.8,1.5),(0.,1.0),(-0.8,0.5)} "d";
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-20.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-20.ltx
new file mode 100644
index 00000000000..27fbee50f9f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-20.ltx
@@ -0,0 +1,23 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,poly]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,poly]{xy}
+\[\begin{xy} /r10mm/:,
+ {\xypolygon4"F"{\dir{*}}}
+ ,+(.8,1.0),{\xypolygon4"B"{\dir{*}}}
+ ,"F1";"B1"**@{-},"F2";"B2"**@{-}
+ ,"F3";"B3"**@{-},"F4";"B4"**@{-}
+ ,-(1.0,2.8)
+ ,{\xypolygon10"O"{~={16}\dir{*}}}
+ ,{\xypolygon5"I"{~:{(0.55,0):}
+ ~={16}{\dir{*}}}}
+ ,"O1";"I1"**@{.},"O3";"I2"**@{.}
+ ,"O5";"I3"**@{.},"O7";"I4"**@{.}
+ ,"O9";"I5"**@{.}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-21.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-21.ltx
new file mode 100644
index 00000000000..69149762330
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-21.ltx
@@ -0,0 +1,20 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,poly]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,poly]{xy}
+\[\renewcommand{\objectstyle}{\scriptscriptstyle}
+\begin{xy}
+\xypolygon5{~:{/r12mm/:}
+ ~<>{\xypolygon3{~:{(0.45,0):}
+ ~*{\xypolyname\xypolynode}
+ ~={30}}}
+ ~>{}
+ ~<{.}
+ =<3mm>[o]{\xypolynode}}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-22.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-22.ltx
new file mode 100644
index 00000000000..616a4584577
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-22.ltx
@@ -0,0 +1,22 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,arc,dvips]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,arc,dvips]{xy}
+\[\begin{xy} /r12mm/:
+ (0,0)*@{*}="c",*++++!R{c}
+ ,(1.2,.8)*+[F]@{+}="p"
+ ,*++!LD{p},"p";"c"**@{--}
+ ,{\ellipse<>{}}
+ ,{\ellipse(0.8){}}
+ ,0;(-1,1)::
+ ,{\ar@{.>} 0;(1,0)}
+ ,{\ar@{.>} 0;(0,1)}
+ ,"p";"c",{\ellipse(.8){--}}
+ ,{\ellipse<3mm>{=}}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-23.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-23.ltx
new file mode 100644
index 00000000000..057d2623271
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-23.ltx
@@ -0,0 +1,21 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,arc,dvips]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,arc,dvips]{xy}
+\[\begin{xy} 0;/r12mm/:
+ {\ar@{.>} 0;(1,0)}
+ ,{\ar@{.>} 0;(0,1)}
+ ,(0,0)*@{*}="c",*+!RU{c}
+ ,(1.2,0.8)*@{o}="p",*+!LD{p}
+ ,"p";"c"**@{--}
+ ,{\ellipse(1.1,.6){}}
+ ,{\ellipse(,0.8){}}
+ ,{\ellipse<6mm,4mm>{=}}
+ ,{\ellipse<,5mm>{--}}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-24.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-24.ltx
new file mode 100644
index 00000000000..4ea95afe2b5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-24.ltx
@@ -0,0 +1,21 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,arc,dvips]{xy}
+\pagestyle{empty}
+\setlength\textwidth{231.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,arc,dvips]{xy}
+\[\begin{xy} 0;/r20mm/:
+ (0,0)="o" ,*@{*} ,*+!U{o}
+ ,(-1.0,0.5)="p"*@{o},*+!LD{p_1}
+ ,{\ar @{-->} "o";"p"};
+ (-2.,0.)="c",*@{*},*+!L{c_1}
+ ,"c",{\ellipse_{}},{\ellipse^{.}}
+ ,(1.8,0.4)="p",*@{o},*+!D{p_2}
+ ,{\ar @{-->} "o";"p"};
+ (0.8,-1)="c",*@{*},*+!R{c_2}
+ ,"c",{\ellipse{}}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-25.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-25.ltx
new file mode 100644
index 00000000000..35cb79f52b4
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-25.ltx
@@ -0,0 +1,18 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,web]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,web]{xy}
+\[\renewcommand{\latticebody}{\drop@{o}}
+\begin{xy}
+ *\xybox{0;<5mm,2mm>:<2mm,5mm>::
+ ,0,{\xylattice{-3}{3}{-3}{3}}}="S"
+ ,{"S"+L \ar "S"+R*+!L{z_1}}
+ ,{"S"+D \ar "S"+U*+!D{z_2}}
+\end{xy}\]
+
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-26.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-26.ltx
new file mode 100644
index 00000000000..2db24bb024c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-26.ltx
@@ -0,0 +1,23 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,web]{xy}\usepackage {ifthen}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,web]{xy}\usepackage {ifthen}
+\[\renewcommand{\latticebody}{%
+ \ifthenelse{\latticeA=1}{%
+ \ifthenelse{\latticeB=1}{\drop{\dir{*}}}%
+ {\drop{\dir{o}}}}%
+ {\drop{\dir{x}}}}
+\begin{xy}
+ *\xybox{0;<8mm,4mm>:<4mm,8mm>::
+ ,0,{\croplattice{-6}{6}{-6}{6}%
+ {-3}{3}{-3.5}{3.5}}%
+ }="S"
+ ,{"S"+L \ar "S"+R*+!L{z_1}}
+ ,{"S"+D \ar "S"+U*+!D{z_2}}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-27.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-27.ltx
new file mode 100644
index 00000000000..9f38709fa7f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-27.ltx
@@ -0,0 +1,22 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,poly,knot,dvips]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,poly,knot,dvips]{xy}
+\[\UseTips
+\renewcommand{\objectstyle}{\scriptstyle}
+\renewcommand{\labelstyle}{\scriptstyle}
+\begin{xy} /r9mm/:
+ \vover\vcross\vcross\vover-
+\end{xy}
+\hspace{1cm}
+\begin{xy} /r9mm/:
+ \vunder<><{x_i}|>|{y_i}>>>{z_i}%
+ \vtwist|><<\vtwist
+ \vunder-<><{x_o}|>|{y_o}>>>{z_o}%
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-28.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-28.ltx
new file mode 100644
index 00000000000..9304bfd3cf0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-28.ltx
@@ -0,0 +1,20 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,poly,knot,dvips]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,poly,knot,dvips]{xy}
+\[\UseTips
+\renewcommand{\labelstyle}{\scriptstyle}
+\begin{xy} 0;/r8mm/:
+ (0,0)
+ ,{\hover\hcross<><{1}|>|{2}>>>{3}%
+ \hcross<><{4}|>|{5}>>>{6}\hover-}
+ ,(0,-3)
+ ,{\hover\htwistneg<><{1}|>|{2}>>>{3}%
+ \htwistneg<><{4}|>|{5}>>>{6}\hover-}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-29.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-29.ltx
new file mode 100644
index 00000000000..540d3d36a33
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-29.ltx
@@ -0,0 +1,22 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,poly,knot,dvips]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,poly,knot,dvips]{xy}
+\[\UseTips
+\renewcommand{\labelstyle}{\scriptscriptstyle}
+\begin{xy} /r9mm/:
+ ,(0,0)
+ ,{\hunder<><{1}|>|{2}>>>{3}%
+ \htwist<<<{4}|>|{5}><>{6}%
+ \hloop<><{7}|>|{8}>>>{9}}
+ ,(0,-3)
+ ,{\hunder<(+0.1)><{1}|>|{2}>>>{3}%
+ \htwist<<<{4}|(-.2)>|(-.2){^{5}}><>{6}%
+ \hloop<(+.1)><{7}|>|{8}>>>(-.1){9}}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-3.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-3.ltx
new file mode 100644
index 00000000000..69259a02f35
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-3.ltx
@@ -0,0 +1,19 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [arrow]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [arrow]{xy}
+\[\begin{xy} <6mm,0mm>:
+ (0,0)*+\txt\small{Origin}="O"
+ \ar@{.>>}
+ `r (3,2) *\dir{*}*+!DL{\mathrm{P_1}} ^-1
+ ` (-2,2)*\dir{*}*+!U{\mathrm{P_2}} ^2
+ `_dr(-2,0)*\dir{*}*+!U{\mathrm{P_3}} _(.3)3
+ `dr^r "O" _(.8)4
+ "O" ^-(.2)5
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-30.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-30.ltx
new file mode 100644
index 00000000000..518f7372ac1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-30.ltx
@@ -0,0 +1,20 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [curve,knot,graph,dvips]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [curve,knot,graph,dvips]{xy}
+\[\xygraph{!{0;/r10mm/:}
+ !{\vover}
+ [u] !{\hcap[-2]}
+ [d] !{\vover-}
+ [ruu] !{\hcap[2]}
+}\]
+\[\begin{xy} 0;/r10mm/:
+ ,\hcap[-2]\vunder\vunder-
+ ,+(1,2),\hcap[2]
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-31.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-31.ltx
new file mode 100644
index 00000000000..7320ec72900
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-31.ltx
@@ -0,0 +1,22 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [curve,knot,arrow,dvips]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [curve,knot,arrow,dvips]{xy}
+\[\renewcommand{\labelstyle}{\scriptstyle}
+\begin{xy} 0;/r8mm/:
+ ,{\xcapv-|{a}}
+ , +(0,1) ,{\xcaph|{b}\xunderh|{c}%
+ \xcaph|{d}\xcapv|{e}}
+ ,-(3,0),{\xoverh|{f}}
+ ,+(1,0),{\xoverh|{g}}
+ ,-(3,1),{\xcapv-|{h}\xcaph-|{i}}
+ ,+(0,1),{\xunderh-|{j}}
+ ,+(0,-1),{\xcaph-|{k}}
+ ,+(0,1),{\xcapv|{l}}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-32.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-32.ltx
new file mode 100644
index 00000000000..6b1f5cd508b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-32.ltx
@@ -0,0 +1,14 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [curve,knot,dvips]{xy}
+\pagestyle{empty}
+\setlength\textwidth{231.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [curve,knot,dvips]{xy}
+\[\begin{xy} /r2cm/:(0,.5)::
+ ,{\hcap-\huncross\hcap}
+ ,+(1,0),{\vcap\vuncross\vcap-}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-33.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-33.ltx
new file mode 100644
index 00000000000..69d05b4ca33
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-33.ltx
@@ -0,0 +1,25 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,knot,poly,dvips]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,knot,poly,dvips]{xy}
+\[
+\renewcommand{\labelstyle}{\scriptstyle}
+\renewcommand{\objectstyle}{\scriptstyle}
+\knotholesize{3mm}
+\renewcommand\Vcap[2]{\save 0;#2-#1:#1,
+ \vcap~{#1+(0,1)}{#2+(0,1)}{#1}{#2}\restore}
+\xygraph{!{0;/r5mm/:}
+ !P3"t"{~>{.}~*{\xypolynode}}
+ !P6"h"{~:{(4.5,0):}~>{.}~*{\xypolynode}}
+ !{\xunderv~{"h2"}{"h1"}{"t1"}{"t3"}@(.62)}
+ !{\xunderv~{"h4"}{"h3"}{"t2"}{"t1"}@(.62)}
+ !{\xunderv~{"h6"}{"h5"}{"t3"}{"t2"}@(.62)}
+ !{\Vcap{"h3"}{"h2"}\Vcap{"h5"}{"h4"}%
+ \Vcap{"h1"}{"h6"}}
+}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-34.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-34.ltx
new file mode 100644
index 00000000000..a296bcc65d3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-34.ltx
@@ -0,0 +1,27 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,knot,poly,dvips]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,knot,poly,dvips]{xy}
+\renewcommand{\labelstyle}{\scriptstyle}
+\renewcommand{\objectstyle}{\scriptstyle}
+\[\xygraph{!{0;/r2mm/:}
+ !P3"t"{~>{.}}
+ !P6"h"{~:{(4.5,0):}~>{.}~*{\xypolynode}}
+ !P12"d"{~:{(9,0):}~>{.}~*{\xypolynode}}
+ !P12"D"{~:{(13.,0):}~>{.}~*{\xypolynode}}
+ !{\xoverv~{"h2"}{"h1"}{"t1"}{"t3"}@(.62)}
+ !{\xoverv~{"h4"}{"h3"}{"t2"}{"t1"}@(.62)}
+ !{\xoverv~{"h6"}{"h5"}{"t3"}{"t2"}@(.62)}
+ !{\vover~{"d4"}{"d3"}{"h3"}{"h2"}}
+ ,"d4"-@`{"D5","D6"}"d7",
+ !{\vover~{"d8"}{"d7"}{"h5"}{"h4"}}
+ ,"d8"-@`{"D9","D10"}"d11",
+ !{\vover~{"d12"}{"d11"}{"h1"}{"h6"}}
+ ,"d12"-@`{"D1","D2"}"d3"
+}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-35.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-35.ltx
new file mode 100644
index 00000000000..ed084c469b5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-35.ltx
@@ -0,0 +1,28 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,knot,poly,dvips]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,knot,poly,dvips]{xy}
+\[
+\UseTips
+\knotholesize{2mm}
+\xygraph{!{0;/r1cm/:}
+ !P5"p"{~>{.}}
+ !P10"d"{~:{(1.7,0):}~>{.}}
+ !P20"D"{~={-9}~:{(2.2,0):}~>{.}}
+ !{\xunderv~{"d3"}{"d2"}{"p2"}{"p1"}}
+ !{\xunderv~{"d5"}{"d4"}{"p3"}{"p2"}}
+ !{\xunderv~{"d7"}{"d6"}{"p4"}{"p3"}}
+ !{\xunderv~{"d9"}{"d8"}{"p5"}{"p4"}}
+ !{\xunderv~{"d1"}{"d10"}{"p1"}{"p5"}}
+ !{\vloop~{"D3"}{"D2"}{"d2"}{"d1"}|>|{a}}
+ !{\vloop~{"D7"}{"D6"}{"d4"}{"d3"}|>|{b}}
+ !{\vloop~{"D11"}{"D10"}{"d6"}{"d5"}|>|{c}>}
+ !{\vloop~{"D15"}{"D14"}{"d8"}{"d7"}|>|{d}}
+ !{\vloop~{"D19"}{"D18"}{"d10"}{"d9"}|>|{e}}
+}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-4.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-4.ltx
new file mode 100644
index 00000000000..03cd8c7ce93
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-4.ltx
@@ -0,0 +1,34 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [arrow,matrix,tips]{xy}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [arrow,matrix,tips]{xy}
+\[\UseTips
+\newdir{ >}{!/-5pt/\dir{>}}
+\xymatrix @=1pc @*[r] @*[o] {
+ & \Sigma^L \ar[rrrr]^{\varphi^r}
+ \ar'[d]'[ddd]_{\varphi^m}[dddd]
+ & & & & \Sigma^R \ar[dddd]^{\varphi^{m^*}}
+\\ L \ar[ur]^{\lambda^L}
+ & & L_r \ar@{ >->}[ll]_(.32){i_1} \ar[rr]^r
+ & & R \ar[ur]_{\lambda^R}
+\\ \\
+ L_m \ar@{ >->}[uu]^{i_2} \ar[dd]_m
+ & & K_{r,m} \ar@{ >->}[ll]_(.3){i_3}
+ \ar@{ >->}[uu]_{i_4}
+ \ar[dd]_<<<<m \ar[rr]^r
+ & & R_{m^*} \ar@{ >->}[uu]_{i_6}
+ \ar[dd]_<<<<{m^*}
+\\ & \Sigma^G
+ \ar'[r]'[rrr]_{\varphi^{r^*}}[rrrr]
+ & & & & \Sigma^H
+\\ G \ar[ur]^(.7){\lambda^G}
+ & & G_{r^*} \ar@{ >->}[ll]^{i_5}
+ \ar[rr]_{r^*}
+ & & H \ar@{.>}[ur]_{\lambda^H}
+}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-5.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-5.ltx
new file mode 100644
index 00000000000..a0eda8f57bb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-5.ltx
@@ -0,0 +1,21 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [matrix,curve,arrow,tips,frame]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [matrix,curve,arrow,tips,frame]{xy}
+\[\UseTips
+\entrymodifiers={++[o][F]}
+\xymatrix @-1mm {
+ *+\txt{in} \ar[r]
+& 1 \ar@(dr,dl)[]^b \ar[r]_a
+& 2 \ar@(d,dl)[]^a \ar[r]_b
+& 3 \ar `u[l] `^d[l]_a [l] \ar[r]_b
+& *++[o][F=]{4}
+ \ar `dl_l[ll]+/d6mm/`l_ul[ll]^a [ll]
+ \ar `u^l[lll]+/u1cm/`l^d[lll]_b [lll]
+}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-6.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-6.ltx
new file mode 100644
index 00000000000..259fd79da7a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-6.ltx
@@ -0,0 +1,31 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [matrix,arrow,frame,dvips]{xy}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [matrix,arrow,frame,dvips]{xy}
+\newcommand{\topbar}{\vrule height 0.4pt width 20mm}
+\newcommand{\previous}{% turning-width of 15mm
+ \save\ar`r[u]+/r15mm/`[u][u]\restore }
+\newcommand{\saved}[2]{\relax\txt{#1\\\emph{saved} $d[#2]$\\}}
+\newcommand{\bendto}[2]{% creates a bendy arrow, offset 5mm
+ \save c!C+/r5mm/\ar `r#1!C+/l#2/ `^r#1!C #1!C\restore}
+\newcommand{\dinput}[1]{% label-offset 11mm
+ \save +/l11mm/*{d[#1]}\restore}
+\[\begin{xy}
+\xymatrix"R" @M=0mm @H=12mm @W=20mm @R=0mm @*[F] {%
+ {\txt{\topbar\\s\\\\ }} %1,1
+\\ \saved{A}{2} %2,1
+\\ \saved{B}{2}\previous %3,1
+\\ \saved{C}{3} %4,1
+}\turnradius{2mm}\POS(-30,+4)
+\xymatrix @M=0mm @H=5mm @W=12mm @R=0mm @*[F] {%
+ \dinput{1}\bendto{"R1,1"}{15mm} %1,1
+\\ \dinput{2}\bendto{"R3,1"}{17mm} %2,1
+\\ \dinput{3}\bendto{"R4,1"}{19mm} %3,1
+}
+\end{xy}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-7.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-7.ltx
new file mode 100644
index 00000000000..fe053b549c8
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-7.ltx
@@ -0,0 +1,14 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [graph,curve]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [graph,curve]{xy}
+\[\xygraph{
+[]L :@/_/ [r]{M_1} :@/^/ [r]{M^2}
+ :@{|.>}[r]R :@/_1em/"L"
+}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-8.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-8.ltx
new file mode 100644
index 00000000000..fbb593d4194
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-8.ltx
@@ -0,0 +1,21 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [graph,frame]{xy}
+\pagestyle{empty}
+\setlength\textwidth{183.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [graph,frame]{xy}
+\[\xygraph{
+[] *+[o]+[F]{1}
+ (-[dl] *+=[o]+[F]{11}
+ ,-[d] *+=[o]+[F]{12}
+ (-[dl] *+=[o]+[F]{121}
+ ,-[d] *+=[o]+[F]{122}
+ ,-[dr] *+=[o]+[F]{123}
+ )
+ ,-[dr] *+=[o]+[F]{13}
+ )
+}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-9.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-9.ltx
new file mode 100644
index 00000000000..a0cf7ae2559
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/5-5-9.ltx
@@ -0,0 +1,27 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [all,dvips]{xy}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [all,dvips]{xy}
+\newcommand{\Neuron}[1]{\POS*+=<1em>[o]+[F]{#1}}
+\newcommand{\Link}[1]{\ar @{-} "#1"}
+\newcommand{\Out}{\ar +/r8mm/}
+\newcommand{\In}{\save +/l9mm/*{}\ar +/r5mm/\restore}
+\newgraphescape{O}[1]{!{\Neuron{#1}="#1"\Out}}
+\newgraphescape{H}[1]{!{\Neuron{#1}="#1"\Link{A}\Link{B}}}
+\newgraphescape{I}[1]{!{\Neuron{#1}\In\Link{a}\Link{b}\Link{c}}}
+\[\xygraph{!{0;<18mm,0mm>:<0mm,10mm>::}
+ [] !O{A} [d]!O{B}
+ [dd]*[left]!U[F]\txt<12mm>{output\\layer}="T"
+"A" [u(.5)l]!H{a}
+ [d]!H{b} [d]!H{c}
+"T" [l] *[left]!U[F]\txt<12mm>{hidden\\layer}
+"a" [ul]!I{t_1} [d] !I{t_2} [d] !I{t_3}
+ [d] !I{t_4} [d] !I{t_5}
+"T"[ll] *[left]!U[F]\txt<12mm>{input\\layer}
+}\]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-1.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-1.ltx
new file mode 100644
index 00000000000..516ef85f43a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-1.ltx
@@ -0,0 +1,13 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {carom}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {carom}
+\bzdrh{1==Br;4==Br} \bzdrv{1==Br;4==Br}
+\bzdrv[l]{1==Br;4==Br} \bzdrv[c]{1==Br;4==Br}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-10.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-10.ltx
new file mode 100644
index 00000000000..0023f048f00
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-10.ltx
@@ -0,0 +1,16 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {carom}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {carom}
+\steroid[dim]
+ {3D==O;%
+ {{13}B}==\lmoiety{H$_3$C};%
+ {{17}SB}==HO;%
+ {{17}SA}==COCH$_3$}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-11.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-11.ltx
new file mode 100644
index 00000000000..2ed968dea21
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-11.ltx
@@ -0,0 +1,14 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {lowcycle}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {lowcycle}
+\cyclopentanevi[b]{1D==O;%
+ 2==Ph}
+\cyclopentaneh[H]{1==H;2==F}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-12.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-12.ltx
new file mode 100644
index 00000000000..a215b096e53
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-12.ltx
@@ -0,0 +1,12 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {epic,lowcycle}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {epic,lowcycle}
+\cyclopentanev[A{0{$-$}}]{}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-13.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-13.ltx
new file mode 100644
index 00000000000..f968fbefe86
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-13.ltx
@@ -0,0 +1,16 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {epic,lowcycle}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {epic,lowcycle}
+\indanev[eb]
+ {1D==O;4SA==MeO;%
+ 4SB==OMe;5==Cl;6==Cl}
+\indanehi[A]{2D==O;%
+ 3Sa==CH$_3$;3Sb==H}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-14.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-14.ltx
new file mode 100644
index 00000000000..1694d7bd160
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-14.ltx
@@ -0,0 +1,15 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {lowcycle}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {lowcycle}
+\cyclobutane
+ {3Sa==OH;3Sb==CH$_3$}
+\cyclopropane{2Sa==COOH;%
+ 2Sb==COOH}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-15.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-15.ltx
new file mode 100644
index 00000000000..f47ff26b3f6
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-15.ltx
@@ -0,0 +1,15 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {epic,hetarom}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {epic,hetarom}
+\threehetero {1==S} {3Sa==H$_3$C;3Sb==H$_3$C}
+\fourhetero {1==O;2==O}{4Sa==COOH;4Sb==COOH}
+\fiveheterov[eb] {1==N} {1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}
+\sixheterov [c] {1==N} {1==Cl;4==F;2==CH$_3$}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-16.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-16.ltx
new file mode 100644
index 00000000000..6b5ee87c0f4
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-16.ltx
@@ -0,0 +1,15 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {eepic,hetarom}
+\pagestyle{empty}
+\setlength\textwidth{231.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {eepic,hetarom}
+\decaheterov[af]{4==O}
+ {1==CH$_3$;6==H$_3$C;9A==H;%
+ {{10}A}==\lmoiety{HOCH$_2$}}
+\nonaheterov[bjge]{1==S;2==N}{3==Cl}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-17.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-17.ltx
new file mode 100644
index 00000000000..b453dc1a77a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-17.ltx
@@ -0,0 +1,14 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {ccycle}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {ccycle}
+\chair{1D==O;%
+ 2Se==H$_3$C;2Sa==CH$_3$;%
+ 6Se==CH$_3$;6Sa==CH$_3$}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-18.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-18.ltx
new file mode 100644
index 00000000000..69e23be8eb7
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-18.ltx
@@ -0,0 +1,13 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {ccycle}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {ccycle}
+\bicychepv{2D==O} \bicycheph[b]{2==OMe;3==OMe}
+\bornane{3B==OH;2A==OH} \adamantane{2D==O;6D==O;1==F;3==Cl}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-19.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-19.ltx
new file mode 100644
index 00000000000..362af985885
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-19.ltx
@@ -0,0 +1,17 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {hcycle}
+\pagestyle{empty}
+\setlength\textwidth{231.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {hcycle}
+\furanose[b]{1D==O;2Sa==OH;%
+ 3Sa==\lmoiety{HO};%
+ 4Sb==HOH$_2$C(HO)HC}
+\qquad
+\pyranose[a]{3Sb==OAc;%
+ 4Sa==AcO;5Sb==CH$_{2}$OTs}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-2.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-2.ltx
new file mode 100644
index 00000000000..43cd28647cd
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-2.ltx
@@ -0,0 +1,17 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {carom}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {carom}
+\bzdrv[pa]{1D==O;4D==%
+ \lmoiety{CH$_{3}$SO$_{2}$--N};%
+ 2==CH$_{3}$}
+\bzdrv[pa]{1D==O;4D==%
+ \rmoiety{N--SO$_{2}$CH$_{3}$};%
+ 2==CH$_{3}$}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-20.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-20.ltx
new file mode 100644
index 00000000000..1b707fa4fe8
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-20.ltx
@@ -0,0 +1,17 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {aliphat}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {aliphat}
+\tetrahedral{0==C;1D==O;2==Cl;%
+ 4==Cl}
+\qquad
+\tetrahedral[{0+}]{0==N;%
+ 1==H;2==CH$_3$;3==H;4==H}
+\square{0==C;1D==O;2==Cl;4==Cl}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-21.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-21.ltx
new file mode 100644
index 00000000000..1b4ea8a052d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-21.ltx
@@ -0,0 +1,19 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {aliphat}
+\pagestyle{empty}
+\setlength\textwidth{255.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {aliphat}
+\rtrigonal{0==C;1D==O;2==Cl;3==F}
+\qquad
+\ltrigonal{0==C;1D==O;2==Cl;3==F}
+\utrigonal{0==C;1D==O;2==Cl;3==F}
+\Utrigonal{0==C;1D==O;2==Cl;3==F}
+\dtrigonal{0==C;1D==O;2==Cl;3==F}
+\qquad
+\Dtrigonal{0==C;1D==O;2==Cl;3==F}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-22.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-22.ltx
new file mode 100644
index 00000000000..99a118eea74
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-22.ltx
@@ -0,0 +1,16 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {aliphat}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {aliphat}
+\ethylene{1==C;2==C}
+ {1==F;2==Cl;3==H;4==Br}
+\qquad
+\ethylenev[t{2+}]{1==C;2==N}
+ {1==H$_3$C;2==CH$_3$;3==H}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-23.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-23.ltx
new file mode 100644
index 00000000000..04e2b342678
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-23.ltx
@@ -0,0 +1,19 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {aliphat}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {aliphat}
+\setlength\unitlength{0.1pt}
+\tetrastereo{1==F;%
+ 2==Cl;3==H;4==Br}
+\dtetrastereo{1==F;%
+ 2==Cl;3==H;4==Br}
+\ethanestereo{1==C;2==C}
+ {1==F;2==Cl;3==H;4==Br;%
+ 5==Ph;6==H}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-24.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-24.ltx
new file mode 100644
index 00000000000..0380662f4a4
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-24.ltx
@@ -0,0 +1,14 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {hetarom}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {hetarom}
+\sixunitv[b]{1==N}{1==H;2==F}{d}
+\fiveunitv[b]{}{1D==O;2==Cl}{d}
+\fiveunitvi[b]{}{1D==O;2==Cl}{d}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-3.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-3.ltx
new file mode 100644
index 00000000000..3dc108e5673
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-3.ltx
@@ -0,0 +1,17 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {carom,epic}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {carom,epic}
+\cyclohexanev{1==1;%
+ 2D==2D;%
+ 3A==3A;%
+ 4B==4B;%
+ 5Sa==5Sa;5Sb==5Sb;%
+ 6SA==6SA;6SB==6SB}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-4.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-4.ltx
new file mode 100644
index 00000000000..1c6943d33d4
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-4.ltx
@@ -0,0 +1,15 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {carom}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {carom}
+\cyclohexaneh
+ [bdf]{1==Br;4==Br}
+\cyclohexanev
+ [A]{1==Br;4==Br}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-5.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-5.ltx
new file mode 100644
index 00000000000..ec0d678f90e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-5.ltx
@@ -0,0 +1,18 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {hetarom,epic}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {hetarom,epic}
+\sixheterov[eb]{1==N}
+ {1D==O;
+ 4SA==MeO;4SB==OMe;
+ 5==Cl;
+ 6==Cl}
+\threehetero[H]{2==C}
+ {2Sa==COOH;2Sb==COOH}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-6.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-6.ltx
new file mode 100644
index 00000000000..e9845af44e1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-6.ltx
@@ -0,0 +1,13 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {hetarom,epic}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {hetarom,epic}
+\pyrazinev[l{1+}{4+}]
+ {1==H;4==H;2==Cl;6==Cl}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-7.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-7.ltx
new file mode 100644
index 00000000000..d3f57733b2e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-7.ltx
@@ -0,0 +1,15 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {epic,carom}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {epic,carom}
+\cyclohexanev
+ {1D==O;2Sa==F;2Sb==F}
+\cyclohexaneh[c]
+ {1==Cl;4==F;2==CH$_{3}$}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-8.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-8.ltx
new file mode 100644
index 00000000000..4ca6cf22ec8
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-8.ltx
@@ -0,0 +1,15 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {epic,carom}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {epic,carom}
+\naphdrv[ob]
+ {1Sb==Br;1Sa==Br;3D==O}
+\naphdrh[A]
+ {1==Cl;4==F;2==CH$_{3}$}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-9.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-9.ltx
new file mode 100644
index 00000000000..d359d929f48
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-2-9.ltx
@@ -0,0 +1,30 @@
+\documentclass{ppex}
+\nonstopmode
+\AtBeginDocument {\setlength \unitlength {0.09pt}}
+\usepackage {locant,carom}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {locant,carom}
+%\origpttrue
+\begin{picture}(1500,1600)(0,-200)
+{\small
+\put(0,0){\steroid{%
+1Sb==1Sb(l);1Sa==1;2Sb==2Sb(l);2Sa==2Sa(l);%
+3Sb==3Sb(l);3Sa==3Sa(l);4Sb==4Sb(l);4Sa==4;%
+5==5;6Sb==6;6Sa==6Sa(r);7Sb==7Sb(r);7Sa==7Sa(r);8==8;9==9;%
+{{10}}==10;{{11}Sb}==11Sb(l);{{11}Sa}==11;%
+{{12}Sa}==12;{{12}Sb}==12Sb(l);{{13}}==13;{{14}}==14;%
+{{15}Sa}==15Sa(r);{{15}Sb}==15Sb(r);%
+{{16}Sa}==16Sa(r);{{16}Sb}==16Sb(r);%
+{{17}Sa}==17Sa(r);{{17}Sb}==17}}}%
+{\footnotesize
+\put(0,0){\bdloocant{j}{k}{d}{c}{b}{a}}
+\put(342,0){\bdloocant{h}{g}{f}{e}{}{i}}
+\put(513,303){\bdloocant{n}{o}{p}{}{l}{m}}
+\put(855,303){\bdloocant{s}{r}{}{}{}{t}}
+\put(1255,603){q}}
+\end{picture}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-1.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-1.ltx
new file mode 100644
index 00000000000..d821f641364
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-1.ltx
@@ -0,0 +1,16 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {m-chemic}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {m-chemic}
+\setupchemical
+ [axis=on,border=on,scale=small,
+ size=medium]
+\startchemical
+ \chemical[FIVE,B,R,RZ][1,2,3,4,5]
+\stopchemical
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-10.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-10.ltx
new file mode 100644
index 00000000000..d48bdc760b5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-10.ltx
@@ -0,0 +1,14 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {m-chemic}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {m-chemic}
+\startchemical
+ \chemical[SIX,ROT2,B,R6,%
+ SUB1,FIVE,B,R4]
+\stopchemical
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-11.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-11.ltx
new file mode 100644
index 00000000000..c6667f50bc5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-11.ltx
@@ -0,0 +1,27 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {m-chemic}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {m-chemic}
+\setupchemical[size=small,
+ width=fit,height=5500,under=1500]
+\mbox{%
+ \startchemical \chemical[SIX,B,ER6,RZ6][0]
+ \stopchemical
+ \startchemical \chemical[SPACE,PLUS,SPACE]
+ \stopchemical \startchemical
+ \chemical[FIVE,ROT4,B125,+SB3,-SB4,Z4,%
+ SR4,RZ4][N,H]
+ \stopchemical
+ \startchemical
+ \chemical[SPACE,GIVES,SPACE][?]
+ \stopchemical \startchemical
+ \chemical[SIX,B,EB6,R6,SUB4,FIVE,ROT4,%
+ B125,+SB3,-SB4,Z4][N]
+ \stopchemical
+}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-12.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-12.ltx
new file mode 100644
index 00000000000..427f7560768
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-12.ltx
@@ -0,0 +1,17 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {m-chemic}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {m-chemic}
+\startchemical[width=fit]
+\chemical
+ [SIX,B,C,ADJ1,FIVE,ROT3,SB34,
+ +SB2,-SB5,Z345,DR35,SR4,CRZ35,
+ SUB1,ONE,OFF1,SB258,Z0,Z28]
+ [C,N,C,O,O,CH,COOC_2H_5,COOC_2H_5]
+\stopchemical
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-13.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-13.ltx
new file mode 100644
index 00000000000..51dca898f17
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-13.ltx
@@ -0,0 +1,19 @@
+\documentclass{ppex}
+\nonstopmode
+\iffalse *** Next code line only needed with older version
+of the chemical macros if they produce slanted characters ***
+\makeatletter \let \@@chemiechemiestyle\mathrm \makeatother
+\fi
+\usepackage {m-chemic}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {m-chemic}
+\[ \chemical{2H_2}{}
+ \chemical{PLUS}{}
+ \chemical{O_2}{}
+ \chemical{GIVES}{}
+ \chemical{2H_2O}{} \]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-14.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-14.ltx
new file mode 100644
index 00000000000..f1b8432f96b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-14.ltx
@@ -0,0 +1,19 @@
+\documentclass{ppex}
+\nonstopmode
+\iffalse *** Next code line only needed with older version
+of the chemical macros if they produce slanted characters ***
+\makeatletter \let \@@chemiechemiestyle\mathrm \makeatother
+\fi
+\usepackage {m-chemic}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {m-chemic}
+\[ \chemical{2H_2}{hydrogen}
+ \chemical{PLUS}{}
+ \chemical{O_2}{oxygen}
+ \chemical{GIVES}{violent}
+ \chemical{2H_2O}{} \]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-2.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-2.ltx
new file mode 100644
index 00000000000..18c08aa6f03
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-2.ltx
@@ -0,0 +1,15 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {m-chemic}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {m-chemic}
+\setupchemical[axis=on]
+\startchemical
+ [width=6000,scale=small,size=medium]
+ \chemical[CARBON,CB1][A,B,C,D,E,F]
+\stopchemical
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-3.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-3.ltx
new file mode 100644
index 00000000000..ee3f8b394da
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-3.ltx
@@ -0,0 +1,53 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {m-chemic}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {m-chemic}
+\setupchemical[axis=off,border=on,scale=small,size=small]
+\begin{tabular}{cccc}
+\startchemical
+ \chemical[ONE,SB][1,2,3,4,5,6,7,8]
+\stopchemical
+&
+\startchemical
+ \chemical[THREE,B,R,RZ][1,2,3]
+\stopchemical
+&
+\startchemical
+ \chemical[FOUR,B,R,RZ][1,2,3,4,6]
+\stopchemical
+&
+\startchemical
+ \chemical[FIVE,B,R,RZ][1,2,3,4,5]
+\stopchemical
+\\
+{ONE} &
+{THREE} &
+{FOUR} &
+{FIVE} \\[5pt]
+\startchemical
+ \chemical[SIX,B,R,RZ][1,2,3,4,5,6]
+\stopchemical
+&
+\startchemical
+ \chemical[CARBON,CB][1,2,3,4]
+\stopchemical
+&
+\startchemical
+ \chemical[NEWMAN,CB][1,2,3,4,5,6]
+\stopchemical
+&
+\startchemical
+ \chemical[EQUILIBRIUM][1,2]
+\stopchemical
+\\
+{SIX} &
+{CARBON} &
+{NEWMAN} &
+{EQUILIBRIUM}
+\end{tabular}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-4.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-4.ltx
new file mode 100644
index 00000000000..5c3423d1ecb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-4.ltx
@@ -0,0 +1,17 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {m-chemic}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {m-chemic}
+\startchemical[scale=small,size=medium]
+ \chemical[SIX,B1,B2,B3,B4,B5,B6]
+ \qquad\qquad\qquad
+ \chemical[SIX,B135]
+ \qquad\qquad\qquad
+ \chemical[SIX,B1..5]
+\stopchemical
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-5.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-5.ltx
new file mode 100644
index 00000000000..f82697a9592
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-5.ltx
@@ -0,0 +1,18 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {m-chemic}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {m-chemic}
+\startchemical[scale=small,size=medium]
+ \chemical[SIX,B1..6,R1..6]
+\qquad\qquad\qquad
+ \chemical[SIX,B1..5,R12,RZ12][A]
+\qquad\qquad\qquad\qquad
+ \chemical[SIX,B1..6,R1..6,RZ1..3]
+ [CH_3,CH_3,OH]
+\stopchemical
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-6.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-6.ltx
new file mode 100644
index 00000000000..7c333449d13
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-6.ltx
@@ -0,0 +1,18 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {m-chemic}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {m-chemic}
+\definechemical[sixring]
+ {\chemical[SIX,B,R,RZ]}
+\startchemical[size=small]
+ \chemical[sixring]
+\qquad\qquad\qquad\qquad\qquad
+ \chemical[sixring]
+ [R_1,R_2,R_3,R_4,R_5,R_6]
+\stopchemical
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-7.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-7.ltx
new file mode 100644
index 00000000000..a3679f743a1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-7.ltx
@@ -0,0 +1,17 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {m-chemic}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {m-chemic}
+\definechemical[sixring]
+ {\chemical[SIX,B,R,RZ135]%
+ [R_1,R_3,R_5]}
+\startchemical[size=small]
+ \chemical[sixring,SIX,RZ246]
+ [A,B,C]
+\stopchemical
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-8.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-8.ltx
new file mode 100644
index 00000000000..a45f32e3b2d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-8.ltx
@@ -0,0 +1,13 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {m-chemic}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {m-chemic}
+\startchemical[size=small]
+ \chemical[SIX,B,MOV1,B]
+\stopchemical
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-9.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-9.ltx
new file mode 100644
index 00000000000..727fca6430a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-3-9.ltx
@@ -0,0 +1,15 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {m-chemic}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {m-chemic}
+\mbox{\startchemical[size=small]
+ \chemical[SIX,B,ADJ1,FIVE,B]
+\stopchemical\startchemical
+ \chemical[SIX,B,ADJ1,FIVE,ROT3,B]
+\stopchemical}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-4-1.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-4-1.ltx
new file mode 100644
index 00000000000..6610b4d8299
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-4-1.ltx
@@ -0,0 +1,19 @@
+\documentclass{ppex}
+\nonstopmode
+\AtEndDocument {\end {fmffile}} \AtBeginDocument {\begin {fmffile}{ftmp}}
+\usepackage {feynmp}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {feynmp}
+\begin{fmfgraph*}(100,70)
+ \fmfleft{em,ep}
+ \fmf{fermion}{em,Zee,ep}
+ \fmf{photon,label=$Z$}{Zee,Zff}
+ \fmf{fermion}{fb,Zff,f}
+ \fmfright{fb,f}
+ \fmfdot{Zee,Zff}
+\end{fmfgraph*}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-4-2.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-4-2.ltx
new file mode 100644
index 00000000000..1c14dcd8b2f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-4-2.ltx
@@ -0,0 +1,25 @@
+\documentclass{ppex}
+\nonstopmode
+\AtEndDocument {\end {fmffile}} \AtBeginDocument {\begin {fmffile}{ftmp}}
+\usepackage {feynmp}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {feynmp}
+\begin{fmfgraph*}(100,60)
+ \fmfleftn{i}{2} \fmfrightn{o}{4}
+ \fmflabel{$e_-$}{i1}\fmflabel{$e_+$}{i2}
+ \fmflabel{$\mu_+$}{o1}
+ \fmflabel{$\nu_{\mu}$}{o2}
+ \fmflabel{$s$}{o3}
+ \fmflabel{$\bar c$}{o4}
+ \fmf{fermion}{i1,v1,i2}
+ \fmf{boson,label=$\gamma,,Z$}{v1,v2}
+ \fmf{boson}{v3,v2,v4}
+ \fmf{fermion}{o1,v3,o2}
+ \fmf{fermion}{o4,v4,o3}
+ \fmfdot{v1,v3,v4}\fmfblob{.12w}{v2}
+\end{fmfgraph*}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-4-3.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-4-3.ltx
new file mode 100644
index 00000000000..885a511e308
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-4-3.ltx
@@ -0,0 +1,38 @@
+\documentclass{ppex}
+\nonstopmode
+\AtEndDocument {\end {fmffile}} \AtBeginDocument {\begin {fmffile}{ftmp}}
+\usepackage {feynmp}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {feynmp}
+\fbox{\begin{fmfgraph}(100,40)
+ \fmfleft{w}\fmfright{e}
+ \fmf{boson}{w,vw}\fmf{boson}{ve,e}
+ \fmf{fermion,tension=.5}{vw,vn,ve,vs,vw}
+ \fmf{gluon}{vn,vs}
+ \fmffixed{(0,h)}{vn,vs}
+ \fmfdot{vw,vn,ve,vs}
+\end{fmfgraph}}
+\fbox{\begin{fmfgraph}(100,40)
+ \fmfleft{w}\fmfright{e}
+ \fmf{boson}{w,vw}\fmf{boson}{ve,e}
+ \fmf{phantom,left,tension=.4}{vw,ve,vw}
+ \fmfdot{vw,ve}
+ \fmffreeze
+ \fmfipath{pn,ps}\fmfipair{vn,vs}
+ \fmfiequ{pn}{vpath (__vw, __ve)}
+ \fmfiequ{ps}{vpath (__ve, __vw)}
+ \fmfiequ{vn}{point .5length(pn) of pn}
+ \fmfiequ{vs}{point .5length(ps) of ps}
+ \fmfi{fermion}{subpath (0,.5)*length(pn) of pn}
+ \fmfi{fermion}{subpath (.5,1)*length(pn) of pn}
+ \fmfi{fermion}{subpath (0,.5)*length(ps) of ps}
+ \fmfi{fermion}{subpath (.5,1)*length(ps) of ps}
+ \fmfi{gluon}{vn--vs}
+ \fmfiv{dec.sh=circle,dec.siz=2thick}{vn}
+ \fmfiv{dec.sh=circle,dec.siz=2thick}{vs}
+\end{fmfgraph}}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-5-1.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-5-1.ltx
new file mode 100644
index 00000000000..719153c24fc
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-5-1.ltx
@@ -0,0 +1,34 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {timing}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {timing}
+\begin{timing}[2s]{1.4cm}
+\tnote{0.5}{4}{$\mathrm{T}_1$}
+\tnote{0.5}{12}{$\mathrm{T}_2$}\tnote{0.5}{20}{$\mathrm{T}_i$}
+\tnote{0.5}{28}{$\mathrm{T}_1$}\tnote{0.5}{36}{$\mathrm{T}_2$}
+\tnote{0.5}{44}{$\mathrm{T}_i$}\tnote{0.5}{52}{$\mathrm{T}_1$}
+%% Clock ....1111....2222....iiii....1111....2222....iiii....1111
+\tin{1}{CLK} \til{1}{HHHHLLLLHHHHLLLLHHHHLLLLHHHHLLLLHHHHLLLLHHHHLLLLHHHHLLLL}
+%% Adresses line ....1111....2222....iiii....1111....2222....iiii....1111
+\tin{2}{ADDR} \til{2}{VVVVXVVVVVVVVVVVVVVVXVVVVVVVXVVVVVVVVVVVVVVVXVVVVVVXVVVV}
+\tnote{1.85}{10}{Valid}\tnote{1.85}{22}{Invalid}%
+\tnote{1.85}{34}{Valid}\tnote{1.85}{46}{Invalid}
+%% Adresses status ....1111....2222....iiii....1111....2222....iiii....1111
+\tin{3}{ADS\#} \til{3}{HHHHLLLLLLLLHHHHHHHHHHHHHHHHLLLLLLLLHHHHHHHHHHHHHHHHLLLL}
+%% Write/Read ....1111....2222....iiii....1111....2222....iiii....1111
+\tin{4}{W/R\#} \til{4}{HHHHLLLLLLLLLLLLLLLLFFFFFFFFHHHHHHHHHHHHHHHHFFFFFFFFLLLL}
+%% Burst ready ....1111....2222....iiii....1111....2222....iiii....1111
+\tin{5}{BRDY\#}\til{5}{UUUUUUUUUUUUZZZZZZZZUUUUUUUUUUUUUUUUZZZZZZZZUUUUUUUUUUUU}
+%% Data lines ....1111....2222....iiii....1111....2222....iiii....1111
+\tin{6}{DATA} \til{6}{ZZZZZZZZZZZZVVVVVVVVZZZZZZZZZZZZZZZZVVVVVVVVZZZZZZZZZZZZ}
+\tnote{5.85}{14}{To CPU}\tnote{5.85}{37}{From CPU}
+\sline{0.6}{0}{6.}\sline{0.6}{8}{6.}\sline{0.3}{16}{5.5}\sline{0.6}{24}{1.5}
+\sline{2.1}{24}{6.}\sline{0.6}{32}{6.}\sline{0.3}{40}{5.5}\sline{0.6}{48}{1.5}
+\sline{2.1}{48}{6.}\sline{0.6}{56}{6.}
+\end{timing}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-6-1.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-6-1.ltx
new file mode 100644
index 00000000000..2c479a9bf79
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-6-1.ltx
@@ -0,0 +1,47 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [basic,box,gate,ic,optics]{circ} \usepackage {xspace}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [basic,box,gate,ic,optics]{circ} \usepackage {xspace}
+\providecommand{\Lcs}[1]{\mbox{\normalfont\ttfamily\char'134#1}}
+\def\Clpin#1 {\expandafter\atpin\CNAME#1 \lpin{#1} }
+\def\Crpin#1 {\expandafter\atpin\CNAME#1 \rpin{#1} }
+\newcommand{\CC}[3]{%
+ \circuit0 \csname#1\endcsname1 #2 #3 \endcircuit}
+\newcommand{\CCX}[3]{%
+ \circuit0 \csname#1\endcsname1 {X} #2 #3 \endcircuit}
+
+\begin{tabular}{@{}lllll@{}}
+%\hline
+(variable) resistor & \Lcs{R} & \CCX{R}{h}{}
+ & \Lcs{Rvar} & \CCX{Rvar}{S}{r}\\
+(variable) capacitor & \Lcs{C} & \CCX{C}{v}{}
+ & \Lcs{Cvar} & \CCX{Cvar}{v}{} \\
+electrolytic capacitor& \Lcs{Cel} & \CCX{Cel}{u}{} \\
+(Zener) diode & \Lcs{D} & \CCX{D}{u}{}
+ & \Lcs{ZD}& \CCX{ZD}{u}{}\\
+light-emitting diode & \Lcs{LED} & \CCX{LED}{u}{} \\
+capacitance-variation diode & \Lcs{Dcap} & \CCX{Dcap}{u}{}\\
+(variable) voltage source & \Lcs{U} & \CCX{U}{u}{}
+ & \Lcs{Uvar} &\CCX{Uvar}{u}{}\\
+(variable) current source & \Lcs{I} & \CCX{I}{v}{}
+ & \Lcs{IvaR} & \CCX{Ivar}{v}{}\\
+voltmeter, amperemeter & \Lcs{V} & \CCX{I}{v}{}
+ & \Lcs{A} & \CCX{A}{v}{} \\
+coil, switch & \Lcs{L} & \CCX{L}{u}{}
+ & \Lcs{S} & \CCX{S}{v}{} \\
+quartz crystal & \Lcs{Q} & \CCX{Q}{h}{} \\
+incandescent lamp & \Lcs{La} & \CCX{La}{v}{} \\
+npn- pnp-transistor& \Lcs{npn} & \qquad\CCX{npn}{B}{r}
+ & \Lcs{pnp} & \qquad\CCX{pnp}{B}{r}\\
+n- p-channel FET & \Lcs{nfet} & \qquad\CCX{nfet}{G}{r}
+ & \Lcs{pfet} & \qquad\CCX{pfet}{G}{r}\\
+n- p-channel VMOS&\Lcs{nvmos} & \qquad\CCX{nvmos}{G}{r}
+ &\Lcs{pvmos} & \qquad\CCX{pvmos}{G}{r}\\
+%\hline
+\end{tabular}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-6-2.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-6-2.ltx
new file mode 100644
index 00000000000..57811b4e127
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-6-2.ltx
@@ -0,0 +1,38 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [basic,box,gate,ic,optics]{circ} \usepackage {xspace}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [basic,box,gate,ic,optics]{circ} \usepackage {xspace}
+\providecommand{\Lcs}[1]{\mbox{\normalfont\ttfamily\char'134#1}}
+\def\Clpin#1 {\expandafter\atpin\CNAME#1 \lpin{#1} }
+\def\Crpin#1 {\expandafter\atpin\CNAME#1 \rpin{#1} }
+\begin{tabular}{@{}cccc@{}}
+\def\CNAME{NRSFF}\circuit0
+\NRSFF1 {X} S
+ {\Clpin S \Clpin R \Crpin Q \Crpin NQ}
+\endcircuit
+&
+\def\CNAME{DFF1}\circuit0
+\DFF1 {X} C
+ {\Clpin C \Clpin D \Crpin Q \Crpin NQ}
+\endcircuit
+&
+\def\CNAME{JKMSFF1}\circuit0
+\JKMSFF1 {X} R
+ {\Clpin S \Clpin J \Clpin C \Clpin K \Clpin R \Crpin Q \Crpin NQ }
+\endcircuit
+&
+\def\CNAME{fff1}\circuit0
+\fff1 {X} R
+ {\Clpin IS \Clpin IT \Clpin R \Crpin OK \Crpin O \Crpin OD }
+\endcircuit\mbox{}\\[2mm]
+\rule{0mm}{5mm}\Lcs{NRFSS} & \Lcs{DFF} &
+\Lcs{JKMSFF} & \Lcs{fff}\\[2mm]
+RS-flip-flop & D-flip-flop &
+JK master-slave flip-flop & timer NE\,555\\
+\end{tabular}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-6-3.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-6-3.ltx
new file mode 100644
index 00000000000..f9559ca34f2
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-6-3.ltx
@@ -0,0 +1,36 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [basic,box,gate,ic,optics]{circ} \usepackage {xspace}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [basic,box,gate,ic,optics]{circ} \usepackage {xspace}
+\providecommand{\Lcs}[1]{\mbox{\normalfont\ttfamily\char'134#1}}
+\newcommand{\CC}[3]{%
+ \circuit0 \csname#1\endcsname1 #2 #3 \endcircuit}
+\newcommand{\CCX}[3]{%
+ \circuit0 \csname#1\endcsname1 {X} #2 #3 \endcircuit}
+
+\renewcommand{\arraystretch}{1.5}
+\def\R#1{\raisebox{-3pt}{#1}}
+\begin{tabular}{@{}lllll@{}}
+(half) thin lens & \Lcs{SLens} & \R{\CCX{SLens}{v}{}}
+ & \Lcs{HSLens}& \R{\CCX{HSLens}{u}{}}\\
+(half) thick lens & \Lcs{BLens} & \R{\CCX{BLens}{v}{}}
+ & \Lcs{HBLens}& \R{\CCX{HBLens}{u}{}}\\
+(half) concave lens & \Lcs{VLens} & \R{\CCX{VLens}{v}{}}
+ & \Lcs{HVLens}& \R{\CCX{HVLens}{u}{}}\\
+polarizer, pinhole & \Lcs{Polar} & \R{\CCX{Polar}{v}{}}
+ & \Lcs{Pinhole}&\R{\CCX{Pinhole}{v}{}}\\
+beam splitter & \Lcs{BSplit}&\CCX{BSplit}{*}{d} \\
+camera & \Lcs{Cam} & \CCX{Cam}{u}{} \\
+screens (look behind)& \Lcs{ScrL} & \R{\CCX{ScrL}{v}{}}
+ & \Lcs{ScrR} & \R{\CCX{ScrR}{v}{}} \\
+screens (look through)& \Lcs{ScrTL}& \R{\CCX{ScrTL}{v}{}}
+ & \Lcs{ScrTR} & \R{\CCX{ScrTR}{v}{}} \\
+laser, photometer & \Lcs{Laser} & \CCX{Laser}{h}{}
+ & \Lcs{PM} & \CCX{PM}{h}{} \\
+\end{tabular}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-6-4.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-6-4.ltx
new file mode 100644
index 00000000000..c8bae701354
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-6-4.ltx
@@ -0,0 +1,33 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [basic]{circ}
+\pagestyle{empty}
+\setlength\textwidth{135.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [basic]{circ}
+\begin{circuit}{0}
+\npn1 {?} B l % transistor in the center
+\frompin npn1C % draw from the collector
+\- 1 u % a little line up
+\nl\A1 {$I_C$} v % meter for collector current
+\atpin npn1B % next draw from base
+\- 1 l % a little line left
+\<\R1 {510 k$\Omega$} h % resistance on base
+\- 1 l % one more little line left
+\centerto A1 % and align on first A-meter
+\nl\A2 {$I_B$} v % draw second A-meter
+\frompin A2d % connect second A-meter to
+\vtopin R1l % resistance.
+\frompin A1u
+\- 1 u \.1 % Connection point
+\frompin A2u
+\vtopin .1
+\htopin .1 % connect second A-meter to 1.
+\- 1 u \cc\connection1
+ {$U_b$} u % connect to voltage
+\frompin npn1E % connect emitter to ground
+\- 1 d \GND1 % ground
+\end{circuit}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-6-5.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-6-5.ltx
new file mode 100644
index 00000000000..d6fa8516d44
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-6-5.ltx
@@ -0,0 +1,42 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [basic,optics]{circ}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [basic,optics]{circ}
+\begin{circuit}{0}
+ \nl\Laser1 {} h % laser
+ \oa 2 r % optical axis
+ \Polar1 {} h % polarizer
+ \oa 2 r
+ \nl\OM1 P1 {} {} {} {} h % optical modulator
+ \atpin OM1P3
+ \oa 4 r
+ \cc\BLens1 {} h % 1. lens
+ \oa 2 r
+ \nl\Pinhole1 {} h % pinhole
+ \oa 7 r
+ \cc\SLens2 {} h % 2. lens
+ \oa 1 r
+ \Polar2 {} h % analyzer
+ \oa 3 r
+ \oa 3 r
+ \nl\BSplit1 {} + d % beam splitter
+ \atpin BSplit1+ % continue drawing right
+ \oa 2 r
+ \nl\Cam1 {camera} l % camera
+ \atpin BLens1: \shift 0 2 \P3 % mark middle of 1. lens
+ \atpin Pinhole1: \shift 0 2 \P4 % mark middle of pinhole
+ \atpin SLens2: \shift 0 2 \P5 % mark middle of 2. lens
+ \Dtext{\small $f_1$} from P3 to P4 % f_1
+ \Dtext{\small $f_2$} from P4 to P5 % f_2
+ \atpin BSplit1. % second part of beam down
+ \oa 5 d
+ \Mirror1 {} * R % mirror
+ \oa 2 r
+ \nl\ScrL1 {screen} h % white screen
+\end{circuit}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-6-6.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-6-6.ltx
new file mode 100644
index 00000000000..bdb6c0eabf0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-6-6.ltx
@@ -0,0 +1,46 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [basic,box,gate,ic,optics]{circ}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [basic,box,gate,ic,optics]{circ}
+\begin{circuit}{0}
+\.1 \- 1 r \nl\cc\R1 {R} h
+\frompin .1 \- 3 l \- 2 d \<\nl\R9 {2R} v \- 10 d \.7
+\frompin .7 \- 3 l \cc\U0 {} u
+\frompin .1 \- 2 d \<\nl\cc\R2 {2\,R} v \nl\SW1 {} s U
+\frompin SW1c \vtopin U0+ \.8
+\frompin SW1o \vtopin U0- \.9
+ \iffalse
+\frompin R1r \- 1 r
+\.2 \- 1 r \nl\cc\R3 {R} h
+\frompin .2 \- 2 d \<\nl\cc\R4 {2\,R} v \nl\SW2 {} s u
+\frompin SW2c \vtopin U0- \.10
+\frompin SW2o \vtopin U0+ \.11
+ \fi
+\frompin R1r \- 1 r
+\.3 \- 1 r \nl\cc\R5 {R} h
+\frompin .3 \- 2 d \<\nl\cc\R6 {2\,R} v \nl\SW3 {} s u
+\frompin SW3c \vtopin U0- \.12
+\frompin SW3o \vtopin U0+ \.13
+
+\frompin R5r \- 1 r
+\.4 \- 2 r \nl\cc\R7 {R$_1$= 2R} h
+\frompin .4 \- 2 d \<\nl\cc\R8 {2\,R} v \nl\SW4 {} s U
+\frompin SW4c \vtopin U0+ \htopin U0+
+\frompin SW4o \vtopin U0- \.15
+
+\frompin R7r \- 1 r \nl\whatI1 {I} r
+\- 1 r \.5 \- 1 r \nl\OV1 {} - {} {} {}
+\frompin .5 \- 3 u \centerto OV1 \nl\cc\R10 {R$_2$} h
+\frompin R10l \htopin .5
+\atpin OV1O \.6 \vtopin R10r \htopin R10r
+\frompin .6 \- 1 r \connection1 {$U_a$} r
+\frompin OV1+ \- 1 l \- 3 d \<\nl\cc\R11 {R$_3$} v
+\frompin R11d \vtopin .7 \.8 \GND1 \frompin .7 \htopin .8
+\frompin .7 \- 3 l \cc\U0 {} u
+\end{circuit}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-6-7.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-6-7.ltx
new file mode 100644
index 00000000000..3bb746d110a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-6-7.ltx
@@ -0,0 +1,99 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage [basic,box,gate,ic,optics]{circ} \usepackage {xspace}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage [basic,box,gate,ic,optics]{circ} \usepackage {xspace}
+%% Here are some CIRC relevant definitions !!!!
+\def\atmathdef#1 #2 #3 #4{%
+ \expandafter\def\csname#1\endcsname{\relax\ifmmode#2\else$#2$\fi\xspace}%
+ \expandafter\def\csname#1doc\endcsname{\csname#1\endcsname & #3\\}%
+ % pr\"apariert Abk\"urzung f\"ur Abk\"urzungsverzeichnis
+ % (mu\ss{} in 2-spaltige Tabelle als eigenst\"andige Zeile eingef\"ugt
+ % werden.)
+ \expandafter\def\csname#1art\endcsname{#4\xspace}% der Artikel
+ \expandafter\def\csname#1txt\endcsname{#3\xspace}% der beschreibende Text
+ \expandafter\def\csname#1my\endcsname%
+ {{\tt\char92#1} & \csname#1doc\endcsname}}
+ % pr\"apariert Abk\"urzung f\"ur "Merkzettel"
+ % (3-spaltige Tabelle!!)
+
+\atmathdef Cmess {\mathrm{C}_m} {linearer Me\ss{}kondensator} {}
+\atmathdef Cnl {C_{nl}} {nichtlineare Kapazit\"at der Probe} {die}
+\atmathdef Geins {\mathrm{G_1}} {Generator, mit dem der Schwingkreis angeregt
+wird} {der}
+\atmathdef Gzwei {\mathrm{G_2}} {Generator, mit dem die Stroboskopfrequenz
+erzeugt wird} {der}
+\atmathdef LO {\mathrm{L}} {Induktivitt der linearen Spule} {die}
+\atmathdef Leins {\mathrm{L_1}} {1. Linse beim \VierFAuf} {die}
+\atmathdef Lzwei {\mathrm{L_2}} {2. Linse beim \VierFAuf} {die}
+\atmathdef Poinc {\goth{P}} {Poincar\'e-Ebene} {die}
+\atmathdef Peins {\mathrm{P_1}} {Polarisator} {der}
+\atmathdef Pzwei {\mathrm{P_2}} {Analysator} {der}
+\atmathdef Rmess {\mathrm{R}_m} {linearer Me\ss{}widerstand} {}
+\atmathdef T {T} {Periodendauer der Schwingung} {die}
+\atmathdef TC {\mathrm{T_C}} {kritische Temperatur} {die}
+
+\freecirc
+\def\extracircinit{\font\c*fnta=wind scaled \*mag}
+\bbdefNeT Impulse \c*fntb 250 \vbox{\hc*{\symfont G}\kern1.5\*spc%
+ \hc*{\c*fnts\char4}}
+\cdef Probe Probe \c*fnta 1
+\protectcirc
+\def\wirestack#1#2{\vbox{\hbox{\tiny #1}\hbox{\tiny\rule{0mm}{2.5mm}#2}}}
+\def\MHz{MHz}
+ \begin{circuit}{0}
+ % optischer Teil
+ \nl\Laser1 {} h \oa 2 r % Laser
+ \cc\nl\Polar1 {\Peins} h \oa 2 r % Polarisator
+ \nl\OM1 P1 {} {} {} {} h % optischer Modulator
+ \atpin OM1P3 \oa 6 r %
+ \nl\SLens1 {} h \oa 1 r % 1. Linse
+ \nl\Probe1 {{\small \Cnl}} h \oa 7 r % Probe
+ \nl\SLens2 {} h \oa 1 r % 2. Linse
+ \nl\cc\Polar2 {\Pzwei} h \oa 3 r % Analysator
+ \nl\Cam1 {Camera} l % Kamera
+ \atpin SLens1: \shift 0 2 \P1 % Mitte 1. Linse markieren
+ \atpin Probe1: \shift 0 2 \P2 % Mitte Probe markieren
+ \atpin SLens2: \shift 0 2 \P3 % Mitte 2. Linse markieren
+ \Dtext{\small $f_1$} from P1 to P2 % f_1
+ \Dtext{\small $f_2$} from P2 to P3 % f_2
+ % Generatoren
+ \atpin OM1P2
+ \wwire {} 2 d % Verbindung OM Impulsgenerator
+ \Impulse1 P4 {} {} {} {} % Impulsgenerator
+ \atpin Impulse1P2
+ \wwire {\wirestack{$\Delta$f$_0$}{$\Delta\varphi$}} 3 d
+ % Verbindung zum 2. Generator
+ \Gvar2 P4 {} {} {\Gzwei} {} % 2. Generator
+ \atpin Gvar2P2
+ \wwire {\wirestack{63\MHz}{Timer}} 3 d % Verbindung zum 1. Generator
+ \Gvar1 P4 {} {} {\Geins} {} % 1. Generator
+ % Schwingkreis
+ \atpin Gvar1P3 \- 2 r % Eingangssignal Schwingkreis
+ \nl\L1 {{\small \LO}} l % Spule
+ \htopin Probe1l \vtopin Probe1l % hoch zur Probe
+ \atpin Probe1r \vtopin L1* \.1 \- 3 r % runter
+ \nl\C2 {{\small \Cmess $\gg$ \Cnl}} h \- 3 r % Me^^e1kondensator
+ \.2 \- 3 r % Abgriff dD/dt
+ \nl \R1 {{\small \Rmess $\ll \frac{1}{\omega \mathrm C_{m}}$}} h % R
+ \- 3 r
+ \P4 % Marke zum Anknippern
+ % KO
+ \atpin .2 \- 5 d % dD/dt zum KOy
+ \oscillograph1 P4 {$U \sim D$} {} {} {$U \sim j$} % KO
+ \atpin oscillograph1P1 \htopin .1 \vtopin .1 % KOx zu D
+ \atpin oscillograph1P2 \- 1 d % KOy - Masseleitung
+ \.3 \- 3 r % zum Massegnubbel
+ \.4 \- 1 d % zur Masse
+ \gnd {} % Masse
+ \atpin Gvar1P1 \- 2 l % Generatormasse
+ \vtopin .3 \htopin .3 % Masseleitung
+ \atpin .4 \vtopin oscillograph1P3 \.5 % hoch zur KOx-Masse
+ \atpin P4 \vtopin oscillograph1P3 % von R1 ...
+ \htopin oscillograph1P3 % ... zur KOx-Masse
+ \end{circuit}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-1.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-1.ltx
new file mode 100644
index 00000000000..a1d5eed2e9d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-1.ltx
@@ -0,0 +1,90 @@
+\documentclass{ppex}
+\nonstopmode
+
+\pagestyle{empty}
+\setlength\textwidth{135.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+
+\expandafter\ifx\csname graph\endcsname\relax \csname newbox\endcsname\graph\fi
+\expandafter\ifx\csname graphtemp\endcsname\relax \csname newdimen\endcsname\graphtemp\fi
+\setbox\graph=\vtop{\vskip 0pt\hbox{%
+ \special{pn 11}%
+ \special{pa 950 738}%
+ \special{pa 650 738}%
+ \special{fp}%
+ \special{ar 500 738 150 150 0 6.28319}%
+ \special{pa 350 738}%
+ \special{pa 50 738}%
+ \special{fp}%
+ \graphtemp=\baselineskip\multiply\graphtemp by 1\divide\graphtemp by 2
+ \advance\graphtemp by .5ex\advance\graphtemp by 0.738in
+ \rlap{\kern 0.725in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$-$\hbox{$\:$}\hss}}%
+ \graphtemp=\baselineskip\multiply\graphtemp by 1\divide\graphtemp by 2
+ \advance\graphtemp by .5ex\advance\graphtemp by 0.888in
+ \rlap{\kern 0.500in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$v_s$\hbox{$\:$}\hss}}%
+ \graphtemp=\baselineskip\multiply\graphtemp by 1\divide\graphtemp by 2
+ \advance\graphtemp by .5ex\advance\graphtemp by 0.738in
+ \rlap{\kern 0.275in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$+$\hbox{$\:$}\hss}}%
+ \special{pa 50 738}%
+ \special{pa 50 538}%
+ \special{pa 0 513}%
+ \special{pa 100 463}%
+ \special{pa 0 413}%
+ \special{pa 100 363}%
+ \special{pa 0 313}%
+ \special{pa 100 263}%
+ \special{pa 50 238}%
+ \special{pa 50 38}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 0.388in
+ \rlap{\kern 0.000in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$R$\hbox{$\:$}}}%
+ \special{pa 50 738}%
+ \special{pa 50 571}%
+ \special{fp}%
+ \special{sh 1.000}%
+ \special{pa 25 671}%
+ \special{pa 50 571}%
+ \special{pa 75 671}%
+ \special{pa 25 671}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 0.621in
+ \rlap{\kern 0.050in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$i$\hbox{$\:$}}}%
+ \special{pa 50 38}%
+ \special{pa 350 38}%
+ \special{fp}%
+ \special{ar 387 38 37 37 -3.141593 -0.000000}%
+ \special{ar 462 38 38 38 -3.141593 -0.000000}%
+ \special{ar 538 38 37 37 -3.141593 -0.000000}%
+ \special{ar 612 38 38 38 -3.141593 -0.000000}%
+ \special{pa 650 38}%
+ \special{pa 950 38}%
+ \special{fp}%
+ \graphtemp=\baselineskip\multiply\graphtemp by 1\divide\graphtemp by 2
+ \advance\graphtemp by .5ex\advance\graphtemp by 0.038in
+ \rlap{\kern 0.500in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$L$\hbox{$\:$}\hss}}%
+ \special{pa 950 38}%
+ \special{pa 950 358}%
+ \special{fp}%
+ \special{pa 875 358}%
+ \special{pa 1025 358}%
+ \special{fp}%
+ \special{ar 950 547 150 150 -2.094395 -1.047198}%
+ \special{pa 950 397}%
+ \special{pa 950 738}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 0.283in
+ \rlap{\kern 0.950in\lower\graphtemp\hbox to 0pt{\hbox{$\:$}$+$\hbox{$\:$}\hss}}%
+ \graphtemp=.5ex\advance\graphtemp by 0.388in
+ \rlap{\kern 1.025in\lower\graphtemp\hbox to 0pt{\hbox{$\:$}$v_C$\hbox{$\:$}\hss}}%
+ \graphtemp=.5ex\advance\graphtemp by 0.493in
+ \rlap{\kern 0.950in\lower\graphtemp\hbox to 0pt{\hbox{$\:$}$-$\hbox{$\:$}\hss}}%
+ \graphtemp=.5ex\advance\graphtemp by 0.388in
+ \rlap{\kern 0.875in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$C$\hbox{$\:$}}}%
+ \hbox{\vrule depth0.888in width0pt height 0pt}%
+ \kern 1.025in
+ }%
+}%
+\usebox{\graph}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-1.m4 b/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-1.m4
new file mode 100644
index 00000000000..fc219e6767d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-1.m4
@@ -0,0 +1,20 @@
+\documentclass{ppex}
+\nonstopmode
+
+\pagestyle{empty}
+\setlength\textwidth{135.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+
+.PS
+cct_init
+define(`dimen_',0.6)
+loopwid = 0.9; loopht = 0.7
+ source(left_ loopwid); llabel(-,v_s,+)
+ resistor(up_ loopht); llabel(,R,); b_current(i)
+ inductor(right_ loopwid,L); rlabel(,L,)
+ capacitor(down_ loopht,C); llabel(+,v_C,-); rlabel(,C,)
+.PE
+\usebox{\graph}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-2.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-2.ltx
new file mode 100644
index 00000000000..e6ed66c122f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-2.ltx
@@ -0,0 +1,80 @@
+\documentclass{ppex}
+\nonstopmode
+
+\pagestyle{empty}
+\setlength\textwidth{111.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+
+\expandafter\ifx\csname graph\endcsname\relax \csname newbox\endcsname\graph\fi
+\expandafter\ifx\csname graphtemp\endcsname\relax \csname newdimen\endcsname\graphtemp\fi
+\setbox\graph=\vtop{\vskip 0pt\hbox{%
+ \special{pn 22}%
+ \special{pa 950 785}%
+ \special{pa 650 785}%
+ \special{fp}%
+ \special{ar 500 785 150 150 0 6.28319}%
+ \special{ar 450 785 50 50 -3.141593 -0.000000}%
+ \special{ar 550 785 50 50 -0.000000 3.141593}%
+ \special{pa 350 785}%
+ \special{pa 50 785}%
+ \special{fp}%
+ \graphtemp=\baselineskip\multiply\graphtemp by 1\divide\graphtemp by 2
+ \advance\graphtemp by .5ex\advance\graphtemp by 0.935in
+ \rlap{\kern 0.500in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$V_{ac}$\hbox{$\:$}\hss}}%
+ \special{pa 50 785}%
+ \special{pa 50 685}%
+ \special{pa 0 660}%
+ \special{pa 100 610}%
+ \special{pa 0 560}%
+ \special{pa 100 510}%
+ \special{pa 0 460}%
+ \special{pa 100 410}%
+ \special{pa 0 360}%
+ \special{pa 100 310}%
+ \special{pa 0 260}%
+ \special{pa 100 210}%
+ \special{pa 50 185}%
+ \special{pa 50 85}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 0.435in
+ \rlap{\kern 0.000in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$R$\hbox{$\:$}}}%
+ \special{pa 50 85}%
+ \special{pa 330 85}%
+ \special{fp}%
+ \special{ar 384 60 60 60 2.705260 7.155850}%
+ \special{ar 461 60 60 60 2.268928 7.155850}%
+ \special{ar 539 60 60 60 2.268928 7.155850}%
+ \special{ar 616 60 60 60 2.268928 6.719518}%
+ \special{pa 670 85}%
+ \special{pa 950 85}%
+ \special{fp}%
+ \graphtemp=\baselineskip\multiply\graphtemp by 1\divide\graphtemp by 2
+ \advance\graphtemp by .5ex\advance\graphtemp by 0.106in
+ \rlap{\kern 0.500in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$L$\hbox{$\:$}\hss}}%
+ \graphtemp=\baselineskip\multiply\graphtemp by -1\divide\graphtemp by 2
+ \advance\graphtemp by .5ex\advance\graphtemp by 0.000in
+ \rlap{\kern 0.500in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$iL\omega$\hbox{$\:$}\hss}}%
+ \special{pa 950 85}%
+ \special{pa 950 405}%
+ \special{fp}%
+ \special{pa 850 405}%
+ \special{pa 1050 405}%
+ \special{fp}%
+ \special{pa 850 465}%
+ \special{pa 1050 465}%
+ \special{fp}%
+ \special{pa 950 465}%
+ \special{pa 950 785}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 0.435in
+ \rlap{\kern 1.050in\lower\graphtemp\hbox to 0pt{\hbox{$\:$}$C$\hbox{$\:$}\hss}}%
+ \graphtemp=.5ex\advance\graphtemp by 0.435in
+ \rlap{\kern 0.850in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$\displaystyle\frac{1}{iC\omega}$\hbox{$\:$}}}%
+ \hbox{\vrule depth0.935in width0pt height 0pt}%
+ \kern 1.050in
+ }%
+}%
+\usebox{\graph}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-2.m4 b/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-2.m4
new file mode 100644
index 00000000000..b17b88396c3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-2.m4
@@ -0,0 +1,22 @@
+\documentclass{ppex}
+\nonstopmode
+
+\pagestyle{empty}
+\setlength\textwidth{111.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+
+.PS
+cct_init
+linethick=1.6
+define(`dimen_',0.6)
+loopwid = 0.9; loopht = 0.7
+ source(left_ loopwid,AC); llabel(,V_{ac},)
+ resistor(up_ loopht,5); llabel(,R,)
+ inductor(right_ loopwid,W); rlabel(,L,); llabel(,iL\omega,)
+ capacitor(down_ loopht,); llabel(,C,)
+ rlabel(,\displaystyle\frac{1}{iC\omega},)
+.PE
+\usebox{\graph}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-3.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-3.ltx
new file mode 100644
index 00000000000..e3f77c62ef4
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-3.ltx
@@ -0,0 +1,75 @@
+\documentclass{ppex}
+\nonstopmode
+
+\pagestyle{empty}
+\setlength\textwidth{111.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+
+\expandafter\ifx\csname graph\endcsname\relax \csname newbox\endcsname\graph\fi
+\expandafter\ifx\csname graphtemp\endcsname\relax \csname newdimen\endcsname\graphtemp\fi
+\setbox\graph=\vtop{\vskip 0pt\hbox{%
+ \special{pn 11}%
+ \special{pa 742 571}%
+ \special{pa 517 571}%
+ \special{fp}%
+ \special{ar 392 571 125 125 0 6.28319}%
+ \graphtemp=.5ex\advance\graphtemp by 0.571in
+ \rlap{\kern 0.454in\lower\graphtemp\hbox to 0pt{\hss $-$\hss}}%
+ \graphtemp=.5ex\advance\graphtemp by 0.571in
+ \rlap{\kern 0.329in\lower\graphtemp\hbox to 0pt{\hss $+$\hss}}%
+ \special{pa 267 571}%
+ \special{pa 42 571}%
+ \special{fp}%
+ \graphtemp=\baselineskip\multiply\graphtemp by 1\divide\graphtemp by 2
+ \advance\graphtemp by .5ex\advance\graphtemp by 0.696in
+ \rlap{\kern 0.392in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$V$\hbox{$\:$}\hss}}%
+ \special{pa 42 571}%
+ \special{pa 42 488}%
+ \special{pa 0 467}%
+ \special{pa 83 425}%
+ \special{pa 0 384}%
+ \special{pa 83 342}%
+ \special{pa 0 300}%
+ \special{pa 83 259}%
+ \special{pa 0 217}%
+ \special{pa 83 175}%
+ \special{pa 42 154}%
+ \special{pa 42 71}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 0.321in
+ \rlap{\kern 0.000in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$R$\hbox{$\:$}}}%
+ \special{pa 42 71}%
+ \special{pa 250 71}%
+ \special{fp}%
+ \special{ar 295 50 50 50 2.705260 7.155850}%
+ \special{ar 360 50 50 50 2.268928 7.155850}%
+ \special{ar 424 50 50 50 2.268928 7.155850}%
+ \special{ar 488 50 50 50 2.268928 6.719518}%
+ \special{pa 533 71}%
+ \special{pa 742 71}%
+ \special{fp}%
+ \graphtemp=\baselineskip\multiply\graphtemp by -1\divide\graphtemp by 2
+ \advance\graphtemp by .5ex\advance\graphtemp by 0.000in
+ \rlap{\kern 0.392in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$L$\hbox{$\:$}\hss}}%
+ \special{pa 742 71}%
+ \special{pa 742 296}%
+ \special{fp}%
+ \special{pa 658 296}%
+ \special{pa 825 296}%
+ \special{fp}%
+ \special{pa 658 346}%
+ \special{pa 825 346}%
+ \special{fp}%
+ \special{pa 742 346}%
+ \special{pa 742 571}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 0.321in
+ \rlap{\kern 0.825in\lower\graphtemp\hbox to 0pt{\hbox{$\:$}$C$\hbox{$\:$}\hss}}%
+ \hbox{\vrule depth0.696in width0pt height 0pt}%
+ \kern 0.825in
+ }%
+}%
+\usebox{\graph}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-3.m4 b/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-3.m4
new file mode 100644
index 00000000000..f0b8bc1eb31
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-3.m4
@@ -0,0 +1,22 @@
+\documentclass{ppex}
+\nonstopmode
+
+\pagestyle{empty}
+\setlength\textwidth{111.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+
+.PS
+cct_init
+
+gridsize = 0.1
+define(`grid',`(gridsize*`$1',gridsize*`$2')')
+
+ source(left_ from grid(7,0) to grid(0,0),V); llabel(,V,)
+ resistor(up_ from grid(0,0) to grid(0,5),4); llabel(,R,)
+ inductor(right_ from grid(0,5) to grid(7,5),W); llabel(,L,)
+ capacitor(down_ from grid(7,5) to grid(7,0)); llabel(,C,)
+.PE
+\usebox{\graph}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-4.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-4.ltx
new file mode 100644
index 00000000000..e593007f678
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-4.ltx
@@ -0,0 +1,169 @@
+\documentclass{ppex}
+\nonstopmode
+
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+
+\expandafter\ifx\csname graph\endcsname\relax \csname newbox\endcsname\graph\fi
+\expandafter\ifx\csname graphtemp\endcsname\relax \csname newdimen\endcsname\graphtemp\fi
+\setbox\graph=\vtop{\vskip 0pt\hbox{%
+ \special{pn 11}%
+ \special{pa 792 758}%
+ \special{pa 542 758}%
+ \special{fp}%
+ \special{ar 417 758 125 125 0 6.28319}%
+ \special{pa 292 758}%
+ \special{pa 42 758}%
+ \special{fp}%
+ \graphtemp=\baselineskip\multiply\graphtemp by 1\divide\graphtemp by 2
+ \advance\graphtemp by .5ex\advance\graphtemp by 0.883in
+ \rlap{\kern 0.417in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$V$\hbox{$\:$}\hss}}%
+ \special{pa 42 758}%
+ \special{pa 42 633}%
+ \special{pa 0 612}%
+ \special{pa 83 570}%
+ \special{pa 0 528}%
+ \special{pa 83 487}%
+ \special{pa 0 445}%
+ \special{pa 83 403}%
+ \special{pa 42 383}%
+ \special{pa 42 258}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 0.508in
+ \rlap{\kern 0.000in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$R$\hbox{$\:$}}}%
+ \special{pa 42 258}%
+ \special{pa 292 258}%
+ \special{fp}%
+ \special{ar 323 258 31 31 -3.141593 -0.000000}%
+ \special{ar 385 258 31 31 -3.141593 -0.000000}%
+ \special{ar 448 258 31 31 -3.141593 -0.000000}%
+ \special{ar 510 258 31 31 -3.141593 -0.000000}%
+ \special{pa 542 258}%
+ \special{pa 792 258}%
+ \special{fp}%
+ \graphtemp=\baselineskip\multiply\graphtemp by -1\divide\graphtemp by 2
+ \advance\graphtemp by .5ex\advance\graphtemp by 0.226in
+ \rlap{\kern 0.417in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$L$\hbox{$\:$}\hss}}%
+ \special{pa 792 258}%
+ \special{pa 792 483}%
+ \special{fp}%
+ \special{pa 708 483}%
+ \special{pa 875 483}%
+ \special{fp}%
+ \special{pa 708 533}%
+ \special{pa 875 533}%
+ \special{fp}%
+ \special{pa 792 533}%
+ \special{pa 792 758}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 0.508in
+ \rlap{\kern 0.875in\lower\graphtemp\hbox to 0pt{\hbox{$\:$}$C$\hbox{$\:$}\hss}}%
+ \special{pa 2404 819}%
+ \special{pa 2079 819}%
+ \special{fp}%
+ \special{ar 1917 819 163 163 0 6.28319}%
+ \special{pa 1754 819}%
+ \special{pa 1429 819}%
+ \special{fp}%
+ \graphtemp=\baselineskip\multiply\graphtemp by 1\divide\graphtemp by 2
+ \advance\graphtemp by .5ex\advance\graphtemp by 0.981in
+ \rlap{\kern 1.917in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$V$\hbox{$\:$}\hss}}%
+ \special{pa 1429 819}%
+ \special{pa 1429 656}%
+ \special{pa 1375 629}%
+ \special{pa 1483 575}%
+ \special{pa 1375 521}%
+ \special{pa 1483 467}%
+ \special{pa 1375 412}%
+ \special{pa 1483 358}%
+ \special{pa 1429 331}%
+ \special{pa 1429 169}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 0.494in
+ \rlap{\kern 1.375in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$R$\hbox{$\:$}}}%
+ \special{pa 1429 169}%
+ \special{pa 1754 169}%
+ \special{fp}%
+ \special{ar 1795 169 41 41 -3.141593 -0.000000}%
+ \special{ar 1876 169 41 41 -3.141593 -0.000000}%
+ \special{ar 1957 169 41 41 -3.141593 -0.000000}%
+ \special{ar 2039 169 41 41 -3.141593 -0.000000}%
+ \special{pa 2079 169}%
+ \special{pa 2404 169}%
+ \special{fp}%
+ \graphtemp=\baselineskip\multiply\graphtemp by -1\divide\graphtemp by 2
+ \advance\graphtemp by .5ex\advance\graphtemp by 0.128in
+ \rlap{\kern 1.917in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$L$\hbox{$\:$}\hss}}%
+ \special{pa 2404 169}%
+ \special{pa 2404 461}%
+ \special{fp}%
+ \special{pa 2296 461}%
+ \special{pa 2513 461}%
+ \special{fp}%
+ \special{pa 2296 526}%
+ \special{pa 2513 526}%
+ \special{fp}%
+ \special{pa 2404 526}%
+ \special{pa 2404 819}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 0.494in
+ \rlap{\kern 2.513in\lower\graphtemp\hbox to 0pt{\hbox{$\:$}$C$\hbox{$\:$}\hss}}%
+ \special{pa 4350 898}%
+ \special{pa 3928 898}%
+ \special{fp}%
+ \special{ar 3717 898 211 211 0 6.28319}%
+ \special{pa 3505 898}%
+ \special{pa 3083 898}%
+ \special{fp}%
+ \graphtemp=\baselineskip\multiply\graphtemp by 1\divide\graphtemp by 2
+ \advance\graphtemp by .5ex\advance\graphtemp by 1.109in
+ \rlap{\kern 3.717in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$V$\hbox{$\:$}\hss}}%
+ \special{pa 3083 898}%
+ \special{pa 3083 687}%
+ \special{pa 3013 651}%
+ \special{pa 3153 581}%
+ \special{pa 3013 511}%
+ \special{pa 3153 440}%
+ \special{pa 3013 370}%
+ \special{pa 3153 299}%
+ \special{pa 3083 264}%
+ \special{pa 3083 53}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 0.475in
+ \rlap{\kern 3.013in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$R$\hbox{$\:$}}}%
+ \special{pa 3083 53}%
+ \special{pa 3505 53}%
+ \special{fp}%
+ \special{ar 3558 53 53 53 -3.141593 -0.000000}%
+ \special{ar 3664 53 53 53 -3.141593 -0.000000}%
+ \special{ar 3769 53 53 53 -3.141593 -0.000000}%
+ \special{ar 3875 53 53 53 -3.141593 -0.000000}%
+ \special{pa 3928 53}%
+ \special{pa 4350 53}%
+ \special{fp}%
+ \graphtemp=\baselineskip\multiply\graphtemp by -1\divide\graphtemp by 2
+ \advance\graphtemp by .5ex\advance\graphtemp by 0.000in
+ \rlap{\kern 3.717in\lower\graphtemp\hbox to 0pt{\hss \hbox{$\:$}$L$\hbox{$\:$}\hss}}%
+ \special{pa 4350 53}%
+ \special{pa 4350 433}%
+ \special{fp}%
+ \special{pa 4210 433}%
+ \special{pa 4491 433}%
+ \special{fp}%
+ \special{pa 4210 518}%
+ \special{pa 4491 518}%
+ \special{fp}%
+ \special{pa 4350 518}%
+ \special{pa 4350 898}%
+ \special{fp}%
+ \graphtemp=.5ex\advance\graphtemp by 0.475in
+ \rlap{\kern 4.491in\lower\graphtemp\hbox to 0pt{\hbox{$\:$}$C$\hbox{$\:$}\hss}}%
+ \hbox{\vrule depth1.109in width0pt height 0pt}%
+ \kern 4.991in
+ }%
+}%
+\usebox{\graph}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-4.m4 b/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-4.m4
new file mode 100644
index 00000000000..73fee16dbf9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/6-7-4.m4
@@ -0,0 +1,23 @@
+\documentclass{ppex}
+\nonstopmode
+
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+
+.PS
+cct_init
+
+define(`loop',`[
+ source(left_ elen_); llabel(,V,)
+ resistor(up_ dimen_); llabel(,R,)
+ inductor(right_ elen_); llabel(,L,)
+ capacitor(down_ dimen_); llabel(,C,)
+ ]')
+
+for linewid = 0.5 to 1 by *1.3 do { loop; move right }
+.PE
+\usebox{\graph}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-1.mx1 b/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-1.mx1
new file mode 100644
index 00000000000..5dc763e7187
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-1.mx1
@@ -0,0 +1,19 @@
+0.44
+S
+366.0pt
+14.22636pt
+0.0pt
+8.0pt
+5.99998pt
+15.99998pt
+6.99997pt
+0 0 16.0733pt
+0 1 151.99963pt
+0 1 0.0pt
+0 0 0.4pt
+b 40
+1 1 151.99963pt
+1 1 0.0pt
+1 0 0.4pt
+b 41
+* 0
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-1.mx2 b/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-1.mx2
new file mode 100644
index 00000000000..3d5e0c238c3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-1.mx2
@@ -0,0 +1 @@
+\lineset{ 1}{ 2}{ 6.15592pt}{ 8.20792pt}{ 0.00000pt}% 40 - 41
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-1.ptx b/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-1.ptx
new file mode 100644
index 00000000000..ca031ece490
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-1.ptx
@@ -0,0 +1,98 @@
+% MusiXTeX Source created by mpp Sun Dec 15 08:48:57 1996
+% File: bach1.tex
+% From: (bach2.mpp, bach1.mpp)
+%
+% File mpp.tex
+% include file for MusixTeX
+%
+\input mpp
+%
+\instrumentnumber{1}
+%
+\setstaffs1{2}
+%
+\def\thetitle{bach1.mpp}
+%
+\generalmeter{\meterfrac{3}{4}}%
+\generalsignature{-1}%
+\setclef1\bass%
+% 40
+\generalmeter{\meterfrac{3}{4}}%
+\generalsignature{-1}%
+\setclef2\treble%
+% 40
+%
+\startmuflex
+%
+\normalmusicsize
+\def\ppffstyle{\ppfftwenty}
+\def\directstyle{\twelveit}
+\def\xpletstyle{\tenit}
+\ppff
+%
+\startbarno=40
+\startpiece
+\addspace\afterruleskip
+\notes\ccl{!'A}%
+|%
+\en%
+\notes\Ibu1{!'D}{!F}{6}{\nbbu1}\ufinger{4}{!e}\qb1{!'D}%
+|\sk\en%
+\notes\qb1{!'C}%
+|\sk\en%
+\notes\tbu1\qb1{!'B}%
+|\sk\en%
+\notes\ccu{!'A}%
+|\sk\en%
+\notes\Ibl1{!G}{!B}{6}{\nbbl1}\lfinger{2}{!`D}\qb1{!G}%
+|\sk\en%
+\notes\qb1{!F}%
+|\sk\en%
+\notes\tbl1\qb1{!E}%
+|\en%
+\notes\Ibl1{!D}{!d}{8}{\nbbl1}\qb1{!D}%
+|%
+\en%
+\notes\qb1{!F}%
+|\sk\en%
+\notes\qb1{!'A}%
+|\sk\en%
+\notes\tbl1\qb1{!'D}%
+|\en%
+\bar%
+%
+\notes\Ibu1{!'F}{!e}{20}{\nbbu1}\ufinger{2}{!g}\qb1{!'F}%
+|%
+\en%
+\notes\tbu1\qb1{!a}%
+|\sk\en%
+\notes\Ibl1{!'D}{!g}{6}{\nbbl1}\lfinger{4}{!A}\qb1{!'D}%
+|\sk\en%
+\notes\qb1{!'F}%
+|\en%
+\notes\tbl1\qb1{!a}%
+|%
+\en%
+\notes%
+|\Ibu0{!d}{!'g}{10}{\nbbu0}\ufinger{1}{!'g}\qb0{!d}%
+\en%
+\notes\sk|\qb0{!f}%
+\en%
+\notes\sk|\tbu0\qb0{!'a}%
+\en%
+\notes|\Ibu0{!d}{!'g}{6}{\nbbu0}\qb0{!d}%
+\en%
+\notes%
+|\qb0{!f}%
+\en%
+\notes%
+|\tbu0\qb0{!'a}%
+\en%
+\notes%
+|\ufinger{1}{!'g}\ccl{!'d}%
+\en%
+\endpiece\let\endpiece\relax%
+%
+\endpiece
+\endmuflex
+\end
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-2.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-2.ltx
new file mode 100644
index 00000000000..875f80a47de
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-2.ltx
@@ -0,0 +1,17 @@
+\documentclass{ppex}
+\nonstopmode
+\renewcommand \encodingdefault {OT1}\fontencoding \encodingdefault \selectfont
+\usepackage {musixtex}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {musixtex}
+\begin{music}
+\startextract
+\Notes\qu c\cu d\cu e\ccu f\ccu g \ccu h\ccl i\enotes\bar
+\Notes\cca j\cca i\cca h\cca g\ca f\ca d\qa c\enotes
+\endextract
+\end{music}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-3.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-3.ltx
new file mode 100644
index 00000000000..d8ad6c845f6
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-3.ltx
@@ -0,0 +1,19 @@
+\documentclass{ppex}
+\nonstopmode
+\renewcommand \encodingdefault {OT1}\fontencoding \encodingdefault \selectfont
+\usepackage {musixtex}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {musixtex}
+\begin{music}
+\startextract
+\Notes\zw c\zw e\zw g\wh j\enotes\bar
+\Notes\zh c\zh f\zh h\hu j\zh d\rh f%
+ \zh g\hu i\enotes\bar
+\Notes\zw c\zw e\zw g\wh j\enotes
+\endextract
+\end{music}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-4.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-4.ltx
new file mode 100644
index 00000000000..c09ed25123f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-4.ltx
@@ -0,0 +1,19 @@
+\documentclass{ppex}
+\nonstopmode
+\renewcommand \encodingdefault {OT1}\fontencoding \encodingdefault \selectfont
+\usepackage {musixtex}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {musixtex}
+\begin{music}
+\startextract
+\NOtes\qu c\enotes \Notes\cu d\cu e\enotes
+\notes\ccu f\ccu g\ccu h\ccl i\enotes \bar
+\notes\cca j\cca i\cca h\cca g\enotes
+\Notes\ca f\ca d\enotes \NOtes\qa c\enotes
+\endextract
+\end{music}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-5.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-5.ltx
new file mode 100644
index 00000000000..10fb193cbe5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-5.ltx
@@ -0,0 +1,39 @@
+\documentclass{ppex}
+\nonstopmode
+\renewcommand \encodingdefault {OT1}\fontencoding \encodingdefault \selectfont
+\usepackage {musixtex}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {musixtex}
+\begin{music}
+\instrumentnumber{1}
+\setstaffs{1}{2}
+\generalmeter{\meterfrac24}
+\setclef{1}{\bass}
+\setclef{2}{\treble}
+\generalsignature{-2}
+\startextract
+\Notes
+ \isluru0g\ibl0e{-2}\qb0{g}\tslur0f\qb0{f}%
+ \isluru0e\qb0{e}\tslur0{d}\tbl0\qb0{d}%
+ |\isluru0n\ibl0m{-2}\qb0{n}\tslur0m\qb0{m}%
+ \isluru0l\qb0{l}\tbl0\tslur0k\qb0{k}%
+\enotes\bar
+\Notes
+ \isluru0c\ibl0c0\qb0{c}\tslur0d\tbl0\qb0{d}%
+ |\isluru0j\ibl0j0\qb0{j}\tslur0k\tbl0\qb0{k}%
+\enotes
+\NOtes \zq{N}\ql{b}|\zq{g}\qu{i}\enotes\bar
+\Notes
+ \isluru0N\ibl0N{-2}\qb0{N}\tslur0M\qb0{M}%
+ \isluru0M\qb0{M}\tslur0L\tbl0\qb0{=L}%
+ |\ibu0j0\zqb0{g}\rq{h}\qb0{j}\zqb0{g}\rq{h}\qb0{j}%
+ \zqb0{g}\rq{h}\qb0{j}\tbu0\zqb0{g}\rq{h}\qb0{j}%
+\enotes\bar
+\NOtes \ql{K}\ql{K}|\zq{f}\zq{h}\qu{k}\zq{f}\zq{h}\qu{k}\enotes
+\endextract
+\end{music}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-6.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-6.ltx
new file mode 100644
index 00000000000..15dded08bb3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-2-6.ltx
@@ -0,0 +1,36 @@
+\documentclass{ppex}
+\nonstopmode
+\renewcommand \encodingdefault {OT1}\fontencoding \encodingdefault \selectfont
+\usepackage {musixtex}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {musixtex}
+\begin{music}
+\instrumentnumber{1}
+\generalmeter{\meterfrac34}
+\nobarnumbers
+\startpiece
+\NOtes\qp\zcharnote N\f\ql{lm}\enotes\bar %1
+\NOtes\isluru0m\ql{m}\tslur0l\ql{l}\ql{p}\enotes\bar%2
+\Notes\ibl0l0\qb0{p^np}\enotes
+\notes\nbbl0\isluru0m\qb0{m}\tbl0\tslur0l\qb0{l}\enotes%
+\Notes\qb0p\tbl0\qb0k\enotes\bar%3
+\NOtes\isluru0k\ql{k}\tslur0j\ql{j}\ql{o}\enotes\bar%4
+\Notes\ibl0l0\qb0{mkpnr}\tbl0\qb0m\enotes\bar%5
+\NOtesp\qlp{l}\enotes
+\Notes\ibl0n{-4}\qb0{nl}\tbl0\qb0j\enotes\bar%6
+\Notes\ibl0l0\qb0{omokr}\tbl0\qb0m\enotes\bar%7
+\NOtesp\qlp{p}\enotes
+\Notes\cl{n}\enotes
+\NOtes\itenu0r\ql{q}\enotes\bar%8
+\Notes\ibl0q{-3}\tten0\qb0q\tbl0\qb0o\enotes
+\NOtesp\Uptext{\it tr}\isluru0p\qlp{p}\enotes
+\Notes\tslur0q\cl{q}\enotes\bar%9
+\NOtes\ql{q}\enotes
+\NOTes\hpause\enotes
+\endpiece
+\end{music}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-1.abc b/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-1.abc
new file mode 100644
index 00000000000..587bbdd690b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-1.abc
@@ -0,0 +1,6 @@
+X:1
+T:
+M:2/4
+L:1/8
+K:Gm
+gfed | cd B2 | cccc | d2 d2 |]
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-2.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-2.ltx
new file mode 100644
index 00000000000..ad9e6b7cd5f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-2.ltx
@@ -0,0 +1,29 @@
+\documentclass{ppex}
+\nonstopmode
+\renewcommand \encodingdefault {OT1}\fontencoding \encodingdefault \selectfont
+\usepackage {musixtex}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {musixtex}
+\begin{music}
+\instrumentnumber{1}
+\nobarnumbers
+\startpiece
+\Notes\zcharnote I{G,}\qu{N}\zcharnote I{A,}\qu{a}%
+\zcharnote I{B,}\qu{b}\zcharnote I{C}\qu{c}%
+\zcharnote I{D}\qu{d}\zcharnote I{E}\qu{e}%
+\zcharnote I{F}\qu{f}\zcharnote I{G}\qu{g}%
+\zcharnote I{A}\qu{h}\zcharnote I{B}\ql{i}%
+\zcharnote I{c}\ql{j}\zcharnote I{d}\ql{k}%
+\zcharnote I{e}\ql{l}\zcharnote I{f}\ql{m}%
+\zcharnote I{g}\ql{n}\zcharnote I{a}\ql{o}%
+\zcharnote I{b}\ql{p}\zcharnote I{c'}\ql{q}%
+\zcharnote I{d'}\ql{r}\zcharnote I{e'}\ql{s}%
+\zcharnote I{f'}\ql{t}\zcharnote I{g'}\ql{u}%
+\zcharnote I{z}\qp\en
+\endpiece
+\end{music}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-3.abc b/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-3.abc
new file mode 100644
index 00000000000..d61e68b4488
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-3.abc
@@ -0,0 +1,8 @@
+X:1
+T:
+M:7/8
+K:C
+CDEF GFE | \
+M:2/4
+CDEF GFED |[1 CEGE GEGE :| [2 CEGE C4 |]
+
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-4.abc b/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-4.abc
new file mode 100644
index 00000000000..ec80ec0a2df
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-4.abc
@@ -0,0 +1,6 @@
+X:1
+T:
+M:4/4
+L:1/4
+K:C
+C D E F | G/2 F/2 E/2 D/2 C2| z4 |]
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-5.abc b/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-5.abc
new file mode 100644
index 00000000000..bd7bf88782b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-5.abc
@@ -0,0 +1,8 @@
+X:1
+T:
+M:2/4
+L:1/8
+K:C
+^F<G ^^F<^G | ^G2>=G2 |
+_A<<G __A<<_G | F2>>^F2 | G4 |]
+
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-6.abc b/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-6.abc
new file mode 100644
index 00000000000..66a2a2ee1fb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-6.abc
@@ -0,0 +1,6 @@
+X:1
+T:
+M:3/4
+K:C
+(3CDE F2 G2 | (2FE (4gabC | C6 |
+
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-7.abc b/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-7.abc
new file mode 100644
index 00000000000..d52d2ee36df
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-7.abc
@@ -0,0 +1,7 @@
+X:1
+T:
+M:6/8
+K:C
+(g^f).e (ed)^c-| (^c3 d) z g-|
+(g3-gec) | .B.c.A G3 |]
+
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-8.abc b/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-8.abc
new file mode 100644
index 00000000000..a97c5a0779b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-8.abc
@@ -0,0 +1,7 @@
+X:1
+T:
+M:4/4
+L:1/4
+K:G
+"D"[FA] |"G"G4 |"D"[F4A4] | \
+"Em"[(B/2E4]A/2 B)- B2|
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-9.abc b/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-9.abc
new file mode 100644
index 00000000000..bf6c07d80aa
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-3-9.abc
@@ -0,0 +1,7 @@
+X:1
+T:
+M:4/4
+K:D
+{g}c<{GdG}e {gf}ga {f}g>e {g}f>d| \
+{g}e/f/g {Gdc}d>c {gBd}B<{e}G {dc}d2|]
+
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-1.mpp b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-1.mpp
new file mode 100644
index 00000000000..c290ca5c616
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-1.mpp
@@ -0,0 +1,7 @@
+\verb{\hsize=279.0pt}
+\verb{}
+C D E F |: G c d e :||:
+f g c d :|: 'e 'f 'g ''c :|
+''d ''e ''f ''g || c `c C `C |||
+
+
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-10.mx1 b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-10.mx1
new file mode 100644
index 00000000000..e5fe9ebc7db
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-10.mx1
@@ -0,0 +1,27 @@
+0.44
+S
+348.0pt
+14.22636pt
+0.0pt
+8.0pt
+5.99998pt
+15.99998pt
+11.99997pt
+0 0 16.0733pt
+0 1 79.99982pt
+0 1 0.0pt
+0 0 0.4pt
+b 1
+1 1 67.99985pt
+1 1 0.0pt
+1 0 0.4pt
+b 2
+2 1 79.99982pt
+2 1 0.0pt
+2 0 0.4pt
+b 3
+3 1 55.99988pt
+3 1 0.0pt
+3 0 0.4pt
+b 4
+* 0
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-10.mx2 b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-10.mx2
new file mode 100644
index 00000000000..8cc957939d4
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-10.mx2
@@ -0,0 +1 @@
+\lineset{ 1}{ 4}{ 6.08662pt}{ 8.11552pt}{ 0.00000pt}% 1 - 4
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-10.ptx b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-10.ptx
new file mode 100644
index 00000000000..d143fb1f982
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-10.ptx
@@ -0,0 +1,82 @@
+% MusiXTeX Source created by mpp Sun Dec 15 22:44:15 1996
+% File: 7-4-9.tex
+% From: (7-4-10.mpp, 7-4-9.mpp)
+%
+% File mpp.tex
+% include file for MusixTeX
+%
+\input mpp
+%
+\instrumentnumber{1}
+%
+\setstaffs1{2}
+%
+\def\thetitle{7-4-9.mpp}
+%
+\hsize=348.0pt\generalsignature{-2}%
+\generalmeter{\meterfrac{2}{4}}%
+\setclef1\bass%
+\hsize=348.0pt\generalsignature{-2}%
+\generalmeter{\meterfrac{2}{4}}%
+%
+%
+\startmuflex
+%
+\normalmusicsize
+\def\ppffstyle{\ppfftwenty}
+\def\directstyle{\twelveit}
+\def\xpletstyle{\tenit}
+\ppff
+%
+\startpiece
+\addspace\afterruleskip
+\Notes\Ibl1{!g}{!'G}{12}\isluru1{!g}\qb1{!g}%
+|\Ibl0{!'g}{!g}{12}\isluru0{!'g}\qb0{!'g}%
+\en%
+\Notes\tslur1{!f}\qb1{!f}%
+|\tslur0{!'f}\qb0{!'f}%
+\en%
+\Notes\isluru1{!e}\qb1{!e}%
+|\isluru0{!'e}\qb0{!'e}%
+\en%
+\Notes\tbl1\tslur1{!d}\qb1{!d}%
+|\tbl0\tslur0{!'d}\qb0{!'d}%
+\en%
+\bar%
+%
+\Notes\Ibl1{!c}{!f}{6}\isluru1{!c}\qb1{!c}%
+|\Ibl0{!'c}{!'f}{6}\isluru0{!'c}\qb0{!'c}%
+\en%
+\Notes\tbl1\tslur1{!d}\qb1{!d}%
+|\tbl0\tslur0{!'d}\qb0{!'d}%
+\en%
+\NOtes\upt{!b}\zq{!b}\ql{!'G}%
+|\zq{!'b}\lpt{!g}\qu{!g}%
+\en%
+\bar%
+%
+\Notes\Ibl1{!'F}{!'C}{12}\isluru1{!'G}\qb1{!'G}%
+|\Ibu0{!'c}{!'c}{12}\zqb0{!'c}\normalnotesize\rc{!'a}\normalnotesize\qb0{!g}%
+\en%
+\Notes\tslur1{!'F}\qb1{!'F}%
+|\zqb0{!'c}\normalnotesize\rc{!'a}\normalnotesize\qb0{!g}%
+\en%
+\Notes\isluru1{!'F}\qb1{!'F}%
+|\zqb0{!'c}\normalnotesize\rc{!'a}\normalnotesize\qb0{!g}%
+\en%
+\Notes\na{!'E}\tbl1\tslur1{!'E}\qb1{!'E}%
+|\tbu0\zqb0{!'c}\normalnotesize\rc{!'a}\normalnotesize\qb0{!g}%
+\en%
+\bar%
+%
+\NOtes\upt{!'D}\ql{!'D}%
+|\zq{!'d}\zq{!'a}\lpt{!f}\qu{!f}%
+\en%
+\NOtes\upt{!'D}\ql{!'D}%
+|\zq{!'d}\zq{!'a}\lpt{!f}\qu{!f}%
+\en%
+\endpiece\let\endpiece\relax%
+%
+\endpiece
+\endmuflex
+\end
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-2.mpp b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-2.mpp
new file mode 100644
index 00000000000..c4135f1fb20
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-2.mpp
@@ -0,0 +1,6 @@
+\verb{\hsize=279.0pt}
+\verb{}
+\key\A
+A cis c cis |
+fis f g gis | a1 |||
+
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-3.mpp b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-3.mpp
new file mode 100644
index 00000000000..1c68e9281a2
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-3.mpp
@@ -0,0 +1,5 @@
+\verb{\hsize=279.0pt}
+\verb{}
+\duration8 | c4 d4 e4 f4 |
+ g g g16 g16 g16 g16 a4. a |.
+
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-4.mpp b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-4.mpp
new file mode 100644
index 00000000000..989a176dd86
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-4.mpp
@@ -0,0 +1,6 @@
+\verb{\hsize=346.0pt}
+\verb{}
+\key\F
+\duration8
+f\grace 'f^{-} 'c\stemup^{-} 'a^{.} \tiny 'f c \normal a_{.} |
+ g_{-} \small g \tiny g \normal g4. |.
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-5.mpp b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-5.mpp
new file mode 100644
index 00000000000..4d6f2152aee
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-5.mpp
@@ -0,0 +1,3 @@
+\verb{\hsize=346.0pt}
+\verb{}
+r1 | r2 r2 | r r r8 r8 r8 s1_{room for ...} r16 r16 |.
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-6.mpp b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-6.mpp
new file mode 100644
index 00000000000..328d7baa82a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-6.mpp
@@ -0,0 +1,8 @@
+\verb{\hsize=346.0pt}
+\verb{}
+\key\Bes
+\duration8
+\meter{2/4}
+['g( )'f 'es( )'d ] | ['c( )'d ] {g4_{-} bes4} | [{g a\headright 'c}
+{g a\headright 'c} {g a\headright 'c} {g a\headright 'c}] | {f4_{-} a4
+'d4} {f4_{-} a4 'd4} |.
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-7.mpp b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-7.mpp
new file mode 100644
index 00000000000..f7de0d7a826
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-7.mpp
@@ -0,0 +1,5 @@
+\verb{\hsize=346.0pt}
+\verb{}
+\meter{2/4} \duration{8}
+ ['c( b )a]/3 f4 |
+ f4/3( a4/3_{{\xpletstyle 3}} ) g4/3 |.
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-8.mpp b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-8.mpp
new file mode 100644
index 00000000000..fccb1af1388
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-8.mpp
@@ -0,0 +1,11 @@
+\verb{\hsize=346.0pt}
+\verb{}
+\meter{3/4}
+\key\F \clef\alto \duration8
+ 'c\grace\stemup( [) bes_{pp}( ) a bes ]/3 'd4. bes |
+\clef\treble
+ [^ { a f2 } 'c 'f 'c { 'f r4 } 'c ] |
+ { fis2.(v ='d2.\stemup(^ } |
+ { ) 'd4 ) =f2._> } { r4 s4_{decr} } 'd4\stemup \key\As ||
+\duration{16}
+ [ 'd( 'g )'a ]/3 [ 'g( 'a )'b ]/3 'b4 'c4 |.
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-9.mpp b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-9.mpp
new file mode 100644
index 00000000000..9ebe5ca1591
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/7-4-9.mpp
@@ -0,0 +1,6 @@
+\verb{\hsize=346.0pt}
+\verb{}
+%file pianoL.mpp
+\key\Bes \duration8 \meter{2/4} \clef\bass
+['G( )'F 'Es( )'D ] | ['C( )'D ] {G4 Bes4^{-}} |
+[G( )F F( )E ] | D4^{-} D4^{-} |.
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-1-1.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/8-1-1.ltx
new file mode 100644
index 00000000000..cd7717ade75
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-1-1.ltx
@@ -0,0 +1,19 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {chess}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {chess}
+\board{B* * *KR}
+ {*r* * *B}
+ { * * *R*}
+ {* b p p }
+ { *P*k*P*}
+ {*p* P *p}
+ { P *P* P}
+ {* *N*N* }
+\[ \showboard \]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-1-2.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/8-1-2.ltx
new file mode 100644
index 00000000000..42f54dc9d0a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-1-2.ltx
@@ -0,0 +1,22 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {chess}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {chess}
+\newgame
+\move g1f3 d7d6
+\move d2d4 c8g4
+\move c2c4 g8f6
+\ply b1c3
+\ply g4f3
+\move g2f3 b8d7
+\move e2e3 e7e5
+\move d4e5 d6e5
+\move d1c2 c7c6
+\move c1d2 d8c7
+\move e1c1 e8c8
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-1-3.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/8-1-3.ltx
new file mode 100644
index 00000000000..0930e816ea9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-1-3.ltx
@@ -0,0 +1,43 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {chess,bdfchess}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {chess,bdfchess}
+
+% don't output individual move pages
+%
+\let\tabularheader\relax
+\def\movetabular[#1]{}
+
+\begin{gameone}
+ \postmove 03.09.1996 0 e2e4 d7d6 11.09.1996 0
+ \postmove 12.09.1996 2 d2d4 g8f6 15.09.1996 1
+ \postmove 17.09.1996 2 b1c3 g7g6 21.09.1996 1
+\end{gameone}
+\begin{gametwo}
+ \postmove 11.09.1996 0 d2d4 g8f6 12.09.1996 2
+ \postmove 15.09.1996 1 c2c4 g7g6 17.09.1996 2
+ \postply 21.09.1996 1 b1c3
+\end{gametwo}
+\sender{\small sender:\\
+ \large\textbf{TUG Office} \\
+ \TeX{} User Group \\
+ 1850 Union Street, \#1637 \\
+ San Francisco CA 94123 \\
+ USA}
+\receiver{\setlength{\parskip}{5mm} \LARGE \bfseries
+ DANTE \vskip 2pt \hrule
+ Postfach 10\,18\,40 \vskip 2pt \hrule
+ 69008 Heidelberg \vskip 2pt \hrule
+ Germany}
+\cardmessage{The office will be closed from\\ 30.09.96 until 14.10.96}
+\postcard[f](0mm,-20mm)
+
+\vspace{10mm}
+
+\postcardaddress[tf](-1mm,0mm)
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-1-4.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/8-1-4.ltx
new file mode 100644
index 00000000000..91b2275d008
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-1-4.ltx
@@ -0,0 +1,21 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {chess}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {chess}
+\font\Chess=xcheq at 18pt
+\setlength{\fontdimen2\Chess}{0pt}
+\board{B* * *KR}
+ {* * * *r}
+ { *R* * *}
+ {* b p p }
+ { *P*k*P*}
+ {*p* P *p}
+ { P *P* P}
+ {* *N*N* }
+\[ \showboard \]
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-2-1.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/8-2-1.ltx
new file mode 100644
index 00000000000..6a20fb97333
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-2-1.ltx
@@ -0,0 +1,37 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {cchess}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {cchess}
+\begin{center}
+\normalboard
+\begin{position}
+\piece{a}{1}{r}\piece{i}{1}{r}%
+\piece{b}{1}{n}\piece{h}{1}{n}%
+\piece{c}{1}{b}\piece{g}{1}{b}%
+\piece{d}{1}{g}\piece{f}{1}{g}%
+\piece{b}{3}{c}\piece{h}{3}{c}%
+\piece{a}{4}{p}\piece{c}{4}{p}\piece{e}{4}{p}\piece{g}{4}{p}\piece{i}{4}{p}%
+\piece{e}{1}{k}%
+%\piece{a}{10}{R}\piece{i}{10}{R}%
+%\piece{b}{10}{N}\piece{h}{10}{N}%
+%\piece{c}{10}{B}\piece{g}{10}{B}%
+%\piece{d}{10}{G}\piece{f}{10}{G}%
+%\piece{b}{8}{C}\piece{h}{8}{C}%
+%\piece{a}{7}{P}\piece{c}{7}{P}\piece{e}{7}{P}\piece{g}{7}{P}\piece{i}{7}{P}%
+%\piece{e}{10}{K}%
+%
+\piece{a}{10}{W}\piece{i}{10}{W}%
+\piece{b}{10}{V}\piece{h}{10}{V}%
+\piece{c}{10}{U}\piece{g}{10}{U}%
+\piece{d}{10}{T}\piece{f}{10}{T}%
+\piece{b}{8}{X}\piece{h}{8}{X}%
+\piece{a}{7}{Y}\piece{c}{7}{Y}\piece{e}{7}{Y}\piece{g}{7}{Y}\piece{i}{7}{Y}%
+\piece{e}{10}{S}%
+\end{position}
+\end{center}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-2-2.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/8-2-2.ltx
new file mode 100644
index 00000000000..1956e8f4bd3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-2-2.ltx
@@ -0,0 +1,18 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {cchess}
+\pagestyle{empty}
+\setlength\textwidth{159.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {cchess}
+\newcommand\x{$\times$} % a shortcut to denote capture
+\begin{tabbing}
+1. \= \textpiece{c}h3--e3 \qquad
+ \=\textpiece{N}b0--a8 \\
+2. \> \textpiece{c}e3\x e7 \>\textpiece{R}a0--a9 \\
+3. \> \textpiece{c}b3--b5 \>\textpiece{N}h0--g8 \\
+4. \> \textpiece{c}b5--e5 mates!
+\end{tabbing}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-2-3.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/8-2-3.ltx
new file mode 100644
index 00000000000..939fdf27826
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-2-3.ltx
@@ -0,0 +1,29 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {cchess}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {cchess}
+\smallboard
+\begin{position}
+\piece{a}{1}{r}\piece{i}{1}{r}
+\piece{b}{1}{n}\piece{h}{1}{n}
+\piece{c}{1}{b}\piece{g}{1}{b}
+\piece{d}{1}{g}\piece{f}{1}{g}
+\piece{e}{5}{c}\piece{e}{7}{c}
+\piece{a}{4}{p}\piece{c}{4}{p}
+\piece{e}{4}{p}\piece{g}{4}{p}
+\piece{i}{4}{p}\piece{e}{1}{k}
+\piece{a}{9}{R}\piece{i}{10}{R}
+\piece{a}{8}{N}\piece{g}{8}{N}
+\piece{c}{10}{B}\piece{g}{10}{B}
+\piece{d}{10}{G}\piece{f}{10}{G}
+\piece{b}{8}{C}\piece{h}{8}{C}
+\piece{a}{7}{P}\piece{c}{7}{P}
+\piece{g}{7}{P}
+\piece{i}{7}{P}\piece{e}{10}{K}
+\end{position}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-3-1.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/8-3-1.ltx
new file mode 100644
index 00000000000..384aab0cfab
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-3-1.ltx
@@ -0,0 +1,14 @@
+\documentclass{ppex}
+\nonstopmode
+
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+
+\newfont\gosign{gosign50}
+\begin{center}
+ \fbox{\gosign\symbol{0}}
+\end{center}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-3-2.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/8-3-2.ltx
new file mode 100644
index 00000000000..3a9e00b0118
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-3-2.ltx
@@ -0,0 +1,49 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {go}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {go}
+\gofontsize{15}
+
+\pos{c}{15}=\black.
+\pos{d}{17}=\black.
+\pos{d}{3}=\letter{3}
+\pos{f}{4}=\black{\triangle}
+\pos{f}{6}=\letter{10}
+\pos{d}{4}=\white.
+\pos{d}{6}=\white.
+\pos{g}{17}=\letter{5}
+\pos{h}{17}=\letter{8}
+\pos{i}{4}=\letter{5}
+\pos{k}{17}=\white.
+\pos{n}{2}=\black.
+\pos{n}{3}=\black.
+\pos{o}{3}=\black.
+\pos{o}{2}=\white.
+\pos{o}{5}=\black.
+\pos{p}{2}=\white.
+\pos{q}{2}=\white.
+\pos{p}{3}=\white.
+\pos{p}{4}=\black.
+\pos{p}{7}=\white.
+\pos{q}{4}=\white.
+\pos{q}{3}=\black.
+\pos{q}{5}=\black.
+\pos{q}{6}=\black.
+\pos{q}{8}=\black.
+\pos{r}{4}=\white.
+\pos{r}{5}=\white.
+\pos{r}{6}=\letter{5}
+\pos{q}{16}=\white.
+\pos{q}{14}=\letter{5}
+\pos{r}{14}=\letter{6}
+\pos{o}{17}=\letter{8}
+\begin{center}
+ \mbox{\showfulldiagram } \\ Best moves for Black are near
+ \textblack{\triangle}
+\end{center}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-3-3.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/8-3-3.ltx
new file mode 100644
index 00000000000..43fdd86224b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-3-3.ltx
@@ -0,0 +1,26 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {go}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {go}
+\inifulldiagram \gofontsize{20}
+\pos{p}{5}=\black{.} \pos{q}{2}=\white{.}
+\pos{o}{3}=\white{.} \pos{q}{3}=\white{.}
+\pos{q}{4}=\white{.} \pos{q}{5}=\black{.}
+\pos{r}{2}=\white{.} \pos{r}{3}=\black{.}
+\pos{r}{4}=\black{.} \pos{r}{5}=\white{.}
+\pos{r}{6}=\white{.} \pos{r}{7}=\white{.}
+\pos{s}{1}=\white{\square}
+\pos{s}{2}=\black{\triangle}
+\pos{s}{3}=\letter{a} \pos{s}{4}=\black{.}
+\pos{s}{5}=\black{.} \pos{t}{1}=\black{2}
+\pos{t}{2}=\white{1} \pos{t}{3}=\black{.}
+\pos{t}{4}=\letter{b}
+\begin{center}
+ \mbox{\showdiagram n-t:1-8 }
+\end{center}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-4-1.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/8-4-1.ltx
new file mode 100644
index 00000000000..28f6afd6601
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-4-1.ltx
@@ -0,0 +1,25 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {bg}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {bg}
+\begin{position}
+\smallboard
+\whitepoint{3}{2} \whitepoint{4}{2}
+\whitepoint{5}{2} \whitepoint{6}{3}
+\whitepoint{7}{3} \whitepoint{8}{1}
+\whitepoint{11}{1} \whitepoint{22}{1}
+\blackpoint{24}{1} \blackpoint{13}{2}
+\blackpoint{10}{1} \blackpoint{8}{1}
+\blackpoint{7}{2} \blackpoint{6}{3}
+\blackpoint{5}{2} \blackpoint{4}{2}
+\blackbar{1}
+\shownumbers \middlecube{1} \showcube
+\whiteonmove
+\boardcaption{White to play 3--2}
+\end{position}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-4-2.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/8-4-2.ltx
new file mode 100644
index 00000000000..dabfcac55e1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-4-2.ltx
@@ -0,0 +1,24 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {bg}
+\pagestyle{empty}
+\setlength\textwidth{279.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {bg}
+\begin{game}{Black}{White}
+\normalboard
+\whiteonmove
+\move{64}{24-18, 18-14}
+\move{55}{6-1,6-1,8-3,8-3}
+\textmove{Doubles.}
+\textmove{Takes.}
+\takecube
+\boardcaption
+ {Black's turn 31}
+\printboard
+\end{game}
+
+
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-5-1.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/8-5-1.inl
new file mode 100644
index 00000000000..d8372411c9e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-5-1.inl
@@ -0,0 +1,9 @@
+
+\newcommand{\hand}[4]{%
+ \begin{minipage}[t]{8em}
+ \begin{tabbing}
+ \spade{} \= #1\\ \heart \> #2\\
+ \diam \> #3\\ \club \> #4
+ \end{tabbing}
+ \end{minipage}}
+\hand{A}{A}{A 9}{Q}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-1.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-1.inl
new file mode 100644
index 00000000000..f87bf43c57b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-1.inl
@@ -0,0 +1,13 @@
+\input {bridge.tex}
+\crdima{S/None}
+ {\begin{tabular}[t]{l}
+ Start\\distribution
+ \end{tabular}}
+ {\hand{A 6}{7 4 2}{J 6 3}
+ {A 8 6 4 3}}
+ {\hand{Q J 10 9 7}{10 6}
+ {Q 9 7 2}{J 5}}
+ {\hand{8 5 3 2}{Q J 8 3}
+ {K 4}{Q 10 9}}
+ {\hand{K 4}{A K 9 5}
+ {A 10 8 5}{K 7 2}}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-2.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-2.inl
new file mode 100644
index 00000000000..b7c8e8d8aea
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-2.inl
@@ -0,0 +1,8 @@
+\input {bridge.tex}
+\crdima{S/None}
+ {E plays \spade 3}
+ {\hand{A}{7 4 2}{J 6 3}
+ {A 8 6 4}}
+ {\hand{J 10 9 7}{10 6}
+ {Q 9 7 2}{J}}
+ {}{}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-3.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-3.inl
new file mode 100644
index 00000000000..940060664e9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-3.inl
@@ -0,0 +1,10 @@
+\input {bridge.tex}
+\crdima{}{}
+ {\hand{--}{7 4 2}{J 6 3}
+ {8 6}}
+ {\hand{J 10 9}{10 6}
+ {Q 9 7 2}{--}}
+ {\hand{8 5}{Q J 8 3}
+ {K 4}{--}}
+ {\hand{--}{A K 9 5}
+ {A 10 8 5}{--}}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-4.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-4.inl
new file mode 100644
index 00000000000..70d28a9a7a2
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-4.inl
@@ -0,0 +1,4 @@
+\input {bridge.tex}
+\crdima{}{}{\club{} A Q}
+ {\club{} J 5}{\club{} K 6}
+ {\club{} 7 4}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-5.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-5.inl
new file mode 100644
index 00000000000..c4d4b39eda7
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-5.inl
@@ -0,0 +1,2 @@
+
+\crdexa{\club}{A Q}{J 5}{K 6}{7 4}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-6.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-6.inl
new file mode 100644
index 00000000000..7c0ecfc7f92
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-6.inl
@@ -0,0 +1,6 @@
+\input {bridge.tex}
+\begin{bidding}
+-- \> 1\club\> no \> 1\spade\\
+no \> 2\spade\> no \> 4\spade\\
+a.p.
+\end{bidding}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-7.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-7.inl
new file mode 100644
index 00000000000..442b34e03c7
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-7.inl
@@ -0,0 +1,9 @@
+\input {bridge.tex}
+\hand{3 2}{K J 10 8 5 2}
+ {Q 6 3}{K 3} \qquad
+\begin{minipage}[t]{8em}
+\begin{bidding}
+-- \> 1\diam\> 1\heart \> no \\
+2\heart
+\end{bidding}
+\end{minipage}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-8.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-8.inl
new file mode 100644
index 00000000000..7ed4b3693a6
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-6-8.inl
@@ -0,0 +1,8 @@
+\input {bridge.tex}
+\newcommand\bid[5]{\hand{#1}{#2}{#3}{#4}%
+ \qquad \begin{tabular}[t]{ll}%
+ self & partner \\ #5%
+ \end{tabular}}
+\bid{Q J 10 5}{A 10 9 6 3}{A 5 2}{3}
+ { & 1\club \\ 1\heart & 1\spade \\
+ 4\spade }
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-7-1.acr b/Master/texmf-doc/doc/english/latex-graphics-companion/8-7-1.acr
new file mode 100644
index 00000000000..9c8c3635b98
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-7-1.acr
@@ -0,0 +1,27 @@
+\begin {minipage}[t]{80mm}
+ \centerline {\textbf {\ACROSStext }}
+ \raggedright
+ \ninept
+ \begin {ClueList}
+ \item [2] Gap between tree node labels and the node in \textsf {PSTricks} (5)
+ \item [4] Modern replacement for scissors and glue (4)
+ \item [6] A Unicode \TeX {} variant (5)
+ \item [7] \ldots {} you always wanted to know but never dared to ask (3)
+ \item [8] A graphics key that needs four numbers (2)
+ \item [10] Called \texttt {bb} in Karl Berry's font-naming schemes (5)
+ \item [12] A way to make your pages into thumbnails (5)
+ \item [15] You can do it to a box but it isn't proper \LaTeX {} (5)
+ \item [19] In \LaTeX {} denotes \(\wp \); in other circumstances might mean a word processor (2)
+ \item [20] Result of a \TeX {} run (3)
+ \item [21] A language whose name should probably have five letters, but then it was developed for Unix (4)
+ \item [24] It's not Intel (5)
+ \item [25] A pointer misspelled (3)
+ \item [27] Testing your \LaTeX {} knowledge: \(\prec \) (4)
+ \item [28] Label for a signal line (3)
+ \item [29] Another name for the \LaTeX 3 project team on c.t.t. (4)
+ \item [30] One way to get a sharp in \textsf {MusiX\TeX } (2)
+ \item [31] A figure or plan intended to explain rather than represent actual appearance (7)
+ \item [33] 72.27 to an inch (2)
+ \item [34] see \textbf {1d} (5)
+ \end {ClueList}
+\end {minipage}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-7-1.dwn b/Master/texmf-doc/doc/english/latex-graphics-companion/8-7-1.dwn
new file mode 100644
index 00000000000..c2839b1ef82
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-7-1.dwn
@@ -0,0 +1,30 @@
+\begin {minipage}[t]{70mm}
+ \centerline {\textbf {\DOWNtext }}
+ \raggedright
+ \ninept
+ \begin {ClueList}
+ \item [1 \& a34] Grand wizard of \TeX {} (3,5)
+ \item [2] A ready-to-run \TeX {} for Unix (5)
+ \item [3] A novice golfer's dream (3)
+ \item [4] \LaTeXe {} name for document style (5)
+ \item [5] Double beam above notes in \textsf {MusiX\TeX } (4)
+ \item [9] Either or --- mathematically speaking (3)
+ \item [10] German beer (3)
+ \item [11] Save your coordinates (\textsf {PSTricks}) (5)
+ \item [12] Approximation of \TeX {}'s version number (2)
+ \item [13] A PostScript operator (7)
+ \item [14] Probability function (2)
+ \item [16] A divine messenger misspelled (5)
+ \item [17] How do you get an \AA ? (2)
+ \item [18] \(\xi \) (2)
+ \item [22] \LaTeX {} has rigid and rubber ones (6)
+ \item [23] Amor uses them and \XYPIC {} calls them (2)
+ \item [24] Length of the line segment where the connector joins the first node (4)
+ \item [25] Files containing \LaTeX {} font-definition documentation (3)
+ \item [26] \(\eta \) --- don't say this is all Greek to you (3)
+ \item [27] \(\perp \), also the first letters of everlasting (4)
+ \item [30] We plot it in Chapter 4 (3)
+ \item [32] \TeX {}'s name for inch (2)
+ \item [33] Lula is chief of (2)
+ \end {ClueList}
+\end {minipage}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-7-1.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/8-7-1.ltx
new file mode 100644
index 00000000000..acc21d84d4d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-7-1.ltx
@@ -0,0 +1,90 @@
+\documentclass{ppex}
+\nonstopmode
+
+\newcommand \XY {\leavevmode \hbox {X\kern -.1em\lower .4ex\hbox {Y\kern -.15em}}}
+\newcommand \XYPIC {\textsf {\XY -pic}}
+\makeatletter
+\AtBeginDocument {\def \OpenClueFiles {
+\immediate \openout \csname tf@acr\endcsname \jobname .acr\relax
+\immediate \openout \csname tf@dwn\endcsname \jobname .dwn\relax
+\@writefile{acr}{\begin {minipage}[t]{80mm}}
+\@writefile{acr}{ \centerline {\textbf {\ACROSStext }}}
+\@writefile{acr}{ \raggedright }
+\@writefile{acr}{ \ninept }
+\@writefile{acr}{ \begin {ClueList}}
+\@writefile{dwn}{\begin {minipage}[t]{70mm}}
+\@writefile{dwn}{ \centerline {\textbf {\DOWNtext }}}
+\@writefile{dwn}{ \raggedright }
+\@writefile{dwn}{ \ninept }
+\@writefile{dwn}{ \begin {ClueList}}}}
+\makeatother
+
+\usepackage {crosswrd}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {crosswrd}
+\begin{crossword}{12}{N}
+%%% This file has been created automatically by cwp.
+%%%-------------------------------------------------
+% This is a crossword puzzle prepared for crosswrd.sty
+ \clue{2}{A}{3}{1}{TNSEP}{Gap between tree node labels and
+ the node in \textsf{PSTricks}}{5}%
+ \clue{4}{A}{9}{1}{CLIP}{Modern replacement for scissors and glue}{4}%
+ \clue{6}{A}{1}{2}{OMEGA}{A Unicode \TeX{} variant}{5}%
+ \clue{7}{A}{7}{2}{ALL}{\ldots{} you always wanted to know but never
+ dared to ask}{3}%
+ \clue{8}{A}{11}{2}{BB}{A graphics key that needs four numbers}{2}%
+ \clue{10}{A}{2}{4}{BEMBO}{Called \texttt{bb} in Karl Berry's
+ font-naming schemes}{5}%
+ \clue{12}{A}{8}{4}{PSNUP}{A way to make your pages into thumbnails}{5}%
+ \clue{15}{A}{6}{5}{RAISE}{You can do it to a box but
+ it isn't proper \LaTeX{}}{5}%
+ \clue{19}{A}{10}{6}{WP}{In \LaTeX{} denotes \(\wp\); in other
+ circumstances might
+ mean a word processor}{2}%
+ \clue{20}{A}{3}{7}{DVI}{Result of a \TeX{} run}{3}%
+ \clue{21}{A}{7}{7}{GRAP}{A language whose name should probably have five
+ letters, but then it was developed for Unix}{4}%
+ \clue{24}{A}{6}{8}{ALPHA}{It's not Intel}{5}%
+ \clue{25}{A}{1}{9}{FRE}{A pointer misspelled}{3}%
+ \clue{27}{A}{5}{9}{PREC}{Testing your \LaTeX{} knowledge: \(\prec\)}{4}%
+ \clue{28}{A}{10}{9}{TIN}{Label for a signal line}{3}%
+ \clue{29}{A}{3}{10}{THEM}{Another name for the \LaTeX3 project
+ team on c.t.t.}{4}%
+ \clue{30}{A}{9}{10}{SH}{One way to get a sharp in
+ \textsf{MusiX\TeX}}{2}%
+ \clue{31}{A}{1}{11}{DIAGRAM}{A figure or plan intended to
+ explain rather than represent actual appearance}{7}%
+ \clue{33}{A}{11}{11}{PT}{72.27 to an inch}{2}%
+ \clue{34}{A}{8}{12}{KNUTH}{see \textbf{1d}}{5}%
+ \clue{1 \& a34}{D}{1}{1}{DON}{Grand wizard of \TeX{}}{3,5}%
+ \clue{2}{D}{3}{1}{TETEX}{A ready-to-run \TeX{} for Unix}{5}%
+ \clue{3}{D}{7}{1}{PAR}{A novice golfer's dream}{3}%
+ \clue{4}{D}{9}{1}{CLASS}{\LaTeXe{} name for document style}{5}%
+ \clue{5}{D}{11}{1}{IBBU}{Double beam above notes in \textsf{MusiX\TeX}}{4}%
+ \clue{9}{D}{6}{3}{LOR}{Either or --- mathematically speaking}{3}%
+ \clue{10}{D}{2}{4}{BIT}{German beer}{3}%
+ \clue{11}{D}{4}{4}{MSAVE}{Save your coordinates (\textsf{PSTricks})}{5}%
+ \clue{12}{D}{8}{4}{PI}{Approximation of \TeX{}'s version number}{2}%
+ \clue{13}{D}{10}{4}{NEWPATH}{A PostScript operator}{7}%
+ \clue{14}{D}{12}{4}{PR}{Probability function}{2}%
+ \clue{16}{D}{7}{5}{ANGLE}{A divine messenger misspelled}{5}%
+ \clue{17}{D}{1}{6}{AA}{How do you get an \AA?}{2}%
+ \clue{18}{D}{5}{6}{XI}{\(\xi\)}{2}%
+ \clue{22}{D}{12}{7}{LENGTH}{\LaTeX{} has rigid and rubber ones}{6}%
+ \clue{23}{D}{2}{8}{AR}{Amor uses them and \XYPIC{} calls them}{2}%
+ \clue{24}{D}{6}{8}{ARMA}{Length of the line segment where the
+ connector joins the first node}{4}%
+ \clue{25}{D}{1}{9}{FDD}{Files containing \LaTeX{}
+ font-definition documentation}{3}%
+ \clue{26}{D}{3}{9}{ETA}{\(\eta\) --- don't say this is all Greek to you}{3}%
+ \clue{27}{D}{5}{9}{PERP}{\(\perp\), also the first letters
+ of everlasting}{4}%
+ \clue{30}{D}{9}{10}{SIN}{We plot it in Chapter 4}{3}%
+ \clue{32}{D}{2}{11}{IN}{\TeX{}'s name for inch}{2}%
+ \clue{33}{D}{11}{11}{PT}{Lula is chief of}{2}%
+\end{crossword}%
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-7-2.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/8-7-2.ltx
new file mode 100644
index 00000000000..021076d0a5b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-7-2.ltx
@@ -0,0 +1,69 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {crosswrd}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {crosswrd}
+\begin{crossword*}{12}{Solution}
+% This is a crossword puzzle prepared for crosswrd.sty
+ \clue{2}{A}{3}{1}{TNSEP}{Gap between tree node labels and
+ the node in \textsf{PSTricks}}{5}%
+ \clue{4}{A}{9}{1}{CLIP}{Modern replacement for scissors and glue}{4}%
+ \clue{6}{A}{1}{2}{OMEGA}{A Unicode \TeX{} variant}{5}%
+ \clue{7}{A}{7}{2}{ALL}{\ldots{} you always wanted to know but never
+ dared to ask}{3}%
+ \clue{8}{A}{11}{2}{BB}{A graphics key that needs four numbers}{2}%
+ \clue{10}{A}{2}{4}{BEMBO}{Called \texttt{bb} in Karl Berry's
+ font-naming schemes}{5}%
+ \clue{12}{A}{8}{4}{PSNUP}{A way to make your pages into thumbnails}{5}%
+ \clue{15}{A}{6}{5}{RAISE}{You can do it to a box but
+ it isn't proper \LaTeX{}}{5}%
+ \clue{19}{A}{10}{6}{WP}{In \LaTeX{} denotes \(\wp\); in other
+ circumstances might
+ mean a word processor}{2}%
+ \clue{20}{A}{3}{7}{DVI}{Result of a \TeX{} run}{3}%
+ \clue{21}{A}{7}{7}{GRAP}{A language whose name should probably have five
+ letters, but then it was developed for Unix}{4}%
+ \clue{24}{A}{6}{8}{ALPHA}{It's not Intel}{5}%
+ \clue{25}{A}{1}{9}{FRE}{A pointer misspelled}{3}%
+ \clue{27}{A}{5}{9}{PREC}{Testing your \LaTeX{} knowledge: \(\prec\)}{4}%
+ \clue{28}{A}{10}{9}{TIN}{Label for a signal line}{3}%
+ \clue{29}{A}{3}{10}{THEM}{Another name for the \LaTeX3 project
+ team on c.t.t.}{4}%
+ \clue{30}{A}{9}{10}{SH}{One way to get a sharp in
+ \textsf{MusiX\TeX}}{2}%
+ \clue{31}{A}{1}{11}{DIAGRAM}{A figure or plan intended to
+ explain rather than represent actual appearance}{7}%
+ \clue{33}{A}{11}{11}{PT}{72.27 to an inch}{2}%
+ \clue{34}{A}{8}{12}{KNUTH}{see 1d}{5}%
+ \clue{1 \& a34}{D}{1}{1}{DON}{Grand wizard of \TeX{}}{3,5}%
+ \clue{2}{D}{3}{1}{TETEX}{A ready-to-run \TeX{} for Unix}{5}%
+ \clue{3}{D}{7}{1}{PAR}{A novice golfer's dream}{3}%
+ \clue{4}{D}{9}{1}{CLASS}{\LaTeXe{} name for document style}{5}%
+ \clue{5}{D}{11}{1}{IBBU}{Double beam above notes in \textsf{MusiX\TeX}}{4}%
+ \clue{9}{D}{6}{3}{LOR}{Either or --- mathematically speaking}{3}%
+ \clue{10}{D}{2}{4}{BIT}{German beer}{3}%
+ \clue{11}{D}{4}{4}{MSAVE}{Save your coordinates (\textsf{PSTricks})}{5}%
+ \clue{12}{D}{8}{4}{PI}{Approximation of \TeX{}'s version number}{2}%
+ \clue{13}{D}{10}{4}{NEWPATH}{A PostScript operator}{7}%
+ \clue{14}{D}{12}{4}{PR}{Probability function}{2}%
+ \clue{16}{D}{7}{5}{ANGLE}{A divine messenger misspelled}{5}%
+ \clue{17}{D}{1}{6}{AA}{How do you get an \AA?}{2}%
+ \clue{18}{D}{5}{6}{XI}{\(\xi\)}{2}%
+ \clue{22}{D}{12}{7}{LENGTH}{\LaTeX{} has rigid and rubber ones}{6}%
+ \clue{23}{D}{2}{8}{AR}{Amor uses them and \XYPIC{} calls them}{2}%
+ \clue{24}{D}{6}{8}{ARMA}{Length of the line segment where the
+ connector joins the first node}{4}%
+ \clue{25}{D}{1}{9}{FDD}{Files containing \LaTeX{}
+ font-definition documentation}{3}%
+ \clue{26}{D}{3}{9}{ETA}{\(\eta\) --- don't say this is all Greek to you}{3}%
+ \clue{27}{D}{5}{9}{PERP}{\(\perp\), also the first letters
+ of everlasting}{4}%
+ \clue{30}{D}{9}{10}{SIN}{We plot it in Chapter 4}{3}%
+ \clue{32}{D}{2}{11}{IN}{\TeX{}'s name for inch}{2}%
+ \clue{33}{D}{11}{11}{PT}{Lula is chief of}{2}%
+\end{crossword*}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-7-3.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/8-7-3.ltx
new file mode 100644
index 00000000000..77cef92b9ae
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-7-3.ltx
@@ -0,0 +1,15 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {cwpuzzle}
+\pagestyle{empty}
+\setlength\textwidth{207.0pt}
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {cwpuzzle}
+\begin{Puzzle}{7}{3}
+|[1]T | A |[2]B | U | L |[3]A | R |.
+| * | * |[4]I | M | * | X | * |.
+|[5]D | E | G | * |[6]D | E | T |.
+\end{Puzzle}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/8-7-4.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/8-7-4.ltx
new file mode 100644
index 00000000000..e9542f13fd0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/8-7-4.ltx
@@ -0,0 +1,21 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {cwpuzzle}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {cwpuzzle}
+\begin{minipage}{.38\fullwidth}
+\begin{Puzzle}{7}{3}
+|[1]T | [2]A |[3]B | [4]U |[5]L |[2]A |[6]R |.
+| * | * |[7]I | [8]M | * |[9] X |* |.
+|[10]D| [11]E|[12]G| * |[10]D|[11]E |[1]T |.
+\end{Puzzle}
+\end{minipage}
+\begin{minipage}{.6\fullwidth}
+ \PuzzleLetters{ABDEGILMRTUX}\medskip\par
+ \PuzzleNumbers{TABULRIMXDEG}
+\end{minipage}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-1.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-1.inl
new file mode 100644
index 00000000000..2150baa4d30
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-1.inl
@@ -0,0 +1,6 @@
+\usepackage {color}
+{\color{green}
+Text starts off in green
+\textcolor{red}{ a little red}
+{\color{blue}nested blue text}
+returning to green}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-2.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-2.inl
new file mode 100644
index 00000000000..27e3954e860
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-2.inl
@@ -0,0 +1,6 @@
+\usepackage {color}
+{\color[rgb]{0,1,0}
+Text starts off in green
+\textcolor[rgb]{1,0,0}{ a little red}
+{\color[rgb]{0,0,1}nested blue text}
+returning to green}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-3.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-3.inl
new file mode 100644
index 00000000000..e80d74a5c28
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-3.inl
@@ -0,0 +1,8 @@
+\usepackage {color}
+\begin{enumerate}
+\item \textcolor[cmyk]
+ {0,1,0,0}{magenta cmyk} black
+\item \color[gray]{0.5}
+ \textcolor{blue}{predefined blue}
+ gray text
+\end{enumerate}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-4.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-4.inl
new file mode 100644
index 00000000000..ba838d4b1d1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-4.inl
@@ -0,0 +1,10 @@
+\usepackage {color}
+\newsavebox{\X}
+\sbox{\X}{[black text] and
+ \color[cmyk]{0,0.6,0.8,0}[orange text]}
+
+Start with \usebox{\X},
+and return to black
+
+{\color{green}Start in green, see
+\usebox{\X} and once again green}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-5.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-5.inl
new file mode 100644
index 00000000000..7549cfcbded
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-5.inl
@@ -0,0 +1,8 @@
+\usepackage {color}
+\definecolor{Light}{gray}{.80}
+\definecolor{Dark}{gray}{.20}
+\colorbox{red}{Black text on red background}
+\par\colorbox{Light}{%
+ \textcolor{Dark}{Light background}}
+\par\colorbox{Dark}{%
+ \textcolor{white}{Dark background}}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-6.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-6.inl
new file mode 100644
index 00000000000..497847f156a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-6.inl
@@ -0,0 +1,6 @@
+\usepackage {color}
+\fcolorbox{red}{blue}{Black text,
+ blue background, red frame}
+
+\fcolorbox{red}{blue}{\color{white}%
+ White text, blue background, red frame}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-7.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-7.inl
new file mode 100644
index 00000000000..6c814c6e8ed
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-7.inl
@@ -0,0 +1,9 @@
+\usepackage {color}
+\setlength{\fboxrule}{6pt}%
+\setlength{\fboxsep}{10pt}%
+\colorbox{yellow}{Fun with color}\qquad
+\fcolorbox{red}{yellow}{Fun with color}
+\par\bigskip\par
+\setlength{\fboxrule}{1pt}%
+\colorbox{green}{Fun with color}\qquad
+\fcolorbox{red}{green}{Fun with color}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-8.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-8.ltx
new file mode 100644
index 00000000000..426c4a8e8e7
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-8.ltx
@@ -0,0 +1,26 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {ifthen,color}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {ifthen,color}
+\newcounter{Colr}
+\setlength{\fboxsep}{2mm}
+\begin{flushleft}
+ \newcommand{\CBox}[1]{\colorbox[cmyk]{.#1,0.,0.,0.}{.#1}}
+ \makebox[30mm][l]{cyan (C):}%
+ \whiledo{\value{Colr}<10}{\CBox{\theColr}\stepcounter{Colr}}\\
+ \renewcommand{\CBox}[1]{\colorbox[cmyk]{0.,.#1,0.,0.}{.#1}}
+ \setcounter{Colr}{0}\makebox[30mm][l]{magenta (M):}%
+ \whiledo{\value{Colr}<10}{\CBox{\theColr}\stepcounter{Colr}}\\
+ \renewcommand{\CBox}[1]{\colorbox[cmyk]{0.,0.,.#1,0.}{.#1}}
+ \setcounter{Colr}{0}\makebox[30mm][l]{yellow (Y):}%
+ \whiledo{\value{Colr}<10}{\CBox{\theColr}\stepcounter{Colr}}\\
+ \renewcommand{\CBox}[1]{\colorbox[cmyk]{0.,0.,0.,.#1}{.#1}}
+ \setcounter{Colr}{0}\makebox[30mm][l]{black (K):}%
+ \whiledo{\value{Colr}<10}{\CBox{\theColr}\stepcounter{Colr}}
+\end{flushleft}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-9.ltx b/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-9.ltx
new file mode 100644
index 00000000000..cc6d107c889
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-2-9.ltx
@@ -0,0 +1,23 @@
+\documentclass{ppex}
+\nonstopmode
+\usepackage {ifthen,color}
+\pagestyle{empty}
+
+\begin{document}
+\ResetPreambleCommands
+\ReadyForTheFray
+\usepackage {ifthen,color}
+\begin{flushleft}
+\newcounter{Col}
+\setlength{\fboxsep}{2mm}
+\newcommand{\ColBox}[1]{\colorbox[hsb]{.#1,1.,1.}{.#1}}%
+\setcounter{Col}{0}\makebox[18mm][l]{Hue:}%
+\whiledo{\value{Col}<10}{\ColBox{\theCol}\stepcounter{Col}}\\
+\renewcommand{\ColBox}[1]{\colorbox[hsb]{.1,.#1,1.}{.#1}}%
+\setcounter{Col}{0}\makebox[18mm][l]{Saturation:}%
+\whiledo{\value{Col}<10}{\ColBox{\theCol}\stepcounter{Col}}\\
+\renewcommand{\ColBox}[1]{\colorbox[hsb]{1.,1.,.#1}{.#1}}%
+\setcounter{Col}{0}\makebox[18mm][l]{Brightness:}%
+\whiledo{\value{Col}<10}{\ColBox{\theCol}\stepcounter{Col}}\\
+\end{flushleft}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-1.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-1.inl
new file mode 100644
index 00000000000..1964fb51939
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-1.inl
@@ -0,0 +1,17 @@
+\usepackage {colortbl}
+\setlength{\extrarowheight}{2mm}
+\setlength{\tabcolsep}{2mm}
+\begin{tabular}{|l|%
+ >{\columncolor{yellow}}c|c|>{\columncolor{yellow}}c|c|%
+ >{\columncolor{red}\bfseries}c<{\textsc{GBP}}|}
+\hline
+ \multicolumn{3}{>{\columncolor{red}}l}{\color{white}\textsf{LONDON}}
+&\multicolumn{3}{>{\columncolor{red}}r}{\color{white}\textsf{Price}}
+\\[1pt]
+\hline
+Sydney & OG4G &Thu Oct 10 &Mon Oct 21 or 28 &11 or 18 days &999\\
+ & &Thu Oct 17 &Mon Oct 21 or 28 & 4 or 11 days &999\\
+ & OG7A &Sun Oct 13 &Mon Oct 21 or 28 & 8 or 15 days &999\\
+ & &Sun Oct 20 &Mon Oct 28 & 8 days &999\\
+\hline
+\end{tabular}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-10.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-10.inl
new file mode 100644
index 00000000000..d9f4f2ef473
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-10.inl
@@ -0,0 +1,18 @@
+\usepackage {colortbl}
+{\color{green}%
+\begin{tabular}{lrr}
+ \color{black}
+ \large\textbf{Table title}\\[3mm]
+ \textbf{Description}
+ & \textbf{Column 1}
+ & \textbf{Column 2}\\[1mm]
+ Row one & mmmmm & mmmm \\
+ Row two & mmmm & mmm \\
+ Row three& mmmmm & mmmmm \\
+ Row four & mmmmm & mmmm \\
+\arrayrulecolor{black}\cline{2-3}
+ \color{black} Totals
+ & \color{black}mmmmm
+ & \color{black}mmmmm
+\end{tabular}%
+}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-11.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-11.inl
new file mode 100644
index 00000000000..3ee6d18bc44
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-11.inl
@@ -0,0 +1,16 @@
+\usepackage {colortbl}
+\newcommand\panel[1]{\multicolumn{1}%
+ {>{\columncolor{magenta}}#1}}
+\begin{tabular}{lrr}
+ \large\textbf{Table title}\\[2mm]
+ \textbf{Description}
+ & \textbf{Column 1}
+ & \textbf{Column 2}\\[1mm]
+ Row one & mmmmm & mmmm \\
+ Row two & mmmm & mmm \\
+ \panel{l}{Row three}
+ & \panel{r}{mmmmm}
+ & \panel{r}{mmmmm} \\
+ Row four& mmmmm & mmmm \\ \cline{2-3}
+ Totals & mmmmm & mmmmm
+\end{tabular}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-12.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-12.inl
new file mode 100644
index 00000000000..00c3884d326
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-12.inl
@@ -0,0 +1,18 @@
+\usepackage {colortbl}
+\newcommand\panel[1]{\multicolumn{1}%
+ {>{\columncolor{white}}#1}}
+\colorbox{magenta}{%
+\arrayrulecolor{black}
+\begin{tabular}{lrr}
+ \large\textbf{Table title}\\[2mm]
+ \textbf{Description}
+ & \textbf{Column 1}
+ & \textbf{Column 2}\\[1mm]
+ Row one & mmmmm & mmmm \\
+ Row two & mmmm & mmm \\
+ \panel{l}{Row three}
+ & \panel{r}{mmmmm}
+ & \panel{r}{mmmmm} \\
+ Row four& mmmmm & mmmm \\ \cline{2-3}
+ Totals & mmmmm & mmmmm
+\end{tabular}}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-13.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-13.inl
new file mode 100644
index 00000000000..7bdd8c7b4d6
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-13.inl
@@ -0,0 +1,12 @@
+\usepackage {colortbl}
+\definecolor{Bluec}{cmyk}{.60,0,0,0}
+\begin{tabular}{l>{\columncolor{Bluec}}rr}
+\large\textbf{Table title}\\[2mm]
+\textbf{Description} & \textbf{Column 1}
+ & \textbf{Column 2} \\[1mm]
+Row one & mmmmm & mmmm \\
+Row two & mmmm & mmm \\
+Row three& mmmmm & mmmmm \\
+Row four & mmmmm & mmmm \\
+Totals & mmmmm & mmmmm
+\end{tabular}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-14.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-14.inl
new file mode 100644
index 00000000000..0dabe87f2f7
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-14.inl
@@ -0,0 +1,18 @@
+\usepackage {colortbl}
+\definecolor{Bluea}{cmyk}{.20,0,0,0}
+\definecolor{Blueb}{cmyk}{.40,0,0,0}
+\definecolor{Bluec}{cmyk}{.60,0,0,0}
+\definecolor{Blued}{cmyk}{.80,0,0,0}
+\definecolor{Bluee}{cmyk}{1.0,0,0,0}
+\begin{tabular}{>{\columncolor{Bluee}}l%
+>{\columncolor{Bluee}}r>{\columncolor{Bluee}}r}
+\multicolumn{3}{>{\columncolor{Bluee}}l}
+ {\large\textbf{Table title}}\\[2mm]
+\textbf{Description} & \textbf{Column 1}
+ & \textbf{Column 2} \\[1mm]
+\rowcolor{Bluea}Row one & mmmmm & mmmm \\
+\rowcolor{Blueb}Row two & mmmm & mmm \\
+\rowcolor{Bluec}Row three& mmmmm & mmmmm \\
+\rowcolor{Blued}Row four & mmmmm & mmmm \\
+\rowcolor{Bluee}Totals & mmmmm & mmmmm
+\end{tabular}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-15.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-15.inl
new file mode 100644
index 00000000000..36d6dabb15b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-15.inl
@@ -0,0 +1,14 @@
+\usepackage {colortbl}
+\newcommand{\panel}[1]{\multicolumn{1}
+ {|>{\columncolor[cmyk]{.40,0,0,0}}r}{#1}}
+\begin{tabular}{l|r|r}
+\multicolumn{1}{l|}
+ {\large\textbf{Table title}}\\[2mm]
+\textbf{Description} & \textbf{Column 1}
+ & \textbf{Column 2} \\[1mm]\hline
+Row one & \panel{mmmmm} & \panel{mmmm} \\\hline
+Row two & \panel{mmmm} & \panel{mmm} \\\hline
+Row three& \panel{mmmmm} & \panel{mmmmm}\\\hline
+Row four & \panel{mmmmm} & \panel{mmmm} \\\hline
+Totals & mmmmm & mmmmm
+\end{tabular}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-16.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-16.inl
new file mode 100644
index 00000000000..7501608183e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-16.inl
@@ -0,0 +1,16 @@
+\usepackage {colortbl}
+\newcommand{\panel}[1]{%
+ \multicolumn{1}{|>{\columncolor{white}}r}{#1}}
+\setlength\fboxsep{3mm}
+\colorbox[cmyk]{.40,0,0,0}{%
+\begin{tabular}{l|r|r}
+\multicolumn{1}{l|}
+ {\large\textbf{Table title}}\\[2mm]
+\textbf{Description} & \textbf{Column 1}
+ & \textbf{Column 2} \\[1mm]\hline
+Row one & \panel{mmmmm} & \panel{mmmm} \\\hline
+Row two & \panel{mmmm} & \panel{mmm} \\\hline
+Row three& \panel{mmmmm} & \panel{mmmmm}\\\hline
+Row four & \panel{mmmmm} & \panel{mmmm} \\\hline
+Totals & mmmmm & mmmmm
+\end{tabular}}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-17.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-17.inl
new file mode 100644
index 00000000000..854cb1e9616
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-17.inl
@@ -0,0 +1,14 @@
+\usepackage {colortbl}
+\arrayrulecolor[cmyk]{.80,0,0,0}
+\begin{tabular}{l|r|r}
+\multicolumn{3}{l}{\large\textbf{Table title}}\\[2mm]
+\textbf{Description} & \textbf{Column 1}
+ & \textbf{Column 2} \\[1mm]\hline
+\arrayrulecolor[cmyk]{1.0,0,0,0}
+Row one & mmmmm & mmmm \\\hline
+Row two & mmmm & mmm \\\hline
+Row three& mmmmm & mmmmm \\\hline
+Row four & mmmmm & mmmm \\\cline{1-1}
+\arrayrulecolor{black}\cline{2-3}
+Totals & mmmmm & mmmmm
+\end{tabular}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-18.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-18.inl
new file mode 100644
index 00000000000..e4687ff833e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-18.inl
@@ -0,0 +1,14 @@
+\usepackage {colortbl}
+\arrayrulecolor{black}
+\begin{tabular}{l|r|r}
+\multicolumn{3}{>{\columncolor[cmyk]{1.0,0,0,0}}l}
+ {\large\textbf{Table title}}\\[2mm]
+\rowcolor[cmyk]{.20,0,0,0}
+\textbf{Description} & \textbf{Column 1}
+ & \textbf{Column 2} \\[1mm]\hline
+Row one & mmmmm & mmmm \\
+Row two & mmmm & mmm \\
+Row three& mmmmm & mmmmm \\
+Row four & mmmmm & mmmm \\\cline{2-3}
+Totals & mmmmm & mmmmm
+\end{tabular}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-19.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-19.inl
new file mode 100644
index 00000000000..921d1289f60
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-19.inl
@@ -0,0 +1,14 @@
+\usepackage {colortbl,hhline}
+\definecolor{Blueb}{cmyk}{.40,0,0,0} \definecolor{Blued}{cmyk}{.80,0,0,0}
+\arrayrulecolor{white}
+\begin{tabular}{>{\columncolor{Blued}}l>{\columncolor{Blued}}r|%
+ >{\columncolor{Blued}}r}
+ \multicolumn{3}{>{\columncolor{Blueb}}l}{\large\textbf{Table title}}\\[2mm]
+\rowcolor{white}
+ \textbf{Description} & \textbf{Column 1} & \textbf{Column 2} \\[1mm]
+\arrayrulecolor{black}
+\rowcolor{Blueb}
+ Row one & mmmmm & mmmm \\\hhline{~--} Row two & mmmm & mmm \\\hhline{~--}
+ Row three & mmmmm & mmmmm\\\hhline{~--} Row four & mmmmm & mmmm\\\hhline{~--}
+\rowcolor{white} Totals & mmmmm & mmmmm
+\end{tabular}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-2.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-2.inl
new file mode 100644
index 00000000000..db380e65d84
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-2.inl
@@ -0,0 +1,17 @@
+\usepackage {colortbl}
+\setlength{\extrarowheight}{2mm}
+\setlength{\tabcolsep}{2mm}
+\newcolumntype{G}{>{\columncolor[gray]{0.8}[0pt][0pt]}c}
+
+\begin{tabular}{|l|c|G|c|G|c|G|c<{\textsc{GBP}}|}
+\hline
+ \multicolumn{3}{>{\columncolor[gray]{0.5}}l}{\textsf{LONDON}}
+ &\multicolumn{3}{>{\columncolor[gray]{0.5}}r}{\textsf{Price}}
+\\[1pt]
+\hline
+Sydney & OG4G &Thu Oct 10 &Mon Oct 21 or 28 &11 or 18 days &999\\
+ & &Thu Oct 17 &Mon Oct 21 or 28 & 4 or 11 days &999\\
+ & OG7A &Sun Oct 13 &Mon Oct 21 or 28 & 8 or 15 days &999\\
+ & &Sun Oct 20 &Mon Oct 28 & 8 days &999\\
+\hline
+\end{tabular}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-20.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-20.inl
new file mode 100644
index 00000000000..e5a81b8fe10
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-20.inl
@@ -0,0 +1,21 @@
+\usepackage {colortbl}
+\definecolor{Blueb}{cmyk}{.40,0,0,0}
+\definecolor{Blued}{cmyk}{.80,0,0,0}
+\definecolor{Bluee}{cmyk}{1.0,0,0,0}
+\arrayrulecolor{black}
+\setlength\arrayrulewidth{1mm}
+\begin{tabular}{llrrl}
+\rowcolor{Blueb}
+ \qquad&\multicolumn{3}{>{\columncolor{Blueb}}l}
+ {\large\textbf{Table title}}&\qquad\\[2mm]
+ \rowcolor{Blued}& \textbf{Description}
+ & \textbf{Column 1}
+ & \textbf{Column 2}& \\[2mm]
+\hline
+ \rowcolor{Blued}& Row one & mmmmm & mmmm &\\
+ \rowcolor{Blued}& Row two & mmmm & mmm &\\
+ \rowcolor{Blued}& Row three& mmmmm & mmmmm&\\
+ \rowcolor{Blued}& Row four & mmmmm & mmmm &\\
+\cline{2-3}
+ \rowcolor{Bluee}& Totals & mmmmm & mmmmm&\\[2mm]
+\end{tabular}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-3.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-3.inl
new file mode 100644
index 00000000000..127d9203fa2
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-3.inl
@@ -0,0 +1,12 @@
+\usepackage {colortbl}
+\setlength{\extrarowheight}{2mm}
+\begin{tabular}{|l|c|c|c|c|c|c|c|}
+\hline
+Sydney & OG4G &Thu Oct 10 &Mon Oct 21 or 28 &11 or 18 days &999\\
+\rowcolor[gray]{0.5}
+ & &Thu Oct 17 &Mon Oct 21 or 28 & 4 or 11 days &999\\
+ &OG7A &Sun Oct 13 &Mon Oct 21 or 28 & 8 or 15 days &999\\
+\rowcolor[gray]{0.5}
+ & &Sun Oct 20 &Mon Oct 28 & 8 days &999\\
+\hline
+\end{tabular}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-4.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-4.inl
new file mode 100644
index 00000000000..a012d72ae11
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-4.inl
@@ -0,0 +1,12 @@
+\usepackage {colortbl}
+\setlength{\arrayrulewidth}{2pt}
+\arrayrulecolor{green}
+\begin{tabular}{|l|c|r|}
+\arrayrulecolor{black}\hline
+ United Kingdom & London & Thames\\
+\arrayrulecolor{blue}\hline
+ France & Paris & Seine \\
+\arrayrulecolor{black}\cline{1-1}
+\arrayrulecolor{red}\cline{2-3}
+ Russia & Moscow & Moskva \\ \hline
+\end{tabular}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-5.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-5.inl
new file mode 100644
index 00000000000..75dc963514d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-5.inl
@@ -0,0 +1,13 @@
+\usepackage {colortbl}
+\begin{tabular}{lrr}
+ \large\textbf{Table title}\\[2mm]
+ \textbf{Description}
+ & \textbf{Column 1}
+ & \textbf{Column 2}\\[1mm]
+ Row one & mmmmmm & mmmmm \\
+ Row two & mmmmm & mmmm \\
+ Row three& mmmmmm & mmmmmm \\
+ Row four & mmmmmm & mmmmm \\
+\cline{2-3}
+ Totals & mmmmmm & mmmmmm
+\end{tabular}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-6.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-6.inl
new file mode 100644
index 00000000000..1e399c7bcd1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-6.inl
@@ -0,0 +1,16 @@
+\usepackage {colortbl}
+\definecolor{orange}{cmyk}{0,0.61,0.87,0}
+\colorbox{orange}{%
+\begin{tabular}{lrr}
+ \large\textbf{Table title}\\[2mm]
+ \textbf{Description}
+ & \textbf{Column 1}
+ & \textbf{Column 2}\\[1mm]
+ Row one & mmmmmm & mmmmm \\
+ Row two & mmmmm & mmmm \\
+ Row three& mmmmmm & mmmmmm \\
+ Row four & mmmmmm & mmmmm \\
+\cline{2-3}
+ Totals & mmmmmm & mmmmmm
+\end{tabular}%
+}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-7.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-7.inl
new file mode 100644
index 00000000000..6701d378fcb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-7.inl
@@ -0,0 +1,17 @@
+\usepackage {colortbl}
+\definecolor{orange}{cmyk}{0,0.61,0.87,0}
+\colorbox{orange}{%
+\color{white}%
+\begin{tabular}{lrr}
+ \large\textbf{Table title}\\[2mm]
+ \textbf{Description}
+ & \textbf{Column 1}
+ & \textbf{Column 2}\\[1mm]
+ Row one & mmmmmm & mmmmm \\
+ Row two & mmmmm & mmmm \\
+ Row three& mmmmmm & mmmmmm \\
+ Row four & mmmmmm & mmmmm \\
+\cline{2-3}
+ Totals & mmmmmm & mmmmmm
+\end{tabular}%
+}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-8.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-8.inl
new file mode 100644
index 00000000000..800c6a05a1e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-8.inl
@@ -0,0 +1,17 @@
+\usepackage {colortbl}
+\definecolor{orange}{cmyk}{0,0.61,0.87,0}
+\colorbox{orange}{%
+\color{white}\bfseries
+\begin{tabular}{lrr}
+ \large\textbf{Table title}\\[2mm]
+ \textbf{Description}
+ & \textbf{Column 1}
+ & \textbf{Column 2}\\[1mm]
+ Row one & mmmmmm & mmmmm \\
+ Row two & mmmmm & mmmm \\
+ Row three& mmmmmm & mmmmmm \\
+ Row four & mmmmmm & mmmmm \\
+\cline{2-3}
+ Totals & mmmmmm & mmmmmm
+\end{tabular}%
+}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-9.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-9.inl
new file mode 100644
index 00000000000..f129ea012bd
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/9-3-9.inl
@@ -0,0 +1,16 @@
+\usepackage {colortbl}
+\begin{tabular}{lrr}
+ \color{green}
+ \large\textbf{Table title}\\[3mm]
+ \textbf{Description}
+ & \textbf{Column 1}
+ & \textbf{Column 2}\\[1mm]
+ Row one & mmmmm & mmmm \\
+ Row two & mmmm & mmm \\
+ Row three& mmmmm & mmmmm \\
+ Row four & mmmmm & mmmm \\
+\cline{2-3}
+ \color{green} Totals
+ & \color{green} mmmmm
+ & \color{green}mmmmm
+\end{tabular}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/A-1-1.inl b/Master/texmf-doc/doc/english/latex-graphics-companion/A-1-1.inl
new file mode 100644
index 00000000000..708aa9cbb98
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/A-1-1.inl
@@ -0,0 +1,15 @@
+
+\setlength{\unitlength}{5mm}
+\begin{picture}(10,10)
+\put(2,2){\special{em:point 1}}
+\put(5,3){\special{em:point 2}}
+\put(7,5){\special{em:point 3}}
+\put(4,7){\special{em:point 4}}
+\put(1,4){\special{em:point 5}}
+\special{em:linewidth 2pt}
+{\color{blue}\special{em:line 1,2}\special{em:line 2,3}}
+\special{em:line 3,4} \special{em:line 4,5}
+\special{em:line 5,1}
+\color{yellow}\special{em:line 3,5,0.5pt}
+\color{red}\special{em:line 4,2,3pt}
+\end{picture}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/Makefile b/Master/texmf-doc/doc/english/latex-graphics-companion/Makefile
new file mode 100644
index 00000000000..8906b308b17
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/Makefile
@@ -0,0 +1,2 @@
+clean:
+ rm -f *.pic *.mpp *.ltx *.abc *.eps *.mp *.mpx *.mx2 *.m4 *.ptx mfpicex.* *.acr *.dwn mpxerr.* *.inl *.log
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/README b/Master/texmf-doc/doc/english/latex-graphics-companion/README
new file mode 100644
index 00000000000..ec7c18c37ea
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/README
@@ -0,0 +1,17 @@
+These files contain the source for all the examples in:
+
+The LaTeX Graphics Companion
+
+Illustrating documents with
+TeX and PostScript
+
+by Michel Goossens, Frank Mittelbach, and Sebastian Rahtz
+0-201-85469-4 * Paperback * 608 pages * 1997
+
+(for more details see http://www.aw.com/cp/tlgc.html)
+
+Each example in the book is numbered, and source can be found in the
+corresponding file here
+
+Sebastian Rahtz
+April 1997 \ No newline at end of file
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/ages.dat b/Master/texmf-doc/doc/english/latex-graphics-companion/ages.dat
new file mode 100644
index 00000000000..eacdd1e012f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/ages.dat
@@ -0,0 +1,458 @@
+1
+1
+1
+1
+1
+1
+1
+1
+1
+2
+2
+2
+3
+3
+3
+4
+4
+4
+4
+6
+6
+6
+7
+8
+9
+10
+10
+11
+13
+13
+13
+14
+15
+15
+16
+16
+16
+16
+16
+17
+17
+17
+18
+18
+18
+18
+18
+18
+18
+19
+19
+19
+19
+20
+20
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+21
+22
+22
+22
+22
+22
+23
+23
+23
+23
+23
+23
+23
+23
+24
+24
+24
+25
+25
+25
+25
+25
+25
+25
+25
+25
+26
+26
+26
+26
+26
+26
+26
+27
+27
+27
+27
+27
+27
+28
+28
+28
+29
+29
+29
+29
+29
+29
+29
+29
+29
+29
+29
+30
+30
+30
+30
+30
+31
+31
+31
+31
+31
+31
+32
+32
+32
+32
+32
+32
+33
+33
+33
+33
+34
+34
+34
+34
+34
+34
+34
+35
+35
+35
+35
+35
+36
+36
+37
+37
+37
+37
+37
+37
+37
+37
+37
+38
+38
+38
+38
+38
+38
+38
+39
+39
+40
+40
+41
+41
+41
+41
+42
+42
+42
+42
+42
+42
+42
+43
+43
+43
+43
+43
+44
+44
+44
+44
+44
+44
+45
+45
+46
+47
+47
+47
+47
+47
+47
+47
+48
+48
+48
+49
+49
+49
+50
+50
+50
+51
+52
+52
+52
+52
+52
+52
+53
+53
+53
+54
+54
+54
+54
+54
+54
+54
+55
+55
+55
+55
+55
+56
+56
+56
+57
+57
+57
+57
+58
+58
+58
+58
+58
+59
+59
+59
+59
+59
+60
+60
+60
+60
+61
+61
+61
+61
+61
+61
+61
+62
+62
+62
+62
+63
+63
+63
+63
+64
+64
+64
+64
+64
+64
+64
+64
+65
+65
+65
+65
+66
+66
+66
+66
+66
+67
+67
+67
+67
+67
+67
+67
+68
+68
+68
+68
+68
+68
+68
+68
+68
+68
+69
+69
+69
+69
+69
+70
+70
+70
+70
+70
+70
+70
+71
+71
+71
+72
+72
+72
+72
+72
+72
+73
+73
+73
+73
+73
+73
+73
+73
+73
+74
+74
+74
+74
+74
+75
+75
+75
+75
+75
+75
+75
+75
+76
+76
+76
+76
+76
+76
+76
+76
+76
+76
+76
+76
+76
+76
+76
+77
+77
+77
+77
+77
+78
+78
+78
+78
+78
+78
+78
+78
+78
+78
+78
+79
+79
+79
+79
+79
+79
+79
+79
+79
+79
+79
+79
+79
+79
+79
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+81
+81
+81
+82
+82
+82
+82
+83
+83
+83
+83
+83
+83
+84
+84
+84
+84
+84
+84
+85
+85
+86
+86
+86
+86
+86
+87
+87
+88
+88
+88
+88
+88
+89
+89
+89
+89
+90
+90
+91
+91
+91
+92
+92
+93
+93
+93
+96
+97
+105
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/bar.ini b/Master/texmf-doc/doc/english/latex-graphics-companion/bar.ini
new file mode 100644
index 00000000000..9cfa4299660
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/bar.ini
@@ -0,0 +1,19 @@
+/****************************************************************************
+ PROJECT: MusixTeX PreProcessor
+ FILE : bar.ini
+ AUTHOR : J. C. Nieuwenhuizen
+
+ copyright (c) FlowerSoft 1995
+--*/
+
+ macroList.put( *new BarToken( "|", "\\bar" ) );
+ macroList.put( *new BarToken( "||", "\\doublebar" ) );
+ macroList.put( *new BarToken( ":|", "\\rightrepeat" ) );
+ macroList.put( *new BarToken( ":||", "\\setrightrepeat" ) );
+ macroList.put( *new BarToken( "|:", "\\leftrepeat" ) );
+ macroList.put( *new BarToken( ":|:", "\\rightleftrepeat" ) );
+ // obsolete
+ macroList.put( *new BarToken( "|||", "\\Endpiece\\let\\endpiece\\relax" ) );
+ macroList.put( *new BarToken( "|.", "\\endpiece\\let\\endpiece\\relax" ) );
+ macroList.put( *new BarToken( "||.", "\\Endpiece\\let\\endpiece\\relax" ) );
+ macroList.put( *new BarToken( ":||:", "\\setrightrepeat\\alaligne\\advance\\barno-1\\leftrepeat" ) );
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/chap.dat b/Master/texmf-doc/doc/english/latex-graphics-companion/chap.dat
new file mode 100644
index 00000000000..0a431f918c3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/chap.dat
@@ -0,0 +1,12 @@
+graphics 28 0.5 0 0
+stdgraph 26 0 .7 .3
+xypic 28 .2 .3 .4
+mf 26 .4 .3 .2
+pstricks 80 .8 .1 .9
+science 54 .1 .8 .1
+music 20 0 0 .6
+games 32 0 .2 .4
+colour 42 1 1 0
+psfonts 66 0 1 1
+pstools 50 0 .6 .2
+
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/clef.ini b/Master/texmf-doc/doc/english/latex-graphics-companion/clef.ini
new file mode 100644
index 00000000000..e38fc5cd348
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/clef.ini
@@ -0,0 +1,16 @@
+/****************************************************************************
+ PROJECT: MusixTeX PreProcessor
+ FILE : clef.ini
+ AUTHOR : J. C. Nieuwenhuizen
+
+ copyright (c) FlowerSoft 1995
+--*/
+
+ NoteName midTreble( "b" );
+ macroList.put( *new Clef( "treble", midTreble.getPitch() ) );
+ NoteName midAlto( "c" );
+ macroList.put( *new Clef( "alto", midAlto.getPitch() ) );
+ NoteName midTenor( "A" );
+ macroList.put( *new Clef( "tenor", midTenor.getPitch() ) );
+ NoteName midBass( "D" );
+ macroList.put( *new Clef( "bass", midBass.getPitch() ) );
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/config.ps.gz b/Master/texmf-doc/doc/english/latex-graphics-companion/config.ps.gz
new file mode 100644
index 00000000000..1c875793c28
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/config.ps.gz
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/decade.dat b/Master/texmf-doc/doc/english/latex-graphics-companion/decade.dat
new file mode 100644
index 00000000000..80a594bd59c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/decade.dat
@@ -0,0 +1,19 @@
+1800 3 6
+1810 9 15
+1820 26 64
+1830 31 88
+1840 68 118
+1850 44 105
+1860 56 149
+1870 142 197
+1880 144 151
+1890 134 80
+1900 158 125
+1910 139 93
+1920 159 128
+1930 170 119
+1940 136 107
+1950 167 122
+1960 199 201
+1970 174 125
+1980 120 61
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/feature.ini b/Master/texmf-doc/doc/english/latex-graphics-companion/feature.ini
new file mode 100644
index 00000000000..7bbde2c3d8e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/feature.ini
@@ -0,0 +1,22 @@
+/****************************************************************************
+ PROJECT: MusixTeX PreProcessor
+ FILE : feature.ini
+ AUTHOR : J. C. Nieuwenhuizen
+
+ copyright (c) FlowerSoft 1995
+--*/
+
+ featureList.put( *new StemFeature( "stemup", Note::FORCED, Note::UP ) );
+ featureList.put( *new StemFeature( "stemdown", Note::FORCED, Note::DOWN ) );
+ featureList.put( *new StemFeature( "stemno", Note::NO ) );
+
+ featureList.put( *new StemFeature( "stem", Note::DEFAULT, 1 ) );
+ featureList.put( *new StemFeature( "beam", Note::BEAM, 1 ) );
+
+#if defined( __TURBOC__ ) && ( __TURBOC__ < 0x300 )
+ featureList.put( *new StyleFeature( "grace", Style( Note::GRACE | Note::TINY ) ) );
+#else
+ featureList.put( *new StyleFeature( "grace", Note::Style( Note::GRACE | Note::TINY ) ) );
+#endif
+ featureList.put( *new StyleFeature( "headleft", Note::LEFT ) );
+ featureList.put( *new StyleFeature( "headright", Note::RIGHT ) );
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/graves.dat b/Master/texmf-doc/doc/english/latex-graphics-companion/graves.dat
new file mode 100644
index 00000000000..b8be3031afc
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/graves.dat
@@ -0,0 +1,25 @@
+Chest 1738 1966
+Head 1765 1986
+Column 1766 1960
+Plaque~on~base 1775 1986
+Pedestal 1786 1967
+Plaque~in~ground 1794 1985
+Cross 1807 1969
+Ledger 1815 1980
+Building 1817 1936
+Plaque~on~wall 1821 1981
+Coped~stone 1848 1963
+Scroll 1858 1960
+Obelisk 1863 1943
+Other 1868 1908
+Wreath 1872 1927
+Statue 1874 1974
+Urn 1874 1910
+Ossuary 1877 1963
+Kerb 1886 1927
+Book 1891 1965
+Arch 1909 1909
+Rock 1922 1963
+Urns 1923 1929
+Tree 1959 1959
+Column~on~base 1960 1960
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/inputs/graphics.cfg b/Master/texmf-doc/doc/english/latex-graphics-companion/inputs/graphics.cfg
new file mode 100644
index 00000000000..42f67d15f05
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/inputs/graphics.cfg
@@ -0,0 +1,8 @@
+\ExecuteOptions{dvips}
+\AtBeginDocument{\graphicspath{%
+ {../figures/mf/}%
+ {../figures/pstools/}%
+ {../figures/pstricks/}%
+ {../figures/plates/}%
+}}
+\endinput
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/inputs/header.tex b/Master/texmf-doc/doc/english/latex-graphics-companion/inputs/header.tex
new file mode 100644
index 00000000000..56db31fbfda
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/inputs/header.tex
@@ -0,0 +1,212 @@
+% Many of the following parameters can be changed to
+% customise the music output. Experiment!
+
+% This file is customized to work with the example setup of the LGC book
+% watch out for FMi comments
+
+% Input files
+% ~~~~~~~~~~~
+\if Y\abcmusix% MusiXTeX version
+\input musixtex
+\else% MusicTeX version
+\input musicnft
+\input musictex
+\input musicvbm
+\input musictrp
+\fi
+
+% Page set-up
+% ~~~~~~~~~~~
+
+% page length
+\vsize=10.5in
+% page width
+% FMi set explicitly for book macros to a, for normal situations strange
+% value
+\hsize=7.5cm
+%\hsize=7.7in
+% top margin
+%FMi
+%\voffset=-0.75in
+% left margin
+%FMi
+%\hoffset=-0.75in
+
+\raggedbottom
+\nopagenumbers
+
+% Fonts set-up
+% ~~~~~~~~~~~~
+
+% the font names correspond to fields in abc notation
+% thus Tfont controls the T: field output
+
+\font\Xfont=cmr10
+\font\Tfont=cmr10
+\font\Tafont=cmr7 %for up to six alternative titles
+\font\Tbfont=cmr7 %for six or more alternative titles
+\font\Tifont=cmr10 %for titles within tunes
+\font\Wfont=cmr10
+\font\Sfont=cmti10
+\font\Cfont=cmsl8
+\font\Afont=cmsl8
+\font\Nfont=cmr7
+\font\Pfont=cmr7
+\font\gfont=cmr7 %for guitar chords
+
+% Music set-up
+% ~~~~~~~~~~~~
+
+% music size
+\if Y\abcmusix% MusiXTeX version
+\smallmusicsize
+% no bar numbering
+\nobarnumbers
+\else% MusicTeX version
+\musicsize=17\relax
+% no bar numbering
+\def\freqbarno{99}
+\fi
+% space between bar and next note
+\def\stdafterruleskip{2\Internote}
+% no indenting
+\parindent 0pt
+
+% these lines prevent/allow pagebreaking in the middle of tunes
+\let\tune=\vbox
+%\let\tune=\empty
+
+
+% Tune header set-up
+% ~~~~~~~~~~~~~~~~~~
+
+% You will probably need some knowledge of TeX to customise this
+% - however header1.tex contains another example.
+
+\def\header{%
+\hbox to\hsize{\hfil\Tfont \Xstring.\ \Tstring\ %
+\if Y\Strue{\Sfont(\Sstring)}\ \fi%
+\hfil%
+\if Y\Ctrue{\Cfont\Cstring}\ \fi%
+\if Y\Atrue{\Afont(\Astring)}\fi%
+}\nobreak%
+\if Y\Ntrue{\centerline{\Nfont \Nstring}\nobreak}\fi%
+\if Y\Tatrue{\centerline{\Tafont AKA \Tastring}\nobreak}\fi%
+\if Y\Tbtrue{\Tbfont AKA \Tbstring}\fi%
+%\if Y\Wtrue{\centerline{\Wfont \Wstring}}\fi%
+\if Y\Ptrue{\line{\Pfont Play \Pstring\hfil}\nobreak}\fi%
+}
+
+%FMi we don't want headers in the book
+\let\header\relax
+
+% Text within tunes
+% ~~~~~~~~~~~~~~~~~
+\def\Tline#1{\medskip\line{\Tifont #1\hfil}}
+\def\Wline#1{\smallskip\line{\Wfont #1\hfil}}
+\def\Pline#1{\notes\uptext{\Pfont #1}\enotes\relax}
+
+
+% Miscellaneous
+% ~~~~~~~~~~~~~
+
+%don't change this
+\def\nbinstruments{1}
+
+%rolls
+\def\uroll#1{\zcharnote{#1}{\raise -3.0\internote\hbox to 2.5\internote%
+ {\hss$\smile$\hss}}}
+\def\lroll#1{\zcharnote{#1}{\raise 1.0\internote\hbox to 2.5\internote%
+ {\hss$\frown$\hss}}}
+
+% the following four lines are an old version of rolls
+% uncomment them if you prefer, but they are not compatible with MusiXTeX
+%\def\uroll#1{\zcharnote{#1}{\raise -1.0\internote\hbox to 2.5\internote%
+% {\hss\hdslur{2.8\internote}\hss}}}
+%\def\lroll#1{\zcharnote{#1}{\raise 1.0\internote\hbox to 2.5\internote%
+% {\hss\huslur{2.8\internote}\hss}}}
+
+%ties
+\def\ltie#1{\zcharnote #1{\huslur{0.6\noteskip}}}
+\def\utie#1{\zcharnote #1{\hdslur{0.6\noteskip}}}
+\def\ltiein#1{\zcharnote #1{\huslur{0.8\noteskip}}%
+ \kern 1.2\noteskip\enotes\notes}
+\def\utiein#1{\zcharnote #1{\hdslur{0.8\noteskip}}%
+ \kern 1.2\noteskip\enotes\notes}
+
+%first/second repeat
+\def\rpt#1{\zcharnote n{\kern -\afterruleskip\sevenrm #1}}
+
+% gracing macros
+\def\grace{\tinynotesize\vnotes 0.7\elemskip\off\Internote}
+\def\egrace{\off\Internote\enotes\normalnotesize}
+\if Y\abcmusix% MusiXTeX version
+\def\grace{\notes\multnoteskip\tinyvalue\tinynotesize}
+\let\egrace=\enotes
+\else
+
+% up/downbow
+\def\ubow#1{\zcharnote#1{$\sqcap$}}
+\def\vbow#1{\zcharnote#1{$\vee$}}
+\fi
+
+% sharps/flats in guitar chords
+\let\Zsh=\#
+%\def\Zsh{$\sharp$}
+\def\Zfl{$\flat$}
+
+\if Y\abcmusix% MusiXTeX version
+% To use Andreas Egler's version of MusiXTeX comment out these lines
+% ==================================================================
+\input musixeng
+\def\ubow#1{\zcharnote#1{\upbow}}
+\def\vbow#1{\zcharnote#1{\downbow}}
+\let\beginHp=\empty
+\let\endHp=\empty
+% ==================================================================
+
+% To use Andreas Egler's version of MusiXTeX uncomment these lines
+% ================================================================
+%\let\startmuflex=\empty
+%\let\endmuflex=\empty
+%\let\stoppiece=\endpiece
+%\let\zstoppiece=\zendpiece
+%\let\alaligne=\nextline
+%\let\zalaligne=\znextline
+%\input musixtri
+%\input musixsig
+%\def\beginHp{\setcustomsign1\customsharp 8\customsharp 5\customnatural 9}
+%\let\endHp=\resetcustomsign
+%\let\vbow=\dbow
+%\let\qsk=\empty
+%\let\ql=\qd
+%\let\hl=\hd
+%\let\cl=\cd
+%\let\ccl=\ccd
+%\let\cccl=\cccd
+%\let\Ibl=\Ibd
+%\let\Ibbl=\Ibbd
+%\let\Ibbbl=\Ibbbd
+%\let\tbl=\tbd
+%\let\tbbl=\tbbd
+%\let\tbbbl=\tbbbd
+%\let\nbl=\nbd
+%\let\nbbl=\nbbd
+%\let\nbbbl=\nbbbd
+%\let\lpz=\dpz
+% ================================================================
+\else
+
+% these commands are for MusicTeX
+
+\let\beginHp=\empty
+\let\endHp=\empty
+
+\fi
+
+\edef\catcodeat{\the\catcode`\@}\catcode`\@=11
+%
+\def\d@oubleRAB{\thickvrule\nobreak\hskip%
+0.6\Internote\global\advance\x@skip0.6\Internote%
+\nobreak\thinvrule}%
+\def\setdoubleRAB{\def\barvrule{\d@oubleRAB}}%
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/inputs/mfpic.sty b/Master/texmf-doc/doc/english/latex-graphics-companion/inputs/mfpic.sty
new file mode 100644
index 00000000000..6a53142db4e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/inputs/mfpic.sty
@@ -0,0 +1,4 @@
+\input mfpic
+\AtBeginDocument{\opengraphsfile{mfpicex}}
+\AtEndDocument{\closegraphsfile}
+\endinput
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/inputs/ppex.cls b/Master/texmf-doc/doc/english/latex-graphics-companion/inputs/ppex.cls
new file mode 100644
index 00000000000..8d52b75fd74
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/inputs/ppex.cls
@@ -0,0 +1,59 @@
+%
+% This class file is used to typeset the examples of the LaTeX Graphics
+% Companion. It works without changes if you happen to use dvips as a
+% printer driver. Otherwise you might need to update it as outlined
+% below.
+%
+% Basic class is article
+
+\LoadClass{article}
+
+% We use Times and Helvetica for \rmfamily and \sffamily
+%
+\renewcommand\rmdefault{ptm}
+\renewcommand\sfdefault{phv}
+\renewcommand\bfdefault{b}
+
+% That is default anyway
+%
+\setlength\paperheight {11in}
+\setlength\paperwidth {8.5in}
+
+% [FMi: why do you need this Sebastian? ]
+%
+\special{papersize=8.5in,11in}
+
+\RequirePackage[T1]{fontenc}
+
+% We wanted to use PS when producing LaTeX pictures but it should be
+% possible to comment this line out without any changes to the result
+%
+\RequirePackage{pspicture}
+
+
+
+\newcommand\gobblepreamble[2][]{}
+\newcommand\ResetPreambleCommands{\let\usepackage\gobblepreamble}
+\let\ReadyForTheFray\relax
+
+
+
+%FMi the below is plain wrong :-)
+%\makeatletter
+\newdimen\fullwidth
+\setlength\textwidth{29pc}
+\addtolength\textwidth{-2pt} % to guard against rounding errors when
+ % calculating the EPS bounding box.
+\setlength\fullwidth{35.5pc}
+
+
+% [FMi why this? ]
+
+\let\bf\bfseries
+\let\tt\ttfamily
+\let\it\itshape
+\let\sf\sffamily
+\let\rm\mdseries
+
+\endinput
+
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/key.ini b/Master/texmf-doc/doc/english/latex-graphics-companion/key.ini
new file mode 100644
index 00000000000..f349a1851e9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/key.ini
@@ -0,0 +1,23 @@
+/****************************************************************************
+ PROJECT: MusixTeX PreProcessor
+ FILE : key.ini
+ AUTHOR : J. C. Nieuwenhuizen
+
+ copyright (c) FlowerSoft 1995
+--*/
+
+ macroList.put( *new Key( "C" , 0, 0 ) );
+
+ macroList.put( *new Key( "G", 0, 1 ) );
+ macroList.put( *new Key( "D", 0, 2 ) );
+ macroList.put( *new Key( "A", 0, 3 ) );
+ macroList.put( *new Key( "E", 0, 4 ) );
+ macroList.put( *new Key( "B", 0, 5 ) );
+ macroList.put( *new Key( "Fis", 0, 6 ) );
+
+ macroList.put( *new Key( "F", 1, 0 ) );
+ macroList.put( *new Key( "Bes", 2, 0 ) );
+ macroList.put( *new Key( "Es", 3, 0 ) );
+ macroList.put( *new Key( "As", 4, 0 ) );
+ macroList.put( *new Key( "Des", 5, 0 ) );
+ macroList.put( *new Key( "Ges", 6, 0 ) );
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/langs.dat b/Master/texmf-doc/doc/english/latex-graphics-companion/langs.dat
new file mode 100644
index 00000000000..a83fe7e0525
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/langs.dat
@@ -0,0 +1,16 @@
+Romanian 1 0.02796420582 red
+Czech 2 0.05592841163 red
+Bulgarian 4 0.1118568233 red
+Japanese 4 0.1118568233 red
+Dutch 7 0.1957494407 red
+Norwegian 20 0.5592841163 red
+Greek 26 0.7270693512 red
+Swedish 34 0.9507829978 red
+Danish 46 1.286353468 red
+French 83 2.321029083 red
+Latin 146 4.082774049 red
+Russian 243 6.795302013 red
+Italian 391 10.93400447 red
+German 508 14.20581655 red
+unknown 599 16.75055928 red
+English 1462 40.8836689 red
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/langs2.dat b/Master/texmf-doc/doc/english/latex-graphics-companion/langs2.dat
new file mode 100644
index 00000000000..1349f4922a1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/langs2.dat
@@ -0,0 +1,16 @@
+Romanian .01 3 green
+Czech .02 6 blue
+Bulgarian .04 11 green
+Japanese .04 11 palegreen
+Dutch .07 20 black
+Norwegian .20 56 cyan
+Greek .26 73 magenta
+Swedish .34 95 lightgray
+Danish .46 129 white
+French .83 232 pink
+Latin 1.46 409 wheat
+Russian 2.43 680 white
+Italian 3.91 1093 gray
+German 5.08 1421 lightblue
+unknown 5.99 1676 red
+English 14.62 4085 yellow
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/langs3.dat b/Master/texmf-doc/doc/english/latex-graphics-companion/langs3.dat
new file mode 100644
index 00000000000..f8c87f98603
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/langs3.dat
@@ -0,0 +1,16 @@
+Romanian 3 0.108
+Czech 6 0.216
+Bulgarian 11 0.396
+Japanese 11 0.396
+Dutch 20 0.72
+Norwegian 56 2.016
+Greek 73 2.628
+Swedish 95 3.42
+Danish 129 4.644
+French 232 8.352
+Latin 409 14.724
+Russian 680 24.48
+Italian 1093 39.348
+German 1421 51.156
+unknown 1676 60.336
+English 4085 147.06
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/macro.ini b/Master/texmf-doc/doc/english/latex-graphics-companion/macro.ini
new file mode 100644
index 00000000000..fc1397b198e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/macro.ini
@@ -0,0 +1,45 @@
+/****************************************************************************
+ PROJECT: MusixTeX PreProcessor
+ FILE : macro.ini
+ AUTHOR : J. C. Nieuwenhuizen
+
+ copyright (c) FlowerSoft 1995
+--*/
+
+ macroList.put( *new Define( "title" ) );
+ macroList.put( *new Define( "subtitle" ) );
+ macroList.put( *new Define( "lefttitle" ) );
+ macroList.put( *new Define( "tempo" ) );
+ macroList.put( *new Define( "composer" ) );
+ macroList.put( *new Define( "righttitle" ) );
+
+ macroList.put( *new Macro( "barnumbering", "\\barnumbering", 1 ) );
+ macroList.put( *new Macro( "staffnumbers" , "\\systemnumbers" ) );
+ macroList.put( *new Macro( "barnumberstyle", "\\def\\putbarno", 1 ) );
+ macroList.put( *new Macro( "clef" , "" ) );
+ macroList.put( *new Macro( "key" , "" ) );
+ macroList.put( *new Macro( "staffseparation", "\\interstaff", 1 ) );
+ macroList.put( *new Macro( "tighten" , "\\mulooseness=-1\n" ) );
+ macroList.put( *new Macro( "ttighten" , "\\mulooseness=-2\n" ) );
+ macroList.put( *new Macro( "tttighten" , "\\mulooseness=-3\n" ) );
+ macroList.put( *new Macro( "loosen" , "\\mulooseness=1\n" ) );
+
+ macroList.put( *new DefaultDuration( "duration" , 1 ) );
+ macroList.put( *new Metron( "metron" ) );
+ macroList.put( *new Meter( "meter" ) );
+ macroList.put( *new MusicStyle( "normal", "\\normalnotesize", Note::NORMAL ) );
+ macroList.put( *new MusicStyle( "small", "\\smallnotesize", Note::SMALL ) );
+ macroList.put( *new MusicStyle( "tiny", "\\tinynotesize", Note::TINY ) );
+ macroList.put( *new NewLine( "newline" , "\\alaligne\n" ) );
+ macroList.put( *new Octavate( "octavate" ) );
+ macroList.put( *new PartVerb( "partverb", 1 ) );
+ macroList.put( *new ScoreVerb( "scoreverb", 1 ) );
+ macroList.put( *new Slope( "slope" ) );
+ macroList.put( *new StemLength( "stemlength" ) );
+ macroList.put( *new Transpose( "transpose" ) );
+ macroList.put( *new Verb( "verb", 1 ) );
+ macroList.put( *new Volta( "volta", "Setvolta" ) );
+// macroList.put( *new Volta( "beginvolta", "Setvolta" ) );
+ // not Macro, cause only written for top staff
+ macroList.put( *new Volta( "endvolta", "endvolta" ) );
+ macroList.put( *new Volta( "endvoltabox", "endvoltabox" ) );
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/mpp.tex b/Master/texmf-doc/doc/english/latex-graphics-companion/mpp.tex
new file mode 100644
index 00000000000..452a3c88c29
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/mpp.tex
@@ -0,0 +1,206 @@
+% File mpp.tex
+% include file for MusixTeX
+%
+\input musixtex
+\input musixadd
+
+\catcode`@=11 % treat at signs as letters
+
+% \y@v\noteskip \multiply\y@v\n@v
+%\qn@width and \elemskip
+
+
+%\def\notesh{\vnotes\p@seven\elemskip}% 16th trio
+%\def\notesh{\vnotes1.4\elemskip}% 16th trio
+\def\notesh{\vnotes\elemskip}% 16th trio
+%\def\notes{\vnotes2\elemskip}% 16th
+%\def\notesp{\vnotes2\h@lf\elemskip}% 16th point=8 trio
+%\def\Notesh{\vnotes1\h@lf\elemskip}% 8th trio, ok but bit too tight
+%\def\Notesh{\vnotes2.25\elemskip}% 8th trio
+\def\Notesh{\vnotes2\elemskip}% 8th trio
+%\def\Notes{\vnotes3\elemskip}% 8th
+\def\NOtesh{\vnotes4\elemskip}% 4 trio
+
+\def\emtpy{}
+%silly name
+\let\rightleftrepeat\leftrightrepeat
+\def\gobble#1{}
+\def\ugobble#1{}
+\def\lgobble#1{}
+\def\atswap#1#2{\zcharnote{#2}{#1}}
+\let\uatswap\atswap
+\let\latswap\atswap
+\def\finger#1#2{\atswap{{\smalltype\bf#1}}{#2}}
+\let\ufinger\finger
+\let\lfinger\finger
+%
+\def\text#1#2{\atswap{{\ppffstyle #1}}{#2}}
+\let\utext\text
+\let\ltext\text
+%
+\def\xplet#1{\atswap{\xpletstyle{#1}}}
+\let\uxplet\xplet
+\let\lxplet\xplet
+%
+\def\uupbow{\atswap{\upbow}}
+\def\lupbow{\atswap{\upbow}}
+\def\udownbow{\atswap{\downbow}}
+\def\ldownbow{\atswap{\downbow}}
+%
+\def\ufermata{\fermataup}
+\def\lfermata{\fermatadown}
+%
+\def\utrille#1{\text{\hbox to 0pt{tr\hss}}{#1}}
+\def\ushake#1{\rlap{\shake{#1}}}
+%
+%\def\ucsh#1{\raise3\Interligne\hbox{\hsk\hsk\csh{#1}\bsk\bsk}}
+%\def\ucsh#1{\raise3\Interligne\hbox{\hsk\hsk\csh{#1}\bsk}}
+\def\ucsh#1{\raise3\Interligne\rlap{\hsk\csh{#1}}}
+%
+%FMi\voffset-10mm
+\vsize120mm
+\hsize30.5pc
+\parindent5mm
+\nopagenumbers
+%
+%redefine notes
+\let\lwh\lw
+\let\rwh\rw
+\let\zc\zq
+%
+%complete set of note macro
+\def\rwp#1{\pt{#1}\rw{#1}}
+\def\lwp#1{\pt{#1}\lw{#1}}
+%
+\def\rhup#1{\pt{#1}\rhu{#1}}
+\def\rhlp#1{\pt{#1}\rhl{#1}}
+\def\lhup#1{\pt{#1}\lhu{#1}}
+\def\lhlp#1{\pt{#1}\lhl{#1}}
+%
+\def\rhup#1{\pt{#1}\rhu{#1}}
+\def\rhlp#1{\pt{#1}\rhl{#1}}
+\def\lhup#1{\pt{#1}\lhu{#1}}
+\def\lhlp#1{\pt{#1}\lhl{#1}}
+%
+\def\rqup#1{\pt{#1}\rqu{#1}}
+\def\rqlp#1{\pt{#1}\rql{#1}}
+\def\lqup#1{\pt{#1}\lqu{#1}}
+\def\lqlp#1{\pt{#1}\lql{#1}}
+%\def\rqp#1{\pt{\rq{#1}}
+\def\rqp#1{\rq{.#1}}
+\def\lqp#1{\pt\lq{#1}}
+\def\rqb#1#2{\rq{#2}}
+\def\lqb#1#2{\lq{#2}}
+%
+\def\rcup#1{\pt{#1}\rcu{#1}}
+\def\rclp#1{\pt{#1}\rcl{#1}}
+\def\lcup#1{\pt{#1}\lcu{#1}}
+\def\lclp#1{\pt{#1}\lcl{#1}}
+%\let\rc\rq
+%\let\lc\lq
+\def\rc#1{\rq{#1}}
+\def\lc#1{\lq{#1}}
+\def\rcp#1{\pt\rq{#1}}
+\def\lcp#1{\pt\lq{#1}}
+%
+%shifted points
+\def\rpt#1{\kern\qn@width\advancefalse\pt{{#1}}\kernm\qn@width}
+\def\rppt#1{\kern\qn@width\advancefalse\ppt{{#1}}\kernm\qn@width}
+%
+%redefine rests
+\let\whs\pause
+\let\ccs\qs
+\let\cccs\hs
+\let\hs\hpause
+\let\qs\qp
+%\let\qsp\qpp
+\def\qsp{\qp\ds}
+\def\qps{\qp\ds}
+%\let\cs\ds
+\def\cs{\ds}
+\let\csp\dsp
+\let\ccsp\qsp
+\let\ccccs\qqs
+%
+\let\zqs\qs
+\def\zcs{\cs}
+%
+%redefine accents: portato and staccato ( pizzicato is not an accent )
+\let\upt\ust
+\let\lpt\lst
+\let\ust\upz
+\let\lst\lpz
+\let\usp\uppz
+\let\lsp\lppz
+\let\bupt\bust
+\let\blpt\blst
+\let\bust\bupz
+\let\blst\blpz
+\let\busp\buppz
+\let\blsp\blppz
+%
+\def\thesubtitle{}
+\def\thelefttitle{}
+\def\therighttitle{}
+\def\thecomposer{}
+\def\thetempo{}
+\def\themetron{}
+\let\composer\righttitle
+%
+%complete accidentals
+\def\dna#1{\lna{#1}\na{#1}}
+\def\ldna#1{\llna{#1}\lna{#1}}
+\def\lldna#1{\lllna{#1}\llna{#1}}
+\def\llna#1{\loffset2\smallvalue{\na{#1}}}
+\def\llfl#1{\loffset2\smallvalue{\fl{#1}}}
+\def\llsh#1{\loffset2\smallvalue{\sh{#1}}}
+\def\lldfl#1{\loffset2\smallvalue{\dfl{#1}}}
+\def\lldsh#1{\loffset2\smallvalue{\dsh{#1}}}
+\def\lllna#1{\loffset3\smallvalue{\na{#1}}}
+%
+% bar numbering
+\def\barnumbering#1{
+ \ifnum#1=\z@\nobarnumbers
+ \else\barnumbers\def\freqbarno{#1}\fi}
+
+% really boxed barnumbers
+
+\def\wbarno@x{\lastbarpos\lin@pos \writ@volta
+ \ifx\iv@sw\@ne
+ \i@v\lin@pos \let\iv@sw\empty \let\tx@V\tx@v
+ \ifx\pv@sw\empty \let\v@sw\@ne \fi
+ \else
+ \n@iii\barno \divide\n@iii\freqbarno\relax
+ \ifnum\n@iii=\lastbarno
+ \else \y@\altplancher \advance\y@\systemheight \advance\y@\tw@\internote
+% \raise\y@\llap{\it\the\barno\kernm\qn@width}\fi
+ \advance\y@\raisebarno\raise\y@\llap{\putbarno\kernm\qn@width}\fi
+ \fi
+ \n@iii\barno \divide\n@iii\freqbarno\relax \lastbarno\n@iii }
+
+\def\italic{\it\the\barno}
+\def\boxed{\boxit{\eightbf\the\barno}}
+\def\putbarno{\italic}
+\def\writebarno{\putbarno}
+\let\old@systemnumbers\systemnumbers
+\def\systemnumbers{\gdef\raisebarno{\f@ur\internote}\old@systemnumbers}
+\def\writebarno{\putbarno}
+\def\raisebarno{\@ne\internote}
+%
+\let\idecresc\icresc
+
+\def\smallsk{\off{\smallvalue\qn@width}}
+\def\smallsk{\hsk}
+\def\smallsk{\off{\qu@rt\noteskip}}
+\def\smallsk{\off{\smallvalue\elemskip}}
+%no occasionally small accidentals
+\bigaccid
+\def\putdynamics#1{\llap{#1\hskip.2em}}
+%\batchmode
+
+\catcode`@=12 % at signs are no longer letters
+
+\smallmusicsize
+
+%% end: mpp.tex
+
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/note.ini b/Master/texmf-doc/doc/english/latex-graphics-companion/note.ini
new file mode 100644
index 00000000000..146acbdbeee
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/note.ini
@@ -0,0 +1,57 @@
+#****************************************************************************
+# PROJECT: MusixTeX PreProcessor
+# FILE : note.ini
+# AUTHOR : J. C. Nieuwenhuizen
+# tnnvjn@urc.tue.nl
+# copyright (c) FlowerSoft 1995
+#--
+
+# 1 + 7 groups of 5 notes
+# name& group& pitch& relative pitch
+r, -1, 0, 0 # rest pitch must be -1
+r, -1, 0, 0
+p, -1, 0, 0
+s, -2, 0, 0 # spacing pitch must be -2
+s, -2, 0, 0
+
+ceses, 0, 10, -2 # double flat
+ces, 0, 11, -1 # flat
+c, 0, 0, 0 # natural
+cis, 0, 1, 1 # sharp
+cisis, 0, 3, 2 # double sharp
+
+deses, 1, 0, -2
+des, 1, 1, -1
+d, 1, 2, 0
+dis, 1, 3, 1
+disis, 1, 4, 2
+
+eses, 2, 2, -2
+es, 2, 3, -1
+e, 2, 4, 0
+eis, 2, 5, 1
+eisis, 2, 6, 2
+
+feses, 3, 3, -2
+fes, 3, 4, -1
+f, 3, 5, 0
+fis, 3, 6, 1
+fisis, 3, 7, 2
+
+geses, 4, 5, -2
+ges, 4, 6, -1
+g, 4, 7, 0
+gis, 4, 8, 1
+gisis, 4, 9, 2
+
+ases, 5, 7, -2
+as, 5, 8, -1
+a, 5, 9, 0
+ais, 5, 10, 1
+aisis, 5, 11, 2
+
+beses, 6, 9, -2
+bes, 6, 10, -1
+b, 6, 11, 0
+bis, 6, 0, 1
+bisis, 6, 1, 2
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/notecc.ini b/Master/texmf-doc/doc/english/latex-graphics-companion/notecc.ini
new file mode 100644
index 00000000000..8d372e8ed4b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/notecc.ini
@@ -0,0 +1,66 @@
+/****************************************************************************
+ PROJECT: MusixTeX PreProcessor
+ FILE : notecc.ini: obsolete
+ AUTHOR : J. C. Nieuwenhuizen
+
+ copyright (c) FlowerSoft 1995
+--*/
+
+// 1 + 7 groups of 5 notes
+// name, group, pitch, relative pitch
+ // rest pitch must be -1
+ noteNames.put( *new NoteName( "r", -1, 0, 0 ) );
+ noteNames.put( *new NoteName( "r", -1, 0, 0 ) );
+ noteNames.put( *new NoteName( "p", -1, 0, 0 ) );
+ // spacing pitch must be -2
+ noteNames.put( *new NoteName( "s", -2, 0, 0 ) );
+ noteNames.put( *new NoteName( "s", -2, 0, 0 ) );
+
+
+ // double flat
+ // flat
+ // plain
+ // sharp
+ // double sharp
+
+ noteNames.put( *new NoteName( "ceses", 0, 10, -2 ) );
+ noteNames.put( *new NoteName( "ces", 0, 11, -1 ) );
+ noteNames.put( *new NoteName( "c", 0, 0, 0 ) );
+ noteNames.put( *new NoteName( "cis", 0, 1, 1 ) );
+ noteNames.put( *new NoteName( "cisis", 0, 3, 2 ) );
+
+ noteNames.put( *new NoteName( "deses", 1, 0, -2 ) );
+ noteNames.put( *new NoteName( "des", 1, 1, -1 ) );
+ noteNames.put( *new NoteName( "d", 1, 2, 0 ) );
+ noteNames.put( *new NoteName( "dis", 1, 3, 1 ) );
+ noteNames.put( *new NoteName( "disis", 1, 4, 2 ) );
+
+ noteNames.put( *new NoteName( "eses", 2, 2, -2 ) );
+ noteNames.put( *new NoteName( "es", 2, 3, -1 ) );
+ noteNames.put( *new NoteName( "e", 2, 4, 0 ) );
+ noteNames.put( *new NoteName( "eis", 2, 5, 1 ) );
+ noteNames.put( *new NoteName( "eisis", 2, 6, 2 ) );
+
+ noteNames.put( *new NoteName( "feses", 3, 3, -2 ) );
+ noteNames.put( *new NoteName( "fes", 3, 4, -1 ) );
+ noteNames.put( *new NoteName( "f", 3, 5, 0 ) );
+ noteNames.put( *new NoteName( "fis", 3, 6, 1 ) );
+ noteNames.put( *new NoteName( "fisis", 3, 7, 2 ) );
+
+ noteNames.put( *new NoteName( "geses", 4, 5, -2 ) );
+ noteNames.put( *new NoteName( "ges", 4, 6, -1 ) );
+ noteNames.put( *new NoteName( "g", 4, 7, 0 ) );
+ noteNames.put( *new NoteName( "gis", 4, 8, 1 ) );
+ noteNames.put( *new NoteName( "gisis", 4, 9, 2 ) );
+
+ noteNames.put( *new NoteName( "ases", 5, 7, -2 ) );
+ noteNames.put( *new NoteName( "as", 5, 8, -1 ) );
+ noteNames.put( *new NoteName( "a", 5, 9, 0 ) );
+ noteNames.put( *new NoteName( "ais", 5, 10, 1 ) );
+ noteNames.put( *new NoteName( "aisis", 5, 11, 2 ) );
+
+ noteNames.put( *new NoteName( "beses", 6, 9, -2 ) );
+ noteNames.put( *new NoteName( "bes", 6, 10, -1 ) );
+ noteNames.put( *new NoteName( "b", 6, 11, 0 ) );
+ noteNames.put( *new NoteName( "bis", 6, 0, 1 ) );
+ noteNames.put( *new NoteName( "bisis", 6, 1, 2 ) );
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/pot.dat b/Master/texmf-doc/doc/english/latex-graphics-companion/pot.dat
new file mode 100644
index 00000000000..71e023d9f0d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/pot.dat
@@ -0,0 +1,90 @@
+2 1 102 85
+2 2 10 98
+2 3 110 84
+2 4 112 83
+2 5 114 83
+2 6 118 82
+2 7 119 82
+2 8 11 98
+2 9 122 82
+2 10 128 81
+3 1 12 98
+3 2 130 81
+3 3 135 80
+3 4 138 80
+3 5 13 98
+3 6 141 79
+3 7 142 79
+3 8 144 79
+3 9 14 97
+3 10 159 77
+4 1 15 97
+4 2 160 76
+4 3 162 76
+4 4 167 75
+4 5 16 97
+4 6 175 74
+4 7 176 74
+4 8 17 97
+4 9 181 73
+4 10 187 73
+5 1 193 72
+5 2 197 71
+5 3 199 71
+5 4 19 97
+5 5 1 99
+5 6 20 97
+5 7 215 68
+5 8 22 96
+5 9 23 96
+5 10 247 64
+6 1 24 96
+6 2 275 60
+6 3 27 96
+6 4 28 95
+6 5 290 58
+6 6 296 57
+6 7 2 99
+6 8 312 54
+6 9 32 95
+7 10 33 95
+7 1 34 95
+7 2 35 94
+7 3 39 94
+7 4 3 99
+7 5 40 94
+7 6 41 94
+7 7 433 37
+7 8 44 93
+7 9 45 93
+7 10 474 31
+8 1 47 93
+8 2 48 93
+8 3 506 26
+8 4 50 92
+8 5 53 92
+8 6 55 92
+8 7 57 91
+8 8 60 91
+8 9 618 10
+8 10 62 91
+9 1 634 08
+9 2 636 08
+9 3 64 90
+9 4 67 90
+9 5 68 90
+9 6 693 0
+9 7 6 99
+9 8 73 89
+9 9 74 89
+9 10 78 88
+10 1 79 88
+10 2 7 98
+10 3 80 88
+10 4 81 88
+10 5 85 87
+10 6 8 98
+10 7 92 86
+10 8 93 86
+10 9 98 85
+10 10 9 98
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/script.ini b/Master/texmf-doc/doc/english/latex-graphics-companion/script.ini
new file mode 100644
index 00000000000..5972fd7b747
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/script.ini
@@ -0,0 +1,58 @@
+#****************************************************************************
+# PROJECT: MusixTeX PreProcessor
+# FILE : script.ini
+# AUTHOR : J. C. Nieuwenhuizen
+# tnnvjn@urc.tue.nl
+# copyright (c) FlowerSoft 1995
+#--
+
+#" ", gobble, SPACE
+.,st,ACCENT,UNDEFINED
+-,pt,ACCENT,UNDEFINED
+_,pt,ACCENT,UNDEFINED
+v,sp,ACCENT,UNDEFINED
+>,sf,ACCENT,UNDEFINED
+^,fz,ACCENT,UNDEFINED
+fermata,fermata, ACCENT, UP
+
+#"(#)",csh,ACCENT,UNDEFINED
+
+pppp, \putdynamics\pppp, STAFF, DOWN
+ppp, \putdynamics\ppp, STAFF, DOWN
+pp, \putdynamics\pp, STAFF, DOWN
+p, \putdynamics\p, STAFF, DOWN
+
+mp, \putdynamics\mp, STAFF, DOWN
+mf, \putdynamics\mf, STAFF, DOWN
+
+f, \putdynamics\f, STAFF, DOWN
+ff, \putdynamics\ff, STAFF, DOWN
+fff, \putdynamics\fff, STAFF, DOWN
+ffff, \putdynamics\ffff, STAFF, DOWN
+
+arco, arco, STAFF, DOWN
+pizz, pizz., STAFF, DOWN
+
+fine, Fine., STAFF, DOWN
+dacapo, da capo, STAFF, DOWN
+
+cres, cresc., STAFF, DOWN
+decr, decresc., STAFF, DOWN
+dim, dim., STAFF, DOWN
+rit, rit., STAFF, DOWN
+rall, rall., STAFF, DOWN
+
+poco, poco a poco, STAFF, DOWN
+
+dolce, dolce, STAFF, DOWN
+legato, legato, STAFF, DOWN
+simile, simile, STAFF, DOWN
+
+upbow, upbow, TEXT, UP
+downbow, downbow, TEXT, UP
+
+tr, trille, TEXT, UP
+trille, shake, TEXT, UP
+
+#xplet, \xplet, TEXT, UNDEFINED, 1
+
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/scriptcc.ini b/Master/texmf-doc/doc/english/latex-graphics-companion/scriptcc.ini
new file mode 100644
index 00000000000..20759866247
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/scriptcc.ini
@@ -0,0 +1,58 @@
+/****************************************************************************
+ PROJECT: MusixTeX PreProcessor
+ FILE : scriptcc.ini: obsolete
+ AUTHOR : J. C. Nieuwenhuizen
+
+ copyright (c) FlowerSoft 1995
+--*/
+
+ featureList.put( *new Script( " ", "gobble", Feature::SPACE ) );
+ featureList.put( *new Script( ".", "st", Feature::ACCENT ) );
+ featureList.put( *new Script( "-", "pt", Feature::ACCENT ) );
+ featureList.put( *new Script( "_", "pt", Feature::ACCENT ) );
+ featureList.put( *new Script( "v", "sp", Feature::ACCENT ) );
+ featureList.put( *new Script( ">", "sf", Feature::ACCENT ) );
+ featureList.put( *new Script( "^", "fz", Feature::ACCENT ) );
+ featureList.put( *new Script( "fermata", "fermata", Feature::ACCENT, Token::UP ) );
+
+ featureList.put( *new Script( "(#)", "csh", Feature::ACCENT ) );
+
+ featureList.put( *new Script( "pppp", "\\pppp", Feature::STAFF, Token::DOWN ) );
+ featureList.put( *new Script( "ppp", "\\ppp", Feature::STAFF, Token::DOWN ) );
+ featureList.put( *new Script( "pp", "\\pp", Feature::STAFF, Token::DOWN ) );
+ featureList.put( *new Script( "p", "\\p", Feature::STAFF, Token::DOWN ) );
+
+ featureList.put( *new Script( "mp", "\\mp", Feature::STAFF, Token::DOWN ) );
+ featureList.put( *new Script( "mf", "\\mf", Feature::STAFF, Token::DOWN ) );
+
+ featureList.put( *new Script( "f", "\\f", Feature::STAFF, Token::DOWN ) );
+ featureList.put( *new Script( "ff", "\\ff", Feature::STAFF, Token::DOWN ) );
+ featureList.put( *new Script( "fff", "\\fff", Feature::STAFF, Token::DOWN ) );
+ featureList.put( *new Script( "ffff", "\\ffff", Feature::STAFF, Token::DOWN ) );
+
+ featureList.put( *new Script( "arco", "arco", Feature::STAFF, Token::DOWN ) );
+ featureList.put( *new Script( "pizz", "pizz.", Feature::STAFF, Token::DOWN ) );
+
+ featureList.put( *new Script( "fine", "Fine.", Feature::STAFF, Token::DOWN ) );
+ featureList.put( *new Script( "dacapo", "da capo", Feature::STAFF, Token::DOWN ) );
+
+ featureList.put( *new Script( "cres", "cresc.", Feature::STAFF, Token::DOWN ) );
+ featureList.put( *new Script( "decr", "decresc.", Feature::STAFF, Token::DOWN ) );
+ featureList.put( *new Script( "dim", "dim.", Feature::STAFF, Token::DOWN ) );
+ featureList.put( *new Script( "rit", "rit.", Feature::STAFF, Token::DOWN ) );
+ featureList.put( *new Script( "rall", "rall.", Feature::STAFF, Token::DOWN ) );
+
+ featureList.put( *new Script( "poco", "poco a poco", Feature::STAFF, Token::DOWN ) );
+
+ featureList.put( *new Script( "dolce", "dolce", Feature::STAFF, Token::DOWN ) );
+ featureList.put( *new Script( "legato", "legato", Feature::STAFF, Token::DOWN ) );
+ featureList.put( *new Script( "simile", "simile", Feature::STAFF, Token::DOWN ) );
+
+ featureList.put( *new Script( "upbow", "upbow", Feature::TEXT, Token::UP ) );
+ featureList.put( *new Script( "downbow", "downbow", Feature::TEXT, Token::UP ) );
+
+ featureList.put( *new Script( "tr", "trille", Feature::TEXT, Token::UP ) );
+ featureList.put( *new Script( "trille", "shake", Feature::TEXT, Token::UP ) );
+
+ featureList.put( *new Script( "xplet", "xplet", Feature::TEXT, Token::UNDEFINED, 1 ) );
+
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/stones.dat b/Master/texmf-doc/doc/english/latex-graphics-companion/stones.dat
new file mode 100644
index 00000000000..82d2894d6ff
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/stones.dat
@@ -0,0 +1,25 @@
+Chest 1738 1966
+Head 1765 1986
+Column 1766 1960
+Plaque-on-base 1775 1986
+Pedestal 1786 1967
+Plaque-in-ground 1794 1985
+Cross 1807 1969
+Ledger 1815 1980
+Building 1817 1936
+Plaque-on-wall 1821 1981
+Coped-stone 1848 1963
+Scroll 1858 1960
+Obelisk 1863 1943
+Other 1868 1908
+Wreath 1872 1927
+Statue 1874 1974
+Urn 1874 1910
+Ossuary 1877 1963
+Kerb 1886 1927
+Book 1891 1965
+Arch 1909 1909
+Rock 1922 1963
+Urns 1923 1929
+Tree 1959 1959
+Column-on-base 1960 1960
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/students.dat b/Master/texmf-doc/doc/english/latex-graphics-companion/students.dat
new file mode 100644
index 00000000000..a5bda4233e0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/students.dat
@@ -0,0 +1,4 @@
+1 0
+2 20
+3 -16
+4 -10
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/veracx.mx1 b/Master/texmf-doc/doc/english/latex-graphics-companion/veracx.mx1
new file mode 100644
index 00000000000..5993975d423
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/veracx.mx1
@@ -0,0 +1,51 @@
+0.44
+S
+345.0pt
+15.0pt
+0.0pt
+8.0pt
+5.99998pt
+15.99998pt
+1.99997pt
+0 0 14.43335pt
+0 1 71.99982pt
+0 1 0.0pt
+0 0 0.4pt
+b 1
+1 1 79.99982pt
+1 1 0.0pt
+1 0 0.4pt
+b 2
+2 1 121.99971pt
+2 1 0.0pt
+2 0 0.4pt
+b 3
+3 1 79.99982pt
+3 1 0.0pt
+3 0 0.4pt
+b 4
+4 1 115.99973pt
+4 1 0.0pt
+4 0 0.4pt
+b 5
+5 1 88.99979pt
+5 1 0.0pt
+5 0 0.4pt
+b 6
+6 1 115.99973pt
+6 1 0.0pt
+6 0 0.4pt
+b 7
+7 1 76.99982pt
+7 1 0.0pt
+7 0 0.4pt
+b 8
+8 1 88.99979pt
+8 1 0.0pt
+8 0 0.4pt
+b 9
+9 1 61.99986pt
+9 1 0.0pt
+9 0 0.4pt
+b 10
+* 0
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/veracx.tex b/Master/texmf-doc/doc/english/latex-graphics-companion/veracx.tex
new file mode 100644
index 00000000000..48c00596d1e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/veracx.tex
@@ -0,0 +1,22 @@
+\documentclass{article}
+\usepackage {musixtex}
+\pagestyle{empty}
+\begin{document} \begin{music}
+\instrumentnumber{1} \generalmeter{\meterfrac34} \nobarnumbers
+\startpiece
+\NOtes\qp\zcharnote N\f\ql{lm}\enotes\bar %1
+\NOtes\isluru0m\ql{m}\tslur0l\ql{l}\ql{p}\enotes\bar %2
+\Notes\ibl0l0\qb0{p^np}\enotes
+ \notes\nbbl0\isluru0m\qb0{m}\tbl0\tslur0l\qb0{l}\enotes
+ \Notes\qb0p\tbl0\qb0k\enotes\bar %3
+\NOtes\isluru0k\ql{k}\tslur0j\ql{j}\ql{o}\enotes\bar %4
+\Notes\ibl0l0\qb0{mkpnr}\tbl0\qb0m\enotes\bar %5
+\NOtesp\qlp{l}\enotes\Notes\ibl0n{-4}\qb0{nl}\tbl0\qb0j\enotes\bar %6
+\Notes\ibl0l0\qb0{omokr}\tbl0\qb0m\enotes\bar %7
+\NOtesp\qlp{p}\enotes\Notes\cl{n}\enotes\NOtes\itenu0r\ql{q}\enotes\bar%8
+\Notes\ibl0q{-3}\tten0\qb0q\tbl0\qb0o\enotes
+ \NOtesp\Uptext{\it tr}\isluru0p\qlp{p}\enotes
+ \Notes\tslur0q\cl{q}\enotes\bar %9
+\NOtes\ql{q}\enotes \NOTes\hpause\enotes
+\endpiece
+\end{music} \end{document}
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/yearm.dat b/Master/texmf-doc/doc/english/latex-graphics-companion/yearm.dat
new file mode 100644
index 00000000000..222f0addc9b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/yearm.dat
@@ -0,0 +1,171 @@
+1803 1
+1805 2
+1817 2
+1818 1
+1819 6
+1820 1
+1821 5
+1822 1
+1823 2
+1824 2
+1826 2
+1827 5
+1828 2
+1829 6
+1830 3
+1831 3
+1832 2
+1833 3
+1834 3
+1835 2
+1836 4
+1837 3
+1838 4
+1839 4
+1840 7
+1841 7
+1842 8
+1843 7
+1844 13
+1845 7
+1846 2
+1847 8
+1848 7
+1849 2
+1850 5
+1851 4
+1852 4
+1853 6
+1854 5
+1855 4
+1856 3
+1857 2
+1858 5
+1859 6
+1860 3
+1861 8
+1862 5
+1863 4
+1864 9
+1865 4
+1866 6
+1867 5
+1868 7
+1869 5
+1870 7
+1871 13
+1872 22
+1873 14
+1874 18
+1875 10
+1876 19
+1877 9
+1878 16
+1879 14
+1880 15
+1881 14
+1882 17
+1883 27
+1884 12
+1885 13
+1886 5
+1887 13
+1888 20
+1889 8
+1890 7
+1891 15
+1892 15
+1893 11
+1894 17
+1895 15
+1896 11
+1897 15
+1898 11
+1899 17
+1900 12
+1901 15
+1902 15
+1903 10
+1904 16
+1905 23
+1906 11
+1907 19
+1908 18
+1909 19
+1910 16
+1911 10
+1912 17
+1913 18
+1914 15
+1915 5
+1916 14
+1917 13
+1918 15
+1919 16
+1920 15
+1921 8
+1922 17
+1923 16
+1924 15
+1925 17
+1926 17
+1927 22
+1928 12
+1929 20
+1930 20
+1931 13
+1932 22
+1933 11
+1934 18
+1935 18
+1936 19
+1937 15
+1938 20
+1939 14
+1940 11
+1941 18
+1942 11
+1943 13
+1944 14
+1945 7
+1946 7
+1947 14
+1948 19
+1949 22
+1950 23
+1951 20
+1952 9
+1953 13
+1954 16
+1955 14
+1956 13
+1957 21
+1958 20
+1959 18
+1960 24
+1961 16
+1962 22
+1963 21
+1964 16
+1965 17
+1966 25
+1967 23
+1968 17
+1969 18
+1970 23
+1971 18
+1972 16
+1973 20
+1974 18
+1975 10
+1976 23
+1977 16
+1978 14
+1979 16
+1980 21
+1981 15
+1982 21
+1983 19
+1984 25
+1985 16
+1986 3
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/years.dat b/Master/texmf-doc/doc/english/latex-graphics-companion/years.dat
new file mode 100644
index 00000000000..b56bddac510
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/years.dat
@@ -0,0 +1,171 @@
+ 1803 1 3
+ 1805 2 3
+ 1817 2 2
+ 1818 1 3
+ 1819 6 10
+ 1820 1 5
+ 1821 5 14
+ 1822 1 11
+ 1823 2 6
+ 1824 2 4
+ 1826 2 6
+ 1827 5 5
+ 1828 2 5
+ 1829 6 8
+ 1830 3 14
+ 1831 3 5
+ 1832 2 9
+ 1833 3 6
+ 1834 3 9
+ 1835 2 6
+ 1836 4 10
+ 1837 3 14
+ 1838 4 7
+ 1839 4 8
+ 1840 7 7
+ 1841 7 10
+ 1842 8 13
+ 1843 7 10
+ 1844 13 13
+ 1845 7 18
+ 1846 2 14
+ 1847 8 10
+ 1848 7 13
+ 1849 2 10
+ 1850 5 11
+ 1851 4 5
+ 1852 4 13
+ 1853 6 19
+ 1854 5 5
+ 1855 4 14
+ 1856 3 13
+ 1857 2 6
+ 1858 5 10
+ 1859 6 9
+ 1860 3 14
+ 1861 8 12
+ 1862 5 17
+ 1863 4 16
+ 1864 9 14
+ 1865 4 13
+ 1866 6 10
+ 1867 5 22
+ 1868 7 23
+ 1869 5 8
+ 1870 7 16
+ 1871 13 12
+ 1872 22 27
+ 1873 14 12
+ 1874 18 22
+ 1875 10 16
+ 1876 19 28
+ 1877 9 23
+ 1878 16 22
+ 1879 14 19
+ 1880 15 17
+ 1881 14 14
+ 1882 17 29
+ 1883 27 23
+ 1884 12 13
+ 1885 13 12
+ 1886 5 11
+ 1887 13 16
+ 1888 20 12
+ 1889 8 4
+ 1890 7 7
+ 1891 15 10
+ 1892 15 6
+ 1893 11 12
+ 1894 17 6
+ 1895 15 10
+ 1896 11 3
+ 1897 15 12
+ 1898 11 8
+ 1899 17 6
+ 1900 12 12
+ 1901 15 8
+ 1902 15 9
+ 1903 10 11
+ 1904 16 14
+ 1905 23 9
+ 1906 11 6
+ 1907 19 14
+ 1908 18 19
+ 1909 19 23
+ 1910 16 6
+ 1911 10 10
+ 1912 17 12
+ 1913 18 11
+ 1914 15 11
+ 1915 5 6
+ 1916 14 11
+ 1917 13 8
+ 1918 15 6
+ 1919 16 12
+ 1920 15 5
+ 1921 8 12
+ 1922 17 14
+ 1923 16 14
+ 1924 15 13
+ 1925 17 7
+ 1926 17 17
+ 1927 22 19
+ 1928 12 20
+ 1929 20 7
+ 1930 20 9
+ 1931 13 11
+ 1932 22 16
+ 1933 11 17
+ 1934 18 11
+ 1935 18 11
+ 1936 19 11
+ 1937 15 15
+ 1938 20 11
+ 1939 14 7
+ 1940 11 12
+ 1941 18 3
+ 1942 11 11
+ 1943 13 9
+ 1944 14 12
+ 1945 7 14
+ 1946 7 13
+ 1947 14 13
+ 1948 19 7
+ 1949 22 13
+ 1950 23 5
+ 1951 20 12
+ 1952 9 11
+ 1953 13 9
+ 1954 16 10
+ 1955 14 8
+ 1956 13 18
+ 1957 21 14
+ 1958 20 13
+ 1959 18 22
+ 1960 24 16
+ 1961 16 17
+ 1962 22 26
+ 1963 21 21
+ 1964 16 25
+ 1965 17 24
+ 1966 25 18
+ 1967 23 14
+ 1968 17 18
+ 1969 18 22
+ 1970 23 12
+ 1971 18 12
+ 1972 16 13
+ 1973 20 12
+ 1974 18 16
+ 1975 10 15
+ 1976 23 11
+ 1977 16 10
+ 1978 14 14
+ 1979 16 10
+ 1980 21 11
+ 1981 15 10
+ 1982 21 5
+ 1983 19 8
+ 1984 25 15
+ 1985 16 9
+ 1986 3 3
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/years.men b/Master/texmf-doc/doc/english/latex-graphics-companion/years.men
new file mode 100644
index 00000000000..222f0addc9b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/years.men
@@ -0,0 +1,171 @@
+1803 1
+1805 2
+1817 2
+1818 1
+1819 6
+1820 1
+1821 5
+1822 1
+1823 2
+1824 2
+1826 2
+1827 5
+1828 2
+1829 6
+1830 3
+1831 3
+1832 2
+1833 3
+1834 3
+1835 2
+1836 4
+1837 3
+1838 4
+1839 4
+1840 7
+1841 7
+1842 8
+1843 7
+1844 13
+1845 7
+1846 2
+1847 8
+1848 7
+1849 2
+1850 5
+1851 4
+1852 4
+1853 6
+1854 5
+1855 4
+1856 3
+1857 2
+1858 5
+1859 6
+1860 3
+1861 8
+1862 5
+1863 4
+1864 9
+1865 4
+1866 6
+1867 5
+1868 7
+1869 5
+1870 7
+1871 13
+1872 22
+1873 14
+1874 18
+1875 10
+1876 19
+1877 9
+1878 16
+1879 14
+1880 15
+1881 14
+1882 17
+1883 27
+1884 12
+1885 13
+1886 5
+1887 13
+1888 20
+1889 8
+1890 7
+1891 15
+1892 15
+1893 11
+1894 17
+1895 15
+1896 11
+1897 15
+1898 11
+1899 17
+1900 12
+1901 15
+1902 15
+1903 10
+1904 16
+1905 23
+1906 11
+1907 19
+1908 18
+1909 19
+1910 16
+1911 10
+1912 17
+1913 18
+1914 15
+1915 5
+1916 14
+1917 13
+1918 15
+1919 16
+1920 15
+1921 8
+1922 17
+1923 16
+1924 15
+1925 17
+1926 17
+1927 22
+1928 12
+1929 20
+1930 20
+1931 13
+1932 22
+1933 11
+1934 18
+1935 18
+1936 19
+1937 15
+1938 20
+1939 14
+1940 11
+1941 18
+1942 11
+1943 13
+1944 14
+1945 7
+1946 7
+1947 14
+1948 19
+1949 22
+1950 23
+1951 20
+1952 9
+1953 13
+1954 16
+1955 14
+1956 13
+1957 21
+1958 20
+1959 18
+1960 24
+1961 16
+1962 22
+1963 21
+1964 16
+1965 17
+1966 25
+1967 23
+1968 17
+1969 18
+1970 23
+1971 18
+1972 16
+1973 20
+1974 18
+1975 10
+1976 23
+1977 16
+1978 14
+1979 16
+1980 21
+1981 15
+1982 21
+1983 19
+1984 25
+1985 16
+1986 3
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/years.wom b/Master/texmf-doc/doc/english/latex-graphics-companion/years.wom
new file mode 100644
index 00000000000..506245abdcb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/years.wom
@@ -0,0 +1,171 @@
+1803 3
+1805 3
+1817 2
+1818 3
+1819 10
+1820 5
+1821 14
+1822 11
+1823 6
+1824 4
+1826 6
+1827 5
+1828 5
+1829 8
+1830 14
+1831 5
+1832 9
+1833 6
+1834 9
+1835 6
+1836 10
+1837 14
+1838 7
+1839 8
+1840 7
+1841 10
+1842 13
+1843 10
+1844 13
+1845 18
+1846 14
+1847 10
+1848 13
+1849 10
+1850 11
+1851 5
+1852 13
+1853 19
+1854 5
+1855 14
+1856 13
+1857 6
+1858 10
+1859 9
+1860 14
+1861 12
+1862 17
+1863 16
+1864 14
+1865 13
+1866 10
+1867 22
+1868 23
+1869 8
+1870 16
+1871 12
+1872 27
+1873 12
+1874 22
+1875 16
+1876 28
+1877 23
+1878 22
+1879 19
+1880 17
+1881 14
+1882 29
+1883 23
+1884 13
+1885 12
+1886 11
+1887 16
+1888 12
+1889 4
+1890 7
+1891 10
+1892 6
+1893 12
+1894 6
+1895 10
+1896 3
+1897 12
+1898 8
+1899 6
+1900 12
+1901 8
+1902 9
+1903 11
+1904 14
+1905 9
+1906 6
+1907 14
+1908 19
+1909 23
+1910 6
+1911 10
+1912 12
+1913 11
+1914 11
+1915 6
+1916 11
+1917 8
+1918 6
+1919 12
+1920 5
+1921 12
+1922 14
+1923 14
+1924 13
+1925 7
+1926 17
+1927 19
+1928 20
+1929 7
+1930 9
+1931 11
+1932 16
+1933 17
+1934 11
+1935 11
+1936 11
+1937 15
+1938 11
+1939 7
+1940 12
+1941 3
+1942 11
+1943 9
+1944 12
+1945 14
+1946 13
+1947 13
+1948 7
+1949 13
+1950 5
+1951 12
+1952 11
+1953 9
+1954 10
+1955 8
+1956 18
+1957 14
+1958 13
+1959 22
+1960 16
+1961 17
+1962 26
+1963 21
+1964 25
+1965 24
+1966 18
+1967 14
+1968 18
+1969 22
+1970 12
+1971 12
+1972 13
+1973 12
+1974 16
+1975 15
+1976 11
+1977 10
+1978 14
+1979 10
+1980 11
+1981 10
+1982 5
+1983 8
+1984 15
+1985 9
+1986 3
diff --git a/Master/texmf-doc/doc/english/latex-graphics-companion/yearw.dat b/Master/texmf-doc/doc/english/latex-graphics-companion/yearw.dat
new file mode 100644
index 00000000000..506245abdcb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-graphics-companion/yearw.dat
@@ -0,0 +1,171 @@
+1803 3
+1805 3
+1817 2
+1818 3
+1819 10
+1820 5
+1821 14
+1822 11
+1823 6
+1824 4
+1826 6
+1827 5
+1828 5
+1829 8
+1830 14
+1831 5
+1832 9
+1833 6
+1834 9
+1835 6
+1836 10
+1837 14
+1838 7
+1839 8
+1840 7
+1841 10
+1842 13
+1843 10
+1844 13
+1845 18
+1846 14
+1847 10
+1848 13
+1849 10
+1850 11
+1851 5
+1852 13
+1853 19
+1854 5
+1855 14
+1856 13
+1857 6
+1858 10
+1859 9
+1860 14
+1861 12
+1862 17
+1863 16
+1864 14
+1865 13
+1866 10
+1867 22
+1868 23
+1869 8
+1870 16
+1871 12
+1872 27
+1873 12
+1874 22
+1875 16
+1876 28
+1877 23
+1878 22
+1879 19
+1880 17
+1881 14
+1882 29
+1883 23
+1884 13
+1885 12
+1886 11
+1887 16
+1888 12
+1889 4
+1890 7
+1891 10
+1892 6
+1893 12
+1894 6
+1895 10
+1896 3
+1897 12
+1898 8
+1899 6
+1900 12
+1901 8
+1902 9
+1903 11
+1904 14
+1905 9
+1906 6
+1907 14
+1908 19
+1909 23
+1910 6
+1911 10
+1912 12
+1913 11
+1914 11
+1915 6
+1916 11
+1917 8
+1918 6
+1919 12
+1920 5
+1921 12
+1922 14
+1923 14
+1924 13
+1925 7
+1926 17
+1927 19
+1928 20
+1929 7
+1930 9
+1931 11
+1932 16
+1933 17
+1934 11
+1935 11
+1936 11
+1937 15
+1938 11
+1939 7
+1940 12
+1941 3
+1942 11
+1943 9
+1944 12
+1945 14
+1946 13
+1947 13
+1948 7
+1949 13
+1950 5
+1951 12
+1952 11
+1953 9
+1954 10
+1955 8
+1956 18
+1957 14
+1958 13
+1959 22
+1960 16
+1961 17
+1962 26
+1963 21
+1964 25
+1965 24
+1966 18
+1967 14
+1968 18
+1969 22
+1970 12
+1971 12
+1972 13
+1973 12
+1974 16
+1975 15
+1976 11
+1977 10
+1978 14
+1979 10
+1980 11
+1981 10
+1982 5
+1983 8
+1984 15
+1985 9
+1986 3
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apa/README.apa b/Master/texmf-doc/doc/english/latex-web-companion/apa/README.apa
new file mode 100644
index 00000000000..0b972b5b1aa
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apa/README.apa
@@ -0,0 +1,18 @@
+Files in Appendix A of the LaTeX Web Companion
+
+Section A.1
++++++++++++
+
+latexexa.tex Complete LaTeX source of example file
+phys332-1.eps EPS file used in latexexa.tex
+phys332-2.eps " "
+latexexa.dtd DTD for representing LaTeX and MathML
+latexexa-raw.xml raw XML file ontained from LaTeX-->XML translation
+latexexa.xml nicely formated excerpt shown in Section A.1.2
+
+Section A.2
++++++++++++
+
+teched.html techexplorer scripting examples (Section A.2.1)
+teched.java " " " (Section A.2.2)
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa-raw.xml b/Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa-raw.xml
new file mode 100644
index 00000000000..095b37c922d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa-raw.xml
@@ -0,0 +1,1054 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE document SYSTEM "latex.xmldtd"
+[
+<!ENTITY % MathML "INCLUDE">
+<!ENTITY % LaTeXEntShort "IGNORE">
+<!ENTITY % LaTeXMath "IGNORE">
+<!ENTITY % LaTeXEnt "IGNORE">
+]>
+ <document>
+<frontmatter>
+<title>Simulation of Energy Loss Straggling</title>
+<author>Maria Physicist</author>
+<date>
+January 17, 1999</date>
+</frontmatter>
+<bodymatter>
+<section id="intro">
+<stitle>
+Introduction</stitle>
+<displaymath>
+<math
+>
+<mrow>
+<par>
+ <msup><mrow><mo>(</mo><mi>a</mi><mo>+</mo><mi>b</mi><mo>)</mo></mrow><mrow><mn>2</mn></mrow></msup>
+</mrow></math></displaymath>
+</par><par>Due to the statistical nature of ionisation energy loss, large fluctuations can occur in
+the amount of energy deposited by a particle traversing an absorber element.
+Continuous processes such as multiple scattering and energy loss play a relevant role
+in the longitudinal and lateral development of electromagnetic and hadronic
+showers, and in the case of sampling calorimeters the measured resolution
+can be significantly affected by such fluctuations in their active layers. The
+description of ionisation fluctuations is characterised by the significance parameter
+<inlinemath><math
+><mi>&kappa;</mi></math></inlinemath>,
+which is proportional to the ratio of mean energy loss to the maximum
+allowed energy transfer in a single collision with an atomic electron
+<displaymath><math
+><mrow>
+ <mi>&kappa;</mi><mo>=</mo> <mfrac><mrow><mi>&xi;</mi></mrow><!--___
+--><mrow><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub></mrow></mfrac>
+</mrow></math></displaymath>
+<inlinemath><math
+><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub></math></inlinemath> is the
+maximum transferable energy in a single collision with an atomic electron.
+<displaymath><math
+><mrow>
+ <msub><mi>E</mi><mrow><mi>max</mi></mrow></msub><mo>=</mo> <mfrac><mrow><mn>2</mn><msub><mi>m</mi><mrow><mi>e</mi></mrow></msub><msup><mi>&beta;</mi><mrow><mn>2</mn></mrow></msup><msup><mi>&gamma;</mi><mrow><mn>2</mn></mrow></msup></mrow><!--____________
+--><mrow><mn>1</mn><mo>+</mo><mn>2</mn><mi>&gamma;</mi><msub><mi>m</mi><mrow><mi>e</mi></mrow></msub><mo>/</mo><msub><mi>m</mi><mrow><mi>x</mi></mrow></msub><mo>+</mo><msup><mfenced
+open='(' close=')'><msub><mi>m</mi><mrow><mi>e</mi></mrow></msub><mo>/</mo><msub><mi>m</mi><mrow><mi>x</mi></mrow></msub> </mfenced><mrow><mn>2</mn></mrow></msup></mrow></mfrac><mo>,</mo>
+</mrow></math></displaymath> where
+<inlinemath><math
+><mi>&gamma;</mi><mo>=</mo><mi>E</mi><mo>/</mo><msub><mi>m</mi><mrow><mi>x</mi></mrow></msub></math></inlinemath>,
+<inlinemath><math
+><mi>E</mi></math></inlinemath> is energy and
+<inlinemath><math
+><msub><mi>m</mi><mrow><mi>x</mi></mrow></msub></math></inlinemath> the mass of the
+incident particle, <inlinemath><math
+><msup><mi>&beta;</mi><mrow><mn>2</mn></mrow></msup><mo>=</mo><mn>1</mn><mo>-</mo><mn>1</mn><mo>/</mo><msup><mi>&gamma;</mi><mrow><mn>2</mn></mrow></msup></math></inlinemath>
+and <inlinemath><math
+><msub><mi>m</mi><mrow><mi>e</mi></mrow></msub></math></inlinemath> is the
+electron mass. <inlinemath><math
+><mi>&xi;</mi></math></inlinemath>
+comes from the Rutherford scattering cross section and is defined as:
+
+ <eqnarray ><subeqn ><math><mi>&xi;</mi><mo>=</mo><mfrac><mrow><mn>2</mn><mi>&pi;</mi><msup><mi>z</mi><mrow><mn>2</mn></mrow></msup><msup><mi>e</mi><mrow><mn>4</mn></mrow></msup><msub><mi>N</mi><mrow><mi>A</mi><mi>v</mi></mrow></msub><mi>Z</mi><mi>&rho;</mi><mi>&delta;</mi><mi>x</mi></mrow><!--
+ --><mrow><msub><mi>m</mi><mrow><mi>e</mi></mrow></msub><msup><mi>&beta;</mi><mrow><mn>2</mn></mrow></msup><msup><mi>c</mi><mrow><mn>2</mn></mrow></msup><mi>A</mi></mrow></mfrac> <mo>=</mo><mn>1</mn><mn>5</mn><mn>3</mn><mo>.</mo><mn>4</mn> <mfrac><mrow><msup><mi>z</mi><mrow><mn>2</mn></mrow></msup></mrow><!--
+--><mrow><msup><mi>&beta;</mi><mrow><mn>2</mn></mrow></msup></mrow></mfrac> <mfrac><mrow><mi>Z</mi></mrow><!--
+--><mrow><mi>A</mi></mrow></mfrac><mi>&rho;</mi><mi>&delta;</mi><mi>x</mi><mspace width='12pt'/><mi>keV </mi><mo>,</mo> <mtext></mtext>
+</math></subeqn></eqnarray>
+where
+</par><par><tabular preamble="ll"><row><cell
+><inlinemath><math
+><mi>z</mi></math></inlinemath></cell><cell
+>charge of the incident particle </cell>
+</row><row><cell
+><inlinemath><math
+><msub><mi>N</mi><mrow><mi>A</mi><mi>v</mi></mrow></msub></math></inlinemath></cell><cell
+>Avogadro's number </cell>
+</row><row><cell
+><inlinemath><math
+><mi>Z</mi></math></inlinemath></cell><cell
+>atomic number of the material</cell>
+</row><row><cell
+><inlinemath><math
+><mi>A</mi></math></inlinemath></cell><cell
+>atomic weight of the material </cell>
+</row><row><cell
+><inlinemath><math
+><mi>&rho;</mi></math></inlinemath></cell><cell
+>density </cell>
+</row><row><cell
+><inlinemath><math
+><mi>&delta;</mi><mi>x</mi></math></inlinemath></cell><cell
+>thickness of the material </cell>
+</row><row><cell
+> </cell>
+</row></tabular>
+</par><par><inlinemath><math
+><mi>&kappa;</mi></math></inlinemath>
+measures the contribution of the collisions with energy transfer close to
+<inlinemath><math
+><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub></math></inlinemath>. For a given absorber,
+<inlinemath><math
+><mi>&kappa;</mi></math></inlinemath> tends towards large
+values if <inlinemath><math
+><mi>&delta;</mi><mi>x</mi></math></inlinemath> is large
+and/or if <inlinemath><math
+><mi>&beta;</mi></math></inlinemath> is small.
+Likewise, <inlinemath><math
+><mi>&kappa;</mi></math></inlinemath> tends
+towards zero if <inlinemath><math
+><mi>&delta;</mi><mi>x</mi></math></inlinemath> is
+small and/or if <inlinemath><math
+><mi>&beta;</mi></math></inlinemath>
+approaches 1.
+</par><par>The value of <inlinemath><math
+><mi>&kappa;</mi></math></inlinemath>
+distinguishes two regimes which occur in the description of ionisation fluctuations
+:
+</par><lalist class="enumerate">
+<item>
+<par>A
+large
+number
+of
+collisions
+involving
+the
+loss
+of
+all
+or
+most
+of
+the
+incident
+particle
+energy
+during
+the
+traversal
+of
+an
+absorber.
+</par><par>As
+the
+total
+energy
+transfer
+is
+composed
+of
+a
+multitude
+of
+small
+energy
+losses,
+we
+can
+apply
+the
+central
+limit
+theorem
+and
+describe
+the
+fluctuations
+by
+a
+Gaussian
+distribution.
+This
+case
+is
+applicable
+to
+non-relativistic
+particles
+and
+is
+described
+by
+the
+inequality
+<inlinemath><math
+><mi>&kappa;</mi><mo>&gt;</mo><mn>1</mn><mn>0</mn></math></inlinemath>
+(i.e.
+when
+the
+mean
+energy
+loss
+in
+the
+absorber
+is
+greater
+than
+the
+maximum
+energy
+transfer
+in
+a
+single
+collision).
+</par></item>
+<item>
+<par>Particles
+traversing
+thin
+counters
+and
+incident
+electrons
+under
+any
+conditions.
+</par><par>The
+relevant
+inequalities
+and
+distributions
+are
+<inlinemath><math
+><mn>0</mn><mo>.</mo><mn>0</mn><mn>1</mn><mo>&lt;</mo><mi>&kappa;</mi><mo>&lt;</mo><mn>1</mn><mn>0</mn></math></inlinemath>,
+Vavilov
+distribution,
+and
+<inlinemath><math
+><mi>&kappa;</mi><mo>&lt;</mo><mn>0</mn><mo>.</mo><mn>0</mn><mn>1</mn></math></inlinemath>,
+Landau
+distribution.</par></item></lalist>
+<par>An additional regime is defined by the contribution of the collisions
+with low energy transfer which can be estimated with the relation
+<inlinemath><math
+><mi>&xi;</mi><mo>/</mo><msub><mi>I</mi><mrow><mn>0</mn></mrow></msub></math></inlinemath>,
+where <inlinemath><math
+><msub><mi>I</mi><mrow><mn>0</mn></mrow></msub></math></inlinemath>
+is the mean ionisation potential of the atom. Landau theory assumes that
+the number of these collisions is high, and consequently, it has a restriction
+<inlinemath><math
+><mi>&xi;</mi><mo>/</mo><msub><mi>I</mi><mrow><mn>0</mn></mrow></msub><mo>&Gt;</mo><mn>1</mn></math></inlinemath>. In <texttt>GEANT</texttt> (see
+URL http://wwwinfo.cern.ch/asdoc/geant/geantall.html), the limit of Landau theory has
+been set at <inlinemath><math
+><mi>&xi;</mi><mo>/</mo><msub><mi>I</mi><mrow><mn>0</mn></mrow></msub><mo>=</mo><mn>5</mn><mn>0</mn></math></inlinemath>.
+Below this limit special models taking into account the atomic structure of the material are
+used. This is important in thin layers and gaseous materials. Figure <ref refid="fg:phys332-1"/> shows the behaviour
+of <inlinemath><math
+><mi>&xi;</mi><mo>/</mo><msub><mi>I</mi><mrow><mn>0</mn></mrow></msub></math></inlinemath> as
+a function of the layer thickness for an electron of 100 keV and 1 GeV of kinetic
+energy in Argon, Silicon and Uranium.
+</par>
+<figure>
+<includegraphics file="phys332-1"/>
+<!--Figure 1--><caption id="fg:phys332-1">The variable <inlinemath><math
+><mi>&xi;</mi><mo>/</mo><msub><mi>I</mi><mrow><mn>0</mn></mrow></msub></math></inlinemath>
+can be used to measure the validity range of the Landau
+theory. It depends on the type and energy of the particle,
+<inlinemath><math
+><mi>Z</mi></math></inlinemath>,
+<inlinemath><math
+><mi>A</mi></math></inlinemath>
+and the ionisation potential of the material and the layer thickness. </caption>
+</figure>
+<par>In the following sections, the different theories and models for the energy loss
+fluctuation are described. First, the Landau theory and its limitations are discussed,
+and then, the Vavilov and Gaussian straggling functions and the methods in the thin
+layers and gaseous materials are presented.
+</par>
+</section>
+<section id="sec:phys332-1">
+<stitle>
+Landau theory</stitle>
+<par>For a particle of mass <inlinemath><math
+><msub><mi>m</mi><mrow><mi>x</mi></mrow></msub></math></inlinemath> traversing
+a thickness of material <inlinemath><math
+><mi>&delta;</mi><mi>x</mi></math></inlinemath>,
+the Landau probability distribution may be written in terms of the universal Landau
+function <inlinemath><math
+><mi>&phi;</mi><mrow><mo>(</mo><mi>&lambda;</mi><mo>)</mo></mrow></math></inlinemath>
+as<cite refid="bib-LAND"/>:
+
+ <eqnarray ><subeqn ><math><mi>f</mi><mrow><mo>(</mo><mi>&epsi;</mi><mo>,</mo><mi>&delta;</mi><mi>x</mi><mo>)</mo></mrow> <mo>=</mo> <mfrac><mrow><mn>1</mn></mrow><!--
+--><mrow><mi>&xi;</mi></mrow></mfrac><mi>&phi;</mi><mrow><mo>(</mo><mi>&lambda;</mi><mo>)</mo></mrow> <mtext></mtext>
+</math></subeqn></eqnarray>
+where
+
+ <eqnarray ><subeqn ><math><mi>&phi;</mi><mrow><mo>(</mo><mi>&lambda;</mi><mo>)</mo></mrow> <mo>=</mo> <mfrac><mrow><mn>1</mn></mrow><!--_
+--><mrow><mn>2</mn><mi>&pi;</mi><mi>i</mi></mrow></mfrac><msubsup><mo>&int;</mo>
+ <mrow><mi>c</mi><mo>+</mo><mi>i</mi><mi>&infin;</mi></mrow><mrow><mi>c</mi><mo>-</mo><mi>i</mi><mi>&infin;</mi></mrow></msubsup><mo>exp</mo><mfenced
+open='(' close=')'><mi>u</mi><mo>ln</mo><mi>u</mi><mo>+</mo><mi>&lambda;</mi><mi>u</mi></mfenced><mi>d</mi><mi>u</mi><mspace width='2cm'/><mi>c</mi><mo>&geq;</mo><mn>0</mn> <mtext></mtext>
+ </math></subeqn><subeqn ><math>
+ </math></subeqn><subeqn ><math><mi>&lambda;</mi> <mo>=</mo> <mfrac><mrow><mi>&epsi;</mi><mo>-</mo><munderover accent='true'><mi>&epsi;</mi><mrow></mrow><mo>&barwed;</mo></munderover></mrow><!--
+ --><mrow><mi>&xi;</mi></mrow></mfrac> <mo>-</mo><mi>&gamma;</mi><mi>&prime;</mi><mo>-</mo><msup><mi>&beta;</mi><mrow><mn>2</mn></mrow></msup><mo>-</mo><mo>ln</mo> <mfrac><mrow><mi>&xi;</mi></mrow><!-- ___
+--><mrow><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub></mrow></mfrac> <mtext></mtext>
+ </math></subeqn><subeqn ><math>
+ </math></subeqn><subeqn ><math><mi>&gamma;</mi><mi>&prime;</mi> <mo>=</mo> <mn>0</mn><mo>.</mo><mn>4</mn><mn>2</mn><mn>2</mn><mn>7</mn><mn>8</mn><mn>4</mn><mo>.</mo><mo>.</mo><mo>.</mo><mo>=</mo><mn>1</mn><mo>-</mo><mi>&gamma;</mi> <mtext></mtext>
+ </math></subeqn><subeqn ><math>
+ </math></subeqn><subeqn ><math><mi>&gamma;</mi> <mo>=</mo> <mn>0</mn><mo>.</mo><mn>5</mn><mn>7</mn><mn>7</mn><mn>2</mn><mn>1</mn><mn>5</mn><mo>.</mo><mo>.</mo><mo>.</mo><mtext>(Euler's constant)</mtext> <mtext></mtext>
+ </math></subeqn><subeqn ><math>
+ </math></subeqn><subeqn ><math><munderover accent='true'><mi>&epsi;</mi><mrow></mrow><mo>&barwed;</mo></munderover> <mo>=</mo> <mtext>average energy loss</mtext> <mtext></mtext>
+ </math></subeqn><subeqn ><math>
+ </math></subeqn><subeqn ><math><mi>&epsi;</mi> <mo>=</mo> <mtext>actual energy loss</mtext> <mtext></mtext>
+</math></subeqn></eqnarray>
+</par>
+<subsection >
+<stitle>
+Restrictions</stitle>
+<par>The Landau formalism makes two restrictive assumptions :
+</par><lalist class="enumerate">
+<item>
+<par>The
+typical
+energy
+loss
+is
+small
+compared
+to
+the
+maximum
+energy
+loss
+in
+a
+single
+collision.
+This
+restriction
+is
+removed
+in
+the
+Vavilov
+theory
+(see
+section
+<ref refid="vavref"/>).
+</par></item>
+<item>
+<par>The
+typical
+energy
+loss
+in
+the
+absorber
+should
+be
+large
+compared
+to
+the
+binding
+energy
+of
+the
+most
+tightly
+bound
+electron.
+For
+gaseous
+detectors,
+typical
+energy
+losses
+are
+a
+few
+keV
+which
+is
+comparable
+to
+the
+binding
+energies
+of
+the
+inner
+electrons.
+In
+such
+cases
+a
+more
+sophisticated
+approach
+which
+accounts
+for
+atomic
+energy
+levels<cite refid="bib-TALM"/>
+is
+necessary
+to
+accurately
+simulate
+data
+distributions.
+In
+<texttt>GEANT</texttt>,
+a
+parameterised
+model
+by
+L.
+Urb&aacute;n
+is
+used
+(see
+section
+<ref refid="urban"/>).</par></item></lalist>
+<par>In addition, the average value of the Landau distribution is infinite.
+Summing the Landau fluctuation obtained to the average energy from the
+<inlinemath><math
+><mi>d</mi><mi>E</mi><mo>/</mo><mi>d</mi><mi>x</mi></math></inlinemath>
+tables, we obtain a value which is larger than the one coming from the table. The
+probability to sample a large value is small, so it takes a large number of steps
+(extractions) for the average fluctuation to be significantly larger than zero. This
+introduces a dependence of the energy loss on the step size which can affect
+calculations.
+</par><par>A solution to this has been to introduce a limit on the value of the
+variable sampled by the Landau distribution in order to keep the average
+fluctuation to 0. The value obtained from the <texttt>GLANDO</texttt> routine is:
+<displaymath><math
+><mrow>
+ <mi>&delta;</mi><mi>d</mi><mi>E</mi><mo>/</mo><mi>d</mi><mi>x</mi><mo>=</mo><mi>&epsi;</mi><mo>-</mo><munderover accent='true'><mi>&epsi;</mi><mrow></mrow><mo>&barwed;</mo></munderover><mo>=</mo><mi>&xi;</mi><mrow><mo>(</mo><mi>&lambda;</mi><mo>-</mo><mi>&gamma;</mi><mi>&prime;</mi><mo>+</mo><msup><mi>&beta;</mi><mrow><mn>2</mn></mrow></msup><mo>+</mo><mo>ln</mo> <mfrac><mrow><mi>&xi;</mi></mrow><!-- ___
+--><mrow><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub></mrow></mfrac> <mo>)</mo></mrow>
+</mrow></math></displaymath>
+In order for this to have average 0, we must impose that:
+<displaymath><math
+><mrow>
+ <munderover accent='true'><mi>&lambda;</mi><mrow></mrow><mo>&barwed;</mo></munderover><mo>=</mo><mo>-</mo><mi>&gamma;</mi><mi>&prime;</mi><mo>-</mo><msup><mi>&beta;</mi><mrow><mn>2</mn></mrow></msup><mo>-</mo><mo>ln</mo> <mfrac><mrow><mi>&xi;</mi></mrow><!-- ___
+--><mrow><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub></mrow></mfrac>
+</mrow></math></displaymath>
+</par><par>This is realised introducing a <inlinemath><math
+><msub><mi>&lambda;</mi><mrow><mi>max</mi></mrow></msub><mrow><mo>(</mo><munderover accent='true'><mi>&lambda;</mi><mrow></mrow><mo>&barwed;</mo></munderover><mo>)</mo></mrow></math></inlinemath>
+such that if only values of <inlinemath><math
+><mi>&lambda;</mi><mo>&leq;</mo><msub><mi>&lambda;</mi><mrow><mi>max</mi></mrow></msub></math></inlinemath>
+are accepted, the average value of the distribution is
+<inlinemath><math
+><munderover accent='true'><mi>&lambda;</mi><mrow></mrow><mo>&barwed;</mo></munderover></math></inlinemath>.
+</par><par>A parametric fit to the universal Landau distribution has been performed, with following result:
+<displaymath><math
+><mrow>
+ <msub><mi>&lambda;</mi><mrow><mi>max</mi></mrow></msub><mo>=</mo><mn>0</mn><mo>.</mo><mn>6</mn><mn>0</mn><mn>7</mn><mn>1</mn><mn>5</mn><mo>+</mo><mn>1</mn><mo>.</mo><mn>1</mn><mn>9</mn><mn>3</mn><mn>4</mn><munderover accent='true'><mi>&lambda;</mi><mrow></mrow><mo>&barwed;</mo></munderover><mo>+</mo><mrow><mo>(</mo><mn>0</mn><mo>.</mo><mn>6</mn><mn>7</mn><mn>7</mn><mn>9</mn><mn>4</mn><mo>+</mo><mn>0</mn><mo>.</mo><mn>0</mn><mn>5</mn><mn>2</mn><mn>3</mn><mn>8</mn><mn>2</mn><munderover accent='true'><mi>&lambda;</mi><mrow></mrow><mo>&barwed;</mo></munderover><mo>)</mo></mrow><mo>exp</mo><mrow><mo>(</mo><mn>0</mn><mo>.</mo><mn>9</mn><mn>4</mn><mn>7</mn><mn>5</mn><mn>3</mn><mo>+</mo><mn>0</mn><mo>.</mo><mn>7</mn><mn>4</mn><mn>4</mn><mn>4</mn><mn>2</mn><munderover accent='true'><mi>&lambda;</mi><mrow></mrow><mo>&barwed;</mo></munderover><mo>)</mo></mrow>
+</mrow></math></displaymath> only values
+smaller than <inlinemath><math
+><msub><mi>&lambda;</mi><mrow><mi>max</mi></mrow></msub></math></inlinemath>
+are accepted, otherwise the distribution is resampled.
+</par>
+</subsection>
+</section>
+<section id="vavref">
+<stitle>
+Vavilov theory</stitle>
+<par>Vavilov<cite refid="bib-VAVI"/> derived a more accurate straggling distribution by introducing the kinematic
+limit on the maximum transferable energy in a single collision, rather than using
+<inlinemath><math
+><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub><mo>=</mo><mi>&infin;</mi></math></inlinemath>. Now
+we can write<cite refid="bib-SCH1"/>:
+
+ <eqnarray ><subeqn ><math><mi>f</mi> <mfenced
+open='(' close=')'><mi>&epsi;</mi><mo>,</mo><mi>&delta;</mi><mi>s</mi></mfenced> <mo>=</mo> <mfrac><mrow><mn>1</mn></mrow><!--
+--><mrow><mi>&xi;</mi></mrow></mfrac><msub><mi>&phi;</mi><mrow><mi>v</mi></mrow></msub> <mfenced
+open='(' close=')'><msub><mi>&lambda;</mi><mrow><mi>v</mi></mrow></msub><mo>,</mo><mi>&kappa;</mi><mo>,</mo><msup><mi>&beta;</mi><mrow><mn>2</mn></mrow></msup></mfenced> <mtext></mtext>
+</math></subeqn></eqnarray>
+where
+
+ <eqnarray ><subeqn ><math><msub><mi>&phi;</mi><mrow><mi>v</mi></mrow></msub> <mfenced
+open='(' close=')'><msub><mi>&lambda;</mi><mrow><mi>v</mi></mrow></msub><mo>,</mo><mi>&kappa;</mi><mo>,</mo><msup><mi>&beta;</mi><mrow><mn>2</mn></mrow></msup></mfenced> <mo>=</mo> <mfrac><mrow><mn>1</mn></mrow><!--_
+--><mrow><mn>2</mn><mi>&pi;</mi><mi>i</mi></mrow></mfrac><msubsup><mo>&int;</mo>
+ <mrow><mi>c</mi><mo>+</mo><mi>i</mi><mi>&infin;</mi></mrow><mrow><mi>c</mi><mo>-</mo><mi>i</mi><mi>&infin;</mi></mrow></msubsup><mi>&phi;</mi><mfenced
+open='(' close=')'><mi>s</mi></mfenced><msup><mi>e</mi><mrow><mi>&lambda;</mi><mi>s</mi></mrow></msup><mi>d</mi><mi>s</mi><mspace width='2cm'/><mi>c</mi><mo>&geq;</mo><mn>0</mn> <mtext></mtext>
+ </math></subeqn><subeqn ><math>
+ </math></subeqn><subeqn ><math><mi>&phi;</mi><mfenced
+open='(' close=')'><mi>s</mi></mfenced> <mo>=</mo> <mo>exp</mo><mfenced
+open='[' close=']'><mi>&kappa;</mi><mrow><mo>(</mo><mn>1</mn><mo>+</mo><msup><mi>&beta;</mi><mrow><mn>2</mn></mrow></msup><mi>&gamma;</mi><mo>)</mo></mrow></mfenced><mo>exp</mo><mfenced
+open='[' close=']'><mi>&psi;</mi> <mfenced
+open='(' close=')'><mi>s</mi></mfenced></mfenced><mo>,</mo> <mtext></mtext>
+ </math></subeqn><subeqn ><math>
+ </math></subeqn><subeqn ><math><mi>&psi;</mi> <mfenced
+open='(' close=')'><mi>s</mi></mfenced> <mo>=</mo> <mi>s</mi><mo>ln</mo><mi>&kappa;</mi><mo>+</mo><mrow><mo>(</mo><mi>s</mi><mo>+</mo><msup><mi>&beta;</mi><mrow><mn>2</mn></mrow></msup><mi>&kappa;</mi><mo>)</mo></mrow><mfenced
+open='[' close=']'><mo>ln</mo><mrow><mo>(</mo><mi>s</mi><mo>/</mo><mi>&kappa;</mi><mo>)</mo></mrow><mo>+</mo><msub><mi>E</mi><mrow>
+<mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>s</mi><mo>/</mo><mi>&kappa;</mi><mo>)</mo></mrow></mfenced><mo>-</mo><mi>&kappa;</mi><msup><mi>e</mi><mrow><mo>-</mo><mi>s</mi><mo>/</mo><mi>&kappa;</mi></mrow></msup><mo>,</mo> <mtext></mtext>
+</math></subeqn></eqnarray>
+and
+
+ <eqnarray ><subeqn ><math><msub><mi>E</mi><mrow><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow> <mo>=</mo><msubsup> <mo>&int;</mo>
+ <mrow><mi>&infin;</mi></mrow><mrow><mi>z</mi></mrow></msubsup><msup><mi>t</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><msup><mi>e</mi><mrow><mo>-</mo><mi>t</mi></mrow></msup><mi>d</mi><mi>t</mi><mspace width='1cm'/><mtext>(the exponential integral)</mtext> <mtext></mtext>
+ </math></subeqn><subeqn ><math>
+ </math></subeqn><subeqn ><math><msub><mi>&lambda;</mi><mrow><mi>v</mi></mrow></msub> <mo>=</mo> <mi>&kappa;</mi><mfenced
+open='[' close=']'><mfrac><mrow><mi>&epsi;</mi><mo>-</mo><munderover accent='true'><mi>&epsi;</mi><mrow></mrow><mo>&barwed;</mo></munderover></mrow><!--
+ --><mrow><mi>&xi;</mi></mrow></mfrac> <mo>-</mo><mi>&gamma;</mi><mi>&prime;</mi><mo>-</mo><msup><mi>&beta;</mi><mrow><mn>2</mn></mrow></msup></mfenced> <mtext></mtext>
+</math></subeqn></eqnarray>
+</par><par>The Vavilov parameters are simply related to the Landau parameter by
+<inlinemath><math
+><msub><mi>&lambda;</mi><mrow><mi>L</mi></mrow></msub><mo>=</mo><msub><mi>&lambda;</mi><mrow><mi>v</mi></mrow></msub><mo>/</mo><mi>&kappa;</mi><mo>-</mo><mo>ln</mo><mi>&kappa;</mi></math></inlinemath>. It can be shown that
+as <inlinemath><math
+><mi>&kappa;</mi><mo>&rarr;</mo><mn>0</mn></math></inlinemath>, the distribution of
+the variable <inlinemath><math
+><msub><mi>&lambda;</mi><mrow><mi>L</mi></mrow></msub></math></inlinemath> approaches
+that of Landau. For <inlinemath><math
+><mi>&kappa;</mi><mo>&leq;</mo><mn>0</mn><mo>.</mo><mn>0</mn><mn>1</mn></math></inlinemath>
+the two distributions are already practically identical. Contrary to what many textbooks
+report, the Vavilov distribution <emph>does not</emph> approximate the Landau distribution for small
+<inlinemath><math
+><mi>&kappa;</mi></math></inlinemath>, but rather the
+distribution of <inlinemath><math
+><msub><mi>&lambda;</mi><mrow><mi>L</mi></mrow></msub></math></inlinemath>
+defined above tends to the distribution of the true
+<inlinemath><math
+><mi>&lambda;</mi></math></inlinemath> from
+the Landau density function. Thus the routine <texttt>GVAVIV</texttt> samples the variable
+<inlinemath><math
+><msub><mi>&lambda;</mi><mrow><mi>L</mi></mrow></msub></math></inlinemath> rather
+than <inlinemath><math
+><msub><mi>&lambda;</mi><mrow><mi>v</mi></mrow></msub></math></inlinemath>.
+For <inlinemath><math
+><mi>&kappa;</mi><mo>&geq;</mo><mn>1</mn><mn>0</mn></math></inlinemath>
+the Vavilov distribution tends to a Gaussian distribution (see next section).
+</par>
+</section>
+<section >
+<stitle>
+Gaussian Theory</stitle>
+<par>Various conflicting forms have been proposed for Gaussian straggling functions, but most
+of these appear to have little theoretical or experimental basis. However, it has been shown<cite refid="bib-SELT"/>
+that for <inlinemath><math
+><mi>&kappa;</mi><mo>&geq;</mo><mn>1</mn><mn>0</mn></math></inlinemath>
+the Vavilov distribution can be replaced by a Gaussian of the form:
+
+ <eqnarray ><subeqn ><math><mi>f</mi><mrow><mo>(</mo><mi>&epsi;</mi><mo>,</mo><mi>&delta;</mi><mi>s</mi><mo>)</mo></mrow><mo>&ap;</mo> <mfrac><mrow><mn>1</mn></mrow><!--________
+--><mrow><mi>&xi;</mi><msqrt><!--<mi>&radical;</mi>
+ ______________--><mfrac><mrow><mn>2</mn><mi>&pi;</mi></mrow><!--
+ --><mrow><mi>&kappa;</mi></mrow></mfrac> <mfenced
+open='(' close=')'><mn>1</mn><mo>-</mo><msup><mi>&beta;</mi><mrow><mn>2</mn></mrow></msup><mo>/</mo><mn>2</mn></mfenced></msqrt></mrow></mfrac><mo>exp</mo><mfenced
+open='[' close=']'><mfrac><mrow><msup><mrow><mo>(</mo><mi>&epsi;</mi><mo>-</mo><munderover accent='true'><mi>&epsi;</mi><mrow></mrow><mo>&barwed;</mo></munderover><mo>)</mo></mrow><mrow><mn>2</mn></mrow></msup></mrow><!--
+ --><mrow><mn>2</mn></mrow></mfrac> <mfrac><mrow><mi>&kappa;</mi></mrow><!-- _______
+--><mrow><msup><mi>&xi;</mi><mrow><mn>2</mn></mrow></msup><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msup><mi>&beta;</mi><mrow><mn>2</mn></mrow></msup><mo>/</mo><mn>2</mn><mo>)</mo></mrow></mrow></mfrac></mfenced> <mtext></mtext>
+</math></subeqn></eqnarray>
+thus implying
+
+ <eqnarray ><subeqn ><math><mi>mean</mi> <mo>=</mo> <munderover accent='true'><mi>&epsi;</mi><mrow></mrow><mo>&barwed;</mo></munderover> <mtext></mtext>
+ </math></subeqn><subeqn ><math>
+ </math></subeqn><subeqn ><math><msup><mi>&sigma;</mi><mrow><mn>2</mn></mrow></msup> <mo>=</mo> <mfrac><mrow><msup><mi>&xi;</mi><mrow><mn>2</mn></mrow></msup></mrow><!--
+ --><mrow><mi>&kappa;</mi></mrow></mfrac> <mrow><mo>(</mo><mn>1</mn><mo>-</mo><msup><mi>&beta;</mi><mrow><mn>2</mn></mrow></msup><mo>/</mo><mn>2</mn><mo>)</mo></mrow><mo>=</mo><mi>&xi;</mi><msub><mi>E</mi><mrow><mi>
+max</mi></mrow></msub><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msup><mi>&beta;</mi><mrow><mn>2</mn></mrow></msup><mo>/</mo><mn>2</mn><mo>)</mo></mrow> <mtext></mtext>
+</math></subeqn></eqnarray>
+</par>
+</section>
+<section id="urban">
+<stitle>
+Urb&aacute;n model</stitle>
+<par>The method for computing restricted energy losses with
+<inlinemath><math
+><mi>&delta;</mi></math></inlinemath>-ray
+production above given threshold energy in <texttt>GEANT</texttt> is a Monte Carlo method that
+can be used for thin layers. It is fast and it can be used for any thickness of a
+medium. Approaching the limit of the validity of Landau's theory, the loss
+distribution approaches smoothly the Landau form as shown in Figure <ref refid="fg:phys332-2"/>.
+</par><figure>
+<includegraphics file="phys332-2"/>
+<!--Figure 2--><caption id="fg:phys332-2">Energy loss distribution for a 3 GeV electron in Argon as given by
+standard <texttt>GEANT</texttt>. The width of the layers is given in centimeters.</caption>
+</figure>
+<par>It is assumed that the atoms have only two energy levels with binding energy
+<inlinemath><math
+><msub><mi>E</mi><mrow><mn>1</mn></mrow></msub></math></inlinemath> and
+<inlinemath><math
+><msub><mi>E</mi><mrow><mn>2</mn></mrow></msub></math></inlinemath>.
+The particle--atom interaction will then be an excitation with energy loss
+<inlinemath><math
+><msub><mi>E</mi><mrow><mn>1</mn></mrow></msub></math></inlinemath> or
+<inlinemath><math
+><msub><mi>E</mi><mrow><mn>2</mn></mrow></msub></math></inlinemath>, or
+an ionisation with an energy loss distributed according to a function
+<inlinemath><math
+><mi>g</mi><mrow><mo>(</mo><mi>E</mi><mo>)</mo></mrow><mo>&sim;</mo><mn>1</mn><mo>/</mo><msup><mi>E</mi><mrow><mn>2</mn></mrow></msup></math></inlinemath>:
+<equation ><math>
+ <mi>g</mi><mrow><mo>(</mo><mi>E</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mrow><mo>(</mo><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub><mo>+</mo><mi>I</mi><mo>)</mo></mrow><mi>I</mi></mrow><!--
+ --><mrow><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub></mrow></mfrac> <mfrac><mrow><mn>1</mn></mrow><!-- _
+--><mrow><msup><mi>E</mi><mrow><mn>2</mn></mrow></msup></mrow></mfrac> <mi>(</mi><mi>1</mi><mi>)</mi>
+</math></equation>
+</par><par>The macroscopic cross-section for excitations
+(<inlinemath><math
+><mi>i</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn></math></inlinemath>) is
+<equation id="eq:sigex"><math>
+ <msub><mi>&Sigma;</mi><mrow><mi>i</mi></mrow></msub><mo>=</mo><mi>C</mi> <mfrac><mrow><msub><mi>f</mi><mrow><mi>i</mi></mrow></msub></mrow><!--
+--><mrow><msub><mi>E</mi><mrow><mi>i</mi></mrow></msub></mrow></mfrac> <mfrac><mrow><mo>ln</mo><mrow><mo>(</mo><mn>2</mn><mi>m</mi><msup><mi>&beta;</mi><mrow><mn>2</mn></mrow></msup><msup><mi>&gamma;</mi><mrow><mn>2</mn></mrow></msup><mo>/</mo><msub><mi>E</mi><mrow><mi>i</mi></mrow></msub><mo>)</mo></mrow><mo>-</mo><msup><mi>&beta;</mi><mrow><mn>2</mn></mrow></msup></mrow><!--
+ --><mrow><mo>ln</mo><mrow><mo>(</mo><mn>2</mn><mi>m</mi><msup><mi>&beta;</mi><mrow><mn>2</mn></mrow></msup><msup><mi>&gamma;</mi><mrow><mn>2</mn></mrow></msup><mo>/</mo><mi>I</mi><mo>)</mo></mrow><mo>-</mo><msup><mi>&beta;</mi><mrow><mn>2</mn></mrow></msup></mrow></mfrac> <mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>r</mi><mo>)</mo></mrow> <mi>(</mi><mi>2</mi><mi>)</mi>
+</math></equation>and
+the macroscopic cross-section for ionisation is
+<equation id="eq:sigion"><math>
+ <msub><mi>&Sigma;</mi><mrow><mn>3</mn></mrow></msub><mo>=</mo><mi>C</mi> <mfrac><mrow><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub></mrow><!-- ________________
+--><mrow><mi>I</mi><mrow><mo>(</mo><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub><mo>+</mo><mi>I</mi><mo>)</mo></mrow><mo>ln</mo><mrow><mo>(</mo><mfrac><mrow><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub><mo>+</mo><mi>I</mi></mrow><!--
+ --><mrow><mi>I</mi></mrow></mfrac> <mo>)</mo></mrow></mrow></mfrac><mi>r</mi> <mi>(</mi><mi>3</mi><mi>)</mi>
+</math></equation><inlinemath><math
+><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub></math></inlinemath>
+is the <texttt>GEANT</texttt> cut for <inlinemath><math
+><mi>&delta;</mi></math></inlinemath>-production,
+or the maximum energy transfer minus mean ionisation energy, if it is smaller than
+this cut-off value. The following notation is used:
+</par><par><tabular preamble="ll"><row><cell
+><inlinemath><math
+><mi>r</mi><mo>,</mo><mi>C</mi></math></inlinemath></cell><cell
+>parameters of the model</cell>
+</row><row><cell
+><inlinemath><math
+><msub><mi>E</mi><mrow><mi>i</mi></mrow></msub></math></inlinemath></cell><cell
+>atomic energy levels </cell>
+</row><row><cell
+><inlinemath><math
+><mi>I</mi></math></inlinemath></cell><cell
+>mean ionisation energy </cell>
+</row><row><cell
+><inlinemath><math
+><msub><mi>f</mi><mrow><mi>i</mi></mrow></msub></math></inlinemath></cell><cell
+>oscillator strengths </cell>
+</row></tabular>
+</par><par>The model has the parameters <inlinemath><math
+><msub><mi>f</mi><mrow><mi>i</mi></mrow></msub></math></inlinemath>,
+<inlinemath><math
+><msub><mi>E</mi><mrow><mi>i</mi></mrow></msub></math></inlinemath>,
+<inlinemath><math
+><mi>C</mi></math></inlinemath> and
+<inlinemath><math
+><mi>r</mi><mrow><mo>(</mo><mn>0</mn><mo>&leq;</mo><mi>r</mi><mo>&leq;</mo><mn>1</mn><mo>)</mo></mrow></math></inlinemath>. The oscillator
+strengths <inlinemath><math
+><msub><mi>f</mi><mrow><mi>i</mi></mrow></msub></math></inlinemath> and the
+atomic level energies <inlinemath><math
+><msub><mi>E</mi><mrow><mi>i</mi></mrow></msub></math></inlinemath>
+should satisfy the constraints
+
+ <eqnarray ><subeqn id="eq:fisum"><math><msub><mi>f</mi><mrow><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>f</mi><mrow><mn>2</mn></mrow></msub> <mo>=</mo> <mn>1</mn> <mtext>(4)</mtext>
+ </math></subeqn><subeqn ><math>
+ </math></subeqn><subeqn id="eq:flnsum"><math><msub><mi>f</mi><mrow><mn>1</mn></mrow></msub><mo>ln</mo><msub><mi>E</mi><mrow><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>f</mi><mrow><mn>2</mn></mrow></msub><mo>ln</mo><msub><mi>E</mi><mrow><mn>2</mn></mrow></msub> <mo>=</mo> <mo>ln</mo><mi>I</mi> <mtext>(5)</mtext>
+</math></subeqn></eqnarray>
+The parameter <inlinemath><math
+><mi>C</mi></math></inlinemath>
+can be defined with the help of the mean energy loss
+<inlinemath><math
+><mi>d</mi><mi>E</mi><mo>/</mo><mi>d</mi><mi>x</mi></math></inlinemath> in the following way: The
+numbers of collisions (<inlinemath><math
+><msub><mi>n</mi><mrow><mi>i</mi></mrow></msub></math></inlinemath>,
+i = 1,2 for the excitation and 3 for the ionisation) follow the Poisson distribution with a mean
+number <inlinemath><math
+><mrow><mo>&lt;</mo><msub><mi>n</mi><mrow><mi>i</mi></mrow></msub><mo>>;</mo></mrow></math></inlinemath>. In a step
+<inlinemath><math
+><mi>&Delta;</mi><mi>x</mi></math></inlinemath> the mean number
+of collisions is <equation ><math>
+ <mrow><mo>&lt;</mo><msub><mi>n</mi><mrow><mi>i</mi></mrow></msub><mo>>;</mo></mrow><mo>=</mo><msub><mi>&Sigma;</mi><mrow><mi>i</mi></mrow></msub><mi>&Delta;</mi><mi>x</mi> <mi>(</mi><mi>6</mi><mi>)</mi>
+</math></equation>The
+mean energy loss <inlinemath><math
+><mi>d</mi><mi>E</mi><mo>/</mo><mi>d</mi><mi>x</mi></math></inlinemath>
+in a step is the sum of the excitation and ionisation contributions
+<equation ><math>
+ <mfrac><mrow><mi>d</mi><mi>E</mi></mrow><!--
+--><mrow><mi>d</mi><mi>x</mi></mrow></mfrac> <mi>&Delta;</mi><mi>x</mi><mo>=</mo><mfenced
+open='[' close=']'><msub><mi>&Sigma;</mi><mrow><mn>1</mn></mrow></msub><msub><mi>E</mi><mrow><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>&Sigma;</mi><mrow><mn>2</mn></mrow></msub><msub><mi>E</mi><mrow><mn>2</mn></mrow></msub><mo>+</mo><msub><mi>&Sigma;</mi><mrow><mn>3</mn></mrow></msub><msubsup><mo>&int;</mo>
+ <mrow><mi>I</mi></mrow><mrow><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub><mo>+</mo><mi>I</mi></mrow></msubsup><mi>E</mi><mi>g</mi><mrow><mo>(</mo><mi>E</mi><mo>)</mo></mrow><mi>d</mi><mi>E</mi></mfenced><mi>&Delta;</mi><mi>x</mi> <mi>(</mi><mi>7</mi><mi>)</mi>
+</math></equation>From
+this, using the equations (<ref refid="eq:sigex"/>), (<ref refid="eq:sigion"/>), (<ref refid="eq:fisum"/>) and (<ref refid="eq:flnsum"/>), one can define the parameter
+<inlinemath><math
+><mi>C</mi></math></inlinemath>
+<equation ><math>
+ <mi>C</mi><mo>=</mo><mfrac><mrow><mi>d</mi><mi>E</mi></mrow><!--
+--><mrow><mi>d</mi><mi>x</mi></mrow></mfrac> <mi>(</mi><mi>8</mi><mi>)</mi>
+</math></equation>
+</par><par>The following values have been chosen in <texttt>GEANT</texttt> for the other parameters:
+<displaymath><math
+><mrow>
+ <mtable equalrows='false' equalcolumns='false'><mtr><mtd><msub><mi>f</mi><mrow><mn>2</mn></mrow></msub><mo>=</mo><mfenced
+open='{' ><mtable equalrows='false' equalcolumns='false'><mtr><mtd><mn>0</mn> </mtd><mtd><mi>if</mi><mi>Z</mi><mo>&leq;</mo><mn>2</mn></mtd>
+</mtr><mtr><mtd><mn>2</mn><mo>/</mo><mi>Z</mi></mtd><mtd><mi>if</mi><mi>Z</mi><mo>&gt;</mo><mn>2</mn></mtd>
+</mtr><mtr><mtd> </mtd></mtr></mtable> </mfenced></mtd><mtd><mo>&Rarr;</mo></mtd><mtd><msub><mi>f</mi><mrow><mn>1</mn></mrow></msub><mo>=</mo><mn>1</mn><mo>-</mo><msub><mi>f</mi><mrow><mn>2</mn></mrow></msub> </mtd>
+ </mtr><mtr><mtd><msub><mi>E</mi><mrow><mn>2</mn></mrow></msub><mo>=</mo><mn>1</mn><mn>0</mn><msup><mi>Z</mi><mrow><mn>2</mn></mrow></msup><mi>eV </mi> </mtd><mtd><mo>&Rarr;</mo></mtd><mtd><msub><mi>E</mi><mrow><mn>1</mn></mrow></msub><mo>=</mo><msup><mfenced
+open='(' close=')'> <mfrac><mrow><mi>I</mi></mrow><!--___
+--><mrow><msubsup><mi>E</mi><mrow><mn>2</mn></mrow><mrow><msub><mi>f</mi><mrow><mn>2</mn></mrow></msub></mrow></msubsup></mrow></mfrac> </mfenced><mrow> <mfrac><mrow><mn>1</mn></mrow><!-- _
+--><mrow><msub><mi>f</mi><mrow><mn>1</mn></mrow></msub></mrow></mfrac> </mrow></msup></mtd>
+ </mtr><mtr><mtd><mi>r</mi><mo>=</mo><mn>0</mn><mo>.</mo><mn>4</mn> </mtd><mtd> </mtd><mtd> </mtd>
+ </mtr><mtr><mtd> </mtd></mtr></mtable>
+</mrow></math></displaymath> With these values
+the atomic level <inlinemath><math
+><msub><mi>E</mi><mrow><mn>2</mn></mrow></msub></math></inlinemath>
+corresponds approximately the K-shell energy of the atoms and
+<inlinemath><math
+><mi>Z</mi><msub><mi>f</mi><mrow><mn>2</mn></mrow></msub></math></inlinemath> the number of
+K-shell electrons. <inlinemath><math
+><mi>r</mi></math></inlinemath>
+is the only variable which can be tuned freely. It determines the relative contribution
+of ionisation and excitation to the energy loss.
+</par><par>The energy loss is computed with the assumption that the step length (or the relative
+energy loss) is small, and---in consequence---the cross-section can be considered
+constant along the path length. The energy loss due to the excitation is
+<equation ><math>
+ <mi>&Delta;</mi><msub><mi>E</mi><mrow><mi>e</mi></mrow></msub><mo>=</mo><msub><mi>n</mi><mrow><mn>1</mn></mrow></msub><msub><mi>E</mi><mrow><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>n</mi><mrow><mn>2</mn></mrow></msub><msub><mi>E</mi><mrow><mn>2</mn></mrow></msub> <mi>(</mi><mi>9</mi><mi>)</mi>
+</math></equation>where
+<inlinemath><math
+><msub><mi>n</mi><mrow><mn>1</mn></mrow></msub></math></inlinemath> and
+<inlinemath><math
+><msub><mi>n</mi><mrow><mn>2</mn></mrow></msub></math></inlinemath>
+are sampled from Poisson distribution as discussed above. The
+loss due to the ionisation can be generated from the distribution
+<inlinemath><math
+><mi>g</mi><mrow><mo>(</mo><mi>E</mi><mo>)</mo></mrow></math></inlinemath> by
+the inverse transformation method:
+
+ <eqnarray ><subeqn ><math><mi>u</mi><mo>=</mo><mi>F</mi><mrow><mo>(</mo><mi>E</mi><mo>)</mo></mrow> <mo>=</mo><msubsup> <mo>&int;</mo>
+ <mrow><mi>I</mi></mrow><mrow><mi>E</mi></mrow></msubsup><mi>g</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mi>d</mi><mi>x</mi> <mtext></mtext>
+ </math></subeqn><subeqn ><math>
+ </math></subeqn><subeqn ><math><mi>E</mi><mo>=</mo><msup><mi>F</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mrow><mo>(</mo><mi>u</mi><mo>)</mo></mrow> <mo>=</mo> <mfrac><mrow><mi>I</mi></mrow><!--____
+--><mrow><mn>1</mn><mo>-</mo><mi>u</mi> <mfrac><mrow><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub></mrow><!-- ___
+--><mrow><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub><mo>+</mo><mi>I</mi></mrow></mfrac> </mrow></mfrac> <mtext>(10)</mtext>
+ </math></subeqn><subeqn ><math>
+ </math></subeqn><subeqn ><math> <mtext>(11)</mtext>
+</math></subeqn></eqnarray>
+where <inlinemath><math
+><mi>u</mi></math></inlinemath> is a uniform random
+number between <inlinemath><math
+><mi>F</mi><mrow><mo>(</mo><mi>I</mi><mo>)</mo></mrow><mo>=</mo><mn>0</mn></math></inlinemath> and
+<inlinemath><math
+><mi>F</mi><mrow><mo>(</mo><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub><mo>+</mo><mi>I</mi><mo>)</mo></mrow><mo>=</mo><mn>1</mn></math></inlinemath>. The contribution from the
+ionisations will be <equation ><math>
+ <mi>&Delta;</mi><msub><mi>E</mi><mrow><mi>i</mi></mrow></msub><mo>=</mo><msubsup><mo>&sum;</mo>
+ <mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mrow><msub><mi>n</mi><mrow><mn>3</mn></mrow></msub></mrow></msubsup> <mfrac><mrow><mi>I</mi></mrow><!--________
+--><mrow><mn>1</mn><mo>-</mo><msub><mi>u</mi><mrow><mi>j</mi></mrow></msub> <mfrac><mrow><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub></mrow><!-- ___
+--><mrow><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub><mo>+</mo><mi>I</mi></mrow></mfrac> </mrow></mfrac> <mi>(</mi><mi>1</mi><mi>2</mi><mi>)</mi>
+</math></equation>where
+<inlinemath><math
+><msub><mi>n</mi><mrow><mn>3</mn></mrow></msub></math></inlinemath> is the
+number of ionisation (sampled from Poisson distribution). The energy loss in a step will
+then be <inlinemath><math
+><mi>&Delta;</mi><mi>E</mi><mo>=</mo><mi>&Delta;</mi><msub><mi>E</mi><mrow><mi>e</mi></mrow></msub><mo>+</mo><mi>&Delta;</mi><msub><mi>E</mi><mrow><mi>i</mi></mrow></msub></math></inlinemath>.
+</par>
+<subsection >
+<stitle>
+Fast simulation for <inlinemath><math
+><msub><mi>n</mi><mrow><mn>3</mn></mrow></msub><mo>&geq;</mo><mn>1</mn><mn>6</mn></math></inlinemath></stitle>
+<par>If the number of ionisation <inlinemath><math
+><msub><mi>n</mi><mrow><mn>3</mn></mrow></msub></math></inlinemath>
+is bigger than 16, a faster sampling method can be used. The possible energy loss
+interval is divided in two parts: one in which the number of collisions is large and the
+sampling can be done from a Gaussian distribution and the other in which
+the energy loss is sampled for each collision. Let us call the former interval
+<inlinemath><math
+><mrow><mo>[</mo><mi>I</mi><mo>,</mo><mi>&alpha;</mi><mi>I</mi><mo>]</mo></mrow></math></inlinemath> the interval A,
+and the latter <inlinemath><math
+><mrow><mo>[</mo><mi>&alpha;</mi><mi>I</mi><mo>,</mo><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub><mo>]</mo></mrow></math></inlinemath> the
+interval B. <inlinemath><math
+><mi>&alpha;</mi></math></inlinemath> lies
+between 1 and <inlinemath><math
+><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub><mo>/</mo><mi>I</mi></math></inlinemath>.
+A collision with a loss in the interval A happens with the probability
+<equation id="eq:phys332-5"><math>
+ <mi>P</mi><mrow><mo>(</mo><mi>&alpha;</mi><mo>)</mo></mrow><mo>=</mo><msubsup><mo>&int;</mo>
+ <mrow><mi>I</mi></mrow><mrow><mi>&alpha;</mi><mi>I</mi></mrow></msubsup><mi>g</mi><mrow><mo>(</mo><mi>E</mi><mo>)</mo></mrow><mi>d</mi><mi>E</mi><mo>=</mo><mfrac><mrow><mrow><mo>(</mo><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub><mo>+</mo><mi>I</mi><mo>)</mo></mrow><mrow><mo>(</mo><mi>&alpha;</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow><!--
+ --><mrow><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub><mi>&alpha;</mi></mrow></mfrac> <mi>(</mi><mi>1</mi><mi>3</mi><mi>)</mi>
+</math></equation>The
+mean energy loss and the standard deviation for this type of collision are
+<equation ><math>
+ <mrow><mo>&lt;</mo><mi>&Delta;</mi><mi>E</mi><mrow><mo>(</mo><mi>&alpha;</mi><mo>)</mo></mrow><mo>>;</mo></mrow><mo>=</mo> <mfrac><mrow><mn>1</mn></mrow><!--___
+--><mrow><mi>P</mi><mrow><mo>(</mo><mi>&alpha;</mi><mo>)</mo></mrow></mrow></mfrac><msubsup><mo>&int;</mo>
+ <mrow><mi>I</mi></mrow><mrow><mi>&alpha;</mi><mi>I</mi></mrow></msubsup><mi>E</mi><mi>g</mi><mrow><mo>(</mo><mi>E</mi><mo>)</mo></mrow><mi>d</mi><mi>E</mi><mo>=</mo><mfrac><mrow><mi>I</mi><mi>&alpha;</mi><mo>ln</mo><mi>&alpha;</mi></mrow><!--
+ --><mrow><mi>&alpha;</mi><mo>-</mo><mn>1</mn></mrow></mfrac> <mi>(</mi><mi>1</mi><mi>4</mi><mi>)</mi>
+</math></equation>and
+<equation ><math>
+ <msup><mi>&sigma;</mi><mrow><mn>2</mn></mrow></msup><mrow><mo>(</mo><mi>&alpha;</mi><mo>)</mo></mrow><mo>=</mo> <mfrac><mrow><mn>1</mn></mrow><!--___
+--><mrow><mi>P</mi><mrow><mo>(</mo><mi>&alpha;</mi><mo>)</mo></mrow></mrow></mfrac><msubsup><mo>&int;</mo>
+ <mrow><mi>I</mi></mrow><mrow><mi>&alpha;</mi><mi>I</mi></mrow></msubsup><msup><mi>E</mi><mrow><mn>2</mn></mrow></msup><mi>g</mi><mrow><mo>(</mo><mi>E</mi><mo>)</mo></mrow><mi>d</mi><mi>E</mi><mo>=</mo><msup><mi>I</mi><mrow><mn>2</mn></mrow></msup><mi>&alpha;</mi><mfenced
+open='(' close=')'><mn>1</mn><mo>-</mo> <mfrac><mrow><mi>&alpha;</mi><msup><mo>ln</mo><mrow><mn>2</mn></mrow></msup><mi>&alpha;</mi></mrow><!--_
+--><mrow><msup><mrow><mo>(</mo><mi>&alpha;</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mrow><mn>2</mn></mrow></msup></mrow></mfrac></mfenced> <mi>(</mi><mi>1</mi><mi>5</mi><mi>)</mi>
+</math></equation>If the
+collision number is high, we assume that the number of the type A collisions can be
+calculated from a Gaussian distribution with the following mean value and standard
+deviation:
+
+ <eqnarray ><subeqn id="eq:phys332-1"><math><mrow><mo>&lt;</mo><msub><mi>n</mi><mrow><mi>A</mi></mrow></msub><mo>>;</mo></mrow> <mo>=</mo> <msub><mi>n</mi><mrow><mn>3</mn></mrow></msub><mi>P</mi><mrow><mo>(</mo><mi>&alpha;</mi><mo>)</mo></mrow> <mtext>(16)</mtext>
+ </math></subeqn><subeqn ><math>
+ </math></subeqn><subeqn id="eq:phys332-2"><math><msubsup><mi>&sigma;</mi><mrow><mi>A</mi></mrow><mrow><mn>2</mn></mrow></msubsup> <mo>=</mo> <msub><mi>n</mi><mrow><mn>3</mn></mrow></msub><mi>P</mi><mrow><mo>(</mo><mi>&alpha;</mi><mo>)</mo></mrow><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>P</mi><mrow><mo>(</mo><mi>&alpha;</mi><mo>)</mo></mrow><mo>)</mo></mrow> <mtext>(17)</mtext>
+</math></subeqn></eqnarray>
+It is further assumed that the energy loss in these collisions has a Gaussian
+distribution with
+
+ <eqnarray ><subeqn id="eq:phys332-3"><math><mrow><mo>&lt;</mo><mi>&Delta;</mi><msub><mi>E</mi><mrow><mi>A</mi></mrow></msub><mo>>;</mo></mrow> <mo>=</mo> <msub><mi>n</mi><mrow><mi>A</mi></mrow></msub><mrow><mo>&lt;</mo><mi>&Delta;</mi><mi>E</mi><mrow><mo>(</mo><mi>&alpha;</mi><mo>)</mo></mrow><mo>>;</mo></mrow> <mtext>(18)</mtext>
+ </math></subeqn><subeqn ><math>
+ </math></subeqn><subeqn id="eq:phys332-4"><math><msubsup><mi>&sigma;</mi><mrow><mi>E</mi><mo>,</mo><mi>A</mi></mrow><mrow><mn>2</mn></mrow></msubsup> <mo>=</mo> <msub><mi>n</mi><mrow><mi>A</mi></mrow></msub><msup><mi>&sigma;</mi><mrow><mn>2</mn></mrow></msup><mrow><mo>(</mo><mi>&alpha;</mi><mo>)</mo></mrow> <mtext>(19)</mtext>
+</math></subeqn></eqnarray>
+The energy loss of these collision can then be sampled from the Gaussian
+distribution.
+</par><par>The collisions where the energy loss is in the interval B are sampled directly from
+<equation ><math>
+ <mi>&Delta;</mi><msub><mi>E</mi><mrow><mi>B</mi></mrow></msub><mo>=</mo><msubsup><mo>&sum;</mo>
+ <mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mrow><msub><mi>n</mi><mrow><mn>3</mn></mrow></msub><mo>-</mo><msub><mi>n</mi><mrow><mi>A</mi></mrow></msub></mrow></msubsup> <mfrac><mrow><mi>&alpha;</mi><mi>I</mi></mrow><!--_________
+--><mrow><mn>1</mn><mo>-</mo><msub><mi>u</mi><mrow><mi>i</mi></mrow></msub> <mfrac><mrow><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub><mo>+</mo><mi>I</mi><mo>-</mo><mi>&alpha;</mi><mi>I</mi></mrow><!--
+ --><mrow><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub><mo>+</mo><mi>I</mi></mrow></mfrac> </mrow></mfrac> <mi>(</mi><mi>2</mi><mi>0</mi><mi>)</mi>
+</math></equation>The
+total energy loss is the sum of these two types of collisions:
+<equation ><math>
+ <mi>&Delta;</mi><mi>E</mi><mo>=</mo><mi>&Delta;</mi><msub><mi>E</mi><mrow><mi>A</mi></mrow></msub><mo>+</mo><mi>&Delta;</mi><msub><mi>E</mi><mrow><mi>B</mi></mrow></msub> <mi>(</mi><mi>2</mi><mi>1</mi><mi>)</mi>
+</math></equation>
+</par><par>The approximation of equations (<ref refid="eq:phys332-1"/>), (<ref refid="eq:phys332-2"/>), (<ref refid="eq:phys332-3"/>) and (<ref refid="eq:phys332-4"/>) can be used under the following
+conditions:
+
+ <eqnarray ><subeqn id="eq:phys332-6"><math><mrow><mo>&lt;</mo><msub><mi>n</mi><mrow><mi>A</mi></mrow></msub><mo>>;</mo></mrow><mo>-</mo><mi>c</mi><msub><mi>&sigma;</mi><mrow><mi>A</mi></mrow></msub> <mo>&geq;</mo> <mn>0</mn> <mtext>(22)</mtext>
+ </math></subeqn><subeqn ><math>
+ </math></subeqn><subeqn id="eq:phys332-7"><math><mrow><mo>&lt;</mo><msub><mi>n</mi><mrow><mi>A</mi></mrow></msub><mo>>;</mo></mrow><mo>+</mo><mi>c</mi><msub><mi>&sigma;</mi><mrow><mi>A</mi></mrow></msub> <mo>&leq;</mo> <msub><mi>n</mi><mrow><mn>3</mn></mrow></msub> <mtext>(23)</mtext>
+ </math></subeqn><subeqn ><math>
+ </math></subeqn><subeqn id="eq:phys332-8"><math><mrow><mo>&lt;</mo><mi>&Delta;</mi><msub><mi>E</mi><mrow><mi>A</mi></mrow></msub><mo>>;</mo></mrow><mo>-</mo><mi>c</mi><msub><mi>&sigma;</mi><mrow><mi>E</mi><mo>,</mo><mi>A</mi></mrow></msub> <mo>&geq;</mo> <mn>0</mn> <mtext>(24)</mtext>
+</math></subeqn></eqnarray>
+where <inlinemath><math
+><mi>c</mi><mo>&geq;</mo><mn>4</mn></math></inlinemath>. From
+the equations (<ref refid="eq:phys332-5"/>), (<ref refid="eq:phys332-1"/>) and (<ref refid="eq:phys332-3"/>) and from the conditions (<ref refid="eq:phys332-6"/>) and (<ref refid="eq:phys332-7"/>) the following limits can be
+derived: <equation ><math>
+ <msub><mi>&alpha;</mi><mrow><mi>min</mi></mrow></msub><mo>=</mo><mfrac><mrow><mrow><mo>(</mo><msub><mi>n</mi><mrow><mn>3</mn></mrow></msub><mo>+</mo><msup><mi>c</mi><mrow><mn>2</mn></mrow></msup><mo>)</mo></mrow><mrow><mo>(</mo><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub><mo>+</mo><mi>I</mi><mo>)</mo></mrow></mrow><!--
+--><mrow><msub><mi>n</mi><mrow><mn>3</mn></mrow></msub><mrow><mo>(</mo><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub><mo>+</mo><mi>I</mi><mo>)</mo></mrow><mo>+</mo><msup><mi>c</mi><mrow><mn>2</mn></mrow></msup><mi>I</mi></mrow></mfrac> <mo>&leq;</mo><mi>&alpha;</mi><mo>&leq;</mo><msub><mi>&alpha;</mi><mrow><mi>max</mi></mrow></msub><mo>=</mo><mfrac><mrow><mrow><mo>(</mo><msub><mi>n</mi><mrow><mn>3</mn></mrow></msub><mo>+</mo><msup><mi>c</mi><mrow><mn>2</mn></mrow></msup><mo>)</mo></mrow><mrow><mo>(</mo><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub><mo>+</mo><mi>I</mi><mo>)</mo></mrow></mrow><!--
+--><mrow><msup><mi>c</mi><mrow><mn>2</mn></mrow></msup><mrow><mo>(</mo><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub><mo>+</mo><mi>I</mi><mo>)</mo></mrow><mo>+</mo><msub><mi>n</mi><mrow><mn>3</mn></mrow></msub><mi>I</mi></mrow></mfrac> <mi>(</mi><mi>2</mi><mi>5</mi><mi>)</mi>
+</math></equation>This
+conditions gives a lower limit to number of the ionisations
+<inlinemath><math
+><msub><mi>n</mi><mrow><mn>3</mn></mrow></msub></math></inlinemath> for which the fast
+sampling can be done: <equation ><math>
+ <msub><mi>n</mi><mrow><mn>3</mn></mrow></msub><mo>&geq;</mo><msup><mi>c</mi><mrow><mn>2</mn></mrow></msup> <mi>(</mi><mi>2</mi><mi>6</mi><mi>)</mi>
+</math></equation>As
+in the conditions (<ref refid="eq:phys332-6"/>), (<ref refid="eq:phys332-7"/>) and (<ref refid="eq:phys332-8"/>) the value of
+<inlinemath><math
+><mi>c</mi></math></inlinemath> is as minimum
+4, one gets <inlinemath><math
+><msub><mi>n</mi><mrow><mn>3</mn></mrow></msub><mo>&geq;</mo><mn>1</mn><mn>6</mn></math></inlinemath>.
+In order to speed the simulation, the maximum value is used for
+<inlinemath><math
+><mi>&alpha;</mi></math></inlinemath>.
+</par><par>The number of collisions with energy loss in the interval B (the number of interactions
+which has to be simulated directly) increases slowly with the total number of collisions
+<inlinemath><math
+><msub><mi>n</mi><mrow><mn>3</mn></mrow></msub></math></inlinemath>.
+The maximum number of these collisions can be estimated as
+<equation ><math>
+ <msub><mi>n</mi><mrow><mi>B</mi><mo>,</mo><mi>m</mi><mi>a</mi><mi>x</mi></mrow></msub><mo>=</mo><msub><mi>n</mi><mrow><mn>3</mn></mrow></msub><mo>-</mo><msub><mi>n</mi><mrow><mi>A</mi><mo>,</mo><mi>m</mi><mi>i</mi><mi>n</mi></mrow></msub><mo>&ap;</mo><msub><mi>n</mi><mrow><mn>3</mn></mrow></msub><mrow><mo>(</mo><mrow><mo>&lt;</mo><msub><mi>n</mi><mrow><mi>A</mi></mrow></msub><mo>>;</mo></mrow><mo>-</mo><msub><mi>&sigma;</mi><mrow><mi>A</mi></mrow></msub><mo>)</mo></mrow> <mi>(</mi><mi>2</mi><mi>7</mi><mi>)</mi>
+</math></equation>From the previous
+expressions for <inlinemath><math
+><mrow><mo>&lt;</mo><msub><mi>n</mi><mrow><mi>A</mi></mrow></msub><mo>>;</mo></mrow></math></inlinemath> and
+<inlinemath><math
+><msub><mi>&sigma;</mi><mrow><mi>A</mi></mrow></msub></math></inlinemath> one can derive the
+condition <equation ><math>
+ <msub><mi>n</mi><mrow><mi>B</mi></mrow></msub><mo>&leq;</mo><msub><mi>n</mi><mrow><mi>B</mi><mo>,</mo><mi>m</mi><mi>a</mi><mi>x</mi></mrow></msub><mo>=</mo> <mfrac><mrow><mn>2</mn><msub><mi>n</mi><mrow><mn>3</mn></mrow></msub><msup><mi>c</mi><mrow><mn>2</mn></mrow></msup></mrow><!--_
+--><mrow><msub><mi>n</mi><mrow><mn>3</mn></mrow></msub><mo>+</mo><msup><mi>c</mi><mrow><mn>2</mn></mrow></msup></mrow></mfrac> <mi>(</mi><mi>2</mi><mi>8</mi><mi>)</mi>
+</math></equation>The following
+values are obtained with <inlinemath><math
+><mi>c</mi><mo>=</mo><mn>4</mn></math></inlinemath>:
+</par><par><tabular preamble="llcrr"><row><cell
+><inlinemath><math
+><msub><mi>n</mi><mrow><mn>3</mn></mrow></msub></math></inlinemath></cell><cell
+><inlinemath><math
+><msub><mi>n</mi><mrow><mi>B</mi><mo>,</mo><mi>m</mi><mi>a</mi><mi>x</mi></mrow></msub></math></inlinemath></cell><cell
+></cell><cell
+><inlinemath><math
+><msub><mi>n</mi><mrow><mn>3</mn></mrow></msub></math></inlinemath></cell><cell
+><inlinemath><math
+><msub><mi>n</mi><mrow><mi>B</mi><mo>,</mo><mi>m</mi><mi>a</mi><mi>x</mi></mrow></msub></math></inlinemath></cell>
+</row><row><cell
+>16 </cell><cell
+>16 </cell><cell
+></cell><cell
+> 200</cell><cell
+> 29.63</cell>
+</row><row><cell
+>20 </cell><cell
+>17.78 </cell><cell
+></cell><cell
+> 500</cell><cell
+> 31.01</cell>
+</row><row><cell
+>50 </cell><cell
+>24.24 </cell><cell
+></cell><cell
+> 1000</cell><cell
+> 31.50</cell>
+</row><row><cell
+>100 </cell><cell
+>27.59 </cell><cell
+></cell><cell
+><inlinemath><math
+><mi>&infin;</mi></math></inlinemath></cell><cell
+> 32.00</cell>
+</row></tabular>
+</par>
+</subsection>
+<subsection >
+<stitle>
+Special sampling for lower part of the spectrum</stitle>
+<par>If the step length is very small (<inlinemath><math
+><mo>&leq;</mo><mn>5</mn></math></inlinemath>
+mm in gases, <inlinemath><math
+><mo>&leq;</mo></math></inlinemath>
+2-3 <inlinemath><math
+><mi>&mu;</mi></math></inlinemath>m in solids)
+the model gives 0 energy loss for some events. To avoid this, the probability of 0 energy loss is
+computed <equation ><math>
+ <mi>P</mi><mrow><mo>(</mo><mi>&Delta;</mi><mi>E</mi><mo>=</mo><mn>0</mn><mo>)</mo></mrow><mo>=</mo><msup><mi>e</mi><mrow><mo>-</mo><mrow><mo>(</mo><mrow><mo>&lt;</mo><msub><mi>n</mi><mrow><mn>1</mn></mrow></msub><mo>>;</mo></mrow><mo>+</mo><mrow><mo>&lt;</mo><msub><mi>n</mi><mrow><mn>2</mn></mrow></msub><mo>>;</mo></mrow><mo>+</mo><mrow><mo>&lt;</mo><msub><mi>n</mi><mrow><mn>3</mn></mrow></msub><mo>>;</mo></mrow><mo>)</mo></mrow></mrow></msup> <mi>(</mi><mi>2</mi><mi>9</mi><mi>)</mi>
+</math></equation>If the
+probability is bigger than 0.01 a special sampling is done, taking into account the fact that in
+these cases the projectile interacts only with the outer electrons of the atom. An energy level
+<inlinemath><math
+><msub><mi>E</mi><mrow><mn>0</mn></mrow></msub><mo>=</mo><mn>1</mn><mn>0</mn></math></inlinemath> eV is chosen
+to correspond to the outer electrons. The mean number of collisions can be calculated from
+<equation ><math>
+ <mrow><mo>&lt;</mo><mi>n</mi><mo>>;</mo></mrow><mo>=</mo> <mfrac><mrow><mn>1</mn></mrow><!--_
+--><mrow><msub><mi>E</mi><mrow><mn>0</mn></mrow></msub></mrow></mfrac> <mfrac><mrow><mi>d</mi><mi>E</mi></mrow><!--
+--><mrow><mi>d</mi><mi>x</mi></mrow></mfrac> <mi>&Delta;</mi><mi>x</mi> <mi>(</mi><mi>3</mi><mi>0</mi><mi>)</mi>
+</math></equation>The number
+of collisions <inlinemath><math
+><mi>n</mi></math></inlinemath>
+is sampled from Poisson distribution. In the case of the thin layers, all the
+collisions are considered as ionisations and the energy loss is computed as
+<equation ><math>
+ <mi>&Delta;</mi><mi>E</mi><mo>=</mo><msubsup><mo>&sum;</mo>
+ <mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>n</mi></mrow></msubsup> <mfrac><mrow><msub><mi>E</mi><mrow><mn>0</mn></mrow></msub></mrow><!--_________
+--><mrow><mn>1</mn><mo>-</mo> <mfrac><mrow><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub></mrow><!--_____
+--><mrow><msub><mi>E</mi><mrow><mi>max</mi></mrow></msub><mo>+</mo><msub><mi>E</mi><mrow><mn>0</mn></mrow></msub></mrow></mfrac> <msub><mi>u</mi><mrow><mi>i</mi></mrow></msub></mrow></mfrac> <mi>(</mi><mi>3</mi><mi>1</mi><mi>)</mi>
+</math></equation>
+</par>
+</subsection>
+</section>
+<section class="star">
+<stitle>
+References</stitle>
+<bibliography >
+<bibitem id="bib-LAND">
+<par>L.Landau.
+On
+the
+Energy
+Loss
+of
+Fast
+Particles
+by
+Ionisation.
+Originally
+published
+in
+<emph>J.
+Phys.</emph>,
+8:201,
+1944.
+Reprinted
+in
+D.ter
+Haar,
+Editor,
+<emph>L.D.Landau,
+Collected
+papers</emph>,
+page
+417.
+Pergamon
+Press,
+Oxford,
+1965.
+</par></bibitem>
+<bibitem id="bib-SCH1">
+<par>B.Schorr.
+Programs
+for
+the
+Landau
+and
+the
+Vavilov
+distributions
+and
+the
+corresponding
+random
+numbers.
+<emph>Comp.
+Phys.
+Comm.</emph>,
+7:216,
+1974.
+</par></bibitem>
+<bibitem id="bib-SELT">
+<par>S.M.Seltzer
+and
+M.J.Berger.
+Energy
+loss
+straggling
+of
+protons
+and
+mesons.
+In
+<emph>Studies
+in
+Penetration
+of
+Charged
+Particles
+in
+Matter</emph>,
+Nuclear
+Science
+Series 39,
+Nat.
+Academy
+of
+Sciences,
+Washington
+DC,
+1964.
+</par></bibitem>
+<bibitem id="bib-TALM">
+<par>R.Talman.
+On
+the
+statistics
+of
+particle
+identification
+using
+ionization.
+<emph>Nucl.
+Inst.
+Meth.</emph>,
+159:189,
+1979.
+</par></bibitem>
+<bibitem id="bib-VAVI">
+<par>P.V.Vavilov.
+Ionisation
+losses
+of
+high
+energy
+heavy
+particles.
+<emph>Soviet
+Physics
+JETP</emph>,
+5:749,
+1957.</par></bibitem></bibliography>
+</section>
+</bodymatter></document>
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa.dtd b/Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa.dtd
new file mode 100644
index 00000000000..53857510041
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa.dtd
@@ -0,0 +1,190 @@
+<!-- latex.dtd: XML version of LaTeX + MathML -->
+
+<!ENTITY % fontchange "emph|textit|textbf|textsf|textsl|texttt" >
+<!ENTITY % misc "url|quad|hspace|vspace|includegraphics|footnote|tag|ent">
+<!ENTITY % xref "ref|cite|pageref">
+<!ENTITY % chunk "lalist|par|tabular|figure|table|align|bibliography">
+<!ENTITY % mathobj "displaymath|inlinemath|equation|eqnarray" >
+<!ENTITY % inline "#PCDATA|%fontchange;|%chunk;|%misc;|%xref;|%mathobj;">
+
+<!ELEMENT document (frontmatter?,bodymatter)>
+<!ATTLIST document class CDATA "article">
+
+<!ELEMENT frontmatter (title,author,date?,abstract?,keywords?)>
+<!ELEMENT bodymatter ((par|section)*,appendix*)>
+
+<!-- front matter -->
+<!ELEMENT title (%inline;)*>
+<!ELEMENT author (%inline;)*>
+<!ELEMENT date (#PCDATA)>
+
+<!-- structuring -->
+<!ELEMENT section (stitle,(%chunk;|subsection)*)>
+<!ATTLIST section
+ class CDATA #IMPLIED
+ id ID #IMPLIED>
+<!ELEMENT subsection (stitle,(%chunk;|paragraph)*)>
+<!ATTLIST subsection
+ class CDATA #IMPLIED
+ id ID #IMPLIED>
+<!ELEMENT paragraph (stitle,(%chunk;|subparagraph)*)>
+<!ATTLIST paragraph
+ class CDATA #IMPLIED
+ id ID #IMPLIED>
+<!ELEMENT subparagraph (stitle,(%chunk;)*)>
+<!ATTLIST subparagraph
+ class CDATA #IMPLIED
+ id ID #IMPLIED>
+<!ELEMENT stitle (%inline;)*>
+
+<!-- font changes -->
+<!ELEMENT emph (%inline;)*>
+<!ELEMENT textit (%inline;)*>
+<!ELEMENT textbf (%inline;)*>
+<!ELEMENT textsf (%inline;)*>
+<!ELEMENT textsl (%inline;)*>
+<!ELEMENT texttt (%inline;)*>
+
+<!-- lists -->
+<!ELEMENT lalist (item)*>
+<!ATTLIST lalist
+ id ID #IMPLIED
+ class (enumerate|itemize|description) #REQUIRED>
+<!ELEMENT item (%inline;)*>
+
+<!-- bibliography -->
+<!ELEMENT bibliography (bibitem)*>
+<!ELEMENT bibitem (%inline;)*>
+<!ATTLIST bibitem
+ id ID #REQUIRED>
+
+<!-- floats -->
+<!ELEMENT table (%chunk;|caption|includegraphics)*>
+<!ELEMENT figure (%chunk;|caption|includegraphics)*>
+<!ELEMENT caption (%inline;)*>
+<!ATTLIST caption
+ id ID #IMPLIED>
+<!ELEMENT includegraphics EMPTY>
+<!ATTLIST includegraphics
+ width CDATA #IMPLIED
+ height CDATA #IMPLIED
+ scale CDATA #IMPLIED
+ file CDATA #IMPLIED>
+
+<!-- tables -->
+<!ELEMENT tabular (hline|row)*>
+<!ATTLIST tabular
+ preamble CDATA #REQUIRED>
+<!ELEMENT row (cell)*>
+<!ELEMENT hline EMPTY>
+<!ELEMENT cell (%inline;)*>
+<!ELEMENT newline EMPTY>
+<!ATTLIST newline
+ id ID #IMPLIED>
+
+<!-- low-level bits and pieces -->
+<!ELEMENT align (%inline;)*>
+<!ATTLIST align
+ style CDATA #REQUIRED>
+<!ELEMENT url EMPTY>
+<!ATTLIST url
+ name CDATA #REQUIRED>
+<!ELEMENT par (%inline;)*>
+<!ELEMENT quad EMPTY>
+<!ELEMENT hspace EMPTY>
+<!ATTLIST hspace
+ dim CDATA #REQUIRED>
+<!ELEMENT vspace EMPTY>
+<!ATTLIST vspace
+ dim CDATA #REQUIRED>
+<!ELEMENT tag (#PCDATA)>
+<!ELEMENT ent EMPTY>
+<!ATTLIST ent
+ value CDATA #REQUIRED
+ name CDATA #REQUIRED>
+
+<!-- cross-refs -->
+<!ELEMENT cite EMPTY>
+<!ATTLIST cite
+ refid IDREF #REQUIRED>
+<!ELEMENT ref EMPTY>
+<!ATTLIST ref
+ refid IDREF #REQUIRED>
+
+<!-- maths. must reduce to <math> elements for MathML -->
+<!ELEMENT equation (math)*>
+<!ATTLIST equation
+ id ID #IMPLIED>
+<!ELEMENT displaymath (math)*>
+<!ELEMENT inlinemath (math)*>
+<!ELEMENT subeqn (math)*>
+<!ATTLIST subeqn
+ id ID #IMPLIED>
+<!ELEMENT eqnarray (subeqn)*>
+<!ATTLIST eqnarray
+ number (yes|no) "yes"
+ id ID #IMPLIED>
+
+<!-- sub DTDs and entities -->
+<!--Added Math Symbols: Arrows-->
+<!ENTITY % isoamsae.dtd SYSTEM "isoamsae.dtd">
+
+<!--Added Math Symbols: Binary Operators-->
+<!ENTITY % isoamsbe.dtd SYSTEM "isoamsbe.dtd">
+
+<!--Added Math Symbols: Delimiters-->
+<!ENTITY % isoamsce.dtd SYSTEM "isoamsce.dtd">
+
+<!--Added Math Symbols: Negated Relations-->
+<!ENTITY % isoamsne.dtd SYSTEM "isoamsne.dtd">
+
+<!--Added Math Symbols: Ordinary-->
+<!ENTITY % isoamsoe.dtd SYSTEM "isoamsoe.dtd">
+
+<!--Added Math Symbols: Relations-->
+<!ENTITY % isoamsre.dtd SYSTEM "isoamsre.dtd">
+
+<!--General Technical-->
+<!ENTITY % isoteche.dtd SYSTEM "isoteche.dtd">
+
+<!--Numbers and Currency symbols-->
+<!ENTITY % isonume.dtd SYSTEM "isonume.dtd">
+
+<!--MathML Aliases (From ISO PUB,DIA,NUM)-->
+<!ENTITY % mmaliase.dtd SYSTEM "mmaliase.dtd">
+
+<!--Greek Symbols-->
+<!ENTITY % isogrk3e.dtd SYSTEM "isogrk3e.dtd">
+
+<!--Math Script Font-->
+<!ENTITY % isomscre.dtd SYSTEM "isomscre.dtd">
+
+<!--Math Open Face Font-->
+<!ENTITY % isomopfe.dtd SYSTEM "isomopfe.dtd">
+
+<!--MathML Entities-->
+<!ENTITY % mmlent.dtd SYSTEM "mmlent.dtd">
+
+<!--Main MathML DTD -->
+<!ENTITY % mathml.dtd SYSTEM "mathml.dtd">
+
+%mathml.dtd;
+%isoamsae.dtd;
+%isoamsbe.dtd;
+%isoamsce.dtd;
+%isoamsne.dtd;
+%isoamsoe.dtd;
+%isoamsre.dtd;
+%isoteche.dtd;
+%isonume.dtd;
+%mmaliase.dtd;
+%isogrk3e.dtd;
+%isomscre.dtd;
+%isomopfe.dtd;
+%mmlent.dtd;
+<!ENTITY aacute "&#x00E1;">
+<!ENTITY OverBar "[OverBar]">
+<!ENTITY negationslash "/">
+
+
+<!-- end of latex.dtd -->
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa.ltx b/Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa.ltx
new file mode 100644
index 00000000000..2e334aa4cc5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa.ltx
@@ -0,0 +1,109 @@
+\documentclass{article}
+\usepackage{graphicx}
+\usepackage{url}
+\title{Simulation of Energy Loss Straggling}
+\author{Maria Physicist}
+\newcommand{\Emax}{\ensuremath{E_{\mathrm{max}}}}
+\newcommand{\GEANT}{\texttt{GEANT}}
+\begin{document}
+\maketitle
+
+\section{Introduction}
+
+Due to the statistical nature of ionisation energy loss, large
+fluctuations can occur in the amount of energy deposited by a particle
+traversing an absorber element. Continuous processes such as multiple
+scattering and energy loss play a relevant role in the longitudinal
+and lateral development of electromagnetic and hadronic
+showers, and in the case of sampling calorimeters the
+measured resolution can be significantly affected by such fluctuations
+in their active layers. The description of ionisation fluctuations is
+characterised by the significance parameter $\kappa$, which is
+proportional to the ratio of mean energy loss to the maximum allowed
+energy transfer in a single collision with an atomic electron
+\[
+\kappa =\frac{\xi}{\Emax}
+\]
+\Emax{}
+is the maximum transferable energy in a single collision with
+an atomic electron.
+
+.......
+
+\section{Vavilov theory}
+\label{vavref}
+
+Vavilov\cite{bib-VAVI} derived a more accurate straggling distribution
+by introducing the kinematic limit on the maximum transferable energy
+in a single collision, rather than using $ \Emax = \infty $.
+Now we can write\cite{bib-SCH1}:
+\begin{eqnarray*}
+f \left ( \epsilon, \delta s \right ) & = & \frac{1}{\xi} \phi_{v}
+\left ( \lambda_{v}, \kappa, \beta^{2} \right )
+\end{eqnarray*}
+where
+\begin{eqnarray*}
+\phi_{v} \left ( \lambda_{v}, \kappa, \beta^{2} \right ) & = &
+\frac{1}{2 \pi i} \int^{c+i\infty}_{c-i\infty}\phi \left( s \right )
+e^{\lambda s} ds \hspace{2cm} c \geq 0 \\
+\phi \left ( s \right ) & = &
+\exp \left [ \kappa ( 1 + \beta^{2}\gamma ) \right ]
+~ \exp \left [ \psi \left ( s \right ) \right ], \\
+\psi \left ( s \right ) & = & s \ln \kappa + ( s + \beta^{2} \kappa )
+\left [ \ln (s/\kappa) + E_{1} (s/\kappa) \right ] - \kappa e^{-s/\kappa},
+\end{eqnarray*}
+and
+\begin{eqnarray*}
+E_{1}(z) & = & \int^{\infty}_{z} t^{-1} e^{-t} dt
+\mbox{\hspace{1cm} (the exponential integral)} \\
+\lambda_v & = & \kappa \left [ \frac{\epsilon - \bar{\epsilon}}{\xi}
+- \gamma' - \beta^2 \right]
+\end{eqnarray*}
+
+The Vavilov parameters are simply related to the Landau parameter by
+$\lambda_L = \lambda_v/\kappa - \ln\kappa $. It can be shown that as
+$\kappa \rightarrow 0$, the distribution of the variable $\lambda_L$
+approaches that of Landau. For $\kappa \leq 0.01$ the two
+distributions are already practically identical. Contrary to what many
+textbooks report, the Vavilov distribution \emph{does not} approximate
+the Landau distribution for small $\kappa$, but rather the
+distribution of $\lambda_L$ defined above tends to the distribution of
+the true $\lambda$ from the Landau density function. Thus the routine
+\texttt{GVAVIV} samples the variable $\lambda_L$ rather than
+$\lambda_v$. For $\kappa \geq 10$ the Vavilov distribution tends to a
+Gaussian distribution (see next section).
+....
+
+\begin{thebibliography}{10}
+\bibitem{bib-LAND}
+L.Landau.
+\newblock On the Energy Loss of Fast Particles by Ionisation.
+\newblock Originally published in \emph{J. Phys.}, 8:201, 1944.
+\newblock Reprinted in D.ter Haar, Editor, \emph{L.D.Landau, Collected
+ papers}, page 417. Pergamon Press, Oxford, 1965.
+
+\bibitem{bib-SCH1}
+B.Schorr.
+\newblock Programs for the Landau and the Vavilov distributions and the
+ corresponding random numbers.
+\newblock \emph{Comp. Phys. Comm.}, 7:216, 1974.
+
+\bibitem{bib-SELT}
+S.M.Seltzer and M.J.Berger.
+\newblock Energy loss straggling of protons and mesons.
+\newblock In \emph{Studies in Penetration of Charged Particles in
+ Matter}, Nuclear Science Series~39, Nat. Academy of Sciences,
+ Washington DC, 1964.
+
+\bibitem{bib-TALM}
+R.Talman.
+\newblock On the statistics of particle identification using ionization.
+\newblock \emph{Nucl. Inst. Meth.}, 159:189, 1979.
+
+\bibitem{bib-VAVI}
+P.V.Vavilov.
+\newblock Ionisation losses of high energy heavy particles.
+\newblock \emph{Soviet Physics JETP}, 5:749, 1957.
+\end{thebibliography}
+
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa.tex b/Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa.tex
new file mode 100644
index 00000000000..50a0b576332
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa.tex
@@ -0,0 +1,546 @@
+%% version September 23 Sep 1998
+\documentclass{article}
+\usepackage{graphicx}
+\usepackage{url}
+\title{Simulation of Energy Loss Straggling}
+\author{Maria Physicist}
+\newcommand{\Emax}{\ensuremath{E_{\mathrm{max}}}}
+\newcommand{\GEANT}{\texttt{GEANT}}
+\begin{document}
+\maketitle
+
+\section{Introduction}
+
+Due to the statistical nature of ionisation energy loss, large
+fluctuations can occur in the amount of energy deposited by a particle
+traversing an absorber element. Continuous processes such as multiple
+scattering and energy loss play a relevant role in the longitudinal
+and lateral development of electromagnetic and hadronic
+showers, and in the case of sampling calorimeters the
+measured resolution can be significantly affected by such fluctuations
+in their active layers. The description of ionisation fluctuations is
+characterised by the significance parameter $\kappa$, which is
+proportional to the ratio of mean energy loss to the maximum allowed
+energy transfer in a single collision with an atomic electron
+\[
+\kappa =\frac{\xi}{\Emax}
+\]
+\Emax{}
+is the maximum transferable energy in a single collision with
+an atomic electron.
+\[
+\Emax =\frac{2 m_e \beta^2\gamma^2 }
+{1 + 2\gamma m_e/m_x + \left ( m_e/m_x\right)^2},
+\]
+where $\gamma = E/m_x$, $E$ is energy and
+$m_x$ the mass of the incident particle,
+$\beta^2 = 1 - 1/\gamma^2$ and $m_e$ is the electron mass.
+$\xi$ comes from the Rutherford scattering cross section
+and is defined as:
+\begin{eqnarray*} \xi = \frac{2\pi z^2 e^4 N_{Av} Z \rho \delta x}
+ {m_e \beta^2 c^2 A} = 153.4 \frac{z^2} {\beta^2} \frac{Z}{A}
+ \rho \delta x \quad\mathrm{keV},
+\end{eqnarray*}
+where
+
+\begin{tabular}{ll}
+$z$ & charge of the incident particle \\
+$N_{Av}$ & Avogadro's number \\
+$Z$ & atomic number of the material \\
+$A$ & atomic weight of the material \\
+$\rho$ & density \\
+$ \delta x$ & thickness of the material \\
+\end{tabular}
+
+$\kappa$ measures the contribution of the collisions with energy
+transfer close to \Emax. For a given absorber, $\kappa$ tends
+towards large values if $\delta x$ is large and/or if $\beta$ is
+small. Likewise, $\kappa$ tends towards zero if $\delta x $ is small
+and/or if $\beta$ approaches 1.
+
+The value of $\kappa$ distinguishes two regimes which occur in the
+description of ionisation fluctuations:
+
+\begin{enumerate}
+\item A large number of collisions involving the loss of all or most
+ of the incident particle energy during the traversal of an absorber.
+
+ As the total energy transfer is composed of a multitude of small
+ energy losses, we can apply the central limit theorem and describe
+ the fluctuations by a Gaussian distribution. This case is
+ applicable to non-relativistic particles and is described by the
+ inequality $\kappa > 10 $ (i.e. when the mean energy loss in the
+ absorber is greater than the maximum energy transfer in a single
+ collision).
+
+\item Particles traversing thin counters and incident electrons under
+ any conditions.
+
+ The relevant inequalities and distributions are $ 0.01 < \kappa < 10
+ $, Vavilov distribution, and $\kappa < 0.01 $, Landau distribution.
+\end{enumerate}
+
+An additional regime is defined by the contribution of the collisions
+with low energy transfer which can be estimated with the relation
+$\xi/I_0$, where $I_0$ is the mean ionisation potential of the atom.
+Landau theory assumes that the number of these collisions is high, and
+consequently, it has a restriction $\xi/I_0 \gg 1$. In \GEANT{}
+(see URL \url{http://wwwinfo.cern.ch/asdoc/geant/geantall.html}), the
+limit of Landau theory has been set at $\xi/I_0 = 50$. Below this
+limit special models taking into account the atomic structure of the
+material are used. This is important in thin layers and gaseous
+materials. Figure \ref{fg:phys332-1} shows the behaviour of $\xi/I_0$
+as a function of the layer thickness for an electron of 100 keV and 1
+GeV of kinetic energy in Argon, Silicon and Uranium.
+
+\begin{figure}
+ \centering
+ \includegraphics[width=.6\linewidth]{phys332-1}
+ \caption{The variable $\xi/I_0$ can be used to measure the
+ validity range of the Landau theory. It depends
+ on the type and energy of the particle, $Z$, $A$
+ and the ionisation potential of the material and
+ the layer thickness.
+ }
+ \label{fg:phys332-1}
+\end{figure}
+
+In the following sections, the different theories and models for the
+energy loss fluctuation are described. First, the Landau theory and
+its limitations are discussed, and then, the Vavilov and Gaussian
+straggling functions and the methods in the thin layers and gaseous
+materials are presented.
+
+\section{Landau theory}
+\label{sec:phys332-1}
+
+For a particle of mass $m_x$ traversing a thickness of material
+$\delta x $, the Landau probability distribution may be written in
+terms of the universal Landau function $\phi(\lambda)$
+as\cite{bib-LAND}:
+\begin{eqnarray*}
+f( \epsilon , \delta x ) & = &\frac{1}{\xi} \phi ( \lambda )
+\end{eqnarray*}
+where
+\begin{eqnarray*}
+\phi(\lambda )& = & \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+\exp \left ( u \ln u + \lambda u \right ) du \hspace{2cm} c \geq 0 \\
+\lambda & = & \frac{\epsilon -\bar{\epsilon} }{\xi}
+ - \gamma' - \beta^2 - \ln \frac{\xi}{\Emax} \\
+\gamma' & = & 0.422784\dots = 1 - \gamma \\
+\gamma & = & 0.577215\dots \mbox{(Euler's constant)} \\
+\bar{\epsilon} & = & \mbox{average energy loss} \\
+\epsilon & = & \mbox{actual energy loss}
+\end{eqnarray*}
+
+\subsection{Restrictions}
+
+The Landau formalism makes two restrictive assumptions:
+\begin{enumerate}
+\item The typical energy loss is small compared to the maximum energy
+ loss in a single collision. This restriction is removed in the
+ Vavilov theory (see section \ref{vavref}).
+\item The typical energy loss in the absorber should be large compared
+ to the binding energy of the most tightly bound electron. For
+ gaseous detectors, typical energy losses are a few keV which is
+ comparable to the binding energies of the inner electrons. In such
+ cases a more sophisticated approach which accounts for atomic energy
+ levels\cite{bib-TALM} is necessary to accurately simulate data
+ distributions. In \GEANT, a parameterised model by L. Urb\'{a}n is
+ used (see section \ref{urban}).
+\end{enumerate}
+
+In addition, the average value of the Landau distribution is infinite.
+Summing the Landau fluctuation obtained to the average energy from the
+$dE/dx$ tables, we obtain a value which is larger than the one coming
+from the table. The probability to sample a large value is small, so
+it takes a large number of steps (extractions) for the average
+fluctuation to be significantly larger than zero. This introduces a
+dependence of the energy loss on the step size which can affect
+calculations.
+
+A solution to this has been to introduce a limit on the value of the
+variable sampled by the Landau distribution in order to keep the
+average fluctuation to 0. The value obtained from the \texttt{GLANDO}
+routine is:
+\[
+\delta dE/dx = \epsilon - \bar{\epsilon} = \xi ( \lambda - \gamma'
++\beta^2 +\ln \frac{\xi}{\Emax})
+\]
+In order for this to have average 0, we must impose that:
+\[
+\bar{\lambda} = -\gamma' - \beta^2 -\ln \frac{\xi}{\Emax}
+\]
+
+This is realised introducing a $\lambda_{\mathrm{max}}(\bar{\lambda})$
+such that if only values of $\lambda \leq \lambda_{\mathrm{max}}$ are
+accepted, the average value of the distribution is $\bar{\lambda}$.
+
+A parametric fit to the universal Landau distribution has been
+performed, with following result:
+\[
+\lambda_{\mathrm{max}} = 0.60715 +
+ 1.1934\bar{\lambda}+(0.67794+0.052382\bar{\lambda})
+ \exp(0.94753+0.74442\bar{\lambda})
+\]
+only values smaller than $\lambda_{\mathrm{max}}$ are accepted, otherwise the
+distribution is resampled.
+
+
+
+\section{Vavilov theory}
+\label{vavref}
+
+Vavilov\cite{bib-VAVI} derived a more accurate straggling distribution
+by introducing the kinematic limit on the maximum transferable energy
+in a single collision, rather than using $ \Emax = \infty $.
+Now we can write\cite{bib-SCH1}:
+\begin{eqnarray*}
+f \left ( \epsilon, \delta s \right ) & = & \frac{1}{\xi} \phi_{v}
+\left ( \lambda_{v}, \kappa, \beta^{2} \right )
+\end{eqnarray*}
+where
+\begin{eqnarray*}
+\phi_{v} \left ( \lambda_{v}, \kappa, \beta^{2} \right ) & = &
+\frac{1}{2 \pi i} \int^{c+i\infty}_{c-i\infty}\phi \left( s \right )
+e^{\lambda s} ds \hspace{2cm} c \geq 0 \\
+\phi \left ( s \right ) & = &
+\exp \left [ \kappa ( 1 + \beta^{2}\gamma ) \right ]
+~ \exp \left [ \psi \left ( s \right ) \right ], \\
+\psi \left ( s \right ) & = & s \ln \kappa + ( s + \beta^{2} \kappa )
+\left [ \ln (s/\kappa) + E_{1} (s/\kappa) \right ] - \kappa e^{-s/\kappa},
+\end{eqnarray*}
+and
+\begin{eqnarray*}
+E_{1}(z) & = & \int^{\infty}_{z} t^{-1} e^{-t} dt
+\mbox{\hspace{1cm} (the exponential integral)} \\
+\lambda_v & = & \kappa \left [ \frac{\epsilon - \bar{\epsilon}}{\xi}
+- \gamma' - \beta^2 \right]
+\end{eqnarray*}
+
+The Vavilov parameters are simply related to the Landau parameter by
+$\lambda_L = \lambda_v/\kappa - \ln\kappa $. It can be shown that as
+$\kappa \rightarrow 0$, the distribution of the variable $\lambda_L$
+approaches that of Landau. For $\kappa \leq 0.01$ the two
+distributions are already practically identical. Contrary to what many
+textbooks report, the Vavilov distribution \emph{does not} approximate
+the Landau distribution for small $\kappa$, but rather the
+distribution of $\lambda_L$ defined above tends to the distribution of
+the true $\lambda$ from the Landau density function. Thus the routine
+\texttt{GVAVIV} samples the variable $\lambda_L$ rather than
+$\lambda_v$. For $\kappa \geq 10$ the Vavilov distribution tends to a
+Gaussian distribution (see next section).
+
+\section{Gaussian Theory}
+
+Various conflicting forms have been proposed for Gaussian straggling
+functions, but most of these appear to have little theoretical or
+experimental basis. However, it has been shown\cite{bib-SELT} that
+for $\kappa \geq 10 $ the Vavilov distribution can be replaced by a
+Gaussian of the form:
+\begin{eqnarray*}
+f( \epsilon , \delta s) \approx \frac{1}
+{\xi \sqrt{\frac{2 \pi}{\kappa} \left( 1 - \beta^2/2 \right)}}
+ \exp \left [ \frac{( \epsilon - \bar{\epsilon} )^2}{2} \frac{\kappa}
+ {\xi^2 (1- \beta^2/2)}\right ]
+\end{eqnarray*}
+thus implying
+\begin{eqnarray*}
+\mathrm{mean} & = & \bar{\epsilon} \\
+\sigma^2 & = & \frac{\xi^2}{\kappa} (1-\beta^2/2) = \xi
+ \Emax (1-\beta^2/2)
+\end{eqnarray*}
+
+\section{Urb\'an model}
+\label{urban}
+
+The method for computing restricted energy losses with $\delta$-ray
+production above given threshold energy in \GEANT{} is a Monte
+Carlo method that can be used for thin layers. It is fast and it can
+be used for any thickness of a medium. Approaching the limit of the
+validity of Landau's theory, the loss distribution approaches smoothly
+the Landau form as shown in Figure \ref{fg:phys332-2}.
+\begin{figure}
+ \centering
+ \includegraphics[width=.6\linewidth]{phys332-2}
+ \caption{Energy loss distribution for a 3 GeV electron in
+ Argon as given by standard \GEANT. The width of the layers is
+ given in centimeters.}
+ \label{fg:phys332-2}
+\end{figure}
+
+It is assumed that the atoms have only two energy levels with binding
+energy $E_1$ and $E_2$. The particle--atom interaction will then be
+an excitation with energy loss $E_1$ or $E_2$, or an ionisation with
+an energy loss distributed according to a function $g(E) \sim 1/E^2$:
+\begin{equation}
+g(E) = \frac{(\Emax + I)I}{\Emax} \frac{1}{E^2}
+\end{equation}
+
+The macroscopic cross-section for excitations ($i=1,2$) is
+\begin{equation}
+\label{eq:sigex}
+\Sigma_i = C \frac{f_i}{E_i} \frac{\ln (2 m \beta^2 \gamma^2/E_i) - \beta^2}
+ {\ln (2 m \beta^2 \gamma^2/ I) - \beta^2}(1-r)
+\end{equation}
+and the macroscopic cross-section for ionisation is
+\begin{equation}
+\label{eq:sigion}
+\Sigma_3 = C \frac{\Emax}{I(\Emax+I) \ln(\frac{\Emax+I}{I})}
+ ~ r
+\end{equation}
+\Emax{} is the \GEANT{} cut for $\delta$-production, or the maximum
+energy transfer minus mean ionisation energy, if it is smaller than
+this cut-off value. The following notation is used:
+
+\begin{tabular}{ll}
+$r, C$ & parameters of the model \\
+$E_i$ & atomic energy levels \\
+$I$ & mean ionisation energy \\
+${f_i}$ & oscillator strengths
+\end{tabular}
+
+The model has the parameters $f_i$, $E_i$, $C$ and $r ~(0\leq r\leq
+1)$. The oscillator strengths $f_i$ and the atomic level energies
+$E_i$ should satisfy the constraints
+\begin{eqnarray}
+f_1 + f_2 & = & 1 \label{eq:fisum}\\
+f_1 \ln E_1 + f_2 \ln E_2 & = & \ln I \label{eq:flnsum}
+\end{eqnarray}
+The parameter $C$ can be defined with the help of the mean energy loss
+$dE/dx$ in the following way: The numbers of collisions ($n_i$, i =
+1,2 for the excitation and 3 for the ionisation) follow the Poisson
+distribution with a mean number $ \langle n_i \rangle $. In a step
+$\Delta x$ the mean number of collisions is
+\begin{equation}
+\langle n_i \rangle = \Sigma_i \Delta x
+\end{equation}
+The mean energy loss $dE/dx$ in a step is the sum of the excitation
+and ionisation contributions
+\begin{equation}
+\frac{dE}{dx} \Delta x = \left[ \Sigma_1 E_1 + \Sigma_2 E_2 +
+ \Sigma_3 \int_{I}^{\Emax+I} E~g(E)~dE \right]
+ \Delta x
+\end{equation}
+From this, using the equations (\ref{eq:sigex}), (\ref{eq:sigion}),
+(\ref{eq:fisum}) and (\ref{eq:flnsum}), one can define the parameter
+$C$
+\begin{equation}
+C = \frac{dE}{dx}
+\end{equation}
+
+The following values have been chosen in \GEANT{} for the other
+parameters:
+\[
+\begin{array}{lcl}
+f_2 = \left\{ \begin{array}{ll}
+ 0 & \mathrm{if}\, Z \leq 2 \\
+ 2/Z & \mathrm{if}\, Z > 2 \\
+ \end{array} \right. & \Rightarrow & f_1 = 1 - f_2 \\
+E_2 = 10 Z^2 \mathrm{eV} & \Rightarrow & E_1 = \left(\frac{I}{E_{2}^{f_2}}
+ \right)^{\frac{1}{f_1}} \\
+r = 0.4 & & \\
+\end{array}
+\]
+With these values the atomic level $E_2$ corresponds approximately
+the K-shell energy of the atoms and $Zf_2$ the number of K-shell
+electrons. $r$ is the only variable which can be tuned freely. It
+determines the relative contribution of ionisation and
+excitation to the energy loss.
+
+The energy loss is computed with the assumption that the step length
+(or the relative energy loss) is small, and---in consequence---the
+cross-section can be considered constant along the path length. The
+energy loss due to the excitation is
+\begin{equation}
+\Delta E_e = n_1 E_1 + n_2 E_2
+\end{equation}
+where $n_1$ and $n_2$ are sampled from Poisson distribution as
+discussed above. The loss due to the ionisation can be generated from
+the distribution $g(E)$ by the inverse transformation method:
+\begin{eqnarray}
+u = F(E) & = & \int_{I}^E g(x) dx \nonumber \\
+E = F^{-1}(u) & = & \frac{I}{1 - u \frac {\Emax}{\Emax+I}} \\
+\end{eqnarray}
+where $u$ is a uniform random number between $F(I)=0$ and
+$F(\Emax+I)=1$. The contribution from the ionisations will be
+\begin{equation}
+\Delta E_i = \sum_{j=1}^{n_3} \frac{I}
+ {1 - u_j \frac {\Emax}{\Emax + I}}
+\end{equation}
+where $n_3$ is the number of ionisation (sampled from Poisson
+distribution). The energy loss in a step will then be $\Delta E =
+\Delta E_e + \Delta E_i$.
+
+\subsection{Fast simulation for $n_3 \geq 16$}
+
+If the number of ionisation $n_3$ is bigger than 16, a faster sampling
+method can be used. The possible energy loss interval is divided in
+two parts: one in which the number of collisions is large and the
+sampling can be done from a Gaussian distribution and the other in
+which the energy loss is sampled for each collision. Let us call the
+former interval $[I, \alpha I]$ the interval A, and the latter
+$[\alpha I,\Emax]$ the interval B. $\alpha$ lies between 1 and
+$\Emax/I$. A collision with a loss in the interval A happens with
+the probability
+\begin{equation}
+\label{eq:phys332-5}
+P(\alpha) = \int_I^{\alpha I} g(\!E\!) \, dE =
+ \frac {( \Emax + I) (\alpha - 1)}{\Emax \alpha}
+\end{equation}
+The mean energy loss and the standard deviation for this type
+of collision are
+\begin{equation}
+\langle \Delta E(\alpha) \rangle = \frac{1}{P(\alpha)}
+ \int_I^{\alpha I} E \, g(\!E\!) \, dE =
+ \frac{I \alpha \ln \alpha}{\alpha - 1}
+\end{equation}
+and
+\begin{equation}
+\sigma^2(\alpha) = \frac{1}{P(\alpha)}
+ \int_I^{\alpha I} E^2 \, g(\!E\!) \, dE =
+ I^2 \alpha \left( 1 - \frac{\alpha \ln \! ^2 \alpha}{(\alpha - 1)^2} \right)
+\end{equation}
+If the collision number is high , we assume that the number of the
+type A collisions can be calculated from a Gaussian distribution
+with the following mean value and standard deviation:
+\begin{eqnarray}
+\label{eq:phys332-1}
+\langle n_A \rangle & = & n_3 P(\alpha) \\
+\label{eq:phys332-2}
+\sigma_A^2 & = & n_3 P(\alpha) ( 1 - P(\alpha))
+\end{eqnarray}
+It is further assumed that the energy loss in these collisions
+has a Gaussian distribution with
+\begin{eqnarray}
+\label{eq:phys332-3}
+\langle \Delta E_A \rangle & = & n_A \langle \Delta E(\alpha) \rangle \\
+\label{eq:phys332-4}
+\sigma_{E,A}^2 & = & n_A \sigma^2(\alpha)
+\end{eqnarray}
+The energy loss of these collision can then be sampled from the
+Gaussian distribution.
+
+The collisions where the energy loss is in the interval B are sampled
+directly from
+\begin{equation}
+\Delta E_B = \sum_{i=1}^{n_3 - n_A} \frac{\alpha I}
+ {1 - u_i \frac{\Emax + I - \alpha I}{\Emax + I}}
+\end{equation}
+The total energy loss is the sum of these two types of collisions:
+\begin{equation}
+\Delta E = \Delta E_A + \Delta E_B
+\end{equation}
+
+The approximation of equations (\ref{eq:phys332-1}),
+(\ref{eq:phys332-2}), (\ref{eq:phys332-3}) and (\ref{eq:phys332-4})
+can be used under the following conditions:
+\begin{eqnarray}
+\label{eq:phys332-6}
+\langle n_A \rangle - c \, \sigma_A & \geq & 0 \\
+\label{eq:phys332-7}
+\langle n_A \rangle + c \, \sigma_A & \leq & n_3 \\
+\label{eq:phys332-8}
+\langle \Delta E_A \rangle - c \, \sigma_{E,A} & \geq & 0
+\end{eqnarray}
+where $c \geq 4$. From the equations (\ref{eq:phys332-5}),
+(\ref{eq:phys332-1}) and (\ref{eq:phys332-3}) and from the conditions
+(\ref{eq:phys332-6}) and (\ref{eq:phys332-7}) the following limits can
+be derived:
+\begin{equation}
+\alpha_{\mathrm{min}} = \frac{(n_3 + c^2)(\Emax+I)}
+ {n_3 (\Emax + I) + c^2 I} \; \leq \alpha \; \leq
+\alpha_{\mathrm{max}} = \frac{(n_3 + c^2)(\Emax+I)}
+ {c^2 (\Emax + I) + n_3 I}
+\end{equation}
+This conditions gives a lower limit to number of the ionisations $n_3$
+for which the fast sampling can be done:
+\begin{equation}
+n_3 \; \geq \; c^2
+\end{equation}
+As in the conditions (\ref{eq:phys332-6}), (\ref{eq:phys332-7}) and
+(\ref{eq:phys332-8}) the value of $c$ is as minimum 4, one gets $n_3
+\; \geq 16$. In order to speed the simulation, the maximum value is
+used for $\alpha$.
+
+The number of collisions with energy loss in the interval B (the
+number of interactions which has to be simulated directly) increases
+slowly with the total number of collisions $n_3$. The maximum number
+of these collisions can be estimated as
+\begin{equation}
+n_{B,max} = n_3 - n_{A,min} \approx n_3 (\langle n_A \rangle
+ - \sigma_A)
+\end{equation}
+From the previous expressions for $\langle n_A \rangle$ and $\sigma_A$
+one can derive the condition
+\begin{equation}
+n_B \; \leq \; n_{B,max} = \frac{2 n_3 c^2}{n_3+c^2}
+\end{equation}
+The following values are obtained with $c=4$:
+
+\begin{tabular}{llcrr}
+$n_3$ & $n_{B,max}$ & & $n_3$ & $n_{B,max}$\\ \hline
+16 & 16 & & 200 & 29.63\\
+20 & 17.78 & & 500 & 31.01 \\
+50 & 24.24 & & 1000 & 31.50 \\
+100 & 27.59 & & $\infty$ & 32.00
+\end{tabular}
+
+\subsection{Special sampling for lower part of the spectrum}
+
+If the step length is very small ($\leq 5$ mm in gases, $\leq$ 2-3
+$\mu$m in solids) the model gives 0 energy loss for some events. To
+avoid this, the probability of 0 energy loss is computed
+\begin{equation}
+P( \Delta E=0) = e^{-( \langle n_1 \rangle + \langle n_2 \rangle
+ + \langle n_3 \rangle )}
+\end{equation}
+If the probability is bigger than 0.01 a special sampling is done,
+taking into account the fact that in these cases the projectile
+interacts only with the outer electrons of the atom. An energy level
+$E_0 = 10$ eV is chosen to correspond to the outer electrons. The mean
+number of collisions can be calculated from
+\begin{equation}
+\langle n \rangle = \frac{1}{E_0} \frac{dE}{dx} \Delta x
+\end{equation}
+The number of collisions $n$ is sampled from Poisson distribution.
+In the case of the thin layers, all the collisions are considered as
+ionisations and the energy loss is computed as
+\begin{equation}
+\Delta E = \sum_{i=1}^n \frac{E_0}
+ {1 - \frac {\Emax}{\Emax + E_0} u_i}
+\end{equation}
+
+\begin{thebibliography}{10}
+\bibitem{bib-LAND}
+L.Landau.
+\newblock On the Energy Loss of Fast Particles by Ionisation.
+\newblock Originally published in \emph{J. Phys.}, 8:201, 1944.
+\newblock Reprinted in D.ter Haar, Editor, \emph{L.D.Landau, Collected
+ papers}, page 417. Pergamon Press, Oxford, 1965.
+
+\bibitem{bib-SCH1}
+B.Schorr.
+\newblock Programs for the Landau and the Vavilov distributions and the
+ corresponding random numbers.
+\newblock \emph{Comp. Phys. Comm.}, 7:216, 1974.
+
+\bibitem{bib-SELT}
+S.M.Seltzer and M.J.Berger.
+\newblock Energy loss straggling of protons and mesons.
+\newblock In \emph{Studies in Penetration of Charged Particles in
+ Matter}, Nuclear Science Series~39, Nat. Academy of Sciences,
+ Washington DC, 1964.
+
+\bibitem{bib-TALM}
+R.Talman.
+\newblock On the statistics of particle identification using ionization.
+\newblock \emph{Nucl. Inst. Meth.}, 159:189, 1979.
+
+\bibitem{bib-VAVI}
+P.V.Vavilov.
+\newblock Ionisation losses of high energy heavy particles.
+\newblock \emph{Soviet Physics JETP}, 5:749, 1957.
+\end{thebibliography}
+
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa.xml b/Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa.xml
new file mode 100644
index 00000000000..9d23dd47752
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa.xml
@@ -0,0 +1,171 @@
+<?xml version="1.0"?>
+<!DOCTYPE document SYSTEM "latexexa.dtd" []>
+<document>
+<frontmatter>
+ <title>Simulation of Energy Loss Straggling</title>
+ <author>Maria Physicist</author>
+ <date>January 14, 1999</date>
+</frontmatter>
+<bodymatter>
+<section id="intro"> <stitle>Introduction</stitle>
+<par>Due to the statistical nature of ionisation energy loss, large
+fluctuations can occur in the amount of energy deposited by a particle
+traversing an absorber element. Continuous processes such as multiple
+scattering and energy loss play a relevant role in the longitudinal
+and lateral development of electromagnetic and hadronic showers, and
+in the case of sampling calorimeters the measured resolution can be
+significantly affected by such fluctuations in their active
+layers. The description of ionisation fluctuations is characterised by
+the significance parameter <inlinemath>
+<math><mi>&kappa;</mi></math></inlinemath>, which is proportional to
+the ratio of mean energy loss to the maximum allowed energy transfer
+in a single collision with an atomic electron
+
+<displaymath><math><mrow>
+<mi>&kappa;</mi><mo>=</mo> <mfrac> <mrow>
+<mi>&xi;</mi></mrow><mrow><msub><mi>E</mi><mrow><mi>max </mi> </mrow>
+</msub> </mrow> </mfrac> </mrow></math></displaymath>
+
+<inlinemath><math><msub><mi>E</mi><mrow><mi>max </mi> </mrow> </msub>
+</math></inlinemath> is the maximum transferable energy in a single
+collision with an atomic electron.
+
+....
+
+</section>
+<section id="vavref"><stitle>Vavilov theory</stitle>
+<par>Vavilov<cite refid="bib-VAVI"/> derived a more accurate
+straggling distribution by introducing the kinematic limit on the
+maximum transferable energy in a single collision, rather than using
+<inlinemath> <math><msub><mi>E</mi><mrow><mi>max </mi> </mrow> </msub>
+<mo>=</mo><mi>&infin;</mi></math></inlinemath>. Now we can write<cite
+refid="bib-SCH1"/>: <eqnarray><subeqn><math><mi>f</mi> <mfenced
+open='('
+close=')'><mi>&epsi;</mi><mo>,</mo><mi>&delta;</mi><mi>s</mi></mfenced>
+<mo>=</mo>
+<mfrac><mrow><mn>1</mn></mrow><mrow><mi>&xi;</mi></mrow></mfrac>
+<msub><mi>&phi;</mi><mrow><mi>v</mi></mrow>
+</msub> <mfenced open='('
+close=')'><msub><mi>&lambda;</mi><mrow><mi>v</mi></mrow> </msub>
+<mo>,</mo><mi>&kappa;</mi><mo>,</mo><msup><mi>&beta;</mi><mrow><mn>2</mn>
+</mrow> </msup> </mfenced> <mtext></mtext> </math></subeqn></eqnarray>
+where
+<eqnarray><subeqn><math><msub><mi>&phi;</mi><mrow><mi>v</mi></mrow>
+</msub> <mfenced open='('
+close=')'><msub><mi>&lambda;</mi><mrow><mi>v</mi></mrow> </msub>
+<mo>,</mo><mi>&kappa;</mi><mo>,</mo><msup><mi>&beta;</mi><mrow><mn>2</mn>
+</mrow> </msup> </mfenced> <mo>=</mo>
+<mfrac><mrow><mn>1</mn></mrow><mrow><mn>2</mn><mi>&pi;</mi><mi>i</mi></mrow>
+</mfrac><msubsup><mo>&int;</mo>
+<mrow><mi>c</mi><mo>+</mo><mi>i</mi><mi>&infin;</mi></mrow>
+<mrow><mi>c</mi><mo>-</mo><mi>i</mi><mi>&infin;</mi>
+</mrow></msubsup><mi>&phi;</mi><mfenced
+open='('
+close=')'><mi>s</mi></mfenced><msup><mi>e</mi><mrow><mi>&lambda;</mi><mi>s</mi>
+</mrow> </msup> <mi>d</mi><mi>s</mi><mspace
+width='2cm'/><mi>c</mi><mo>&geq;</mo><mn>0</mn> <mtext></mtext>
+</math></subeqn><subeqn><math> </math></subeqn><subeqn
+><math><mi>&phi;</mi><mfenced open='(' close=')'><mi>s</mi></mfenced>
+<mo>=</mo> <mo>exp</mo><mfenced open='['
+close=']'><mi>&kappa;</mi><mrow><mo>(</mo><mn>1</mn><mo>+</mo>
+<msup><mi>&beta;</mi><mrow><mn>2</mn>
+</mrow> </msup>
+<mi>&gamma;</mi><mo>)</mo></mrow></mfenced><mo>exp</mo><mfenced
+open='[' close=']'><mi>&psi;</mi> <mfenced open='('
+close=')'><mi>s</mi></mfenced></mfenced><mo>,</mo> <mtext></mtext>
+</math></subeqn><subeqn><math> </math></subeqn><subeqn
+><math><mi>&psi;</mi> <mfenced open='(' close=')'><mi>s</mi></mfenced>
+<mo>=</mo> <mi>s</mi><mo>ln</mo>
+<mi>&kappa;</mi><mo>+</mo><mrow><mo>(</mo><mi>s</mi><mo>+</mo><msup>
+<mi>&beta;</mi><mrow><mn>2</mn>
+</mrow> </msup> <mi>&kappa;</mi><mo>)</mo></mrow><mfenced open='['
+close=']'><mo>ln</mo>
+<mrow><mo>(</mo><mi>s</mi><mo>/</mo><mi>&kappa;</mi><mo>)</mo></mrow>
+<mo>+</mo><msub><mi>E</mi><mrow>
+<mn>1</mn> </mrow> </msub>
+<mrow><mo>(</mo><mi>s</mi><mo>/</mo><mi>&kappa;</mi><mo>)</mo>
+</mrow></mfenced><mo>-</mo><mi>&kappa;</mi><msup><mi>e</mi><mrow>
+<mo>-</mo><mi>s</mi><mo>/</mo><mi>&kappa;</mi>
+</mrow> </msup> <mo>,</mo> <mtext></mtext> </math></subeqn></eqnarray>
+and <eqnarray><subeqn><math><msub><mi>E</mi><mrow><mn>1</mn> </mrow>
+</msub> <mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow>
+<mo>=</mo><msubsup> <mo>&int;</mo>
+<mrow><mi>&infin;</mi></mrow><mrow><mi>z</mi></mrow></msubsup>
+<msup><mi>t</mi><mrow><mo>-</mo><mn>1</mn>
+</mrow> </msup> <msup><mi>e</mi><mrow><mo>-</mo><mi>t</mi> </mrow>
+</msup> <mi>d</mi><mi>t</mi><mspace width='1cm'/><mtext>(the
+exponential integral)</mtext> <mtext></mtext> </math></subeqn><subeqn
+><math> </math></subeqn><subeqn
+><math><msub><mi>&lambda;</mi><mrow><mi>v</mi></mrow> </msub>
+<mo>=</mo> <mi>&kappa;</mi><mfenced open='['
+close=']'><mfrac><mrow><mi>&epsi;</mi><mo>-</mo><munderover
+accent='true'><mi>&epsi;</mi><mrow></mrow><mo>&barwed;</mo></munderover>
+</mrow> <mrow><mi>&xi;</mi></mrow></mfrac>
+<mo>-</mo><mi>&gamma;</mi><mi>&prime;</mi>
+<mo>-</mo><msup><mi>&beta;</mi><mrow><mn>2</mn> </mrow> </msup>
+</mfenced> <mtext></mtext> </math></subeqn></eqnarray>
+</par>
+<par>The Vavilov parameters are simply related to the Landau parameter
+by <inlinemath><math><msub><mi>&lambda;</mi><mrow><mi>L</mi> </mrow>
+</msub> <mo>=</mo><msub><mi>&lambda;</mi><mrow><mi>v</mi></mrow>
+</msub> <mo>/</mo><mi>&kappa;</mi><mo>-</mo><mo>ln</mo>
+<mi>&kappa;</mi></math></inlinemath>. It can be shown that as
+<inlinemath> <math>
+<mi>&kappa;</mi><mo>&rarr;</mo><mn>0</mn></math></inlinemath>, the
+distribution of the variable <inlinemath> <math>
+<msub><mi>&lambda;</mi><mrow><mi>L</mi> </mrow> </msub>
+</math></inlinemath> approaches that of Landau. For <inlinemath>
+<math>
+<mi>&kappa;</mi><mo>&leq;</mo><mn>0</mn><mo>.</mo><mn>0</mn><mn>1</mn>
+</math></inlinemath>
+the two distributions are already practically identical. Contrary to
+what many textbooks report, the Vavilov distribution <emph> does
+not</emph> approximate the Landau distribution for small
+<inlinemath><math><mi>&kappa;</mi></math></inlinemath>, but rather the
+distribution of <inlinemath> <math>
+<msub><mi>&lambda;</mi><mrow><mi>L</mi> </mrow> </msub>
+</math></inlinemath> defined above tends to the distribution of the
+true <inlinemath><math><mi>&lambda;</mi></math></inlinemath> from the
+Landau density function. Thus the routine <texttt> GVAVIV</texttt>
+samples the variable <inlinemath>
+<math><msub><mi>&lambda;</mi><mrow><mi>L</mi> </mrow> </msub>
+</math></inlinemath> rather than <inlinemath> <math>
+<msub><mi>&lambda;</mi><mrow><mi>v</mi></mrow> </msub>
+</math></inlinemath>. For <inlinemath> <math>
+<mi>&kappa;</mi><mo>&geq;</mo><mn>1</mn><mn>0</mn></math></inlinemath>
+the Vavilov distribution tends to a Gaussian distribution (see next
+section). </par>
+</section>
+.....
+</section>
+<section class="star"><stitle>References</stitle>
+<bibliography>
+<bibitem id="bib-LAND">
+<par>L.Landau. On the Energy Loss of Fast Particles by
+Ionisation. Originally published in <emph>J. Phys.</emph>, 8:201,
+1944. Reprinted in D.ter Haar, Editor, <emph>L.D.Landau, Collected
+papers</emph>, page 417. Pergamon Press, Oxford, 1965. </par>
+</bibitem>
+<bibitem id="bib-SCH1">
+<par>B.Schorr. Programs for the Landau and the Vavilov distributions
+and the corresponding random numbers. <emph>Comp. Phys. Comm.</emph>,
+7:216, 1974. </par>
+</bibitem>
+<bibitem id="bib-SELT">
+<par>S.M.Seltzer and M.J.Berger. Energy loss straggling of protons and
+mesons. In <emph>Studies in Penetration of Charged Particles in
+Matter</emph>, Nuclear Science Series 39, Nat. Academy of Sciences,
+Washington DC, 1964. </par>
+</bibitem>
+<bibitem id="bib-TALM">
+<par>R.Talman. On the statistics of particle identification using
+ionization. <emph>Nucl. Inst. Meth.</emph>, 159:189, 1979. </par>
+</bibitem>
+<bibitem id="bib-VAVI">
+<par>P.V.Vavilov. Ionisation losses of high energy heavy
+particles. <emph>Soviet Physics JETP</emph>, 5:749, 1957.</par>
+</bibitem>
+</bibliography>
+</section>
+</bodymatter>
+</document>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apa/phys332-1.eps b/Master/texmf-doc/doc/english/latex-web-companion/apa/phys332-1.eps
new file mode 100644
index 00000000000..8299292087f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apa/phys332-1.eps
@@ -0,0 +1,419 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%BoundingBox: 0 0 567 567
+%%Title: regime.eps
+%%Creator: HIGZ Version 1.20/02
+%%CreationDate: 93/11/12 09.41
+%%EndComments
+80 dict begin
+/s {stroke} def /l {lineto} def /m {moveto} def /t { translate} def
+/sw {stringwidth} def /r {rotate} def /rl {roll} def
+/d {rlineto} def /rm {rmoveto} def /gr {grestore} def /f {eofill} def
+/c {setrgbcolor} def /lw {setlinewidth} def /sd {setdash} def
+/cl {closepath} def /sf {scalefont setfont} def
+/box {m dup 0 exch d exch 0 d 0 exch neg d cl} def
+/bl {box s} def /bf {box f} def
+/mp {newpath /y exch def /x exch def} def
+/side {[w .77 mul w .23 mul] .385 w mul sd w 0 l currentpoint t -144 r} def
+/mr {mp x y w2 0 360 arc} def /m24 {mr s} def /m20 {mr f} def
+/mb {mp x y w2 add m w2 neg 0 d 0 w neg d w 0 d 0 w d cl} def
+/mt {mp x y w2 add m w2 neg w neg d w 0 d cl} def
+/m21 {mb f} def /m25 {mb s} def /m22 {mt f} def /m26 {mt s} def
+/m23 {mp x y w2 sub m w2 w d w neg 0 d cl f} def
+ /m27 {mp x y w2 add m w3 neg w2 neg d w3 w2 neg d w3 w2 d cl s} def
+ /m28 {mp x w2 sub y w2 sub w3 add m w3 0 d 0 w3 neg d w3 0 d 0 w3 d w3 0 d
+ 0 w3 d w3 neg 0 d 0 w3 d w3 neg 0 d 0 w3 neg d w3 neg 0 d cl s } def
+ /m29 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
+ 4 {side} repeat cl fill gr} def
+ /m30 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
+ 5 {side} repeat s gr} def /m31 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d
+ x w2 sub y w2 add m w w neg d x w2 sub y w2
+ sub m w w d s} def
+/m2 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d s} def
+/m5 {mp x w2 sub y w2 sub m w w d x w2 sub y w2 add m w w neg d s} def
+/reencdict 24 dict def /ReEncode {reencdict begin /nco&na exch def
+/nfnam exch def /basefontname exch def /basefontdict basefontname findfont def
+/newfont basefontdict maxlength dict def basefontdict {exch dup /FID ne
+{dup /Encoding eq {exch dup length array copy newfont 3 1 roll put} {exch
+newfont 3 1 roll put} ifelse} {pop pop} ifelse } forall newfont
+/FontName nfnam put nco&na aload pop nco&na length 2 idiv {newfont
+/Encoding get 3 1 roll put} repeat nfnam newfont definefont pop end } def
+/accvec [ 176 /agrave 181 /Agrave 190 /acircumflex 192 /Acircumflex
+201 /adieresis 204 /Adieresis 209 /ccedilla 210 /Ccedilla 211 /eacute
+212 /Eacute 213 /egrave 214 /Egrave 215 /ecircumflex 216 /Ecircumflex
+217 /edieresis 218 /Edieresis 219 /icircumflex 220 /Icircumflex
+221 /idieresis 222 /Idieresis 223 /ntilde 224 /Ntilde 226 /ocircumflex
+228 /Ocircumflex 229 /odieresis 230 /Odieresis 231 /ucircumflex 236 /Ucircumflex
+237 /udieresis 238 /Udieresis 239 /aring 242 /Aring 243 /ydieresis
+244 /Ydieresis 246 /aacute 247 /Aacute 252 /ugrave 253 /Ugrave] def
+/Times-Roman /Times-Roman accvec ReEncode
+/Times-Italic /Times-Italic accvec ReEncode
+/Times-Bold /Times-Bold accvec ReEncode
+/Times-BoldItalic /Times-BoldItalic accvec ReEncode
+/Helvetica /Helvetica accvec ReEncode
+/Helvetica-Oblique /Helvetica-Oblique accvec ReEncode
+/Helvetica-Bold /Helvetica-Bold accvec ReEncode
+/Helvetica-BoldOblique /Helvetica-BoldOblique accvec ReEncode
+/Courier /Courier accvec ReEncode
+/Courier-Oblique /Courier-Oblique accvec ReEncode
+/Courier-Bold /Courier-Bold accvec ReEncode
+/Courier-BoldOblique /Courier-BoldOblique accvec ReEncode
+/oshow {gsave [] 0 sd true charpath stroke gr} def
+/stwn { /fs exch def /fn exch def /text exch def fn findfont fs sf
+ text sw pop xs add /xs exch def} def
+/stwb { /fs exch def /fn exch def /nbas exch def /textf exch def
+textf length /tlen exch def nbas tlen gt {/nbas tlen def} if
+fn findfont fs sf textf dup length nbas sub nbas getinterval sw
+pop neg xs add /xs exch def} def
+/accspe [ 65 /plusminus 66 /bar 67 /existential 68 /universal
+69 /exclam 70 /numbersign 71 /greater 72 /question 73 /integral
+74 /colon 75 /semicolon 76 /less 77 /bracketleft 78 /bracketright
+79 /greaterequal 80 /braceleft 81 /braceright 82 /radical
+83 /spade 84 /heart 85 /diamond 86 /club 87 /lessequal
+88 /multiply 89 /percent 90 /infinity 48 /circlemultiply 49 /circleplus
+50 /emptyset 51 /lozenge 52 /bullet 53 /arrowright 54 /arrowup
+55 /arrowleft 56 /arrowdown 57 /arrowboth 48 /degree 44 /comma 43 /plus
+ 45 /angle 42 /angleleft 47 /divide 61 /notequal 40 /equivalence 41 /second
+ 97 /approxequal 98 /congruent 99 /perpendicular 100 /partialdiff 101 /florin
+ 102 /intersection 103 /union 104 /propersuperset 105 /reflexsuperset
+ 106 /notsubset 107 /propersubset 108 /reflexsubset 109 /element 110 /notelement
+ 111 /gradient 112 /logicaland 113 /logicalor 114 /arrowdblboth
+ 115 /arrowdblleft 116 /arrowdblup 117 /arrowdblright 118 /arrowdbldown
+ 119 /ampersand 120 /omega1 121 /similar 122 /aleph ] def
+/Symbol /Special accspe ReEncode
+gsave .25 .25 scale
+%%EndProlog
+ gsave 0 0 t 0 setgray [] 0 sd 1 lw 4 lw 1814 1814 227 227 bl 231 346 m 240 354
+ l 249 362 l 259 370 l 268 378 l 277 386 l 286 394 l 295 401 l 304 409 l 313 417
+ l 322 425 l 331 433 l 340 441 l 349 449 l 358 457 l 367 465 l 376 473 l 386 481
+ l 395 489 l 404 496 l 413 504 l 422 512 l 431 520 l 440 528 l 449 536 l 458 544
+ l 467 552 l 476 560 l 485 568 l 494 576 l 503 584 l 513 592 l 522 599 l 531 607
+ l 540 615 l 549 623 l 558 631 l 567 639 l 576 647 l 585 655 l 594 663 l 603 671
+ l 612 679 l 621 687 l 631 694 l 640 702 l 649 710 l 658 718 l 667 726 l 676 734
+ l s 676 734 m 685 742 l 694 750 l 703 758 l 712 766 l 721 774 l 730 782 l 739
+ 789 l 748 797 l 758 805 l 767 813 l 776 821 l 785 829 l 794 837 l 803 845 l 812
+ 853 l 821 861 l 830 869 l 839 877 l 848 885 l 857 892 l 866 900 l 875 908 l 885
+ 916 l 894 924 l 903 932 l 912 940 l 921 948 l 930 956 l 939 964 l 948 972 l 957
+ 980 l 966 987 l 975 995 l 984 1003 l 993 1011 l 1002 1019 l 1012 1027 l 1021
+ 1035 l 1030 1043 l 1039 1051 l 1048 1059 l 1057 1067 l 1066 1075 l 1075 1083 l
+ 1084 1090 l 1093 1098 l 1102 1106 l 1111 1114 l 1120 1122 l s 1120 1122 m 1129
+ 1130 l 1139 1138 l 1148 1146 l 1157 1154 l 1166 1162 l 1175 1170 l 1184 1178 l
+ 1193 1185 l 1202 1193 l 1211 1201 l 1220 1209 l 1229 1217 l 1238 1225 l 1247
+ 1233 l 1256 1241 l 1266 1249 l 1275 1257 l 1284 1265 l 1293 1273 l 1302 1281 l
+ 1311 1288 l 1320 1296 l 1329 1304 l 1338 1312 l 1347 1320 l 1356 1328 l 1365
+ 1336 l 1374 1344 l 1383 1352 l 1393 1360 l 1402 1368 l 1411 1376 l 1420 1383 l
+ 1429 1391 l 1438 1399 l 1447 1407 l 1456 1415 l 1465 1423 l 1474 1431 l 1483
+ 1439 l 1492 1447 l 1501 1455 l 1510 1463 l 1520 1471 l 1529 1479 l 1538 1486 l
+ 1547 1494 l 1556 1502 l 1565 1510 l s 1565 1510 m 1574 1518 l 1583 1526 l 1592
+ 1534 l 1601 1542 l 1610 1550 l 1619 1558 l 1628 1566 l 1637 1574 l 1647 1581 l
+ 1656 1589 l 1665 1597 l 1674 1605 l 1683 1613 l 1692 1621 l 1701 1629 l 1710
+ 1637 l 1719 1645 l 1728 1653 l 1737 1661 l 1746 1669 l 1755 1676 l 1765 1684 l
+ 1774 1692 l 1783 1700 l 1792 1708 l 1801 1716 l 1810 1724 l 1819 1732 l 1828
+ 1740 l 1837 1748 l 1846 1756 l 1855 1764 l 1864 1772 l 1873 1779 l 1882 1787 l
+ 1892 1795 l 1901 1803 l 1910 1811 l 1919 1819 l 1928 1827 l 1937 1835 l 1946
+ 1843 l 1955 1851 l 1964 1859 l 1973 1867 l 1982 1874 l 1991 1882 l 2000 1890 l
+ 2009 1898 l s 2009 1898 m 2019 1906 l 2028 1914 l 2037 1922 l s 1 lw 227 227 m
+ 227 2041 l s 4 lw 244 247 m 227 247 l s 244 274 m 227 274 l s 244 297 m 227 297
+ l s 244 317 m 227 317 l s 261 335 m 227 335 l s
+ /xs 0 def
+(10)
+ /Helvetica-Bold 43 stwn
+ gsave 181 319
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(10)
+ show
+ gr
+ /xs 0 def
+(-2)
+ /Helvetica-Bold 35 stwn
+ gsave 213 358
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 35 sf 0 0 m
+(-2)
+ show
+ gr
+ 244 454 m 227 454 l s 244 524 m 227 524 l s 244 573 m 227 573 l s 244 612 m 227
+ 612 l s 244 643 m 227 643 l s 244 670 m 227 670 l s 244 693 m 227 693 l s 244
+ 713 m 227 713 l s 261 731 m 227 731 l s
+ /xs 0 def
+(10)
+ /Helvetica-Bold 43 stwn
+ gsave 181 715
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(10)
+ show
+ gr
+ /xs 0 def
+(-1)
+ /Helvetica-Bold 35 stwn
+ gsave 213 754
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 35 sf 0 0 m
+(-1)
+ show
+ gr
+ 244 850 m 227 850 l s 244 920 m 227 920 l s 244 969 m 227 969 l s 244 1008 m
+ 227 1008 l s 244 1039 m 227 1039 l s 244 1066 m 227 1066 l s 244 1089 m 227
+ 1089 l s 244 1109 m 227 1109 l s 261 1127 m 227 1127 l s
+ /xs 0 def
+(1)
+ /Helvetica-Bold 43 stwn
+ gsave 181 1111
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(1)
+ show
+ gr
+ 244 1246 m 227 1246 l s 244 1316 m 227 1316 l s 244 1365 m 227 1365 l s 244
+ 1404 m 227 1404 l s 244 1435 m 227 1435 l s 244 1462 m 227 1462 l s 244 1485 m
+ 227 1485 l s 244 1505 m 227 1505 l s 261 1523 m 227 1523 l s
+ /xs 0 def
+(10)
+ /Helvetica-Bold 43 stwn
+ gsave 181 1507
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(10)
+ show
+ gr
+ 244 1642 m 227 1642 l s 244 1712 m 227 1712 l s 244 1761 m 227 1761 l s 244
+ 1800 m 227 1800 l s 244 1831 m 227 1831 l s 244 1858 m 227 1858 l s 244 1881 m
+ 227 1881 l s 244 1901 m 227 1901 l s 261 1919 m 227 1919 l s
+ /xs 0 def
+(10)
+ /Helvetica-Bold 43 stwn
+ gsave 181 1903
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(10)
+ show
+ gr
+ /xs 0 def
+(2)
+ /Helvetica-Bold 35 stwn
+ gsave 213 1926
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 35 sf 0 0 m
+(2)
+ show
+ gr
+ 244 2038 m 227 2038 l s 1 lw 227 227 m 2041 227 l s 4 lw 227 261 m 227 227 l s
+ 680 261 m 680 227 l s 1134 261 m 1134 227 l s 1588 261 m 1588 227 l s 2041 261
+ m 2041 227 l s
+ /xs 0 def
+(0.01)
+ /Helvetica-Bold 43 stwn
+ gsave 227 172
+ t 0 r xs 2 div neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(0.01)
+ show
+ gr
+ /xs 0 def
+(0.1)
+ /Helvetica-Bold 43 stwn
+ gsave 680 172
+ t 0 r xs 2 div neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(0.1)
+ show
+ gr
+ /xs 0 def
+(1)
+ /Helvetica-Bold 43 stwn
+ gsave 1134 172
+ t 0 r xs 2 div neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(1)
+ show
+ gr
+ /xs 0 def
+(10)
+ /Helvetica-Bold 43 stwn
+ gsave 1588 172
+ t 0 r xs 2 div neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(10)
+ show
+ gr
+ /xs 0 def
+(100)
+ /Helvetica-Bold 43 stwn
+ gsave 2041 172
+ t 0 r xs 2 div neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(100)
+ show
+ gr
+ 231 243 m 240 251 l 249 258 l 259 266 l 268 274 l 277 282 l 286 290 l 295 298 l
+ 304 306 l 313 314 l 322 322 l 331 330 l 340 338 l 349 346 l 358 354 l 367 361 l
+ 376 369 l 386 377 l 395 385 l 404 393 l 413 401 l 422 409 l 431 417 l 440 425 l
+ 449 433 l 458 441 l 467 449 l 476 456 l 485 464 l 494 472 l 503 480 l 513 488 l
+ 522 496 l 531 504 l 540 512 l 549 520 l 558 528 l 567 536 l 576 544 l 585 551 l
+ 594 559 l 603 567 l 612 575 l 621 583 l 631 591 l 640 599 l 649 607 l 658 615 l
+ 667 623 l 676 631 l s 676 631 m 685 639 l 694 647 l 703 654 l 712 662 l 721 670
+ l 730 678 l 739 686 l 748 694 l 758 702 l 767 710 l 776 718 l 785 726 l 794 734
+ l 803 742 l 812 749 l 821 757 l 830 765 l 839 773 l 848 781 l 857 789 l 866 797
+ l 875 805 l 885 813 l 894 821 l 903 829 l 912 837 l 921 845 l 930 852 l 939 860
+ l 948 868 l 957 876 l 966 884 l 975 892 l 984 900 l 993 908 l 1002 916 l 1012
+ 924 l 1021 932 l 1030 940 l 1039 947 l 1048 955 l 1057 963 l 1066 971 l 1075
+ 979 l 1084 987 l 1093 995 l 1102 1003 l 1111 1011 l 1120 1019 l s 1120 1019 m
+ 1129 1027 l 1139 1035 l 1148 1043 l 1157 1050 l 1166 1058 l 1175 1066 l 1184
+ 1074 l 1193 1082 l 1202 1090 l 1211 1098 l 1220 1106 l 1229 1114 l 1238 1122 l
+ 1247 1130 l 1256 1138 l 1266 1145 l 1275 1153 l 1284 1161 l 1293 1169 l 1302
+ 1177 l 1311 1185 l 1320 1193 l 1329 1201 l 1338 1209 l 1347 1217 l 1356 1225 l
+ 1365 1233 l 1374 1241 l 1383 1248 l 1393 1256 l 1402 1264 l 1411 1272 l 1420
+ 1280 l 1429 1288 l 1438 1296 l 1447 1304 l 1456 1312 l 1465 1320 l 1474 1328 l
+ 1483 1336 l 1492 1343 l 1501 1351 l 1510 1359 l 1520 1367 l 1529 1375 l 1538
+ 1383 l 1547 1391 l 1556 1399 l 1565 1407 l s 1565 1407 m 1574 1415 l 1583 1423
+ l 1592 1431 l 1601 1438 l 1610 1446 l 1619 1454 l 1628 1462 l 1637 1470 l 1647
+ 1478 l 1656 1486 l 1665 1494 l 1674 1502 l 1683 1510 l 1692 1518 l 1701 1526 l
+ 1710 1534 l 1719 1541 l 1728 1549 l 1737 1557 l 1746 1565 l 1755 1573 l 1765
+ 1581 l 1774 1589 l 1783 1597 l 1792 1605 l 1801 1613 l 1810 1621 l 1819 1629 l
+ 1828 1636 l 1837 1644 l 1846 1652 l 1855 1660 l 1864 1668 l 1873 1676 l 1882
+ 1684 l 1892 1692 l 1901 1700 l 1910 1708 l 1919 1716 l 1928 1724 l 1937 1732 l
+ 1946 1739 l 1955 1747 l 1964 1755 l 1973 1763 l 1982 1771 l 1991 1779 l 2000
+ 1787 l 2009 1795 l s 2009 1795 m 2019 1803 l 2028 1811 l 2037 1819 l s
+ [12 12] 0 sd 231 1636 m 240 1644 l 249 1652 l 259 1660 l 268 1668 l 277 1676 l
+ 286 1684 l 295 1692 l 304 1700 l 313 1708 l 322 1716 l 331 1724 l 340 1732 l
+ 349 1739 l 358 1747 l 367 1755 l 376 1763 l 386 1771 l 395 1779 l 404 1787 l
+ 413 1795 l 422 1803 l 431 1811 l 440 1819 l 449 1827 l 458 1834 l 467 1842 l
+ 476 1850 l 485 1858 l 494 1866 l 503 1874 l 513 1882 l 522 1890 l 531 1898 l
+ 540 1906 l 549 1914 l 558 1922 l 567 1930 l 576 1937 l 585 1945 l 594 1953 l
+ 603 1961 l 612 1969 l 621 1977 l 631 1985 l 640 1993 l 649 2001 l 658 2009 l
+ 667 2017 l 676 2025 l s 676 2025 m 685 2032 l 694 2040 l 695 2041 l s 231 1533
+ m 240 1541 l 249 1549 l 259 1557 l 268 1565 l 277 1573 l 286 1581 l 295 1589 l
+ 304 1596 l 313 1604 l 322 1612 l 331 1620 l 340 1628 l 349 1636 l 358 1644 l
+ 367 1652 l 376 1660 l 386 1668 l 395 1676 l 404 1684 l 413 1692 l 422 1699 l
+ 431 1707 l 440 1715 l 449 1723 l 458 1731 l 467 1739 l 476 1747 l 485 1755 l
+ 494 1763 l 503 1771 l 513 1779 l 522 1787 l 531 1794 l 540 1802 l 549 1810 l
+ 558 1818 l 567 1826 l 576 1834 l 585 1842 l 594 1850 l 603 1858 l 612 1866 l
+ 621 1874 l 631 1882 l 640 1890 l 649 1897 l 658 1905 l 667 1913 l 676 1921 l s
+ 676 1921 m 685 1929 l 694 1937 l 703 1945 l 712 1953 l 721 1961 l 730 1969 l
+ 739 1977 l 748 1985 l 758 1992 l 767 2000 l 776 2008 l 785 2016 l 794 2024 l
+ 803 2032 l 812 2040 l 813 2041 l s [4 8] 0 sd 231 1662 m 240 1670 l 249 1678 l
+ 259 1686 l 268 1693 l 277 1701 l 286 1709 l 295 1717 l 304 1725 l 313 1733 l
+ 322 1741 l 331 1749 l 340 1757 l 349 1765 l 358 1773 l 367 1781 l 376 1789 l
+ 386 1796 l 395 1804 l 404 1812 l 413 1820 l 422 1828 l 431 1836 l 440 1844 l
+ 449 1852 l 458 1860 l 467 1868 l 476 1876 l 485 1884 l 494 1891 l 503 1899 l
+ 513 1907 l 522 1915 l 531 1923 l 540 1931 l 549 1939 l 558 1947 l 567 1955 l
+ 576 1963 l 585 1971 l 594 1979 l 603 1987 l 612 1994 l 621 2002 l 631 2010 l
+ 640 2018 l 649 2026 l 658 2034 l 666 2041 l s 231 1558 m 240 1566 l 249 1574 l
+ 259 1582 l 268 1590 l 277 1598 l 286 1606 l 295 1614 l 304 1622 l 313 1630 l
+ 322 1638 l 331 1646 l 340 1653 l 349 1661 l 358 1669 l 367 1677 l 376 1685 l
+ 386 1693 l 395 1701 l 404 1709 l 413 1717 l 422 1725 l 431 1733 l 440 1741 l
+ 449 1749 l 458 1756 l 467 1764 l 476 1772 l 485 1780 l 494 1788 l 503 1796 l
+ 513 1804 l 522 1812 l 531 1820 l 540 1828 l 549 1836 l 558 1844 l 567 1851 l
+ 576 1859 l 585 1867 l 594 1875 l 603 1883 l 612 1891 l 621 1899 l 631 1907 l
+ 640 1915 l 649 1923 l 658 1931 l 667 1939 l 676 1947 l s 676 1947 m 685 1954 l
+ 694 1962 l 703 1970 l 712 1978 l 721 1986 l 730 1994 l 739 2002 l 748 2010 l
+ 758 2018 l 767 2026 l 776 2034 l 784 2041 l s [12 15 4 15] 0 sd 263 1800 m 2041
+ 1800 l s
+ gsave 1134 1738
+ t 0 r 0 0 m
+ /Symbol findfont 78 sf 0 0 m
+(x)
+ show
+ currentpoint pop 0 t
+ /Helvetica-Bold findfont 78 sf 0 0 m
+(/I)
+ show
+ currentpoint pop 0 t
+ /Helvetica-Bold findfont 55 sf 0 -26 m
+(0)
+ show
+ currentpoint pop 0 t
+ /Helvetica-Bold findfont 78 sf 0 0 m
+( \074 50)
+ show
+ gr
+ [] 0 sd 1134 612 m 1530 612 l s [12 12] 0 sd 1134 533 m 1530 533 l s [4 8] 0 sd
+ 1134 454 m 1530 454 l s
+ gsave 1589 584
+ t 0 r 0 0 m
+ /Helvetica-Bold findfont 78 sf 0 0 m
+(Argon)
+ show
+ gr
+ gsave 1589 505
+ t 0 r 0 0 m
+ /Helvetica-Bold findfont 78 sf 0 0 m
+(Silicon)
+ show
+ gr
+ gsave 1589 426
+ t 0 r 0 0 m
+ /Helvetica-Bold findfont 78 sf 0 0 m
+(Uranium)
+ show
+ gr
+ [] 0 sd 871 -316 1055 691 bl
+ gsave 1213 1011
+ t 0 r 0 0 m
+ /Helvetica-Bold findfont 78 sf 0 0 m
+(1 GeV)
+ show
+ gr
+ gsave 778 1099
+ t 0 r 0 0 m
+ /Helvetica-Bold findfont 78 sf 0 0 m
+(100 keV)
+ show
+ gr
+ gsave 679 1852
+ t 0 r 0 0 m
+ /Helvetica-Bold findfont 78 sf 0 0 m
+(1 GeV)
+ show
+ gr
+ gsave 223 1907
+ t 0 r 0 0 m
+ /Helvetica-Bold findfont 78 sf 0 0 m
+(100 keV)
+ show
+ gr
+ /xs 0 def
+(Step,\040)
+ /Helvetica-Bold 43 stwn
+(\133)
+ /Special 43 stwn
+(cm)
+ /Helvetica-Bold 43 stwn
+(\135)
+ /Special 43 stwn
+ gsave 2041 104
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(Step,\040)
+ show
+ currentpoint pop 0 t
+ /Special findfont 43 sf 0 0 m
+(\133)
+ show
+ currentpoint pop 0 t
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(cm)
+ show
+ currentpoint pop 0 t
+ /Special findfont 43 sf 0 0 m
+(\135)
+ show
+ gr
+ gsave 57 2009
+ t 0 r 0 0 m
+ /Symbol findfont 43 sf 0 0 m
+(x)
+ show
+ currentpoint pop 0 t
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(/I)
+ show
+ currentpoint pop 0 t
+ /Helvetica-Bold findfont 30 sf 0 -14 m
+(0)
+ show
+ gr
+gr gr showpage
+end
+%%EOF
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apa/phys332-2.eps b/Master/texmf-doc/doc/english/latex-web-companion/apa/phys332-2.eps
new file mode 100644
index 00000000000..e255ddadf55
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apa/phys332-2.eps
@@ -0,0 +1,556 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%BoundingBox: 0 0 567 567
+%%Title: curves.eps
+%%Creator: HIGZ Version 1.19/01
+%%CreationDate: 93/07/16 12.02
+%%EndComments
+80 dict begin
+/s {stroke} def /l {lineto} def /m {moveto} def /t { translate} def
+/sw {stringwidth} def /r {rotate} def /rl {roll} def
+/d {rlineto} def /rm {rmoveto} def /gr {grestore} def /f {eofill} def
+/c {setrgbcolor} def /lw {setlinewidth} def /sd {setdash} def
+/cl {closepath} def /sf {scalefont setfont} def
+/box {m dup 0 exch d exch 0 d 0 exch neg d cl} def
+/bl {box s} def /bf {box f} def
+/mp {newpath /y exch def /x exch def} def
+/side {[w .77 mul w .23 mul] .385 w mul sd w 0 l currentpoint t -144 r} def
+/mr {mp x y w2 0 360 arc} def /m24 {mr s} def /m20 {mr f} def
+/mb {mp x y w2 add m w2 neg 0 d 0 w neg d w 0 d 0 w d cl} def
+/mt {mp x y w2 add m w2 neg w neg d w 0 d cl} def
+/m21 {mb f} def /m25 {mb s} def /m22 {mt f} def /m26 {mt s} def
+/m23 {mp x y w2 sub m w2 w d w neg 0 d cl f} def
+ /m27 {mp x y w2 add m w3 neg w2 neg d w3 w2 neg d w3 w2 d cl s} def
+ /m28 {mp x w2 sub y w2 sub w3 add m w3 0 d 0 w3 neg d w3 0 d 0 w3 d w3 0 d
+ 0 w3 d w3 neg 0 d 0 w3 d w3 neg 0 d 0 w3 neg d w3 neg 0 d cl s } def
+ /m29 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
+ 4 {side} repeat cl fill gr} def
+ /m30 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t
+ 5 {side} repeat s gr} def /m31 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d
+ x w2 sub y w2 add m w w neg d x w2 sub y w2
+ sub m w w d s} def
+/m2 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d s} def
+/m5 {mp x w2 sub y w2 sub m w w d x w2 sub y w2 add m w w neg d s} def
+/reencdict 24 dict def /ReEncode {reencdict begin /nco&na exch def
+/nfnam exch def /basefontname exch def /basefontdict basefontname findfont def
+/newfont basefontdict maxlength dict def basefontdict {exch dup /FID ne
+{dup /Encoding eq {exch dup length array copy newfont 3 1 roll put} {exch
+newfont 3 1 roll put} ifelse} {pop pop} ifelse } forall newfont
+/FontName nfnam put nco&na aload pop nco&na length 2 idiv {newfont
+/Encoding get 3 1 roll put} repeat nfnam newfont definefont pop end } def
+/accvec [ 176 /agrave 181 /Agrave 190 /acircumflex 192 /Acircumflex
+201 /adieresis 204 /Adieresis 209 /ccedilla 210 /Ccedilla 211 /eacute
+212 /Eacute 213 /egrave 214 /Egrave 215 /ecircumflex 216 /Ecircumflex
+217 /edieresis 218 /Edieresis 219 /icircumflex 220 /Icircumflex
+221 /idieresis 222 /Idieresis 223 /ntilde 224 /Ntilde 226 /ocircumflex
+228 /Ocircumflex 229 /odieresis 230 /Odieresis 231 /ucircumflex 236 /Ucircumflex
+237 /udieresis 238 /Udieresis 239 /aring 242 /Aring 243 /ydieresis
+244 /Ydieresis 246 /aacute 247 /Aacute 252 /ugrave 253 /Ugrave] def
+/Times-Roman /Times-Roman accvec ReEncode
+/Times-Italic /Times-Italic accvec ReEncode
+/Times-Bold /Times-Bold accvec ReEncode
+/Times-BoldItalic /Times-BoldItalic accvec ReEncode
+/Helvetica /Helvetica accvec ReEncode
+/Helvetica-Oblique /Helvetica-Oblique accvec ReEncode
+/Helvetica-Bold /Helvetica-Bold accvec ReEncode
+/Helvetica-BoldOblique /Helvetica-BoldOblique accvec ReEncode
+/Courier /Courier accvec ReEncode
+/Courier-Oblique /Courier-Oblique accvec ReEncode
+/Courier-Bold /Courier-Bold accvec ReEncode
+/Courier-BoldOblique /Courier-BoldOblique accvec ReEncode
+/oshow {gsave [] 0 sd true charpath stroke gr} def
+/stwn { /fs exch def /fn exch def /text exch def fn findfont fs sf
+ text sw pop xs add /xs exch def} def
+/stwb { /fs exch def /fn exch def /nbas exch def /textf exch def
+textf length /tlen exch def nbas tlen gt {/nbas tlen def} if
+fn findfont fs sf textf dup length nbas sub nbas getinterval sw
+pop neg xs add /xs exch def} def
+/accspe [ 65 /plusminus 66 /bar 67 /existential 68 /universal
+69 /exclam 70 /numbersign 71 /greater 72 /question 73 /integral
+74 /colon 75 /semicolon 76 /less 77 /bracketleft 78 /bracketright
+79 /greaterequal 80 /braceleft 81 /braceright 82 /radical
+83 /spade 84 /heart 85 /diamond 86 /club 87 /lessequal
+88 /multiply 89 /percent 90 /infinity 48 /circlemultiply 49 /circleplus
+50 /emptyset 51 /lozenge 52 /bullet 53 /arrowright 54 /arrowup
+55 /arrowleft 56 /arrowdown 57 /arrowboth 48 /degree 44 /comma 43 /plus
+ 45 /angle 42 /angleleft 47 /divide 61 /notequal 40 /equivalence 41 /second
+ 97 /approxequal 98 /congruent 99 /perpendicular 100 /partialdiff 101 /florin
+ 102 /intersection 103 /union 104 /propersuperset 105 /reflexsuperset
+ 106 /notsubset 107 /propersubset 108 /reflexsubset 109 /element 110 /notelement
+ 111 /gradient 112 /logicaland 113 /logicalor 114 /arrowdblboth
+ 115 /arrowdblleft 116 /arrowdblup 117 /arrowdblright 118 /arrowdbldown
+ 119 /ampersand 120 /omega1 121 /similar 122 /aleph ] def
+/Symbol /Special accspe ReEncode
+gsave .25 .25 scale
+%%EndProlog
+ gsave 0 0 t 0 setgray [] 0 sd 1 lw 4 lw 2268 2268 0 0 bl
+ gsave 771 1813
+ t 0 r 0 0 m
+ /Helvetica-Bold findfont 47 sf 0 0 m
+(Landau)
+ show
+ gr
+ /xs 0 def
+(40)
+ /Helvetica-Bold 54 stwn
+ gsave 862 1533
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 54 sf 0 0 m
+(40)
+ show
+ gr
+ /xs 0 def
+(20)
+ /Helvetica-Bold 54 stwn
+ gsave 789 1347
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 54 sf 0 0 m
+(20)
+ show
+ gr
+ /xs 0 def
+(10)
+ /Helvetica-Bold 54 stwn
+ gsave 771 1011
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 54 sf 0 0 m
+(10)
+ show
+ gr
+ /xs 0 def
+(5)
+ /Helvetica-Bold 54 stwn
+ gsave 699 824
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 54 sf 0 0 m
+(5)
+ show
+ gr
+ /xs 0 def
+(1)
+ /Helvetica-Bold 54 stwn
+ gsave 517 740
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 54 sf 0 0 m
+(1)
+ show
+ gr
+ /xs 0 def
+(0.5)
+ /Helvetica-Bold 54 stwn
+ gsave 336 525
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 54 sf 0 0 m
+(0.5)
+ show
+ gr
+ /xs 0 def
+(dE/dx\040)
+ /Helvetica-Bold 43 stwn
+(M)
+ /Special 43 stwn
+(GeV/cm)
+ /Helvetica-Bold 43 stwn
+(N)
+ /Special 43 stwn
+( `)
+ /Helvetica-Bold 43 stwn
+ gsave 2041 104
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(dE/dx\040)
+ show
+ currentpoint pop 0 t
+ /Special findfont 43 sf 0 0 m
+(M)
+ show
+ currentpoint pop 0 t
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(GeV/cm)
+ show
+ currentpoint pop 0 t
+ /Special findfont 43 sf 0 0 m
+(N)
+ show
+ currentpoint pop 0 t
+ /Helvetica-Bold findfont 43 sf 0 0 m
+( `)
+ show
+ gr
+ /xs 0 def
+(Counts)
+ /Helvetica-Bold 43 stwn
+ gsave 68 2041
+ t 90 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(Counts)
+ show
+ gr
+ 1814 1814 227 227 bl 227 227 m 227 227 l 249 227 l 272 227 l 295 227 l 318 227
+ l 340 227 l 363 227 l 386 227 l 408 227 l 431 227 l 454 227 l 476 227 l 499 227
+ l 522 227 l 544 227 l 567 227 l 590 227 l 612 227 l 635 227 l 658 227 l 658 231
+ l 680 231 l 680 397 l 703 397 l 703 1300 l 726 1300 l 726 1860 l 748 1860 l 748
+ 1697 l 771 1697 l 771 1393 l 794 1393 l 794 992 l 816 992 l 816 831 l 839 831 l
+ 839 636 l 862 636 l 862 516 l 885 516 l 885 481 l 907 481 l 907 443 l 930 443 l
+ 930 380 l 953 380 l 953 343 l 975 343 l 975 324 l 998 324 l 998 283 l 1021 283
+ l 1021 301 l 1043 301 l 1043 288 l 1066 288 l 1066 294 l 1089 294 l 1089 272 l
+ 1111 272 l 1111 262 l 1134 262 l 1134 272 l 1157 272 l 1157 251 l 1179 251 l
+ 1179 253 l 1202 253 l 1202 255 l 1225 255 l 1225 257 l 1247 257 l 1247 245 l
+ 1270 245 l 1270 244 l 1293 244 l 1293 247 l 1315 247 l 1315 249 l 1338 249 l
+ 1338 240 l 1361 240 l 1361 231 l 1383 231 l 1383 244 l 1406 244 l 1406 234 l
+ 1429 234 l 1429 231 l 1452 231 l 1452 238 l 1474 238 l 1497 238 l 1497 234 l
+ 1520 234 l 1520 236 l 1542 236 l 1542 231 l 1565 231 l 1565 234 l 1588 234 l
+ 1588 232 l 1610 232 l 1610 231 l 1633 231 l 1633 229 l 1656 229 l 1656 234 l
+ 1678 234 l 1701 234 l 1701 232 l 1724 232 l 1724 229 l 1746 229 l 1769 229 l
+ 1769 234 l 1792 234 l 1792 227 l 1814 227 l 1814 232 l 1837 232 l 1837 234 l
+ 1860 234 l 1860 229 l 1882 229 l 1882 231 l 1905 231 l 1905 227 l 1928 227 l
+ 1928 229 l 1950 229 l 1950 227 l 1973 227 l 1973 229 l 1996 229 l 1996 231 l
+ 2019 231 l 2041 231 l 2041 227 l s 1 lw 227 227 m 227 2041 l s 4 lw 261 227 m
+ 227 227 l s 244 264 m 227 264 l s 244 301 m 227 301 l s 244 339 m 227 339 l s
+ 244 376 m 227 376 l s 261 413 m 227 413 l s 244 451 m 227 451 l s 244 488 m 227
+ 488 l s 244 525 m 227 525 l s 244 563 m 227 563 l s 261 600 m 227 600 l s 244
+ 637 m 227 637 l s 244 675 m 227 675 l s 244 712 m 227 712 l s 244 749 m 227 749
+ l s 261 787 m 227 787 l s 244 824 m 227 824 l s 244 861 m 227 861 l s 244 899 m
+ 227 899 l s 244 936 m 227 936 l s 261 973 m 227 973 l s 244 1011 m 227 1011 l s
+ 244 1048 m 227 1048 l s 244 1085 m 227 1085 l s 244 1123 m 227 1123 l s 261
+ 1160 m 227 1160 l s 244 1197 m 227 1197 l s 244 1235 m 227 1235 l s 244 1272 m
+ 227 1272 l s 244 1309 m 227 1309 l s 261 1347 m 227 1347 l s 244 1384 m 227
+ 1384 l s 244 1421 m 227 1421 l s 244 1459 m 227 1459 l s 244 1496 m 227 1496 l
+ s 261 1533 m 227 1533 l s 244 1570 m 227 1570 l s 244 1608 m 227 1608 l s 244
+ 1645 m 227 1645 l s 244 1682 m 227 1682 l s 261 1720 m 227 1720 l s 244 1757 m
+ 227 1757 l s 244 1794 m 227 1794 l s 244 1832 m 227 1832 l s 244 1869 m 227
+ 1869 l s 261 1906 m 227 1906 l s 261 1906 m 227 1906 l s 244 1944 m 227 1944 l
+ s 244 1981 m 227 1981 l s 244 2018 m 227 2018 l s
+ /xs 0 def
+(0)
+ /Helvetica-Bold 43 stwn
+ gsave 181 211
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(0)
+ show
+ gr
+ /xs 0 def
+(100)
+ /Helvetica-Bold 43 stwn
+ gsave 181 398
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(100)
+ show
+ gr
+ /xs 0 def
+(200)
+ /Helvetica-Bold 43 stwn
+ gsave 181 584
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(200)
+ show
+ gr
+ /xs 0 def
+(300)
+ /Helvetica-Bold 43 stwn
+ gsave 181 771
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(300)
+ show
+ gr
+ /xs 0 def
+(400)
+ /Helvetica-Bold 43 stwn
+ gsave 181 957
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(400)
+ show
+ gr
+ /xs 0 def
+(500)
+ /Helvetica-Bold 43 stwn
+ gsave 181 1144
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(500)
+ show
+ gr
+ /xs 0 def
+(600)
+ /Helvetica-Bold 43 stwn
+ gsave 181 1331
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(600)
+ show
+ gr
+ /xs 0 def
+(700)
+ /Helvetica-Bold 43 stwn
+ gsave 181 1517
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(700)
+ show
+ gr
+ /xs 0 def
+(800)
+ /Helvetica-Bold 43 stwn
+ gsave 181 1704
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(800)
+ show
+ gr
+ /xs 0 def
+(900)
+ /Helvetica-Bold 43 stwn
+ gsave 181 1891
+ t 0 r xs neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(900)
+ show
+ gr
+ 1 lw 227 227 m 2041 227 l s 4 lw 227 261 m 227 227 l s 263 244 m 263 227 l s
+ 299 244 m 299 227 l s 336 244 m 336 227 l s 372 244 m 372 227 l s 408 261 m 408
+ 227 l s 445 244 m 445 227 l s 481 244 m 481 227 l s 517 244 m 517 227 l s 553
+ 244 m 553 227 l s 590 261 m 590 227 l s 626 244 m 626 227 l s 662 244 m 662 227
+ l s 699 244 m 699 227 l s 735 244 m 735 227 l s 771 261 m 771 227 l s 807 244 m
+ 807 227 l s 844 244 m 844 227 l s 880 244 m 880 227 l s 916 244 m 916 227 l s
+ 953 261 m 953 227 l s 989 244 m 989 227 l s 1025 244 m 1025 227 l s 1061 244 m
+ 1061 227 l s 1098 244 m 1098 227 l s 1134 261 m 1134 227 l s 1170 244 m 1170
+ 227 l s 1207 244 m 1207 227 l s 1243 244 m 1243 227 l s 1279 244 m 1279 227 l s
+ 1315 261 m 1315 227 l s 1352 244 m 1352 227 l s 1388 244 m 1388 227 l s 1424
+ 244 m 1424 227 l s 1461 244 m 1461 227 l s 1497 261 m 1497 227 l s 1533 244 m
+ 1533 227 l s 1569 244 m 1569 227 l s 1606 244 m 1606 227 l s 1642 244 m 1642
+ 227 l s 1678 261 m 1678 227 l s 1715 244 m 1715 227 l s 1751 244 m 1751 227 l s
+ 1787 244 m 1787 227 l s 1823 244 m 1823 227 l s 1860 261 m 1860 227 l s 1896
+ 244 m 1896 227 l s 1932 244 m 1932 227 l s 1969 244 m 1969 227 l s 2005 244 m
+ 2005 227 l s 2041 261 m 2041 227 l s
+ /xs 0 def
+(0)
+ /Helvetica-Bold 43 stwn
+ gsave 227 172
+ t 0 r xs 2 div neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(0)
+ show
+ gr
+ /xs 0 def
+(0.01)
+ /Helvetica-Bold 43 stwn
+ gsave 408 172
+ t 0 r xs 2 div neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(0.01)
+ show
+ gr
+ /xs 0 def
+(0.02)
+ /Helvetica-Bold 43 stwn
+ gsave 590 172
+ t 0 r xs 2 div neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(0.02)
+ show
+ gr
+ /xs 0 def
+(0.03)
+ /Helvetica-Bold 43 stwn
+ gsave 771 172
+ t 0 r xs 2 div neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(0.03)
+ show
+ gr
+ /xs 0 def
+(0.04)
+ /Helvetica-Bold 43 stwn
+ gsave 953 172
+ t 0 r xs 2 div neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(0.04)
+ show
+ gr
+ /xs 0 def
+(0.05)
+ /Helvetica-Bold 43 stwn
+ gsave 1134 172
+ t 0 r xs 2 div neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(0.05)
+ show
+ gr
+ /xs 0 def
+(0.06)
+ /Helvetica-Bold 43 stwn
+ gsave 1315 172
+ t 0 r xs 2 div neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(0.06)
+ show
+ gr
+ /xs 0 def
+(0.07)
+ /Helvetica-Bold 43 stwn
+ gsave 1497 172
+ t 0 r xs 2 div neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(0.07)
+ show
+ gr
+ /xs 0 def
+(0.08)
+ /Helvetica-Bold 43 stwn
+ gsave 1678 172
+ t 0 r xs 2 div neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(0.08)
+ show
+ gr
+ /xs 0 def
+(0.09)
+ /Helvetica-Bold 43 stwn
+ gsave 1860 172
+ t 0 r xs 2 div neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(0.09)
+ show
+ gr
+ /xs 0 def
+(0.1)
+ /Helvetica-Bold 43 stwn
+ gsave 2041 172
+ t 0 r xs 2 div neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(0.1)
+ show
+ gr
+ /xs 0 def
+(x 10)
+ /Helvetica-Bold 43 stwn
+ gsave 2041 109
+ t 0 r xs 2 div neg 0 t 0 0 m
+ /Helvetica-Bold findfont 43 sf 0 0 m
+(x 10)
+ show
+ gr
+ /xs 0 def
+(-4)
+ /Helvetica-Bold 35 stwn
+ gsave 2105 141
+ t 0 r xs 2 div neg 0 t 0 0 m
+ /Helvetica-Bold findfont 35 sf 0 0 m
+(-4)
+ show
+ gr
+ [12 12] 0 sd 227 227 m 227 227 l 249 227 l 272 227 l 295 227 l 318 227 l 340
+ 227 l 363 227 l 386 227 l 408 227 l 431 227 l 454 227 l 476 227 l 499 227 l 522
+ 227 l 544 227 l 544 229 l 567 229 l 567 232 l 590 232 l 590 270 l 612 270 l 612
+ 352 l 635 352 l 635 546 l 658 546 l 658 901 l 680 901 l 680 1199 l 703 1199 l
+ 703 1490 l 726 1490 l 726 1628 l 748 1628 l 748 1533 l 771 1533 l 771 1404 l
+ 794 1404 l 794 1048 l 816 1048 l 816 738 l 839 738 l 839 572 l 862 572 l 862
+ 417 l 885 417 l 885 331 l 907 331 l 907 272 l 930 272 l 930 244 l 953 244 l 953
+ 231 l 975 231 l 998 231 l 998 227 l 1021 227 l 1043 227 l 1066 227 l 1089 227 l
+ 1111 227 l 1134 227 l 1157 227 l 1179 227 l 1202 227 l 1225 227 l 1247 227 l
+ 1270 227 l 1293 227 l 1315 227 l 1338 227 l 1361 227 l 1361 227 l 1383 227 l
+ 1406 227 l 1429 227 l 1452 227 l 1474 227 l 1497 227 l 1520 227 l 1542 227 l
+ 1565 227 l 1588 227 l 1610 227 l 1633 227 l 1656 227 l 1678 227 l 1701 227 l
+ 1724 227 l 1746 227 l 1769 227 l 1792 227 l 1814 227 l 1837 227 l 1860 227 l
+ 1882 227 l 1905 227 l 1928 227 l 1928 227 l 1950 227 l 1973 227 l 1996 227 l
+ 2019 227 l 2041 227 l s [4 8] 0 sd 227 227 m 227 227 l 249 227 l 272 227 l 295
+ 227 l 318 227 l 340 227 l 363 227 l 386 227 l 408 227 l 431 227 l 454 227 l 476
+ 227 l 499 227 l 499 231 l 522 231 l 522 244 l 544 244 l 544 257 l 567 257 l 567
+ 315 l 590 315 l 590 447 l 612 447 l 612 613 l 635 613 l 635 833 l 658 833 l 658
+ 1029 l 680 1029 l 680 1190 l 703 1190 l 703 1212 l 726 1212 l 726 1285 l 748
+ 1285 l 748 1141 l 771 1141 l 771 1085 l 794 1085 l 794 884 l 816 884 l 816 775
+ l 839 775 l 839 619 l 862 619 l 862 492 l 885 492 l 885 413 l 907 413 l 907 369
+ l 930 369 l 930 294 l 953 294 l 953 290 l 975 290 l 975 260 l 998 260 l 998 244
+ l 1021 244 l 1021 238 l 1043 238 l 1043 234 l 1066 234 l 1066 229 l 1089 229 l
+ 1089 231 l 1111 231 l 1111 227 l 1134 227 l 1134 229 l 1157 229 l 1157 227 l
+ 1179 227 l 1202 227 l 1225 227 l 1247 227 l 1270 227 l 1293 227 l 1315 227 l
+ 1338 227 l 1361 227 l 1361 227 l 1383 227 l 1406 227 l 1429 227 l 1452 227 l
+ 1474 227 l 1497 227 l 1520 227 l 1542 227 l 1565 227 l 1588 227 l 1610 227 l
+ 1633 227 l 1656 227 l 1678 227 l 1701 227 l 1724 227 l 1746 227 l 1769 227 l
+ 1792 227 l 1814 227 l 1837 227 l 1860 227 l 1882 227 l 1905 227 l 1928 227 l
+ 1928 227 l 1950 227 l 1973 227 l 1996 227 l 2019 227 l 2041 227 l s
+ [12 15 4 15] 0 sd 227 227 m 227 227 l 249 227 l 272 227 l 295 227 l 318 227 l
+ 340 227 l 363 227 l 386 227 l 408 227 l 431 227 l 431 229 l 454 229 l 454 234 l
+ 476 234 l 476 242 l 499 242 l 499 277 l 522 277 l 522 335 l 544 335 l 544 412 l
+ 567 412 l 567 580 l 590 580 l 590 749 l 612 749 l 612 889 l 635 889 l 635 953 l
+ 658 953 l 658 984 l 680 984 l 680 1009 l 703 1009 l 703 942 l 726 942 l 726 962
+ l 748 962 l 748 869 l 771 869 l 771 820 l 794 820 l 794 725 l 816 725 l 816 677
+ l 839 677 l 839 580 l 862 580 l 862 492 l 885 492 l 885 458 l 907 458 l 907 404
+ l 930 404 l 930 341 l 953 341 l 953 328 l 975 328 l 975 315 l 998 315 l 998 277
+ l 1021 277 l 1021 270 l 1043 270 l 1043 255 l 1066 255 l 1066 262 l 1089 262 l
+ 1089 236 l 1111 236 l 1134 236 l 1134 238 l 1157 238 l 1157 231 l 1179 231 l
+ 1179 229 l 1202 229 l 1202 227 l 1225 227 l 1225 231 l 1247 231 l 1247 227 l
+ 1270 227 l 1293 227 l 1315 227 l 1338 227 l 1338 229 l 1361 229 l 1361 227 l
+ 1383 227 l 1406 227 l 1429 227 l 1452 227 l 1474 227 l 1497 227 l 1520 227 l
+ 1542 227 l 1565 227 l 1588 227 l 1610 227 l 1633 227 l 1656 227 l 1678 227 l
+ 1701 227 l 1724 227 l 1746 227 l 1769 227 l 1792 227 l 1814 227 l 1837 227 l
+ 1860 227 l 1882 227 l 1905 227 l 1928 227 l 1928 227 l 1950 227 l 1973 227 l
+ 1996 227 l 2019 227 l 2041 227 l s [] 0 sd 227 227 m 227 227 l 249 227 l 272
+ 227 l 295 227 l 318 227 l 340 227 l 363 227 l 386 227 l 408 227 l 408 232 l 431
+ 232 l 431 247 l 454 247 l 454 277 l 476 277 l 476 324 l 499 324 l 499 419 l 522
+ 419 l 522 544 l 544 544 l 544 600 l 567 600 l 567 738 l 590 738 l 590 742 l 612
+ 742 l 612 830 l 635 830 l 635 798 l 658 798 l 658 789 l 680 789 l 680 764 l 703
+ 764 l 703 772 l 726 772 l 726 766 l 748 766 l 748 691 l 771 691 l 771 596 l 794
+ 596 l 794 619 l 816 619 l 816 565 l 839 565 l 839 553 l 862 553 l 862 479 l 885
+ 479 l 885 430 l 907 430 l 907 423 l 930 423 l 930 456 l 953 456 l 953 393 l 975
+ 393 l 975 361 l 998 361 l 998 359 l 1021 359 l 1021 346 l 1043 346 l 1043 329 l
+ 1066 329 l 1066 307 l 1089 307 l 1089 285 l 1111 285 l 1111 294 l 1134 294 l
+ 1134 281 l 1157 281 l 1157 270 l 1179 270 l 1179 260 l 1202 260 l 1202 247 l
+ 1225 247 l 1247 247 l 1247 245 l 1270 245 l 1270 234 l 1293 234 l 1315 234 l
+ 1338 234 l 1361 234 l 1361 244 l 1383 244 l 1383 229 l 1406 229 l 1406 232 l
+ 1429 232 l 1429 229 l 1452 229 l 1452 231 l 1474 231 l 1474 227 l 1497 227 l
+ 1497 229 l 1520 229 l 1520 227 l 1542 227 l 1542 231 l 1565 231 l 1565 229 l
+ 1588 229 l 1610 229 l 1610 227 l 1633 227 l 1656 227 l 1678 227 l 1701 227 l
+ 1724 227 l 1746 227 l 1769 227 l 1792 227 l 1814 227 l 1837 227 l 1860 227 l
+ 1882 227 l 1905 227 l 1928 227 l 1928 227 l 1950 227 l 1973 227 l 1996 227 l
+ 2019 227 l 2041 227 l s [] 0 sd 227 227 m 227 231 l 249 231 l 249 234 l 272 234
+ l 272 249 l 295 249 l 295 266 l 318 266 l 318 270 l 340 270 l 340 300 l 363 300
+ l 363 384 l 386 384 l 386 460 l 408 460 l 408 499 l 431 499 l 431 570 l 454 570
+ l 454 667 l 476 667 l 476 691 l 499 691 l 499 706 l 522 706 l 522 699 l 544 699
+ l 544 706 l 567 706 l 567 660 l 590 660 l 590 671 l 612 671 l 612 585 l 635 585
+ l 635 563 l 658 563 l 658 559 l 680 559 l 680 555 l 703 555 l 703 490 l 726 490
+ l 726 434 l 748 434 l 748 454 l 771 454 l 771 423 l 794 423 l 794 395 l 816 395
+ l 816 393 l 839 393 l 839 389 l 862 389 l 862 331 l 885 331 l 885 348 l 907 348
+ l 907 328 l 930 328 l 930 331 l 953 331 l 953 315 l 975 315 l 975 326 l 998 326
+ l 998 303 l 1021 303 l 1021 309 l 1043 309 l 1043 287 l 1066 287 l 1066 303 l
+ 1089 303 l 1089 313 l 1111 313 l 1111 292 l 1134 292 l 1134 279 l 1157 279 l
+ 1157 272 l 1179 272 l 1179 292 l 1202 292 l 1202 305 l 1225 305 l 1225 257 l
+ 1247 257 l 1247 268 l 1270 268 l 1270 273 l 1293 273 l 1293 268 l 1315 268 l
+ 1315 270 l 1338 270 l 1338 255 l 1361 255 l 1361 259 l 1383 259 l 1383 255 l
+ 1406 255 l 1406 266 l 1429 266 l 1429 249 l 1452 249 l 1452 251 l 1474 251 l
+ 1474 268 l 1497 268 l 1497 244 l 1520 244 l 1520 238 l 1542 238 l 1542 244 l
+ 1565 244 l 1588 244 l 1588 247 l 1610 247 l 1633 247 l 1633 242 l 1656 242 l
+ 1656 238 l 1678 238 l 1678 240 l 1701 240 l 1701 245 l 1724 245 l 1724 244 l
+ 1746 244 l 1746 234 l 1769 234 l 1792 234 l 1814 234 l 1837 234 l 1837 238 l
+ 1860 238 l 1860 236 l 1882 236 l 1882 238 l 1905 238 l 1905 232 l 1928 232 l
+ 1928 232 l 1950 232 l 1950 236 l 1973 236 l 1973 234 l 1996 234 l 2019 234 l
+ 2019 236 l 2041 236 l 2041 227 l s [12 12] 0 sd 227 227 m 227 326 l 249 326 l
+ 249 268 l 272 268 l 272 354 l 295 354 l 295 404 l 318 404 l 318 406 l 340 406 l
+ 340 473 l 363 473 l 363 516 l 386 516 l 386 542 l 408 542 l 408 652 l 431 652 l
+ 431 654 l 454 654 l 454 593 l 476 593 l 476 667 l 499 667 l 499 568 l 522 568 l
+ 522 637 l 544 637 l 544 682 l 567 682 l 567 587 l 590 587 l 590 598 l 612 598 l
+ 612 496 l 635 496 l 635 522 l 658 522 l 658 527 l 680 527 l 680 466 l 703 466 l
+ 703 464 l 726 464 l 726 440 l 748 440 l 748 436 l 771 436 l 771 371 l 794 371 l
+ 794 400 l 816 400 l 816 384 l 839 384 l 839 341 l 862 341 l 862 335 l 885 335 l
+ 885 301 l 907 301 l 907 324 l 930 324 l 930 313 l 953 313 l 953 316 l 975 316 l
+ 975 296 l 998 296 l 998 285 l 1021 285 l 1021 288 l 1043 288 l 1043 279 l 1066
+ 279 l 1066 268 l 1089 268 l 1089 260 l 1111 260 l 1111 283 l 1134 283 l 1134
+ 255 l 1157 255 l 1157 266 l 1179 266 l 1179 255 l 1202 255 l 1202 259 l 1225
+ 259 l 1225 245 l 1247 245 l 1247 251 l 1270 251 l 1270 245 l 1293 245 l 1293
+ 257 l 1315 257 l 1315 251 l 1338 251 l 1338 245 l 1361 245 l 1361 242 l 1383
+ 242 l 1383 255 l 1406 255 l 1406 236 l 1429 236 l 1429 242 l 1452 242 l 1452
+ 249 l 1474 249 l 1474 257 l 1497 257 l 1497 238 l 1520 238 l 1542 238 l 1542
+ 240 l 1565 240 l 1588 240 l 1588 242 l 1610 242 l 1610 244 l 1633 244 l 1633
+ 253 l 1656 253 l 1656 247 l 1678 247 l 1678 245 l 1701 245 l 1701 253 l 1724
+ 253 l 1724 240 l 1746 240 l 1746 238 l 1769 238 l 1769 242 l 1792 242 l 1792
+ 240 l 1814 240 l 1814 249 l 1837 249 l 1837 236 l 1860 236 l 1860 240 l 1882
+ 240 l 1905 240 l 1905 242 l 1928 242 l 1928 240 l 1950 240 l 1950 231 l 1973
+ 231 l 1973 240 l 1996 240 l 1996 247 l 2019 247 l 2019 244 l 2041 244 l 2041
+ 227 l s
+gr gr showpage
+end
+%%EOF
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apa/teched.html b/Master/texmf-doc/doc/english/latex-web-companion/apa/teched.html
new file mode 100644
index 00000000000..838cda2a55b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apa/teched.html
@@ -0,0 +1,47 @@
+<HTML>
+<!-- teched.html -->
+<!-- (C) Copyright 1998 by Robert S. Sutor. All rights reserved. -->
+<HEAD>
+ <META HTTP-EQUIV="Content-Type"
+ CONTENT="text/html; charset=iso-8859-1">
+ <META NAME="GENERATOR"
+ CONTENT="Mozilla/4.01 [en] (Win95; I) [Netscape]">
+ <TITLE>teched Sample LaTeX Editor</TITLE>
+</HEAD>
+
+<!-- This is a very simple LaTeX editor built using the -->
+<!-- IBM techexplorer Hypermedia Browser and a Java applet. -->
+
+<BODY>
+<CENTER>
+
+<!-- The upper window is controlled by techexplorer. We -->
+<!-- give the name 'teInput' to this window. We are -->
+<!-- using a table to put a frame around the window. -->
+
+<TABLE BORDER=1>
+ <TR>
+ <TD>
+ <EMBED TYPE="application/x-techexplorer"
+ TEXDATA="\(\)"
+ NAME="teInput" WIDTH=600 HEIGHT=150>
+ </TD>
+ </TR>
+</TABLE>
+
+<!-- The lower window is handled by the 'teched' Java -->
+<!-- applet. Like the techexplorer window, it is 600 -->
+<!-- pixels wide. -->
+
+<TABLE BORDER=1>
+ <TR>
+ <TD>
+ <APPLET CODE="teched.class"
+ NAME="teched" ALIGN=CENTER
+ WIDTH=600 HEIGHT=130 MAYSCRIPT></APPLET>
+ </TD>
+ </TR>
+</TABLE>
+</CENTER>
+</BODY>
+</HTML> \ No newline at end of file
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apa/teched.java b/Master/texmf-doc/doc/english/latex-web-companion/apa/teched.java
new file mode 100644
index 00000000000..4f494f1ad74
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apa/teched.java
@@ -0,0 +1,187 @@
+// teched.java
+// (C) Copyright 1998 by Robert S. Sutor. All rights reserved.
+
+// We first import the classes we need from the standard Java
+// distribution. This will work with Java 1.0 or higher.
+
+import java.awt.*;
+import java.awt.event.*;
+import java.lang.*;
+import java.applet.Applet;
+
+// The following brings in the Netscape LiveConnect classes
+// that we will use.
+
+import netscape.javascript.JSObject;
+
+// These are the classes that we use that are exposed by
+// techexplorer. The first is the basic interface to the
+// plug-in. The others are the event and listener classes.
+
+import ibm.techexplorer.plugin.techexplorerPlugin;
+import ibm.techexplorer.awt.AWTEvent;
+import ibm.techexplorer.awt.event.KeyListener;
+import ibm.techexplorer.awt.event.KeyEvent;
+
+public class teched
+ extends java.applet.Applet
+ implements KeyListener
+{
+ // The JavaScript window object
+ JSObject Window = null;
+ // The JavaScript document object
+ JSObject Document = null;
+
+ // The techexplorer plug-in instance
+ techexplorerPlugin tePlugin = null;
+ // The editable text area for the markup source
+ TextArea markupInputArea = null;
+ // The 'Clear input' button
+ Button clearInputButton = null;
+
+ // A utility buffer for holding the markup.
+ StringBuffer markupString = new StringBuffer("");
+
+ public boolean action(Event evt, Object arg) {
+ // We only handle the 'Clear input' action.
+
+ boolean result = false;
+
+ if ( evt.target == clearInputButton ) {
+ // Empty the markup edit area.
+ markupInputArea.setText( "" );
+
+ // Reinitialize the techexplorer document. This
+ // needs to be a non-empty string to actually
+ // updated the document, so we give it some
+ // non-visible input.
+
+ tePlugin.reloadFromTeXString( "\\(\\)" );
+
+ result = true;
+ }
+
+ return result;
+ }
+
+ public void init() {
+ // Initialize the components we are displaying
+ // with this Java applet.
+
+ clearInputButton = new Button("Clear input");
+ markupInputArea = new TextArea( 5, 80 );
+
+ this.setLayout( new FlowLayout() );
+ this.add( markupInputArea );
+ this.add( clearInputButton );
+ }
+
+ public void keyPressed( ibm.techexplorer.awt.event.KeyEvent e ) {
+ // We don't do anything with this event given us by
+ // techexplorer. But see 'keyTyped'.
+ }
+
+ public void keyTyped( ibm.techexplorer.awt.event.KeyEvent e ) {
+ // This is a naive (but effective!) way of dealing with
+ // keys coming to us from techexplorer. We grab the key
+ // that was pressed and put it on the end of our markup.
+ // Then we update the techexplorer window.
+
+ if ( e.getSource() == tePlugin ) {
+ markupInputArea.appendText(
+ ( new Character( e.getKeyChar() )).toString() );
+
+ // This replaces the document within the techexplorer
+ // window with that gotten by parsing the string
+ // passed to it.
+
+ tePlugin.reloadFromTeXString( markupInputArea.getText() );
+ }
+ }
+
+ public void keyReleased( ibm.techexplorer.awt.event.KeyEvent e ) {
+ // This is where we deal with key release events coming to
+ // us from the techexplorer window.
+
+ switch ( e.getKeyCode() ) {
+ case KeyEvent.VK_DELETE:
+ // When we see a 'delete' key, we remove the last character
+ // in the markup.
+
+ if ( e.getSource() == tePlugin ) {
+ markupString = new StringBuffer( markupInputArea.getText() );
+ int length = markupString.length();
+ if ( length > 0 )
+ --length;
+ markupString.setLength( length );
+ markupInputArea.setText( markupString.toString() );
+ tePlugin.reloadFromTeXString( markupInputArea.getText() );
+ }
+ break;
+
+ case KeyEvent.VK_ENTER:
+ // When we see that the 'enter' key has been pressed, we
+ // insert a newline in the markup. This improves readability.
+
+ if ( e.getSource() == tePlugin ) {
+ markupInputArea.appendText( "\n" );
+ tePlugin.reloadFromTeXString( markupInputArea.getText() );
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ public boolean keyUp( Event evt, int key )
+ {
+ // This key is one from the markup input area.
+ // When a key is released, update the techexplorer
+ // document with the current markup.
+
+ boolean result = false;
+
+ if ( evt.target == markupInputArea ) {
+ if ( evt.id == Event.KEY_RELEASE ) {
+ int length = markupInputArea.getText().length();
+ if ( length > 0 )
+ tePlugin.reloadFromTeXString(
+ markupInputArea.getText() );
+ else
+ tePlugin.reloadFromTeXString( "\\(\\)" );
+ }
+
+ result = true;
+ }
+
+ return result;
+ }
+
+ public void start() {
+ // Initialize the Netscape JavaScript objects.
+
+ Window = (JSObject) JSObject.getWindow(this);
+ Document = (JSObject) Window.getMember("document");
+
+ // Try to get the techexplorer plug-in object.
+ tePlugin = (techexplorerPlugin) Document.getMember("teInput");
+
+ if ( tePlugin == null )
+ // If we didn't get it, print a debug message.
+ System.out.println("teched: start(): null teched");
+ else
+ // Otherwise add the listener for techexplorer keys.
+ tePlugin.addKeyListener( (KeyListener) this );
+ }
+
+ public void stop() {
+ if ( tePlugin == null )
+ // If we don't have the techexplorer plug-in object,
+ // print a debug message.
+ System.out.println("teched: stop(): null teched");
+ else
+ // Otherwise remove the listener for techexplorer keys.
+ tePlugin.removeKeyListener( (KeyListener) this );
+ }
+}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apb/InvitationSAX.class b/Master/texmf-doc/doc/english/latex-web-companion/apb/InvitationSAX.class
new file mode 100644
index 00000000000..c9e0f15418d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apb/InvitationSAX.class
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apb/InvitationSAX.java b/Master/texmf-doc/doc/english/latex-web-companion/apb/InvitationSAX.java
new file mode 100644
index 00000000000..ba3821e0d1d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apb/InvitationSAX.java
@@ -0,0 +1,53 @@
+import org.xml.sax.HandlerBase;
+import org.xml.sax.AttributeList;
+
+public class InvitationSAX extends HandlerBase {
+
+ public void startElement (String Ename, AttributeList atts)
+ { if (Ename.equals("invitation"))
+ {System.out.print("\\documentclass[]{article}\n"
+ + "\\usepackage{invitation}\n"
+ + "\\begin{document}\n"
+ + "\\begin{Front}\n");
+ for (int i = 0; i < atts.getLength(); i++) {
+ String Aname = atts.getName(i);
+ String type = atts.getType(i);
+ String value = atts.getValue(i);
+ if (Aname.equals("date"))
+ System.out.print("\\Date{" + value + "}\n");
+ else if (Aname.equals("signature"))
+ System.out.print("\\Signature{" + value + "}\n");
+ else if (Aname.equals("to"))
+ System.out.print("\\To{" + value + "}\n");
+ else if (Aname.equals("where"))
+ System.out.print("\\Where{" + value + "}\n");
+ else if (Aname.equals("why"))
+ System.out.print("\\Why{" + value + "}\n");
+ else System.out.print("INVALID ATTRIBUTE!!! " + value + "\n");
+ } // end attributes of invitation
+ System.out.println("\\end{Front}");
+ System.out.println("\\begin{Body}");
+ } // end element invitation
+ if (Ename.equals("par"))
+ System.out.print("\\par ");
+ if (Ename.equals("emph"))
+ System.out.print("\\emph{");
+ } // End of startElement
+
+ public void endElement (String Ename)
+ { if (Ename.equals("invitation"))
+ System.out.print("\\end{Body}\n"
+ + "\\begin{Back}\n"
+ + "\\end{Back}\n"
+ + "\\end{document}\n");
+ if (Ename.equals("emph"))
+ System.out.print("}");
+// if (Ename.equals("par")) ---> do nothing
+ } // End of endElement
+
+ public void characters(char ch[],int start,int length)
+ { for (int i=start; i<start+length; i++)
+ {System.out.print(ch[i]);}
+ } // End of characters
+
+} // end of InvitationSAX
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apb/MySAXApp.class b/Master/texmf-doc/doc/english/latex-web-companion/apb/MySAXApp.class
new file mode 100644
index 00000000000..e9493a5434b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apb/MySAXApp.class
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apb/MySAXApp.java b/Master/texmf-doc/doc/english/latex-web-companion/apb/MySAXApp.java
new file mode 100644
index 00000000000..59862c7d860
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apb/MySAXApp.java
@@ -0,0 +1,16 @@
+// MySAXApp.java -- Main driver class
+// --> calls InvitationSAX which has customized code
+import org.xml.sax.Parser;
+import org.xml.sax.DocumentHandler;
+import org.xml.sax.helpers.ParserFactory;
+
+public class MySAXApp {
+ static final String parserClass = "com.microstar.xml.SAXDriver";
+ public static void main (String args[])
+ throws Exception
+ { Parser parser = ParserFactory.makeParser(parserClass);
+ DocumentHandler handler = new InvitationSAX();
+ parser.setDocumentHandler(handler);
+ for (int i = 0; i < args.length; i++) {parser.parse(args[i]);}
+ }
+}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apb/README.apb b/Master/texmf-doc/doc/english/latex-web-companion/apb/README.apb
new file mode 100644
index 00000000000..0a6bb120150
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apb/README.apb
@@ -0,0 +1,56 @@
+Files in Appendix B of the LaTeX Web Companion
+
+Section B.4
++++++++++++
+
+biblioxml1.dtd DTD for 1st instance BibTeX database (Section B.4.4.2)
+bibliotest1.xml XML test file for the above
+
+biblioxml2.dtd DTD for 1st instance BibTeX database (Section B.4.4.3)
+mybiblio.dtd user customization for the above DTD
+bibliotest2.xml XML test file for the above
+
+
+makelatex.sh Bourne shell script to run the LaTeX job with xt and
+ obtain Latin 1 output.
+utf82latin1.sh Bourne shell script running the UTF-8 to Latin 1
+ Java program (see the directory apc)
+
+minilatex.dtd DTD for mini version of LaTeX (Section B.4.5.1)
+
+latexmath.dtd Supplemetary DTDs for use with math (Section B.4.5.2)
+latexmml.dtd
+
+minilatexexa.xml XML source using LaTeX-like markup (Section B.4.5.3)
+minilatex.xsl XSL file to generate LaTeX from above (Section B.4.5.4)
+minilatexexa.tex Final LaTeX result obtained (note: in the book we by hand
+ made the pages 6% higher to keep everything on two pages)
+colorcir.eps EPS file referenced in the above
+
+
+
+Section B.6
++++++++++++
+
+InvitationSAX.class Java and Class files for the SAX example (Section B.6.2)
+InvitationSAX.java
+MySAXApp.class
+MySAXApp.java
+
+invitation2.dtd Source files used as input for sax run
+invitation2.xml
+
+To run Java you should set the CLASSPATH variable to point to the sax
+and Aelfred (or some other SAX XML parser) jar or zip archives
+export CLASSPATH=.:$T/java/aelfred.zip:$T/java/sax.jar
+
+java MySAXApp file:/usr/goossens/invitation2.xml > inv2.tex
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ the full URL (path) must be specified
+
+inv2.tex Result LaTeX file of above run
+invitation.sty Package to generate dvi/pdf file
+
+
+
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apb/bibliotest1.xml b/Master/texmf-doc/doc/english/latex-web-companion/apb/bibliotest1.xml
new file mode 100644
index 00000000000..9ce2bb2e44a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apb/bibliotest1.xml
@@ -0,0 +1,116 @@
+<!DOCTYPE biblio SYSTEM "biblioxml1.dtd" [
+<!ENTITY AW "Addison-Wesley">
+<!ENTITY AW:adr "Reading, Massachusetts">
+<!ENTITY emdash "---">
+<!ENTITY endash "--">
+<!ENTITY ouml '\"o'>
+<!ENTITY j-TUGboat "TUGboat">
+<!ENTITY LaTeX "\LaTeX{}">
+<!ENTITY TeX "\TeX{}">
+<!ENTITY WEB "\textsc{web}">
+<!-- abreviations for the months -->
+<!ENTITY jan "Jan.">
+<!ENTITY feb "Feb.">
+<!ENTITY mar "Mar.">
+<!ENTITY apr "Apr.">
+<!ENTITY may "May">
+<!ENTITY jun "Jun.">
+<!ENTITY jul "Jul.">
+<!ENTITY aug "Aug.">
+<!ENTITY sep "Sep.">
+<!ENTITY oct "Oct.">
+<!ENTITY nov "Nov.">
+<!ENTITY dec "Dec.">
+]>
+<biblio>
+<manual id="Dynatext">
+ <title>Dynatext, Electronic Book Indexer/Browser</title>
+ <organization>Electronic Book Technology Inc.</organization>
+ <address>Providence, Rhode Island</address>
+ <year>1991</year>
+</manual>
+ <book id="Eijkhout:1991">
+ <author><names><first>Victor</first><last>Eijkhout</last></names></author>
+ <title>&TeX; by Topic, a &TeX;nicians Reference</title>
+ <publisher>&AW;</publisher>
+ <year>1991</year>
+ <address>&AW:adr;</address>
+</book>,
+<techreport id="EVH:Office">
+ <author><names><first>Eric</first><last>van Herwijnen</last></names></author>
+ <title>Future Office Systems Requirements</title>
+ <institution>CERN DD Internal Note</institution>
+ <year>1988</year>
+ <month>&nov;</month>
+</techreport>
+<article id="Felici:1991">
+ <author><names><first>James</first><last>Felici</last></names></author>
+ <title>PostScript versus TrueType</title>
+ <journal>Macworld</journal>
+ <year>1991</year>
+ <volume>8</volume>
+ <pages>195&endash;201</pages>
+ <month>&sep;</month>
+</article>
+<techreport id="Knuth:WEB">
+ <author><names><first>Donald E.</first><last>Knuth</last></names></author>
+ <title>The &WEB; System of Structured Documentation</title>
+ <institution>Department of Computer Science, Stanford University</institution>
+ <year>1983</year>
+ <number>STAN-CS-83-980</number>
+ <address>Stanford, CA 94305</address>
+ <month>&sep;</month>
+</techreport>
+<phdthesis id="Liang:1983">
+ <author><names><first>Franklin Mark</first><last>Liang</last></names></author>
+ <title>Word Hy-phen-a-tion by Com-pu-ter</title>
+ <school>Stanford University</school>
+ <year>1983</year>
+ <address>Stanford, CA 94305</address>
+ <month>&jun;</month>
+ <note>Also available as Stanford University, Department of
+ Computer Science Report No. STAN-CS-83-977</note>
+</phdthesis>
+<article id="Mittelbach-Schoepf:1990">
+ <author><names><first>Frank</first><last>Mittelbach</last><and/>
+ <first>Rainer</first><last>Sch&ouml;pf</last></names></author>
+ <title>The New Font Selection &emdash; User Interface to
+ Standard &LaTeX;</title>
+ <journal>&j-TUGboat;</journal>
+ <year>1990</year>
+ <volume>11</volume>
+ <number>2</number>
+ <pages>297&endash;305</pages>
+</article>
+<incollection id="Wood:color" crossref="Roth:postscript">
+ <author><names><first>Pat</first><last>Wood</last></names></author>
+ <title>PostScript Color Separation</title>
+ <booktitle>Real World PostScript</booktitle>
+ <publisher>&AW;</publisher>
+ <year>1988</year>
+ <pages>201&endash;225</pages>
+</incollection>
+<book id="Roth:postscript">
+ <editor><names><first>Stephen E.</first><last>Roth</last></names></editor>
+ <title>Real World PostScript</title>
+ <publisher>&AW;</publisher>
+ <year>1988</year>
+ <address>&AW:adr;</address>
+ <ISBN>0-201-06663-7</ISBN>
+</book>
+<inproceedings id="Yannis:1991">
+ <author><names><first>Yannis</first><last>Haralambous</last></names></author>
+ <title>&TeX; and those other languages</title>
+ <booktitle>1991 Annual Meeting Proceedings, Part 2, &TeX; Users Group,
+ Twelfth Annual Meeting, Dedham, Massachusetts, July 15--18, 1991
+ </booktitle>
+ <year>1991</year>
+ <editor><names><first>Hope</first><last>Hamilton</last></names></editor>
+ <volume>12</volume>
+ <series>&j-TUGboat;</series>
+ <pages>539&endash;548</pages>
+ <address>Providence, Rhode Island</address>
+ <month>&dec;</month>
+ <organization>&TeX; Users Group</organization>
+</inproceedings>
+</biblio>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apb/bibliotest2.xml b/Master/texmf-doc/doc/english/latex-web-companion/apb/bibliotest2.xml
new file mode 100644
index 00000000000..e4d45968120
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apb/bibliotest2.xml
@@ -0,0 +1,114 @@
+<!DOCTYPE biblio SYSTEM "mybiblio.dtd">
+<biblio>
+<manual id ="Dynatext"
+ organization="Electronic Book Technology Inc."
+ address ="Providence, Rhode Island"
+ year ="1991">
+ <title>Dynatext, Electronic Book Indexer/Browser</title>
+</manual>
+<book id ="Eijkhout:1991"
+ publisher="&AW;"
+ year ="1991"
+ address ="&AW:adr;">
+ <author>
+ <name><first>Victor</first><last>Eijkhout</last></name>
+ </author>
+ <title>&TeX; by Topic, a &TeX;nicians Reference</title>
+</book>
+<techreport id ="EVH:Office"
+ institution="CERN DD Internal Note"
+ month ="nov"
+ year ="1988">
+ <author>
+ <name><first>Eric</first><last>van Herwijnen</last></name>
+ </author>
+ <title>Future Office Systems Requirements</title>
+</techreport>
+<article id ="Felici:1991"
+ journal="Macworld"
+ month ="sep"
+ year ="1991"
+ volume ="8"
+ pages ="195&endash;201">
+ <author><name><first>James</first><last>Felici</last></name></author>
+ <title>PostScript versus TrueType</title>
+</article>
+<techreport id ="Knuth:WEB"
+ institution="Department of Computer Science, Stanford University"
+ address ="Stanford, CA 94305"
+ month ="sep"
+ year ="1983"
+ number ="STAN-CS-83-980">
+ <author><name><first>Donald E.</first><last>Knuth</last></name></author>
+ <title>The &WEB; System of Structured Documentation</title>
+</techreport>
+<phdthesis id ="Liang:1983"
+ school="Stanford University"
+ address="Stanford, CA 94305"
+ month ="jun"
+ year ="1983">
+ <author><name><first>Franklin Mark</first><last>Liang</last></name></author>
+ <title>Word Hy-phen-a-tion by Com-pu-ter</title>
+ <note>Also available as Stanford University, Department of
+ Computer Science Report No. STAN-CS-83-977
+ </note>
+</phdthesis>
+<article id="Mittelbach-Schoepf:1990"
+ journal="&j-TUGboat;"
+ year="1990"
+ volume="11"
+ number="2"
+ pages="297&endash;305">
+ <author><name><first>Frank</first><last>Mittelbach</last></name>
+ <and/>
+ <name><first>Rainer</first><last>Sch&ouml;pf</last></name>
+ </author>
+ <title>
+ The New Font Selection &emdash; User Interface to Standard &LaTeX;"
+ </title>
+</article>
+<incollection id ="Wood:color"
+ crossref ="Roth:postscript"
+ publisher="&AW;"
+ year ="1988"
+ pages ="201&endash;225">
+ <author><name><first>Pat</first><last>Wood</last></name></author>
+ <title>PostScript Color Separation</title>
+ <booktitle>Real World PostScript</booktitle>
+</incollection>
+<book id ="Roth:postscript"
+ publisher="&AW;"
+ year ="1988"
+ address ="&AW:adr;"
+ ISBN ="0-201-06663-7">
+ <editor><name><first>Stephen E.</first><last>Roth</last></name></editor>
+ <title>Real World PostScript</title>
+</book>
+<inproceedings id ="Yannis:1991"
+ series ="&j-TUGboat;"
+ volume ="12"
+ pages ="539&endash;548"
+ organization="&TeX; Users Group"
+ address ="Providence, Rhode Island"
+ month ="dec"
+ year ="1991">
+ <author><name><first>Yannis</first><last>Haralambous</last></name></author>
+ <title>&TeX; and those other languages</title>
+ <booktitle>1991 Annual Meeting Proceedings, Part 2, &TeX; Users Group,
+ Twelfth Annual Meeting, Dedham, Massachusetts, July 15--18, 1991
+ </booktitle>
+ <editor><name><first>Hope</first><last>Hamilton</last></name></editor>
+</inproceedings>
+<webdocument id="xml-latest-news"
+ organization="OASIS">
+ <title>SGML and XML News</title>
+ <author><name><first>Robin</first><last>Cover</last></name></author>
+ <url>http://www.oasis-open.org/cover/sgmlnew.html</url>
+ <note>
+ Information about what is (relatively) new in the `SGML/XML Web Page'
+ </note>
+ <annote>This page keeps you informed about the latest developments
+ in the area of SGML, XML, and related areas.
+ </annote>
+</webdocument>
+</biblio>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apb/biblioxml1.dtd b/Master/texmf-doc/doc/english/latex-web-companion/apb/biblioxml1.dtd
new file mode 100644
index 00000000000..4c6b61f9517
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apb/biblioxml1.dtd
@@ -0,0 +1,144 @@
+<!-- biblioxml1.dtd: XML DTD for BibTeX markup: version 1 -->
+
+<!-- Every biblio entry _must_ have an identifier and
+ _can_ have a cross-reference to an existing entry -->
+<!ENTITY % atype "id ID #REQUIRED
+ crossref IDREF #IMPLIED">
+
+<!-- Possible types of biblio entries -->
+<!ELEMENT biblio (#PCDATA | article| book| booklet| inbook| incollection|
+ inproceedings| manual| mastersthesis| misc|
+ phdthesis| proceedings| techreport| unpublished)*>
+
+<!-- Optional annotation, note, ISBN, or key (the latter for sorting) -->
+<!ENTITY % info "(annote|note|ISBN|key)*">
+
+<!-- An article from a journal or magazine -->
+<!ELEMENT article (author, title, journal, year,
+ volume?, number?, pages?, month?, %info;)>
+<!ATTLIST article %atype;>
+
+<!-- A book with an explicit publisher -->
+<!ELEMENT book ((author|editor), title, publisher, year,
+ (volume|number)?, series?, address?, edition?, month?, %info;)>
+<!ATTLIST book %atype;>
+
+<!-- A work that is printed or bound, but without a named -->
+<!-- publisher or sponsoring institution -->
+<!ELEMENT booklet (title ,
+ author, howpublished?, address?, month?, year?, %info;)>
+<!ATTLIST booklet %atype;>
+
+<!-- A part of a book, usually untitled; -->
+<!-- (a chapter, a sectional unit, or just a range of pages) -->
+<!ELEMENT inbook ((author|editor), title, (chapter|pages)*, publisher, year,
+ (volume|number)?, series?, type?, address?, edition?, month?, %info;)>
+<!ATTLIST inbook %atype;>
+
+<!-- A part of a book with its own title -->
+<!ELEMENT incollection (author, title, booktitle, publisher, year,
+ editor?, (volume|number)?, series?, type?, chapter?,
+ pages?, address?, edition?, month?, %info;)>
+<!ATTLIST incollection %atype;>
+
+<!-- An article in a conference proceedings -->
+<!ELEMENT inproceedings (author, title, booktitle, year,
+ editor?, (volume|number)?, series?, pages?, address?,
+ month?, organization?, publisher?, %info;)>
+<!ATTLIST inproceedings %atype;>
+
+<!-- Technical documentation -->
+<!ELEMENT manual (title,
+ author?, organization?, address?, edition?, month?, year?, %info;)>
+<!ATTLIST manual %atype;>
+
+<!-- A master's thesis -->
+<!ELEMENT mastersthesis (author, title, school, year,
+ type?, address?, month?, %info;)>
+<!ATTLIST mastersthesis %atype;>
+
+<!-- Miscelleneous: use this type if nothing else fits -->
+<!ELEMENT misc (author?, title?, howpublished?, month?, year?,%info;)>
+<!ATTLIST misc %atype;>
+
+<!-- A Ph. D. thesis -->
+<!ELEMENT phdthesis (author, title, school, year,
+ type?, address?, month?, %info;)>
+<!ATTLIST phdthesis %atype;>
+
+<!-- The porceedings of a conference -->
+<!ELEMENT proceedings (title , year ,
+ editor?, (volume|number)?, series?, address?,
+ month?, organization?, publisher?, %info;)>
+<!ATTLIST proceedings %atype;>
+
+<!-- A report published by a school or other institution -->
+<!-- usually numbered within a series -->
+<!ELEMENT techreport (author, title, institution, year,
+ type?, number?, address?, month?, %info;)>
+<!ATTLIST techreport %atype;>
+
+<!-- A document with author and title, but not formally published -->
+<!ELEMENT unpublished (author, title, note,
+ month? , key?)>
+<!ATTLIST unpublished %atype;>
+
+<!-- For adding typographic emphasis to the information -->
+<!ELEMENT emph (#PCDATA)>
+<!ATTLIST emph style (textbf|emph|textsf|textsl|texttt|quote) "emph">
+
+<!ENTITY % inline "(#PCDATA|emph)*">
+<!-- The basic fields (Lamport (1994), pages 162-164) -->
+
+ <!-- Usually the address of publisher or institution -->
+<!ELEMENT address (#PCDATA|emph)*>
+ <!-- Annotation (not used by standard styles) -->
+<!ELEMENT annote (#PCDATA|emph)*>
+ <!-- Author(s) in format described on pp. 157-158 -->
+<!ELEMENT author (names)>
+<!ELEMENT names ((first,last),(and,first,last)*)>
+<!ELEMENT last (#PCDATA|emph)*>
+<!ELEMENT first (#PCDATA|emph)*>
+<!ELEMENT and EMPTY>
+ <!-- Title of a book, used in incollection and inproceedings -->
+<!ELEMENT booktitle (#PCDATA|emph)*>
+ <!-- Chapter (or sectional unit) number -->
+<!ELEMENT chapter (#PCDATA|emph)*>
+ <!-- Edition of a book (e.g., "third") -->
+<!ELEMENT edition (#PCDATA|emph)*>
+ <!-- Names of editor(s) -->
+<!ELEMENT editor (names)>
+ <!-- Describe how something strange is published -->
+<!ELEMENT howpublished (#PCDATA|emph)*>
+ <!-- Sponsoring institution of a technical report -->
+<!ELEMENT institution (#PCDATA|emph)*>
+ <!-- The ISBN number (non-standard, but useful -->
+<!ELEMENT ISBN (#PCDATA)>
+ <!-- A journal's name -->
+<!ELEMENT journal (#PCDATA|emph)*>
+ <!-- Used for ordering the biblio entries -->
+<!ELEMENT key (#PCDATA)>
+ <!-- Month of publication (or writing, if not published) -->
+<!ELEMENT month (#PCDATA)>
+ <!-- Additional information to help the user -->
+<!ELEMENT note (#PCDATA|emph)*>
+ <!-- Number of a journal, magazine, report, etc. -->
+<!ELEMENT number (#PCDATA)>
+ <!-- Sponsor of conference or publisher of manual -->
+<!ELEMENT organization (#PCDATA|emph)*>
+ <!-- page, or page range -->
+<!ELEMENT pages (#PCDATA)>
+ <!-- Publisher's name -->
+<!ELEMENT publisher (#PCDATA|emph)*>
+ <!-- Name of the school where thesis was written -->
+<!ELEMENT school (#PCDATA|emph)*>
+ <!-- Name of the series or set of books -->
+<!ELEMENT series (#PCDATA|emph)*>
+ <!-- A work's title -->
+<!ELEMENT title (#PCDATA|emph)*>
+ <!-- Type of a technical report, e.g., "Research Note" -->
+<!ELEMENT type (#PCDATA|emph)*>
+ <!-- Volume number of a journal or multi-volume book -->
+<!ELEMENT volume (#PCDATA)>
+ <!-- Year of publication (or writing, if not published) -->
+<!ELEMENT year (#PCDATA)>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apb/biblioxml2.dtd b/Master/texmf-doc/doc/english/latex-web-companion/apb/biblioxml2.dtd
new file mode 100644
index 00000000000..806768a2df1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apb/biblioxml2.dtd
@@ -0,0 +1,194 @@
+<!-- biblioxml2.dtd: XML DTD for BibTeX markup: version 2 -->
+
+<!-- Supplementary entry types, optional fields and attributes -->
+<!ENTITY % local.info "">
+<!ENTITY % local.biblio "">
+<!ENTITY % local.keys "">
+<!ENTITY % info "note %local.info;">
+
+<!-- All base elements must have ID and can have cross-reference to -->
+<!-- an existing ID and include a key to sort, if needed -->
+<!ENTITY % keys "id ID #REQUIRED
+ crossref IDREF #IMPLIED
+ key IDREF #IMPLIED
+ %local.keys;">
+<!ENTITY % month 'month (jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec) #IMPLIED'>
+<!-- Possible types of biblio entries -->
+<!ELEMENT biblio (#PCDATA | article| book| booklet| inbook| incollection|
+ inproceedings| manual| mastersthesis| misc|
+ phdthesis| proceedings| techreport| unpublished
+ %local.biblio;)*>
+
+<!-- An article from a journal or magazine -->
+<!ELEMENT article (author,title,(%info;)*)>
+<!ATTLIST article %keys;
+ journal CDATA #REQUIRED
+ year CDATA #REQUIRED
+ %month;
+ number CDATA #IMPLIED
+ pages CDATA #IMPLIED
+ volume CDATA #IMPLIED>
+
+<!-- A book with an explicit publisher -->
+<!ELEMENT book ((author|editor),title,(%info;)*)>
+<!ATTLIST book %keys;
+ publisher CDATA #REQUIRED
+ year CDATA #REQUIRED
+ address CDATA #IMPLIED
+ edition CDATA #IMPLIED
+ %month;
+ number CDATA #IMPLIED
+ series CDATA #IMPLIED
+ volume CDATA #IMPLIED
+ ISBN CDATA #IMPLIED>
+
+<!-- A work that is printed or bound, but without a named -->
+<!-- publisher or sponsoring institution -->
+<!ELEMENT booklet (title,author?,(%info;)*)>
+<!ATTLIST booklet %keys;
+ address CDATA #IMPLIED
+ howpublished CDATA #IMPLIED
+ %month;
+ year CDATA #IMPLIED
+ ISBN CDATA #IMPLIED>
+
+<!-- A part of a book, usually untitled; -->
+<!-- (a chapter, a sectional unit, or just a range of pages) -->
+<!ELEMENT inbook ((author|editor),title,(%info;)*)>
+<!ATTLIST inbook %keys;
+ pages CDATA #REQUIRED
+ publisher CDATA #REQUIRED
+ year CDATA #REQUIRED
+ address CDATA #IMPLIED
+ chapter CDATA #IMPLIED
+ edition CDATA #IMPLIED
+ %month;
+ number CDATA #IMPLIED
+ series CDATA #IMPLIED
+ type CDATA #IMPLIED
+ volume CDATA #IMPLIED
+ ISBN CDATA #IMPLIED>
+
+<!-- A part of a book with its own title -->
+<!ELEMENT incollection (author,title,booktitle,editor?,(%info;)*)>
+<!ATTLIST incollection %keys;
+ publisher CDATA #REQUIRED
+ year CDATA #REQUIRED
+ address CDATA #IMPLIED
+ chapter CDATA #IMPLIED
+ edition CDATA #IMPLIED
+ %month;
+ number CDATA #IMPLIED
+ pages CDATA #IMPLIED
+ series CDATA #IMPLIED
+ type CDATA #IMPLIED
+ volume CDATA #IMPLIED
+ ISBN CDATA #IMPLIED>
+
+<!-- An article in a conference proceedings -->
+<!ELEMENT inproceedings (author,title,booktitle,editor?,(%info;)*)>
+<!ATTLIST inproceedings %keys;
+ year CDATA #REQUIRED
+ address CDATA #IMPLIED
+ %month;
+ number CDATA #IMPLIED
+ organization CDATA #IMPLIED
+ pages CDATA #IMPLIED
+ publisher CDATA #IMPLIED
+ series CDATA #IMPLIED
+ volume CDATA #IMPLIED
+ ISBN CDATA #IMPLIED>
+
+<!-- Technical documentation -->
+<!ELEMENT manual (title,author?,(%info;)*)>
+<!ATTLIST manual %keys;
+ address CDATA #IMPLIED
+ edition CDATA #IMPLIED
+ organization CDATA #IMPLIED
+ %month;
+ year CDATA #IMPLIED
+ ISBN CDATA #IMPLIED>
+
+<!-- A master's thesis -->
+<!ELEMENT mastersthesis (author,title,(%info;)*)>
+<!ATTLIST mastersthesis %keys;
+ school CDATA #REQUIRED
+ year CDATA #REQUIRED
+ address CDATA #IMPLIED
+ %month;
+ type CDATA #IMPLIED
+ ISBN CDATA #IMPLIED>
+
+<!-- Miscelleneous: use this type if nothing else fits -->
+<!ELEMENT misc (((author,title)|(title,author))?,(%info;)*)>
+<!ATTLIST misc %keys;
+ howpublished CDATA #IMPLIED
+ %month;
+ year CDATA #IMPLIED>
+
+<!-- A Ph. D. thesis -->
+<!ELEMENT phdthesis (author,title,(%info;)*)>
+<!ATTLIST phdthesis %keys;
+ school CDATA #REQUIRED
+ year CDATA #REQUIRED
+ address CDATA #IMPLIED
+ %month;
+ type CDATA #IMPLIED
+ ISBN CDATA #IMPLIED>
+
+<!-- The proceedings of a conference -->
+<!ATTLIST proceedings %keys;
+ year CDATA #REQUIRED
+ address CDATA #IMPLIED
+ %month;
+ number CDATA #IMPLIED
+ organization CDATA #IMPLIED
+ publisher CDATA #IMPLIED
+ series CDATA #IMPLIED
+ volume CDATA #IMPLIED
+ ISBN CDATA #IMPLIED>
+
+<!-- A report published by a school or other institution -->
+<!-- usually numbered within a series -->
+<!ELEMENT techreport (author,title,(%info;)*)>
+<!ATTLIST techreport %keys;
+ institution CDATA #REQUIRED
+ year CDATA #REQUIRED
+ address CDATA #IMPLIED
+ %month;
+ number CDATA #IMPLIED
+ type CDATA #IMPLIED
+ ISBN CDATA #IMPLIED>
+
+<!-- A document with author and title, but not formally published -->
+<!ELEMENT unpublished (author,title,(%info;)*)>
+<!ATTLIST unpublished %keys;
+ address CDATA #IMPLIED
+ %month;
+ number CDATA #IMPLIED
+ type CDATA #IMPLIED>
+
+<!-- For adding typographic emphasis to the information -->
+<!ELEMENT emph (#PCDATA)>
+<!ATTLIST emph style (bf|em|it|sf|sl|tt|qu) "em">
+
+<!-- The basic fields (pages 162-164) -->
+<!-- Only fields with names (author, editor) and titles are left as -->
+<!-- basic elements -->
+ <!-- Author(s) in format described on pp. 157-158 -->
+<!ELEMENT author (name,(and,name)*)>
+<!ELEMENT name (first,last)>
+<!ELEMENT last (#PCDATA)>
+<!ELEMENT first (#PCDATA)>
+<!ELEMENT and EMPTY>
+ <!-- The names of the editor(s) -->
+<!ELEMENT editor (name,(and,name)*)>
+ <!-- The work's title -->
+<!ELEMENT title (#PCDATA|emph)*>
+ <!-- Title of a book, used in incollection and inproceedings -->
+<!ELEMENT booktitle (#PCDATA|emph)*>
+<!-- Optional notes at end of entries -->
+ <!-- Annotation (not used by standard styles) -->
+<!ELEMENT annote (#PCDATA|emph)*>
+ <!-- Additional information to help the user -->
+<!ELEMENT note (#PCDATA|emph)*>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apb/colorcir.eps b/Master/texmf-doc/doc/english/latex-web-companion/apb/colorcir.eps
new file mode 100644
index 00000000000..149d0c170fb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apb/colorcir.eps
@@ -0,0 +1,109 @@
+%!
+%%BoundingBox: 19 164 581 636
+0.0 setlinewidth
+
+/hsvcircle {
+gsave
+ /h 0.0 def
+ 0 4 360 {
+ pop
+ gsave
+ 0.5 0.0 translate
+
+ newpath
+ 0.0 0.0 moveto
+ 0.1 0.0 lineto
+ 0.1 0.02 lineto
+ 0.0 0.02 lineto
+ closepath
+ h 1.0 1.0 sethsbcolor
+ fill
+
+ %newpath
+ %0.0 0.0 moveto
+ %0.1 0.0 lineto
+ %0.1 0.02 lineto
+ %0.0 0.02 lineto
+ %closepath
+ %0.0 setgray
+ %stroke
+
+ grestore
+ /h h 4 360 div add def
+ 4 rotate
+ } for
+grestore
+} def
+
+/graycircle {
+gsave
+ /h -1.0 def
+ 0 4 360 {
+ pop
+ gsave
+ 0.5 0.0 translate
+
+ newpath
+ 0.0 0.0 moveto
+ 0.1 0.0 lineto
+ 0.1 0.02 lineto
+ 0.0 0.02 lineto
+ closepath
+
+ h abs setgray
+ fill
+
+ %newpath
+ %0.0 0.0 moveto
+ %0.1 0.0 lineto
+ %0.1 0.02 lineto
+ %0.0 0.02 lineto
+ %closepath
+ %0.0 setgray
+ %stroke
+ grestore
+
+ /h h 8 360 div add def
+ 4 rotate
+ } for
+grestore
+} def
+
+0.0 setlinewidth
+0.0 setgray
+300 400 translate
+500 500 scale
+
+30 rotate
+1.0 0.7 scale
+-30 rotate
+
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+
+showpage
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apb/inv2.tex b/Master/texmf-doc/doc/english/latex-web-companion/apb/inv2.tex
new file mode 100644
index 00000000000..c156dc13125
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apb/inv2.tex
@@ -0,0 +1,24 @@
+\documentclass[]{article}
+\usepackage{invitation}
+\begin{document}
+\begin{Front}
+\To{Anna, Bernard, Didier, Johanna}
+\Date{Next Friday Evening at 8 pm}
+\Where{The Web Cafe}
+\Why{My first XML baby}
+\Signature{Michel}
+\end{Front}
+\begin{Body}
+\par
+I would like to invite you all to celebrate
+the birth of \emph{Invitation}, my
+first XML document child.
+\par
+Please do your best to come and join me next Friday
+evening. And, do not forget to bring your friends.
+\par
+I \emph{really} look forward to see you soon!
+\end{Body}
+\begin{Back}
+\end{Back}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apb/invitation.sty b/Master/texmf-doc/doc/english/latex-web-companion/apb/invitation.sty
new file mode 100644
index 00000000000..e401c6b3ed5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apb/invitation.sty
@@ -0,0 +1,49 @@
+% invitation.sty
+% Package to format invitation.xml
+\setlength{\textwidth}{22pc}
+\setlength{\parskip}{1ex}
+\setlength{\parindent}{0pt}
+\pagestyle{empty}%% Turn off page numbering
+\RequirePackage{array,calc}
+\newcommand{\ToTitle}{To whom}
+\newcommand{\WhyTitle}{Occasion}
+\newcommand{\WhereTitle}{Venue}
+\newcommand{\DateTitle}{When}
+\newcommand{\SignatureTitle}{From}
+\DeclareOption{francais}{% French text for fixed texts
+ \renewcommand{\ToTitle}{À}
+ \renewcommand{\WhyTitle}{À l'occasion de}
+ \renewcommand{\WhereTitle}{Où}
+ \renewcommand{\DateTitle}{Quand}
+ \renewcommand{\SignatureTitle}{De la part de}}
+\newenvironment{Front}%
+ {\begin{center}
+ \Huge\sffamily INVITATION
+ \end{center}
+ }
+ {\begin{flushleft}
+ \rule{\linewidth}{1pt}\\[2mm]
+ \begin{tabular}{@{}>{\bfseries}ll@{}}
+ \ToTitle: & \@To \\
+ \WhyTitle: & \@Why \\
+ \WhereTitle: & \@Where \\
+ \DateTitle: & \@Date
+ \end{tabular}\\[2mm]
+ \rule{\linewidth}{1pt}
+ \end{flushleft}
+ }
+\newenvironment{Body}{\vspace*{\parskip}}{\vspace*{\parskip}}
+\newenvironment{Back}
+ {\begin{flushleft}}
+ {\hspace*{.5\linewidth}\fbox{\SignatureTitle: \emph{\@Sig}}
+ \end{flushleft}
+ }
+\newcommand{\To}[1]{\gdef\@To{#1}}
+\newcommand{\Date}[1]{\gdef\@Date{#1}}
+\newcommand{\Where}[1]{\gdef\@Where{#1}}
+\newcommand{\Why}[1]{\gdef\@Why{#1}}
+\newcommand{\Signature}[1]{\gdef\@Sig{#1}}
+
+\ProcessOptions
+
+\endinput
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apb/invitation2.dtd b/Master/texmf-doc/doc/english/latex-web-companion/apb/invitation2.dtd
new file mode 100644
index 00000000000..c9a136de64c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apb/invitation2.dtd
@@ -0,0 +1,15 @@
+<!-- invitation2 DTD -->
+<!-- August 14th 1998 mg -->
+<!ENTITY % i18n "xml:lang NMTOKEN #IMPLIED">
+<!ELEMENT invitation (par+)>
+<!ATTLIST invitation
+ %i18n;
+ date CDATA #REQUIRED
+ to CDATA #REQUIRED
+ signature CDATA #REQUIRED
+ where CDATA #REQUIRED
+ why CDATA #IMPLIED
+>
+<!ELEMENT par (#PCDATA|emph)*>
+<!ELEMENT emph (#PCDATA)>
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apb/invitation2.xml b/Master/texmf-doc/doc/english/latex-web-companion/apb/invitation2.xml
new file mode 100644
index 00000000000..877af219f95
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apb/invitation2.xml
@@ -0,0 +1,20 @@
+<!DOCTYPE invitation SYSTEM "invitation2.dtd">
+<invitation to="Anna, Bernard, Didier, Johanna"
+ date="Next Friday Evening at 8 pm"
+ where="The Web Cafe"
+ why="My first XML baby"
+ signature="Michel"
+>
+<par>
+I would like to invite you all to celebrate
+the birth of <emph>Invitation</emph>, my
+first XML document child.
+</par>
+<par>
+Please do your best to come and join me next Friday
+evening. And, do not forget to bring your friends.
+</par>
+<par>
+I <emph>really</emph> look forward to see you soon!
+</par>
+</invitation>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apb/latexmath.dtd b/Master/texmf-doc/doc/english/latex-web-companion/apb/latexmath.dtd
new file mode 100644
index 00000000000..840396d1837
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apb/latexmath.dtd
@@ -0,0 +1,11 @@
+<!-- latexmath.dtd +++ inline and display math -->
+<!ELEMENT inlinemath (#PCDATA)>
+<!ATTLIST inlinemath %all;>
+<!ELEMENT displaymath (#PCDATA)>
+<!ATTLIST displaymath %all;>
+<!ELEMENT equation (#PCDATA)>
+<!ATTLIST equation %all;>
+<!ELEMENT eqnarray (#PCDATA)>
+<!ATTLIST eqnarray %all;>
+<!ELEMENT align (#PCDATA)>
+<!ATTLIST align %all;>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apb/latexmml.dtd b/Master/texmf-doc/doc/english/latex-web-companion/apb/latexmml.dtd
new file mode 100644
index 00000000000..cfaa388b658
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apb/latexmml.dtd
@@ -0,0 +1,57 @@
+<!-- latexmml.dtd -->
+<!ELEMENT equation (math)*>
+<!ATTLIST equation %all;>
+<!ELEMENT displaymath (math)*>
+<!ELEMENT inlinemath (math)*>
+<!ELEMENT subeqn (math)*>
+<!ATTLIST subeqn %all;>
+<!ELEMENT eqnarray (subeqn)*>
+<!ATTLIST eqnarray %all;
+ number (yes|no) "yes">
+<!ELEMENT align (%inline;)*>
+<!ATTLIST align %all; >
+
+<!-- ISO and MathML DTDs and entities -->
+<!--Added Math Symbols: Arrows-->
+<!ENTITY % isoamsae.dtd SYSTEM "isoamsae.dtd">
+<!--Added Math Symbols: Binary Operators-->
+<!ENTITY % isoamsbe.dtd SYSTEM "isoamsbe.dtd">
+<!--Added Math Symbols: Delimiters-->
+<!ENTITY % isoamsce.dtd SYSTEM "isoamsce.dtd">
+<!--Added Math Symbols: Negated Relations-->
+<!ENTITY % isoamsne.dtd SYSTEM "isoamsne.dtd">
+<!--Added Math Symbols: Ordinary-->
+<!ENTITY % isoamsoe.dtd SYSTEM "isoamsoe.dtd">
+<!--Added Math Symbols: Relations-->
+<!ENTITY % isoamsre.dtd SYSTEM "isoamsre.dtd">
+<!--General Technical-->
+<!ENTITY % isoteche.dtd SYSTEM "isoteche.dtd">
+<!--Numbers and Currency symbols-->
+<!ENTITY % isonume.dtd SYSTEM "isonume.dtd">
+<!--MathML Aliases (From ISO PUB,DIA,NUM)-->
+<!ENTITY % mmaliase.dtd SYSTEM "mmaliase.dtd">
+<!--Greek Symbols-->
+<!ENTITY % isogrk3e.dtd SYSTEM "isogrk3e.dtd">
+<!--Math Script Font-->
+<!ENTITY % isomscre.dtd SYSTEM "isomscre.dtd">
+<!--Math Open Face Font-->
+<!ENTITY % isomopfe.dtd SYSTEM "isomopfe.dtd">
+<!--MathML Entities-->
+<!ENTITY % mmlent.dtd SYSTEM "mmlent.dtd">
+<!--Main MathML DTD -->
+<!ENTITY % mathml.dtd SYSTEM "mathml.dtd">
+
+%mathml.dtd;
+%isoamsae.dtd;
+%isoamsbe.dtd;
+%isoamsce.dtd;
+%isoamsne.dtd;
+%isoamsoe.dtd;
+%isoamsre.dtd;
+%isoteche.dtd;
+%isonume.dtd;
+%mmaliase.dtd;
+%isogrk3e.dtd;
+%isomscre.dtd;
+%isomopfe.dtd;
+%mmlent.dtd;
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apb/minilatex.dtd b/Master/texmf-doc/doc/english/latex-web-companion/apb/minilatex.dtd
new file mode 100644
index 00000000000..3bb7530819a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apb/minilatex.dtd
@@ -0,0 +1,179 @@
+<!-- minilatex.dtd: XML version of a subset of LaTeX -->
+<!-- Most elements have the following attributes -->
+<!ENTITY % all "id ID #IMPLIED
+ class CDATA #IMPLIED
+ style CDATA #IMPLIED">
+<!-- Most non-empty elements have this language attribute -->
+<!ENTITY % i18n "xml:lang NMTOKEN #IMPLIED">
+<!ENTITY % basic "%all; %i18n;">
+<!-- Declaration of parameter entities for structuring the DTD -->
+<!ENTITY % fontchange.new "">
+<!ENTITY % fontchange "emph|textbf|textsc|textsf|textsl|texttt %fontchange.new;">
+<!ENTITY % misc.new "">
+<!ENTITY % misc "url|quad|hspace|vspace|includegraphics|tag|ent %misc.new;">
+<!ENTITY % xref.new "">
+<!ENTITY % xref "cite|pageref|ref %xref.new;">
+<!ENTITY % mathobj.new "">
+<!ENTITY % mathobj "displaymath|inlinemath|equation|eqnarray" >
+<!ENTITY % inline.new "">
+<!ENTITY % inline "%fontchange;|quote|tabular|%misc;|%xref;|%mathobj; %inline.new;">
+<!ENTITY % list.new "">
+<!ENTITY % list "lalist|description|enumerate|itemize|bibliography %list.new;">
+<!ENTITY % preformat.new "">
+<!ENTITY % preformat "verbatim|verse %preformat.new;">
+<!ENTITY % likepara.new "">
+<!ENTITY % likepara "%list;|quotation|align|%preformat; %likepara.new;">
+<!ENTITY % floats.new "">
+<!ENTITY % floats "figure|table %floats.new;">
+
+<!-- The top level document declarations -->
+<!ELEMENT document (frontmatter?,bodymatter,backmatter?)>
+<!ATTLIST document %i18n;
+ class CDATA "article">
+<!ELEMENT frontmatter (title,author?,date?,abstract?)>
+<!ELEMENT bodymatter ((par|%likepara;|%floats;|part|chapter|section)*,appendix*)>
+<!ELEMENT backmatter (index|glossary)*>
+<!-- fontchanges -->
+<!ELEMENT emph (#PCDATA|%inline;)*>
+<!ELEMENT textbf (#PCDATA|%inline;)*>
+<!ELEMENT textsc (#PCDATA|%inline;)*>
+<!ELEMENT textsf (#PCDATA|%inline;)*>
+<!ELEMENT textsl (#PCDATA|%inline;)*>
+<!ELEMENT texttt (#PCDATA|%inline;)*>
+<!-- cross-references -->
+<!ENTITY % idref "refid IDREF #REQUIRED">
+<!ELEMENT cite EMPTY>
+<!ATTLIST cite %idref;>
+<!ELEMENT pageref EMPTY>
+<!ATTLIST pageref %idref;>
+<!ELEMENT ref EMPTY>
+<!ATTLIST ref %idref;>
+<!-- quoted material inline and displayed -->
+<!ELEMENT quote (#PCDATA|%inline;|par)*>
+<!ATTLIST quote %basic;>
+<!ELEMENT quotation (#PCDATA|%inline;|par)*>
+<!ATTLIST quotation %basic;>
+<!-- lists -->
+<!ELEMENT description ((term*,item*)+)>
+<!ATTLIST description %basic;>
+<!ELEMENT enumerate ((term*,item*)+)>
+<!ATTLIST enumerate %basic;>
+<!ELEMENT itemize ((term*,item*)+)>
+<!ATTLIST itemize %basic;>
+<!ELEMENT lalist ((term*,item*)+)>
+<!ATTLIST lalist %basic;>
+<!ELEMENT term (#PCDATA|%inline;)*>
+<!ATTLIST term %basic;>
+<!ELEMENT item (#PCDATA|%inline;|par|%likepara;)*>
+<!ATTLIST item %basic;>
+<!ELEMENT bibliography (bibitem)*>
+<!ATTLIST bibliography %basic;>
+<!ELEMENT bibitem (#PCDATA|%inline;|par|%likepara;)*>
+<!ATTLIST bibitem %basic;>
+<!-- low-level bits and pieces -->
+<!ELEMENT url EMPTY>
+<!ATTLIST url name CDATA #REQUIRED>
+<!ELEMENT quad EMPTY>
+<!ELEMENT hspace EMPTY>
+<!ATTLIST hspace dim CDATA #REQUIRED>
+<!ELEMENT vspace EMPTY>
+<!ATTLIST vspace dim CDATA #REQUIRED>
+<!ELEMENT tag (#PCDATA)>
+<!ELEMENT ent EMPTY>
+<!ATTLIST ent value CDATA #REQUIRED
+ name CDATA #REQUIRED>
+<!-- everything that can go into a paragraph -->
+<!ELEMENT par (#PCDATA|%inline;|%likepara;)*>
+<!ATTLIST par %basic;>
+<!-- "floats" and their contents -->
+<!ELEMENT figure (#PCDATA|par|%inline;|%likepara;|caption)*>
+<!ATTLIST figure %basic;>
+<!ELEMENT table (#PCDATA|par|%inline;|%likepara;|caption)*>
+<!ATTLIST table %basic;>
+<!ELEMENT includegraphics EMPTY>
+<!ATTLIST includegraphics %basic;
+ file CDATA #REQUIRED
+ width CDATA #IMPLIED
+ height CDATA #IMPLIED
+ bb CDATA #IMPLIED
+ scale CDATA ".5"
+ angle CDATA #IMPLIED>
+<!ELEMENT caption (#PCDATA|par|%inline;)*>
+<!ATTLIST caption %basic;>
+<!-- tabular material -->
+<!ELEMENT tabular (hline|row)*>
+<!ATTLIST tabular %basic;
+ preamble CDATA #REQUIRED
+ width CDATA #IMPLIED
+ border CDATA #IMPLIED>
+<!ELEMENT row (cell)*>
+<!ATTLIST row %basic;>
+<!ELEMENT hline EMPTY>
+<!ELEMENT cell (#PCDATA|%inline;)*>
+<!ATTLIST cell %basic;
+ rowspan CDATA "1"
+ colspan CDATA "1"
+ align (left|center|right) "center">
+<!-- verbatim material -->
+<!ELEMENT verbatim (#PCDATA)>
+<!ATTLIST verbatim %basic;
+ xml:space (default|preserve) 'preserve'>
+<!ELEMENT verse (#PCDATA|%inline;)*>
+<!ATTLIST verse %basic;
+ xml:space (default|preserve) 'preserve'>
+<!-- things that go in the frontmatter -->
+<!ELEMENT newline EMPTY>
+<!ELEMENT title (#PCDATA|%inline;|thanks|newline)*>
+<!ATTLIST title %basic;>
+<!ELEMENT author (#PCDATA|%inline;|name|thanks|inst)*>
+<!ELEMENT name (#PCDATA|%inline;)*>
+<!ATTLIST name %basic;>
+<!ELEMENT thanks (#PCDATA|%inline;|newline)*>
+<!ATTLIST thanks %basic;>
+<!ELEMENT inst (#PCDATA|%inline;|newline)*>
+<!ATTLIST inst %basic;>
+<!ELEMENT date (#PCDATA)>
+<!ATTLIST date %basic;>
+<!ELEMENT abstract (par+)>
+<!ATTLIST abstract %basic;>
+<!-- structuring -->
+<!ENTITY % sect "stitle, (par|%likepara;|%floats;)* ">
+<!ELEMENT stitle (#PCDATA|%inline;)*>
+<!ATTLIST stitle %basic;>
+<!ELEMENT part (%sect;, (chapter|section|subsection|subsubsection)*)>
+<!ATTLIST part %basic;>
+<!ELEMENT chapter (%sect;, section*)>
+<!ATTLIST chapter %basic;>
+<!ELEMENT section (%sect;, subsection*)>
+<!ATTLIST section %basic;>
+<!ELEMENT subsection (%sect;, subsubsection*)>
+<!ATTLIST subsection %basic;>
+<!ELEMENT subsubsection (%sect;, paragraph*)>
+<!ATTLIST subsubsection %basic;>
+<!ELEMENT paragraph (%sect;, subparagraph*)>
+<!ATTLIST paragraph %basic;>
+<!ELEMENT subparagraph (%sect;)>
+<!ATTLIST subparagraph %basic;>
+<!ELEMENT appendix EMPTY>
+<!-- backmatter: index and glossary -->
+<!ELEMENT index (par|%likepara;)*>
+<!ATTLIST index %basic;>
+<!ELEMENT glossary (par|%likepara;)*>
+<!ATTLIST glossagry %basic;>
+<!-- LaTeX math constructs -->
+<!ENTITY % LaTeXmath "INCLUDE">
+<!ENTITY % latexmath.dtd SYSTEM "latexmath.dtd">
+<![ %LaTeXmath; [
+%latexmath.dtd;
+]]>
+<!ENTITY % MathML "IGNORE">
+<!ENTITY % latexmml.dtd SYSTEM "latexmml.dtd">
+<![ %MathML; [
+%latexmml.dtd;
+]]>
+<!-- Basic XML entities -->
+<!ENTITY lt "&#60;"> <!-- "<" -->
+<!ENTITY gt "&#62;"> <!-- ">" -->
+<!ENTITY amp "&#38;"> <!-- "&" -->
+<!ENTITY apos "&#39;"> <!-- "'" -->
+<!ENTITY quot "&#34;"> <!-- '"' -->
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apb/minilatex.xsl b/Master/texmf-doc/doc/english/latex-web-companion/apb/minilatex.xsl
new file mode 100644
index 00000000000..a907797c32b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apb/minilatex.xsl
@@ -0,0 +1,342 @@
+<?xml version='1.0'?>
+<!-- minilatex.xsl -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns="http://www.tug.org/latex">
+
+<xsl:output method="text" indent="no" encoding="ISO-8859-1"/>
+
+<xsl:strip-space elements="*"/>
+
+<xsl:template name="label">
+ <xsl:apply-templates/>
+ <xsl:if test="../@id"><xsl:text>\label{</xsl:text>
+ <xsl:value-of select="../@id"/><xsl:text>}</xsl:text></xsl:if>
+<xsl:text>}
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="document">
+<xsl:text>\documentclass[]{</xsl:text>
+<xsl:value-of select="@class"/>
+<xsl:text>}
+\usepackage[dvips]{graphicx}
+\usepackage[T1]{fontenc}
+\begin{document}
+</xsl:text>
+<xsl:apply-templates/>
+<xsl:text>\end{document}
+</xsl:text>
+</xsl:template>
+
+<!-- ================ Frontmatter element ======================= -->
+<xsl:template match="frontmatter">
+ <xsl:apply-templates/>
+<xsl:text>
+\maketitle
+</xsl:text>
+</xsl:template>
+<xsl:template match="frontmatter/title">
+<xsl:text>
+\title{</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>}</xsl:text>
+</xsl:template>
+<xsl:template match="frontmatter/author">
+<xsl:text>
+\author{</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>}
+</xsl:text>
+</xsl:template>
+<xsl:template match="frontmatter/author/name">
+ <xsl:apply-templates/>
+</xsl:template>
+<xsl:template match="frontmatter/author/thanks">
+<xsl:text>
+\thanks{</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>}</xsl:text>
+</xsl:template>
+<xsl:template match="frontmatter/author/inst">
+<xsl:text>
+\thanks{</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>}</xsl:text>
+</xsl:template>
+<xsl:template match="frontmatter/date">
+<xsl:text>
+\date{</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>}
+</xsl:text>
+</xsl:template>
+<xsl:template match="frontmatter/abstract">
+<xsl:text>
+\begin{abstract}
+</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>
+\end{abstract}
+</xsl:text>
+</xsl:template>
+<xsl:template match="frontmatter/keywords">
+<xsl:text>\keywords{</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>}</xsl:text>
+</xsl:template>
+
+<!-- ===================== Bodymatter element =================== -->
+<xsl:template match="bodymatter|part|chapter|section|subsection|
+ subsubsection|paragraph|subparagraph">
+ <xsl:apply-templates/>
+</xsl:template>
+<!-- =================== Section headings ======================= -->
+<xsl:template match="part/stitle">
+ <xsl:text>\part{</xsl:text><xsl:call-template name="label"/>
+</xsl:template>
+<xsl:template match="chapter/stitle">
+ <xsl:text>\chapter{</xsl:text><xsl:call-template name="label"/>
+</xsl:template>
+<xsl:template match="section/stitle">
+ <xsl:text>\section{</xsl:text><xsl:call-template name="label"/>
+</xsl:template>
+<xsl:template match="subsection/stitle">
+ <xsl:text>\subsection{</xsl:text><xsl:call-template name="label"/>
+</xsl:template>
+<xsl:template match="subsubsection/stitle">
+ <xsl:text>\subsubsection{</xsl:text><xsl:call-template name="label"/>
+</xsl:template>
+<xsl:template match="paragraph/stitle">
+ <xsl:text>\paragraph{</xsl:text><xsl:call-template name="label"/>
+</xsl:template>
+<xsl:template match="subparagraph/stitle">
+ <xsl:text>\subparagraph{</xsl:text><xsl:call-template name="label"/>
+</xsl:template>
+<!-- ===================== Font changes ========================= -->
+<xsl:template match="emph">
+<xsl:text>\emph{</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>}</xsl:text>
+</xsl:template>
+<xsl:template match="textbf">
+<xsl:text>\textbf{</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>}</xsl:text>
+</xsl:template>
+<xsl:template match="textsc">
+<xsl:text>\textsc{</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>}</xsl:text>
+</xsl:template>
+<xsl:template match="textsf">
+<xsl:text>\textsf{</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>}</xsl:text>
+</xsl:template>
+<xsl:template match="textsl">
+<xsl:text>\textsl{</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>}</xsl:text>
+</xsl:template>
+<xsl:template match="texttt">
+<xsl:text>\texttt{</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>}</xsl:text>
+</xsl:template>
+<!-- =================== Cross-references ======================= -->
+<xsl:template match="cite">
+ <xsl:text>\cite{</xsl:text>
+ <xsl:value-of select="@refid"/>
+ <xsl:text>}</xsl:text>
+</xsl:template>
+<xsl:template match="pageref">
+ <xsl:text>\pageref{</xsl:text>
+ <xsl:value-of select="@refid"/>
+ <xsl:text>}</xsl:text>
+</xsl:template>
+<xsl:template match="ref">
+ <xsl:text>\ref{</xsl:text>
+ <xsl:value-of select="@refid"/>
+ <xsl:text>}</xsl:text>
+</xsl:template>
+<!-- =============== quotes, footnotes, verbatim ================ -->
+<xsl:template match="footnote">
+<xsl:text>\footnote{</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>}</xsl:text>
+</xsl:template>
+<xsl:template match="quote">
+<xsl:text>
+\begin{quote}</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>\end{quote}</xsl:text>
+</xsl:template>
+<xsl:template match="quotation">
+<xsl:text>
+\begin{quotation}</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>\end{quotation}</xsl:text>
+</xsl:template>
+<xsl:template match="verbatim">
+<xsl:text>
+\begin{verbatim}</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>\end{verbatim}</xsl:text>
+</xsl:template>
+<!-- ========================= Lists ============================ -->
+<xsl:template match="description">
+<xsl:text>
+\begin{description}
+</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>
+\end{description}
+</xsl:text>
+</xsl:template>
+<xsl:template match="description/term">
+<xsl:text>
+\item[</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>]</xsl:text>
+</xsl:template>
+<xsl:template match="description/item">
+ <xsl:apply-templates/>
+</xsl:template>
+<xsl:template match="enumerate">
+<xsl:text>
+\begin{enumerate}
+</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>\end{enumerate}
+</xsl:text>
+</xsl:template>
+<xsl:template match="itemize">
+<xsl:text>
+\begin{itemize}
+</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>\end{itemize}
+</xsl:text>
+</xsl:template>
+<xsl:template match="enumerate|itemize/item">
+<xsl:text>
+\item </xsl:text>
+ <xsl:apply-templates/>
+</xsl:template>
+<xsl:template match="bibliography">
+<xsl:text>
+\begin{thebibliography}{99}
+</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>
+\end{thebibliography}
+</xsl:text>
+</xsl:template>
+<xsl:template match="bibliography/bibitem">
+<xsl:text>\bibitem{</xsl:text>
+<xsl:value-of select="@id"/>
+<xsl:text>}</xsl:text>
+<xsl:apply-templates/>
+</xsl:template>
+<!-- ====================== Mathematics ========================= -->
+<xsl:template match="inlinemath">
+<xsl:text>$</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>$</xsl:text>
+</xsl:template>
+<xsl:template match="displaymath">
+<xsl:text>
+\begin{displaymath}
+</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>
+\end{displaymath}
+</xsl:text>
+</xsl:template>
+<xsl:template match="equation">
+<xsl:text>
+\begin{equation}
+</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>
+\end{equation}
+</xsl:text>
+</xsl:template>
+<xsl:template match="eqnarray">
+<xsl:text>
+\begin{eqnarray}
+</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>
+\end{eqnarray}
+</xsl:text>
+</xsl:template>
+<!-- ====================== A paragraph ========================= -->
+<xsl:template match="par">
+<xsl:text>
+\par
+</xsl:text>
+ <xsl:apply-templates/>
+</xsl:template>
+<!-- ======================== Tabular =========================== -->
+<xsl:template match="tabular">
+<xsl:text>
+\begin{tabular}{</xsl:text>
+ <xsl:value-of select="@preamble"/><xsl:text>}
+</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>
+\end{tabular}
+</xsl:text>
+</xsl:template>
+<xsl:template match="tabular/row">
+<xsl:apply-templates/>
+<xsl:text>\\
+</xsl:text>
+</xsl:template>
+<xsl:template match="tabular/row/cell">
+<xsl:apply-templates/><xsl:text>&amp;</xsl:text>
+</xsl:template>
+<xsl:template match="tabular/row/cell[position()=last()]" priority="2">
+<xsl:apply-templates/>
+</xsl:template>
+<!-- ================== "floats" and their contents ============= -->
+<xsl:template match="figure">
+<xsl:text>
+\begin{figure}\centering
+</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>\end{figure}
+</xsl:text>
+</xsl:template>
+<xsl:template match="table">
+<xsl:text>
+\begin{table}\centering
+</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>\end{table}
+</xsl:text>
+</xsl:template>
+<xsl:template match="figure/caption | table/caption">
+ <xsl:text>\caption{</xsl:text><xsl:call-template name="label"/>
+</xsl:template>
+<!-- ==================== Includegraphics ======================= -->
+<xsl:template match="includegraphics">
+<xsl:text>
+\includegraphics[</xsl:text>
+<xsl:if test="@width"><xsl:text>width=</xsl:text>
+ <xsl:value-of select="@width"/><xsl:text>, </xsl:text></xsl:if>
+<xsl:if test="@height"><xsl:text>height=</xsl:text>
+ <xsl:value-of select="@height"/><xsl:text>, </xsl:text></xsl:if>
+<xsl:if test="@bb"><xsl:text>bb="</xsl:text>
+ <xsl:value-of select="@bb"/><xsl:text>, </xsl:text></xsl:if>
+<xsl:if test="@angle"><xsl:text>angle=</xsl:text>
+ <xsl:value-of select="@angle"/><xsl:text>, </xsl:text></xsl:if>
+<xsl:if test="@scale"><xsl:text>scale=</xsl:text>
+ <xsl:value-of select="@scale"/><xsl:text></xsl:text></xsl:if>
+<xsl:text>]{</xsl:text><xsl:value-of select="@file"/><xsl:text>}
+</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apb/minilatexexa.tex b/Master/texmf-doc/doc/english/latex-web-companion/apb/minilatexexa.tex
new file mode 100644
index 00000000000..720477f73db
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apb/minilatexexa.tex
@@ -0,0 +1,120 @@
+\documentclass[]{article}
+\usepackage[dvips]{graphicx}
+\usepackage[T1]{fontenc}
+\begin{document}
+
+\title{The \LaTeX{} DTD and multiple languages}
+\author{Michel Goossens
+\thanks{Partly from an example in \emph{The \LaTeX{} Companion}}}
+
+\date{August 4th, 1998}
+
+\maketitle
+\section{The basic principles\label{sec-en}}
+
+\par
+
+This is an example input file. We start in English to show the
+principle. You should especially pay attention that we have used
+slightly different notation for some of the common \LaTeX{} constructs,
+such as the dashes, which come in three sizes: an intra-word dash, a
+medium dash for number ranges like 1--2, and a punctuation
+dash---like this. Text can be emphasized as \emph{shown
+here}. An ellipsis is made with \dots Footnotes\footnote{This
+is a simple footnote.
+\par
+It can also contain \texttt{par}
+elements.} are tricky constructs, since one must be
+careful not to nest them.
+\subsection{Dealing with special characters}
+
+\par
+
+XML has a different set of reserved characters than \LaTeX{}, in
+particular, when you want to use any of the three characters
+\texttt{\&}, \texttt{<},
+and \texttt{>}, you should enter them as
+\texttt{\&amp;}, \texttt{\&lt;}, and
+\texttt{\&gt;}, respectively.
+\subsection{\LaTeX{} and mathematical formulae\label{sec-math}}
+
+\par
+
+\LaTeX{} and \emph{a fortiori} \TeX{} are very good at typesetting
+mathematical formulae, like
+$x- 3 y + z < 7$ or
+$a_{1} > x^{2n} + y^{2n} > x'$ or
+$(A, B) = \sum_{i} a_{i} b_{i}$.
+Do not forget that for reasons of consistency, if you want to refer to
+a variable in one of the formulae, such as the symbol
+$x$, you must also use math mode in the text.
+\section{Beispiel eines Textes in deutscher Sprache}
+\subsection{Eine EPS Abbildung}
+
+\par
+
+Dieser Abschnitt zeigt, wie man eine PostScript-Abbildung
+\cite{bib-PS} in ein Dokument einbinden kann.
+Abbildung~\ref{fig-psfig} wurde mit dem Befehl
+
+\begin{verbatim}
+\includegraphics[width="3cm"]{file="colorcir.eps}
+\end{verbatim}
+in den Text aufgenommen.
+
+\begin{figure}\centering
+
+\includegraphics[width=3cm, scale=.5]{colorcir}
+\caption{Ein EPS Bild\label{fig-psfig}}
+\end{figure}
+\subsection{Beispiel einer Tabelle}
+
+\par
+Die Tabelle~\ref{tab-exag} auf Seite~\pageref{tab-exag} zeigt eine Tabelle.
+
+\begin{table}\centering
+\caption{
+Eingabe der deutschen Zusatzzeichen in \LaTeX{}\label{tab-exag}}
+
+\begin{tabular}{ccccccc}
+\texttt{"a}~ä&\texttt{"A}~Ä&\texttt{"o}~ö&\texttt{"O}~Ö&\texttt{"u}~ü&\texttt{"U}~Ü&\texttt{"s}~ß\\
+
+\end{tabular}
+\end{table}
+\section{Continuation du texte en français}
+\subsection{Traiter les listes\label{sec-list}}
+
+\par
+
+Les listes sont utilisées fréquemment pour structurer ou mettre
+en évidence certains éléments d'un document (voir \cite{bib-Liste}).
+
+\begin{itemize}
+
+\item Ceci est le premier élément d'une liste non-ordonnée. Chaque élément
+ de ce type de liste est précédé d'un signe distinctif, comme une
+ puce, un tiret, etc.
+
+\item Ce second élément de la même liste contient une liste de
+ \emph{description} imbriquée.
+
+\begin{description}
+
+\item[XML]Meta langage pour définir des classes de documents
+\item[XLL]Langage pour définir des hyperliens entre différentes
+ parties de documents XML
+\end{description}
+
+ Nous continuons notre texte à l'intérieur de la première liste.
+ \end{itemize}
+
+\begin{thebibliography}{99}
+\bibitem{bib-PS}
+Adobe Inc. \emph{PostScript Handbuch (2. Auflage)}
+ Addison-Wesley (Deutschland) GmbH, Bonn, 1991.
+\bibitem{bib-Liste}
+Michel Goossens. Personnaliser les listes \LaTeX{}.
+ \emph{Cahiers GUTenberg}, 17:32--48, mai 1994.
+
+\end{thebibliography}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apb/minilatexexa.xml b/Master/texmf-doc/doc/english/latex-web-companion/apb/minilatexexa.xml
new file mode 100644
index 00000000000..5b6f67fd551
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apb/minilatexexa.xml
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE document SYSTEM "minilatex.dtd"[
+<!ENTITY LaTeX "\LaTeX{}">
+<!ENTITY TeX "\TeX{}">
+<!ENTITY dots "\dots">
+<!ENTITY endash "--">
+<!ENTITY emdash "---">
+<!ENTITY nbsp "~">
+<!ENTITY % inline.new "|footnote">
+<!ELEMENT footnote (#PCDATA|par)*>
+]>
+<document class="article" xml:lang="en">
+<frontmatter>
+<title>The &LaTeX; DTD and multiple languages</title>
+<author><name>Michel Goossens</name>
+<thanks>Partly from an example in <emph>The &LaTeX; Companion</emph>
+</thanks></author>
+<date>August 4th, 1998</date>
+</frontmatter>
+<bodymatter>
+<section id="sec-en">
+<stitle>The basic principles</stitle>
+<par>
+This is an example input file. We start in English to show the
+principle. You should especially pay attention that we have used
+slightly different notation for some of the common &LaTeX; constructs,
+such as the dashes, which come in three sizes: an intra-word dash, a
+medium dash for number ranges like 1&endash;2, and a punctuation
+dash&emdash;like this. Text can be emphasized as <emph>shown
+here</emph>. An ellipsis is made with &dots; Footnotes<footnote>This
+is a simple footnote.<par>It can also contain <texttt>par</texttt>
+elements.</par></footnote> are tricky constructs, since one must be
+careful not to nest them.
+</par>
+<subsection>
+<stitle>Dealing with special characters</stitle>
+<par>
+XML has a different set of reserved characters than &LaTeX;, in
+particular, when you want to use any of the three characters
+<texttt><![CDATA[\&]]></texttt>, <texttt><![CDATA[<]]></texttt>,
+and <texttt><![CDATA[>]]></texttt>, you should enter them as
+<texttt>\&amp;amp;</texttt>, <texttt>\&amp;lt;</texttt>, and
+<texttt>\&amp;gt;</texttt>, respectively.
+</par>
+</subsection>
+<subsection id="sec-math">
+<stitle>&LaTeX; and mathematical formulae</stitle>
+<par>
+&LaTeX; and <emph>a fortiori</emph> &TeX; are very good at typesetting
+mathematical formulae, like
+<inlinemath><![CDATA[x- 3 y + z < 7]]></inlinemath> or
+<inlinemath><![CDATA[a_{1} > x^{2n} + y^{2n} > x']]></inlinemath> or
+<inlinemath><![CDATA[(A, B) = \sum_{i} a_{i} b_{i}]]></inlinemath>.
+Do not forget that for reasons of consistency, if you want to refer to
+a variable in one of the formulae, such as the symbol
+<inlinemath>x</inlinemath>, you must also use math mode in the text.
+</par>
+</subsection>
+</section>
+<section xml:lang="de">
+<stitle>Beispiel eines Textes in deutscher Sprache</stitle>
+<subsection>
+<stitle>Eine EPS Abbildung</stitle>
+<par>
+Dieser Abschnitt zeigt, wie man eine PostScript-Abbildung
+<cite refid="bib-PS"/> in ein Dokument einbinden kann.
+Abbildung&nbsp;<ref refid="fig-psfig"/> wurde mit dem Befehl
+<verbatim>
+<![CDATA[\includegraphics[width="3cm"]{file="colorcir.eps}]]>
+</verbatim>
+in den Text aufgenommen.
+</par>
+<figure id="fig-psfig">
+<includegraphics width="3cm" file="colorcir"/>
+<caption xml:lang="de">Ein EPS Bild</caption>
+</figure>
+</subsection>
+<subsection>
+<stitle>Beispiel einer Tabelle</stitle>
+<par>Die Tabelle&nbsp;<ref refid="tab-exag"/> auf Seite&nbsp;<pageref
+refid="tab-exag"/> zeigt eine Tabelle.
+</par>
+<table id="tab-exag">
+<caption xml:lang="de">
+Eingabe der deutschen Zusatzzeichen in &LaTeX;</caption>
+<tabular preamble="ccccccc">
+<row>
+<cell><texttt>&#34;a</texttt>&nbsp;ä</cell>
+<cell><texttt>&#34;A</texttt>&nbsp;Ä</cell>
+<cell><texttt>&#34;o</texttt>&nbsp;ö</cell>
+<cell><texttt>&#34;O</texttt>&nbsp;Ö</cell>
+<cell><texttt>&#34;u</texttt>&nbsp;ü</cell>
+<cell><texttt>&#34;U</texttt>&nbsp;Ü</cell>
+<cell><texttt>&#34;s</texttt>&nbsp;&#223;</cell>
+</row>
+</tabular>
+</table>
+</subsection>
+</section>
+<section xml:lang="fr">
+<stitle>Continuation du texte en français</stitle>
+<subsection id="sec-list">
+<stitle>Traiter les listes</stitle>
+<par>
+Les listes sont utilisées fréquemment pour structurer ou mettre
+en évidence certains éléments d'un document (voir <cite refid="bib-Liste"/>).
+</par>
+<itemize>
+ <item>Ceci est le premier élément d'une liste non-ordonnée. Chaque élément
+ de ce type de liste est précédé d'un signe distinctif, comme une
+ puce, un tiret, etc.
+ </item>
+ <item>Ce second élément de la même liste contient une liste de
+ <emph>description</emph> imbriquée.
+ <description>
+ <term>XML</term>
+ <item>Meta langage pour définir des classes de documents</item>
+ <term>XLL</term>
+ <item>Langage pour définir des hyperliens entre différentes
+ parties de documents XML</item>
+ </description>
+ Nous continuons notre texte à l'intérieur de la première liste.
+ </item>
+</itemize>
+</subsection>
+</section>
+<bibliography>
+<bibitem id="bib-PS" xml:lang="de">
+Adobe Inc. <emph>PostScript Handbuch (2. Auflage)</emph>
+ Addison-Wesley (Deutschland) GmbH, Bonn, 1991.
+</bibitem>
+<bibitem id="bib-Liste" xml:lang="fr">
+Michel Goossens. Personnaliser les listes &LaTeX;.
+ <emph>Cahiers GUTenberg</emph>, 17:32&endash;48, mai 1994.
+</bibitem>
+</bibliography>
+</bodymatter>
+</document>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apb/mybiblio.dtd b/Master/texmf-doc/doc/english/latex-web-companion/apb/mybiblio.dtd
new file mode 100644
index 00000000000..b7f6665960b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apb/mybiblio.dtd
@@ -0,0 +1,24 @@
+<!-- mybiblio.dtd (refers to "biblioxml2.dtd" -->
+<!ENTITY % biblio.dtd SYSTEM "biblioxml2.dtd">
+
+<!ENTITY AW "Addison-Wesley">
+<!ENTITY AW:adr "Reading, Massachusetts">
+<!ENTITY emdash "---">
+<!ENTITY endash "--">
+<!ENTITY ouml '\"o'>
+<!ENTITY j-TUGboat "TUGboat">
+<!ENTITY LaTeX "\LaTeX{}">
+<!ENTITY TeX "\TeX{}">
+<!ENTITY WEB "\textsc{web}">
+<!ENTITY % local.info "| url |annote">
+<!ELEMENT url (#PCDATA)>
+<!ENTITY % local.biblio "| webdocument">
+
+%biblio.dtd;
+
+<!-- Document published on the Web -->
+<!ELEMENT webdocument (title,author?,(%info;)*)>
+<!ATTLIST webdocument %keys;
+ organization CDATA #IMPLIED
+ %month;
+ year CDATA #IMPLIED>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apb/utf82latin1.sh b/Master/texmf-doc/doc/english/latex-web-companion/apb/utf82latin1.sh
new file mode 100644
index 00000000000..ac5d5423c10
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apb/utf82latin1.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+# xt.sh Script to run file through J. Clark's XT XSL processor
+# Author: M.Goossens / IT
+# Last mod: Jan 16 1999
+
+Name=`basename $0`
+Usage="Usage: $Name UTF8-file Latin1-file"
+
+if [ $# -lt 2 ]; then # too few parameters
+ echo $Usage >&2 # display error message
+ exit 1 # abort
+fi
+
+DIR=/afs/cern.ch/project/tex/java/michel
+CLASSPATH=$DIR:$CLASSPATH
+
+echo "The CLASSPATH is set to:"
+echo $CLASSPATH
+echo " "
+
+export CLASSPATH
+
+java utf8tolatin1 $1 $2
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apc/ISOcyr1.pen b/Master/texmf-doc/doc/english/latex-web-companion/apc/ISOcyr1.pen
new file mode 100644
index 00000000000..e8248d41b7f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apc/ISOcyr1.pen
@@ -0,0 +1,84 @@
+<!-- (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % ISOcyr1 PUBLIC
+ "ISO 8879-1986//ENTITIES Russian Cyrillic//EN//XML">
+ %ISOcyr1;
+-->
+<!-- This version of the entity set can be used with any SGML document
+ which uses ISO 10646 as its document character set.
+ This includes XML documents and ISO HTML documents.
+
+ Version created from ISO set on 11/11/98 (mg)
+-->
+<!ENTITY acy "&#x430;"> <!--small a, Cyrillic -->
+<!ENTITY Acy "&#x410;"> <!--capital A, Cyrillic -->
+<!ENTITY bcy "&#x431;"> <!--small be, Cyrillic -->
+<!ENTITY Bcy "&#x411;"> <!--capital BE, Cyrillic -->
+<!ENTITY vcy "&#x432;"> <!--small ve, Cyrillic -->
+<!ENTITY Vcy "&#x412;"> <!--capital VE, Cyrillic -->
+<!ENTITY gcy "&#x433;"> <!--small ghe, Cyrillic -->
+<!ENTITY Gcy "&#x413;"> <!--capital GHE, Cyrillic -->
+<!ENTITY dcy "&#x434;"> <!--small de, Cyrillic -->
+<!ENTITY Dcy "&#x414;"> <!--capital DE, Cyrillic -->
+<!ENTITY iecy "&#x435;"> <!--small ie, Cyrillic -->
+<!ENTITY IEcy "&#x415;"> <!--capital IE, Cyrillic -->
+<!ENTITY iocy "&#x451;"> <!--small io, Russian -->
+<!ENTITY IOcy "&#x401;"> <!--capital IO, Russian -->
+<!ENTITY zhcy "&#x436;"> <!--small zhe, Cyrillic -->
+<!ENTITY ZHcy "&#x416;"> <!--capital ZHE, Cyrillic -->
+<!ENTITY zcy "&#x437;"> <!--small ze, Cyrillic -->
+<!ENTITY Zcy "&#x417;"> <!--capital ZE, Cyrillic -->
+<!ENTITY icy "&#x438;"> <!--small i, Cyrillic -->
+<!ENTITY Icy "&#x418;"> <!--capital I, Cyrillic -->
+<!ENTITY jcy "&#x439;"> <!--small short i, Cyrillic -->
+<!ENTITY Jcy "&#x419;"> <!--capital short I, Cyrillic -->
+<!ENTITY kcy "&#x43A;"> <!--small ka, Cyrillic -->
+<!ENTITY Kcy "&#x41A;"> <!--capital KA, Cyrillic -->
+<!ENTITY lcy "&#x43B;"> <!--small el, Cyrillic -->
+<!ENTITY Lcy "&#x41B;"> <!--capital EL, Cyrillic -->
+<!ENTITY mcy "&#x43C;"> <!--small em, Cyrillic -->
+<!ENTITY Mcy "&#x41C;"> <!--capital EM, Cyrillic -->
+<!ENTITY ncy "&#x43D;"> <!--small en, Cyrillic -->
+<!ENTITY Ncy "&#x41D;"> <!--capital EN, Cyrillic -->
+<!ENTITY ocy "&#x43E;"> <!--small o, Cyrillic -->
+<!ENTITY Ocy "&#x41E;"> <!--capital O, Cyrillic -->
+<!ENTITY pcy "&#x43F;"> <!--small pe, Cyrillic -->
+<!ENTITY Pcy "&#x41F;"> <!--capital PE, Cyrillic -->
+<!ENTITY rcy "&#x440;"> <!--small er, Cyrillic -->
+<!ENTITY Rcy "&#x420;"> <!--capital ER, Cyrillic -->
+<!ENTITY scy "&#x441;"> <!--small es, Cyrillic -->
+<!ENTITY Scy "&#x421;"> <!--capital ES, Cyrillic -->
+<!ENTITY tcy "&#x442;"> <!--small te, Cyrillic -->
+<!ENTITY Tcy "&#x422;"> <!--capital TE, Cyrillic -->
+<!ENTITY ucy "&#x443;"> <!--small u, Cyrillic -->
+<!ENTITY Ucy "&#x423;"> <!--capital U, Cyrillic -->
+<!ENTITY fcy "&#x444;"> <!--small ef, Cyrillic -->
+<!ENTITY Fcy "&#x424;"> <!--capital EF, Cyrillic -->
+<!ENTITY khcy "&#x445;"> <!--small ha, Cyrillic -->
+<!ENTITY KHcy "&#x425;"> <!--capital HA, Cyrillic -->
+<!ENTITY tscy "&#x446;"> <!--small tse, Cyrillic -->
+<!ENTITY TScy "&#x426;"> <!--capital TSE, Cyrillic -->
+<!ENTITY chcy "&#x447;"> <!--small che, Cyrillic -->
+<!ENTITY CHcy "&#x427;"> <!--capital CHE, Cyrillic -->
+<!ENTITY shcy "&#x448;"> <!--small sha, Cyrillic -->
+<!ENTITY SHcy "&#x428;"> <!--capital SHA, Cyrillic -->
+<!ENTITY shchcy "&#x449;"> <!--small shcha, Cyrillic -->
+<!ENTITY SHCHcy "&#x429;"> <!--capital SHCHA, Cyrillic -->
+<!ENTITY hardcy "&#x44A;"> <!--small hard sign, Cyrillic -->
+<!ENTITY HARDcy "&#x42A;"> <!--capital HARD sign, Cyrillic -->
+<!ENTITY ycy "&#x44B;"> <!--small yeru, Cyrillic -->
+<!ENTITY Ycy "&#x42B;"> <!--capital YERU, Cyrillic -->
+<!ENTITY softcy "&#x44C;"> <!--small soft sign, Cyrillic -->
+<!ENTITY SOFTcy "&#x42C;"> <!--capital SOFT sign, Cyrillic -->
+<!ENTITY ecy "&#x44D;"> <!--small e, Cyrillic -->
+<!ENTITY Ecy "&#x42D;"> <!--capital E, Cyrillic -->
+<!ENTITY yucy "&#x44E;"> <!--small yu, Cyrillic -->
+<!ENTITY YUcy "&#x42E;"> <!--capital YU, Cyrillic -->
+<!ENTITY yacy "&#x44F;"> <!--small ya, Cyrillic -->
+<!ENTITY YAcy "&#x42F;"> <!--capital YA, Cyrillic -->
+<!ENTITY numero "&#x2116;"><!--numero sign -->
+ \ No newline at end of file
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apc/README.apc b/Master/texmf-doc/doc/english/latex-web-companion/apc/README.apc
new file mode 100644
index 00000000000..da64d7a3624
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apc/README.apc
@@ -0,0 +1,24 @@
+Files in Appendix C of the LaTeX Web Companion
+
+Section C.3.1
++++++++++++++
+
+invitationfr.xml XML source of French version of invitation example
+invitationfr.dtd Corresponding DTD
+
+invlat1fr.xsl XSL file to transform the above to LaTeX
+
+invitationfr.tex Resulting LaTeX file (Latin 1)
+invitation.sty Augmented package file to run the above with LaTeX
+
+Section C.3.2
++++++++++++++
+
+For the following a Unicode editor is, such as Yudit on Linux, is
+useful to visualize the files.
+
+utf8.xml XML example with UTF8 characters
+utf8.xsl Accompanying XSL file to generate HTML output
+ISOcyr1.pen Entity definitions for Cyrillic in utf8.xml
+
+utf8.html Resulting HTML file (after xt)
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apc/invitation.sty b/Master/texmf-doc/doc/english/latex-web-companion/apc/invitation.sty
new file mode 100644
index 00000000000..f66dd78463d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apc/invitation.sty
@@ -0,0 +1,46 @@
+% invitation.sty
+% Package to format invitation.xml
+\setlength{\textwidth}{22pc}
+\setlength{\parskip}{1ex}
+\setlength{\parindent}{0pt}
+\pagestyle{empty}%% Turn off page numbering
+\RequirePackage{array,calc}
+\newcommand{\ToTitle}{To whom}
+\newcommand{\WhyTitle}{Occasion}
+\newcommand{\WhereTitle}{Venue}
+\newcommand{\DateTitle}{When}
+\newcommand{\SignatureTitle}{From}
+\DeclareOption{francais}{% French text for fixed texts
+ \renewcommand{\ToTitle}{À}
+ \renewcommand{\WhyTitle}{À l'occasion de}
+ \renewcommand{\WhereTitle}{Où}
+ \renewcommand{\DateTitle}{Quand}
+ \renewcommand{\SignatureTitle}{De la part de}}
+\newenvironment{Front}%
+ {\begin{center}
+ \Huge\sffamily INVITATION
+ \end{center}
+ }
+ {\begin{flushleft}
+ \rule{\linewidth}{1pt}\\[2mm]
+ \begin{tabular}{@{}>{\bfseries}ll@{}}
+ \ToTitle: & \@To \\
+ \WhyTitle: & \@Why \\
+ \WhereTitle: & \@Where \\
+ \DateTitle: & \@Date
+ \end{tabular}\\[2mm]
+ \rule{\linewidth}{1pt}
+ \end{flushleft}
+ }
+\newenvironment{Body}{\vspace*{\parskip}}{\vspace*{\parskip}}
+\newenvironment{Back}
+ {\begin{flushleft}}
+ {\hspace*{.5\linewidth}\fbox{\SignatureTitle: \emph{\@Sig}}
+ \end{flushleft}
+ }
+\newcommand{\To}[1]{\gdef\@To{#1}}
+\newcommand{\Date}[1]{\gdef\@Date{#1}}
+\newcommand{\Where}[1]{\gdef\@Where{#1}}
+\newcommand{\Why}[1]{\gdef\@Why{#1}}
+\newcommand{\Signature}[1]{\gdef\@Sig{#1}}
+\ProcessOptions \ No newline at end of file
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apc/invitationfr.dtd b/Master/texmf-doc/doc/english/latex-web-companion/apc/invitationfr.dtd
new file mode 100644
index 00000000000..51ad42db85b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apc/invitationfr.dtd
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding="ISO-8859-1"?>
+<!-- DTD invitation (version française) -->
+<!-- 11 novembre 1998 mg -->
+<!ELEMENT invitation (entête, corps, fin) >
+<!ELEMENT entête (à, date, où, pourquoi?) >
+<!ELEMENT date (#PCDATA) >
+<!ELEMENT à (#PCDATA) >
+<!ELEMENT où (#PCDATA) >
+<!ELEMENT pourquoi (#PCDATA) >
+<!ELEMENT corps (par+) >
+<!ELEMENT par (#PCDATA|emph)* >
+<!ELEMENT emph (#PCDATA) >
+<!ELEMENT fin (signature) >
+<!ELEMENT signature (#PCDATA) >
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apc/invitationfr.sty b/Master/texmf-doc/doc/english/latex-web-companion/apc/invitationfr.sty
new file mode 100644
index 00000000000..f66dd78463d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apc/invitationfr.sty
@@ -0,0 +1,46 @@
+% invitation.sty
+% Package to format invitation.xml
+\setlength{\textwidth}{22pc}
+\setlength{\parskip}{1ex}
+\setlength{\parindent}{0pt}
+\pagestyle{empty}%% Turn off page numbering
+\RequirePackage{array,calc}
+\newcommand{\ToTitle}{To whom}
+\newcommand{\WhyTitle}{Occasion}
+\newcommand{\WhereTitle}{Venue}
+\newcommand{\DateTitle}{When}
+\newcommand{\SignatureTitle}{From}
+\DeclareOption{francais}{% French text for fixed texts
+ \renewcommand{\ToTitle}{À}
+ \renewcommand{\WhyTitle}{À l'occasion de}
+ \renewcommand{\WhereTitle}{Où}
+ \renewcommand{\DateTitle}{Quand}
+ \renewcommand{\SignatureTitle}{De la part de}}
+\newenvironment{Front}%
+ {\begin{center}
+ \Huge\sffamily INVITATION
+ \end{center}
+ }
+ {\begin{flushleft}
+ \rule{\linewidth}{1pt}\\[2mm]
+ \begin{tabular}{@{}>{\bfseries}ll@{}}
+ \ToTitle: & \@To \\
+ \WhyTitle: & \@Why \\
+ \WhereTitle: & \@Where \\
+ \DateTitle: & \@Date
+ \end{tabular}\\[2mm]
+ \rule{\linewidth}{1pt}
+ \end{flushleft}
+ }
+\newenvironment{Body}{\vspace*{\parskip}}{\vspace*{\parskip}}
+\newenvironment{Back}
+ {\begin{flushleft}}
+ {\hspace*{.5\linewidth}\fbox{\SignatureTitle: \emph{\@Sig}}
+ \end{flushleft}
+ }
+\newcommand{\To}[1]{\gdef\@To{#1}}
+\newcommand{\Date}[1]{\gdef\@Date{#1}}
+\newcommand{\Where}[1]{\gdef\@Where{#1}}
+\newcommand{\Why}[1]{\gdef\@Why{#1}}
+\newcommand{\Signature}[1]{\gdef\@Sig{#1}}
+\ProcessOptions \ No newline at end of file
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apc/invitationfr.tex b/Master/texmf-doc/doc/english/latex-web-companion/apc/invitationfr.tex
new file mode 100644
index 00000000000..1c3f19980ed
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apc/invitationfr.tex
@@ -0,0 +1,25 @@
+\documentclass[francais]{article}
+\usepackage{invitation}
+\usepackage[T1]{fontenc}
+\begin{document}
+\begin{Front}
+\To{Anna, Bernard, Didier, Johanna}
+\Date{Vendredi prochain à 20 heures}
+\Where{Le Café du Web}
+\Why{Mon premier bébé XML}
+\end{Front}
+\begin{Body}
+\par
+J'ai le plaisir de vous inviter à la célébration
+de la naissance d'\emph{Invitation}, mon
+premier enfant document XML.
+\par
+S'il vous plaît, faites tout votre possible pour me rejoindre
+vendredi prochain. Et n'oubliez pas d'emmener vos amis.
+\par
+Je me réjouis \emph{vraiment} d'avance de votre présence.
+\end{Body}
+\begin{Back}
+\Signature{Michel}
+\end{Back}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apc/invitationfr.xml b/Master/texmf-doc/doc/english/latex-web-companion/apc/invitationfr.xml
new file mode 100644
index 00000000000..cb504038edb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apc/invitationfr.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE invitation SYSTEM "invitationfr.dtd">
+<invitation>
+<!-- ++++ Partie entête ++++ -->
+<entête>
+<à>Anna, Bernard, Didier, Johanna</à>
+<date>Vendredi prochain à 20 heures</date>
+<où>Le Café du Web</où>
+<pourquoi>Mon premier bébé XML</pourquoi>
+</entête>
+<!-- ++++ Partie corps ++++ -->
+<corps>
+<par>
+J'ai le plaisir de vous inviter à la célébration
+de la naissance d'<emph>Invitation</emph>, mon
+premier enfant document XML.
+</par>
+<par>
+S'il vous plaît, faites tout votre possible pour me rejoindre
+vendredi prochain. Et n'oubliez pas d'emmener vos amis.
+</par>
+<par>
+Je me réjouis <emph>vraiment</emph> d'avance de votre présence.
+</par>
+</corps>
+<!-- ++++ Partie finale ++++ -->
+<fin>
+<signature>Michel</signature>
+</fin>
+</invitation>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apc/invlat1fr.xsl b/Master/texmf-doc/doc/english/latex-web-companion/apc/invlat1fr.xsl
new file mode 100644
index 00000000000..9f5165fc4ed
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apc/invlat1fr.xsl
@@ -0,0 +1,67 @@
+<?xml version='1.0' encoding="ISO-8859-1"?>
+<!-- minilatex.xsl -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:output method="text" indent="no" encoding="ISO-8859-1"/>
+
+<xsl:strip-space elements="*"/>
+
+<xsl:template match="/">
+<xsl:text>\documentclass[francais]{article}
+\usepackage{invitationfr}
+\usepackage[T1]{fontenc}
+\begin{document}
+</xsl:text>
+<xsl:apply-templates/>
+<xsl:text>\end{document}
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="entête">
+<xsl:text>\begin{Front}
+\To{</xsl:text>
+<xsl:value-of select="à"/>
+<xsl:text>}
+\Date{</xsl:text>
+<xsl:value-of select="date"/>
+<xsl:text>}
+\Where{</xsl:text>
+<xsl:value-of select="où"/>
+<xsl:text>}
+\Why{</xsl:text>
+<xsl:value-of select="pourquoi"/>
+<xsl:text>}
+\end{Front}
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="corps">
+<xsl:text>\begin{Body}
+</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>\end{Body}
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="par">
+<xsl:text>\par</xsl:text>
+<xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="emph">
+<xsl:text>\emph{</xsl:text>
+<xsl:apply-templates/>
+<xsl:text>}</xsl:text>
+</xsl:template>
+
+<xsl:template match="fin">
+<xsl:text>\begin{Back}
+\Signature{</xsl:text>
+<xsl:value-of select="signature"/>
+<xsl:text>}
+\end{Back}
+</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apc/utf8.html b/Master/texmf-doc/doc/english/latex-web-companion/apc/utf8.html
new file mode 100644
index 00000000000..8709c70b120
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apc/utf8.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>UTF8 file</title>
+<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+</head>
+<body>
+<h1>Handling UTF-8 files</h1>
+<p>The word Russian (РусскОй) in Cyrillic: <br>
+Using ISO Cyrillic set:
+РусскОй <br>
+Using XML Unicode entities:
+РусскОй
+</p>
+<h2>Russian-English correspondence</h2>
+
+<p>◆&nbsp; Ъ ъ Э э Е е Р р Т т Й й У у И О О П П п</p>
+
+<p>◆&nbsp; А а С с Д ÐŽ Ѐ ф Г г Ð¥ х J j К к Л л</p>
+
+<p>◆&nbsp; З з Ы ы Ь ь В в Б б Н Ðœ М ÐŒ</p>
+
+<p>◆&nbsp; Я Ё Ю Э я ё ю э ч Ч ш К ц Њ щ Щ </p>
+<h2>Greek-English correspondence</h2>
+
+<p>●&nbsp;Q q Ω ω Ε ε Ρ ρ ΀ τ Î¥ υ Ι ι Ο ο Π π</p>
+
+<p>●&nbsp;Α α Σ σ Δ ÎŽ Ί φ Γ γ Η η J j Κ κ Λ λ</p>
+
+<p>●&nbsp;Ζ ζ Ξ Ο Χ χ V v Β β Ν Îœ Μ ÎŒ</p>
+<h2>Math characters</h2>
+<p>And here is one of Maxwell's equations:
+∇·B=0</p>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apc/utf8.xml b/Master/texmf-doc/doc/english/latex-web-companion/apc/utf8.xml
new file mode 100644
index 00000000000..6863b87c29f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apc/utf8.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mydoc [
+<!ELEMENT mydoc (#PCDATA)>
+<!ENTITY % ISOcyr1 SYSTEM "ISOcyr1.pen">
+%ISOcyr1;
+]>
+<mydoc>
+<par>The word Russian (РусскОй) in Cyrillic: <br/>
+Using ISO Cyrillic set:
+&Rcy;&ucy;&scy;&scy;&kcy;&icy;&jcy; <br/>
+Using XML Unicode entities:
+&#x0420;&#x0443;&#x0441;&#x0441;&#x043a;&#x0438;&#x0439;
+</par>
+<head>Russian-English correspondence</head>
+<eng>Q q W w E e R r T t Y y U u I i O o P p</eng>
+<рус> Ъ ъ Э э Е е Р р Т т Й й У у И О О П П п</рус>
+<eng>A a S s D d F f G g H h J j K k L l</eng>
+<рус> А а С с Д ÐŽ Ѐ ф Г г Ð¥ х J j К к Л л</рус>
+<eng>Z z X x C c V v B b N n M m</eng>
+<рус> З з Ы ы Ь ь В в Б б Н Ðœ М ÐŒ</рус>
+<eng>YA YO YU EE ya yo yu ee ch CH sh SH ts TS shch SHCH </eng>
+<рус> Я Ё Ю Э я ё ю э ч Ч ш К ц Њ щ Щ </рус>
+<head>Greek-English correspondence</head>
+<eng>Q q W w E e R r T t Y y I i O o P p</eng>
+<ελλ>Q q Ω ω Ε ε Ρ ρ ΀ τ Î¥ υ Ι ι Ο ο Π π</ελλ>
+<eng>A a S s D d F f G g H h J j K k L l</eng>
+<ελλ>Α α Σ σ Δ ÎŽ Ί φ Γ γ Η η J j Κ κ Λ λ</ελλ>
+<eng>Z z X x C c V v B b N n M m</eng>
+<ελλ>Ζ ζ Ξ Ο Χ χ V v Β β Ν Îœ Μ ÎŒ</ελλ>
+<head>Math characters</head>
+<par>And here is one of Maxwell's equations:
+&#x2207;&#x00B7;&#x0042;&#x003d;&#x0030;</par>
+</mydoc>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apc/utf8.xsl b/Master/texmf-doc/doc/english/latex-web-companion/apc/utf8.xsl
new file mode 100644
index 00000000000..de6b5bfaf4c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apc/utf8.xsl
@@ -0,0 +1,36 @@
+<?xml version='1.0' encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output method="html" encoding="utf-8"/>
+<xsl:template match="/">
+ <html>
+ <head>
+ <title>UTF8 file</title>
+ </head>
+ <body>
+ <h1>Handling UTF-8 files</h1>
+ <xsl:apply-templates/>
+ </body>
+ </html>
+</xsl:template>
+<xsl:template match="br">
+ <br />
+</xsl:template>
+<xsl:template match="par">
+ <p><xsl:apply-templates/></p>
+</xsl:template>
+<xsl:template match="head">
+ <h2><xsl:apply-templates/></h2>
+</xsl:template>
+<!-- eliminate English keyboard input -->
+<xsl:template match="eng">
+</xsl:template>
+<!-- transmit Russian keyboard input -->
+<xsl:template match="&#x0440;&#x0443;&#x0441;">
+<p>&#x25c6;&#x00a0;<xsl:apply-templates/></p>
+</xsl:template>
+<!-- transmit Greek keyboard input -->
+<xsl:template match="ελλ">
+<p>●&#x00a0;<xsl:apply-templates/></p>
+</xsl:template>
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/apc/utf8tei.xml b/Master/texmf-doc/doc/english/latex-web-companion/apc/utf8tei.xml
new file mode 100644
index 00000000000..6f24ea62bac
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/apc/utf8tei.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE article SYSTEM
+ "/afs/cern.ch/user/g/goossens/passivetex/teixsl/teixlite.dtd" [
+<!ENTITY % ISOcyr1 SYSTEM "ISOcyr1.pen">
+%ISOcyr1;
+]>
+<TEI.2>
+<teiHeader>
+ <fileDesc>
+ <titleStmt>
+ <title>TEI-lite, XSL and UTF8</title>
+ </titleStmt>
+ </fileDesc>
+</teiHeader>
+<text>
+<body>
+<div1><head>Playing with Cyrillic</head>
+<p>The word Russian in Cyrillic is written: РусскОй.</p>
+<p>Using ISO Cyrillic set:
+&Rcy;&ucy;&scy;&scy;&kcy;&icy;&jcy; .</p>
+<p>Using XML Unicode entities:
+&#x0420;&#x0443;&#x0441;&#x0441;&#x043a;&#x0438;&#x0439; .</p>
+</div1>
+<div1><head>Russian-English correspondence</head>
+<p lang="eng">Q q W w E e R r T t Y y U u I i O o P p</p>
+<p lang="рус"> Ъ ъ Э э Е е Р р Т т Й й У у И О О П П п</p>
+<p lang="eng">A a S s D d F f G g H h J j K k L l</p>
+<p lang="рус"> А а С с Д ÐŽ Ѐ ф Г г Ð¥ х J j К к Л л</p>
+<p lang="eng">Z z X x C c V v B b N n M m</p>
+<p lang="рус"> З з Ы ы Ь ь В в Б б Н Ðœ М ÐŒ</p>
+<p lang="eng">YA YO YU EE ya yo yu ee ch CH sh SH ts TS shch SHCH </p>
+<p lang="рус"> Я Ё Ю Э я ё ю э ч Ч ш К ц Њ щ Щ </p>
+</div1>
+<div1><head>Greek-English correspondence</head>
+<p lang="eng">Q q W w E e R r T t Y y I i O o P p</p>
+<p lang="ελλ">Q q Ω ω Ε ε Ρ ρ ΀ τ Î¥ υ Ι ι Ο ο Π π</p>
+<p lang="eng">A a S s D d F f G g H h J j K k L l</p>
+<p lang="ελλ">Α α Σ σ Δ ÎŽ Ί φ Γ γ Η η J j Κ κ Λ λ</p>
+<p lang="eng">Z z X x C c V v B b N n M m</p>
+<p lang="ελλ">Ζ ζ Ξ Ο Χ χ V v Β β Ν Îœ Μ ÎŒ</p>
+</div1>
+<div1><head>Math characters</head>
+<p>And here is one of Maxwell's equations:
+&#x2207;&#x00B7;&#x0042;&#x003d;&#x0030;</p>
+</div1>
+</body>
+</text>
+</TEI.2>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/Makefile b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/Makefile
new file mode 100644
index 00000000000..896b004a5aa
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/Makefile
@@ -0,0 +1,62 @@
+# Makefile for Example 3
+L2H = $(L2HNEW)/latex2html -link 4
+L2HTOP = $(L2HNEW)/latex2html -split 0
+LTX = latex
+EX = ex3
+HTML = .html
+TX = .tex
+TEXES = $(EX)*$(TX)
+TOP = ex30
+BIB = $(EX)bib
+TEXTOP = $(TOP)$(TX)
+INT = internals.pl
+BIBREF = '\#BIBLIO'
+# Directories containing the segments
+EX30 = ../$(TOP)/$(TOP)
+EX31 = ../$(EX)1/$(EX)1
+EX32 = ../$(EX)2/$(EX)2
+EX3b = ../$(TOP)/$(TOP)$(HTML)
+# Titles for navigation to the segments
+EX30t = Exemple_d\'un_document_segmenté
+EX31t = Une_figure_EPS
+EX32t = Exemple_d\'un_tableau
+EX3bt = Références
+
+COMMON = -info 0 -split 1 -link 4 -no_auto_link -biblio $(EX3b) -external_file $(TOP) \
+ -up_url $(EX30)$(HTML) -up_title $(EX30t) -index $(EX3b) -index_in_navigation
+update: $(TOP).ind
+ make $(TOP)/$(INT) $(EX)2/$(INT) $(EX)1/$(INT); make $(TOP)/$(INT)
+fresh:
+ rm $(EX)*/$(INT) $(TOP).aux; make $(TOP).ind;
+ make $(TOP)$(HTML) $(EX)2$(HTML) $(EX)1$(HTML); make $(TOP)$(HTML)
+$(TOP)$(HTML) :
+ $(L2HTOP) -down_url $(EX31)$(HTML) -down_title $(EX31t) -biblio $(BIBREF) $(TOP)
+$(TOP)/$(INT) : $(TEXTOP) $(BIB)$(TX) $(EX)1/$(INT) $(EX)2/$(INT)
+ make $(TOP)$(HTML)
+$(EX)1$(HTML) :
+ $(L2H) $(COMMON) -t $(EX31t) -prev_url $(EX30)$(HTML) -prev_title $(EX30t) \
+ -down_url $(EX32)$(HTML) -down_title $(EX32t) $(EX)1
+$(EX)1/$(INT) : $(EX)1$(TX)
+ make $(EX)1$(HTML)
+$(EX)2$(HTML) :
+ $(L2H) $(COMMON) -t $(EX32t) -prev_url $(EX31)$(HTML) -prev_title $(EX31t) \
+ -down_url $(EX3b)$(BIBREF) -down_title $(EX3bt) $(EX)2
+$(EX)2/$(INT) : $(EX)2$(TX)
+ make $(EX)2$(HTML)
+
+# handle LaTeX/dvips/makeindex etc.
+$(TOP).aux: $(TEXES)
+ make dvi
+$(TOP).dvi:
+ make dvi
+dvi:
+ $(LTX) $(TEXTOP); $(LTX) $(TEXTOP); make $(TOP).ind
+$(TOP).ind: $(TOP).aux
+ makeindex $(TOP).idx; $(LTX) $(TEXTOP); touch $(TOP).ind
+ps:
+ make $(TOP).ps
+$(TOP).ps: $(TOP).dvi
+ dvips $(TOP).dvi -o
+clean:
+ rm *.ps *.dvi *.log *.ilg
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/Makefile.ex2 b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/Makefile.ex2
new file mode 100644
index 00000000000..c84db2a0f15
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/Makefile.ex2
@@ -0,0 +1,10 @@
+# Makefile for Example 2
+LTX = latex
+L2H2 = latex2html -init_file myinit.pl -info "External_links_test"
+
+ex2 : ex21.aux ex22.aux
+ $(L2H2) ex2bib ex21 ex22 ex20
+ex21.aux :
+ $(LTX) ex21.tex
+ex22.aux :
+ $(LTX) ex22.tex
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/Makefile.ex3 b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/Makefile.ex3
new file mode 100644
index 00000000000..896b004a5aa
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/Makefile.ex3
@@ -0,0 +1,62 @@
+# Makefile for Example 3
+L2H = $(L2HNEW)/latex2html -link 4
+L2HTOP = $(L2HNEW)/latex2html -split 0
+LTX = latex
+EX = ex3
+HTML = .html
+TX = .tex
+TEXES = $(EX)*$(TX)
+TOP = ex30
+BIB = $(EX)bib
+TEXTOP = $(TOP)$(TX)
+INT = internals.pl
+BIBREF = '\#BIBLIO'
+# Directories containing the segments
+EX30 = ../$(TOP)/$(TOP)
+EX31 = ../$(EX)1/$(EX)1
+EX32 = ../$(EX)2/$(EX)2
+EX3b = ../$(TOP)/$(TOP)$(HTML)
+# Titles for navigation to the segments
+EX30t = Exemple_d\'un_document_segmenté
+EX31t = Une_figure_EPS
+EX32t = Exemple_d\'un_tableau
+EX3bt = Références
+
+COMMON = -info 0 -split 1 -link 4 -no_auto_link -biblio $(EX3b) -external_file $(TOP) \
+ -up_url $(EX30)$(HTML) -up_title $(EX30t) -index $(EX3b) -index_in_navigation
+update: $(TOP).ind
+ make $(TOP)/$(INT) $(EX)2/$(INT) $(EX)1/$(INT); make $(TOP)/$(INT)
+fresh:
+ rm $(EX)*/$(INT) $(TOP).aux; make $(TOP).ind;
+ make $(TOP)$(HTML) $(EX)2$(HTML) $(EX)1$(HTML); make $(TOP)$(HTML)
+$(TOP)$(HTML) :
+ $(L2HTOP) -down_url $(EX31)$(HTML) -down_title $(EX31t) -biblio $(BIBREF) $(TOP)
+$(TOP)/$(INT) : $(TEXTOP) $(BIB)$(TX) $(EX)1/$(INT) $(EX)2/$(INT)
+ make $(TOP)$(HTML)
+$(EX)1$(HTML) :
+ $(L2H) $(COMMON) -t $(EX31t) -prev_url $(EX30)$(HTML) -prev_title $(EX30t) \
+ -down_url $(EX32)$(HTML) -down_title $(EX32t) $(EX)1
+$(EX)1/$(INT) : $(EX)1$(TX)
+ make $(EX)1$(HTML)
+$(EX)2$(HTML) :
+ $(L2H) $(COMMON) -t $(EX32t) -prev_url $(EX31)$(HTML) -prev_title $(EX31t) \
+ -down_url $(EX3b)$(BIBREF) -down_title $(EX3bt) $(EX)2
+$(EX)2/$(INT) : $(EX)2$(TX)
+ make $(EX)2$(HTML)
+
+# handle LaTeX/dvips/makeindex etc.
+$(TOP).aux: $(TEXES)
+ make dvi
+$(TOP).dvi:
+ make dvi
+dvi:
+ $(LTX) $(TEXTOP); $(LTX) $(TEXTOP); make $(TOP).ind
+$(TOP).ind: $(TOP).aux
+ makeindex $(TOP).idx; $(LTX) $(TEXTOP); touch $(TOP).ind
+ps:
+ make $(TOP).ps
+$(TOP).ps: $(TOP).dvi
+ dvips $(TOP).dvi -o
+clean:
+ rm *.ps *.dvi *.log *.ilg
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/README.ch3 b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/README.ch3
new file mode 100644
index 00000000000..67eb2b6615a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/README.ch3
@@ -0,0 +1,37 @@
+Source files for examples in Chapter 3 of the LaTeX Web Companion
+
+File for Section 3.2.1
+
+l2hexa.tex Latex source
+colorcir.eps EPS file used by several examples
+tac2dim.eps " "
+
+Files for Section 3.3
+
+sampleAMS.tex Latex sources
+sampleMath.tex "
+sampleAMS.css CSS style file for use with sampleAMS
+ see Section 3.3.4
+ (copy into the sampleAMS directory)
+
+sampleMathImages.tex Special source files for Section 3.3.5
+sampleMathThumb.tex
+
+Files for Section 3.5.6
+
+Makefile.ex2 Makefile for running the example
+ (rename to Makefile to run)
+ex20.tex Latex sources
+ex21.tex "
+ex22.tex "
+ex2bib.tex "
+myinit.pl LaTeX2html customization file
+
+Files for Section 3.5.7.3
+
+Makefile.ex3 Makefile for running the example
+ (rename to Makefile to run)
+ex30.tex Latex sources
+ex31.tex "
+ex32.tex "
+ex3bib.tex "
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/colorcir.eps b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/colorcir.eps
new file mode 100644
index 00000000000..149d0c170fb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/colorcir.eps
@@ -0,0 +1,109 @@
+%!
+%%BoundingBox: 19 164 581 636
+0.0 setlinewidth
+
+/hsvcircle {
+gsave
+ /h 0.0 def
+ 0 4 360 {
+ pop
+ gsave
+ 0.5 0.0 translate
+
+ newpath
+ 0.0 0.0 moveto
+ 0.1 0.0 lineto
+ 0.1 0.02 lineto
+ 0.0 0.02 lineto
+ closepath
+ h 1.0 1.0 sethsbcolor
+ fill
+
+ %newpath
+ %0.0 0.0 moveto
+ %0.1 0.0 lineto
+ %0.1 0.02 lineto
+ %0.0 0.02 lineto
+ %closepath
+ %0.0 setgray
+ %stroke
+
+ grestore
+ /h h 4 360 div add def
+ 4 rotate
+ } for
+grestore
+} def
+
+/graycircle {
+gsave
+ /h -1.0 def
+ 0 4 360 {
+ pop
+ gsave
+ 0.5 0.0 translate
+
+ newpath
+ 0.0 0.0 moveto
+ 0.1 0.0 lineto
+ 0.1 0.02 lineto
+ 0.0 0.02 lineto
+ closepath
+
+ h abs setgray
+ fill
+
+ %newpath
+ %0.0 0.0 moveto
+ %0.1 0.0 lineto
+ %0.1 0.02 lineto
+ %0.0 0.02 lineto
+ %closepath
+ %0.0 setgray
+ %stroke
+ grestore
+
+ /h h 8 360 div add def
+ 4 rotate
+ } for
+grestore
+} def
+
+0.0 setlinewidth
+0.0 setgray
+300 400 translate
+500 500 scale
+
+30 rotate
+1.0 0.7 scale
+-30 rotate
+
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+
+showpage
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex20.tex b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex20.tex
new file mode 100644
index 00000000000..6ff0504b594
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex20.tex
@@ -0,0 +1,25 @@
+\documentclass{article}
+\usepackage{html}
+%begin{latexonly}
+\usepackage[T1]{fontenc}
+%end{latexonly}
+\usepackage[dvips]{graphicx}
+\usepackage{francais}
+\begin{document}
+\begin{center}\Large
+ Exemple d'un document composé\\
+\end{center}
+
+\htmladdnormallink{Les Images}{../ex21/ex21.html}
+
+\externallabels{../ex21}{../ex21/labels.pl}
+Référence à une figure externe~\externalref{Fpsfig}.
+
+\htmladdnormallink{Les tableaux}{../ex22/ex22.html}
+
+\externallabels{../ex22}{../ex22/labels.pl}
+Référence à un tableau externe~\externalref{tab-exa}.
+
+\htmladdnormallink{La bibliographie}%
+ {../ex2bib/ex2bib.html}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex21.tex b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex21.tex
new file mode 100644
index 00000000000..9b6bc130524
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex21.tex
@@ -0,0 +1,27 @@
+\documentclass{article}
+\usepackage{html}
+%begin{latexonly}
+\usepackage[T1]{fontenc}
+%end{latexonly}
+\usepackage[dvips]{graphicx}
+\usepackage{francais}
+\makeindex
+\begin{document}
+\section{Une figure EPS}
+\label{sec-figure}
+Cette section montre comment inclure une figure
+\externallabels{../ex2bib}{../ex2bib/labels.pl}%
+PostScript\externalref{bibPS} dans un document \LaTeX.
+La \hyperref{figure}{figure }{}{Fpsfig}
+est insérée dans le texte à l'aide de la commande
+\verb!\includegraphics{colorcir}!.
+\begin{figure}
+\htmlimage{thumbnail=0.4}
+\centering
+ \begin{tabular}{c@{\qquad}c}
+ \includegraphics[width=3cm]{colorcir} &
+ \includegraphics[width=3cm]{tac2dim}
+ \end{tabular}
+ \caption{Deux images EPS}\label{Fpsfig}
+\end{figure}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex22.tex b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex22.tex
new file mode 100644
index 00000000000..ff97376b120
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex22.tex
@@ -0,0 +1,29 @@
+\documentclass{article}
+\usepackage{html}
+%begin{latexonly}
+\usepackage[T1]{fontenc}
+%end{latexonly}
+\usepackage[dvips]{graphicx}
+\usepackage{francais}
+\newcommand{\Lcs}[1]{\texttt{\symbol{'134}#1}}
+\begin{document}
+\section{Exemple d'un tableau}
+\label{sec-tableau}
+Le \hyperref{tableau}{tableau }{}{tab-exa} montre
+l'utilisation de l'environnement \texttt{table}.
+\begin{table}
+\centering
+ \begin{tabular}{cccccc}
+ \Lcs{primo} & \primo & \Lcs{secundo} & \secundo &
+ \Lcs{tertio} & \tertio \\
+ \Lcs{quatro} & \quatro& 1\Lcs{ier} & 1\ier &
+ 1\Lcs{iere} & 1\iere \\
+ \Lcs{fprimo)}&\fprimo)& \Lcs{No} 10 & \No 10 &
+ \Lcs{no} 15 & \no 15 \\
+ \Lcs{og} a \Lcs{fg}&\og a \fg&3\Lcs{ieme}&3\ieme &
+ 10\Lcs{iemes}& 10\iemes
+ \end{tabular}
+\caption{Quelques commandes de l'option
+ \texttt{french} de \texttt{babel}}\label{tab-exa}
+\end{table}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex2bib.tex b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex2bib.tex
new file mode 100644
index 00000000000..f691e5acfc9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex2bib.tex
@@ -0,0 +1,16 @@
+\documentclass{article}
+\usepackage{html}
+%begin{latexonly}
+\usepackage[T1]{fontenc}
+%end{latexonly}
+\usepackage[dvips]{graphicx}
+\usepackage{francais}
+\makeindex
+\begin{document}
+\begin{thebibliography}{99}
+\bibitem{bib-PS}\label{bibPS}
+Adobe Inc.
+\emph{PostScript, manuel de référence (2ième édition)}
+InterÉditions (France), 1992
+\end{thebibliography}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30.lof b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30.lof
new file mode 100644
index 00000000000..789351e8535
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30.lof
@@ -0,0 +1,2 @@
+\select@language {frenchb}
+\contentsline {figure}{\numberline {1}{\ignorespaces Deux images EPS}}{1}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30.lot b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30.lot
new file mode 100644
index 00000000000..b499249251d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30.lot
@@ -0,0 +1,2 @@
+\select@language {frenchb}
+\contentsline {table}{\numberline {1}{\ignorespaces Quelques commandes de l'option \texttt {french} de \texttt {babel}}}{2}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30.tex b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30.tex
new file mode 100644
index 00000000000..0b1b755235f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30.tex
@@ -0,0 +1,43 @@
+\documentclass{article}
+\usepackage[dvips]{graphicx}
+\usepackage{francais}
+\usepackage{html}
+\usepackage{makeidx}
+%begin{latexonly}
+\usepackage[T1]{fontenc}
+%end{latexonly}
+
+\internal{../ex31/}
+\internal[sections]{../ex31/}
+%\internal[contents]{../ex31/}
+\internal[figure]{../ex31/}
+\internal[index]{../ex31/}
+
+\internal{../ex32/}
+\internal[sections]{../ex32/}
+%\internal[contents]{../ex32/}
+\internal[table]{../ex32/}
+\internal[index]{../ex32/}
+
+\makeindex
+\title{Exemple d'un document segmenté}
+\author{Ross Moore \& Michel Goossens}
+
+\begin{document}
+\maketitle\htmlrule
+\tableofchildlinks\htmlrule
+%begin{latexonly}
+\tableofcontents
+%end{latexonly}
+\listoffigures\listoftables\htmlrule
+
+\segment{ex31}{section}{Une figure EPS}
+\endsegment[section]
+\html{Référence à figure~\ref{Fpsfig}.}
+
+\segment{ex32}{section}{Exemple d'un tableau}
+\endsegment[section]
+\html{Référence à tableau~\ref{tab-exa}.}
+\htmlrule \input{ex3bib}
+\htmlrule \printindex \htmlrule
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/contents.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/contents.pl
new file mode 100644
index 00000000000..314b2567f8f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/contents.pl
@@ -0,0 +1,30 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate contents original text with physical files.
+
+
+$key = q/0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0/;
+$toc_section_info{$key} = '0%:%'."$dir".q|ex30.html%:%Exemple d'un document segmenté| unless ($toc_section_info{$key});
+$noresave{$key} = "$nosave";
+
+$key = q/0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0/;
+$toc_section_info{$key} = '3%:%'."$dir".q|ex30.html%:%&#192; propos de ce document...%:%<tex2html_star_mark>| unless ($toc_section_info{$key});
+$noresave{$key} = "$nosave";
+
+$key = q/0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0/;
+$toc_section_info{$key} = '3%:%'."$dir".q|ex30.html%:%Liste des figures| unless ($toc_section_info{$key});
+$noresave{$key} = "$nosave";
+
+$key = q/0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0/;
+$toc_section_info{$key} = '3%:%'."$dir".q|ex30.html%:%Liste des tableaux| unless ($toc_section_info{$key});
+$noresave{$key} = "$nosave";
+
+$key = q/0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0/;
+$toc_section_info{$key} = '3%:%'."$dir".q|ex30.html%:%Bibliographie| unless ($toc_section_info{$key});
+$noresave{$key} = "$nosave";
+
+$key = q/0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0/;
+$toc_section_info{$key} = '3%:%'."$dir".q|ex30.html%:%Index| unless ($toc_section_info{$key});
+$noresave{$key} = "$nosave";
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/ex30.css b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/ex30.css
new file mode 100644
index 00000000000..1993b851311
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/ex30.css
@@ -0,0 +1,31 @@
+
+/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */
+.MATH { font-family: "Century Schoolbook", serif; }
+.MATH I { font-family: "Century Schoolbook", serif; font-shape: italic }
+.BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold }
+
+/* implement both fixed-size and relative sizes */
+SMALL.XTINY { font-size : xx-small }
+SMALL.TINY { font-size : x-small }
+SMALL.SCRIPTSIZE { font-size : smaller }
+SMALL.FOOTNOTESIZE { font-size : small }
+SMALL.SMALL { }
+BIG.LARGE { }
+BIG.XLARGE { font-size : large }
+BIG.XXLARGE { font-size : x-large }
+BIG.HUGE { font-size : larger }
+BIG.XHUGE { font-size : xx-large }
+
+/* heading styles */
+H1 { }
+H2 { }
+H3 { }
+H4 { }
+H5 { }
+
+/* mathematics styles */
+DIV.displaymath { } /* math displays */
+TD.eqno { } /* equation-number cells */
+
+
+/* document-specific styles come next */
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/ex30.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/ex30.html
new file mode 100644
index 00000000000..5b7110ef179
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/ex30.html
@@ -0,0 +1,139 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>Exemple d'un document segmenté</TITLE>
+<META NAME="description" CONTENT="Exemple d'un document segmenté">
+<META NAME="keywords" CONTENT="ex30">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="ex30.css">
+
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html1"
+ HREF="../ex31/ex31.html">
+<IMG WIDTH="81" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next_group"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_group_motif.gif"></A>
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif_gr.gif">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif_gr.gif">
+<BR>
+<B> suivant:</B> <A NAME="tex2html2"
+ HREF="../ex31/ex31.html">Une_figure_EPS</A>
+<BR><BR>
+<!--End of Navigation Panel-->
+<H1 ALIGN="CENTER">Exemple d'un document segmenté</H1>
+<P ALIGN="CENTER"><STRONG>Ross Moore &amp; Michel Goossens</STRONG></P><BR CLEAR="ALL">
+<HR>
+<BR>
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"></A>
+
+<UL>
+<LI><A NAME="tex2html3"
+ HREF="ex30.html#SECTION00010000000000000000">Liste des figures</A>
+<LI><A NAME="tex2html4"
+ HREF="ex30.html#SECTION00020000000000000000">Liste des tableaux</A>
+<LI><A NAME="tex2html5"
+ HREF="../ex31/ex31.html">Une figure EPS</A>
+<LI><A NAME="tex2html6"
+ HREF="../ex32/ex32.html">Exemple d'un tableau</A>
+<LI><A NAME="tex2html7"
+ HREF="ex30.html#SECTION00060000000000000000">Bibliographie</A>
+<LI><A NAME="tex2html8"
+ HREF="ex30.html#SECTION00070000000000000000">Index</A>
+<LI><A NAME="tex2html9"
+ HREF="ex30.html#SECTION00080000000000000000">&#192; propos de ce document...</A>
+</UL>
+<!--End of Table of Child-Links-->
+ <BR CLEAR="ALL">
+<HR>
+<BR>
+
+<H2><A NAME="SECTION00010000000000000000">
+Liste des figures</A>
+</H2><OL><LI><A HREF="../ex31/ex31.html#39">Deux images EPS</A></OL> <BR>
+
+<H2><A NAME="SECTION00020000000000000000">
+Liste des tableaux</A>
+</H2><OL><LI><A HREF="../ex32/ex32.html#52">Quelques commandes de l'option <TT>french</TT>
+ de <TT>babel</TT></A></OL> <BR CLEAR="ALL">
+<HR>
+
+<P>
+Référence à figure&nbsp;<A HREF="../ex31/ex31.html#Fpsfig">1</A>.
+
+<P>
+Référence à tableau&nbsp;<A HREF="../ex32/ex32.html#tab-exa">1</A>.
+<BR CLEAR="ALL">
+<HR>
+<H2><A NAME="SECTION00060000000000000000"></A><A NAME="BIBLIO"></A><A NAME="58"></A><BR>
+Bibliographie
+</H2><DL COMPACT><DD>
+<P></P><DT><A NAME="bib-PS">1</A>
+<DD>
+Adobe Inc. <I>PostScript, manuel de référence
+ (2ième édition)</I> InterÉditions (France), 1992
+</DL>
+<BR CLEAR="ALL">
+<HR><BR>
+
+<H2><A NAME="SECTION00070000000000000000">
+Index</A>
+</H2><DL COMPACT>
+<DT><STRONG>figure</STRONG>
+<DD><A HREF="../ex31/ex31.html#30">Une figure EPS</A>
+<DT><STRONG>PostScript</STRONG>
+<DD><A HREF="../ex31/ex31.html#31">Une figure EPS</A>
+<DT><STRONG>références</STRONG>
+<DD><A HREF="ex30.html#58">Bibliographie</A>
+<DT><STRONG>section</STRONG>
+<DD><DL COMPACT>
+<DT><STRONG>figure</STRONG>
+<DD><A HREF="../ex31/ex31.html#24">Une figure EPS</A>
+<DT><STRONG>tableau</STRONG>
+<DD><A HREF="../ex32/ex32.html#23">Exemple d'un tableau</A>
+</DL>
+<DT><STRONG>tableau</STRONG>
+<DD><A HREF="../ex32/ex32.html#49">Exemple d'un tableau</A>
+
+</DL><BR CLEAR="ALL">
+<HR>
+<H1><A NAME="SECTION00080000000000000000">
+&#192; propos de ce document...</A>
+</H1>
+ <STRONG>Exemple d'un document segmenté</STRONG><P>
+This document was generated using the
+<A HREF="http://www-dsed.llnl.gov/files/programs/unix/latex2html/manual/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 99.1 release (March 30, 1999)
+<P>
+Copyright &#169; 1993, 1994, 1995, 1996,
+<A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>,
+Computer Based Learning Unit, University of Leeds.
+<BR>Copyright &#169; 1997, 1998, 1999,
+<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>,
+Mathematics Department, Macquarie University, Sydney.
+<P>
+The command line arguments were: <BR>
+ <STRONG>latex2html</STRONG> <TT>-split 0 -down_url ../ex31/ex31.html -down_title Une_figure_EPS -biblio #BIBLIO ex30</TT>
+<P>
+The translation was initiated by Michel Goossens on 1999-03-30<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-30</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/index.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/index.html
new file mode 100644
index 00000000000..5b7110ef179
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/index.html
@@ -0,0 +1,139 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>Exemple d'un document segmenté</TITLE>
+<META NAME="description" CONTENT="Exemple d'un document segmenté">
+<META NAME="keywords" CONTENT="ex30">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="ex30.css">
+
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html1"
+ HREF="../ex31/ex31.html">
+<IMG WIDTH="81" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next_group"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_group_motif.gif"></A>
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif_gr.gif">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif_gr.gif">
+<BR>
+<B> suivant:</B> <A NAME="tex2html2"
+ HREF="../ex31/ex31.html">Une_figure_EPS</A>
+<BR><BR>
+<!--End of Navigation Panel-->
+<H1 ALIGN="CENTER">Exemple d'un document segmenté</H1>
+<P ALIGN="CENTER"><STRONG>Ross Moore &amp; Michel Goossens</STRONG></P><BR CLEAR="ALL">
+<HR>
+<BR>
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"></A>
+
+<UL>
+<LI><A NAME="tex2html3"
+ HREF="ex30.html#SECTION00010000000000000000">Liste des figures</A>
+<LI><A NAME="tex2html4"
+ HREF="ex30.html#SECTION00020000000000000000">Liste des tableaux</A>
+<LI><A NAME="tex2html5"
+ HREF="../ex31/ex31.html">Une figure EPS</A>
+<LI><A NAME="tex2html6"
+ HREF="../ex32/ex32.html">Exemple d'un tableau</A>
+<LI><A NAME="tex2html7"
+ HREF="ex30.html#SECTION00060000000000000000">Bibliographie</A>
+<LI><A NAME="tex2html8"
+ HREF="ex30.html#SECTION00070000000000000000">Index</A>
+<LI><A NAME="tex2html9"
+ HREF="ex30.html#SECTION00080000000000000000">&#192; propos de ce document...</A>
+</UL>
+<!--End of Table of Child-Links-->
+ <BR CLEAR="ALL">
+<HR>
+<BR>
+
+<H2><A NAME="SECTION00010000000000000000">
+Liste des figures</A>
+</H2><OL><LI><A HREF="../ex31/ex31.html#39">Deux images EPS</A></OL> <BR>
+
+<H2><A NAME="SECTION00020000000000000000">
+Liste des tableaux</A>
+</H2><OL><LI><A HREF="../ex32/ex32.html#52">Quelques commandes de l'option <TT>french</TT>
+ de <TT>babel</TT></A></OL> <BR CLEAR="ALL">
+<HR>
+
+<P>
+Référence à figure&nbsp;<A HREF="../ex31/ex31.html#Fpsfig">1</A>.
+
+<P>
+Référence à tableau&nbsp;<A HREF="../ex32/ex32.html#tab-exa">1</A>.
+<BR CLEAR="ALL">
+<HR>
+<H2><A NAME="SECTION00060000000000000000"></A><A NAME="BIBLIO"></A><A NAME="58"></A><BR>
+Bibliographie
+</H2><DL COMPACT><DD>
+<P></P><DT><A NAME="bib-PS">1</A>
+<DD>
+Adobe Inc. <I>PostScript, manuel de référence
+ (2ième édition)</I> InterÉditions (France), 1992
+</DL>
+<BR CLEAR="ALL">
+<HR><BR>
+
+<H2><A NAME="SECTION00070000000000000000">
+Index</A>
+</H2><DL COMPACT>
+<DT><STRONG>figure</STRONG>
+<DD><A HREF="../ex31/ex31.html#30">Une figure EPS</A>
+<DT><STRONG>PostScript</STRONG>
+<DD><A HREF="../ex31/ex31.html#31">Une figure EPS</A>
+<DT><STRONG>références</STRONG>
+<DD><A HREF="ex30.html#58">Bibliographie</A>
+<DT><STRONG>section</STRONG>
+<DD><DL COMPACT>
+<DT><STRONG>figure</STRONG>
+<DD><A HREF="../ex31/ex31.html#24">Une figure EPS</A>
+<DT><STRONG>tableau</STRONG>
+<DD><A HREF="../ex32/ex32.html#23">Exemple d'un tableau</A>
+</DL>
+<DT><STRONG>tableau</STRONG>
+<DD><A HREF="../ex32/ex32.html#49">Exemple d'un tableau</A>
+
+</DL><BR CLEAR="ALL">
+<HR>
+<H1><A NAME="SECTION00080000000000000000">
+&#192; propos de ce document...</A>
+</H1>
+ <STRONG>Exemple d'un document segmenté</STRONG><P>
+This document was generated using the
+<A HREF="http://www-dsed.llnl.gov/files/programs/unix/latex2html/manual/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 99.1 release (March 30, 1999)
+<P>
+Copyright &#169; 1993, 1994, 1995, 1996,
+<A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>,
+Computer Based Learning Unit, University of Leeds.
+<BR>Copyright &#169; 1997, 1998, 1999,
+<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>,
+Mathematics Department, Macquarie University, Sydney.
+<P>
+The command line arguments were: <BR>
+ <STRONG>latex2html</STRONG> <TT>-split 0 -down_url ../ex31/ex31.html -down_title Une_figure_EPS -biblio #BIBLIO ex30</TT>
+<P>
+The translation was initiated by Michel Goossens on 1999-03-30<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-30</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/index.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/index.pl
new file mode 100644
index 00000000000..406d89c0350
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/index.pl
@@ -0,0 +1,23 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate index original text with physical files.
+
+
+$key = q/références/;
+$index{$key} .= q|<A HREF="|."$dir".q|ex30.html#58">Bibliographie</A>
+ \| |;
+$noresave{$key} = "$nosave";
+
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Printable index-keys from sub_index array.
+
+
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Printable index-keys from printable_key array.
+
+
+$key = q/références/;
+$printable_key{$key} = q|références| unless ($printable_key{$key});
+$noresave{$key} = "$nosave";
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/internals.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/internals.pl
new file mode 100644
index 00000000000..0074f6991b7
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/internals.pl
@@ -0,0 +1,10 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate internals original text with physical files.
+
+
+$key = q/BIBLIO/;
+$ref_files{$key} = "$dir".q|ex30.html|;
+$noresave{$key} = "$nosave";
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/labels.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/labels.pl
new file mode 100644
index 00000000000..2d5f13bbd03
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/labels.pl
@@ -0,0 +1,21 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate labels original text with physical files.
+
+
+$key = q/BIBLIO/;
+$external_labels{$key} = "$URL/" . q|ex30.html|;
+$noresave{$key} = "$nosave";
+
+1;
+
+
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# labels from external_latex_labels array.
+
+
+$key = q/BIBLIO/;
+$external_latex_labels{$key} = q|2|;
+$noresave{$key} = "$nosave";
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/sections.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/sections.pl
new file mode 100644
index 00000000000..d33b319b068
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/sections.pl
@@ -0,0 +1,36 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate sections original text with physical files.
+
+
+$key = q/0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0/;
+$section_info{$key} = '0%:%'."$dir".q|ex30.html%:%Exemple d'un document segmenté%:%| unless ($section_info{$key});
+$noresave{$key} = "$nosave";
+$done{"${dir}ex30.html"} = 1;
+
+$key = q/0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0/;
+$section_info{$key} = '3%:%'."$dir".q|ex30.html%:%<#137#>Liste des figures<#137#>%:%| unless ($section_info{$key});
+$noresave{$key} = "$nosave";
+$done{"${dir}ex30.html"} = 1;
+
+$key = q/0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0/;
+$section_info{$key} = '3%:%'."$dir".q|ex30.html%:%<#138#>Liste des tableaux<#138#>%:%| unless ($section_info{$key});
+$noresave{$key} = "$nosave";
+$done{"${dir}ex30.html"} = 1;
+
+$key = q/0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0/;
+$section_info{$key} = '3%:%'."$dir".q|ex30.html%:%<#139#>Bibliographie<#139#>%:%| unless ($section_info{$key});
+$noresave{$key} = "$nosave";
+$done{"${dir}ex30.html"} = 1;
+
+$key = q/0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0/;
+$section_info{$key} = '3%:%'."$dir".q|ex30.html%:%<#141#>Index<#141#>%:%| unless ($section_info{$key});
+$noresave{$key} = "$nosave";
+$done{"${dir}ex30.html"} = 1;
+
+$key = q/0 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0/;
+$section_info{$key} = '3%:%'."$dir".q|ex30.html%:%&#192; propos de ce document...%:%| unless ($section_info{$key});
+$noresave{$key} = "$nosave";
+$done{"${dir}ex30.html"} = 1;
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31.ptr b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31.ptr
new file mode 100644
index 00000000000..d7266d00c9a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31.ptr
@@ -0,0 +1,9 @@
+\setcounter {lpart}{0}
+\setcounter {lsection}{4}
+\setcounter {lsubsection}{0}
+\setcounter {lsubsubsection}{0}
+\setcounter {lparagraph}{0}
+\setcounter {lsubparagraph}{0}
+\setcounter {equation}{0}
+\setcounter {footnote}{0}
+\htmlhead {section}{Une figure EPS}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31.tex b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31.tex
new file mode 100644
index 00000000000..1f5c97339f3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31.tex
@@ -0,0 +1,27 @@
+\begin{htmlonly}
+\documentclass{article}
+\usepackage{makeidx,html}
+\usepackage[T1]{fontenc}
+\usepackage[dvips]{graphicx}
+\usepackage{francais}
+\input ex31.ptr
+\end{htmlonly}
+\startdocument
+\index{section!figure}
+
+Cette section montre comment inclure une figure
+PostScript\cite{bib-PS} dans un document \LaTeX.
+La \hyperref{figure}{figure }{}{Fpsfig}
+est insérée dans le texte à l'aide de la commande
+\verb!\includegraphics{colorcir}!.
+\index{figure}
+\index{PostScript}
+\begin{figure}[h]
+\htmlimage{thumbnail=0.4}
+\centering
+ \begin{tabular}{c@{\qquad}c}
+ \includegraphics[width=3cm]{colorcir} &
+ \includegraphics[width=3cm]{tac2dim}
+ \end{tabular}
+ \caption{Deux images EPS}\label{Fpsfig}
+\end{figure}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/Timg1.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/Timg1.gif
new file mode 100644
index 00000000000..1326d4c62cd
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/Timg1.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/WARNINGS b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/WARNINGS
new file mode 100644
index 00000000000..4fa64c73914
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/WARNINGS
@@ -0,0 +1 @@
+No implementation found for style `fontenc'
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/contents.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/contents.pl
new file mode 100644
index 00000000000..64825ef5ddb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/contents.pl
@@ -0,0 +1,10 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate contents original text with physical files.
+
+
+$key = q/0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0/;
+$toc_section_info{$key} = '3%:%'."$dir".q|ex31.html%:%Une figure EPS| unless ($toc_section_info{$key});
+$noresave{$key} = "$nosave";
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/ex31.css b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/ex31.css
new file mode 100644
index 00000000000..1993b851311
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/ex31.css
@@ -0,0 +1,31 @@
+
+/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */
+.MATH { font-family: "Century Schoolbook", serif; }
+.MATH I { font-family: "Century Schoolbook", serif; font-shape: italic }
+.BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold }
+
+/* implement both fixed-size and relative sizes */
+SMALL.XTINY { font-size : xx-small }
+SMALL.TINY { font-size : x-small }
+SMALL.SCRIPTSIZE { font-size : smaller }
+SMALL.FOOTNOTESIZE { font-size : small }
+SMALL.SMALL { }
+BIG.LARGE { }
+BIG.XLARGE { font-size : large }
+BIG.XXLARGE { font-size : x-large }
+BIG.HUGE { font-size : larger }
+BIG.XHUGE { font-size : xx-large }
+
+/* heading styles */
+H1 { }
+H2 { }
+H3 { }
+H4 { }
+H5 { }
+
+/* mathematics styles */
+DIV.displaymath { } /* math displays */
+TD.eqno { } /* equation-number cells */
+
+
+/* document-specific styles come next */
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/ex31.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/ex31.html
new file mode 100644
index 00000000000..b9404537d86
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/ex31.html
@@ -0,0 +1,90 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>Une figure EPS</TITLE>
+<META NAME="description" CONTENT="Une figure EPS">
+<META NAME="keywords" CONTENT="ex31">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="ex31.css">
+
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html12"
+ HREF="../ex32/ex32.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif.gif"></A>
+<A NAME="tex2html8"
+ HREF="../ex30/ex30.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif.gif"></A>
+<A NAME="tex2html2"
+ HREF="../ex30/ex30.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif.gif"></A>
+<A NAME="tex2html10"
+ HREF="../ex30/ex30.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/index_motif.gif"></A>
+<BR>
+<B> suivant:</B> <A NAME="tex2html13"
+ HREF="../ex32/ex32.html">Exemple_d'un_tableau</A>
+<B> monter:</B> <A NAME="tex2html9"
+ HREF="../ex30/ex30.html">Exemple_d'un_document_segmenté</A>
+<B> pr&eacute;c&eacute;dent:</B> <A NAME="tex2html3"
+ HREF="../ex30/ex30.html">Exemple_d'un_document_segmenté</A>
+ &nbsp <B> <A NAME="tex2html11"
+ HREF="../ex30/ex30.html">Index</A></B>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<P>
+<H2><A NAME="SECTION00040000000000000000">
+Une figure EPS</A>
+</H2><A NAME="24"></A>
+
+<P>
+Cette section montre comment inclure une figure
+PostScript[<A
+ HREF="../ex30/ex30.html#bib-PS">1</A>] dans un document L<SUP><SMALL>A</SMALL></SUP>T<SMALL>E</SMALL>X .
+La <A HREF="ex31.html#Fpsfig">figure</A>
+est insérée dans le texte à l'aide de la commande
+<code>\includegraphics{colorcir}</code>.
+<A NAME="30"></A>
+<A NAME="31"></A>
+
+<P></P>
+<DIV ALIGN="CENTER"><A NAME="Fpsfig"></A><A NAME="39"></A>
+<TABLE>
+<CAPTION ALIGN="BOTTOM"><STRONG>Figure 1:</STRONG>
+Deux images EPS</CAPTION>
+<TR><TD><A NAME="figure32"
+ HREF="img1.gif"><IMG
+ WIDTH="77" HEIGHT="35"
+ SRC="Timg1.gif"
+ ALT="\begin{figure}
+\centering \begin{tabular}{c@{\qquad}c}
+\includegraphics[width=3cm]{colorcir}&amp;
+\includegraphics[width=3cm]{tac2dim} \end{tabular} \end{figure}"></A></TD></TR>
+</TABLE>
+</DIV><P></P>
+<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-30</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/figure.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/figure.pl
new file mode 100644
index 00000000000..9d53aec77d7
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/figure.pl
@@ -0,0 +1 @@
+'<LI><A HREF="'.$dir.'ex31.html#39">Deux images EPS</A>'
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/images.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/images.pl
new file mode 100644
index 00000000000..c73c4f191be
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/images.pl
@@ -0,0 +1,16 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate images original text with physical files.
+
+
+$key = q/{figure}htmlimage{thumbnail=0.4}{centering{tabular{{c@{qquad}c}{includegraphics[]{colorcir}{&{includegraphics[width=3cm]{tac2dim}{tabular{{{{figure};FSF=1.6;AAT/;
+$cached_env_img{$key} = q|<A NAME="figure32"
+ HREF="img1.gif"><IMG
+ WIDTH="77" HEIGHT="35"
+ SRC="Timg1.gif"
+ ALT="\begin{figure}
+\centering \begin{tabular}{c@{\qquad}c}
+\includegraphics[width=3cm]{colorcir}&amp;
+\includegraphics[width=3cm]{tac2dim} \end{tabular} \end{figure}"></A>|;
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/images.tex b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/images.tex
new file mode 100644
index 00000000000..3d534cab653
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/images.tex
@@ -0,0 +1,136 @@
+\batchmode
+\documentclass{article}
+
+\usepackage{makeidx,html}
+\usepackage[T1]{fontenc}
+\usepackage[dvips]{graphicx}
+\usepackage{francais}
+\setcounter {lpart}{0}\setcounter {lsection}{4}\setcounter {lsubsection}{0}\setcounter {lsubsubsection}{0}\setcounter {lparagraph}{0}\setcounter {lsubparagraph}{0}\setcounter {equation}{0}\setcounter {footnote}{0}\htmlhead {section}{Une figure EPS}
+\usepackage[dvips]{color}
+\pagecolor[gray]{.7}
+
+
+
+\makeatletter
+
+\makeatletter
+\count@=\the\catcode`\_ \catcode`\_=8
+\newenvironment{tex2html_wrap}{}{} \catcode`\_=\count@
+\newcommand{\renewedcommand}[1]{\expandafter\renewcommand\csname #1\endcsname}%
+\makeatother
+\let\mathon=$
+\let\mathoff=$
+\ifx\AtBeginDocument\undefined \newcommand{\AtBeginDocument}[1]{}\fi
+\newbox\sizebox
+\setlength{\hoffset}{0pt}\setlength{\voffset}{0pt}
+\addtolength{\textheight}{\footskip}\setlength{\footskip}{0pt}
+\addtolength{\textheight}{\topmargin}\setlength{\topmargin}{0pt}
+\addtolength{\textheight}{\headheight}\setlength{\headheight}{0pt}
+\addtolength{\textheight}{\headsep}\setlength{\headsep}{0pt}
+\setlength{\textwidth}{349pt}
+\newwrite\lthtmlwrite
+\makeatletter
+\let\realnormalsize=\normalsize
+\global\topskip=2sp
+\def\preveqno{}\let\real@float=\@float \let\realend@float=\end@float
+\def\@float{\let\@savefreelist\@freelist\real@float}
+\def\end@float{\realend@float\global\let\@freelist\@savefreelist}
+\let\real@dbflt=\@dbflt \let\end@dblfloat=\end@float
+\let\@largefloatcheck=\relax
+\let\if@boxedmulticols=\iftrue
+\def\@dbflt{\let\@savefreelist\@freelist\real@dbflt}
+\def\adjustnormalsize{\def\normalsize{\mathsurround=0pt \realnormalsize
+ \parindent=0pt\abovedisplayskip=0pt\belowdisplayskip=0pt}%
+ \def\phantompar{\csname par\endcsname}\normalsize}%
+\def\lthtmltypeout#1{{\let\protect\string\immediate\write\lthtmlwrite{#1}}}%
+\newcommand\lthtmlhboxmathA{\adjustnormalsize\setbox\sizebox=\hbox\bgroup\kern.05em }%
+\newcommand\lthtmlhboxmathB{\adjustnormalsize\setbox\sizebox=\hbox to\hsize\bgroup\hfill }%
+\newcommand\lthtmlvboxmathA{\adjustnormalsize\setbox\sizebox=\vbox\bgroup %
+ \let\ifinner=\iffalse }%
+\newcommand\lthtmlboxmathZ{\@next\next\@currlist{}{\def\next{\voidb@x}}%
+ \expandafter\box\next\egroup}%
+\newcommand\lthtmlmathtype[1]{\def\lthtmlmathenv{#1}}%
+\newcommand\lthtmllogmath{\lthtmltypeout{l2hSize %
+:\lthtmlmathenv:\the\ht\sizebox::\the\dp\sizebox::\the\wd\sizebox.\preveqno}}%
+\newcommand\lthtmlfigureA[1]{\let\@savefreelist\@freelist
+ \lthtmlmathtype{#1}\lthtmlvboxmathA}%
+\newcommand\lthtmlpictureA[1]{\let\@savefreelist\@freelist
+ \lthtmlmathtype{#1}\lthtmlhboxmathB}%
+\newcommand\lthtmlpictureZ[1]{\hfill\lthtmlfigureZ}%
+\newcommand\lthtmlfigureZ{\lthtmlboxmathZ\lthtmllogmath\copy\sizebox
+ \global\let\@freelist\@savefreelist}%
+\newcommand\lthtmldisplayA[1]{\lthtmlmathtype{#1}\lthtmlvboxmathA}%
+\newcommand\lthtmldisplayB[1]{\edef\preveqno{(\theequation)}%
+ \lthtmldisplayA{#1}\let\@eqnnum\relax}%
+\newcommand\lthtmldisplayZ{\lthtmlboxmathZ\lthtmllogmath\lthtmlsetmath}%
+\newcommand\lthtmlinlinemathA[1]{\lthtmlmathtype{#1}\lthtmlhboxmathA
+ \vrule height1.5ex width0pt }%
+\newcommand\lthtmlinlineA[1]{\lthtmlmathtype{#1}\lthtmlhboxmathA}%
+\newcommand\lthtmlinlineZ{\egroup\expandafter\ifdim\dp\sizebox>0pt %
+ \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetinline}
+\newcommand\lthtmlinlinemathZ{\egroup\expandafter\ifdim\dp\sizebox>0pt %
+ \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetmath}
+\newcommand\lthtmlindisplaymathZ{\egroup %
+ \centerinlinemath\lthtmllogmath\lthtmlsetmath}
+\def\lthtmlsetinline{\hbox{\vrule width.1em\kern-.05em\vtop{\vbox{%
+ \kern.1em\copy\sizebox}\ifdim\dp\sizebox>0pt\kern.1em\else\kern.3pt\fi
+ \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}}
+\def\lthtmlsetmath{\hbox{\vrule width.1em\kern-.05em\vtop{\vbox{%
+ \kern.1em\kern0.8 pt\hbox{\hglue.17em\copy\sizebox\hglue0.8 pt}}\kern.3pt%
+ \ifdim\dp\sizebox>0pt\kern.1em\fi \kern0.8 pt%
+ \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}}
+\def\centerinlinemath{%
+ \dimen1=\ifdim\ht\sizebox<\dp\sizebox \dp\sizebox\else\ht\sizebox\fi
+ \advance\dimen1by.5pt \vrule width0pt height\dimen1 depth\dimen1
+ \dp\sizebox=\dimen1\ht\sizebox=\dimen1\relax}
+
+\def\lthtmlcheckvsize{\ifdim\ht\sizebox<\vsize
+ \ifdim\wd\sizebox<\hsize\expandafter\hfill\fi \expandafter\vfill
+ \else\expandafter\vss\fi}%
+\providecommand{\selectlanguage}[1]{}%
+\makeatletter \tracingstats = 1
+
+
+\begin{document}
+\pagestyle{empty}\thispagestyle{empty}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength hsize=\the\hsize}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength vsize=\the\vsize}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength hoffset=\the\hoffset}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength voffset=\the\voffset}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength topmargin=\the\topmargin}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength topskip=\the\topskip}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength headheight=\the\headheight}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength headsep=\the\headsep}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength parskip=\the\parskip}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength oddsidemargin=\the\oddsidemargin}\lthtmltypeout{}%
+\makeatletter
+\if@twoside\lthtmltypeout{latex2htmlLength evensidemargin=\the\evensidemargin}%
+\else\lthtmltypeout{latex2htmlLength evensidemargin=\the\oddsidemargin}\fi%
+\lthtmltypeout{}%
+\makeatother
+\setcounter{page}{1}
+\onecolumn
+
+% !!! IMAGES START HERE !!!
+
+\setcounter{part}{0}
+\setcounter{section}{4}
+\setcounter{subsection}{0}
+\setcounter{subsubsection}{0}
+\setcounter{paragraph}{0}
+\setcounter{subparagraph}{0}
+\setcounter{equation}{0}
+\setcounter{footnote}{0}
+{\newpage\clearpage
+\lthtmlfigureA{figure32}%
+\begin{figure}
+\htmlimage{thumbnail=0.4}
+\centering \begin{tabular}{c@{\qquad}c}
+ \includegraphics[width=3cm]{colorcir}&
+ \includegraphics[width=3cm]{tac2dim} \end{tabular}
+ \end{figure}%
+\lthtmlfigureZ
+\lthtmlcheckvsize\clearpage}
+
+
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/img1.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/img1.gif
new file mode 100644
index 00000000000..224cf5785c7
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/img1.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/index.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/index.pl
new file mode 100644
index 00000000000..800c5e8a9a1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/index.pl
@@ -0,0 +1,49 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate index original text with physical files.
+
+
+$key = q/sectionfigure/;
+$index{$key} .= q|<A HREF="|."$dir".q|ex31.html#24">Une figure EPS</A>
+ \| |;
+$noresave{$key} = "$nosave";
+
+$key = q/figure/;
+$index{$key} .= q|<A HREF="|."$dir".q|ex31.html#30">Une figure EPS</A>
+ \| |;
+$noresave{$key} = "$nosave";
+
+$key = q/postscript/;
+$index{$key} .= q|<A HREF="|."$dir".q|ex31.html#31">Une figure EPS</A>
+ \| |;
+$noresave{$key} = "$nosave";
+
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Printable index-keys from sub_index array.
+
+
+$key = q/section/;
+$sub_index{$key} .= q|sectionfigure|;
+$noresave{$key} = "$nosave";
+
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Printable index-keys from printable_key array.
+
+
+$key = q/sectionfigure/;
+$printable_key{$key} = q|figure| unless ($printable_key{$key});
+$noresave{$key} = "$nosave";
+
+$key = q/figure/;
+$printable_key{$key} = q|figure| unless ($printable_key{$key});
+$noresave{$key} = "$nosave";
+
+$key = q/postscript/;
+$printable_key{$key} = q|PostScript| unless ($printable_key{$key});
+$noresave{$key} = "$nosave";
+
+$key = q/section/;
+$printable_key{$key} = q|section| unless ($printable_key{$key});
+$noresave{$key} = "$nosave";
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/internals.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/internals.pl
new file mode 100644
index 00000000000..e3a9dff2e90
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/internals.pl
@@ -0,0 +1,14 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate internals original text with physical files.
+
+
+$key = q/cite_bib-PS/;
+$ref_files{$key} = "$dir".q|../ex30/ex30.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/Fpsfig/;
+$ref_files{$key} = "$dir".q|ex31.html|;
+$noresave{$key} = "$nosave";
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/labels.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/labels.pl
new file mode 100644
index 00000000000..2c0c67b85fe
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/labels.pl
@@ -0,0 +1,33 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate labels original text with physical files.
+
+
+$key = q/cite_bib-PS/;
+$external_labels{$key} = "$URL/" . q|../ex30/ex30.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/Fpsfig/;
+$external_labels{$key} = "$URL/" . q|ex31.html|;
+$noresave{$key} = "$nosave";
+
+1;
+
+
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# labels from external_latex_labels array.
+
+
+$key = q/BIBLIO/;
+$external_latex_labels{$key} = q|2|;
+$noresave{$key} = "$nosave";
+
+$key = q/tab-exa/;
+$external_latex_labels{$key} = q|1|;
+$noresave{$key} = "$nosave";
+
+$key = q/Fpsfig/;
+$external_latex_labels{$key} = q|1|;
+$noresave{$key} = "$nosave";
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/sections.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/sections.pl
new file mode 100644
index 00000000000..61916f95c0a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/sections.pl
@@ -0,0 +1,11 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate sections original text with physical files.
+
+
+$key = q/0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0/;
+$section_info{$key} = '3%:%'."$dir".q|ex31.html%:%Une figure EPS%:%| unless ($section_info{$key});
+$noresave{$key} = "$nosave";
+$done{"${dir}ex31.html"} = 1;
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32.ptr b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32.ptr
new file mode 100644
index 00000000000..fd7cd38344c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32.ptr
@@ -0,0 +1,9 @@
+\setcounter {lpart}{0}
+\setcounter {lsection}{5}
+\setcounter {lsubsection}{0}
+\setcounter {lsubsubsection}{0}
+\setcounter {lparagraph}{0}
+\setcounter {lsubparagraph}{0}
+\setcounter {equation}{0}
+\setcounter {footnote}{0}
+\htmlhead {section}{Exemple d'un tableau}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32.tex b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32.tex
new file mode 100644
index 00000000000..293d66f4650
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32.tex
@@ -0,0 +1,27 @@
+\begin{htmlonly}
+\usepackage{makeidx,html}
+\usepackage{francais}
+\input ex32.ptr
+\end{htmlonly}
+\newcommand{\Lcs}[1]{\texttt{\symbol{'134}#1}}
+\startdocument
+\index{section!tableau}
+
+Le \hyperref{tableau}{tableau }{}{tab-exa}
+montre l'utilisation de l'environnement \texttt{table}.
+\begin{table}[h]
+\centering
+ \begin{tabular}{cccccc}
+ \Lcs{primo} & \primo & \Lcs{secundo} & \secundo
+ & \Lcs{tertio} & \tertio \\
+ \Lcs{quatro} & \quatro& 1\Lcs{ier} & 1\ier
+ & 1\Lcs{iere} & 1\iere \\
+ \Lcs{fprimo)}&\fprimo)& \Lcs{No} 10 & \No 10
+ & \Lcs{no} 15 & \no 15 \\
+ \Lcs{og} a \Lcs{fg}&\og a \fg&3\Lcs{ieme}&3\ieme
+ & 10\Lcs{iemes}& 10\iemes
+ \end{tabular}
+\caption{Quelques commandes de l'option \texttt{french}
+ de \texttt{babel}}\label{tab-exa}
+\index{tableau}
+\end{table}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/contents.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/contents.pl
new file mode 100644
index 00000000000..38110d910b2
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/contents.pl
@@ -0,0 +1,10 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate contents original text with physical files.
+
+
+$key = q/0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0/;
+$toc_section_info{$key} = '3%:%'."$dir".q|ex32.html%:%Exemple d'un tableau| unless ($toc_section_info{$key});
+$noresave{$key} = "$nosave";
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/ex32.css b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/ex32.css
new file mode 100644
index 00000000000..1993b851311
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/ex32.css
@@ -0,0 +1,31 @@
+
+/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */
+.MATH { font-family: "Century Schoolbook", serif; }
+.MATH I { font-family: "Century Schoolbook", serif; font-shape: italic }
+.BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold }
+
+/* implement both fixed-size and relative sizes */
+SMALL.XTINY { font-size : xx-small }
+SMALL.TINY { font-size : x-small }
+SMALL.SCRIPTSIZE { font-size : smaller }
+SMALL.FOOTNOTESIZE { font-size : small }
+SMALL.SMALL { }
+BIG.LARGE { }
+BIG.XLARGE { font-size : large }
+BIG.XXLARGE { font-size : x-large }
+BIG.HUGE { font-size : larger }
+BIG.XHUGE { font-size : xx-large }
+
+/* heading styles */
+H1 { }
+H2 { }
+H3 { }
+H4 { }
+H5 { }
+
+/* mathematics styles */
+DIV.displaymath { } /* math displays */
+TD.eqno { } /* equation-number cells */
+
+
+/* document-specific styles come next */
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/ex32.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/ex32.html
new file mode 100644
index 00000000000..6b7c6815f82
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/ex32.html
@@ -0,0 +1,111 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>Exemple d'un tableau</TITLE>
+<META NAME="description" CONTENT="Exemple d'un tableau">
+<META NAME="keywords" CONTENT="ex32">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="ex32.css">
+
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html12"
+ HREF="../ex30/ex30.html#BIBLIO">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif.gif"></A>
+<A NAME="tex2html8"
+ HREF="../ex30/ex30.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif.gif"></A>
+<A NAME="tex2html2"
+ HREF="../ex31/ex31.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif.gif"></A>
+<A NAME="tex2html10"
+ HREF="../ex30/ex30.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/index_motif.gif"></A>
+<BR>
+<B> suivant:</B> <A NAME="tex2html13"
+ HREF="../ex30/ex30.html#BIBLIO">Références</A>
+<B> monter:</B> <A NAME="tex2html9"
+ HREF="../ex30/ex30.html">Exemple_d'un_document_segmenté</A>
+<B> pr&eacute;c&eacute;dent:</B> <A NAME="tex2html3"
+ HREF="../ex31/ex31.html">Une_figure_EPS</A>
+ &nbsp <B> <A NAME="tex2html11"
+ HREF="../ex30/ex30.html">Index</A></B>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<P>
+<H2><A NAME="SECTION00050000000000000000">
+Exemple d'un tableau</A>
+</H2>
+<A NAME="23"></A>
+
+<P>
+Le <A HREF="ex32.html#tab-exa">tableau</A>
+montre l'utilisation de l'environnement <TT>table</TT>.
+<BR><P></P>
+<DIV ALIGN="CENTER"><A NAME="52"></A>
+<TABLE>
+<CAPTION><STRONG>Tableau 1:</STRONG>
+Quelques commandes de l'option <TT>french</TT>
+ de <TT>babel</TT></CAPTION>
+<TR><TD>
+<DIV ALIGN="CENTER"> <TABLE CELLPADDING=3>
+<TR><TD ALIGN="CENTER"><TT>&#92;primo</TT></TD>
+<TD ALIGN="CENTER">1<SUP>o</SUP></TD>
+<TD ALIGN="CENTER"><TT>&#92;secundo</TT></TD>
+<TD ALIGN="CENTER">2<SUP>o</SUP></TD>
+<TD ALIGN="CENTER"><TT>&#92;tertio</TT></TD>
+<TD ALIGN="CENTER">3<SUP>o</SUP></TD>
+</TR>
+<TR><TD ALIGN="CENTER"><TT>&#92;quatro</TT></TD>
+<TD ALIGN="CENTER">4<SUP>o</SUP></TD>
+<TD ALIGN="CENTER">1<TT>&#92;ier</TT></TD>
+<TD ALIGN="CENTER">1<SUP>er</SUP></TD>
+<TD ALIGN="CENTER">1<TT>&#92;iere</TT></TD>
+<TD ALIGN="CENTER">1<SUP>re</SUP></TD>
+</TR>
+<TR><TD ALIGN="CENTER"><TT>&#92;fprimo)</TT></TD>
+<TD ALIGN="CENTER">1<SUP>o</SUP>)</TD>
+<TD ALIGN="CENTER"><TT>&#92;No</TT> 10</TD>
+<TD ALIGN="CENTER">N<SUP>o</SUP>10</TD>
+<TD ALIGN="CENTER"><TT>&#92;no</TT> 15</TD>
+<TD ALIGN="CENTER">n<SUP>o</SUP>15</TD>
+</TR>
+<TR><TD ALIGN="CENTER"><TT>&#92;og</TT> a <TT>&#92;fg</TT></TD>
+<TD ALIGN="CENTER">&#171a &#187</TD>
+<TD ALIGN="CENTER">3<TT>&#92;ieme</TT></TD>
+<TD ALIGN="CENTER">3<SUP>e</SUP></TD>
+<TD ALIGN="CENTER">10<TT>&#92;iemes</TT></TD>
+<TD ALIGN="CENTER">10<SUP>es</SUP></TD>
+</TR>
+</TABLE>
+<A NAME="tab-exa"></A><A NAME="49"></A>
+</DIV></TD></TR>
+</TABLE>
+</DIV><P></P>
+<BR>
+<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-30</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/index.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/index.pl
new file mode 100644
index 00000000000..9b32933d9ff
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/index.pl
@@ -0,0 +1,40 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate index original text with physical files.
+
+
+$key = q/sectiontableau/;
+$index{$key} .= q|<A HREF="|."$dir".q|ex32.html#23">Exemple d'un tableau</A>
+ \| |;
+$noresave{$key} = "$nosave";
+
+$key = q/tableau/;
+$index{$key} .= q|<A HREF="|."$dir".q|ex32.html#49">Exemple d'un tableau</A>
+ \| |;
+$noresave{$key} = "$nosave";
+
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Printable index-keys from sub_index array.
+
+
+$key = q/section/;
+$sub_index{$key} .= q|sectiontableau|;
+$noresave{$key} = "$nosave";
+
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Printable index-keys from printable_key array.
+
+
+$key = q/sectiontableau/;
+$printable_key{$key} = q|tableau| unless ($printable_key{$key});
+$noresave{$key} = "$nosave";
+
+$key = q/section/;
+$printable_key{$key} = q|section| unless ($printable_key{$key});
+$noresave{$key} = "$nosave";
+
+$key = q/tableau/;
+$printable_key{$key} = q|tableau| unless ($printable_key{$key});
+$noresave{$key} = "$nosave";
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/internals.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/internals.pl
new file mode 100644
index 00000000000..0c2e1c5a4ee
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/internals.pl
@@ -0,0 +1,10 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate internals original text with physical files.
+
+
+$key = q/tab-exa/;
+$ref_files{$key} = "$dir".q|ex32.html|;
+$noresave{$key} = "$nosave";
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/labels.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/labels.pl
new file mode 100644
index 00000000000..33b8d26526d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/labels.pl
@@ -0,0 +1,29 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate labels original text with physical files.
+
+
+$key = q/tab-exa/;
+$external_labels{$key} = "$URL/" . q|ex32.html|;
+$noresave{$key} = "$nosave";
+
+1;
+
+
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# labels from external_latex_labels array.
+
+
+$key = q/BIBLIO/;
+$external_latex_labels{$key} = q|2|;
+$noresave{$key} = "$nosave";
+
+$key = q/tab-exa/;
+$external_latex_labels{$key} = q|1|;
+$noresave{$key} = "$nosave";
+
+$key = q/Fpsfig/;
+$external_latex_labels{$key} = q|1|;
+$noresave{$key} = "$nosave";
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/sections.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/sections.pl
new file mode 100644
index 00000000000..300a790077a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/sections.pl
@@ -0,0 +1,11 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate sections original text with physical files.
+
+
+$key = q/0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0/;
+$section_info{$key} = '3%:%'."$dir".q|ex32.html%:%Exemple d'un tableau%:%| unless ($section_info{$key});
+$noresave{$key} = "$nosave";
+$done{"${dir}ex32.html"} = 1;
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/table.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/table.pl
new file mode 100644
index 00000000000..a9598937fb0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/table.pl
@@ -0,0 +1,2 @@
+'<LI><A HREF="'.$dir.'ex32.html#52">Quelques commandes de l\'option <TT>french</TT>
+ de <TT>babel</TT></A>'
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex3bib.tex b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex3bib.tex
new file mode 100644
index 00000000000..12e197babf2
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex3bib.tex
@@ -0,0 +1,6 @@
+\begin{thebibliography}{99}
+\label{BIBLIO}\index{références}
+\bibitem{bib-PS}
+Adobe Inc. \emph{PostScript, manuel de référence
+ (2ième édition)} InterÉditions (France), 1992
+\end{thebibliography}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa.lof b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa.lof
new file mode 100644
index 00000000000..789351e8535
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa.lof
@@ -0,0 +1,2 @@
+\select@language {frenchb}
+\contentsline {figure}{\numberline {1}{\ignorespaces Deux images EPS}}{1}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa.lot b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa.lot
new file mode 100644
index 00000000000..5f04afddc09
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa.lot
@@ -0,0 +1,2 @@
+\select@language {frenchb}
+\contentsline {table}{\numberline {1}{\ignorespaces Quelques commandes de l'option \texttt {francais} de \texttt {babel}}}{2}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa.tex b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa.tex
new file mode 100644
index 00000000000..817ffbe7f1d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa.tex
@@ -0,0 +1,62 @@
+\documentclass{article}
+\usepackage{graphicx}
+\usepackage{francais}
+\usepackage{makeidx}
+\newcommand{\Lcs}[1]{\texttt{\symbol{'134}#1}}
+\makeindex
+\title{Exemple d'un article en fran\c{c}ais}
+\author{Michel Goossens}
+\begin{document}
+\maketitle
+\tableofcontents
+\listoffigures
+\listoftables
+\section{Une figure EPS}
+\index{section}
+Cette section montre comment inclure une figure PostScript\cite{bib-PS}
+dans un document \LaTeX. La figure~\ref{Fpsfig}
+est ins\'er\'ee dans le texte \`a l'aide de la commande
+ \verb!\includegraphics{colorcir.eps}!.
+\index{figure}
+\index{PostScript}
+\begin{figure}
+ \begin{center}
+ \begin{tabular}{c@{\qquad}c}
+ \includegraphics[width=3cm]{colorcir} &
+ \includegraphics[width=3cm]{tac2dim}
+ \end{tabular}
+ \end{center}
+ \caption{Deux images EPS}
+ \label{Fpsfig}
+\end{figure}
+
+\section{Exemple d'un tableau}
+
+Le tableau~\ref{tab:exa} \`a la page \pageref{tab:exa}
+montre l'utilisation de l'environnement \texttt{table}.
+
+\begin{table}
+ \begin{center}
+ \begin{tabular}{cccccc}
+ \Lcs{primo} & \primo & \Lcs{secundo} & \secundo & \Lcs{tertio} & \tertio \\
+ \Lcs{quatro} & \quatro& 1\Lcs{ier} & 1\ier & 1\Lcs{iere} & 1\iere \\
+ \Lcs{fprimo)}&\fprimo)& \Lcs{No} 10 & \No 10 & \Lcs{no} 15 & \no 15 \\
+ \Lcs{og} a \Lcs{fg}&\og a \fg&3\Lcs{ieme}&3\ieme & 10\Lcs{iemes}& 10\iemes
+ \end{tabular}
+ \end{center}
+ \caption{Quelques commandes de l'option \texttt{francais} de \texttt{babel}}
+ \label{tab:exa}
+ \index{tableau}
+\end{table}
+
+\begin{thebibliography}{99}
+\index{r\'ef\'erences}
+\bibitem{bib-PS}
+Adobe Inc.
+\emph{PostScript, manuel de r\'ef\'erence (2\ieme \'edition)}
+Inter\'Editions (France), 1992
+\end{thebibliography}
+\printindex
+\index{index}
+\end{document}
+% End of document.
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/images.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/images.pl
new file mode 100644
index 00000000000..5b93bd63d0a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/images.pl
@@ -0,0 +1,18 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate images original text with physical files.
+
+
+$key = q/includegraphics[width=3cm]{tac2dim};AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="139" HEIGHT="133" ALIGN="BOTTOM" BORDER="0"
+ SRC="img2.gif"
+ ALT="\includegraphics [width=3cm]{tac2dim}">|;
+
+$key = q/includegraphics[width=3cm]{colorcir};AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="136" HEIGHT="114" ALIGN="BOTTOM" BORDER="0"
+ SRC="img1.gif"
+ ALT="\includegraphics [width=3cm]{colorcir}">|;
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/images.tex b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/images.tex
new file mode 100644
index 00000000000..e02d4a8d173
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/images.tex
@@ -0,0 +1,132 @@
+\batchmode
+\documentclass{article}
+
+\usepackage{graphicx}
+\usepackage{francais}
+\usepackage{makeidx}%
+\providecommand{\Lcs}[1]{\texttt{\symbol{'134}#1}}\makeindex
+\title{Exemple d'un article en fran\c{c}ais}
+\author {Michel Goossens}
+\usepackage[dvips]{color}
+\pagecolor[gray]{.7}
+
+
+
+\makeatletter
+
+\makeatletter
+\count@=\the\catcode`\_ \catcode`\_=8
+\newenvironment{tex2html_wrap}{}{} \catcode`\_=\count@
+\newcommand{\renewedcommand}[1]{\expandafter\renewcommand\csname #1\endcsname}%
+\makeatother
+\let\mathon=$
+\let\mathoff=$
+\ifx\AtBeginDocument\undefined \newcommand{\AtBeginDocument}[1]{}\fi
+\newbox\sizebox
+\setlength{\hoffset}{0pt}\setlength{\voffset}{0pt}
+\addtolength{\textheight}{\footskip}\setlength{\footskip}{0pt}
+\addtolength{\textheight}{\topmargin}\setlength{\topmargin}{0pt}
+\addtolength{\textheight}{\headheight}\setlength{\headheight}{0pt}
+\addtolength{\textheight}{\headsep}\setlength{\headsep}{0pt}
+\setlength{\textwidth}{349pt}
+\newwrite\lthtmlwrite
+\makeatletter
+\let\realnormalsize=\normalsize
+\global\topskip=2sp
+\def\preveqno{}\let\real@float=\@float \let\realend@float=\end@float
+\def\@float{\let\@savefreelist\@freelist\real@float}
+\def\end@float{\realend@float\global\let\@freelist\@savefreelist}
+\let\real@dbflt=\@dbflt \let\end@dblfloat=\end@float
+\let\@largefloatcheck=\relax
+\let\if@boxedmulticols=\iftrue
+\def\@dbflt{\let\@savefreelist\@freelist\real@dbflt}
+\def\adjustnormalsize{\def\normalsize{\mathsurround=0pt \realnormalsize
+ \parindent=0pt\abovedisplayskip=0pt\belowdisplayskip=0pt}%
+ \def\phantompar{\csname par\endcsname}\normalsize}%
+\def\lthtmltypeout#1{{\let\protect\string\immediate\write\lthtmlwrite{#1}}}%
+\newcommand\lthtmlhboxmathA{\adjustnormalsize\setbox\sizebox=\hbox\bgroup\kern.05em }%
+\newcommand\lthtmlhboxmathB{\adjustnormalsize\setbox\sizebox=\hbox to\hsize\bgroup\hfill }%
+\newcommand\lthtmlvboxmathA{\adjustnormalsize\setbox\sizebox=\vbox\bgroup %
+ \let\ifinner=\iffalse }%
+\newcommand\lthtmlboxmathZ{\@next\next\@currlist{}{\def\next{\voidb@x}}%
+ \expandafter\box\next\egroup}%
+\newcommand\lthtmlmathtype[1]{\def\lthtmlmathenv{#1}}%
+\newcommand\lthtmllogmath{\lthtmltypeout{l2hSize %
+:\lthtmlmathenv:\the\ht\sizebox::\the\dp\sizebox::\the\wd\sizebox.\preveqno}}%
+\newcommand\lthtmlfigureA[1]{\let\@savefreelist\@freelist
+ \lthtmlmathtype{#1}\lthtmlvboxmathA}%
+\newcommand\lthtmlpictureA[1]{\let\@savefreelist\@freelist
+ \lthtmlmathtype{#1}\lthtmlhboxmathB}%
+\newcommand\lthtmlpictureZ[1]{\hfill\lthtmlfigureZ}%
+\newcommand\lthtmlfigureZ{\lthtmlboxmathZ\lthtmllogmath\copy\sizebox
+ \global\let\@freelist\@savefreelist}%
+\newcommand\lthtmldisplayA[1]{\lthtmlmathtype{#1}\lthtmlvboxmathA}%
+\newcommand\lthtmldisplayB[1]{\edef\preveqno{(\theequation)}%
+ \lthtmldisplayA{#1}\let\@eqnnum\relax}%
+\newcommand\lthtmldisplayZ{\lthtmlboxmathZ\lthtmllogmath\lthtmlsetmath}%
+\newcommand\lthtmlinlinemathA[1]{\lthtmlmathtype{#1}\lthtmlhboxmathA
+ \vrule height1.5ex width0pt }%
+\newcommand\lthtmlinlineA[1]{\lthtmlmathtype{#1}\lthtmlhboxmathA}%
+\newcommand\lthtmlinlineZ{\egroup\expandafter\ifdim\dp\sizebox>0pt %
+ \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetinline}
+\newcommand\lthtmlinlinemathZ{\egroup\expandafter\ifdim\dp\sizebox>0pt %
+ \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetmath}
+\newcommand\lthtmlindisplaymathZ{\egroup %
+ \centerinlinemath\lthtmllogmath\lthtmlsetmath}
+\def\lthtmlsetinline{\hbox{\vrule width.1em\kern-.05em\vtop{\vbox{%
+ \kern.1em\copy\sizebox}\ifdim\dp\sizebox>0pt\kern.1em\else\kern.3pt\fi
+ \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}}
+\def\lthtmlsetmath{\hbox{\vrule width.1em\kern-.05em\vtop{\vbox{%
+ \kern.1em\kern0.8 pt\hbox{\hglue.17em\copy\sizebox\hglue0.8 pt}}\kern.3pt%
+ \ifdim\dp\sizebox>0pt\kern.1em\fi \kern0.8 pt%
+ \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}}
+\def\centerinlinemath{%
+ \dimen1=\ifdim\ht\sizebox<\dp\sizebox \dp\sizebox\else\ht\sizebox\fi
+ \advance\dimen1by.5pt \vrule width0pt height\dimen1 depth\dimen1
+ \dp\sizebox=\dimen1\ht\sizebox=\dimen1\relax}
+
+\def\lthtmlcheckvsize{\ifdim\ht\sizebox<\vsize
+ \ifdim\wd\sizebox<\hsize\expandafter\hfill\fi \expandafter\vfill
+ \else\expandafter\vss\fi}%
+\providecommand{\selectlanguage}[1]{}%
+\makeatletter \tracingstats = 1
+
+
+\begin{document}
+\pagestyle{empty}\thispagestyle{empty}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength hsize=\the\hsize}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength vsize=\the\vsize}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength hoffset=\the\hoffset}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength voffset=\the\voffset}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength topmargin=\the\topmargin}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength topskip=\the\topskip}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength headheight=\the\headheight}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength headsep=\the\headsep}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength parskip=\the\parskip}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength oddsidemargin=\the\oddsidemargin}\lthtmltypeout{}%
+\makeatletter
+\if@twoside\lthtmltypeout{latex2htmlLength evensidemargin=\the\evensidemargin}%
+\else\lthtmltypeout{latex2htmlLength evensidemargin=\the\oddsidemargin}\fi%
+\lthtmltypeout{}%
+\makeatother
+\setcounter{page}{1}
+\onecolumn
+
+% !!! IMAGES START HERE !!!
+
+\stepcounter{section}
+{\newpage\clearpage
+\lthtmlpictureA{tex2html_wrap106}%
+\includegraphics [width=3cm]{colorcir}%
+\lthtmlpictureZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlpictureA{tex2html_wrap108}%
+\includegraphics [width=3cm]{tac2dim}%
+\lthtmlpictureZ
+\lthtmlcheckvsize\clearpage}
+
+\stepcounter{section}
+
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/img1.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/img1.gif
new file mode 100644
index 00000000000..4f4addd2785
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/img1.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/img2.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/img2.gif
new file mode 100644
index 00000000000..7b9dcaf127d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/img2.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/index.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/index.html
new file mode 100644
index 00000000000..f03e4818bce
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/index.html
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>Exemple d'un article en fran&#231;ais</TITLE>
+<META NAME="description" CONTENT="Exemple d'un article en fran&#231;ais">
+<META NAME="keywords" CONTENT="l2hexa">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="l2hexa.css">
+
+<LINK REL="next" HREF="node1.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html7"
+ HREF="node1.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif.gif"></A>
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif_gr.gif">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif_gr.gif">
+<A NAME="tex2html3"
+ HREF="node1.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/contents_motif.gif"></A>
+<A NAME="tex2html5"
+ HREF="node7.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/index_motif.gif"></A>
+<BR>
+<B> suivant:</B> <A NAME="tex2html8"
+ HREF="node1.html">Table des mati&#232;res</A>
+ &nbsp <B> <A NAME="tex2html4"
+ HREF="node1.html">Table des mati&#232;res</A></B>
+ &nbsp <B> <A NAME="tex2html6"
+ HREF="node7.html">Index</A></B>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<H1 ALIGN="CENTER">Exemple d'un article en fran&#231;ais</H1>
+<P ALIGN="CENTER"><STRONG>Michel Goossens</STRONG></P>
+<BR><HR>
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"></A>
+
+<UL>
+<LI><A NAME="tex2html9"
+ HREF="node1.html">Table des mati&#232;res</A>
+<LI><A NAME="tex2html10"
+ HREF="node2.html">Liste des figures</A>
+<LI><A NAME="tex2html11"
+ HREF="node3.html">Liste des tableaux</A>
+<LI><A NAME="tex2html12"
+ HREF="node4.html">Une figure EPS</A>
+<LI><A NAME="tex2html13"
+ HREF="node5.html">Exemple d'un tableau</A>
+<LI><A NAME="tex2html14"
+ HREF="node6.html">Bibliographie</A>
+<LI><A NAME="tex2html15"
+ HREF="node7.html">Index</A>
+<LI><A NAME="tex2html16"
+ HREF="node8.html">&#192; propos de ce document...</A>
+</UL>
+<!--End of Table of Child-Links-->
+<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-31</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/internals.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/internals.pl
new file mode 100644
index 00000000000..b437e91cbec
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/internals.pl
@@ -0,0 +1,18 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate internals original text with physical files.
+
+
+$key = q/cite_bib-PS/;
+$ref_files{$key} = "$dir".q|node6.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/Fpsfig/;
+$ref_files{$key} = "$dir".q|node4.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/tab:exa/;
+$ref_files{$key} = "$dir".q|node5.html|;
+$noresave{$key} = "$nosave";
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/l2hexa.css b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/l2hexa.css
new file mode 100644
index 00000000000..1993b851311
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/l2hexa.css
@@ -0,0 +1,31 @@
+
+/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */
+.MATH { font-family: "Century Schoolbook", serif; }
+.MATH I { font-family: "Century Schoolbook", serif; font-shape: italic }
+.BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold }
+
+/* implement both fixed-size and relative sizes */
+SMALL.XTINY { font-size : xx-small }
+SMALL.TINY { font-size : x-small }
+SMALL.SCRIPTSIZE { font-size : smaller }
+SMALL.FOOTNOTESIZE { font-size : small }
+SMALL.SMALL { }
+BIG.LARGE { }
+BIG.XLARGE { font-size : large }
+BIG.XXLARGE { font-size : x-large }
+BIG.HUGE { font-size : larger }
+BIG.XHUGE { font-size : xx-large }
+
+/* heading styles */
+H1 { }
+H2 { }
+H3 { }
+H4 { }
+H5 { }
+
+/* mathematics styles */
+DIV.displaymath { } /* math displays */
+TD.eqno { } /* equation-number cells */
+
+
+/* document-specific styles come next */
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/l2hexa.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/l2hexa.html
new file mode 100644
index 00000000000..f03e4818bce
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/l2hexa.html
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>Exemple d'un article en fran&#231;ais</TITLE>
+<META NAME="description" CONTENT="Exemple d'un article en fran&#231;ais">
+<META NAME="keywords" CONTENT="l2hexa">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="l2hexa.css">
+
+<LINK REL="next" HREF="node1.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html7"
+ HREF="node1.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif.gif"></A>
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif_gr.gif">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif_gr.gif">
+<A NAME="tex2html3"
+ HREF="node1.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/contents_motif.gif"></A>
+<A NAME="tex2html5"
+ HREF="node7.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/index_motif.gif"></A>
+<BR>
+<B> suivant:</B> <A NAME="tex2html8"
+ HREF="node1.html">Table des mati&#232;res</A>
+ &nbsp <B> <A NAME="tex2html4"
+ HREF="node1.html">Table des mati&#232;res</A></B>
+ &nbsp <B> <A NAME="tex2html6"
+ HREF="node7.html">Index</A></B>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<H1 ALIGN="CENTER">Exemple d'un article en fran&#231;ais</H1>
+<P ALIGN="CENTER"><STRONG>Michel Goossens</STRONG></P>
+<BR><HR>
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"></A>
+
+<UL>
+<LI><A NAME="tex2html9"
+ HREF="node1.html">Table des mati&#232;res</A>
+<LI><A NAME="tex2html10"
+ HREF="node2.html">Liste des figures</A>
+<LI><A NAME="tex2html11"
+ HREF="node3.html">Liste des tableaux</A>
+<LI><A NAME="tex2html12"
+ HREF="node4.html">Une figure EPS</A>
+<LI><A NAME="tex2html13"
+ HREF="node5.html">Exemple d'un tableau</A>
+<LI><A NAME="tex2html14"
+ HREF="node6.html">Bibliographie</A>
+<LI><A NAME="tex2html15"
+ HREF="node7.html">Index</A>
+<LI><A NAME="tex2html16"
+ HREF="node8.html">&#192; propos de ce document...</A>
+</UL>
+<!--End of Table of Child-Links-->
+<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-31</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/labels.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/labels.pl
new file mode 100644
index 00000000000..7a800316923
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/labels.pl
@@ -0,0 +1,33 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate labels original text with physical files.
+
+
+$key = q/cite_bib-PS/;
+$external_labels{$key} = "$URL/" . q|node6.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/Fpsfig/;
+$external_labels{$key} = "$URL/" . q|node4.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/tab:exa/;
+$external_labels{$key} = "$URL/" . q|node5.html|;
+$noresave{$key} = "$nosave";
+
+1;
+
+
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# labels from external_latex_labels array.
+
+
+$key = q/Fpsfig/;
+$external_latex_labels{$key} = q|1|;
+$noresave{$key} = "$nosave";
+
+$key = q/tab:exa/;
+$external_latex_labels{$key} = q|1|;
+$noresave{$key} = "$nosave";
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node1.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node1.html
new file mode 100644
index 00000000000..830a5ca9d57
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node1.html
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>Table des mati&#232;res</TITLE>
+<META NAME="description" CONTENT="Table des mati&#232;res">
+<META NAME="keywords" CONTENT="l2hexa">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="l2hexa.css">
+
+<LINK REL="next" HREF="node2.html">
+<LINK REL="previous" HREF="l2hexa.html">
+<LINK REL="up" HREF="l2hexa.html">
+<LINK REL="next" HREF="node2.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html27"
+ HREF="node2.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif.gif"></A>
+<A NAME="tex2html23"
+ HREF="l2hexa.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif.gif"></A>
+<A NAME="tex2html17"
+ HREF="l2hexa.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif.gif"></A>
+<A NAME="tex2html25"
+ HREF="node7.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/index_motif.gif"></A>
+<BR>
+<B> suivant:</B> <A NAME="tex2html28"
+ HREF="node2.html">Liste des figures</A>
+<B> monter:</B> <A NAME="tex2html24"
+ HREF="l2hexa.html">Exemple d'un article en</A>
+<B> pr&eacute;c&eacute;dent:</B> <A NAME="tex2html18"
+ HREF="l2hexa.html">Exemple d'un article en</A>
+ &nbsp <B> <A NAME="tex2html26"
+ HREF="node7.html">Index</A></B>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<BR>
+
+<H2><A NAME="SECTION00010000000000000000">
+Table des mati&#232;res</A>
+</H2>
+<!--Table of Contents-->
+
+<UL>
+<LI><A NAME="tex2html29"
+ HREF="node1.html">Table des mati&#232;res</A>
+<LI><A NAME="tex2html30"
+ HREF="node2.html">Liste des figures</A>
+<LI><A NAME="tex2html31"
+ HREF="node3.html">Liste des tableaux</A>
+<LI><A NAME="tex2html32"
+ HREF="node4.html">Une figure EPS</A>
+<LI><A NAME="tex2html33"
+ HREF="node5.html">Exemple d'un tableau</A>
+<LI><A NAME="tex2html34"
+ HREF="node6.html">Bibliographie</A>
+<LI><A NAME="tex2html35"
+ HREF="node7.html">Index</A>
+</UL>
+<!--End of Table of Contents-->
+<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-31</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node2.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node2.html
new file mode 100644
index 00000000000..7bd56f893d5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node2.html
@@ -0,0 +1,77 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>Liste des figures</TITLE>
+<META NAME="description" CONTENT="Liste des figures">
+<META NAME="keywords" CONTENT="l2hexa">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="l2hexa.css">
+
+<LINK REL="next" HREF="node3.html">
+<LINK REL="previous" HREF="node1.html">
+<LINK REL="up" HREF="l2hexa.html">
+<LINK REL="next" HREF="node3.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html48"
+ HREF="node3.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif.gif"></A>
+<A NAME="tex2html42"
+ HREF="l2hexa.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif.gif"></A>
+<A NAME="tex2html36"
+ HREF="node1.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif.gif"></A>
+<A NAME="tex2html44"
+ HREF="node1.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/contents_motif.gif"></A>
+<A NAME="tex2html46"
+ HREF="node7.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/index_motif.gif"></A>
+<BR>
+<B> suivant:</B> <A NAME="tex2html49"
+ HREF="node3.html">Liste des tableaux</A>
+<B> monter:</B> <A NAME="tex2html43"
+ HREF="l2hexa.html">Exemple d'un article en</A>
+<B> pr&eacute;c&eacute;dent:</B> <A NAME="tex2html37"
+ HREF="node1.html">Table des mati&#232;res</A>
+ &nbsp <B> <A NAME="tex2html45"
+ HREF="node1.html">Table des mati&#232;res</A></B>
+ &nbsp <B> <A NAME="tex2html47"
+ HREF="node7.html">Index</A></B>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<BR>
+
+<H2><A NAME="SECTION00020000000000000000">
+Liste des figures</A>
+</H2><OL>
+<LI><A NAME="tex2html1"
+ HREF="node4.html#24">Deux images EPS</A></OL>
+<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-31</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node3.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node3.html
new file mode 100644
index 00000000000..41e0a771c78
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node3.html
@@ -0,0 +1,77 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>Liste des tableaux</TITLE>
+<META NAME="description" CONTENT="Liste des tableaux">
+<META NAME="keywords" CONTENT="l2hexa">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="l2hexa.css">
+
+<LINK REL="next" HREF="node4.html">
+<LINK REL="previous" HREF="node2.html">
+<LINK REL="up" HREF="l2hexa.html">
+<LINK REL="next" HREF="node4.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html62"
+ HREF="node4.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif.gif"></A>
+<A NAME="tex2html56"
+ HREF="l2hexa.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif.gif"></A>
+<A NAME="tex2html50"
+ HREF="node2.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif.gif"></A>
+<A NAME="tex2html58"
+ HREF="node1.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/contents_motif.gif"></A>
+<A NAME="tex2html60"
+ HREF="node7.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/index_motif.gif"></A>
+<BR>
+<B> suivant:</B> <A NAME="tex2html63"
+ HREF="node4.html">Une figure EPS</A>
+<B> monter:</B> <A NAME="tex2html57"
+ HREF="l2hexa.html">Exemple d'un article en</A>
+<B> pr&eacute;c&eacute;dent:</B> <A NAME="tex2html51"
+ HREF="node2.html">Liste des figures</A>
+ &nbsp <B> <A NAME="tex2html59"
+ HREF="node1.html">Table des mati&#232;res</A></B>
+ &nbsp <B> <A NAME="tex2html61"
+ HREF="node7.html">Index</A></B>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<BR>
+
+<H2><A NAME="SECTION00030000000000000000">
+Liste des tableaux</A>
+</H2><OL>
+<LI><A NAME="tex2html2"
+ HREF="node5.html#66">Quelques commandes de l'option <TT>francais</TT> de <TT>babel</TT></A></OL>
+<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-31</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node4.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node4.html
new file mode 100644
index 00000000000..b1ed0f3f45c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node4.html
@@ -0,0 +1,115 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>Une figure EPS</TITLE>
+<META NAME="description" CONTENT="Une figure EPS">
+<META NAME="keywords" CONTENT="l2hexa">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="l2hexa.css">
+
+<LINK REL="next" HREF="node5.html">
+<LINK REL="previous" HREF="node3.html">
+<LINK REL="up" HREF="l2hexa.html">
+<LINK REL="next" HREF="node5.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html76"
+ HREF="node5.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif.gif"></A>
+<A NAME="tex2html70"
+ HREF="l2hexa.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif.gif"></A>
+<A NAME="tex2html64"
+ HREF="node3.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif.gif"></A>
+<A NAME="tex2html72"
+ HREF="node1.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/contents_motif.gif"></A>
+<A NAME="tex2html74"
+ HREF="node7.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/index_motif.gif"></A>
+<BR>
+<B> suivant:</B> <A NAME="tex2html77"
+ HREF="node5.html">Exemple d'un tableau</A>
+<B> monter:</B> <A NAME="tex2html71"
+ HREF="l2hexa.html">Exemple d'un article en</A>
+<B> pr&eacute;c&eacute;dent:</B> <A NAME="tex2html65"
+ HREF="node3.html">Liste des tableaux</A>
+ &nbsp <B> <A NAME="tex2html73"
+ HREF="node1.html">Table des mati&#232;res</A></B>
+ &nbsp <B> <A NAME="tex2html75"
+ HREF="node7.html">Index</A></B>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+
+<H1><A NAME="SECTION00040000000000000000"></A>
+<A NAME="11"></A>
+<BR>
+Une figure EPS
+</H1>
+Cette section montre comment inclure une figure PostScript[<A
+ HREF="node6.html#bib-PS">1</A>]
+dans un document L<SUP><SMALL>A</SMALL></SUP>T<SMALL>E</SMALL>X . La figure&nbsp;<A HREF="node4.html#Fpsfig">1</A>
+est ins&#233;r&#233;e dans le texte &#224; l'aide de la commande
+ <code>\includegraphics{colorcir.eps}</code>.
+<A NAME="14"></A>
+<A NAME="15"></A>
+
+<P></P>
+<DIV ALIGN="CENTER"><A NAME="Fpsfig"></A><A NAME="24"></A>
+<TABLE>
+<CAPTION ALIGN="BOTTOM"><STRONG>Figure 1:</STRONG>
+Deux images EPS</CAPTION>
+<TR><TD>
+<DIV ALIGN="CENTER">
+<TABLE CELLPADDING=3 ALIGN="CENTER">
+<TR><TD ALIGN="CENTER">
+<!-- MATH
+ $\includegraphics [width=3cm]{colorcir}$
+ -->
+<IMG
+ WIDTH="136" HEIGHT="114" ALIGN="BOTTOM" BORDER="0"
+ SRC="img1.gif"
+ ALT="\includegraphics [width=3cm]{colorcir}"></TD>
+<TD ALIGN="LEFT">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD ALIGN="CENTER">
+<!-- MATH
+ $\includegraphics [width=3cm]{tac2dim}$
+ -->
+<IMG
+ WIDTH="139" HEIGHT="133" ALIGN="BOTTOM" BORDER="0"
+ SRC="img2.gif"
+ ALT="\includegraphics [width=3cm]{tac2dim}"></TD>
+</TR>
+</TABLE>
+</DIV></TD></TR>
+</TABLE>
+</DIV><P></P>
+
+<P>
+<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-31</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node5.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node5.html
new file mode 100644
index 00000000000..4826c728c04
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node5.html
@@ -0,0 +1,128 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>Exemple d'un tableau</TITLE>
+<META NAME="description" CONTENT="Exemple d'un tableau">
+<META NAME="keywords" CONTENT="l2hexa">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="l2hexa.css">
+
+<LINK REL="next" HREF="node6.html">
+<LINK REL="previous" HREF="node4.html">
+<LINK REL="up" HREF="l2hexa.html">
+<LINK REL="next" HREF="node6.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html90"
+ HREF="node6.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif.gif"></A>
+<A NAME="tex2html84"
+ HREF="l2hexa.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif.gif"></A>
+<A NAME="tex2html78"
+ HREF="node4.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif.gif"></A>
+<A NAME="tex2html86"
+ HREF="node1.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/contents_motif.gif"></A>
+<A NAME="tex2html88"
+ HREF="node7.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/index_motif.gif"></A>
+<BR>
+<B> suivant:</B> <A NAME="tex2html91"
+ HREF="node6.html">Bibliographie</A>
+<B> monter:</B> <A NAME="tex2html85"
+ HREF="l2hexa.html">Exemple d'un article en</A>
+<B> pr&eacute;c&eacute;dent:</B> <A NAME="tex2html79"
+ HREF="node4.html">Une figure EPS</A>
+ &nbsp <B> <A NAME="tex2html87"
+ HREF="node1.html">Table des mati&#232;res</A></B>
+ &nbsp <B> <A NAME="tex2html89"
+ HREF="node7.html">Index</A></B>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+
+<H1><A NAME="SECTION00050000000000000000">
+Exemple d'un tableau</A>
+</H1>
+
+<P>
+Le tableau&nbsp;<A HREF="node5.html#tab:exa">1</A> &#224; la page <A HREF="node5.html#tab:exa"><IMG ALIGN="BOTTOM" BORDER="1" ALT="[*]"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/cross_ref_motif.gif"></A>
+montre l'utilisation de l'environnement <TT>table</TT>.
+
+<P>
+
+<BR><P></P>
+<DIV ALIGN="CENTER"><A NAME="66"></A>
+<TABLE>
+<CAPTION><STRONG>Tableau 1:</STRONG>
+Quelques commandes de l'option <TT>francais</TT> de <TT>babel</TT></CAPTION>
+<TR><TD>
+ <DIV ALIGN="CENTER">
+ <TABLE CELLPADDING=3 ALIGN="CENTER">
+<TR><TD ALIGN="CENTER"><TT>&#92;primo</TT></TD>
+<TD ALIGN="CENTER">1<SUP>o</SUP></TD>
+<TD ALIGN="CENTER"><TT>&#92;secundo</TT></TD>
+<TD ALIGN="CENTER">2<SUP>o</SUP></TD>
+<TD ALIGN="CENTER"><TT>&#92;tertio</TT></TD>
+<TD ALIGN="CENTER">3<SUP>o</SUP></TD>
+</TR>
+<TR><TD ALIGN="CENTER"><TT>&#92;quatro</TT></TD>
+<TD ALIGN="CENTER">4<SUP>o</SUP></TD>
+<TD ALIGN="CENTER">1<TT>&#92;ier</TT></TD>
+<TD ALIGN="CENTER">1<SUP>er</SUP></TD>
+<TD ALIGN="CENTER">1<TT>&#92;iere</TT></TD>
+<TD ALIGN="CENTER">1<SUP>re</SUP></TD>
+</TR>
+<TR><TD ALIGN="CENTER"><TT>&#92;fprimo)</TT></TD>
+<TD ALIGN="CENTER">1<SUP>o</SUP>)</TD>
+<TD ALIGN="CENTER"><TT>&#92;No</TT> 10</TD>
+<TD ALIGN="CENTER">N<SUP>o</SUP>10</TD>
+<TD ALIGN="CENTER"><TT>&#92;no</TT> 15</TD>
+<TD ALIGN="CENTER">n<SUP>o</SUP>15</TD>
+</TR>
+<TR><TD ALIGN="CENTER"><TT>&#92;og</TT> a <TT>&#92;fg</TT></TD>
+<TD ALIGN="CENTER">&#171a &#187</TD>
+<TD ALIGN="CENTER">3<TT>&#92;ieme</TT></TD>
+<TD ALIGN="CENTER">3<SUP>e</SUP></TD>
+<TD ALIGN="CENTER">10<TT>&#92;iemes</TT></TD>
+<TD ALIGN="CENTER">10<SUP>es</SUP></TD>
+</TR>
+</TABLE>
+</DIV>
+
+ <A NAME="tab:exa"></A> <A NAME="53"></A>
+</TD></TR>
+</TABLE>
+</DIV><P></P>
+<BR>
+
+<P>
+<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-31</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node6.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node6.html
new file mode 100644
index 00000000000..8a6828f88c9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node6.html
@@ -0,0 +1,78 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>Bibliographie</TITLE>
+<META NAME="description" CONTENT="Bibliographie">
+<META NAME="keywords" CONTENT="l2hexa">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="l2hexa.css">
+
+<LINK REL="next" HREF="node7.html">
+<LINK REL="previous" HREF="node5.html">
+<LINK REL="up" HREF="l2hexa.html">
+<LINK REL="next" HREF="node7.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html104"
+ HREF="node7.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif.gif"></A>
+<A NAME="tex2html98"
+ HREF="l2hexa.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif.gif"></A>
+<A NAME="tex2html92"
+ HREF="node5.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif.gif"></A>
+<A NAME="tex2html100"
+ HREF="node1.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/contents_motif.gif"></A>
+<A NAME="tex2html102"
+ HREF="node7.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/index_motif.gif"></A>
+<BR>
+<B> suivant:</B> <A NAME="tex2html105"
+ HREF="node7.html">Index</A>
+<B> monter:</B> <A NAME="tex2html99"
+ HREF="l2hexa.html">Exemple d'un article en</A>
+<B> pr&eacute;c&eacute;dent:</B> <A NAME="tex2html93"
+ HREF="node5.html">Exemple d'un tableau</A>
+ &nbsp <B> <A NAME="tex2html101"
+ HREF="node1.html">Table des mati&#232;res</A></B>
+ &nbsp <B> <A NAME="tex2html103"
+ HREF="node7.html">Index</A></B>
+<BR><BR>
+<!--End of Navigation Panel-->
+
+<H2><A NAME="SECTION00060000000000000000"></A><A NAME="57"></A><BR>
+Bibliographie
+</H2><DL COMPACT><DD>
+<P></P><DT><A NAME="bib-PS">1</A>
+<DD>
+Adobe Inc.
+<I>PostScript, manuel de r&#233;f&#233;rence (2<SUP>e</SUP>&#233;dition)</I>
+Inter&#201;ditions (France), 1992
+</DL><BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-31</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node7.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node7.html
new file mode 100644
index 00000000000..7bdbe540ef0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node7.html
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>Index</TITLE>
+<META NAME="description" CONTENT="Index">
+<META NAME="keywords" CONTENT="l2hexa">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="l2hexa.css">
+
+<LINK REL="next" HREF="node8.html">
+<LINK REL="previous" HREF="node6.html">
+<LINK REL="up" HREF="l2hexa.html">
+<LINK REL="next" HREF="node8.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html116"
+ HREF="node8.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif.gif"></A>
+<A NAME="tex2html112"
+ HREF="l2hexa.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif.gif"></A>
+<A NAME="tex2html106"
+ HREF="node6.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif.gif"></A>
+<A NAME="tex2html114"
+ HREF="node1.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/contents_motif.gif"></A>
+<BR>
+<B> suivant:</B> <A NAME="tex2html117"
+ HREF="node8.html">&#192; propos de ce</A>
+<B> monter:</B> <A NAME="tex2html113"
+ HREF="l2hexa.html">Exemple d'un article en</A>
+<B> pr&eacute;c&eacute;dent:</B> <A NAME="tex2html107"
+ HREF="node6.html">Bibliographie</A>
+ &nbsp <B> <A NAME="tex2html115"
+ HREF="node1.html">Table des mati&#232;res</A></B>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<BR>
+
+<H2><A NAME="SECTION00070000000000000000"></A>
+<A NAME="61"></A>
+<BR>
+Index
+</H2><DL COMPACT>
+<DT><STRONG>figure</STRONG>
+<DD><A HREF="node4.html#14">Une figure EPS</A>
+<DT><STRONG>index</STRONG>
+<DD><A HREF="node7.html#61">Index</A>
+<DT><STRONG>PostScript</STRONG>
+<DD><A HREF="node4.html#15">Une figure EPS</A>
+<DT><STRONG>r&#233;f&#233;rences</STRONG>
+<DD><A HREF="node6.html#57">Bibliographie</A>
+<DT><STRONG>section</STRONG>
+<DD><A HREF="node4.html#11">Une figure EPS</A>
+<DT><STRONG>tableau</STRONG>
+<DD><A HREF="node5.html#53">Exemple d'un tableau</A>
+
+</DL>
+<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-31</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node8.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node8.html
new file mode 100644
index 00000000000..b04bea52df8
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node8.html
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>&#192; propos de ce document...</TITLE>
+<META NAME="description" CONTENT="&#192; propos de ce document...">
+<META NAME="keywords" CONTENT="l2hexa">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="l2hexa.css">
+
+<LINK REL="previous" HREF="node7.html">
+<LINK REL="up" HREF="l2hexa.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif_gr.gif">
+<A NAME="tex2html122"
+ HREF="l2hexa.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif.gif"></A>
+<A NAME="tex2html118"
+ HREF="node7.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif.gif"></A>
+<A NAME="tex2html124"
+ HREF="node1.html">
+<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/contents_motif.gif"></A>
+<A NAME="tex2html126"
+ HREF="node7.html">
+<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/index_motif.gif"></A>
+<BR>
+<B> monter:</B> <A NAME="tex2html123"
+ HREF="l2hexa.html">Exemple d'un article en</A>
+<B> pr&eacute;c&eacute;dent:</B> <A NAME="tex2html119"
+ HREF="node7.html">Index</A>
+ &nbsp <B> <A NAME="tex2html125"
+ HREF="node1.html">Table des mati&#232;res</A></B>
+ &nbsp <B> <A NAME="tex2html127"
+ HREF="node7.html">Index</A></B>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+
+<H1><A NAME="SECTION00080000000000000000">
+&#192; propos de ce document...</A>
+</H1>
+ <STRONG>Exemple d'un article en fran&#231;ais</STRONG><P>
+This document was generated using the
+<A HREF="http://www-dsed.llnl.gov/files/programs/unix/latex2html/manual/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 99.1 release (March 30, 1999)
+<P>
+Copyright &#169; 1993, 1994, 1995, 1996,
+<A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>,
+Computer Based Learning Unit, University of Leeds.
+<BR>
+Copyright &#169; 1997, 1998, 1999,
+<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>,
+Mathematics Department, Macquarie University, Sydney.
+<P>
+The command line arguments were: <BR>
+ <STRONG>latex2html</STRONG> <TT>l2hexa</TT>
+<P>
+The translation was initiated by Michel Goossens on 1999-03-31
+<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-31</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/myinit.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/myinit.pl
new file mode 100644
index 00000000000..b24da780bf5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/myinit.pl
@@ -0,0 +1,8 @@
+# File myinit.pl
+$ADDRESS = "<em>Michel Goossens<BR>" .
+ "Division IT<BR>" .
+ "T&eacute;l. 767.5028<BR>" .
+ "$address_data[1]</em>";
+$MAX_SPLIT_DEPTH = 0; # do not split document
+$NO_NAVIGATION = 1; # no navigation panel
+1; # Mandatory last line
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS.css b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS.css
new file mode 100644
index 00000000000..daee915b4dd
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS.css
@@ -0,0 +1,4 @@
+H2 { border : 2pt solid brown ; color : maroon ; padding : 5pt }
+TD.eqno {color : green ; fontweight : 700 } /* equation-number cells */
+TABLE.subequations { background-color : #E0E0E0 ; }
+P { line-height : 18pt ; }
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS.tex b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS.tex
new file mode 100644
index 00000000000..7a0f0ea4629
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS.tex
@@ -0,0 +1,54 @@
+\documentclass[a4paper,twoside]{article}
+\usepackage{html}
+\usepackage{amsmath}
+
+\renewcommand{\d}{\partial}\providecommand{\bm}[1]{\mathbf{#1}}
+\providecommand{\Range}{\mathcal{R}}\providecommand{\Ker}{\mathcal{N}}
+\providecommand{\Quat}{\vec{\mathbf{Q}}}
+
+\newcommand{\StAndrews}{\htmlurl{http://www-groups.dcs.st-and.ac.uk/~history}}%
+\newcommand{\Pythagorians}{\htmladdnormallink
+ {Pythagorians}{\StAndrews/Mathematicians/Pythagoras.html}}
+\newcommand{\Fermat}{\htmladdnormallink
+ {Fermat, c.1637}{\StAndrews/HistTopics/Fermat's_last_theorem.html}}
+\newcommand{\Wiles}{\htmladdnormallink
+ {Wiles, 1995}{\htmlurl{http://www.pbs.org:80/wgbh/nova/proof}}}
+
+\begin{document}
+\htmlhead[center]{section}{Math examples}
+\begin{eqnarray}
+ \phi(\lambda) & = & \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+ \exp \left( u \ln u + \lambda u \right ) du \hspace{1cm}\mbox{for } c \geq 0 \\
+ \lambda & = & \frac{\epsilon -\bar{\epsilon} }{\xi}
+ - \gamma' - \beta^2 - \ln \frac{\xi} {E_{\rm max}} \\
+ \gamma & = & 0.577215\dots \mathrm{\hspace{5mm}(Euler's\ constant)} \\
+ \gamma' & = & 0.422784\dots = 1 - \gamma \\
+ \epsilon , \bar{\epsilon} & = & \mbox{actual/average energy loss}
+\end{eqnarray}
+
+Since~\eqref{eqn:stress-sr} or~\eqref{gdef} should hold for arbitrary $\delta\bm{c}$%
+-vectors, it is clear that $\Ker(A) = \Range(B)$ and that when $y=B(x)$ one has...\\
+...the \Pythagorians{} knew infinitely many solutions in integers to $a^2+b^2=c^2$.
+That no non-trivial integer solutions exist for $a^n+b^n=c^n$ with integers $n>2$ has long
+been suspected (\Fermat). Only during the current decade has this been proved (\Wiles).
+
+\begin{eqnarray}\label{eqn:stress-sr}
+ V \bm{\pi}^{sr} & = & \left< \sum_i M_i \bm{V}_i \bm{V}_i
+ + \sum_i \sum_{j>i} \bm{R}_{ij} \bm{F}_{ij}\right> \\ \nonumber
+ & = & \left< \sum_i M_i \bm{V}_i \bm{V}_i
+ + \sum_{i}\sum_{j>i}\sum_\alpha\sum_\beta \bm{r}_{i\alpha j\beta}\bm{f}_{i\alpha j\beta}
+ - \sum_i \sum_\alpha \bm{p}_{i\alpha} \bm{f}_{i\alpha} \right>
+\end{eqnarray}
+
+\begin{subequations}\label{bgdefs}
+\begin{align} B_{ij}^\alpha & =
+ \left(B_{ij}^\alpha\right)_0 + \left(B_{ij}^\alpha\right)_a \label{bdef} \\
+ \left(B_{ij}^\alpha\right)_0 & = \frac{1}{2}\left(\frac{\d N_i^\alpha}{\d X_j}
+ + \frac{\d N_j^\alpha} {\d X_i} \right) \label{b0def} \\
+ \left(B_{ij}^\alpha\right)_a & = H_{ij}^{\alpha \beta} a^\beta \label{budef} \\
+ H_{ij}^{\alpha \beta} & =
+ \frac{1}{2}\left( \frac{\d N_k^\alpha}{\d X_i} \frac{\d N_k^\beta}{\d X_j}
+ + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right) \label{gdef}
+\end{align}
+\end{subequations}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/WARNINGS b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/WARNINGS
new file mode 100644
index 00000000000..9d1d9f764ee
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/WARNINGS
@@ -0,0 +1,2 @@
+
+redefining command \d
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/images.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/images.pl
new file mode 100644
index 00000000000..9a62f68699c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/images.pl
@@ -0,0 +1,139 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate images original text with physical files.
+
+
+$key = q/displaystylefrac{epsilon-bar{epsilon}}{xi}-gamma'-beta^2-lnfrac{xi}{E_{{rm{max}};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="185" HEIGHT="51" ALIGN="MIDDLE" BORDER="0"
+ SRC="img6.gif"
+ ALT="$\displaystyle \frac{\epsilon -\bar{\epsilon} }{\xi}
+- \gamma' - \beta^2 - \ln \frac{\xi} {E_{\rm max}}$">|;
+
+$key = q/a^2+b^2=c^2;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="88" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img15.gif"
+ ALT="$ a^2+b^2=c^2$">|;
+
+$key = q/n>2;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="43" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img17.gif"
+ ALT="$ n&gt;2$">|;
+
+$key = q/{subequations}align{B_{ij}^alpha<col_mark>=left(B_{ij}^alpharight)_0+left(B_{ij}}{{d{X_i}frac{{d{N_k^alpha}{{d{X_j}right)align{{subequations};MSF=1.6;TAGS=R;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="559" HEIGHT="159" ALIGN="BOTTOM" BORDER="0"
+ SRC="img21.gif"
+ ALT="\begin{subequations}\begin{align}B_{ij}^\alpha &amp; = \left(B_{ij}^\alpha\right)_0 ...
+...\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right)\end{align}\end{subequations}">|;
+
+$key = q/y=B(x);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="68" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img14.gif"
+ ALT="$ y=B(x)$">|;
+
+$key = q/displaystyle=;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\displaystyle =$">|;
+
+$key = q/mathcal{N}(A)=mathcal{R}(B);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="104" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img13.gif"
+ ALT="$ \mathcal{N}(A) = \mathcal{R}(B)$">|;
+
+$key = q/displaystylelambda;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="13" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
+ SRC="img5.gif"
+ ALT="$\displaystyle \lambda$">|;
+
+$key = q/displaystyle0.577215dotsmathrm{hspace{5mm}(Euler'sconstant)};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="235" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img8.gif"
+ ALT="$\displaystyle 0.577215\dots \mathrm{\hspace{5mm}(Euler's\ constant)}$">|;
+
+$key = q/displaystylegamma;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="13" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img7.gif"
+ ALT="$\displaystyle \gamma$">|;
+
+$key = q/displaystyleleft<sum_iM_imathbf{V}_imathbf{V}_i+sum_isum_{j>i}mathbf{R}_{ij}mathbf{F}_{ij}right>;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="233" HEIGHT="63" ALIGN="MIDDLE" BORDER="0"
+ SRC="img19.gif"
+ ALT="$\displaystyle \left&lt; \sum_i M_i \mathbf{V}_i \mathbf{V}_i
++ \sum_i \sum_{j&gt;i} \mathbf{R}_{ij} \mathbf{F}_{ij}\right&gt;$">|;
+
+$key = q/displaystylegamma';MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="18" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img9.gif"
+ ALT="$\displaystyle \gamma'$">|;
+
+$key = q/a^n+b^n=c^n;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="93" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
+ SRC="img16.gif"
+ ALT="$ a^n+b^n=c^n$">|;
+
+$key = q/displaystyleepsilon,bar{epsilon};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="24" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img11.gif"
+ ALT="$\displaystyle \epsilon , \bar{\epsilon}$">|;
+
+$key = q/displaystyleleft<sum_iM_imathbf{V}_imathbf{V}_i+sum_{i}sum_{j>i}sum_alphasum_betalphajbeta}-sum_isum_alphamathbf{p}_{ialpha}mathbf{f}_{ialpha}right>;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="418" HEIGHT="63" ALIGN="MIDDLE" BORDER="0"
+ SRC="img20.gif"
+ ALT="$\displaystyle \left&lt; \sum_i M_i \mathbf{V}_i \mathbf{V}_i
++ \sum_{i}\sum_{j&gt;i}\...
+... j\beta}
+- \sum_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right&gt;$">|;
+
+$key = q/displaystylecgeq0;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="40" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img4.gif"
+ ALT="$\displaystyle c \geq 0$">|;
+
+$key = q/deltamathbf{c};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="20" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
+ SRC="img12.gif"
+ ALT="$ \delta\mathbf{c}$">|;
+
+$key = q/displaystyle0.422784dots=1-gamma;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="143" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img10.gif"
+ ALT="$\displaystyle 0.422784\dots = 1 - \gamma$">|;
+
+$key = q/displaystylefrac{1}{2pii}int^{c+iinfty}_{c-iinfty}expleft(ulnu+lambdauright)du;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="220" HEIGHT="58" ALIGN="MIDDLE" BORDER="0"
+ SRC="img3.gif"
+ ALT="$\displaystyle \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+\exp \left( u \ln u + \lambda u \right ) du$">|;
+
+$key = q/displaystylephi(lambda);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="35" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img1.gif"
+ ALT="$\displaystyle \phi(\lambda)$">|;
+
+$key = q/displaystyleVmathbf{pi}^{sr};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="40" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
+ SRC="img18.gif"
+ ALT="$\displaystyle V \mathbf{\pi}^{sr}$">|;
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/images.tex b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/images.tex
new file mode 100644
index 00000000000..0d853551381
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/images.tex
@@ -0,0 +1,276 @@
+\batchmode
+\documentclass[a4paper,twoside]{article}
+
+\usepackage{html}
+\usepackage{amsmath}
+
+%
+\renewcommand{\d}{\partial}%
+\providecommand{\bm}[1]{\mathbf{#1}}%
+\providecommand{\Range}{\mathcal{R}}%
+\providecommand{\Ker}{\mathcal{N}}%
+\providecommand{\Quat}{\vec{\mathbf{Q}}}
+%
+\providecommand{\StAndrews}{\htmlurl{http://www-groups.dcs.st-and.ac.uk/~history}}%%
+\providecommand{\Pythagorians}{\htmladdnormallink
+ {Pythagorians}{\htmlurl{http://www-groups.dcs.st-and.ac.uk/~history}/Mathematicians/Pythagoras.html}}%
+\providecommand{\Fermat}{\htmladdnormallink
+ {Fermat, c.1637}{\htmlurl{http://www-groups.dcs.st-and.ac.uk/~history}/HistTopics/Fermat's_last_theorem.html}}%
+\providecommand{\Wiles}{\htmladdnormallink
+ {Wiles, 1995}{\htmlurl{http://www.pbs.org:80/wgbh/nova/proof}}}
+
+\usepackage[dvips]{color}
+\pagecolor[gray]{.7}
+
+
+
+\makeatletter
+
+\makeatletter
+\count@=\the\catcode`\_ \catcode`\_=8
+\newenvironment{tex2html_wrap}{}{} \catcode`\_=\count@
+\newcommand{\renewedcommand}[1]{\expandafter\renewcommand\csname #1\endcsname}%
+\makeatother
+\let\mathon=$
+\let\mathoff=$
+\ifx\AtBeginDocument\undefined \newcommand{\AtBeginDocument}[1]{}\fi
+\newbox\sizebox
+\setlength{\hoffset}{0pt}\setlength{\voffset}{0pt}
+\addtolength{\textheight}{\footskip}\setlength{\footskip}{0pt}
+\addtolength{\textheight}{\topmargin}\setlength{\topmargin}{0pt}
+\addtolength{\textheight}{\headheight}\setlength{\headheight}{0pt}
+\addtolength{\textheight}{\headsep}\setlength{\headsep}{0pt}
+\setlength{\textwidth}{349pt}
+\newwrite\lthtmlwrite
+\makeatletter
+\let\realnormalsize=\normalsize
+\global\topskip=2sp
+\def\preveqno{}\let\real@float=\@float \let\realend@float=\end@float
+\def\@float{\let\@savefreelist\@freelist\real@float}
+\def\end@float{\realend@float\global\let\@freelist\@savefreelist}
+\let\real@dbflt=\@dbflt \let\end@dblfloat=\end@float
+\let\@largefloatcheck=\relax
+\let\if@boxedmulticols=\iftrue
+\def\@dbflt{\let\@savefreelist\@freelist\real@dbflt}
+\def\adjustnormalsize{\def\normalsize{\mathsurround=0pt \realnormalsize
+ \parindent=0pt\abovedisplayskip=0pt\belowdisplayskip=0pt}%
+ \def\phantompar{\csname par\endcsname}\normalsize}%
+\def\lthtmltypeout#1{{\let\protect\string\immediate\write\lthtmlwrite{#1}}}%
+\newcommand\lthtmlhboxmathA{\adjustnormalsize\setbox\sizebox=\hbox\bgroup\kern.05em }%
+\newcommand\lthtmlhboxmathB{\adjustnormalsize\setbox\sizebox=\hbox to\hsize\bgroup\hfill }%
+\newcommand\lthtmlvboxmathA{\adjustnormalsize\setbox\sizebox=\vbox\bgroup %
+ \let\ifinner=\iffalse }%
+\newcommand\lthtmlboxmathZ{\@next\next\@currlist{}{\def\next{\voidb@x}}%
+ \expandafter\box\next\egroup}%
+\newcommand\lthtmlmathtype[1]{\def\lthtmlmathenv{#1}}%
+\newcommand\lthtmllogmath{\lthtmltypeout{l2hSize %
+:\lthtmlmathenv:\the\ht\sizebox::\the\dp\sizebox::\the\wd\sizebox.\preveqno}}%
+\newcommand\lthtmlfigureA[1]{\let\@savefreelist\@freelist
+ \lthtmlmathtype{#1}\lthtmlvboxmathA}%
+\newcommand\lthtmlpictureA[1]{\let\@savefreelist\@freelist
+ \lthtmlmathtype{#1}\lthtmlhboxmathB}%
+\newcommand\lthtmlpictureZ[1]{\hfill\lthtmlfigureZ}%
+\newcommand\lthtmlfigureZ{\lthtmlboxmathZ\lthtmllogmath\copy\sizebox
+ \global\let\@freelist\@savefreelist}%
+\newcommand\lthtmldisplayA[1]{\lthtmlmathtype{#1}\lthtmlvboxmathA}%
+\newcommand\lthtmldisplayB[1]{\edef\preveqno{(\theequation)}%
+ \lthtmldisplayA{#1}\let\@eqnnum\relax}%
+\newcommand\lthtmldisplayZ{\lthtmlboxmathZ\lthtmllogmath\lthtmlsetmath}%
+\newcommand\lthtmlinlinemathA[1]{\lthtmlmathtype{#1}\lthtmlhboxmathA
+ \vrule height1.5ex width0pt }%
+\newcommand\lthtmlinlineA[1]{\lthtmlmathtype{#1}\lthtmlhboxmathA}%
+\newcommand\lthtmlinlineZ{\egroup\expandafter\ifdim\dp\sizebox>0pt %
+ \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetinline}
+\newcommand\lthtmlinlinemathZ{\egroup\expandafter\ifdim\dp\sizebox>0pt %
+ \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetmath}
+\newcommand\lthtmlindisplaymathZ{\egroup %
+ \centerinlinemath\lthtmllogmath\lthtmlsetmath}
+\def\lthtmlsetinline{\hbox{\vrule width.1em\kern-.05em\vtop{\vbox{%
+ \kern.1em\copy\sizebox}\ifdim\dp\sizebox>0pt\kern.1em\else\kern.3pt\fi
+ \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}}
+\def\lthtmlsetmath{\hbox{\vrule width.1em\kern-.05em\vtop{\vbox{%
+ \kern.1em\kern0.8 pt\hbox{\hglue.17em\copy\sizebox\hglue0.8 pt}}\kern.3pt%
+ \ifdim\dp\sizebox>0pt\kern.1em\fi \kern0.8 pt%
+ \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}}
+\def\centerinlinemath{%
+ \dimen1=\ifdim\ht\sizebox<\dp\sizebox \dp\sizebox\else\ht\sizebox\fi
+ \advance\dimen1by.5pt \vrule width0pt height\dimen1 depth\dimen1
+ \dp\sizebox=\dimen1\ht\sizebox=\dimen1\relax}
+
+\def\lthtmlcheckvsize{\ifdim\ht\sizebox<\vsize
+ \ifdim\wd\sizebox<\hsize\expandafter\hfill\fi \expandafter\vfill
+ \else\expandafter\vss\fi}%
+\providecommand{\selectlanguage}[1]{}%
+\makeatletter \tracingstats = 1
+\providecommand{\Mu}{\textrm{M}}
+\providecommand{\Nu}{\textrm{N}}
+\providecommand{\Chi}{\textrm{X}}
+\providecommand{\Zeta}{\textrm{Z}}
+\providecommand{\Alpha}{\textrm{A}}
+\providecommand{\Omicron}{\textrm{O}}
+\providecommand{\omicron}{\textrm{o}}
+\providecommand{\Rho}{\textrm{R}}
+\providecommand{\Tau}{\textrm{T}}
+\providecommand{\Epsilon}{\textrm{E}}
+\providecommand{\Eta}{\textrm{H}}
+\providecommand{\Beta}{\textrm{B}}
+\providecommand{\Iota}{\textrm{J}}
+\providecommand{\Kappa}{\textrm{K}}
+
+
+\begin{document}
+\pagestyle{empty}\thispagestyle{empty}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength hsize=\the\hsize}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength vsize=\the\vsize}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength hoffset=\the\hoffset}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength voffset=\the\voffset}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength topmargin=\the\topmargin}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength topskip=\the\topskip}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength headheight=\the\headheight}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength headsep=\the\headsep}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength parskip=\the\parskip}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength oddsidemargin=\the\oddsidemargin}\lthtmltypeout{}%
+\makeatletter
+\if@twoside\lthtmltypeout{latex2htmlLength evensidemargin=\the\evensidemargin}%
+\else\lthtmltypeout{latex2htmlLength evensidemargin=\the\oddsidemargin}\fi%
+\lthtmltypeout{}%
+\makeatother
+\setcounter{page}{1}
+\onecolumn
+
+% !!! IMAGES START HERE !!!
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay250}%
+$\displaystyle \phi(\lambda)$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay252}%
+$\displaystyle =$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay254}%
+$\displaystyle \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+\exp \left( u \ln u + \lambda u \right ) du$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay255}%
+$\displaystyle c \geq 0$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay257}%
+$\displaystyle \lambda$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay261}%
+$\displaystyle \frac{\epsilon -\bar{\epsilon} }{\xi}
+- \gamma' - \beta^2 - \ln \frac{\xi} {E_{\rm max}}$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay263}%
+$\displaystyle \gamma$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay267}%
+$\displaystyle 0.577215\dots \mathrm{\hspace{5mm}(Euler's\ constant)}$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay269}%
+$\displaystyle \gamma'$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay273}%
+$\displaystyle 0.422784\dots = 1 - \gamma$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay275}%
+$\displaystyle \epsilon , \bar{\epsilon}$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline280}%
+$ \delta\mathbf{c}$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline282}%
+$ \mathcal{N}(A) = \mathcal{R}(B)$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline284}%
+$ y=B(x)$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline286}%
+$ a^2+b^2=c^2$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline288}%
+$ a^n+b^n=c^n$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline290}%
+$ n>2$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay293}%
+$\displaystyle V \mathbf{\pi}^{sr}$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay297}%
+$\displaystyle \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
++ \sum_i \sum_{j>i} \mathbf{R}_{ij} \mathbf{F}_{ij}\right>$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay301}%
+$\displaystyle \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
++ \sum_{i}\sum_{j>i}\sum_\alpha\sum_\beta \mathbf{r}_{i\alpha j\beta}\mathbf{f}_{i\alpha j\beta}
+- \sum_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right>$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmldisplayA{subequations303}%
+\setcounter{equation}{6}
+\begin{subequations}\begin{align} B_{ij}^\alpha & = \left(B_{ij}^\alpha\right)_0 + \left(B_{ij}^\alpha\right)_a\\ \left(B_{ij}^\alpha\right)_0 & = \frac{1}{2}\left(\frac{\d N_i^\alpha}{\d X_j} + \frac{\d N_j^\alpha} {\d X_i} \right)\\ \left(B_{ij}^\alpha\right)_a & = H_{ij}^{\alpha \beta} a^\beta\\ H_{ij}^{\alpha \beta} & = \frac{1}{2}\left( \frac{\d N_k^\alpha}{\d X_i} \frac{\d N_k^\beta}{\d X_j} + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right)\end{align}\end{subequations}%
+\lthtmldisplayZ
+\lthtmlcheckvsize\clearpage}
+
+
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img1.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img1.gif
new file mode 100644
index 00000000000..5916d47b1f4
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img1.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img10.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img10.gif
new file mode 100644
index 00000000000..d6c384034b2
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img10.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img11.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img11.gif
new file mode 100644
index 00000000000..c6187c1e01b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img11.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img12.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img12.gif
new file mode 100644
index 00000000000..f0b3d7892e0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img12.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img13.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img13.gif
new file mode 100644
index 00000000000..cbddfb5e467
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img13.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img14.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img14.gif
new file mode 100644
index 00000000000..7de6ffffe7c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img14.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img15.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img15.gif
new file mode 100644
index 00000000000..a23285e2c3e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img15.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img16.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img16.gif
new file mode 100644
index 00000000000..7b38866db53
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img16.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img17.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img17.gif
new file mode 100644
index 00000000000..9f0fe8adafe
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img17.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img18.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img18.gif
new file mode 100644
index 00000000000..4e486403d4a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img18.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img19.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img19.gif
new file mode 100644
index 00000000000..bd46b0c6d74
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img19.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img2.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img2.gif
new file mode 100644
index 00000000000..66f3d138c16
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img2.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img20.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img20.gif
new file mode 100644
index 00000000000..bdac13b87dc
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img20.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img21.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img21.gif
new file mode 100644
index 00000000000..995d6adb959
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img21.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img3.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img3.gif
new file mode 100644
index 00000000000..a012a4948fc
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img3.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img4.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img4.gif
new file mode 100644
index 00000000000..d273dc1386c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img4.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img5.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img5.gif
new file mode 100644
index 00000000000..f14284a35e3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img5.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img6.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img6.gif
new file mode 100644
index 00000000000..36994fdcdc7
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img6.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img7.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img7.gif
new file mode 100644
index 00000000000..6159b5b246b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img7.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img8.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img8.gif
new file mode 100644
index 00000000000..50fa0647d8b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img8.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img9.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img9.gif
new file mode 100644
index 00000000000..f11b9866644
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img9.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/index.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/index.html
new file mode 100644
index 00000000000..0aa04db1519
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/index.html
@@ -0,0 +1,279 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>sampleAMS</TITLE>
+<META NAME="description" CONTENT="sampleAMS">
+<META NAME="keywords" CONTENT="sampleAMS">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="sampleAMS.css">
+
+<LINK REL="next" HREF="node1.html">
+<LINK REL="next" HREF="node1.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html9"
+ HREF="node1.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif.gif"></A>
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif_gr.gif">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif_gr.gif">
+<BR>
+<B> Next:</B> <A NAME="tex2html10"
+ HREF="node1.html">About this document ...</A>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<P>
+<H2 ALIGN="center"><A NAME="SECTION00000000000000000000">
+Math examples</A>
+</H2>
+<BR>
+<DIV ALIGN="CENTER">
+
+<!-- MATH
+ \begin{eqnarray}
+\phi(\lambda) & = & \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+ \exp \left( u \ln u + \lambda u \right ) du \hspace{1cm}\mbox{for } c \geq 0 \\
+ \lambda & = & \frac{\epsilon -\bar{\epsilon} }{\xi}
+ - \gamma' - \beta^2 - \ln \frac{\xi} {E_{\rm max}} \\
+ \gamma & = & 0.577215\dots \mathrm{\hspace{5mm}(Euler's\ constant)} \\
+ \gamma' & = & 0.422784\dots = 1 - \gamma \\
+ \epsilon , \bar{\epsilon} & = & \mbox{actual/average energy loss}
+\end{eqnarray}
+ -->
+
+<TABLE CELLPADDING="0" ALIGN="CENTER" WIDTH="100%">
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="35" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img1.gif"
+ ALT="$\displaystyle \phi(\lambda)$"></TD>
+<TD WIDTH="10" ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\displaystyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="220" HEIGHT="58" ALIGN="MIDDLE" BORDER="0"
+ SRC="img3.gif"
+ ALT="$\displaystyle \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+\exp \left( u \ln u + \lambda u \right ) du$">&nbsp; &nbsp;for <IMG
+ WIDTH="40" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img4.gif"
+ ALT="$\displaystyle c \geq 0$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(1)</TD></TR>
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="13" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
+ SRC="img5.gif"
+ ALT="$\displaystyle \lambda$"></TD>
+<TD WIDTH="10" ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\displaystyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="185" HEIGHT="51" ALIGN="MIDDLE" BORDER="0"
+ SRC="img6.gif"
+ ALT="$\displaystyle \frac{\epsilon -\bar{\epsilon} }{\xi}
+- \gamma' - \beta^2 - \ln \frac{\xi} {E_{\rm max}}$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(2)</TD></TR>
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="13" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img7.gif"
+ ALT="$\displaystyle \gamma$"></TD>
+<TD WIDTH="10" ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\displaystyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="235" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img8.gif"
+ ALT="$\displaystyle 0.577215\dots \mathrm{\hspace{5mm}(Euler's\ constant)}$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(3)</TD></TR>
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="18" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img9.gif"
+ ALT="$\displaystyle \gamma'$"></TD>
+<TD WIDTH="10" ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\displaystyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="143" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img10.gif"
+ ALT="$\displaystyle 0.422784\dots = 1 - \gamma$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(4)</TD></TR>
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="24" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img11.gif"
+ ALT="$\displaystyle \epsilon , \bar{\epsilon}$"></TD>
+<TD WIDTH="10" ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\displaystyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP>actual/average energy loss</TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(5)</TD></TR>
+</TABLE></DIV>
+<BR CLEAR="ALL"><P></P>
+
+<P>
+Since&nbsp;(<A HREF="sampleAMS.html#eqn:stress-sr">6</A>) or&nbsp;(<A HREF="sampleAMS.html#gdef">7d</A>) should hold for arbitrary
+<!-- MATH
+ $\delta\mathbf{c}$
+ -->
+<IMG
+ WIDTH="20" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
+ SRC="img12.gif"
+ ALT="$ \delta\mathbf{c}$">-vectors, it is clear that
+<!-- MATH
+ $\mathcal{N}(A) = \mathcal{R}(B)$
+ -->
+<IMG
+ WIDTH="104" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img13.gif"
+ ALT="$ \mathcal{N}(A) = \mathcal{R}(B)$"> and that when <IMG
+ WIDTH="68" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img14.gif"
+ ALT="$ y=B(x)$"> one has...
+<BR>
+...the <A NAME="tex2html4"
+ HREF="http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Pythagoras.html">Pythagorians</A> knew infinitely many solutions in integers to
+<!-- MATH
+ $a^2+b^2=c^2$
+ -->
+<IMG
+ WIDTH="88" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img15.gif"
+ ALT="$ a^2+b^2=c^2$">.
+That no non-trivial integer solutions exist for
+<!-- MATH
+ $a^n+b^n=c^n$
+ -->
+<IMG
+ WIDTH="93" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
+ SRC="img16.gif"
+ ALT="$ a^n+b^n=c^n$"> with integers <IMG
+ WIDTH="43" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img17.gif"
+ ALT="$ n&gt;2$"> has long
+been suspected (<A NAME="tex2html5"
+ HREF="http://www-groups.dcs.st-and.ac.uk/~history/HistTopics/Fermat's_last_theorem.html">Fermat, c.1637</A>). Only during the current decade has this been proved (<A NAME="tex2html6"
+ HREF="http://www.pbs.org:80/wgbh/nova/proof">Wiles, 1995</A>).
+
+<P>
+<BR>
+<DIV ALIGN="CENTER"><A NAME="eqn:stress-sr"></A>
+<!-- MATH
+ \begin{eqnarray}
+V \mathbf{\pi}^{sr} & = & \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
+ + \sum_i \sum_{j>i} \mathbf{R}_{ij} \mathbf{F}_{ij}\right> \\\nonumber
+ & = & \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
+ + \sum_{i}\sum_{j>i}\sum_\alpha\sum_\beta \mathbf{r}_{i\alpha j\beta}\mathbf{f}_{i\alpha j\beta}
+ - \sum_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right>
+\end{eqnarray}
+ -->
+
+<TABLE CELLPADDING="0" ALIGN="CENTER" WIDTH="100%">
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="40" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
+ SRC="img18.gif"
+ ALT="$\displaystyle V \mathbf{\pi}^{sr}$"></TD>
+<TD WIDTH="10" ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\displaystyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="233" HEIGHT="63" ALIGN="MIDDLE" BORDER="0"
+ SRC="img19.gif"
+ ALT="$\displaystyle \left&lt; \sum_i M_i \mathbf{V}_i \mathbf{V}_i
++ \sum_i \sum_{j&gt;i} \mathbf{R}_{ij} \mathbf{F}_{ij}\right&gt;$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(6)</TD></TR>
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT">&nbsp;</TD>
+<TD WIDTH="10" ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\displaystyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="418" HEIGHT="63" ALIGN="MIDDLE" BORDER="0"
+ SRC="img20.gif"
+ ALT="$\displaystyle \left&lt; \sum_i M_i \mathbf{V}_i \mathbf{V}_i
++ \sum_{i}\sum_{j&gt;i}\...
+... j\beta}
+- \sum_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right&gt;$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+&nbsp;</TD></TR>
+</TABLE></DIV>
+<BR CLEAR="ALL"><P></P>
+
+<P>
+
+<DIV ALIGN="CENTER"><A NAME="bgdefs"></A><A NAME="bdef"></A><A NAME="b0def"></A><A NAME="budef"></A><A NAME="gdef"></A>
+<!-- MATH
+ \begin{subequations}
+\begin{align} B_{ij}^\alpha & =
+\left(B_{ij}^\alpha\right)_0 + \left(B_{ij}^\alpha\right)_a\\
+ \left(B_{ij}^\alpha\right)_0 & = \frac{1}{2}\left(\frac{\d N_i^\alpha}{\d X_j}
+ + \frac{\d N_j^\alpha} {\d X_i} \right)\\
+ \left(B_{ij}^\alpha\right)_a & = H_{ij}^{\alpha \beta} a^\beta\\
+ H_{ij}^{\alpha \beta} & =
+ \frac{1}{2}\left( \frac{\d N_k^\alpha}{\d X_i} \frac{\d N_k^\beta}{\d X_j}
+ + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right)\end{align}
+\end{subequations}
+ -->
+<TABLE CELLPADDING="0" WIDTH="100%" ALIGN="CENTER">
+<TR VALIGN="MIDDLE">
+<TD NOWRAP ALIGN="CENTER"><IMG
+ WIDTH="559" HEIGHT="159" ALIGN="BOTTOM" BORDER="0"
+ SRC="img21.gif"
+ ALT="\begin{subequations}\begin{align}B_{ij}^\alpha &amp; = \left(B_{ij}^\alpha\right)_0 ...
+...\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right)\end{align}\end{subequations}"></TD></TR>
+</TABLE></DIV>
+<BR CLEAR="ALL">
+<BR><HR>
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
+
+<UL>
+<LI><A NAME="tex2html11"
+ HREF="node1.html">About this document ...</A>
+</UL>
+<!--End of Table of Child-Links-->
+<HR>
+<!--Navigation Panel-->
+<A NAME="tex2html9"
+ HREF="node1.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif.gif"></A>
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif_gr.gif">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif_gr.gif">
+<BR>
+<B> Next:</B> <A NAME="tex2html10"
+ HREF="node1.html">About this document ...</A>
+<!--End of Navigation Panel-->
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-30</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/internals.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/internals.pl
new file mode 100644
index 00000000000..694b45f8b36
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/internals.pl
@@ -0,0 +1,30 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate internals original text with physical files.
+
+
+$key = q/bdef/;
+$ref_files{$key} = "$dir".q|sampleAMS.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/b0def/;
+$ref_files{$key} = "$dir".q|sampleAMS.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/bgdefs/;
+$ref_files{$key} = "$dir".q|sampleAMS.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/eqn:stress-sr/;
+$ref_files{$key} = "$dir".q|sampleAMS.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/budef/;
+$ref_files{$key} = "$dir".q|sampleAMS.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/gdef/;
+$ref_files{$key} = "$dir".q|sampleAMS.html|;
+$noresave{$key} = "$nosave";
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/labels.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/labels.pl
new file mode 100644
index 00000000000..1fe4213e9c2
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/labels.pl
@@ -0,0 +1,61 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate labels original text with physical files.
+
+
+$key = q/bdef/;
+$external_labels{$key} = "$URL/" . q|sampleAMS.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/b0def/;
+$external_labels{$key} = "$URL/" . q|sampleAMS.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/bgdefs/;
+$external_labels{$key} = "$URL/" . q|sampleAMS.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/eqn:stress-sr/;
+$external_labels{$key} = "$URL/" . q|sampleAMS.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/budef/;
+$external_labels{$key} = "$URL/" . q|sampleAMS.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/gdef/;
+$external_labels{$key} = "$URL/" . q|sampleAMS.html|;
+$noresave{$key} = "$nosave";
+
+1;
+
+
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# labels from external_latex_labels array.
+
+
+$key = q/bdef/;
+$external_latex_labels{$key} = q|7a|;
+$noresave{$key} = "$nosave";
+
+$key = q/b0def/;
+$external_latex_labels{$key} = q|7b|;
+$noresave{$key} = "$nosave";
+
+$key = q/bgdefs/;
+$external_latex_labels{$key} = q|7|;
+$noresave{$key} = "$nosave";
+
+$key = q/eqn:stress-sr/;
+$external_latex_labels{$key} = q|6|;
+$noresave{$key} = "$nosave";
+
+$key = q/budef/;
+$external_latex_labels{$key} = q|7c|;
+$noresave{$key} = "$nosave";
+
+$key = q/gdef/;
+$external_latex_labels{$key} = q|7d|;
+$noresave{$key} = "$nosave";
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/node1.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/node1.html
new file mode 100644
index 00000000000..1080090ecca
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/node1.html
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>About this document ...</TITLE>
+<META NAME="description" CONTENT="About this document ...">
+<META NAME="keywords" CONTENT="sampleAMS">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="sampleAMS.css">
+
+<LINK REL="previous" HREF="sampleAMS.html">
+<LINK REL="up" HREF="sampleAMS.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif_gr.gif">
+<A NAME="tex2html16"
+ HREF="sampleAMS.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif.gif"></A>
+<A NAME="tex2html12"
+ HREF="sampleAMS.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif.gif"></A>
+<BR>
+<B> Up:</B> <A NAME="tex2html17"
+ HREF="sampleAMS.html">sampleAMS</A>
+<B> Previous:</B> <A NAME="tex2html13"
+ HREF="sampleAMS.html">sampleAMS</A>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+
+<H1><A NAME="SECTION00010000000000000000">
+About this document ...</A>
+</H1>
+ <P>
+This document was generated using the
+<A HREF="http://www-dsed.llnl.gov/files/programs/unix/latex2html/manual/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 99.1 release (March 30, 1999)
+<P>
+Copyright &#169; 1993, 1994, 1995, 1996,
+<A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>,
+Computer Based Learning Unit, University of Leeds.
+<BR>
+Copyright &#169; 1997, 1998, 1999,
+<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>,
+Mathematics Department, Macquarie University, Sydney.
+<P>
+The command line arguments were: <BR>
+ <STRONG>latex2html</STRONG> <TT>sampleAMS</TT>
+<P>
+The translation was initiated by Michel Goossens on 1999-03-30
+<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-30</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/sampleAMS.css b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/sampleAMS.css
new file mode 100644
index 00000000000..1993b851311
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/sampleAMS.css
@@ -0,0 +1,31 @@
+
+/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */
+.MATH { font-family: "Century Schoolbook", serif; }
+.MATH I { font-family: "Century Schoolbook", serif; font-shape: italic }
+.BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold }
+
+/* implement both fixed-size and relative sizes */
+SMALL.XTINY { font-size : xx-small }
+SMALL.TINY { font-size : x-small }
+SMALL.SCRIPTSIZE { font-size : smaller }
+SMALL.FOOTNOTESIZE { font-size : small }
+SMALL.SMALL { }
+BIG.LARGE { }
+BIG.XLARGE { font-size : large }
+BIG.XXLARGE { font-size : x-large }
+BIG.HUGE { font-size : larger }
+BIG.XHUGE { font-size : xx-large }
+
+/* heading styles */
+H1 { }
+H2 { }
+H3 { }
+H4 { }
+H5 { }
+
+/* mathematics styles */
+DIV.displaymath { } /* math displays */
+TD.eqno { } /* equation-number cells */
+
+
+/* document-specific styles come next */
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/sampleAMS.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/sampleAMS.html
new file mode 100644
index 00000000000..0aa04db1519
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/sampleAMS.html
@@ -0,0 +1,279 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>sampleAMS</TITLE>
+<META NAME="description" CONTENT="sampleAMS">
+<META NAME="keywords" CONTENT="sampleAMS">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="sampleAMS.css">
+
+<LINK REL="next" HREF="node1.html">
+<LINK REL="next" HREF="node1.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html9"
+ HREF="node1.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif.gif"></A>
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif_gr.gif">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif_gr.gif">
+<BR>
+<B> Next:</B> <A NAME="tex2html10"
+ HREF="node1.html">About this document ...</A>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<P>
+<H2 ALIGN="center"><A NAME="SECTION00000000000000000000">
+Math examples</A>
+</H2>
+<BR>
+<DIV ALIGN="CENTER">
+
+<!-- MATH
+ \begin{eqnarray}
+\phi(\lambda) & = & \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+ \exp \left( u \ln u + \lambda u \right ) du \hspace{1cm}\mbox{for } c \geq 0 \\
+ \lambda & = & \frac{\epsilon -\bar{\epsilon} }{\xi}
+ - \gamma' - \beta^2 - \ln \frac{\xi} {E_{\rm max}} \\
+ \gamma & = & 0.577215\dots \mathrm{\hspace{5mm}(Euler's\ constant)} \\
+ \gamma' & = & 0.422784\dots = 1 - \gamma \\
+ \epsilon , \bar{\epsilon} & = & \mbox{actual/average energy loss}
+\end{eqnarray}
+ -->
+
+<TABLE CELLPADDING="0" ALIGN="CENTER" WIDTH="100%">
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="35" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img1.gif"
+ ALT="$\displaystyle \phi(\lambda)$"></TD>
+<TD WIDTH="10" ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\displaystyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="220" HEIGHT="58" ALIGN="MIDDLE" BORDER="0"
+ SRC="img3.gif"
+ ALT="$\displaystyle \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+\exp \left( u \ln u + \lambda u \right ) du$">&nbsp; &nbsp;for <IMG
+ WIDTH="40" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img4.gif"
+ ALT="$\displaystyle c \geq 0$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(1)</TD></TR>
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="13" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
+ SRC="img5.gif"
+ ALT="$\displaystyle \lambda$"></TD>
+<TD WIDTH="10" ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\displaystyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="185" HEIGHT="51" ALIGN="MIDDLE" BORDER="0"
+ SRC="img6.gif"
+ ALT="$\displaystyle \frac{\epsilon -\bar{\epsilon} }{\xi}
+- \gamma' - \beta^2 - \ln \frac{\xi} {E_{\rm max}}$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(2)</TD></TR>
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="13" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img7.gif"
+ ALT="$\displaystyle \gamma$"></TD>
+<TD WIDTH="10" ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\displaystyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="235" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img8.gif"
+ ALT="$\displaystyle 0.577215\dots \mathrm{\hspace{5mm}(Euler's\ constant)}$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(3)</TD></TR>
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="18" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img9.gif"
+ ALT="$\displaystyle \gamma'$"></TD>
+<TD WIDTH="10" ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\displaystyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="143" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img10.gif"
+ ALT="$\displaystyle 0.422784\dots = 1 - \gamma$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(4)</TD></TR>
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="24" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img11.gif"
+ ALT="$\displaystyle \epsilon , \bar{\epsilon}$"></TD>
+<TD WIDTH="10" ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\displaystyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP>actual/average energy loss</TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(5)</TD></TR>
+</TABLE></DIV>
+<BR CLEAR="ALL"><P></P>
+
+<P>
+Since&nbsp;(<A HREF="sampleAMS.html#eqn:stress-sr">6</A>) or&nbsp;(<A HREF="sampleAMS.html#gdef">7d</A>) should hold for arbitrary
+<!-- MATH
+ $\delta\mathbf{c}$
+ -->
+<IMG
+ WIDTH="20" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
+ SRC="img12.gif"
+ ALT="$ \delta\mathbf{c}$">-vectors, it is clear that
+<!-- MATH
+ $\mathcal{N}(A) = \mathcal{R}(B)$
+ -->
+<IMG
+ WIDTH="104" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img13.gif"
+ ALT="$ \mathcal{N}(A) = \mathcal{R}(B)$"> and that when <IMG
+ WIDTH="68" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img14.gif"
+ ALT="$ y=B(x)$"> one has...
+<BR>
+...the <A NAME="tex2html4"
+ HREF="http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Pythagoras.html">Pythagorians</A> knew infinitely many solutions in integers to
+<!-- MATH
+ $a^2+b^2=c^2$
+ -->
+<IMG
+ WIDTH="88" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img15.gif"
+ ALT="$ a^2+b^2=c^2$">.
+That no non-trivial integer solutions exist for
+<!-- MATH
+ $a^n+b^n=c^n$
+ -->
+<IMG
+ WIDTH="93" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
+ SRC="img16.gif"
+ ALT="$ a^n+b^n=c^n$"> with integers <IMG
+ WIDTH="43" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img17.gif"
+ ALT="$ n&gt;2$"> has long
+been suspected (<A NAME="tex2html5"
+ HREF="http://www-groups.dcs.st-and.ac.uk/~history/HistTopics/Fermat's_last_theorem.html">Fermat, c.1637</A>). Only during the current decade has this been proved (<A NAME="tex2html6"
+ HREF="http://www.pbs.org:80/wgbh/nova/proof">Wiles, 1995</A>).
+
+<P>
+<BR>
+<DIV ALIGN="CENTER"><A NAME="eqn:stress-sr"></A>
+<!-- MATH
+ \begin{eqnarray}
+V \mathbf{\pi}^{sr} & = & \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
+ + \sum_i \sum_{j>i} \mathbf{R}_{ij} \mathbf{F}_{ij}\right> \\\nonumber
+ & = & \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
+ + \sum_{i}\sum_{j>i}\sum_\alpha\sum_\beta \mathbf{r}_{i\alpha j\beta}\mathbf{f}_{i\alpha j\beta}
+ - \sum_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right>
+\end{eqnarray}
+ -->
+
+<TABLE CELLPADDING="0" ALIGN="CENTER" WIDTH="100%">
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="40" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
+ SRC="img18.gif"
+ ALT="$\displaystyle V \mathbf{\pi}^{sr}$"></TD>
+<TD WIDTH="10" ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\displaystyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="233" HEIGHT="63" ALIGN="MIDDLE" BORDER="0"
+ SRC="img19.gif"
+ ALT="$\displaystyle \left&lt; \sum_i M_i \mathbf{V}_i \mathbf{V}_i
++ \sum_i \sum_{j&gt;i} \mathbf{R}_{ij} \mathbf{F}_{ij}\right&gt;$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(6)</TD></TR>
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT">&nbsp;</TD>
+<TD WIDTH="10" ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\displaystyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="418" HEIGHT="63" ALIGN="MIDDLE" BORDER="0"
+ SRC="img20.gif"
+ ALT="$\displaystyle \left&lt; \sum_i M_i \mathbf{V}_i \mathbf{V}_i
++ \sum_{i}\sum_{j&gt;i}\...
+... j\beta}
+- \sum_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right&gt;$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+&nbsp;</TD></TR>
+</TABLE></DIV>
+<BR CLEAR="ALL"><P></P>
+
+<P>
+
+<DIV ALIGN="CENTER"><A NAME="bgdefs"></A><A NAME="bdef"></A><A NAME="b0def"></A><A NAME="budef"></A><A NAME="gdef"></A>
+<!-- MATH
+ \begin{subequations}
+\begin{align} B_{ij}^\alpha & =
+\left(B_{ij}^\alpha\right)_0 + \left(B_{ij}^\alpha\right)_a\\
+ \left(B_{ij}^\alpha\right)_0 & = \frac{1}{2}\left(\frac{\d N_i^\alpha}{\d X_j}
+ + \frac{\d N_j^\alpha} {\d X_i} \right)\\
+ \left(B_{ij}^\alpha\right)_a & = H_{ij}^{\alpha \beta} a^\beta\\
+ H_{ij}^{\alpha \beta} & =
+ \frac{1}{2}\left( \frac{\d N_k^\alpha}{\d X_i} \frac{\d N_k^\beta}{\d X_j}
+ + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right)\end{align}
+\end{subequations}
+ -->
+<TABLE CELLPADDING="0" WIDTH="100%" ALIGN="CENTER">
+<TR VALIGN="MIDDLE">
+<TD NOWRAP ALIGN="CENTER"><IMG
+ WIDTH="559" HEIGHT="159" ALIGN="BOTTOM" BORDER="0"
+ SRC="img21.gif"
+ ALT="\begin{subequations}\begin{align}B_{ij}^\alpha &amp; = \left(B_{ij}^\alpha\right)_0 ...
+...\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right)\end{align}\end{subequations}"></TD></TR>
+</TABLE></DIV>
+<BR CLEAR="ALL">
+<BR><HR>
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
+
+<UL>
+<LI><A NAME="tex2html11"
+ HREF="node1.html">About this document ...</A>
+</UL>
+<!--End of Table of Child-Links-->
+<HR>
+<!--Navigation Panel-->
+<A NAME="tex2html9"
+ HREF="node1.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif.gif"></A>
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif_gr.gif">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif_gr.gif">
+<BR>
+<B> Next:</B> <A NAME="tex2html10"
+ HREF="node1.html">About this document ...</A>
+<!--End of Navigation Panel-->
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-30</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath.tex b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath.tex
new file mode 100644
index 00000000000..26ab42edddc
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath.tex
@@ -0,0 +1,54 @@
+\documentclass[a4paper,twoside]{article}
+\usepackage{html}
+%\usepackage{amsmath}
+
+\renewcommand{\d}{\partial}\providecommand{\bm}[1]{\mathbf{#1}}
+\providecommand{\Range}{\mathcal{R}}\providecommand{\Ker}{\mathcal{N}}
+\providecommand{\Quat}{\vec{\mathbf{Q}}}
+
+\newcommand{\StAndrews}{\htmlurl{http://www-groups.dcs.st-and.ac.uk/~history}}%
+\newcommand{\Pythagorians}{\htmladdnormallink
+ {Pythagorians}{\StAndrews/Mathematicians/Pythagoras.html}}
+\newcommand{\Fermat}{\htmladdnormallink
+ {Fermat, c.1637}{\StAndrews/HistTopics/Fermat's_last_theorem.html}}
+\newcommand{\Wiles}{\htmladdnormallink
+ {Wiles, 1995}{\htmlurl{http://www.pbs.org:80/wgbh/nova/proof}}}
+
+\begin{document}
+\htmlhead[center]{section}{Math examples}
+\begin{eqnarray}
+ \phi(\lambda) & = & \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+ \exp \left( u \ln u + \lambda u \right ) du \hspace{1cm}\mbox{for } c \geq 0 \\
+ \lambda & = & \frac{\epsilon -\bar{\epsilon} }{\xi}
+ - \gamma' - \beta^2 - \ln \frac{\xi} {E_{\rm max}}\label{xiEmax} \\
+ \gamma & = & 0.577215\dots \mathrm{\hspace{5mm}(Euler's\ constant)} \\
+ \gamma' & = & 0.422784\dots = 1 - \gamma \\
+ \epsilon , \bar{\epsilon} & = & \mbox{actual/average energy loss}
+\end{eqnarray}
+
+Since~\ref{xiEmax} and \ref{eqn:stress-sr} hold for arbitrary $\delta\bm{c}$-vectors,
+it is clear that $\Ker(A) = \Range(B)$ and that when $y=B(x)$ one has...\\
+...the \Pythagorians{} knew infinitely many solutions in integers to $a^2+b^2=c^2$.
+That no non-trivial integer solutions exist for $a^n+b^n=c^n$ with integers $n>2$ has long
+been suspected (\Fermat). Only during the current decade has this been proved (\Wiles).
+
+\begin{eqnarray}\label{eqn:stress-sr}
+ V \bm{\pi}^{sr} & = & \left< \sum_i M_i \bm{V}_i \bm{V}_i
+ + \sum_i \sum_{j>i} \bm{R}_{ij} \bm{F}_{ij}\right> \\ \nonumber
+ & = & \left< \sum_i M_i \bm{V}_i \bm{V}_i
+ + \sum_{i}\sum_{j>i}\sum_\alpha\sum_\beta \bm{r}_{i\alpha j\beta}\bm{f}_{i\alpha j\beta}
+ - \sum_i \sum_\alpha \bm{p}_{i\alpha} \bm{f}_{i\alpha} \right>
+\end{eqnarray}
+\end{document}
+\begin{subequations}\label{bgdefs}
+\begin{align} B_{ij}^\alpha & =
+ \left(B_{ij}^\alpha\right)_0 + \left(B_{ij}^\alpha\right)_a \label{bdef} \\
+ \left(B_{ij}^\alpha\right)_0 & = \frac{1}{2}\left(\frac{\d N_i^\alpha}{\d X_j}
+ + \frac{\d N_j^\alpha} {\d X_i} \right) \label{b0def} \\
+ \left(B_{ij}^\alpha\right)_a & = H_{ij}^{\alpha \beta} a^\beta \label{budef} \\
+ H_{ij}^{\alpha \beta} & =
+ \frac{1}{2}\left( \frac{\d N_k^\alpha}{\d X_i} \frac{\d N_k^\beta}{\d X_j}
+ + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right) \label{gdef}
+\end{align}
+\end{subequations}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/WARNINGS b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/WARNINGS
new file mode 100644
index 00000000000..9d1d9f764ee
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/WARNINGS
@@ -0,0 +1,2 @@
+
+redefining command \d
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/images.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/images.pl
new file mode 100644
index 00000000000..a319f5c597b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/images.pl
@@ -0,0 +1,132 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate images original text with physical files.
+
+
+$key = q/displaystylefrac{epsilon-bar{epsilon}}{xi}-gamma'-beta^2-lnfrac{xi}{E_{{rm{max}};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="185" HEIGHT="51" ALIGN="MIDDLE" BORDER="0"
+ SRC="img5.gif"
+ ALT="$\displaystyle \frac{\epsilon -\bar{\epsilon} }{\xi}
+- \gamma' - \beta^2 - \ln \frac{\xi} {E_{\rm max}}$">|;
+
+$key = q/a^2+b^2=c^2;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="88" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img15.gif"
+ ALT="$a^2+b^2=c^2$">|;
+
+$key = q/n>2;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="43" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img17.gif"
+ ALT="$n&gt;2$">|;
+
+$key = q/y=B(x);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="68" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img14.gif"
+ ALT="$y=B(x)$">|;
+
+$key = q/mathcal{N}(A)=mathcal{R}(B);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="104" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img13.gif"
+ ALT="$\mathcal{N}(A) = \mathcal{R}(B)$">|;
+
+$key = q/displaystylelambda;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="13" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
+ SRC="img4.gif"
+ ALT="$\displaystyle \lambda$">|;
+
+$key = q/displaystyle0.577215dotsmathrm{hspace{5mm}(Euler'sconstant)};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="235" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img7.gif"
+ ALT="$\displaystyle 0.577215\dots \mathrm{\hspace{5mm}(Euler's\ constant)}$">|;
+
+$key = q/displaystylegamma;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="13" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img6.gif"
+ ALT="$\displaystyle \gamma$">|;
+
+$key = q/displaystylefrac{1}{2pii}int^{c+iinfty}_{c-iinfty}expleft(ulnu+lambdauright)duhspace{1cm}mbox{for}cgeq0;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="325" HEIGHT="58" ALIGN="MIDDLE" BORDER="0"
+ SRC="img3.gif"
+ ALT="$\displaystyle \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+\exp \left( u \ln u + \lambda u \right ) du \hspace{1cm}\mbox{for } c \geq 0$">|;
+
+$key = q/displaystylembox{actualslashaverageenergyloss};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="187" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img11.gif"
+ ALT="$\displaystyle \mbox{actual/average energy loss}$">|;
+
+$key = q/displaystyleleft<sum_iM_imathbf{V}_imathbf{V}_i+sum_isum_{j>i}mathbf{R}_{ij}mathbf{F}_{ij}right>;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="233" HEIGHT="63" ALIGN="MIDDLE" BORDER="0"
+ SRC="img19.gif"
+ ALT="$\displaystyle \left&lt; \sum_i M_i \mathbf{V}_i \mathbf{V}_i
++ \sum_i \sum_{j&gt;i} \mathbf{R}_{ij} \mathbf{F}_{ij}\right&gt;$">|;
+
+$key = q/displaystylegamma';MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="18" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img8.gif"
+ ALT="$\displaystyle \gamma'$">|;
+
+$key = q/a^n+b^n=c^n;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="93" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
+ SRC="img16.gif"
+ ALT="$a^n+b^n=c^n$">|;
+
+$key = q/textstyle=;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\textstyle =$">|;
+
+$key = q/displaystyleepsilon,bar{epsilon};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="24" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img10.gif"
+ ALT="$\displaystyle \epsilon , \bar{\epsilon}$">|;
+
+$key = q/displaystyleleft<sum_iM_imathbf{V}_imathbf{V}_i+sum_{i}sum_{j>i}sum_alphasum_betalphajbeta}-sum_isum_alphamathbf{p}_{ialpha}mathbf{f}_{ialpha}right>;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="418" HEIGHT="63" ALIGN="MIDDLE" BORDER="0"
+ SRC="img20.gif"
+ ALT="$\displaystyle \left&lt; \sum_i M_i \mathbf{V}_i \mathbf{V}_i
++ \sum_{i}\sum_{j&gt;i}\...
+... j\beta}
+- \sum_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right&gt;$">|;
+
+$key = q/deltamathbf{c};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="20" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
+ SRC="img12.gif"
+ ALT="$\delta\mathbf{c}$">|;
+
+$key = q/displaystyle0.422784dots=1-gamma;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="143" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img9.gif"
+ ALT="$\displaystyle 0.422784\dots = 1 - \gamma$">|;
+
+$key = q/displaystylephi(lambda);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="35" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img1.gif"
+ ALT="$\displaystyle \phi(\lambda)$">|;
+
+$key = q/displaystyleVmathbf{pi}^{sr};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="40" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
+ SRC="img18.gif"
+ ALT="$\displaystyle V \mathbf{\pi}^{sr}$">|;
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/images.tex b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/images.tex
new file mode 100644
index 00000000000..9b738e34b59
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/images.tex
@@ -0,0 +1,254 @@
+\batchmode
+\documentclass[a4paper,twoside]{article}
+
+\usepackage{html}
+
+%
+\renewcommand{\d}{\partial}%
+\providecommand{\bm}[1]{\mathbf{#1}}%
+\providecommand{\Range}{\mathcal{R}}%
+\providecommand{\Ker}{\mathcal{N}}%
+\providecommand{\Quat}{\vec{\mathbf{Q}}}
+%
+\providecommand{\StAndrews}{\htmlurl{http://www-groups.dcs.st-and.ac.uk/~history}}%%
+\providecommand{\Pythagorians}{\htmladdnormallink
+ {Pythagorians}{\htmlurl{http://www-groups.dcs.st-and.ac.uk/~history}/Mathematicians/Pythagoras.html}}%
+\providecommand{\Fermat}{\htmladdnormallink
+ {Fermat, c.1637}{\htmlurl{http://www-groups.dcs.st-and.ac.uk/~history}/HistTopics/Fermat's_last_theorem.html}}%
+\providecommand{\Wiles}{\htmladdnormallink
+ {Wiles, 1995}{\htmlurl{http://www.pbs.org:80/wgbh/nova/proof}}}
+
+\usepackage[dvips]{color}
+\pagecolor[gray]{.7}
+
+
+
+\makeatletter
+
+\makeatletter
+\count@=\the\catcode`\_ \catcode`\_=8
+\newenvironment{tex2html_wrap}{}{} \catcode`\_=\count@
+\newcommand{\renewedcommand}[1]{\expandafter\renewcommand\csname #1\endcsname}%
+\makeatother
+\let\mathon=$
+\let\mathoff=$
+\ifx\AtBeginDocument\undefined \newcommand{\AtBeginDocument}[1]{}\fi
+\newbox\sizebox
+\setlength{\hoffset}{0pt}\setlength{\voffset}{0pt}
+\addtolength{\textheight}{\footskip}\setlength{\footskip}{0pt}
+\addtolength{\textheight}{\topmargin}\setlength{\topmargin}{0pt}
+\addtolength{\textheight}{\headheight}\setlength{\headheight}{0pt}
+\addtolength{\textheight}{\headsep}\setlength{\headsep}{0pt}
+\setlength{\textwidth}{349pt}
+\newwrite\lthtmlwrite
+\makeatletter
+\let\realnormalsize=\normalsize
+\global\topskip=2sp
+\def\preveqno{}\let\real@float=\@float \let\realend@float=\end@float
+\def\@float{\let\@savefreelist\@freelist\real@float}
+\def\end@float{\realend@float\global\let\@freelist\@savefreelist}
+\let\real@dbflt=\@dbflt \let\end@dblfloat=\end@float
+\let\@largefloatcheck=\relax
+\let\if@boxedmulticols=\iftrue
+\def\@dbflt{\let\@savefreelist\@freelist\real@dbflt}
+\def\adjustnormalsize{\def\normalsize{\mathsurround=0pt \realnormalsize
+ \parindent=0pt\abovedisplayskip=0pt\belowdisplayskip=0pt}%
+ \def\phantompar{\csname par\endcsname}\normalsize}%
+\def\lthtmltypeout#1{{\let\protect\string\immediate\write\lthtmlwrite{#1}}}%
+\newcommand\lthtmlhboxmathA{\adjustnormalsize\setbox\sizebox=\hbox\bgroup\kern.05em }%
+\newcommand\lthtmlhboxmathB{\adjustnormalsize\setbox\sizebox=\hbox to\hsize\bgroup\hfill }%
+\newcommand\lthtmlvboxmathA{\adjustnormalsize\setbox\sizebox=\vbox\bgroup %
+ \let\ifinner=\iffalse }%
+\newcommand\lthtmlboxmathZ{\@next\next\@currlist{}{\def\next{\voidb@x}}%
+ \expandafter\box\next\egroup}%
+\newcommand\lthtmlmathtype[1]{\def\lthtmlmathenv{#1}}%
+\newcommand\lthtmllogmath{\lthtmltypeout{l2hSize %
+:\lthtmlmathenv:\the\ht\sizebox::\the\dp\sizebox::\the\wd\sizebox.\preveqno}}%
+\newcommand\lthtmlfigureA[1]{\let\@savefreelist\@freelist
+ \lthtmlmathtype{#1}\lthtmlvboxmathA}%
+\newcommand\lthtmlpictureA[1]{\let\@savefreelist\@freelist
+ \lthtmlmathtype{#1}\lthtmlhboxmathB}%
+\newcommand\lthtmlpictureZ[1]{\hfill\lthtmlfigureZ}%
+\newcommand\lthtmlfigureZ{\lthtmlboxmathZ\lthtmllogmath\copy\sizebox
+ \global\let\@freelist\@savefreelist}%
+\newcommand\lthtmldisplayA[1]{\lthtmlmathtype{#1}\lthtmlvboxmathA}%
+\newcommand\lthtmldisplayB[1]{\edef\preveqno{(\theequation)}%
+ \lthtmldisplayA{#1}\let\@eqnnum\relax}%
+\newcommand\lthtmldisplayZ{\lthtmlboxmathZ\lthtmllogmath\lthtmlsetmath}%
+\newcommand\lthtmlinlinemathA[1]{\lthtmlmathtype{#1}\lthtmlhboxmathA
+ \vrule height1.5ex width0pt }%
+\newcommand\lthtmlinlineA[1]{\lthtmlmathtype{#1}\lthtmlhboxmathA}%
+\newcommand\lthtmlinlineZ{\egroup\expandafter\ifdim\dp\sizebox>0pt %
+ \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetinline}
+\newcommand\lthtmlinlinemathZ{\egroup\expandafter\ifdim\dp\sizebox>0pt %
+ \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetmath}
+\newcommand\lthtmlindisplaymathZ{\egroup %
+ \centerinlinemath\lthtmllogmath\lthtmlsetmath}
+\def\lthtmlsetinline{\hbox{\vrule width.1em\kern-.05em\vtop{\vbox{%
+ \kern.1em\copy\sizebox}\ifdim\dp\sizebox>0pt\kern.1em\else\kern.3pt\fi
+ \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}}
+\def\lthtmlsetmath{\hbox{\vrule width.1em\kern-.05em\vtop{\vbox{%
+ \kern.1em\kern0.8 pt\hbox{\hglue.17em\copy\sizebox\hglue0.8 pt}}\kern.3pt%
+ \ifdim\dp\sizebox>0pt\kern.1em\fi \kern0.8 pt%
+ \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}}
+\def\centerinlinemath{%
+ \dimen1=\ifdim\ht\sizebox<\dp\sizebox \dp\sizebox\else\ht\sizebox\fi
+ \advance\dimen1by.5pt \vrule width0pt height\dimen1 depth\dimen1
+ \dp\sizebox=\dimen1\ht\sizebox=\dimen1\relax}
+
+\def\lthtmlcheckvsize{\ifdim\ht\sizebox<\vsize
+ \ifdim\wd\sizebox<\hsize\expandafter\hfill\fi \expandafter\vfill
+ \else\expandafter\vss\fi}%
+\providecommand{\selectlanguage}[1]{}%
+\makeatletter \tracingstats = 1
+
+
+\begin{document}
+\pagestyle{empty}\thispagestyle{empty}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength hsize=\the\hsize}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength vsize=\the\vsize}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength hoffset=\the\hoffset}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength voffset=\the\voffset}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength topmargin=\the\topmargin}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength topskip=\the\topskip}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength headheight=\the\headheight}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength headsep=\the\headsep}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength parskip=\the\parskip}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength oddsidemargin=\the\oddsidemargin}\lthtmltypeout{}%
+\makeatletter
+\if@twoside\lthtmltypeout{latex2htmlLength evensidemargin=\the\evensidemargin}%
+\else\lthtmltypeout{latex2htmlLength evensidemargin=\the\oddsidemargin}\fi%
+\lthtmltypeout{}%
+\makeatother
+\setcounter{page}{1}
+\onecolumn
+
+% !!! IMAGES START HERE !!!
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay173}%
+$\displaystyle \phi(\lambda)$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay174}%
+$\textstyle =$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay175}%
+$\displaystyle \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+\exp \left( u \ln u + \lambda u \right ) du \hspace{1cm}\mbox{for } c \geq 0$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay176}%
+$\displaystyle \lambda$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay178}%
+$\displaystyle \frac{\epsilon -\bar{\epsilon} }{\xi}
+- \gamma' - \beta^2 - \ln \frac{\xi} {E_{\rm max}}$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay179}%
+$\displaystyle \gamma$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay181}%
+$\displaystyle 0.577215\dots \mathrm{\hspace{5mm}(Euler's\ constant)}$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay182}%
+$\displaystyle \gamma'$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay184}%
+$\displaystyle 0.422784\dots = 1 - \gamma$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay185}%
+$\displaystyle \epsilon , \bar{\epsilon}$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay187}%
+$\displaystyle \mbox{actual/average energy loss}$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline112}%
+$\delta\mathbf{c}$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline114}%
+$\mathcal{N}(A) = \mathcal{R}(B)$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline116}%
+$y=B(x)$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline118}%
+$a^2+b^2=c^2$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline120}%
+$a^n+b^n=c^n$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline122}%
+$n>2$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay195}%
+$\displaystyle V \mathbf{\pi}^{sr}$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay197}%
+$\displaystyle \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
++ \sum_i \sum_{j>i} \mathbf{R}_{ij} \mathbf{F}_{ij}\right>$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay199}%
+$\displaystyle \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
++ \sum_{i}\sum_{j>i}\sum_\alpha\sum_\beta \mathbf{r}_{i\alpha j\beta}\mathbf{f}_{i\alpha j\beta}
+- \sum_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right>$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img1.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img1.gif
new file mode 100644
index 00000000000..5916d47b1f4
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img1.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img10.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img10.gif
new file mode 100644
index 00000000000..a001ae2b2d0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img10.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img11.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img11.gif
new file mode 100644
index 00000000000..c8903414415
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img11.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img12.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img12.gif
new file mode 100644
index 00000000000..f0b3d7892e0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img12.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img13.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img13.gif
new file mode 100644
index 00000000000..cbddfb5e467
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img13.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img14.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img14.gif
new file mode 100644
index 00000000000..7de6ffffe7c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img14.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img15.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img15.gif
new file mode 100644
index 00000000000..a23285e2c3e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img15.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img16.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img16.gif
new file mode 100644
index 00000000000..7b38866db53
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img16.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img17.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img17.gif
new file mode 100644
index 00000000000..9f0fe8adafe
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img17.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img18.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img18.gif
new file mode 100644
index 00000000000..4e486403d4a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img18.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img19.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img19.gif
new file mode 100644
index 00000000000..bd46b0c6d74
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img19.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img2.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img2.gif
new file mode 100644
index 00000000000..66f3d138c16
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img2.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img20.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img20.gif
new file mode 100644
index 00000000000..bdac13b87dc
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img20.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img3.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img3.gif
new file mode 100644
index 00000000000..6d85ba37cb6
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img3.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img4.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img4.gif
new file mode 100644
index 00000000000..a7833bf0203
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img4.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img5.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img5.gif
new file mode 100644
index 00000000000..d838ee31f40
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img5.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img6.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img6.gif
new file mode 100644
index 00000000000..a298ad3d840
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img6.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img7.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img7.gif
new file mode 100644
index 00000000000..fb09310e87e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img7.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img8.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img8.gif
new file mode 100644
index 00000000000..84c01f036ff
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img8.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img9.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img9.gif
new file mode 100644
index 00000000000..f1d22f7d60e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img9.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/index.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/index.html
new file mode 100644
index 00000000000..47104a5ce76
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/index.html
@@ -0,0 +1,235 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>sampleMath</TITLE>
+<META NAME="description" CONTENT="sampleMath">
+<META NAME="keywords" CONTENT="sampleMath">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="sampleMath.css">
+
+<LINK REL="next" HREF="node1.html">
+<LINK REL="next" HREF="node1.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html9"
+ HREF="node1.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif.gif"></A>
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif_gr.gif">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif_gr.gif">
+<BR>
+<B> Next:</B> <A NAME="tex2html10"
+ HREF="node1.html">About this document ...</A>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<P>
+<H2 ALIGN="center"><A NAME="SECTION00000000000000000000">
+Math examples</A>
+</H2>
+<BR>
+<DIV ALIGN="CENTER"><A NAME="xiEmax"></A>
+
+<!-- MATH
+ \begin{eqnarray}
+\phi(\lambda) & = & \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+ \exp \left( u \ln u + \lambda u \right ) du \hspace{1cm}\mbox{for } c \geq 0 \\
+ \lambda & = & \frac{\epsilon -\bar{\epsilon} }{\xi}
+ - \gamma' - \beta^2 - \ln \frac{\xi} {E_{\rm max}}\\
+ \gamma & = & 0.577215\dots \mathrm{\hspace{5mm}(Euler's\ constant)} \\
+ \gamma' & = & 0.422784\dots = 1 - \gamma \\
+ \epsilon , \bar{\epsilon} & = & \mbox{actual/average energy loss}
+\end{eqnarray}
+ -->
+
+<TABLE ALIGN="CENTER" CELLPADDING="0" WIDTH="100%">
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="35" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img1.gif"
+ ALT="$\displaystyle \phi(\lambda)$"></TD>
+<TD ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\textstyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="325" HEIGHT="58" ALIGN="MIDDLE" BORDER="0"
+ SRC="img3.gif"
+ ALT="$\displaystyle \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+\exp \left( u \ln u + \lambda u \right ) du \hspace{1cm}\mbox{for } c \geq 0$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(1)</TD></TR>
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="13" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
+ SRC="img4.gif"
+ ALT="$\displaystyle \lambda$"></TD>
+<TD ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\textstyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="185" HEIGHT="51" ALIGN="MIDDLE" BORDER="0"
+ SRC="img5.gif"
+ ALT="$\displaystyle \frac{\epsilon -\bar{\epsilon} }{\xi}
+- \gamma' - \beta^2 - \ln \frac{\xi} {E_{\rm max}}$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(2)</TD></TR>
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="13" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img6.gif"
+ ALT="$\displaystyle \gamma$"></TD>
+<TD ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\textstyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="235" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img7.gif"
+ ALT="$\displaystyle 0.577215\dots \mathrm{\hspace{5mm}(Euler's\ constant)}$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(3)</TD></TR>
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="18" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img8.gif"
+ ALT="$\displaystyle \gamma'$"></TD>
+<TD ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\textstyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="143" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img9.gif"
+ ALT="$\displaystyle 0.422784\dots = 1 - \gamma$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(4)</TD></TR>
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="24" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img10.gif"
+ ALT="$\displaystyle \epsilon , \bar{\epsilon}$"></TD>
+<TD ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\textstyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="187" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img11.gif"
+ ALT="$\displaystyle \mbox{actual/average energy loss}$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(5)</TD></TR>
+</TABLE></DIV>
+<BR CLEAR="ALL"><P></P>
+
+<P>
+Since&nbsp;<A HREF="sampleMath.html#xiEmax">2</A> and <A HREF="sampleMath.html#eqn:stress-sr">6</A> hold for arbitrary
+<!-- MATH
+ $\delta\mathbf{c}$
+ -->
+<IMG
+ WIDTH="20" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
+ SRC="img12.gif"
+ ALT="$\delta\mathbf{c}$">-vectors,
+it is clear that
+<!-- MATH
+ $\mathcal{N}(A) = \mathcal{R}(B)$
+ -->
+<IMG
+ WIDTH="104" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img13.gif"
+ ALT="$\mathcal{N}(A) = \mathcal{R}(B)$"> and that when <IMG
+ WIDTH="68" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img14.gif"
+ ALT="$y=B(x)$"> one has...
+<BR>
+...the <A NAME="tex2html4"
+ HREF="http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Pythagoras.html">Pythagorians</A> knew infinitely many solutions in integers to <IMG
+ WIDTH="88" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img15.gif"
+ ALT="$a^2+b^2=c^2$">.
+That no non-trivial integer solutions exist for <IMG
+ WIDTH="93" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
+ SRC="img16.gif"
+ ALT="$a^n+b^n=c^n$"> with integers <IMG
+ WIDTH="43" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img17.gif"
+ ALT="$n&gt;2$"> has long
+been suspected (<A NAME="tex2html5"
+ HREF="http://www-groups.dcs.st-and.ac.uk/~history/HistTopics/Fermat's_last_theorem.html">Fermat, c.1637</A>). Only during the current decade has this been proved (<A NAME="tex2html6"
+ HREF="http://www.pbs.org:80/wgbh/nova/proof">Wiles, 1995</A>).
+
+<P>
+<BR>
+<DIV ALIGN="CENTER"><A NAME="eqn:stress-sr"></A>
+
+<!-- MATH
+ \begin{eqnarray}
+V \mathbf{\pi}^{sr} & = & \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
+ + \sum_i \sum_{j>i} \mathbf{R}_{ij} \mathbf{F}_{ij}\right> \\\nonumber
+ & = & \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
+ + \sum_{i}\sum_{j>i}\sum_\alpha\sum_\beta \mathbf{r}_{i\alpha j\beta}\mathbf{f}_{i\alpha j\beta}
+ - \sum_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right>
+\end{eqnarray}
+ -->
+
+<TABLE ALIGN="CENTER" CELLPADDING="0" WIDTH="100%">
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="40" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
+ SRC="img18.gif"
+ ALT="$\displaystyle V \mathbf{\pi}^{sr}$"></TD>
+<TD ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\textstyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="233" HEIGHT="63" ALIGN="MIDDLE" BORDER="0"
+ SRC="img19.gif"
+ ALT="$\displaystyle \left&lt; \sum_i M_i \mathbf{V}_i \mathbf{V}_i
++ \sum_i \sum_{j&gt;i} \mathbf{R}_{ij} \mathbf{F}_{ij}\right&gt;$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(6)</TD></TR>
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT">&nbsp;</TD>
+<TD ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\textstyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="418" HEIGHT="63" ALIGN="MIDDLE" BORDER="0"
+ SRC="img20.gif"
+ ALT="$\displaystyle \left&lt; \sum_i M_i \mathbf{V}_i \mathbf{V}_i
++ \sum_{i}\sum_{j&gt;i}\...
+... j\beta}
+- \sum_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right&gt;$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+&nbsp;</TD></TR>
+</TABLE></DIV>
+<BR CLEAR="ALL"><P></P>
+<BR><HR>
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
+
+<UL>
+<LI><A NAME="tex2html11"
+ HREF="node1.html">About this document ...</A>
+</UL>
+<!--End of Table of Child-Links-->
+<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-30</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/internals.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/internals.pl
new file mode 100644
index 00000000000..129a18c5241
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/internals.pl
@@ -0,0 +1,14 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate internals original text with physical files.
+
+
+$key = q/xiEmax/;
+$ref_files{$key} = "$dir".q|sampleMath.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/eqn:stress-sr/;
+$ref_files{$key} = "$dir".q|sampleMath.html|;
+$noresave{$key} = "$nosave";
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/labels.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/labels.pl
new file mode 100644
index 00000000000..47f50cc587b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/labels.pl
@@ -0,0 +1,29 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate labels original text with physical files.
+
+
+$key = q/xiEmax/;
+$external_labels{$key} = "$URL/" . q|sampleMath.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/eqn:stress-sr/;
+$external_labels{$key} = "$URL/" . q|sampleMath.html|;
+$noresave{$key} = "$nosave";
+
+1;
+
+
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# labels from external_latex_labels array.
+
+
+$key = q/xiEmax/;
+$external_latex_labels{$key} = q|2|;
+$noresave{$key} = "$nosave";
+
+$key = q/eqn:stress-sr/;
+$external_latex_labels{$key} = q|6|;
+$noresave{$key} = "$nosave";
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/node1.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/node1.html
new file mode 100644
index 00000000000..35ab2f29258
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/node1.html
@@ -0,0 +1,72 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>About this document ...</TITLE>
+<META NAME="description" CONTENT="About this document ...">
+<META NAME="keywords" CONTENT="sampleMath">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="sampleMath.css">
+
+<LINK REL="previous" HREF="sampleMath.html">
+<LINK REL="up" HREF="sampleMath.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif_gr.gif">
+<A NAME="tex2html16"
+ HREF="sampleMath.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif.gif"></A>
+<A NAME="tex2html12"
+ HREF="sampleMath.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif.gif"></A>
+<BR>
+<B> Up:</B> <A NAME="tex2html17"
+ HREF="sampleMath.html">sampleMath</A>
+<B> Previous:</B> <A NAME="tex2html13"
+ HREF="sampleMath.html">sampleMath</A>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+
+<H1><A NAME="SECTION00010000000000000000">
+About this document ...</A>
+</H1>
+ <P>
+This document was generated using the
+<A HREF="http://www-dsed.llnl.gov/files/programs/unix/latex2html/manual/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 99.1 release (March 30, 1999)
+<P>
+Copyright &#169; 1993, 1994, 1995, 1996,
+<A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>,
+Computer Based Learning Unit, University of Leeds.
+<BR>
+Copyright &#169; 1997, 1998, 1999,
+<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>,
+Mathematics Department, Macquarie University, Sydney.
+<P>
+The command line arguments were: <BR>
+ <STRONG>latex2html</STRONG> <TT>sampleMath</TT>
+<P>
+The translation was initiated by Michel Goossens on 1999-03-30
+<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-30</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/sampleMath.css b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/sampleMath.css
new file mode 100644
index 00000000000..1993b851311
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/sampleMath.css
@@ -0,0 +1,31 @@
+
+/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */
+.MATH { font-family: "Century Schoolbook", serif; }
+.MATH I { font-family: "Century Schoolbook", serif; font-shape: italic }
+.BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold }
+
+/* implement both fixed-size and relative sizes */
+SMALL.XTINY { font-size : xx-small }
+SMALL.TINY { font-size : x-small }
+SMALL.SCRIPTSIZE { font-size : smaller }
+SMALL.FOOTNOTESIZE { font-size : small }
+SMALL.SMALL { }
+BIG.LARGE { }
+BIG.XLARGE { font-size : large }
+BIG.XXLARGE { font-size : x-large }
+BIG.HUGE { font-size : larger }
+BIG.XHUGE { font-size : xx-large }
+
+/* heading styles */
+H1 { }
+H2 { }
+H3 { }
+H4 { }
+H5 { }
+
+/* mathematics styles */
+DIV.displaymath { } /* math displays */
+TD.eqno { } /* equation-number cells */
+
+
+/* document-specific styles come next */
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/sampleMath.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/sampleMath.html
new file mode 100644
index 00000000000..47104a5ce76
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/sampleMath.html
@@ -0,0 +1,235 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>sampleMath</TITLE>
+<META NAME="description" CONTENT="sampleMath">
+<META NAME="keywords" CONTENT="sampleMath">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="sampleMath.css">
+
+<LINK REL="next" HREF="node1.html">
+<LINK REL="next" HREF="node1.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html9"
+ HREF="node1.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif.gif"></A>
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif_gr.gif">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif_gr.gif">
+<BR>
+<B> Next:</B> <A NAME="tex2html10"
+ HREF="node1.html">About this document ...</A>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<P>
+<H2 ALIGN="center"><A NAME="SECTION00000000000000000000">
+Math examples</A>
+</H2>
+<BR>
+<DIV ALIGN="CENTER"><A NAME="xiEmax"></A>
+
+<!-- MATH
+ \begin{eqnarray}
+\phi(\lambda) & = & \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+ \exp \left( u \ln u + \lambda u \right ) du \hspace{1cm}\mbox{for } c \geq 0 \\
+ \lambda & = & \frac{\epsilon -\bar{\epsilon} }{\xi}
+ - \gamma' - \beta^2 - \ln \frac{\xi} {E_{\rm max}}\\
+ \gamma & = & 0.577215\dots \mathrm{\hspace{5mm}(Euler's\ constant)} \\
+ \gamma' & = & 0.422784\dots = 1 - \gamma \\
+ \epsilon , \bar{\epsilon} & = & \mbox{actual/average energy loss}
+\end{eqnarray}
+ -->
+
+<TABLE ALIGN="CENTER" CELLPADDING="0" WIDTH="100%">
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="35" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img1.gif"
+ ALT="$\displaystyle \phi(\lambda)$"></TD>
+<TD ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\textstyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="325" HEIGHT="58" ALIGN="MIDDLE" BORDER="0"
+ SRC="img3.gif"
+ ALT="$\displaystyle \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+\exp \left( u \ln u + \lambda u \right ) du \hspace{1cm}\mbox{for } c \geq 0$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(1)</TD></TR>
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="13" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
+ SRC="img4.gif"
+ ALT="$\displaystyle \lambda$"></TD>
+<TD ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\textstyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="185" HEIGHT="51" ALIGN="MIDDLE" BORDER="0"
+ SRC="img5.gif"
+ ALT="$\displaystyle \frac{\epsilon -\bar{\epsilon} }{\xi}
+- \gamma' - \beta^2 - \ln \frac{\xi} {E_{\rm max}}$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(2)</TD></TR>
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="13" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img6.gif"
+ ALT="$\displaystyle \gamma$"></TD>
+<TD ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\textstyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="235" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img7.gif"
+ ALT="$\displaystyle 0.577215\dots \mathrm{\hspace{5mm}(Euler's\ constant)}$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(3)</TD></TR>
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="18" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img8.gif"
+ ALT="$\displaystyle \gamma'$"></TD>
+<TD ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\textstyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="143" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img9.gif"
+ ALT="$\displaystyle 0.422784\dots = 1 - \gamma$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(4)</TD></TR>
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="24" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img10.gif"
+ ALT="$\displaystyle \epsilon , \bar{\epsilon}$"></TD>
+<TD ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\textstyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="187" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img11.gif"
+ ALT="$\displaystyle \mbox{actual/average energy loss}$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(5)</TD></TR>
+</TABLE></DIV>
+<BR CLEAR="ALL"><P></P>
+
+<P>
+Since&nbsp;<A HREF="sampleMath.html#xiEmax">2</A> and <A HREF="sampleMath.html#eqn:stress-sr">6</A> hold for arbitrary
+<!-- MATH
+ $\delta\mathbf{c}$
+ -->
+<IMG
+ WIDTH="20" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
+ SRC="img12.gif"
+ ALT="$\delta\mathbf{c}$">-vectors,
+it is clear that
+<!-- MATH
+ $\mathcal{N}(A) = \mathcal{R}(B)$
+ -->
+<IMG
+ WIDTH="104" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img13.gif"
+ ALT="$\mathcal{N}(A) = \mathcal{R}(B)$"> and that when <IMG
+ WIDTH="68" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img14.gif"
+ ALT="$y=B(x)$"> one has...
+<BR>
+...the <A NAME="tex2html4"
+ HREF="http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Pythagoras.html">Pythagorians</A> knew infinitely many solutions in integers to <IMG
+ WIDTH="88" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img15.gif"
+ ALT="$a^2+b^2=c^2$">.
+That no non-trivial integer solutions exist for <IMG
+ WIDTH="93" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
+ SRC="img16.gif"
+ ALT="$a^n+b^n=c^n$"> with integers <IMG
+ WIDTH="43" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img17.gif"
+ ALT="$n&gt;2$"> has long
+been suspected (<A NAME="tex2html5"
+ HREF="http://www-groups.dcs.st-and.ac.uk/~history/HistTopics/Fermat's_last_theorem.html">Fermat, c.1637</A>). Only during the current decade has this been proved (<A NAME="tex2html6"
+ HREF="http://www.pbs.org:80/wgbh/nova/proof">Wiles, 1995</A>).
+
+<P>
+<BR>
+<DIV ALIGN="CENTER"><A NAME="eqn:stress-sr"></A>
+
+<!-- MATH
+ \begin{eqnarray}
+V \mathbf{\pi}^{sr} & = & \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
+ + \sum_i \sum_{j>i} \mathbf{R}_{ij} \mathbf{F}_{ij}\right> \\\nonumber
+ & = & \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
+ + \sum_{i}\sum_{j>i}\sum_\alpha\sum_\beta \mathbf{r}_{i\alpha j\beta}\mathbf{f}_{i\alpha j\beta}
+ - \sum_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right>
+\end{eqnarray}
+ -->
+
+<TABLE ALIGN="CENTER" CELLPADDING="0" WIDTH="100%">
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT"><IMG
+ WIDTH="40" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
+ SRC="img18.gif"
+ ALT="$\displaystyle V \mathbf{\pi}^{sr}$"></TD>
+<TD ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\textstyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="233" HEIGHT="63" ALIGN="MIDDLE" BORDER="0"
+ SRC="img19.gif"
+ ALT="$\displaystyle \left&lt; \sum_i M_i \mathbf{V}_i \mathbf{V}_i
++ \sum_i \sum_{j&gt;i} \mathbf{R}_{ij} \mathbf{F}_{ij}\right&gt;$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+(6)</TD></TR>
+<TR VALIGN="MIDDLE"><TD NOWRAP ALIGN="RIGHT">&nbsp;</TD>
+<TD ALIGN="CENTER" NOWRAP><IMG
+ WIDTH="16" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img2.gif"
+ ALT="$\textstyle =$"></TD>
+<TD ALIGN="LEFT" NOWRAP><IMG
+ WIDTH="418" HEIGHT="63" ALIGN="MIDDLE" BORDER="0"
+ SRC="img20.gif"
+ ALT="$\displaystyle \left&lt; \sum_i M_i \mathbf{V}_i \mathbf{V}_i
++ \sum_{i}\sum_{j&gt;i}\...
+... j\beta}
+- \sum_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right&gt;$"></TD>
+<TD WIDTH=10 ALIGN="RIGHT">
+&nbsp;</TD></TR>
+</TABLE></DIV>
+<BR CLEAR="ALL"><P></P>
+<BR><HR>
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
+
+<UL>
+<LI><A NAME="tex2html11"
+ HREF="node1.html">About this document ...</A>
+</UL>
+<!--End of Table of Child-Links-->
+<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-30</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages.tex b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages.tex
new file mode 100644
index 00000000000..cca8e754e57
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages.tex
@@ -0,0 +1,64 @@
+\documentclass[a4paper,twoside]{article}
+\usepackage{html}
+\usepackage{amsmath}
+
+\renewcommand{\d}{\partial}\providecommand{\bm}[1]{\mathbf{#1}}
+\providecommand{\Range}{\mathcal{R}}\providecommand{\Ker}{\mathcal{N}}
+\providecommand{\Quat}{\vec{\mathbf{Q}}}
+
+\newcommand{\StAndrews}{\url{http://www-groups.dcs.st-and.ac.uk/~history}}%
+\newcommand{\Pythagorians}{\htmladdnormallink
+ {Pythagorians}{\StAndrews/Mathematicians/Pythagoras.html}}
+\newcommand{\Fermat}{\htmladdnormallink
+ {Fermat, c.1637}{\StAndrews/HistTopics/Fermat's_last_theorem.html}}
+\newcommand{\Wiles}{\htmladdnormallink
+ {Wiles, 1995}{http://www.pbs.org:80/wgbh/nova/proof}}
+
+\begin{document}
+\htmlhead[center]{section}{Math examples}
+\begin{flushright}
+\begin{makeimage}
+\begin{eqnarray}
+ \phi(\lambda) & = & \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+ \exp \left( u \ln u + \lambda u \right ) du \hspace{1cm}\mbox{for } c \geq 0 \\
+ \lambda & = & \frac{\epsilon -\bar{\epsilon} }{\xi}
+ - \gamma' - \beta^2 - \ln \frac{\xi} {E_{\rm max}} \\
+ \gamma & = & 0.577215\dots \mathrm{\hspace{5mm}(Euler's\ constant)} \\
+ \gamma' & = & 0.422784\dots = 1 - \gamma \\
+ \epsilon , \bar{\epsilon} & = & \mbox{actual/average energy loss}
+\end{eqnarray}
+\end{makeimage}
+\end{flushright}
+
+Since~\eqref{eqn:stress-sr} or~\eqref{gdef} should hold for arbitrary $\delta\bm{c}$%
+-vectors, it is clear that $\Ker(A) = \Range(B)$ and that when $y=B(x)$ one has...\\
+...the \Pythagorians{} knew infinitely many solutions in integers to $a^2+b^2=c^2$.
+That no non-trivial integer solutions exist for $a^n+b^n=c^n$ with integers $n>2$ has long
+been suspected (\Fermat). Only during the current decade has this been proved (\Wiles).
+
+\begin{flushright}
+\begin{eqnarray}\htmlimage{}
+\label{eqn:stress-sr}
+ V \bm{\pi}^{sr} & = & \left< \sum_i M_i \bm{V}_i \bm{V}_i
+ + \sum_i \sum_{j>i} \bm{R}_{ij} \bm{F}_{ij}\right> \\ \nonumber
+ & = & \left< \sum_i M_i \bm{V}_i \bm{V}_i
+ + \sum_{i}\sum_{j>i}\sum_\alpha\sum_\beta \bm{r}_{i\alpha j\beta}\bm{f}_{i\alpha j\beta}
+ - \sum_i \sum_\alpha \bm{p}_{i\alpha} \bm{f}_{i\alpha} \right>
+\end{eqnarray}
+\end{flushright}
+
+\begin{flushright}
+\begin{subequations}\htmlimage{}
+\label{bgdefs}
+\begin{align} B_{ij}^\alpha & =
+ \left(B_{ij}^\alpha\right)_0 + \left(B_{ij}^\alpha\right)_a \label{bdef} \\
+ \left(B_{ij}^\alpha\right)_0 & = \frac{1}{2}\left(\frac{\d N_i^\alpha}{\d X_j}
+ + \frac{\d N_j^\alpha} {\d X_i} \right) \label{b0def} \\
+ \left(B_{ij}^\alpha\right)_a & = H_{ij}^{\alpha \beta} a^\beta \label{budef} \\
+ H_{ij}^{\alpha \beta} & =
+ \frac{1}{2}\left( \frac{\d N_k^\alpha}{\d X_i} \frac{\d N_k^\beta}{\d X_j}
+ + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right) \label{gdef}
+\end{align}
+\end{subequations}
+\end{flushright}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/WARNINGS b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/WARNINGS
new file mode 100644
index 00000000000..4ec77a7a5b1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/WARNINGS
@@ -0,0 +1,4 @@
+
+redefining command \d
+
+sampleMathImages.tex is newer than sampleMathImages.aux: Please rerun latex.
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/images.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/images.pl
new file mode 100644
index 00000000000..1d06c6a2144
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/images.pl
@@ -0,0 +1,66 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate images original text with physical files.
+
+
+$key = q/{makeimage}eqnarray{phi(lambda)&=&frac{1}{2pii}int^{c+iinfty}_{c-iinfty}expleft(ar{epsilon}&=&mbox{actualslashaverageenergyloss}eqnarray{{makeimage};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="474" HEIGHT="160" ALIGN="BOTTOM" BORDER="0"
+ SRC="img1.gif"
+ ALT="\begin{eqnarray}
+\phi(\lambda) &amp; = &amp; \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\in...
+...\epsilon , \bar{\epsilon} &amp; = &amp; \mbox{actual/average energy loss}
+\end{eqnarray}">|;
+
+$key = q/a^2+b^2=c^2;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="88" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img5.gif"
+ ALT="$ a^2+b^2=c^2$">|;
+
+$key = q/n>2;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="43" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img7.gif"
+ ALT="$ n&gt;2$">|;
+
+$key = q/{eqnarray}htmlimage{}Vmathbf{pi}^{sr}&=&left<sum_iM_imathbf{V}_imathbf{V}_i+sum_sum_alphamathbf{p}_{ialpha}mathbf{f}_{ialpha}right>{eqnarray};MSF=1.6;TAGS=R;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="555" HEIGHT="114" ALIGN="LEFT"
+ SRC="img8.gif"
+ ALT="\begin{eqnarray}V \mathbf{\pi}^{sr} &amp; = &amp; \left&lt; \sum_i M_i \mathbf{V}_i \mathbf...
+...m_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right&gt;
+\end{eqnarray}">|;
+
+$key = q/y=B(x);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="68" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img4.gif"
+ ALT="$ y=B(x)$">|;
+
+$key = q/a^n+b^n=c^n;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="93" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
+ SRC="img6.gif"
+ ALT="$ a^n+b^n=c^n$">|;
+
+$key = q/displaystylehtmlimage{}align{B_{ij}^alpha<col_mark>=left(B_{ij}^alpharight)_0+leX_j}+frac{{d{N_k^beta}{{d{X_i}frac{{d{N_k^alpha}{{d{X_j}right)align{;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="4" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img9.gif"
+ ALT="$\displaystyle \begin{align}B_{ij}^\alpha &amp; = \left(B_{ij}^\alpha\right)_0 + \le...
+...} + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right)\end{align}$">|;
+
+$key = q/mathcal{N}(A)=mathcal{R}(B);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="104" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img3.gif"
+ ALT="$ \mathcal{N}(A) = \mathcal{R}(B)$">|;
+
+$key = q/deltamathbf{c};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="20" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
+ SRC="img2.gif"
+ ALT="$ \delta\mathbf{c}$">|;
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/images.tex b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/images.tex
new file mode 100644
index 00000000000..f874044e50b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/images.tex
@@ -0,0 +1,213 @@
+\batchmode
+\documentclass[a4paper,twoside]{article}
+
+\usepackage{html}
+\usepackage{amsmath}
+
+%
+\renewcommand{\d}{\partial}%
+\providecommand{\bm}[1]{\mathbf{#1}}%
+\providecommand{\Range}{\mathcal{R}}%
+\providecommand{\Ker}{\mathcal{N}}%
+\providecommand{\Quat}{\vec{\mathbf{Q}}}
+%
+\providecommand{\StAndrews}{\url{http://www-groups.dcs.st-and.ac.uk/~history}}%%
+\providecommand{\Pythagorians}{\htmladdnormallink
+ {Pythagorians}{\url{http://www-groups.dcs.st-and.ac.uk/~history}/Mathematicians/Pythagoras.html}}%
+\providecommand{\Fermat}{\htmladdnormallink
+ {Fermat, c.1637}{\url{http://www-groups.dcs.st-and.ac.uk/~history}/HistTopics/Fermat's_last_theorem.html}}%
+\providecommand{\Wiles}{\htmladdnormallink
+ {Wiles, 1995}{http://www.pbs.org:80/wgbh/nova/proof}}
+
+\usepackage[dvips]{color}
+\pagecolor[gray]{.7}
+
+
+
+\makeatletter
+
+\makeatletter
+\count@=\the\catcode`\_ \catcode`\_=8
+\newenvironment{tex2html_wrap}{}{} \catcode`\_=\count@
+\newcommand{\renewedcommand}[1]{\expandafter\renewcommand\csname #1\endcsname}%
+\makeatother
+\let\mathon=$
+\let\mathoff=$
+\ifx\AtBeginDocument\undefined \newcommand{\AtBeginDocument}[1]{}\fi
+\newbox\sizebox
+\setlength{\hoffset}{0pt}\setlength{\voffset}{0pt}
+\addtolength{\textheight}{\footskip}\setlength{\footskip}{0pt}
+\addtolength{\textheight}{\topmargin}\setlength{\topmargin}{0pt}
+\addtolength{\textheight}{\headheight}\setlength{\headheight}{0pt}
+\addtolength{\textheight}{\headsep}\setlength{\headsep}{0pt}
+\setlength{\textwidth}{349pt}
+\newwrite\lthtmlwrite
+\makeatletter
+\let\realnormalsize=\normalsize
+\global\topskip=2sp
+\def\preveqno{}\let\real@float=\@float \let\realend@float=\end@float
+\def\@float{\let\@savefreelist\@freelist\real@float}
+\def\end@float{\realend@float\global\let\@freelist\@savefreelist}
+\let\real@dbflt=\@dbflt \let\end@dblfloat=\end@float
+\let\@largefloatcheck=\relax
+\let\if@boxedmulticols=\iftrue
+\def\@dbflt{\let\@savefreelist\@freelist\real@dbflt}
+\def\adjustnormalsize{\def\normalsize{\mathsurround=0pt \realnormalsize
+ \parindent=0pt\abovedisplayskip=0pt\belowdisplayskip=0pt}%
+ \def\phantompar{\csname par\endcsname}\normalsize}%
+\def\lthtmltypeout#1{{\let\protect\string\immediate\write\lthtmlwrite{#1}}}%
+\newcommand\lthtmlhboxmathA{\adjustnormalsize\setbox\sizebox=\hbox\bgroup\kern.05em }%
+\newcommand\lthtmlhboxmathB{\adjustnormalsize\setbox\sizebox=\hbox to\hsize\bgroup\hfill }%
+\newcommand\lthtmlvboxmathA{\adjustnormalsize\setbox\sizebox=\vbox\bgroup %
+ \let\ifinner=\iffalse }%
+\newcommand\lthtmlboxmathZ{\@next\next\@currlist{}{\def\next{\voidb@x}}%
+ \expandafter\box\next\egroup}%
+\newcommand\lthtmlmathtype[1]{\def\lthtmlmathenv{#1}}%
+\newcommand\lthtmllogmath{\lthtmltypeout{l2hSize %
+:\lthtmlmathenv:\the\ht\sizebox::\the\dp\sizebox::\the\wd\sizebox.\preveqno}}%
+\newcommand\lthtmlfigureA[1]{\let\@savefreelist\@freelist
+ \lthtmlmathtype{#1}\lthtmlvboxmathA}%
+\newcommand\lthtmlpictureA[1]{\let\@savefreelist\@freelist
+ \lthtmlmathtype{#1}\lthtmlhboxmathB}%
+\newcommand\lthtmlpictureZ[1]{\hfill\lthtmlfigureZ}%
+\newcommand\lthtmlfigureZ{\lthtmlboxmathZ\lthtmllogmath\copy\sizebox
+ \global\let\@freelist\@savefreelist}%
+\newcommand\lthtmldisplayA[1]{\lthtmlmathtype{#1}\lthtmlvboxmathA}%
+\newcommand\lthtmldisplayB[1]{\edef\preveqno{(\theequation)}%
+ \lthtmldisplayA{#1}\let\@eqnnum\relax}%
+\newcommand\lthtmldisplayZ{\lthtmlboxmathZ\lthtmllogmath\lthtmlsetmath}%
+\newcommand\lthtmlinlinemathA[1]{\lthtmlmathtype{#1}\lthtmlhboxmathA
+ \vrule height1.5ex width0pt }%
+\newcommand\lthtmlinlineA[1]{\lthtmlmathtype{#1}\lthtmlhboxmathA}%
+\newcommand\lthtmlinlineZ{\egroup\expandafter\ifdim\dp\sizebox>0pt %
+ \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetinline}
+\newcommand\lthtmlinlinemathZ{\egroup\expandafter\ifdim\dp\sizebox>0pt %
+ \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetmath}
+\newcommand\lthtmlindisplaymathZ{\egroup %
+ \centerinlinemath\lthtmllogmath\lthtmlsetmath}
+\def\lthtmlsetinline{\hbox{\vrule width.1em\kern-.05em\vtop{\vbox{%
+ \kern.1em\copy\sizebox}\ifdim\dp\sizebox>0pt\kern.1em\else\kern.3pt\fi
+ \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}}
+\def\lthtmlsetmath{\hbox{\vrule width.1em\kern-.05em\vtop{\vbox{%
+ \kern.1em\kern0.8 pt\hbox{\hglue.17em\copy\sizebox\hglue0.8 pt}}\kern.3pt%
+ \ifdim\dp\sizebox>0pt\kern.1em\fi \kern0.8 pt%
+ \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}}
+\def\centerinlinemath{%
+ \dimen1=\ifdim\ht\sizebox<\dp\sizebox \dp\sizebox\else\ht\sizebox\fi
+ \advance\dimen1by.5pt \vrule width0pt height\dimen1 depth\dimen1
+ \dp\sizebox=\dimen1\ht\sizebox=\dimen1\relax}
+
+\def\lthtmlcheckvsize{\ifdim\ht\sizebox<\vsize
+ \ifdim\wd\sizebox<\hsize\expandafter\hfill\fi \expandafter\vfill
+ \else\expandafter\vss\fi}%
+\providecommand{\selectlanguage}[1]{}%
+\makeatletter \tracingstats = 1
+\providecommand{\Mu}{\textrm{M}}
+\providecommand{\Nu}{\textrm{N}}
+\providecommand{\Chi}{\textrm{X}}
+\providecommand{\Zeta}{\textrm{Z}}
+\providecommand{\Alpha}{\textrm{A}}
+\providecommand{\Omicron}{\textrm{O}}
+\providecommand{\omicron}{\textrm{o}}
+\providecommand{\Rho}{\textrm{R}}
+\providecommand{\Tau}{\textrm{T}}
+\providecommand{\Epsilon}{\textrm{E}}
+\providecommand{\Eta}{\textrm{H}}
+\providecommand{\Beta}{\textrm{B}}
+\providecommand{\Iota}{\textrm{J}}
+\providecommand{\Kappa}{\textrm{K}}
+
+
+\begin{document}
+\pagestyle{empty}\thispagestyle{empty}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength hsize=\the\hsize}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength vsize=\the\vsize}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength hoffset=\the\hoffset}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength voffset=\the\voffset}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength topmargin=\the\topmargin}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength topskip=\the\topskip}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength headheight=\the\headheight}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength headsep=\the\headsep}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength parskip=\the\parskip}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength oddsidemargin=\the\oddsidemargin}\lthtmltypeout{}%
+\makeatletter
+\if@twoside\lthtmltypeout{latex2htmlLength evensidemargin=\the\evensidemargin}%
+\else\lthtmltypeout{latex2htmlLength evensidemargin=\the\oddsidemargin}\fi%
+\lthtmltypeout{}%
+\makeatother
+\setcounter{page}{1}
+\onecolumn
+
+% !!! IMAGES START HERE !!!
+
+{\newpage\clearpage
+\lthtmldisplayA{makeimage29}%
+\begin{eqnarray}
+ \phi(\lambda) & = & \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+ \exp \left( u \ln u + \lambda u \right ) du \hspace{1cm}\mbox{for } c \geq 0 \\
+ \lambda & = & \frac{\epsilon -\bar{\epsilon} }{\xi}
+ - \gamma' - \beta^2 - \ln \frac{\xi} {E_{\rm max}} \\
+ \gamma & = & 0.577215\dots \mathrm{\hspace{5mm}(Euler's\ constant)} \\
+ \gamma' & = & 0.422784\dots = 1 - \gamma \\
+ \epsilon , \bar{\epsilon} & = & \mbox{actual/average energy loss}
+\end{eqnarray}
+%
+\lthtmldisplayZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline255}%
+$ \delta\mathbf{c}$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline257}%
+$ \mathcal{N}(A) = \mathcal{R}(B)$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline259}%
+$ y=B(x)$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline261}%
+$ a^2+b^2=c^2$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline263}%
+$ a^n+b^n=c^n$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline265}%
+$ n>2$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmldisplayA{eqnarray52}%
+\begin{eqnarray}\htmlimage{}
+ V \mathbf{\pi}^{sr} & = & \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
+ + \sum_i \sum_{j>i} \mathbf{R}_{ij} \mathbf{F}_{ij}\right> \\\nonumber
+ & = & \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
+ + \sum_{i}\sum_{j>i}\sum_\alpha\sum_\beta \mathbf{r}_{i\alpha j\beta}\mathbf{f}_{i\alpha j\beta}
+ - \sum_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right>
+\end{eqnarray}%
+\lthtmldisplayZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay268}%
+$\displaystyle \htmlimage{}\begin{align} B_{ij}^\alpha & = \left(B_{ij}^\alpha\right)_0 + \left(B_{ij}^\alpha\right)_a\\ \left(B_{ij}^\alpha\right)_0 & = \frac{1}{2}\left(\frac{\d N_i^\alpha}{\d X_j} + \frac{\d N_j^\alpha} {\d X_i} \right)\\ \left(B_{ij}^\alpha\right)_a & = H_{ij}^{\alpha \beta} a^\beta\\ H_{ij}^{\alpha \beta} & = \frac{1}{2}\left( \frac{\d N_k^\alpha}{\d X_i} \frac{\d N_k^\beta}{\d X_j} + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right)\end{align}$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img1.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img1.gif
new file mode 100644
index 00000000000..8e6129a71ca
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img1.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img2.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img2.gif
new file mode 100644
index 00000000000..f0b3d7892e0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img2.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img3.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img3.gif
new file mode 100644
index 00000000000..cbddfb5e467
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img3.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img4.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img4.gif
new file mode 100644
index 00000000000..7de6ffffe7c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img4.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img5.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img5.gif
new file mode 100644
index 00000000000..a23285e2c3e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img5.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img6.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img6.gif
new file mode 100644
index 00000000000..7b38866db53
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img6.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img7.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img7.gif
new file mode 100644
index 00000000000..9f0fe8adafe
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img7.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img8.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img8.gif
new file mode 100644
index 00000000000..d2fde624eb0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img8.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img9.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img9.gif
new file mode 100644
index 00000000000..502a74b58a4
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img9.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/index.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/index.html
new file mode 100644
index 00000000000..5e482e67124
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/index.html
@@ -0,0 +1,169 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>sampleMathImages</TITLE>
+<META NAME="description" CONTENT="sampleMathImages">
+<META NAME="keywords" CONTENT="sampleMathImages">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="sampleMathImages.css">
+
+<LINK REL="next" HREF="node1.html">
+<LINK REL="next" HREF="node1.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html9"
+ HREF="node1.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif.gif"></A>
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif_gr.gif">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif_gr.gif">
+<BR>
+<B> Next:</B> <A NAME="tex2html10"
+ HREF="node1.html">About this document ...</A>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<P>
+<H2 ALIGN="center"><A NAME="SECTION00000000000000000000">
+Math examples</A>
+</H2>
+<DIV ALIGN="RIGHT">
+<IMG
+ WIDTH="474" HEIGHT="160" ALIGN="BOTTOM" BORDER="0"
+ SRC="img1.gif"
+ ALT="\begin{eqnarray}
+\phi(\lambda) &amp; = &amp; \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\in...
+...\epsilon , \bar{\epsilon} &amp; = &amp; \mbox{actual/average energy loss}
+\end{eqnarray}">
+<BR>
+
+</DIV>
+
+<P>
+Since&nbsp;(<A HREF="sampleMathImages.html#eqn:stress-sr">6</A>) or&nbsp;(<A HREF="sampleMathImages.html#gdef">7d</A>) should hold for arbitrary
+<!-- MATH
+ $\delta\mathbf{c}$
+ -->
+<IMG
+ WIDTH="20" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
+ SRC="img2.gif"
+ ALT="$ \delta\mathbf{c}$">-vectors, it is clear that
+<!-- MATH
+ $\mathcal{N}(A) = \mathcal{R}(B)$
+ -->
+<IMG
+ WIDTH="104" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img3.gif"
+ ALT="$ \mathcal{N}(A) = \mathcal{R}(B)$"> and that when <IMG
+ WIDTH="68" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img4.gif"
+ ALT="$ y=B(x)$"> one has...
+<BR>
+...the <A NAME="tex2html3"
+ HREF="http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Pythagoras.html">Pythagorians</A> knew infinitely many solutions in integers to
+<!-- MATH
+ $a^2+b^2=c^2$
+ -->
+<IMG
+ WIDTH="88" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img5.gif"
+ ALT="$ a^2+b^2=c^2$">.
+That no non-trivial integer solutions exist for
+<!-- MATH
+ $a^n+b^n=c^n$
+ -->
+<IMG
+ WIDTH="93" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
+ SRC="img6.gif"
+ ALT="$ a^n+b^n=c^n$"> with integers <IMG
+ WIDTH="43" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img7.gif"
+ ALT="$ n&gt;2$"> has long
+been suspected (<A NAME="tex2html4"
+ HREF="http://www-groups.dcs.st-and.ac.uk/~history/HistTopics/Fermat's_last_theorem.html">Fermat, c.1637</A>). Only during the current decade has this been proved (<A NAME="tex2html5"
+ HREF="http://www.pbs.org:80/wgbh/nova/proof">Wiles, 1995</A>).
+
+<P>
+<DIV ALIGN="RIGHT">
+</DIV>
+<BR>
+<DIV ALIGN="RIGHT">
+<P ALIGN="RIGHT"><A NAME="eqn:stress-sr"></A>
+<!-- MATH
+ \begin{eqnarray}
+\htmlimage{} V \mathbf{\pi}^{sr} & = & \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
++ \sum_i \sum_{j>i} \mathbf{R}_{ij} \mathbf{F}_{ij}\right> \\\nonumber
+ & = & \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
+ + \sum_{i}\sum_{j>i}\sum_\alpha\sum_\beta \mathbf{r}_{i\alpha j\beta}\mathbf{f}_{i\alpha j\beta}
+ - \sum_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right>
+\end{eqnarray}
+ -->
+<A NAME="eqn:stress-sr"></A><IMG
+ WIDTH="555" HEIGHT="114" ALIGN="LEFT"
+ SRC="img8.gif"
+ ALT="\begin{eqnarray}V \mathbf{\pi}^{sr} &amp; = &amp; \left&lt; \sum_i M_i \mathbf{V}_i \mathbf...
+...m_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right&gt;
+\end{eqnarray}">
+<BR CLEAR="ALL">
+<P>
+<BR CLEAR="ALL"></DIV><P></P>
+<DIV ALIGN="RIGHT">
+</DIV>
+
+<P>
+<DIV ALIGN="RIGHT">
+</DIV><A NAME="bgdefs"></A><A NAME="bdef"></A><A NAME="b0def"></A><A NAME="budef"></A><A NAME="gdef"></A>
+<!-- MATH
+ \begin{subequations}
+\htmlimage{}\begin{align} B_{ij}^\alpha & =
+\left(B_{ij}^\alpha\right)_0 + \left(B_{ij}^\alpha\right)_a\\
+ \left(B_{ij}^\alpha\right)_0 & = \frac{1}{2}\left(\frac{\d N_i^\alpha}{\d X_j}
+ + \frac{\d N_j^\alpha} {\d X_i} \right)\\
+ \left(B_{ij}^\alpha\right)_a & = H_{ij}^{\alpha \beta} a^\beta\\
+ H_{ij}^{\alpha \beta} & =
+ \frac{1}{2}\left( \frac{\d N_k^\alpha}{\d X_i} \frac{\d N_k^\beta}{\d X_j}
+ + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right)\end{align}
+\end{subequations}
+ -->
+<TABLE CELLPADDING="0" WIDTH="100%" ALIGN="CENTER">
+<TR VALIGN="MIDDLE">
+<TD NOWRAP ALIGN="CENTER"><IMG
+ WIDTH="4" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img9.gif"
+ ALT="$\displaystyle \begin{align}B_{ij}^\alpha &amp; = \left(B_{ij}^\alpha\right)_0 + \le...
+...} + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right)\end{align}$"></TD></TR>
+</TABLE>
+<DIV ALIGN="RIGHT">
+</DIV>
+<BR><HR>
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
+
+<UL>
+<LI><A NAME="tex2html11"
+ HREF="node1.html">About this document ...</A>
+</UL>
+<!--End of Table of Child-Links-->
+<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-30</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/internals.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/internals.pl
new file mode 100644
index 00000000000..19324793ac1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/internals.pl
@@ -0,0 +1,30 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate internals original text with physical files.
+
+
+$key = q/bdef/;
+$ref_files{$key} = "$dir".q|sampleMathImages.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/b0def/;
+$ref_files{$key} = "$dir".q|sampleMathImages.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/bgdefs/;
+$ref_files{$key} = "$dir".q|sampleMathImages.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/eqn:stress-sr/;
+$ref_files{$key} = "$dir".q|sampleMathImages.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/budef/;
+$ref_files{$key} = "$dir".q|sampleMathImages.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/gdef/;
+$ref_files{$key} = "$dir".q|sampleMathImages.html|;
+$noresave{$key} = "$nosave";
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/labels.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/labels.pl
new file mode 100644
index 00000000000..fee23dac250
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/labels.pl
@@ -0,0 +1,61 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate labels original text with physical files.
+
+
+$key = q/bdef/;
+$external_labels{$key} = "$URL/" . q|sampleMathImages.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/b0def/;
+$external_labels{$key} = "$URL/" . q|sampleMathImages.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/bgdefs/;
+$external_labels{$key} = "$URL/" . q|sampleMathImages.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/eqn:stress-sr/;
+$external_labels{$key} = "$URL/" . q|sampleMathImages.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/budef/;
+$external_labels{$key} = "$URL/" . q|sampleMathImages.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/gdef/;
+$external_labels{$key} = "$URL/" . q|sampleMathImages.html|;
+$noresave{$key} = "$nosave";
+
+1;
+
+
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# labels from external_latex_labels array.
+
+
+$key = q/bdef/;
+$external_latex_labels{$key} = q|7a|;
+$noresave{$key} = "$nosave";
+
+$key = q/b0def/;
+$external_latex_labels{$key} = q|7b|;
+$noresave{$key} = "$nosave";
+
+$key = q/bgdefs/;
+$external_latex_labels{$key} = q|7|;
+$noresave{$key} = "$nosave";
+
+$key = q/eqn:stress-sr/;
+$external_latex_labels{$key} = q|6|;
+$noresave{$key} = "$nosave";
+
+$key = q/budef/;
+$external_latex_labels{$key} = q|7c|;
+$noresave{$key} = "$nosave";
+
+$key = q/gdef/;
+$external_latex_labels{$key} = q|7d|;
+$noresave{$key} = "$nosave";
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/node1.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/node1.html
new file mode 100644
index 00000000000..44cd641eb3a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/node1.html
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>About this document ...</TITLE>
+<META NAME="description" CONTENT="About this document ...">
+<META NAME="keywords" CONTENT="sampleMathImages">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="sampleMathImages.css">
+
+<LINK REL="previous" HREF="sampleMathImages.html">
+<LINK REL="up" HREF="sampleMathImages.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif_gr.gif">
+<A NAME="tex2html16"
+ HREF="sampleMathImages.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif.gif"></A>
+<A NAME="tex2html12"
+ HREF="sampleMathImages.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif.gif"></A>
+<BR>
+<B> Up:</B> <A NAME="tex2html17"
+ HREF="sampleMathImages.html">sampleMathImages</A>
+<B> Previous:</B> <A NAME="tex2html13"
+ HREF="sampleMathImages.html">sampleMathImages</A>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+
+<H1><A NAME="SECTION00010000000000000000">
+About this document ...</A>
+</H1>
+ <P>
+This document was generated using the
+<A HREF="http://www-dsed.llnl.gov/files/programs/unix/latex2html/manual/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 99.1 release (March 30, 1999)
+<P>
+Copyright &#169; 1993, 1994, 1995, 1996,
+<A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>,
+Computer Based Learning Unit, University of Leeds.
+<BR>
+Copyright &#169; 1997, 1998, 1999,
+<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>,
+Mathematics Department, Macquarie University, Sydney.
+<P>
+The command line arguments were: <BR>
+ <STRONG>latex2html</STRONG> <TT><A NAME="tex2html6"
+ HREF="../sampleMathImages.tex">sampleMathImages.tex</A></TT>
+<P>
+The translation was initiated by Michel Goossens on 1999-03-30
+<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-30</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/sampleMathImages.css b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/sampleMathImages.css
new file mode 100644
index 00000000000..1993b851311
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/sampleMathImages.css
@@ -0,0 +1,31 @@
+
+/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */
+.MATH { font-family: "Century Schoolbook", serif; }
+.MATH I { font-family: "Century Schoolbook", serif; font-shape: italic }
+.BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold }
+
+/* implement both fixed-size and relative sizes */
+SMALL.XTINY { font-size : xx-small }
+SMALL.TINY { font-size : x-small }
+SMALL.SCRIPTSIZE { font-size : smaller }
+SMALL.FOOTNOTESIZE { font-size : small }
+SMALL.SMALL { }
+BIG.LARGE { }
+BIG.XLARGE { font-size : large }
+BIG.XXLARGE { font-size : x-large }
+BIG.HUGE { font-size : larger }
+BIG.XHUGE { font-size : xx-large }
+
+/* heading styles */
+H1 { }
+H2 { }
+H3 { }
+H4 { }
+H5 { }
+
+/* mathematics styles */
+DIV.displaymath { } /* math displays */
+TD.eqno { } /* equation-number cells */
+
+
+/* document-specific styles come next */
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/sampleMathImages.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/sampleMathImages.html
new file mode 100644
index 00000000000..5e482e67124
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/sampleMathImages.html
@@ -0,0 +1,169 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>sampleMathImages</TITLE>
+<META NAME="description" CONTENT="sampleMathImages">
+<META NAME="keywords" CONTENT="sampleMathImages">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="sampleMathImages.css">
+
+<LINK REL="next" HREF="node1.html">
+<LINK REL="next" HREF="node1.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html9"
+ HREF="node1.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif.gif"></A>
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif_gr.gif">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif_gr.gif">
+<BR>
+<B> Next:</B> <A NAME="tex2html10"
+ HREF="node1.html">About this document ...</A>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<P>
+<H2 ALIGN="center"><A NAME="SECTION00000000000000000000">
+Math examples</A>
+</H2>
+<DIV ALIGN="RIGHT">
+<IMG
+ WIDTH="474" HEIGHT="160" ALIGN="BOTTOM" BORDER="0"
+ SRC="img1.gif"
+ ALT="\begin{eqnarray}
+\phi(\lambda) &amp; = &amp; \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\in...
+...\epsilon , \bar{\epsilon} &amp; = &amp; \mbox{actual/average energy loss}
+\end{eqnarray}">
+<BR>
+
+</DIV>
+
+<P>
+Since&nbsp;(<A HREF="sampleMathImages.html#eqn:stress-sr">6</A>) or&nbsp;(<A HREF="sampleMathImages.html#gdef">7d</A>) should hold for arbitrary
+<!-- MATH
+ $\delta\mathbf{c}$
+ -->
+<IMG
+ WIDTH="20" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
+ SRC="img2.gif"
+ ALT="$ \delta\mathbf{c}$">-vectors, it is clear that
+<!-- MATH
+ $\mathcal{N}(A) = \mathcal{R}(B)$
+ -->
+<IMG
+ WIDTH="104" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img3.gif"
+ ALT="$ \mathcal{N}(A) = \mathcal{R}(B)$"> and that when <IMG
+ WIDTH="68" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img4.gif"
+ ALT="$ y=B(x)$"> one has...
+<BR>
+...the <A NAME="tex2html3"
+ HREF="http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Pythagoras.html">Pythagorians</A> knew infinitely many solutions in integers to
+<!-- MATH
+ $a^2+b^2=c^2$
+ -->
+<IMG
+ WIDTH="88" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img5.gif"
+ ALT="$ a^2+b^2=c^2$">.
+That no non-trivial integer solutions exist for
+<!-- MATH
+ $a^n+b^n=c^n$
+ -->
+<IMG
+ WIDTH="93" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
+ SRC="img6.gif"
+ ALT="$ a^n+b^n=c^n$"> with integers <IMG
+ WIDTH="43" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img7.gif"
+ ALT="$ n&gt;2$"> has long
+been suspected (<A NAME="tex2html4"
+ HREF="http://www-groups.dcs.st-and.ac.uk/~history/HistTopics/Fermat's_last_theorem.html">Fermat, c.1637</A>). Only during the current decade has this been proved (<A NAME="tex2html5"
+ HREF="http://www.pbs.org:80/wgbh/nova/proof">Wiles, 1995</A>).
+
+<P>
+<DIV ALIGN="RIGHT">
+</DIV>
+<BR>
+<DIV ALIGN="RIGHT">
+<P ALIGN="RIGHT"><A NAME="eqn:stress-sr"></A>
+<!-- MATH
+ \begin{eqnarray}
+\htmlimage{} V \mathbf{\pi}^{sr} & = & \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
++ \sum_i \sum_{j>i} \mathbf{R}_{ij} \mathbf{F}_{ij}\right> \\\nonumber
+ & = & \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
+ + \sum_{i}\sum_{j>i}\sum_\alpha\sum_\beta \mathbf{r}_{i\alpha j\beta}\mathbf{f}_{i\alpha j\beta}
+ - \sum_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right>
+\end{eqnarray}
+ -->
+<A NAME="eqn:stress-sr"></A><IMG
+ WIDTH="555" HEIGHT="114" ALIGN="LEFT"
+ SRC="img8.gif"
+ ALT="\begin{eqnarray}V \mathbf{\pi}^{sr} &amp; = &amp; \left&lt; \sum_i M_i \mathbf{V}_i \mathbf...
+...m_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right&gt;
+\end{eqnarray}">
+<BR CLEAR="ALL">
+<P>
+<BR CLEAR="ALL"></DIV><P></P>
+<DIV ALIGN="RIGHT">
+</DIV>
+
+<P>
+<DIV ALIGN="RIGHT">
+</DIV><A NAME="bgdefs"></A><A NAME="bdef"></A><A NAME="b0def"></A><A NAME="budef"></A><A NAME="gdef"></A>
+<!-- MATH
+ \begin{subequations}
+\htmlimage{}\begin{align} B_{ij}^\alpha & =
+\left(B_{ij}^\alpha\right)_0 + \left(B_{ij}^\alpha\right)_a\\
+ \left(B_{ij}^\alpha\right)_0 & = \frac{1}{2}\left(\frac{\d N_i^\alpha}{\d X_j}
+ + \frac{\d N_j^\alpha} {\d X_i} \right)\\
+ \left(B_{ij}^\alpha\right)_a & = H_{ij}^{\alpha \beta} a^\beta\\
+ H_{ij}^{\alpha \beta} & =
+ \frac{1}{2}\left( \frac{\d N_k^\alpha}{\d X_i} \frac{\d N_k^\beta}{\d X_j}
+ + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right)\end{align}
+\end{subequations}
+ -->
+<TABLE CELLPADDING="0" WIDTH="100%" ALIGN="CENTER">
+<TR VALIGN="MIDDLE">
+<TD NOWRAP ALIGN="CENTER"><IMG
+ WIDTH="4" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img9.gif"
+ ALT="$\displaystyle \begin{align}B_{ij}^\alpha &amp; = \left(B_{ij}^\alpha\right)_0 + \le...
+...} + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right)\end{align}$"></TD></TR>
+</TABLE>
+<DIV ALIGN="RIGHT">
+</DIV>
+<BR><HR>
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
+
+<UL>
+<LI><A NAME="tex2html11"
+ HREF="node1.html">About this document ...</A>
+</UL>
+<!--End of Table of Child-Links-->
+<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-30</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb.tex b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb.tex
new file mode 100644
index 00000000000..b6c61782721
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb.tex
@@ -0,0 +1,64 @@
+\documentclass[a4paper,twoside]{article}
+\usepackage{html}
+\usepackage{amsmath}
+
+\renewcommand{\d}{\partial}\providecommand{\bm}[1]{\mathbf{#1}}
+\providecommand{\Range}{\mathcal{R}}\providecommand{\Ker}{\mathcal{N}}
+\providecommand{\Quat}{\vec{\mathbf{Q}}}
+
+\newcommand{\StAndrews}{\url{http://www-groups.dcs.st-and.ac.uk/~history}}%
+\newcommand{\Pythagorians}{\htmladdnormallink
+ {Pythagorians}{\StAndrews/Mathematicians/Pythagoras.html}}
+\newcommand{\Fermat}{\htmladdnormallink
+ {Fermat, c.1637}{\StAndrews/HistTopics/Fermat's_last_theorem.html}}
+\newcommand{\Wiles}{\htmladdnormallink
+ {Wiles, 1995}{http://www.pbs.org:80/wgbh/nova/proof}}
+
+\begin{document}
+\htmlhead[center]{section}{Math examples}
+\begin{flushright}
+\begin{makeimage}
+\begin{eqnarray}
+ \phi(\lambda) & = & \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+ \exp \left( u \ln u + \lambda u \right ) du \hspace{1cm}\mbox{for } c \geq 0 \\
+ \lambda & = & \frac{\epsilon -\bar{\epsilon} }{\xi}
+ - \gamma' - \beta^2 - \ln \frac{\xi} {E_{\rm max}} \\
+ \gamma & = & 0.577215\dots \mathrm{\hspace{5mm}(Euler's\ constant)} \\
+ \gamma' & = & 0.422784\dots = 1 - \gamma \\
+ \epsilon , \bar{\epsilon} & = & \mbox{actual/average energy loss}
+\end{eqnarray}
+\end{makeimage}
+\end{flushright}
+
+Since~\eqref{eqn:stress-sr} or~\eqref{gdef} should hold for arbitrary $\delta\bm{c}$%
+-vectors, it is clear that $\Ker(A) = \Range(B)$ and that when $y=B(x)$ one has...\\
+...the \Pythagorians{} knew infinitely many solutions in integers to $a^2+b^2=c^2$.
+That no non-trivial integer solutions exist for $a^n+b^n=c^n$ with integers $n>2$ has long
+been suspected (\Fermat). Only during the current decade has this been proved (\Wiles).
+
+\begin{flushright}
+\begin{eqnarray}\htmlimage{thumbnail=.4}
+\label{eqn:stress-sr}
+ V \bm{\pi}^{sr} & = & \left< \sum_i M_i \bm{V}_i \bm{V}_i
+ + \sum_i \sum_{j>i} \bm{R}_{ij} \bm{F}_{ij}\right> \\ \nonumber
+ & = & \left< \sum_i M_i \bm{V}_i \bm{V}_i
+ + \sum_{i}\sum_{j>i}\sum_\alpha\sum_\beta \bm{r}_{i\alpha j\beta}\bm{f}_{i\alpha j\beta}
+ - \sum_i \sum_\alpha \bm{p}_{i\alpha} \bm{f}_{i\alpha} \right>
+\end{eqnarray}
+\end{flushright}
+
+\begin{flushright}
+\begin{subequations}\htmlimage{thumbnail=.3}
+\label{bgdefs}
+\begin{align} B_{ij}^\alpha & =
+ \left(B_{ij}^\alpha\right)_0 + \left(B_{ij}^\alpha\right)_a \label{bdef} \\
+ \left(B_{ij}^\alpha\right)_0 & = \frac{1}{2}\left(\frac{\d N_i^\alpha}{\d X_j}
+ + \frac{\d N_j^\alpha} {\d X_i} \right) \label{b0def} \\
+ \left(B_{ij}^\alpha\right)_a & = H_{ij}^{\alpha \beta} a^\beta \label{budef} \\
+ H_{ij}^{\alpha \beta} & =
+ \frac{1}{2}\left( \frac{\d N_k^\alpha}{\d X_i} \frac{\d N_k^\beta}{\d X_j}
+ + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right) \label{gdef}
+\end{align}
+\end{subequations}
+\end{flushright}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/Timg8.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/Timg8.gif
new file mode 100644
index 00000000000..16c30f3cfe7
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/Timg8.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/Timg9.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/Timg9.gif
new file mode 100644
index 00000000000..c5e4abd0d6a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/Timg9.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/WARNINGS b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/WARNINGS
new file mode 100644
index 00000000000..9d1d9f764ee
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/WARNINGS
@@ -0,0 +1,2 @@
+
+redefining command \d
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/images.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/images.pl
new file mode 100644
index 00000000000..ac47e21f1fb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/images.pl
@@ -0,0 +1,68 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate images original text with physical files.
+
+
+$key = q/{makeimage}eqnarray{phi(lambda)&=&frac{1}{2pii}int^{c+iinfty}_{c-iinfty}expleft(ar{epsilon}&=&mbox{actualslashaverageenergyloss}eqnarray{{makeimage};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="474" HEIGHT="160" ALIGN="BOTTOM" BORDER="0"
+ SRC="img1.gif"
+ ALT="\begin{eqnarray}
+\phi(\lambda) &amp; = &amp; \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\in...
+...\epsilon , \bar{\epsilon} &amp; = &amp; \mbox{actual/average energy loss}
+\end{eqnarray}">|;
+
+$key = q/a^2+b^2=c^2;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="88" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img5.gif"
+ ALT="$ a^2+b^2=c^2$">|;
+
+$key = q/n>2;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="43" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img7.gif"
+ ALT="$ n&gt;2$">|;
+
+$key = q/y=B(x);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="68" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img4.gif"
+ ALT="$ y=B(x)$">|;
+
+$key = q/a^n+b^n=c^n;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="93" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
+ SRC="img6.gif"
+ ALT="$ a^n+b^n=c^n$">|;
+
+$key = q/displaystylehtmlimage{thumbnail=.3}align{B_{ij}^alpha<col_mark>=left(B_{ij}^alphX_j}+frac{{d{N_k^beta}{{d{X_i}frac{{d{N_k^alpha}{{d{X_j}right)align{;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<A NAME="tex2html_wrap_indisplay268"
+ HREF="img9.gif"><IMG
+ WIDTH="1" HEIGHT="6" ALIGN="MIDDLE" BORDER="0"
+ SRC="Timg9.gif"
+ ALT="$\displaystyle \begin{align}B_{ij}^\alpha &amp; = \left(B_{ij}^\alpha\right)_0 + \le...
+...} + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right)\end{align}$"></A>|;
+
+$key = q/mathcal{N}(A)=mathcal{R}(B);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="104" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img3.gif"
+ ALT="$ \mathcal{N}(A) = \mathcal{R}(B)$">|;
+
+$key = q/{eqnarray}htmlimage{thumbnail=.4}Vmathbf{pi}^{sr}&=&left<sum_iM_imathbf{V}_imathsum_alphamathbf{p}_{ialpha}mathbf{f}_{ialpha}right>{eqnarray};MSF=1.6;TAGS=R;AAT/;
+$cached_env_img{$key} = q|<A NAME="eqnarray52"
+ HREF="img8.gif"><IMG
+ WIDTH="140" HEIGHT="29" ALIGN="LEFT"
+ SRC="Timg8.gif"
+ ALT="\begin{eqnarray}V \mathbf{\pi}^{sr} &amp; = &amp; \left&lt; \sum_i M_i \mathbf{V}_i \mathbf...
+...m_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right&gt;
+\end{eqnarray}"></A>|;
+
+$key = q/deltamathbf{c};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|<IMG
+ WIDTH="20" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
+ SRC="img2.gif"
+ ALT="$ \delta\mathbf{c}$">|;
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/images.tex b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/images.tex
new file mode 100644
index 00000000000..80070005079
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/images.tex
@@ -0,0 +1,213 @@
+\batchmode
+\documentclass[a4paper,twoside]{article}
+
+\usepackage{html}
+\usepackage{amsmath}
+
+%
+\renewcommand{\d}{\partial}%
+\providecommand{\bm}[1]{\mathbf{#1}}%
+\providecommand{\Range}{\mathcal{R}}%
+\providecommand{\Ker}{\mathcal{N}}%
+\providecommand{\Quat}{\vec{\mathbf{Q}}}
+%
+\providecommand{\StAndrews}{\url{http://www-groups.dcs.st-and.ac.uk/~history}}%%
+\providecommand{\Pythagorians}{\htmladdnormallink
+ {Pythagorians}{\url{http://www-groups.dcs.st-and.ac.uk/~history}/Mathematicians/Pythagoras.html}}%
+\providecommand{\Fermat}{\htmladdnormallink
+ {Fermat, c.1637}{\url{http://www-groups.dcs.st-and.ac.uk/~history}/HistTopics/Fermat's_last_theorem.html}}%
+\providecommand{\Wiles}{\htmladdnormallink
+ {Wiles, 1995}{http://www.pbs.org:80/wgbh/nova/proof}}
+
+\usepackage[dvips]{color}
+\pagecolor[gray]{.7}
+
+
+
+\makeatletter
+
+\makeatletter
+\count@=\the\catcode`\_ \catcode`\_=8
+\newenvironment{tex2html_wrap}{}{} \catcode`\_=\count@
+\newcommand{\renewedcommand}[1]{\expandafter\renewcommand\csname #1\endcsname}%
+\makeatother
+\let\mathon=$
+\let\mathoff=$
+\ifx\AtBeginDocument\undefined \newcommand{\AtBeginDocument}[1]{}\fi
+\newbox\sizebox
+\setlength{\hoffset}{0pt}\setlength{\voffset}{0pt}
+\addtolength{\textheight}{\footskip}\setlength{\footskip}{0pt}
+\addtolength{\textheight}{\topmargin}\setlength{\topmargin}{0pt}
+\addtolength{\textheight}{\headheight}\setlength{\headheight}{0pt}
+\addtolength{\textheight}{\headsep}\setlength{\headsep}{0pt}
+\setlength{\textwidth}{349pt}
+\newwrite\lthtmlwrite
+\makeatletter
+\let\realnormalsize=\normalsize
+\global\topskip=2sp
+\def\preveqno{}\let\real@float=\@float \let\realend@float=\end@float
+\def\@float{\let\@savefreelist\@freelist\real@float}
+\def\end@float{\realend@float\global\let\@freelist\@savefreelist}
+\let\real@dbflt=\@dbflt \let\end@dblfloat=\end@float
+\let\@largefloatcheck=\relax
+\let\if@boxedmulticols=\iftrue
+\def\@dbflt{\let\@savefreelist\@freelist\real@dbflt}
+\def\adjustnormalsize{\def\normalsize{\mathsurround=0pt \realnormalsize
+ \parindent=0pt\abovedisplayskip=0pt\belowdisplayskip=0pt}%
+ \def\phantompar{\csname par\endcsname}\normalsize}%
+\def\lthtmltypeout#1{{\let\protect\string\immediate\write\lthtmlwrite{#1}}}%
+\newcommand\lthtmlhboxmathA{\adjustnormalsize\setbox\sizebox=\hbox\bgroup\kern.05em }%
+\newcommand\lthtmlhboxmathB{\adjustnormalsize\setbox\sizebox=\hbox to\hsize\bgroup\hfill }%
+\newcommand\lthtmlvboxmathA{\adjustnormalsize\setbox\sizebox=\vbox\bgroup %
+ \let\ifinner=\iffalse }%
+\newcommand\lthtmlboxmathZ{\@next\next\@currlist{}{\def\next{\voidb@x}}%
+ \expandafter\box\next\egroup}%
+\newcommand\lthtmlmathtype[1]{\def\lthtmlmathenv{#1}}%
+\newcommand\lthtmllogmath{\lthtmltypeout{l2hSize %
+:\lthtmlmathenv:\the\ht\sizebox::\the\dp\sizebox::\the\wd\sizebox.\preveqno}}%
+\newcommand\lthtmlfigureA[1]{\let\@savefreelist\@freelist
+ \lthtmlmathtype{#1}\lthtmlvboxmathA}%
+\newcommand\lthtmlpictureA[1]{\let\@savefreelist\@freelist
+ \lthtmlmathtype{#1}\lthtmlhboxmathB}%
+\newcommand\lthtmlpictureZ[1]{\hfill\lthtmlfigureZ}%
+\newcommand\lthtmlfigureZ{\lthtmlboxmathZ\lthtmllogmath\copy\sizebox
+ \global\let\@freelist\@savefreelist}%
+\newcommand\lthtmldisplayA[1]{\lthtmlmathtype{#1}\lthtmlvboxmathA}%
+\newcommand\lthtmldisplayB[1]{\edef\preveqno{(\theequation)}%
+ \lthtmldisplayA{#1}\let\@eqnnum\relax}%
+\newcommand\lthtmldisplayZ{\lthtmlboxmathZ\lthtmllogmath\lthtmlsetmath}%
+\newcommand\lthtmlinlinemathA[1]{\lthtmlmathtype{#1}\lthtmlhboxmathA
+ \vrule height1.5ex width0pt }%
+\newcommand\lthtmlinlineA[1]{\lthtmlmathtype{#1}\lthtmlhboxmathA}%
+\newcommand\lthtmlinlineZ{\egroup\expandafter\ifdim\dp\sizebox>0pt %
+ \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetinline}
+\newcommand\lthtmlinlinemathZ{\egroup\expandafter\ifdim\dp\sizebox>0pt %
+ \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetmath}
+\newcommand\lthtmlindisplaymathZ{\egroup %
+ \centerinlinemath\lthtmllogmath\lthtmlsetmath}
+\def\lthtmlsetinline{\hbox{\vrule width.1em\kern-.05em\vtop{\vbox{%
+ \kern.1em\copy\sizebox}\ifdim\dp\sizebox>0pt\kern.1em\else\kern.3pt\fi
+ \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}}
+\def\lthtmlsetmath{\hbox{\vrule width.1em\kern-.05em\vtop{\vbox{%
+ \kern.1em\kern0.8 pt\hbox{\hglue.17em\copy\sizebox\hglue0.8 pt}}\kern.3pt%
+ \ifdim\dp\sizebox>0pt\kern.1em\fi \kern0.8 pt%
+ \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}}
+\def\centerinlinemath{%
+ \dimen1=\ifdim\ht\sizebox<\dp\sizebox \dp\sizebox\else\ht\sizebox\fi
+ \advance\dimen1by.5pt \vrule width0pt height\dimen1 depth\dimen1
+ \dp\sizebox=\dimen1\ht\sizebox=\dimen1\relax}
+
+\def\lthtmlcheckvsize{\ifdim\ht\sizebox<\vsize
+ \ifdim\wd\sizebox<\hsize\expandafter\hfill\fi \expandafter\vfill
+ \else\expandafter\vss\fi}%
+\providecommand{\selectlanguage}[1]{}%
+\makeatletter \tracingstats = 1
+\providecommand{\Mu}{\textrm{M}}
+\providecommand{\Nu}{\textrm{N}}
+\providecommand{\Chi}{\textrm{X}}
+\providecommand{\Zeta}{\textrm{Z}}
+\providecommand{\Alpha}{\textrm{A}}
+\providecommand{\Omicron}{\textrm{O}}
+\providecommand{\omicron}{\textrm{o}}
+\providecommand{\Rho}{\textrm{R}}
+\providecommand{\Tau}{\textrm{T}}
+\providecommand{\Epsilon}{\textrm{E}}
+\providecommand{\Eta}{\textrm{H}}
+\providecommand{\Beta}{\textrm{B}}
+\providecommand{\Iota}{\textrm{J}}
+\providecommand{\Kappa}{\textrm{K}}
+
+
+\begin{document}
+\pagestyle{empty}\thispagestyle{empty}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength hsize=\the\hsize}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength vsize=\the\vsize}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength hoffset=\the\hoffset}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength voffset=\the\voffset}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength topmargin=\the\topmargin}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength topskip=\the\topskip}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength headheight=\the\headheight}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength headsep=\the\headsep}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength parskip=\the\parskip}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength oddsidemargin=\the\oddsidemargin}\lthtmltypeout{}%
+\makeatletter
+\if@twoside\lthtmltypeout{latex2htmlLength evensidemargin=\the\evensidemargin}%
+\else\lthtmltypeout{latex2htmlLength evensidemargin=\the\oddsidemargin}\fi%
+\lthtmltypeout{}%
+\makeatother
+\setcounter{page}{1}
+\onecolumn
+
+% !!! IMAGES START HERE !!!
+
+{\newpage\clearpage
+\lthtmldisplayA{makeimage29}%
+\begin{eqnarray}
+ \phi(\lambda) & = & \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+ \exp \left( u \ln u + \lambda u \right ) du \hspace{1cm}\mbox{for } c \geq 0 \\
+ \lambda & = & \frac{\epsilon -\bar{\epsilon} }{\xi}
+ - \gamma' - \beta^2 - \ln \frac{\xi} {E_{\rm max}} \\
+ \gamma & = & 0.577215\dots \mathrm{\hspace{5mm}(Euler's\ constant)} \\
+ \gamma' & = & 0.422784\dots = 1 - \gamma \\
+ \epsilon , \bar{\epsilon} & = & \mbox{actual/average energy loss}
+\end{eqnarray}
+%
+\lthtmldisplayZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline255}%
+$ \delta\mathbf{c}$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline257}%
+$ \mathcal{N}(A) = \mathcal{R}(B)$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline259}%
+$ y=B(x)$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline261}%
+$ a^2+b^2=c^2$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline263}%
+$ a^n+b^n=c^n$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_inline265}%
+$ n>2$%
+\lthtmlinlinemathZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmldisplayA{eqnarray52}%
+\begin{eqnarray}\htmlimage{thumbnail=.4}
+ V \mathbf{\pi}^{sr} & = & \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
+ + \sum_i \sum_{j>i} \mathbf{R}_{ij} \mathbf{F}_{ij}\right> \\\nonumber
+ & = & \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
+ + \sum_{i}\sum_{j>i}\sum_\alpha\sum_\beta \mathbf{r}_{i\alpha j\beta}\mathbf{f}_{i\alpha j\beta}
+ - \sum_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right>
+\end{eqnarray}%
+\lthtmldisplayZ
+\lthtmlcheckvsize\clearpage}
+
+{\newpage\clearpage
+\lthtmlinlinemathA{tex2html_wrap_indisplay268}%
+$\displaystyle \htmlimage{thumbnail=.3}\begin{align} B_{ij}^\alpha & = \left(B_{ij}^\alpha\right)_0 + \left(B_{ij}^\alpha\right)_a\\ \left(B_{ij}^\alpha\right)_0 & = \frac{1}{2}\left(\frac{\d N_i^\alpha}{\d X_j} + \frac{\d N_j^\alpha} {\d X_i} \right)\\ \left(B_{ij}^\alpha\right)_a & = H_{ij}^{\alpha \beta} a^\beta\\ H_{ij}^{\alpha \beta} & = \frac{1}{2}\left( \frac{\d N_k^\alpha}{\d X_i} \frac{\d N_k^\beta}{\d X_j} + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right)\end{align}$%
+\lthtmlindisplaymathZ
+\lthtmlcheckvsize\clearpage}
+
+
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img1.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img1.gif
new file mode 100644
index 00000000000..8e6129a71ca
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img1.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img2.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img2.gif
new file mode 100644
index 00000000000..f0b3d7892e0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img2.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img3.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img3.gif
new file mode 100644
index 00000000000..cbddfb5e467
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img3.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img4.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img4.gif
new file mode 100644
index 00000000000..7de6ffffe7c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img4.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img5.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img5.gif
new file mode 100644
index 00000000000..a23285e2c3e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img5.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img6.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img6.gif
new file mode 100644
index 00000000000..7b38866db53
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img6.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img7.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img7.gif
new file mode 100644
index 00000000000..9f0fe8adafe
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img7.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img8.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img8.gif
new file mode 100644
index 00000000000..90a96e7b496
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img8.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img9.gif b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img9.gif
new file mode 100644
index 00000000000..c4de29c34a1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img9.gif
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/index.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/index.html
new file mode 100644
index 00000000000..b8c1d4fd048
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/index.html
@@ -0,0 +1,171 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>sampleMathThumb</TITLE>
+<META NAME="description" CONTENT="sampleMathThumb">
+<META NAME="keywords" CONTENT="sampleMathThumb">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="sampleMathThumb.css">
+
+<LINK REL="next" HREF="node1.html">
+<LINK REL="next" HREF="node1.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html9"
+ HREF="node1.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif.gif"></A>
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif_gr.gif">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif_gr.gif">
+<BR>
+<B> Next:</B> <A NAME="tex2html10"
+ HREF="node1.html">About this document ...</A>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<P>
+<H2 ALIGN="center"><A NAME="SECTION00000000000000000000">
+Math examples</A>
+</H2>
+<DIV ALIGN="RIGHT">
+<IMG
+ WIDTH="474" HEIGHT="160" ALIGN="BOTTOM" BORDER="0"
+ SRC="img1.gif"
+ ALT="\begin{eqnarray}
+\phi(\lambda) &amp; = &amp; \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\in...
+...\epsilon , \bar{\epsilon} &amp; = &amp; \mbox{actual/average energy loss}
+\end{eqnarray}">
+<BR>
+
+</DIV>
+
+<P>
+Since&nbsp;(<A HREF="sampleMathThumb.html#eqn:stress-sr">6</A>) or&nbsp;(<A HREF="sampleMathThumb.html#gdef">7d</A>) should hold for arbitrary
+<!-- MATH
+ $\delta\mathbf{c}$
+ -->
+<IMG
+ WIDTH="20" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
+ SRC="img2.gif"
+ ALT="$ \delta\mathbf{c}$">-vectors, it is clear that
+<!-- MATH
+ $\mathcal{N}(A) = \mathcal{R}(B)$
+ -->
+<IMG
+ WIDTH="104" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img3.gif"
+ ALT="$ \mathcal{N}(A) = \mathcal{R}(B)$"> and that when <IMG
+ WIDTH="68" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img4.gif"
+ ALT="$ y=B(x)$"> one has...
+<BR>
+...the <A NAME="tex2html3"
+ HREF="http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Pythagoras.html">Pythagorians</A> knew infinitely many solutions in integers to
+<!-- MATH
+ $a^2+b^2=c^2$
+ -->
+<IMG
+ WIDTH="88" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img5.gif"
+ ALT="$ a^2+b^2=c^2$">.
+That no non-trivial integer solutions exist for
+<!-- MATH
+ $a^n+b^n=c^n$
+ -->
+<IMG
+ WIDTH="93" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
+ SRC="img6.gif"
+ ALT="$ a^n+b^n=c^n$"> with integers <IMG
+ WIDTH="43" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img7.gif"
+ ALT="$ n&gt;2$"> has long
+been suspected (<A NAME="tex2html4"
+ HREF="http://www-groups.dcs.st-and.ac.uk/~history/HistTopics/Fermat's_last_theorem.html">Fermat, c.1637</A>). Only during the current decade has this been proved (<A NAME="tex2html5"
+ HREF="http://www.pbs.org:80/wgbh/nova/proof">Wiles, 1995</A>).
+
+<P>
+<DIV ALIGN="RIGHT">
+</DIV>
+<BR>
+<DIV ALIGN="RIGHT">
+<P ALIGN="RIGHT"><A NAME="eqn:stress-sr"></A>
+<!-- MATH
+ \begin{eqnarray}
+\htmlimage{thumbnail=.4} V \mathbf{\pi}^{sr} & = & \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
++ \sum_i \sum_{j>i} \mathbf{R}_{ij} \mathbf{F}_{ij}\right> \\\nonumber
+ & = & \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
+ + \sum_{i}\sum_{j>i}\sum_\alpha\sum_\beta \mathbf{r}_{i\alpha j\beta}\mathbf{f}_{i\alpha j\beta}
+ - \sum_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right>
+\end{eqnarray}
+ -->
+<A NAME="eqn:stress-sr"></A><A NAME="eqnarray52"
+ HREF="img8.gif"><IMG
+ WIDTH="140" HEIGHT="29" ALIGN="LEFT"
+ SRC="Timg8.gif"
+ ALT="\begin{eqnarray}V \mathbf{\pi}^{sr} &amp; = &amp; \left&lt; \sum_i M_i \mathbf{V}_i \mathbf...
+...m_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right&gt;
+\end{eqnarray}"></A>
+<BR CLEAR="ALL">
+<P>
+<BR CLEAR="ALL"></DIV><P></P>
+<DIV ALIGN="RIGHT">
+</DIV>
+
+<P>
+<DIV ALIGN="RIGHT">
+</DIV><A NAME="bgdefs"></A><A NAME="bdef"></A><A NAME="b0def"></A><A NAME="budef"></A><A NAME="gdef"></A>
+<!-- MATH
+ \begin{subequations}
+\htmlimage{thumbnail=.3}\begin{align} B_{ij}^\alpha & =
+\left(B_{ij}^\alpha\right)_0 + \left(B_{ij}^\alpha\right)_a\\
+ \left(B_{ij}^\alpha\right)_0 & = \frac{1}{2}\left(\frac{\d N_i^\alpha}{\d X_j}
+ + \frac{\d N_j^\alpha} {\d X_i} \right)\\
+ \left(B_{ij}^\alpha\right)_a & = H_{ij}^{\alpha \beta} a^\beta\\
+ H_{ij}^{\alpha \beta} & =
+ \frac{1}{2}\left( \frac{\d N_k^\alpha}{\d X_i} \frac{\d N_k^\beta}{\d X_j}
+ + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right)\end{align}
+\end{subequations}
+ -->
+<TABLE CELLPADDING="0" WIDTH="100%" ALIGN="CENTER">
+<TR VALIGN="MIDDLE">
+<TD NOWRAP ALIGN="CENTER"><A NAME="tex2html_wrap_indisplay268"
+ HREF="img9.gif"><IMG
+ WIDTH="1" HEIGHT="6" ALIGN="MIDDLE" BORDER="0"
+ SRC="Timg9.gif"
+ ALT="$\displaystyle \begin{align}B_{ij}^\alpha &amp; = \left(B_{ij}^\alpha\right)_0 + \le...
+...} + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right)\end{align}$"></A></TD></TR>
+</TABLE>
+<DIV ALIGN="RIGHT">
+</DIV>
+<BR><HR>
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
+
+<UL>
+<LI><A NAME="tex2html11"
+ HREF="node1.html">About this document ...</A>
+</UL>
+<!--End of Table of Child-Links-->
+<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-30</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/internals.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/internals.pl
new file mode 100644
index 00000000000..736c0485786
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/internals.pl
@@ -0,0 +1,30 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate internals original text with physical files.
+
+
+$key = q/bdef/;
+$ref_files{$key} = "$dir".q|sampleMathThumb.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/b0def/;
+$ref_files{$key} = "$dir".q|sampleMathThumb.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/bgdefs/;
+$ref_files{$key} = "$dir".q|sampleMathThumb.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/eqn:stress-sr/;
+$ref_files{$key} = "$dir".q|sampleMathThumb.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/budef/;
+$ref_files{$key} = "$dir".q|sampleMathThumb.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/gdef/;
+$ref_files{$key} = "$dir".q|sampleMathThumb.html|;
+$noresave{$key} = "$nosave";
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/labels.pl b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/labels.pl
new file mode 100644
index 00000000000..3f2fa8c9444
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/labels.pl
@@ -0,0 +1,61 @@
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# Associate labels original text with physical files.
+
+
+$key = q/bdef/;
+$external_labels{$key} = "$URL/" . q|sampleMathThumb.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/b0def/;
+$external_labels{$key} = "$URL/" . q|sampleMathThumb.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/bgdefs/;
+$external_labels{$key} = "$URL/" . q|sampleMathThumb.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/eqn:stress-sr/;
+$external_labels{$key} = "$URL/" . q|sampleMathThumb.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/budef/;
+$external_labels{$key} = "$URL/" . q|sampleMathThumb.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/gdef/;
+$external_labels{$key} = "$URL/" . q|sampleMathThumb.html|;
+$noresave{$key} = "$nosave";
+
+1;
+
+
+# LaTeX2HTML 99.1 release (March 30, 1999)
+# labels from external_latex_labels array.
+
+
+$key = q/bdef/;
+$external_latex_labels{$key} = q|7a|;
+$noresave{$key} = "$nosave";
+
+$key = q/b0def/;
+$external_latex_labels{$key} = q|7b|;
+$noresave{$key} = "$nosave";
+
+$key = q/bgdefs/;
+$external_latex_labels{$key} = q|7|;
+$noresave{$key} = "$nosave";
+
+$key = q/eqn:stress-sr/;
+$external_latex_labels{$key} = q|6|;
+$noresave{$key} = "$nosave";
+
+$key = q/budef/;
+$external_latex_labels{$key} = q|7c|;
+$noresave{$key} = "$nosave";
+
+$key = q/gdef/;
+$external_latex_labels{$key} = q|7d|;
+$noresave{$key} = "$nosave";
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/node1.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/node1.html
new file mode 100644
index 00000000000..fa3daa64290
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/node1.html
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>About this document ...</TITLE>
+<META NAME="description" CONTENT="About this document ...">
+<META NAME="keywords" CONTENT="sampleMathThumb">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="sampleMathThumb.css">
+
+<LINK REL="previous" HREF="sampleMathThumb.html">
+<LINK REL="up" HREF="sampleMathThumb.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif_gr.gif">
+<A NAME="tex2html16"
+ HREF="sampleMathThumb.html">
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif.gif"></A>
+<A NAME="tex2html12"
+ HREF="sampleMathThumb.html">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif.gif"></A>
+<BR>
+<B> Up:</B> <A NAME="tex2html17"
+ HREF="sampleMathThumb.html">sampleMathThumb</A>
+<B> Previous:</B> <A NAME="tex2html13"
+ HREF="sampleMathThumb.html">sampleMathThumb</A>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+
+<H1><A NAME="SECTION00010000000000000000">
+About this document ...</A>
+</H1>
+ <P>
+This document was generated using the
+<A HREF="http://www-dsed.llnl.gov/files/programs/unix/latex2html/manual/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 99.1 release (March 30, 1999)
+<P>
+Copyright &#169; 1993, 1994, 1995, 1996,
+<A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>,
+Computer Based Learning Unit, University of Leeds.
+<BR>
+Copyright &#169; 1997, 1998, 1999,
+<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>,
+Mathematics Department, Macquarie University, Sydney.
+<P>
+The command line arguments were: <BR>
+ <STRONG>latex2html</STRONG> <TT><A NAME="tex2html6"
+ HREF="../sampleMathThumb.tex">sampleMathThumb.tex</A></TT>
+<P>
+The translation was initiated by Michel Goossens on 1999-03-30
+<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-30</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/sampleMathThumb.css b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/sampleMathThumb.css
new file mode 100644
index 00000000000..1993b851311
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/sampleMathThumb.css
@@ -0,0 +1,31 @@
+
+/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */
+.MATH { font-family: "Century Schoolbook", serif; }
+.MATH I { font-family: "Century Schoolbook", serif; font-shape: italic }
+.BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold }
+
+/* implement both fixed-size and relative sizes */
+SMALL.XTINY { font-size : xx-small }
+SMALL.TINY { font-size : x-small }
+SMALL.SCRIPTSIZE { font-size : smaller }
+SMALL.FOOTNOTESIZE { font-size : small }
+SMALL.SMALL { }
+BIG.LARGE { }
+BIG.XLARGE { font-size : large }
+BIG.XXLARGE { font-size : x-large }
+BIG.HUGE { font-size : larger }
+BIG.XHUGE { font-size : xx-large }
+
+/* heading styles */
+H1 { }
+H2 { }
+H3 { }
+H4 { }
+H5 { }
+
+/* mathematics styles */
+DIV.displaymath { } /* math displays */
+TD.eqno { } /* equation-number cells */
+
+
+/* document-specific styles come next */
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/sampleMathThumb.html b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/sampleMathThumb.html
new file mode 100644
index 00000000000..b8c1d4fd048
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/sampleMathThumb.html
@@ -0,0 +1,171 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
+original version by: Nikos Drakos, CBLU, University of Leeds
+* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
+* with significant contributions from:
+ Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
+<HTML>
+<HEAD>
+<TITLE>sampleMathThumb</TITLE>
+<META NAME="description" CONTENT="sampleMathThumb">
+<META NAME="keywords" CONTENT="sampleMathThumb">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+
+<LINK REL="STYLESHEET" HREF="sampleMathThumb.css">
+
+<LINK REL="next" HREF="node1.html">
+<LINK REL="next" HREF="node1.html">
+</HEAD>
+
+<BODY >
+<!--Navigation Panel-->
+<A NAME="tex2html9"
+ HREF="node1.html">
+<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/next_motif.gif"></A>
+<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/up_motif_gr.gif">
+<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
+ SRC="/afs/cern.ch/project/tex/new/latex2html/icons.gif/previous_motif_gr.gif">
+<BR>
+<B> Next:</B> <A NAME="tex2html10"
+ HREF="node1.html">About this document ...</A>
+<BR>
+<BR>
+<!--End of Navigation Panel-->
+<P>
+<H2 ALIGN="center"><A NAME="SECTION00000000000000000000">
+Math examples</A>
+</H2>
+<DIV ALIGN="RIGHT">
+<IMG
+ WIDTH="474" HEIGHT="160" ALIGN="BOTTOM" BORDER="0"
+ SRC="img1.gif"
+ ALT="\begin{eqnarray}
+\phi(\lambda) &amp; = &amp; \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\in...
+...\epsilon , \bar{\epsilon} &amp; = &amp; \mbox{actual/average energy loss}
+\end{eqnarray}">
+<BR>
+
+</DIV>
+
+<P>
+Since&nbsp;(<A HREF="sampleMathThumb.html#eqn:stress-sr">6</A>) or&nbsp;(<A HREF="sampleMathThumb.html#gdef">7d</A>) should hold for arbitrary
+<!-- MATH
+ $\delta\mathbf{c}$
+ -->
+<IMG
+ WIDTH="20" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
+ SRC="img2.gif"
+ ALT="$ \delta\mathbf{c}$">-vectors, it is clear that
+<!-- MATH
+ $\mathcal{N}(A) = \mathcal{R}(B)$
+ -->
+<IMG
+ WIDTH="104" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img3.gif"
+ ALT="$ \mathcal{N}(A) = \mathcal{R}(B)$"> and that when <IMG
+ WIDTH="68" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
+ SRC="img4.gif"
+ ALT="$ y=B(x)$"> one has...
+<BR>
+...the <A NAME="tex2html3"
+ HREF="http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Pythagoras.html">Pythagorians</A> knew infinitely many solutions in integers to
+<!-- MATH
+ $a^2+b^2=c^2$
+ -->
+<IMG
+ WIDTH="88" HEIGHT="33" ALIGN="MIDDLE" BORDER="0"
+ SRC="img5.gif"
+ ALT="$ a^2+b^2=c^2$">.
+That no non-trivial integer solutions exist for
+<!-- MATH
+ $a^n+b^n=c^n$
+ -->
+<IMG
+ WIDTH="93" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
+ SRC="img6.gif"
+ ALT="$ a^n+b^n=c^n$"> with integers <IMG
+ WIDTH="43" HEIGHT="28" ALIGN="MIDDLE" BORDER="0"
+ SRC="img7.gif"
+ ALT="$ n&gt;2$"> has long
+been suspected (<A NAME="tex2html4"
+ HREF="http://www-groups.dcs.st-and.ac.uk/~history/HistTopics/Fermat's_last_theorem.html">Fermat, c.1637</A>). Only during the current decade has this been proved (<A NAME="tex2html5"
+ HREF="http://www.pbs.org:80/wgbh/nova/proof">Wiles, 1995</A>).
+
+<P>
+<DIV ALIGN="RIGHT">
+</DIV>
+<BR>
+<DIV ALIGN="RIGHT">
+<P ALIGN="RIGHT"><A NAME="eqn:stress-sr"></A>
+<!-- MATH
+ \begin{eqnarray}
+\htmlimage{thumbnail=.4} V \mathbf{\pi}^{sr} & = & \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
++ \sum_i \sum_{j>i} \mathbf{R}_{ij} \mathbf{F}_{ij}\right> \\\nonumber
+ & = & \left< \sum_i M_i \mathbf{V}_i \mathbf{V}_i
+ + \sum_{i}\sum_{j>i}\sum_\alpha\sum_\beta \mathbf{r}_{i\alpha j\beta}\mathbf{f}_{i\alpha j\beta}
+ - \sum_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right>
+\end{eqnarray}
+ -->
+<A NAME="eqn:stress-sr"></A><A NAME="eqnarray52"
+ HREF="img8.gif"><IMG
+ WIDTH="140" HEIGHT="29" ALIGN="LEFT"
+ SRC="Timg8.gif"
+ ALT="\begin{eqnarray}V \mathbf{\pi}^{sr} &amp; = &amp; \left&lt; \sum_i M_i \mathbf{V}_i \mathbf...
+...m_i \sum_\alpha \mathbf{p}_{i\alpha} \mathbf{f}_{i\alpha} \right&gt;
+\end{eqnarray}"></A>
+<BR CLEAR="ALL">
+<P>
+<BR CLEAR="ALL"></DIV><P></P>
+<DIV ALIGN="RIGHT">
+</DIV>
+
+<P>
+<DIV ALIGN="RIGHT">
+</DIV><A NAME="bgdefs"></A><A NAME="bdef"></A><A NAME="b0def"></A><A NAME="budef"></A><A NAME="gdef"></A>
+<!-- MATH
+ \begin{subequations}
+\htmlimage{thumbnail=.3}\begin{align} B_{ij}^\alpha & =
+\left(B_{ij}^\alpha\right)_0 + \left(B_{ij}^\alpha\right)_a\\
+ \left(B_{ij}^\alpha\right)_0 & = \frac{1}{2}\left(\frac{\d N_i^\alpha}{\d X_j}
+ + \frac{\d N_j^\alpha} {\d X_i} \right)\\
+ \left(B_{ij}^\alpha\right)_a & = H_{ij}^{\alpha \beta} a^\beta\\
+ H_{ij}^{\alpha \beta} & =
+ \frac{1}{2}\left( \frac{\d N_k^\alpha}{\d X_i} \frac{\d N_k^\beta}{\d X_j}
+ + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right)\end{align}
+\end{subequations}
+ -->
+<TABLE CELLPADDING="0" WIDTH="100%" ALIGN="CENTER">
+<TR VALIGN="MIDDLE">
+<TD NOWRAP ALIGN="CENTER"><A NAME="tex2html_wrap_indisplay268"
+ HREF="img9.gif"><IMG
+ WIDTH="1" HEIGHT="6" ALIGN="MIDDLE" BORDER="0"
+ SRC="Timg9.gif"
+ ALT="$\displaystyle \begin{align}B_{ij}^\alpha &amp; = \left(B_{ij}^\alpha\right)_0 + \le...
+...} + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right)\end{align}$"></A></TD></TR>
+</TABLE>
+<DIV ALIGN="RIGHT">
+</DIV>
+<BR><HR>
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
+
+<UL>
+<LI><A NAME="tex2html11"
+ HREF="node1.html">About this document ...</A>
+</UL>
+<!--End of Table of Child-Links-->
+<BR><HR>
+<ADDRESS>
+<I>Michel Goossens</I>
+<BR><I>1999-03-30</I>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/tac2dim.eps b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/tac2dim.eps
new file mode 100644
index 00000000000..b96e3e23e90
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/ch3bis/tac2dim.eps
@@ -0,0 +1,201 @@
+%!CERNPS_include //ddtrg2/user/goossens/pawmanual/tutex21.ps
+%%BoundingBox: 0 0 582 582
+/d {lineto} def /m {moveto} def /t {translate} def
+/sw {stringwidth} def /r {rotate} def /rl {roll} def
+/rd {rlineto} def /rm {rmoveto} def /gr {grestore} def
+/lw {setlinewidth} def /sd {setdash} def
+/s {stroke} def /rgb {setrgbcolor} def
+/c {closepath} def /sf {scalefont setfont} def
+/oshow {gsave [] 0 sd true charpath stroke gr} def
+/cs {gsave dup sw pop 2 div neg 5 -1 rl 5 -1 rl t 3 -1 rl r 0 m show gr} def
+/rs {gsave dup sw pop neg 5 -1 rl 5 -1 rl t 3 -1 rl r 0 m show gr} def
+/ocs {gsave dup sw pop 2 div neg 5 -1 rl 5 -1 rl t 3 -1 rl r 0 m oshow gr} def
+/ors {gsave dup sw pop neg 5 -1 rl 5 -1 rl t 3 -1 rl r 0 m oshow gr} def
+gsave .25 .25 scale 0 0 0 rgb 0 0 translate
+ [] 0 sd 4 lw 958 212 m 1044 177 d s 1044 177 m 1146 206 d s 1044 177 m 1044 177
+ d c s 958 212 m 958 212 d c s 1146 206 m 1146 206 d c s 1060 241 m 1143 207 d s
+ 958 212 m 1057 240 d s 1146 206 m 1248 235 d s 1146 206 m 1146 219 d s 1060 241
+ m 1060 254 d s 1060 254 m 1143 220 d s 1146 219 m 1245 248 d s 1248 235 m 1248
+ 248 d s 1162 283 m 1245 249 d s 1060 254 m 1159 282 d s 1248 235 m 1350 264 d s
+ 1248 235 m 1248 340 d s 1162 283 m 1162 375 d s 1162 375 m 1245 342 d s 1248
+ 340 m 1349 370 d s 1350 264 m 1350 370 d s 1264 405 m 1349 370 d s 1162 375 m
+ 1261 404 d s 1350 264 m 1452 294 d s 1350 264 m 1350 435 d s 1264 405 m 1264
+ 470 d s 1264 470 m 1349 436 d s 1350 435 m 1449 464 d s 1452 294 m 1452 465 d s
+ 1366 500 m 1449 466 d s 1264 470 m 1366 499 d s 1452 294 m 1553 323 d s 1452
+ 294 m 1452 701 d s 1366 500 m 1366 736 d s 1366 736 m 1449 703 d s 1452 701 m
+ 1551 730 d s 1553 323 m 1553 731 d s 1468 766 m 1551 732 d s 1366 736 m 1465
+ 765 d s 1553 323 m 1655 352 d s 1553 323 m 1553 599 d s 1553 599 m 1653 628 d s
+ 1655 352 m 1655 628 d s 1570 663 m 1653 630 d s 1551 658 m 1567 663 d s 1655
+ 352 m 1757 381 d s 1655 352 m 1655 615 d s 1655 615 m 1755 644 d s 1757 381 m
+ 1757 645 d s 1672 679 m 1755 646 d s 1589 656 m 1669 679 d s 1757 381 m 1859
+ 411 d s 1757 381 m 1757 572 d s 1757 572 m 1857 601 d s 1859 411 m 1859 601 d s
+ 1774 636 m 1856 603 d s 1755 631 m 1771 636 d s 1859 411 m 1961 440 d s 1859
+ 411 m 1859 496 d s 1859 496 m 1961 525 d s 1961 440 m 1961 525 d s 1876 560 m
+ 1961 526 d s 1856 555 m 1873 560 d s 1961 440 m 2063 469 d s 1961 440 m 1961
+ 493 d s 1961 493 m 2060 521 d s 2063 469 m 2063 522 d s 1978 557 m 2063 522 d s
+ 1923 541 m 1975 556 d s 2063 469 m 2165 498 d s 2063 469 m 2063 469 d c s 2165
+ 498 m 2165 498 d c s 2080 533 m 2162 500 d s 2053 526 m 2079 533 d s 2165 498 m
+ 2267 528 d s 2165 498 m 2165 498 d c s c s 2182 563 m 2264 529 d s 2080 533 m
+ 2179 562 d s 873 246 m 958 212 d s 958 212 m 958 218 d s 873 246 m 873 253 d s
+ 873 253 m 955 219 d s 958 218 m 1057 247 d s 975 282 m 1057 249 d s 873 253 m
+ 972 281 d s 1060 254 m 1060 261 d s 975 282 m 975 295 d s 975 295 m 1057 262 d
+ s 1060 261 m 1159 289 d s 1077 325 m 1159 291 d s 975 295 m 1074 324 d s 1077
+ 325 m 1077 358 d s 1077 358 m 1159 324 d s 1179 387 m 1188 383 d s 1077 358 m
+ 1176 386 d s 1179 387 m 1179 420 d s 1179 420 m 1235 397 d s 1179 420 m 1261
+ 443 d s 1280 475 m 1280 607 d s 1280 607 m 1366 572 d s 1280 607 m 1366 631 d s
+ 1550 665 m 1560 661 d s 1586 688 m 1634 669 d s 1550 678 m 1584 687 d s 1793
+ 629 m 1873 652 d s 1876 560 m 1876 652 d s 1790 687 m 1873 654 d s 1707 663 m
+ 1787 686 d s 1895 553 m 1975 576 d s 1978 557 m 1978 576 d s 1892 611 m 1975
+ 578 d s 1873 606 m 1889 610 d s 2034 533 m 2079 546 d s 2080 533 m 2080 546 d s
+ 1994 581 m 2079 547 d s 1975 576 m 1991 581 d s 2080 533 m 2080 566 d s 1994
+ 581 m 1994 601 d s 1994 601 m 2079 566 d s 2080 566 m 2179 595 d s 2182 563 m
+ 2182 595 d s 2096 630 m 2179 597 d s 1994 601 m 2096 630 d s 787 281 m 873 246
+ d s 787 281 m 787 281 d c s 889 311 m 965 280 d s 787 281 m 889 310 d s 991 340
+ m 1048 317 d s 889 311 m 988 339 d s 991 340 m 991 353 d s 991 353 m 1067 322 d
+ s 1093 382 m 1121 371 d s 991 353 m 1090 381 d s 1179 420 m 1179 466 d s 1093
+ 382 m 1093 501 d s 1093 501 m 1176 467 d s 1179 466 m 1278 494 d s 1195 530 m
+ 1278 496 d s 1093 501 m 1192 529 d s 1280 607 m 1280 725 d s 1195 530 m 1195
+ 760 d s 1195 760 m 1278 726 d s 1280 725 m 1380 754 d s 1382 740 m 1382 754 d s
+ 1297 789 m 1380 756 d s 1195 760 m 1294 788 d s 1382 740 m 1382 754 d s 1382
+ 754 m 1484 784 d s 1484 759 m 1484 784 d s 1399 819 m 1484 784 d s 1297 789 m
+ 1396 818 d s 1705 696 m 1752 677 d s 1622 672 m 1702 695 d s 1949 588 m 1991
+ 600 d s 1909 636 m 1991 602 d s 1873 626 m 1906 635 d s 2010 632 m 2048 617 d s
+ 1956 617 m 2008 632 d s 702 316 m 787 281 d s 702 316 m 702 316 d c s 804 345 m
+ 889 311 d s 702 316 m 801 345 d s 889 311 m 889 330 d s 804 345 m 804 365 d s
+ 804 365 m 889 330 d s 889 330 m 988 359 d s 991 353 m 991 359 d s 906 394 m 988
+ 361 d s 804 365 m 905 394 d s 991 353 m 991 379 d s 906 394 m 906 414 d s 906
+ 414 m 988 380 d s 991 379 m 1090 408 d s 1007 443 m 1090 410 d s 906 414 m 1005
+ 443 d s 1007 443 m 1007 496 d s 1007 496 m 1090 462 d s 1109 525 m 1138 514 d s
+ 1007 496 m 1107 524 d s 1195 760 m 1195 793 d s 1109 525 m 1109 828 d s 1109
+ 828 m 1192 794 d s 1195 793 m 1294 821 d s 1297 789 m 1297 822 d s 1211 857 m
+ 1294 823 d s 1109 828 m 1209 856 d s 1619 691 m 1647 680 d s 1593 684 m 1616
+ 690 d s 1721 694 m 1759 679 d s 1711 691 m 1718 693 d s 1873 637 m 1889 631 d s
+ 1925 667 m 2008 633 d s 1873 652 m 1922 666 d s 616 351 m 702 316 d s 616 351 m
+ 616 351 d c s 718 380 m 801 347 d s 616 351 m 715 379 d s 718 380 m 718 400 d s
+ 718 400 m 801 366 d s 820 429 m 905 395 d s 718 400 m 817 428 d s 906 414 m 906
+ 454 d s 820 429 m 820 488 d s 820 488 m 905 454 d s 906 454 m 1005 482 d s 922
+ 518 m 1005 484 d s 820 488 m 922 518 d s 1007 496 m 1007 680 d s 922 518 m 922
+ 715 d s 922 715 m 1005 681 d s 1007 680 m 1107 709 d s 1024 744 m 1107 711 d s
+ 922 715 m 1021 743 d s 1099 713 m 1107 715 d s 1550 685 m 1616 704 d s 1619 691
+ m 1619 704 d s 1552 732 m 1619 705 d s 1647 680 m 1718 700 d s 1721 694 m 1721
+ 701 d s 1636 736 m 1718 702 d s 1581 720 m 1635 736 d s 1721 694 m 1721 951 d s
+ 1636 736 m 1636 986 d s 1636 986 m 1718 952 d s 1721 951 m 1820 979 d s 1823
+ 674 m 1823 980 d s 1737 1015 m 1820 981 d s 1636 986 m 1735 1014 d s 1839 702 m
+ 1922 668 d s 1820 697 m 1837 701 d s 531 386 m 616 351 d s 531 386 m 531 386 d
+ c s 633 415 m 715 381 d s 531 386 m 630 414 d s 718 400 m 718 400 d s 633 415 m
+ 633 435 d s 633 435 m 715 401 d s 734 464 m 817 430 d s 633 435 m 732 463 d s
+ 734 464 m 734 504 d s 734 504 m 817 470 d s 836 533 m 893 510 d s 734 504 m 834
+ 532 d s 836 533 m 836 737 d s 836 737 m 921 702 d s 938 766 m 1004 739 d s 836
+ 737 m 936 765 d s 1071 725 m 1107 735 d s 1040 775 m 1106 749 d s 967 754 m
+ 1040 775 d s 1820 710 m 1837 703 d s 445 421 m 531 386 d s 445 421 m 445 421 d
+ c s 547 450 m 630 416 d s 445 421 m 544 449 d s 547 450 m 547 457 d s 547 457 m
+ 630 423 d s 649 486 m 715 459 d s 547 457 m 646 485 d s 734 504 m 734 569 d s
+ 649 486 m 649 604 d s 649 604 m 732 570 d s 734 569 m 834 598 d s 751 633 m 834
+ 600 d s 649 604 m 748 633 d s 836 737 m 836 756 d s 751 633 m 751 791 d s 751
+ 791 m 834 758 d s 836 756 m 936 785 d s 938 766 m 938 786 d s 853 821 m 935 787
+ d s 751 791 m 850 820 d s 955 791 m 1011 768 d s 935 785 m 952 790 d s 1483 765
+ m 1547 783 d s 1550 733 m 1550 784 d s 1464 818 m 1547 785 d s 1424 807 m 1462
+ 818 d s 1566 743 m 1604 727 d s 1547 737 m 1564 742 d s 1566 743 m 1635 762 d s
+ 360 456 m 445 421 d s 445 421 m 445 434 d s 360 456 m 360 469 d s 360 469 m 445
+ 434 d s 445 434 m 544 462 d s 547 457 m 547 463 d s 461 498 m 544 464 d s 360
+ 469 m 461 498 d s 547 457 m 547 463 d s 547 463 m 646 492 d s 563 527 m 646 494
+ d s 461 498 m 561 526 d s 649 604 m 649 1380 d s 563 527 m 563 1415 d s 563
+ 1415 m 646 1381 d s 649 1380 m 748 1409 d s 751 791 m 751 1410 d s 665 1444 m
+ 748 1411 d s 563 1415 m 663 1444 d s 751 791 m 751 2192 d s 665 1444 m 665 2227
+ d s 665 2227 m 748 2193 d s 751 2192 m 850 2221 d s 853 821 m 853 2222 d s 767
+ 2256 m 850 2223 d s 665 2227 m 765 2256 d s 853 821 m 853 1643 d s 853 1643 m
+ 952 1671 d s 955 791 m 955 1672 d s 869 1707 m 952 1673 d s 850 1701 m 866 1706
+ d s 955 791 m 955 1166 d s 955 1166 m 1056 1195 d s 1057 769 m 1057 1195 d s
+ 971 1230 m 1056 1195 d s 952 1224 m 968 1229 d s 1057 769 m 1057 879 d s 1057
+ 879 m 1156 908 d s 1159 842 m 1159 908 d s 1073 943 m 1156 909 d s 1056 938 m
+ 1073 943 d s 1159 842 m 1159 875 d s 1159 875 m 1258 904 d s 1261 837 m 1261
+ 905 d s 1175 940 m 1258 906 d s 1120 924 m 1172 939 d s 1261 837 m 1261 1253 d
+ s 1175 940 m 1175 1288 d s 1175 1288 m 1258 1254 d s 1261 1253 m 1360 1282 d s
+ 1362 808 m 1362 1283 d s 1277 1317 m 1360 1284 d s 1175 1288 m 1274 1317 d s
+ 1362 808 m 1362 1033 d s 1362 1033 m 1462 1061 d s 1464 818 m 1464 1062 d s
+ 1379 1097 m 1462 1063 d s 1360 1091 m 1376 1096 d s 1547 750 m 1564 744 d s
+ 1583 807 m 1635 785 d s 1528 791 m 1580 806 d s 274 490 m 360 456 d s 274 490 m
+ 274 490 d c s 376 520 m 442 493 d s 274 490 m 373 519 d s 461 498 m 461 531 d s
+ 376 520 m 376 566 d s 376 566 m 461 531 d s 461 531 m 561 559 d s 478 595 m 561
+ 561 d s 376 566 m 478 595 d s 544 568 m 561 573 d s 1583 807 m 1583 807 d c s
+ 1497 841 m 1580 808 d s 1461 831 m 1495 841 d s 188 525 m 274 490 d s 274 490 m
+ 274 517 d s s 188 552 m 271 518 d s 274 517 m 373 545 d s 290 581 m 373 547 d s
+ 188 552 m 288 580 d s 376 566 m 376 763 d s 290 581 m 290 798 d s 290 798 m 373
+ 764 d s 376 763 m 478 792 d s 478 595 m 478 792 d s 392 827 m 477 793 d s 290
+ 798 m 390 826 d s 494 613 m 563 585 d s 477 608 m 492 612 d s 494 613 m 563 633
+ d s 1461 856 m 1494 843 d s 1044 177 m 2267 528 d s 1146 174 m 1146 206 d s
+ 1248 219 m 1248 235 d s 1350 233 m 1350 264 d s 1452 278 m 1452 294 d s 1553
+ 291 m 1553 323 d s 1655 336 m 1655 352 d s 1757 350 m 1757 381 d s 1859 395 m
+ 1859 411 d s 1961 408 m 1961 440 d s 2063 453 m 2063 469 d s 2165 467 m 2165
+ 498 d s 1146 174 m 1146 206 d s 1044 161 m 1044 177 d s 2165 467 m 2165 498 d s
+ 2267 512 m 2267 528 d s
+/Helvetica findfont 144 sf
+1152 71 0.00000 (4) cs
+1355 119 0.00000 (6) cs
+1559 178 0.00000 (8) cs
+1769 236 0.00000 (10) cs
+1973 295 0.00000 (12) cs
+2177 353 0.00000 (14) cs
+1044 177 m 188 525 d s 1044 145 m 1044 177 d s 958 196 m 958 212 d s 873
+ 214 m 873 246 d s 787 265 m 787 281 d s 702 284 m 702 316 d s 616 335 m 616 351
+ d s 531 354 m 531 386 d s 445 405 m 445 421 d s 360 424 m 360 456 d s 274 474 m
+ 274 490 d s 188 493 m 188 525 d s 1044 145 m 1044 177 d s 188 493 m 188 525 d s
+1036 38 0.00000 (6) cs
+865 108 0.00000 (8) cs
+686 178 0.00000 (10) cs
+515 248 0.00000 (12) cs
+343 317 0.00000 (14) cs
+172 387 0.00000 (16) cs
+188 525 m 188 2302 d 2267 2302 d 2267 528 d s 188 525 m 188 2209 d s 157
+ 525 m 188 525 d s 173 578 m 188 578 d s 173 631 m 188 631 d s 173 683 m 188 683
+ d s 173 736 m 188 736 d s 157 788 m 188 788 d s 173 841 m 188 841 d s 173 894 m
+ 188 894 d s 173 946 m 188 946 d s 173 999 m 188 999 d s 157 1051 m 188 1051 d s
+ 173 1104 m 188 1104 d s 173 1157 m 188 1157 d s 173 1209 m 188 1209 d s 173
+ 1262 m 188 1262 d s 157 1315 m 188 1315 d s 173 1367 m 188 1367 d s 173 1420 m
+ 188 1420 d s 173 1472 m 188 1472 d s 173 1525 m 188 1525 d s 157 1578 m 188
+ 1578 d s 173 1630 m 188 1630 d s 173 1683 m 188 1683 d s 173 1736 m 188 1736 d
+ s 173 1788 m 188 1788 d s 157 1841 m 188 1841 d s 173 1893 m 188 1893 d s 173
+ 1946 m 188 1946 d s 173 1999 m 188 1999 d s 173 2051 m 188 2051 d s 157 2104 m
+ 188 2104 d s 157 2104 m 188 2104 d s 173 2157 m 188 2157 d s 173 2209 m 188
+ 2209 d s
+125 504 0.00000 (0) rs
+125 767 0.00000 (40) rs
+125 1030 0.00000 (80) rs
+125 1293 0.00000 (120) rs
+125 1556 0.00000 (160) rs
+125 1820 0.00000 (200) rs
+125 2083 0.00000 (240) rs
+s 188 2209 m 514 2302 d s 2044 2302 m 2264 2213 d s 1461 856 m 1634 786
+ d s 1837 703 m 2047 617 d s 188 2209 m 514 2302 d s 2044 2302 m 2264 2213 d s
+ [4 8] 0 sd 188 788 m 562 896 d s 1055 1037 m 1173 1071 d s 1360 1125 m 1410
+ 1139 d s 1412 1139 m 1726 1011 d s 1820 973 m 2264 792 d s 188 1051 m 562 1159
+ d s 951 1270 m 1410 1402 d s 1412 1403 m 2264 1055 d s 188 1315 m 663 1451 d s
+ 951 1534 m 1410 1665 d s 1412 1666 m 2264 1318 d s 188 1578 m 663 1714 d s 850
+ 1768 m 1410 1928 d s 1412 1929 m 2264 1581 d s 188 1841 m 663 1977 d s 850 2031
+ m 1410 2191 d s 1412 2192 m 2264 1844 d s 188 2104 m 880 2302 d s 1786 2302 m
+ 2264 2107 d s [] 0 sd s s s s s s s s s s s s s s s 1412 2302 m 1412 2291 d s
+ 1412 2291 m 1412 2274 d s 1412 2274 m 1412 2257 d s 1412 2257 m 1412 2240 d s
+ 1412 2240 m 1412 2223 d s 1412 2223 m 1412 2207 d s 1412 2207 m 1412 2190 d s
+ 1412 2190 m 1412 2173 d s 1412 2173 m 1412 2156 d s 1412 2156 m 1412 2139 d s
+ 1412 2139 m 1412 2122 d s 1412 2122 m 1412 2106 d s 1412 2106 m 1412 2089 d s
+ 1412 2089 m 1412 2072 d s 1412 2072 m 1412 2055 d s 1412 2055 m 1412 2038 d s
+ 1412 2038 m 1412 2021 d s 1412 2021 m 1412 2005 d s 1412 2005 m 1412 1988 d s
+ 1412 1988 m 1412 1971 d s 1412 1971 m 1412 1954 d s 1412 1954 m 1412 1937 d s
+ 1412 1937 m 1412 1920 d s 1412 1920 m 1412 1903 d s 1412 1903 m 1412 1887 d s
+ 1412 1887 m 1412 1870 d s 1412 1870 m 1412 1853 d s 1412 1853 m 1412 1836 d s
+ 1412 1836 m 1412 1819 d s 1412 1819 m 1412 1802 d s 1412 1802 m 1412 1786 d s
+ 1412 1786 m 1412 1769 d s 1412 1769 m 1412 1752 d s 1412 1752 m 1412 1735 d s
+ 1412 1735 m 1412 1718 d s 1412 1718 m 1412 1701 d s 1412 1701 m 1412 1685 d s
+ 1412 1685 m 1412 1668 d s 1412 1668 m 1412 1651 d s 1412 1651 m 1412 1634 d s
+ 1412 1634 m 1412 1617 d s 1412 1617 m 1412 1600 d s 1412 1600 m 1412 1584 d s
+ 1412 1584 m 1412 1567 d s 1412 1567 m 1412 1550 d s 1412 1550 m 1412 1533 d s
+ 1412 1533 m 1412 1516 d s 1412 1516 m 1412 1499 d s 1412 1499 m 1412 1483 d s
+ 1412 1483 m 1412 1466 d s 1412 1466 m 1412 1449 d s 1412 1449 m 1412 1432 d s
+ 1412 1432 m 1412 1415 d s 1412 1415 m 1412 1398 d s 1412 1398 m 1412 1382 d s
+ 1412 1382 m 1412 1365 d s 1412 1365 m 1412 1348 d s 1412 1348 m 1412 1331 d s
+ 1412 1331 m 1412 1314 d s 1412 1314 m 1412 1297 d s 1412 1297 m 1412 1280 d s
+ 1412 1280 m 1412 1264 d s 1412 1264 m 1412 1247 d s 1412 1247 m 1412 1230 d s
+ 1412 1230 m 1412 1213 d s 1412 1213 m 1412 1196 d s 1412 1196 m 1412 1179 d s
+ 1412 1179 m 1412 1163 d s 1412 1163 m 1412 1146 d s 1412 1146 m 1412 1129 d s
+ 1412 1129 m 1412 1112 d s 1412 1112 m 1412 1095 d s 1412 1095 m 1412 1078 d s
+showpage grestore
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/intro/lwc.eepic b/Master/texmf-doc/doc/english/latex-web-companion/intro/lwc.eepic
new file mode 100644
index 00000000000..3d2d071866a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/intro/lwc.eepic
@@ -0,0 +1,95 @@
+\setlength{\unitlength}{0.0168mm}
+%
+\renewcommand{\dashlinestretch}{30}
+\begin{picture}(7295,6901)(0,-10)
+\put(3365.750,-2735.450){\arc{8342.722}{3.8591}{5.5654}}
+\put(3401.469,-2726.357){\arc{8896.842}{3.8449}{5.5798}}
+\path(1079,4295)(2222,4295)(2222,6866)
+ (1079,6866)(1079,4295)
+\path(5651,4295)(4508,4295)(4508,6866)
+ (5651,6866)(5651,4295)
+\path(1079,5152)(2222,5152)
+\path(4508,5152)(5651,4295)
+\path(6203,4591)(7283,4591)(7283,3016)
+ (6203,3016)(6203,4591)
+\path(6203,3466)(7283,3466)
+\path(508,3152)(1365,3152)(1365,2580)
+ (508,2580)(508,3152)
+\path(1658,4276)(938,3151)
+\blacken\path(977.418,3268.244)(938.000,3151.000)(1027.955,3235.901)(977.418,3268.244)
+\path(2243,6661)(4538,6661)
+\blacken\path(4418.000,6631.000)(4538.000,6661.000)(4418.000,6691.000)(4418.000,6631.000)
+\blacken\path(2363.000,6286.000)(2243.000,6256.000)(2363.000,6226.000)(2363.000,6286.000)
+\path(2243,6256)(4538,6256)
+\path(1388,2746)(1973,2746)
+\blacken\path(1853.000,2716.000)(1973.000,2746.000)(1853.000,2776.000)(1853.000,2716.000)
+\path(2243,5941)(3458,5941)(3458,4006)(6203,4006)
+\blacken\path(6083.000,3976.000)(6203.000,4006.000)(6083.000,4036.000)(6083.000,3976.000)
+\path(1936,3152)(2794,3152)(2794,2580)
+ (1936,2580)(1936,3152)
+\path(5663,6526)(6968,6526)(6968,4591)
+\blacken\path(6938.000,4711.000)(6968.000,4591.000)(6998.000,4711.000)(6938.000,4711.000)
+\thicklines
+\dashline{60.000}(938,2566)(1478,1261)
+\blacken\thinlines
+\path(1404.397,1360.411)(1478.000,1261.000)(1459.838,1383.353)(1404.397,1360.411)
+\thicklines
+\dashline{60.000}(2378,2566)(1703,1396)
+\blacken\thinlines
+\path(1736.981,1514.934)(1703.000,1396.000)(1788.952,1484.951)(1736.981,1514.934)
+\thicklines
+\dashline{60.000}(2378,2566)(3638,1711)
+\blacken\thinlines
+\path(3521.858,1753.556)(3638.000,1711.000)(3555.548,1803.204)(3521.858,1753.556)
+\thicklines
+\dashline{60.000}(5078,4276)(5078,1396)
+\blacken\thinlines
+\path(5048.000,1516.000)(5078.000,1396.000)(5108.000,1516.000)(5048.000,1516.000)
+\thicklines
+\dashline{60.000}(6743,3016)(5303,1306)
+\blacken\thinlines
+\path(5357.349,1417.113)(5303.000,1306.000)(5403.244,1378.465)(5357.349,1417.113)
+\blacken\path(1463.000,3001.000)(1343.000,2971.000)(1463.000,2941.000)(1463.000,3001.000)
+\path(1343,2971)(1928,2971)
+\whiten\path(1073,5761)(2222,5761)(2222,6526)
+ (1793,6166)(1073,6166)(1073,5761)
+\path(1073,5761)(2222,5761)(2222,6526)
+ (1793,6166)(1073,6166)(1073,5761)
+\whiten\path(4508,5131)(5651,5131)(5651,5716)
+ (4943,5716)(4508,6391)(4508,5131)
+\path(4508,5131)(5651,5131)(5651,5716)
+ (4943,5716)(4508,6391)(4508,5131)
+\path(2222,5491)(2378,5491)(2378,3151)
+\blacken\path(2348.000,3271.000)(2378.000,3151.000)(2408.000,3271.000)(2348.000,3271.000)
+\path(1658,4276)(2378,3151)
+\blacken\path(2288.045,3235.901)(2378.000,3151.000)(2338.582,3268.244)(2288.045,3235.901)
+\blacken\path(5783.000,6286.000)(5663.000,6256.000)(5783.000,6226.000)(5783.000,6286.000)
+\path(5663,6256)(6563,6256)(6563,4591)
+\put(1163,451){\makebox(0,0)[lb]{Books}}
+\put(2783,766){\makebox(0,0)[lb]{Multimedia}}
+\put(2708,451){\makebox(0,0)[lb]{Audio-video}}
+\put(4583,766){\makebox(0,0)[lb]{Web}}
+\put(4493,451){\makebox(0,0)[lb]{Internet}}
+\put(1253,966){\makebox(0,0)[lb]{{\large\textbf{Printers}}}}
+\put(4763,1306){\makebox(0,0)[lb]{{\large\textbf{Browsers}}}}
+\put(1658,6436){\makebox(0,0)[b]{\LaTeX}}
+\put(1658,5356){\makebox(0,0)[b]{\TeX}}
+\put(1658,4591){\makebox(0,0)[b]{{\small DVI}}}
+\put(938,2791){\makebox(0,0)[b]{{\small PS}}}
+\put(2378,2791){\makebox(0,0)[b]{{\small PDF}}}
+\put(5303,4726){\makebox(0,0)[b]{{\small XSL}}}
+\put(4853,4456){\makebox(0,0)[b]{{\small CSS}}}
+\put(6743,3151){\makebox(0,0)[b]{{\small CSS}}}
+\put(3323,6751){\makebox(0,0)[b]{{\small L2X}}}
+\put(3323,6301){\makebox(0,0)[b]{{\small X2L}}}
+\put(4223,3781){\makebox(0,0)[b]{{\small L2H}}}
+\put(2608,4456){\makebox(0,0)[b]{{\small PDFTEX}}}
+\put(1253,3736){\makebox(0,0)[b]{{\small DVIPS}}}
+\put(5033,5356){\makebox(0,0)[b]{{\small DTD}}}
+\put(1658,5941){\makebox(0,0)[b]{{\small macros, styles}}}
+\put(5123,6166){\makebox(0,0)[b]{\XML}}
+\put(6743,3916){\makebox(0,0)[b]{\HTML}}
+\put(2048,3816){\makebox(0,0)[b]{{\small DVIPDF}}}
+\put(6293,6571){\makebox(0,0)[b]{{\small X2H}}}
+\put(6068,6031){\makebox(0,0)[b]{{\small H2X}}}
+\end{picture}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/intro/lwc.fig b/Master/texmf-doc/doc/english/latex-web-companion/intro/lwc.fig
new file mode 100644
index 00000000000..c656db630ff
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/intro/lwc.fig
@@ -0,0 +1,103 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+Letter
+100.00
+Single
+-2
+1200 2
+5 1 0 1 0 7 0 0 -1 0.000 0 0 0 0 4857.750 11601.450 1714 8858 4857 7429 8000 8858
+5 1 0 1 0 14 0 0 -1 0.000 0 0 0 0 4893.469 11592.357 1500 8715 4857 7143 8286 8715
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 2571 4571 3714 4571 3714 2000 2571 2000 2571 4571
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 7143 4571 6000 4571 6000 2000 7143 2000 7143 4571
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2571 3714 3714 3714
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 6000 3714 7143 4571
+2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 7695 4275 8775 4275 8775 5850 7695 5850 7695 4275
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 7695 5400 8775 5400
+2 2 0 1 0 14 0 0 -1 0.000 0 0 -1 0 0 5
+ 2000 5714 2857 5714 2857 6286 2000 6286 2000 5714
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 3150 4590 2430 5715
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 3735 2205 6030 2205
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 1 2
+ 1 1 1.00 60.00 120.00
+ 3735 2610 6030 2610
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 2880 6120 3465 6120
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 4
+ 1 1 1.00 60.00 120.00
+ 3735 2925 4950 2925 4950 4860 7695 4860
+2 2 0 1 0 14 0 0 -1 0.000 0 0 -1 0 0 5
+ 3428 5714 4286 5714 4286 6286 3428 6286 3428 5714
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 3
+ 1 1 1.00 60.00 120.00
+ 7155 2340 8460 2340 8460 4275
+2 1 1 2 0 7 0 0 -1 4.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 2430 6300 2970 7605
+2 1 1 2 0 7 0 0 -1 4.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 3870 6300 3195 7470
+2 1 1 2 0 7 0 0 -1 4.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 3870 6300 5130 7155
+2 1 1 2 0 7 0 0 -1 4.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 6570 4590 6570 7470
+2 1 1 2 0 7 0 0 -1 4.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 8235 5850 6795 7560
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 1 2
+ 1 1 1.00 60.00 120.00
+ 2835 5895 3420 5895
+2 3 0 1 0 3 0 0 20 0.000 0 0 -1 0 0 6
+ 2565 3105 3714 3105 3714 2340 3285 2700 2565 2700 2565 3105
+2 3 0 1 0 3 0 0 20 0.000 0 0 -1 0 0 6
+ 6000 3735 7143 3735 7143 3150 6435 3150 6000 2475 6000 3735
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 3
+ 1 1 1.00 60.00 120.00
+ 3714 3375 3870 3375 3870 5715
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 1 1 1.00 60.00 120.00
+ 3150 4590 3870 5715
+2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 1 3
+ 1 1 1.00 60.00 120.00
+ 7155 2610 8055 2610 8055 4275
+4 0 0 0 0 0 12 0.0000 4 135 480 2655 8415 Books\001
+4 0 0 0 0 0 12 0.0000 4 135 855 4275 8100 Multimedia\001
+4 0 0 0 0 0 12 0.0000 4 135 960 4200 8415 Audio-video\001
+4 0 0 0 0 0 12 0.0000 4 135 360 6075 8100 Web\001
+4 0 0 0 0 0 12 0.0000 4 135 600 5985 8415 Internet\001
+4 0 0 0 0 0 15 0.4014 4 150 675 2745 7900 Printers\001
+4 0 0 0 0 0 15 5.8469 4 150 840 6255 7560 Browsers\001
+4 1 0 0 0 0 12 0.0000 4 135 525 3150 2430 LaTeX\001
+4 1 0 0 0 0 12 0.0000 4 135 330 3150 3510 TeX\001
+4 1 0 0 0 0 12 0.0000 4 135 330 3150 4275 DVI\001
+4 1 0 0 0 0 12 0.0000 4 135 210 2430 6075 PS\001
+4 1 0 0 0 0 12 0.0000 4 135 345 3870 6075 PDF\001
+4 1 0 0 0 0 12 0.0000 4 135 345 6795 4140 XSL\001
+4 1 0 0 0 0 12 0.0000 4 135 330 6345 4410 CSS\001
+4 1 0 0 0 0 12 0.0000 4 135 330 8235 5715 CSS\001
+4 1 0 0 0 0 12 0.0000 4 135 330 4815 2115 L2X\001
+4 1 0 0 0 0 12 0.0000 4 135 330 4815 2565 X2L\001
+4 1 0 0 0 0 12 0.0000 4 135 330 5715 5085 L2H\001
+4 1 0 0 0 0 12 1.5708 4 135 705 4100 4410 PDFTEX\001
+4 1 0 0 0 0 12 1.0123 4 135 540 2745 5130 DVIPS\001
+4 1 0 0 0 0 12 0.0000 4 135 375 6525 3510 DTD\001
+4 1 0 0 0 0 11 0.0000 4 135 885 3150 2925 macros, styles\001
+4 1 0 0 0 0 12 0.0000 4 135 405 6615 2700 XML\001
+4 1 0 0 0 0 12 0.0000 4 135 510 8235 4950 HTML\001
+4 1 0 0 0 0 12 5.2709 4 135 675 3540 5050 DVIPDF\001
+4 1 0 0 0 0 12 0.0000 4 135 360 7785 2295 X2H\001
+4 1 0 0 0 0 12 0.0000 4 135 360 7560 2835 H2X\001
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2html/Makefile.ex2 b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/Makefile.ex2
new file mode 100644
index 00000000000..c84db2a0f15
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/Makefile.ex2
@@ -0,0 +1,10 @@
+# Makefile for Example 2
+LTX = latex
+L2H2 = latex2html -init_file myinit.pl -info "External_links_test"
+
+ex2 : ex21.aux ex22.aux
+ $(L2H2) ex2bib ex21 ex22 ex20
+ex21.aux :
+ $(LTX) ex21.tex
+ex22.aux :
+ $(LTX) ex22.tex
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2html/Makefile.ex3 b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/Makefile.ex3
new file mode 100644
index 00000000000..896b004a5aa
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/Makefile.ex3
@@ -0,0 +1,62 @@
+# Makefile for Example 3
+L2H = $(L2HNEW)/latex2html -link 4
+L2HTOP = $(L2HNEW)/latex2html -split 0
+LTX = latex
+EX = ex3
+HTML = .html
+TX = .tex
+TEXES = $(EX)*$(TX)
+TOP = ex30
+BIB = $(EX)bib
+TEXTOP = $(TOP)$(TX)
+INT = internals.pl
+BIBREF = '\#BIBLIO'
+# Directories containing the segments
+EX30 = ../$(TOP)/$(TOP)
+EX31 = ../$(EX)1/$(EX)1
+EX32 = ../$(EX)2/$(EX)2
+EX3b = ../$(TOP)/$(TOP)$(HTML)
+# Titles for navigation to the segments
+EX30t = Exemple_d\'un_document_segmenté
+EX31t = Une_figure_EPS
+EX32t = Exemple_d\'un_tableau
+EX3bt = Références
+
+COMMON = -info 0 -split 1 -link 4 -no_auto_link -biblio $(EX3b) -external_file $(TOP) \
+ -up_url $(EX30)$(HTML) -up_title $(EX30t) -index $(EX3b) -index_in_navigation
+update: $(TOP).ind
+ make $(TOP)/$(INT) $(EX)2/$(INT) $(EX)1/$(INT); make $(TOP)/$(INT)
+fresh:
+ rm $(EX)*/$(INT) $(TOP).aux; make $(TOP).ind;
+ make $(TOP)$(HTML) $(EX)2$(HTML) $(EX)1$(HTML); make $(TOP)$(HTML)
+$(TOP)$(HTML) :
+ $(L2HTOP) -down_url $(EX31)$(HTML) -down_title $(EX31t) -biblio $(BIBREF) $(TOP)
+$(TOP)/$(INT) : $(TEXTOP) $(BIB)$(TX) $(EX)1/$(INT) $(EX)2/$(INT)
+ make $(TOP)$(HTML)
+$(EX)1$(HTML) :
+ $(L2H) $(COMMON) -t $(EX31t) -prev_url $(EX30)$(HTML) -prev_title $(EX30t) \
+ -down_url $(EX32)$(HTML) -down_title $(EX32t) $(EX)1
+$(EX)1/$(INT) : $(EX)1$(TX)
+ make $(EX)1$(HTML)
+$(EX)2$(HTML) :
+ $(L2H) $(COMMON) -t $(EX32t) -prev_url $(EX31)$(HTML) -prev_title $(EX31t) \
+ -down_url $(EX3b)$(BIBREF) -down_title $(EX3bt) $(EX)2
+$(EX)2/$(INT) : $(EX)2$(TX)
+ make $(EX)2$(HTML)
+
+# handle LaTeX/dvips/makeindex etc.
+$(TOP).aux: $(TEXES)
+ make dvi
+$(TOP).dvi:
+ make dvi
+dvi:
+ $(LTX) $(TEXTOP); $(LTX) $(TEXTOP); make $(TOP).ind
+$(TOP).ind: $(TOP).aux
+ makeindex $(TOP).idx; $(LTX) $(TEXTOP); touch $(TOP).ind
+ps:
+ make $(TOP).ps
+$(TOP).ps: $(TOP).dvi
+ dvips $(TOP).dvi -o
+clean:
+ rm *.ps *.dvi *.log *.ilg
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2html/README.ch3 b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/README.ch3
new file mode 100644
index 00000000000..102a2030347
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/README.ch3
@@ -0,0 +1,72 @@
+Source files for examples in Chapter 3 of the LaTeX Web Companion
+
+File for Section 3.2.1
+++++++++++++++++++++++
+
+l2hexa.tex Latex source
+colorcir.eps EPS file used by several examples
+tac2dim.eps " "
+
+Files for Section 3.3
++++++++++++++++++++++
+
+sampleAMS.tex Latex sources
+sampleMath.tex "
+sampleAMS.css CSS style file for use with sampleAMS
+ see Section 3.3.4
+ (copy into the sampleAMS directory)
+
+sampleMathImages.tex Special source files for Section 3.3.5
+sampleMathThumb.tex
+
+Section 3.4
++++++++++++
+
+Installing the necessary bits for running the examples is a little
+complicated. You need to have the correct fonts + the pre-processors
+and edit the .perl files to give the paths.
+
+In any case, the sources are in the folowing subdirectories:
+ http://www-texdev.mpce.mq.edu.au/l2h/indic/Indica/
+ http://www-texdev.mpce.mq.edu.au/l2h/indic/ITRANS/
+
+The LWC examples are from:
+
+Figure 3.14:
+ http://www-texdev.mpce.mq.edu.au/l2h/indic/Indica/indicadocs.doc
+(This is a document by Yannis Haralambous, for Sinhala-TeX.)
+
+
+Figure 3.15 is from there also.
+
+
+Figures 3.16 and 3.17
+ are from Avinash Chopde's documentation for ITRANS.
+ You can get the files from:
+
+ http://www-texdev.mpce.mq.edu.au/l2h/indic/ITRANS/
+ vnehru.itx (or vnehru.tex if you preprocess it)
+ vnehru/ has the Web document;
+ sample.itx (or sample.tex)
+ sample/ has the Web document;
+
+Files for Section 3.5.6
++++++++++++++++++++++++
+
+Makefile.ex2 Makefile for running the example
+ (rename to Makefile to run)
+ex20.tex Latex sources
+ex21.tex "
+ex22.tex "
+ex2bib.tex "
+myinit.pl LaTeX2html customization file
+
+Files for Section 3.5.7.3
++++++++++++++++++++++++++
+
+Makefile.ex3 Makefile for running the example
+ (rename to Makefile to run)
+ex30.tex Latex sources
+ex31.tex "
+ex32.tex "
+ex3bib.tex "
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2html/colorcir.eps b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/colorcir.eps
new file mode 100644
index 00000000000..149d0c170fb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/colorcir.eps
@@ -0,0 +1,109 @@
+%!
+%%BoundingBox: 19 164 581 636
+0.0 setlinewidth
+
+/hsvcircle {
+gsave
+ /h 0.0 def
+ 0 4 360 {
+ pop
+ gsave
+ 0.5 0.0 translate
+
+ newpath
+ 0.0 0.0 moveto
+ 0.1 0.0 lineto
+ 0.1 0.02 lineto
+ 0.0 0.02 lineto
+ closepath
+ h 1.0 1.0 sethsbcolor
+ fill
+
+ %newpath
+ %0.0 0.0 moveto
+ %0.1 0.0 lineto
+ %0.1 0.02 lineto
+ %0.0 0.02 lineto
+ %closepath
+ %0.0 setgray
+ %stroke
+
+ grestore
+ /h h 4 360 div add def
+ 4 rotate
+ } for
+grestore
+} def
+
+/graycircle {
+gsave
+ /h -1.0 def
+ 0 4 360 {
+ pop
+ gsave
+ 0.5 0.0 translate
+
+ newpath
+ 0.0 0.0 moveto
+ 0.1 0.0 lineto
+ 0.1 0.02 lineto
+ 0.0 0.02 lineto
+ closepath
+
+ h abs setgray
+ fill
+
+ %newpath
+ %0.0 0.0 moveto
+ %0.1 0.0 lineto
+ %0.1 0.02 lineto
+ %0.0 0.02 lineto
+ %closepath
+ %0.0 setgray
+ %stroke
+ grestore
+
+ /h h 8 360 div add def
+ 4 rotate
+ } for
+grestore
+} def
+
+0.0 setlinewidth
+0.0 setgray
+300 400 translate
+500 500 scale
+
+30 rotate
+1.0 0.7 scale
+-30 rotate
+
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+0.8 0.8 scale
+hsvcircle
+0.8 0.8 scale
+graycircle
+
+showpage
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex20.tex b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex20.tex
new file mode 100644
index 00000000000..6ff0504b594
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex20.tex
@@ -0,0 +1,25 @@
+\documentclass{article}
+\usepackage{html}
+%begin{latexonly}
+\usepackage[T1]{fontenc}
+%end{latexonly}
+\usepackage[dvips]{graphicx}
+\usepackage{francais}
+\begin{document}
+\begin{center}\Large
+ Exemple d'un document composé\\
+\end{center}
+
+\htmladdnormallink{Les Images}{../ex21/ex21.html}
+
+\externallabels{../ex21}{../ex21/labels.pl}
+Référence à une figure externe~\externalref{Fpsfig}.
+
+\htmladdnormallink{Les tableaux}{../ex22/ex22.html}
+
+\externallabels{../ex22}{../ex22/labels.pl}
+Référence à un tableau externe~\externalref{tab-exa}.
+
+\htmladdnormallink{La bibliographie}%
+ {../ex2bib/ex2bib.html}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex21.tex b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex21.tex
new file mode 100644
index 00000000000..9b6bc130524
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex21.tex
@@ -0,0 +1,27 @@
+\documentclass{article}
+\usepackage{html}
+%begin{latexonly}
+\usepackage[T1]{fontenc}
+%end{latexonly}
+\usepackage[dvips]{graphicx}
+\usepackage{francais}
+\makeindex
+\begin{document}
+\section{Une figure EPS}
+\label{sec-figure}
+Cette section montre comment inclure une figure
+\externallabels{../ex2bib}{../ex2bib/labels.pl}%
+PostScript\externalref{bibPS} dans un document \LaTeX.
+La \hyperref{figure}{figure }{}{Fpsfig}
+est insérée dans le texte à l'aide de la commande
+\verb!\includegraphics{colorcir}!.
+\begin{figure}
+\htmlimage{thumbnail=0.4}
+\centering
+ \begin{tabular}{c@{\qquad}c}
+ \includegraphics[width=3cm]{colorcir} &
+ \includegraphics[width=3cm]{tac2dim}
+ \end{tabular}
+ \caption{Deux images EPS}\label{Fpsfig}
+\end{figure}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex22.tex b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex22.tex
new file mode 100644
index 00000000000..ff97376b120
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex22.tex
@@ -0,0 +1,29 @@
+\documentclass{article}
+\usepackage{html}
+%begin{latexonly}
+\usepackage[T1]{fontenc}
+%end{latexonly}
+\usepackage[dvips]{graphicx}
+\usepackage{francais}
+\newcommand{\Lcs}[1]{\texttt{\symbol{'134}#1}}
+\begin{document}
+\section{Exemple d'un tableau}
+\label{sec-tableau}
+Le \hyperref{tableau}{tableau }{}{tab-exa} montre
+l'utilisation de l'environnement \texttt{table}.
+\begin{table}
+\centering
+ \begin{tabular}{cccccc}
+ \Lcs{primo} & \primo & \Lcs{secundo} & \secundo &
+ \Lcs{tertio} & \tertio \\
+ \Lcs{quatro} & \quatro& 1\Lcs{ier} & 1\ier &
+ 1\Lcs{iere} & 1\iere \\
+ \Lcs{fprimo)}&\fprimo)& \Lcs{No} 10 & \No 10 &
+ \Lcs{no} 15 & \no 15 \\
+ \Lcs{og} a \Lcs{fg}&\og a \fg&3\Lcs{ieme}&3\ieme &
+ 10\Lcs{iemes}& 10\iemes
+ \end{tabular}
+\caption{Quelques commandes de l'option
+ \texttt{french} de \texttt{babel}}\label{tab-exa}
+\end{table}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex2bib.tex b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex2bib.tex
new file mode 100644
index 00000000000..f691e5acfc9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex2bib.tex
@@ -0,0 +1,16 @@
+\documentclass{article}
+\usepackage{html}
+%begin{latexonly}
+\usepackage[T1]{fontenc}
+%end{latexonly}
+\usepackage[dvips]{graphicx}
+\usepackage{francais}
+\makeindex
+\begin{document}
+\begin{thebibliography}{99}
+\bibitem{bib-PS}\label{bibPS}
+Adobe Inc.
+\emph{PostScript, manuel de référence (2ième édition)}
+InterÉditions (France), 1992
+\end{thebibliography}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex30.tex b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex30.tex
new file mode 100644
index 00000000000..0b1b755235f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex30.tex
@@ -0,0 +1,43 @@
+\documentclass{article}
+\usepackage[dvips]{graphicx}
+\usepackage{francais}
+\usepackage{html}
+\usepackage{makeidx}
+%begin{latexonly}
+\usepackage[T1]{fontenc}
+%end{latexonly}
+
+\internal{../ex31/}
+\internal[sections]{../ex31/}
+%\internal[contents]{../ex31/}
+\internal[figure]{../ex31/}
+\internal[index]{../ex31/}
+
+\internal{../ex32/}
+\internal[sections]{../ex32/}
+%\internal[contents]{../ex32/}
+\internal[table]{../ex32/}
+\internal[index]{../ex32/}
+
+\makeindex
+\title{Exemple d'un document segmenté}
+\author{Ross Moore \& Michel Goossens}
+
+\begin{document}
+\maketitle\htmlrule
+\tableofchildlinks\htmlrule
+%begin{latexonly}
+\tableofcontents
+%end{latexonly}
+\listoffigures\listoftables\htmlrule
+
+\segment{ex31}{section}{Une figure EPS}
+\endsegment[section]
+\html{Référence à figure~\ref{Fpsfig}.}
+
+\segment{ex32}{section}{Exemple d'un tableau}
+\endsegment[section]
+\html{Référence à tableau~\ref{tab-exa}.}
+\htmlrule \input{ex3bib}
+\htmlrule \printindex \htmlrule
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex31.tex b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex31.tex
new file mode 100644
index 00000000000..1f5c97339f3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex31.tex
@@ -0,0 +1,27 @@
+\begin{htmlonly}
+\documentclass{article}
+\usepackage{makeidx,html}
+\usepackage[T1]{fontenc}
+\usepackage[dvips]{graphicx}
+\usepackage{francais}
+\input ex31.ptr
+\end{htmlonly}
+\startdocument
+\index{section!figure}
+
+Cette section montre comment inclure une figure
+PostScript\cite{bib-PS} dans un document \LaTeX.
+La \hyperref{figure}{figure }{}{Fpsfig}
+est insérée dans le texte à l'aide de la commande
+\verb!\includegraphics{colorcir}!.
+\index{figure}
+\index{PostScript}
+\begin{figure}[h]
+\htmlimage{thumbnail=0.4}
+\centering
+ \begin{tabular}{c@{\qquad}c}
+ \includegraphics[width=3cm]{colorcir} &
+ \includegraphics[width=3cm]{tac2dim}
+ \end{tabular}
+ \caption{Deux images EPS}\label{Fpsfig}
+\end{figure}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex32.tex b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex32.tex
new file mode 100644
index 00000000000..293d66f4650
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex32.tex
@@ -0,0 +1,27 @@
+\begin{htmlonly}
+\usepackage{makeidx,html}
+\usepackage{francais}
+\input ex32.ptr
+\end{htmlonly}
+\newcommand{\Lcs}[1]{\texttt{\symbol{'134}#1}}
+\startdocument
+\index{section!tableau}
+
+Le \hyperref{tableau}{tableau }{}{tab-exa}
+montre l'utilisation de l'environnement \texttt{table}.
+\begin{table}[h]
+\centering
+ \begin{tabular}{cccccc}
+ \Lcs{primo} & \primo & \Lcs{secundo} & \secundo
+ & \Lcs{tertio} & \tertio \\
+ \Lcs{quatro} & \quatro& 1\Lcs{ier} & 1\ier
+ & 1\Lcs{iere} & 1\iere \\
+ \Lcs{fprimo)}&\fprimo)& \Lcs{No} 10 & \No 10
+ & \Lcs{no} 15 & \no 15 \\
+ \Lcs{og} a \Lcs{fg}&\og a \fg&3\Lcs{ieme}&3\ieme
+ & 10\Lcs{iemes}& 10\iemes
+ \end{tabular}
+\caption{Quelques commandes de l'option \texttt{french}
+ de \texttt{babel}}\label{tab-exa}
+\index{tableau}
+\end{table}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex3bib.tex b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex3bib.tex
new file mode 100644
index 00000000000..12e197babf2
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex3bib.tex
@@ -0,0 +1,6 @@
+\begin{thebibliography}{99}
+\label{BIBLIO}\index{références}
+\bibitem{bib-PS}
+Adobe Inc. \emph{PostScript, manuel de référence
+ (2ième édition)} InterÉditions (France), 1992
+\end{thebibliography}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2html/l2hexa.tex b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/l2hexa.tex
new file mode 100644
index 00000000000..817ffbe7f1d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/l2hexa.tex
@@ -0,0 +1,62 @@
+\documentclass{article}
+\usepackage{graphicx}
+\usepackage{francais}
+\usepackage{makeidx}
+\newcommand{\Lcs}[1]{\texttt{\symbol{'134}#1}}
+\makeindex
+\title{Exemple d'un article en fran\c{c}ais}
+\author{Michel Goossens}
+\begin{document}
+\maketitle
+\tableofcontents
+\listoffigures
+\listoftables
+\section{Une figure EPS}
+\index{section}
+Cette section montre comment inclure une figure PostScript\cite{bib-PS}
+dans un document \LaTeX. La figure~\ref{Fpsfig}
+est ins\'er\'ee dans le texte \`a l'aide de la commande
+ \verb!\includegraphics{colorcir.eps}!.
+\index{figure}
+\index{PostScript}
+\begin{figure}
+ \begin{center}
+ \begin{tabular}{c@{\qquad}c}
+ \includegraphics[width=3cm]{colorcir} &
+ \includegraphics[width=3cm]{tac2dim}
+ \end{tabular}
+ \end{center}
+ \caption{Deux images EPS}
+ \label{Fpsfig}
+\end{figure}
+
+\section{Exemple d'un tableau}
+
+Le tableau~\ref{tab:exa} \`a la page \pageref{tab:exa}
+montre l'utilisation de l'environnement \texttt{table}.
+
+\begin{table}
+ \begin{center}
+ \begin{tabular}{cccccc}
+ \Lcs{primo} & \primo & \Lcs{secundo} & \secundo & \Lcs{tertio} & \tertio \\
+ \Lcs{quatro} & \quatro& 1\Lcs{ier} & 1\ier & 1\Lcs{iere} & 1\iere \\
+ \Lcs{fprimo)}&\fprimo)& \Lcs{No} 10 & \No 10 & \Lcs{no} 15 & \no 15 \\
+ \Lcs{og} a \Lcs{fg}&\og a \fg&3\Lcs{ieme}&3\ieme & 10\Lcs{iemes}& 10\iemes
+ \end{tabular}
+ \end{center}
+ \caption{Quelques commandes de l'option \texttt{francais} de \texttt{babel}}
+ \label{tab:exa}
+ \index{tableau}
+\end{table}
+
+\begin{thebibliography}{99}
+\index{r\'ef\'erences}
+\bibitem{bib-PS}
+Adobe Inc.
+\emph{PostScript, manuel de r\'ef\'erence (2\ieme \'edition)}
+Inter\'Editions (France), 1992
+\end{thebibliography}
+\printindex
+\index{index}
+\end{document}
+% End of document.
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2html/myinit.pl b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/myinit.pl
new file mode 100644
index 00000000000..b24da780bf5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/myinit.pl
@@ -0,0 +1,8 @@
+# File myinit.pl
+$ADDRESS = "<em>Michel Goossens<BR>" .
+ "Division IT<BR>" .
+ "T&eacute;l. 767.5028<BR>" .
+ "$address_data[1]</em>";
+$MAX_SPLIT_DEPTH = 0; # do not split document
+$NO_NAVIGATION = 1; # no navigation panel
+1; # Mandatory last line
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleAMS.css b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleAMS.css
new file mode 100644
index 00000000000..daee915b4dd
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleAMS.css
@@ -0,0 +1,4 @@
+H2 { border : 2pt solid brown ; color : maroon ; padding : 5pt }
+TD.eqno {color : green ; fontweight : 700 } /* equation-number cells */
+TABLE.subequations { background-color : #E0E0E0 ; }
+P { line-height : 18pt ; }
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleAMS.tex b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleAMS.tex
new file mode 100644
index 00000000000..7a0f0ea4629
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleAMS.tex
@@ -0,0 +1,54 @@
+\documentclass[a4paper,twoside]{article}
+\usepackage{html}
+\usepackage{amsmath}
+
+\renewcommand{\d}{\partial}\providecommand{\bm}[1]{\mathbf{#1}}
+\providecommand{\Range}{\mathcal{R}}\providecommand{\Ker}{\mathcal{N}}
+\providecommand{\Quat}{\vec{\mathbf{Q}}}
+
+\newcommand{\StAndrews}{\htmlurl{http://www-groups.dcs.st-and.ac.uk/~history}}%
+\newcommand{\Pythagorians}{\htmladdnormallink
+ {Pythagorians}{\StAndrews/Mathematicians/Pythagoras.html}}
+\newcommand{\Fermat}{\htmladdnormallink
+ {Fermat, c.1637}{\StAndrews/HistTopics/Fermat's_last_theorem.html}}
+\newcommand{\Wiles}{\htmladdnormallink
+ {Wiles, 1995}{\htmlurl{http://www.pbs.org:80/wgbh/nova/proof}}}
+
+\begin{document}
+\htmlhead[center]{section}{Math examples}
+\begin{eqnarray}
+ \phi(\lambda) & = & \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+ \exp \left( u \ln u + \lambda u \right ) du \hspace{1cm}\mbox{for } c \geq 0 \\
+ \lambda & = & \frac{\epsilon -\bar{\epsilon} }{\xi}
+ - \gamma' - \beta^2 - \ln \frac{\xi} {E_{\rm max}} \\
+ \gamma & = & 0.577215\dots \mathrm{\hspace{5mm}(Euler's\ constant)} \\
+ \gamma' & = & 0.422784\dots = 1 - \gamma \\
+ \epsilon , \bar{\epsilon} & = & \mbox{actual/average energy loss}
+\end{eqnarray}
+
+Since~\eqref{eqn:stress-sr} or~\eqref{gdef} should hold for arbitrary $\delta\bm{c}$%
+-vectors, it is clear that $\Ker(A) = \Range(B)$ and that when $y=B(x)$ one has...\\
+...the \Pythagorians{} knew infinitely many solutions in integers to $a^2+b^2=c^2$.
+That no non-trivial integer solutions exist for $a^n+b^n=c^n$ with integers $n>2$ has long
+been suspected (\Fermat). Only during the current decade has this been proved (\Wiles).
+
+\begin{eqnarray}\label{eqn:stress-sr}
+ V \bm{\pi}^{sr} & = & \left< \sum_i M_i \bm{V}_i \bm{V}_i
+ + \sum_i \sum_{j>i} \bm{R}_{ij} \bm{F}_{ij}\right> \\ \nonumber
+ & = & \left< \sum_i M_i \bm{V}_i \bm{V}_i
+ + \sum_{i}\sum_{j>i}\sum_\alpha\sum_\beta \bm{r}_{i\alpha j\beta}\bm{f}_{i\alpha j\beta}
+ - \sum_i \sum_\alpha \bm{p}_{i\alpha} \bm{f}_{i\alpha} \right>
+\end{eqnarray}
+
+\begin{subequations}\label{bgdefs}
+\begin{align} B_{ij}^\alpha & =
+ \left(B_{ij}^\alpha\right)_0 + \left(B_{ij}^\alpha\right)_a \label{bdef} \\
+ \left(B_{ij}^\alpha\right)_0 & = \frac{1}{2}\left(\frac{\d N_i^\alpha}{\d X_j}
+ + \frac{\d N_j^\alpha} {\d X_i} \right) \label{b0def} \\
+ \left(B_{ij}^\alpha\right)_a & = H_{ij}^{\alpha \beta} a^\beta \label{budef} \\
+ H_{ij}^{\alpha \beta} & =
+ \frac{1}{2}\left( \frac{\d N_k^\alpha}{\d X_i} \frac{\d N_k^\beta}{\d X_j}
+ + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right) \label{gdef}
+\end{align}
+\end{subequations}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleMath.tex b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleMath.tex
new file mode 100644
index 00000000000..26ab42edddc
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleMath.tex
@@ -0,0 +1,54 @@
+\documentclass[a4paper,twoside]{article}
+\usepackage{html}
+%\usepackage{amsmath}
+
+\renewcommand{\d}{\partial}\providecommand{\bm}[1]{\mathbf{#1}}
+\providecommand{\Range}{\mathcal{R}}\providecommand{\Ker}{\mathcal{N}}
+\providecommand{\Quat}{\vec{\mathbf{Q}}}
+
+\newcommand{\StAndrews}{\htmlurl{http://www-groups.dcs.st-and.ac.uk/~history}}%
+\newcommand{\Pythagorians}{\htmladdnormallink
+ {Pythagorians}{\StAndrews/Mathematicians/Pythagoras.html}}
+\newcommand{\Fermat}{\htmladdnormallink
+ {Fermat, c.1637}{\StAndrews/HistTopics/Fermat's_last_theorem.html}}
+\newcommand{\Wiles}{\htmladdnormallink
+ {Wiles, 1995}{\htmlurl{http://www.pbs.org:80/wgbh/nova/proof}}}
+
+\begin{document}
+\htmlhead[center]{section}{Math examples}
+\begin{eqnarray}
+ \phi(\lambda) & = & \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+ \exp \left( u \ln u + \lambda u \right ) du \hspace{1cm}\mbox{for } c \geq 0 \\
+ \lambda & = & \frac{\epsilon -\bar{\epsilon} }{\xi}
+ - \gamma' - \beta^2 - \ln \frac{\xi} {E_{\rm max}}\label{xiEmax} \\
+ \gamma & = & 0.577215\dots \mathrm{\hspace{5mm}(Euler's\ constant)} \\
+ \gamma' & = & 0.422784\dots = 1 - \gamma \\
+ \epsilon , \bar{\epsilon} & = & \mbox{actual/average energy loss}
+\end{eqnarray}
+
+Since~\ref{xiEmax} and \ref{eqn:stress-sr} hold for arbitrary $\delta\bm{c}$-vectors,
+it is clear that $\Ker(A) = \Range(B)$ and that when $y=B(x)$ one has...\\
+...the \Pythagorians{} knew infinitely many solutions in integers to $a^2+b^2=c^2$.
+That no non-trivial integer solutions exist for $a^n+b^n=c^n$ with integers $n>2$ has long
+been suspected (\Fermat). Only during the current decade has this been proved (\Wiles).
+
+\begin{eqnarray}\label{eqn:stress-sr}
+ V \bm{\pi}^{sr} & = & \left< \sum_i M_i \bm{V}_i \bm{V}_i
+ + \sum_i \sum_{j>i} \bm{R}_{ij} \bm{F}_{ij}\right> \\ \nonumber
+ & = & \left< \sum_i M_i \bm{V}_i \bm{V}_i
+ + \sum_{i}\sum_{j>i}\sum_\alpha\sum_\beta \bm{r}_{i\alpha j\beta}\bm{f}_{i\alpha j\beta}
+ - \sum_i \sum_\alpha \bm{p}_{i\alpha} \bm{f}_{i\alpha} \right>
+\end{eqnarray}
+\end{document}
+\begin{subequations}\label{bgdefs}
+\begin{align} B_{ij}^\alpha & =
+ \left(B_{ij}^\alpha\right)_0 + \left(B_{ij}^\alpha\right)_a \label{bdef} \\
+ \left(B_{ij}^\alpha\right)_0 & = \frac{1}{2}\left(\frac{\d N_i^\alpha}{\d X_j}
+ + \frac{\d N_j^\alpha} {\d X_i} \right) \label{b0def} \\
+ \left(B_{ij}^\alpha\right)_a & = H_{ij}^{\alpha \beta} a^\beta \label{budef} \\
+ H_{ij}^{\alpha \beta} & =
+ \frac{1}{2}\left( \frac{\d N_k^\alpha}{\d X_i} \frac{\d N_k^\beta}{\d X_j}
+ + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right) \label{gdef}
+\end{align}
+\end{subequations}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleMathImages.tex b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleMathImages.tex
new file mode 100644
index 00000000000..cca8e754e57
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleMathImages.tex
@@ -0,0 +1,64 @@
+\documentclass[a4paper,twoside]{article}
+\usepackage{html}
+\usepackage{amsmath}
+
+\renewcommand{\d}{\partial}\providecommand{\bm}[1]{\mathbf{#1}}
+\providecommand{\Range}{\mathcal{R}}\providecommand{\Ker}{\mathcal{N}}
+\providecommand{\Quat}{\vec{\mathbf{Q}}}
+
+\newcommand{\StAndrews}{\url{http://www-groups.dcs.st-and.ac.uk/~history}}%
+\newcommand{\Pythagorians}{\htmladdnormallink
+ {Pythagorians}{\StAndrews/Mathematicians/Pythagoras.html}}
+\newcommand{\Fermat}{\htmladdnormallink
+ {Fermat, c.1637}{\StAndrews/HistTopics/Fermat's_last_theorem.html}}
+\newcommand{\Wiles}{\htmladdnormallink
+ {Wiles, 1995}{http://www.pbs.org:80/wgbh/nova/proof}}
+
+\begin{document}
+\htmlhead[center]{section}{Math examples}
+\begin{flushright}
+\begin{makeimage}
+\begin{eqnarray}
+ \phi(\lambda) & = & \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+ \exp \left( u \ln u + \lambda u \right ) du \hspace{1cm}\mbox{for } c \geq 0 \\
+ \lambda & = & \frac{\epsilon -\bar{\epsilon} }{\xi}
+ - \gamma' - \beta^2 - \ln \frac{\xi} {E_{\rm max}} \\
+ \gamma & = & 0.577215\dots \mathrm{\hspace{5mm}(Euler's\ constant)} \\
+ \gamma' & = & 0.422784\dots = 1 - \gamma \\
+ \epsilon , \bar{\epsilon} & = & \mbox{actual/average energy loss}
+\end{eqnarray}
+\end{makeimage}
+\end{flushright}
+
+Since~\eqref{eqn:stress-sr} or~\eqref{gdef} should hold for arbitrary $\delta\bm{c}$%
+-vectors, it is clear that $\Ker(A) = \Range(B)$ and that when $y=B(x)$ one has...\\
+...the \Pythagorians{} knew infinitely many solutions in integers to $a^2+b^2=c^2$.
+That no non-trivial integer solutions exist for $a^n+b^n=c^n$ with integers $n>2$ has long
+been suspected (\Fermat). Only during the current decade has this been proved (\Wiles).
+
+\begin{flushright}
+\begin{eqnarray}\htmlimage{}
+\label{eqn:stress-sr}
+ V \bm{\pi}^{sr} & = & \left< \sum_i M_i \bm{V}_i \bm{V}_i
+ + \sum_i \sum_{j>i} \bm{R}_{ij} \bm{F}_{ij}\right> \\ \nonumber
+ & = & \left< \sum_i M_i \bm{V}_i \bm{V}_i
+ + \sum_{i}\sum_{j>i}\sum_\alpha\sum_\beta \bm{r}_{i\alpha j\beta}\bm{f}_{i\alpha j\beta}
+ - \sum_i \sum_\alpha \bm{p}_{i\alpha} \bm{f}_{i\alpha} \right>
+\end{eqnarray}
+\end{flushright}
+
+\begin{flushright}
+\begin{subequations}\htmlimage{}
+\label{bgdefs}
+\begin{align} B_{ij}^\alpha & =
+ \left(B_{ij}^\alpha\right)_0 + \left(B_{ij}^\alpha\right)_a \label{bdef} \\
+ \left(B_{ij}^\alpha\right)_0 & = \frac{1}{2}\left(\frac{\d N_i^\alpha}{\d X_j}
+ + \frac{\d N_j^\alpha} {\d X_i} \right) \label{b0def} \\
+ \left(B_{ij}^\alpha\right)_a & = H_{ij}^{\alpha \beta} a^\beta \label{budef} \\
+ H_{ij}^{\alpha \beta} & =
+ \frac{1}{2}\left( \frac{\d N_k^\alpha}{\d X_i} \frac{\d N_k^\beta}{\d X_j}
+ + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right) \label{gdef}
+\end{align}
+\end{subequations}
+\end{flushright}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleMathThumb.tex b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleMathThumb.tex
new file mode 100644
index 00000000000..b6c61782721
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleMathThumb.tex
@@ -0,0 +1,64 @@
+\documentclass[a4paper,twoside]{article}
+\usepackage{html}
+\usepackage{amsmath}
+
+\renewcommand{\d}{\partial}\providecommand{\bm}[1]{\mathbf{#1}}
+\providecommand{\Range}{\mathcal{R}}\providecommand{\Ker}{\mathcal{N}}
+\providecommand{\Quat}{\vec{\mathbf{Q}}}
+
+\newcommand{\StAndrews}{\url{http://www-groups.dcs.st-and.ac.uk/~history}}%
+\newcommand{\Pythagorians}{\htmladdnormallink
+ {Pythagorians}{\StAndrews/Mathematicians/Pythagoras.html}}
+\newcommand{\Fermat}{\htmladdnormallink
+ {Fermat, c.1637}{\StAndrews/HistTopics/Fermat's_last_theorem.html}}
+\newcommand{\Wiles}{\htmladdnormallink
+ {Wiles, 1995}{http://www.pbs.org:80/wgbh/nova/proof}}
+
+\begin{document}
+\htmlhead[center]{section}{Math examples}
+\begin{flushright}
+\begin{makeimage}
+\begin{eqnarray}
+ \phi(\lambda) & = & \frac{1} {2 \pi i}\int^{c+i\infty}_{c-i\infty}
+ \exp \left( u \ln u + \lambda u \right ) du \hspace{1cm}\mbox{for } c \geq 0 \\
+ \lambda & = & \frac{\epsilon -\bar{\epsilon} }{\xi}
+ - \gamma' - \beta^2 - \ln \frac{\xi} {E_{\rm max}} \\
+ \gamma & = & 0.577215\dots \mathrm{\hspace{5mm}(Euler's\ constant)} \\
+ \gamma' & = & 0.422784\dots = 1 - \gamma \\
+ \epsilon , \bar{\epsilon} & = & \mbox{actual/average energy loss}
+\end{eqnarray}
+\end{makeimage}
+\end{flushright}
+
+Since~\eqref{eqn:stress-sr} or~\eqref{gdef} should hold for arbitrary $\delta\bm{c}$%
+-vectors, it is clear that $\Ker(A) = \Range(B)$ and that when $y=B(x)$ one has...\\
+...the \Pythagorians{} knew infinitely many solutions in integers to $a^2+b^2=c^2$.
+That no non-trivial integer solutions exist for $a^n+b^n=c^n$ with integers $n>2$ has long
+been suspected (\Fermat). Only during the current decade has this been proved (\Wiles).
+
+\begin{flushright}
+\begin{eqnarray}\htmlimage{thumbnail=.4}
+\label{eqn:stress-sr}
+ V \bm{\pi}^{sr} & = & \left< \sum_i M_i \bm{V}_i \bm{V}_i
+ + \sum_i \sum_{j>i} \bm{R}_{ij} \bm{F}_{ij}\right> \\ \nonumber
+ & = & \left< \sum_i M_i \bm{V}_i \bm{V}_i
+ + \sum_{i}\sum_{j>i}\sum_\alpha\sum_\beta \bm{r}_{i\alpha j\beta}\bm{f}_{i\alpha j\beta}
+ - \sum_i \sum_\alpha \bm{p}_{i\alpha} \bm{f}_{i\alpha} \right>
+\end{eqnarray}
+\end{flushright}
+
+\begin{flushright}
+\begin{subequations}\htmlimage{thumbnail=.3}
+\label{bgdefs}
+\begin{align} B_{ij}^\alpha & =
+ \left(B_{ij}^\alpha\right)_0 + \left(B_{ij}^\alpha\right)_a \label{bdef} \\
+ \left(B_{ij}^\alpha\right)_0 & = \frac{1}{2}\left(\frac{\d N_i^\alpha}{\d X_j}
+ + \frac{\d N_j^\alpha} {\d X_i} \right) \label{b0def} \\
+ \left(B_{ij}^\alpha\right)_a & = H_{ij}^{\alpha \beta} a^\beta \label{budef} \\
+ H_{ij}^{\alpha \beta} & =
+ \frac{1}{2}\left( \frac{\d N_k^\alpha}{\d X_i} \frac{\d N_k^\beta}{\d X_j}
+ + \frac{\d N_k^\beta}{\d X_i} \frac{\d N_k^\alpha}{\d X_j} \right) \label{gdef}
+\end{align}
+\end{subequations}
+\end{flushright}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2html/tac2dim.eps b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/tac2dim.eps
new file mode 100644
index 00000000000..b96e3e23e90
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2html/tac2dim.eps
@@ -0,0 +1,201 @@
+%!CERNPS_include //ddtrg2/user/goossens/pawmanual/tutex21.ps
+%%BoundingBox: 0 0 582 582
+/d {lineto} def /m {moveto} def /t {translate} def
+/sw {stringwidth} def /r {rotate} def /rl {roll} def
+/rd {rlineto} def /rm {rmoveto} def /gr {grestore} def
+/lw {setlinewidth} def /sd {setdash} def
+/s {stroke} def /rgb {setrgbcolor} def
+/c {closepath} def /sf {scalefont setfont} def
+/oshow {gsave [] 0 sd true charpath stroke gr} def
+/cs {gsave dup sw pop 2 div neg 5 -1 rl 5 -1 rl t 3 -1 rl r 0 m show gr} def
+/rs {gsave dup sw pop neg 5 -1 rl 5 -1 rl t 3 -1 rl r 0 m show gr} def
+/ocs {gsave dup sw pop 2 div neg 5 -1 rl 5 -1 rl t 3 -1 rl r 0 m oshow gr} def
+/ors {gsave dup sw pop neg 5 -1 rl 5 -1 rl t 3 -1 rl r 0 m oshow gr} def
+gsave .25 .25 scale 0 0 0 rgb 0 0 translate
+ [] 0 sd 4 lw 958 212 m 1044 177 d s 1044 177 m 1146 206 d s 1044 177 m 1044 177
+ d c s 958 212 m 958 212 d c s 1146 206 m 1146 206 d c s 1060 241 m 1143 207 d s
+ 958 212 m 1057 240 d s 1146 206 m 1248 235 d s 1146 206 m 1146 219 d s 1060 241
+ m 1060 254 d s 1060 254 m 1143 220 d s 1146 219 m 1245 248 d s 1248 235 m 1248
+ 248 d s 1162 283 m 1245 249 d s 1060 254 m 1159 282 d s 1248 235 m 1350 264 d s
+ 1248 235 m 1248 340 d s 1162 283 m 1162 375 d s 1162 375 m 1245 342 d s 1248
+ 340 m 1349 370 d s 1350 264 m 1350 370 d s 1264 405 m 1349 370 d s 1162 375 m
+ 1261 404 d s 1350 264 m 1452 294 d s 1350 264 m 1350 435 d s 1264 405 m 1264
+ 470 d s 1264 470 m 1349 436 d s 1350 435 m 1449 464 d s 1452 294 m 1452 465 d s
+ 1366 500 m 1449 466 d s 1264 470 m 1366 499 d s 1452 294 m 1553 323 d s 1452
+ 294 m 1452 701 d s 1366 500 m 1366 736 d s 1366 736 m 1449 703 d s 1452 701 m
+ 1551 730 d s 1553 323 m 1553 731 d s 1468 766 m 1551 732 d s 1366 736 m 1465
+ 765 d s 1553 323 m 1655 352 d s 1553 323 m 1553 599 d s 1553 599 m 1653 628 d s
+ 1655 352 m 1655 628 d s 1570 663 m 1653 630 d s 1551 658 m 1567 663 d s 1655
+ 352 m 1757 381 d s 1655 352 m 1655 615 d s 1655 615 m 1755 644 d s 1757 381 m
+ 1757 645 d s 1672 679 m 1755 646 d s 1589 656 m 1669 679 d s 1757 381 m 1859
+ 411 d s 1757 381 m 1757 572 d s 1757 572 m 1857 601 d s 1859 411 m 1859 601 d s
+ 1774 636 m 1856 603 d s 1755 631 m 1771 636 d s 1859 411 m 1961 440 d s 1859
+ 411 m 1859 496 d s 1859 496 m 1961 525 d s 1961 440 m 1961 525 d s 1876 560 m
+ 1961 526 d s 1856 555 m 1873 560 d s 1961 440 m 2063 469 d s 1961 440 m 1961
+ 493 d s 1961 493 m 2060 521 d s 2063 469 m 2063 522 d s 1978 557 m 2063 522 d s
+ 1923 541 m 1975 556 d s 2063 469 m 2165 498 d s 2063 469 m 2063 469 d c s 2165
+ 498 m 2165 498 d c s 2080 533 m 2162 500 d s 2053 526 m 2079 533 d s 2165 498 m
+ 2267 528 d s 2165 498 m 2165 498 d c s c s 2182 563 m 2264 529 d s 2080 533 m
+ 2179 562 d s 873 246 m 958 212 d s 958 212 m 958 218 d s 873 246 m 873 253 d s
+ 873 253 m 955 219 d s 958 218 m 1057 247 d s 975 282 m 1057 249 d s 873 253 m
+ 972 281 d s 1060 254 m 1060 261 d s 975 282 m 975 295 d s 975 295 m 1057 262 d
+ s 1060 261 m 1159 289 d s 1077 325 m 1159 291 d s 975 295 m 1074 324 d s 1077
+ 325 m 1077 358 d s 1077 358 m 1159 324 d s 1179 387 m 1188 383 d s 1077 358 m
+ 1176 386 d s 1179 387 m 1179 420 d s 1179 420 m 1235 397 d s 1179 420 m 1261
+ 443 d s 1280 475 m 1280 607 d s 1280 607 m 1366 572 d s 1280 607 m 1366 631 d s
+ 1550 665 m 1560 661 d s 1586 688 m 1634 669 d s 1550 678 m 1584 687 d s 1793
+ 629 m 1873 652 d s 1876 560 m 1876 652 d s 1790 687 m 1873 654 d s 1707 663 m
+ 1787 686 d s 1895 553 m 1975 576 d s 1978 557 m 1978 576 d s 1892 611 m 1975
+ 578 d s 1873 606 m 1889 610 d s 2034 533 m 2079 546 d s 2080 533 m 2080 546 d s
+ 1994 581 m 2079 547 d s 1975 576 m 1991 581 d s 2080 533 m 2080 566 d s 1994
+ 581 m 1994 601 d s 1994 601 m 2079 566 d s 2080 566 m 2179 595 d s 2182 563 m
+ 2182 595 d s 2096 630 m 2179 597 d s 1994 601 m 2096 630 d s 787 281 m 873 246
+ d s 787 281 m 787 281 d c s 889 311 m 965 280 d s 787 281 m 889 310 d s 991 340
+ m 1048 317 d s 889 311 m 988 339 d s 991 340 m 991 353 d s 991 353 m 1067 322 d
+ s 1093 382 m 1121 371 d s 991 353 m 1090 381 d s 1179 420 m 1179 466 d s 1093
+ 382 m 1093 501 d s 1093 501 m 1176 467 d s 1179 466 m 1278 494 d s 1195 530 m
+ 1278 496 d s 1093 501 m 1192 529 d s 1280 607 m 1280 725 d s 1195 530 m 1195
+ 760 d s 1195 760 m 1278 726 d s 1280 725 m 1380 754 d s 1382 740 m 1382 754 d s
+ 1297 789 m 1380 756 d s 1195 760 m 1294 788 d s 1382 740 m 1382 754 d s 1382
+ 754 m 1484 784 d s 1484 759 m 1484 784 d s 1399 819 m 1484 784 d s 1297 789 m
+ 1396 818 d s 1705 696 m 1752 677 d s 1622 672 m 1702 695 d s 1949 588 m 1991
+ 600 d s 1909 636 m 1991 602 d s 1873 626 m 1906 635 d s 2010 632 m 2048 617 d s
+ 1956 617 m 2008 632 d s 702 316 m 787 281 d s 702 316 m 702 316 d c s 804 345 m
+ 889 311 d s 702 316 m 801 345 d s 889 311 m 889 330 d s 804 345 m 804 365 d s
+ 804 365 m 889 330 d s 889 330 m 988 359 d s 991 353 m 991 359 d s 906 394 m 988
+ 361 d s 804 365 m 905 394 d s 991 353 m 991 379 d s 906 394 m 906 414 d s 906
+ 414 m 988 380 d s 991 379 m 1090 408 d s 1007 443 m 1090 410 d s 906 414 m 1005
+ 443 d s 1007 443 m 1007 496 d s 1007 496 m 1090 462 d s 1109 525 m 1138 514 d s
+ 1007 496 m 1107 524 d s 1195 760 m 1195 793 d s 1109 525 m 1109 828 d s 1109
+ 828 m 1192 794 d s 1195 793 m 1294 821 d s 1297 789 m 1297 822 d s 1211 857 m
+ 1294 823 d s 1109 828 m 1209 856 d s 1619 691 m 1647 680 d s 1593 684 m 1616
+ 690 d s 1721 694 m 1759 679 d s 1711 691 m 1718 693 d s 1873 637 m 1889 631 d s
+ 1925 667 m 2008 633 d s 1873 652 m 1922 666 d s 616 351 m 702 316 d s 616 351 m
+ 616 351 d c s 718 380 m 801 347 d s 616 351 m 715 379 d s 718 380 m 718 400 d s
+ 718 400 m 801 366 d s 820 429 m 905 395 d s 718 400 m 817 428 d s 906 414 m 906
+ 454 d s 820 429 m 820 488 d s 820 488 m 905 454 d s 906 454 m 1005 482 d s 922
+ 518 m 1005 484 d s 820 488 m 922 518 d s 1007 496 m 1007 680 d s 922 518 m 922
+ 715 d s 922 715 m 1005 681 d s 1007 680 m 1107 709 d s 1024 744 m 1107 711 d s
+ 922 715 m 1021 743 d s 1099 713 m 1107 715 d s 1550 685 m 1616 704 d s 1619 691
+ m 1619 704 d s 1552 732 m 1619 705 d s 1647 680 m 1718 700 d s 1721 694 m 1721
+ 701 d s 1636 736 m 1718 702 d s 1581 720 m 1635 736 d s 1721 694 m 1721 951 d s
+ 1636 736 m 1636 986 d s 1636 986 m 1718 952 d s 1721 951 m 1820 979 d s 1823
+ 674 m 1823 980 d s 1737 1015 m 1820 981 d s 1636 986 m 1735 1014 d s 1839 702 m
+ 1922 668 d s 1820 697 m 1837 701 d s 531 386 m 616 351 d s 531 386 m 531 386 d
+ c s 633 415 m 715 381 d s 531 386 m 630 414 d s 718 400 m 718 400 d s 633 415 m
+ 633 435 d s 633 435 m 715 401 d s 734 464 m 817 430 d s 633 435 m 732 463 d s
+ 734 464 m 734 504 d s 734 504 m 817 470 d s 836 533 m 893 510 d s 734 504 m 834
+ 532 d s 836 533 m 836 737 d s 836 737 m 921 702 d s 938 766 m 1004 739 d s 836
+ 737 m 936 765 d s 1071 725 m 1107 735 d s 1040 775 m 1106 749 d s 967 754 m
+ 1040 775 d s 1820 710 m 1837 703 d s 445 421 m 531 386 d s 445 421 m 445 421 d
+ c s 547 450 m 630 416 d s 445 421 m 544 449 d s 547 450 m 547 457 d s 547 457 m
+ 630 423 d s 649 486 m 715 459 d s 547 457 m 646 485 d s 734 504 m 734 569 d s
+ 649 486 m 649 604 d s 649 604 m 732 570 d s 734 569 m 834 598 d s 751 633 m 834
+ 600 d s 649 604 m 748 633 d s 836 737 m 836 756 d s 751 633 m 751 791 d s 751
+ 791 m 834 758 d s 836 756 m 936 785 d s 938 766 m 938 786 d s 853 821 m 935 787
+ d s 751 791 m 850 820 d s 955 791 m 1011 768 d s 935 785 m 952 790 d s 1483 765
+ m 1547 783 d s 1550 733 m 1550 784 d s 1464 818 m 1547 785 d s 1424 807 m 1462
+ 818 d s 1566 743 m 1604 727 d s 1547 737 m 1564 742 d s 1566 743 m 1635 762 d s
+ 360 456 m 445 421 d s 445 421 m 445 434 d s 360 456 m 360 469 d s 360 469 m 445
+ 434 d s 445 434 m 544 462 d s 547 457 m 547 463 d s 461 498 m 544 464 d s 360
+ 469 m 461 498 d s 547 457 m 547 463 d s 547 463 m 646 492 d s 563 527 m 646 494
+ d s 461 498 m 561 526 d s 649 604 m 649 1380 d s 563 527 m 563 1415 d s 563
+ 1415 m 646 1381 d s 649 1380 m 748 1409 d s 751 791 m 751 1410 d s 665 1444 m
+ 748 1411 d s 563 1415 m 663 1444 d s 751 791 m 751 2192 d s 665 1444 m 665 2227
+ d s 665 2227 m 748 2193 d s 751 2192 m 850 2221 d s 853 821 m 853 2222 d s 767
+ 2256 m 850 2223 d s 665 2227 m 765 2256 d s 853 821 m 853 1643 d s 853 1643 m
+ 952 1671 d s 955 791 m 955 1672 d s 869 1707 m 952 1673 d s 850 1701 m 866 1706
+ d s 955 791 m 955 1166 d s 955 1166 m 1056 1195 d s 1057 769 m 1057 1195 d s
+ 971 1230 m 1056 1195 d s 952 1224 m 968 1229 d s 1057 769 m 1057 879 d s 1057
+ 879 m 1156 908 d s 1159 842 m 1159 908 d s 1073 943 m 1156 909 d s 1056 938 m
+ 1073 943 d s 1159 842 m 1159 875 d s 1159 875 m 1258 904 d s 1261 837 m 1261
+ 905 d s 1175 940 m 1258 906 d s 1120 924 m 1172 939 d s 1261 837 m 1261 1253 d
+ s 1175 940 m 1175 1288 d s 1175 1288 m 1258 1254 d s 1261 1253 m 1360 1282 d s
+ 1362 808 m 1362 1283 d s 1277 1317 m 1360 1284 d s 1175 1288 m 1274 1317 d s
+ 1362 808 m 1362 1033 d s 1362 1033 m 1462 1061 d s 1464 818 m 1464 1062 d s
+ 1379 1097 m 1462 1063 d s 1360 1091 m 1376 1096 d s 1547 750 m 1564 744 d s
+ 1583 807 m 1635 785 d s 1528 791 m 1580 806 d s 274 490 m 360 456 d s 274 490 m
+ 274 490 d c s 376 520 m 442 493 d s 274 490 m 373 519 d s 461 498 m 461 531 d s
+ 376 520 m 376 566 d s 376 566 m 461 531 d s 461 531 m 561 559 d s 478 595 m 561
+ 561 d s 376 566 m 478 595 d s 544 568 m 561 573 d s 1583 807 m 1583 807 d c s
+ 1497 841 m 1580 808 d s 1461 831 m 1495 841 d s 188 525 m 274 490 d s 274 490 m
+ 274 517 d s s 188 552 m 271 518 d s 274 517 m 373 545 d s 290 581 m 373 547 d s
+ 188 552 m 288 580 d s 376 566 m 376 763 d s 290 581 m 290 798 d s 290 798 m 373
+ 764 d s 376 763 m 478 792 d s 478 595 m 478 792 d s 392 827 m 477 793 d s 290
+ 798 m 390 826 d s 494 613 m 563 585 d s 477 608 m 492 612 d s 494 613 m 563 633
+ d s 1461 856 m 1494 843 d s 1044 177 m 2267 528 d s 1146 174 m 1146 206 d s
+ 1248 219 m 1248 235 d s 1350 233 m 1350 264 d s 1452 278 m 1452 294 d s 1553
+ 291 m 1553 323 d s 1655 336 m 1655 352 d s 1757 350 m 1757 381 d s 1859 395 m
+ 1859 411 d s 1961 408 m 1961 440 d s 2063 453 m 2063 469 d s 2165 467 m 2165
+ 498 d s 1146 174 m 1146 206 d s 1044 161 m 1044 177 d s 2165 467 m 2165 498 d s
+ 2267 512 m 2267 528 d s
+/Helvetica findfont 144 sf
+1152 71 0.00000 (4) cs
+1355 119 0.00000 (6) cs
+1559 178 0.00000 (8) cs
+1769 236 0.00000 (10) cs
+1973 295 0.00000 (12) cs
+2177 353 0.00000 (14) cs
+1044 177 m 188 525 d s 1044 145 m 1044 177 d s 958 196 m 958 212 d s 873
+ 214 m 873 246 d s 787 265 m 787 281 d s 702 284 m 702 316 d s 616 335 m 616 351
+ d s 531 354 m 531 386 d s 445 405 m 445 421 d s 360 424 m 360 456 d s 274 474 m
+ 274 490 d s 188 493 m 188 525 d s 1044 145 m 1044 177 d s 188 493 m 188 525 d s
+1036 38 0.00000 (6) cs
+865 108 0.00000 (8) cs
+686 178 0.00000 (10) cs
+515 248 0.00000 (12) cs
+343 317 0.00000 (14) cs
+172 387 0.00000 (16) cs
+188 525 m 188 2302 d 2267 2302 d 2267 528 d s 188 525 m 188 2209 d s 157
+ 525 m 188 525 d s 173 578 m 188 578 d s 173 631 m 188 631 d s 173 683 m 188 683
+ d s 173 736 m 188 736 d s 157 788 m 188 788 d s 173 841 m 188 841 d s 173 894 m
+ 188 894 d s 173 946 m 188 946 d s 173 999 m 188 999 d s 157 1051 m 188 1051 d s
+ 173 1104 m 188 1104 d s 173 1157 m 188 1157 d s 173 1209 m 188 1209 d s 173
+ 1262 m 188 1262 d s 157 1315 m 188 1315 d s 173 1367 m 188 1367 d s 173 1420 m
+ 188 1420 d s 173 1472 m 188 1472 d s 173 1525 m 188 1525 d s 157 1578 m 188
+ 1578 d s 173 1630 m 188 1630 d s 173 1683 m 188 1683 d s 173 1736 m 188 1736 d
+ s 173 1788 m 188 1788 d s 157 1841 m 188 1841 d s 173 1893 m 188 1893 d s 173
+ 1946 m 188 1946 d s 173 1999 m 188 1999 d s 173 2051 m 188 2051 d s 157 2104 m
+ 188 2104 d s 157 2104 m 188 2104 d s 173 2157 m 188 2157 d s 173 2209 m 188
+ 2209 d s
+125 504 0.00000 (0) rs
+125 767 0.00000 (40) rs
+125 1030 0.00000 (80) rs
+125 1293 0.00000 (120) rs
+125 1556 0.00000 (160) rs
+125 1820 0.00000 (200) rs
+125 2083 0.00000 (240) rs
+s 188 2209 m 514 2302 d s 2044 2302 m 2264 2213 d s 1461 856 m 1634 786
+ d s 1837 703 m 2047 617 d s 188 2209 m 514 2302 d s 2044 2302 m 2264 2213 d s
+ [4 8] 0 sd 188 788 m 562 896 d s 1055 1037 m 1173 1071 d s 1360 1125 m 1410
+ 1139 d s 1412 1139 m 1726 1011 d s 1820 973 m 2264 792 d s 188 1051 m 562 1159
+ d s 951 1270 m 1410 1402 d s 1412 1403 m 2264 1055 d s 188 1315 m 663 1451 d s
+ 951 1534 m 1410 1665 d s 1412 1666 m 2264 1318 d s 188 1578 m 663 1714 d s 850
+ 1768 m 1410 1928 d s 1412 1929 m 2264 1581 d s 188 1841 m 663 1977 d s 850 2031
+ m 1410 2191 d s 1412 2192 m 2264 1844 d s 188 2104 m 880 2302 d s 1786 2302 m
+ 2264 2107 d s [] 0 sd s s s s s s s s s s s s s s s 1412 2302 m 1412 2291 d s
+ 1412 2291 m 1412 2274 d s 1412 2274 m 1412 2257 d s 1412 2257 m 1412 2240 d s
+ 1412 2240 m 1412 2223 d s 1412 2223 m 1412 2207 d s 1412 2207 m 1412 2190 d s
+ 1412 2190 m 1412 2173 d s 1412 2173 m 1412 2156 d s 1412 2156 m 1412 2139 d s
+ 1412 2139 m 1412 2122 d s 1412 2122 m 1412 2106 d s 1412 2106 m 1412 2089 d s
+ 1412 2089 m 1412 2072 d s 1412 2072 m 1412 2055 d s 1412 2055 m 1412 2038 d s
+ 1412 2038 m 1412 2021 d s 1412 2021 m 1412 2005 d s 1412 2005 m 1412 1988 d s
+ 1412 1988 m 1412 1971 d s 1412 1971 m 1412 1954 d s 1412 1954 m 1412 1937 d s
+ 1412 1937 m 1412 1920 d s 1412 1920 m 1412 1903 d s 1412 1903 m 1412 1887 d s
+ 1412 1887 m 1412 1870 d s 1412 1870 m 1412 1853 d s 1412 1853 m 1412 1836 d s
+ 1412 1836 m 1412 1819 d s 1412 1819 m 1412 1802 d s 1412 1802 m 1412 1786 d s
+ 1412 1786 m 1412 1769 d s 1412 1769 m 1412 1752 d s 1412 1752 m 1412 1735 d s
+ 1412 1735 m 1412 1718 d s 1412 1718 m 1412 1701 d s 1412 1701 m 1412 1685 d s
+ 1412 1685 m 1412 1668 d s 1412 1668 m 1412 1651 d s 1412 1651 m 1412 1634 d s
+ 1412 1634 m 1412 1617 d s 1412 1617 m 1412 1600 d s 1412 1600 m 1412 1584 d s
+ 1412 1584 m 1412 1567 d s 1412 1567 m 1412 1550 d s 1412 1550 m 1412 1533 d s
+ 1412 1533 m 1412 1516 d s 1412 1516 m 1412 1499 d s 1412 1499 m 1412 1483 d s
+ 1412 1483 m 1412 1466 d s 1412 1466 m 1412 1449 d s 1412 1449 m 1412 1432 d s
+ 1412 1432 m 1412 1415 d s 1412 1415 m 1412 1398 d s 1412 1398 m 1412 1382 d s
+ 1412 1382 m 1412 1365 d s 1412 1365 m 1412 1348 d s 1412 1348 m 1412 1331 d s
+ 1412 1331 m 1412 1314 d s 1412 1314 m 1412 1297 d s 1412 1297 m 1412 1280 d s
+ 1412 1280 m 1412 1264 d s 1412 1264 m 1412 1247 d s 1412 1247 m 1412 1230 d s
+ 1412 1230 m 1412 1213 d s 1412 1213 m 1412 1196 d s 1412 1196 m 1412 1179 d s
+ 1412 1179 m 1412 1163 d s 1412 1163 m 1412 1146 d s 1412 1146 m 1412 1129 d s
+ 1412 1129 m 1412 1112 d s 1412 1112 m 1412 1095 d s 1412 1095 m 1412 1078 d s
+showpage grestore
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/amaya.mml b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/amaya.mml
new file mode 100644
index 00000000000..d03219b9ab5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/amaya.mml
@@ -0,0 +1,104 @@
+ <!-- MathType@Translator@5@5@MathML (Amaya).tdl@MathML -- Amaya compatible@ -->
+<math displaystyle='true'>
+ <mtable columnalign='left'>
+ <mtr>
+ <mtd>
+ <mi>f</mi><mo stretchy='false'>(</mo><mo>&isin;</mo><mo>,</mo><mi>&delta;</mi><mi>s</mi><mo stretchy='false'>)</mo><mo>=</mo><mfrac>
+ <mn>1</mn>
+ <mi>&xi;</mi>
+ </mfrac>
+ <msub>
+ <mi>&phi;</mi>
+ <mi>v</mi>
+ </msub>
+ <mo stretchy='false'>(</mo><msub>
+ <mi>&lambda;</mi>
+ <mi>v</mi>
+ </msub>
+ <mo>,</mo><mi>k</mi><mo>,</mo><msup>
+ <mi>&beta;</mi>
+ <mn>2</mn>
+ </msup>
+ <mo stretchy='false'>)</mo>
+ </mtd>
+ </mtr>
+ <mtr>
+ <mtd>
+ <msub>
+ <mi>&phi;</mi>
+ <mi>v</mi>
+ </msub>
+ <mo stretchy='false'>(</mo><msub>
+ <mi>&lambda;</mi>
+ <mi>v</mi>
+ </msub>
+ <mo>,</mo><mi>k</mi><mo>,</mo><msup>
+ <mi>&beta;</mi>
+ <mn>2</mn>
+ </msup>
+ <mo stretchy='false'>)</mo><mo>=</mo><mfrac>
+ <mn>1</mn>
+ <mrow>
+ <mn>2</mn><mi>&pi;</mi><mi>i</mi>
+ </mrow>
+ </mfrac>
+ <msubsup>
+ <mo>&int;</mo>
+ <mrow>
+ <mi>c</mi><mo>-</mo><mi>i</mi><mi>&infin;</mi>
+ </mrow>
+ <mrow>
+ <mi>c</mi><mo>+</mo><mi>i</mi><mi>&infin;</mi>
+ </mrow>
+ </msubsup>
+ <mrow>
+ <mi>&phi;</mi><mo stretchy='false'>(</mo><mi>s</mi><mo stretchy='false'>)</mo><msup>
+ <mi>e</mi>
+ <mrow>
+ <mi>&lambda;</mi><mi>s</mi>
+ </mrow>
+ </msup>
+ <mi>d</mi><mi>s</mi>
+ </mrow>
+
+ </mtd>
+ </mtr>
+ <mtr>
+ <mtd>
+ <mi>&phi;</mi><mo stretchy='false'>(</mo><mi>s</mi><mo stretchy='false'>)</mo><mo>=</mo><mtext>exp </mtext><mo stretchy='false'>[</mo><mi>k</mi><mo stretchy='false'>(</mo><mn>1</mn><mo>+</mo><msup>
+ <mi>&beta;</mi>
+ <mn>2</mn>
+ </msup>
+ <mi>&gamma;</mi><mo stretchy='false'>)</mo><mo stretchy='false'>]</mo><mtext> exp </mtext><mo stretchy='false'>[</mo><mi>&psi;</mi><mo stretchy='false'>(</mo><mi>s</mi><mo stretchy='false'>)</mo><mo stretchy='false'>]</mo>
+ </mtd>
+ </mtr>
+ <mtr>
+ <mtd>
+ <msub>
+ <mi>&lambda;</mi>
+ <mi>u</mi>
+ </msub>
+ <mo>=</mo><mi>k</mi><mrow><mo>[</mo> <mrow>
+ <mfrac>
+ <mrow>
+ <mo>&isin;</mo><mo>-</mo><mover accent='true'>
+ <mo>&isin;</mo>
+ <mo>&horbar;</mo>
+ </mover>
+
+ </mrow>
+ <mi>&xi;</mi>
+ </mfrac>
+ <mo>-</mo><mo>-</mo><msup>
+ <mi>&beta;</mi>
+ <mn>2</mn>
+ </msup>
+
+ </mrow> <mo>]</mo></mrow>
+ </mtd>
+ </mtr>
+ </mtable>
+
+</math>
+<!-- MathType@End@5@5@ -->
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsae.dtd b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsae.dtd
new file mode 100644
index 00000000000..b91f9642403
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsae.dtd
@@ -0,0 +1,259 @@
+
+<!--
+ ISOAMSA Characters alphabetically
+ Added Math Symbols: Arrow Relations Extended by MathML with aliases
+
+ Converted from HTML table at
+ http://www.w3.org/TR/REC-MathML-19980407/chap6/ISOAMSAe1.html
+
+ Copyright 1998 Nag Ltd, The OpenMath Consortium. Esprit Project 24.969.
+-->
+
+<!ENTITY angzarr "&#57928;"><!-- u+E248 angle with down zig-zag arrow ISOAMSA -->
+<!ENTITY bkarow "&#58373;"><!-- u+E405 right broken arrow MMALIAS rbarr-->
+<!ENTITY circlearrowleft "&#8634;"><!-- u+21BA left arr in circle MMALIAS olarr-->
+<!ENTITY circlearrowright "&#8635;"><!-- u+21BB right arr in circle MMALIAS orarr-->
+<!ENTITY cirmid "&#57936;"><!-- u+E250 circle, mid below ISOAMSA -->
+<!ENTITY cudarrl "&#57918;"><!-- u+E23E left, curved, down arrow ISOAMSA -->
+<!ENTITY cudarrr "&#58368;"><!-- u+E400 right, curved, down arrow ISOAMSA -->
+<!ENTITY cularr "&#8630;"><!-- u+21B6 left curved arrow ISOAMSA -->
+<!ENTITY cularrp "&#57930;"><!-- u+E24A curved left arrow with plus ISOAMSA -->
+<!ENTITY curarr "&#8631;"><!-- u+21B7 right curved arrow ISOAMSA -->
+<!ENTITY curarrm "&#57929;"><!-- u+E249 curved right arrow with minus ISOAMSA -->
+<!ENTITY curvearrowleft "&#8630;"><!-- u+21B6 left curved arrow MMALIAS cularr-->
+<!ENTITY curvearrowright "&#8631;"><!-- u+21B7 right curved arrow MMALIAS curarr-->
+<!ENTITY Darr "&#8609;"><!-- u+21A1 down two-headed arrow ISOAMSA -->
+<!ENTITY dArr "&#8659;"><!-- u+21D3 down double arrow ISOAMSA -->
+<!ENTITY dbkarow "&#57863;"><!-- u+E207 right doubly broken arrow MMALIAS rBarr-->
+<!ENTITY ddarr "&#8650;"><!-- u+21CA two down arrows ISOAMSA -->
+<!ENTITY DDotrahd "&#57912;"><!-- u+E238 right arrow with dotted stem ISOAMSA -->
+<!ENTITY dfisht "&#57932;"><!-- u+E24C down fish tail ISOAMSA -->
+<!ENTITY dHar "&#57895;"><!-- u+E227 down harpoon-left, down harpoon-right ISOAMSA -->
+<!ENTITY dharl "&#8643;"><!-- u+21C3 down harpoon-left ISOAMSA -->
+<!ENTITY dharr "&#8642;"><!-- u+21C2 down harpoon-rt ISOAMSA -->
+<!ENTITY DoubleDownArrow "&#8659;"><!-- u+21D3 down double arrow MMALIAS dArr-->
+<!ENTITY DoubleLeftRightArrow "&#8660;"><!-- u+21D4 left and right double arrow MMALIAS hArr-->
+<!ENTITY DoubleLongLeftArrow "&#57856;"><!-- u+E200 long left double arrow MMALIAS xlArr-->
+<!ENTITY DoubleLongLeftRightArrow "&#57858;"><!-- u+E202 long left and right double arr MMALIAS xhArr-->
+<!ENTITY DoubleLongRightArrow "&#57860;"><!-- u+E204 long right double arr MMALIAS xrArr-->
+<!ENTITY DoubleUpArrow "&#8657;"><!-- u+21D1 up double arrow MMALIAS uArr-->
+<!ENTITY DoubleUpDownArrow "&#8661;"><!-- u+21D5 up&down double arrow MMALIAS vArr-->
+<!ENTITY Downarrow "&#8659;"><!-- u+21D3 down double arrow MMALIAS dArr-->
+<!ENTITY DownArrowUpArrow "&#57878;"><!-- u+E216 down arrow, up arrow MMALIAS duarr-->
+<!ENTITY downdownarrows "&#8650;"><!-- u+21CA two down arrows MMALIAS ddarr-->
+<!ENTITY downharpoonleft "&#8643;"><!-- u+21C3 down harpoon-left MMALIAS dharl-->
+<!ENTITY downharpoonright "&#8642;"><!-- u+21C2 down harpoon-rt MMALIAS dharr-->
+<!ENTITY DownLeftVector "&#8637;"><!-- u+21BD left harpoon-down MMALIAS lhard-->
+<!ENTITY DownRightVector "&#8641;"><!-- u+21C1 right harpoon-down MMALIAS rhard-->
+<!ENTITY drbkarow "&#57865;"><!-- u+E209 twoheaded right broken arrow MMALIAS RBarr-->
+<!ENTITY duarr "&#57878;"><!-- u+E216 down arrow, up arrow ISOAMSA -->
+<!ENTITY duhar "&#57879;"><!-- u+E217 down harp, up harp ISOAMSA -->
+<!ENTITY dzigrarr "&#8669;"><!-- u+21DD right long zig-zag arrow ISOAMSA -->
+<!ENTITY Equilibrium "&#8652;"><!-- u+21CC right harp over l MMALIAS rlhar-->
+<!ENTITY erarr "&#57910;"><!-- u+E236 equal, right arrow below ISOAMSA -->
+<!ENTITY hArr "&#8660;"><!-- u+21D4 left and right double arrow ISOAMSA -->
+<!ENTITY harr "&#8596;"><!-- u+2194 left and right arrow ISOAMSA -->
+<!ENTITY harrcir "&#57920;"><!-- u+E240 left and right arrow with a circle ISOAMSA -->
+<!ENTITY harrw "&#8621;"><!-- u+21AD left and right arr-wavy ISOAMSA -->
+<!ENTITY hksearow "&#57867;"><!-- u+E20B SE arrow-hooked MMALIAS searhk-->
+<!ENTITY hkswarow "&#57866;"><!-- u+E20A SW arrow-hooked MMALIAS swarhk-->
+<!ENTITY hoarr "&#57923;"><!-- u+E243 horizontal open arrow ISOAMSA -->
+<!ENTITY hookleftarrow "&#8617;"><!-- u+21A9 left arrow-hooked MMALIAS larrhk-->
+<!ENTITY hookrightarrow "&#8618;"><!-- u+21AA right arrow-hooked MMALIAS rarrhk-->
+<!ENTITY imof "&#8887;"><!-- u+22B7 image of ISOAMSA -->
+<!ENTITY lAarr "&#8666;"><!-- u+21DA left triple arrow ISOAMSA -->
+<!ENTITY Larr "&#8606;"><!-- u+219E twoheadleftarrow ISOAMSA -->
+<!ENTITY larrbfs "&#57888;"><!-- u+E220 left arrow-bar, filled square ISOAMSA -->
+<!ENTITY larrfs "&#57890;"><!-- u+E222 left arrow, filled square ISOAMSA -->
+<!ENTITY larrhk "&#8617;"><!-- u+21A9 left arrow-hooked ISOAMSA -->
+<!ENTITY larrlp "&#8619;"><!-- u+21AB left arrow-looped ISOAMSA -->
+<!ENTITY larrpl "&#57919;"><!-- u+E23F left arrow, plus ISOAMSA -->
+<!ENTITY larrsim "&#57934;"><!-- u+E24E left arrow, similar ISOAMSA -->
+<!ENTITY larrtl "&#8610;"><!-- u+21A2 left arrow-tailed ISOAMSA -->
+<!ENTITY lAtail "&#57917;"><!-- u+E23D left double arrow-tail ISOAMSA -->
+<!ENTITY latail "&#57916;"><!-- u+E23C left arrow-tail ISOAMSA -->
+<!ENTITY lBarr "&#57862;"><!-- u+E206 left doubly broken arrow ISOAMSA -->
+<!ENTITY lbarr "&#58370;"><!-- u+E402 left broken arrow ISOAMSA -->
+<!ENTITY ldca "&#57882;"><!-- u+E21A left down curved arrow ISOAMSA -->
+<!ENTITY ldrdhar "&#57900;"><!-- u+E22C left harpoon-down over right harpoon-down ISOAMSA -->
+<!ENTITY ldrushar "&#57896;"><!-- u+E228 left-down-right-up harpoon ISOAMSA -->
+<!ENTITY ldsh "&#8626;"><!-- u+21B2 left down angled arrow ISOAMSA -->
+<!ENTITY LeftArrowRightArrow "&#8646;"><!-- u+21C6 left arr over right arr MMALIAS lrarr-->
+<!ENTITY leftarrowtail "&#8610;"><!-- u+21A2 left arrow-tailed MMALIAS larrtl-->
+<!ENTITY LeftDownVector "&#8643;"><!-- u+21C3 down harpoon-left MMALIAS dharl-->
+<!ENTITY leftharpoondown "&#8637;"><!-- u+21BD left harpoon-down MMALIAS lhard-->
+<!ENTITY leftharpoonup "&#8636;"><!-- u+21BC left harpoon-up MMALIAS lharu-->
+<!ENTITY leftleftarrows "&#8647;"><!-- u+21C7 two left arrows MMALIAS llarr-->
+<!ENTITY LeftRightArrow "&#8596;"><!-- u+2194 left and right arrow MMALIAS harr-->
+<!ENTITY Leftrightarrow "&#8660;"><!-- u+21D4 left and right double arrow MMALIAS hArr-->
+<!ENTITY leftrightarrow "&#8596;"><!-- u+2194 left and right arrow MMALIAS harr-->
+<!ENTITY leftrightarrows "&#8646;"><!-- u+21C6 left arr over right arr MMALIAS lrarr-->
+<!ENTITY leftrightharpoons "&#8651;"><!-- u+21CB left harp over r MMALIAS lrhar-->
+<!ENTITY leftrightsquigarrow "&#8621;"><!-- u+21AD left and right arr-wavy MMALIAS harrw-->
+<!ENTITY LeftUpVector "&#8639;"><!-- u+21BF up harpoon-left MMALIAS uharl-->
+<!ENTITY LeftVector "&#8636;"><!-- u+21BC left harpoon-up MMALIAS lharu-->
+<!ENTITY lfisht "&#57876;"><!-- u+E214 left fish tail ISOAMSA -->
+<!ENTITY lHar "&#57893;"><!-- u+E225 left harpoon-up over left harpoon-down ISOAMSA -->
+<!ENTITY lhard "&#8637;"><!-- u+21BD left harpoon-down ISOAMSA -->
+<!ENTITY lharu "&#8636;"><!-- u+21BC left harpoon-up ISOAMSA -->
+<!ENTITY lharul "&#57902;"><!-- u+E22E left harpoon-up over long dash ISOAMSA -->
+<!ENTITY llarr "&#8647;"><!-- u+21C7 two left arrows ISOAMSA -->
+<!ENTITY Lleftarrow "&#8666;"><!-- u+21DA left triple arrow MMALIAS lAarr-->
+<!ENTITY llhard "&#57905;"><!-- u+E231 left harpoon-down below long dash ISOAMSA -->
+<!ENTITY loarr "&#57922;"><!-- u+E242 left open arrow ISOAMSA -->
+<!ENTITY LongLeftArrow "&#57857;"><!-- u+E201 long left arrow MMALIAS xlarr-->
+<!ENTITY Longleftarrow "&#57856;"><!-- u+E200 long left double arrow MMALIAS xlArr-->
+<!ENTITY longleftarrow "&#57857;"><!-- u+E201 long left arrow MMALIAS xlarr-->
+<!ENTITY LongLeftRightArrow "&#57859;"><!-- u+E203 long left and right arr MMALIAS xharr-->
+<!ENTITY Longleftrightarrow "&#57858;"><!-- u+E202 long left and right double arr MMALIAS xhArr-->
+<!ENTITY longleftrightarrow "&#57859;"><!-- u+E203 long left and right arr MMALIAS xharr-->
+<!ENTITY longmapsto "&#57864;"><!-- u+E208 longmapsto MMALIAS xmap-->
+<!ENTITY LongRightArrow "&#57861;"><!-- u+E205 long right arrow MMALIAS xrarr-->
+<!ENTITY Longrightarrow "&#57860;"><!-- u+E204 long right double arr MMALIAS xrArr-->
+<!ENTITY longrightarrow "&#57861;"><!-- u+E205 long right arrow MMALIAS xrarr-->
+<!ENTITY looparrowleft "&#8619;"><!-- u+21AB left arrow-looped MMALIAS larrlp-->
+<!ENTITY looparrowright "&#8620;"><!-- u+21AC right arrow-looped MMALIAS rarrlp-->
+<!ENTITY LowerLeftArrow "&#8601;"><!-- u+2199 SW pointing arrow MMALIAS swarr-->
+<!ENTITY LowerRightArrow "&#8600;"><!-- u+2198 SE pointing arrow MMALIAS searr-->
+<!ENTITY lrarr "&#8646;"><!-- u+21C6 left arr over right arr ISOAMSA -->
+<!ENTITY lrhar "&#8651;"><!-- u+21CB left harp over r ISOAMSA -->
+<!ENTITY lrhard "&#57903;"><!-- u+E22F right harpoon-down below long dash ISOAMSA -->
+<!ENTITY Lsh "&#8624;"><!-- u+21B0 Lsh MMALIAS lsh-->
+<!ENTITY lsh "&#8624;"><!-- u+21B0 Lsh ISOAMSA -->
+<!ENTITY lurdshar "&#57897;"><!-- u+E229 left-up-right-down harpoon ISOAMSA -->
+<!ENTITY luruhar "&#57899;"><!-- u+E22B left harpoon-up over right harpoon-up ISOAMSA -->
+<!ENTITY Map "&#57874;"><!-- u+E212 twoheaded mapsto ISOAMSA -->
+<!ENTITY map "&#8614;"><!-- u+21A6 mapsto ISOAMSA -->
+<!ENTITY mapsto "&#8614;"><!-- u+21A6 mapsto MMALIAS map-->
+<!ENTITY midcir "&#57871;"><!-- u+E20F mid, circle below ISOAMSA -->
+<!ENTITY multimap "&#8888;"><!-- u+22B8 multimap MMALIAS mumap-->
+<!ENTITY mumap "&#8888;"><!-- u+22B8 multimap ISOAMSA -->
+<!ENTITY nearhk "&#57869;"><!-- u+E20D NE arrow-hooked ISOAMSA -->
+<!ENTITY neArr "&#8663;"><!-- u+21D7 NE pointing double arrow ISOAMSA -->
+<!ENTITY nearr "&#8599;"><!-- u+2197 NE pointing arrow ISOAMSA -->
+<!ENTITY nearrow "&#8599;"><!-- u+2197 NE pointing arrow MMALIAS nearr-->
+<!ENTITY nesear "&#57870;"><!-- u+E20E NE & SE arrows ISOAMSA -->
+<!ENTITY nhArr "&#8654;"><!-- u+21CE not left and right double arr ISOAMSA -->
+<!ENTITY nharr "&#8622;"><!-- u+21AE not left and right arrow ISOAMSA -->
+<!ENTITY nlArr "&#8653;"><!-- u+21CD not implied by ISOAMSA -->
+<!ENTITY nlarr "&#8602;"><!-- u+219A not left arrow ISOAMSA -->
+<!ENTITY nLeftarrow "&#8653;"><!-- u+21CD not implied by MMALIAS nlArr-->
+<!ENTITY nleftarrow "&#8602;"><!-- u+219A not left arrow MMALIAS nlarr-->
+<!ENTITY nLeftrightarrow "&#8654;"><!-- u+21CE not left and right double arr MMALIAS nhArr-->
+<!ENTITY nleftrightarrow "&#8622;"><!-- u+21AE not left and right arrow MMALIAS nharr-->
+<!ENTITY nrArr "&#8655;"><!-- u+21CF not implies ISOAMSA -->
+<!ENTITY nrarr "&#8603;"><!-- u+219B not right arrow ISOAMSA -->
+<!ENTITY nrarrc "&#57885;"><!-- u+E21D not right arrow-curved ISOAMSA -->
+<!ENTITY nrarrw "&#57883;"><!-- u+E21B not right arrow-wavy ISOAMSA -->
+<!ENTITY nRightarrow "&#8655;"><!-- u+21CF not implies MMALIAS nrArr-->
+<!ENTITY nrightarrow "&#8603;"><!-- u+219B not right arrow MMALIAS nrarr-->
+<!-- nvhArr* removed * here (DPC) -->
+<!ENTITY nvhArr "&#8654;"><!-- u+21CE not, vert, left and right double arrow ISOAMSA -->
+<!ENTITY nvlArr "&#8653;"><!-- u+21CD not, vert, left double arrow ISOAMSA -->
+<!ENTITY nvrArr "&#8655;"><!-- u+21CF not, vert, right double arrow ISOAMSA -->
+<!ENTITY nwarhk "&#57868;"><!-- u+E20C NW arrow-hooked ISOAMSA -->
+<!ENTITY nwArr "&#8662;"><!-- u+21D6 NW pointing double arrow ISOAMSA -->
+<!ENTITY nwarr "&#8598;"><!-- u+2196 NW pointing arrow ISOAMSA -->
+<!ENTITY nwarrow "&#8598;"><!-- u+2196 NW pointing arrow MMALIAS nwarr-->
+<!ENTITY nwnear "&#57873;"><!-- u+E211 NW & NE arrows ISOAMSA -->
+<!ENTITY olarr "&#8634;"><!-- u+21BA left arr in circle ISOAMSA -->
+<!ENTITY orarr "&#8635;"><!-- u+21BB right arr in circle ISOAMSA -->
+<!ENTITY origof "&#8886;"><!-- u+22B6 original of ISOAMSA -->
+<!ENTITY rAarr "&#8667;"><!-- u+21DB right triple arrow ISOAMSA -->
+<!ENTITY Rarr "&#8608;"><!-- u+21A0 twoheadrightarrow ISOAMSA -->
+<!ENTITY rarrap "&#57909;"><!-- u+E235 approximate, right arrow above ISOAMSA -->
+<!ENTITY rarrbfs "&#57889;"><!-- u+E221 right arrow-bar, filled square ISOAMSA -->
+<!ENTITY rarrc "&#57884;"><!-- u+E21C right arrow-curved ISOAMSA -->
+<!ENTITY rarrfs "&#57891;"><!-- u+E223 right arrow, filled square ISOAMSA -->
+<!ENTITY rarrhk "&#8618;"><!-- u+21AA right arrow-hooked ISOAMSA -->
+<!ENTITY rarrlp "&#8620;"><!-- u+21AC right arrow-looped ISOAMSA -->
+<!ENTITY rarrpl "&#57886;"><!-- u+E21E right arrow, plus ISOAMSA -->
+<!ENTITY rarrsim "&#57933;"><!-- u+E24D right arrow, similar ISOAMSA -->
+<!ENTITY Rarrtl "&#57913;"><!-- u+E239 right two-headed arrow with tail ISOAMSA -->
+<!ENTITY rarrtl "&#8611;"><!-- u+21A3 right arrow-tailed ISOAMSA -->
+<!ENTITY rarrw "&#8605;"><!-- u+219D right arrow-wavy ISOAMSA -->
+<!ENTITY rAtail "&#57915;"><!-- u+E23B right double arrow-tail ISOAMSA -->
+<!ENTITY ratail "&#8611;"><!-- u+21A3 right arrow-tail ISOAMSA -->
+<!ENTITY RBarr "&#57865;"><!-- u+E209 twoheaded right broken arrow ISOAMSA -->
+<!ENTITY rBarr "&#57863;"><!-- u+E207 right doubly broken arrow ISOAMSA -->
+<!ENTITY rbarr "&#58373;"><!-- u+E405 right broken arrow ISOAMSA -->
+<!ENTITY rdca "&#57881;"><!-- u+E219 right down curved arrow ISOAMSA -->
+<!ENTITY rdldhar "&#57901;"><!-- u+E22D right harpoon-down over left harpoon-down ISOAMSA -->
+<!ENTITY rdsh "&#8627;"><!-- u+21B3 right down angled arrow ISOAMSA -->
+<!ENTITY ReverseEquilibrium "&#8651;"><!-- u+21CB left harp over r MMALIAS lrhar-->
+<!ENTITY ReverseUpEquilibrium "&#57879;"><!-- u+E217 down harp, up harp MMALIAS duhar-->
+<!ENTITY rfisht "&#57877;"><!-- u+E215 right fish tail ISOAMSA -->
+<!ENTITY rHar "&#57892;"><!-- u+E224 right harpoon-up over right harpoon-down ISOAMSA -->
+<!ENTITY rhard "&#8641;"><!-- u+21C1 right harpoon-down ISOAMSA -->
+<!ENTITY rharu "&#8640;"><!-- u+21C0 right harpoon-up ISOAMSA -->
+<!ENTITY rharul "&#57904;"><!-- u+E230 right harpoon-up over long dash ISOAMSA -->
+<!ENTITY RightArrowLeftArrow "&#8644;"><!-- u+21C4 right arr over left arr MMALIAS rlarr-->
+<!ENTITY rightarrowtail "&#8611;"><!-- u+21A3 right arrow-tailed MMALIAS rarrtl-->
+<!ENTITY RightDownVector "&#8642;"><!-- u+21C2 down harpoon-rt MMALIAS dharr-->
+<!ENTITY rightharpoondown "&#8641;"><!-- u+21C1 right harpoon-down MMALIAS rhard-->
+<!ENTITY rightharpoonup "&#8640;"><!-- u+21C0 right harpoon-up MMALIAS rharu-->
+<!ENTITY rightleftarrows "&#8644;"><!-- u+21C4 right arr over left arr MMALIAS rlarr-->
+<!ENTITY rightleftharpoons "&#8652;"><!-- u+21CC right harp over l MMALIAS rlhar-->
+<!ENTITY rightrightarrows "&#8649;"><!-- u+21C9 two right arrows MMALIAS rrarr-->
+<!ENTITY rightsquigarrow "&#8605;"><!-- u+219D right arrow-wavy MMALIAS rarrw-->
+<!ENTITY RightTeeArrow "&#8614;"><!-- u+21A6 mapsto MMALIAS map-->
+<!ENTITY RightUpVector "&#8638;"><!-- u+21BE up harp-r MMALIAS uharr-->
+<!ENTITY RightVector "&#8640;"><!-- u+21C0 right harpoon-up MMALIAS rharu-->
+<!ENTITY rlarr "&#8644;"><!-- u+21C4 right arr over left arr ISOAMSA -->
+<!ENTITY rlhar "&#8652;"><!-- u+21CC right harp over l ISOAMSA -->
+<!ENTITY roarr "&#57921;"><!-- u+E241 right open arrow ISOAMSA -->
+<!ENTITY rrarr "&#8649;"><!-- u+21C9 two right arrows ISOAMSA -->
+<!ENTITY Rrightarrow "&#8667;"><!-- u+21DB right triple arrow MMALIAS rAarr-->
+<!ENTITY Rsh "&#8625;"><!-- u+21B1 Rsh MMALIAS rsh-->
+<!ENTITY rsh "&#8625;"><!-- u+21B1 Rsh ISOAMSA -->
+<!ENTITY ruluhar "&#57898;"><!-- u+E22A right harpoon-up over left harpoon-up ISOAMSA -->
+<!ENTITY searhk "&#57867;"><!-- u+E20B SE arrow-hooked ISOAMSA -->
+<!ENTITY seArr "&#8664;"><!-- u+21D8 SE pointing double arrow ISOAMSA -->
+<!ENTITY searr "&#8600;"><!-- u+2198 SE pointing arrow ISOAMSA -->
+<!ENTITY searrow "&#8600;"><!-- u+2198 SE pointing arrow MMALIAS searr-->
+<!ENTITY seswar "&#58374;"><!-- u+E406 SE & SW arrows ISOAMSA -->
+<!ENTITY ShortLeftArrow "&#57907;"><!-- u+E233 short left arrow MMALIAS slarr-->
+<!ENTITY ShortRightArrow "&#57906;"><!-- u+E232 short right arrow MMALIAS srarr-->
+<!ENTITY simrarr "&#57908;"><!-- u+E234 similar, right arrow below ISOAMSA -->
+<!ENTITY slarr "&#57907;"><!-- u+E233 short left arrow ISOAMSA -->
+<!ENTITY srarr "&#57906;"><!-- u+E232 short right arrow ISOAMSA -->
+<!ENTITY swarhk "&#57866;"><!-- u+E20A SW arrow-hooked ISOAMSA -->
+<!ENTITY swArr "&#8665;"><!-- u+21D9 SW pointing double arrow ISOAMSA -->
+<!ENTITY swarr "&#8601;"><!-- u+2199 SW pointing arrow ISOAMSA -->
+<!ENTITY swarrow "&#8601;"><!-- u+2199 SW pointing arrow MMALIAS swarr-->
+<!ENTITY swnwar "&#57872;"><!-- u+E210 SW & NW arrows ISOAMSA -->
+<!ENTITY toea "&#57870;"><!-- u+E20E NE & SE arrows MMALIAS nesear-->
+<!ENTITY tosa "&#58374;"><!-- u+E406 SE & SW arrows MMALIAS seswar-->
+<!ENTITY twoheadleftarrow "&#8606;"><!-- u+219E twoheadleftarrow MMALIAS Larr-->
+<!ENTITY twoheadrightarrow "&#8608;"><!-- u+21A0 twoheadrightarrow MMALIAS Rarr-->
+<!ENTITY Uarr "&#8607;"><!-- u+219F up two-headed arrow ISOAMSA -->
+<!ENTITY uArr "&#8657;"><!-- u+21D1 up double arrow ISOAMSA -->
+<!ENTITY Uarrocir "&#57911;"><!-- u+E237 up two-headed arrow above circle ISOAMSA -->
+<!ENTITY udarr "&#8645;"><!-- u+21C5 up arrow, down arrow ISOAMSA -->
+<!ENTITY udhar "&#57880;"><!-- u+E218 up harp, down harp ISOAMSA -->
+<!ENTITY ufisht "&#57931;"><!-- u+E24B up fish tail ISOAMSA -->
+<!ENTITY uHar "&#57894;"><!-- u+E226 up harpoon-left, up harpoon-right ISOAMSA -->
+<!ENTITY uharl "&#8639;"><!-- u+21BF up harpoon-left ISOAMSA -->
+<!ENTITY uharr "&#8638;"><!-- u+21BE up harp-r ISOAMSA -->
+<!ENTITY Uparrow "&#8657;"><!-- u+21D1 up double arrow MMALIAS uArr-->
+<!ENTITY UpArrowDownArrow "&#8645;"><!-- u+21C5 up arrow, down arrow MMALIAS udarr-->
+<!ENTITY UpDownArrow "&#8597;"><!-- u+2195 up&down arrow MMALIAS varr-->
+<!ENTITY Updownarrow "&#8661;"><!-- u+21D5 up&down double arrow MMALIAS vArr-->
+<!ENTITY updownarrow "&#8597;"><!-- u+2195 up&down arrow MMALIAS varr-->
+<!ENTITY UpEquilibrium "&#57880;"><!-- u+E218 up harp, down harp MMALIAS udhar-->
+<!ENTITY upharpoonleft "&#8639;"><!-- u+21BF up harpoon-left MMALIAS uharl-->
+<!ENTITY upharpoonright "&#8638;"><!-- u+21BE up harp-r MMALIAS uharr-->
+<!ENTITY UpperLeftArrow "&#8598;"><!-- u+2196 NW pointing arrow MMALIAS nwarr-->
+<!ENTITY UpperRightArrow "&#8599;"><!-- u+2197 NE pointing arrow MMALIAS nearr-->
+<!ENTITY upuparrows "&#8648;"><!-- u+21C8 two up arrows MMALIAS uuarr-->
+<!ENTITY uuarr "&#8648;"><!-- u+21C8 two up arrows ISOAMSA -->
+<!ENTITY vArr "&#8661;"><!-- u+21D5 up&down double arrow ISOAMSA -->
+<!ENTITY varr "&#8597;"><!-- u+2195 up&down arrow ISOAMSA -->
+<!ENTITY xhArr "&#57858;"><!-- u+E202 long left and right double arr ISOAMSA -->
+<!ENTITY xharr "&#57859;"><!-- u+E203 long left and right arr ISOAMSA -->
+<!ENTITY xlArr "&#57856;"><!-- u+E200 long left double arrow ISOAMSA -->
+<!ENTITY xlarr "&#57857;"><!-- u+E201 long left arrow ISOAMSA -->
+<!ENTITY xmap "&#57864;"><!-- u+E208 longmapsto ISOAMSA -->
+<!ENTITY xrArr "&#57860;"><!-- u+E204 long right double arr ISOAMSA -->
+<!ENTITY xrarr "&#57861;"><!-- u+E205 long right arrow ISOAMSA -->
+<!ENTITY zigrarr "&#57924;"><!-- u+E244 right zig-zag arrow ISOAMSA -->
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsbe.dtd b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsbe.dtd
new file mode 100644
index 00000000000..06a3a32437f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsbe.dtd
@@ -0,0 +1,183 @@
+
+<!--
+ ISOAMSB Characters alphabetically
+ Added Math Symbols: Binary Operators Extended by MathML with aliases
+
+ Converted from HTML table at
+ http://www.w3.org/TR/REC-MathML-19980407/chap6/ISOAMSBe1.html
+
+ Copyright 1998 Nag Ltd, The OpenMath Consortium. Esprit Project 24.969.
+-->
+
+<!ENTITY ac "&#57863;"><!-- u+E207 most positive ISOAMSB -->
+<!ENTITY acE "&#58000;"><!-- u+E290 most positive, two lines below ISOAMSB -->
+<!ENTITY amalg "&#57937;"><!-- u+E251 amalgamation or coproduct ISOAMSB -->
+<!ENTITY ast "&#0042;"><!-- u+002A centered asterisk MMALIAS midast-->
+<!ENTITY Backslash "&#8726;"><!-- u+2216 reverse solidus MMALIAS setmn-->
+<!ENTITY barvee "&#8893;"><!-- u+22BD bar, vee ISOAMSB -->
+<!ENTITY Barwed "&#8966;"><!-- u+2306 logical and, double bar above ISOAMSB -->
+<!ENTITY barwed "&#8892;"><!-- u+22BC logical and, bar above ISOAMSB -->
+<!ENTITY barwedge "&#8892;"><!-- u+22BC logical and, bar above MMALIAS barwed-->
+<!ENTITY bigcap "&#8898;"><!-- u+22C2 intersection operator MMALIAS xcap-->
+<!ENTITY bigcirc "&#9943;"><!-- u+25EF large circle MMALIAS xcirc-->
+<!ENTITY bigcup "&#8899;"><!-- u+22C3 union operator MMALIAS xcup-->
+<!ENTITY bigodot "&#8857;"><!-- u+2299 circle dot operator MMALIAS xodot-->
+<!ENTITY bigoplus "&#8853;"><!-- u+2295 circle plus operator MMALIAS xoplus-->
+<!ENTITY bigotimes "&#8855;"><!-- u+2297 circle times operator MMALIAS xotime-->
+<!ENTITY bigsqcup "&#8852;"><!-- u+2294 square union operator MMALIAS xsqcup-->
+<!ENTITY bigtriangledown "&#9661;"><!-- u+25BD big down triangle, open MMALIAS xdtri-->
+<!ENTITY bigtriangleup "&#9651;"><!-- u+25B3 big up triangle, open MMALIAS xutri-->
+<!ENTITY biguplus "&#8846;"><!-- u+228E biguplus MMALIAS xuplus-->
+<!ENTITY bigvee "&#8897;"><!-- u+22C1 logical and operator MMALIAS xvee-->
+<!ENTITY bigwedge "&#8896;"><!-- u+22C0 logical or operator MMALIAS xwedge-->
+<!ENTITY boxminus "&#8863;"><!-- u+229F minus sign in box MMALIAS minusb-->
+<!ENTITY boxplus "&#8862;"><!-- u+229E plus sign in box MMALIAS plusb-->
+<!ENTITY boxtimes "&#8864;"><!-- u+22A0 multiply sign in box MMALIAS timesb-->
+<!ENTITY bsolb "&#57984;"><!-- u+E280 reverse solidus in square ISOAMSB -->
+<!ENTITY Cap "&#8914;"><!-- u+22D2 double intersection ISOAMSB -->
+<!ENTITY capand "&#57985;"><!-- u+E281 intersection, and ISOAMSB -->
+<!ENTITY capbrcup "&#57969;"><!-- u+E271 intersection, bar, union ISOAMSB -->
+<!ENTITY capcap "&#57971;"><!-- u+E273 intersection, intersection, joined ISOAMSB -->
+<!ENTITY capcup "&#57967;"><!-- u+E26F intersection above union ISOAMSB -->
+<!ENTITY capdot "&#57953;"><!-- u+E261 intersection, with dot ISOAMSB -->
+<!ENTITY caps "&#57973;"><!-- u+E275 intersection, serifs ISOAMSB -->
+<!ENTITY ccaps "&#57977;"><!-- u+E279 closed intersection, serifs ISOAMSB -->
+<!ENTITY ccups "&#57976;"><!-- u+E278 closed union, serifs ISOAMSB -->
+<!ENTITY ccupssm "&#57978;"><!-- u+E27A closed union, serifs, smash product ISOAMSB -->
+<!ENTITY circledast "&#8859;"><!-- u+229B asterisk in circle MMALIAS oast-->
+<!ENTITY circledcirc "&#8858;"><!-- u+229A small circle in circle MMALIAS ocir-->
+<!ENTITY circleddash "&#8861;"><!-- u+229D hyphen in circle MMALIAS odash-->
+<!ENTITY CircleDot "&#8857;"><!-- u+2299 middle dot in circle MMALIAS odot-->
+<!ENTITY CircleMinus "&#8854;"><!-- u+2296 minus sign in circle MMALIAS ominus-->
+<!ENTITY CirclePlus "&#8853;"><!-- u+2295 plus sign in circle MMALIAS oplus-->
+<!ENTITY CircleTimes "&#8855;"><!-- u+2297 multiply sign in circle MMALIAS otimes-->
+<!ENTITY coprod "&#8720;"><!-- u+2210 coproduct operator ISOAMSB -->
+<!ENTITY Coproduct "&#8720;"><!-- u+2210 coproduct operator MMALIAS coprod-->
+<!ENTITY Cup "&#8915;"><!-- u+22D3 double union ISOAMSB -->
+<!ENTITY cupbrcap "&#57968;"><!-- u+E270 union, bar, intersection ISOAMSB -->
+<!ENTITY cupcap "&#57966;"><!-- u+E26E union above intersection ISOAMSB -->
+<!ENTITY cupcup "&#57970;"><!-- u+E272 union, union, joined ISOAMSB -->
+<!ENTITY cupdot "&#8845;"><!-- u+228D union, with dot ISOAMSB -->
+<!ENTITY cupor "&#57986;"><!-- u+E282 union, or ISOAMSB -->
+<!ENTITY cups "&#57972;"><!-- u+E274 union, serifs ISOAMSB -->
+<!ENTITY curlyvee "&#8910;"><!-- u+22CE curly logical or MMALIAS cuvee-->
+<!ENTITY curlywedge "&#8911;"><!-- u+22CF curly logical and MMALIAS cuwed-->
+<!ENTITY cuvee "&#8910;"><!-- u+22CE curly logical or ISOAMSB -->
+<!ENTITY cuwed "&#8911;"><!-- u+22CF curly logical and ISOAMSB -->
+<!ENTITY Dagger "&#8225;"><!-- u+2021 double dagger relation ISOAMSB -->
+<!ENTITY dagger "&#8224;"><!-- u+2020 dagger relation ISOAMSB -->
+<!ENTITY ddagger "&#8225;"><!-- u+2021 double dagger relation MMALIAS Dagger-->
+<!ENTITY diam "&#8900;"><!-- u+22C4 open diamond ISOAMSB -->
+<!ENTITY diamond "&#8900;"><!-- u+22C4 open diamond MMALIAS diam-->
+<!ENTITY divideontimes "&#8903;"><!-- u+22C7 division on times MMALIAS divonx-->
+<!ENTITY divonx "&#8903;"><!-- u+22C7 division on times ISOAMSB -->
+<!ENTITY dotminus "&#8760;"><!-- u+2238 minus sign, dot above MMALIAS minusd-->
+<!ENTITY dotplus "&#8724;"><!-- u+2214 plus sign, dot above MMALIAS plusdo-->
+<!ENTITY dotsquare "&#8865;"><!-- u+22A1 small dot in box MMALIAS sdotb-->
+<!ENTITY doublebarwedge "&#8966;"><!-- u+2306 logical and, double bar above MMALIAS Barwed-->
+<!ENTITY eplus "&#57960;"><!-- u+E268 equal, plus ISOAMSB -->
+<!ENTITY hercon "&#8889;"><!-- u+22B9 hermitian conjugate matrix ISOAMSB -->
+<!ENTITY intcal "&#8890;"><!-- u+22BA intercal ISOAMSB -->
+<!ENTITY intercal "&#8890;"><!-- u+22BA intercal MMALIAS intcal-->
+<!ENTITY Intersection "&#8898;"><!-- u+22C2 intersection operator MMALIAS xcap-->
+<!ENTITY intprod "&#57945;"><!-- u+E259 interior product MMALIAS iprod-->
+<!ENTITY iprod "&#57945;"><!-- u+E259 interior product ISOAMSB -->
+<!ENTITY leftthreetimes "&#8907;"><!-- u+22CB leftthreetimes MMALIAS lthree-->
+<!ENTITY loplus "&#57948;"><!-- u+E25C plus sign in left half circle ISOAMSB -->
+<!ENTITY lotimes "&#57950;"><!-- u+E25E multiply sign in left half circle ISOAMSB -->
+<!ENTITY lthree "&#8907;"><!-- u+22CB leftthreetimes ISOAMSB -->
+<!ENTITY ltimes "&#8905;"><!-- u+22C9 times sign, left closed ISOAMSB -->
+<!ENTITY midast "&#8727;"><!-- u+2217 centered asterisk ISOAMSB -->
+<!ENTITY minusb "&#8863;"><!-- u+229F minus sign in box ISOAMSB -->
+<!ENTITY minusd "&#8760;"><!-- u+2238 minus sign, dot above ISOAMSB -->
+<!ENTITY minusdu "&#57947;"><!-- u+E25B minus sign, dot below ISOAMSB -->
+<!ENTITY ncap "&#57988;"><!-- u+E284 bar, intersection ISOAMSB -->
+<!ENTITY ncup "&#57987;"><!-- u+E283 bar, union ISOAMSB -->
+<!ENTITY oast "&#8859;"><!-- u+229B asterisk in circle ISOAMSB -->
+<!ENTITY ocir "&#8858;"><!-- u+229A small circle in circle ISOAMSB -->
+<!ENTITY odash "&#8861;"><!-- u+229D hyphen in circle ISOAMSB -->
+<!ENTITY odiv "&#57989;"><!-- u+E285 divide in circle ISOAMSB -->
+<!ENTITY odot "&#8857;"><!-- u+2299 middle dot in circle ISOAMSB -->
+<!ENTITY odsold "&#57990;"><!-- u+E286 dot, solidus, dot in circle ISOAMSB -->
+<!ENTITY ofcir "&#57991;"><!-- u+E287 filled circle in circle ISOAMSB -->
+<!ENTITY ogt "&#57993;"><!-- u+E289 greater-than in circle ISOAMSB -->
+<!ENTITY ohbar "&#57952;"><!-- u+E260 circle with horizontal bar ISOAMSB -->
+<!ENTITY olcir "&#58377;"><!-- u+E409 large circle in circle ISOAMSB -->
+<!ENTITY olt "&#57992;"><!-- u+E288 less-than in circle ISOAMSB -->
+<!ENTITY omid "&#58378;"><!-- u+E40A vertical bar in circle ISOAMSB -->
+<!ENTITY ominus "&#8854;"><!-- u+2296 minus sign in circle ISOAMSB -->
+<!ENTITY opar "&#57994;"><!-- u+E28A parallel in circle ISOAMSB -->
+<!ENTITY operp "&#57995;"><!-- u+E28B perpendicular in circle ISOAMSB -->
+<!ENTITY oplus "&#8853;"><!-- u+2295 plus sign in circle ISOAMSB -->
+<!ENTITY oslash "&#8856;"><!-- u+2298 solidus in circle MMALIAS osol-->
+<!ENTITY osol "&#8856;"><!-- u+2298 solidus in circle ISOAMSB -->
+<!ENTITY Otimes "&#57996;"><!-- u+E28C multiply sign in double circle ISOAMSB -->
+<!ENTITY otimes "&#8855;"><!-- u+2297 multiply sign in circle ISOAMSB -->
+<!ENTITY otimesas "&#57997;"><!-- u+E28D multiply sign in circle, circumflex accent ISOAMSB -->
+<!ENTITY ovbar "&#58379;"><!-- u+E40B circle with vertical bar ISOAMSB -->
+<!ENTITY plusacir "&#57962;"><!-- u+E26A plus, circumflex accent above ISOAMSB -->
+<!ENTITY plusb "&#8862;"><!-- u+229E plus sign in box ISOAMSB -->
+<!ENTITY pluscir "&#57958;"><!-- u+E266 plus, small circle above ISOAMSB -->
+<!ENTITY plusdo "&#8724;"><!-- u+2214 plus sign, dot above ISOAMSB -->
+<!ENTITY plusdu "&#57946;"><!-- u+E25A plus sign, dot below ISOAMSB -->
+<!ENTITY pluse "&#57959;"><!-- u+E267 plus, equals ISOAMSB -->
+<!ENTITY plussim "&#57964;"><!-- u+E26C plus, similar below ISOAMSB -->
+<!ENTITY plustwo "&#57961;"><!-- u+E269 plus, two; Nim-addition ISOAMSB -->
+<!ENTITY race "&#58380;"><!-- u+E40C reverse most positive, line below ISOAMSB -->
+<!ENTITY rightthreetimes "&#8908;"><!-- u+22CC rightthreetimes MMALIAS rthree-->
+<!ENTITY roplus "&#57949;"><!-- u+E25D plus sign in right half circle ISOAMSB -->
+<!ENTITY rotimes "&#58381;"><!-- u+E40D multiply sign in right half circle ISOAMSB -->
+<!ENTITY rthree "&#8908;"><!-- u+22CC rightthreetimes ISOAMSB -->
+<!ENTITY rtimes "&#8906;"><!-- u+22CA times sign, right closed ISOAMSB -->
+<!ENTITY sdot "&#8901;"><!-- u+22C5 small middle dot ISOAMSB -->
+<!ENTITY sdotb "&#8865;"><!-- u+22A1 small dot in box ISOAMSB -->
+<!ENTITY setminus "&#8726;"><!-- u+2216 reverse solidus MMALIAS setmn-->
+<!ENTITY setmn "&#8726;"><!-- u+2216 reverse solidus ISOAMSB -->
+<!ENTITY simplus "&#57963;"><!-- u+E26B plus, similar above ISOAMSB -->
+<!ENTITY smallsetminus "&#59460;"><!-- u+E844 sm reverse solidus MMALIAS ssetmn-->
+<!ENTITY smashp "&#57956;"><!-- u+E264 smash product ISOAMSB -->
+<!ENTITY solb "&#57983;"><!-- u+E27F solidus in square ISOAMSB -->
+<!ENTITY sqcap "&#8851;"><!-- u+2293 square intersection ISOAMSB -->
+<!ENTITY sqcaps "&#57975;"><!-- u+E277 square intersection, serifs ISOAMSB -->
+<!ENTITY sqcup "&#8852;"><!-- u+2294 square union ISOAMSB -->
+<!ENTITY sqcups "&#57974;"><!-- u+E276 square union, serifs ISOAMSB -->
+<!ENTITY SquareIntersection "&#8851;"><!-- u+2293 square intersection MMALIAS sqcap-->
+<!ENTITY SquareUnion "&#8852;"><!-- u+2294 square union MMALIAS sqcup-->
+<!ENTITY ssetmn "&#59460;"><!-- u+E844 sm reverse solidus ISOAMSB -->
+<!ENTITY sstarf "&#8902;"><!-- u+22C6 small star, filled, low ISOAMSB -->
+<!ENTITY Star "&#8902;"><!-- u+22C6 small star, filled, low MMALIAS sstarf-->
+<!ENTITY star "&#8902;"><!-- u+22C6 small star, filled, low MMALIAS sstarf-->
+<!ENTITY subdot "&#57954;"><!-- u+E262 subset, with dot ISOAMSB -->
+<!ENTITY Sum "&#8721;"><!-- u+2211 summation operator MMALIAS sum-->
+<!ENTITY sum "&#8721;"><!-- u+2211 summation operator ISOAMSB -->
+<!ENTITY supdot "&#57955;"><!-- u+E263 superset, with dot ISOAMSB -->
+<!ENTITY timesb "&#8864;"><!-- u+22A0 multiply sign in box ISOAMSB -->
+<!ENTITY timesbar "&#57998;"><!-- u+E28E multiply sign, bar below ISOAMSB -->
+<!ENTITY timesd "&#57965;"><!-- u+E26D times, dot ISOAMSB -->
+<!ENTITY tridot "&#9708;"><!-- u+25EC dot in triangle ISOAMSB -->
+<!ENTITY triminus "&#57980;"><!-- u+E27C minus in triangle ISOAMSB -->
+<!ENTITY triplus "&#57979;"><!-- u+E27B plus in triangle ISOAMSB -->
+<!ENTITY trisb "&#57982;"><!-- u+E27E triangle, serifs at bottom ISOAMSB -->
+<!ENTITY tritime "&#57981;"><!-- u+E27D multiply in triangle ISOAMSB -->
+<!ENTITY Union "&#8899;"><!-- u+22C3 union operator MMALIAS xcup-->
+<!ENTITY UnionPlus "&#8846;"><!-- u+228E plus sign in union MMALIAS uplus-->
+<!ENTITY uplus "&#8846;"><!-- u+228E plus sign in union ISOAMSB -->
+<!ENTITY Vee "&#8897;"><!-- u+22C1 logical and operator MMALIAS xvee-->
+<!ENTITY veebar "&#8891;"><!-- u+22BB logical or, bar below ISOAMSB -->
+<!ENTITY VerticalTilde "&#8768;"><!-- u+2240 wreath product MMALIAS wreath-->
+<!ENTITY wedbar "&#57957;"><!-- u+E265 wedge, bar below ISOAMSB -->
+<!ENTITY Wedge "&#8896;"><!-- u+22C0 logical or operator MMALIAS xwedge-->
+<!ENTITY wr "&#8768;"><!-- u+2240 wreath product MMALIAS wreath-->
+<!ENTITY wreath "&#8768;"><!-- u+2240 wreath product ISOAMSB -->
+<!ENTITY xcap "&#8898;"><!-- u+22C2 intersection operator ISOAMSB -->
+<!ENTITY xcirc "&#9943;"><!-- u+25EF large circle ISOAMSB -->
+<!ENTITY xcup "&#8899;"><!-- u+22C3 union operator ISOAMSB -->
+<!ENTITY xdtri "&#9661;"><!-- u+25BD big down triangle, open ISOAMSB -->
+<!ENTITY xodot "&#8857;"><!-- u+2299 circle dot operator ISOAMSB -->
+<!ENTITY xoplus "&#8853;"><!-- u+2295 circle plus operator ISOAMSB -->
+<!ENTITY xotime "&#8855;"><!-- u+2297 circle times operator ISOAMSB -->
+<!ENTITY xsqcup "&#8852;"><!-- u+2294 square union operator ISOAMSB -->
+<!ENTITY xuplus "&#8846;"><!-- u+228E biguplus ISOAMSB -->
+<!ENTITY xutri "&#9651;"><!-- u+25B3 big up triangle, open ISOAMSB -->
+<!ENTITY xvee "&#8897;"><!-- u+22C1 logical and operator ISOAMSB -->
+<!ENTITY xwedge "&#8896;"><!-- u+22C0 logical or operator ISOAMSB -->
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsce.dtd b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsce.dtd
new file mode 100644
index 00000000000..d9e80b6d1f8
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsce.dtd
@@ -0,0 +1,43 @@
+
+<!--
+ ISOAMSC Characters alphabetically
+ Added Math Symbols: Delimiters Extended by MathML with aliases
+
+ Converted from HTML table at
+ http://www.w3.org/TR/REC-MathML-19980407/chap6/ISOAMSCe1.html
+
+ Copyright 1998 Nag Ltd, The OpenMath Consortium. Esprit Project 24.969.
+-->
+
+<!ENTITY dlcorn "&#8990;"><!-- u+231E lower left corner ISOAMSC -->
+<!ENTITY drcorn "&#8991;"><!-- u+231F lower right corner ISOAMSC -->
+<!ENTITY gtlPar "&#58006;"><!-- u+E296 double left parenthesis, greater ISOAMSC -->
+<!ENTITY langd "&#58007;"><!-- u+E297 left angle, dot ISOAMSC -->
+<!ENTITY lbrke "&#58009;"><!-- u+E299 left bracket, equal ISOAMSC -->
+<!ENTITY lbrksld "&#58013;"><!-- u+E29D left bracket, solidus bottom corner ISOAMSC -->
+<!ENTITY lbrkslu "&#58011;"><!-- u+E29B left bracket, solidus top corner ISOAMSC -->
+<!ENTITY lceil "&#8968;"><!-- u+2308 left ceiling ISOAMSC -->
+<!ENTITY LeftCeiling "&#8968;"><!-- u+2308 left ceiling MMALIAS lceil-->
+<!ENTITY LeftFloor "&#8970;"><!-- u+230A left floor MMALIAS lfloor-->
+<!ENTITY lfloor "&#8970;"><!-- u+230A left floor ISOAMSC -->
+<!ENTITY llcorner "&#8990;"><!-- u+231E lower left corner MMALIAS dlcorn-->
+<!ENTITY lmoust "&#58004;"><!-- u+E294 left moustache ISOAMSC -->
+<!ENTITY lmoustache "&#58004;"><!-- u+E294 left moustache MMALIAS lmoust-->
+<!ENTITY lparlt "&#58002;"><!-- u+E292 left parenthesis, lt ISOAMSC -->
+<!ENTITY lrcorner "&#8991;"><!-- u+231F lower right corner MMALIAS drcorn-->
+<!ENTITY ltrPar "&#58005;"><!-- u+E295 double right parenthesis, less ISOAMSC -->
+<!ENTITY rangd "&#58008;"><!-- u+E298 right angle, dot ISOAMSC -->
+<!ENTITY rbrke "&#58010;"><!-- u+E29A right bracket, equal ISOAMSC -->
+<!ENTITY rbrksld "&#58012;"><!-- u+E29C right bracket, solidus bottom corner ISOAMSC -->
+<!ENTITY rbrkslu "&#58014;"><!-- u+E29E right bracket, solidus top corner ISOAMSC -->
+<!ENTITY rceil "&#8969;"><!-- u+2309 right ceiling ISOAMSC -->
+<!ENTITY rfloor "&#8971;"><!-- u+230B right floor ISOAMSC -->
+<!ENTITY RightCeiling "&#8969;"><!-- u+2309 right ceiling MMALIAS rceil-->
+<!ENTITY RightFloor "&#8971;"><!-- u+230B right floor MMALIAS rfloor-->
+<!ENTITY rmoust "&#58003;"><!-- u+E293 right moustache ISOAMSC -->
+<!ENTITY rmoustache "&#58003;"><!-- u+E293 right moustache MMALIAS rmoust-->
+<!ENTITY rpargt "&#58001;"><!-- u+E291 right paren, gt ISOAMSC -->
+<!ENTITY ulcorn "&#8988;"><!-- u+231C upper left corner ISOAMSC -->
+<!ENTITY ulcorner "&#8988;"><!-- u+231C upper left corner MMALIAS ulcorn-->
+<!ENTITY urcorn "&#8989;"><!-- u+231D upper right corner ISOAMSC -->
+<!ENTITY urcorner "&#8989;"><!-- u+231D upper right corner MMALIAS urcorn-->
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsne.dtd b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsne.dtd
new file mode 100644
index 00000000000..2994a67477e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsne.dtd
@@ -0,0 +1,187 @@
+
+<!--
+ ISOAMSN Characters alphabetically
+ Added Math Symbols: Negated Relations Extended by MathML with aliases
+
+ Converted from HTML table at
+ http://www.w3.org/TR/REC-MathML-19980407/chap6/ISOAMSNe1.html
+
+ Copyright 1998 Nag Ltd, The OpenMath Consortium. Esprit Project 24.969.
+-->
+
+<!ENTITY gnap "&#58385;"><!-- u+E411 greater, not approximate ISOAMSN -->
+<!ENTITY gnapprox "&#58385;"><!-- u+E411 greater, not approximate MMALIAS gnap-->
+<!ENTITY gnE "&#8809;"><!-- u+2269 greater, not double equals ISOAMSN -->
+<!ENTITY gne "&#8809;"><!-- u+2269 greater, not equals ISOAMSN -->
+<!ENTITY gneq "&#8809;"><!-- u+2269 greater, not equals MMALIAS gne-->
+<!ENTITY gneqq "&#8809;"><!-- u+2269 greater, not double equals MMALIAS gnE-->
+<!ENTITY gnsim "&#8935;"><!-- u+22E7 greater, not similar ISOAMSN -->
+<!ENTITY gvertneqq "&#58017;"><!-- u+E2A1 gt, vert, not double equals MMALIAS gvnE-->
+<!ENTITY gvnE "&#58017;"><!-- u+E2A1 gt, vert, not double equals ISOAMSN -->
+<!ENTITY lnap "&#58018;"><!-- u+E2A2 less, not approximate ISOAMSN -->
+<!ENTITY lnapprox "&#58018;"><!-- u+E2A2 less, not approximate MMALIAS lnap-->
+<!ENTITY lnE "&#8808;"><!-- u+2268 less, not double equals ISOAMSN -->
+<!ENTITY lne "&#8808;"><!-- u+2268 less, not equals ISOAMSN -->
+<!ENTITY lneq "&#8808;"><!-- u+2268 less, not equals MMALIAS lne-->
+<!ENTITY lneqq "&#8808;"><!-- u+2268 less, not double equals MMALIAS lnE-->
+<!ENTITY lnsim "&#8934;"><!-- u+22E6 less, not similar ISOAMSN -->
+<!ENTITY lvertneqq "&#58020;"><!-- u+E2A4 less, vert, not double equals MMALIAS lvnE-->
+<!ENTITY lvnE "&#58020;"><!-- u+E2A4 less, vert, not double equals ISOAMSN -->
+<!ENTITY nap "&#8777;"><!-- u+2249 not approximate ISOAMSN -->
+<!ENTITY napE "&#58055;"><!-- u+E2C7 not approximately equal or equal to ISOAMSN -->
+<!ENTITY napid "&#58044;"><!-- u+E2BC not approximately identical to ISOAMSN -->
+<!ENTITY napprox "&#8777;"><!-- u+2249 not approximate MMALIAS nap-->
+<!ENTITY ncong "&#8775;"><!-- u+2247 not congruent with ISOAMSN -->
+<!ENTITY ncongdot "&#58053;"><!-- u+E2C5 not congruent, dot ISOAMSN -->
+<!ENTITY nequiv "&#8802;"><!-- u+2262 not identical with ISOAMSN -->
+<!ENTITY ngE "&#8817;"><!-- u+2271 not greater, double equals ISOAMSN -->
+<!ENTITY nge "&#58022;"><!-- u+E2A6 not greater-than-or-equal ISOAMSN -->
+<!ENTITY ngeq "&#58022;"><!-- u+E2A6 not greater-than-or-equal MMALIAS nge-->
+<!ENTITY ngeqq "&#8817;"><!-- u+2271 not greater, double equals MMALIAS ngE-->
+<!ENTITY ngeqslant "&#8817;"><!-- u+2271 not gt-or-equals, slanted MMALIAS nges-->
+<!ENTITY nges "&#8817;"><!-- u+2271 not gt-or-equals, slanted ISOAMSN -->
+<!ENTITY nGg "&#58062;"><!-- u+E2CE not triple greater than ISOAMSN -->
+<!ENTITY ngsim "&#8821;"><!-- u+2275 not greater, similar ISOAMSN -->
+<!ENTITY nGt "&#58058;"><!-- u+E2CA not, vert, much greater than ISOAMSN -->
+<!ENTITY ngt "&#8815;"><!-- u+226F not greater-than ISOAMSN -->
+<!ENTITY ngtr "&#8815;"><!-- u+226F not greater-than MMALIAS ngt-->
+<!ENTITY nGtv "&#58060;"><!-- u+E2CC not much greater than, variant ISOAMSN -->
+<!ENTITY nlE "&#8816;"><!-- u+2270 not less, double equals ISOAMSN -->
+<!ENTITY nle "&#58023;"><!-- u+E2A7 not less-than-or-equal ISOAMSN -->
+<!ENTITY nleq "&#58023;"><!-- u+E2A7 not less-than-or-equal MMALIAS nle-->
+<!ENTITY nleqq "&#8816;"><!-- u+2270 not less, double equals MMALIAS nlE-->
+<!ENTITY nleqslant "&#8816;"><!-- u+2270 not less-or-equals, slant MMALIAS nles-->
+<!ENTITY nles "&#8816;"><!-- u+2270 not less-or-equals, slant ISOAMSN -->
+<!ENTITY nless "&#8814;"><!-- u+226E not less-than MMALIAS nlt-->
+<!ENTITY nLl "&#58061;"><!-- u+E2CD not triple less than ISOAMSN -->
+<!ENTITY nlsim "&#8820;"><!-- u+2274 not less, similar ISOAMSN -->
+<!ENTITY nLt "&#58057;"><!-- u+E2C9 not, vert, much less than ISOAMSN -->
+<!ENTITY nlt "&#8814;"><!-- u+226E not less-than ISOAMSN -->
+<!ENTITY nltri "&#8938;"><!-- u+22EA not left triangle ISOAMSN -->
+<!ENTITY nltrie "&#8940;"><!-- u+22EC not left triangle, equals ISOAMSN -->
+<!ENTITY nLtv "&#58059;"><!-- u+E2CB not much less than, variant ISOAMSN -->
+<!ENTITY nmid "&#8740;"><!-- u+2224 negated mid ISOAMSN -->
+<!ENTITY NotCongruent "&#8802;"><!-- u+2262 not identical with MMALIAS nequiv-->
+<!ENTITY NotDoubleVerticalBar "&#8742;"><!-- u+2226 not parallel MMALIAS npar-->
+<!ENTITY NotGreater "&#8815;"><!-- u+226F not greater-than MMALIAS ngt-->
+<!ENTITY NotGreaterEqual "&#58022;"><!-- u+E2A6 not greater-than-or-equal MMALIAS nge-->
+<!ENTITY NotGreaterFullEqual "&#8817;"><!-- u+2271 not greater, double equals MMALIAS ngE-->
+<!ENTITY NotGreaterGreater "&#58060;"><!-- u+E2CC not much greater than, variant MMALIAS nGtv-->
+<!ENTITY NotGreaterLess "&#8825;"><!-- u+2279 not, vert, greater, less MMALIAS ntvgl-->
+<!ENTITY NotGreaterSlantEqual "&#8817;"><!-- u+2271 not gt-or-equals, slanted MMALIAS nges-->
+<!ENTITY NotGreaterTilde "&#8821;"><!-- u+2275 not greater, similar MMALIAS ngsim-->
+<!ENTITY NotLeftTriangle "&#8938;"><!-- u+22EA not left triangle MMALIAS nltri-->
+<!ENTITY NotLeftTriangleEqual "&#8940;"><!-- u+22EC not left triangle, equals MMALIAS nltrie-->
+<!ENTITY NotLess "&#8814;"><!-- u+226E not less-than MMALIAS nlt-->
+<!ENTITY NotLessEqual "&#58023;"><!-- u+E2A7 not less-than-or-equal MMALIAS nle-->
+<!ENTITY NotLessFullEqual "&#8816;"><!-- u+2270 not less, double equals MMALIAS nlE-->
+<!ENTITY NotLessGreater "&#8824;"><!-- u+2278 not, vert, less, greater MMALIAS ntvlg-->
+<!ENTITY NotLessLess "&#58059;"><!-- u+E2CB not much less than, variant MMALIAS nLtv-->
+<!ENTITY NotLessSlantEqual "&#8816;"><!-- u+2270 not less-or-equals, slant MMALIAS nles-->
+<!ENTITY NotLessTilde "&#8820;"><!-- u+2274 not less, similar MMALIAS nlsim-->
+<!ENTITY NotPrecedes "&#8832;"><!-- u+2280 not precedes MMALIAS npr-->
+<!ENTITY NotPrecedesEqual "&#58386;"><!-- u+E412 not precedes, equals MMALIAS npre-->
+<!ENTITY NotPrecedesSlantEqual "&#8928;"><!-- u+22E0 not curly precedes, equals MMALIAS nprcue-->
+<!ENTITY NotRightTriangle "&#8939;"><!-- u+22EB not right triangle MMALIAS nrtri-->
+<!ENTITY NotRightTriangleEqual "&#8941;"><!-- u+22ED not right triangle, equals MMALIAS nrtrie-->
+<!ENTITY NotSquareSubsetEqual "&#8930;"><!-- u+22E2 not, square subset, equals MMALIAS nsqsube-->
+<!ENTITY NotSquareSupersetEqual "&#8931;"><!-- u+22E3 not, square superset, equals MMALIAS nsqsupe-->
+<!ENTITY NotSubset "&#8836;"><!-- u+2284 not subset, variant MMALIAS vnsub-->
+<!ENTITY NotSucceeds "&#8833;"><!-- u+2281 not succeeds MMALIAS nsc-->
+<!ENTITY NotSucceedsEqual "&#58387;"><!-- u+E413 not succeeds, equals MMALIAS nsce-->
+<!ENTITY NotSucceedsSlantEqual "&#8929;"><!-- u+22E1 not succeeds, curly equals MMALIAS nsccue-->
+<!ENTITY NotSuperset "&#8837;"><!-- u+2285 not superset, variant MMALIAS vnsup-->
+<!ENTITY NotTilde "&#8769;"><!-- u+2241 not similar MMALIAS nsim-->
+<!ENTITY NotTildeEqual "&#8772;"><!-- u+2244 not similar, equals MMALIAS nsime-->
+<!ENTITY NotTildeFullEqual "&#8775;"><!-- u+2247 not congruent with MMALIAS ncong-->
+<!ENTITY NotTildeTilde "&#8777;"><!-- u+2249 not approximate MMALIAS nap-->
+<!ENTITY NotVerticalBar "&#8740;"><!-- u+2224 negated mid MMALIAS nmid-->
+<!ENTITY npar "&#8742;"><!-- u+2226 not parallel ISOAMSN -->
+<!ENTITY nparallel "&#8742;"><!-- u+2226 not parallel MMALIAS npar-->
+<!ENTITY npr "&#8832;"><!-- u+2280 not precedes ISOAMSN -->
+<!ENTITY nprcue "&#8928;"><!-- u+22E0 not curly precedes, equals ISOAMSN -->
+<!ENTITY npre "&#58386;"><!-- u+E412 not precedes, equals ISOAMSN -->
+<!ENTITY nprec "&#8832;"><!-- u+2280 not precedes MMALIAS npr-->
+<!ENTITY npreceq "&#58386;"><!-- u+E412 not precedes, equals MMALIAS npre-->
+<!ENTITY nrtri "&#8939;"><!-- u+22EB not right triangle ISOAMSN -->
+<!ENTITY nrtrie "&#8941;"><!-- u+22ED not right triangle, equals ISOAMSN -->
+<!ENTITY nsc "&#8833;"><!-- u+2281 not succeeds ISOAMSN -->
+<!ENTITY nsccue "&#8929;"><!-- u+22E1 not succeeds, curly equals ISOAMSN -->
+<!ENTITY nsce "&#58387;"><!-- u+E413 not succeeds, equals ISOAMSN -->
+<!ENTITY nshortmid "&#58026;"><!-- u+E2AA negated short mid MMALIAS nsmid-->
+<!ENTITY nshortparallel "&#58027;"><!-- u+E2AB not short par MMALIAS nspar-->
+<!ENTITY nsim "&#8769;"><!-- u+2241 not similar ISOAMSN -->
+<!ENTITY nsime "&#8772;"><!-- u+2244 not similar, equals ISOAMSN -->
+<!ENTITY nsimeq "&#8772;"><!-- u+2244 not similar, equals MMALIAS nsime-->
+<!ENTITY nsmid "&#58026;"><!-- u+E2AA negated short mid ISOAMSN -->
+<!ENTITY nspar "&#58027;"><!-- u+E2AB not short par ISOAMSN -->
+<!ENTITY nsqsube "&#8930;"><!-- u+22E2 not, square subset, equals ISOAMSN -->
+<!ENTITY nsqsupe "&#8931;"><!-- u+22E3 not, square superset, equals ISOAMSN -->
+<!ENTITY nsub "&#8836;"><!-- u+2284 not subset ISOAMSN -->
+<!ENTITY nsubE "&#8840;"><!-- u+2288 not subset, double equals ISOAMSN -->
+<!ENTITY nsube "&#8840;"><!-- u+2288 not subset, equals ISOAMSN -->
+<!ENTITY nsubset "&#8836;"><!-- u+2284 not subset, variant MMALIAS vnsub-->
+<!ENTITY nsubseteq "&#8840;"><!-- u+2288 not subset, equals MMALIAS nsube-->
+<!ENTITY nsubseteqq "&#8840;"><!-- u+2288 not subset, double equals MMALIAS nsubE-->
+<!ENTITY nsucc "&#8833;"><!-- u+2281 not succeeds MMALIAS nsc-->
+<!ENTITY nsucceq "&#58387;"><!-- u+E413 not succeeds, equals MMALIAS nsce-->
+<!ENTITY nsup "&#8837;"><!-- u+2285 not superset ISOAMSN -->
+<!ENTITY nsupE "&#8841;"><!-- u+2289 not superset, double equals ISOAMSN -->
+<!ENTITY nsupe "&#8841;"><!-- u+2289 not superset, equals ISOAMSN -->
+<!ENTITY nsupset "&#8837;"><!-- u+2285 not superset, variant MMALIAS vnsup-->
+<!ENTITY nsupseteq "&#8841;"><!-- u+2289 not superset, equals MMALIAS nsupe-->
+<!ENTITY nsupseteqq "&#8841;"><!-- u+2289 not superset, double equals MMALIAS nsupE-->
+<!ENTITY ntgl "&#8825;"><!-- u+2279 not greater, less ISOAMSN -->
+<!ENTITY ntlg "&#8824;"><!-- u+2278 not less, greater ISOAMSN -->
+<!ENTITY ntriangleleft "&#8938;"><!-- u+22EA not left triangle MMALIAS nltri-->
+<!ENTITY ntrianglelefteq "&#8940;"><!-- u+22EC not left triangle, equals MMALIAS nltrie-->
+<!ENTITY ntriangleright "&#8939;"><!-- u+22EB not right triangle MMALIAS nrtri-->
+<!ENTITY ntrianglerighteq "&#8941;"><!-- u+22ED not right triangle, equals MMALIAS nrtrie-->
+<!ENTITY ntvgl "&#8825;"><!-- u+2279 not, vert, greater, less ISOAMSN -->
+<!ENTITY ntvlg "&#8824;"><!-- u+2278 not, vert, less, greater ISOAMSN -->
+<!ENTITY nvap "&#58054;"><!-- u+E2C6 not, vert, approximate ISOAMSN -->
+<!ENTITY nVDash "&#8879;"><!-- u+22AF not double vert, double dash ISOAMSN -->
+<!ENTITY nVdash "&#8878;"><!-- u+22AE not double vertical, dash ISOAMSN -->
+<!ENTITY nvDash "&#8877;"><!-- u+22AD not vertical, double dash ISOAMSN -->
+<!ENTITY nvdash "&#8876;"><!-- u+22AC not vertical, dash ISOAMSN -->
+<!ENTITY nvge "&#8817;"><!-- u+2271 not, vert, greater-than-or-equal ISOAMSN -->
+<!ENTITY nvgt "&#8815;"><!-- u+226F not, vert, greater-than ISOAMSN -->
+<!ENTITY nvle "&#8816;"><!-- u+2270 not, vert, less-than-or-equal ISOAMSN -->
+<!ENTITY nvlt "&#8814;"><!-- u+226E not, vert, less-than ISOAMSN -->
+<!ENTITY nvltrie "&#58064;"><!-- u+E2D0 not, vert, left triangle, equals ISOAMSN -->
+<!ENTITY nvrtrie "&#58063;"><!-- u+E2CF not, vert, right triangle, equals ISOAMSN -->
+<!ENTITY nvsim "&#58389;"><!-- u+E415 not, vert, similar ISOAMSN -->
+<!ENTITY parsim "&#58056;"><!-- u+E2C8 parallel, similar ISOAMSN -->
+<!ENTITY precnapprox "&#8936;"><!-- u+22E8 precedes, not approx MMALIAS prnap-->
+<!ENTITY precneqq "&#58035;"><!-- u+E2B3 precedes, not double equals MMALIAS prnE-->
+<!ENTITY precnsim "&#8936;"><!-- u+22E8 precedes, not similar MMALIAS prnsim-->
+<!ENTITY prnap "&#8936;"><!-- u+22E8 precedes, not approx ISOAMSN -->
+<!ENTITY prnE "&#58035;"><!-- u+E2B3 precedes, not double equals ISOAMSN -->
+<!ENTITY prnsim "&#8936;"><!-- u+22E8 precedes, not similar ISOAMSN -->
+<!ENTITY rnmid "&#58065;"><!-- u+E2D1 reverse nmid ISOAMSN -->
+<!ENTITY scnap "&#8937;"><!-- u+22E9 succeeds, not approx ISOAMSN -->
+<!ENTITY scnE "&#58037;"><!-- u+E2B5 succeeds, not double equals ISOAMSN -->
+<!ENTITY scnsim "&#8937;"><!-- u+22E9 succeeds, not similar ISOAMSN -->
+<!ENTITY simne "&#8774;"><!-- u+2246 similar, not equals ISOAMSN -->
+<!ENTITY solbar "&#58390;"><!-- u+E416 solidus, bar through ISOAMSN -->
+<!ENTITY subnE "&#8842;"><!-- u+228A subset, not double equals ISOAMSN -->
+<!ENTITY subne "&#8842;"><!-- u+228A subset, not equals ISOAMSN -->
+<!ENTITY subsetneq "&#8842;"><!-- u+228A subset, not equals MMALIAS subne-->
+<!ENTITY subsetneqq "&#8842;"><!-- u+228A subset, not double equals MMALIAS subnE-->
+<!ENTITY succnapprox "&#8937;"><!-- u+22E9 succeeds, not approx MMALIAS scnap-->
+<!ENTITY succneqq "&#58037;"><!-- u+E2B5 succeeds, not double equals MMALIAS scnE-->
+<!ENTITY succnsim "&#8937;"><!-- u+22E9 succeeds, not similar MMALIAS scnsim-->
+<!ENTITY supnE "&#8843;"><!-- u+228B superset, not double equals ISOAMSN -->
+<!ENTITY supne "&#8843;"><!-- u+228B superset, not equals ISOAMSN -->
+<!ENTITY supsetneq "&#8843;"><!-- u+228B superset, not equals MMALIAS supne-->
+<!ENTITY supsetneqq "&#8843;"><!-- u+228B superset, not double equals MMALIAS supnE-->
+<!ENTITY varsubsetneq "&#58041;"><!-- u+E2B9 subset, not equals, variant MMALIAS vsubne-->
+<!ENTITY varsubsetneqq "&#58040;"><!-- u+E2B8 subset not double equals, variant MMALIAS vsubnE-->
+<!ENTITY varsupsetneq "&#58042;"><!-- u+E2BA superset, not equals, variant MMALIAS vsupne-->
+<!ENTITY varsupsetneqq "&#58043;"><!-- u+E2BB super not double equals, variant MMALIAS vsupnE-->
+<!ENTITY vnsub "&#8836;"><!-- u+2284 not subset, variant ISOAMSN -->
+<!ENTITY vnsup "&#8837;"><!-- u+2285 not superset, variant ISOAMSN -->
+<!ENTITY vsubnE "&#58040;"><!-- u+E2B8 subset not double equals, variant ISOAMSN -->
+<!ENTITY vsubne "&#58041;"><!-- u+E2B9 subset, not equals, variant ISOAMSN -->
+<!ENTITY vsupnE "&#58043;"><!-- u+E2BB super not double equals, variant ISOAMSN -->
+<!ENTITY vsupne "&#58042;"><!-- u+E2BA superset, not equals, variant ISOAMSN -->
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsoe.dtd b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsoe.dtd
new file mode 100644
index 00000000000..1521b88697b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsoe.dtd
@@ -0,0 +1,77 @@
+
+<!--
+ ISOAMSO Characters alphabetically
+ Added Math Symbols: Ordinary Extended by MathML with aliases
+
+ Converted from HTML table at
+ http://www.w3.org/TR/REC-MathML-19980407/chap6/ISOAMSOe1.html
+
+ Copyright 1998 Nag Ltd, The OpenMath Consortium. Esprit Project 24.969.
+-->
+
+<!ENTITY ang "&#8736;"><!-- u+2220 angle ISOAMSO -->
+<!ENTITY ange "&#58070;"><!-- u+E2D6 angle, equal ISOAMSO -->
+<!ENTITY angle "&#8736;"><!-- u+2220 angle MMALIAS ang-->
+<!ENTITY angmsd "&#8737;"><!-- u+2221 angle-measured ISOAMSO -->
+<!ENTITY angmsdaa "&#58073;"><!-- u+E2D9 angle-measured, arrow, up, right ISOAMSO -->
+<!ENTITY angmsdab "&#58074;"><!-- u+E2DA angle-measured, arrow, up, left ISOAMSO -->
+<!ENTITY angmsdac "&#58075;"><!-- u+E2DB angle-measured, arrow, down, right ISOAMSO -->
+<!ENTITY angmsdad "&#58076;"><!-- u+E2DC angle-measured, arrow, down, left ISOAMSO -->
+<!ENTITY angmsdae "&#58077;"><!-- u+E2DD angle-measured, arrow, right, up ISOAMSO -->
+<!ENTITY angmsdaf "&#58078;"><!-- u+E2DE angle-measured, arrow, left, up ISOAMSO -->
+<!ENTITY angmsdag "&#58079;"><!-- u+E2DF angle-measured, arrow, right, down ISOAMSO -->
+<!ENTITY angmsdah "&#58080;"><!-- u+E2E0 angle-measured, arrow, left, down ISOAMSO -->
+<!ENTITY angrtvb "&#58392;"><!-- u+E418 right angle-measured ISOAMSO -->
+<!ENTITY angrtvbd "&#58081;"><!-- u+E2E1 right angle-measured, dot ISOAMSO -->
+<!ENTITY backprime "&#8245;"><!-- u+2035 reverse prime MMALIAS bprime-->
+<!ENTITY bbrk "&#58094;"><!-- u+E2EE bottom square bracket ISOAMSO -->
+<!ENTITY bbrktbrk "&#58393;"><!-- u+E419 bottom above top square bracket ISOAMSO -->
+<!ENTITY bemptyv "&#58394;"><!-- u+E41A reversed circle, slash ISOAMSO -->
+<!ENTITY beth "&#8502;"><!-- u+2136 beth, Hebrew ISOAMSO -->
+<!ENTITY boxbox "&#58086;"><!-- u+E2E6 two joined squares ISOAMSO -->
+<!ENTITY bprime "&#8245;"><!-- u+2035 reverse prime ISOAMSO -->
+<!ENTITY bsemi "&#58093;"><!-- u+E2ED reverse semi-colon ISOAMSO -->
+<!ENTITY cemptyv "&#58088;"><!-- u+E2E8 circle, slash, small circle above ISOAMSO -->
+<!ENTITY circledS "&#58397;"><!-- u+E41D capital S in circle MMALIAS oS-->
+<!ENTITY cirE "&#58395;"><!-- u+E41B circle, two horizontal stroked to the right ISOAMSO -->
+<!ENTITY cirscir "&#58396;"><!-- u+E41C circle, small circle to the right ISOAMSO -->
+<!ENTITY comp "&#8705;"><!-- u+2201 complement sign ISOAMSO -->
+<!ENTITY complement "&#8705;"><!-- u+2201 complement sign MMALIAS comp-->
+<!ENTITY daleth "&#8504;"><!-- u+2138 daleth, Hebrew ISOAMSO -->
+<!ENTITY demptyv "&#58087;"><!-- u+E2E7 circle, slash, bar above ISOAMSO -->
+<!ENTITY ell "&#8467;"><!-- u+2113 cursive small l ISOAMSO -->
+<!ENTITY empty "&#58067;"><!-- u+E2D3 letter O slashed ISOAMSO -->
+<!ENTITY emptyset "&#58067;"><!-- u+E2D3 letter O slashed MMALIAS empty-->
+<!ENTITY emptyv "&#8709;"><!-- u+2205 circle, slash ISOAMSO -->
+<!ENTITY gimel "&#8503;"><!-- u+2137 gimel, Hebrew ISOAMSO -->
+<!ENTITY hbar "&#58069;"><!-- u+E2D5 Planck's over 2pi MMALIAS plank-->
+<!ENTITY hslash "&#8463;"><!-- u+210F variant Planck's over 2pi MMALIAS plankv-->
+<!ENTITY iiota "&#8489;"><!-- u+2129 inverted iota ISOAMSO -->
+<!ENTITY Im "&#8465;"><!-- u+2111 imaginary MMALIAS image-->
+<!ENTITY image "&#8465;"><!-- u+2111 imaginary ISOAMSO -->
+<!ENTITY imath "&#305;"><!-- u+0131 small i, no dot ISOAMSO -->
+<!ENTITY jmath "&#58068;"><!-- u+E2D4 small j, no dot ISOAMSO -->
+<!ENTITY laemptyv "&#58090;"><!-- u+E2EA circle, slash, left arrow above ISOAMSO -->
+<!ENTITY lltri "&#58085;"><!-- u+E2E5 lower left triangle ISOAMSO -->
+<!ENTITY lrtri "&#58083;"><!-- u+E2E3 lower right triangle ISOAMSO -->
+<!ENTITY measuredangle "&#8737;"><!-- u+2221 angle-measured MMALIAS angmsd-->
+<!ENTITY mho "&#8487;"><!-- u+2127 conductance ISOAMSO -->
+<!ENTITY nang "&#58072;"><!-- u+E2D8 not, vert, angle ISOAMSO -->
+<!ENTITY nexist "&#8708;"><!-- u+2204 negated exists ISOAMSO -->
+<!ENTITY nexists "&#8708;"><!-- u+2204 negated exists MMALIAS nexist-->
+<!ENTITY NotExists "&#8708;"><!-- u+2204 negated exists MMALIAS nexist-->
+<!ENTITY oS "&#58397;"><!-- u+E41D capital S in circle ISOAMSO -->
+<!ENTITY plank "&#58069;"><!-- u+E2D5 Planck's over 2pi ISOAMSO -->
+<!ENTITY plankv "&#8463;"><!-- u+210F variant Planck's over 2pi ISOAMSO -->
+<!ENTITY raemptyv "&#58089;"><!-- u+E2E9 circle, slash, right arrow above ISOAMSO -->
+<!ENTITY range "&#58071;"><!-- u+E2D7 reverse angle, equal ISOAMSO -->
+<!ENTITY Re "&#8476;"><!-- u+211C real MMALIAS real-->
+<!ENTITY real "&#8476;"><!-- u+211C real ISOAMSO -->
+<!ENTITY tbrk "&#58095;"><!-- u+E2EF top square bracket ISOAMSO -->
+<!ENTITY trpezium "&#58092;"><!-- u+E2EC trapezium ISOAMSO -->
+<!ENTITY ultri "&#58084;"><!-- u+E2E4 upper left triangle ISOAMSO -->
+<!ENTITY urtri "&#58082;"><!-- u+E2E2 upper right triangle ISOAMSO -->
+<!ENTITY varnothing "&#8709;"><!-- u+2205 circle, slash MMALIAS emptyv-->
+<!ENTITY vzigzag "&#58091;"><!-- u+E2EB vertical zig-zag line ISOAMSO -->
+<!ENTITY weierp "&#8472;"><!-- u+2118 Weierstrass p ISOAMSO -->
+<!ENTITY wp "&#8472;"><!-- u+2118 Weierstrass p MMALIAS weierp-->
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsre.dtd b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsre.dtd
new file mode 100644
index 00000000000..d250baf518a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsre.dtd
@@ -0,0 +1,304 @@
+
+<!--
+ ISOAMSR Characters alphabetically
+ Added Math Symbols: Relations Extended by MathML with aliases
+
+ Converted from HTML table at
+ http://www.w3.org/TR/REC-MathML-19980407/chap6/ISOAMSRe1.html
+
+ Copyright 1998 Nag Ltd, The OpenMath Consortium. Esprit Project 24.969.
+-->
+
+<!ENTITY apE "&#58133;"><!-- u+E315 approximately equal or equal to ISOAMSR -->
+<!ENTITY ape "&#8778;"><!-- u+224A approximate, equals ISOAMSR -->
+<!ENTITY apid "&#8779;"><!-- u+224B approximately identical to ISOAMSR -->
+<!ENTITY approxeq "&#8778;"><!-- u+224A approximate, equals MMALIAS ape-->
+<!ENTITY asymp "&#8781;"><!-- u+224D asymptotically equal to ISOAMSR -->
+<!ENTITY backcong "&#8780;"><!-- u+224C reverse congruent MMALIAS bcong-->
+<!ENTITY backepsilon "&#58400;"><!-- u+E420 such that MMALIAS bepsi-->
+<!ENTITY backsim "&#8765;"><!-- u+223D reverse similar MMALIAS bsim-->
+<!ENTITY backsimeq "&#8909;"><!-- u+22CD reverse similar, equals MMALIAS bsime-->
+<!ENTITY Barv "&#58129;"><!-- u+E311 vert, double bar (over) ISOAMSR -->
+<!ENTITY bcong "&#8780;"><!-- u+224C reverse congruent ISOAMSR -->
+<!ENTITY bepsi "&#58400;"><!-- u+E420 such that ISOAMSR -->
+<!ENTITY between "&#8812;"><!-- u+226C between MMALIAS twixt-->
+<!ENTITY bowtie "&#8904;"><!-- u+22C8 bowtie ISOAMSR -->
+<!ENTITY bsim "&#8765;"><!-- u+223D reverse similar ISOAMSR -->
+<!ENTITY bsime "&#8909;"><!-- u+22CD reverse similar, equals ISOAMSR -->
+<!ENTITY bsolhsub "&#58189;"><!-- u+E34D reverse solidus, subset ISOAMSR -->
+<!ENTITY bump "&#8782;"><!-- u+224E bumpy equals ISOAMSR -->
+<!ENTITY bumpe "&#8783;"><!-- u+224F bumpy equals, equals ISOAMSR -->
+<!ENTITY Bumpeq "&#8782;"><!-- u+224E bumpy equals MMALIAS bump-->
+<!ENTITY bumpeq "&#8783;"><!-- u+224F bumpy equals, equals MMALIAS bumpe-->
+<!ENTITY circeq "&#8791;"><!-- u+2257 circle, equals MMALIAS cire-->
+<!ENTITY cire "&#8791;"><!-- u+2257 circle, equals ISOAMSR -->
+<!ENTITY Colon "&#8759;"><!-- u+2237 /Colon, two colons ISOAMSR -->
+<!ENTITY Colone "&#58126;"><!-- u+E30E double colon, equals ISOAMSR -->
+<!ENTITY colone "&#8788;"><!-- u+2254 colon, equals ISOAMSR -->
+<!ENTITY coloneq "&#8788;"><!-- u+2254 colon, equals MMALIAS colone-->
+<!ENTITY congdot "&#58132;"><!-- u+E314 congruent, dot ISOAMSR -->
+<!ENTITY csub "&#58193;"><!-- u+E351 subset, closed ISOAMSR -->
+<!ENTITY csube "&#58195;"><!-- u+E353 subset, closed, equals ISOAMSR -->
+<!ENTITY csup "&#58194;"><!-- u+E352 superset, closed ISOAMSR -->
+<!ENTITY csupe "&#58196;"><!-- u+E354 superset, closed, equals ISOAMSR -->
+<!ENTITY cuepr "&#8926;"><!-- u+22DE curly equals, precedes ISOAMSR -->
+<!ENTITY cuesc "&#8927;"><!-- u+22DF curly equals, succeeds ISOAMSR -->
+<!--<!ENTITY Cup "&#8995;">-->
+<!-- u+2323 up curve MMALIAS smile-->
+<!ENTITY CupCap "&#8781;"><!-- u+224D asymptotically equal to MMALIAS asymp-->
+<!ENTITY curlyeqprec "&#8926;"><!-- u+22DE curly equals, precedes MMALIAS cuepr-->
+<!ENTITY curlyeqsucc "&#8927;"><!-- u+22DF curly equals, succeeds MMALIAS cuesc-->
+<!ENTITY Dashv "&#58127;"><!-- u+E30F double dash, vertical ISOAMSR -->
+<!ENTITY dashv "&#8867;"><!-- u+22A3 dash, vertical ISOAMSR -->
+<!ENTITY ddotseq "&#58121;"><!-- u+E309 equal with four dots MMALIAS eDDot-->
+<!ENTITY doteq "&#8784;"><!-- u+2250 equals, single dot above MMALIAS esdot-->
+<!ENTITY doteqdot "&#8785;"><!-- u+2251 equals, even dots MMALIAS eDot-->
+<!ENTITY DotEqual "&#8784;"><!-- u+2250 equals, single dot above MMALIAS esdot-->
+<!ENTITY DoubleRightTee "&#8872;"><!-- u+22A8 vertical, double dash MMALIAS vDash-->
+<!ENTITY easter "&#8795;"><!-- u+225B equal, asterisk above ISOAMSR -->
+<!ENTITY ecir "&#8790;"><!-- u+2256 circle on equals sign ISOAMSR -->
+<!ENTITY ecolon "&#8789;"><!-- u+2255 equals, colon ISOAMSR -->
+<!ENTITY eDDot "&#58121;"><!-- u+E309 equal with four dots ISOAMSR -->
+<!ENTITY eDot "&#8785;"><!-- u+2251 equals, even dots ISOAMSR -->
+<!ENTITY efDot "&#8786;"><!-- u+2252 equals, falling dots ISOAMSR -->
+<!ENTITY eg "&#58152;"><!-- u+E328 equal-or-greater ISOAMSR -->
+<!ENTITY egs "&#8925;"><!-- u+22DD equal-or-gtr, slanted ISOAMSR -->
+<!ENTITY egsdot "&#58148;"><!-- u+E324 equal-or-greater, slanted, dot inside ISOAMSR -->
+<!ENTITY el "&#58151;"><!-- u+E327 equal-or-less ISOAMSR -->
+<!ENTITY els "&#8924;"><!-- u+22DC eq-or-less, slanted ISOAMSR -->
+<!ENTITY elsdot "&#58147;"><!-- u+E323 equal-or-less, slanted, dot inside ISOAMSR -->
+<!ENTITY eqcirc "&#8790;"><!-- u+2256 circle on equals sign MMALIAS ecir-->
+<!ENTITY eqcolon "&#8789;"><!-- u+2255 equals, colon MMALIAS ecolon-->
+<!ENTITY eqsim "&#8770;"><!-- u+2242 equals, similar MMALIAS esim-->
+<!ENTITY eqslantgtr "&#8925;"><!-- u+22DD equal-or-gtr, slanted MMALIAS egs-->
+<!ENTITY eqslantless "&#8924;"><!-- u+22DC eq-or-less, slanted MMALIAS els-->
+<!ENTITY EqualTilde "&#8770;"><!-- u+2242 equals, similar MMALIAS esim-->
+<!ENTITY equest "&#8799;"><!-- u+225F equal with questionmark ISOAMSR -->
+<!ENTITY equivDD "&#58136;"><!-- u+E318 equivalent, four dots above ISOAMSR -->
+<!ENTITY erDot "&#8787;"><!-- u+2253 equals, rising dots ISOAMSR -->
+<!ENTITY esdot "&#8784;"><!-- u+2250 equals, single dot above ISOAMSR -->
+<!ENTITY Esim "&#58135;"><!-- u+E317 equal, similar ISOAMSR -->
+<!ENTITY esim "&#8770;"><!-- u+2242 equals, similar ISOAMSR -->
+<!ENTITY fallingdotseq "&#8786;"><!-- u+2252 equals, falling dots MMALIAS efDot-->
+<!ENTITY fork "&#8916;"><!-- u+22D4 pitchfork ISOAMSR -->
+<!ENTITY forkv "&#58139;"><!-- u+E31B fork, variant ISOAMSR -->
+<!ENTITY frown "&#8994;"><!-- u+2322 down curve ISOAMSR -->
+<!ENTITY gap "&#8819;"><!-- u+2273 greater, approximate ISOAMSR -->
+<!ENTITY gE "&#8807;"><!-- u+2267 greater, double equals ISOAMSR -->
+<!ENTITY gEl "&#8923;"><!-- u+22DB gt, double equals, less ISOAMSR -->
+<!ENTITY gel "&#8923;"><!-- u+22DB greater, equals, less ISOAMSR -->
+<!ENTITY geqq "&#8807;"><!-- u+2267 greater, double equals MMALIAS gE-->
+<!ENTITY geqslant "&#58401;"><!-- u+E421 gt-or-equal, slanted MMALIAS ges-->
+<!ENTITY ges "&#58401;"><!-- u+E421 gt-or-equal, slanted ISOAMSR -->
+<!ENTITY gescc "&#58200;"><!-- u+E358 greater than, closed by curve, equal, slanted ISOAMSR -->
+<!ENTITY gesdot "&#58142;"><!-- u+E31E greater-than-or-equal, slanted, dot inside ISOAMSR -->
+<!ENTITY gesdoto "&#58144;"><!-- u+E320 greater-than-or-equal, slanted, dot above ISOAMSR -->
+<!ENTITY gesdotol "&#58146;"><!-- u+E322 greater-than-or-equal, slanted, dot above left ISOAMSR -->
+<!ENTITY gesl "&#58156;"><!-- u+E32C greater, equal, slanted, less ISOAMSR -->
+<!ENTITY gesles "&#58162;"><!-- u+E332 greater, equal, slanted, less, equal, slanted ISOAMSR -->
+<!ENTITY Gg "&#8921;"><!-- u+22D9 triple gtr-than ISOAMSR -->
+<!ENTITY gg "&#8811;"><!-- u+226B double greater-than sign MMALIAS Gt-->
+<!ENTITY ggg "&#8921;"><!-- u+22D9 triple gtr-than MMALIAS Gg-->
+<!ENTITY gl "&#8823;"><!-- u+2277 greater, less ISOAMSR -->
+<!ENTITY gla "&#58160;"><!-- u+E330 greater, less, apart ISOAMSR -->
+<!ENTITY glE "&#58158;"><!-- u+E32E greater, less, equal ISOAMSR -->
+<!ENTITY glj "&#58159;"><!-- u+E32F greater, less, overlapping ISOAMSR -->
+<!ENTITY GreaterEqualLess "&#8923;"><!-- u+22DB greater, equals, less MMALIAS gel-->
+<!ENTITY GreaterFullEqual "&#8807;"><!-- u+2267 greater, double equals MMALIAS gE-->
+<!ENTITY GreaterLess "&#8823;"><!-- u+2277 greater, less MMALIAS gl-->
+<!ENTITY GreaterSlantEqual "&#58401;"><!-- u+E421 gt-or-equal, slanted MMALIAS ges-->
+<!ENTITY GreaterTilde "&#8819;"><!-- u+2273 greater, similar MMALIAS gsim-->
+<!ENTITY gsim "&#8819;"><!-- u+2273 greater, similar ISOAMSR -->
+<!ENTITY gsime "&#58164;"><!-- u+E334 greater, similar, equal ISOAMSR -->
+<!ENTITY gsiml "&#58166;"><!-- u+E336 greater, similar, less ISOAMSR -->
+<!ENTITY Gt "&#8811;"><!-- u+226B double greater-than sign ISOAMSR -->
+<!ENTITY gtcc "&#58198;"><!-- u+E356 greater than, closed by curve ISOAMSR -->
+<!ENTITY gtcir "&#58150;"><!-- u+E326 greater than, circle inside ISOAMSR -->
+<!ENTITY gtdot "&#8919;"><!-- u+22D7 greater than, with dot ISOAMSR -->
+<!ENTITY gtquest "&#58154;"><!-- u+E32A greater than, questionmark above ISOAMSR -->
+<!ENTITY gtrapprox "&#8819;"><!-- u+2273 greater, approximate MMALIAS gap-->
+<!ENTITY gtrarr "&#58207;"><!-- u+E35F greater than, right arrow ISOAMSR -->
+<!ENTITY gtrdot "&#8919;"><!-- u+22D7 greater than, with dot MMALIAS gtdot-->
+<!ENTITY gtreqless "&#8923;"><!-- u+22DB greater, equals, less MMALIAS gel-->
+<!ENTITY gtreqqless "&#8923;"><!-- u+22DB gt, double equals, less MMALIAS gEl-->
+<!ENTITY gtrless "&#8823;"><!-- u+2277 greater, less MMALIAS gl-->
+<!ENTITY gtrsim "&#8819;"><!-- u+2273 greater, similar MMALIAS gsim-->
+<!ENTITY homtht "&#8763;"><!-- u+223B homothetic ISOAMSR -->
+<!ENTITY HumpDownHump "&#8782;"><!-- u+224E bumpy equals MMALIAS bump-->
+<!ENTITY HumpEqual "&#8783;"><!-- u+224F bumpy equals, equals MMALIAS bumpe-->
+<!ENTITY lap "&#8818;"><!-- u+2272 less, approximate ISOAMSR -->
+<!ENTITY lat "&#58170;"><!-- u+E33A larger than ISOAMSR -->
+<!ENTITY late "&#58172;"><!-- u+E33C larger than or equal ISOAMSR -->
+<!ENTITY lates "&#58174;"><!-- u+E33E larger than or equal, slanted ISOAMSR -->
+<!ENTITY lE "&#8806;"><!-- u+2266 less, double equals ISOAMSR -->
+<!ENTITY LeftTee "&#8867;"><!-- u+22A3 dash, vertical MMALIAS dashv-->
+<!ENTITY LeftTriangle "&#8882;"><!-- u+22B2 left triangle, open, variant MMALIAS vltri-->
+<!ENTITY LeftTriangleEqual "&#8884;"><!-- u+22B4 left triangle, equals MMALIAS ltrie-->
+<!ENTITY lEg "&#8922;"><!-- u+22DA less, double equals, greater ISOAMSR -->
+<!ENTITY leg "&#8922;"><!-- u+22DA less, equals, greater ISOAMSR -->
+<!ENTITY leqq "&#8806;"><!-- u+2266 less, double equals MMALIAS lE-->
+<!ENTITY leqslant "&#58405;"><!-- u+E425 less-than-or-equals, slant MMALIAS les-->
+<!ENTITY les "&#58405;"><!-- u+E425 less-than-or-equals, slant ISOAMSR -->
+<!ENTITY lescc "&#58199;"><!-- u+E357 less than, closed by curve, equal, slanted ISOAMSR -->
+<!ENTITY lesdot "&#58141;"><!-- u+E31D less-than-or-equal, slanted, dot inside ISOAMSR -->
+<!ENTITY lesdoto "&#58143;"><!-- u+E31F less-than-or-equal, slanted, dot above ISOAMSR -->
+<!ENTITY lesdotor "&#58145;"><!-- u+E321 less-than-or-equal, slanted, dot above right ISOAMSR -->
+<!ENTITY lesg "&#58155;"><!-- u+E32B less, equal, slanted, greater ISOAMSR -->
+<!ENTITY lesges "&#58161;"><!-- u+E331 less, equal, slanted, greater, equal, slanted ISOAMSR -->
+<!ENTITY lessapprox "&#8818;"><!-- u+2272 less, approximate MMALIAS lap-->
+<!ENTITY lessdot "&#8918;"><!-- u+22D6 less than, with dot MMALIAS ltdot-->
+<!ENTITY lesseqgtr "&#8922;"><!-- u+22DA less, equals, greater MMALIAS leg-->
+<!ENTITY lesseqqgtr "&#8922;"><!-- u+22DA less, double equals, greater MMALIAS lEg-->
+<!ENTITY LessEqualGreater "&#8922;"><!-- u+22DA less, equals, greater MMALIAS leg-->
+<!ENTITY LessFullEqual "&#8806;"><!-- u+2266 less, double equals MMALIAS lE-->
+<!ENTITY LessGreater "&#8822;"><!-- u+2276 less, greater MMALIAS lg-->
+<!ENTITY lessgtr "&#8822;"><!-- u+2276 less, greater MMALIAS lg-->
+<!ENTITY lesssim "&#8818;"><!-- u+2272 less, similar MMALIAS lsim-->
+<!ENTITY LessSlantEqual "&#58405;"><!-- u+E425 less-than-or-equals, slant MMALIAS les-->
+<!ENTITY LessTilde "&#8818;"><!-- u+2272 less, similar MMALIAS lsim-->
+<!ENTITY lg "&#8822;"><!-- u+2276 less, greater ISOAMSR -->
+<!ENTITY lgE "&#58157;"><!-- u+E32D less, greater, equal ISOAMSR -->
+<!ENTITY Ll "&#8920;"><!-- u+22D8 triple less-than ISOAMSR -->
+<!ENTITY ll "&#8810;"><!-- u+226A double less-than sign MMALIAS Lt-->
+<!ENTITY lsim "&#8818;"><!-- u+2272 less, similar ISOAMSR -->
+<!ENTITY lsime "&#58163;"><!-- u+E333 less, similar, equal ISOAMSR -->
+<!ENTITY lsimg "&#58165;"><!-- u+E335 less, similar, greater ISOAMSR -->
+<!ENTITY Lt "&#8810;"><!-- u+226A double less-than sign ISOAMSR -->
+<!ENTITY ltcc "&#58197;"><!-- u+E355 less than, closed by curve ISOAMSR -->
+<!ENTITY ltcir "&#58149;"><!-- u+E325 less than, circle inside ISOAMSR -->
+<!ENTITY ltdot "&#8918;"><!-- u+22D6 less than, with dot ISOAMSR -->
+<!ENTITY ltlarr "&#58206;"><!-- u+E35E less than, left arrow ISOAMSR -->
+<!ENTITY ltquest "&#58153;"><!-- u+E329 less than, questionmark above ISOAMSR -->
+<!ENTITY ltrie "&#8884;"><!-- u+22B4 left triangle, equals ISOAMSR -->
+<!ENTITY mcomma "&#58138;"><!-- u+E31A minus, comma above ISOAMSR -->
+<!ENTITY mDDot "&#8762;"><!-- u+223A minus with four dots, geometric properties ISOAMSR -->
+<!ENTITY mid "&#8739;"><!-- u+2223 mid ISOAMSR -->
+<!ENTITY mlcp "&#58122;"><!-- u+E30A transversal intersection ISOAMSR -->
+<!ENTITY models "&#8871;"><!-- u+22A7 models ISOAMSR -->
+<!ENTITY mstpos "&#8766;"><!-- u+223E most positive ISOAMSR -->
+<!ENTITY NestedGreaterGreater "&#8811;"><!-- u+226B double greater-than sign MMALIAS Gt-->
+<!ENTITY NestedLessLess "&#8810;"><!-- u+226A double less-than sign MMALIAS Lt-->
+<!ENTITY pitchfork "&#8916;"><!-- u+22D4 pitchfork MMALIAS fork-->
+<!ENTITY Pr "&#58204;"><!-- u+E35C double precedes ISOAMSR -->
+<!ENTITY pr "&#8826;"><!-- u+227A precedes ISOAMSR -->
+<!ENTITY prap "&#8830;"><!-- u+227E precedes, approximate ISOAMSR -->
+<!ENTITY prcue "&#8828;"><!-- u+227C precedes, curly equals ISOAMSR -->
+<!ENTITY prE "&#8828;"><!-- u+227C precedes, double equals ISOAMSR -->
+<!ENTITY pre "&#8828;"><!-- u+227C precedes, equals ISOAMSR -->
+<!ENTITY prec "&#8826;"><!-- u+227A precedes MMALIAS pr-->
+<!ENTITY precapprox "&#8830;"><!-- u+227E precedes, approximate MMALIAS prap-->
+<!ENTITY preccurlyeq "&#8828;"><!-- u+227C precedes, curly equals MMALIAS prcue-->
+<!ENTITY Precedes "&#8826;"><!-- u+227A precedes MMALIAS pr-->
+<!ENTITY PrecedesEqual "&#8828;"><!-- u+227C precedes, equals MMALIAS pre-->
+<!ENTITY PrecedesSlantEqual "&#8828;"><!-- u+227C precedes, curly equals MMALIAS prcue-->
+<!ENTITY PrecedesTilde "&#8830;"><!-- u+227E precedes, similar MMALIAS prsim-->
+<!ENTITY preceq "&#8828;"><!-- u+227C precedes, equals MMALIAS pre-->
+<!ENTITY precsim "&#8830;"><!-- u+227E precedes, similar MMALIAS prsim-->
+<!ENTITY Proportion "&#8759;"><!-- u+2237 /Colon, two colons MMALIAS Colon-->
+<!ENTITY prsim "&#8830;"><!-- u+227E precedes, similar ISOAMSR -->
+<!ENTITY prurel "&#8880;"><!-- u+22B0 element precedes under relation ISOAMSR -->
+<!ENTITY questeq "&#8799;"><!-- u+225F equal with questionmark MMALIAS equest-->
+<!ENTITY ratio "&#8758;"><!-- u+2236 ratio ISOAMSR -->
+<!ENTITY RightTee "&#8866;"><!-- u+22A2 vertical, dash MMALIAS vdash-->
+<!ENTITY RightTriangle "&#8883;"><!-- u+22B3 right triangle, open, variant MMALIAS vrtri-->
+<!ENTITY RightTriangleEqual "&#8885;"><!-- u+22B5 right triangle, equals MMALIAS rtrie-->
+<!ENTITY risingdotseq "&#8787;"><!-- u+2253 equals, rising dots MMALIAS erDot-->
+<!ENTITY rtrie "&#8885;"><!-- u+22B5 right triangle, equals ISOAMSR -->
+<!ENTITY rtriltri "&#58201;"><!-- u+E359 right triangle above left triangle ISOAMSR -->
+<!ENTITY Sc "&#58205;"><!-- u+E35D double succeeds ISOAMSR -->
+<!ENTITY sc "&#8827;"><!-- u+227B succeeds ISOAMSR -->
+<!ENTITY scap "&#8831;"><!-- u+227F succeeds, approximate ISOAMSR -->
+<!ENTITY sccue "&#8829;"><!-- u+227D succeeds, curly equals ISOAMSR -->
+<!ENTITY scE "&#8830;"><!-- u+227E succeeds, double equals ISOAMSR -->
+<!ENTITY sce "&#8829;"><!-- u+227D succeeds, equals ISOAMSR -->
+<!ENTITY scsim "&#8831;"><!-- u+227F succeeds, similar ISOAMSR -->
+<!ENTITY sdote "&#58137;"><!-- u+E319 equal, dot below ISOAMSR -->
+<!ENTITY sfrown "&#58406;"><!-- u+E426 small down curve ISOAMSR -->
+<!ENTITY shortmid "&#58113;"><!-- u+E301 shortmid MMALIAS smid-->
+<!ENTITY shortparallel "&#58114;"><!-- u+E302 short parallel MMALIAS spar-->
+<!ENTITY simg "&#58124;"><!-- u+E30C similar, greater ISOAMSR -->
+<!ENTITY simgE "&#58168;"><!-- u+E338 similar, greater, equal ISOAMSR -->
+<!ENTITY siml "&#58123;"><!-- u+E30B similar, less ISOAMSR -->
+<!ENTITY simlE "&#58167;"><!-- u+E337 similar, less, equal ISOAMSR -->
+<!ENTITY smallfrown "&#58406;"><!-- u+E426 small down curve MMALIAS sfrown-->
+<!ENTITY smallsmile "&#58115;"><!-- u+E303 small up curve MMALIAS ssmile-->
+<!ENTITY smid "&#58113;"><!-- u+E301 shortmid ISOAMSR -->
+<!ENTITY smile "&#8995;"><!-- u+2323 up curve ISOAMSR -->
+<!ENTITY smt "&#58169;"><!-- u+E339 smaller than ISOAMSR -->
+<!ENTITY smte "&#58171;"><!-- u+E33B smaller than or equal ISOAMSR -->
+<!ENTITY smtes "&#58173;"><!-- u+E33D smaller than or equal, slanted ISOAMSR -->
+<!ENTITY spar "&#58114;"><!-- u+E302 short parallel ISOAMSR -->
+<!ENTITY sqsub "&#8847;"><!-- u+228F square subset ISOAMSR -->
+<!ENTITY sqsube "&#8849;"><!-- u+2291 square subset, equals ISOAMSR -->
+<!ENTITY sqsubset "&#8847;"><!-- u+228F square subset MMALIAS sqsub-->
+<!ENTITY sqsubseteq "&#8849;"><!-- u+2291 square subset, equals MMALIAS sqsube-->
+<!ENTITY sqsup "&#8848;"><!-- u+2290 square superset ISOAMSR -->
+<!ENTITY sqsupe "&#8850;"><!-- u+2292 square superset, equals ISOAMSR -->
+<!ENTITY sqsupset "&#8848;"><!-- u+2290 square superset MMALIAS sqsup-->
+<!ENTITY sqsupseteq "&#8850;"><!-- u+2292 square superset, equals MMALIAS sqsupe-->
+<!ENTITY SquareSubset "&#8847;"><!-- u+228F square subset MMALIAS sqsub-->
+<!ENTITY SquareSubsetEqual "&#8849;"><!-- u+2291 square subset, equals MMALIAS sqsube-->
+<!ENTITY SquareSuperset "&#8848;"><!-- u+2290 square superset MMALIAS sqsup-->
+<!ENTITY SquareSupersetEqual "&#8850;"><!-- u+2292 square superset, equals MMALIAS sqsupe-->
+<!ENTITY ssmile "&#58115;"><!-- u+E303 small up curve ISOAMSR -->
+<!ENTITY Sub "&#8912;"><!-- u+22D0 double subset ISOAMSR -->
+<!ENTITY subE "&#8838;"><!-- u+2286 subset, double equals ISOAMSR -->
+<!ENTITY subedot "&#58191;"><!-- u+E34F subset, equals, dot ISOAMSR -->
+<!ENTITY submult "&#58179;"><!-- u+E343 subset, multiply ISOAMSR -->
+<!ENTITY subplus "&#58177;"><!-- u+E341 subset, plus ISOAMSR -->
+<!ENTITY subrarr "&#58175;"><!-- u+E33F subset, right arrow ISOAMSR -->
+<!--<!ENTITY Subset "&#8912;">-->
+<!-- u+22D0 double subset MMALIAS Sub-->
+<!ENTITY subseteqq "&#8838;"><!-- u+2286 subset, double equals MMALIAS subE-->
+<!ENTITY subsim "&#58181;"><!-- u+E345 subset, similar ISOAMSR -->
+<!ENTITY subsub "&#58185;"><!-- u+E349 subset above subset ISOAMSR -->
+<!ENTITY subsup "&#58183;"><!-- u+E347 subset above superset ISOAMSR -->
+<!ENTITY succ "&#8827;"><!-- u+227B succeeds MMALIAS sc-->
+<!ENTITY succapprox "&#8831;"><!-- u+227F succeeds, approximate MMALIAS scap-->
+<!ENTITY succcurlyeq "&#8829;"><!-- u+227D succeeds, curly equals MMALIAS sccue-->
+<!ENTITY Succeeds "&#8827;"><!-- u+227B succeeds MMALIAS sc-->
+<!ENTITY SucceedsEqual "&#8829;"><!-- u+227D succeeds, equals MMALIAS sce-->
+<!ENTITY SucceedsSlantEqual "&#8829;"><!-- u+227D succeeds, curly equals MMALIAS sccue-->
+<!ENTITY SucceedsTilde "&#8831;"><!-- u+227F succeeds, similar MMALIAS scsim-->
+<!ENTITY succeq "&#8829;"><!-- u+227D succeeds, equals MMALIAS sce-->
+<!ENTITY succsim "&#8831;"><!-- u+227F succeeds, similar MMALIAS scsim-->
+<!ENTITY Sup "&#8913;"><!-- u+22D1 double superset ISOAMSR -->
+<!ENTITY supdsub "&#58188;"><!-- u+E34C superset, subset, dash joining them ISOAMSR -->
+<!ENTITY supE "&#8839;"><!-- u+2287 superset, double equals ISOAMSR -->
+<!ENTITY supedot "&#58192;"><!-- u+E350 superset, equals, dot ISOAMSR -->
+<!ENTITY suphsol "&#58190;"><!-- u+E34E superset, solidus ISOAMSR -->
+<!ENTITY suphsub "&#58187;"><!-- u+E34B superset, subset ISOAMSR -->
+<!ENTITY suplarr "&#58176;"><!-- u+E340 superset, left arrow ISOAMSR -->
+<!ENTITY supmult "&#58180;"><!-- u+E344 superset, multiply ISOAMSR -->
+<!ENTITY supplus "&#58178;"><!-- u+E342 superset, plus ISOAMSR -->
+<!ENTITY Supset "&#8913;"><!-- u+22D1 double superset MMALIAS Sup-->
+<!ENTITY supseteqq "&#8839;"><!-- u+2287 superset, double equals MMALIAS supE-->
+<!ENTITY supsim "&#58182;"><!-- u+E346 superset, similar ISOAMSR -->
+<!ENTITY supsub "&#58184;"><!-- u+E348 superset above subset ISOAMSR -->
+<!ENTITY supsup "&#58186;"><!-- u+E34A superset above superset ISOAMSR -->
+<!ENTITY thickapprox "&#58118;"><!-- u+E306 thick approximate MMALIAS thkap-->
+<!ENTITY thicksim "&#58409;"><!-- u+E429 thick similar MMALIAS thksim-->
+<!ENTITY thkap "&#58118;"><!-- u+E306 thick approximate ISOAMSR -->
+<!ENTITY thksim "&#58409;"><!-- u+E429 thick similar ISOAMSR -->
+<!ENTITY topfork "&#58140;"><!-- u+E31C fork with top ISOAMSR -->
+<!ENTITY trianglelefteq "&#8884;"><!-- u+22B4 left triangle, equals MMALIAS ltrie-->
+<!ENTITY triangleq "&#8796;"><!-- u+225C triangle, equals MMALIAS trie-->
+<!ENTITY trianglerighteq "&#8885;"><!-- u+22B5 right triangle, equals MMALIAS rtrie-->
+<!ENTITY trie "&#8796;"><!-- u+225C triangle, equals ISOAMSR -->
+<!ENTITY twixt "&#8812;"><!-- u+226C between ISOAMSR -->
+<!ENTITY varpropto "&#8733;"><!-- u+221D proportional, variant MMALIAS vprop-->
+<!ENTITY vartriangleleft "&#8882;"><!-- u+22B2 left triangle, open, variant MMALIAS vltri-->
+<!ENTITY vartriangleright "&#8883;"><!-- u+22B3 right triangle, open, variant MMALIAS vrtri-->
+<!ENTITY Vbar "&#58125;"><!-- u+E30D double vert, bar (under) ISOAMSR -->
+<!ENTITY vBar "&#58128;"><!-- u+E310 vert, double bar (under) ISOAMSR -->
+<!ENTITY vBarv "&#58130;"><!-- u+E312 double bar, vert over and under ISOAMSR -->
+<!ENTITY VDash "&#8875;"><!-- u+22AB double vert, double dash ISOAMSR -->
+<!ENTITY Vdash "&#8873;"><!-- u+22A9 double vertical, dash ISOAMSR -->
+<!ENTITY vDash "&#8872;"><!-- u+22A8 vertical, double dash ISOAMSR -->
+<!ENTITY vdash "&#8866;"><!-- u+22A2 vertical, dash ISOAMSR -->
+<!ENTITY Vdashl "&#58131;"><!-- u+E313 vertical, dash (long) ISOAMSR -->
+<!ENTITY VerticalBar "&#8739;"><!-- u+2223 mid MMALIAS mid-->
+<!ENTITY vltri "&#8882;"><!-- u+22B2 left triangle, open, variant ISOAMSR -->
+<!ENTITY vprop "&#8733;"><!-- u+221D proportional, variant ISOAMSR -->
+<!ENTITY vrtri "&#8883;"><!-- u+22B3 right triangle, open, variant ISOAMSR -->
+<!ENTITY Vvdash "&#8874;"><!-- u+22AA triple vertical, dash ISOAMSR -->
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isogrk3e.dtd b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isogrk3e.dtd
new file mode 100644
index 00000000000..7c3c77c7a0c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isogrk3e.dtd
@@ -0,0 +1,55 @@
+
+<!--
+ ISOGRK3 Characters alphabetically
+ Greek Letter Symbols
+
+ Converted from HTML table at
+ http://www.w3.org/TR/REC-MathML-19980407/chap6/ISOGRK31.html
+
+ Copyright 1998 Nag Ltd, The OpenMath Consortium. Esprit Project 24.969.
+-->
+
+<!ENTITY alpha "&#945;"><!-- u+03B1 small alpha, Greek ISOGRK3 -->
+<!ENTITY beta "&#946;"><!-- u+03B2 small beta, Greek ISOGRK3 -->
+<!ENTITY chi "&#967;"><!-- u+03C7 small chi, Greek ISOGRK3 -->
+<!ENTITY Delta "&#916;"><!-- u+0394 capital Delta, Greek ISOGRK3 -->
+<!ENTITY delta "&#948;"><!-- u+03B4 small delta, Greek ISOGRK3 -->
+<!ENTITY epsi "&#8714;"><!-- u+220A small epsilon, Greek ISOGRK3 -->
+<!ENTITY epsiv "&#949;"><!-- u+03B5 rounded small epsilon, Greek ISOGRK3 -->
+<!ENTITY eta "&#951;"><!-- u+03B7 small eta, Greek ISOGRK3 -->
+<!ENTITY Gamma "&#915;"><!-- u+0393 capital Gamma, Greek ISOGRK3 -->
+<!ENTITY gamma "&#947;"><!-- u+03B3 small gamma, Greek ISOGRK3 -->
+<!ENTITY Gammad "&#988;"><!-- u+03DC capital digamma ISOGRK3 -->
+<!ENTITY gammad "&#988;"><!-- u+03DC digamma, old Greek ISOGRK3 -->
+<!ENTITY iota "&#953;"><!-- u+03B9 small iota, Greek ISOGRK3 -->
+<!ENTITY kappa "&#954;"><!-- u+03BA small kappa, Greek ISOGRK3 -->
+<!ENTITY kappav "&#1008;"><!-- u+03F0 rounded small kappa , Greek ISOGRK3 -->
+<!ENTITY Lambda "&#923;"><!-- u+039B capital Lambda, Greek ISOGRK3 -->
+<!ENTITY lambda "&#955;"><!-- u+03BB small lambda, Greek ISOGRK3 -->
+<!ENTITY mu "&#956;"><!-- u+03BC small mu, Greek ISOGRK3 -->
+<!ENTITY nu "&#957;"><!-- u+03BD small nu, Greek ISOGRK3 -->
+<!ENTITY Omega "&#937;"><!-- u+03A9 capital Omega, Greek ISOGRK3 -->
+<!ENTITY omega "&#969;"><!-- u+03C9 small omega, Greek ISOGRK3 -->
+<!ENTITY omicron "&#959;"><!-- u+03BF small omicron, Greek ISOGRK3 -->
+<!ENTITY Phi "&#934;"><!-- u+03A6 capital Phi, Greek ISOGRK3 -->
+<!ENTITY phi "&#966;"><!-- u+03C6 small phi, Greek ISOGRK3 -->
+<!ENTITY phiv "&#981;"><!-- u+03D5 curly or open small phi, Greek ISOGRK3 -->
+<!ENTITY Pi "&#928;"><!-- u+03A0 capital Pi, Greek ISOGRK3 -->
+<!ENTITY pi "&#960;"><!-- u+03C0 small pi, Greek ISOGRK3 -->
+<!ENTITY piv "&#982;"><!-- u+03D6 rounded small pi (pomega), Greek ISOGRK3 -->
+<!ENTITY Psi "&#936;"><!-- u+03A8 capital Psi, Greek ISOGRK3 -->
+<!ENTITY psi "&#968;"><!-- u+03C8 small psi, Greek ISOGRK3 -->
+<!ENTITY rho "&#961;"><!-- u+03C1 small rho, Greek ISOGRK3 -->
+<!ENTITY rhov "&#1009;"><!-- u+03F1 rounded small rho, Greek ISOGRK3 -->
+<!ENTITY Sigma "&#931;"><!-- u+03A3 capital Sigma, Greek ISOGRK3 -->
+<!ENTITY sigma "&#963;"><!-- u+03C3 small sigma, Greek ISOGRK3 -->
+<!ENTITY sigmav "&#962;"><!-- u+03C2 terminal sigma, Greek ISOGRK3 -->
+<!ENTITY tau "&#964;"><!-- u+03C4 small tau, Greek ISOGRK3 -->
+<!ENTITY Theta "&#920;"><!-- u+0398 capital Theta, Greek ISOGRK3 -->
+<!ENTITY theta "&#952;"><!-- u+03B8 straight theta, small theta, Greek ISOGRK3 -->
+<!ENTITY thetav "&#977;"><!-- u+03D1 curly or open theta ISOGRK3 -->
+<!ENTITY Upsi "&#978;"><!-- u+03D2 capital Upsilon, Greek ISOGRK3 -->
+<!ENTITY upsi "&#965;"><!-- u+03C5 small upsilon, Greek ISOGRK3 -->
+<!ENTITY Xi "&#926;"><!-- u+039E capital Xi, Greek ISOGRK3 -->
+<!ENTITY xi "&#958;"><!-- u+03BE small xi, Greek ISOGRK3 -->
+<!ENTITY zeta "&#950;"><!-- u+03B6 small zeta, Greek ISOGRK3 -->
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isomfrke.dtd b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isomfrke.dtd
new file mode 100644
index 00000000000..72a22d8098a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isomfrke.dtd
@@ -0,0 +1,63 @@
+
+<!--
+ ISOMFRK Characters alphabetically
+ Mathematical Fraktur
+
+ Converted from HTML table at
+ http://www.w3.org/TR/REC-MathML-19980407/chap6/ISOMFRK1.html
+
+ Copyright 1998 Nag Ltd, The OpenMath Consortium. Esprit Project 24.969.
+-->
+
+<!ENTITY Afr "&#58492;"><!-- u+E47C fraktur letter A ISOMFRK -->
+<!ENTITY afr "&#58517;"><!-- u+E495 fraktur letter a ISOMFRK -->
+<!ENTITY Bfr "&#58493;"><!-- u+E47D fraktur letter B ISOMFRK -->
+<!ENTITY bfr "&#58518;"><!-- u+E496 fraktur letter b ISOMFRK -->
+<!ENTITY Cfr "&#58494;"><!-- u+E47E fraktur letter C ISOMFRK -->
+<!ENTITY cfr "&#58519;"><!-- u+E497 fraktur letter c ISOMFRK -->
+<!ENTITY Dfr "&#58495;"><!-- u+E47F fraktur letter D ISOMFRK -->
+<!ENTITY dfr "&#58520;"><!-- u+E498 fraktur letter d ISOMFRK -->
+<!ENTITY Efr "&#58496;"><!-- u+E480 fraktur letter E ISOMFRK -->
+<!ENTITY efr "&#58521;"><!-- u+E499 fraktur letter e ISOMFRK -->
+<!ENTITY Ffr "&#58497;"><!-- u+E481 fraktur letter F ISOMFRK -->
+<!ENTITY ffr "&#58522;"><!-- u+E49A fraktur letter f ISOMFRK -->
+<!ENTITY Gfr "&#58498;"><!-- u+E482 fraktur letter G ISOMFRK -->
+<!ENTITY gfr "&#58523;"><!-- u+E49B fraktur letter g ISOMFRK -->
+<!ENTITY Hfr "&#58499;"><!-- u+E483 fraktur letter H ISOMFRK -->
+<!ENTITY hfr "&#58524;"><!-- u+E49C fraktur letter h ISOMFRK -->
+<!ENTITY Ifr "&#58500;"><!-- u+E484 fraktur letter I ISOMFRK -->
+<!ENTITY ifr "&#58525;"><!-- u+E49D fraktur letter i ISOMFRK -->
+<!ENTITY Jfr "&#58501;"><!-- u+E485 fraktur letter J ISOMFRK -->
+<!ENTITY jfr "&#58526;"><!-- u+E49E fraktur letter j ISOMFRK -->
+<!ENTITY Kfr "&#58502;"><!-- u+E486 fraktur letter K ISOMFRK -->
+<!ENTITY kfr "&#58527;"><!-- u+E49F fraktur letter k ISOMFRK -->
+<!ENTITY Lfr "&#58503;"><!-- u+E487 fraktur letter L ISOMFRK -->
+<!ENTITY lfr "&#58528;"><!-- u+E4A0 fraktur letter l ISOMFRK -->
+<!ENTITY Mfr "&#58504;"><!-- u+E488 fraktur letter M ISOMFRK -->
+<!ENTITY mfr "&#58529;"><!-- u+E4A1 fraktur letter m ISOMFRK -->
+<!ENTITY Nfr "&#58505;"><!-- u+E489 fraktur letter N ISOMFRK -->
+<!ENTITY nfr "&#58530;"><!-- u+E4A2 fraktur letter n ISOMFRK -->
+<!ENTITY Ofr "&#58506;"><!-- u+E48A fraktur letter O ISOMFRK -->
+<!ENTITY ofr "&#58531;"><!-- u+E4A3 fraktur letter o ISOMFRK -->
+<!ENTITY Pfr "&#58507;"><!-- u+E48B fraktur letter P ISOMFRK -->
+<!ENTITY pfr "&#58532;"><!-- u+E4A4 fraktur letter p ISOMFRK -->
+<!ENTITY Qfr "&#58508;"><!-- u+E48C fraktur letter Q ISOMFRK -->
+<!ENTITY qfr "&#58533;"><!-- u+E4A5 fraktur letter q ISOMFRK -->
+<!ENTITY Rfr "&#58509;"><!-- u+E48D fraktur letter R ISOMFRK -->
+<!ENTITY rfr "&#58534;"><!-- u+E4A6 fraktur letter r ISOMFRK -->
+<!ENTITY Sfr "&#58510;"><!-- u+E48E fraktur letter S ISOMFRK -->
+<!ENTITY sfr "&#58535;"><!-- u+E4A7 fraktur letter s ISOMFRK -->
+<!ENTITY Tfr "&#58511;"><!-- u+E48F fraktur letter T ISOMFRK -->
+<!ENTITY tfr "&#58536;"><!-- u+E4A8 fraktur letter t ISOMFRK -->
+<!ENTITY Ufr "&#58512;"><!-- u+E490 fraktur letter U ISOMFRK -->
+<!ENTITY ufr "&#58537;"><!-- u+E4A9 fraktur letter u ISOMFRK -->
+<!ENTITY Vfr "&#58513;"><!-- u+E491 fraktur letter V ISOMFRK -->
+<!ENTITY vfr "&#58538;"><!-- u+E4AA fraktur letter v ISOMFRK -->
+<!ENTITY Wfr "&#58514;"><!-- u+E492 fraktur letter W ISOMFRK -->
+<!ENTITY wfr "&#58539;"><!-- u+E4AB fraktur letter w ISOMFRK -->
+<!ENTITY Xfr "&#58515;"><!-- u+E493 fraktur letter X ISOMFRK -->
+<!ENTITY xfr "&#58540;"><!-- u+E4AC fraktur letter x ISOMFRK -->
+<!ENTITY Yfr "&#58516;"><!-- u+E494 fraktur letter Y ISOMFRK -->
+<!ENTITY yfr "&#58541;"><!-- u+E4AD fraktur letter y ISOMFRK -->
+<!ENTITY Zfr "&#8484;"><!-- u+2124 fraktur letter Z ISOMFRK -->
+<!ENTITY zfr "&#58542;"><!-- u+E4AE fraktur letter z ISOMFRK -->
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isomopfe.dtd b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isomopfe.dtd
new file mode 100644
index 00000000000..095e4aa0dde
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isomopfe.dtd
@@ -0,0 +1,37 @@
+
+<!--
+ ISOMOPF Characters alphabetically
+ Mathematical Open Face
+
+ Converted from HTML table at
+ http://www.w3.org/TR/REC-MathML-19980407/chap6/ISOMOPF1.html
+
+ Copyright 1998 Nag Ltd, The OpenMath Consortium. Esprit Project 24.969.
+-->
+
+<!ENTITY Aopf "&#58543;"><!-- u+E4AF open face letter A ISOMOPF -->
+<!ENTITY Bopf "&#58544;"><!-- u+E4B0 open face letter B ISOMOPF -->
+<!ENTITY Copf "&#8450;"><!-- u+2102 open face letter C ISOMOPF -->
+<!ENTITY Dopf "&#58545;"><!-- u+E4B1 open face letter D ISOMOPF -->
+<!ENTITY Eopf "&#58546;"><!-- u+E4B2 open face letter E ISOMOPF -->
+<!ENTITY Fopf "&#58547;"><!-- u+E4B3 open face letter F ISOMOPF -->
+<!ENTITY Gopf "&#58548;"><!-- u+E4B4 open face letter G ISOMOPF -->
+<!ENTITY Hopf "&#58549;"><!-- u+E4B5 open face letter H ISOMOPF -->
+<!ENTITY Iopf "&#58550;"><!-- u+E4B6 open face letter I ISOMOPF -->
+<!ENTITY Jopf "&#58551;"><!-- u+E4B7 open face letter J ISOMOPF -->
+<!ENTITY Kopf "&#58552;"><!-- u+E4B8 open face letter K ISOMOPF -->
+<!ENTITY Lopf "&#58553;"><!-- u+E4B9 open face letter L ISOMOPF -->
+<!ENTITY Mopf "&#58554;"><!-- u+E4BA open face letter M ISOMOPF -->
+<!ENTITY Nopf "&#58555;"><!-- u+E4BB open face letter N ISOMOPF -->
+<!ENTITY Oopf "&#58556;"><!-- u+E4BC open face letter O ISOMOPF -->
+<!ENTITY Popf "&#8473;"><!-- u+2119 open face letter P ISOMOPF -->
+<!ENTITY Qopf "&#8474;"><!-- u+211A open face letter Q ISOMOPF -->
+<!ENTITY Ropf "&#8477;"><!-- u+211D open face letter R ISOMOPF -->
+<!ENTITY Sopf "&#58557;"><!-- u+E4BD open face letter S ISOMOPF -->
+<!ENTITY Topf "&#58558;"><!-- u+E4BE open face letter T ISOMOPF -->
+<!ENTITY Uopf "&#58559;"><!-- u+E4BF open face letter U ISOMOPF -->
+<!ENTITY Vopf "&#58560;"><!-- u+E4C0 open face letter V ISOMOPF -->
+<!ENTITY Wopf "&#58561;"><!-- u+E4C1 open face letter W ISOMOPF -->
+<!ENTITY Xopf "&#58562;"><!-- u+E4C2 open face letter X ISOMOPF -->
+<!ENTITY Yopf "&#58563;"><!-- u+E4C3 open face letter Y ISOMOPF -->
+<!ENTITY Zopf "&#58564;"><!-- u+E4C4 open face letter Z ISOMOPF -->
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isomscre.dtd b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isomscre.dtd
new file mode 100644
index 00000000000..bdd7bfd07f6
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isomscre.dtd
@@ -0,0 +1,63 @@
+
+<!--
+ ISOMSCR Characters alphabetically
+ Mathematical Script Font
+
+ Converted from HTML table at
+ http://www.w3.org/TR/REC-MathML-19980407/chap6/ISOMSCR1.html
+
+ Copyright 1998 Nag Ltd, The OpenMath Consortium. Esprit Project 24.969.
+-->
+
+<!ENTITY Ascr "&#58565;"><!-- u+E4C5 script letter A ISOMSCR -->
+<!ENTITY ascr "&#58591;"><!-- u+E4DF script letter a ISOMSCR -->
+<!ENTITY Bscr "&#58566;"><!-- u+E4C6 script letter B ISOMSCR -->
+<!ENTITY bscr "&#58592;"><!-- u+E4E0 script letter b ISOMSCR -->
+<!ENTITY Cscr "&#58567;"><!-- u+E4C7 script letter C ISOMSCR -->
+<!ENTITY cscr "&#58593;"><!-- u+E4E1 script letter c ISOMSCR -->
+<!ENTITY Dscr "&#58568;"><!-- u+E4C8 script letter D ISOMSCR -->
+<!ENTITY dscr "&#58594;"><!-- u+E4E2 script letter d ISOMSCR -->
+<!ENTITY Escr "&#58569;"><!-- u+E4C9 script letter E ISOMSCR -->
+<!ENTITY escr "&#58595;"><!-- u+E4E3 script letter e ISOMSCR -->
+<!ENTITY Fscr "&#58570;"><!-- u+E4CA script letter F ISOMSCR -->
+<!ENTITY fscr "&#58596;"><!-- u+E4E4 script letter f ISOMSCR -->
+<!ENTITY Gscr "&#58571;"><!-- u+E4CB script letter G ISOMSCR -->
+<!ENTITY gscr "&#58597;"><!-- u+E4E5 script letter g ISOMSCR -->
+<!ENTITY Hscr "&#58572;"><!-- u+E4CC script letter H ISOMSCR -->
+<!ENTITY hscr "&#58598;"><!-- u+E4E6 script letter h ISOMSCR -->
+<!ENTITY Iscr "&#58573;"><!-- u+E4CD script letter I ISOMSCR -->
+<!ENTITY iscr "&#58599;"><!-- u+E4E7 script letter i ISOMSCR -->
+<!ENTITY Jscr "&#58574;"><!-- u+E4CE script letter J ISOMSCR -->
+<!ENTITY jscr "&#58600;"><!-- u+E4E8 script letter j ISOMSCR -->
+<!ENTITY Kscr "&#58575;"><!-- u+E4CF script letter K ISOMSCR -->
+<!ENTITY kscr "&#58601;"><!-- u+E4E9 script letter k ISOMSCR -->
+<!ENTITY Lscr "&#58576;"><!-- u+E4D0 script letter L ISOMSCR -->
+<!ENTITY lscr "&#58602;"><!-- u+E4EA script letter l ISOMSCR -->
+<!ENTITY Mscr "&#58577;"><!-- u+E4D1 script letter M ISOMSCR -->
+<!ENTITY mscr "&#58603;"><!-- u+E4EB script letter m ISOMSCR -->
+<!ENTITY Nscr "&#58578;"><!-- u+E4D2 script letter N ISOMSCR -->
+<!ENTITY nscr "&#58604;"><!-- u+E4EC script letter n ISOMSCR -->
+<!ENTITY Oscr "&#58579;"><!-- u+E4D3 script letter O ISOMSCR -->
+<!ENTITY oscr "&#58605;"><!-- u+E4ED script letter o ISOMSCR -->
+<!ENTITY Pscr "&#58580;"><!-- u+E4D4 script letter P ISOMSCR -->
+<!ENTITY pscr "&#58606;"><!-- u+E4EE script letter p ISOMSCR -->
+<!ENTITY Qscr "&#58581;"><!-- u+E4D5 script letter Q ISOMSCR -->
+<!ENTITY qscr "&#58607;"><!-- u+E4EF script letter q ISOMSCR -->
+<!ENTITY Rscr "&#58582;"><!-- u+E4D6 script letter R ISOMSCR -->
+<!ENTITY rscr "&#8475;"><!-- u+211B script letter r ISOMSCR -->
+<!ENTITY Sscr "&#58583;"><!-- u+E4D7 script letter S ISOMSCR -->
+<!ENTITY sscr "&#58608;"><!-- u+E4F0 script letter s ISOMSCR -->
+<!ENTITY Tscr "&#58584;"><!-- u+E4D8 script letter T ISOMSCR -->
+<!ENTITY tscr "&#58609;"><!-- u+E4F1 script letter t ISOMSCR -->
+<!ENTITY Uscr "&#58585;"><!-- u+E4D9 script letter U ISOMSCR -->
+<!ENTITY uscr "&#58610;"><!-- u+E4F2 script letter u ISOMSCR -->
+<!ENTITY Vscr "&#58586;"><!-- u+E4DA script letter V ISOMSCR -->
+<!ENTITY vscr "&#58611;"><!-- u+E4F3 script letter v ISOMSCR -->
+<!ENTITY Wscr "&#58587;"><!-- u+E4DB script letter W ISOMSCR -->
+<!ENTITY wscr "&#58612;"><!-- u+E4F4 script letter w ISOMSCR -->
+<!ENTITY Xscr "&#58588;"><!-- u+E4DC script letter X ISOMSCR -->
+<!ENTITY xscr "&#58613;"><!-- u+E4F5 script letter x ISOMSCR -->
+<!ENTITY Yscr "&#58589;"><!-- u+E4DD script letter Y ISOMSCR -->
+<!ENTITY yscr "&#58614;"><!-- u+E4F6 script letter y ISOMSCR -->
+<!ENTITY Zscr "&#58590;"><!-- u+E4DE script letter Z ISOMSCR -->
+<!ENTITY zscr "&#58615;"><!-- u+E4F7 script letter z ISOMSCR -->
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isonume.dtd b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isonume.dtd
new file mode 100644
index 00000000000..b737ad5c78f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isonume.dtd
@@ -0,0 +1,86 @@
+
+<!--
+ Printing MathML Character Entities alphabetically
+ Based on ISO 9573-13 extended with aliases
+
+ Converted from HTML table at
+ http://www.w3.org/TR/REC-MathML-19980407/chap6/byalpha.dtd
+
+ Copyright 1998 Nag Ltd, The OpenMath Consortium. Esprit Project 24.969.
+-->
+
+<!ENTITY amp "&#38;"><!-- u+0026 ampersand-->
+<!ENTITY apos "&#39;"><!-- u+0027 apostrophe-->
+<!ENTITY brvbar "&#166;"><!-- u+00A6 broken (vertical) bar-->
+<!ENTITY bsol "&#92;"><!-- u+005C /backslash reverse solidus-->
+<!ENTITY cent "&#162;"><!-- u+00A2 cent sign-->
+<!ENTITY colon "&#58;"><!-- u+003A colon-->
+<!ENTITY comma "&#44;"><!-- u+002C comma-->
+<!ENTITY commat "&#64;"><!-- u+0040 commercial at-->
+<!ENTITY copy "&#169;"><!-- u+00A9 copyright sign-->
+<!ENTITY curren "&#164;"><!-- u+00A4 general currency sign-->
+<!ENTITY darr "&#8595;"><!-- u+2193 downward arrow-->
+<!ENTITY deg "&#176;"><!-- u+00B0 degree sign-->
+<!ENTITY divide "&#247;"><!-- u+00F7 divide sign-->
+<!ENTITY dollar "&#36;"><!-- u+0024 dollar sign-->
+<!ENTITY equals "&#61;"><!-- u+003D equals sign-->
+<!ENTITY excl "&#33;"><!-- u+0021 exclamation mark-->
+<!ENTITY frac12 "&#189;"><!-- u+00BD fraction one-half-->
+<!ENTITY frac14 "&#188;"><!-- u+00BC fraction one-quarter-->
+<!ENTITY frac18 "&#8539;"><!-- u+215B fraction one-eighth-->
+<!ENTITY frac34 "&#190;"><!-- u+00BE fraction three-quarters-->
+<!ENTITY frac38 "&#8540;"><!-- u+215C fraction three-eighths-->
+<!ENTITY frac58 "&#8541;"><!-- u+215D fraction five-eighths-->
+<!ENTITY frac78 "&#8542;"><!-- u+215E fraction seven-eighths-->
+<!ENTITY gt "&#62;"><!-- u+003E greater-than sign-->
+<!ENTITY half "&#189;"><!-- u+00BD fraction one-half-->
+<!ENTITY horbar "&#8213;"><!-- u+2015 horizontal bar-->
+<!ENTITY hyphen "&#58616;"><!-- u+E4F8 hyphen-->
+<!ENTITY iexcl "&#161;"><!-- u+00A1 inverted exclamation mark-->
+<!ENTITY iquest "&#191;"><!-- u+00BF inverted question mark-->
+<!ENTITY laquo "&#171;"><!-- u+00AB angle quotation mark, left-->
+<!ENTITY larr "&#8592;"><!-- u+2190 leftward arrow-->
+<!ENTITY lcub "&#123;"><!-- u+007B left curly bracket-->
+<!ENTITY ldquo "&#8220;"><!-- u+201C double quotation mark, left-->
+<!ENTITY lowbar "&#95;"><!-- u+005F low line-->
+<!ENTITY lpar "&#40;"><!-- u+0028 left parenthesis-->
+<!ENTITY lsqb "&#91;"><!-- u+005B left square bracket-->
+<!ENTITY lsquo "&#8216;"><!-- u+2018 single quotation mark, left-->
+<!ENTITY lt "&#60;"><!-- u+003C less-than sign-->
+<!ENTITY micro "&#181;"><!-- u+00B5 micro sign-->
+<!ENTITY middot "&#183;"><!-- u+00B7 middle dot-->
+<!ENTITY nbsp "&#160;"><!-- u+00A0 no break (required) space-->
+<!ENTITY not "&#172;"><!-- u+00AC /neg /lnot not sign-->
+<!ENTITY num "&#35;"><!-- u+0023 number sign-->
+<!ENTITY ohm "&#8486;"><!-- u+2126 ohm sign-->
+<!ENTITY ordf "&#170;"><!-- u+00AA ordinal indicator, feminine-->
+<!ENTITY ordm "&#186;"><!-- u+00BA ordinal indicator, masculine-->
+<!ENTITY para "&#182;"><!-- u+00B6 pilcrow (paragraph sign)-->
+<!ENTITY percnt "&#37;"><!-- u+0025 percent sign-->
+<!ENTITY period "&#46;"><!-- u+002E full stop, period-->
+<!ENTITY plus "&#43;"><!-- u+002B plus sign-->
+<!ENTITY plusmn "&#177;"><!-- u+00B1 plus-or-minus sign-->
+<!ENTITY pound "&#163;"><!-- u+00A3 pound sign-->
+<!ENTITY quest "&#63;"><!-- u+003F question mark-->
+<!ENTITY quot "&#34;"><!-- u+0022 quotation mark-->
+<!ENTITY raquo "&#187;"><!-- u+00BB angle quotation mark, right-->
+<!ENTITY rarr "&#8594;"><!-- u+2192 rightward arrow-->
+<!ENTITY rcub "&#125;"><!-- u+007D right curly bracket-->
+<!ENTITY rdquo "&#8221;"><!-- u+201D double quotation mark, right-->
+<!ENTITY reg "&#175;"><!-- u+00AE registered sign-->
+<!ENTITY rpar "&#41;"><!-- u+0029 right parenthesis-->
+<!ENTITY rsqb "&#93;"><!-- u+005D right square bracket-->
+<!ENTITY rsquo "&#8217;"><!-- u+2019 single quotation mark, right-->
+<!ENTITY sect "&#167;"><!-- u+00A7 section sign-->
+<!ENTITY semi "&#59;"><!-- u+003B semicolon-->
+<!ENTITY shy "&#173;"><!-- u+00AD soft hyphen-->
+<!ENTITY sol "&#47;"><!-- u+002F solidus-->
+<!ENTITY sung "&#9833;"><!-- u+2669 music note (sung text sign)-->
+<!ENTITY sup1 "&#185;"><!-- u+00B9 superscript one-->
+<!ENTITY sup2 "&#178;"><!-- u+00B2 superscript two-->
+<!ENTITY sup3 "&#179;"><!-- u+00B3 superscript three-->
+<!ENTITY times "&#215;"><!-- u+00D7 multiply sign-->
+<!ENTITY trade "&#8482;"><!-- u+2122 trade mark sign-->
+<!ENTITY uarr "&#8593;"><!-- u+2191 upward arrow-->
+<!ENTITY verbar "&#124;"><!-- u+007C vertical bar-->
+<!ENTITY yen "&#165;"><!-- u+00A5 yen sign-->
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoteche.dtd b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoteche.dtd
new file mode 100644
index 00000000000..f9e7f25fb30
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoteche.dtd
@@ -0,0 +1,238 @@
+
+<!--
+ ISOTECH Characters alphabetically
+ General Technical Extended by MathML with aliases
+
+ Converted from HTML table at
+ http://www.w3.org/TR/REC-MathML-19980407/chap6/ISOTECHe1.html
+
+ Copyright 1998 Nag Ltd, The OpenMath Consortium. Esprit Project 24.969.
+-->
+
+<!ENTITY acd "&#58278;"><!-- u+E3A6 ac current ISOTECH -->
+<!ENTITY aleph "&#8501;"><!-- u+2135 /aleph aleph, Hebrew ISOTECH -->
+<!ENTITY And "&#58228;"><!-- u+E374 double logical and ISOTECH -->
+<!ENTITY and "&#8743;"><!-- u+2227 logical and ISOTECH -->
+<!ENTITY andand "&#58222;"><!-- u+E36E two logical and ISOTECH -->
+<!ENTITY andd "&#58260;"><!-- u+E394 and, horizontal dash ISOTECH -->
+<!ENTITY andslope "&#58634;"><!-- u+E50A sloping large and ISOTECH -->
+<!ENTITY andv "&#58257;"><!-- u+E391 and with middle stem ISOTECH -->
+<!ENTITY angrt "&#8735;"><!-- u+221F right (90 degree) angle ISOTECH -->
+<!ENTITY angsph "&#8738;"><!-- u+2222 /sphericalangle angle-spherical ISOTECH -->
+<!ENTITY angst "&#8491;"><!-- u+212B Angstrom capital A, ring ISOTECH -->
+<!ENTITY ap "&#8776;"><!-- u+2248 approximate ISOTECH -->
+<!ENTITY apacir "&#58252;"><!-- u+E38C approximate, circumflex accent ISOTECH -->
+<!ENTITY approx "&#8776;"><!-- u+2248 approximate MMALIAS ap-->
+<!ENTITY awconint "&#8755;"><!-- u+2233 contour integral, anti-clockwise ISOTECH -->
+<!ENTITY awint "&#58267;"><!-- u+E39B anti clock-wise integration ISOTECH -->
+<!ENTITY becaus "&#8757;"><!-- u+2235 because ISOTECH -->
+<!ENTITY Because "&#8757;"><!-- u+2235 because MMALIAS becaus-->
+<!ENTITY because "&#8757;"><!-- u+2235 because MMALIAS becaus-->
+<!ENTITY bernou "&#8492;"><!-- u+212C Bernoulli function (script capital B) ISOTECH -->
+<!ENTITY blacksquare "&#9632;"><!-- u+25A0 square, filled MMALIAS squarf-->
+<!ENTITY bne "&#58248;"><!-- u+E388 reverse not equal ISOTECH -->
+<!ENTITY bnequiv "&#58247;"><!-- u+E387 reverse not equivalent ISOTECH -->
+<!ENTITY bNot "&#58285;"><!-- u+E3AD reverse not with two horizontal strokes ISOTECH -->
+<!ENTITY bnot "&#8976;"><!-- u+2310 reverse not ISOTECH -->
+<!ENTITY bot "&#8869;"><!-- u+22A5 bottom MMALIAS bottom-->
+<!ENTITY bottom "&#8869;"><!-- u+22A5 bottom ISOTECH -->
+<!ENTITY cap "&#8745;"><!-- u+2229 intersection ISOTECH -->
+<!ENTITY Cconint "&#8752;"><!-- u+2230 triple contour integral operator ISOTECH -->
+<!ENTITY circ "&#8728;"><!-- u+2218 composite function (small circle) MMALIAS compfn-->
+<!ENTITY cirfnint "&#58261;"><!-- u+E395 circulation function ISOTECH -->
+<!ENTITY ClockwiseContourIntegral "&#8754;"><!-- u+2232 contour integral, clockwise MMALIAS cwconint-->
+<!ENTITY compfn "&#8728;"><!-- u+2218 composite function (small circle) ISOTECH -->
+<!ENTITY cong "&#8773;"><!-- u+2245 congruent with ISOTECH -->
+<!ENTITY Congruent "&#8801;"><!-- u+2261 identical with MMALIAS equiv-->
+<!ENTITY Conint "&#8751;"><!-- u+222F double contour integral operator ISOTECH -->
+<!ENTITY conint "&#8750;"><!-- u+222E contour integral operator ISOTECH -->
+<!ENTITY ContourIntegral "&#8750;"><!-- u+222E contour integral operator MMALIAS conint-->
+<!ENTITY CounterClockwiseContourIntegral "&#8755;"><!-- u+2233 contour integral, anti-clockwise MMALIAS awconint-->
+<!ENTITY ctdot "&#8943;"><!-- u+22EF /cdots, three dots, centered ISOTECH -->
+<!ENTITY cup "&#8746;"><!-- u+222A union or logical sum ISOTECH -->
+<!ENTITY cwconint "&#8754;"><!-- u+2232 contour integral, clockwise ISOTECH -->
+<!ENTITY cwint "&#8753;"><!-- u+2231 clockwise integral ISOTECH -->
+<!ENTITY cylcty "&#9005;"><!-- u+232D cylindricity ISOTECH -->
+<!ENTITY Del "&#8711;"><!-- u+2207 del, Hamilton operator MMALIAS nabla-->
+<!ENTITY disin "&#58272;"><!-- u+E3A0 set membership, long horizontal stroke ISOTECH -->
+<!ENTITY Dot "&#776;"><!-- u+0308 dieresis or umlaut mark ISOTECH -->
+<!ENTITY DotDot "&#8412;"><!-- u+20DC four dots above ISOTECH -->
+<!ENTITY DoubleContourIntegral "&#8751;"><!-- u+222F double contour integral operator MMALIAS Conint-->
+<!ENTITY DoubleLeftArrow "&#8656;"><!-- u+21D0 is implied by MMALIAS lArr-->
+<!ENTITY DoubleRightArrow "&#8658;"><!-- u+21D2 implies MMALIAS rArr-->
+<!ENTITY DoubleVerticalBar "&#8741;"><!-- u+2225 parallel MMALIAS par-->
+<!ENTITY DownTee "&#8868;"><!-- u+22A4 top MMALIAS top-->
+<!ENTITY dsol "&#58281;"><!-- u+E3A9 solidus, bar above ISOTECH -->
+<!ENTITY dtdot "&#8945;"><!-- u+22F1 /ddots, three dots, descending ISOTECH -->
+<!ENTITY dwangle "&#58282;"><!-- u+E3AA large downward pointing angle ISOTECH -->
+<!ENTITY Element "&#8712;"><!-- u+2208 set membership, variant MMALIAS isinv-->
+<!ENTITY elinters "&#58279;"><!-- u+E3A7 electrical intersection ISOTECH -->
+<!ENTITY epar "&#8917;"><!-- u+22D5 parallel, equal; equal or parallel ISOTECH -->
+<!ENTITY eparsl "&#58244;"><!-- u+E384 parallel, slanted, equal; homothetically congruent to ISOTECH -->
+<!ENTITY equiv "&#8801;"><!-- u+2261 identical with ISOTECH -->
+<!ENTITY eqvparsl "&#58246;"><!-- u+E386 equivalent, equal; congruent and parallel ISOTECH -->
+<!ENTITY exist "&#8707;"><!-- u+2203 /exists at least one exists ISOTECH -->
+<!ENTITY Exists "&#8707;"><!-- u+2203 /exists at least one exists MMALIAS exist-->
+<!ENTITY fltns "&#58241;"><!-- u+E381 flatness ISOTECH -->
+<!ENTITY ForAll "&#8704;"><!-- u+2200 /forall for all MMALIAS forall-->
+<!ENTITY forall "&#8704;"><!-- u+2200 /forall for all ISOTECH -->
+<!ENTITY fpartint "&#58262;"><!-- u+E396 finite part integral ISOTECH -->
+<!ENTITY ge "&#8805;"><!-- u+2265 greater-than-or-equal ISOTECH -->
+<!ENTITY geq "&#8805;"><!-- u+2265 greater-than-or-equal MMALIAS ge-->
+<!ENTITY GreaterEqual "&#8805;"><!-- u+2265 greater-than-or-equal MMALIAS ge-->
+<!ENTITY hamilt "&#8459;"><!-- u+210B Hamiltonian (script capital H) ISOTECH -->
+<!ENTITY iff "&#58213;"><!-- u+E365 /iff if and only if ISOTECH -->
+<!ENTITY iiiint "&#58232;"><!-- u+E378 quadruple integral operator MMALIAS qint-->
+<!ENTITY iiint "&#8749;"><!-- u+222D triple integral operator MMALIAS tint-->
+<!ENTITY iinfin "&#58226;"><!-- u+E372 infinity sign, incomplete ISOTECH -->
+<!ENTITY imped "&#58635;"><!-- u+E50B impedance ISOTECH -->
+<!ENTITY Implies "&#8658;"><!-- u+21D2 implies MMALIAS rArr-->
+<!ENTITY in "&#8714;"><!-- u+220A set membership MMALIAS isin-->
+<!ENTITY infin "&#8734;"><!-- u+221E /infty infinity ISOTECH -->
+<!ENTITY infintie "&#58636;"><!-- u+E50C tie, infinity ISOTECH -->
+<!ENTITY Int "&#8748;"><!-- u+222C double integral operator ISOTECH -->
+<!ENTITY int "&#8747;"><!-- u+222B integral operator ISOTECH -->
+<!ENTITY Integral "&#8747;"><!-- u+222B integral operator MMALIAS int-->
+<!ENTITY intlarhk "&#58266;"><!-- u+E39A integral, left arrow with hook ISOTECH -->
+<!ENTITY isin "&#8714;"><!-- u+220A set membership ISOTECH -->
+<!ENTITY isindot "&#58268;"><!-- u+E39C set membership, dot above ISOTECH -->
+<!ENTITY isinE "&#58270;"><!-- u+E39E set membership, two horizontal strokes ISOTECH -->
+<!ENTITY isins "&#58276;"><!-- u+E3A4 set membership, vertical bar on horizontal stroke ISOTECH -->
+<!ENTITY isinsv "&#58274;"><!-- u+E3A2 large set membership, vertical bar on horizontal stroke ISOTECH -->
+<!ENTITY isinv "&#8712;"><!-- u+2208 set membership, variant ISOTECH -->
+<!ENTITY lagran "&#8466;"><!-- u+2112 Lagrangian (script capital L) ISOTECH -->
+<!ENTITY Lang "&#12298;"><!-- u+300A left angle bracket, double ISOTECH -->
+<!ENTITY lang "&#12296;"><!-- u+3008 left angle bracket ISOTECH -->
+<!ENTITY langle "&#12296;"><!-- u+3008 left angle bracket MMALIAS lang-->
+<!ENTITY lArr "&#8656;"><!-- u+21D0 is implied by ISOTECH -->
+<!ENTITY lbbrk "&#12308;"><!-- u+3014 left broken bracket ISOTECH -->
+<!ENTITY le "&#8804;"><!-- u+2264 less-than-or-equal ISOTECH -->
+<!ENTITY LeftAngleBracket "&#12296;"><!-- u+3008 left angle bracket MMALIAS lang-->
+<!ENTITY Leftarrow "&#8656;"><!-- u+21D0 is implied by MMALIAS lArr-->
+<!ENTITY leq "&#8804;"><!-- u+2264 less-than-or-equal MMALIAS le-->
+<!ENTITY loang "&#12312;"><!-- u+3018 left open angular bracket ISOTECH -->
+<!ENTITY lobrk "&#12314;"><!-- u+301A left open bracket ISOTECH -->
+<!ENTITY lopar "&#58233;"><!-- u+E379 left open parenthesis ISOTECH -->
+<!ENTITY lowast "&#8727;"><!-- u+2217 low asterisk ISOTECH -->
+<!ENTITY minus "&#8722;"><!-- u+2212 minus sign ISOTECH -->
+<!ENTITY MinusPlus "&#8723;"><!-- u+2213 minus-or-plus sign MMALIAS mnplus-->
+<!ENTITY mnplus "&#8723;"><!-- u+2213 minus-or-plus sign ISOTECH -->
+<!ENTITY mp "&#8723;"><!-- u+2213 minus-or-plus sign MMALIAS mnplus-->
+<!ENTITY nabla "&#8711;"><!-- u+2207 del, Hamilton operator ISOTECH -->
+<!ENTITY ne "&#8800;"><!-- u+2260 not equal ISOTECH -->
+<!ENTITY nedot "&#58250;"><!-- u+E38A not equal, dot ISOTECH -->
+<!ENTITY nhpar "&#58253;"><!-- u+E38D not, horizontal, parallel ISOTECH -->
+<!ENTITY ni "&#8717;"><!-- u+220D contains ISOTECH -->
+<!ENTITY nis "&#58277;"><!-- u+E3A5 contains, vertical bar on horizontal stroke ISOTECH -->
+<!ENTITY nisd "&#58273;"><!-- u+E3A1 contains, long horizontal stroke ISOTECH -->
+<!ENTITY niv "&#8715;"><!-- u+220B contains, variant ISOTECH -->
+<!ENTITY Not "&#58284;"><!-- u+E3AC not with two horizontal strokes ISOTECH -->
+<!ENTITY NotElement "&#8713;"><!-- u+2209 negated set membership MMALIAS notin-->
+<!ENTITY NotEqual "&#8800;"><!-- u+2260 not equal MMALIAS ne-->
+<!ENTITY notin "&#8713;"><!-- u+2209 negated set membership ISOTECH -->
+<!ENTITY notindot "&#58269;"><!-- u+E39D negated set membership, dot above ISOTECH -->
+<!ENTITY notinE "&#58637;"><!-- u+E50D negated set membership, two horizontal strokes ISOTECH -->
+<!ENTITY notinva "&#58224;"><!-- u+E370 negated set membership, variant ISOTECH -->
+<!ENTITY notinvb "&#58235;"><!-- u+E37B negated set membership, variant ISOTECH -->
+<!ENTITY notinvc "&#58236;"><!-- u+E37C negated set membership, variant ISOTECH -->
+<!ENTITY notni "&#8716;"><!-- u+220C negated contains ISOTECH -->
+<!ENTITY notniva "&#8716;"><!-- u+220C negated contains, variant ISOTECH -->
+<!ENTITY notnivb "&#58237;"><!-- u+E37D contains, variant ISOTECH -->
+<!ENTITY notnivc "&#58238;"><!-- u+E37E contains, variant ISOTECH -->
+<!ENTITY NotReverseElement "&#8716;"><!-- u+220C negated contains, variant MMALIAS notniva-->
+<!ENTITY nparsl "&#58249;"><!-- u+E389 not parallel, slanted ISOTECH -->
+<!ENTITY npart "&#58256;"><!-- u+E390 not partial differential ISOTECH -->
+<!ENTITY npolint "&#58265;"><!-- u+E399 line integration, not including the pole ISOTECH -->
+<!ENTITY nvinfin "&#58254;"><!-- u+E38E not, vert, infinity ISOTECH -->
+<!ENTITY oint "&#8750;"><!-- u+222E contour integral operator MMALIAS conint-->
+<!ENTITY olcross "&#58280;"><!-- u+E3A8 circle, cross ISOTECH -->
+<!ENTITY Or "&#58229;"><!-- u+E375 double logical or ISOTECH -->
+<!ENTITY or "&#8744;"><!-- u+2228 logical or ISOTECH -->
+<!ENTITY ord "&#58259;"><!-- u+E393 or, horizontal dash ISOTECH -->
+<!ENTITY order "&#8500;"><!-- u+2134 order of (script small o) ISOTECH -->
+<!ENTITY oror "&#58638;"><!-- u+E50E two logical or ISOTECH -->
+<!ENTITY orslope "&#58286;"><!-- u+E3AE sloping large or ISOTECH -->
+<!ENTITY orv "&#58258;"><!-- u+E392 or with middle stem ISOTECH -->
+<!ENTITY par "&#8741;"><!-- u+2225 parallel ISOTECH -->
+<!ENTITY parallel "&#8741;"><!-- u+2225 parallel MMALIAS par-->
+<!ENTITY parsl "&#58242;"><!-- u+E382 parallel, slanted ISOTECH -->
+<!ENTITY part "&#8706;"><!-- u+2202 /partial partial differential ISOTECH -->
+<!ENTITY PartialD "&#8706;"><!-- u+2202 /partial partial differential MMALIAS part-->
+<!ENTITY permil "&#8240;"><!-- u+2030 per thousand ISOTECH -->
+<!ENTITY perp "&#8869;"><!-- u+22A5 perpendicular ISOTECH -->
+<!ENTITY pertenk "&#8241;"><!-- u+2031 per 10 thousand ISOTECH -->
+<!ENTITY phmmat "&#8499;"><!-- u+2133 physics M-matrix (script capital M) ISOTECH -->
+<!ENTITY pointint "&#58230;"><!-- u+E376 integral around a point operator ISOTECH -->
+<!ENTITY Prime "&#8243;"><!-- u+2033 double prime or second ISOTECH -->
+<!ENTITY prime "&#8242;"><!-- u+2032 /prime prime or minute ISOTECH -->
+<!ENTITY profalar "&#9006;"><!-- u+232E all-around profile ISOTECH -->
+<!ENTITY profline "&#8978;"><!-- u+2312 profile of a line ISOTECH -->
+<!ENTITY profsurf "&#8979;"><!-- u+2313 profile of a surface ISOTECH -->
+<!ENTITY prop "&#8733;"><!-- u+221D is proportional to ISOTECH -->
+<!ENTITY Proportional "&#8733;"><!-- u+221D is proportional to MMALIAS prop-->
+<!ENTITY propto "&#8733;"><!-- u+221D is proportional to MMALIAS prop-->
+<!ENTITY qint "&#58232;"><!-- u+E378 quadruple integral operator ISOTECH -->
+<!ENTITY qprime "&#58225;"><!-- u+E371 quadruple prime ISOTECH -->
+<!ENTITY quatint "&#58231;"><!-- u+E377 quaternion integral operator ISOTECH -->
+<!ENTITY radic "&#8730;"><!-- u+221A /surd radical ISOTECH -->
+<!ENTITY Rang "&#12299;"><!-- u+300B right angle bracket, double ISOTECH -->
+<!ENTITY rang "&#12297;"><!-- u+3009 right angle bracket ISOTECH -->
+<!ENTITY rangle "&#12297;"><!-- u+3009 right angle bracket MMALIAS rang-->
+<!ENTITY rArr "&#8658;"><!-- u+21D2 implies ISOTECH -->
+<!ENTITY rbbrk "&#12309;"><!-- u+3015 right broken bracket ISOTECH -->
+<!ENTITY ReverseElement "&#8715;"><!-- u+220B contains, variant MMALIAS niv-->
+<!ENTITY RightAngleBracket "&#12297;"><!-- u+3009 right angle bracket MMALIAS rang-->
+<!ENTITY Rightarrow "&#8658;"><!-- u+21D2 implies MMALIAS rArr-->
+<!ENTITY roang "&#12313;"><!-- u+3019 right open angular bracket ISOTECH -->
+<!ENTITY robrk "&#12315;"><!-- u+301B right open bracket ISOTECH -->
+<!ENTITY ropar "&#58234;"><!-- u+E37A right open parenthesis ISOTECH -->
+<!ENTITY rppolint "&#58263;"><!-- u+E397 line integration, rectangular path around pole ISOTECH -->
+<!ENTITY scpolint "&#58264;"><!-- u+E398 line integration, semi-circular path around pole ISOTECH -->
+<!ENTITY sim "&#8764;"><!-- u+223C similar ISOTECH -->
+<!ENTITY simdot "&#58251;"><!-- u+E38B similar, dot ISOTECH -->
+<!ENTITY sime "&#8771;"><!-- u+2243 similar, equals ISOTECH -->
+<!ENTITY simeq "&#8771;"><!-- u+2243 similar, equals MMALIAS sime-->
+<!ENTITY SmallCircle "&#8728;"><!-- u+2218 composite function (small circle) MMALIAS compfn-->
+<!ENTITY smeparsl "&#58245;"><!-- u+E385 similar, parallel, slanted, equal ISOTECH -->
+<!ENTITY Sqrt "&#8730;"><!-- u+221A /surd radical MMALIAS radic-->
+<!ENTITY square "&#9633;"><!-- u+25A1 square ISOTECH -->
+<!ENTITY squarf "&#9632;"><!-- u+25A0 square, filled ISOTECH -->
+<!ENTITY strns "&#58240;"><!-- u+E380 straightness ISOTECH -->
+<!ENTITY sub "&#8834;"><!-- u+2282 subset or is implied by ISOTECH -->
+<!ENTITY sube "&#8838;"><!-- u+2286 subset, equals ISOTECH -->
+<!ENTITY Subset "&#8834;"><!-- u+2282 subset or is implied by MMALIAS sub-->
+<!ENTITY subset "&#8834;"><!-- u+2282 subset or is implied by MMALIAS sub-->
+<!ENTITY subseteq "&#8838;"><!-- u+2286 subset, equals MMALIAS sube-->
+<!ENTITY SubsetEqual "&#8838;"><!-- u+2286 subset, equals MMALIAS sube-->
+<!ENTITY SuchThat "&#8717;"><!-- u+220D contains MMALIAS ni-->
+<!ENTITY sup "&#8835;"><!-- u+2283 superset or implies ISOTECH -->
+<!ENTITY supe "&#8839;"><!-- u+2287 superset, equals ISOTECH -->
+<!ENTITY Superset "&#8835;"><!-- u+2283 superset or implies MMALIAS sup-->
+<!ENTITY SupersetEqual "&#8839;"><!-- u+2287 superset, equals MMALIAS supe-->
+<!ENTITY supset "&#8835;"><!-- u+2283 superset or implies MMALIAS sup-->
+<!ENTITY supseteq "&#8839;"><!-- u+2287 superset, equals MMALIAS supe-->
+<!ENTITY tdot "&#8411;"><!-- u+20DB three dots above ISOTECH -->
+<!ENTITY there4 "&#8756;"><!-- u+2234 therefore ISOTECH -->
+<!ENTITY Therefore "&#8756;"><!-- u+2234 therefore MMALIAS there4-->
+<!ENTITY therefore "&#8756;"><!-- u+2234 therefore MMALIAS there4-->
+<!ENTITY Tilde "&#8764;"><!-- u+223C similar MMALIAS sim-->
+<!ENTITY TildeEqual "&#8771;"><!-- u+2243 similar, equals MMALIAS sime-->
+<!ENTITY TildeFullEqual "&#8773;"><!-- u+2245 congruent with MMALIAS cong-->
+<!ENTITY TildeTilde "&#8776;"><!-- u+2248 approximate MMALIAS ap-->
+<!ENTITY tint "&#8749;"><!-- u+222D triple integral operator ISOTECH -->
+<!ENTITY top "&#8868;"><!-- u+22A4 top ISOTECH -->
+<!ENTITY topbot "&#9014;"><!-- u+2336 top and bottom ISOTECH -->
+<!ENTITY topcir "&#58243;"><!-- u+E383 top, circle below ISOTECH -->
+<!ENTITY tprime "&#8244;"><!-- u+2034 triple prime ISOTECH -->
+<!ENTITY TripleDot "&#8411;"><!-- u+20DB three dots above MMALIAS tdot-->
+<!ENTITY UpTee "&#8869;"><!-- u+22A5 perpendicular MMALIAS perp-->
+<!ENTITY utdot "&#8944;"><!-- u+22F0 three dots, ascending ISOTECH -->
+<!ENTITY uwangle "&#58283;"><!-- u+E3AB large upward pointing angle ISOTECH -->
+<!ENTITY vangrt "&#8894;"><!-- u+22BE right angle, variant (with arc) ISOTECH -->
+<!ENTITY vee "&#8744;"><!-- u+2228 logical or MMALIAS or-->
+<!ENTITY veeeq "&#8794;"><!-- u+225A logical or, equals ISOTECH -->
+<!ENTITY Verbar "&#8214;"><!-- u+2016 double vertical bar ISOTECH -->
+<!ENTITY Vert "&#8214;"><!-- u+2016 double vertical bar MMALIAS Verbar-->
+<!ENTITY wedge "&#8743;"><!-- u+2227 logical and MMALIAS and-->
+<!ENTITY wedgeq "&#8793;"><!-- u+2259 corresponds to (wedge, equals) ISOTECH -->
+<!ENTITY xnis "&#58275;"><!-- u+E3A3 large contains, vertical bar on horizontal stroke ISOTECH -->
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/l2xdemo.cfg b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/l2xdemo.cfg
new file mode 100644
index 00000000000..d79791f2047
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/l2xdemo.cfg
@@ -0,0 +1,41 @@
+\Configure{html}{xml}
+\Preamble{html,0.0,ref-,fonts}
+\Configure{HTML} {\IgnorePar\Tg<?xml version="1.0"?>
+ \Tg<document>}
+ {\Tg</document>}
+\Configure{section}
+ {\EndP \IgnorePar\par \GetLabel \Tg<section \PutLabel>}
+ {\EndP \IgnorePar \Tg</section>}
+ {\Tg<stitle>}{\Tg</stitle>}
+\Configure{subsection}
+ {\EndP \IgnorePar\par \GetLabel \Tg<subsection \PutLabel>}
+ {\EndP \IgnorePar \Tg</subsection>}
+ {\Tg<stitle>}{\Tg</stitle>}
+\Configure{likesection}
+ {\EndP \IgnorePar\par\GetLabel \Tg<section \PutLabel class="star">}
+ {\EndP \Tg</section>}
+ {\Tg<stitle>}{\Tg</stitle>}
+\ConfigureList{thebibliography}
+ {\EndP \GetLabel \Tg<bibliography \PutLabel>
+ \def\EndItem{\def\EndItem{\EndP \Tg</bibitem>}}}
+ {\EndItem \Tg</bibliography>}
+ {\EndItem \DeleteMark}
+ {\Tg<bibitem id="\AnchorLabel">\par}
+\ConfigureList{enumerate}
+ {\EndP \GetLabel \Tg<lalist \PutLabel class="enumerate">
+ \def\EndItem{\def\EndItem{\EndP\Tg</item>}}} {\EndItem \Tg</lalist>}
+ {\EndItem \DeleteMark} {\Tg<item>\par}
+\Configure{tabular}
+ {\Tg<tabular preamble="\Clr">} {\Tg</tabular>}
+ {\Tg<row>}{\Tg</row>} {\Tg<cell \Hnewline>}{\Tg</cell>}
+\Configure{maketitle} {}{} {\Tg<title>}{\Tg</title>}
+\Configure{thanks author date and}
+ {}{} {\Tg<author>}{\Tg</author>} {\Tg<date>}{\Tg</date>} {} {}
+\Configure{emph}{\Tg<emph>}{\Tg</emph>}
+\Configure{label}{id="#1"}{\Tg<pagelabel id="#1"/>}
+\Configure{pageref}{\Tg<pageref refid="#1"/>}
+\Configure{ref}{\Tg<ref refid="#1"/>}
+\Configure{cite}{\Tg<cite refid="#1"/>}
+\begin{document}
+\EndPreamble
+\Configure{HtmlPar} {\EndP\Tg<P>} {\EndP\Tg<P>} {\Tg</P>} {\Tg</P>}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/l2xdemo.tex b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/l2xdemo.tex
new file mode 100644
index 00000000000..c902f390ed3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/l2xdemo.tex
@@ -0,0 +1,29 @@
+\documentclass{article}
+ \usepackage[x2ldemo]{tex4ht}
+ \title{Simulation of Energy Loss Straggling}
+ \author{Maria Physicist}
+\begin{document}
+\maketitle
+\section{Landau theory}\label{sec:phys332-1}
+The Landau probability distribution may be written in
+terms of the universal Landau function \cite{bib-LAND}.
+\subsection{Restrictions}
+The Landau formalism makes two restrictive assumptions:
+\begin{enumerate}
+\item The typical energy loss is small.
+\item The typical energy loss in the absorber should be
+ large (see section \ref{urban}).
+\end{enumerate}
+\section{Urb\'an model}\label{urban}
+The following values are obtained:
+
+\begin{tabular}{llcrr}
+16 & 16 & & 2000 & 29.63\\
+100 & 27.59 & & 100 & 32.00
+\end{tabular}
+
+\begin{thebibliography}{10}
+\bibitem{bib-LAND} L.Landau. On the Energy Loss of Fast Particles by
+Ionisation. Originally published in \emph{J. Phys.}, 8:201, 1944.
+\end{thebibliography}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/l2xdemo.xml b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/l2xdemo.xml
new file mode 100644
index 00000000000..c1de03fd509
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/l2xdemo.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<document>
+<title>Simulation of Energy Loss Straggling</title>
+<author>Maria Physicist</author>
+<date>November 9, 1998</date>
+<section id="sec:phys332-1">
+<stitle>Landau theory</stitle>
+<p> The Landau probability distribution may be written in
+terms of the universal Landau function <cite refid="bib-LAND"/> .
+</p>
+<subsection>
+<stitle>Restrictions</stitle>
+<p>The Landau formalism makes two restrictive assumptions:</p>
+<lalist class="enumerate">
+ <item><p>The typical energy loss is small.</p></item>
+ <item><p>The typical energy loss in the absorber should be
+ large (see section <ref refid="urban"/> ).</p></item>
+</lalist>
+</subsection>
+</section>
+<section id="urban">
+<stitle>Urb&aacute;n model</stitle>
+<p> The following values are obtained:
+</p><p> <tabular preamble="llcrr"><row>
+<cell>16</cell><cell>16</cell><cell></cell><cell>2000</cell>
+<cell>29.63</cell></row><row><cell>100</cell>
+<cell>27.59</cell><cell></cell><cell>100</cell><cell>32.00</cell>
+ </row></tabular></p>
+</section>
+<section class="star">
+<stitle>References</stitle>
+<bibliography >
+<bibitem id="bib-LAND">
+ <p>L.Landau. On the Energy Loss of Fast Particles by Ionisation.
+ Originally published in <emph>J. Phys.</emph>, 8:201, 1944.</p>
+</bibitem>
+</bibliography>
+</section>
+</document>
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/l2xmath.cfg b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/l2xmath.cfg
new file mode 100644
index 00000000000..389a4509ee5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/l2xmath.cfg
@@ -0,0 +1,31 @@
+\Preamble{html,0.0,ref-,fonts,math}
+\Configure{$$}{\DviMath}{\EndDviMath}{}
+\Configure{eqnarray}
+ {\GetLabel \Tg<eqnarray \PutLabel>}
+ {\GetLabel \Tg</eqnarray>}
+ {\GetLabel \Tg<subeqn \PutLabel>\Tg<math>}
+ {\Tg</math>\Tg</subeqn>}
+ {\ifnum \Col=4 \Tg<mtext>\PauseMathClass \fi}
+ {\ifnum \Col=4 \EndPauseMathClass\Tg</mtext>\fi}
+\Configure{label}{id="#1"}{\Tg<pagelabel id="#1"/>}
+\Configure{SUBSUP}
+ {\Send{BACK}{<msubsup>}\Tg<mrow>}
+ {\Tg</mrow>\Tg<mrow>}
+ {\Tg</mrow>\TG</msubsup>}
+\Configure{frac}
+ {\Tg<mfrac>\Tg<mrow>} {\Tg</mrow>\HCode{<!--}}
+ {\HCode{-->}\Tg<mrow>}{\Tg</mrow>\Tg</mfrac>}
+\Configure{mathrm}{\Tg<mi>\PauseMathClass}
+ {\EndPauseMathClass\Tg</mi>}
+\Configure{accent}\=\bar{{}{}}
+ {}{\Tg<mover accent="true">#2\Tg<mo>\HCode{&OverBar;}\Tg</mo>\Tg</mover>}
+\Configure{MathClass}{0}{*}{<mi>}{</mi>}{}
+\Configure{MathClass}{1}{*}{<mo>}{</mo>}{}
+\Configure{MathClass}{2}{*}{<mo>}{</mo>}{}
+\Configure{MathClass}{3}{*}{<mo>}{</mo>}{}
+\Configure{MathClass}{4}{*}{<mrow><mo>}{</mo>}{}
+\Configure{MathClass}{5}{*}{<mo>}{</mo></mrow>}{}
+\Configure{MathClass}{6}{*}{<mo>}{</mo>}{}
+\Configure{MathClass}{7}{*}{<mn>}{</mn>}{0123456789}
+\begin{document}
+\EndPreamble
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mathml.dsl b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mathml.dsl
new file mode 100644
index 00000000000..595531b3057
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mathml.dsl
@@ -0,0 +1,1346 @@
+
+<!-- DSSSL Stylesheet fragment mathml.dsl
+ (included as an entity into mathmlx.dsl)
+ -->
+
+;;;
+;;; David Carlisle
+;;; davidc@nag.co.uk
+;;;
+;;; Copyright 1998 Nag Ltd, The OpenMath Consortium. Esprit Project 24.969.
+;;;
+
+
+
+
+;;; COLOUR
+;;;
+;;; Just RGB colour supported currentlly
+
+(define (rgb-color r g b)
+ (color (color-space
+ "ISO/IEC 10179:1996//Color-Space Family::Device RGB") r g b))
+
+
+
+;;; CONTENT MathML
+;;;
+;;; Content MathML is mainly implemented directly with element
+;;; declarations, and process-children. there is not too much
+;;; need for node list processing.
+;;;
+;;; Currently many attributes for font changes and spacing are silently
+;;; ignored.
+;;;
+;;; The mo element goes to some trouble to get its attributes as specified
+;;; in the MathML recomendation, but currently doesn't do much with them.
+
+
+;;; mrow
+;;; should check attributes (this comment applies to most elements
+;;; but won't be repeated
+
+(element mrow
+ (process-children-trim))
+
+
+;;; mi
+;;; Math Identifier Defaults to italic.
+;;; Ought to switch between math italic and text italic
+;;; for multi letter identifiers (or just in tex backend?)
+
+(element mi
+ (make math-sequence
+ font-posture:
+ (let ((fnt
+ (if(attribute-string "fontstyle")
+ (attribute-string "fontstyle")
+ "italic")))
+ (if (equal? "normal" fnt)
+ 'upright
+ (if (equal? "italic" fnt)
+ 'italic
+ #f)))
+ (process-children-trim)))
+
+
+
+;;; mn
+;;; Same for numbers.
+
+(element mn
+ (make math-sequence
+ font-posture:
+ (let ((fnt
+ (if(attribute-string "fontstyle")
+ (attribute-string "fontstyle")
+ "normal")))
+ (if (equal? "normal" fnt)
+ 'upright
+ (if (equal? "italic" fnt)
+ 'italic
+ #f)))
+ (process-children-trim)))
+
+;;; mtext
+;;; Bits of non-math
+
+(element mtext
+ (make unmath
+ (process-children-trim)))
+
+;;; mspace
+;;; Grumble grumble it seems extraordinarily complicated to copy
+;;; a length from an attribute on the element to a keyword to a make
+;;; function. Also the rtf backend doesn't really support line-field
+;;; I couldn't get inline-space characters to work either.
+
+(element mspace
+ (make line-field field-width:
+ (let ((x (attribute-value "width" (current-node))))
+ (measurement-to-length (if (attribute-string "width")
+ (attribute-string "width")
+ "0pt")))))
+
+;;; ms
+;;; Doesn't work right in tex backend: How do you specify mono space font
+;;; without specifying what font to use.
+
+(element ms
+ (make unmath
+ font-posture: 'upright
+ font-family-name: "iso-monospace"
+ (literal "\"")
+ (process-children-trim)
+ (literal "\"")))
+
+
+;;; mfrac
+;;; fractions.
+
+(element mfrac
+ (make fraction
+ (let ((nl (children(current-node))))
+ (sosofo-append
+ (make math-sequence
+ label: 'numerator
+ (process-node-list (node-list-first nl)))
+ (make math-sequence
+ label: 'denominator
+ (process-node-list (node-list-rest nl)))))))
+
+;;; msqrt mroot
+;;; Radicals
+
+(element msqrt
+ (make radical
+ (process-children-trim)))
+
+
+(element mroot
+ (make radical
+ (let ((nl (children(current-node))))
+ (sosofo-append
+ (make math-sequence
+ (process-node-list (node-list-first nl)))
+ (make math-sequence
+ label: 'degree
+ (process-node-list (node-list-rest nl)))))))
+
+
+;;; mstyle
+;;; Style, what style?
+
+(element mstyle
+ (make math-sequence
+ (process-children-trim)))
+
+;;; merror
+;;; Ignore this, for now
+
+(element merror
+ (make math-sequence
+ (process-children-trim)))
+
+;;; mpadded
+;;; Hmmm
+(element mpadded
+ (make math-sequence
+ (process-children-trim)))
+
+
+;;; mphantom
+;; do it in white: not really the same as invisible
+;; but not sure if there is an easy general way to access
+;; background colour.
+
+(element mphantom
+ (make math-sequence
+ color: (rgb-color 1 1 1)
+ (process-children-trim)))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;; mfenced
+;;; Doesn't do separators for now.
+
+(element mfenced
+ (make fence
+ (if (attribute-string "open")
+ (make math-sequence
+ label: 'open
+ (literal (attribute-string "open")))
+ (empty-sosofo))
+ (if (attribute-string "close")
+ (make math-sequence
+ label: 'close
+ (literal (attribute-string "close")))
+ (empty-sosofo))
+ (make math-sequence
+ (process-children-trim))))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;; Superscripts and subscripts
+
+;;; msup
+
+(element msup
+ (make script
+ (let ((nl (children(current-node))))
+ (sosofo-append
+ (make math-sequence
+ (process-node-list (node-list-first nl)))
+ (make math-sequence
+ label: 'post-sup
+ (process-node-list (node-list-rest nl)))))))
+
+;;; msub
+
+(element msub
+ (make script
+ (let ((nl (children(current-node))))
+ (sosofo-append
+ (make math-sequence
+ (process-node-list (node-list-first nl)))
+ (make math-sequence
+ label: 'post-sub
+ (process-node-list (node-list-rest nl)))))))
+
+;;; msubsup
+
+(element msubsup
+ (make script
+ (let* ((nl (children(current-node)))
+ (nlr (node-list-rest nl)))
+ (sosofo-append
+ (make math-sequence
+ (process-node-list (node-list-first nl)))
+ (make math-sequence
+ label: 'post-sub
+ (process-node-list (node-list-first nlr)))
+ (make math-sequence
+ label: 'post-sup
+ (process-node-list (node-list-rest nlr)))))))
+
+;;; mmultiscripts
+;;; In order to get the scripts aligning with each other
+;;; they all script an empty element (so ignore th esize of the base
+;;; I wish I could measure things in DSSSL....
+
+(element mmultiscripts
+ (let* ((nl (children(current-node)))
+ (base (node-list-first nl))
+ (nlr (node-list-rest nl)))
+ (process-multi-scripts base nlr #t (empty-sosofo) (empty-sosofo))))
+
+
+;;; while flag is true scoop up the scripts into the fourth argument
+;;; then when you see multiscripts switch the flag so then start collecting
+;;; in the third argument. Finally when rest is empty, stuff the scripts
+;;; around the base.
+
+(define (process-multi-scripts base rest flag left right )
+ (if (node-list-empty? rest)
+ (sosofo-append
+ left
+ (make math-sequence
+ (process-node-list base))
+ right)
+; else
+ (if (equal? "mprescripts" (gi (node-list-first rest)))
+ (process-multi-scripts base (node-list-rest rest) #f left right)
+ (if flag
+ (process-multi-scripts
+ base
+ (node-list-rest (node-list-rest rest))
+ flag
+ left
+ (sosofo-append
+ right
+ (make script
+ (make math-sequence
+ label: 'post-sub
+ (process-node-list (node-list-first rest)))
+ (make math-sequence
+ label: 'post-sup
+ (process-node-list (node-list-first (node-list-rest rest)))))))
+ ; else
+ (process-multi-scripts
+ base
+ (node-list-rest (node-list-rest rest))
+ flag
+ (sosofo-append
+ left
+ (make script
+ (make math-sequence
+ label: 'post-sub
+ (process-node-list (node-list-first rest)))
+ (make math-sequence
+ label: 'post-sup
+ (process-node-list (node-list-first (node-list-rest rest))))))
+ right)))))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;; none/
+;;; Not the hardest thing to implement
+
+(element none
+ (empty-sosofo))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;; Under and over bars.
+;;; These don't work yet.
+
+(element munder
+ (make math-sequence
+ (process-children-trim)))
+
+(element mover
+ (make math-sequence
+ (process-children-trim)))
+
+(element munderover
+ (make math-sequence
+ (process-children-trim)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;; Operator dictionary
+
+;;; This is just a small version, while I test various implementations.
+
+
+;;; First put back the indirection that TeX as but that MathML omitted.
+;;; Need the default lengths to refer to variables rather than explicit
+;;; lengths, so that you can change them all together.
+;;; Apart from the fact that it isn't implemented, there arelots of other
+;;; problems with this operator dictionay concept.
+
+;;; (mathml problem) As noted above the recommendation gives explicit lengths.
+;;; (mathml problem) As the recommendation gives fixed (as opposed to
+;;; variable/stretchy) lengths.
+;;; (dsssl problem) Full support of stretch operators would require an
+;;; extended dsssl flow object (or extended semantics
+;;; for the stretchy character characteristic) to support
+;;; `mid' fences.
+;;;
+(define %zskip 0em)
+(define %smallskip .05555em)
+(define %medskip .16666em)
+(define %bigskip .16666em)
+
+(define mathml-op-dict
+'(
+ ("+"
+ ("prefix". ((lspace . %zskip) (rspace . %bigskip)))
+ ("infix" . ((lspace . %medskip) (rspace . %medskip))))
+ ("*="
+ ("infix" . ((lspace . %bigskip)(rspace . %bigskip))))
+ ("("
+ ("prefix" . ((fence . #t )(stretchy . #t)(lspace . %zskip)(rspace . %zskip))))
+ (")"
+ ("postfix" .((fence . #t )(stretchy . #t)(lspace . %zskip)(rspace . %zskip))))
+
+))
+
+
+;;; Helper function, just trims spaces from strings, actually
+;;; zaps all space. needed as mo doesn't use process-children-trim.
+
+(define (string-nospace s)
+ (let ((l (string-length s)))
+ (let loop ((i 0))
+ (if (= i l)
+ ""
+ (let (( x (string-ref s i)))
+ (if (equal? #\space x)
+ (loop (+ i 1))
+ (string-append (string x)
+ (loop (+ i 1)))))))))
+
+;;; mo
+;;; This current version tries to implement the defaulting
+;;; of the various attributes. Although currently
+;;; It doesn't actually use th eattributes once it has got the
+;;; values.
+
+(element mo
+ (let*
+;; First get the name of the operator
+;; and the surrounding node list which will be dealt with specially
+;; if it is mrow (or more correctly should be mrow-like)
+ ((nm (string-append(string-nospace (data (current-node)))))
+ (pnt (parent))
+;; An explicit form attribute (or #f)
+ (form1 (attribute-string "form"))
+;; Look up the name in the operator dictionary, which will return
+;; another association list, for looking up the form [if the operator
+;; is in the dictionary].
+ (p (assoc nm mathml-op-dict))
+ (form
+ (if form1
+ (if p
+;; If a form was specified, and the operator is in the dictionary
+;; look up the list of defaults. If it isn't in the dictionary
+;; with this form just make up a list just consisting of the form.
+ (or (assoc form1 (cdr p))
+ (list form1))
+ (list form1 ))
+;; Otherwise if a form was not specified, look up how many entries
+;; in the operator dictionary for this operator.
+ (let* ((dict-entries (if p
+ (length (cdr p))
+ 0)))
+ (if (= 0 dict-entries)
+;; If there are none, the operator is infix.
+ (list "infix" )
+ (if (= 1 dict-entries)
+;; If there is one, return that.
+ (car (cdr p))
+;; If there is more than one, look where we are in the parent list
+;; to decide which one to use.
+ (let ((d (assoc (if (string=? "mrow" (gi pnt))
+ (let ((l (node-list-length (children pnt)))
+ (n (absolute-child-number (current-node))))
+ (if (> l 1)
+ (if (= n 1)
+ "prefix"
+ (if (= n l)
+ "postfix"
+ "infix"))
+ "infix"))
+ "infix")
+ (cdr p))))
+ (if d
+ d
+ (car (cdr p))))
+ ))) ; let*
+ )) ; form
+;; Fence, from an attribute or out of the dictionary
+ (fence1 (attribute-string "fence"))
+ (fence (&my-debug(if fence1
+ (string=? fence1 "true")
+ (cdr (or (assoc 'fence (cdr form))
+ '( #t . #f))))))
+ ) ; end of let* settings
+;; Having done all that work, ignore all the attributes and just process
+;; the children.
+ (make math-sequence
+ (process-children-trim))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;; Helper function that just sticks a number of copies of a sosofo
+;;; on to the current sosofo. Used to pad out grids.
+
+(define (repeat-sosofo n sos)
+ (if (equal? n 0)
+ (empty-sosofo)
+ (sosofo-append sos (repeat-sosofo (- n 1) sos))))
+
+;;; mtable
+;;; Spanning cells not supported as I need to use dsssl grid flow objects
+;;; which don't span. Dsssl table flow objects do support spanning but they
+;;; are display objects and can't be inlined so are no good for this.
+
+(element mtable
+;; Preliminary pass through the table to count the number of columns
+ (let ((cols (&my-debug(node-list-reduce
+ (children(current-node))
+ (lambda (a b)
+ (if (string=? "mtr" (gi b))
+ (max a (node-list-length (children b)))
+ a))
+ 0))))
+ (make grid
+ grid-n-columns: cols
+;; Now main pass, making grid-cell flow object specifications.
+ (node-list-reduce
+ (children(current-node))
+ (lambda (a b)
+ (if (string=? "mtr" (gi b))
+ (sosofo-append
+ a
+ (node-list-reduce
+ (children b)
+ (lambda (x y)
+ (sosofo-append
+ x
+ (make grid-cell (process-node-list y))))
+ (empty-sosofo))
+ (repeat-sosofo
+ (- cols (node-list-length (children b)))
+ (make grid-cell (empty-sosofo))))
+ (sosofo-append
+ a
+ (make grid-cell (process-node-list b))
+ (repeat-sosofo (- cols 1) (make grid-cell (empty-sosofo))))))
+ (empty-sosofo)))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;; semantics
+
+;;; Helper function to dig out a MathML-Presentation child
+;;; if it exists.
+
+(define (get-presentation nl)
+ (if (node-list-empty? nl)
+ #f
+ (if (and
+ (string=? "annotation-xml" (gi (node-list-first nl)))
+ (string=? "MathML-Presentation"
+ (or (attribute-string "encoding" (node-list-first nl)) "")))
+ (children (node-list-first nl))
+ (get-presentation (node-list-rest nl)))))
+
+;;; Typeset the body and ignore all annotations, unless there
+;;; is an annotation-xml giving MathML-Presentation
+;;; in which case use that and ignore everything else.
+
+(element semantics
+ (let* ((nl (children (current-node))))
+ (process-node-list (or
+ (get-presentation (node-list-rest nl))
+ (node-list-first nl)))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+;;; Content MathML
+
+;;; In contrast to Presentation forms, Content MathML has vary few
+;;; elements defined in the dsssl, instead the apply element explitly
+;;; processes its children and calls [allegedly] suitable functions.
+
+;;; It would be nice to use the dsssl transformation language to explicitly
+;;; map content forms to presentation,
+;;; but the style language isn't available, so...
+
+
+;;; Helper function dealing with bound variables on sums and products
+;;; Checks for lowlimit child.
+
+(define (dobvar product-char-sosofo equal-char-sosofo b r)
+ (let ((first (gi (node-list-first r))))
+ (cond ((string=? "lowlimit" first)
+ (bvarl product-char-sosofo
+ (sosofo-append
+ b
+ equal-char-sosofo
+ (process-node-list (node-list-first r)))
+ (node-list-rest r)))
+ ((string=? "condition" first)
+ (bvarl
+ product-char-sosofo
+ (process-node-list (node-list-first r))
+ (node-list-rest r)))
+ (else (bvarl product-char-sosofo (empty-sosofo) r)))))
+
+
+;; Second function, checks for uplimit
+
+(define (bvarl product-char-sosofo low r)
+ (if (string=? "uplimit" (gi (node-list-first r)))
+ (bvaru
+ product-char-sosofo
+ low
+ (process-node-list (node-list-first r))
+ (node-list-rest r))
+ (bvaru
+ product-char-sosofo
+ low
+ (empty-sosofo)
+ r)))
+
+;; third function, add the found limits to the sum or product character
+
+(define (bvaru product-char-sosofo low high r)
+ (sosofo-append
+ (make script
+ (make math-sequence label: 'post-sub low)
+ (make math-sequence label: 'post-sup high)
+ product-char-sosofo)
+ (process-node-list r)))
+
+;;; General function to typeset a function with braced arguments.
+
+(define (apply-braced-fn fn args)
+ (make math-sequence
+ (sosofo-append
+ (literal fn)
+ (make fence
+ (make math-sequence label: 'open
+ (literal "("))
+ (make math-sequence label: 'close
+ (literal ")"))
+ (make math-sequence
+ (process-node-list args))))))
+
+
+;;; product/ sum/
+;;; Look for bound vars, then call above helper function.
+
+(define (apply-product product-char-sosofo equal-char-sosofo args)
+ (make math-sequence
+ (let ((b (node-list-first args)))
+ (if (string=? (gi b) "bvar")
+ (dobvar
+ product-char-sosofo
+ equal-char-sosofo
+ (process-node-list b)
+ (node-list-rest args))
+ (sosofo-append
+ product-char-sosofo
+ (process-node-list b))))))
+
+;;; log/
+;;; Just needs to check for logbase/
+
+(define (apply-log args)
+ (make math-sequence
+ (if (equal? "logbase" (gi (node-list-first args)))
+ (sosofo-append
+ (make script
+ (sosofo-append
+ (literal "log")
+ (make math-sequence
+ label: 'post-sub
+ (process-node-list (node-list-first args)))))
+ (apply-braced-fn "" (node-list-rest args)))
+ (apply-braced-fn "log" args))))
+
+;;; root/ sqrt/
+;;; Checks for degree/
+
+(define (apply-root args)
+ (make radical
+ (if (equal? "degree" (gi (node-list-first args)))
+ (sosofo-append
+ (make math-sequence
+ (process-node-list (node-list-rest args)))
+ (make math-sequence
+ label: 'degree
+ (process-node-list (node-list-first args))))
+ (make math-sequence
+ (process-node-list args)))))
+
+
+;;; forall/ exists/
+;;; Typeset any bound variables and conditions,
+;;; separated by commas, then do a full stop and finally
+;;; the body.
+
+(define (apply-forall op c)
+(make math-sequence
+ (sosofo-append
+ op
+ (process-node-list (node-list-first c))
+ (node-list-reduce
+ (node-list-rest c)
+ (lambda (result n)
+ (sosofo-append
+ result
+ (literal
+ (if (or (equal? "bvar" (gi n)) (equal? "condition" (gi n)))
+ ","
+ "."))
+ (process-node-list n)))
+ (empty-sosofo)))))
+
+
+;;; int/
+
+(define (apply-int args)
+ (make math-sequence
+ (let ((b (node-list-first args)))
+ (if (string=? (gi b) "bvar")
+ (dobvar
+ (literal "\integral")
+ (empty-sosofo)
+ (empty-sosofo)
+ (node-list-rest args))
+ (sosofo-append
+ (literal "\integral")
+ (process-node-list b))))))
+
+;;; power/
+
+(define (apply-power args)
+ (make script
+ (sosofo-append
+ (make math-sequence
+ (process-node-list (node-list-first args)))
+ (make math-sequence
+ label: 'post-sup
+ (process-node-list (node-list-rest args))))))
+
+;;; inverse/
+
+(define (apply-inverse fname args)
+ (make script
+ (sosofo-append
+ (make math-sequence
+ (process-node-list args))
+ (make math-sequence
+ label: 'post-sup
+ (case fname
+ (("inverse") (literal "-1"))
+ (("transpose") (literal "t")))))))
+
+;;; over bars (don't work)
+(define (apply-over args)
+ (make math-sequence
+ (process-node-list args))) ;; fix!
+
+;;; max/ and min/
+
+(define (apply-max fname args)
+ (make math-sequence
+ (sosofo-append
+ (make unmath (literal fname))
+ (do-set "{" "}" args))))
+
+;;; gcd/
+
+(define (apply-gcd fname args)
+ (make math-sequence
+ (sosofo-append
+ (make unmath (literal fname))
+ (do-set "(" ")" args))))
+
+;;; abs/
+
+(define (apply-abs args)
+ (make fence
+ (make math-sequence label: 'open
+ (literal "|"))
+ (make math-sequence label: 'close
+ (literal "|"))
+ (make math-sequence
+ (process-node-list args))))
+
+;;; diff/
+;;; Trick is to get hold of the degree.
+;;; Recommendation is for
+;;; d f
+;;; --- (x)
+;;; d x
+;;;
+;;; but I don't currently test for special functions which are
+;;; just a single identifier like that, so currently you get
+;;; d d^3
+;;; --- f(x) and --- f(x)
+;;; d x d x^3
+
+(define (apply-diff args)
+ (sosofo-append
+ (let* ((f (node-list-first (&my-debug2 args))))
+ (if (equal? "bvar" (gi f))
+ (let ((d (&my-debug2 (node-list-filter
+ (lambda (n) (equal? "degree" (gi n)))
+ (children f)))))
+ (make fraction
+ (sosofo-append
+ (make math-sequence
+ label: 'numerator
+ (make script
+ (sosofo-append
+ (literal "d")
+ (make math-sequence
+ label: 'post-sup
+ (process-node-list d))))))
+ (make math-sequence
+ label: 'denominator
+ (sosofo-append
+ (literal "d")
+ (make script
+ (sosofo-append
+ (process-node-list
+ (node-list-filter
+ (lambda (n) (not (equal? "degree" (gi n))))
+ (children f)))
+ (make math-sequence
+ label: 'post-sup
+ (process-node-list d))))))))
+ (make fraction
+ (sosofo-append
+ (make math-sequence
+ label: 'numerator
+ (literal "d"))
+ (make math-sequence
+ label: 'denominator
+ (sosofo-append
+ (literal "d")
+ (process-node-list f)))))))
+ (process-node-list (node-list-rest args))))
+
+
+;;; partial differentiation
+;;;
+;;; Trick here is to amalgamate the degrees
+;;; in the numerator:
+;;; d^3
+;;; ---------- f(x)
+;;; d^2 x d y
+;;;
+
+;; helper function that sets the bit of the denominator
+;; corresponding to one bound variable.
+
+(define (do-one-partial nl)
+ (let ((d (&my-debug2 (node-list-filter
+ (lambda (n) (equal? "degree" (gi n)))
+ (children nl)))))
+ (make math-sequence
+ label: 'denominator
+ (sosofo-append
+ (literal "d")
+ (make script
+ (sosofo-append
+ (process-node-list
+ (node-list-filter
+ (lambda (n) (not (equal? "degree" (gi n))))
+ (children nl)))
+ (make math-sequence
+ label: 'post-sup
+ (process-node-list d))))))))
+
+
+;;; partialdiff
+;;; I suspect that I could make use of node-list-filter-by-gi
+;;; from dblib here, but I only just noticed that function...
+
+(define (apply-partialdiff args)
+ (sosofo-append
+ (let* ((bvars
+ (node-list-filter
+ (lambda (n) (equal? "bvar" (gi n)))
+ args))
+;; totald is the sum of all the degrees [with 1 being supplied
+;; as a default in each case] There may be an easier way to get that.
+ (totald
+ (node-list-reduce
+ bvars
+ (lambda (result n)
+ (+ result
+ (or
+ (string->number
+ (string-nospace
+ (data
+ (node-list-filter
+ (lambda (nn) (equal? "degree" (gi nn)))
+ (children n)))))
+ 1)))
+ 0)))
+;; Now it is easy, set a fraction with the partial and the bound vars
+;; then put out the body.
+ (make fraction
+ (sosofo-append
+ (make math-sequence
+ label: 'numerator
+ (make script
+ (sosofo-append
+ (literal "\partial-differential")
+ (make math-sequence
+ label: 'post-sup
+ (literal (number->string totald))))))
+ (make math-sequence
+ label: 'denominator
+ (node-list-reduce
+ bvars
+ (lambda (result n)
+ (sosofo-append
+;; something is reversing the args, so I'll reverse them back
+ (do-one-partial n)
+ result))
+ (empty-sosofo))))))
+ (process-node-list (node-list-filter
+ (lambda (n) (not (equal? "bvar" (gi n))))
+ args))))
+
+
+
+
+
+;;; apply
+;;; This is the main switch for Content MathNL
+;;; Mainly just a case statement on th egi of the first child
+;;; with some fall back code in case the function argument isn't known.
+(element apply
+ (let* ((nl (children (current-node)))
+ (f (node-list-first nl))
+ (fname (&my-debug (gi f)))
+ (args (&my-debug (node-list-rest nl))))
+ (case fname
+ (("product")
+ (apply-product (literal "\n-ary-product") (literal "=") args))
+ (("sum")
+ (apply-product (literal "\n-ary-summation") (literal "=") args))
+ (("limit")
+ (apply-product (literal "lim") (literal "\rightwards-arrow") args))
+ (("int")
+ (apply-int args))
+ (("inverse" "transpose")
+ (apply-inverse fname args))
+ (("power")
+ (apply-power args))
+ (("forall")
+ (apply-forall (literal "\for-all") args))
+ (("exists")
+ (apply-forall (literal "\there-exists") args))
+ (("plus" "times" "minus" "union" "intersect" "compose" "divide" "rem")
+ (do-nary-binop fname args))
+ (("mean" "conjugate")
+ (apply-over args))
+ (("factorial")
+ (sosofo-append (process-node-list args) (literal "!")))
+ (("root")
+ (apply-root args))
+ (("sdev")
+ (apply-braced-fn "\greek-small-letter-sigma" args))
+ (("median" "mode")
+ (apply-braced-fn fname args))
+ (("max" "min")
+ (apply-max fname args))
+ (("gcd")
+ (apply-gcd fname args))
+ (("log")
+ (apply-log args))
+ (("abs")
+ (apply-abs args))
+ (("diff")
+ (apply-diff args))
+ (("partialdiff")
+ (apply-partialdiff args))
+ (("var")
+ (make script
+ (make math-sequence
+ label: 'post-sup (literal "2"))
+ (apply-braced-fn "\greek-small-letter-sigma" args)))
+ (("transpose")
+ (make script
+ (make math-sequence
+ label: 'post-sup (literal "t"))
+ (process-node-list args)))
+ (else
+ (make math-sequence
+ (sosofo-append
+ (process-node-list f)
+ (if (and (equal?
+ 1 (&my-debug (node-list-length args)))
+ (equal? "ci" (gi args)))
+ (make math-sequence (process-node-list args))
+ (make fence
+ (make math-sequence label: 'open
+ (literal "("))
+ (make math-sequence label: 'close
+ (literal ")"))
+ (make math-sequence
+ (process-node-list args))))))))))
+
+
+;;; reln
+;;; relations are similar to apply.
+;;; Currently there is a double test as this top level
+;;; function bunches all binops together, then do-binary-reln
+;;; tests again to separate them, perhaps not the best idea.
+
+(element reln
+ (let* ((r (gi (node-list-first (children (current-node)))))
+ (c(&my-debug (node-list-rest(children (current-node))))))
+ (case r
+ (("neq" "implies" "in" "notin" "notsubset" "notprsubset" "tendsto")
+ (do-binary-reln r c))
+ (("eq" "leq" "lt" "geq" "gt" "subset" "prsubset")
+ (do-nary-reln r c)))))
+
+
+;;; Typeset a binary infix relation
+
+(define (do-binary-reln r c)
+ (sosofo-append
+ (process-node-list (node-list-first c))
+ (literal (case r
+ (("neq") "\not-equal-to")
+ (("implies") "\leftwards-double-arrow")
+ (("in") "\element-of")
+ (("notin") "\not-an-element-of")
+ (("notsubset") "\not-a-subset-of")
+ (("notprsubset") "PR\not-a-subset-of"); fix!
+ (("tendsto") "\rightwards-arrow"))); fix for type attribute
+ (process-node-list (node-list-rest c))))
+
+;;; Typeset a nary infix relation
+;;; repeating the operator as many times as needed.
+
+(define (do-nary-reln r c)
+ (let ((rs (literal
+ (case r
+ (("eq") "\equals-sign")
+ (("leq") "\less-than-or-equal-to")
+ (("lt") "\less-than-sign")
+ (("geq") "\greater-than-or-equal-to")
+ (("gt") "\greater-than-sign")
+ (("subset") "\subset-of")
+ (("prsubset") "PR\subset-of")))));fix!
+ (sosofo-append
+ (process-node-list (node-list-first c))
+ (node-list-reduce
+ (node-list-rest c)
+ (lambda (result n)
+ (sosofo-append
+ result
+ rs
+ (process-node-list n)))
+ (empty-sosofo)))))
+
+;;; typeset an nary operator, as for relations.
+
+(define (do-nary-binop op c)
+ (let ((ops (literal
+ (case op
+ ((",") ",")
+ (("plus") "\plus-sign")
+ (("times") "")
+ (("union") "\union")
+ (("intersect") "\intersection")
+ (("minus") "\minus-sign")
+ (("divide") "\division-slash")
+ (("rem") "mod") ;fix
+ (("compose") "\U-2218") ))))
+ (sosofo-append
+ (process-node-list (node-list-first c))
+ (node-list-reduce
+ (node-list-rest c)
+ (lambda (result n)
+ (sosofo-append
+ result
+ ops
+ (process-node-list n)))
+ (empty-sosofo)))))
+
+
+;;;;;;;;;;;;;;;;
+
+;;;; ident
+
+(element ident
+ (make math-sequence
+ (literal "id")))
+
+
+
+;;; trig
+;;; Currently these done with th eelement declarations
+;;; and the fallback case of apply typesetting the arguments.
+;;; may need to change that.
+
+(define (do-sin sin)
+ (make unmath
+ font-posture: 'upright
+ (literal sin)))
+
+(element sin
+ (do-sin "sin"))
+
+(element cos
+ (do-sin "cos"))
+
+(element tan
+ (do-sin "tan"))
+
+(element sec
+ (do-sin "sec"))
+
+(element csc
+ (do-sin "csc"))
+
+(element cot
+ (do-sin "cot"))
+
+(element sinh
+ (do-sin "sinh"))
+
+(element cosh
+ (do-sin "cosh"))
+
+(element tanh
+ (do-sin "tanh"))
+
+(element sech
+ (do-sin "sech"))
+
+(element csch
+ (do-sin "csch"))
+
+(element coth
+ (do-sin "coth"))
+
+(element arcsin
+ (do-sin "arcsin"))
+
+(element arccos
+ (do-sin "arccos"))
+
+(element arctan
+ (do-sin "arctan"))
+
+;;;;
+
+;;; natural log and determinant are honourary trig functions.
+;;; I should make det applied to an explicit table use | | rather
+;;; than det ( ) I think.
+
+(element ln
+ (do-sin "ln"))
+
+
+(element determinant
+ (do-sin "det"))
+
+;;;;;;;;;;;
+
+;;; sets and lists
+
+(element set
+ (do-set "{" "}" (children (current-node))))
+
+(element list
+ (do-set "[" "]" (children (current-node))))
+
+(element vector
+ (do-set "(" ")" (children (current-node))))
+
+(element interval
+ (case (attribute-string "closure" (current-node))
+ (("closed")
+ (do-set "[" "]" (children (current-node))))
+ (("open")
+ (do-set "(" ")" (children (current-node))))
+ (("open-closed")
+ (do-set "(" "]" (children (current-node))))
+ (("closed-open")
+ (do-set "[" ")" (children (current-node))))))
+
+
+;;; helper function for sets.
+;;; Checks for two styles, comma separated explicit,
+;;; or via conditions and bound vars.
+
+(define (do-set left right args)
+ (make fence
+ (make math-sequence label: 'open
+ (literal left))
+ (make math-sequence label: 'close
+ (literal right))
+ (make math-sequence
+ (if (equal? "bvar" (gi (node-list-first (&my-debug2 args))))
+ (if (equal? 2 (node-list-length args))
+;; typeset bvar
+ (sosofo-append
+ (process-node-list (children (node-list-first args)))
+ (literal "|")
+ (process-node-list (children (node-list-rest args))))
+;; else dont
+ (sosofo-append
+ (process-node-list (node-list-rest(node-list-rest args)))
+ (literal "|")
+ (process-node-list (children (node-list-first (node-list-rest args))))))
+;; else stick in some commas
+ (do-nary-binop "," args) ))))
+
+
+;;;;;;;
+
+;;; lambda [lamda according to Jade ?]
+
+(element lambda
+ (sosofo-append
+ (make math-sequence (literal "\greek-small-letter-lamda"))
+ (do-nary-binop ","
+ (node-list-filter
+ (lambda (n) (equal? "bvar" (gi n)))
+ (children (current-node))))
+ (literal ".")
+ (process-node-list
+ (&my-debug2(node-list-filter
+ (lambda (n) (not (equal? "bvar" (gi n))))
+ (children (current-node)))))))
+
+
+;;;;;;;;;;;;;;;
+
+;;; cn
+
+;;; what to do if you see a sep element for rationals..
+
+(define (sep-rational top bottom)
+ (make fraction
+ (sosofo-append
+ (make math-sequence
+ label: 'numerator
+ (process-node-list top))
+ (make math-sequence
+ label: 'denominator
+ (process-node-list bottom)))))
+
+
+;;; and for complex cartesian
+
+(define (sep-complex-cartesian top bottom)
+ (make math-sequence
+ (sosofo-append
+ (make math-sequence
+ (process-node-list top))
+ (make math-sequence (literal "+"))
+ (make math-sequence
+ (process-node-list bottom))
+ (make math-sequence (literal "i")))))
+
+
+;;; and polar
+
+(define (sep-complex-polar top bottom)
+ (make math-sequence
+ (sosofo-append
+ (make math-sequence (literal "Polar"))
+ (make fence
+ (sosofo-append
+ (make math-sequence
+ label: 'open
+ (literal "("))
+ (make math-sequence
+ label: 'close
+ (literal ")"))
+ (sosofo-append
+ (make math-sequence
+ (process-node-list top))
+ (make math-sequence (literal ","))
+ (make math-sequence
+ (process-node-list bottom))))))))
+
+;;; Function to collect node list before and after sep element
+;;; then finally call one of the above functions to typeset the
+;;; two halves of the number.
+
+(define (do-sep fn flag top bottom args)
+ (if (equal? 0 (node-list-length args)); why can't I use null
+ (fn top bottom)
+ (if (equal? "sep" (gi (node-list-first args)))
+ (do-sep fn #f top bottom (node-list-rest args))
+ (if flag
+ (do-sep fn flag
+ (node-list
+ top
+ (node-list-first args))
+ bottom
+ (node-list-rest args))
+ (do-sep fn flag
+ top
+ (node-list
+ bottom
+ (node-list-first args))
+ (node-list-rest args))))))
+
+
+;;; cn
+;;; subscript with the base unless it is 10, or call one of the above functions
+;;; to start looking for sep element.
+
+(element cn
+ (case (or (attribute-string "type" (current-node))
+ "real")
+ (("real" "constant")
+ (make math-sequence (process-node-list (children (current-node)))))
+ (("integer")
+ (if (equal? "10" (attribute-string "base" (current-node)))
+ (make math-sequence
+ (process-node-list (children (current-node))))
+ (make script
+ (sosofo-append
+ (make math-sequence
+ (process-node-list (children (current-node))))
+ (make math-sequence
+ label: 'post-sub
+ (literal
+ (attribute-string "base" (current-node))))))))
+ (("rational")
+ (do-sep sep-rational
+ #t
+ (empty-node-list)
+ (empty-node-list)
+ (children (current-node))))
+ (("complex-cartesian")
+ (do-sep sep-complex-cartesian
+ #t
+ (empty-node-list)
+ (empty-node-list)
+ (children
+ (current-node))))
+ (("complex-polar")
+ (do-sep sep-complex-polar
+ #t
+ (empty-node-list)
+ (empty-node-list)
+ (children (current-node))))))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; ought to share code with mtable, probably
+
+(element matrix
+ (let* ((c (&my-debug (children (current-node))))
+ (n (&my-debug (node-list-length (children (node-list-first c))))))
+ (make fence
+ (make math-sequence label: 'open
+ (literal "("))
+ (make math-sequence label: 'close
+ (literal ")"))
+ (make grid
+ grid-n-columns: n
+ (node-list-reduce
+ c
+ (lambda (a b)
+ (sosofo-append
+ a
+ (node-list-reduce
+ (children b)
+ (lambda (x y)
+ (sosofo-append
+ x
+ (make grid-cell
+ (process-node-list y))))
+ (empty-sosofo))))
+ (empty-sosofo))))))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mathml.dtd b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mathml.dtd
new file mode 100644
index 00000000000..33ad7f6dd55
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mathml.dtd
@@ -0,0 +1,924 @@
+<!-- Content model for content and presentation -->
+<!-- and browser interface tags in MathML -->
+<!-- initial draft 9.May.1997 syntax = XML -->
+<!-- author = s.buswell sb@stilo.demon.co.uk -->
+<!-- -->
+<!-- revised 14.May.1997 by Robert Miner -->
+<!-- revised 29.June.1997 and 2.July.1997 by s.buswell -->
+<!-- -->
+<!-- revised 15.December.1997 by s.buswell -->
+<!-- revised 8.February.1998 by s.buswell -->
+<!-- revised 4.april.1998 by s.buswell -->
+<!-- -->
+<!-- W3C Recommendation 7 April 1998 -->
+<!-- ************************************************* -->
+
+<!-- general attribute definitions for class & style & id & other -->
+<!-- : attributes shared by all mathml elements -->
+
+<!ENTITY % att-globalatts 'class CDATA #IMPLIED
+ style CDATA #IMPLIED
+ id ID #IMPLIED
+ other CDATA #IMPLIED' >
+
+<!-- ************************************************* -->
+<!-- Presentation element set -->
+
+<!-- presentation attribute definitions -->
+
+<!ENTITY % att-fontsize 'fontsize CDATA #IMPLIED' >
+<!ENTITY % att-fontweight 'fontweight (normal | bold) #IMPLIED' >
+<!ENTITY % att-fontstyle 'fontstyle (normal | italic) #IMPLIED' >
+<!ENTITY % att-fontfamily 'fontfamily CDATA #IMPLIED' >
+<!ENTITY % att-color 'color CDATA #IMPLIED' >
+
+<!ENTITY % att-fontinfo '%att-fontsize;
+ %att-fontweight;
+ %att-fontstyle;
+ %att-fontfamily;
+ %att-color;' >
+
+<!ENTITY % att-form 'form (prefix | infix | postfix) #IMPLIED' >
+<!ENTITY % att-fence 'fence (true | false ) #IMPLIED' >
+<!ENTITY % att-separator 'separator (true | false ) #IMPLIED' >
+<!ENTITY % att-lspace 'lspace CDATA #IMPLIED' >
+<!ENTITY % att-rspace 'rspace CDATA #IMPLIED' >
+<!ENTITY % att-stretchy 'stretchy (true | false ) #IMPLIED' >
+<!ENTITY % att-symmetric 'symmetric (true | false ) #IMPLIED' >
+<!ENTITY % att-maxsize 'maxsize CDATA #IMPLIED' >
+<!ENTITY % att-minsize 'minsize CDATA #IMPLIED' >
+<!ENTITY % att-largeop 'largeop (true | false ) #IMPLIED' >
+<!ENTITY % att-movablelimits 'movablelimits (true | false )
+#IMPLIED' >
+<!ENTITY % att-accent 'accent (true | false) #IMPLIED'>
+
+<!ENTITY % att-opinfo '%att-form;
+ %att-fence;
+ %att-separator;
+ %att-lspace;
+ %att-rspace;
+ %att-stretchy;
+ %att-symmetric;
+ %att-maxsize;
+ %att-minsize;
+ %att-largeop;
+ %att-movablelimits;
+ %att-accent;' >
+
+<!ENTITY % att-width 'width CDATA #IMPLIED' >
+<!ENTITY % att-height 'height CDATA #IMPLIED' >
+<!ENTITY % att-depth 'depth CDATA #IMPLIED' >
+
+<!ENTITY % att-sizeinfo '%att-width;
+ %att-height;
+ %att-depth;' >
+
+<!ENTITY % att-lquote 'lquote CDATA #IMPLIED' >
+<!ENTITY % att-rquote 'rquote CDATA #IMPLIED' >
+
+<!ENTITY % att-linethickness 'linethickness CDATA #IMPLIED' >
+
+<!ENTITY % att-scriptlevel 'scriptlevel CDATA #IMPLIED'>
+<!ENTITY % att-displaystyle 'displaystyle (true | false)
+#IMPLIED'>
+<!ENTITY % att-scriptsizemultiplier 'scriptsizemultiplier CDATA
+#IMPLIED' >
+<!ENTITY % att-scriptminsize 'scriptminsize CDATA #IMPLIED'>
+<!ENTITY % att-background 'background CDATA #IMPLIED' >
+
+<!ENTITY % att-open 'open CDATA #IMPLIED' >
+<!ENTITY % att-close 'close CDATA #IMPLIED' >
+<!ENTITY % att-separators 'separators CDATA #IMPLIED' >
+
+<!ENTITY % att-subscriptshift 'subscriptshift CDATA #IMPLIED'>
+<!ENTITY % att-superscriptshift 'superscriptshift CDATA #IMPLIED' >
+
+<!ENTITY % att-accentunder 'accentunder (true | false)
+#IMPLIED'>
+
+<!ENTITY % att-align 'align CDATA #IMPLIED' >
+<!ENTITY % att-rowalign 'rowalign CDATA #IMPLIED' >
+<!ENTITY % att-columnalign 'columnalign CDATA #IMPLIED' >
+<!ENTITY % att-groupalign 'groupalign CDATA #IMPLIED' >
+<!ENTITY % att-alignmentscope 'alignmentscope CDATA #IMPLIED' >
+
+<!ENTITY % att-rowspacing 'rowspacing CDATA #IMPLIED' >
+<!ENTITY % att-columnspacing 'columnspacing CDATA #IMPLIED' >
+<!ENTITY % att-rowlines 'rowlines CDATA #IMPLIED' >
+<!ENTITY % att-columnlines 'columnlines CDATA #IMPLIED' >
+<!ENTITY % att-frame 'frame (none | solid | dashed)
+#IMPLIED' >
+<!ENTITY % att-framespacing 'framespacing CDATA #IMPLIED' >
+<!ENTITY % att-equalrows 'equalrows CDATA #IMPLIED' >
+<!ENTITY % att-equalcolumns 'equalcolumns CDATA #IMPLIED' >
+
+<!ENTITY % att-tableinfo '%att-align;
+ %att-rowalign;
+ %att-columnalign;
+ %att-groupalign;
+ %att-alignmentscope;
+ %att-rowspacing;
+ %att-columnspacing;
+ %att-rowlines;
+ %att-columnlines;
+ %att-frame;
+ %att-framespacing;
+ %att-equalrows;
+ %att-equalcolumns;
+ %att-displaystyle;' >
+
+<!ENTITY % att-rowspan 'rowspan CDATA #IMPLIED' >
+<!ENTITY % att-columnspan 'columnspan CDATA #IMPLIED' >
+
+<!ENTITY % att-edge 'edge (left | right) #IMPLIED ' >
+
+<!ENTITY % att-actiontype 'actiontype CDATA #IMPLIED' >
+<!ENTITY % att-selection 'selection CDATA #IMPLIED ' >
+
+<!-- presentation token schemata with content-->
+
+<!ENTITY % ptoken "mi | mn | mo | mtext | ms" >
+
+<!ATTLIST mi %att-fontinfo;
+ %att-globalatts; >
+
+<!ATTLIST mn %att-fontinfo;
+ %att-globalatts; >
+
+<!ATTLIST mo %att-fontinfo;
+ %att-opinfo;
+ %att-globalatts; >
+
+<!ATTLIST mtext %att-fontinfo;
+ %att-globalatts; >
+
+<!ATTLIST ms %att-fontinfo;
+ %att-lquote;
+ %att-rquote;
+ %att-globalatts; >
+
+<!-- empty presentation token schemata -->
+
+<!ENTITY % petoken "mspace" >
+<!ELEMENT mspace EMPTY >
+
+<!ATTLIST mspace %att-sizeinfo;
+ %att-globalatts; >
+
+<!-- presentation general layout schemata -->
+
+<!ENTITY % pgenschema "mrow|mfrac|msqrt|mroot|
+ mstyle|merror|mpadded| mphantom|mfenced" >
+
+<!ATTLIST mrow %att-globalatts; >
+
+<!ATTLIST mfrac %att-linethickness;
+ %att-globalatts; >
+
+<!ATTLIST msqrt %att-globalatts; >
+
+<!ATTLIST mroot %att-globalatts; >
+
+<!ATTLIST mstyle %att-fontinfo;
+ %att-opinfo;
+ %att-lquote;
+ %att-rquote;
+ %att-linethickness;
+ %att-scriptlevel;
+ %att-scriptsizemultiplier;
+ %att-scriptminsize;
+ %att-background;
+ %att-open;
+ %att-close;
+ %att-separators;
+ %att-subscriptshift;
+ %att-superscriptshift;
+ %att-accentunder;
+ %att-tableinfo;
+ %att-rowspan;
+ %att-columnspan;
+ %att-edge;
+ %att-actiontype;
+ %att-selection;
+ %att-globalatts; >
+
+<!ATTLIST merror %att-globalatts; >
+
+<!ATTLIST mpadded %att-sizeinfo;
+ %att-lspace;
+ %att-globalatts; >
+
+<!ATTLIST mphantom %att-globalatts; >
+
+<!ATTLIST mfenced %att-open;
+ %att-close;
+ %att-separators;
+ %att-globalatts; >
+
+<!-- presentation layout schemata : scripts and limits -->
+
+<!ENTITY % pscrschema "msub|msup|msubsup|
+ munder|mover|munderover|mmultiscripts" >
+
+<!ATTLIST msub %att-subscriptshift;
+ %att-globalatts; >
+
+<!ATTLIST msup %att-superscriptshift;
+ %att-globalatts; >
+
+<!ATTLIST msubsup %att-subscriptshift;
+ %att-superscriptshift;
+ %att-globalatts; >
+
+<!ATTLIST munder %att-accentunder;
+ %att-globalatts; >
+
+<!ATTLIST mover %att-accent;
+ %att-globalatts; >
+
+<!ATTLIST munderover %att-accent;
+ %att-accentunder;
+ %att-globalatts; >
+
+<!ATTLIST mmultiscripts
+ %att-subscriptshift;
+ %att-superscriptshift;
+ %att-globalatts; >
+
+<!-- presentation layout schemata: script empty elements -->
+
+<!ENTITY % pscreschema "mprescripts|none" >
+
+<!ELEMENT mprescripts EMPTY >
+<!ATTLIST mprescripts %att-globalatts; >
+
+<!ELEMENT none EMPTY >
+<!ATTLIST none %att-globalatts; >
+
+<!-- presentation layout schemata: tables -->
+
+<!ENTITY % ptabschema "mtable|mtr|mtd" >
+
+<!ATTLIST mtable %att-tableinfo;
+ %att-globalatts; >
+
+<!ATTLIST mtr %att-rowalign;
+ %att-columnalign;
+ %att-groupalign;
+ %att-globalatts; >
+
+<!ATTLIST mtd %att-rowalign;
+ %att-columnalign;
+ %att-groupalign;
+ %att-rowspan;
+ %att-columnspan;
+ %att-globalatts; >
+
+<!ENTITY % plschema "%pgenschema;|%pscrschema;|%ptabschema;" >
+
+<!-- empty presentation layout schemata -->
+
+<!ENTITY % peschema "maligngroup | malignmark" >
+
+<!ELEMENT malignmark EMPTY >
+
+<!ATTLIST malignmark %att-edge;
+ %att-globalatts; >
+
+<!ELEMENT maligngroup EMPTY >
+<!ATTLIST maligngroup %att-groupalign;
+ %att-globalatts; >
+
+<!-- presentation action schemata -->
+
+<!ENTITY % pactions "maction" >
+<!ATTLIST maction %att-actiontype;
+ %att-selection;
+ %att-globalatts; >
+
+<!-- Presentation entity for substitution into content tag constructs -->
+<!-- excludes elements which are not valid as expressions -->
+
+<!ENTITY % PresInCont "%ptoken; | %petoken; |
+ %plschema; | %peschema; | %pactions;">
+
+<!-- Presentation entity - all presentation constructs -->
+
+<!ENTITY % Presentation "%ptoken; | %petoken; | %pscreschema; |
+ %plschema; | %peschema; | %pactions;">
+
+<!-- ************************************************* -->
+<!-- Content element set -->
+<!-- attribute definitions -->
+
+<!ENTITY % att-base 'base CDATA "10"' >
+<!ENTITY % att-closure 'closure CDATA "closed"' >
+<!ENTITY % att-definition 'definitionURL CDATA ""' >
+<!ENTITY % att-encoding 'encoding CDATA ""' >
+<!ENTITY % att-nargs 'nargs CDATA "1"' >
+<!ENTITY % att-occurence 'occurence CDATA "function-model"' >
+<!ENTITY % att-order 'order CDATA "numeric"' >
+<!ENTITY % att-scope 'scope CDATA "local"' >
+<!ENTITY % att-type 'type CDATA #IMPLIED' >
+
+<!-- content leaf token elements -->
+
+<!ENTITY % ctoken "ci | cn" >
+
+<!ATTLIST ci %att-type;
+ %att-globalatts; >
+
+<!ATTLIST cn %att-type;
+ %att-base;
+ %att-globalatts; >
+
+<!-- content elements - specials -->
+
+<!ENTITY % cspecial "apply | reln | lambda" >
+
+<!ATTLIST apply %att-globalatts; >
+
+<!ATTLIST reln %att-globalatts; >
+
+<!ATTLIST lambda %att-globalatts; >
+
+<!-- content elements - others -->
+
+<!ENTITY % cother "condition | declare | sep" >
+
+<!ATTLIST condition %att-globalatts; >
+
+<!ATTLIST declare %att-type;
+ %att-scope;
+ %att-nargs;
+ %att-occurence;
+ %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT sep EMPTY >
+<!ATTLIST sep %att-globalatts; >
+
+<!-- content elements - semantic mapping -->
+
+<!ENTITY % csemantics "semantics | annotation | annotation-xml" >
+
+<!ATTLIST semantics %att-definition;
+ %att-globalatts; >
+
+<!ATTLIST annotation %att-encoding;
+ %att-globalatts; >
+
+<!ATTLIST annotation-xml %att-encoding;
+ %att-globalatts; >
+
+<!-- content elements - constructors -->
+
+<!ENTITY % cconstructor "interval | list | matrix | matrixrow | set |
+vector" >
+
+<!ATTLIST interval %att-closure;
+ %att-globalatts; >
+
+<!ATTLIST set %att-globalatts; >
+
+<!ATTLIST list %att-order;
+ %att-globalatts; >
+
+<!ATTLIST vector %att-globalatts; >
+
+<!ATTLIST matrix %att-globalatts; >
+
+<!ATTLIST matrixrow %att-globalatts; >
+
+<!-- content elements - operators -->
+
+<!ENTITY % cfuncop1ary "inverse | ident " >
+
+<!ELEMENT inverse EMPTY >
+<!ATTLIST inverse %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % cfuncopnary "fn | compose" >
+
+<!ATTLIST fn %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT ident EMPTY >
+<!ATTLIST ident %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT compose EMPTY >
+<!ATTLIST compose %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % carithop1ary "abs | conjugate | exp | factorial" >
+
+<!ELEMENT exp EMPTY >
+<!ATTLIST exp %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT abs EMPTY >
+<!ATTLIST abs %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT conjugate EMPTY >
+<!ATTLIST conjugate %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT factorial EMPTY >
+<!ATTLIST factorial %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % carithop1or2ary "minus" >
+
+<!ELEMENT minus EMPTY >
+<!ATTLIST minus %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % carithop2ary "quotient | divide | power | rem" >
+
+<!ELEMENT quotient EMPTY >
+<!ATTLIST quotient %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT divide EMPTY >
+<!ATTLIST divide %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT power EMPTY >
+<!ATTLIST power %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT rem EMPTY >
+<!ATTLIST rem %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % carithopnary "plus | times | max | min | gcd" >
+
+<!ELEMENT plus EMPTY >
+<!ATTLIST plus %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT max EMPTY >
+<!ATTLIST max %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT min EMPTY >
+<!ATTLIST min %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT times EMPTY >
+<!ATTLIST times %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT gcd EMPTY >
+<!ATTLIST gcd %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % carithoproot "root" >
+
+<!ELEMENT root EMPTY >
+<!ATTLIST root %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % clogicopquant "exists | forall" >
+
+<!ELEMENT exists EMPTY >
+<!ATTLIST exists %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT forall EMPTY >
+<!ATTLIST forall %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % clogicopnary "and | or | xor" >
+
+<!ELEMENT and EMPTY >
+<!ATTLIST and %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT or EMPTY >
+<!ATTLIST or %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT xor EMPTY >
+<!ATTLIST xor %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % clogicop1ary "not" >
+
+<!ELEMENT not EMPTY >
+<!ATTLIST not %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % clogicop2ary "implies" >
+
+<!ELEMENT implies EMPTY >
+<!ATTLIST implies %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % ccalcop "log | int | diff | partialdiff" >
+
+<!ELEMENT log EMPTY >
+<!ATTLIST log %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT int EMPTY >
+<!ATTLIST int %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT diff EMPTY >
+<!ATTLIST diff %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT partialdiff EMPTY >
+<!ATTLIST partialdiff %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % ccalcop1ary "ln" >
+
+<!ELEMENT ln EMPTY >
+<!ATTLIST ln %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % csetop2ary "setdiff" >
+
+<!ELEMENT setdiff EMPTY >
+<!ATTLIST setdiff %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % csetopnary "union | intersect" >
+
+<!ELEMENT union EMPTY >
+<!ATTLIST union %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT intersect EMPTY >
+<!ATTLIST intersect %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % cseqop "sum | product | limit" >
+
+<!ELEMENT sum EMPTY >
+<!ATTLIST sum %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT product EMPTY >
+<!ATTLIST product %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT limit EMPTY >
+<!ATTLIST limit %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % ctrigop "sin | cos | tan | sec | csc | cot | sinh
+ | cosh | tanh | sech | csch | coth
+ | arcsin | arccos | arctan" >
+
+<!ELEMENT sin EMPTY >
+<!ATTLIST sin %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT cos EMPTY >
+<!ATTLIST cos %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT tan EMPTY >
+<!ATTLIST tan %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT sec EMPTY >
+<!ATTLIST sec %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT csc EMPTY >
+<!ATTLIST csc %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT cot EMPTY >
+<!ATTLIST cot %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT sinh EMPTY >
+<!ATTLIST sinh %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT cosh EMPTY >
+<!ATTLIST cosh %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT tanh EMPTY >
+<!ATTLIST tanh %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT sech EMPTY >
+<!ATTLIST sech %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT csch EMPTY >
+<!ATTLIST csch %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT coth EMPTY >
+<!ATTLIST coth %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT arcsin EMPTY >
+<!ATTLIST arcsin %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT arccos EMPTY >
+<!ATTLIST arccos %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT arctan EMPTY >
+<!ATTLIST arctan %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % cstatopnary "mean | sdev | var | median | mode" >
+
+<!ELEMENT mean EMPTY >
+<!ATTLIST mean %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT sdev EMPTY >
+<!ATTLIST sdev %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT var EMPTY >
+<!ATTLIST var %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT median EMPTY >
+<!ATTLIST median %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT mode EMPTY >
+<!ATTLIST mode %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % cstatopmoment "moment" >
+
+<!ELEMENT moment EMPTY >
+<!ATTLIST moment %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % clalgop1ary "determinant | transpose" >
+
+<!ELEMENT determinant EMPTY >
+<!ATTLIST determinant %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT transpose EMPTY >
+<!ATTLIST transpose %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % clalgopnary "select" >
+
+<!ELEMENT select EMPTY >
+<!ATTLIST select %att-definition;
+ %att-globalatts; >
+
+<!-- content elements - relations -->
+
+<!ENTITY % cgenrel2ary "neq" >
+
+<!ELEMENT neq EMPTY >
+<!ATTLIST neq %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % cgenrelnary "eq | leq | lt | geq | gt" >
+
+<!ELEMENT eq EMPTY >
+<!ATTLIST eq %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT gt EMPTY >
+<!ATTLIST gt %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT lt EMPTY >
+<!ATTLIST lt %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT geq EMPTY >
+<!ATTLIST geq %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT leq EMPTY >
+<!ATTLIST leq %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % csetrel2ary "in | notin | notsubset | notprsubset" >
+
+<!ELEMENT in EMPTY >
+<!ATTLIST in %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT notin EMPTY >
+<!ATTLIST notin %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT notsubset EMPTY >
+<!ATTLIST notsubset %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT notprsubset EMPTY >
+<!ATTLIST notprsubset %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % csetrelnary "subset | prsubset" >
+
+<!ELEMENT subset EMPTY >
+<!ATTLIST subset %att-definition;
+ %att-globalatts; >
+
+<!ELEMENT prsubset EMPTY >
+<!ATTLIST prsubset %att-definition;
+ %att-globalatts; >
+
+<!ENTITY % cseqrel2ary "tendsto" >
+
+<!ELEMENT tendsto EMPTY >
+<!ATTLIST tendsto %att-definition;
+ %att-type;
+ %att-globalatts; >
+
+<!-- content elements - quantifiers -->
+
+<!ENTITY % cquantifier "lowlimit | uplimit | bvar | degree | logbase" >
+
+<!ATTLIST lowlimit %att-globalatts; >
+
+<!ATTLIST uplimit %att-globalatts; >
+
+<!ATTLIST bvar %att-globalatts; >
+
+<!ATTLIST degree %att-globalatts; >
+
+<!ATTLIST logbase %att-globalatts; >
+
+<!-- operator groups -->
+
+<!ENTITY % cop1ary "%cfuncop1ary; | %carithop1ary; | %clogicop1ary;
+ | %ccalcop1ary; | %ctrigop; | %clalgop1ary; " >
+
+<!ENTITY % cop2ary "%carithop2ary; | %clogicop2ary;| %csetop2ary; " >
+
+<!ENTITY % copnary "%cfuncopnary; | %carithopnary; | %clogicopnary;
+ | %csetopnary; | %cstatopnary; | %clalgopnary; " >
+
+<!ENTITY % copmisc "%carithoproot; | %carithop1or2ary; | %ccalcop;
+ | %cseqop; | %cstatopmoment; | %clogicopquant;" >
+
+<!-- relation groups -->
+
+<!ENTITY % crel2ary "%cgenrel2ary; | %csetrel2ary; | %cseqrel2ary; " >
+
+<!ENTITY % crelnary "%cgenrelnary; | %csetrelnary;" >
+
+<!-- content constructs - all -->
+
+<!ENTITY % Content "%ctoken; | %cspecial; | %cother; | %csemantics;
+ |%cconstructor; | %cquantifier;
+ |%cop1ary; |%cop2ary; |%copnary; |%copmisc;
+ |%crel2ary; |%crelnary;" >
+
+<!-- content constructs for substitution in presentation structures -->
+
+<!ENTITY % ContInPres "ci | cn | apply | fn | lambda | reln
+ | interval | list | matrix |matrixrow
+ | set | vector | semantics" > <!--dpc-->
+
+<!-- ************************************************* -->
+
+<!-- recursive definition for content of expressions -->
+<!-- include presentation tag constructs at lowest level -->
+<!-- so presentation layout schemata hold presentation or Content -->
+<!-- include Content tag constructs at lowest level -->
+<!-- so Content tokens hold PCDATA or Presentation at leaf level -->
+<!-- (for permitted substitutable elements in context) -->
+
+<!ENTITY % ContentExpression "(%Content; | %PresInCont;)* " >
+<!ENTITY % PresExpression "(%Presentation; | %ContInPres;)* " >
+<!ENTITY % MathExpression "(%PresInCont; | %ContInPres;)* " >
+
+<!-- content token elements (may hold embedded presentation constructs)
+-->
+
+<!ELEMENT ci (#PCDATA | %PresInCont;)* >
+<!ELEMENT cn (#PCDATA | sep | %PresInCont;)* >
+
+<!-- content special elements -->
+
+<!ELEMENT apply (%ContentExpression;) >
+<!ELEMENT reln (%ContentExpression;) >
+<!ELEMENT lambda (%ContentExpression;) >
+
+<!-- content other elements -->
+
+<!ELEMENT condition (%ContentExpression;) >
+<!ELEMENT declare (%ContentExpression;) >
+
+<!-- content semantics elements -->
+
+<!ELEMENT semantics (%ContentExpression;) >
+<!ELEMENT annotation (#PCDATA) >
+<!ELEMENT annotation-xml (%ContentExpression;) >
+
+<!-- content constructor elements -->
+
+<!ELEMENT interval (%ContentExpression;) >
+<!ELEMENT set (%ContentExpression;) >
+<!ELEMENT list (%ContentExpression;) >
+<!ELEMENT vector (%ContentExpression;) >
+<!ELEMENT matrix (%ContentExpression;) >
+<!ELEMENT matrixrow (%ContentExpression;) >
+
+<!-- content operator element (user-defined) -->
+
+<!ELEMENT fn (%ContentExpression;) >
+
+<!-- content quantifier elements -->
+
+<!ELEMENT lowlimit (%ContentExpression;) >
+<!ELEMENT uplimit (%ContentExpression;) >
+<!ELEMENT bvar (%ContentExpression;) >
+<!ELEMENT degree (%ContentExpression;) >
+<!ELEMENT logbase (%ContentExpression;) >
+
+<!-- ************************************************* -->
+<!-- presentation layout schema contain tokens, layout and content
+schema -->
+
+<!ELEMENT mstyle (%PresExpression;) >
+<!ELEMENT merror (%PresExpression;) >
+<!ELEMENT mphantom (%PresExpression;) >
+<!ELEMENT mrow (%PresExpression;) >
+<!ELEMENT mfrac (%PresExpression;) >
+<!ELEMENT msqrt (%PresExpression;) >
+<!ELEMENT mroot (%PresExpression;) >
+<!ELEMENT msub (%PresExpression;) >
+<!ELEMENT msup (%PresExpression;) >
+<!ELEMENT msubsup (%PresExpression;) >
+<!ELEMENT mmultiscripts (%PresExpression;) >
+<!ELEMENT munder (%PresExpression;) >
+<!ELEMENT mover (%PresExpression;) >
+<!ELEMENT munderover (%PresExpression;) >
+<!ELEMENT mtable (%PresExpression;) >
+<!ELEMENT mtr (%PresExpression;) >
+<!ELEMENT mtd (%PresExpression;) >
+<!ELEMENT maction (%PresExpression;) >
+<!ELEMENT mfenced (%PresExpression;) >
+<!ELEMENT mpadded (%PresExpression;) >
+
+<!-- presentation tokens contain PCDATA or malignmark constructs -->
+
+<!ELEMENT mi (#PCDATA | malignmark )* >
+<!ELEMENT mn (#PCDATA | malignmark )* >
+<!ELEMENT mo (#PCDATA | malignmark )* >
+<!ELEMENT mtext (#PCDATA | malignmark )* >
+<!ELEMENT ms (#PCDATA | malignmark )* >
+
+<!-- ************************************************* -->
+<!-- browser interface definition -->
+
+<!-- attributes for top level math element -->
+
+<!ENTITY % att-macros 'macros CDATA #IMPLIED' >
+<!ENTITY % att-mode 'mode CDATA #IMPLIED' >
+
+<!ENTITY % att-topinfo '%att-globalatts;
+ %att-macros;
+ %att-mode;' >
+
+<!-- attributes for browser interface element element -->
+
+<!ENTITY % att-name 'name CDATA #IMPLIED' >
+<!ENTITY % att-baseline 'baseline CDATA #IMPLIED' >
+<!ENTITY % att-overflow 'overflow
+(scroll|elide|truncate|scale) "scroll"' >
+<!ENTITY % att-altimg 'altimg CDATA #IMPLIED' >
+<!ENTITY % att-alttext 'alttext CDATA #IMPLIED' >
+
+<!ENTITY % att-browif '%att-type;
+ %att-name;
+ %att-height;
+ %att-width;
+ %att-baseline;
+ %att-overflow;
+ %att-altimg;
+ %att-alttext; ' >
+
+<!-- the top level math element -->
+<!-- math contains MathML encoded mathematics -->
+<!-- math has the browser info attributes iff it is the
+ browser interface element also -->
+
+<!ELEMENT math (%MathExpression;) >
+
+<!ATTLIST math %att-topinfo;
+ %att-browif; >
+
+<!-- end of DTD fragment -->
+<!-- ************************************************* --> \ No newline at end of file
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mathmltools.dsl b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mathmltools.dsl
new file mode 100644
index 00000000000..5d90a64234a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mathmltools.dsl
@@ -0,0 +1,97 @@
+(define debug
+ (external-procedure "UNREGISTERED::James Clark//Procedure::debug"))
+
+(define max-node-list-debug-length 5)
+
+(define (debug-body x)
+ `(,(cond ((node-list? x)
+ (if (node-list-empty? x)
+ 'empty-node-list
+ `( ,(if (named-node-list? x)
+ 'named-node-list
+ 'node-list)
+ ,(node-list-length x)
+ ,(node-list-reduce
+ (node-list-head x max-node-list-debug-length)
+ (lambda (result n)
+ (string-append result
+ (cond ((gi n) (string-append "<" (gi n) ">" ))
+ ((equal? 'data-char (node-property 'class-name n)) (data n))
+ (else "<?>"))))
+ "" ))))
+ ((sosofo? x) 'sosofo)
+ ((procedure? x) 'procedure)
+ ((style? x) 'style)
+ ((address? x) 'address)
+ ((color? x) 'color)
+ ((color-space? x) 'color-space)
+ ((display-space? x) 'display-space)
+ ((inline-space? x) 'inline-space)
+ ((glyph-id? x) 'glyph-id)
+ ((glyph-subst-table? x) 'glyph-subst-table)
+ ((boolean? x) 'boolean)
+ ((symbol? x) 'symbol)
+ ((list? x) 'list)
+ ((pair? x) 'pair)
+ ((char? x) 'char)
+ ((string? x) 'string)
+ ((quantity? x) 'quantity)
+ ((keyword? x) 'keyword)
+ (else 'other))
+ ,x))
+
+
+
+
+<!-- Some bits from the dsssl report, mainly from the
+ Mulberry site
+ -->
+
+(define (node-list-filter proc nl)
+ (node-list-reduce nl
+ (lambda (result snl)
+ (if (proc snl)
+ (node-list snl result)
+ result))
+ (empty-node-list)))
+
+
+(define (map f #!rest xs)
+ (let ((map1 (lambda (f xs) ; bootstrap version for unary F
+ (let loop ((xs xs))
+ (if (null? xs)
+ '()
+ (cons (f (car xs))
+ (loop (cdr xs))))))))
+ (cond ((null? xs)
+ '())
+ ((null? (cdr xs))
+ (map1 f (car xs)))
+ (else
+ (let loop ((xs xs))
+ (if (null? (car xs))
+ '()
+ (cons (apply f (map1 car xs))
+ (loop (map1 cdr xs)))))))))
+
+
+(define (node-list-head nl i)
+ (if (zero? i)
+ (empty-node-list)
+ (node-list (node-list-first nl)
+;;; page 136 of dsssl spec appears to be wrong...
+ (node-list-head (node-list-rest nl)
+ (- i 1)))))
+
+(define (zero? x) (equal? x 0))
+
+(define (attribute name nl)
+ (node-list-map (lambda (snl) (named-node name (attributes snl))) nl))
+
+(define (attribute-value name nl)
+ (node-list-property 'value (attribute name nl)))
+
+(define (node-list-property prop nl) (node-list-map (lambda (snl)
+ (node-property prop snl default: (empty-node-list))) nl))
+
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mathmlx.dsl b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mathmlx.dsl
new file mode 100644
index 00000000000..1684ae55db1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mathmlx.dsl
@@ -0,0 +1,181 @@
+<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" [
+
+<!--
+ David Carlisle
+ davidc@nag.co.uk
+
+ Copyright 1998 Nag Ltd, The OpenMath Consortium. Esprit Project 24.969.
+ -->
+
+
+<!ENTITY dblib.dsl SYSTEM "dblib.dsl">
+
+<!ENTITY mathml.dsl SYSTEM "mathml.dsl">
+
+
+<!--
+<!ENTITY my-debug CDATA
+ "(lambda (x)
+ ((lambda (a b) b)
+ (debug (debug-body x))
+ x))" >
+
+-->
+
+<!ENTITY my-debug CDATA "(lambda (x) x)" >
+
+<!ENTITY my-debug2 CDATA
+ "(lambda (x)
+ ((lambda (a b) b)
+ (debug (debug-body x))
+ x))" >
+
+
+<!--
+<!ENTITY my-debug CDATA "(lambda (x) x)" >
+-->
+
+
+
+]>
+
+&dblib.dsl;
+
+&mathml.dsl;
+
+
+<!-- Debugging.
+ Extended version of my-debug, from Mulberry and also dblib.
+ This version shows more information about node lists, and more
+ type information for some types.
+ Also it is called via an SGML entity rather than a DSSSL function
+ So that the jade-primitive debug function reports a useful line
+ number, rather than just the line of the file in which the
+ my-debug function is defined.
+ -->
+
+
+(define debug
+ (external-procedure "UNREGISTERED::James Clark//Procedure::debug"))
+
+(define max-node-list-debug-length 5)
+
+(define (debug-body x)
+ `(,(cond ((node-list? x)
+ (if (node-list-empty? x)
+ 'empty-node-list
+ `( ,(if (named-node-list? x)
+ 'named-node-list
+ 'node-list)
+ ,(node-list-length x)
+ ,(node-list-reduce
+ (node-list-head x max-node-list-debug-length)
+ (lambda (result n)
+ (string-append result
+ (cond ((gi n) (string-append "<" (gi n) ">" ))
+ ((equal? 'data-char (node-property 'class-name n)) (data n))
+ (else "<?>"))))
+ "" ))))
+ ((sosofo? x) 'sosofo)
+ ((procedure? x) 'procedure)
+ ((style? x) 'style)
+ ((address? x) 'address)
+ ((color? x) 'color)
+ ((color-space? x) 'color-space)
+ ((display-space? x) 'display-space)
+ ((inline-space? x) 'inline-space)
+ ((glyph-id? x) 'glyph-id)
+ ((glyph-subst-table? x) 'glyph-subst-table)
+ ((boolean? x) 'boolean)
+ ((symbol? x) 'symbol)
+ ((list? x) 'list)
+ ((pair? x) 'pair)
+ ((char? x) 'char)
+ ((string? x) 'string)
+ ((quantity? x) 'quantity)
+ ((keyword? x) 'keyword)
+ (else 'other))
+ ,x))
+
+
+
+
+<!-- Some bits from the dsssl report, mainly from the
+ Mulberry site
+ -->
+
+(define (node-list-filter proc nl)
+ (node-list-reduce nl
+ (lambda (result snl)
+ (if (proc snl)
+ (node-list snl result)
+ result))
+ (empty-node-list)))
+
+
+(define (map f #!rest xs)
+ (let ((map1 (lambda (f xs) ; bootstrap version for unary F
+ (let loop ((xs xs))
+ (if (null? xs)
+ '()
+ (cons (f (car xs))
+ (loop (cdr xs))))))))
+ (cond ((null? xs)
+ '())
+ ((null? (cdr xs))
+ (map1 f (car xs)))
+ (else
+ (let loop ((xs xs))
+ (if (null? (car xs))
+ '()
+ (cons (apply f (map1 car xs))
+ (loop (map1 cdr xs)))))))))
+
+
+(define (node-list-head nl i)
+ (if (zero? i)
+ (empty-node-list)
+ (node-list (node-list-first nl)
+;;; page 136 of dsssl spec appears to be wrong...
+ (node-list-head (node-list-rest nl)
+ (- i 1)))))
+
+(define (zero? x) (equal? x 0))
+
+(define (attribute name nl)
+ (node-list-map (lambda (snl) (named-node name (attributes snl))) nl))
+
+(define (attribute-value name nl)
+ (node-list-property 'value (attribute name nl)))
+
+(define (node-list-property prop nl) (node-list-map (lambda (snl)
+ (node-property prop snl default: (empty-node-list))) nl))
+
+
+
+<!-- Style for the elements of the mathmlx DTD
+ Well there isn't much to do here.
+ -->
+
+
+(element mathx
+ (make paragraph
+ (make simple-page-sequence
+ page-height: 9in
+ page-width: 7in
+ min-leading: 2pt
+ top-margin: 1in
+ bottom-margin: 1in
+ left-margin: 1in
+ right-margin: 1in
+ (process-children-trim))))
+
+(element p
+ (make paragraph
+ space-before: (display-space 12pt)
+ space-after: (display-space 2pt)
+ (process-children-trim)))
+
+
+
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mmaliase.dtd b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mmaliase.dtd
new file mode 100644
index 00000000000..f1625ef7af2
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mmaliase.dtd
@@ -0,0 +1,78 @@
+
+<!--
+ MMALIAS Characters alphabetically
+ MathML Aliases
+
+ Converted from HTML table at
+ http://www.w3.org/TR/REC-MathML-19980407/chap6/MMALIAS1.html
+
+ Copyright 1998 Nag Ltd, The OpenMath Consortium. Esprit Project 24.969.
+-->
+
+<!ENTITY bigstar "&#9733;"><!-- u+2605 star, filled ISOPUB starf-->
+<!ENTITY blacklozenge "&#58625;"><!-- u+E501 lozenge, filled ISOPUB lozf-->
+<!ENTITY blacktriangle "&#9652;"><!-- u+25B4 up triangle, filled ISOPUB utrif-->
+<!ENTITY blacktriangledown "&#9662;"><!-- u+25BE down triangle, filled ISOPUB dtrif-->
+<!ENTITY blacktriangleleft "&#9666;"><!-- u+25C2 left triangle, filled ISOPUB ltrif-->
+<!ENTITY blacktriangleright "&#9656;"><!-- u+25B8 right triangle, filled ISOPUB rtrif-->
+<!ENTITY Breve "&#774;"><!-- u+0306 breve ISODIA breve-->
+<!ENTITY bullet "&#8226;"><!-- u+2022 round bullet, filled ISOPUB bull-->
+<!ENTITY Cedilla "&#807;"><!-- u+0327 cedilla ISODIA cedil-->
+<!ENTITY CenterDot "&#183;"><!-- u+00B7 middle dot ISONUM middot-->
+<!ENTITY centerdot "&#183;"><!-- u+00B7 middle dot ISONUM middot-->
+<!ENTITY checkmark "&#10003;"><!-- u+2713 tick, check mark ISOPUB check-->
+<!ENTITY circledR "&#175;"><!-- u+00AE registered sign ISONUM reg-->
+<!ENTITY CloseCurlyDoubleQuote "&#8221;"><!-- u+201D double quotation mark, right ISONUM rdquo-->
+<!ENTITY CloseCurlyQuote "&#8217;"><!-- u+2019 single quotation mark, right ISONUM rsquo-->
+<!ENTITY clubsuit "&#9827;"><!-- u+2663 club suit symbol ISOPUB clubs-->
+<!--<!ENTITY ddagger "&#8225;">-->
+<!-- u+2021 double dagger ISOPUB Dagger-->
+<!ENTITY DiacriticalAcute "&#769;"><!-- u+0301 acute accent ISODIA acute-->
+<!ENTITY DiacriticalDot "&#775;"><!-- u+0307 dot above ISODIA dot-->
+<!ENTITY DiacriticalDoubleAcute "&#779;"><!-- u+030B double acute accent ISODIA dblac-->
+<!ENTITY DiacriticalGrave "&#768;"><!-- u+0300 grave accent ISODIA grave-->
+<!ENTITY DiacriticalTilde "&#771;"><!-- u+0303 tilde ISODIA tilde-->
+<!ENTITY diamondsuit "&#9826;"><!-- u+2662 diamond suit symbol ISOPUB diams-->
+<!ENTITY div "&#247;"><!-- u+00F7 divide sign ISONUM divide-->
+<!ENTITY DoubleDot "&#776;"><!-- u+0308 dieresis ISODIA die-->
+<!ENTITY DownArrow "&#8595;"><!-- u+2193 downward arrow ISONUM darr-->
+<!ENTITY downarrow "&#8595;"><!-- u+2193 downward arrow ISONUM darr-->
+<!--
+<!ENTITY DownTeeArrow >
+-->
+<!ENTITY Hacek "&#780;"><!-- u+030C caron ISODIA caron-->
+<!ENTITY Hat "&#770;"><!-- u+0302 circumflex accent ISODIA circ-->
+<!ENTITY heartsuit "&#9825;"><!-- u+2661 heart suit symbol ISOPUB hearts-->
+<!ENTITY lbrace "&#123;"><!-- u+007B left curly bracket ISONUM lcub-->
+<!ENTITY lbrack "&#91;"><!-- u+005B left square bracket ISONUM lsqb-->
+<!ENTITY LeftArrow "&#8592;"><!-- u+2190 leftward arrow ISONUM larr-->
+<!ENTITY leftarrow "&#8592;"><!-- u+2190 leftward arrow ISONUM larr-->
+<!--
+<!ENTITY LeftTeeArrow >
+-->
+<!ENTITY lozenge "&#9674;"><!-- u+25CA lozenge or total mark ISOPUB loz-->
+<!ENTITY maltese "&#10016;"><!-- u+2720 maltese cross ISOPUB malt-->
+<!ENTITY natural "&#9838;"><!-- u+266E music natural ISOPUB natur-->
+<!--
+<!ENTITY NotCupCap >
+<!ENTITY NotEqualTilde >
+<!ENTITY NotHumpDownHump >
+<!ENTITY NotHumpEqual >
+<!ENTITY NotSquareSuperset >
+-->
+<!ENTITY OpenCurlyDoubleQuote "&#8220;"><!-- u+201C double quotation mark, left ISONUM ldquo-->
+<!ENTITY OpenCurlyQuote "&#8216;"><!-- u+2018 single quotation mark, left ISONUM lsquo-->
+<!ENTITY PlusMinus "&#177;"><!-- u+00B1 plus-or-minus sign ISONUM plusmn-->
+<!ENTITY pm "&#177;"><!-- u+00B1 plus-or-minus sign ISONUM plusmn-->
+<!ENTITY rbrace "&#125;"><!-- u+007D right curly bracket ISONUM rcub-->
+<!ENTITY rbrack "&#93;"><!-- u+005D right square bracket ISONUM rsqb-->
+<!ENTITY RightArrow "&#8594;"><!-- u+2192 rightward arrow ISONUM rarr-->
+<!ENTITY rightarrow "&#8594;"><!-- u+2192 rightward arrow ISONUM rarr-->
+<!ENTITY spadesuit "&#9824;"><!-- u+2660 spades suit symbol ISOPUB spades-->
+<!ENTITY triangle "&#9653;"><!-- u+25B5 up triangle, open ISOPUB utri-->
+<!ENTITY triangledown "&#9663;"><!-- u+25BF down triangle, open ISOPUB dtri-->
+<!ENTITY triangleleft "&#9667;"><!-- u+25C3 left triangle, open ISOPUB ltri-->
+<!ENTITY triangleright "&#9657;"><!-- u+25B9 right triangle, open ISOPUB rtri-->
+<!ENTITY UpArrow "&#8593;"><!-- u+2191 upward arrow ISONUM uarr-->
+<!ENTITY uparrow "&#8593;"><!-- u+2191 upward arrow ISONUM uarr-->
+<!ENTITY vert "&#124;"><!-- u+007C vertical bar ISONUM verbar-->
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mmlent.dtd b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mmlent.dtd
new file mode 100644
index 00000000000..d943407a78c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mmlent.dtd
@@ -0,0 +1,114 @@
+<!--
+ MathML Entitites PROVISIONAL
+ David Carlisle
+ Copyright 1998 Nag Ltd, The OpenMath Consortium. Esprit Project 24.969.
+-->
+
+<!-- Section 6.2.1 -->
+
+<!ENTITY tab "&#9;"><!-- tabulator stop -->
+
+<!ENTITY NewLine "[NewLine]"><!-- force a line break -->
+
+<!ENTITY IndentingNewLine "[IndentingNewLine]"><!--
+ force a line break and indent appropriately on next line -->
+
+<!ENTITY NoBreak "[NoBreak]"><!--
+ never break line here -->
+
+<!ENTITY GoodBreak "[GoodBreak]"><!--
+ if a linebreak is needed, here is a good spot -->
+<!ENTITY BadBreak "[BadBreak]"><!--
+ if a linebreak is needed, try to avoid breaking here -->
+
+
+<!ENTITY Space " "><!-- Space -->
+
+<!ENTITY NonBreakingSpace "[NonBreakingSpace]"><!--
+ space that is not a legal breakpoint -->
+
+<!ENTITY ZeroWidthSpace "[ZeroWidthSpace]"><!--
+ space of no width at all -->
+
+
+<!ENTITY VeryThinSpace "[VeryThinSpace]"><!--
+ space of width 1/18 em -->
+
+
+<!ENTITY ThinSpace "[ThinSpace]"><!--
+ space of width 3/18 em -->
+
+
+<!ENTITY MediumSpace "[MediumSpace]"><!--
+ space of width 4/18 em -->
+
+
+<!ENTITY ThickSpace "[ThickSpace]"><!--
+ space of width 5/18 em -->
+
+
+<!ENTITY NegativeVeryThinSpace "[NegativeVeryThinSpace]"><!--
+ space of width -1/18 em -->
+
+
+<!ENTITY NegativeThinSpace "[NegativeThinSpace]"><!--
+ space of width -3/18 em -->
+
+
+<!ENTITY NegativeMediumSpace "[NegativeMediumSpace]"><!--
+ space of width -4/18 em -->
+
+
+<!ENTITY NegativeThickSpace "[NegativeThickSpace]"><!--
+ space of width -5/18 em -->
+
+
+
+
+<!ENTITY InvisibleComma ""><!--
+ used as a separator, e.g., in indices (Section 3.2.4) -->
+<!ENTITY ic "" ><!--
+ short form of &InvisibleComma; -->
+
+<!ENTITY InvisibleTimes ""><!--
+ marks multiplication when it is understood without a mark (Section 3.2.4 -->
+<!ENTITY it ""><!--
+ short form of &InvisibleTimes; -->
+
+<!ENTITY ApplyFunction "" ><!--
+ character showing function application in presentation tagging (Section 3.2.4) -->
+<!ENTITY af "" ><!--
+ short form of &ApplyFunction; -->
+
+
+<!-- Section 6.2.3 -->
+
+<!ENTITY CapitalDifferentialD "D"><!--
+ D for use in differentials, e.g., within integrals -->
+<!ENTITY DD "D" ><!--
+ short form of &CapitalDifferentialD; -->
+
+<!ENTITY DifferentialD "d"><!--
+ d for use in differentials, e.g., within integral -->
+<!ENTITY dd "d" ><!--
+ short form of &DifferentialD; -->
+
+<!ENTITY ExponentialE "e"><!--
+ e for use for the exponential base of the natural logarithms -->
+<!ENTITY ee "e" ><!--
+ short form of &ExponentialE; -->
+
+<!ENTITY false "F" ><!--
+ logical constant false -->
+
+<!ENTITY ImaginaryI "i"><!--
+ i for use as a square root of -1 -->
+<!ENTITY ii "i" ><!--
+ short form of &ImaginaryI; -->
+
+
+<!ENTITY NotANumber "NaN"><!--
+ used in 4.3.2.9 -->
+
+<!ENTITY true "T" ><!--
+ logical constant true -->
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mtdemo.tex b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mtdemo.tex
new file mode 100644
index 00000000000..adf247ff73b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mtdemo.tex
@@ -0,0 +1,10 @@
+\[
+\begin{gathered}
+ f( \in ,\delta s) = \frac{1}{\xi }\phi _{v} (\lambda _{v} ,k,\beta ^{2} ) \hfill \\
+ \phi _{v} (\lambda _{v} ,k,\beta ^{2} ) = \frac{1}{{2\pi i}}\int_{{c - i\infty }}^{{c + i\infty }} {\phi (s)e^{{\lambda s}} ds} \hfill \\
+ \phi (s) = \text{exp }[\kappa(1 + \beta ^{2} \gamma )]\text{ exp }[\psi (s)] \hfill \\
+ \lambda _{u} = k\left[ {\frac{{ \in - \bar \in }}{\xi } - \gamma ' - \beta ^{2} } \right] \hfill \\
+\end{gathered}
+\]
+
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/stix.mml b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/stix.mml
new file mode 100644
index 00000000000..21346de9a83
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/stix.mml
@@ -0,0 +1,66 @@
+<math displaystyle='true'>
+ <semantics>
+ <mtable columnalign='left'>
+ <mtr>
+ <mtd>
+ <msub>
+ <mi>&phi;</mi>
+ <mi>v</mi>
+ </msub>
+ <mo stretchy='false'>(</mo><msub>
+ <mi>&lambda;</mi>
+ <mi>v</mi>
+ </msub>
+ <mo>,</mo><mi>k</mi><mo>,</mo><msup>
+ <mi>&beta;</mi>
+ <mn>2</mn>
+ </msup>
+ <mo stretchy='false'>)</mo><mo>=</mo><mfrac>
+ <mn>1</mn>
+ <mrow>
+ <mn>2</mn><mi>&pi;</mi><mi>i</mi>
+ </mrow>
+ </mfrac>
+ <msubsup>
+ <mo>&int;</mo>
+ <mrow>
+ <mi>c</mi><mo>-</mo><mi>i</mi><mo>&infin;</mo>
+ </mrow>
+ <mrow>
+ <mi>c</mi><mo>+</mo><mi>i</mi><mo>&infin;</mo>
+ </mrow>
+ </msubsup>
+ <mrow>
+ <mi>&phi;</mi><mo stretchy='false'>(</mo>
+ <mi>s</mi><mo stretchy='false'>)</mo>
+ <msup>
+ <mi>e</mi>
+ <mrow>
+ <mi>&lambda;</mi><mi>s</mi>
+ </mrow>
+ </msup>
+ <mi>d</mi><mi>s</mi>
+ </mrow>
+ </mtd>
+ </mtr>
+ <mtr>
+ <mtd>
+ <mi>&phi;</mi><mo stretchy='false'>(</mo>
+ <mi>s</mi><mo stretchy='false'>)</mo>
+ <mo>=</mo><mtext>exp </mtext>
+ <mo stretchy='false'>[</mo><mi>k</mi>
+ <mo stretchy='false'>(</mo><mn>1</mn><mo>+</mo><msup>
+ <mi>&beta;</mi>
+ <mn>2</mn>
+ </msup>
+ <mi>&gamma;</mi>
+ <mo stretchy='false'>)</mo>
+ <mo stretchy='false'>]</mo><mtext> exp </mtext>
+ <mo stretchy='false'>[</mo><mi>&psi;</mi>
+ <mo stretchy='false'>(</mo><mi>s</mi>
+ <mo stretchy='false'>)</mo><mo stretchy='false'>]</mo>
+ </mtd>
+ </mtr>
+ </mtable>
+ </semantics>
+</math>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/techexpl.mml b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/techexpl.mml
new file mode 100644
index 00000000000..04b4dd9396e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/techexpl.mml
@@ -0,0 +1,100 @@
+<!-- MathType@Translator@5@5@MathML (Techexplorer).tdl@MathML -- Techexplorer compatible@ -->
+<math displaystyle='true'>
+ <mtable columnalign='left'>
+ <mtr>
+ <mtd>
+ <mi>f</mi><mo stretchy='false'>(</mo><mo>,</mo><mi>&delta;</mi><mi>s</mi><mo stretchy='false'>)</mo><mo>=</mo><mfrac>
+ <mn>1</mn>
+ <mi>&xi;</mi>
+ </mfrac>
+ <msub>
+ <mi>&phi;</mi>
+ <mi>v</mi>
+ </msub>
+ <mo stretchy='false'>(</mo><msub>
+ <mi>&lambda;</mi>
+ <mi>v</mi>
+ </msub>
+ <mo>,</mo><mi>k</mi><mo>,</mo><msup>
+ <mi>&beta;</mi>
+ <mn>2</mn>
+ </msup>
+ <mo stretchy='false'>)</mo>
+ </mtd>
+ </mtr>
+ <mtr>
+ <mtd>
+ <msub>
+ <mi>&phi;</mi>
+ <mi>v</mi>
+ </msub>
+ <mo stretchy='false'>(</mo><msub>
+ <mi>&lambda;</mi>
+ <mi>v</mi>
+ </msub>
+ <mo>,</mo><mi>k</mi><mo>,</mo><msup>
+ <mi>&beta;</mi>
+ <mn>2</mn>
+ </msup>
+ <mo stretchy='false'>)</mo><mo>=</mo><mfrac>
+ <mn>1</mn>
+ <mrow>
+ <mn>2</mn><mi>&pi;</mi><mi>i</mi>
+ </mrow>
+ </mfrac>
+ <msubsup>
+ <mo>&int;</mo>
+ <mrow>
+ <mi>c</mi><mi>i</mi>
+ </mrow>
+ <mrow>
+ <mi>c</mi><mo>+</mo><mi>i</mi>
+ </mrow>
+ </msubsup>
+ <mrow>
+ <mi>&phi;</mi><mo stretchy='false'>(</mo><mi>s</mi><mo stretchy='false'>)</mo><msup>
+ <mi>e</mi>
+ <mrow>
+ <mi>&lambda;</mi><mi>s</mi>
+ </mrow>
+ </msup>
+ <mi>d</mi><mi>s</mi>
+ </mrow>
+
+ </mtd>
+ </mtr>
+ <mtr>
+ <mtd>
+ <mi>&phi;</mi><mo stretchy='false'>(</mo><mi>s</mi><mo stretchy='false'>)</mo><mo>=</mo><mtext>exp </mtext><mo stretchy='false'>[</mo><mi>k</mi><mo stretchy='false'>(</mo><mn>1</mn><mo>+</mo><msup>
+ <mi>&beta;</mi>
+ <mn>2</mn>
+ </msup>
+ <mi>&gamma;</mi><mo stretchy='false'>)</mo><mo stretchy='false'>]</mo><mtext> exp </mtext><mo stretchy='false'>[</mo><mi>&psi;</mi><mo stretchy='false'>(</mo><mi>s</mi><mo stretchy='false'>)</mo><mo stretchy='false'>]</mo>
+ </mtd>
+ </mtr>
+ <mtr>
+ <mtd>
+ <msub>
+ <mi>&lambda;</mi>
+ <mi>u</mi>
+ </msub>
+ <mo>=</mo><mi>k</mi><mrow><mo>[</mo> <mrow>
+ <mfrac>
+ <mrow>
+
+ </mrow>
+ <mi>&xi;</mi>
+ </mfrac>
+ <msup>
+ <mi>&beta;</mi>
+ <mn>2</mn>
+ </msup>
+
+ </mrow> <mo>]</mo></mrow>
+ </mtd>
+ </mtr>
+ </mtable>
+
+</math>
+<!-- MathType@End@5@5@ -->
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/test.dtd b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/test.dtd
new file mode 100644
index 00000000000..8a57713d8fe
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/test.dtd
@@ -0,0 +1,62 @@
+<!ELEMENT document (math*)>
+<!--Added Math Symbols: Arrows-->
+<!ENTITY % isoamsae.dtd SYSTEM "isoamsae.dtd">
+
+<!--Added Math Symbols: Binary Operators-->
+<!ENTITY % isoamsbe.dtd SYSTEM "isoamsbe.dtd">
+
+<!--Added Math Symbols: Delimiters-->
+<!ENTITY % isoamsce.dtd SYSTEM "isoamsce.dtd">
+
+<!--Added Math Symbols: Negated Relations-->
+<!ENTITY % isoamsne.dtd SYSTEM "isoamsne.dtd">
+
+<!--Added Math Symbols: Ordinary-->
+<!ENTITY % isoamsoe.dtd SYSTEM "isoamsoe.dtd">
+
+<!--Added Math Symbols: Relations-->
+<!ENTITY % isoamsre.dtd SYSTEM "isoamsre.dtd">
+
+<!--General Technical-->
+<!ENTITY % isoteche.dtd SYSTEM "isoteche.dtd">
+
+<!--Numbers and Currency symbols-->
+<!ENTITY % isonume.dtd SYSTEM "isonume.dtd">
+
+<!--MathML Aliases (From ISO PUB,DIA,NUM)-->
+<!ENTITY % mmaliase.dtd SYSTEM "mmaliase.dtd">
+
+<!--Greek Symbols-->
+<!ENTITY % isogrk3e.dtd SYSTEM "isogrk3e.dtd">
+
+<!--Math Script Font-->
+<!ENTITY % isomscre.dtd SYSTEM "isomscre.dtd">
+
+<!--Math Open Face Font-->
+<!ENTITY % isomopfe.dtd SYSTEM "isomopfe.dtd">
+
+<!--MathML Entities-->
+<!ENTITY % mmlent.dtd SYSTEM "mmlent.dtd">
+
+<!ENTITY % mathml.dtd SYSTEM "mathml.dtd">
+
+%mathml.dtd;
+%isoamsae.dtd;
+%isoamsbe.dtd;
+%isoamsce.dtd;
+%isoamsne.dtd;
+%isoamsoe.dtd;
+%isoamsre.dtd;
+%isoteche.dtd;
+%isonume.dtd;
+%mmaliase.dtd;
+%isogrk3e.dtd;
+%isomscre.dtd;
+%isomopfe.dtd;
+%mmlent.dtd;
+<!ENTITY aacute "&#x00E1;">
+<!ENTITY OverBar "[OverBar]">
+<!ENTITY negationslash "/">
+
+
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/test.xml b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/test.xml
new file mode 100644
index 00000000000..206126b456e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/test.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE document SYSTEM "test.dtd"
+[
+<!ENTITY stix SYSTEM "stix.mml">
+<!ENTITY amaya SYSTEM "amaya.mml">
+<!ENTITY techexpl SYSTEM "techexpl.mml">
+<!ENTITY webeq SYSTEM "webeq.mml">
+]>
+<document>
+&webeq;
+&techexpl;
+&stix;
+&amaya;
+</document>
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/tmp.tmp b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/tmp.tmp
new file mode 100644
index 00000000000..3168dffd88a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/tmp.tmp
@@ -0,0 +1,2 @@
+
+xx \ No newline at end of file
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try.cfg b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try.cfg
new file mode 100644
index 00000000000..7b306317997
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try.cfg
@@ -0,0 +1,11 @@
+\Configure{HTML}{\StartHtml}{\EndHtml}
+\newcommand\StartHtml{\IgnorePar\HCode{<!DOCTYPE HTML PUBLIC
+ "-//W3C//DTD HTML 4.0 Transitional//EN">\Hnewline
+ <HTML><HEAD><LINK REL="stylesheet"
+ TYPE="text/css" HREF="\jobname.css">\Hnewline
+ <TITLE>\jobname</TITLE></HEAD>\Hnewline <BODY>}
+ \Css{.hooks{color:green;}}}
+\newcommand\EndHtml{\HCode{</BODY></HTML>}}
+\Preamble{}
+\begin{document}
+\EndPreamble
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try2.cfg b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try2.cfg
new file mode 100644
index 00000000000..850fb8aea93
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try2.cfg
@@ -0,0 +1,18 @@
+\Configure{HEAD}{\empty}{\empty}
+\Configure{HTML}
+ {\IgnorePar\HCode{<HTML><HEAD> <TITLE></TITLE></HEAD><BODY>}[DOC]}
+ {[/DOC]\HCode{</BODY></HTML>}}
+\Preamble{}
+ \Configure{BODY}{\empty}{\empty}
+ \Configure{TITLE}{\empty}{\empty}
+ \Configure{TITLE+}{\empty}
+ \Configure{TocAt}{\empty}{\empty}
+ \Configure{TocAt*}{\empty}{\empty}
+ \Configure{toc}{\empty}
+ \ConfigureEnv{description} {[DLIST]}{[/DLIST]}{}{}
+ \ConfigureList{description}{}{}{[MARK]}{[/MARK]}
+ \Configure{section} {[SECTION]}{[/SECTION]}
+ {[NUM]\arabic{section}[/NUM][TITLE]}{[/TITLE]}
+\begin{document}
+\EndPreamble
+\Configure{HtmlPar}{}{\empty}{}{}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try3.cfg b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try3.cfg
new file mode 100644
index 00000000000..16ec5677ed2
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try3.cfg
@@ -0,0 +1,8 @@
+\Configure{HTML} {\Tg<DOC>}{\Tg</DOC>}
+\Preamble{}
+ \ConfigureEnv{description} {\Tg<DLIST>}{\Tg</DLIST>}{}{}
+ \ConfigureList{description}{}{}{\Tg<MARK>}{\Tg</MARK>}
+ \Configure{section} {\Tg<SECTION>}{\Tg</SECTION>}
+ {\Tg<NUM>\arabic{section}\Tg</NUM>\Tg<TITLE>}{\Tg</TITLE>}
+\begin{document}
+\EndPreamble
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try4.cfg b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try4.cfg
new file mode 100644
index 00000000000..7addb8df342
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try4.cfg
@@ -0,0 +1,14 @@
+\Configure{HTML}
+ {\IgnorePar\HCode{<HTML><HEAD> <TITLE></TITLE></HEAD><BODY>}\Tg<DOC>}
+ {\Tg</DOC>\HCode{</BODY></HTML>}}
+\Preamble{}
+ \ConfigureEnv{description} {\Tg<DLIST>}{\Tg</DLIST>}{}{}
+ \ConfigureList{description}{}{}{\Tg<MARK>}{\Tg</MARK>}
+ \Configure{section} {\Tg<SECTION>}{\Tg</SECTION>}
+ {\Tg<NUM>\arabic{section}\Tg</NUM>\Tg<TITLE>}{\Tg</TITLE>}
+\Configure<NUM>{\HCode{<DIV ALIGN="CENTER">}}{}
+\Configure</TITLE>{}{\HCode{</DIV>}}
+\Configure<DLIST>{\HCode{<BR>}}{}
+\Configure</DLIST>{}{\HCode{<BR>}}
+\begin{document}
+\EndPreamble
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try5.cfg b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try5.cfg
new file mode 100644
index 00000000000..57a7f4493b8
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try5.cfg
@@ -0,0 +1,16 @@
+\Configure{HTML}
+ {\IgnorePar\HCode{<HTML><HEAD> <TITLE></TITLE></HEAD><BODY>}\Tg<DOC>}
+ {\Tg</DOC>\HCode{</BODY></HTML>}}
+\Preamble{}
+ \ConfigureEnv{description} {\Tg<DLIST>}{\Tg</DLIST>}{}{}
+ \ConfigureList{description}{}{}{\Tg<MARK>}{\Tg</MARK>}
+ \Configure{section} {\Tg<SECTION>}{\Tg</SECTION>}
+ {\Tg<NUM>\arabic{section}\Tg</NUM>\Tg<TITLE>}{\Tg</TITLE>}
+\Configure<NUM>-{\HCode{<DIV ALIGN="CENTER">}}
+\Configure</NUM>-{ }
+\Configure<TITLE>-{}
+\Configure</TITLE>-{\HCode{</DIV>}}
+\Configure<DLIST>{\HCode{<BR>}}{}
+\Configure</DLIST>{}{\HCode{<BR>}}
+\begin{document}
+\EndPreamble
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/webeq.mml b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/webeq.mml
new file mode 100644
index 00000000000..487da18c321
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/webeq.mml
@@ -0,0 +1,111 @@
+<!-- MathType@Translator@5@5@MathML (WebEQ).tdl@MathML -- WebEQ compatible@ -->
+<math displaystyle='true'>
+ <semantics>
+ <mtable columnalign='left'>
+ <mtr>
+ <mtd>
+ <mi>f</mi><mo stretchy='false'>(</mo><mo>&isinv;</mo><mo>,</mo><mi>&delta;</mi><mi>s</mi><mo stretchy='false'>)</mo><mo>=</mo><mfrac>
+ <mn>1</mn>
+ <mi>&xi;</mi>
+ </mfrac>
+ <msub>
+ <mi>&phi;</mi>
+ <mi>v</mi>
+ </msub>
+ <mo stretchy='false'>(</mo><msub>
+ <mi>&lambda;</mi>
+ <mi>v</mi>
+ </msub>
+ <mo>,</mo><mi>k</mi><mo>,</mo><msup>
+ <mi>&beta;</mi>
+ <mn>2</mn>
+ </msup>
+ <mo stretchy='false'>)</mo>
+ </mtd>
+ </mtr>
+ <mtr>
+ <mtd>
+ <msub>
+ <mi>&phi;</mi>
+ <mi>v</mi>
+ </msub>
+ <mo stretchy='false'>(</mo><msub>
+ <mi>&lambda;</mi>
+ <mi>v</mi>
+ </msub>
+ <mo>,</mo><mi>k</mi><mo>,</mo><msup>
+ <mi>&beta;</mi>
+ <mn>2</mn>
+ </msup>
+ <mo stretchy='false'>)</mo><mo>=</mo><mfrac>
+ <mn>1</mn>
+ <mrow>
+ <mn>2</mn><mi>&pi;</mi><mi>i</mi>
+ </mrow>
+ </mfrac>
+ <msubsup>
+ <mo>&int;</mo>
+ <mrow>
+ <mi>c</mi><mo>-</mo><mi>i</mi><mi>&infin;</mi>
+ </mrow>
+ <mrow>
+ <mi>c</mi><mo>+</mo><mi>i</mi><mi>&infin;</mi>
+ </mrow>
+ </msubsup>
+ <mrow>
+ <mi>&phi;</mi><mo stretchy='false'>(</mo><mi>s</mi><mo stretchy='false'>)</mo><msup>
+ <mi>e</mi>
+ <mrow>
+ <mi>&lambda;</mi><mi>s</mi>
+ </mrow>
+ </msup>
+ <mi>d</mi><mi>s</mi>
+ </mrow>
+
+ </mtd>
+ </mtr>
+ <mtr>
+ <mtd>
+ <mi>&phi;</mi><mo stretchy='false'>(</mo><mi>s</mi><mo stretchy='false'>)</mo><mo>=</mo><mtext>exp </mtext><mo stretchy='false'>[</mo><mi>k</mi><mo stretchy='false'>(</mo><mn>1</mn><mo>+</mo><msup>
+ <mi>&beta;</mi>
+ <mn>2</mn>
+ </msup>
+ <mi>&gamma;</mi><mo stretchy='false'>)</mo><mo stretchy='false'>]</mo><mtext> exp </mtext><mo stretchy='false'>[</mo><mi>&psi;</mi><mo stretchy='false'>(</mo><mi>s</mi><mo stretchy='false'>)</mo><mo stretchy='false'>]</mo>
+ </mtd>
+ </mtr>
+ <mtr>
+ <mtd>
+ <msub>
+ <mi>&lambda;</mi>
+ <mi>u</mi>
+ </msub>
+ <mo>=</mo><mi>k</mi><mrow><mo>[</mo> <mrow>
+ <mfrac>
+ <mrow>
+ <mo>&isinv;</mo><mo>-</mo><mover accent='true'>
+ <mo>&isinv;</mo>
+ <mo>&amp;macr;</mo>
+ </mover>
+
+ </mrow>
+ <mi>&xi;</mi>
+ </mfrac>
+ <mo>-</mo><msup>
+ <mi>&gamma;</mi>
+ <mo>&prime;</mo>
+ </msup>
+ <mo>-</mo><msup>
+ <mi>&beta;</mi>
+ <mn>2</mn>
+ </msup>
+
+ </mrow> <mo>]</mo></mrow>
+ </mtd>
+ </mtr>
+ </mtable>
+
+
+ </semantics>
+</math>
+<!-- MathType@End@5@5@ -->
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/xml.dcl b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/xml.dcl
new file mode 100644
index 00000000000..fed21030921
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/latex2xml/xml.dcl
@@ -0,0 +1,179 @@
+<!SGML -- SGML Declaration for valid XML documents --
+ "ISO 8879:1986 (WWW)"
+
+ CHARSET
+ BASESET
+ "ISO Registration Number 176//CHARSET
+ ISO/IEC 10646-1:1993 UCS-4 with implementation
+ level 3//ESC 2/5 2/15 4/6"
+ DESCSET
+ 0 9 UNUSED
+ 9 2 9
+ 11 2 UNUSED
+ 13 1 13
+ 14 18 UNUSED
+ 32 95 32
+ 127 1 UNUSED
+ 128 32 UNUSED
+ -- use this instead of the official declaration because SP only
+ supports 16-bit characters --
+ 160 65374 160
+ 65534 2 UNUSED
+ -- 55296 2048 UNUSED
+ 57344 8190 57344
+ 65534 2 UNUSED
+ 65536 1048576 65536 --
+ CAPACITY NONE
+
+ SCOPE DOCUMENT
+
+ SYNTAX
+ SHUNCHAR NONE
+ BASESET "ISO Registration Number 176//CHARSET
+ ISO/IEC 10646-1:1993 UCS-4 with implementation
+ level 3//ESC 2/5 2/15 4/6"
+ DESCSET
+ 0 1114112 0
+ FUNCTION
+ RE 13
+ RS 10
+ SPACE 32
+ TAB SEPCHAR 9
+
+ NAMING
+ LCNMSTRT ""
+ UCNMSTRT ""
+ NAMESTRT
+ 58 95 192-214 216-246 248-305 308-318 321-328
+ 330-382 384-451 461-496 500-501 506-535 592-680
+ 699-705 902 904-906 908 910-929 931-974 976-982
+ 986 988 990 992 994-1011 1025-1036 1038-1103
+ 1105-1116 1118-1153 1168-1220 1223-1224
+ 1227-1228 1232-1259 1262-1269 1272-1273
+ 1329-1366 1369 1377-1414 1488-1514 1520-1522
+ 1569-1594 1601-1610 1649-1719 1722-1726
+ 1728-1742 1744-1747 1749 1765-1766 2309-2361
+ 2365 2392-2401 2437-2444 2447-2448 2451-2472
+ 2474-2480 2482 2486-2489 2524-2525 2527-2529
+ 2544-2545 2565-2570 2575-2576 2579-2600
+ 2602-2608 2610-2611 2613-2614 2616-2617
+ 2649-2652 2654 2674-2676 2693-2699 2701
+ 2703-2705 2707-2728 2730-2736 2738-2739
+ 2741-2745 2749 2784 2821-2828 2831-2832
+ 2835-2856 2858-2864 2866-2867 2870-2873 2877
+ 2908-2909 2911-2913 2949-2954 2958-2960
+ 2962-2965 2969-2970 2972 2974-2975 2979-2980
+ 2984-2986 2990-2997 2999-3001 3077-3084
+ 3086-3088 3090-3112 3114-3123 3125-3129
+ 3168-3169 3205-3212 3214-3216 3218-3240
+ 3242-3251 3253-3257 3294 3296-3297 3333-3340
+ 3342-3344 3346-3368 3370-3385 3424-3425
+ 3585-3630 3632 3634-3635 3648-3653 3713-3714
+ 3716 3719-3720 3722 3725 3732-3735 3737-3743
+ 3745-3747 3749 3751 3754-3755 3757-3758 3760
+ 3762-3763 3773 3776-3780 3904-3911 3913-3945
+ 4256-4293 4304-4342 4352 4354-4355 4357-4359
+ 4361 4363-4364 4366-4370 4412 4414 4416 4428
+ 4430 4432 4436-4437 4441 4447-4449 4451 4453
+ 4455 4457 4461-4462 4466-4467 4469 4510 4520
+ 4523 4526-4527 4535-4536 4538 4540-4546 4587
+ 4592 4601 7680-7835 7840-7929 7936-7957
+ 7960-7965 7968-8005 8008-8013 8016-8023 8025
+ 8027 8029 8031-8061 8064-8116 8118-8124 8126
+ 8130-8132 8134-8140 8144-8147 8150-8155
+ 8160-8172 8178-8180 8182-8188 8486 8490-8491
+ 8494 8576-8578 12295 12321-12329 12353-12436
+ 12449-12538 12549-12588 19968-40869 44032-55203
+
+ LCNMCHAR ""
+ UCNMCHAR ""
+ NAMECHAR
+ 45-46 183 720-721 768-837 864-865 903 1155-1158
+ 1425-1441 1443-1465 1467-1469 1471 1473-1474
+ 1476 1600 1611-1618 1632-1641 1648 1750-1764
+ 1767-1768 1770-1773 1776-1785 2305-2307 2364
+ 2366-2381 2385-2388 2402-2403 2406-2415
+ 2433-2435 2492 2494-2500 2503-2504 2507-2509
+ 2519 2530-2531 2534-2543 2562 2620 2622-2626
+ 2631-2632 2635-2637 2662-2673 2689-2691 2748
+ 2750-2757 2759-2761 2763-2765 2790-2799
+ 2817-2819 2876 2878-2883 2887-2888 2891-2893
+ 2902-2903 2918-2927 2946-2947 3006-3010
+ 3014-3016 3018-3021 3031 3047-3055 3073-3075
+ 3134-3140 3142-3144 3146-3149 3157-3158
+ 3174-3183 3202-3203 3262-3268 3270-3272
+ 3274-3277 3285-3286 3302-3311 3330-3331
+ 3390-3395 3398-3400 3402-3405 3415 3430-3439
+ 3633 3636-3642 3654-3662 3664-3673 3761
+ 3764-3769 3771-3772 3782 3784-3789 3792-3801
+ 3864-3865 3872-3881 3893 3895 3897 3902-3903
+ 3953-3972 3974-3979 3984-3989 3991 3993-4013
+ 4017-4023 4025 8400-8412 8417 12293 12330-12335
+ 12337-12341 12441-12442 12445-12446 12540-12542
+
+ NAMECASE
+ GENERAL NO
+ ENTITY NO
+
+ DELIM
+ GENERAL SGMLREF
+ HCRO "&#38;#x" -- 38 is the number for ampersand --
+ NESTC "/"
+ NET ">"
+ PIC "?>"
+ SHORTREF NONE
+
+ NAMES
+ SGMLREF
+
+ QUANTITY NONE
+
+ ENTITIES
+ "amp" 38
+ "lt" 60
+ "gt" 62
+ "quot" 34
+ "apos" 39
+
+ FEATURES
+ MINIMIZE
+ DATATAG NO
+ OMITTAG NO
+ RANK NO
+ SHORTTAG
+ STARTTAG
+ EMPTY NO
+ UNCLOSED NO
+ NETENABL IMMEDNET
+ ENDTAG
+ EMPTY NO
+ UNCLOSED NO
+ ATTRIB
+ DEFAULT YES
+ OMITNAME NO
+ VALUE NO
+ EMPTYNRM YES
+ IMPLYDEF
+ ATTLIST NO
+ DOCTYPE NO
+ ELEMENT NO
+ ENTITY NO
+ NOTATION NO
+ LINK
+ SIMPLE NO
+ IMPLICIT NO
+ EXPLICIT NO
+ OTHER
+ CONCUR NO
+ SUBDOC NO
+ FORMAL NO
+ URN NO
+ KEEPRSRE YES
+ VALIDITY TYPE
+ ENTITIES
+ REF ANY
+ INTEGRAL YES
+ APPINFO NONE
+ SEEALSO "ISO 8879:1986//NOTATION
+ Extensible Markup Language (XML) 1.0//EN"
+>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xml/README.ch6 b/Master/texmf-doc/doc/english/latex-web-companion/xml/README.ch6
new file mode 100644
index 00000000000..4bdbb3df6f9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xml/README.ch6
@@ -0,0 +1,26 @@
+Source files for examples in Chapter 6 of the LaTeX Web Companion
+
+catalog catalog file for nsgmls
+xml.dcl SGML declaration for XML spec
+
+invitation.xml XML source introduced in Section 6.4.2.2
+invitation.dtd DTD source introduced in Section 6.4.3
+emptyexample.xml XML source introduced in Section 6.5.5
+wrong.xml XML source introduced in Section 6.6.5.5
+
+Important remark:
+
+To run the examples with nsgmls, you should first set the
+environment variable SGML_CATALOG_FILES to the value catalog,
+for instance in the Bourne shell
+
+SGML_CATALOG_FILES=catalog
+export SGML_CATALOG_FILES
+
+or in the C shell
+
+setenv SGML_CATALOG_FILES catalog
+
+Then you can type (if you have installed nsgmls)
+
+nsgmls invitation.xml \ No newline at end of file
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xml/catalog b/Master/texmf-doc/doc/english/latex-web-companion/xml/catalog
new file mode 100644
index 00000000000..bd4f2aa939f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xml/catalog
@@ -0,0 +1,2 @@
+SGMLDECL "xml.dcl"
+PUBLIC "-//W3C//DTD Specification::19971229//EN" "xmlspec.dtd"
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xml/emptyexample.xml b/Master/texmf-doc/doc/english/latex-web-companion/xml/emptyexample.xml
new file mode 100644
index 00000000000..957a6041065
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xml/emptyexample.xml
@@ -0,0 +1,15 @@
+<!DOCTYPE emptyexample [
+<!ELEMENT emptyexample (par*)>
+<!ELEMENT par (#PCDATA|image|imref)*>
+<!ELEMENT image EMPTY>
+<!ATTLIST image name ID #IMPLIED
+ address CDATA #REQUIRED>
+<!ELEMENT imref EMPTY>
+<!ATTLIST imref name IDREF #REQUIRED>
+<!ENTITY logo-uri "http://www.ucc.ie/xml/xml.gif">
+]>
+<emptyexample>
+<par>The XML logo is shown in the image <imref name="xml-logo"/>.</par>
+<par>The image shows an alternative syntax for an empty element
+<image name="xml-logo" address="&logo-uri;"></image></par>
+</emptyexample>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xml/invitation.dtd b/Master/texmf-doc/doc/english/latex-web-companion/xml/invitation.dtd
new file mode 100644
index 00000000000..ad8df550474
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xml/invitation.dtd
@@ -0,0 +1,14 @@
+<!-- invitation DTD -->
+<!-- May 26th 1998 mg -->
+<!ELEMENT invitation (front, body, back) >
+<!ELEMENT front (to, date, where, why?) >
+<!ELEMENT date (#PCDATA) >
+<!ELEMENT to (#PCDATA) >
+<!ELEMENT where (#PCDATA) >
+<!ELEMENT why (#PCDATA) >
+<!ELEMENT body (par+) >
+<!ELEMENT par (#PCDATA|emph)* >
+<!ELEMENT emph (#PCDATA) >
+<!ELEMENT back (signature) >
+<!ELEMENT signature (#PCDATA) >
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xml/invitation.xml b/Master/texmf-doc/doc/english/latex-web-companion/xml/invitation.xml
new file mode 100644
index 00000000000..3209a96b3bd
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xml/invitation.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!DOCTYPE invitation SYSTEM "invitation.dtd">
+<invitation>
+<!-- ++++ The header part of the document ++++ -->
+<front>
+<to>Anna, Bernard, Didier, Johanna</to>
+<date>Next Friday Evening at 8 pm</date>
+<where>The Web Cafe</where>
+<why>My first XML baby</why>
+</front>
+<!-- +++++ The main part of the document +++++ -->
+<body>
+<par>
+I would like to invite you all to celebrate
+the birth of <emph>Invitation</emph>, my
+first XML document child.
+</par>
+<par>
+Please do your best to come and join me next Friday
+evening. And, do not forget to bring your friends.
+</par>
+<par>
+I <emph>really</emph> look forward to see you soon!
+</par>
+</body>
+<!-- +++ The closing part of the document ++++ -->
+<back>
+<signature>Michel</signature>
+</back>
+</invitation>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xml/wrong.xml b/Master/texmf-doc/doc/english/latex-web-companion/xml/wrong.xml
new file mode 100644
index 00000000000..4f3827b7adc
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xml/wrong.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE wrong [
+<!ELEMENT wrong (par*)>
+<!ELEMENT par (#PCDATA|emph)*>
+<!ELEMENT emph (#PCDATA)*>
+]>
+<wrong>
+<par>This part has wrong entity syntax &lt;par&gt.</par>
+<emph>Emph text outside scope.</emph>
+<par>Here comes another error <par>a second level
+paragraph</par>.</par>
+<par>A wrongly nested <emph>construct</par></emph>.
+Some more text outside valid scope
+<par>Reserved characters "&" "<" ">" ";" .</par>
+</wrong>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xml/xml.dcl b/Master/texmf-doc/doc/english/latex-web-companion/xml/xml.dcl
new file mode 100644
index 00000000000..fed21030921
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xml/xml.dcl
@@ -0,0 +1,179 @@
+<!SGML -- SGML Declaration for valid XML documents --
+ "ISO 8879:1986 (WWW)"
+
+ CHARSET
+ BASESET
+ "ISO Registration Number 176//CHARSET
+ ISO/IEC 10646-1:1993 UCS-4 with implementation
+ level 3//ESC 2/5 2/15 4/6"
+ DESCSET
+ 0 9 UNUSED
+ 9 2 9
+ 11 2 UNUSED
+ 13 1 13
+ 14 18 UNUSED
+ 32 95 32
+ 127 1 UNUSED
+ 128 32 UNUSED
+ -- use this instead of the official declaration because SP only
+ supports 16-bit characters --
+ 160 65374 160
+ 65534 2 UNUSED
+ -- 55296 2048 UNUSED
+ 57344 8190 57344
+ 65534 2 UNUSED
+ 65536 1048576 65536 --
+ CAPACITY NONE
+
+ SCOPE DOCUMENT
+
+ SYNTAX
+ SHUNCHAR NONE
+ BASESET "ISO Registration Number 176//CHARSET
+ ISO/IEC 10646-1:1993 UCS-4 with implementation
+ level 3//ESC 2/5 2/15 4/6"
+ DESCSET
+ 0 1114112 0
+ FUNCTION
+ RE 13
+ RS 10
+ SPACE 32
+ TAB SEPCHAR 9
+
+ NAMING
+ LCNMSTRT ""
+ UCNMSTRT ""
+ NAMESTRT
+ 58 95 192-214 216-246 248-305 308-318 321-328
+ 330-382 384-451 461-496 500-501 506-535 592-680
+ 699-705 902 904-906 908 910-929 931-974 976-982
+ 986 988 990 992 994-1011 1025-1036 1038-1103
+ 1105-1116 1118-1153 1168-1220 1223-1224
+ 1227-1228 1232-1259 1262-1269 1272-1273
+ 1329-1366 1369 1377-1414 1488-1514 1520-1522
+ 1569-1594 1601-1610 1649-1719 1722-1726
+ 1728-1742 1744-1747 1749 1765-1766 2309-2361
+ 2365 2392-2401 2437-2444 2447-2448 2451-2472
+ 2474-2480 2482 2486-2489 2524-2525 2527-2529
+ 2544-2545 2565-2570 2575-2576 2579-2600
+ 2602-2608 2610-2611 2613-2614 2616-2617
+ 2649-2652 2654 2674-2676 2693-2699 2701
+ 2703-2705 2707-2728 2730-2736 2738-2739
+ 2741-2745 2749 2784 2821-2828 2831-2832
+ 2835-2856 2858-2864 2866-2867 2870-2873 2877
+ 2908-2909 2911-2913 2949-2954 2958-2960
+ 2962-2965 2969-2970 2972 2974-2975 2979-2980
+ 2984-2986 2990-2997 2999-3001 3077-3084
+ 3086-3088 3090-3112 3114-3123 3125-3129
+ 3168-3169 3205-3212 3214-3216 3218-3240
+ 3242-3251 3253-3257 3294 3296-3297 3333-3340
+ 3342-3344 3346-3368 3370-3385 3424-3425
+ 3585-3630 3632 3634-3635 3648-3653 3713-3714
+ 3716 3719-3720 3722 3725 3732-3735 3737-3743
+ 3745-3747 3749 3751 3754-3755 3757-3758 3760
+ 3762-3763 3773 3776-3780 3904-3911 3913-3945
+ 4256-4293 4304-4342 4352 4354-4355 4357-4359
+ 4361 4363-4364 4366-4370 4412 4414 4416 4428
+ 4430 4432 4436-4437 4441 4447-4449 4451 4453
+ 4455 4457 4461-4462 4466-4467 4469 4510 4520
+ 4523 4526-4527 4535-4536 4538 4540-4546 4587
+ 4592 4601 7680-7835 7840-7929 7936-7957
+ 7960-7965 7968-8005 8008-8013 8016-8023 8025
+ 8027 8029 8031-8061 8064-8116 8118-8124 8126
+ 8130-8132 8134-8140 8144-8147 8150-8155
+ 8160-8172 8178-8180 8182-8188 8486 8490-8491
+ 8494 8576-8578 12295 12321-12329 12353-12436
+ 12449-12538 12549-12588 19968-40869 44032-55203
+
+ LCNMCHAR ""
+ UCNMCHAR ""
+ NAMECHAR
+ 45-46 183 720-721 768-837 864-865 903 1155-1158
+ 1425-1441 1443-1465 1467-1469 1471 1473-1474
+ 1476 1600 1611-1618 1632-1641 1648 1750-1764
+ 1767-1768 1770-1773 1776-1785 2305-2307 2364
+ 2366-2381 2385-2388 2402-2403 2406-2415
+ 2433-2435 2492 2494-2500 2503-2504 2507-2509
+ 2519 2530-2531 2534-2543 2562 2620 2622-2626
+ 2631-2632 2635-2637 2662-2673 2689-2691 2748
+ 2750-2757 2759-2761 2763-2765 2790-2799
+ 2817-2819 2876 2878-2883 2887-2888 2891-2893
+ 2902-2903 2918-2927 2946-2947 3006-3010
+ 3014-3016 3018-3021 3031 3047-3055 3073-3075
+ 3134-3140 3142-3144 3146-3149 3157-3158
+ 3174-3183 3202-3203 3262-3268 3270-3272
+ 3274-3277 3285-3286 3302-3311 3330-3331
+ 3390-3395 3398-3400 3402-3405 3415 3430-3439
+ 3633 3636-3642 3654-3662 3664-3673 3761
+ 3764-3769 3771-3772 3782 3784-3789 3792-3801
+ 3864-3865 3872-3881 3893 3895 3897 3902-3903
+ 3953-3972 3974-3979 3984-3989 3991 3993-4013
+ 4017-4023 4025 8400-8412 8417 12293 12330-12335
+ 12337-12341 12441-12442 12445-12446 12540-12542
+
+ NAMECASE
+ GENERAL NO
+ ENTITY NO
+
+ DELIM
+ GENERAL SGMLREF
+ HCRO "&#38;#x" -- 38 is the number for ampersand --
+ NESTC "/"
+ NET ">"
+ PIC "?>"
+ SHORTREF NONE
+
+ NAMES
+ SGMLREF
+
+ QUANTITY NONE
+
+ ENTITIES
+ "amp" 38
+ "lt" 60
+ "gt" 62
+ "quot" 34
+ "apos" 39
+
+ FEATURES
+ MINIMIZE
+ DATATAG NO
+ OMITTAG NO
+ RANK NO
+ SHORTTAG
+ STARTTAG
+ EMPTY NO
+ UNCLOSED NO
+ NETENABL IMMEDNET
+ ENDTAG
+ EMPTY NO
+ UNCLOSED NO
+ ATTRIB
+ DEFAULT YES
+ OMITNAME NO
+ VALUE NO
+ EMPTYNRM YES
+ IMPLYDEF
+ ATTLIST NO
+ DOCTYPE NO
+ ELEMENT NO
+ ENTITY NO
+ NOTATION NO
+ LINK
+ SIMPLE NO
+ IMPLICIT NO
+ EXPLICIT NO
+ OTHER
+ CONCUR NO
+ SUBDOC NO
+ FORMAL NO
+ URN NO
+ KEEPRSRE YES
+ VALIDITY TYPE
+ ENTITIES
+ REF ANY
+ INTEGRAL YES
+ APPINFO NONE
+ SEEALSO "ISO 8879:1986//NOTATION
+ Extensible Markup Language (XML) 1.0//EN"
+>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/README.ch7 b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/README.ch7
new file mode 100644
index 00000000000..ddbdea5091c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/README.ch7
@@ -0,0 +1,124 @@
+Examples in Chapter 7 of the LaTeX Web Companion
+
+Section 7.3
+===========
+
+To run the examples in this section you have to install nsgmls
+(as for chapter 6) and Megginson's SGMLSpm. You also have to
+set the environment variable SGML_CATALOG_FILES as follows:
+
+Bourne shell
+
+SGML_CATALOG_FILES=catalog.xml
+export SGML_CATALOG_FILES
+
+C shell
+
+setenv SGML_CATALOG_FILES catalog.xml
+
+Then you can type:
+
+nsgmls invitation.xml | perl sgmlspl.pl inv2lat.pl > invitation.tex
+
+Section 7.4
+===========
+
+With similar settings for the environment variable SGML_CATALOG_FILES
+we can generate HTML files using invitation.xml and invitation2.xml.
+
+We type the command (Section 7.4.4)
+
+nsgmls invitation.xml | perl sgmlspl.pl inv1html.pl > invcss.html
+
+and (Section 7.4.5)
+
+nsgmls invitation2.xml | perl sgmlspl.pl inv2html.pl > inv2css.html
+
+Together with the file invit.css, shown in Section 7.4.4, you will
+obtain with a browser, which correctly understands how to include CSS
+files, a view as the one shown in Figure 7.2 (some browsers might need
+you to include the content of invit.css inside a <STYLE> tag pair
+inside the HTML file). Browsers can treat empty lines differently, so
+you might observe more or less white space between paragraphs
+depending on the browser used.
+
+Section 7.5
+===========
+
+To run jade (and DSSSL style-sheets) we need a different catalog
+file, so we redefine SGML_CATALOG_FILES=catalog.dsssl (or the
+equivalent in C-like shells).
+
+Then we run as shown on page 320 (copying element content through)
+
+jade -t xml -d empty.dsl invitation.xml
+
+Then you can run
+
+jade -d invitation.dsl invitation.xml
+
+
+Files in this directory:
+========================
+
+Section 7.3
++++++++++++
+
+invitation.xml XML source introduced in Section 6.4.2.2
+invitation.dtd DTD source introduced in Section 6.4.3
+invitation.tex.save result of Perl run of Section 7.3.2
+invitation.sty package file for invitation examples (Section 7.3.2)
+catalog.xml catalog file for nsgmls to define XML declaration
+
+inv1html.pl Perl file to run example of Section 7.4.4
+inv2lat.pl Perl file to run example of Section 7.3.2
+sgmlspl.pl Perl files distributed with the SGMLSpl package
+skel.pl " "
+SGMLS.pm " "
+SGMLS/Output.pm " "
+SGMLS/Refs.pm " "
+
+Section 7.4
++++++++++++
+
+invitation2.xml XML source introduced in Section 7.4.5
+invitation2.dtd DTD source introduced in Section 7.4.5
+invit.css CSS style sheet introduced in Section 7.4.4
+invcss.html.save result HTML output for Section 7.4.4
+inv2css.html.save result HTML output for Section 7.4.6
+
+Section 7.5
++++++++++++
+
+catalog.dsssl catalog file for jade to define DSSSL style-sheet
+empty.dsl trivial DSSSL style-sheet copying element content
+ through to the output
+invitation.dsl used in Section 7.5.3.1
+invtab1.dsl used in Section 7.5.3.2
+invtab2.dsl used in Section 7.5.3.3
+invhtml.dsl used in Section 7.5.5
+
+Section 7.6
++++++++++++
+
+xslexa1.xsl formatting object example (Section 7.6.1)
+
+empty.xsl trivial XSL style-sheet (Section 7.6.3)
+
+sectionexa.xml example XML source
+sextionexa.xsl ... and XSL style-sheet (Section 7.6.5.7)
+
+writefiles.xml example XML source
+writefile.xsl ... and XSL style-sheet (Section 7.6.8.2)
+
+makesum.xml example XML source
+makesum.xsl ... and XSL style-sheet (Section 7.6.8.2)
+
+invlat1.xsl XSL style-sheet for Section 7.6.9
+invhtml2.xsl " "
+invfo1.xsl XSL style-sheet for Section 7.6.10
+ (was modified to retain August 1998 syntax for
+ fo's since fop is not yet updated)
+
+invfo1.fop intermediate output for fop (contains fo's)
+invfo1.pdf generated PDF output \ No newline at end of file
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS.pm b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS.pm
new file mode 100644
index 00000000000..b29395eed36
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS.pm
@@ -0,0 +1,893 @@
+package SGMLS;
+use Carp;
+
+$version = '$Revision: 1.14 $';
+
+=head1 NAME
+
+SGMLS - class for postprocessing the output from the B<sgmls> and
+B<nsgmls> parsers.
+
+=head1 SYNOPSIS
+
+ use SGMLS;
+
+ my $parse = new SGMLS(STDIN);
+
+ my $event = $parse->next_event;
+ while ($event) {
+
+ SWITCH: {
+
+ ($event->type eq 'start_element') && do {
+ my $element = $event->data; # An object of class SGMLS_Element
+ [[your code for the beginning of an element]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'end_element') && do {
+ my $element = $event->data; # An object of class SGMLS_Element
+ [[your code for the end of an element]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'cdata') && do {
+ my $cdata = $event->data; # A string
+ [[your code for character data]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'sdata') && do {
+ my $sdata = $event->data; # A string
+ [[your code for system data]]
+ last SWITCH;
+ };
+
+ ($event->type eq 're') && do {
+ [[your code for a record end]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'pi') && do {
+ my $pi = $event->data; # A string
+ [[your code for a processing instruction]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'entity') && do {
+ my $entity = $event->data; # An object of class SGMLS_Entity
+ [[your code for an external entity]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'start_subdoc') && do {
+ my $entity = $event->data; # An object of class SGMLS_Entity
+ [[your code for the beginning of a subdoc entity]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'end_subdoc') && do {
+ my $entity = $event->data; # An object of class SGMLS_Entity
+ [[your code for the end of a subdoc entity]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'conforming') && do {
+ [[your code for a conforming document]]
+ last SWITCH;
+ };
+
+ die "Internal error: unknown event type " . $event->type . "\n";
+ }
+
+ $event = $parse->next_event;
+ }
+
+=head1 DESCRIPTION
+
+The B<SGMLS> package consists of several related classes: see
+L<"SGMLS">, L<"SGMLS_Event">, L<"SGMLS_Element">,
+L<"SGMLS_Attribute">, L<"SGMLS_Notation">, and L<"SGMLS_Entity">. All
+of these classes are available when you specify
+
+ use SGMLS;
+
+Generally, the only object which you will create explicitly will
+belong to the C<SGMLS> class; all of the others will then be created
+automatically for you over the course of the parse. Much fuller
+documentation is available in the C<.sgml> files in the C<DOC/>
+directory of the C<SGMLS.pm> distribution.
+
+=head2 The C<SGMLS> class
+
+This class holds a single parse. When you create an instance of it,
+you specify a file handle as an argument (if you are reading the
+output of B<sgmls> or B<nsgmls> from a pipe, the file handle will
+ordinarily be C<STDIN>):
+
+ my $parse = new SGMLS(STDIN);
+
+The most important method for this class is C<next_event>, which reads
+and returns the next major event from the input stream. It is
+important to note that the C<SGMLS> class deals with most B<ESIS>
+events itself: attributes and entity definitions, for example, are
+collected and stored automatically and invisibly to the user. The
+following list contains all of the methods for the C<SGMLS> class:
+
+=item C<next_event()>: Return an C<SGMLS_Event> object containing the
+next major event from the SGML parse.
+
+=item C<element()>: Return an C<SGMLS_Element> object containing the
+current element in the document.
+
+=item C<file()>: Return a string containing the name of the current
+SGML source file (this will work only if the C<-l> option was given to
+B<sgmls> or B<nsgmls>).
+
+=item C<line()>: Return a string containing the current line number
+from the source file (this will work only if the C<-l> option was
+given to B<sgmls> or B<nsgmls>).
+
+=item C<appinfo()>: Return a string containing the C<APPINFO>
+parameter (if any) from the SGML declaration.
+
+=item C<notation(NNAME)>: Return an C<SGMLS_Notation> object
+representing the notation named C<NNAME>. With newer versions of
+B<nsgmls>, all notations are available; otherwise, only the notations
+which are actually used will be available.
+
+=item C<entity(ENAME)>: Return an C<SGMLS_Entity> object representing
+the entity named C<ENAME>. With newer versions of B<nsgmls>, all
+entities are available; otherwise, only external data entities and
+internal entities used as attribute values will be available.
+
+=item C<ext()>: Return a reference to an associative array for
+user-defined extensions.
+
+
+=head2 The C<SGMLS_Event> class
+
+This class holds a single major event, as generated by the
+C<next_event> method in the C<SGMLS> class. It uses the following
+methods:
+
+=item C<type()>: Return a string describing the type of event:
+"start_element", "end_element", "cdata", "sdata", "re", "pi",
+"entity", "start_subdoc", "end_subdoc", and "conforming". See
+L<"SYNOPSIS">, above, for the values associated with each of these.
+
+=item C<data()>: Return the data associated with the current event (if
+any). For "start_element" and "end_element", returns an
+C<SGMLS_ELement> object; for "entity", "start_subdoc", and
+"end_subdoc", returns an C<SGMLS_Entity> object; for "cdata", "sdata",
+and "pi", returns a string; and for "re" and "conforming", returns the
+empty string. See L<"SYNOPSIS">, above, for an example of this
+method's use.
+
+=item C<key()>: Return a string key to the event, such as an element
+or entity name (otherwise, the same as C<data()>).
+
+=item C<file()>: Return the current file name, as in the C<SGMLS>
+class.
+
+=item C<line()>: Return the current line number, as in the C<SGMLS>
+class.
+
+=item C<element()>: Return the current element, as in the C<SGMLS>
+class.
+
+=item C<parse()>: Return the C<SGMLS> object which generated the
+event.
+
+=item C<entity(ENAME)>: Look up an entity, as in the C<SGMLS> class.
+
+=item C<notation(ENAME)>: Look up a notation, as in the C<SGMLS>
+class.
+
+=item C<ext()>: Return a reference to an associative array for
+user-defined extensions.
+
+
+=head2 The C<SGMLS_Element> class
+
+This class is used for elements, and contains all associated
+information (such as the element's attributes). It recognises the
+following methods:
+
+=item C<name()>: Return a string containing the name, or Generic
+Identifier, of the element, in upper case.
+
+=item C<parent()>: Return the C<SGMLS_Element> object for the
+element's parent (if any).
+
+=item C<parse()>: Return the C<SGMLS> object for the current parse.
+
+=item C<attributes()>: Return a reference to an associative array of
+attribute names and C<SGMLS_Attribute> structures. Attribute names
+will be all in upper case.
+
+=item C<attribute_names()>: Return an array of strings containing the
+names of all attributes defined for the current element, in upper
+case.
+
+=item C<attribute(ANAME)>: Return the C<SGMLS_Attribute> structure for
+the attribute C<ANAME>.
+
+=item C<set_attribute(ATTRIB)>: Add the C<SGMLS_Attribute> object
+C<ATTRIB> to the current element, replacing any other attribute
+structure with the same name.
+
+=item C<in(GI)>: Return C<true> (ie. 1) if the string C<GI> is the
+name of the current element's parent, or C<false> (ie. 0) if it is
+not.
+
+=item C<within(GI)>: Return C<true> (ie. 1) if the string C<GI> is the
+name of any of the ancestors of the current element, or C<false>
+(ie. 0) if it is not.
+
+=item C<ext()>: Return a reference to an associative array for
+user-defined extensions.
+
+
+=head2 The C<SGMLS_Attribute> class
+
+Each instance of an attribute for each C<SGMLS_Element> is an object
+belonging to this class, which recognises the following methods:
+
+=item C<name()>: Return a string containing the name of the current
+attribute, all in upper case.
+
+=item C<type()>: Return a string containing the type of the current
+attribute, all in upper case. Available types are "IMPLIED", "CDATA",
+"NOTATION", "ENTITY", and "TOKEN".
+
+=item C<value()>: Return the value of the current attribute, if any.
+This will be an empty string if the type is "IMPLIED", a string of
+some sort if the type is "CDATA" or "TOKEN" (if it is "TOKEN", you may
+want to split the string into a series of separate tokens), an
+C<SGMLS_Notation> object if the type is "NOTATION", or an
+C<SGMLS_Entity> object if the type is "ENTITY". Note that if the
+value is "CDATA", it will I<not> have escape sequences for 8-bit
+characters, record ends, or SDATA processed -- that will be your
+responsibility.
+
+=item C<is_implied()>: Return C<true> (ie. 1) if the value of the
+attribute is implied, or C<false> (ie. 0) if it is specified in the
+document.
+
+=item C<set_type(TYPE)>: Change the type of the attribute to the
+string C<TYPE> (which should be all in upper case). Available types
+are "IMPLIED", "CDATA", "NOTATION", "ENTITY", and "TOKEN".
+
+=item C<set_value(VALUE)>: Change the value of the attribute to
+C<VALUE>, which may be a string, an C<SGMLS_Entity> object, or an
+C<SGMLS_Notation> subject, depending on the attribute's type.
+
+=item C<ext()>: Return a reference to an associative array available
+for user-defined extensions.
+
+
+=head2 The C<SGMLS_Notation> class
+
+All declared notations appear as objects belonging to this class,
+which recognises the following methods:
+
+=item C<name()>: Return a string containing the name of the notation.
+
+=item C<sysid()>: Return a string containing the system identifier of
+the notation, if any.
+
+=item C<pubid()>: Return a string containing the public identifier of
+the notation, if any.
+
+=item C<ext()>: Return a reference to an associative array available
+for user-defined extensions.
+
+
+=head2 The C<SGMLS_Entity> class
+
+All declared entities appear as objects belonging to this class, which
+recognises the following methods:
+
+=item C<name()>: Return a string containing the name of the entity, in
+mixed case.
+
+=item C<type()>: Return a string containing the type of the entity, in
+upper case. Available types are "CDATA", "SDATA", "NDATA" (external
+entities only), "SUBDOC", "PI" (newer versions of B<nsgmls> only), or
+"TEXT" (newer versions of B<nsgmls> only).
+
+=item C<value()>: Return a string containing the value of the entity,
+if it is internal.
+
+=item C<sysid()>: Return a string containing the system identifier of
+the entity (if any), if it is external.
+
+=item C<pubid()>: Return a string containing the public identifier of
+the entity (if any), if it is external.
+
+=item C<filenames()>: Return an array of strings containing any file
+names generated from the identifiers, if the entity is external.
+
+=item C<notation()>: Return the C<SGMLS_Notation> object associated
+with the entity, if it is external.
+
+=item C<data_attributes()>: Return a reference to an associative array
+of data attribute names (in upper case) and the associated
+C<SGMLS_Attribute> objects for the current entity.
+
+=item C<data_attribute_names()>: Return an array of data attribute
+names (in upper case) for the current entity.
+
+=item C<data_attribute(ANAME)>: Return the C<SGMLS_Attribute> object
+for the data attribute named C<ANAME> for the current entity.
+
+=item C<set_data_attribute(ATTRIB)>: Add the C<SGMLS_Attribute> object
+C<ATTRIB> to the current entity, replacing any other data attribute
+with the same name.
+
+=item C<ext()>: Return a reference to an associative array for
+user-defined extensions.
+
+
+=head1 AUTHOR AND COPYRIGHT
+
+Copyright 1994 and 1995 by David Megginson,
+C<dmeggins@aix1.uottawa.ca>. Distributed under the terms of the Gnu
+General Public License (version 2, 1991) -- see the file C<COPYING>
+which is included in the B<SGMLS.pm> distribution.
+
+
+=head1 SEE ALSO:
+
+L<SGMLS::Output> and L<SGMLS::Refs>.
+
+=cut
+
+#
+# Data class for a single SGMLS ESIS output event. The object will
+# keep information about its own current element and, if available,
+# the source file and line where the event appeared.
+#
+# Event types are as follow:
+# Event Data
+# -------------------------------------------------------
+# 'start_element' SGMLS_Element
+# 'end_element' SGMLS_Element
+# 'cdata' string
+# 'sdata' string
+# 're' [none]
+# 'pi' string
+# 'entity' SGMLS_Entity
+# 'start_subdoc' SGMLS_Entity
+# 'end_subdoc' SGMLS_Entity
+# 'conforming' [none]
+#
+package SGMLS_Event;
+use Carp;
+ # Constructor.
+sub new {
+ my ($class,$type,$data,$parse) = @_;
+ return bless [$type,
+ $data,
+ $parse->file,
+ $parse->line,
+ $parse->element,
+ $parse,
+ {}
+ ];
+}
+ # Accessors.
+sub type { return $_[0]->[0]; }
+sub data { return $_[0]->[1]; }
+sub file { return $_[0]->[2]; }
+sub line { return $_[0]->[3]; }
+sub element { return $_[0]->[4]; }
+sub parse { return $_[0]->[5]; }
+sub ext { return $_[0]->[6]; }
+ # Generate a key for the event.
+sub key {
+ my $self = shift;
+ if (ref($self->data) eq SGMLS_Element ||
+ ref($self->data) eq SGMLS_Entity) {
+ return $self->data->name;
+ } else {
+ return $self->data;
+ }
+}
+ # Look up an entity in the parse.
+sub entity {
+ my ($self,$ename) = (@_);
+ return $self->parse->entity($ename);
+}
+ # Look up a notation in the parse.
+sub notation {
+ my ($self,$nname) = (@_);
+ return $self->parse->notation($nname);
+}
+
+
+#
+# Data class for a single SGML attribute. The object will know its
+# type, and will keep a value unless the type is 'IMPLIED', in which
+# case no meaningful value is available.
+#
+# Attribute types are as follow:
+# Type Value
+# ---------------------------------------
+# IMPLIED [none]
+# CDATA string
+# NOTATION SGMLS_Notation
+# ENTITY SGMLS_Entity
+# TOKEN string
+#
+package SGMLS_Attribute;
+use Carp;
+ # Constructor.
+sub new {
+ my ($class,$name,$type,$value) = @_;
+ return bless [$name,$type,$value,{}];
+}
+ # Accessors.
+sub name { return $_[0]->[0]; }
+sub type { return $_[0]->[1]; }
+sub value { return $_[0]->[2]; }
+sub ext { return $_[0]->[3]; }
+ # Return 1 if the value is implied.
+sub is_implied {
+ my $self = shift;
+ return ($self->type eq 'IMPLIED');
+}
+ # Set the attribute's type.
+sub set_type {
+ my ($self,$type) = @_;
+ $self->[1] = $type;
+}
+
+ # Set the attribute's value.
+sub set_value {
+ my ($self,$value) = @_;
+ $self->[2] = $value;
+}
+
+
+#
+# Data class for a single element of an SGML document. The object will not
+# know about its children (data or other elements), but it keeps track of its
+# parent and its attributes.
+#
+package SGMLS_Element;
+use Carp;
+ # Constructor.
+sub new {
+ my ($class,$name,$parent,$attributes,$parse) = @_;
+ return bless [$name,$parent,$attributes,$parse,{}];
+}
+ # Accessors.
+sub name { return $_[0]->[0]; }
+sub parent { return $_[0]->[1]; }
+sub parse { return $_[0]->[3]; }
+sub ext { return $_[0]->[4]; }
+
+ # Return the associative array of
+ # attributes, parsing it the first
+ # time through.
+sub attributes {
+ my $self = shift;
+ if (ref($self->[2]) eq 'ARRAY') {
+ my $new = {};
+ foreach (@{$self->[2]}) {
+ /^(\S+) (IMPLIED|CDATA|NOTATION|ENTITY|TOKEN)( (.*))?$/
+ || croak "Bad attribute event data: $_";
+ my ($name,$type,$value) = ($1,$2,$4);
+ if ($type eq 'NOTATION') {
+ $value = $self->parse->notation($value);
+ } elsif ($type eq 'ENTITY') {
+ $value = $self->parse->entity($value);
+ }
+ $new->{$name} =
+ new SGMLS_Attribute($name,$type,$value);
+ }
+ $self->[2] = $new;
+ }
+ return $self->[2];
+}
+ # Return a list of attribute names.
+sub attribute_names {
+ my $self = shift;
+ return keys(%{$self->attributes});
+}
+ # Find an attribute by name.
+sub attribute {
+ my ($self,$aname) = @_;
+ return $self->attributes->{$aname};
+}
+ # Add a new attribute.
+sub set_attribute {
+ my ($self,$attribute) = @_;
+ $self->attributes->{$attribute->name} = $attribute;
+}
+ # Check parent by name.
+sub in {
+ my ($self,$name) = @_;
+ if ($self->parent && $self->parent->name eq $name) {
+ return $self->parent;
+ } else {
+ return '';
+ }
+}
+ # Check ancestors by name.
+sub within {
+ my ($self,$name) = @_;
+ for ($self = $self->parent; $self; $self = $self->parent) {
+ return $self if ($self->name eq $name);
+ }
+ return '';
+}
+
+
+#
+# Data class for an SGML notation. The only information available
+# will be the name, the sysid, and the pubid -- the rest is up to the
+# processing application.
+#
+package SGMLS_Notation;
+use Carp;
+ # Constructor.
+sub new {
+ my ($class,$name,$sysid,$pubid) = @_;
+ return bless [$name,$sysid,$pubid,{}];
+}
+ # Accessors.
+sub name { return $_[0]->[0]; }
+sub sysid { return $_[0]->[1]; }
+sub pubid { return $_[0]->[2]; }
+sub ext { return $_[0]->[3]; }
+
+#
+# Data class for a single SGML entity. All entities will have a name
+# and a type. Internal entities will be of type CDATA or SDATA only,
+# and will have a value rather than a notation and sysid/pubid. External
+# CDATA, NDATA, and SDATA entities will always have notations attached,
+# and SUBDOC entities are always external (and will be parsed by SGMLS).
+#
+# Entity types are as follow:
+# Type Internal External
+# -----------------------------------------------------------
+# CDATA x x
+# NDATA x
+# SDATA x x
+# SUBDOC x
+# (newer versions of NSGMLS only:)
+# PI x
+# TEXT x x
+#
+package SGMLS_Entity;
+use Carp;
+ # Constructor.
+sub new {
+ my ($class,$name,$type,$value,$sysid,$pubid,$filenames,$notation) = @_;
+ return bless [$name,$type,$value,{},$sysid,$pubid,$filenames,$notation,{}];
+}
+ # Accessors.
+sub name { return $_[0]->[0]; }
+sub type { return $_[0]->[1]; }
+sub value { return $_[0]->[2]; }
+sub data_attributes { return $_[0]->[3]; }
+sub sysid { return $_[0]->[4]; }
+sub pubid { return $_[0]->[5]; }
+sub filenames { return $_[0]->[6]; }
+sub notation { return $_[0]->[7]; }
+sub ext { return $_[0]->[8]; }
+ # Return a list of data-attribute names.
+sub data_attribute_names {
+ my $self = shift;
+ return keys(%{$self->data_attributes});
+}
+ # Find a data attribute by name.
+sub data_attribute {
+ my ($self,$aname) = @_;
+ return $self->data_attributes->{$aname};
+}
+ # Add a new data attribute.
+sub set_data_attribute {
+ my ($self,$data_attribute) = @_;
+ $self->data_attributes()->{$data_attribute->name} = $data_attribute;
+}
+
+
+
+#
+# Data class for a single SGMLS parse. The constructor takes a single
+# argument, a file handle from which the SGMLS ESIS events will be read
+# (it may be a pipe, a fifo, a file, a socket, etc.). It is essential
+# that no two SGMLS objects have the same handle.
+#
+package SGMLS;
+ # Constructor.
+sub new {
+ my ($class,$handle) = @_;
+
+ # Force unqualified filehandles into caller's package
+ my ($package) = caller;
+ $handle =~ s/^[^':]+$/$package\:\:$&/;
+
+ return bless {
+ 'handle' => $handle,
+ 'event_stack' => [],
+ 'current_element' => '',
+ 'current_attributes' => [],
+ 'current_entities' => {},
+ 'entity_stack' => [],
+ 'current_notations' => {},
+ 'notation_stack' => [],
+ 'current_sysid' => '',
+ 'current_pubid' => '',
+ 'current_filenames' => [],
+ 'current_file' => '',
+ 'current_line' => '',
+ 'appinfo' => '',
+ 'ext' => {}
+ };
+}
+ # Accessors.
+sub element { return $_[0]->{'current_element'}; }
+sub file { return $_[0]->{'current_file'}; }
+sub line { return $_[0]->{'current_line'}; }
+sub appinfo { return $_[0]->{'appinfo'}; }
+sub ext { return $_[0]->{'ext'}; }
+
+ # Given its name, look up a notation.
+sub notation {
+ my ($self,$nname) = @_;
+ return $self->{'current_notations'}->{$nname};
+}
+ # Given its name, look up an entity.
+sub entity {
+ my ($self,$ename) = @_;
+ return $self->{'current_entities'}->{$ename};
+}
+
+ # Return the next SGMLS_Event, or ''
+ # if the document has finished.
+sub next_event {
+ my $self = shift;
+ my $handle = $self->{'handle'};
+
+ # If there are any queued up events,
+ # grab them first.
+ if ($#{$self->{event_stack}} >= 0) {
+ return pop @{$self->{event_stack}};
+ }
+
+ dispatch: while (!eof($handle)) {
+
+ my $c = getc($handle);
+ my $data = <$handle>;
+ chop $data;
+
+ ($c eq '(') && do { # start an element
+ $self->{'current_element'} =
+ new SGMLS_Element($data,
+ $self->{'current_element'},
+ $self->{'current_attributes'},
+ $self);
+ $self->{'current_attributes'} = [];
+ return new SGMLS_Event('start_element',
+ $self->{'current_element'},
+ $self);
+ };
+
+ ($c eq ')') && do { # end an element
+ my $old = $self->{'current_element'};
+ $self->{'current_element'} = $self->{'current_element'}->parent;
+ return new SGMLS_Event('end_element',$old,$self);
+ };
+
+ ($c eq '-') && do { # some data
+ my $sdata_flag = 0;
+ my $out = '';
+ while ($data =~ /\\(\\|n|\||[0-7]{1,3})/) {
+ $out .= $`;
+ $data = $';
+ # beginning or end of SDATA
+ if ($1 eq '|') {
+ if ("$out" ne '') {
+ unshift(@{$self->{'event_stack'}},
+ new SGMLS_Event($sdata_flag?'sdata':'cdata',
+ $out,
+ $self));
+ $out = '';
+ }
+ $sdata_flag = !$sdata_flag;
+ # record end
+ } elsif ($1 eq 'n') {
+ if ("$out" ne '') {
+ unshift(@{$self->{'event_stack'}},
+ new SGMLS_Event($sdata_flag?'sdata':'cdata',
+ $out,
+ $self));
+ $out = '';
+ }
+ unshift(@{$self->{'event_stack'}},
+ new SGMLS_Event('re','',$self));
+ } elsif ($1 eq '\\') {
+ $out .= '\\';
+ } else {
+ $out .= chr(oct($1));
+ }
+ }
+ $out .= $data;
+ if ("$out" ne '') {
+ unshift(@{$self->{'event_stack'}},
+ new SGMLS_Event($sdata_flag?'sdata':'cdata',
+ $out,
+ $self));
+ }
+ return $self->next_event;
+ };
+
+ ($c eq '&') && do { # external entity reference
+ return new SGMLS_Event('entity',
+ ($self->{'current_entities'}->{$data}
+ || croak "Unknown external entity: $data\n"),
+ $self);
+ };
+
+ ($c eq '?') && do { # processing instruction
+ return new SGMLS_Event('pi',
+ $data,
+ $self);
+ };
+
+ ($c eq 'A') && do { # attribute declaration
+ # (will parse only on demand)
+ push @{$self->{'current_attributes'}}, $data;
+ next dispatch;
+ };
+
+ ($c eq 'a') && do { # link attribute declaration
+ # NOT YET IMPLEMENTED!
+ next dispatch;
+ };
+
+ ($c eq 'D') && do { # data attribute declaration
+ $data =~ /^(\S+) (\S+) (\S+)( (.*))?$/
+ || croak "Bad data-attribute event data: $data";
+ my ($ename,$aname,$type,$value) = ($1,$2,$3,$5);
+ my $entity = $self->{'current_entities'}->{$ename};
+ my $attribute = new SGMLS_Attribute($aname,$type,$value);
+ $entity->set_data_attribute($attribute);
+ next dispatch;
+ };
+
+ ($c eq 'N') && do { # notation declaration
+ $self->{'current_notations'}->{$data} =
+ new SGMLS_Notation($data,
+ $self->{'current_sysid'},
+ $self->{'current_pubid'});
+ $self->{'current_sysid'} = '';
+ $self->{'current_pubid'} = '';
+ next dispatch;
+ };
+
+ ($c eq 'E') && do { # external entity declaration
+ $data =~ /^(\S+) (\S+) (\S+)$/
+ || croak "Bad external entity event data: $data";
+ my ($name,$type,$nname) = ($1,$2,$3);
+ my $notation = $self->{'current_notations'}->{$nname} if $nname;
+ $self->{'current_entities'}->{$name} =
+ new SGMLS_Entity($name,
+ $type,
+ '',
+ $self->{'current_sysid'},
+ $self->{'current_pubid'},
+ $self->{'current_filenames'},
+ $notation);
+ $self->{'current_sysid'} = '';
+ $self->{'current_pubid'} = '';
+ $self->{'current_filenames'} = [];
+ next dispatch;
+ };
+
+ ($c eq 'I') && do { # internal entity declaration
+ $data =~ /^(\S+) (\S+) (.*)$/
+ || croak "Bad external entity event data: $data";
+ my ($name,$type,$value) = ($1,$2,$3);
+ $self->{'current_entities'}->{$name} =
+ new SGMLS_Entity($name, $type, $value);
+ next dispatch;
+ };
+
+ ($c eq 'T') && do { # external text entity declaration
+ $self->{'current_entities'}->{$data} =
+ new SGMLS_Entity($data,
+ 'TEXT',
+ '',
+ $self->{'current_sysid'},
+ $self->{'current_pubid'},
+ $self->{'current_filenames'},
+ '');
+ $self->{'current_sysid'} = '';
+ $self->{'current_pubid'} = '';
+ $self->{'current_filenames'} = [];
+ next dispatch;
+ };
+
+ ($c eq 'S') && do { # subdocument entity declaration
+ $self->{'current_entities'}->{$data} =
+ new SGMLS_Entity($data,
+ 'SUBDOC',
+ '',
+ $self->{'current_sysid'},
+ $self->{'current_pubid'},
+ $self->{'current_filenames'},
+ '');
+ $self->{'current_sysid'} = '';
+ $self->{'current_pubid'} = '';
+ $self->{'current_filenames'} = [];
+ next dispatch;
+ };
+
+ ($c eq 's') && do { # system id
+ $self->{'current_sysid'} = $data;
+ next dispatch;
+ };
+
+ ($c eq 'p') && do { # public id
+ $self->{'current_pubid'} = $data;
+ next dispatch;
+ };
+
+ ($c eq 'f') && do { # generated filename
+ push @{$self->{'current_filenames'}}, $data;
+ next dispatch;
+ };
+
+ ($c eq '{') && do { # begin subdocument entity
+ my $subdoc = ($self->{'current_entities'}->{$data}||
+ croak "Unknown SUBDOC entity $data\n");
+ push @{$self->{'notation_stack'}}, $self->{'current_notations'};
+ push @{$self->{'entity_stack'}}, $self->{'current_entities'};
+ $self->{'current_notations'} = {};
+ $self->{'current_entities'} = {};
+ return new SGMLS_Event('start_subdoc',
+ $subdoc,
+ $self);
+ };
+
+ ($c eq '}') && do { # end subdocument entity
+ $self->{'current_notations'} = pop @{$self->{'notation_stack'}};
+ $self->{'current_entities'} = pop @{$self->{'entity_stack'}};
+ return new SGMLS_Event('end_subdoc',
+ ($self->{'current_entities'}->{$data} ||
+ croak "Unknown SUBDOC entity $data\n"),
+ $self);
+ };
+
+ ($c eq 'L') && do { # line number (and file name)
+ $data =~ /^(\d+)( (.*))?$/;
+ $self->{'current_line'} = $1;
+ $self->{'current_file'} = $3 if $3;
+ next dispatch;
+ };
+
+ ($c eq '#') && do { # APPINFO parameter
+ $self->{'appinfo'} = $data;
+ next dispatch;
+ };
+
+ ($c eq 'C') && do { # document is conforming
+ return new SGMLS_Event('conforming','',$self);
+ };
+ }
+ return '';
+}
+
+1;
+
+########################################################################
+# Local Variables:
+# mode: perl
+# End:
+########################################################################
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/Output.pm b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/Output.pm
new file mode 100644
index 00000000000..4758bfa80fd
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/Output.pm
@@ -0,0 +1,225 @@
+package SGMLS::Output;
+use Carp;
+
+use Exporter;
+@ISA = Exporter;
+@EXPORT = qw(output push_output pop_output);
+
+$version = '$Id: Output.pm,v 1.6 1995/12/05 12:21:51 david Exp $';
+
+=head1 NAME
+
+SGMLS::Output - Stack-based Output Procedures
+
+=head1 SYNOPSIS
+
+ use SGMLS::Output;
+
+To print a string to the current output destination:
+
+ output($data);
+
+To push a new output level to the filehandle DATA:
+
+ push_output('handle',DATA);
+
+To push a new output level to the file "foo.data" (which will be
+opened and closed automatically):
+
+ push_output('file','foo.data');
+
+To push a new output level to a pipe to the shell command "sort":
+
+ push_output('pipe','sort');
+
+To push a new output level I<appending> to the file "foo.data":
+
+ push_output('append','foo.data');
+
+To push a new output level to an empty string:
+
+ push_output('string');
+
+To push a new output level appending to the string "David is ":
+
+ push_output('string',"David is ");
+
+To push a new output level to The Great Beyond:
+
+ push_output('nul');
+
+To revert to the previous output level:
+
+ pop_output();
+
+To revert to the previous output level, returning the contents of an
+output string:
+
+ $data = pop_output();
+
+=head1 DESCRIPTION
+
+This library allows redirectable, stack-based output to files, pipes,
+handles, strings, or nul. It is especially useful for packages like
+L<SGMLS>, since handlers for individual B<SGML> elements can
+temporarily change and restore the default output destination. It is
+also particularly useful for capturing the contents of an element (and
+its sub-elements) in a string.
+
+Example:
+
+ sgmls('<title>', sub{ push_output('string'); });
+ sgmls('</title>', sub{ $title = pop_output(); });
+
+In between, anything sent to B<output> (such as CDATA) will be
+accumulated in the string returned from B<pop_output()>.
+
+Example:
+
+ sgmls('<tei.header>', sub { push_output('nul'); });
+ sgmls('</tei.header>', sub { pop_output(); });
+
+All output will be ignored until the header has finished.
+
+
+=head1 AUTHOR AND COPYRIGHT
+
+Copyright 1994 and 1995 by David Megginson,
+C<dmeggins@aix1.uottawa.ca>. Distributed under the terms of the Gnu
+General Public License (version 2, 1991) -- see the file C<COPYING>
+which is included in the B<SGMLS.pm> distribution.
+
+
+=head1 SEE ALSO:
+
+L<SGMLS>.
+
+=cut
+
+#
+# Anonymous subroutines for handling different types of references.
+#
+$output_handle_sub = sub {
+ print $current_output_data @_;
+};
+
+$output_file_sub = sub {
+ print $current_output_data @_;
+};
+
+$output_string_sub = sub {
+ $current_output_data .= shift;
+ foreach (@_) {
+ $current_output_data .= $, . $_;
+ }
+ $current_output_data .= $\;
+};
+
+$output_nul_sub = sub {};
+
+#
+# Status variables
+#
+$current_output_type = 'handle';
+$current_output_data = STDOUT;
+$current_output_sub = $output_handle_sub;
+@output_stack = qw();
+
+#
+# Externally-visible functions
+#
+
+ # Send data to the output.
+sub output {
+ &{$current_output_sub}(@_);
+}
+
+ # Push a new output destination.
+sub push_output {
+ my ($type,$data) = @_;
+ push @output_stack, [$current_output_type,$current_output_data,
+ $current_output_sub];
+ SWITCH: {
+ $type eq 'handle' && do {
+ # Force unqualified filehandles into caller's package
+ my ($package) = caller;
+ $data =~ s/^[^':]+$/$package\:\:$&/;
+
+ $current_output_sub = $output_handle_sub;
+ $current_output_type = 'handle';
+ $current_output_data = $data;
+ last SWITCH;
+ };
+ $type eq 'file' && do {
+ $current_output_sub = $output_file_sub;
+ my $handle = new_handle();
+ open($handle,">$data") || croak "Cannot create file $data.\n";
+ $current_output_type = 'file';
+ $current_output_data = $handle;
+ last SWITCH;
+ };
+ $type eq 'pipe' && do {
+ $current_output_sub = $output_file_sub;
+ my $handle = new_handle();
+ open($handle,"|$data") || croak "Cannot open pipe to $data.\n";
+ $current_output_type = 'file';
+ $current_output_data = $handle;
+ last SWITCH;
+ };
+ $type eq 'append' && do {
+ $current_output_sub = $output_file_sub;
+ my $handle = new_handle();
+ open($handle,">>$data") || croak "Cannot append to file $data.\n";
+ $current_output_type = 'file';
+ $current_output_data = $handle;
+ last SWITCH;
+ };
+ $type eq 'string' && do {
+ $current_output_sub = $output_string_sub;
+ $current_output_type = 'string';
+ $current_output_data = $data;
+ last SWITCH;
+ };
+ $type eq 'nul' && do {
+ $current_output_sub = $output_nul_sub;
+ $current_output_type = 'nul';
+ $current_output_data = '';
+ last SWITCH;
+ };
+ croak "Unknown output type: $type.\n";
+ }
+}
+
+ # Pop the current output destination.
+sub pop_output {
+ my ($old_type,$old_data) = ($current_output_type,$current_output_data);
+ ($current_output_type,$current_output_data,$current_output_sub) =
+ @{pop @output_stack};
+ SWITCH: {
+ $old_type eq 'handle' && do {
+ return $old_data;
+ };
+ $old_type eq 'file' && do {
+ close($old_data);
+ return '';
+ };
+ $old_type eq 'string' && do {
+ return $old_data;
+ };
+ $old_type eq 'nul' && do {
+ return '';
+ };
+ croak "Unknown output type: $type.\n";
+ }
+}
+
+#
+# Local Utility functions.
+#
+$new_handle_counter = 1;
+
+sub new_handle {
+ return "IOHandle" . $new_handle_counter++;
+}
+
+1;
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/Refs.pm b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/Refs.pm
new file mode 100644
index 00000000000..3e3f563770c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/Refs.pm
@@ -0,0 +1,216 @@
+package SGMLS::Refs;
+
+use Carp;
+
+$version = '$Id: Refs.pm,v 1.5 1995/12/03 21:28:36 david Exp $';
+
+=head1 NAME
+
+SGMLS::Refs
+
+=head1 SYNOPSIS
+
+ use SGMLS::Refs;
+
+To create a new reference-manager object using the file "foo.refs":
+
+ my $refs = new SGMLS::Refs("foo.refs");
+
+To create a new reference-manager object using the file "foo.refs" and
+logging changes to the file "foo.log":
+
+ my $refs = new SGMLS::Refs("foo.refs","foo.log");
+
+To record a reference:
+
+ $refs->put("document title",$title);
+
+To retrieve a reference:
+
+ $title = $refs->get("document title");
+
+To return the number of references changed since the last run:
+
+ $num = $refs->changed;
+
+To print a LaTeX-like warning if any references have changed:
+
+ $refs->warn;
+
+=head1 DESCRIPTION
+
+This library can be used together with the B<SGMLS> package to keep
+track of forward references from one run to another, like the B<LaTeX>
+C<.aux> files. Each reference manager is an object which reads and
+then rewrites a file of perl source, with the file name provided by
+the caller.
+
+Example:
+
+ # Start up the reference manager before the parse.
+ sgml('start', sub { $refs = new SGMLS::Refs("foo.refs"); });
+
+ # Warn about any changed references at the end.
+ sgml('end', sub { $refs->warn; });
+
+ # Look up the title from the last parse, if available.
+ sgml('<div>', sub {
+ my $element = shift;
+ my $id = $element->attribute(ID)->value;
+ my $title = $refs->get("title:$id") || "[no title available]";
+
+ $current_div_id = $id;
+
+ output "\\section{$title}\n\n";
+ });
+
+
+ # Save the title for the next parse.
+ sgml('<head>', sub { push_output('string'); });
+ sgml('</head>', sub {
+ my $title = pop_output();
+ my $id = $current_div_id;
+
+ $refs->put("title:$id",$title);
+ });
+
+
+=head1 AUTHOR AND COPYRIGHT
+
+Copyright 1994 and 1995 by David Megginson,
+C<dmeggins@aix1.uottawa.ca>. Distributed under the terms of the Gnu
+General Public License (version 2, 1991) -- see the file C<COPYING>
+which is included in the B<SGMLS.pm> distribution.
+
+
+=head1 SEE ALSO:
+
+L<SGMLS>, L<SGMLS::Output>.
+
+=cut
+
+#
+# Create a new instance of a reference manager. The first argument is
+# the filename for the database, and the second (if present) is a
+# filename for logging changes.
+#
+sub new {
+ my ($class,$filename,$logname) = (@_);
+ my $self = {};
+ my $handle = generate_handle();
+ my $loghandle = generate_handle() if $logname;
+ my $oldRS = $/; # Save old record separator.
+
+ # Read the current contents of the reference file (if any).
+ if (open($handle,"<$filename")) {
+ $/ = 0777;
+ $self->{'refs'} = eval <$handle> || {};
+ close $handle;
+ } else {
+ $self->{'refs'} = {};
+ }
+
+ # Open the reference file.
+ open($handle,">$filename") || croak $@;
+
+ # Open the log file, if any.
+ if ($logname) {
+ open($loghandle,">$logname") || croak $@;
+ }
+
+ # Note pertinent information.
+ $self->{'change_count'} = 0;
+ $self->{'handle'} = $handle;
+ $self->{'loghandle'} = $loghandle;
+ $self->{'filename'} = $filename;
+ $self->{'logname'} = $logname;
+
+ $/ = $oldRS; # Restore old record separator.
+ return bless $self;
+}
+
+#
+# Set a reference's value. If the value is unchanged, don't do anything;
+# otherwise, note the change by counting it and (optionally) logging it
+# to the file handle provided when the object was created.
+#
+sub put {
+ my ($self,$key,$value) = (@_);
+ my $loghandle = $self->{'loghandle'};
+ my $oldvalue = $self->{'refs'}->{$key};
+
+ if ($oldvalue ne $value) {
+ $self->{'change_count'}++;
+ if ($loghandle) {
+ print $loghandle "\"$key\" changed from " .
+
+ "\"$oldvalue\" to \"$value\".\n";
+ }
+ $self->{'refs'}->{$key} = $value;
+ }
+
+ return $oldvalue;
+}
+
+#
+# Grab the value of a reference.
+#
+sub get {
+ my ($self,$key) = (@_);
+
+ return $self->{'refs'}->{$key};
+}
+
+#
+# Return the number of changed references.
+#
+sub changed {
+ my $self = shift;
+ return $self->{'changed_count'};
+}
+
+#
+# Print a warning if any references have
+# changed (a la LaTeX -- so that the user knows that another pass is
+# necessary). Return 1 if a warning has been printed, or 0 if it
+# was unnecessary.
+#
+sub warn {
+ my $self = shift;
+ my $count = $self->{'change_count'};
+ my $filename = $self->{'filename'};
+ my $plural = "references have";
+
+ $plural = "reference has" if $count == 1;
+ if ($count > 0) {
+ warn "SGMLS::Refs ($filename): $count $plural changed.\n";
+ return 1;
+ }
+ return 0;
+}
+
+sub DESTROY {
+ my $self = shift;
+ my $handle = $self->{'handle'};
+
+ close $self->{'loghandle'};
+
+ print $handle "{\n";
+ foreach $key (keys %{$self->{'refs'}}) {
+ my $value = $self->{'refs'}->{$key};
+ $key =~ s/\\/\\\\/g;
+ $key =~ s/'/\\'/g;
+ $value =~ s/\\/\\\\/g;
+ $value =~ s/'/\\'/g;
+ print $handle " '$key' => '$value',\n";
+ }
+ print $handle " '' => ''\n}\n";
+}
+
+$handle_counter = 1;
+sub generate_handle {
+ return "Handle" . $handle_counter++;
+}
+
+1;
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/SGMLS.pm b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/SGMLS.pm
new file mode 100644
index 00000000000..b29395eed36
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/SGMLS.pm
@@ -0,0 +1,893 @@
+package SGMLS;
+use Carp;
+
+$version = '$Revision: 1.14 $';
+
+=head1 NAME
+
+SGMLS - class for postprocessing the output from the B<sgmls> and
+B<nsgmls> parsers.
+
+=head1 SYNOPSIS
+
+ use SGMLS;
+
+ my $parse = new SGMLS(STDIN);
+
+ my $event = $parse->next_event;
+ while ($event) {
+
+ SWITCH: {
+
+ ($event->type eq 'start_element') && do {
+ my $element = $event->data; # An object of class SGMLS_Element
+ [[your code for the beginning of an element]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'end_element') && do {
+ my $element = $event->data; # An object of class SGMLS_Element
+ [[your code for the end of an element]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'cdata') && do {
+ my $cdata = $event->data; # A string
+ [[your code for character data]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'sdata') && do {
+ my $sdata = $event->data; # A string
+ [[your code for system data]]
+ last SWITCH;
+ };
+
+ ($event->type eq 're') && do {
+ [[your code for a record end]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'pi') && do {
+ my $pi = $event->data; # A string
+ [[your code for a processing instruction]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'entity') && do {
+ my $entity = $event->data; # An object of class SGMLS_Entity
+ [[your code for an external entity]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'start_subdoc') && do {
+ my $entity = $event->data; # An object of class SGMLS_Entity
+ [[your code for the beginning of a subdoc entity]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'end_subdoc') && do {
+ my $entity = $event->data; # An object of class SGMLS_Entity
+ [[your code for the end of a subdoc entity]]
+ last SWITCH;
+ };
+
+ ($event->type eq 'conforming') && do {
+ [[your code for a conforming document]]
+ last SWITCH;
+ };
+
+ die "Internal error: unknown event type " . $event->type . "\n";
+ }
+
+ $event = $parse->next_event;
+ }
+
+=head1 DESCRIPTION
+
+The B<SGMLS> package consists of several related classes: see
+L<"SGMLS">, L<"SGMLS_Event">, L<"SGMLS_Element">,
+L<"SGMLS_Attribute">, L<"SGMLS_Notation">, and L<"SGMLS_Entity">. All
+of these classes are available when you specify
+
+ use SGMLS;
+
+Generally, the only object which you will create explicitly will
+belong to the C<SGMLS> class; all of the others will then be created
+automatically for you over the course of the parse. Much fuller
+documentation is available in the C<.sgml> files in the C<DOC/>
+directory of the C<SGMLS.pm> distribution.
+
+=head2 The C<SGMLS> class
+
+This class holds a single parse. When you create an instance of it,
+you specify a file handle as an argument (if you are reading the
+output of B<sgmls> or B<nsgmls> from a pipe, the file handle will
+ordinarily be C<STDIN>):
+
+ my $parse = new SGMLS(STDIN);
+
+The most important method for this class is C<next_event>, which reads
+and returns the next major event from the input stream. It is
+important to note that the C<SGMLS> class deals with most B<ESIS>
+events itself: attributes and entity definitions, for example, are
+collected and stored automatically and invisibly to the user. The
+following list contains all of the methods for the C<SGMLS> class:
+
+=item C<next_event()>: Return an C<SGMLS_Event> object containing the
+next major event from the SGML parse.
+
+=item C<element()>: Return an C<SGMLS_Element> object containing the
+current element in the document.
+
+=item C<file()>: Return a string containing the name of the current
+SGML source file (this will work only if the C<-l> option was given to
+B<sgmls> or B<nsgmls>).
+
+=item C<line()>: Return a string containing the current line number
+from the source file (this will work only if the C<-l> option was
+given to B<sgmls> or B<nsgmls>).
+
+=item C<appinfo()>: Return a string containing the C<APPINFO>
+parameter (if any) from the SGML declaration.
+
+=item C<notation(NNAME)>: Return an C<SGMLS_Notation> object
+representing the notation named C<NNAME>. With newer versions of
+B<nsgmls>, all notations are available; otherwise, only the notations
+which are actually used will be available.
+
+=item C<entity(ENAME)>: Return an C<SGMLS_Entity> object representing
+the entity named C<ENAME>. With newer versions of B<nsgmls>, all
+entities are available; otherwise, only external data entities and
+internal entities used as attribute values will be available.
+
+=item C<ext()>: Return a reference to an associative array for
+user-defined extensions.
+
+
+=head2 The C<SGMLS_Event> class
+
+This class holds a single major event, as generated by the
+C<next_event> method in the C<SGMLS> class. It uses the following
+methods:
+
+=item C<type()>: Return a string describing the type of event:
+"start_element", "end_element", "cdata", "sdata", "re", "pi",
+"entity", "start_subdoc", "end_subdoc", and "conforming". See
+L<"SYNOPSIS">, above, for the values associated with each of these.
+
+=item C<data()>: Return the data associated with the current event (if
+any). For "start_element" and "end_element", returns an
+C<SGMLS_ELement> object; for "entity", "start_subdoc", and
+"end_subdoc", returns an C<SGMLS_Entity> object; for "cdata", "sdata",
+and "pi", returns a string; and for "re" and "conforming", returns the
+empty string. See L<"SYNOPSIS">, above, for an example of this
+method's use.
+
+=item C<key()>: Return a string key to the event, such as an element
+or entity name (otherwise, the same as C<data()>).
+
+=item C<file()>: Return the current file name, as in the C<SGMLS>
+class.
+
+=item C<line()>: Return the current line number, as in the C<SGMLS>
+class.
+
+=item C<element()>: Return the current element, as in the C<SGMLS>
+class.
+
+=item C<parse()>: Return the C<SGMLS> object which generated the
+event.
+
+=item C<entity(ENAME)>: Look up an entity, as in the C<SGMLS> class.
+
+=item C<notation(ENAME)>: Look up a notation, as in the C<SGMLS>
+class.
+
+=item C<ext()>: Return a reference to an associative array for
+user-defined extensions.
+
+
+=head2 The C<SGMLS_Element> class
+
+This class is used for elements, and contains all associated
+information (such as the element's attributes). It recognises the
+following methods:
+
+=item C<name()>: Return a string containing the name, or Generic
+Identifier, of the element, in upper case.
+
+=item C<parent()>: Return the C<SGMLS_Element> object for the
+element's parent (if any).
+
+=item C<parse()>: Return the C<SGMLS> object for the current parse.
+
+=item C<attributes()>: Return a reference to an associative array of
+attribute names and C<SGMLS_Attribute> structures. Attribute names
+will be all in upper case.
+
+=item C<attribute_names()>: Return an array of strings containing the
+names of all attributes defined for the current element, in upper
+case.
+
+=item C<attribute(ANAME)>: Return the C<SGMLS_Attribute> structure for
+the attribute C<ANAME>.
+
+=item C<set_attribute(ATTRIB)>: Add the C<SGMLS_Attribute> object
+C<ATTRIB> to the current element, replacing any other attribute
+structure with the same name.
+
+=item C<in(GI)>: Return C<true> (ie. 1) if the string C<GI> is the
+name of the current element's parent, or C<false> (ie. 0) if it is
+not.
+
+=item C<within(GI)>: Return C<true> (ie. 1) if the string C<GI> is the
+name of any of the ancestors of the current element, or C<false>
+(ie. 0) if it is not.
+
+=item C<ext()>: Return a reference to an associative array for
+user-defined extensions.
+
+
+=head2 The C<SGMLS_Attribute> class
+
+Each instance of an attribute for each C<SGMLS_Element> is an object
+belonging to this class, which recognises the following methods:
+
+=item C<name()>: Return a string containing the name of the current
+attribute, all in upper case.
+
+=item C<type()>: Return a string containing the type of the current
+attribute, all in upper case. Available types are "IMPLIED", "CDATA",
+"NOTATION", "ENTITY", and "TOKEN".
+
+=item C<value()>: Return the value of the current attribute, if any.
+This will be an empty string if the type is "IMPLIED", a string of
+some sort if the type is "CDATA" or "TOKEN" (if it is "TOKEN", you may
+want to split the string into a series of separate tokens), an
+C<SGMLS_Notation> object if the type is "NOTATION", or an
+C<SGMLS_Entity> object if the type is "ENTITY". Note that if the
+value is "CDATA", it will I<not> have escape sequences for 8-bit
+characters, record ends, or SDATA processed -- that will be your
+responsibility.
+
+=item C<is_implied()>: Return C<true> (ie. 1) if the value of the
+attribute is implied, or C<false> (ie. 0) if it is specified in the
+document.
+
+=item C<set_type(TYPE)>: Change the type of the attribute to the
+string C<TYPE> (which should be all in upper case). Available types
+are "IMPLIED", "CDATA", "NOTATION", "ENTITY", and "TOKEN".
+
+=item C<set_value(VALUE)>: Change the value of the attribute to
+C<VALUE>, which may be a string, an C<SGMLS_Entity> object, or an
+C<SGMLS_Notation> subject, depending on the attribute's type.
+
+=item C<ext()>: Return a reference to an associative array available
+for user-defined extensions.
+
+
+=head2 The C<SGMLS_Notation> class
+
+All declared notations appear as objects belonging to this class,
+which recognises the following methods:
+
+=item C<name()>: Return a string containing the name of the notation.
+
+=item C<sysid()>: Return a string containing the system identifier of
+the notation, if any.
+
+=item C<pubid()>: Return a string containing the public identifier of
+the notation, if any.
+
+=item C<ext()>: Return a reference to an associative array available
+for user-defined extensions.
+
+
+=head2 The C<SGMLS_Entity> class
+
+All declared entities appear as objects belonging to this class, which
+recognises the following methods:
+
+=item C<name()>: Return a string containing the name of the entity, in
+mixed case.
+
+=item C<type()>: Return a string containing the type of the entity, in
+upper case. Available types are "CDATA", "SDATA", "NDATA" (external
+entities only), "SUBDOC", "PI" (newer versions of B<nsgmls> only), or
+"TEXT" (newer versions of B<nsgmls> only).
+
+=item C<value()>: Return a string containing the value of the entity,
+if it is internal.
+
+=item C<sysid()>: Return a string containing the system identifier of
+the entity (if any), if it is external.
+
+=item C<pubid()>: Return a string containing the public identifier of
+the entity (if any), if it is external.
+
+=item C<filenames()>: Return an array of strings containing any file
+names generated from the identifiers, if the entity is external.
+
+=item C<notation()>: Return the C<SGMLS_Notation> object associated
+with the entity, if it is external.
+
+=item C<data_attributes()>: Return a reference to an associative array
+of data attribute names (in upper case) and the associated
+C<SGMLS_Attribute> objects for the current entity.
+
+=item C<data_attribute_names()>: Return an array of data attribute
+names (in upper case) for the current entity.
+
+=item C<data_attribute(ANAME)>: Return the C<SGMLS_Attribute> object
+for the data attribute named C<ANAME> for the current entity.
+
+=item C<set_data_attribute(ATTRIB)>: Add the C<SGMLS_Attribute> object
+C<ATTRIB> to the current entity, replacing any other data attribute
+with the same name.
+
+=item C<ext()>: Return a reference to an associative array for
+user-defined extensions.
+
+
+=head1 AUTHOR AND COPYRIGHT
+
+Copyright 1994 and 1995 by David Megginson,
+C<dmeggins@aix1.uottawa.ca>. Distributed under the terms of the Gnu
+General Public License (version 2, 1991) -- see the file C<COPYING>
+which is included in the B<SGMLS.pm> distribution.
+
+
+=head1 SEE ALSO:
+
+L<SGMLS::Output> and L<SGMLS::Refs>.
+
+=cut
+
+#
+# Data class for a single SGMLS ESIS output event. The object will
+# keep information about its own current element and, if available,
+# the source file and line where the event appeared.
+#
+# Event types are as follow:
+# Event Data
+# -------------------------------------------------------
+# 'start_element' SGMLS_Element
+# 'end_element' SGMLS_Element
+# 'cdata' string
+# 'sdata' string
+# 're' [none]
+# 'pi' string
+# 'entity' SGMLS_Entity
+# 'start_subdoc' SGMLS_Entity
+# 'end_subdoc' SGMLS_Entity
+# 'conforming' [none]
+#
+package SGMLS_Event;
+use Carp;
+ # Constructor.
+sub new {
+ my ($class,$type,$data,$parse) = @_;
+ return bless [$type,
+ $data,
+ $parse->file,
+ $parse->line,
+ $parse->element,
+ $parse,
+ {}
+ ];
+}
+ # Accessors.
+sub type { return $_[0]->[0]; }
+sub data { return $_[0]->[1]; }
+sub file { return $_[0]->[2]; }
+sub line { return $_[0]->[3]; }
+sub element { return $_[0]->[4]; }
+sub parse { return $_[0]->[5]; }
+sub ext { return $_[0]->[6]; }
+ # Generate a key for the event.
+sub key {
+ my $self = shift;
+ if (ref($self->data) eq SGMLS_Element ||
+ ref($self->data) eq SGMLS_Entity) {
+ return $self->data->name;
+ } else {
+ return $self->data;
+ }
+}
+ # Look up an entity in the parse.
+sub entity {
+ my ($self,$ename) = (@_);
+ return $self->parse->entity($ename);
+}
+ # Look up a notation in the parse.
+sub notation {
+ my ($self,$nname) = (@_);
+ return $self->parse->notation($nname);
+}
+
+
+#
+# Data class for a single SGML attribute. The object will know its
+# type, and will keep a value unless the type is 'IMPLIED', in which
+# case no meaningful value is available.
+#
+# Attribute types are as follow:
+# Type Value
+# ---------------------------------------
+# IMPLIED [none]
+# CDATA string
+# NOTATION SGMLS_Notation
+# ENTITY SGMLS_Entity
+# TOKEN string
+#
+package SGMLS_Attribute;
+use Carp;
+ # Constructor.
+sub new {
+ my ($class,$name,$type,$value) = @_;
+ return bless [$name,$type,$value,{}];
+}
+ # Accessors.
+sub name { return $_[0]->[0]; }
+sub type { return $_[0]->[1]; }
+sub value { return $_[0]->[2]; }
+sub ext { return $_[0]->[3]; }
+ # Return 1 if the value is implied.
+sub is_implied {
+ my $self = shift;
+ return ($self->type eq 'IMPLIED');
+}
+ # Set the attribute's type.
+sub set_type {
+ my ($self,$type) = @_;
+ $self->[1] = $type;
+}
+
+ # Set the attribute's value.
+sub set_value {
+ my ($self,$value) = @_;
+ $self->[2] = $value;
+}
+
+
+#
+# Data class for a single element of an SGML document. The object will not
+# know about its children (data or other elements), but it keeps track of its
+# parent and its attributes.
+#
+package SGMLS_Element;
+use Carp;
+ # Constructor.
+sub new {
+ my ($class,$name,$parent,$attributes,$parse) = @_;
+ return bless [$name,$parent,$attributes,$parse,{}];
+}
+ # Accessors.
+sub name { return $_[0]->[0]; }
+sub parent { return $_[0]->[1]; }
+sub parse { return $_[0]->[3]; }
+sub ext { return $_[0]->[4]; }
+
+ # Return the associative array of
+ # attributes, parsing it the first
+ # time through.
+sub attributes {
+ my $self = shift;
+ if (ref($self->[2]) eq 'ARRAY') {
+ my $new = {};
+ foreach (@{$self->[2]}) {
+ /^(\S+) (IMPLIED|CDATA|NOTATION|ENTITY|TOKEN)( (.*))?$/
+ || croak "Bad attribute event data: $_";
+ my ($name,$type,$value) = ($1,$2,$4);
+ if ($type eq 'NOTATION') {
+ $value = $self->parse->notation($value);
+ } elsif ($type eq 'ENTITY') {
+ $value = $self->parse->entity($value);
+ }
+ $new->{$name} =
+ new SGMLS_Attribute($name,$type,$value);
+ }
+ $self->[2] = $new;
+ }
+ return $self->[2];
+}
+ # Return a list of attribute names.
+sub attribute_names {
+ my $self = shift;
+ return keys(%{$self->attributes});
+}
+ # Find an attribute by name.
+sub attribute {
+ my ($self,$aname) = @_;
+ return $self->attributes->{$aname};
+}
+ # Add a new attribute.
+sub set_attribute {
+ my ($self,$attribute) = @_;
+ $self->attributes->{$attribute->name} = $attribute;
+}
+ # Check parent by name.
+sub in {
+ my ($self,$name) = @_;
+ if ($self->parent && $self->parent->name eq $name) {
+ return $self->parent;
+ } else {
+ return '';
+ }
+}
+ # Check ancestors by name.
+sub within {
+ my ($self,$name) = @_;
+ for ($self = $self->parent; $self; $self = $self->parent) {
+ return $self if ($self->name eq $name);
+ }
+ return '';
+}
+
+
+#
+# Data class for an SGML notation. The only information available
+# will be the name, the sysid, and the pubid -- the rest is up to the
+# processing application.
+#
+package SGMLS_Notation;
+use Carp;
+ # Constructor.
+sub new {
+ my ($class,$name,$sysid,$pubid) = @_;
+ return bless [$name,$sysid,$pubid,{}];
+}
+ # Accessors.
+sub name { return $_[0]->[0]; }
+sub sysid { return $_[0]->[1]; }
+sub pubid { return $_[0]->[2]; }
+sub ext { return $_[0]->[3]; }
+
+#
+# Data class for a single SGML entity. All entities will have a name
+# and a type. Internal entities will be of type CDATA or SDATA only,
+# and will have a value rather than a notation and sysid/pubid. External
+# CDATA, NDATA, and SDATA entities will always have notations attached,
+# and SUBDOC entities are always external (and will be parsed by SGMLS).
+#
+# Entity types are as follow:
+# Type Internal External
+# -----------------------------------------------------------
+# CDATA x x
+# NDATA x
+# SDATA x x
+# SUBDOC x
+# (newer versions of NSGMLS only:)
+# PI x
+# TEXT x x
+#
+package SGMLS_Entity;
+use Carp;
+ # Constructor.
+sub new {
+ my ($class,$name,$type,$value,$sysid,$pubid,$filenames,$notation) = @_;
+ return bless [$name,$type,$value,{},$sysid,$pubid,$filenames,$notation,{}];
+}
+ # Accessors.
+sub name { return $_[0]->[0]; }
+sub type { return $_[0]->[1]; }
+sub value { return $_[0]->[2]; }
+sub data_attributes { return $_[0]->[3]; }
+sub sysid { return $_[0]->[4]; }
+sub pubid { return $_[0]->[5]; }
+sub filenames { return $_[0]->[6]; }
+sub notation { return $_[0]->[7]; }
+sub ext { return $_[0]->[8]; }
+ # Return a list of data-attribute names.
+sub data_attribute_names {
+ my $self = shift;
+ return keys(%{$self->data_attributes});
+}
+ # Find a data attribute by name.
+sub data_attribute {
+ my ($self,$aname) = @_;
+ return $self->data_attributes->{$aname};
+}
+ # Add a new data attribute.
+sub set_data_attribute {
+ my ($self,$data_attribute) = @_;
+ $self->data_attributes()->{$data_attribute->name} = $data_attribute;
+}
+
+
+
+#
+# Data class for a single SGMLS parse. The constructor takes a single
+# argument, a file handle from which the SGMLS ESIS events will be read
+# (it may be a pipe, a fifo, a file, a socket, etc.). It is essential
+# that no two SGMLS objects have the same handle.
+#
+package SGMLS;
+ # Constructor.
+sub new {
+ my ($class,$handle) = @_;
+
+ # Force unqualified filehandles into caller's package
+ my ($package) = caller;
+ $handle =~ s/^[^':]+$/$package\:\:$&/;
+
+ return bless {
+ 'handle' => $handle,
+ 'event_stack' => [],
+ 'current_element' => '',
+ 'current_attributes' => [],
+ 'current_entities' => {},
+ 'entity_stack' => [],
+ 'current_notations' => {},
+ 'notation_stack' => [],
+ 'current_sysid' => '',
+ 'current_pubid' => '',
+ 'current_filenames' => [],
+ 'current_file' => '',
+ 'current_line' => '',
+ 'appinfo' => '',
+ 'ext' => {}
+ };
+}
+ # Accessors.
+sub element { return $_[0]->{'current_element'}; }
+sub file { return $_[0]->{'current_file'}; }
+sub line { return $_[0]->{'current_line'}; }
+sub appinfo { return $_[0]->{'appinfo'}; }
+sub ext { return $_[0]->{'ext'}; }
+
+ # Given its name, look up a notation.
+sub notation {
+ my ($self,$nname) = @_;
+ return $self->{'current_notations'}->{$nname};
+}
+ # Given its name, look up an entity.
+sub entity {
+ my ($self,$ename) = @_;
+ return $self->{'current_entities'}->{$ename};
+}
+
+ # Return the next SGMLS_Event, or ''
+ # if the document has finished.
+sub next_event {
+ my $self = shift;
+ my $handle = $self->{'handle'};
+
+ # If there are any queued up events,
+ # grab them first.
+ if ($#{$self->{event_stack}} >= 0) {
+ return pop @{$self->{event_stack}};
+ }
+
+ dispatch: while (!eof($handle)) {
+
+ my $c = getc($handle);
+ my $data = <$handle>;
+ chop $data;
+
+ ($c eq '(') && do { # start an element
+ $self->{'current_element'} =
+ new SGMLS_Element($data,
+ $self->{'current_element'},
+ $self->{'current_attributes'},
+ $self);
+ $self->{'current_attributes'} = [];
+ return new SGMLS_Event('start_element',
+ $self->{'current_element'},
+ $self);
+ };
+
+ ($c eq ')') && do { # end an element
+ my $old = $self->{'current_element'};
+ $self->{'current_element'} = $self->{'current_element'}->parent;
+ return new SGMLS_Event('end_element',$old,$self);
+ };
+
+ ($c eq '-') && do { # some data
+ my $sdata_flag = 0;
+ my $out = '';
+ while ($data =~ /\\(\\|n|\||[0-7]{1,3})/) {
+ $out .= $`;
+ $data = $';
+ # beginning or end of SDATA
+ if ($1 eq '|') {
+ if ("$out" ne '') {
+ unshift(@{$self->{'event_stack'}},
+ new SGMLS_Event($sdata_flag?'sdata':'cdata',
+ $out,
+ $self));
+ $out = '';
+ }
+ $sdata_flag = !$sdata_flag;
+ # record end
+ } elsif ($1 eq 'n') {
+ if ("$out" ne '') {
+ unshift(@{$self->{'event_stack'}},
+ new SGMLS_Event($sdata_flag?'sdata':'cdata',
+ $out,
+ $self));
+ $out = '';
+ }
+ unshift(@{$self->{'event_stack'}},
+ new SGMLS_Event('re','',$self));
+ } elsif ($1 eq '\\') {
+ $out .= '\\';
+ } else {
+ $out .= chr(oct($1));
+ }
+ }
+ $out .= $data;
+ if ("$out" ne '') {
+ unshift(@{$self->{'event_stack'}},
+ new SGMLS_Event($sdata_flag?'sdata':'cdata',
+ $out,
+ $self));
+ }
+ return $self->next_event;
+ };
+
+ ($c eq '&') && do { # external entity reference
+ return new SGMLS_Event('entity',
+ ($self->{'current_entities'}->{$data}
+ || croak "Unknown external entity: $data\n"),
+ $self);
+ };
+
+ ($c eq '?') && do { # processing instruction
+ return new SGMLS_Event('pi',
+ $data,
+ $self);
+ };
+
+ ($c eq 'A') && do { # attribute declaration
+ # (will parse only on demand)
+ push @{$self->{'current_attributes'}}, $data;
+ next dispatch;
+ };
+
+ ($c eq 'a') && do { # link attribute declaration
+ # NOT YET IMPLEMENTED!
+ next dispatch;
+ };
+
+ ($c eq 'D') && do { # data attribute declaration
+ $data =~ /^(\S+) (\S+) (\S+)( (.*))?$/
+ || croak "Bad data-attribute event data: $data";
+ my ($ename,$aname,$type,$value) = ($1,$2,$3,$5);
+ my $entity = $self->{'current_entities'}->{$ename};
+ my $attribute = new SGMLS_Attribute($aname,$type,$value);
+ $entity->set_data_attribute($attribute);
+ next dispatch;
+ };
+
+ ($c eq 'N') && do { # notation declaration
+ $self->{'current_notations'}->{$data} =
+ new SGMLS_Notation($data,
+ $self->{'current_sysid'},
+ $self->{'current_pubid'});
+ $self->{'current_sysid'} = '';
+ $self->{'current_pubid'} = '';
+ next dispatch;
+ };
+
+ ($c eq 'E') && do { # external entity declaration
+ $data =~ /^(\S+) (\S+) (\S+)$/
+ || croak "Bad external entity event data: $data";
+ my ($name,$type,$nname) = ($1,$2,$3);
+ my $notation = $self->{'current_notations'}->{$nname} if $nname;
+ $self->{'current_entities'}->{$name} =
+ new SGMLS_Entity($name,
+ $type,
+ '',
+ $self->{'current_sysid'},
+ $self->{'current_pubid'},
+ $self->{'current_filenames'},
+ $notation);
+ $self->{'current_sysid'} = '';
+ $self->{'current_pubid'} = '';
+ $self->{'current_filenames'} = [];
+ next dispatch;
+ };
+
+ ($c eq 'I') && do { # internal entity declaration
+ $data =~ /^(\S+) (\S+) (.*)$/
+ || croak "Bad external entity event data: $data";
+ my ($name,$type,$value) = ($1,$2,$3);
+ $self->{'current_entities'}->{$name} =
+ new SGMLS_Entity($name, $type, $value);
+ next dispatch;
+ };
+
+ ($c eq 'T') && do { # external text entity declaration
+ $self->{'current_entities'}->{$data} =
+ new SGMLS_Entity($data,
+ 'TEXT',
+ '',
+ $self->{'current_sysid'},
+ $self->{'current_pubid'},
+ $self->{'current_filenames'},
+ '');
+ $self->{'current_sysid'} = '';
+ $self->{'current_pubid'} = '';
+ $self->{'current_filenames'} = [];
+ next dispatch;
+ };
+
+ ($c eq 'S') && do { # subdocument entity declaration
+ $self->{'current_entities'}->{$data} =
+ new SGMLS_Entity($data,
+ 'SUBDOC',
+ '',
+ $self->{'current_sysid'},
+ $self->{'current_pubid'},
+ $self->{'current_filenames'},
+ '');
+ $self->{'current_sysid'} = '';
+ $self->{'current_pubid'} = '';
+ $self->{'current_filenames'} = [];
+ next dispatch;
+ };
+
+ ($c eq 's') && do { # system id
+ $self->{'current_sysid'} = $data;
+ next dispatch;
+ };
+
+ ($c eq 'p') && do { # public id
+ $self->{'current_pubid'} = $data;
+ next dispatch;
+ };
+
+ ($c eq 'f') && do { # generated filename
+ push @{$self->{'current_filenames'}}, $data;
+ next dispatch;
+ };
+
+ ($c eq '{') && do { # begin subdocument entity
+ my $subdoc = ($self->{'current_entities'}->{$data}||
+ croak "Unknown SUBDOC entity $data\n");
+ push @{$self->{'notation_stack'}}, $self->{'current_notations'};
+ push @{$self->{'entity_stack'}}, $self->{'current_entities'};
+ $self->{'current_notations'} = {};
+ $self->{'current_entities'} = {};
+ return new SGMLS_Event('start_subdoc',
+ $subdoc,
+ $self);
+ };
+
+ ($c eq '}') && do { # end subdocument entity
+ $self->{'current_notations'} = pop @{$self->{'notation_stack'}};
+ $self->{'current_entities'} = pop @{$self->{'entity_stack'}};
+ return new SGMLS_Event('end_subdoc',
+ ($self->{'current_entities'}->{$data} ||
+ croak "Unknown SUBDOC entity $data\n"),
+ $self);
+ };
+
+ ($c eq 'L') && do { # line number (and file name)
+ $data =~ /^(\d+)( (.*))?$/;
+ $self->{'current_line'} = $1;
+ $self->{'current_file'} = $3 if $3;
+ next dispatch;
+ };
+
+ ($c eq '#') && do { # APPINFO parameter
+ $self->{'appinfo'} = $data;
+ next dispatch;
+ };
+
+ ($c eq 'C') && do { # document is conforming
+ return new SGMLS_Event('conforming','',$self);
+ };
+ }
+ return '';
+}
+
+1;
+
+########################################################################
+# Local Variables:
+# mode: perl
+# End:
+########################################################################
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog
new file mode 100644
index 00000000000..f2393cb97ad
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog
@@ -0,0 +1,5 @@
+SGMLDECL "xml.dcl"
+PUBLIC "-//W3C//DTD Specification::19971229//EN" "xmlspec.dtd"
+PUBLIC "-//James Clark//DTD DSSSL Flow Object Tree//EN" "fot.dtd"
+PUBLIC "-//James Clark//DTD DSSSL Style-Sheet//EN" "style-sheet.dtd"
+PUBLIC "ISO/IEC 10179:1996//DTD DSSSL Architecture//EN" "dsssl.dtd"
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog.dsssl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog.dsssl
new file mode 100644
index 00000000000..11bc0425afe
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog.dsssl
@@ -0,0 +1,4 @@
+PUBLIC "-//James Clark//DTD DSSSL Flow Object Tree//EN" "fot.dtd"
+PUBLIC "ISO/IEC 10179:1996//DTD DSSSL Architecture//EN" "dsssl.dtd"
+PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" "style-sheet.dtd"
+PUBLIC "-//OpenJade//DTD DSSSL Style Sheet//EN" "style-sheet.dtd"
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog.xml b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog.xml
new file mode 100644
index 00000000000..bd4f2aa939f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog.xml
@@ -0,0 +1,2 @@
+SGMLDECL "xml.dcl"
+PUBLIC "-//W3C//DTD Specification::19971229//EN" "xmlspec.dtd"
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/dsssl.cat b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/dsssl.cat
new file mode 100644
index 00000000000..76a78096b11
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/dsssl.cat
@@ -0,0 +1,3 @@
+PUBLIC "-//James Clark//DTD DSSSL Flow Object Tree//EN" "fot.dtd"
+PUBLIC "ISO/IEC 10179:1996//DTD DSSSL Architecture//EN" "dsssl.dtd"
+PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" "style-sheet.dtd"
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/dsssl.dtd b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/dsssl.dtd
new file mode 100644
index 00000000000..50f66baa676
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/dsssl.dtd
@@ -0,0 +1,134 @@
+<!-- DSSSL Architectural Forms -->
+
+<!ENTITY % declarations
+ "features | baseset-encoding | literal-described-char | add-name-chars
+ | add-separator-chars | standard-chars | other-chars
+ | combine-char | map-sdata-entity | char-repertoire"
+>
+
+<!element dsssl-specification - O
+ ((%declarations;)*,
+ (style-specification | transformation-specification
+ | external-specification)+)>
+<!attlist dsssl-specification
+ version CDATA #FIXED "ISO/IEC 10179:1996"
+>
+
+<!element transformation-specification - O
+ ((%declarations;)*, transformation-specification-body*)>
+<!attlist transformation-specification
+ id ID #IMPLIED
+ desc CDATA #IMPLIED
+ -- human readable description of specification --
+ partial (partial | complete) complete
+ -- is the specification complete is or is it just a fragment
+ to be used in other specifications? --
+ use -- reftype(transformation-specification|external-specification) --
+ IDREFS #IMPLIED -- Default: none --
+ entities
+ -- entities available to be specified as DTD for validation
+ of result document --
+ ENTITIES #IMPLIED -- Default: none --
+>
+
+<!element style-specification - O
+ ((%declarations;)*, style-specification-body*)>
+<!attlist style-specification
+ id ID #IMPLIED
+ desc CDATA #IMPLIED
+ -- human readable description of specification --
+ partial (partial | complete) complete
+ -- is the specification complete is or is it just a fragment
+ to be used in other specifications? --
+ use -- reftype(style-specification|external-specification) --
+ IDREFS #IMPLIED -- Default: none --
+>
+
+<!-- Assign a local ID to a specification in another document. -->
+<!element external-specification - O EMPTY>
+<!attlist external-specification
+ id ID #REQUIRED
+ document -- document containing spec --
+ ENTITY #REQUIRED
+ specid -- id of spec in document --
+ NAME #IMPLIED -- Default: first spec in document --
+>
+
+<!-- Declares features used by specification. -->
+<!element features - O (#PCDATA)
+ -- dlextype(featurename*) -->
+
+<!-- Map character numbers in a base character set to character names;
+not needed when system knows a character set, and all characters
+in character set have universal code. -->
+<!element baseset-encoding - O (#PCDATA)
+ -- dlextype((number, charname)*) -->
+<!attlist baseset-encoding
+ name CDATA #REQUIRED -- public identifier of baseset --
+>
+
+<!-- Map a character described in the SGML declaration with a minimum literal
+to a character name. -->
+<!element literal-described-char - O (#PCDATA)
+ -- dlextype(charname) -->
+<!attlist literal-described-char
+ desc CDATA #REQUIRED -- the literal description --
+>
+
+<!-- Declare additional characters allowed in name within DSSSL notation. -->
+<!element add-name-chars - O (#PCDATA)
+ -- dlextype(charname*) -->
+
+<!-- Declare additional characters allowed as separators within
+DSSSL notation. -->
+<!element add-separator-chars - O (#PCDATA)
+ -- dlextype(charname*) -->
+
+<!-- Define characters associating names with universal codes. -->
+
+<!element standard-chars - O (#PCDATA)
+ -- dlextype((charname, number))*) -->
+
+<!-- Define characters with no universal codes. -->
+
+<!element other-chars - O (#PCDATA)
+ -- dlextype(charname*) -->
+
+<!-- Map an SDATA entity onto a character. -->
+
+<!element map-sdata-entity - O (#PCDATA)
+ -- dlextype(charname) -->
+<!attlist map-sdata-entity
+ name CDATA #IMPLIED -- Default: mapping uses replacement text only --
+ text CDATA #IMPLIED -- Default: mapping uses name only --
+>
+
+<!-- Declare character combining. -->
+
+<!element combine-char - O (#PCDATA)
+ -- dlextype(charname, charname, charname+) -->
+
+<!-- Declare a character repertoire. -->
+<!element char-repertoire - O EMPTY>
+<!attlist char-repertoire
+ name -- public identifier for repertoire --
+ CDATA #REQUIRED
+>
+
+<!element style-specification-body - - CDATA
+ -- content uses notation of DSSSL style language -->
+<!attlist style-specification-body
+ content ENTITY #CONREF -- Default: syntactic content --
+>
+
+<!element transformation-specification-body - - CDATA
+ -- content uses notation of DSSSL transformation language -->
+<!attlist transformation-specification-body
+ content ENTITY #CONREF -- Default: syntactic content --
+>
+
+<!-- This notation is intended for use as the value of the ArcDataF
+ architectural form support attribute. -->
+
+<!NOTATION dsssl-specification PUBLIC
+ "ISO/IEC 10179:1996//NOTATION DSSSL Specification//EN">
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/empty.dsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/empty.dsl
new file mode 100644
index 00000000000..9b49481f1e3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/empty.dsl
@@ -0,0 +1,8 @@
+<!-- empty.dsl -->
+<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN">
+<style-sheet>
+ <style-specification>
+ <style-specification-body>
+ </style-specification-body>
+ </style-specification>
+</style-sheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/empty.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/empty.xsl
new file mode 100644
index 00000000000..b419996c59c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/empty.xsl
@@ -0,0 +1,2 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/emptyexample.xml b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/emptyexample.xml
new file mode 100644
index 00000000000..957a6041065
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/emptyexample.xml
@@ -0,0 +1,15 @@
+<!DOCTYPE emptyexample [
+<!ELEMENT emptyexample (par*)>
+<!ELEMENT par (#PCDATA|image|imref)*>
+<!ELEMENT image EMPTY>
+<!ATTLIST image name ID #IMPLIED
+ address CDATA #REQUIRED>
+<!ELEMENT imref EMPTY>
+<!ATTLIST imref name IDREF #REQUIRED>
+<!ENTITY logo-uri "http://www.ucc.ie/xml/xml.gif">
+]>
+<emptyexample>
+<par>The XML logo is shown in the image <imref name="xml-logo"/>.</par>
+<par>The image shows an alternative syntax for an empty element
+<image name="xml-logo" address="&logo-uri;"></image></par>
+</emptyexample>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/entable-alt.xml b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/entable-alt.xml
new file mode 100644
index 00000000000..a295e611d88
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/entable-alt.xml
@@ -0,0 +1,243 @@
+<?xml version='1.0' encoding="ISO-8859-1"?>
+<countries>
+<country shortname="Afghanistan" fullname="Islamic State of Afghanistan" isocountry="AF" capital="Kabul" citizen="Afghan" adjective="Afghan" currency="afghani" isocurrency="AFA" currensubunit="pul"/>
+<country shortname="Albania" fullname="Republic of Albania" isocountry="AL" capital="Tirana" citizen="Albanian" adjective="Albanian" currency="lek" isocurrency="ALL" currensubunit="quindar (pl.quindarka)"/>
+<country shortname="Algeria" fullname="People's Democratic Republic of Algeria" isocountry="DZ" capital="Algiers" citizen="Algerian" adjective="Algerian" currency="Algerian dinar" isocurrency="DZD" currensubunit="centime"/>
+<country shortname="American Samoa" fullname="Territory of American Samoa" isocountry="AS" capital="Pago Pago" citizen="Samoan" adjective="Samoan" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="Andorra" fullname="Principality of Andorra" isocountry="AD" capital="Andorra la Vella" citizen="Andorran" adjective="Andorran" currency="Spanish peseta; French franc" isocurrency="ESP; FRF" currensubunit="céntimo; centime"/>
+<country shortname="Angola" fullname="Republic of Angola" isocountry="AO" capital="Luanda" citizen="Angolan" adjective="Angolan" currency="readjusted kwanza" isocurrency="AOR" currensubunit="lwei (inv.)"/>
+<country shortname="Anguilla" fullname="Anguilla" isocountry="AI" capital="The Valley" citizen="Anguillan" adjective="Anguillan" currency="Eastern Caribbean dollar" isocurrency="XCD" currensubunit="cent"/>
+<country shortname="Antarctica" fullname="Antarctica" isocountry="AQ" capital="-" citizen="-" adjective="Antarctic" currency="-" isocurrency=" " currensubunit=" "/>
+<country shortname="Antigua and Barbuda" fullname="Antigua and Barbuda" isocountry="AG" capital="St John's" citizen="Antiguan; Barbudian" adjective="Antiguan; Barbudian; of Antigua and Barbuda" currency="Eastern Caribbean dollar" isocurrency="XCD" currensubunit="cent"/>
+<country shortname="Argentina" fullname="Argentine Republic" isocountry="AR" capital="Buenos Aires" citizen="Argentinian" adjective="Argentine" currency="Argentine peso" isocurrency="ARS" currensubunit="centavo"/>
+<country shortname="Armenia" fullname="Republic of Armenia" isocountry="AM" capital="Yerevan" citizen="Armenian" adjective="Armenian" currency="dram (inv.)" isocurrency="AMD" currensubunit="luma"/>
+<country shortname="Aruba" fullname="Aruba" isocountry="AW" capital="Oranjestad" citizen="Aruban" adjective="Aruban" currency="Aruban guilder" isocurrency="AWG" currensubunit="cent"/>
+<country shortname="Australia" fullname="Commonwealth of Australia" isocountry="AU" capital="Canberra" citizen="Australian" adjective="Australian" currency="Australian dollar" isocurrency="AUD" currensubunit="cent"/>
+<country shortname="Austria" fullname="Republic of Austria" isocountry="AT " capital="Vienna" citizen="Austrian" adjective="Austrian" currency="Austrian schilling" isocurrency="ATS" currensubunit="groschen (inv.)"/>
+<country shortname="Azerbaijan" fullname="Azerbaijani Republic" isocountry="AZ" capital="Baku" citizen="Azeri" adjective="Azerbaijani" currency="Azerbaijani manat" isocurrency="AZM" currensubunit="kepik (inv.)"/>
+<country shortname="Bahrain" fullname="State of Bahrain" isocountry="BH" capital="Manama" citizen="Bahraini" adjective="Bahraini" currency="Bahraini dinar" isocurrency="BHD" currensubunit="fils (inv.)"/>
+<country shortname="Bangladesh" fullname="People's Republic of Bangladesh" isocountry="BD" capital="Dhaka" citizen="Bangladeshi" adjective="of Bangladesh" currency="taka (inv.)" isocurrency="BDT" currensubunit="poisha (inv.)"/>
+<country shortname="Barbados" fullname="Barbados" isocountry="BB" capital="Bridgetown" citizen="Barbadian" adjective="Barbadian" currency="Barbados dollar" isocurrency="BBD" currensubunit="cent"/>
+<country shortname="Belarus" fullname="Republic of Belarus" isocountry="BY" capital="Minsk" citizen="Belarusian" adjective="Belarusian" currency="Belarusian rouble" isocurrency="BYB" currensubunit="kopek"/>
+<country shortname="Belgium" fullname="Kingdom of Belgium" isocountry="BE " capital="Brussels" citizen="Belgian" adjective="Belgian" currency="Belgian franc" isocurrency="BEF" currensubunit="centime"/>
+<country shortname="Belize" fullname="Belize" isocountry="BZ" capital="Belmopan" citizen="Belizean" adjective="Belizean" currency="Belize dollar" isocurrency="BZD" currensubunit="cent"/>
+<country shortname="Benin" fullname="Republic of Benin" isocountry="BJ" capital="Porto Novo" citizen="Beninese" adjective="Beninese" currency="CFA franc" isocurrency="XOF" currensubunit="centime"/>
+<country shortname="Bermuda" fullname="Bermuda" isocountry="BM" capital="Hamilton" citizen="Bermudian" adjective="Bermudian" currency="Bermuda dollar" isocurrency="BMD" currensubunit="cent"/>
+<country shortname="Bhutan" fullname="Kingdom of Bhutan" isocountry="BT" capital="Thimphu" citizen="Bhutanese" adjective="Bhutanese" currency="ngultrum (inv.)" isocurrency="BTN" currensubunit="chhetrum (inv.)"/>
+<country shortname="Bolivia" fullname="Republic of Bolivia" isocountry="BO" capital="Sucre" citizen="Bolivian" adjective="Bolivian" currency="boliviano" isocurrency="BOB" currensubunit="centavo"/>
+<country shortname="Bosnia and Herzegovina" fullname="Bosnia and Herzegovina" isocountry="BA" capital="Sarajevo" citizen="Bosnian; Herzegovinian" adjective="Bosnian; Herzegovinian" currency="Bosnian dinar; Bosnian convertible mark" isocurrency="BAM" currensubunit="fening"/>
+<country shortname="Botswana" fullname="Republic of Botswana" isocountry="BW" capital="Gaborone" citizen="Botswanan" adjective="Botswanan; of Botswana" currency="pula (inv.)" isocurrency="BWP" currensubunit="thebe (inv.)"/>
+<country shortname="Bouvet Island" fullname="Bouvet Island" isocountry="BV" capital="-" citizen="-" adjective="of Bouvet Island" currency=" " isocurrency=" " currensubunit=" "/>
+<country shortname="Brazil" fullname="Federative Republic of Brazil" isocountry="BR" capital="Brasilia" citizen="Brazilian" adjective="Brazilian" currency="Brazilian real (pl. reais)" isocurrency="BRL" currensubunit="centavo"/>
+<country shortname="British Indian Ocean Territory" fullname="British Indian Ocean Territory" isocountry="IO" capital="-" citizen="-" adjective="of the British Indian Ocean Territory" currency=" " isocurrency=" " currensubunit=" "/>
+<country shortname="British Virgin Islands" fullname="British Virgin Islands" isocountry="VG" capital="Road Town" citizen="British Virgin Islander; BVIslander" adjective="of the British Virgin Islands" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="Brunei" fullname="Negara Brunei Darussalam" isocountry="BN" capital="Bandar Seri Begawan" citizen="Bruneian" adjective="Bruneian; of Brunei" currency="Brunei dollar" isocurrency="BND" currensubunit="sen (inv.)"/>
+<country shortname="Bulgaria" fullname="Republic of Bulgaria" isocountry="BG" capital="Sofia" citizen="Bulgarian" adjective="Bulgarian" currency="lev (pl. leva)" isocurrency="BGL" currensubunit="stotinka (pl. stotinki)"/>
+<country shortname="Burkina Faso" fullname="Burkina Faso" isocountry="BF" capital="Ouagadougou" citizen="Burkinabe" adjective="Burkinabe; of Burkina Faso" currency="CFA franc" isocurrency="XOF" currensubunit="centime"/>
+<country shortname="Burundi" fullname="Republic of Burundi" isocountry="BI" capital="Bujumbura" citizen="Burundian" adjective="Burundian; of Burundi" currency="Burundi franc" isocurrency="BIF" currensubunit="centime"/>
+<country shortname="Cambodia" fullname="Kingdom of Cambodia" isocountry="KH" capital="Phnom Penh" citizen="Cambodian" adjective="Cambodian" currency="riel" isocurrency="KHR" currensubunit="sen (inv.)"/>
+<country shortname="Cameroon" fullname="Republic of Cameroon" isocountry="CM" capital="Yaoundé" citizen="Cameroonian" adjective="Cameroonian" currency="CFA franc" isocurrency="XAF" currensubunit="centime"/>
+<country shortname="Canada" fullname="Canada" isocountry="CA" capital="Ottawa" citizen="Canadian" adjective="Canadian" currency="Canadian dollar" isocurrency="CAD" currensubunit="cent"/>
+<country shortname="Cape Verde" fullname="Republic of Cape Verde" isocountry="CV" capital="Praia" citizen="Cape Verdean" adjective="Cape Verdean" currency="Cape Verde escudo" isocurrency="CVE" currensubunit="centavo"/>
+<country shortname="Cayman Islands" fullname="Cayman Islands" isocountry="KY" capital="George Town" citizen="Caymanian" adjective="Caymanian; of the Cayman Islands" currency="Cayman Islands dollar" isocurrency="KYD" currensubunit="cent"/>
+<country shortname="Central African Republic" fullname="Central African Republic" isocountry="CF" capital="Bangui" citizen="Central African" adjective="Central African; of the Central African&#10;Republic" currency="CFA franc" isocurrency="XAF" currensubunit="centime"/>
+<country shortname="Chad" fullname="Republic of Chad" isocountry="TD" capital="N'Djamena" citizen="Chadian" adjective="Chadian; of Chad" currency="CFA franc" isocurrency="XAF" currensubunit="centime"/>
+<country shortname="Chile" fullname="Republic of Chile" isocountry="CL" capital="Santiago" citizen="Chilean" adjective="Chilean" currency="Chilean peso" isocurrency="CLP" currensubunit="centavo"/>
+<country shortname="China" fullname="People's Republic of China" isocountry="CN" capital="Beijing" citizen="Chinese" adjective="Chinese" currency="renminbi-yuan (inv.)" isocurrency="CNY" currensubunit="fen (inv.)"/>
+<country shortname="Christmas Island" fullname="Christmas Island Territory" isocountry="CX" capital="Flying Fish Cove" citizen="Christmas Islander" adjective="of Christmas Island" currency="Australian dollar" isocurrency="AUD" currensubunit="cent"/>
+<country shortname="Cocos (Keeling) Islands" fullname="Territory of Cocos (Keeling) Islands" isocountry="CC" capital="Bantam" citizen="Cocos Islander" adjective="of the Cocos (Keeling) Islands" currency="Australian dollar" isocurrency="AUD" currensubunit="cent"/>
+<country shortname="Colombia" fullname="Republic of Colombia" isocountry="CO" capital="Santa Fe de Bogotá" citizen="Colombian" adjective="Colombian" currency="Colombian peso" isocurrency="COP" currensubunit="centavo"/>
+<country shortname="Congo" fullname="Republic of the Congo" isocountry="CG" capital="Brazzaville" citizen="Congolese" adjective="Congolese" currency="CFA franc" isocurrency="XAF" currensubunit="centime"/>
+<country shortname="Cook Islands" fullname="Cook Islands" isocountry="CK" capital="Avarua" citizen="Cook Islander" adjective="of the Cook Islands" currency="New Zealand dollar" isocurrency="NZD" currensubunit="cent"/>
+<country shortname="Costa Rica" fullname="Republic of Costa Rica" isocountry="CR" capital="San José" citizen="Costa Rican" adjective="Costa Rican" currency="Costa Rican colón (pl.colones)" isocurrency="CRC" currensubunit="céntimo"/>
+<country shortname="Côte d'Ivoire" fullname="Republic of Côte d'Ivoire" isocountry="CI" capital="Yamoussoukro" citizen="Ivorian" adjective="Ivorian" currency="CFA franc" isocurrency="XOF" currensubunit="centime"/>
+<country shortname="Croatia" fullname="Republic of Croatia" isocountry="HR" capital="Zagreb" citizen="Croat" adjective="Croatian" currency="kuna (inv.)" isocurrency="HRK" currensubunit="lipa (inv.)"/>
+<country shortname="Cuba" fullname="Republic of Cuba" isocountry="CU" capital="Havana" citizen="Cuban" adjective="Cuban" currency="Cuban peso" isocurrency="CUP" currensubunit="centavo"/>
+<country shortname="Cyprus" fullname="Republic of Cyprus" isocountry="CY" capital="Nicosia" citizen="Cypriot" adjective="Cypriot" currency="Cyprus pound" isocurrency="CYP" currensubunit="mil"/>
+<country shortname="Czech Republic" fullname="Czech Republic" isocountry="CZ" capital="Prague" citizen="Czech" adjective="Czech" currency="Czech koruna (pl.koruny)" isocurrency="CZK" currensubunit="halér (pl. halére)"/>
+<country shortname="Democratic Republic of the Congo" fullname="Democratic Republic of the Congo" isocountry="CD" capital="Kinshasa" citizen="Congolese" adjective="Congolese; of the Democratic Republic of the&#10;Congo" currency="new zaire" isocurrency="CDF" currensubunit="centime"/>
+<country shortname="Denmark" fullname="Kingdom of Denmark" isocountry="DK " capital="Copenhagen" citizen="Dane" adjective="Danish" currency="Danish krone (pl.kroner)&#10;" isocurrency="DKK" currensubunit="øre (inv.)"/>
+<country shortname="Djibouti" fullname="Republic of Djibouti" isocountry="DJ" capital="Djibouti" citizen="Djiboutian" adjective="of Djibouti" currency="Djibouti franc" isocurrency="DJF" currensubunit="centime"/>
+<country shortname="Dominica" fullname="Commonwealth of Dominica" isocountry="DM" capital="Roseau" citizen="Dominican" adjective="of Dominica" currency="Eastern Caribbean dollar" isocurrency="XCD" currensubunit="cent"/>
+<country shortname="Dominican Republic" fullname="Dominican Republic" isocountry="DO" capital="Santo Domingo" citizen="Dominican" adjective="Dominican" currency="Dominican peso" isocurrency="DOP" currensubunit="centavo"/>
+<country shortname="East Timor" fullname="East Timor" isocountry="TP" capital="Dili" citizen="East Timorese" adjective="East Timorese" currency="Indonesian rupiah" isocurrency="IDR" currensubunit="-"/>
+<country shortname="Ecuador" fullname="Republic of Ecuador" isocountry="EC" capital="Quito" citizen="Ecuadorian" adjective="Ecuadorian" currency="sucre" isocurrency="ECS" currensubunit="centavo"/>
+<country shortname="Egypt" fullname="Arab Republic of Egypt" isocountry="EG" capital="Cairo" citizen="Egyptian" adjective="Egyptian" currency="Egyptian pound" isocurrency="EGP" currensubunit="piastre"/>
+<country shortname="El Salvador" fullname="Republic of El Salvador" isocountry="SV" capital="San Salvador" citizen="Salvadorian; Salvadoran" adjective="Salvadorian; Salvadoran" currency="El Salvador colón (pl.colones)" isocurrency="SVC" currensubunit="centavo"/>
+<country shortname="Equatorial Guinea" fullname="Republic of Equatorial Guinea" isocountry="GQ" capital="Malabo" citizen="Equatorial Guinean" adjective="of Equatorial Guinea" currency="CFA franc" isocurrency="XAF" currensubunit="centime"/>
+<country shortname="Eritrea" fullname="State of Eritrea" isocountry="ER" capital="Asmara" citizen="Eritrean" adjective="Eritrean" currency="nakfa (inv.)" isocurrency="ERN" currensubunit="centime"/>
+<country shortname="Estonia" fullname="Republic of Estonia" isocountry="EE" capital="Tallinn" citizen="Estonian" adjective="Estonian" currency="Estonian kroon (pl.krooni)" isocurrency="EEK" currensubunit="sent (pl. senti)"/>
+<country shortname="Ethiopia" fullname="Federal Democratic Republic of Ethiopia" isocountry="ET" capital="Addis Ababa" citizen="Ethiopian" adjective="Ethiopian" currency="Ethiopian birr (inv.)" isocurrency="ETB" currensubunit="cent"/>
+<country shortname="Faeroe Islands" fullname="Faeroe Islands" isocountry="FO" capital="Thorshavn" citizen="Faeroese" adjective="Faeroese" currency="Danish krone (pl.kroner)" isocurrency="DKK" currensubunit="øre (inv.)"/>
+<country shortname="Falkland Islands" fullname="Falkland Islands" isocountry="FK" capital="Stanley" citizen="Falkland Islander" adjective="of the Falkland Islands" currency="Falkland Islands pound" isocurrency="FKP" currensubunit="new penny (pl. pence)"/>
+<country shortname="Fiji" fullname="Republic of Fiji" isocountry="FJ" capital="Suva" citizen="Fijian" adjective="Fijian; of Fiji" currency="Fiji dollar" isocurrency="FJD" currensubunit="cent"/>
+<country shortname="Finland" fullname="Republic of Finland" isocountry="FI " capital="Helsinki" citizen="Finn" adjective="Finnish" currency="Finnish markka (pl.markkaa)" isocurrency="FIM" currensubunit="penni (pl. penniä)"/>
+<country shortname="France" fullname="French Republic" isocountry="FR " capital="Paris" citizen="Frenchman; Frenchwoman" adjective="French" currency="French franc" isocurrency="FRF" currensubunit="centime"/>
+<country shortname="French Guiana" fullname="Department of French Guiana" isocountry="GF" capital="Cayenne" citizen="Guianese" adjective="Guianese" currency="French franc" isocurrency="FRF" currensubunit="centime"/>
+<country shortname="French Polynesia" fullname="Territory of French Polynesia" isocountry="PF" capital="Papeete" citizen="Polynesian" adjective="Polynesian" currency="CFP franc" isocurrency="XPF" currensubunit="centime"/>
+<country shortname="French Southern and Antarctic Lands"
+fullname="Territory of the French Southern and Antarctic&#10;Lands"
+isocountry="TF" capital=" " citizen="-" adjective="of the French Southern and Antarctic Lands" currency="-" isocurrency="-" currensubunit="-"/>
+<country shortname="Gabon" fullname="Gabonese Republic" isocountry="GA" capital="Libreville" citizen="Gabonese" adjective="Gabonese" currency="CFA franc" isocurrency="XAF" currensubunit="centime"/>
+<country shortname="Georgia" fullname="Georgia" isocountry="GE" capital="Tbilisi" citizen="Georgian" adjective="Georgian" currency="lari" isocurrency="GEL" currensubunit="tetri (inv.)"/>
+<country shortname="Germany" fullname="Federal Republic of Germany" isocountry="DE " capital="Berlin" citizen="German" adjective="German" currency="German mark" isocurrency="DEM" currensubunit="pfennig"/>
+<country shortname="Ghana" fullname="Republic of Ghana" isocountry="GH" capital="Accra" citizen="Ghanaian" adjective="Ghanaian" currency="cedi" isocurrency="GHC" currensubunit="pesewa"/>
+<country shortname="Gibraltar" fullname="Gibraltar" isocountry="GI" capital="Gibraltar" citizen="Gibraltarian" adjective="Gibraltarian; of Gibraltar" currency="Gibraltar pound" isocurrency="GIP" currensubunit="penny (pl. pence)"/>
+<country shortname="Greece" fullname="Hellenic Republic" isocountry="GR " capital="Athens" citizen="Greek" adjective="Greek" currency="Greek drachma (pl.drachmae)" isocurrency="GRD" currensubunit="lepton (pl.lepta)"/>
+<country shortname="Greenland" fullname="Greenland" isocountry="GL" capital="Nuuk" citizen="Greenlander" adjective="Greenlandic; of Greenland" currency="Danish krone (pl.kroner)" isocurrency="DKK" currensubunit="øre (inv.)"/>
+<country shortname="Grenada" fullname="Grenada" isocountry="GD" capital="St George's" citizen="Grenadian" adjective="Grenadian" currency="Eastern Caribbean dollar" isocurrency="XCD" currensubunit="cent"/>
+<country shortname="Guadeloupe" fullname="Department of Guadeloupe" isocountry="GP" capital="Basse Terre" citizen="Guadeloupean" adjective="of Guadeloupe; Guadeloupean" currency="French franc" isocurrency="FRF" currensubunit="centime"/>
+<country shortname="Guam" fullname="Territory of Guam" isocountry="GU" capital="Hagåtña" citizen="Guamanian" adjective="Guamanian; of Guam" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="Guatemala" fullname="Republic of Guatemala" isocountry="GT" capital="Guatemala City" citizen="Guatemalan" adjective="Guatemalan" currency="Guatemalan quetzal (pl.quetzales)" isocurrency="GTQ" currensubunit="centavo"/>
+<country shortname="Guinea" fullname="Republic of Guinea" isocountry="GN" capital="Conakry" citizen="Guinean" adjective="Guinean" currency="Guinean franc" isocurrency="GNF" currensubunit="-"/>
+<country shortname="Guinea-Bissau" fullname="Republic of Guinea-Bissau" isocountry="GW" capital="Bissau" citizen="Guinea-Bissau national; Guinean" adjective="of Guinea-Bissau" currency="CFA franc" isocurrency="XOF" currensubunit="centime"/>
+<country shortname="Guyana" fullname="Cooperative Republic of Guyana" isocountry="GY" capital="Georgetown" citizen="Guyanese" adjective="Guyanese" currency="Guyanese dollar" isocurrency="GYD" currensubunit="cent"/>
+<country shortname="Haiti" fullname="Republic of Haiti" isocountry="HT" capital="Port-au-Prince" citizen="Haitian" adjective="Haitian" currency="gourde" isocurrency="HTG" currensubunit="centime"/>
+<country shortname="Heard Island&#10;&#10;and McDonald Islands" fullname="Territory of Heard Island and McDonald&#10;Islands" isocountry="HM" capital="-" citizen="-" adjective="of Heard Island and McDonald Islands" currency=" " isocurrency=" " currensubunit=" "/>
+<country shortname="Honduras" fullname="Republic of Honduras" isocountry="HN" capital="Tegucigalpa" citizen="Honduran" adjective="Honduran" currency="lempira" isocurrency="HNL" currensubunit="centavo"/>
+<country shortname="Hong Kong" fullname="Hong Kong Special Administrative Region (HKSAR)" isocountry="HK" capital="Victoria" citizen="Hong Kong Chinese" adjective="Hong Kong Chinese" currency="Hong Kong dollar" isocurrency="HKD" currensubunit="cent"/>
+<country shortname="Hungary" fullname="Republic of Hungary" isocountry="HU" capital="Budapest" citizen="Hungarian" adjective="Hungarian" currency="forint (inv.)" isocurrency="HUF" currensubunit="fillér (inv.)"/>
+<country shortname="Iceland" fullname="Republic of Iceland" isocountry="IS" capital="Reykjavik" citizen="Icelander" adjective="Icelandic" currency="Icelandic króna (pl.krónur)" isocurrency="ISK" currensubunit="eyrir (pl.aurar)"/>
+<country shortname="India" fullname="Republic of India" isocountry="IN" capital="New Delhi" citizen="Indian" adjective="Indian" currency="Indian rupee" isocurrency="INR" currensubunit="paisa (pl.paise)"/>
+<country shortname="Indonesia" fullname="Republic of Indonesia" isocountry="ID" capital="Jakarta" citizen="Indonesian" adjective="Indonesian" currency="Indonesian rupiah (inv.)" isocurrency="IDR" currensubunit="sen (inv.)"/>
+<country shortname="Iran" fullname="Islamic Republic of Iran" isocountry="IR" capital="Tehran" citizen="Iranian" adjective="Iranian" currency="Iranian rial" isocurrency="IRR" currensubunit="-"/>
+<country shortname="Iraq" fullname="Republic of Iraq" isocountry="IQ" capital="Baghdad" citizen="Iraqi" adjective="Iraqi" currency="Iraqi dinar" isocurrency="IQD" currensubunit="fils (inv.)"/>
+<country shortname="Ireland" fullname="Ireland" isocountry="IE " capital="Dublin" citizen="Irishman; Irishwoman" adjective="Irish" currency="Irish pound" isocurrency="IEP" currensubunit="penny (pl.pence)"/>
+<country shortname="Israel" fullname="State of Israel" isocountry="IL" capital="Jerusalem" citizen="Israeli" adjective="Israeli" currency="new shekel" isocurrency="ILS" currensubunit="agora (pl.agorot)"/>
+<country shortname="Italy" fullname="Italian Republic" isocountry="IT " capital="Rome" citizen="Italian" adjective="Italian" currency="Italian lira (pl. lire)" isocurrency="ITL" currensubunit=" "/>
+<country shortname="Jamaica" fullname="Jamaica" isocountry="JM" capital="Kingston" citizen="Jamaican" adjective="Jamaican" currency="Jamaica dollar" isocurrency="JMD" currensubunit="cent"/>
+<country shortname="Japan" fullname="Japan" isocountry="JP" capital="Tokyo" citizen="Japanese" adjective="Japanese" currency="yen (inv.)" isocurrency="JPY" currensubunit="sen (inv.)"/>
+<country shortname="Jordan" fullname="Hashemite Kingdom of Jordan" isocountry="JO" capital="Amman" citizen="Jordanian" adjective="Jordanian" currency="Jordanian dinar" isocurrency="JOD" currensubunit="fils (inv.)"/>
+<country shortname="Kazakhstan" fullname="Republic of Kazakhstan" isocountry="KZ" capital="Astana" citizen="Kazakh" adjective="Kazakh" currency="tenge (inv.)" isocurrency="KZT" currensubunit="tiyn"/>
+<country shortname="Kenya" fullname="Republic of Kenya" isocountry="KE" capital="Nairobi" citizen="Kenyan" adjective="Kenyan" currency="Kenyan shilling" isocurrency="KES" currensubunit="cent"/>
+<country shortname="Kiribati" fullname="Republic of Kiribati" isocountry="KI" capital="Bairiki" citizen="Kiribatian" adjective="of Kiribati; Kiribatian" currency="Australian dollar" isocurrency="AUD" currensubunit="cent"/>
+<country shortname="Kuwait" fullname="State of Kuwait" isocountry="KW" capital="Kuwait City" citizen="Kuwaiti" adjective="Kuwaiti" currency="Kuwaiti dinar" isocurrency="KWD" currensubunit="fils (inv.)"/>
+<country shortname="Kyrgyzstan" fullname="Kyrgyz Republic" isocountry="KG" capital="Bishkek" citizen="Kyrgyz" adjective="Kyrgyz" currency="som" isocurrency="KGS" currensubunit="tyiyn"/>
+<country shortname="Laos" fullname="Lao People's Democratic Republic" isocountry="LA" capital="Vientiane" citizen="Lao" adjective="Lao" currency="kip (inv.)" isocurrency="LAK" currensubunit="at (inv.)"/>
+<country shortname="Latvia" fullname="Republic of Latvia" isocountry="LV" capital="Riga" citizen="Latvian" adjective="Latvian" currency="lats (pl. lati)" isocurrency="LVL" currensubunit="santims (pl. santimi)"/>
+<country shortname="Lebanon" fullname="Lebanese Republic" isocountry="LB" capital="Beirut" citizen="Lebanese" adjective="Lebanese" currency="Lebanese pound" isocurrency="LBP" currensubunit="piastre"/>
+<country shortname="Lesotho" fullname="Kingdom of Lesotho" isocountry="LS" capital="Maseru" citizen="Basotho" adjective="of Lesotho" currency="loti (pl. maloti)" isocurrency="LSL" currensubunit="sente (pl. lisente)"/>
+<country shortname="Liberia" fullname="Republic of Liberia" isocountry="LR" capital="Monrovia" citizen="Liberian" adjective="Liberian" currency="Liberian dollar" isocurrency="LRD" currensubunit="cent"/>
+<country shortname="Libya" fullname="Socialist People's Libyan Arab Jamahiriya" isocountry="LY" capital="Tripoli" citizen="Libyan" adjective="Libyan" currency="Libyan dinar" isocurrency="LYD" currensubunit="dirham"/>
+<country shortname="Liechtenstein" fullname="Principality of Liechtenstein" isocountry="LI" capital="Vaduz" citizen="Liechtensteiner" adjective="of Liechtenstein" currency="Swiss franc" isocurrency="CHF" currensubunit="centime"/>
+<country shortname="Lithuania" fullname="Republic of Lithuania" isocountry="LT" capital="Vilnius" citizen="Lithuanian" adjective="Lithuanian" currency="litas (pl. litai)" isocurrency="LTL" currensubunit="centas (pl. centai)"/>
+<country shortname="Luxembourg" fullname="Grand Duchy of Luxembourg" isocountry="LU " capital="Luxembourg" citizen="Luxembourger" adjective="Luxembourgish; of Luxembourg" currency="Luxembourg franc" isocurrency="LUF" currensubunit="centime"/>
+<country shortname="Macao" fullname="Macao" isocountry="MO" capital="Macao" citizen="Macanese" adjective="Macanese; of Macao" currency="pataca" isocurrency="MOP" currensubunit="avo"/>
+<country shortname="-" fullname="Former Yugoslav Republic of Macedonia" isocountry="MK" capital="Skopje" citizen="Macedonian" adjective="Macedonian" currency="denar (inv.)" isocurrency="MKD" currensubunit="deni (inv.)"/>
+<country shortname="Madagascar" fullname="Republic of Madagascar" isocountry="MG" capital="Antananarivo" citizen="Malagasy" adjective="Malagasy" currency="Malagasy franc" isocurrency="MGF" currensubunit="centime"/>
+<country shortname="Malawi" fullname="Republic of Malawi" isocountry="MW" capital="Lilongwe" citizen="Malawian" adjective="Malawian" currency="Malawi kwacha (inv.)" isocurrency="MWK" currensubunit="tambala (inv.)"/>
+<country shortname="Malaysia" fullname="Malaysia" isocountry="MY" capital="Kuala Lumpur" citizen="Malaysian" adjective="Malaysian" currency="Malaysian ringgit (inv.)" isocurrency="MYR" currensubunit="sen (inv.)"/>
+<country shortname="Maldives" fullname="Republic of Maldives" isocountry="MV" capital="Malé" citizen="Maldivian" adjective="Maldivian" currency="rufiyaa" isocurrency="MVR" currensubunit="laari (inv.)"/>
+<country shortname="Mali" fullname="Republic of Mali" isocountry="ML" capital="Bamako" citizen="Malian" adjective="Malian" currency="CFA franc" isocurrency="XOF" currensubunit="centime"/>
+<country shortname="Malta" fullname="Republic of Malta" isocountry="MT" capital="Valletta" citizen="Maltese" adjective="Maltese" currency="Maltese lira" isocurrency="MTL" currensubunit="cent"/>
+<country shortname="Marshall Islands" fullname="Republic of the Marshall Islands" isocountry="MH" capital="Majuro" citizen="Marshallese" adjective="Marshallese; of the Marshall Islands" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="Martinique" fullname="Department of Martinique" isocountry="MQ" capital="Fort-de-France" citizen="Martinican" adjective="Martinican; of Martinique" currency="French franc" isocurrency="FRF" currensubunit="centime"/>
+<country shortname="Mauritania" fullname="Islamic Republic of Mauritania" isocountry="MR" capital="Nouakchott" citizen="Mauritanian" adjective="Mauritanian" currency="Mauritanian ouguiya" isocurrency="MRO" currensubunit="khoum"/>
+<country shortname="Mauritius" fullname="Republic of Mauritius" isocountry="MU" capital="Port Louis" citizen="Mauritian" adjective="Mauritian" currency="Mauritian rupee" isocurrency="MUR" currensubunit="cent"/>
+<country shortname="Mayotte" fullname="Territorial collectivity of Mayotte" isocountry="YT" capital="Mamoudzou" citizen="Mahorais" adjective="Mahoran" currency="French franc" isocurrency="FRF" currensubunit="centime"/>
+<country shortname="Mexico" fullname="United Mexican States" isocountry="MX" capital="Mexico City" citizen="Mexican" adjective="Mexican" currency="Mexican peso" isocurrency="MXN" currensubunit="centavo"/>
+<country shortname="Micronesia" fullname="Federated States of Micronesia" isocountry="FM" capital="Palikir" citizen="Micronesian" adjective="of Micronesia" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="Moldova" fullname="Republic of Moldova" isocountry="MD" capital="Chisinau" citizen="Moldovan" adjective="Moldovan" currency="Moldovan leu (pl. lei)" isocurrency="MDL" currensubunit="ban (pl. bani)"/>
+<country shortname="Monaco" fullname="Principality of Monaco" isocountry="MC" capital="Monaco" citizen="Monegasque" adjective="Monegasque" currency="French franc" isocurrency="FRF" currensubunit="centime"/>
+<country shortname="Mongolia" fullname="Mongolia" isocountry="MN" capital="Ulan Bator" citizen="Mongolian" adjective="Mongolian" currency="tugrik" isocurrency="MNT" currensubunit="möngö (inv.)"/>
+<country shortname="Montserrat" fullname="Montserrat" isocountry="MS" capital="Plymouth" citizen="Montserratian" adjective="of Montserrat; Montserratian" currency="Eastern Caribbean dollar" isocurrency="XCD" currensubunit="cent"/>
+<country shortname="Morocco" fullname="Kingdom of Morocco" isocountry="MA" capital="Rabat" citizen="Moroccan" adjective="Moroccan" currency="Moroccan dirham" isocurrency="MAD" currensubunit="centime"/>
+<country shortname="Mozambique" fullname="Republic of Mozambique" isocountry="MZ" capital="Maputo" citizen="Mozambican" adjective="Mozambican" currency="metical (pl. meticais)" isocurrency="MZM" currensubunit="centavo"/>
+<country shortname="Myanmar" fullname="Union of Myanmar" isocountry="MM" capital="Yangon" citizen="Burmese" adjective="Burmese; of Myanmar" currency="kyat" isocurrency="MMK" currensubunit="pya"/>
+<country shortname="Namibia" fullname="Republic of Namibia" isocountry="NA" capital="Windhoek" citizen="Namibian" adjective="Namibian" currency="Namibian dollar" isocurrency="NAD" currensubunit="cent"/>
+<country shortname="Nauru" fullname="Republic of Nauru" isocountry="NR" capital="Yaren" citizen="Nauruan" adjective="Nauruan" currency="Australian dollar" isocurrency="AUD" currensubunit="cent"/>
+<country shortname="Nepal" fullname="Kingdom of Nepal" isocountry="NP" capital="Kathmandu" citizen="Nepalese" adjective="Nepalese" currency="Nepalese rupee" isocurrency="NPR" currensubunit="paisa (inv.)"/>
+<country shortname="Netherlands" fullname="Kingdom of the Netherlands" isocountry="NL " capital="Amsterdam" citizen="Dutchman; Netherlander" adjective="Netherlands; Dutch" currency="Dutch guilder" isocurrency="NLG" currensubunit="cent"/>
+<country shortname="Netherlands Antilles" fullname="Netherlands Antilles" isocountry="AN" capital="Willemstad" citizen="Antillean" adjective="of the Netherlands Antilles" currency="Netherlands Antillean guilder" isocurrency="ANG" currensubunit="cent"/>
+<country shortname="New Caledonia" fullname="Territory of New Caledonia and Dependencies" isocountry="NC" capital="Nouméa" citizen="New Caledonian" adjective="New Caledonian" currency="CFP franc" isocurrency="XPF" currensubunit="centime"/>
+<country shortname="New Zealand" fullname="New Zealand" isocountry="NZ" capital="Wellington" citizen="New Zealander" adjective="of New Zealand" currency="New Zealand dollar" isocurrency="NZD" currensubunit="cent"/>
+<country shortname="Nicaragua" fullname="Republic of Nicaragua" isocountry="NI" capital="Managua" citizen="Nicaraguan" adjective="Nicaraguan" currency="córdoba" isocurrency="NIO" currensubunit="centavo"/>
+<country shortname="Niger" fullname="Republic of Niger" isocountry="NE" capital="Niamey" citizen="Nigerien" adjective="Nigerien; of Niger" currency="CFA franc" isocurrency="XOF" currensubunit="centime"/>
+<country shortname="Nigeria" fullname="Federal Republic of Nigeria" isocountry="NG" capital="Abuja" citizen="Nigerian" adjective="Nigerian" currency="naira (inv.)" isocurrency="NGN" currensubunit="kobo (inv.)"/>
+<country shortname="Niue" fullname="Niue" isocountry="NU" capital="Alofi" citizen="Niuean" adjective="of Niue; Niuean" currency="New Zealand dollar" isocurrency="NZD" currensubunit="cent"/>
+<country shortname="Norfolk Island" fullname="Territory of Norfolk Island" isocountry="NF" capital="Kingston" citizen="Norfolk Islander" adjective="of Norfolk Island" currency="Australian dollar" isocurrency="AUD" currensubunit="cent"/>
+<country shortname="North Korea" fullname="Democratic People's Republic of Korea" isocountry="KP" capital="Pyongyang" citizen="North Korean" adjective="North Korean" currency="North Korean won (inv.)&#10;" isocurrency="KPW" currensubunit="chun (inv.)"/>
+<country shortname="Northern Marianas" fullname="Commonwealth of the Northern Mariana&#10;Islands" isocountry="MP" capital="Saipan" citizen="Northern Mariana Islander" adjective="of the Northern Mariana Islands" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="Norway" fullname="Kingdom of Norway" isocountry="NO" capital="Oslo" citizen="Norwegian" adjective="Norwegian" currency="Norwegian krone (pl.kroner)" isocurrency="NOK" currensubunit="øre (inv.)"/>
+<country shortname="Oman" fullname="Sultanate of Oman" isocountry="OM" capital="Muscat" citizen="Omani" adjective="Omani" currency="Omani rial" isocurrency="OMR" currensubunit="baiza"/>
+<country shortname="Pakistan" fullname="Islamic Republic of Pakistan" isocountry="PK" capital="Islamabad" citizen="Pakistani" adjective="Pakistani; of Pakistan" currency="Pakistani rupee" isocurrency="PKR" currensubunit="paisa"/>
+<country shortname="Palau" fullname="Republic of Palau" isocountry="PW" capital="Koror" citizen="Palauan" adjective="of Palau; Palauan" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="Panama" fullname="Republic of Panama" isocountry="PA" capital="Panama City" citizen="Panamanian" adjective="Panamanian" currency="balboa" isocurrency="PAB" currensubunit="centésimo"/>
+<country shortname="Papua New Guinea" fullname="Independent State of Papua New Guinea" isocountry="PG" capital="Port Moresby" citizen="Papua New Guinean" adjective="of Papua New Guinea" currency="kina (inv.)" isocurrency="PGK" currensubunit="toea (inv.)"/>
+<country shortname="Paraguay" fullname="Republic of Paraguay" isocountry="PY" capital="Asunción" citizen="Paraguayan" adjective="Paraguayan" currency="guaraní (pl.guaraníes)" isocurrency="PYG" currensubunit="céntimo"/>
+<country shortname="Peru" fullname="Republic of Peru" isocountry="PE" capital="Lima" citizen="Peruvian" adjective="Peruvian" currency="new sol" isocurrency="PEN" currensubunit="céntimo"/>
+<country shortname="Philippines" fullname="Republic of the Philippines" isocountry="PH" capital="Manila" citizen="Filipino" adjective="Philippine" currency="Philippine peso" isocurrency="PHP" currensubunit="centavo"/>
+<country shortname="Pitcairn Islands" fullname="Pitcairn Islands" isocountry="PN" capital="Adamstown" citizen="Pitcairner" adjective="Pitcairner; of Pitcairn" currency="New Zealand dollar" isocurrency="NZD" currensubunit="cent"/>
+<country shortname="Poland" fullname="Republic of Poland" isocountry="PL" capital="Warsaw" citizen="Pole" adjective="Polish" currency="zloty" isocurrency="PLN" currensubunit="grosz (pl.groszy)"/>
+<country shortname="Portugal" fullname="Portuguese Republic" isocountry="PT " capital="Lisbon" citizen="Portuguese" adjective="Portuguese" currency="Portuguese escudo" isocurrency="PTE" currensubunit="centavo"/>
+<country shortname="Puerto Rico" fullname="Commonwealth of Puerto Rico" isocountry="PR" capital="San Juan" citizen="Puerto Rican" adjective="Puerto Rican" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="Qatar" fullname="State of Qatar" isocountry="QA" capital="Doha" citizen="Qatari" adjective="Qatari" currency="Qatari riyal" isocurrency="QAR" currensubunit="dirham"/>
+<country shortname="Réunion" fullname="Department of Réunion" isocountry="RE" capital="Saint-Denis" citizen="Reunionese" adjective="of Réunion; Reunionese" currency="French franc" isocurrency="FRF" currensubunit="centime"/>
+<country shortname="Romania" fullname="Romania" isocountry="RO" capital="Bucharest" citizen="Romanian" adjective="Romanian" currency="Romanian leu (pl. lei)" isocurrency="ROL" currensubunit="ban (pl. bani)"/>
+<country shortname="Russia" fullname="Russian Federation" isocountry="RU" capital="Moscow" citizen="Russian" adjective="Russian" currency="new rouble" isocurrency="RUR" currensubunit="kopek"/>
+<country shortname="Rwanda" fullname="Rwandese Republic" isocountry="RW" capital="Kigali" citizen="Rwandan; Rwandese" adjective="Rwandan; Rwandese" currency="Rwandese franc" isocurrency="RWF" currensubunit="centime"/>
+<country shortname="Saint Helena" fullname="Saint Helena and Dependencies" isocountry="SH" capital="Jamestown" citizen="Saint Helenian; Saint" adjective="Saint Helenian; of Saint Helena" currency="Saint Helena pound" isocurrency="SHP" currensubunit="penny (pl.pence)"/>
+<country shortname="Saint Kitts and Nevis" fullname="Federation of Saint Kitts and Nevis" isocountry="KN" capital="Basseterre" citizen="Kittsian; Nevisian" adjective="of Saint Kitts and Nevis" currency="Eastern Caribbean dollar" isocurrency="XCD" currensubunit="cent"/>
+<country shortname="Saint Lucia" fullname="Saint Lucia" isocountry="LC" capital="Castries" citizen="Saint Lucian" adjective="Saint Lucian" currency="Eastern Caribbean dollar" isocurrency="XCD" currensubunit="cent"/>
+<country shortname="Saint Pierre and Miquelon" fullname="Territorial collectivity of Saint Pierre and&#10;Miquelon" isocountry="PM" capital="Saint-Pierre" citizen="St-Pierrais; Miquelonnais" adjective="of Saint Pierre and Miquelon" currency="French franc" isocurrency="FRF" currensubunit="centime"/>
+<country shortname="Saint Vincent and the Grenadines" fullname="Saint Vincent and the Grenadines" isocountry="VC" capital="Kingstown" citizen="Vincentian" adjective="Vincentian; of Saint Vincent and the&#10;Grenadines" currency="Eastern Caribbean dollar" isocurrency="XCD" currensubunit="cent"/>
+<country shortname="Samoa" fullname="Independent State of Samoa" isocountry="WS" capital="Apia" citizen="Samoan" adjective="Samoan" currency="tala (inv.)" isocurrency="WST" currensubunit="sene (inv.)"/>
+<country shortname="San Marino" fullname="Republic of San Marino" isocountry="SM" capital="San Marino" citizen="San Marinese" adjective="of San Marino" currency="Italian lira" isocurrency="ITL" currensubunit=" "/>
+<country shortname="São Tomé and Príncipe" fullname="Democratic Republic of São Tomé and&#10;Príncipe" isocountry="ST" capital="São Tomé" citizen="São Toméan" adjective="of São Tomé and Príncipe; São Toméan" currency="dobra" isocurrency="STD" currensubunit="centavo"/>
+<country shortname="Saudi Arabia" fullname="Kingdom of Saudi Arabia" isocountry="SA" capital="Riyadh" citizen="Saudi Arabian" adjective="Saudi Arabian" currency="Saudi riyal" isocurrency="SAR" currensubunit="halala"/>
+<country shortname="Senegal" fullname="Republic of Senegal" isocountry="SN" capital="Dakar" citizen="Senegalese" adjective="Senegalese" currency="CFA franc" isocurrency="XOF" currensubunit="centime"/>
+<country shortname="Seychelles" fullname="Republic of Seychelles" isocountry="SC" capital="Victoria" citizen="Seychellois" adjective="of Seychelles" currency="Seychelles rupee" isocurrency="SCR" currensubunit="cent"/>
+<country shortname="Sierra Leone" fullname="Republic of Sierra Leone" isocountry="SL" capital="Freetown" citizen="Sierra Leonean" adjective="Sierra Leonean" currency="leone" isocurrency="SLL" currensubunit="cent"/>
+<country shortname="Singapore" fullname="Republic of Singapore" isocountry="SG" capital="Singapore" citizen="Singaporean" adjective="Singaporean" currency="Singapore dollar" isocurrency="SGD" currensubunit="cent"/>
+<country shortname="Slovakia" fullname="Slovak Republic" isocountry="SK" capital="Bratislava" citizen="Slovak" adjective="Slovak" currency="Slovak koruna (pl.koruny)" isocurrency="SKK" currensubunit="halier (pl.haliere)"/>
+<country shortname="Slovenia" fullname="Republic of Slovenia" isocountry="SI" capital="Ljubljana" citizen="Slovene" adjective="Slovene; Slovenian" currency="tolar" isocurrency="SIT" currensubunit="stotin"/>
+<country shortname="Solomon Islands" fullname="Solomon Islands" isocountry="SB" capital="Honiara" citizen="Solomon Islander" adjective="of the Solomon Islands" currency="Solomon Islands dollar" isocurrency="SBD" currensubunit="cent"/>
+<country shortname="Somalia" fullname="Somali Democratic Republic" isocountry="SO" capital="Mogadishu" citizen="Somali" adjective="Somali" currency="Somali shilling" isocurrency="SOS" currensubunit="cent"/>
+<country shortname="South Africa" fullname="Republic of South Africa" isocountry="ZA" capital="Pretoria" citizen="South African" adjective="South African" currency="rand" isocurrency="ZAR" currensubunit="cent"/>
+<country shortname="South Georgia and the South Sandwich Islands" fullname="South Georgia and the South Sandwich&#10;Islands" isocountry="GS" capital="-" citizen="-" adjective="of South Georgia and the South Sandwich&#10;Islands" currency=" " isocurrency=" " currensubunit=" "/>
+<country shortname="South Korea" fullname="Republic of Korea" isocountry="KR" capital="Seoul" citizen="South Korean" adjective="South Korean" currency="South Korean won (inv.)" isocurrency="KRW" currensubunit="chun (inv.)"/>
+<country shortname="Spain" fullname="Kingdom of Spain" isocountry="ES " capital="Madrid" citizen="Spaniard" adjective="Spanish" currency="Spanish peseta" isocurrency="ESP" currensubunit="céntimo"/>
+<country shortname="Sri Lanka" fullname="Democratic Socialist Republic of Sri Lanka" isocountry="LK" capital="Colombo" citizen="Sri Lankan" adjective="Sri Lankan; of Sri Lanka" currency="Sri Lanka rupee" isocurrency="LKR" currensubunit="cent"/>
+<country shortname="Sudan" fullname="Republic of Sudan" isocountry="SD" capital="Khartoum" citizen="Sudanese" adjective="Sudanese" currency="Sudanese pound" isocurrency="SDD" currensubunit="piastre"/>
+<country shortname="Suriname" fullname="Republic of Suriname" isocountry="SR" capital="Paramaribo" citizen="Surinamese" adjective="Surinamese" currency="Suriname guilder" isocurrency="SRG" currensubunit="cent"/>
+<country shortname="Svalbard and Jan Mayen" fullname="Svalbard and Jan Mayen Islands" isocountry="SJ" capital="Longyearbyen (on Spitsbergen, Svalbard)" citizen="-" adjective="of Svalbard; of Jan Mayen" currency="Norwegian krone (pl.kroner)" isocurrency="NOK" currensubunit="øre (inv.)"/>
+<country shortname="Swaziland" fullname="Kingdom of Swaziland" isocountry="SZ" capital="Mbabane" citizen="Swazi" adjective="Swazi" currency="lilangeni (pl.emalangeni)" isocurrency="SZL" currensubunit="cent"/>
+<country shortname="Sweden" fullname="Kingdom of Sweden" isocountry="SE " capital="Stockholm" citizen="Swede" adjective="Swedish" currency="Swedish krona (pl.kronor)" isocurrency="SEK" currensubunit="öre (inv.)"/>
+<country shortname="Switzerland" fullname="Swiss Confederation" isocountry="CH" capital="Berne" citizen="Swiss" adjective="Swiss" currency="Swiss franc" isocurrency="CHF" currensubunit="centime"/>
+<country shortname="Syria" fullname="Syrian Arab Republic" isocountry="SY" capital="Damascus" citizen="Syrian" adjective="Syrian" currency="Syrian pound" isocurrency="SYP" currensubunit="piastre"/>
+<country shortname="Taiwan" fullname="Republic of China" isocountry="TW" capital="Taipei" citizen="Taiwanese" adjective="Taiwanese; of Taiwan" currency="new Taiwan dollar" isocurrency="TWD" currensubunit="fen (inv.)"/>
+<country shortname="Tajikistan" fullname="Republic of Tajikistan" isocountry="TJ" capital="Dushanbe" citizen="Tajik" adjective="Tajik" currency="Tajik rouble" isocurrency="TJR" currensubunit="kopek"/>
+<country shortname="Tanzania" fullname="United Republic of Tanzania" isocountry="TZ" capital="Dodoma" citizen="Tanzanian" adjective="Tanzanian" currency="Tanzanian shilling" isocurrency="TZS" currensubunit="cent"/>
+<country shortname="Thailand" fullname="Kingdom of Thailand" isocountry="TH" capital="Bangkok" citizen="Thai" adjective="Thai" currency="baht (inv.)" isocurrency="THB" currensubunit="satang (inv.)"/>
+<country shortname="The Bahamas" fullname="Commonwealth of The Bahamas" isocountry="BS" capital="Nassau" citizen="Bahamian" adjective="Bahamian" currency="Bahamian dollar" isocurrency="BSD" currensubunit="cent"/>
+<country shortname="The Comoros" fullname="Islamic Federal Republic of The Comoros" isocountry="KM" capital="Moroni" citizen="Comorian" adjective="Comorian" currency="Comorian franc" isocurrency="KMF" currensubunit="centime"/>
+<country shortname="The Gambia" fullname="Republic of The Gambia" isocountry="GM" capital="Banjul" citizen="Gambian" adjective="Gambian" currency="dalasi (inv.)" isocurrency="GMD" currensubunit="butut"/>
+<country shortname="Togo" fullname="Togolese Republic" isocountry="TG" capital="Lomé" citizen="Togolese" adjective="Togolese" currency="CFA franc" isocurrency="XOF" currensubunit="centime"/>
+<country shortname="Tokelau" fullname="Tokelau" isocountry="TK" capital="Fakaofo" citizen="Tokelauan" adjective="of Tokelau; Tokelauan" currency="New Zealand dollar" isocurrency="NZD" currensubunit="cent"/>
+<country shortname="Tonga" fullname="Kingdom of Tonga" isocountry="TO" capital="Nuku'alofa" citizen="Tongan" adjective="Tongan" currency="pa'anga (inv.)" isocurrency="TOP" currensubunit="seniti (inv.)"/>
+<country shortname="Trinidad and Tobago" fullname="Republic of Trinidad and Tobago" isocountry="TT" capital="Port of Spain" citizen="Trinidadian; Tobagonian" adjective="of Trinidad and Tobago" currency="Trinidad and Tobago dollar" isocurrency="TTD" currensubunit="cent"/>
+<country shortname="Tunisia" fullname="Republic of Tunisia" isocountry="TN" capital="Tunis" citizen="Tunisian" adjective="Tunisian" currency="Tunisian dinar" isocurrency="TND" currensubunit="millime"/>
+<country shortname="Turkey" fullname="Republic of Turkey" isocountry="TR" capital="Ankara" citizen="Turk" adjective="Turkish" currency="Turkish lira" isocurrency="TRL" currensubunit="kurus (inv.)"/>
+<country shortname="Turkmenistan" fullname="Turkmenistan" isocountry="TM" capital="Ashkhabad" citizen="Turkmen" adjective="Turkmen" currency="Turkmen manat (inv.)" isocurrency="TMM" currensubunit="tenge (inv.)"/>
+<country shortname="Turks and Caicos Islands" fullname="Turks and Caicos Islands" isocountry="TC" capital="Cockburn Town" citizen="Turks and Caicos Islander" adjective="of the Turks and Caicos Islands&#10;" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="Tuvalu" fullname="Tuvalu" isocountry="TV" capital="Fongafale" citizen="Tuvaluan" adjective="Tuvaluan" currency="Australian dollar" isocurrency="AUD" currensubunit="cent"/>
+<country shortname="Uganda" fullname="Republic of Uganda" isocountry="UG" capital="Kampala" citizen="Ugandan" adjective="Ugandan" currency="Uganda shilling" isocurrency="UGX" currensubunit="cent"/>
+<country shortname="Ukraine" fullname="Ukraine" isocountry="UA" capital="Kiev" citizen="Ukrainian" adjective="Ukrainian" currency="hryvnia" isocurrency="UAH" currensubunit="kopiyka"/>
+<country shortname="United Arab Emirates" fullname="United Arab Emirates" isocountry="AE" capital="Abu Dhabi" citizen="UAE national" adjective="of the United Arab Emirates" currency="UAE dirham" isocurrency="AED" currensubunit="fils (inv.)"/>
+<country shortname="United Kingdom" fullname="United Kingdom of Great Britain and Northern&#10;Ireland" isocountry="GB " capital="London" citizen="Briton" adjective="British; of the United Kingdom" currency="pound sterling" isocurrency="GBP" currensubunit="penny (pl. pence.)"/>
+<country shortname="United States" fullname="United States of America" isocountry="US" capital="Washington DC" citizen="American; US citizen" adjective="American; of the United States" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="United States Minor Outlying Islands" fullname="United States Minor Outlying Islands" isocountry="UM" capital="-" citizen="-" adjective="-" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="Uruguay" fullname="Eastern Republic of Uruguay" isocountry="UY" capital="Montevideo" citizen="Uruguayan" adjective="Uruguayan" currency="Uruguayan peso" isocurrency="UYU" currensubunit="centésimo"/>
+<country shortname="US Virgin Islands" fullname="Virgin Islands of the United States" isocountry="VI" capital="Charlotte Amalie" citizen="US Virgin Islander" adjective="of the US Virgin Islands" currency="US dollar" isocurrency="USD" currensubunit="cent"/>
+<country shortname="Uzbekistan" fullname="Republic of Uzbekistan" isocountry="UZ" capital="Tashkent" citizen="Uzbek" adjective="Uzbek" currency="sum (inv.)&#10;" isocurrency="UZS" currensubunit="tiyin (inv.)"/>
+<country shortname="Vanuatu" fullname="Republic of Vanuatu" isocountry="VU" capital="Port Vila" citizen="Vanuatuan" adjective="of Vanuatu; Vanuatuan" currency="vatu (inv.)" isocurrency="VUV" currensubunit="-"/>
+<country shortname="the Vatican" fullname="The Holy see" isocountry="VA" capital="Vatican City" citizen="-" adjective="Vatican; of the Vatican" currency="Italian lira" isocurrency="ITL" currensubunit="-"/>
+<country shortname="Venezuela" fullname="Republic of Venezuela" isocountry="VE" capital="Caracas" citizen="Venezuelan" adjective="Venezuelan" currency="bolívar (pl:bolívares)" isocurrency="VEB" currensubunit="centavo"/>
+<country shortname="Vietnam" fullname="Socialist Republic of Viet Nam" isocountry="VN" capital="Hanoi" citizen="Vietnamese" adjective="Vietnamese" currency="dong" isocurrency="VND" currensubunit="-"/>
+<country shortname="Wallis and Futuna" fullname="Territory of the Wallis and Futuna Islands" isocountry="WF" capital="Mata-Utu" citizen="Wallisian; Futunan; Wallis and Futuna&#10;Islander" adjective="of the Wallis and Futuna Islands" currency="CFP franc" isocurrency="XPF" currensubunit="centime"/>
+<country shortname="Western Sahara" fullname="-" isocountry="EH" capital="Al aaiun" citizen="Sahrawi" adjective="Sahrawi" currency="Moroccan dirham" isocurrency="MAD" currensubunit="centime"/>
+<country shortname="Yemen" fullname="Republic of Yemen" isocountry="YE" capital="San'a" citizen="Yemenite" adjective="Yemeni" currency="Yemeni rial" isocurrency="YER" currensubunit="fils (inv.)"/>
+<country shortname="Yugoslavia" fullname="Federal Republic of Yugoslavia" isocountry="YU" capital="Belgrade" citizen="Yugoslav" adjective="Yugoslav" currency="Yugoslav dinar" isocurrency="YUM" currensubunit="para (inv.)"/>
+<country shortname="Zambia" fullname="Republic of Zambia" isocountry="ZM" capital="Lusaka" citizen="Zambian" adjective="Zambian" currency="Zambian kwacha (inv.)" isocurrency="ZMK" currensubunit="ngwee (inv.)"/>
+<country shortname="Zimbabwe" fullname="Republic of Zimbabwe" isocountry="ZW" capital="Harare" citizen="Zimbabwean" adjective="Zimbabwean" currency="Zimbabwe dollar" isocurrency="ZWD" currensubunit="cent"/>
+</countries>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/entable.xml b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/entable.xml
new file mode 100644
index 00000000000..7efc506f232
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/entable.xml
@@ -0,0 +1,2639 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<countries>
+<country>
+<shortname>Afghanistan</shortname>
+<fullname>Islamic State of Afghanistan</fullname>
+<isocountry>AF</isocountry>
+<capital>Kabul</capital>
+<citizen>Afghan</citizen>
+<adjective>Afghan</adjective>
+<currency>afghani</currency>
+<isocurrency>AFA</isocurrency>
+<currensubunit>pul</currensubunit>
+</country>
+<country>
+<shortname>Albania</shortname>
+<fullname>Republic of Albania</fullname>
+<isocountry>AL</isocountry>
+<capital>Tirana</capital>
+<citizen>Albanian</citizen>
+<adjective>Albanian</adjective>
+<currency>lek</currency>
+<isocurrency>ALL</isocurrency>
+<currensubunit>quindar (pl.quindarka)</currensubunit>
+</country>
+<country>
+<shortname>Algeria</shortname>
+<fullname>People's Democratic Republic of Algeria</fullname>
+<isocountry>DZ</isocountry>
+<capital>Algiers</capital>
+<citizen>Algerian</citizen>
+<adjective>Algerian</adjective>
+<currency>Algerian dinar</currency>
+<isocurrency>DZD</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>American Samoa</shortname>
+<fullname>Territory of American Samoa</fullname>
+<isocountry>AS</isocountry>
+<capital>Pago Pago</capital>
+<citizen>Samoan</citizen>
+<adjective>Samoan</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Andorra</shortname>
+<fullname>Principality of Andorra</fullname>
+<isocountry>AD</isocountry>
+<capital>Andorra la Vella</capital>
+<citizen>Andorran</citizen>
+<adjective>Andorran</adjective>
+<currency>Spanish peseta; French franc</currency>
+<isocurrency>ESP; FRF</isocurrency>
+<currensubunit>céntimo; centime</currensubunit>
+</country>
+<country>
+<shortname>Angola</shortname>
+<fullname>Republic of Angola</fullname>
+<isocountry>AO</isocountry>
+<capital>Luanda</capital>
+<citizen>Angolan</citizen>
+<adjective>Angolan</adjective>
+<currency>readjusted kwanza</currency>
+<isocurrency>AOR</isocurrency>
+<currensubunit>lwei (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Anguilla</shortname>
+<fullname>Anguilla</fullname>
+<isocountry>AI</isocountry>
+<capital>The Valley</capital>
+<citizen>Anguillan</citizen>
+<adjective>Anguillan</adjective>
+<currency>Eastern Caribbean dollar</currency>
+<isocurrency>XCD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Antarctica</shortname>
+<fullname>Antarctica</fullname>
+<isocountry>AQ</isocountry>
+<capital>-</capital>
+<citizen>-</citizen>
+<adjective>Antarctic</adjective>
+<currency>-</currency>
+<isocurrency> </isocurrency>
+<currensubunit> </currensubunit>
+</country>
+<country>
+<shortname>Antigua and Barbuda</shortname>
+<fullname>Antigua and Barbuda</fullname>
+<isocountry>AG</isocountry>
+<capital>St John's</capital>
+<citizen>Antiguan; Barbudian</citizen>
+<adjective>Antiguan; Barbudian; of Antigua and Barbuda</adjective>
+<currency>Eastern Caribbean dollar</currency>
+<isocurrency>XCD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Argentina</shortname>
+<fullname>Argentine Republic</fullname>
+<isocountry>AR</isocountry>
+<capital>Buenos Aires</capital>
+<citizen>Argentinian</citizen>
+<adjective>Argentine</adjective>
+<currency>Argentine peso</currency>
+<isocurrency>ARS</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Armenia</shortname>
+<fullname>Republic of Armenia</fullname>
+<isocountry>AM</isocountry>
+<capital>Yerevan</capital>
+<citizen>Armenian</citizen>
+<adjective>Armenian</adjective>
+<currency>dram (inv.)</currency>
+<isocurrency>AMD</isocurrency>
+<currensubunit>luma</currensubunit>
+</country>
+<country>
+<shortname>Aruba</shortname>
+<fullname>Aruba</fullname>
+<isocountry>AW</isocountry>
+<capital>Oranjestad</capital>
+<citizen>Aruban</citizen>
+<adjective>Aruban</adjective>
+<currency>Aruban guilder</currency>
+<isocurrency>AWG</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Australia</shortname>
+<fullname>Commonwealth of Australia</fullname>
+<isocountry>AU</isocountry>
+<capital>Canberra</capital>
+<citizen>Australian</citizen>
+<adjective>Australian</adjective>
+<currency>Australian dollar</currency>
+<isocurrency>AUD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Austria</shortname>
+<fullname>Republic of Austria</fullname>
+<isocountry>AT </isocountry>
+<capital>Vienna</capital>
+<citizen>Austrian</citizen>
+<adjective>Austrian</adjective>
+<currency>Austrian schilling</currency>
+<isocurrency>ATS</isocurrency>
+<currensubunit>groschen (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Azerbaijan</shortname>
+<fullname>Azerbaijani Republic</fullname>
+<isocountry>AZ</isocountry>
+<capital>Baku</capital>
+<citizen>Azeri</citizen>
+<adjective>Azerbaijani</adjective>
+<currency>Azerbaijani manat</currency>
+<isocurrency>AZM</isocurrency>
+<currensubunit>kepik (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Bahrain</shortname>
+<fullname>State of Bahrain</fullname>
+<isocountry>BH</isocountry>
+<capital>Manama</capital>
+<citizen>Bahraini</citizen>
+<adjective>Bahraini</adjective>
+<currency>Bahraini dinar</currency>
+<isocurrency>BHD</isocurrency>
+<currensubunit>fils (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Bangladesh</shortname>
+<fullname>People's Republic of Bangladesh</fullname>
+<isocountry>BD</isocountry>
+<capital>Dhaka</capital>
+<citizen>Bangladeshi</citizen>
+<adjective>of Bangladesh</adjective>
+<currency>taka (inv.)</currency>
+<isocurrency>BDT</isocurrency>
+<currensubunit>poisha (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Barbados</shortname>
+<fullname>Barbados</fullname>
+<isocountry>BB</isocountry>
+<capital>Bridgetown</capital>
+<citizen>Barbadian</citizen>
+<adjective>Barbadian</adjective>
+<currency>Barbados dollar</currency>
+<isocurrency>BBD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Belarus</shortname>
+<fullname>Republic of Belarus</fullname>
+<isocountry>BY</isocountry>
+<capital>Minsk</capital>
+<citizen>Belarusian</citizen>
+<adjective>Belarusian</adjective>
+<currency>Belarusian rouble</currency>
+<isocurrency>BYB</isocurrency>
+<currensubunit>kopek</currensubunit>
+</country>
+<country>
+<shortname>Belgium</shortname>
+<fullname>Kingdom of Belgium</fullname>
+<isocountry>BE </isocountry>
+<capital>Brussels</capital>
+<citizen>Belgian</citizen>
+<adjective>Belgian</adjective>
+<currency>Belgian franc</currency>
+<isocurrency>BEF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Belize</shortname>
+<fullname>Belize</fullname>
+<isocountry>BZ</isocountry>
+<capital>Belmopan</capital>
+<citizen>Belizean</citizen>
+<adjective>Belizean</adjective>
+<currency>Belize dollar</currency>
+<isocurrency>BZD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Benin</shortname>
+<fullname>Republic of Benin</fullname>
+<isocountry>BJ</isocountry>
+<capital>Porto Novo</capital>
+<citizen>Beninese</citizen>
+<adjective>Beninese</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XOF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Bermuda</shortname>
+<fullname>Bermuda</fullname>
+<isocountry>BM</isocountry>
+<capital>Hamilton</capital>
+<citizen>Bermudian</citizen>
+<adjective>Bermudian</adjective>
+<currency>Bermuda dollar</currency>
+<isocurrency>BMD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Bhutan</shortname>
+<fullname>Kingdom of Bhutan</fullname>
+<isocountry>BT</isocountry>
+<capital>Thimphu</capital>
+<citizen>Bhutanese</citizen>
+<adjective>Bhutanese</adjective>
+<currency>ngultrum (inv.)</currency>
+<isocurrency>BTN</isocurrency>
+<currensubunit>chhetrum (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Bolivia</shortname>
+<fullname>Republic of Bolivia</fullname>
+<isocountry>BO</isocountry>
+<capital>Sucre</capital>
+<citizen>Bolivian</citizen>
+<adjective>Bolivian</adjective>
+<currency>boliviano</currency>
+<isocurrency>BOB</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Bosnia and Herzegovina</shortname>
+<fullname>Bosnia and Herzegovina</fullname>
+<isocountry>BA</isocountry>
+<capital>Sarajevo</capital>
+<citizen>Bosnian; Herzegovinian</citizen>
+<adjective>Bosnian; Herzegovinian</adjective>
+<currency>Bosnian dinar; Bosnian convertible mark</currency>
+<isocurrency>BAM</isocurrency>
+<currensubunit>fening</currensubunit>
+</country>
+<country>
+<shortname>Botswana</shortname>
+<fullname>Republic of Botswana</fullname>
+<isocountry>BW</isocountry>
+<capital>Gaborone</capital>
+<citizen>Botswanan</citizen>
+<adjective>Botswanan; of Botswana</adjective>
+<currency>pula (inv.)</currency>
+<isocurrency>BWP</isocurrency>
+<currensubunit>thebe (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Bouvet Island</shortname>
+<fullname>Bouvet Island</fullname>
+<isocountry>BV</isocountry>
+<capital>-</capital>
+<citizen>-</citizen>
+<adjective>of Bouvet Island</adjective>
+<currency> </currency>
+<isocurrency> </isocurrency>
+<currensubunit> </currensubunit>
+</country>
+<country>
+<shortname>Brazil</shortname>
+<fullname>Federative Republic of Brazil</fullname>
+<isocountry>BR</isocountry>
+<capital>Brasilia</capital>
+<citizen>Brazilian</citizen>
+<adjective>Brazilian</adjective>
+<currency>Brazilian real (pl. reais)</currency>
+<isocurrency>BRL</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>British Indian Ocean Territory</shortname>
+<fullname>British Indian Ocean Territory</fullname>
+<isocountry>IO</isocountry>
+<capital>-</capital>
+<citizen>-</citizen>
+<adjective>of the British Indian Ocean Territory</adjective>
+<currency> </currency>
+<isocurrency> </isocurrency>
+<currensubunit> </currensubunit>
+</country>
+<country>
+<shortname>British Virgin Islands</shortname>
+<fullname>British Virgin Islands</fullname>
+<isocountry>VG</isocountry>
+<capital>Road Town</capital>
+<citizen>British Virgin Islander; BVIslander</citizen>
+<adjective>of the British Virgin Islands</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Brunei</shortname>
+<fullname>Negara Brunei Darussalam</fullname>
+<isocountry>BN</isocountry>
+<capital>Bandar Seri Begawan</capital>
+<citizen>Bruneian</citizen>
+<adjective>Bruneian; of Brunei</adjective>
+<currency>Brunei dollar</currency>
+<isocurrency>BND</isocurrency>
+<currensubunit>sen (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Bulgaria</shortname>
+<fullname>Republic of Bulgaria</fullname>
+<isocountry>BG</isocountry>
+<capital>Sofia</capital>
+<citizen>Bulgarian</citizen>
+<adjective>Bulgarian</adjective>
+<currency>lev (pl. leva)</currency>
+<isocurrency>BGL</isocurrency>
+<currensubunit>stotinka (pl. stotinki)</currensubunit>
+</country>
+<country>
+<shortname>Burkina Faso</shortname>
+<fullname>Burkina Faso</fullname>
+<isocountry>BF</isocountry>
+<capital>Ouagadougou</capital>
+<citizen>Burkinabe</citizen>
+<adjective>Burkinabe; of Burkina Faso</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XOF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Burundi</shortname>
+<fullname>Republic of Burundi</fullname>
+<isocountry>BI</isocountry>
+<capital>Bujumbura</capital>
+<citizen>Burundian</citizen>
+<adjective>Burundian; of Burundi</adjective>
+<currency>Burundi franc</currency>
+<isocurrency>BIF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Cambodia</shortname>
+<fullname>Kingdom of Cambodia</fullname>
+<isocountry>KH</isocountry>
+<capital>Phnom Penh</capital>
+<citizen>Cambodian</citizen>
+<adjective>Cambodian</adjective>
+<currency>riel</currency>
+<isocurrency>KHR</isocurrency>
+<currensubunit>sen (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Cameroon</shortname>
+<fullname>Republic of Cameroon</fullname>
+<isocountry>CM</isocountry>
+<capital>Yaoundé</capital>
+<citizen>Cameroonian</citizen>
+<adjective>Cameroonian</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XAF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Canada</shortname>
+<fullname>Canada</fullname>
+<isocountry>CA</isocountry>
+<capital>Ottawa</capital>
+<citizen>Canadian</citizen>
+<adjective>Canadian</adjective>
+<currency>Canadian dollar</currency>
+<isocurrency>CAD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Cape Verde</shortname>
+<fullname>Republic of Cape Verde</fullname>
+<isocountry>CV</isocountry>
+<capital>Praia</capital>
+<citizen>Cape Verdean</citizen>
+<adjective>Cape Verdean</adjective>
+<currency>Cape Verde escudo</currency>
+<isocurrency>CVE</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Cayman Islands</shortname>
+<fullname>Cayman Islands</fullname>
+<isocountry>KY</isocountry>
+<capital>George Town</capital>
+<citizen>Caymanian</citizen>
+<adjective>Caymanian; of the Cayman Islands</adjective>
+<currency>Cayman Islands dollar</currency>
+<isocurrency>KYD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Central African Republic</shortname>
+<fullname>Central African Republic</fullname>
+<isocountry>CF</isocountry>
+<capital>Bangui</capital>
+<citizen>Central African</citizen>
+<adjective>Central African; of the Central African
+Republic</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XAF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Chad</shortname>
+<fullname>Republic of Chad</fullname>
+<isocountry>TD</isocountry>
+<capital>N'Djamena</capital>
+<citizen>Chadian</citizen>
+<adjective>Chadian; of Chad</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XAF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Chile</shortname>
+<fullname>Republic of Chile</fullname>
+<isocountry>CL</isocountry>
+<capital>Santiago</capital>
+<citizen>Chilean</citizen>
+<adjective>Chilean</adjective>
+<currency>Chilean peso</currency>
+<isocurrency>CLP</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>China</shortname>
+<fullname>People's Republic of China</fullname>
+<isocountry>CN</isocountry>
+<capital>Beijing</capital>
+<citizen>Chinese</citizen>
+<adjective>Chinese</adjective>
+<currency>renminbi-yuan (inv.)</currency>
+<isocurrency>CNY</isocurrency>
+<currensubunit>fen (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Christmas Island</shortname>
+<fullname>Christmas Island Territory</fullname>
+<isocountry>CX</isocountry>
+<capital>Flying Fish Cove</capital>
+<citizen>Christmas Islander</citizen>
+<adjective>of Christmas Island</adjective>
+<currency>Australian dollar</currency>
+<isocurrency>AUD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Cocos (Keeling) Islands</shortname>
+<fullname>Territory of Cocos (Keeling) Islands</fullname>
+<isocountry>CC</isocountry>
+<capital>Bantam</capital>
+<citizen>Cocos Islander</citizen>
+<adjective>of the Cocos (Keeling) Islands</adjective>
+<currency>Australian dollar</currency>
+<isocurrency>AUD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Colombia</shortname>
+<fullname>Republic of Colombia</fullname>
+<isocountry>CO</isocountry>
+<capital>Santa Fe de Bogotá</capital>
+<citizen>Colombian</citizen>
+<adjective>Colombian</adjective>
+<currency>Colombian peso</currency>
+<isocurrency>COP</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Congo</shortname>
+<fullname>Republic of the Congo</fullname>
+<isocountry>CG</isocountry>
+<capital>Brazzaville</capital>
+<citizen>Congolese</citizen>
+<adjective>Congolese</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XAF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Cook Islands</shortname>
+<fullname>Cook Islands</fullname>
+<isocountry>CK</isocountry>
+<capital>Avarua</capital>
+<citizen>Cook Islander</citizen>
+<adjective>of the Cook Islands</adjective>
+<currency>New Zealand dollar</currency>
+<isocurrency>NZD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Costa Rica</shortname>
+<fullname>Republic of Costa Rica</fullname>
+<isocountry>CR</isocountry>
+<capital>San José</capital>
+<citizen>Costa Rican</citizen>
+<adjective>Costa Rican</adjective>
+<currency>Costa Rican colón (pl.colones)</currency>
+<isocurrency>CRC</isocurrency>
+<currensubunit>céntimo</currensubunit>
+</country>
+<country>
+<shortname>Côte d'Ivoire</shortname>
+<fullname>Republic of Côte d'Ivoire</fullname>
+<isocountry>CI</isocountry>
+<capital>Yamoussoukro</capital>
+<citizen>Ivorian</citizen>
+<adjective>Ivorian</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XOF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Croatia</shortname>
+<fullname>Republic of Croatia</fullname>
+<isocountry>HR</isocountry>
+<capital>Zagreb</capital>
+<citizen>Croat</citizen>
+<adjective>Croatian</adjective>
+<currency>kuna (inv.)</currency>
+<isocurrency>HRK</isocurrency>
+<currensubunit>lipa (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Cuba</shortname>
+<fullname>Republic of Cuba</fullname>
+<isocountry>CU</isocountry>
+<capital>Havana</capital>
+<citizen>Cuban</citizen>
+<adjective>Cuban</adjective>
+<currency>Cuban peso</currency>
+<isocurrency>CUP</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Cyprus</shortname>
+<fullname>Republic of Cyprus</fullname>
+<isocountry>CY</isocountry>
+<capital>Nicosia</capital>
+<citizen>Cypriot</citizen>
+<adjective>Cypriot</adjective>
+<currency>Cyprus pound</currency>
+<isocurrency>CYP</isocurrency>
+<currensubunit>mil</currensubunit>
+</country>
+<country>
+<shortname>Czech Republic</shortname>
+<fullname>Czech Republic</fullname>
+<isocountry>CZ</isocountry>
+<capital>Prague</capital>
+<citizen>Czech</citizen>
+<adjective>Czech</adjective>
+<currency>Czech koruna (pl.koruny)</currency>
+<isocurrency>CZK</isocurrency>
+<currensubunit>halér (pl. halére)</currensubunit>
+</country>
+<country>
+<shortname>Democratic Republic of the Congo</shortname>
+<fullname>Democratic Republic of the Congo</fullname>
+<isocountry>CD</isocountry>
+<capital>Kinshasa</capital>
+<citizen>Congolese</citizen>
+<adjective>Congolese; of the Democratic Republic of the
+Congo</adjective>
+<currency>new zaire</currency>
+<isocurrency>CDF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Denmark</shortname>
+<fullname>Kingdom of Denmark</fullname>
+<isocountry>DK </isocountry>
+<capital>Copenhagen</capital>
+<citizen>Dane</citizen>
+<adjective>Danish</adjective>
+<currency>Danish krone (pl.kroner)
+</currency>
+<isocurrency>DKK</isocurrency>
+<currensubunit>øre (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Djibouti</shortname>
+<fullname>Republic of Djibouti</fullname>
+<isocountry>DJ</isocountry>
+<capital>Djibouti</capital>
+<citizen>Djiboutian</citizen>
+<adjective>of Djibouti</adjective>
+<currency>Djibouti franc</currency>
+<isocurrency>DJF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Dominica</shortname>
+<fullname>Commonwealth of Dominica</fullname>
+<isocountry>DM</isocountry>
+<capital>Roseau</capital>
+<citizen>Dominican</citizen>
+<adjective>of Dominica</adjective>
+<currency>Eastern Caribbean dollar</currency>
+<isocurrency>XCD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Dominican Republic</shortname>
+<fullname>Dominican Republic</fullname>
+<isocountry>DO</isocountry>
+<capital>Santo Domingo</capital>
+<citizen>Dominican</citizen>
+<adjective>Dominican</adjective>
+<currency>Dominican peso</currency>
+<isocurrency>DOP</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>East Timor</shortname>
+<fullname>East Timor</fullname>
+<isocountry>TP</isocountry>
+<capital>Dili</capital>
+<citizen>East Timorese</citizen>
+<adjective>East Timorese</adjective>
+<currency>Indonesian rupiah</currency>
+<isocurrency>IDR</isocurrency>
+<currensubunit>-</currensubunit>
+</country>
+<country>
+<shortname>Ecuador</shortname>
+<fullname>Republic of Ecuador</fullname>
+<isocountry>EC</isocountry>
+<capital>Quito</capital>
+<citizen>Ecuadorian</citizen>
+<adjective>Ecuadorian</adjective>
+<currency>sucre</currency>
+<isocurrency>ECS</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Egypt</shortname>
+<fullname>Arab Republic of Egypt</fullname>
+<isocountry>EG</isocountry>
+<capital>Cairo</capital>
+<citizen>Egyptian</citizen>
+<adjective>Egyptian</adjective>
+<currency>Egyptian pound</currency>
+<isocurrency>EGP</isocurrency>
+<currensubunit>piastre</currensubunit>
+</country>
+<country>
+<shortname>El Salvador</shortname>
+<fullname>Republic of El Salvador</fullname>
+<isocountry>SV</isocountry>
+<capital>San Salvador</capital>
+<citizen>Salvadorian; Salvadoran</citizen>
+<adjective>Salvadorian; Salvadoran</adjective>
+<currency>El Salvador colón (pl.colones)</currency>
+<isocurrency>SVC</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Equatorial Guinea</shortname>
+<fullname>Republic of Equatorial Guinea</fullname>
+<isocountry>GQ</isocountry>
+<capital>Malabo</capital>
+<citizen>Equatorial Guinean</citizen>
+<adjective>of Equatorial Guinea</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XAF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Eritrea</shortname>
+<fullname>State of Eritrea</fullname>
+<isocountry>ER</isocountry>
+<capital>Asmara</capital>
+<citizen>Eritrean</citizen>
+<adjective>Eritrean</adjective>
+<currency>nakfa (inv.)</currency>
+<isocurrency>ERN</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Estonia</shortname>
+<fullname>Republic of Estonia</fullname>
+<isocountry>EE</isocountry>
+<capital>Tallinn</capital>
+<citizen>Estonian</citizen>
+<adjective>Estonian</adjective>
+<currency>Estonian kroon (pl.krooni)</currency>
+<isocurrency>EEK</isocurrency>
+<currensubunit>sent (pl. senti)</currensubunit>
+</country>
+<country>
+<shortname>Ethiopia</shortname>
+<fullname>Federal Democratic Republic of Ethiopia</fullname>
+<isocountry>ET</isocountry>
+<capital>Addis Ababa</capital>
+<citizen>Ethiopian</citizen>
+<adjective>Ethiopian</adjective>
+<currency>Ethiopian birr (inv.)</currency>
+<isocurrency>ETB</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Faeroe Islands</shortname>
+<fullname>Faeroe Islands</fullname>
+<isocountry>FO</isocountry>
+<capital>Thorshavn</capital>
+<citizen>Faeroese</citizen>
+<adjective>Faeroese</adjective>
+<currency>Danish krone (pl.kroner)</currency>
+<isocurrency>DKK</isocurrency>
+<currensubunit>øre (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Falkland Islands</shortname>
+<fullname>Falkland Islands</fullname>
+<isocountry>FK</isocountry>
+<capital>Stanley</capital>
+<citizen>Falkland Islander</citizen>
+<adjective>of the Falkland Islands</adjective>
+<currency>Falkland Islands pound</currency>
+<isocurrency>FKP</isocurrency>
+<currensubunit>new penny (pl. pence)</currensubunit>
+</country>
+<country>
+<shortname>Fiji</shortname>
+<fullname>Republic of Fiji</fullname>
+<isocountry>FJ</isocountry>
+<capital>Suva</capital>
+<citizen>Fijian</citizen>
+<adjective>Fijian; of Fiji</adjective>
+<currency>Fiji dollar</currency>
+<isocurrency>FJD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Finland</shortname>
+<fullname>Republic of Finland</fullname>
+<isocountry>FI </isocountry>
+<capital>Helsinki</capital>
+<citizen>Finn</citizen>
+<adjective>Finnish</adjective>
+<currency>Finnish markka (pl.markkaa)</currency>
+<isocurrency>FIM</isocurrency>
+<currensubunit>penni (pl. penniä)</currensubunit>
+</country>
+<country>
+<shortname>France</shortname>
+<fullname>French Republic</fullname>
+<isocountry>FR </isocountry>
+<capital>Paris</capital>
+<citizen>Frenchman; Frenchwoman</citizen>
+<adjective>French</adjective>
+<currency>French franc</currency>
+<isocurrency>FRF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>French Guiana</shortname>
+<fullname>Department of French Guiana</fullname>
+<isocountry>GF</isocountry>
+<capital>Cayenne</capital>
+<citizen>Guianese</citizen>
+<adjective>Guianese</adjective>
+<currency>French franc</currency>
+<isocurrency>FRF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>French Polynesia</shortname>
+<fullname>Territory of French Polynesia</fullname>
+<isocountry>PF</isocountry>
+<capital>Papeete</capital>
+<citizen>Polynesian</citizen>
+<adjective>Polynesian</adjective>
+<currency>CFP franc</currency>
+<isocurrency>XPF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>French Southern and Antarctic Lands</shortname>
+<fullname>Territory of the French Southern and Antarctic
+Lands</fullname>
+<isocountry>TF</isocountry>
+<capital> </capital>
+<citizen>-</citizen>
+<adjective>of the French Southern and Antarctic Lands</adjective>
+<currency>-</currency>
+<isocurrency>-</isocurrency>
+<currensubunit>-</currensubunit>
+</country>
+<country>
+<shortname>Gabon</shortname>
+<fullname>Gabonese Republic</fullname>
+<isocountry>GA</isocountry>
+<capital>Libreville</capital>
+<citizen>Gabonese</citizen>
+<adjective>Gabonese</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XAF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Georgia</shortname>
+<fullname>Georgia</fullname>
+<isocountry>GE</isocountry>
+<capital>Tbilisi</capital>
+<citizen>Georgian</citizen>
+<adjective>Georgian</adjective>
+<currency>lari</currency>
+<isocurrency>GEL</isocurrency>
+<currensubunit>tetri (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Germany</shortname>
+<fullname>Federal Republic of Germany</fullname>
+<isocountry>DE </isocountry>
+<capital>Berlin</capital>
+<citizen>German</citizen>
+<adjective>German</adjective>
+<currency>German mark</currency>
+<isocurrency>DEM</isocurrency>
+<currensubunit>pfennig</currensubunit>
+</country>
+<country>
+<shortname>Ghana</shortname>
+<fullname>Republic of Ghana</fullname>
+<isocountry>GH</isocountry>
+<capital>Accra</capital>
+<citizen>Ghanaian</citizen>
+<adjective>Ghanaian</adjective>
+<currency>cedi</currency>
+<isocurrency>GHC</isocurrency>
+<currensubunit>pesewa</currensubunit>
+</country>
+<country>
+<shortname>Gibraltar</shortname>
+<fullname>Gibraltar</fullname>
+<isocountry>GI</isocountry>
+<capital>Gibraltar</capital>
+<citizen>Gibraltarian</citizen>
+<adjective>Gibraltarian; of Gibraltar</adjective>
+<currency>Gibraltar pound</currency>
+<isocurrency>GIP</isocurrency>
+<currensubunit>penny (pl. pence)</currensubunit>
+</country>
+<country>
+<shortname>Greece</shortname>
+<fullname>Hellenic Republic</fullname>
+<isocountry>GR </isocountry>
+<capital>Athens</capital>
+<citizen>Greek</citizen>
+<adjective>Greek</adjective>
+<currency>Greek drachma (pl.drachmae)</currency>
+<isocurrency>GRD</isocurrency>
+<currensubunit>lepton (pl.lepta)</currensubunit>
+</country>
+<country>
+<shortname>Greenland</shortname>
+<fullname>Greenland</fullname>
+<isocountry>GL</isocountry>
+<capital>Nuuk</capital>
+<citizen>Greenlander</citizen>
+<adjective>Greenlandic; of Greenland</adjective>
+<currency>Danish krone (pl.kroner)</currency>
+<isocurrency>DKK</isocurrency>
+<currensubunit>øre (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Grenada</shortname>
+<fullname>Grenada</fullname>
+<isocountry>GD</isocountry>
+<capital>St George's</capital>
+<citizen>Grenadian</citizen>
+<adjective>Grenadian</adjective>
+<currency>Eastern Caribbean dollar</currency>
+<isocurrency>XCD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Guadeloupe</shortname>
+<fullname>Department of Guadeloupe</fullname>
+<isocountry>GP</isocountry>
+<capital>Basse Terre</capital>
+<citizen>Guadeloupean</citizen>
+<adjective>of Guadeloupe; Guadeloupean</adjective>
+<currency>French franc</currency>
+<isocurrency>FRF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Guam</shortname>
+<fullname>Territory of Guam</fullname>
+<isocountry>GU</isocountry>
+<capital>Hagåtña</capital>
+<citizen>Guamanian</citizen>
+<adjective>Guamanian; of Guam</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Guatemala</shortname>
+<fullname>Republic of Guatemala</fullname>
+<isocountry>GT</isocountry>
+<capital>Guatemala City</capital>
+<citizen>Guatemalan</citizen>
+<adjective>Guatemalan</adjective>
+<currency>Guatemalan quetzal (pl.quetzales)</currency>
+<isocurrency>GTQ</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Guinea</shortname>
+<fullname>Republic of Guinea</fullname>
+<isocountry>GN</isocountry>
+<capital>Conakry</capital>
+<citizen>Guinean</citizen>
+<adjective>Guinean</adjective>
+<currency>Guinean franc</currency>
+<isocurrency>GNF</isocurrency>
+<currensubunit>-</currensubunit>
+</country>
+<country>
+<shortname>Guinea-Bissau</shortname>
+<fullname>Republic of Guinea-Bissau</fullname>
+<isocountry>GW</isocountry>
+<capital>Bissau</capital>
+<citizen>Guinea-Bissau national; Guinean</citizen>
+<adjective>of Guinea-Bissau</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XOF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Guyana</shortname>
+<fullname>Cooperative Republic of Guyana</fullname>
+<isocountry>GY</isocountry>
+<capital>Georgetown</capital>
+<citizen>Guyanese</citizen>
+<adjective>Guyanese</adjective>
+<currency>Guyanese dollar</currency>
+<isocurrency>GYD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Haiti</shortname>
+<fullname>Republic of Haiti</fullname>
+<isocountry>HT</isocountry>
+<capital>Port-au-Prince</capital>
+<citizen>Haitian</citizen>
+<adjective>Haitian</adjective>
+<currency>gourde</currency>
+<isocurrency>HTG</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Heard Island
+
+and McDonald Islands</shortname>
+<fullname>Territory of Heard Island and McDonald
+Islands</fullname>
+<isocountry>HM</isocountry>
+<capital>-</capital>
+<citizen>-</citizen>
+<adjective>of Heard Island and McDonald Islands</adjective>
+<currency> </currency>
+<isocurrency> </isocurrency>
+<currensubunit> </currensubunit>
+</country>
+<country>
+<shortname>Honduras</shortname>
+<fullname>Republic of Honduras</fullname>
+<isocountry>HN</isocountry>
+<capital>Tegucigalpa</capital>
+<citizen>Honduran</citizen>
+<adjective>Honduran</adjective>
+<currency>lempira</currency>
+<isocurrency>HNL</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Hong Kong</shortname>
+<fullname>Hong Kong Special Administrative Region (HKSAR)</fullname>
+<isocountry>HK</isocountry>
+<capital>Victoria</capital>
+<citizen>Hong Kong Chinese</citizen>
+<adjective>Hong Kong Chinese</adjective>
+<currency>Hong Kong dollar</currency>
+<isocurrency>HKD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Hungary</shortname>
+<fullname>Republic of Hungary</fullname>
+<isocountry>HU</isocountry>
+<capital>Budapest</capital>
+<citizen>Hungarian</citizen>
+<adjective>Hungarian</adjective>
+<currency>forint (inv.)</currency>
+<isocurrency>HUF</isocurrency>
+<currensubunit>fillér (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Iceland</shortname>
+<fullname>Republic of Iceland</fullname>
+<isocountry>IS</isocountry>
+<capital>Reykjavik</capital>
+<citizen>Icelander</citizen>
+<adjective>Icelandic</adjective>
+<currency>Icelandic króna (pl.krónur)</currency>
+<isocurrency>ISK</isocurrency>
+<currensubunit>eyrir (pl.aurar)</currensubunit>
+</country>
+<country>
+<shortname>India</shortname>
+<fullname>Republic of India</fullname>
+<isocountry>IN</isocountry>
+<capital>New Delhi</capital>
+<citizen>Indian</citizen>
+<adjective>Indian</adjective>
+<currency>Indian rupee</currency>
+<isocurrency>INR</isocurrency>
+<currensubunit>paisa (pl.paise)</currensubunit>
+</country>
+<country>
+<shortname>Indonesia</shortname>
+<fullname>Republic of Indonesia</fullname>
+<isocountry>ID</isocountry>
+<capital>Jakarta</capital>
+<citizen>Indonesian</citizen>
+<adjective>Indonesian</adjective>
+<currency>Indonesian rupiah (inv.)</currency>
+<isocurrency>IDR</isocurrency>
+<currensubunit>sen (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Iran</shortname>
+<fullname>Islamic Republic of Iran</fullname>
+<isocountry>IR</isocountry>
+<capital>Tehran</capital>
+<citizen>Iranian</citizen>
+<adjective>Iranian</adjective>
+<currency>Iranian rial</currency>
+<isocurrency>IRR</isocurrency>
+<currensubunit>-</currensubunit>
+</country>
+<country>
+<shortname>Iraq</shortname>
+<fullname>Republic of Iraq</fullname>
+<isocountry>IQ</isocountry>
+<capital>Baghdad</capital>
+<citizen>Iraqi</citizen>
+<adjective>Iraqi</adjective>
+<currency>Iraqi dinar</currency>
+<isocurrency>IQD</isocurrency>
+<currensubunit>fils (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Ireland</shortname>
+<fullname>Ireland</fullname>
+<isocountry>IE </isocountry>
+<capital>Dublin</capital>
+<citizen>Irishman; Irishwoman</citizen>
+<adjective>Irish</adjective>
+<currency>Irish pound</currency>
+<isocurrency>IEP</isocurrency>
+<currensubunit>penny (pl.pence)</currensubunit>
+</country>
+<country>
+<shortname>Israel</shortname>
+<fullname>State of Israel</fullname>
+<isocountry>IL</isocountry>
+<capital>Jerusalem</capital>
+<citizen>Israeli</citizen>
+<adjective>Israeli</adjective>
+<currency>new shekel</currency>
+<isocurrency>ILS</isocurrency>
+<currensubunit>agora (pl.agorot)</currensubunit>
+</country>
+<country>
+<shortname>Italy</shortname>
+<fullname>Italian Republic</fullname>
+<isocountry>IT </isocountry>
+<capital>Rome</capital>
+<citizen>Italian</citizen>
+<adjective>Italian</adjective>
+<currency>Italian lira (pl. lire)</currency>
+<isocurrency>ITL</isocurrency>
+<currensubunit> </currensubunit>
+</country>
+<country>
+<shortname>Jamaica</shortname>
+<fullname>Jamaica</fullname>
+<isocountry>JM</isocountry>
+<capital>Kingston</capital>
+<citizen>Jamaican</citizen>
+<adjective>Jamaican</adjective>
+<currency>Jamaica dollar</currency>
+<isocurrency>JMD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Japan</shortname>
+<fullname>Japan</fullname>
+<isocountry>JP</isocountry>
+<capital>Tokyo</capital>
+<citizen>Japanese</citizen>
+<adjective>Japanese</adjective>
+<currency>yen (inv.)</currency>
+<isocurrency>JPY</isocurrency>
+<currensubunit>sen (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Jordan</shortname>
+<fullname>Hashemite Kingdom of Jordan</fullname>
+<isocountry>JO</isocountry>
+<capital>Amman</capital>
+<citizen>Jordanian</citizen>
+<adjective>Jordanian</adjective>
+<currency>Jordanian dinar</currency>
+<isocurrency>JOD</isocurrency>
+<currensubunit>fils (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Kazakhstan</shortname>
+<fullname>Republic of Kazakhstan</fullname>
+<isocountry>KZ</isocountry>
+<capital>Astana</capital>
+<citizen>Kazakh</citizen>
+<adjective>Kazakh</adjective>
+<currency>tenge (inv.)</currency>
+<isocurrency>KZT</isocurrency>
+<currensubunit>tiyn</currensubunit>
+</country>
+<country>
+<shortname>Kenya</shortname>
+<fullname>Republic of Kenya</fullname>
+<isocountry>KE</isocountry>
+<capital>Nairobi</capital>
+<citizen>Kenyan</citizen>
+<adjective>Kenyan</adjective>
+<currency>Kenyan shilling</currency>
+<isocurrency>KES</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Kiribati</shortname>
+<fullname>Republic of Kiribati</fullname>
+<isocountry>KI</isocountry>
+<capital>Bairiki</capital>
+<citizen>Kiribatian</citizen>
+<adjective>of Kiribati; Kiribatian</adjective>
+<currency>Australian dollar</currency>
+<isocurrency>AUD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Kuwait</shortname>
+<fullname>State of Kuwait</fullname>
+<isocountry>KW</isocountry>
+<capital>Kuwait City</capital>
+<citizen>Kuwaiti</citizen>
+<adjective>Kuwaiti</adjective>
+<currency>Kuwaiti dinar</currency>
+<isocurrency>KWD</isocurrency>
+<currensubunit>fils (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Kyrgyzstan</shortname>
+<fullname>Kyrgyz Republic</fullname>
+<isocountry>KG</isocountry>
+<capital>Bishkek</capital>
+<citizen>Kyrgyz</citizen>
+<adjective>Kyrgyz</adjective>
+<currency>som</currency>
+<isocurrency>KGS</isocurrency>
+<currensubunit>tyiyn</currensubunit>
+</country>
+<country>
+<shortname>Laos</shortname>
+<fullname>Lao People's Democratic Republic</fullname>
+<isocountry>LA</isocountry>
+<capital>Vientiane</capital>
+<citizen>Lao</citizen>
+<adjective>Lao</adjective>
+<currency>kip (inv.)</currency>
+<isocurrency>LAK</isocurrency>
+<currensubunit>at (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Latvia</shortname>
+<fullname>Republic of Latvia</fullname>
+<isocountry>LV</isocountry>
+<capital>Riga</capital>
+<citizen>Latvian</citizen>
+<adjective>Latvian</adjective>
+<currency>lats (pl. lati)</currency>
+<isocurrency>LVL</isocurrency>
+<currensubunit>santims (pl. santimi)</currensubunit>
+</country>
+<country>
+<shortname>Lebanon</shortname>
+<fullname>Lebanese Republic</fullname>
+<isocountry>LB</isocountry>
+<capital>Beirut</capital>
+<citizen>Lebanese</citizen>
+<adjective>Lebanese</adjective>
+<currency>Lebanese pound</currency>
+<isocurrency>LBP</isocurrency>
+<currensubunit>piastre</currensubunit>
+</country>
+<country>
+<shortname>Lesotho</shortname>
+<fullname>Kingdom of Lesotho</fullname>
+<isocountry>LS</isocountry>
+<capital>Maseru</capital>
+<citizen>Basotho</citizen>
+<adjective>of Lesotho</adjective>
+<currency>loti (pl. maloti)</currency>
+<isocurrency>LSL</isocurrency>
+<currensubunit>sente (pl. lisente)</currensubunit>
+</country>
+<country>
+<shortname>Liberia</shortname>
+<fullname>Republic of Liberia</fullname>
+<isocountry>LR</isocountry>
+<capital>Monrovia</capital>
+<citizen>Liberian</citizen>
+<adjective>Liberian</adjective>
+<currency>Liberian dollar</currency>
+<isocurrency>LRD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Libya</shortname>
+<fullname>Socialist People's Libyan Arab Jamahiriya</fullname>
+<isocountry>LY</isocountry>
+<capital>Tripoli</capital>
+<citizen>Libyan</citizen>
+<adjective>Libyan</adjective>
+<currency>Libyan dinar</currency>
+<isocurrency>LYD</isocurrency>
+<currensubunit>dirham</currensubunit>
+</country>
+<country>
+<shortname>Liechtenstein</shortname>
+<fullname>Principality of Liechtenstein</fullname>
+<isocountry>LI</isocountry>
+<capital>Vaduz</capital>
+<citizen>Liechtensteiner</citizen>
+<adjective>of Liechtenstein</adjective>
+<currency>Swiss franc</currency>
+<isocurrency>CHF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Lithuania</shortname>
+<fullname>Republic of Lithuania</fullname>
+<isocountry>LT</isocountry>
+<capital>Vilnius</capital>
+<citizen>Lithuanian</citizen>
+<adjective>Lithuanian</adjective>
+<currency>litas (pl. litai)</currency>
+<isocurrency>LTL</isocurrency>
+<currensubunit>centas (pl. centai)</currensubunit>
+</country>
+<country>
+<shortname>Luxembourg</shortname>
+<fullname>Grand Duchy of Luxembourg</fullname>
+<isocountry>LU </isocountry>
+<capital>Luxembourg</capital>
+<citizen>Luxembourger</citizen>
+<adjective>Luxembourgish; of Luxembourg</adjective>
+<currency>Luxembourg franc</currency>
+<isocurrency>LUF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Macao</shortname>
+<fullname>Macao</fullname>
+<isocountry>MO</isocountry>
+<capital>Macao</capital>
+<citizen>Macanese</citizen>
+<adjective>Macanese; of Macao</adjective>
+<currency>pataca</currency>
+<isocurrency>MOP</isocurrency>
+<currensubunit>avo</currensubunit>
+</country>
+<country>
+<shortname>-</shortname>
+<fullname>Former Yugoslav Republic of Macedonia</fullname>
+<isocountry>MK</isocountry>
+<capital>Skopje</capital>
+<citizen>Macedonian</citizen>
+<adjective>Macedonian</adjective>
+<currency>denar (inv.)</currency>
+<isocurrency>MKD</isocurrency>
+<currensubunit>deni (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Madagascar</shortname>
+<fullname>Republic of Madagascar</fullname>
+<isocountry>MG</isocountry>
+<capital>Antananarivo</capital>
+<citizen>Malagasy</citizen>
+<adjective>Malagasy</adjective>
+<currency>Malagasy franc</currency>
+<isocurrency>MGF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Malawi</shortname>
+<fullname>Republic of Malawi</fullname>
+<isocountry>MW</isocountry>
+<capital>Lilongwe</capital>
+<citizen>Malawian</citizen>
+<adjective>Malawian</adjective>
+<currency>Malawi kwacha (inv.)</currency>
+<isocurrency>MWK</isocurrency>
+<currensubunit>tambala (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Malaysia</shortname>
+<fullname>Malaysia</fullname>
+<isocountry>MY</isocountry>
+<capital>Kuala Lumpur</capital>
+<citizen>Malaysian</citizen>
+<adjective>Malaysian</adjective>
+<currency>Malaysian ringgit (inv.)</currency>
+<isocurrency>MYR</isocurrency>
+<currensubunit>sen (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Maldives</shortname>
+<fullname>Republic of Maldives</fullname>
+<isocountry>MV</isocountry>
+<capital>Malé</capital>
+<citizen>Maldivian</citizen>
+<adjective>Maldivian</adjective>
+<currency>rufiyaa</currency>
+<isocurrency>MVR</isocurrency>
+<currensubunit>laari (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Mali</shortname>
+<fullname>Republic of Mali</fullname>
+<isocountry>ML</isocountry>
+<capital>Bamako</capital>
+<citizen>Malian</citizen>
+<adjective>Malian</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XOF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Malta</shortname>
+<fullname>Republic of Malta</fullname>
+<isocountry>MT</isocountry>
+<capital>Valletta</capital>
+<citizen>Maltese</citizen>
+<adjective>Maltese</adjective>
+<currency>Maltese lira</currency>
+<isocurrency>MTL</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Marshall Islands</shortname>
+<fullname>Republic of the Marshall Islands</fullname>
+<isocountry>MH</isocountry>
+<capital>Majuro</capital>
+<citizen>Marshallese</citizen>
+<adjective>Marshallese; of the Marshall Islands</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Martinique</shortname>
+<fullname>Department of Martinique</fullname>
+<isocountry>MQ</isocountry>
+<capital>Fort-de-France</capital>
+<citizen>Martinican</citizen>
+<adjective>Martinican; of Martinique</adjective>
+<currency>French franc</currency>
+<isocurrency>FRF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Mauritania</shortname>
+<fullname>Islamic Republic of Mauritania</fullname>
+<isocountry>MR</isocountry>
+<capital>Nouakchott</capital>
+<citizen>Mauritanian</citizen>
+<adjective>Mauritanian</adjective>
+<currency>Mauritanian ouguiya</currency>
+<isocurrency>MRO</isocurrency>
+<currensubunit>khoum</currensubunit>
+</country>
+<country>
+<shortname>Mauritius</shortname>
+<fullname>Republic of Mauritius</fullname>
+<isocountry>MU</isocountry>
+<capital>Port Louis</capital>
+<citizen>Mauritian</citizen>
+<adjective>Mauritian</adjective>
+<currency>Mauritian rupee</currency>
+<isocurrency>MUR</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Mayotte</shortname>
+<fullname>Territorial collectivity of Mayotte</fullname>
+<isocountry>YT</isocountry>
+<capital>Mamoudzou</capital>
+<citizen>Mahorais</citizen>
+<adjective>Mahoran</adjective>
+<currency>French franc</currency>
+<isocurrency>FRF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Mexico</shortname>
+<fullname>United Mexican States</fullname>
+<isocountry>MX</isocountry>
+<capital>Mexico City</capital>
+<citizen>Mexican</citizen>
+<adjective>Mexican</adjective>
+<currency>Mexican peso</currency>
+<isocurrency>MXN</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Micronesia</shortname>
+<fullname>Federated States of Micronesia</fullname>
+<isocountry>FM</isocountry>
+<capital>Palikir</capital>
+<citizen>Micronesian</citizen>
+<adjective>of Micronesia</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Moldova</shortname>
+<fullname>Republic of Moldova</fullname>
+<isocountry>MD</isocountry>
+<capital>Chisinau</capital>
+<citizen>Moldovan</citizen>
+<adjective>Moldovan</adjective>
+<currency>Moldovan leu (pl. lei)</currency>
+<isocurrency>MDL</isocurrency>
+<currensubunit>ban (pl. bani)</currensubunit>
+</country>
+<country>
+<shortname>Monaco</shortname>
+<fullname>Principality of Monaco</fullname>
+<isocountry>MC</isocountry>
+<capital>Monaco</capital>
+<citizen>Monegasque</citizen>
+<adjective>Monegasque</adjective>
+<currency>French franc</currency>
+<isocurrency>FRF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Mongolia</shortname>
+<fullname>Mongolia</fullname>
+<isocountry>MN</isocountry>
+<capital>Ulan Bator</capital>
+<citizen>Mongolian</citizen>
+<adjective>Mongolian</adjective>
+<currency>tugrik</currency>
+<isocurrency>MNT</isocurrency>
+<currensubunit>möngö (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Montserrat</shortname>
+<fullname>Montserrat</fullname>
+<isocountry>MS</isocountry>
+<capital>Plymouth</capital>
+<citizen>Montserratian</citizen>
+<adjective>of Montserrat; Montserratian</adjective>
+<currency>Eastern Caribbean dollar</currency>
+<isocurrency>XCD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Morocco</shortname>
+<fullname>Kingdom of Morocco</fullname>
+<isocountry>MA</isocountry>
+<capital>Rabat</capital>
+<citizen>Moroccan</citizen>
+<adjective>Moroccan</adjective>
+<currency>Moroccan dirham</currency>
+<isocurrency>MAD</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Mozambique</shortname>
+<fullname>Republic of Mozambique</fullname>
+<isocountry>MZ</isocountry>
+<capital>Maputo</capital>
+<citizen>Mozambican</citizen>
+<adjective>Mozambican</adjective>
+<currency>metical (pl. meticais)</currency>
+<isocurrency>MZM</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Myanmar</shortname>
+<fullname>Union of Myanmar</fullname>
+<isocountry>MM</isocountry>
+<capital>Yangon</capital>
+<citizen>Burmese</citizen>
+<adjective>Burmese; of Myanmar</adjective>
+<currency>kyat</currency>
+<isocurrency>MMK</isocurrency>
+<currensubunit>pya</currensubunit>
+</country>
+<country>
+<shortname>Namibia</shortname>
+<fullname>Republic of Namibia</fullname>
+<isocountry>NA</isocountry>
+<capital>Windhoek</capital>
+<citizen>Namibian</citizen>
+<adjective>Namibian</adjective>
+<currency>Namibian dollar</currency>
+<isocurrency>NAD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Nauru</shortname>
+<fullname>Republic of Nauru</fullname>
+<isocountry>NR</isocountry>
+<capital>Yaren</capital>
+<citizen>Nauruan</citizen>
+<adjective>Nauruan</adjective>
+<currency>Australian dollar</currency>
+<isocurrency>AUD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Nepal</shortname>
+<fullname>Kingdom of Nepal</fullname>
+<isocountry>NP</isocountry>
+<capital>Kathmandu</capital>
+<citizen>Nepalese</citizen>
+<adjective>Nepalese</adjective>
+<currency>Nepalese rupee</currency>
+<isocurrency>NPR</isocurrency>
+<currensubunit>paisa (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Netherlands</shortname>
+<fullname>Kingdom of the Netherlands</fullname>
+<isocountry>NL </isocountry>
+<capital>Amsterdam</capital>
+<citizen>Dutchman; Netherlander</citizen>
+<adjective>Netherlands; Dutch</adjective>
+<currency>Dutch guilder</currency>
+<isocurrency>NLG</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Netherlands Antilles</shortname>
+<fullname>Netherlands Antilles</fullname>
+<isocountry>AN</isocountry>
+<capital>Willemstad</capital>
+<citizen>Antillean</citizen>
+<adjective>of the Netherlands Antilles</adjective>
+<currency>Netherlands Antillean guilder</currency>
+<isocurrency>ANG</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>New Caledonia</shortname>
+<fullname>Territory of New Caledonia and Dependencies</fullname>
+<isocountry>NC</isocountry>
+<capital>Nouméa</capital>
+<citizen>New Caledonian</citizen>
+<adjective>New Caledonian</adjective>
+<currency>CFP franc</currency>
+<isocurrency>XPF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>New Zealand</shortname>
+<fullname>New Zealand</fullname>
+<isocountry>NZ</isocountry>
+<capital>Wellington</capital>
+<citizen>New Zealander</citizen>
+<adjective>of New Zealand</adjective>
+<currency>New Zealand dollar</currency>
+<isocurrency>NZD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Nicaragua</shortname>
+<fullname>Republic of Nicaragua</fullname>
+<isocountry>NI</isocountry>
+<capital>Managua</capital>
+<citizen>Nicaraguan</citizen>
+<adjective>Nicaraguan</adjective>
+<currency>córdoba</currency>
+<isocurrency>NIO</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Niger</shortname>
+<fullname>Republic of Niger</fullname>
+<isocountry>NE</isocountry>
+<capital>Niamey</capital>
+<citizen>Nigerien</citizen>
+<adjective>Nigerien; of Niger</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XOF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Nigeria</shortname>
+<fullname>Federal Republic of Nigeria</fullname>
+<isocountry>NG</isocountry>
+<capital>Abuja</capital>
+<citizen>Nigerian</citizen>
+<adjective>Nigerian</adjective>
+<currency>naira (inv.)</currency>
+<isocurrency>NGN</isocurrency>
+<currensubunit>kobo (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Niue</shortname>
+<fullname>Niue</fullname>
+<isocountry>NU</isocountry>
+<capital>Alofi</capital>
+<citizen>Niuean</citizen>
+<adjective>of Niue; Niuean</adjective>
+<currency>New Zealand dollar</currency>
+<isocurrency>NZD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Norfolk Island</shortname>
+<fullname>Territory of Norfolk Island</fullname>
+<isocountry>NF</isocountry>
+<capital>Kingston</capital>
+<citizen>Norfolk Islander</citizen>
+<adjective>of Norfolk Island</adjective>
+<currency>Australian dollar</currency>
+<isocurrency>AUD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>North Korea</shortname>
+<fullname>Democratic People's Republic of Korea</fullname>
+<isocountry>KP</isocountry>
+<capital>Pyongyang</capital>
+<citizen>North Korean</citizen>
+<adjective>North Korean</adjective>
+<currency>North Korean won (inv.)
+</currency>
+<isocurrency>KPW</isocurrency>
+<currensubunit>chun (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Northern Marianas</shortname>
+<fullname>Commonwealth of the Northern Mariana
+Islands</fullname>
+<isocountry>MP</isocountry>
+<capital>Saipan</capital>
+<citizen>Northern Mariana Islander</citizen>
+<adjective>of the Northern Mariana Islands</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Norway</shortname>
+<fullname>Kingdom of Norway</fullname>
+<isocountry>NO</isocountry>
+<capital>Oslo</capital>
+<citizen>Norwegian</citizen>
+<adjective>Norwegian</adjective>
+<currency>Norwegian krone (pl.kroner)</currency>
+<isocurrency>NOK</isocurrency>
+<currensubunit>øre (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Oman</shortname>
+<fullname>Sultanate of Oman</fullname>
+<isocountry>OM</isocountry>
+<capital>Muscat</capital>
+<citizen>Omani</citizen>
+<adjective>Omani</adjective>
+<currency>Omani rial</currency>
+<isocurrency>OMR</isocurrency>
+<currensubunit>baiza</currensubunit>
+</country>
+<country>
+<shortname>Pakistan</shortname>
+<fullname>Islamic Republic of Pakistan</fullname>
+<isocountry>PK</isocountry>
+<capital>Islamabad</capital>
+<citizen>Pakistani</citizen>
+<adjective>Pakistani; of Pakistan</adjective>
+<currency>Pakistani rupee</currency>
+<isocurrency>PKR</isocurrency>
+<currensubunit>paisa</currensubunit>
+</country>
+<country>
+<shortname>Palau</shortname>
+<fullname>Republic of Palau</fullname>
+<isocountry>PW</isocountry>
+<capital>Koror</capital>
+<citizen>Palauan</citizen>
+<adjective>of Palau; Palauan</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Panama</shortname>
+<fullname>Republic of Panama</fullname>
+<isocountry>PA</isocountry>
+<capital>Panama City</capital>
+<citizen>Panamanian</citizen>
+<adjective>Panamanian</adjective>
+<currency>balboa</currency>
+<isocurrency>PAB</isocurrency>
+<currensubunit>centésimo</currensubunit>
+</country>
+<country>
+<shortname>Papua New Guinea</shortname>
+<fullname>Independent State of Papua New Guinea</fullname>
+<isocountry>PG</isocountry>
+<capital>Port Moresby</capital>
+<citizen>Papua New Guinean</citizen>
+<adjective>of Papua New Guinea</adjective>
+<currency>kina (inv.)</currency>
+<isocurrency>PGK</isocurrency>
+<currensubunit>toea (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Paraguay</shortname>
+<fullname>Republic of Paraguay</fullname>
+<isocountry>PY</isocountry>
+<capital>Asunción</capital>
+<citizen>Paraguayan</citizen>
+<adjective>Paraguayan</adjective>
+<currency>guaraní (pl.guaraníes)</currency>
+<isocurrency>PYG</isocurrency>
+<currensubunit>céntimo</currensubunit>
+</country>
+<country>
+<shortname>Peru</shortname>
+<fullname>Republic of Peru</fullname>
+<isocountry>PE</isocountry>
+<capital>Lima</capital>
+<citizen>Peruvian</citizen>
+<adjective>Peruvian</adjective>
+<currency>new sol</currency>
+<isocurrency>PEN</isocurrency>
+<currensubunit>céntimo</currensubunit>
+</country>
+<country>
+<shortname>Philippines</shortname>
+<fullname>Republic of the Philippines</fullname>
+<isocountry>PH</isocountry>
+<capital>Manila</capital>
+<citizen>Filipino</citizen>
+<adjective>Philippine</adjective>
+<currency>Philippine peso</currency>
+<isocurrency>PHP</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Pitcairn Islands</shortname>
+<fullname>Pitcairn Islands</fullname>
+<isocountry>PN</isocountry>
+<capital>Adamstown</capital>
+<citizen>Pitcairner</citizen>
+<adjective>Pitcairner; of Pitcairn</adjective>
+<currency>New Zealand dollar</currency>
+<isocurrency>NZD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Poland</shortname>
+<fullname>Republic of Poland</fullname>
+<isocountry>PL</isocountry>
+<capital>Warsaw</capital>
+<citizen>Pole</citizen>
+<adjective>Polish</adjective>
+<currency>zloty</currency>
+<isocurrency>PLN</isocurrency>
+<currensubunit>grosz (pl.groszy)</currensubunit>
+</country>
+<country>
+<shortname>Portugal</shortname>
+<fullname>Portuguese Republic</fullname>
+<isocountry>PT </isocountry>
+<capital>Lisbon</capital>
+<citizen>Portuguese</citizen>
+<adjective>Portuguese</adjective>
+<currency>Portuguese escudo</currency>
+<isocurrency>PTE</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Puerto Rico</shortname>
+<fullname>Commonwealth of Puerto Rico</fullname>
+<isocountry>PR</isocountry>
+<capital>San Juan</capital>
+<citizen>Puerto Rican</citizen>
+<adjective>Puerto Rican</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Qatar</shortname>
+<fullname>State of Qatar</fullname>
+<isocountry>QA</isocountry>
+<capital>Doha</capital>
+<citizen>Qatari</citizen>
+<adjective>Qatari</adjective>
+<currency>Qatari riyal</currency>
+<isocurrency>QAR</isocurrency>
+<currensubunit>dirham</currensubunit>
+</country>
+<country>
+<shortname>Réunion</shortname>
+<fullname>Department of Réunion</fullname>
+<isocountry>RE</isocountry>
+<capital>Saint-Denis</capital>
+<citizen>Reunionese</citizen>
+<adjective>of Réunion; Reunionese</adjective>
+<currency>French franc</currency>
+<isocurrency>FRF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Romania</shortname>
+<fullname>Romania</fullname>
+<isocountry>RO</isocountry>
+<capital>Bucharest</capital>
+<citizen>Romanian</citizen>
+<adjective>Romanian</adjective>
+<currency>Romanian leu (pl. lei)</currency>
+<isocurrency>ROL</isocurrency>
+<currensubunit>ban (pl. bani)</currensubunit>
+</country>
+<country>
+<shortname>Russia</shortname>
+<fullname>Russian Federation</fullname>
+<isocountry>RU</isocountry>
+<capital>Moscow</capital>
+<citizen>Russian</citizen>
+<adjective>Russian</adjective>
+<currency>new rouble</currency>
+<isocurrency>RUR</isocurrency>
+<currensubunit>kopek</currensubunit>
+</country>
+<country>
+<shortname>Rwanda</shortname>
+<fullname>Rwandese Republic</fullname>
+<isocountry>RW</isocountry>
+<capital>Kigali</capital>
+<citizen>Rwandan; Rwandese</citizen>
+<adjective>Rwandan; Rwandese</adjective>
+<currency>Rwandese franc</currency>
+<isocurrency>RWF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Saint Helena</shortname>
+<fullname>Saint Helena and Dependencies</fullname>
+<isocountry>SH</isocountry>
+<capital>Jamestown</capital>
+<citizen>Saint Helenian; Saint</citizen>
+<adjective>Saint Helenian; of Saint Helena</adjective>
+<currency>Saint Helena pound</currency>
+<isocurrency>SHP</isocurrency>
+<currensubunit>penny (pl.pence)</currensubunit>
+</country>
+<country>
+<shortname>Saint Kitts and Nevis</shortname>
+<fullname>Federation of Saint Kitts and Nevis</fullname>
+<isocountry>KN</isocountry>
+<capital>Basseterre</capital>
+<citizen>Kittsian; Nevisian</citizen>
+<adjective>of Saint Kitts and Nevis</adjective>
+<currency>Eastern Caribbean dollar</currency>
+<isocurrency>XCD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Saint Lucia</shortname>
+<fullname>Saint Lucia</fullname>
+<isocountry>LC</isocountry>
+<capital>Castries</capital>
+<citizen>Saint Lucian</citizen>
+<adjective>Saint Lucian</adjective>
+<currency>Eastern Caribbean dollar</currency>
+<isocurrency>XCD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Saint Pierre and Miquelon</shortname>
+<fullname>Territorial collectivity of Saint Pierre and
+Miquelon</fullname>
+<isocountry>PM</isocountry>
+<capital>Saint-Pierre</capital>
+<citizen>St-Pierrais; Miquelonnais</citizen>
+<adjective>of Saint Pierre and Miquelon</adjective>
+<currency>French franc</currency>
+<isocurrency>FRF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Saint Vincent and the Grenadines</shortname>
+<fullname>Saint Vincent and the Grenadines</fullname>
+<isocountry>VC</isocountry>
+<capital>Kingstown</capital>
+<citizen>Vincentian</citizen>
+<adjective>Vincentian; of Saint Vincent and the
+Grenadines</adjective>
+<currency>Eastern Caribbean dollar</currency>
+<isocurrency>XCD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Samoa</shortname>
+<fullname>Independent State of Samoa</fullname>
+<isocountry>WS</isocountry>
+<capital>Apia</capital>
+<citizen>Samoan</citizen>
+<adjective>Samoan</adjective>
+<currency>tala (inv.)</currency>
+<isocurrency>WST</isocurrency>
+<currensubunit>sene (inv.)</currensubunit>
+</country>
+<country>
+<shortname>San Marino</shortname>
+<fullname>Republic of San Marino</fullname>
+<isocountry>SM</isocountry>
+<capital>San Marino</capital>
+<citizen>San Marinese</citizen>
+<adjective>of San Marino</adjective>
+<currency>Italian lira</currency>
+<isocurrency>ITL</isocurrency>
+<currensubunit> </currensubunit>
+</country>
+<country>
+<shortname>São Tomé and Príncipe</shortname>
+<fullname>Democratic Republic of São Tomé and
+Príncipe</fullname>
+<isocountry>ST</isocountry>
+<capital>São Tomé</capital>
+<citizen>São Toméan</citizen>
+<adjective>of São Tomé and Príncipe; São Toméan</adjective>
+<currency>dobra</currency>
+<isocurrency>STD</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Saudi Arabia</shortname>
+<fullname>Kingdom of Saudi Arabia</fullname>
+<isocountry>SA</isocountry>
+<capital>Riyadh</capital>
+<citizen>Saudi Arabian</citizen>
+<adjective>Saudi Arabian</adjective>
+<currency>Saudi riyal</currency>
+<isocurrency>SAR</isocurrency>
+<currensubunit>halala</currensubunit>
+</country>
+<country>
+<shortname>Senegal</shortname>
+<fullname>Republic of Senegal</fullname>
+<isocountry>SN</isocountry>
+<capital>Dakar</capital>
+<citizen>Senegalese</citizen>
+<adjective>Senegalese</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XOF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Seychelles</shortname>
+<fullname>Republic of Seychelles</fullname>
+<isocountry>SC</isocountry>
+<capital>Victoria</capital>
+<citizen>Seychellois</citizen>
+<adjective>of Seychelles</adjective>
+<currency>Seychelles rupee</currency>
+<isocurrency>SCR</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Sierra Leone</shortname>
+<fullname>Republic of Sierra Leone</fullname>
+<isocountry>SL</isocountry>
+<capital>Freetown</capital>
+<citizen>Sierra Leonean</citizen>
+<adjective>Sierra Leonean</adjective>
+<currency>leone</currency>
+<isocurrency>SLL</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Singapore</shortname>
+<fullname>Republic of Singapore</fullname>
+<isocountry>SG</isocountry>
+<capital>Singapore</capital>
+<citizen>Singaporean</citizen>
+<adjective>Singaporean</adjective>
+<currency>Singapore dollar</currency>
+<isocurrency>SGD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Slovakia</shortname>
+<fullname>Slovak Republic</fullname>
+<isocountry>SK</isocountry>
+<capital>Bratislava</capital>
+<citizen>Slovak</citizen>
+<adjective>Slovak</adjective>
+<currency>Slovak koruna (pl.koruny)</currency>
+<isocurrency>SKK</isocurrency>
+<currensubunit>halier (pl.haliere)</currensubunit>
+</country>
+<country>
+<shortname>Slovenia</shortname>
+<fullname>Republic of Slovenia</fullname>
+<isocountry>SI</isocountry>
+<capital>Ljubljana</capital>
+<citizen>Slovene</citizen>
+<adjective>Slovene; Slovenian</adjective>
+<currency>tolar</currency>
+<isocurrency>SIT</isocurrency>
+<currensubunit>stotin</currensubunit>
+</country>
+<country>
+<shortname>Solomon Islands</shortname>
+<fullname>Solomon Islands</fullname>
+<isocountry>SB</isocountry>
+<capital>Honiara</capital>
+<citizen>Solomon Islander</citizen>
+<adjective>of the Solomon Islands</adjective>
+<currency>Solomon Islands dollar</currency>
+<isocurrency>SBD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Somalia</shortname>
+<fullname>Somali Democratic Republic</fullname>
+<isocountry>SO</isocountry>
+<capital>Mogadishu</capital>
+<citizen>Somali</citizen>
+<adjective>Somali</adjective>
+<currency>Somali shilling</currency>
+<isocurrency>SOS</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>South Africa</shortname>
+<fullname>Republic of South Africa</fullname>
+<isocountry>ZA</isocountry>
+<capital>Pretoria</capital>
+<citizen>South African</citizen>
+<adjective>South African</adjective>
+<currency>rand</currency>
+<isocurrency>ZAR</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>South Georgia and the South Sandwich Islands</shortname>
+<fullname>South Georgia and the South Sandwich
+Islands</fullname>
+<isocountry>GS</isocountry>
+<capital>-</capital>
+<citizen>-</citizen>
+<adjective>of South Georgia and the South Sandwich
+Islands</adjective>
+<currency> </currency>
+<isocurrency> </isocurrency>
+<currensubunit> </currensubunit>
+</country>
+<country>
+<shortname>South Korea</shortname>
+<fullname>Republic of Korea</fullname>
+<isocountry>KR</isocountry>
+<capital>Seoul</capital>
+<citizen>South Korean</citizen>
+<adjective>South Korean</adjective>
+<currency>South Korean won (inv.)</currency>
+<isocurrency>KRW</isocurrency>
+<currensubunit>chun (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Spain</shortname>
+<fullname>Kingdom of Spain</fullname>
+<isocountry>ES </isocountry>
+<capital>Madrid</capital>
+<citizen>Spaniard</citizen>
+<adjective>Spanish</adjective>
+<currency>Spanish peseta</currency>
+<isocurrency>ESP</isocurrency>
+<currensubunit>céntimo</currensubunit>
+</country>
+<country>
+<shortname>Sri Lanka</shortname>
+<fullname>Democratic Socialist Republic of Sri Lanka</fullname>
+<isocountry>LK</isocountry>
+<capital>Colombo</capital>
+<citizen>Sri Lankan</citizen>
+<adjective>Sri Lankan; of Sri Lanka</adjective>
+<currency>Sri Lanka rupee</currency>
+<isocurrency>LKR</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Sudan</shortname>
+<fullname>Republic of Sudan</fullname>
+<isocountry>SD</isocountry>
+<capital>Khartoum</capital>
+<citizen>Sudanese</citizen>
+<adjective>Sudanese</adjective>
+<currency>Sudanese pound</currency>
+<isocurrency>SDD</isocurrency>
+<currensubunit>piastre</currensubunit>
+</country>
+<country>
+<shortname>Suriname</shortname>
+<fullname>Republic of Suriname</fullname>
+<isocountry>SR</isocountry>
+<capital>Paramaribo</capital>
+<citizen>Surinamese</citizen>
+<adjective>Surinamese</adjective>
+<currency>Suriname guilder</currency>
+<isocurrency>SRG</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Svalbard and Jan Mayen</shortname>
+<fullname>Svalbard and Jan Mayen Islands</fullname>
+<isocountry>SJ</isocountry>
+<capital>Longyearbyen (on Spitsbergen, Svalbard)</capital>
+<citizen>-</citizen>
+<adjective>of Svalbard; of Jan Mayen</adjective>
+<currency>Norwegian krone (pl.kroner)</currency>
+<isocurrency>NOK</isocurrency>
+<currensubunit>øre (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Swaziland</shortname>
+<fullname>Kingdom of Swaziland</fullname>
+<isocountry>SZ</isocountry>
+<capital>Mbabane</capital>
+<citizen>Swazi</citizen>
+<adjective>Swazi</adjective>
+<currency>lilangeni (pl.emalangeni)</currency>
+<isocurrency>SZL</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Sweden</shortname>
+<fullname>Kingdom of Sweden</fullname>
+<isocountry>SE </isocountry>
+<capital>Stockholm</capital>
+<citizen>Swede</citizen>
+<adjective>Swedish</adjective>
+<currency>Swedish krona (pl.kronor)</currency>
+<isocurrency>SEK</isocurrency>
+<currensubunit>öre (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Switzerland</shortname>
+<fullname>Swiss Confederation</fullname>
+<isocountry>CH</isocountry>
+<capital>Berne</capital>
+<citizen>Swiss</citizen>
+<adjective>Swiss</adjective>
+<currency>Swiss franc</currency>
+<isocurrency>CHF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Syria</shortname>
+<fullname>Syrian Arab Republic</fullname>
+<isocountry>SY</isocountry>
+<capital>Damascus</capital>
+<citizen>Syrian</citizen>
+<adjective>Syrian</adjective>
+<currency>Syrian pound</currency>
+<isocurrency>SYP</isocurrency>
+<currensubunit>piastre</currensubunit>
+</country>
+<country>
+<shortname>Taiwan</shortname>
+<fullname>Republic of China</fullname>
+<isocountry>TW</isocountry>
+<capital>Taipei</capital>
+<citizen>Taiwanese</citizen>
+<adjective>Taiwanese; of Taiwan</adjective>
+<currency>new Taiwan dollar</currency>
+<isocurrency>TWD</isocurrency>
+<currensubunit>fen (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Tajikistan</shortname>
+<fullname>Republic of Tajikistan</fullname>
+<isocountry>TJ</isocountry>
+<capital>Dushanbe</capital>
+<citizen>Tajik</citizen>
+<adjective>Tajik</adjective>
+<currency>Tajik rouble</currency>
+<isocurrency>TJR</isocurrency>
+<currensubunit>kopek</currensubunit>
+</country>
+<country>
+<shortname>Tanzania</shortname>
+<fullname>United Republic of Tanzania</fullname>
+<isocountry>TZ</isocountry>
+<capital>Dodoma</capital>
+<citizen>Tanzanian</citizen>
+<adjective>Tanzanian</adjective>
+<currency>Tanzanian shilling</currency>
+<isocurrency>TZS</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Thailand</shortname>
+<fullname>Kingdom of Thailand</fullname>
+<isocountry>TH</isocountry>
+<capital>Bangkok</capital>
+<citizen>Thai</citizen>
+<adjective>Thai</adjective>
+<currency>baht (inv.)</currency>
+<isocurrency>THB</isocurrency>
+<currensubunit>satang (inv.)</currensubunit>
+</country>
+<country>
+<shortname>The Bahamas</shortname>
+<fullname>Commonwealth of The Bahamas</fullname>
+<isocountry>BS</isocountry>
+<capital>Nassau</capital>
+<citizen>Bahamian</citizen>
+<adjective>Bahamian</adjective>
+<currency>Bahamian dollar</currency>
+<isocurrency>BSD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>The Comoros</shortname>
+<fullname>Islamic Federal Republic of The Comoros</fullname>
+<isocountry>KM</isocountry>
+<capital>Moroni</capital>
+<citizen>Comorian</citizen>
+<adjective>Comorian</adjective>
+<currency>Comorian franc</currency>
+<isocurrency>KMF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>The Gambia</shortname>
+<fullname>Republic of The Gambia</fullname>
+<isocountry>GM</isocountry>
+<capital>Banjul</capital>
+<citizen>Gambian</citizen>
+<adjective>Gambian</adjective>
+<currency>dalasi (inv.)</currency>
+<isocurrency>GMD</isocurrency>
+<currensubunit>butut</currensubunit>
+</country>
+<country>
+<shortname>Togo</shortname>
+<fullname>Togolese Republic</fullname>
+<isocountry>TG</isocountry>
+<capital>Lomé</capital>
+<citizen>Togolese</citizen>
+<adjective>Togolese</adjective>
+<currency>CFA franc</currency>
+<isocurrency>XOF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Tokelau</shortname>
+<fullname>Tokelau</fullname>
+<isocountry>TK</isocountry>
+<capital>Fakaofo</capital>
+<citizen>Tokelauan</citizen>
+<adjective>of Tokelau; Tokelauan</adjective>
+<currency>New Zealand dollar</currency>
+<isocurrency>NZD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Tonga</shortname>
+<fullname>Kingdom of Tonga</fullname>
+<isocountry>TO</isocountry>
+<capital>Nuku'alofa</capital>
+<citizen>Tongan</citizen>
+<adjective>Tongan</adjective>
+<currency>pa'anga (inv.)</currency>
+<isocurrency>TOP</isocurrency>
+<currensubunit>seniti (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Trinidad and Tobago</shortname>
+<fullname>Republic of Trinidad and Tobago</fullname>
+<isocountry>TT</isocountry>
+<capital>Port of Spain</capital>
+<citizen>Trinidadian; Tobagonian</citizen>
+<adjective>of Trinidad and Tobago</adjective>
+<currency>Trinidad and Tobago dollar</currency>
+<isocurrency>TTD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Tunisia</shortname>
+<fullname>Republic of Tunisia</fullname>
+<isocountry>TN</isocountry>
+<capital>Tunis</capital>
+<citizen>Tunisian</citizen>
+<adjective>Tunisian</adjective>
+<currency>Tunisian dinar</currency>
+<isocurrency>TND</isocurrency>
+<currensubunit>millime</currensubunit>
+</country>
+<country>
+<shortname>Turkey</shortname>
+<fullname>Republic of Turkey</fullname>
+<isocountry>TR</isocountry>
+<capital>Ankara</capital>
+<citizen>Turk</citizen>
+<adjective>Turkish</adjective>
+<currency>Turkish lira</currency>
+<isocurrency>TRL</isocurrency>
+<currensubunit>kurus (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Turkmenistan</shortname>
+<fullname>Turkmenistan</fullname>
+<isocountry>TM</isocountry>
+<capital>Ashkhabad</capital>
+<citizen>Turkmen</citizen>
+<adjective>Turkmen</adjective>
+<currency>Turkmen manat (inv.)</currency>
+<isocurrency>TMM</isocurrency>
+<currensubunit>tenge (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Turks and Caicos Islands</shortname>
+<fullname>Turks and Caicos Islands</fullname>
+<isocountry>TC</isocountry>
+<capital>Cockburn Town</capital>
+<citizen>Turks and Caicos Islander</citizen>
+<adjective>of the Turks and Caicos Islands
+</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Tuvalu</shortname>
+<fullname>Tuvalu</fullname>
+<isocountry>TV</isocountry>
+<capital>Fongafale</capital>
+<citizen>Tuvaluan</citizen>
+<adjective>Tuvaluan</adjective>
+<currency>Australian dollar</currency>
+<isocurrency>AUD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Uganda</shortname>
+<fullname>Republic of Uganda</fullname>
+<isocountry>UG</isocountry>
+<capital>Kampala</capital>
+<citizen>Ugandan</citizen>
+<adjective>Ugandan</adjective>
+<currency>Uganda shilling</currency>
+<isocurrency>UGX</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Ukraine</shortname>
+<fullname>Ukraine</fullname>
+<isocountry>UA</isocountry>
+<capital>Kiev</capital>
+<citizen>Ukrainian</citizen>
+<adjective>Ukrainian</adjective>
+<currency>hryvnia</currency>
+<isocurrency>UAH</isocurrency>
+<currensubunit>kopiyka</currensubunit>
+</country>
+<country>
+<shortname>United Arab Emirates</shortname>
+<fullname>United Arab Emirates</fullname>
+<isocountry>AE</isocountry>
+<capital>Abu Dhabi</capital>
+<citizen>UAE national</citizen>
+<adjective>of the United Arab Emirates</adjective>
+<currency>UAE dirham</currency>
+<isocurrency>AED</isocurrency>
+<currensubunit>fils (inv.)</currensubunit>
+</country>
+<country>
+<shortname>United Kingdom</shortname>
+<fullname>United Kingdom of Great Britain and Northern
+Ireland</fullname>
+<isocountry>GB </isocountry>
+<capital>London</capital>
+<citizen>Briton</citizen>
+<adjective>British; of the United Kingdom</adjective>
+<currency>pound sterling</currency>
+<isocurrency>GBP</isocurrency>
+<currensubunit>penny (pl. pence.)</currensubunit>
+</country>
+<country>
+<shortname>United States</shortname>
+<fullname>United States of America</fullname>
+<isocountry>US</isocountry>
+<capital>Washington DC</capital>
+<citizen>American; US citizen</citizen>
+<adjective>American; of the United States</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>United States Minor Outlying Islands</shortname>
+<fullname>United States Minor Outlying Islands</fullname>
+<isocountry>UM</isocountry>
+<capital>-</capital>
+<citizen>-</citizen>
+<adjective>-</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Uruguay</shortname>
+<fullname>Eastern Republic of Uruguay</fullname>
+<isocountry>UY</isocountry>
+<capital>Montevideo</capital>
+<citizen>Uruguayan</citizen>
+<adjective>Uruguayan</adjective>
+<currency>Uruguayan peso</currency>
+<isocurrency>UYU</isocurrency>
+<currensubunit>centésimo</currensubunit>
+</country>
+<country>
+<shortname>US Virgin Islands</shortname>
+<fullname>Virgin Islands of the United States</fullname>
+<isocountry>VI</isocountry>
+<capital>Charlotte Amalie</capital>
+<citizen>US Virgin Islander</citizen>
+<adjective>of the US Virgin Islands</adjective>
+<currency>US dollar</currency>
+<isocurrency>USD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+<country>
+<shortname>Uzbekistan</shortname>
+<fullname>Republic of Uzbekistan</fullname>
+<isocountry>UZ</isocountry>
+<capital>Tashkent</capital>
+<citizen>Uzbek</citizen>
+<adjective>Uzbek</adjective>
+<currency>sum (inv.)
+</currency>
+<isocurrency>UZS</isocurrency>
+<currensubunit>tiyin (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Vanuatu</shortname>
+<fullname>Republic of Vanuatu</fullname>
+<isocountry>VU</isocountry>
+<capital>Port Vila</capital>
+<citizen>Vanuatuan</citizen>
+<adjective>of Vanuatu; Vanuatuan</adjective>
+<currency>vatu (inv.)</currency>
+<isocurrency>VUV</isocurrency>
+<currensubunit>-</currensubunit>
+</country>
+<country>
+<shortname>the Vatican</shortname>
+<fullname>The Holy see</fullname>
+<isocountry>VA</isocountry>
+<capital>Vatican City</capital>
+<citizen>-</citizen>
+<adjective>Vatican; of the Vatican</adjective>
+<currency>Italian lira</currency>
+<isocurrency>ITL</isocurrency>
+<currensubunit>-</currensubunit>
+</country>
+<country>
+<shortname>Venezuela</shortname>
+<fullname>Republic of Venezuela</fullname>
+<isocountry>VE</isocountry>
+<capital>Caracas</capital>
+<citizen>Venezuelan</citizen>
+<adjective>Venezuelan</adjective>
+<currency>bolívar (pl:bolívares)</currency>
+<isocurrency>VEB</isocurrency>
+<currensubunit>centavo</currensubunit>
+</country>
+<country>
+<shortname>Vietnam</shortname>
+<fullname>Socialist Republic of Viet Nam</fullname>
+<isocountry>VN</isocountry>
+<capital>Hanoi</capital>
+<citizen>Vietnamese</citizen>
+<adjective>Vietnamese</adjective>
+<currency>dong</currency>
+<isocurrency>VND</isocurrency>
+<currensubunit>-</currensubunit>
+</country>
+<country>
+<shortname>Wallis and Futuna</shortname>
+<fullname>Territory of the Wallis and Futuna Islands</fullname>
+<isocountry>WF</isocountry>
+<capital>Mata-Utu</capital>
+<citizen>Wallisian; Futunan; Wallis and Futuna
+Islander</citizen>
+<adjective>of the Wallis and Futuna Islands</adjective>
+<currency>CFP franc</currency>
+<isocurrency>XPF</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Western Sahara</shortname>
+<fullname>-</fullname>
+<isocountry>EH</isocountry>
+<capital>Al aaiun</capital>
+<citizen>Sahrawi</citizen>
+<adjective>Sahrawi</adjective>
+<currency>Moroccan dirham</currency>
+<isocurrency>MAD</isocurrency>
+<currensubunit>centime</currensubunit>
+</country>
+<country>
+<shortname>Yemen</shortname>
+<fullname>Republic of Yemen</fullname>
+<isocountry>YE</isocountry>
+<capital>San'a</capital>
+<citizen>Yemenite</citizen>
+<adjective>Yemeni</adjective>
+<currency>Yemeni rial</currency>
+<isocurrency>YER</isocurrency>
+<currensubunit>fils (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Yugoslavia</shortname>
+<fullname>Federal Republic of Yugoslavia</fullname>
+<isocountry>YU</isocountry>
+<capital>Belgrade</capital>
+<citizen>Yugoslav</citizen>
+<adjective>Yugoslav</adjective>
+<currency>Yugoslav dinar</currency>
+<isocurrency>YUM</isocurrency>
+<currensubunit>para (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Zambia</shortname>
+<fullname>Republic of Zambia</fullname>
+<isocountry>ZM</isocountry>
+<capital>Lusaka</capital>
+<citizen>Zambian</citizen>
+<adjective>Zambian</adjective>
+<currency>Zambian kwacha (inv.)</currency>
+<isocurrency>ZMK</isocurrency>
+<currensubunit>ngwee (inv.)</currensubunit>
+</country>
+<country>
+<shortname>Zimbabwe</shortname>
+<fullname>Republic of Zimbabwe</fullname>
+<isocountry>ZW</isocountry>
+<capital>Harare</capital>
+<citizen>Zimbabwean</citizen>
+<adjective>Zimbabwean</adjective>
+<currency>Zimbabwe dollar</currency>
+<isocurrency>ZWD</isocurrency>
+<currensubunit>cent</currensubunit>
+</country>
+</countries> \ No newline at end of file
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/fot.dtd b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/fot.dtd
new file mode 100644
index 00000000000..afe3576dc59
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/fot.dtd
@@ -0,0 +1,507 @@
+<!-- Typical use:
+
+<!DOCTYPE fot PUBLIC "-//James Clark//DTD DSSSL Flow Object Tree//EN" "fot.dtd">
+
+-->
+<!ENTITY % length-spec "CDATA">
+<!-- represents length-spec or #f; #f is represented by empty value -->
+<!ENTITY % opt-length-spec "CDATA">
+<!ENTITY % length "NMTOKEN">
+<!ENTITY % enum "NMTOKEN">
+<!ENTITY % enum-or-boolean "NMTOKEN">
+<!ENTITY % boolean "(true|false)">
+
+<!ENTITY % flow "
+(paragraph
+|sequence
+|display-group
+|line-field
+|link
+|scroll
+|marginalia
+|leader
+|sideline
+|box
+|score
+|table-row
+|math-sequence
+|unmath
+|subscript
+|superscript
+|grid
+|grid-cell
+|paragraph-break
+|external-graphic
+|rule
+|alignment-point
+|table-column
+|character
+|simple-page-sequence
+|fraction
+|script
+|mark
+|fence
+|radical
+|math-operator
+|table
+|table-part
+|table-cell
+|multi-mode
+|page-number
+|text
+|sdata
+|a
+|define-glyph-subst-table)*">
+
+<!ELEMENT fot %flow;>
+<!ELEMENT text (#PCDATA)>
+<!ELEMENT sdata EMPTY>
+<!ATTLIST sdata name CDATA #REQUIRED text CDATA #REQUIRED>
+
+<!ELEMENT paragraph %flow;>
+<!ELEMENT sequence %flow;>
+<!ELEMENT display-group %flow;>
+<!ELEMENT line-field %flow;>
+<!ELEMENT link %flow;>
+<!ELEMENT scroll %flow;>
+<!ELEMENT marginalia %flow;>
+<!ELEMENT leader %flow;>
+<!ELEMENT sideline %flow;>
+<!ELEMENT box %flow;>
+<!ELEMENT score %flow;>
+<!ELEMENT table-row %flow;>
+<!ELEMENT math-sequence %flow;>
+<!ELEMENT unmath %flow;>
+<!ELEMENT subscript %flow;>
+<!ELEMENT superscript %flow;>
+<!ELEMENT grid %flow;>
+<!ELEMENT grid-cell %flow;>
+<!ELEMENT paragraph-break EMPTY>
+<!ELEMENT external-graphic EMPTY>
+<!ELEMENT rule EMPTY>
+<!ELEMENT alignment-point EMPTY>
+<!ELEMENT table-column EMPTY>
+<!ELEMENT character EMPTY>
+
+<!ELEMENT page-number EMPTY>
+<!ATTLIST page-number ref CDATA #IMPLIED>
+
+<!ELEMENT define-glyph-subst-table (glyph-subst*)>
+<!ATTLIST define-glyph-subst-table id ID #REQUIRED>
+
+<!ELEMENT glyph-subst EMPTY>
+<!ATTLIST glyph-subst old CDATA #REQUIRED new CDATA #REQUIRED>
+
+<!ELEMENT a EMPTY>
+<!ATTLIST a
+ name CDATA #REQUIRED
+>
+
+<!ELEMENT simple-page-sequence
+ ((simple-page-sequence.right-header
+ |simple-page-sequence.center-header
+ |simple-page-sequence.left-header
+ |simple-page-sequence.right-footer
+ |simple-page-sequence.center-footer
+ |simple-page-sequence.left-footer)*,
+ %flow;)
+>
+
+<!ELEMENT simple-page-sequence.left-header %flow;>
+<!ELEMENT simple-page-sequence.right-header %flow;>
+<!ELEMENT simple-page-sequence.center-header %flow;>
+<!ELEMENT simple-page-sequence.left-footer %flow;>
+<!ELEMENT simple-page-sequence.right-footer %flow;>
+<!ELEMENT simple-page-sequence.center-footer %flow;>
+
+<!ENTITY % hf "
+ front %boolean; #IMPLIED
+ first %boolean; #IMPLIED
+">
+
+<!ATTLIST simple-page-sequence.right-header %hf;>
+<!ATTLIST simple-page-sequence.center-header %hf;>
+<!ATTLIST simple-page-sequence.left-footer %hf;>
+<!ATTLIST simple-page-sequence.right-footer %hf;>
+<!ATTLIST simple-page-sequence.center-footer %hf;>
+
+<!ELEMENT table
+(table.before-row-border, table.after-row-border,
+ table.before-column-border, table.after-column-border,
+ %flow;)>
+
+<!ELEMENT table.before-row-border EMPTY>
+<!ELEMENT table.after-row-border EMPTY>
+<!ELEMENT table.before-column-border EMPTY>
+<!ELEMENT table.after-column-border EMPTY>
+
+<!ELEMENT table-part
+ (table-part.principal, table-part.header, table-part.footer)
+>
+
+<!ELEMENT table-part.header %flow;>
+<!ELEMENT table-part.footer %flow;>
+<!ELEMENT table-part.principal %flow;>
+
+<!ELEMENT table-cell
+(table-cell.before-row-border, table-cell.after-row-border,
+ table-cell.before-column-border, table-cell.after-column-border,
+ %flow;)>
+
+<!ELEMENT table-cell.before-row-border EMPTY>
+<!ELEMENT table-cell.after-row-border EMPTY>
+<!ELEMENT table-cell.before-column-border EMPTY>
+<!ELEMENT table-cell.after-column-border EMPTY>
+
+<!ELEMENT fraction
+ (fraction.fraction-bar, fraction.numerator, fraction.denominator)>
+<!ELEMENT fraction.numerator %flow;>
+<!ELEMENT fraction.denominator %flow;>
+<!ELEMENT fraction.fraction-bar EMPTY>
+
+<!ELEMENT script (script.principal,
+ script.pre-sup, script.pre-sub,
+ script.post-sup, script.post-sub,
+ script.mid-sup, script.mid-sub)>
+
+<!ELEMENT script.principal %flow;>
+<!ELEMENT script.pre-sup %flow;>
+<!ELEMENT script.pre-sub %flow;>
+<!ELEMENT script.post-sup %flow;>
+<!ELEMENT script.post-sub %flow;>
+<!ELEMENT script.mid-sup %flow;>
+<!ELEMENT script.mid-sub %flow;>
+
+<!ELEMENT mark (mark.principal, mark.over-mark, mark.under-mark)>
+<!ELEMENT mark.principal %flow;>
+<!ELEMENT mark.over-mark %flow;>
+<!ELEMENT mark.under-mark %flow;>
+
+<!ELEMENT fence (fence.principal, fence.open, fence.close)>
+<!ELEMENT fence.principal %flow;>
+<!ELEMENT fence.open %flow;>
+<!ELEMENT fence.close %flow;>
+
+<!ELEMENT radical (radical.radical?, radical.principal, radical.degree)>
+<!ELEMENT radical.principal %flow;>
+<!ELEMENT radical.degree %flow;>
+<!ELEMENT radical.radical EMPTY>
+
+<!ELEMENT math-operator (math-operator.principal, math-operator.operator,
+ math-operator.lower-limit, math-operator.upper-limit)>
+<!ELEMENT math-operator.principal %flow;>
+<!ELEMENT math-operator.operator %flow;>
+<!ELEMENT math-operator.lower-limit %flow;>
+<!ELEMENT math-operator.upper-limit %flow;>
+
+<!ELEMENT multi-mode (multi-mode.mode, multi-mode.mode+)>
+<!ELEMENT multi-mode.mode %flow;>
+<!ATTLIST multi-mode.mode
+ name CDATA #IMPLIED
+ desc CDATA #IMPLIED
+>
+
+<!ENTITY % inherited-characteristics "
+font-size %length; #IMPLIED
+font-family-name CDATA #IMPLIED
+font-weight %enum-or-boolean; #IMPLIED
+font-posture %enum-or-boolean; #IMPLIED
+start-indent %length-spec; #IMPLIED
+end-indent %length-spec; #IMPLIED
+first-line-start-indent %length-spec; #IMPLIED
+last-line-end-indent %length-spec; #IMPLIED
+line-spacing %length-spec; #IMPLIED
+min-pre-line-spacing %opt-length-spec; #IMPLIED
+min-post-line-spacing %opt-length-spec; #IMPLIED
+min-leading %opt-length-spec; #IMPLIED
+field-width %length-spec; #IMPLIED
+lines %enum; #IMPLIED
+quadding %enum; #IMPLIED
+display-alignment %enum; #IMPLIED
+field-align %enum; #IMPLIED
+marginalia-side %enum; #IMPLIED
+principal-mode-simultaneous %boolean; #IMPLIED
+marginalia-sep %length-spec; #IMPLIED
+marginalia-keep-with-previous %boolean; #IMPLIED
+grid-equidistant-rows %boolean; #IMPLIED
+grid-equidistant-columns %boolean; #IMPLIED
+color CDATA #IMPLIED
+background-color CDATA #IMPLIED
+page-width %length; #IMPLIED
+page-height %length; #IMPLIED
+left-margin %length; #IMPLIED
+right-margin %length; #IMPLIED
+top-margin %length; #IMPLIED
+bottom-margin %length; #IMPLIED
+header-margin %length; #IMPLIED
+footer-margin %length; #IMPLIED
+border-present %boolean; #IMPLIED
+hyphenate %boolean; #IMPLIED
+kern %boolean; #IMPLIED
+ligature %boolean; #IMPLIED
+score-spaces %boolean; #IMPLIED
+float-out-marginalia %boolean; #IMPLIED
+float-out-sidelines %boolean; #IMPLIED
+float-out-line-numbers %boolean; #IMPLIED
+cell-background %boolean; #IMPLIED
+span-weak %boolean; #IMPLIED
+ignore-record-end %boolean; #IMPLIED
+numbered-lines %boolean; #IMPLIED
+hanging-punct %boolean; #IMPLIED
+box-open-end %boolean; #IMPLIED
+truncate-leader %boolean; #IMPLIED
+align-leader %boolean; #IMPLIED
+table-part-omit-middle-header %boolean; #IMPLIED
+table-part-omit-middle-footer %boolean; #IMPLIED
+border-omit-at-break %boolean; #IMPLIED
+line-join %enum; #IMPLIED
+line-cap %enum; #IMPLIED
+line-number-side %enum; #IMPLIED
+kern-mode %enum; #IMPLIED
+input-whitespace-treatment %enum; #IMPLIED
+filling-direction %enum; #IMPLIED
+writing-mode %enum; #IMPLIED
+last-line-quadding %enum; #IMPLIED
+math-display-mode %enum; #IMPLIED
+script-pre-align %enum; #IMPLIED
+script-post-align %enum; #IMPLIED
+script-mid-sup-align %enum; #IMPLIED
+script-mid-sub-align %enum; #IMPLIED
+numerator-align %enum; #IMPLIED
+denominator-align %enum; #IMPLIED
+grid-position-cell-type %enum; #IMPLIED
+grid-column-alignment %enum; #IMPLIED
+grid-row-Alignment %enum; #IMPLIED
+box-type %enum; #IMPLIED
+glyph-alignment-mode %enum; #IMPLIED
+box-border-alignment %enum; #IMPLIED
+cell-row-alignment %enum; #IMPLIED
+border-alignment %enum; #IMPLIED
+sideline-side %enum; #IMPLIED
+hyphenation-keep %enum-or-boolean; #IMPLIED
+font-structure %enum-or-boolean; #IMPLIED
+font-proportionate-width %enum-or-boolean; #IMPLIED
+cell-crossed %enum-or-boolean; #IMPLIED
+position-point-shift %length-spec; #IMPLIED
+start-margin %length-spec; #IMPLIED
+end-margin %length-spec; #IMPLIED
+sideline-sep %length-spec; #IMPLIED
+asis-wrap-indent %length-spec; #IMPLIED
+line-number-sep %length-spec; #IMPLIED
+last-line-justify-limit %length-spec; #IMPLIED
+justify-glyph-space-max-add %length-spec; #IMPLIED
+justify-glyph-space-max-remove %length-spec; #IMPLIED
+table-corner-radius %length-spec; #IMPLIED
+box-corner-radius %length-spec; #IMPLIED
+line-thickness %length; #IMPLIED
+cell-before-row-margin %length; #IMPLIED
+cell-after-row-margin %length; #IMPLIED
+cell-before-column-margin %length; #IMPLIED
+cell-after-column-margin %length; #IMPLIED
+line-sep %length; #IMPLIED
+box-size-before %length; #IMPLIED
+box-size-after %length; #IMPLIED
+country NMTOKEN #IMPLIED
+language NMTOKEN #IMPLIED
+expand-tabs NMTOKEN #IMPLIED
+hyphenation-ladder-count NMTOKEN #IMPLIED
+layer NMTOKEN #IMPLIED
+background-layer NMTOKEN #IMPLIED
+border-priority NMTOKEN #IMPLIED
+line-repeat NMTOKEN #IMPLIED
+span NMTOKEN #IMPLIED
+min-leader-repeat NMTOKEN #IMPLIED
+hyphenation-remain-char-count NMTOKEN #IMPLIED
+hyphenation-push-char-count NMTOKEN #IMPLIED
+widow-count NMTOKEN #IMPLIED
+orphan-count NMTOKEN #IMPLIED
+background-tile CDATA #IMPLIED
+line-breaking-method CDATA #IMPLIED
+line-composition-method CDATA #IMPLIED
+implicit-bidi-method CDATA #IMPLIED
+glyph-subst-method CDATA #IMPLIED
+glyph-reorder-method CDATA #IMPLIED
+hyphenation-method CDATA #IMPLIED
+table-auto-width-method CDATA #IMPLIED
+font-name CDATA #IMPLIED
+escapement-space-before CDATA #IMPLIED
+escapement-space-after CDATA #IMPLIED
+glyph-subst-table NMTOKENS #IMPLIED
+">
+
+<!ENTITY % display-nic "
+ position-preference %enum-or-boolean; #IMPLIED
+ keep-with-next %boolean; 'false'
+ keep-with-previous %boolean; 'false'
+ may-violate-keep-before %boolean; 'false'
+ may-violate-keep-after %boolean; 'false'
+ keep %enum-or-boolean; #IMPLIED
+ break-before %enum-or-boolean; #IMPLIED
+ break-after %enum-or-boolean; #IMPLIED
+ space-before CDATA #IMPLIED
+ space-before-conditional %boolean; #IMPLIED
+ space-before-priority NMTOKEN #IMPLIED
+ space-after CDATA #IMPLIED
+ space-after-conditional %boolean; #IMPLIED
+ space-after-priority NMTOKEN #IMPLIED
+">
+
+<!ENTITY % inline-nic "
+ break-before-priority NMTOKEN #IMPLIED
+ break-after-priority NMTOKEN #IMPLIED
+">
+
+<!ATTLIST sequence %inherited-characteristics;>
+<!ATTLIST line-field %inherited-characteristics;>
+<!ATTLIST simple-page-sequence %inherited-characteristics;>
+<!ATTLIST fraction %inherited-characteristics;>
+<!ATTLIST fraction.fraction-bar %inherited-characteristics;>
+<!ATTLIST math-sequence %inherited-characteristics;>
+<!ATTLIST unmath %inherited-characteristics;>
+<!ATTLIST subscript %inherited-characteristics;>
+<!ATTLIST superscript %inherited-characteristics;>
+<!ATTLIST script %inherited-characteristics;>
+<!ATTLIST mark %inherited-characteristics;>
+<!ATTLIST fence %inherited-characteristics;>
+<!ATTLIST radical %inherited-characteristics;>
+<!ATTLIST math-operator %inherited-characteristics;>
+<!ATTLIST sideline %inherited-characteristics;>
+<!ATTLIST scroll %inherited-characteristics;>
+<!ATTLIST marginalia %inherited-characteristics;>
+<!ATTLIST multi-mode %inherited-characteristics;>
+<!ATTLIST table-row %inherited-characteristics;>
+<!ATTLIST table.before-row-border %inherited-characteristics;>
+<!ATTLIST table.after-row-border %inherited-characteristics;>
+<!ATTLIST table.before-column-border %inherited-characteristics;>
+<!ATTLIST table.after-column-border %inherited-characteristics;>
+<!ATTLIST table-cell.before-row-border %inherited-characteristics;>
+<!ATTLIST table-cell.after-row-border %inherited-characteristics;>
+<!ATTLIST table-cell.before-column-border %inherited-characteristics;>
+<!ATTLIST table-cell.after-column-border %inherited-characteristics;>
+
+<!ATTLIST table-column
+ column-number NMTOKEN #REQUIRED
+ n-columns-spanned NMTOKEN #IMPLIED
+ width %length-spec; #IMPLIED
+ %inherited-characteristics;
+>
+
+<!ATTLIST table
+ width %length-spec; #IMPLIED
+ minimum-width %boolean; "false"
+ %display-nic;
+ %inherited-characteristics;
+>
+
+<!-- column-number of 0 has a special meaning: it identifies a dummy cell that
+ can be used to fill out the row if it later proves necessary to do so -->
+<!ATTLIST table-cell
+ column-number NMTOKEN #REQUIRED
+ n-columns-spanned NMTOKEN #IMPLIED
+ n-rows-spanned NMTOKEN #IMPLIED
+ %inherited-characteristics;
+>
+
+<!ATTLIST link
+ destination CDATA #IMPLIED
+ %inherited-characteristics;
+>
+
+<!ATTLIST box
+ display %boolean; "false"
+ %display-nic;
+ %inline-nic;
+ %inherited-characteristics;
+>
+
+<!ATTLIST score
+ type (before|through|after|char) #IMPLIED
+ type.length-spec %length-spec; #IMPLIED
+ char CDATA #IMPLIED
+ %inherited-characteristics;
+>
+
+<!ATTLIST leader
+ length %length-spec; #IMPLIED
+ %inherited-characteristics;
+ %inline-nic;
+>
+
+<!ATTLIST rule
+ orientation (horizontal|vertical|escapement|line-progression)
+ #REQUIRED
+ length %length-spec; #IMPLIED
+ %display-nic;
+ %inline-nic;
+ %inherited-characteristics;
+>
+
+<!ATTLIST external-graphic
+ display %boolean; "false"
+ scale %enum; #IMPLIED
+ scale-x NMTOKEN #IMPLIED
+ scale-y NMTOKEN #IMPLIED
+ max-width %length-spec; #IMPLIED
+ max-height %length-spec; #IMPLIED
+ entity-system-id CDATA #REQUIRED
+ notation-system-id CDATA #REQUIRED
+ escapement-direction %enum; #IMPLIED
+ position-point-x %length-spec; #IMPLIED
+ position-point-y %length-spec; #IMPLIED
+ %inline-nic;
+ %display-nic;
+ %inherited-characteristics;
+>
+
+<!ATTLIST display-group
+ coalesce-id CDATA #IMPLIED
+ %display-nic;
+ %inherited-characteristics;
+>
+
+<!ATTLIST paragraph
+ %display-nic;
+ %inherited-characteristics;
+>
+
+<!ATTLIST paragraph-break
+ %display-nic;
+ %inherited-characteristics;
+>
+
+<!ATTLIST table-part
+ %display-nic;
+ %inherited-characteristics;
+>
+
+<!ENTITY % character-c "
+ char CDATA #IMPLIED
+ glyph-id CDATA #IMPLIED
+ drop-after-line-break %boolean; #IMPLIED
+ drop-unless-before-line-break %boolean; #IMPLIED
+ punct %boolean; #IMPLIED
+ space %boolean; #IMPLIED
+ input-tab %boolean; #IMPLIED
+ input-whitespace %boolean; #IMPLIED
+ record-end %boolean; #IMPLIED
+ break-before-priority NMTOKEN #IMPLIED
+ break-after-priority NMTOKEN #IMPLIED
+ math-font-posture %enum-or-boolean; #IMPLIED
+ math-class %enum; #IMPLIED
+ script CDATA #IMPLIED
+ %inherited-characteristics;">
+
+<!ATTLIST character %character-c;>
+<!ATTLIST radical.radical %character-c;>
+
+<!ATTLIST grid
+ grid-n-columns NMTOKEN #IMPLIED
+ grid-n-rows NMTOKEN #IMPLIED
+ %inherited-characteristics;
+>
+
+<!ATTLIST grid-cell
+ column-number NMTOKEN #IMPLIED
+ row-number NMTOKEN #IMPLIED
+ %inherited-characteristics;
+>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/frisotab1exa1.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/frisotab1exa1.xsl
new file mode 100644
index 00000000000..672b36e5a42
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/frisotab1exa1.xsl
@@ -0,0 +1,17 @@
+<?xml version='1.0' encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:output method="text" encoding="ISO-8859-1"/>
+
+<xsl:template match="/listeDesPays">
+<xsl:for-each select="pays">
+<xsl:value-of select="nomComplet"/>
+<xsl:text> (</xsl:text>
+<xsl:value-of select="nomISO"/>
+<xsl:text>) et la capitale </xsl:text>
+<xsl:value-of select="capitale"/>
+<xsl:text>.&#xA;</xsl:text><!-- retour à la ligne -->
+</xsl:for-each>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/frisotab1exa2.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/frisotab1exa2.xsl
new file mode 100644
index 00000000000..cafaad4ca96
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/frisotab1exa2.xsl
@@ -0,0 +1,48 @@
+<?xml version='1.0' encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:output method="text" encoding="ISO-8859-1"/>
+
+<xsl:template match="/listeDesPays">
+<xsl:for-each select="pays">
+ <xsl:sort select="capitale"/>
+ <xsl:if test="string(capitale) != '-'">
+ <xsl:value-of select="capitale"/>
+ <xsl:variable name="Nom" select="string(nomComplet)"/>
+ <xsl:choose>
+ <xsl:when test="substring($Nom,1,3) = 'les'">
+ <xsl:text> est la capitale des </xsl:text>
+ <xsl:value-of select="substring-after($Nom,' ')"/>
+ </xsl:when>
+ <xsl:when test="substring($Nom,1,3) = 'le '">
+ <xsl:text> est la capitale du </xsl:text>
+ <xsl:value-of select="substring-after($Nom,' ')"/>
+ </xsl:when>
+ <xsl:when test="substring($Nom,1,3) = 'la '">
+ <xsl:text> est la capitale de </xsl:text>
+ <xsl:value-of select="$Nom"/>
+ </xsl:when>
+ <xsl:when test='substring($Nom,1,2) = "l&#39;"'>
+ <xsl:text> est la capitale de </xsl:text>
+ <xsl:value-of select="$Nom"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="L1" select="substring($Nom,1,1)"/>
+ <xsl:choose>
+ <xsl:when test="$L1 = 'A' or $L1 = 'E' or $L1 = 'I' or
+ $L1 = 'O' or $L1 = 'U' or $L1 = 'Y'">
+ <xsl:text> est la capitale de l'</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> est la capitale de </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="$Nom"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>.&#xA;</xsl:text><!-- retour à la ligne -->
+ </xsl:if>
+</xsl:for-each>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv1html.pl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv1html.pl
new file mode 100644
index 00000000000..0f1e0d4e380
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv1html.pl
@@ -0,0 +1,61 @@
+########################################################################
+# SGMLSPL script produced automatically by the script sgmlspl.pl
+#
+# Document Type: inv1html.pl (for HTML/CSS formatting)
+# Edited by: mg (24 Aug 98)
+########################################################################
+
+use SGMLS; # Use the SGMLS package.
+use SGMLS::Output; # Use stack-based output.
+
+#
+# Document Handlers.
+#
+sgml('start', "<HTML>\n<HEAD>\n" .
+ "<TITLE> Invitation (sgmlpl/CSS formatting) </TITLE>\n" .
+ "<LINK href=\"invit.css\" rel=\"style-sheet\" type=\"text/css\">\n" .
+ "<!-- 24 August 1998 mg -->\n" .
+ "</HEAD>\n");
+sgml('end', "</HTML>");
+
+#
+# Element Handlers.
+#
+
+sgml('<invitation>', "<BODY>\n<H1>INVITATION</H1>\n");
+sgml('</invitation>', "</BODY>\n");
+
+sgml('<front>', "<P><TABLE>\n<TBODY>\n");
+sgml('</front>', "</TBODY>\n</TABLE>\n");
+
+sgml('<to>', "<TR><TD class=\"front\">To: </TD>\n<TD>");
+sgml('</to>', "</TD></TR>\n");
+
+sgml('<date>', "<TR><TD class=\"front\">When: </TD>\n<TD>");
+sgml('</date>', "</TD></TR>\n");
+
+sgml('<where>', "<TR><TD class=\"front\">Venue: </TD>\n<TD>");
+sgml('</where>', "</TD></TR>\n");
+
+sgml('<why>', "<TR><TD class=\"front\">Occasion: </TD>\n<TD>");
+sgml('</why>', "</TD></TR>\n");
+
+sgml('<body>', "");
+sgml('</body>', "");
+
+sgml('<par>', "<P>");
+sgml('</par>', "</P>\n");
+
+sgml('<emph>', "<EM>");
+sgml('</emph>', "</EM>");
+
+sgml('<back>', "");
+sgml('</back>', "");
+
+sgml('<signature>', "<P CLASS=\"signature\">");
+sgml('</signature>', "</P>\n");
+
+sgml('start_element',sub { die "Unknown element: " . $_[0]->name; });
+sgml('cdata',sub { output $_[0]; });
+
+1;
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2css.html.save b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2css.html.save
new file mode 100644
index 00000000000..9615cdb76cb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2css.html.save
@@ -0,0 +1,44 @@
+<HTML>
+<HEAD>
+<TITLE> Invitation (sgmlpl/CSS formatting) </TITLE>
+<LINK href="invit.css" rel="style-sheet" type="text/css">
+<!-- 24 August 1998 mg -->
+</HEAD>
+<BODY>
+<H1>INVITATION</H1>
+<P><TABLE>
+<TBODY>
+<TR><TD class="front">To: </TD>
+<TD>Anna, Bernard, Didier, Johanna</TD></TR>
+<TR><TD class="front">When: </TD>
+<TD>Next Friday Evening at 8 pm</TD></TR>
+<TR><TD class="front">Venue: </TD>
+<TD>The Web Cafe</TD></TR>
+<TR><TD class="front">Occasion: </TD>
+<TD>My first XML baby</TD></TR>
+</TBODY>
+</TABLE>
+<P>
+
+I would like to invite you all to celebrate
+
+the birth of <EM>Invitation</EM>, my
+
+first XML document child.
+
+</P>
+<P>
+
+Please do your best to come and join me next Friday
+
+evening. And, do not forget to bring your friends.
+
+</P>
+<P>
+
+I <EM>really</EM> look forward to see you soon!
+
+</P>
+<P CLASS="signature">Michel</P>
+</BODY>
+</HTML> \ No newline at end of file
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2html.pl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2html.pl
new file mode 100644
index 00000000000..42637a1276c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2html.pl
@@ -0,0 +1,61 @@
+########################################################################
+# SGMLSPL script produced automatically by the script sgmlspl.pl
+#
+# Document Type: inv2html.pl (for HTML/CSS formatting)
+# Edited by: mg (25 Aug 1998)
+########################################################################
+
+use SGMLS; # Use the SGMLS package.
+use SGMLS::Output; # Use stack-based output.
+
+#
+# Document Handlers.
+#
+sgml('start', sub {
+ output "<HTML>\n<HEAD>\n";
+ output "<TITLE> Invitation (sgmlpl/CSS formatting) </TITLE>\n";
+ output "<LINK href=\"invit.css\" rel=\"style-sheet\" type=\"text/css\">\n";
+ output "<!-- 24 August 1998 mg -->\n";
+ output "</HEAD>\n";
+});
+sgml('end', "</HTML>");
+
+#
+# Element Handlers.
+#
+
+# Element: invitation
+sgml('<invitation>', sub {
+ my ($element,$event) = @_;
+ # First save the information for further use
+ # Local variables
+ my $date = $element->attribute('date')->value;
+ my $to = $element->attribute('to')->value;
+ my $where = $element->attribute('where')->value;
+ my $why = $element->attribute('why')->value;
+ # Global variable (saved for end of document)
+ $main::GLsig = $element->attribute('signature')->value;
+ # Output the HTML commands needed for the front matter
+ output "<BODY>\n<H1>INVITATION</H1>\n";
+ output "<P><TABLE>\n<TBODY>\n";
+ output "<TR><TD class=\"front\">To: </TD>\n<TD>$to</TD></TR>\n";
+ output "<TR><TD class=\"front\">When: </TD>\n<TD>$date</TD></TR>\n";
+ output "<TR><TD class=\"front\">Venue: </TD>\n<TD>$where</TD></TR>\n";
+ output "<TR><TD class=\"front\">Occasion: </TD>\n<TD>$why</TD></TR>\n";
+ output "</TBODY>\n</TABLE>\n";
+});
+
+sgml('</invitation>', sub{ # signature and end of document
+ output "<P CLASS=\"signature\">$main::GLsig</P>\n";
+ output "</BODY>\n";
+});
+
+# Elements: par and emph
+sgml('<par>', "<P>");
+sgml('</par>', "</P>\n");
+
+sgml('<emph>', "<EM>");
+sgml('</emph>', "</EM>");
+
+sgml('cdata',sub { output $_[0]; });
+1;
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2lat.pl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2lat.pl
new file mode 100644
index 00000000000..89e2f42015f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2lat.pl
@@ -0,0 +1,76 @@
+########################################################################
+# SGMLSPL script produced automatically by the script sgmlspl.pl
+#
+# Document Type: invitation --> customization for LaTeX
+# Edited by: mg (August 14th 1998)
+########################################################################
+
+use SGMLS; # Use the SGMLS package.
+use SGMLS::Output; # Use stack-based output.
+
+#
+# Document Handlers.
+#
+sgml('start', sub {});
+sgml('end', sub {});
+
+#
+# Element Handlers.
+#
+
+# Element: invitation
+sgml('<invitation>', "\\documentclass[]{article}\n" .
+ "\\usepackage{invitation}\n" .
+ "\\begin{document}\n");
+sgml('</invitation>', "\\end{document}\n");
+
+# Element: front
+sgml('<front>', "\\begin{Front}\n");
+sgml('</front>', "\\end{Front}\n");
+
+# Element: to
+sgml('<to>', "\\To{");
+sgml('</to>', "}\n");
+
+# Element: date
+sgml('<date>', "\\Date{");
+sgml('</date>', "}\n");
+
+# Element: where
+sgml('<where>', "\\Where{");
+sgml('</where>', "}\n");
+
+# Element: why
+sgml('<why>', "\\Why{");
+sgml('</why>', "}\n");
+
+# Element: body
+sgml('<body>', "\\begin{Body}\n");
+sgml('</body>', "\\end{Body}\n");
+
+# Element: par
+sgml('<par>', "\\par ");
+sgml('</par>', "\n");
+
+# Element: emph
+sgml('<emph>', "\\emph{");
+sgml('</emph>', "}");
+
+# Element: back
+sgml('<back>', "\\begin{Back}\n");
+sgml('</back>', "\\end{Back}\n");
+
+# Element: signature
+sgml('<signature>', "\\Signature{");
+sgml('</signature>', "}\n");
+#
+# Default handlers
+#
+sgml('start_element',sub { die "Unknown element: " . $_[0]->name; });
+sgml('cdata',sub { output $_[0]; });
+sgml('re'," ");
+sgml('pi',sub { die "Unknown processing instruction: " . $_[0]; });
+sgml('entity',sub { die "Unknown external entity: " . $_[0]->name; });
+sgml('conforming','');
+
+1;
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv3.xml b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv3.xml
new file mode 100644
index 00000000000..2080967a5da
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv3.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!DOCTYPE invitation SYSTEM "invitation2.dtd">
+<invitation to="Anna, Bernard, Didier, Johanna"
+ date="Next Friday Evening at 8 pm"
+ where="The <emph>Web</emph> Cafe"
+ why="My first XML baby"
+ signature="Michel"
+>
+<par>
+I would like to invite you all to celebrate
+the birth of <emph>Invitation</emph>, my
+first XML document child.
+</par>
+<par>
+Please do your best to come and join me next Friday
+evening. And, do not forget to bring your friends.
+</par>
+<par>
+I <emph>really</emph> look forward to see you soon!
+</par>
+</invitation>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invcss.html.save b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invcss.html.save
new file mode 100644
index 00000000000..9615cdb76cb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invcss.html.save
@@ -0,0 +1,44 @@
+<HTML>
+<HEAD>
+<TITLE> Invitation (sgmlpl/CSS formatting) </TITLE>
+<LINK href="invit.css" rel="style-sheet" type="text/css">
+<!-- 24 August 1998 mg -->
+</HEAD>
+<BODY>
+<H1>INVITATION</H1>
+<P><TABLE>
+<TBODY>
+<TR><TD class="front">To: </TD>
+<TD>Anna, Bernard, Didier, Johanna</TD></TR>
+<TR><TD class="front">When: </TD>
+<TD>Next Friday Evening at 8 pm</TD></TR>
+<TR><TD class="front">Venue: </TD>
+<TD>The Web Cafe</TD></TR>
+<TR><TD class="front">Occasion: </TD>
+<TD>My first XML baby</TD></TR>
+</TBODY>
+</TABLE>
+<P>
+
+I would like to invite you all to celebrate
+
+the birth of <EM>Invitation</EM>, my
+
+first XML document child.
+
+</P>
+<P>
+
+Please do your best to come and join me next Friday
+
+evening. And, do not forget to bring your friends.
+
+</P>
+<P>
+
+I <EM>really</EM> look forward to see you soon!
+
+</P>
+<P CLASS="signature">Michel</P>
+</BODY>
+</HTML> \ No newline at end of file
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfo1.fo b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfo1.fo
new file mode 100644
index 00000000000..5093f5ee464
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfo1.fo
@@ -0,0 +1,4 @@
+<fo:root xmlns:fo="http://www.w3.org/XSL/Format/1.0"><fo:layout-master-set><fo:simple-page-master page-master-name="allpages" margin-top="75pt" margin-bottom="125pt" margin-left="80pt" margin-right="150pt"><fo:region-body margin-bottom="100pt"/><fo:region-after extent="25pt"/></fo:simple-page-master></fo:layout-master-set><fo:page-sequence><fo:sequence-specification><fo:sequence-specifier-repeating page-master-first="allpages" page-master-repeating="allpages"/></fo:sequence-specification><fo:flow font-family="serif"><fo:block font-family="sans-serif" font-size="24pt" font-weight="bold" text-align-last="centered" space-after.optimum="24pt" xmlns:fo="http://www.w3.org/1999/XSL/Format">INVITATION</fo:block><fo:list-block provisional-distance-between-starts="2cm" provisional-label-separation="6pt" xmlns:fo="http://www.w3.org/1999/XSL/Format"><fo:list-item id="listto"><fo:list-item-label font-style="italic"><fo:block>To:</fo:block></fo:list-item-label><fo:list-item-body><fo:block>Anna, Bernard, Didier, Johanna</fo:block></fo:list-item-body></fo:list-item><fo:list-item id="listdate"><fo:list-item-label font-style="italic"><fo:block>When:</fo:block></fo:list-item-label><fo:list-item-body><fo:block>Next Friday Evening at 8 pm</fo:block></fo:list-item-body></fo:list-item><fo:list-item id="listwhere"><fo:list-item-label font-style="italic"><fo:block>Venue:</fo:block></fo:list-item-label><fo:list-item-body><fo:block>The Web Cafe</fo:block></fo:list-item-body></fo:list-item><fo:list-item id="listwhy"><fo:list-item-label font-style="italic"><fo:block>Occasion:</fo:block></fo:list-item-label><fo:list-item-body><fo:block>My first XML baby</fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.optimum="12pt" xmlns:fo="http://www.w3.org/1999/XSL/Format">I would like to invite you all to celebrate
+the birth of <fo:inline-sequence font-style="italic">Invitation</fo:inline-sequence>, my
+first XML document child.</fo:block><fo:block space-before.optimum="12pt" xmlns:fo="http://www.w3.org/1999/XSL/Format">Please do your best to come and join me next Friday
+evening. And, do not forget to bring your friends.</fo:block><fo:block space-before.optimum="12pt" xmlns:fo="http://www.w3.org/1999/XSL/Format">I <fo:inline-sequence font-style="italic">really</fo:inline-sequence> look forward to see you soon!</fo:block><fo:block space-before.optimum="12pt" font-weight="bold" text-align-last="end" xmlns:fo="http://www.w3.org/1999/XSL/Format">From: Michel</fo:block></fo:flow></fo:page-sequence></fo:root> \ No newline at end of file
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfo1.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfo1.xsl
new file mode 100644
index 00000000000..2653e9296b1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfo1.xsl
@@ -0,0 +1,118 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format">
+
+<xsl:strip-space elements="*"/>
+
+<!-- Parameterizations -->
+
+<xsl:variable name="PageMarginTop">75pt</xsl:variable>
+<xsl:variable name="PageMarginBottom">125pt</xsl:variable>
+<xsl:variable name="PageMarginLeft">80pt</xsl:variable>
+<xsl:variable name="PageMarginRight">150pt</xsl:variable>
+<xsl:variable name="BodyFont">Times-Roman</xsl:variable>
+<xsl:variable name="BodySize">12pt</xsl:variable>
+<xsl:variable name="TypeWriterFont">Computer-Modern-Typewriter</xsl:variable>
+<xsl:variable name="SansFont">Helvetica</xsl:variable>
+<xsl:variable name="ListRightMargin">12pt</xsl:variable>
+<xsl:variable name="ListAbove">12pt</xsl:variable>
+<xsl:variable name="ListBelow">12pt</xsl:variable>
+<xsl:variable name="ListNormalIndent">15pt</xsl:variable>
+<xsl:variable name="BulletOne">&#x2022;</xsl:variable>
+
+<xsl:template name="listitem">
+ <xsl:param name="labeltext">labeltext</xsl:param>
+ <xsl:param name="itemid">itemid</xsl:param>
+ <xsl:param name="itemtext">itemtext</xsl:param>
+ <fo:list-item id="{$itemid}">
+ <fo:list-item-label font-style="italic">
+ <fo:block>
+ <xsl:value-of select="$labeltext"/>
+ <xsl:text>:</xsl:text>
+ </fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body>
+ <fo:block><xsl:value-of select="$itemtext"/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+</xsl:template>
+
+<xsl:template match='/'>
+ <fo:root>
+ <fo:layout-master-set>
+ <fo:simple-page-master
+ page-master-name="allpages"
+ margin-top="{$PageMarginTop}"
+ margin-bottom="{$PageMarginBottom}"
+ margin-left="{$PageMarginLeft}"
+ margin-right="{$PageMarginRight}">
+ <fo:region-body margin-bottom="100pt"/>
+ <fo:region-after extent="25pt"/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+ <fo:page-sequence>
+ <fo:sequence-specification>
+ <fo:sequence-specifier-repeating
+ page-master-first="allpages"
+ page-master-repeating="allpages"/>
+ </fo:sequence-specification>
+ <fo:flow font-family="serif">
+ <xsl:apply-templates/>
+ </fo:flow>
+ </fo:page-sequence>
+ </fo:root>
+</xsl:template>
+
+<xsl:template match="invitation/front">
+<fo:block font-family="sans-serif" font-size="24pt"
+ font-weight="bold" text-align-last="centered"
+ space-after.optimum="24pt">
+ <xsl:text>INVITATION</xsl:text>
+</fo:block>
+
+<fo:list-block provisional-distance-between-starts="2cm"
+ provisional-label-separation="6pt">
+ <xsl:call-template name="listitem">
+ <xsl:with-param name="labeltext">To</xsl:with-param>
+ <xsl:with-param name="itemid">listto</xsl:with-param>
+ <xsl:with-param name="itemtext"><xsl:value-of select="to"/></xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="listitem">
+ <xsl:with-param name="labeltext">When</xsl:with-param>
+ <xsl:with-param name="itemid">listdate</xsl:with-param>
+ <xsl:with-param name="itemtext"><xsl:value-of select="date"/></xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="listitem">
+ <xsl:with-param name="labeltext">Venue</xsl:with-param>
+ <xsl:with-param name="itemid">listwhere</xsl:with-param>
+ <xsl:with-param name="itemtext" select="where"/>
+ </xsl:call-template>
+ <xsl:call-template name="listitem">
+ <xsl:with-param name="labeltext">Occasion</xsl:with-param>
+ <xsl:with-param name="itemid">listwhy</xsl:with-param>
+ <xsl:with-param name="itemtext"><xsl:value-of select="why"/></xsl:with-param>
+ </xsl:call-template>
+</fo:list-block>
+</xsl:template>
+
+<xsl:template match="invitation/body/par">
+ <fo:block space-before.optimum="{$BodySize}">
+ <xsl:apply-templates/>
+ </fo:block>
+</xsl:template>
+
+<xsl:template match="invitation/body/par/emph">
+ <fo:inline-sequence font-style="italic">
+ <xsl:apply-templates/>
+ </fo:inline-sequence>
+</xsl:template>
+
+<xsl:template match="invitation/back">
+<fo:block space-before.optimum="{$BodySize}"
+ font-weight="bold" text-align-last="end">
+ <xsl:text>From: </xsl:text>
+ <xsl:value-of select="signature"/>
+</fo:block>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfop.pdf b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfop.pdf
new file mode 100644
index 00000000000..fa0c64df7ed
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfop.pdf
@@ -0,0 +1,247 @@
+%PDF-1.2
+1 0 obj
+<< /Type /Catalog
+/Pages 2 0 R >>
+endobj
+2 0 obj
+<< /Type /Pages
+/Count 1
+/Kids [ 18 0 R ] >>
+endobj
+3 0 obj
+<< /Type /Info
+/Producer (FOP 0.10.0) >>
+endobj
+4 0 obj
+<< /Font << /F3 5 0 R
+/F2 6 0 R
+/F1 7 0 R
+/F12 8 0 R
+/F11 9 0 R
+/F10 10 0 R
+/F9 11 0 R
+/F8 12 0 R
+/F7 13 0 R
+/F6 14 0 R
+/F5 15 0 R
+/F4 16 0 R
+>>
+/ProcSet [ /PDF /Text ] >>
+endobj
+5 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F3
+/BaseFont /Helvetica-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
+6 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F2
+/BaseFont /Helvetica-Oblique
+/Encoding /WinAnsiEncoding >>
+endobj
+7 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F1
+/BaseFont /Helvetica
+/Encoding /WinAnsiEncoding >>
+endobj
+8 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F12
+/BaseFont /Courier-BoldOblique
+/Encoding /WinAnsiEncoding >>
+endobj
+9 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F11
+/BaseFont /Courier-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
+10 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F10
+/BaseFont /Courier-Oblique
+/Encoding /WinAnsiEncoding >>
+endobj
+11 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F9
+/BaseFont /Courier
+/Encoding /WinAnsiEncoding >>
+endobj
+12 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F8
+/BaseFont /Times-BoldItalic
+/Encoding /WinAnsiEncoding >>
+endobj
+13 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F7
+/BaseFont /Times-Bold
+/Encoding /WinAnsiEncoding >>
+endobj
+14 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F6
+/BaseFont /Times-Italic
+/Encoding /WinAnsiEncoding >>
+endobj
+15 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F5
+/BaseFont /Times-Roman
+/Encoding /WinAnsiEncoding >>
+endobj
+16 0 obj
+<< /Type /Font
+/Subtype /Type1
+/Name /F4
+/BaseFont /Helvetica-BoldOblique
+/Encoding /WinAnsiEncoding >>
+endobj
+17 0 obj
+<< /Length 2828 >>
+stream
+BT
+1 0 0 1 80.0 717.0 Tm
+/F3 24 Tf
+1 0 0 1 184.996 704.568 Tm (INVITATION) Tj
+/F6 12 Tf
+1 0 0 1 80.0 671.004 Tm (To:) Tj
+/F5 12 Tf
+1 0 0 1 136.7 671.004 Tm (Anna,) Tj
+1 0 0 1 168.692 671.004 Tm (Bernard,) Tj
+1 0 0 1 213.344 671.004 Tm (Didier,) Tj
+1 0 0 1 250.004 671.004 Tm (Johanna) Tj
+/F6 12 Tf
+1 0 0 1 80.0 657.804 Tm (When:) Tj
+/F5 12 Tf
+1 0 0 1 136.7 657.804 Tm (Next) Tj
+1 0 0 1 163.028 657.804 Tm (Friday) Tj
+1 0 0 1 197.36 657.804 Tm (Evening) Tj
+1 0 0 1 240.356 657.804 Tm (at) Tj
+1 0 0 1 252.02 657.804 Tm (8) Tj
+1 0 0 1 261.02 657.804 Tm (pm) Tj
+/F6 12 Tf
+1 0 0 1 80.0 644.604 Tm (Venue:) Tj
+/F5 12 Tf
+1 0 0 1 136.7 644.604 Tm (The) Tj
+1 0 0 1 158.36 644.604 Tm (Web) Tj
+1 0 0 1 184.016 644.604 Tm (Cafe) Tj
+/F6 12 Tf
+1 0 0 1 80.0 631.404 Tm (Occasion:) Tj
+/F5 12 Tf
+1 0 0 1 136.7 631.404 Tm (My) Tj
+1 0 0 1 156.368 631.404 Tm (first) Tj
+1 0 0 1 178.7 631.404 Tm (XML) Tj
+1 0 0 1 208.364 631.404 Tm (baby) Tj
+1 0 0 1 80.0 606.204 Tm (I) Tj
+1 0 0 1 86.996 606.204 Tm (would) Tj
+1 0 0 1 119.996 606.204 Tm (like) Tj
+1 0 0 1 140.996 606.204 Tm (to) Tj
+1 0 0 1 153.332 606.204 Tm (invite) Tj
+1 0 0 1 183.668 606.204 Tm (you) Tj
+1 0 0 1 204.668 606.204 Tm (all) Tj
+1 0 0 1 219.668 606.204 Tm (to) Tj
+1 0 0 1 232.004 606.204 Tm (celebrate) Tj
+1 0 0 1 278.312 606.204 Tm (the) Tj
+1 0 0 1 295.976 606.204 Tm (birth) Tj
+1 0 0 1 321.644 606.204 Tm (of) Tj
+/F6 12 Tf
+1 0 0 1 334.64 606.204 Tm (Invitation) Tj
+/F5 12 Tf
+1 0 0 1 381.308 606.204 Tm (,) Tj
+1 0 0 1 387.308 606.204 Tm (my) Tj
+1 0 0 1 405.644 606.204 Tm (first) Tj
+1 0 0 1 80.0 593.004 Tm (XML) Tj
+1 0 0 1 109.664 593.004 Tm (document) Tj
+1 0 0 1 159.992 593.004 Tm (child.) Tj
+1 0 0 1 80.0 567.804 Tm (Please) Tj
+1 0 0 1 113.66 567.804 Tm (do) Tj
+1 0 0 1 128.66 567.804 Tm (your) Tj
+1 0 0 1 153.656 567.804 Tm (best) Tj
+1 0 0 1 175.988 567.804 Tm (to) Tj
+1 0 0 1 188.324 567.804 Tm (come) Tj
+1 0 0 1 217.316 567.804 Tm (and) Tj
+1 0 0 1 237.644 567.804 Tm (join) Tj
+1 0 0 1 259.316 567.804 Tm (me) Tj
+1 0 0 1 276.98 567.804 Tm (next) Tj
+1 0 0 1 300.644 567.804 Tm (Friday) Tj
+1 0 0 1 334.976 567.804 Tm (evening.) Tj
+1 0 0 1 378.968 567.804 Tm (And,) Tj
+1 0 0 1 405.632 567.804 Tm (do) Tj
+1 0 0 1 80.0 554.604 Tm (not) Tj
+1 0 0 1 98.336 554.604 Tm (forget) Tj
+1 0 0 1 129.992 554.604 Tm (to) Tj
+1 0 0 1 142.328 554.604 Tm (bring) Tj
+1 0 0 1 170.66 554.604 Tm (your) Tj
+1 0 0 1 195.656 554.604 Tm (friends.) Tj
+1 0 0 1 80.0 529.404 Tm (I) Tj
+/F6 12 Tf
+1 0 0 1 86.996 529.404 Tm (really) Tj
+/F5 12 Tf
+1 0 0 1 114.992 529.404 Tm () Tj
+1 0 0 1 117.992 529.404 Tm (look) Tj
+1 0 0 1 142.328 529.404 Tm (forward) Tj
+1 0 0 1 183.308 529.404 Tm (to) Tj
+1 0 0 1 195.644 529.404 Tm (see) Tj
+1 0 0 1 213.968 529.404 Tm (you) Tj
+1 0 0 1 234.968 529.404 Tm (soon!) Tj
+/F7 12 Tf
+1 0 0 1 355.02 504.288 Tm (From:) Tj
+1 0 0 1 390.672 504.288 Tm (Michel) Tj
+1 0 0 1 80.0 150.0 Tm
+ET
+
+endstream
+endobj
+18 0 obj
+<< /Type /Page
+/Parent 2 0 R
+/MediaBox [ 0 0 576 792 ]
+/Resources 4 0 R
+/Contents 17 0 R >>
+endobj
+xref
+0 19
+0000000000 65535 f
+0000000009 00000 n
+0000000058 00000 n
+0000000118 00000 n
+0000000174 00000 n
+0000000361 00000 n
+0000000473 00000 n
+0000000588 00000 n
+0000000695 00000 n
+0000000813 00000 n
+0000000924 00000 n
+0000001039 00000 n
+0000001145 00000 n
+0000001260 00000 n
+0000001369 00000 n
+0000001480 00000 n
+0000001590 00000 n
+0000001710 00000 n
+0000004590 00000 n
+trailer
+<<
+/Size 19
+/Root 1 0 R
+/Info 3 0 R
+>>
+startxref
+4698
+%%EOF
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invhtml.dsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invhtml.dsl
new file mode 100644
index 00000000000..6f4b7ac5b48
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invhtml.dsl
@@ -0,0 +1,90 @@
+<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style-Sheet//EN">
+<style-sheet>
+<style-specification>
+<style-specification-body>
+(declare-flow-object-class element
+ "UNREGISTERED::James Clark//Flow Object Class::element")
+(declare-flow-object-class empty-element
+ "UNREGISTERED::James Clark//Flow Object Class::empty-element")
+(declare-flow-object-class document-type
+ "UNREGISTERED::James Clark//Flow Object Class::document-type")
+
+(define FontSize 12pt)
+(root
+ (make simple-page-sequence
+ left-margin: 25mm
+ page-width: 205mm
+ right-margin: 25mm
+ (make sequence
+ font-size: FontSize
+ line-spacing: FontSize
+ (make document-type
+ name: "HTML"
+ public-id: "-//W3C//DTD HTML 3.2//EN")
+ (make element gi: "HEAD"
+ (make element gi: "TITLE"
+ (literal "Invitation (XML to HTML transformation)"))
+ (make empty-element gi: "LINK"
+ attributes: (list (list "href" "invit.css")
+ (list "rel" "stylesheet")
+ (list "type" "text/css"))))
+ (make element gi: "BODY"
+ (make sequence
+ (make element gi: "H1"
+ (literal "INVITATION"))
+ (process-children))))))
+
+(element (front)
+ (make element gi: "TABLE"
+ attributes: (list (list "border" "5")
+ (list "frame" "hsides")
+ (list "rules" "none")
+ (list "width" "100%"))
+ (process-children)))
+(element (front date)
+ (make element gi: "TR"
+ (make sequence
+ (make element gi: "TD"
+ attributes: (list (list "class" "front"))
+ (literal "When: "))
+ (make element gi: "TD"
+ (process-children)))))
+(element (front to)
+ (make element gi: "TR"
+ (make sequence
+ (make element gi: "TD"
+ attributes: (list (list "class" "front"))
+ (literal "To: "))
+ (make element gi: "TD"
+ (process-children)))))
+(element (front where)
+ (make element gi: "TR"
+ (make sequence
+ (make element gi: "TD"
+ attributes: (list (list "class" "front"))
+ (literal "Venue: "))
+ (make element gi: "TD"
+ (process-children)))))
+(element (front why)
+ (make element gi: "TR"
+ (make sequence
+ (make element gi: "TD"
+ attributes: (list (list "class" "front"))
+ (literal "Occasion: "))
+ (make element gi: "TD"
+ (process-children)))))
+(element (body par)
+ (make element gi: "P"
+ (process-children)))
+(element emph
+ (make element gi: "EM"
+ (process-children)))
+(element (back signature)
+ (make element gi: "P"
+ attributes: (list (list "class" "signature"))
+ (make sequence
+ (literal "From: ")
+ (process-children))))
+</style-specification-body>
+</style-specification>
+</style-sheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invhtml2.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invhtml2.xsl
new file mode 100644
index 00000000000..f2be578fc5d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invhtml2.xsl
@@ -0,0 +1,42 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:output method="html"/>
+<xsl:preserve-space elements="*"/>
+
+<xsl:template match="invitation">
+<html>
+<head>
+<title> Invitation (XSL/CSS formatting) </title>
+<link href="invit.css" rel="stylesheet" type="text/css"/>
+<!-- 12 November 1998 mg -->
+</head>
+<body>
+<h1>INVITATION</h1>
+<table>
+<tbody>
+<tr><td class="front">To: </td>
+<td><xsl:value-of select="@to"/></td></tr>
+<tr><td class="front">When: </td>
+<td><xsl:value-of select="@date"/></td></tr>
+<tr><td class="front">Venue: </td>
+<td><xsl:value-of select="@where"/></td></tr>
+<tr><td class="front">Occasion: </td>
+<td><xsl:value-of select="@why"/></td></tr>
+</tbody>
+</table>
+<xsl:apply-templates/>
+<p class="signature"><xsl:value-of select="@signature"/></p>
+</body>
+</html>
+</xsl:template>
+
+<xsl:template match="par">
+<p><xsl:apply-templates/></p>
+</xsl:template>
+
+<xsl:template match="emph">
+<em><xsl:apply-templates/></em>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invit.css b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invit.css
new file mode 100644
index 00000000000..e28eb44d060
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invit.css
@@ -0,0 +1,31 @@
+/* CSS stylesheet for invitation1 in HTML */
+BODY {margin-top: 1em; /* global page parameters */
+ margin-bottom: 1em;
+ margin-left: 1em;
+ margin-right: 1em;
+ font-family: serif;
+ line-height: 1.1;
+ color: black;
+}
+H1 {text-align: center; /* for global title */
+ font-size: x-large;
+}
+P {text-align: justify; /* paragraphs in body */
+ margin-top: 1em;
+}
+TABLE { border-width: 0pt }
+TBODY { border-width: 0pt }
+TD[class="front"] { /* table data in front matter */
+ text-align: left;
+ font-weight: bold;
+}
+TD.front { /* table data in front matter */
+ text-align: left;
+ font-weight: bold;
+}
+EM {font-style: italic; /* emphasis in body */
+}
+P.signature { /* signature */
+ text-align: right;
+ font-weight: bold;
+}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.dsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.dsl
new file mode 100644
index 00000000000..fb1da6b1647
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.dsl
@@ -0,0 +1,66 @@
+<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style-Sheet//EN">
+<style-sheet>
+<style-specification>
+<style-specification-body>
+(define FontSize 12pt)
+(root
+ (make simple-page-sequence
+ left-margin: 25mm
+ page-width: 205mm
+ right-margin: 25mm
+ (make scroll
+ font-size: FontSize
+ line-spacing: FontSize
+ (process-children)
+ )
+ )
+)
+(element (front date)
+ (make paragraph
+ (literal "When: ")
+ (process-children)
+ )
+)
+(element (front to)
+ (make paragraph
+ (literal "To: ")
+ (process-children)
+ )
+)
+(element (front where)
+ (make paragraph
+ (literal "Venue: ")
+ (process-children)
+ )
+)
+(element (front why)
+ (make paragraph
+ (literal "Occasion: ")
+ (process-children)
+ )
+)
+(element (body par)
+ (make paragraph
+ quadding: 'justify
+ font-size: FontSize
+ space-before: FontSize
+ (process-children)
+ )
+)
+(element emph
+ (make sequence
+ font-posture: 'italic
+ (process-children)
+ )
+)
+(element (back signature)
+ (make paragraph
+ quadding: 'justify
+ space-before: FontSize
+ (literal "From: ")
+ (process-children)
+ )
+)
+</style-specification-body>
+</style-specification>
+</style-sheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.dtd b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.dtd
new file mode 100644
index 00000000000..ec74933693d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.dtd
@@ -0,0 +1,12 @@
+<!-- invitation DTD -->
+<!ELEMENT invitation (front, body, back) >
+<!ELEMENT front (to, date, where, why?) >
+<!ELEMENT date (#PCDATA) >
+<!ELEMENT to (#PCDATA) >
+<!ELEMENT where (#PCDATA) >
+<!ELEMENT why (#PCDATA) >
+<!ELEMENT body (par+) >
+<!ELEMENT par (#PCDATA|emph)* >
+<!ELEMENT emph (#PCDATA) >
+<!ELEMENT back (signature) >
+<!ELEMENT signature (#PCDATA) >
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.sty b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.sty
new file mode 100644
index 00000000000..d01bf822bc3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.sty
@@ -0,0 +1,30 @@
+% invitation.sty
+% Package to format invitation.xml
+\setlength{\parskip}{1ex}
+\setlength{\parindent}{0pt}
+\pagestyle{empty}%% Turn off page numbering
+\RequirePackage{array}
+\newenvironment{Front}%
+ {\begin{center}\huge \sffamily Memorandum\end{center}
+ \begin{flushleft}
+ \begin{tabular}{@{}>{\bfseries}p{.2\linewidth}@{}p{.8\linewidth}@{}}\hline
+ }
+ {To whom: & \@To \\
+ Occasion: & \@Why \\
+ Venue: & \@Where \\
+ When: & \@Date \\\hline
+ \end{tabular}
+ \end{flushleft}
+ }
+\newenvironment{Body}{\vspace*{\parskip}}{\vspace*{\parskip}}
+\newenvironment{Back}
+ {\begin{flushleft}}
+ {\hspace*{.5\linewidth}\fbox{\emph{\@Sig}}
+ \end{flushleft}
+ }
+\newcommand{\To}[1]{\gdef\@To{#1}}
+\newcommand{\Date}[1]{\gdef\@Date{#1}}
+\newcommand{\Where}[1]{\gdef\@Where{#1}}
+\newcommand{\Why}[1]{\gdef\@Why{#1}}
+\newcommand{\Signature}[1]{\gdef\@Sig{#1}}
+\endinput \ No newline at end of file
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.tex.save b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.tex.save
new file mode 100644
index 00000000000..12ae67767f5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.tex.save
@@ -0,0 +1,27 @@
+\documentclass[]{article}
+\usepackage{invitation}
+\begin{document}
+\begin{Front}
+\To{Anna, Bernard, Didier, Johanna}
+\Date{Next Friday Evening at 8 pm}
+\Where{The Web Cafe}
+\Why{My first XML baby}
+\end{Front}
+\begin{Body}
+\par
+I would like to invite you all to celebrate
+the birth of \emph{Invitation}, my
+first XML document child.
+
+\par
+Please do your best to come and join me next Friday
+evening. And, do not forget to bring your friends.
+
+\par
+I \emph{really} look forward to see you soon!
+
+\end{Body}
+\begin{Back}
+\Signature{Michel}
+\end{Back}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.xml b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.xml
new file mode 100644
index 00000000000..2153fc3dc82
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!DOCTYPE invitation SYSTEM "invitation.dtd">
+<invitation>
+<!-- ++++ The header part of the document ++++ -->
+<front>
+<to>Anna, Bernard, Didier, Johanna</to>
+<date>Next Friday Evening at 8 pm</date>
+<where>The Web Cafe</where>
+<why>My first XML baby</why>
+</front>
+<!-- +++++ The main part of the document +++++ -->
+<body>
+<par>I would like to invite you all to celebrate
+the birth of <emph>Invitation</emph>, my
+first XML document child.</par>
+<par>Please do your best to come and join me next Friday
+evening. And, do not forget to bring your friends.</par>
+<par>I <emph>really</emph> look forward to see you soon!</par>
+</body>
+<!-- +++ The closing part of the document ++++ -->
+<back>
+<signature>Michel</signature>
+</back>
+</invitation>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation1.tex b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation1.tex
new file mode 100644
index 00000000000..a59c337cf54
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation1.tex
@@ -0,0 +1,22 @@
+\documentclass[12pt]{article}
+\usepackage{invitation}
+\begin{document}
+\begin{Front}
+\To{Anna, Bernard, Didier, Johanna}
+\Date{Next Friday Evening at 8 pm}
+\Where{The Web Cafe}
+\Why{My first XML baby}
+\end{Front}
+\begin{Body}
+
+\par I would like to invite you all to celebrate
+the birth of \emph{Invitation}, my
+first XML document child.
+\par Please do your best to come and join me next Friday
+evening. And, do not forget to bring your friends.
+\par I \emph{really} look forward to see you soon!
+\end{Body}
+\begin{Back}
+\Signature{Michel}
+\end{Back}
+\end{document}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.dtd b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.dtd
new file mode 100644
index 00000000000..c9a136de64c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.dtd
@@ -0,0 +1,15 @@
+<!-- invitation2 DTD -->
+<!-- August 14th 1998 mg -->
+<!ENTITY % i18n "xml:lang NMTOKEN #IMPLIED">
+<!ELEMENT invitation (par+)>
+<!ATTLIST invitation
+ %i18n;
+ date CDATA #REQUIRED
+ to CDATA #REQUIRED
+ signature CDATA #REQUIRED
+ where CDATA #REQUIRED
+ why CDATA #IMPLIED
+>
+<!ELEMENT par (#PCDATA|emph)*>
+<!ELEMENT emph (#PCDATA)>
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.html b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.html
new file mode 100644
index 00000000000..ba38c18495f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<title> Invitation (XSL/CSS formatting) </title>
+<link href="invit.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+<h1>INVITATION</h1>
+<table>
+<tbody>
+<tr>
+<td class="front">To: </td><td>Anna, Bernard, Didier, Johanna</td>
+</tr>
+<tr>
+<td class="front">When: </td><td>Next Friday Evening at 8 pm</td>
+</tr>
+<tr>
+<td class="front">Venue: </td><td>The Web Cafe</td>
+</tr>
+<tr>
+<td class="front">Occasion: </td><td>My first XML baby</td>
+</tr>
+</tbody>
+</table>
+<p>
+I would like to invite you all to celebrate
+the birth of <em>Invitation</em>, my
+first XML document child.
+</p>
+<p>
+Please do your best to come and join me next Friday
+evening. And, do not forget to bring your friends.
+</p>
+<p>
+I <em>really</em> look forward to see you soon!
+</p>
+<p class="signature">Michel</p>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.xml b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.xml
new file mode 100644
index 00000000000..1057637e730
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!DOCTYPE invitation SYSTEM "invitation2.dtd">
+<invitation to="Anna, Bernard, Didier, Johanna"
+ date="Next Friday Evening at 8 pm"
+ where="The Web Cafe"
+ why="My first XML baby"
+ signature="Michel"
+>
+<par>
+I would like to invite you all to celebrate
+the birth of <emph>Invitation</emph>, my
+first XML document child.
+</par>
+<par>
+Please do your best to come and join me next Friday
+evening. And, do not forget to bring your friends.
+</par>
+<par>
+I <emph>really</emph> look forward to see you soon!
+</par>
+</invitation>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitationfr.sty b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitationfr.sty
new file mode 100644
index 00000000000..e401c6b3ed5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitationfr.sty
@@ -0,0 +1,49 @@
+% invitation.sty
+% Package to format invitation.xml
+\setlength{\textwidth}{22pc}
+\setlength{\parskip}{1ex}
+\setlength{\parindent}{0pt}
+\pagestyle{empty}%% Turn off page numbering
+\RequirePackage{array,calc}
+\newcommand{\ToTitle}{To whom}
+\newcommand{\WhyTitle}{Occasion}
+\newcommand{\WhereTitle}{Venue}
+\newcommand{\DateTitle}{When}
+\newcommand{\SignatureTitle}{From}
+\DeclareOption{francais}{% French text for fixed texts
+ \renewcommand{\ToTitle}{À}
+ \renewcommand{\WhyTitle}{À l'occasion de}
+ \renewcommand{\WhereTitle}{Où}
+ \renewcommand{\DateTitle}{Quand}
+ \renewcommand{\SignatureTitle}{De la part de}}
+\newenvironment{Front}%
+ {\begin{center}
+ \Huge\sffamily INVITATION
+ \end{center}
+ }
+ {\begin{flushleft}
+ \rule{\linewidth}{1pt}\\[2mm]
+ \begin{tabular}{@{}>{\bfseries}ll@{}}
+ \ToTitle: & \@To \\
+ \WhyTitle: & \@Why \\
+ \WhereTitle: & \@Where \\
+ \DateTitle: & \@Date
+ \end{tabular}\\[2mm]
+ \rule{\linewidth}{1pt}
+ \end{flushleft}
+ }
+\newenvironment{Body}{\vspace*{\parskip}}{\vspace*{\parskip}}
+\newenvironment{Back}
+ {\begin{flushleft}}
+ {\hspace*{.5\linewidth}\fbox{\SignatureTitle: \emph{\@Sig}}
+ \end{flushleft}
+ }
+\newcommand{\To}[1]{\gdef\@To{#1}}
+\newcommand{\Date}[1]{\gdef\@Date{#1}}
+\newcommand{\Where}[1]{\gdef\@Where{#1}}
+\newcommand{\Why}[1]{\gdef\@Why{#1}}
+\newcommand{\Signature}[1]{\gdef\@Sig{#1}}
+
+\ProcessOptions
+
+\endinput
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invlat1.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invlat1.xsl
new file mode 100644
index 00000000000..e9d548faac2
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invlat1.xsl
@@ -0,0 +1,66 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:output method="text" indent="no" encoding="ISO-8859-1"/>
+
+<xsl:strip-space elements="*"/>
+
+<xsl:template match="invitation">
+<xsl:text>\documentclass[12pt]{article}
+\usepackage{invitation}
+\begin{document}
+</xsl:text>
+<xsl:apply-templates/>
+<xsl:text>\end{document}
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="front">
+<xsl:text>\begin{Front}
+\To{</xsl:text>
+<xsl:value-of select="to"/>
+<xsl:text>}
+\Date{</xsl:text>
+<xsl:value-of select="date"/>
+<xsl:text>}
+\Where{</xsl:text>
+<xsl:value-of select="where"/>
+<xsl:text>}
+\Why{</xsl:text>
+<xsl:value-of select="why"/>
+<xsl:text>}
+\end{Front}
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="body">
+<xsl:text>\begin{Body}
+</xsl:text>
+ <xsl:apply-templates/>
+<xsl:text>
+\end{Body}
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="par">
+<xsl:text>
+\par </xsl:text>
+<xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="emph">
+<xsl:text>\emph{</xsl:text>
+<xsl:apply-templates/>
+<xsl:text>}</xsl:text>
+</xsl:template>
+
+<xsl:template match="back">
+<xsl:text>\begin{Back}
+\Signature{</xsl:text>
+<xsl:value-of select="signature"/>
+<xsl:text>}
+\end{Back}
+</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invptex.pdf b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invptex.pdf
new file mode 100644
index 00000000000..f4df36f840c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invptex.pdf
Binary files differ
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invtab1.dsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invtab1.dsl
new file mode 100644
index 00000000000..3d7afc7d5ba
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invtab1.dsl
@@ -0,0 +1,82 @@
+<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style-Sheet//EN">
+<style-sheet>
+<style-specification>
+<style-specification-body>
+
+(define FontSize 12pt)
+
+(root
+ (make simple-page-sequence
+ left-margin: 2cm
+ page-width: 15cm
+ right-margin: 2cm
+ (make scroll
+ font-size: FontSize
+ (process-children))))
+
+(element front
+ (make sequence
+ (make paragraph
+ quadding: 'center
+ space-before: 20pt
+ font-weight: 'bold
+ font-size: 24pt
+ (literal "INVITATION"))
+ (make table
+ table-border: #f ; no border
+ display-alignment: 'start
+ space-before: 20pt
+ (make table-part
+ (make table-column width: 25mm)
+ (make table-column width: 10cm)
+ (process-children)))))
+(element (front date)
+ (make table-row
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal "When:")))
+ (make table-cell
+ (process-children))))
+(element (front to)
+ (make table-row
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal "To:")))
+ (make table-cell
+ (process-children))))
+(element (front where)
+ (make table-row
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal "Venue:")))
+ (make table-cell
+ (process-children))))
+(element (front why)
+ (make table-row
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal "Occasion:")))
+ (make table-cell
+ (process-children))))
+
+(element (body par)
+ (make paragraph
+ quadding: 'justify
+ font-size: FontSize
+ space-before: FontSize
+ (process-children)))
+(element emph
+ (make sequence
+ font-posture: 'italic
+ (process-children)))
+
+(element (back signature)
+ (make paragraph
+ quadding: 'end
+ space-before: FontSize
+ (literal "From: ")
+ (process-children)))
+
+</style-specification-body>
+</style-specification>
+</style-sheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invtab2.dsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invtab2.dsl
new file mode 100644
index 00000000000..eac8c01392e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invtab2.dsl
@@ -0,0 +1,75 @@
+<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style-Sheet//EN">
+<style-sheet>
+<style-specification>
+<style-specification-body>
+(define FontSize 12pt)
+(root
+ (make simple-page-sequence
+ left-margin: 1cm
+ page-width: 10cm
+ right-margin: 1cm
+ (make scroll
+ font-size: FontSize
+ (process-children))))
+(element invitation
+ (make sequence
+ (make paragraph
+ quadding: 'center
+ space-before: 20pt
+ font-weight: 'bold
+ font-size: 24pt
+ (literal "INVITATION"))
+ (make table
+ table-border: #f ; no border
+ display-alignment: 'start
+ space-before: 20pt
+ (make table-part
+ (make table-column width: 25mm)
+ (make table-column width: 10cm)
+ (make table-row
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal "When:")))
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal (attribute-string "date")))))
+ (make table-row
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal "To:")))
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal (attribute-string "to")))))
+ (make table-row
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal "Venue:")))
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal (attribute-string "where")))))
+ (make table-row
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal "Occasion:")))
+ (make table-cell
+ (make paragraph quadding: 'start
+ (literal (attribute-string "why")))))))
+ (process-children)
+ (make paragraph
+ quadding: 'end
+ space-before: FontSize
+ (literal "From: "
+ (attribute-string "signature")))))
+(element par
+ (make paragraph
+ quadding: 'justify
+ font-size: FontSize
+ space-before: FontSize
+ (process-children-trim)))
+(element emph
+ (make sequence
+ font-posture: 'italic
+ (process-children-trim)))
+</style-specification-body>
+</style-specification>
+</style-sheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotab1to2-bis.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotab1to2-bis.xsl
new file mode 100644
index 00000000000..b014c04a326
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotab1to2-bis.xsl
@@ -0,0 +1,22 @@
+<?xml version='1.0' encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:output method="xml" encoding="ISO-8859-1"/>
+
+<xsl:template match="countries">
+ <xsl:copy>
+ <xsl:apply-templates/>
+ </xsl:copy><xsl:text>&#xa;</xsl:text>
+</xsl:template>
+
+<xsl:template match="country">
+ <xsl:copy>
+ <xsl:for-each select="*">
+ <xsl:attribute name="{name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:for-each>
+ </xsl:copy>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotab1to2.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotab1to2.xsl
new file mode 100644
index 00000000000..4ecc4150d66
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotab1to2.xsl
@@ -0,0 +1,42 @@
+<?xml version='1.0' encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:output method="xml" encoding="ISO-8859-1"/>
+
+<xsl:template match="/">
+ <xsl:element name="countries"><xsl:text>&#xA;</xsl:text>
+ <xsl:for-each select="countries/country">
+ <xsl:element name="country">
+ <xsl:attribute name="shortname">
+ <xsl:value-of select="shortname"/>
+ </xsl:attribute>
+ <xsl:attribute name="fullname">
+ <xsl:value-of select="fullname"/>
+ </xsl:attribute>
+ <xsl:attribute name="isocountry">
+ <xsl:value-of select="isocountry"/>
+ </xsl:attribute>
+ <xsl:attribute name="capital">
+ <xsl:value-of select="capital"/>
+ </xsl:attribute>
+ <xsl:attribute name="citizen">
+ <xsl:value-of select="citizen"/>
+ </xsl:attribute>
+ <xsl:attribute name="adjective">
+ <xsl:value-of select="adjective"/>
+ </xsl:attribute>
+ <xsl:attribute name="currency">
+ <xsl:value-of select="currency"/>
+ </xsl:attribute>
+ <xsl:attribute name="isocurrency">
+ <xsl:value-of select="isocurrency"/>
+ </xsl:attribute>
+ <xsl:attribute name="currensubunit">
+ <xsl:value-of select="currensubunit"/>
+ </xsl:attribute>
+ </xsl:element><xsl:text>&#xA;</xsl:text>
+ </xsl:for-each>
+ </xsl:element><xsl:text>&#xA;</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotabexa1.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotabexa1.xsl
new file mode 100644
index 00000000000..57e2152ba22
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotabexa1.xsl
@@ -0,0 +1,20 @@
+<?xml version='1.0' encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:output method="text" encoding="ISO-8859-1"/>
+
+<xsl:template match="/countries">
+ <xsl:for-each select="country">
+ <xsl:sort select="@capital"/>
+ <xsl:if test="(@capital != '-') and (@capital != ' ')">
+ <xsl:value-of select="@capital"/>
+ <xsl:text> is the capital of </xsl:text>
+ <xsl:value-of select="@shortname"/>
+ <xsl:text> (ISO-code </xsl:text>
+ <xsl:value-of select="@isocountry"/>
+ <xsl:text>)&#xA;</xsl:text><!-- new line -->
+ </xsl:if>
+ </xsl:for-each>
+</xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotabexa2.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotabexa2.xsl
new file mode 100644
index 00000000000..38ad5aa33e0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotabexa2.xsl
@@ -0,0 +1,73 @@
+<?xml version='1.0' encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:date="http://www.jclark.com/xt/java/java.util.Date"
+ xmlns:xt="http://www.jclark.com/xt"
+ extension-element-prefixes="xt">
+
+<xsl:template match="/">
+ <xsl:call-template name="newfile">
+ <xsl:with-param name="abc" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="newfile">
+ <xsl:param name="abc" />
+ <xsl:variable name="letter" select="substring($abc,1,1)" />
+ <xsl:variable name="file" select="concat($letter,'-currency.txt')"/>
+ <xt:document method="text" href="{$file}" encoding="ISO-8859-1">
+ <xsl:for-each select="//country[starts-with(isocurrency, $letter)]">
+ <xsl:sort select="shortname"/>
+ <xsl:sort select="currency"/>
+ <xsl:variable name="Currency" select="normalize-space(string(currency))"/>
+ <xsl:if test="($Currency != '-') and ($Currency != '')">
+ <xsl:text>The </xsl:text>
+ <xsl:value-of select="currency"/>
+ <xsl:text> is used by </xsl:text>
+ <xsl:variable name="L1" select="substring(citizen,1,1)"/>
+ <xsl:choose>
+ <xsl:when test="$L1 = 'A' or $L1 = 'E' or $L1 = 'I' or
+ $L1 = 'O' or $L1 = 'U'">
+ <xsl:text>an </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>a </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="citizen"/>
+ <xsl:text> living in </xsl:text>
+ <xsl:value-of select="shortname"/>
+ <xsl:text>.&#xA;</xsl:text><!-- new line -->
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:call-template name="footer"/>
+ </xt:document>
+
+ <xsl:if test="string-length($abc) != 1">
+ <xsl:call-template name="newfile">
+ <xsl:with-param name="abc" select="substring($abc, 2)" />
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="footer">
+ <xsl:text>Last modification : Michel Goossens, </xsl:text>
+ <xsl:choose>
+ <xsl:when test="function-available('date:to-string') and
+ function-available('date:new')">
+ <!-- date format : Fri Dec 31 23:59:59 PDT 1999 -->
+ <!-- 1234567890123456789012345678 -->
+ <xsl:variable name="datetemp" select="date:to-string(date:new())"/>
+ <xsl:variable name="month" select="substring($datetemp,5,3)"/>
+ <xsl:variable name="day" select="substring($datetemp,9,2)"/>
+ <xsl:variable name="year" select="substring($datetemp,string-length($datetemp)-3,4)"/>
+ <xsl:variable name="Date" select="concat($day,' ',$month,'. ',$year)"/>
+ <xsl:value-of select="$Date"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>11 Nov. 1999</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sectionexa.xml b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sectionexa.xml
new file mode 100644
index 00000000000..9d73bc1793a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sectionexa.xml
@@ -0,0 +1,22 @@
+<article>
+ <title>This is the article's title</title>
+ <author>Michel Goossens</author>
+ <author>Sebastian Rahtz</author>
+ <abstract>A <emph>short</emph> description of the contents</abstract>
+ <section sectid="S1">
+ <stitle>First section title</stitle>
+ <par ident="first">The first paragraph for this section.</par>
+ <par ident="normal">A normal paragraph with <emph>emphasised</emph> text.</par>
+ <par>Here we have <emph>no</emph> attribute.</par>
+ <par ident="last">This is the end of the section.</par>
+ </section>
+ <section sectid="S2">
+ <stitle>Second section title</stitle>
+ <par ident="first">The first paragraph for this section.</par>
+ <par>Here we <emph>also</emph> have <emph>no</emph> attribute.</par>
+ <par ident="normal" id="special">A normal paragraph with
+ <emph>emphasised</emph> text.</par>
+ <par>Another attribute-less paragraph.</par>
+ <par ident="last">This is the end of the section.</par>
+ </section>
+</article>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sectionexa.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sectionexa.xsl
new file mode 100644
index 00000000000..e9029d4aa0a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sectionexa.xsl
@@ -0,0 +1,73 @@
+<?xml version='1.0'?>
+<xsl:stylesheet
+ version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ result-ns="">
+<xsl:template match="/">
+ <xsl:text>(*root*)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/*root*)</xsl:text>
+</xsl:template>
+<xsl:template match="*" priority="-1">
+ <xsl:text>(*)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/*)</xsl:text>
+</xsl:template>
+<xsl:template match="par">
+ <xsl:text>(T1)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/T1)</xsl:text>
+</xsl:template>
+<xsl:template match="par[@ident]" priority="1">
+ <xsl:text>(T2)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/T2)</xsl:text>
+</xsl:template>
+<xsl:template match="par[@ident='first']" priority="2">
+ <xsl:text>(T3)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/T3)</xsl:text>
+</xsl:template>
+<xsl:template match="section[@sectid='S2']
+ /par[@ident='normal' and @id='special']" priority="3">
+ <xsl:text>(T4)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/T4)</xsl:text>
+</xsl:template>
+<xsl:template match="section[position()=last()]">
+ <xsl:text>(P1)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/P1)</xsl:text>
+</xsl:template>
+<xsl:template match="section[position()>1]/par[position()=1]" priority="3">
+ <xsl:text>(P2)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/P2)</xsl:text>
+</xsl:template>
+<xsl:template match="author">
+ <xsl:text>(A1)</xsl:text>
+ <xsl:text>author 1: </xsl:text>
+ <xsl:text>(/A1)</xsl:text>
+ <xsl:apply-templates/>
+</xsl:template>
+<xsl:template match="author[position()=last()]" priority="1">
+ <xsl:text>(A2)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/A2)</xsl:text>
+</xsl:template>
+<xsl:template
+ match="stitle[contains(text(),'First')]" priority="1">
+ <xsl:text>(WD)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/WD)</xsl:text>
+</xsl:template>
+<xsl:template match="emph[position()=1 and position()=last()]" priority="2">
+ <xsl:text>(E1)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/E1)</xsl:text>
+</xsl:template>
+<xsl:template match="emph[not(position()=1 and position()=last())]" priority="2">
+ <xsl:text>(E2)</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>(/E2)</xsl:text>
+</xsl:template>
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sgmlspl.pl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sgmlspl.pl
new file mode 100644
index 00000000000..c91a6cb004f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sgmlspl.pl
@@ -0,0 +1,317 @@
+#!/usr/bin/perl
+########################################################################
+# sgmlspl: a simple SGML postprocesser for the SGMLS and NSGMLS
+# parsers (requires SGMLS.pm library).
+#
+# Copyright (c) 1995 by David Megginson <dmeggins@aix1.uottawa.ca>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+# $Log: sgmlspl.pl,v $
+# Revision 1.8 1995/12/03 21:46:31 david
+# Eliminated all use of the SGMLS_Event::key method.
+#
+# Revision 1.7 1995/11/15 20:22:24 david
+# Changed "use Output" to "use SGMLS::Output". Qualified the STDIN
+# filehandle for the SGMLS object with the main:: package name.
+#
+# Revision 1.6 1995/08/12 16:15:14 david
+# Revised version for 1.01 distribution.
+#
+# Revision 1.5 1995/04/27 11:52:25 david
+# Changed 'print' to 'main::output' for re handler; empty string
+# translates into an empty sub {} rather than a sub printing an empty
+# string; instead of evaluating every argument as a perl script, take
+# only the first as a perl script and the rest as its arguments; allow
+# empty scripts or scripts which do not end with '1;'; pass the event
+# itself as the second argument to each handler, after the event data.
+#
+# Revision 1.4 1995/04/23 14:44:58 david
+# Use the Output package. Fixed the $version variable.
+#
+# Revision 1.3 1995/04/22 21:02:49 david
+# Added some missing 'last SWITCH;' statements in the sgmls function.
+#
+# Revision 1.2 1995/04/22 20:58:48 david
+# Added $SGMLS_PL::version variable and changed SDATA notation from
+# [SDATA] to |SDATA|.
+#
+# Revision 1.1 1995/04/22 14:40:50 david
+# Initial revision
+#
+########################################################################
+
+use SGMLS::Output;
+
+package SGMLS_PL;
+use SGMLS;
+
+$version = '$Id: sgmlspl.pl,v 1.8 1995/12/03 21:46:31 david Exp $';
+
+#
+# Set up handler defaults.
+#
+$start_document_handler = sub {};
+$end_document_handler = sub {};
+$start_element_handlers = { '' => sub {} };
+$end_element_handlers = { '' => sub {} };
+$cdata_handler = sub { main::output($_[0]); };
+$sdata_handlers = { '' => sub { main::output($_[0]);} };
+$re_handler = sub { main::output("\n"); };
+$pi_handler = sub { '' => sub {} };
+$entity_handlers = { '' => sub {} };
+$start_subdoc_handlers = { '' => sub {} };
+$end_subdoc_handlers = { '' => sub {} };
+$conforming_handler = sub {};
+
+#
+# Main access point: declare handlers for different SGML events.
+#
+# Usage: sgml(event, handler);
+#
+# The event may be one of the following strings, or a special pattern.
+# The generic events are as follow:
+#
+# 'start' The beginning of the document.
+# 'end' The end of the document.
+# 'start_element' The beginning of an element.
+# 'end_element' The end of an element.
+# 'cdata' Regular character data.
+# 'sdata' Special system-specific data.
+# 're' A record-end.
+# 'pi' A processing instruction.
+# 'entity' An external-entity reference.
+# 'start_subdoc' The beginning of a subdocument entity.
+# 'end_subdoc' The end of a subdocument entity.
+# 'conforming' The document is conforming.
+#
+# In addition to these generic events, it is possible to handlers
+# for certain specific, named events, as follow:
+#
+# '<GI>' The beginning of element GI.
+# '</GI>' The end of element GI.
+# '[SDATA]' The system-specific data SDATA.
+# '&ENAME;' A reference to the external entity ENAME.
+# '{ENAME}' The beginning of the subdocument-entity ENAME.
+# '{/ENAME}' The end of the subdocument-entity ENAME.
+#
+#
+# The handler may be a string, which will simply be printed when the
+# event occurs (this is usually useful only for the specific, named
+# events), or a reference to an anonymous subroutine, which will
+# receive two arguments: the event data and the event itself. For
+# example,
+#
+# sgml('<FOO>', "\n\\begin{foo}\n");
+#
+# and
+#
+# sgml('<FOO>', sub { output("\n\\begin{foo}\n"); });
+#
+# will have identical results.
+#
+sub main::sgml {
+ my ($spec,$handler) = (@_);
+ if (ref($handler) ne 'CODE') {
+ $handler =~ s/\\/\\\\/g;
+ $handler =~ s/'/\\'/g;
+ if ($handler eq '') {
+ $handler = sub {};
+ } else {
+ $handler = eval "sub { main::output('$handler'); };";
+ }
+ }
+ SWITCH: {
+ # start-document handler
+ $spec eq 'start' && do {
+ $start_document_handler = $handler;
+ last SWITCH;
+ };
+ # end-document handler
+ $spec eq 'end' && do {
+ $end_document_handler = $handler;
+ last SWITCH;
+ };
+ # start-element handler
+ $spec =~ /^<([^\/].*|)>$/ && do {
+ $start_element_handlers->{$1} = $handler;
+ last SWITCH;
+ };
+ # generic start-element handler
+ $spec eq 'start_element' && do {
+ $start_element_handlers->{''} = $handler;
+ last SWITCH;
+ };
+ # end-element handler
+ $spec =~ /^<\/(.*)>$/ && do {
+ $end_element_handlers->{$1} = $handler;
+ last SWITCH;
+ };
+ # generic end-element handler
+ $spec =~ 'end_element' && do {
+ $end_element_handlers->{''} = $handler;
+ last SWITCH;
+ };
+ # cdata handler
+ $spec eq 'cdata' && do {
+ $cdata_handler = $handler;
+ last SWITCH;
+ };
+ # sdata handler
+ $spec =~ /^\|(.*)\|$/ && do {
+ $sdata_handlers->{$1} = $handler;
+ last SWITCH;
+ };
+ # generic sdata handler
+ $spec eq 'sdata' && do {
+ $sdata_handlers->{''} = $handler;
+ last SWITCH;
+ };
+ # record-end handler
+ $spec eq 're' && do {
+ $re_handler = $handler;
+ last SWITCH;
+ };
+ # processing-instruction handler
+ $spec eq 'pi' && do {
+ $pi_handler = $handler;
+ last SWITCH;
+ };
+ # entity-reference handler
+ $spec =~ /^\&(.*);$/ && do {
+ $entity_handlers->{$1} = $handler;
+ last SWITCH;
+ };
+ # generic entity-reference handler
+ $spec eq 'entity' && do {
+ $entity_handlers->{''} = $handler;
+ last SWITCH;
+ };
+ # start-subdoc handler
+ $spec =~ /^\{([^\/].*|)\}$/ && do {
+ $start_subdoc_handlers->{$1} = $handler;
+ last SWITCH;
+ };
+ # generic start-subdoc handler
+ $spec eq 'start_subdoc' && do {
+ $start_subdoc_handlers->{''} = $handler;
+ last SWITCH;
+ };
+ # end-subdoc handler
+ $spec =~ /^\{\/(.*)\}$/ && do {
+ $end_subdoc_handlers->{$1} = $handler;
+ last SWITCH;
+ };
+ # generic end-subdoc handler
+ $spec eq 'end_subdoc' && do {
+ $end_subdoc_handlers->{''} = $handler;
+ last SWITCH;
+ };
+ # conforming handler
+ $spec eq 'conforming' && do {
+ $conforming_handler = $handler;
+ last SWITCH;
+ };
+
+ die "Bad SGML handler pattern: $spec\n";
+ }
+}
+
+
+#
+# The first argument on the command line is a perl module which will be
+# read here and evaluated in the 'main' package -- everything else will
+# be an argument to it.
+#
+package main;
+
+$ARGV = shift;
+unless ($ARGV eq '' || do $ARGV) {
+ if (!-e $ARGV) {
+ die "FATAL: $ARGV does not exist.\n";
+ } elsif (!-r $ARGV) {
+ die "FATAL: $ARGV exists but is read-protected.\n";
+ } elsif ($@) {
+ die "FATAL: $@\n";
+ }
+}
+
+
+#
+# Do the actual work, using the SGMLS package.
+#
+package SGMLS_PL;
+
+$parse = new SGMLS(main::STDIN); # a new parse object
+
+&{$start_document_handler}(); # run the start handler.
+
+ # run the appropriate handler for each
+ # event
+while ($event = $parse->next_event) {
+ my $type = $event->type;
+ SWITCH: {
+ $type eq 'start_element' && do {
+ &{($start_element_handlers->{$event->data->name}||
+ $start_element_handlers->{''} || sub {})}($event->data,$event);
+ last SWITCH;
+ };
+ $type eq 'end_element' && do {
+ &{($end_element_handlers->{$event->data->name}||
+ $end_element_handlers->{''} || sub {})}($event->data,$event);
+ last SWITCH;
+ };
+ $type eq 'cdata' && do {
+ &{$cdata_handler}($event->data,$event);
+ last SWITCH;
+ };
+ $type eq 'sdata' && do {
+ &{($sdata_handlers->{$event->data}||
+ $sdata_handlers->{''} || sub {})}($event->data,$event);
+ last SWITCH;
+ };
+ $type eq 're' && do {
+ &{$re_handler}($event->data,$event);
+ last SWITCH;
+ };
+ $type eq 'pi' && do {
+ &{$pi_handler}($event->data,$event);
+ last SWITCH;
+ };
+ $type eq 'entity' && do {
+ &{($entity_handlers->{$event->data->name}||
+ $entity_handlers->{''} || sub {})}($event->data,$event);
+ last SWITCH;
+ };
+ $type eq 'start_subdoc' && do {
+ &{($start_subdoc_handlers->{$event->data->name}||
+ $start_subdoc_handlers->{''} || sub {})}($event->data,$event);
+ last SWITCH;
+ };
+ $type eq 'end_subdoc' && do {
+ &{($end_subdoc_handlers->{$event->data->name}||
+ $end_subdoc_handlers->{''} || sub {})}($event->data,$event);
+ last SWITCH;
+ };
+ $type eq 'conforming' && do {
+ &{$conforming_handler}($event->data,$event);
+ last SWITCH;
+ };
+
+ die "Unknown SGML event type: $type\n";
+ }
+}
+
+&{$end_document_handler}(); # run the end handler
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/skel.pl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/skel.pl
new file mode 100644
index 00000000000..f10c1ff3f85
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/skel.pl
@@ -0,0 +1,178 @@
+########################################################################
+# skel.pl: an SGMLSPL script for producing scripts (!!).
+#
+# Copyright (c) 1995 by David Megginson <dmeggins@aix1.uottawa.ca>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#
+# Changes:
+#
+# $Log: skel.pl,v $
+# Revision 1.4 1995/11/15 20:21:07 david
+# Changed "use Output" to "use SGMLS::Output".
+#
+# Revision 1.3 1995/08/24 15:04:38 david
+# Fixed commented-out 're' handler.
+#
+# Revision 1.2 1995/08/12 16:16:42 david
+# Revised version for 1.01 distribution.
+#
+# Revision 1.1 1995/04/23 14:49:35 david
+# Initial revision
+#
+########################################################################
+
+use SGMLS;
+use SGMLS::Output;
+
+$version = '$Id: skel.pl,v 1.4 1995/11/15 20:21:07 david Exp $';
+
+%subdocs = (); # Subdocument entities seen so far.
+%entities = (); # External data entities seen so far.
+%sdata = (); # SDATA strings seen so far.
+%elements = (); # Elements seen so far.
+$pi = 0; # Any processing instructions?
+
+$intro = 0; # Have we printed the banner yet?
+
+$| = 1;
+
+sgml('end_element', ''); # Ignore the ends of elements.
+sgml('end_subdoc', ''); # Ignore the ends of subdocument entities.
+sgml('cdata', ''); # Ignore CDATA.
+sgml('re', ''); # Ignore Record Ends.
+
+ # Note any processing instructions.
+sgml('pi', sub { $pi = 1; });
+
+ # Keep track of all subdocument entities.
+sgml('start_subdoc', sub {
+ my $entity = shift;
+ $entities{$entity->name} = 1;
+});
+ # Keep track of all external data entities.
+sgml('entity', sub {
+ my $entity = shift;
+ $entities{$entity->name} = 1;
+});
+ # Keep track of all SDATA strings
+sgml('sdata', sub {
+ my $sdata = shift;
+ $sdata{$sdata} = 1;
+});
+
+ # Display element handlers as they appear.
+sgml('start_element', sub {
+ my $element = shift;
+ unless ($intro) {
+ $intro = 1;
+ do_intro($element->name);
+ }
+ if (!$elements{$element->name}) {
+ output "# Element: " . $element->name . "\n";
+ output "sgml('<" . $element->name . ">', \"\");\n";
+ output "sgml('</" . $element->name . ">', \"\");\n\n";
+ $elements{$element->name} = 1;
+ }
+});
+
+sgml('end', sub {
+ # generate subdoc handlers
+ my @keys = keys(%subdocs);
+ if ($#keys > 0) {
+ output "#\n# Subdocument Entity Handlers\n#\n\n";
+ foreach (@keys) {
+ output "# Subdocument Entity: $_\n";
+ output "sgml('{" . $_ . "}', \"\");\n";
+ output "sgml('{/" . $_ . "}', \"\");\n\n";
+ }
+ }
+ # generate entity handlers
+ my @keys = keys(%entities);
+ if ($#keys > 0) {
+ output "#\n# External Data Entity Handlers\n#\n\n";
+ foreach (@keys) {
+ output "sgml('&" . $_ . ";', \"\");\n";
+ }
+ }
+ # generate sdata handlers
+ my @keys = keys(%sdata);
+ if ($#keys > 0) {
+ output "#\n# SDATA Handlers\n#\n\n";
+ foreach (@keys) {
+ output "sgml('|" . $_ . "|', \"\");\n";
+ }
+ }
+
+ if ($pi) {
+ output "#\n# Processing-Instruction Handler\n#\n";
+ output "sgml('pi', sub {});\n\n";
+ }
+
+ output <<END;
+#
+# Default handlers (uncomment these if needed). Right now, these are set
+# up to gag on any unrecognised elements, sdata, processing-instructions,
+# or entities.
+#
+# sgml('start_element',sub { die "Unknown element: " . \$_[0]->name; });
+# sgml('end_element','');
+# sgml('cdata',sub { output \$_[0]; });
+# sgml('sdata',sub { die "Unknown SDATA: " . \$_[0]; });
+# sgml('re',"\\n");
+# sgml('pi',sub { die "Unknown processing instruction: " . \$_[0]; });
+# sgml('entity',sub { die "Unknown external entity: " . \$_[0]->name; });
+# sgml('start_subdoc',sub { die "Unknown subdoc entity: " . \$_[0]->name; });
+# sgml('end_subdoc','');
+# sgml('conforming','');
+
+1;
+END
+});
+
+
+
+ # Function to print the banner.
+sub do_intro {
+ my $doctype = shift;
+ output <<END;
+########################################################################
+# SGMLSPL script produced automatically by the script sgmlspl.pl
+#
+# Document Type: $doctype
+# Edited by:
+########################################################################
+
+use SGMLS; # Use the SGMLS package.
+use SGMLS::Output; # Use stack-based output.
+
+#
+# Document Handlers.
+#
+sgml('start', sub {});
+sgml('end', sub {});
+
+#
+# Element Handlers.
+#
+
+END
+}
+
+1;
+
+
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/style-sheet.dtd b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/style-sheet.dtd
new file mode 100644
index 00000000000..0ee4e674d37
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/style-sheet.dtd
@@ -0,0 +1,41 @@
+<!-- A DTD for DSSSL Style Sheets. The public identifier for this is
+
+ "-//James Clark//DTD DSSSL Style Sheet//EN"
+-->
+
+<!element style-sheet o o (style-specification,
+ (external-specification|style-specification)*)>
+<!element style-specification o o (style-specification-body)>
+<!attlist style-specification
+ id id #implied
+ use idrefs #implied
+>
+<!element style-specification-body o o (#pcdata)>
+<!attlist style-specification-body
+ content entity #conref
+>
+<!element external-specification - o empty>
+<!attlist external-specification
+ id id #required
+ document entity #required
+ specid name #implied
+>
+<?IS10744 ArcBase DSSSL>
+<!NOTATION DSSSL PUBLIC "ISO/IEC 10179:1996//NOTATION
+ DSSSL Architecture Definition Document//EN"
+ -- A document architecture conforming to the
+ Architectural Form Definition Requirements of
+ ISO/IEC 10744. --
+>
+
+<!ATTLIST #NOTATION DSSSL
+ -- Support attributes for all architectures --
+ ArcQuant CDATA #FIXED "NAMELEN 64"
+ ArcDTD CDATA #FIXED "%DSSSLDTD"
+ ArcDocF NAME #FIXED dsssl-specification
+ ArcDataF NAME #FIXED dsssl-specification
+>
+
+<!ENTITY % DSSSLDTD PUBLIC
+ "ISO/IEC 10179:1996//DTD DSSSL Architecture//EN"
+>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatest.xml b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatest.xml
new file mode 100644
index 00000000000..be664cb09e1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatest.xml
@@ -0,0 +1,3 @@
+<invitation>
+<to>Anna, Bernard, Didier, Johanna</to>
+</invitation>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatest.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatest.xsl
new file mode 100644
index 00000000000..da5d52f2030
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatest.xsl
@@ -0,0 +1,41 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/XSL/Format/1.0"
+ result-ns="fo"
+ default-space="">
+<xsl:template name="listitem">
+ <xsl:param-variable name="labeltext">labeltext</xsl:param-variable>
+ <xsl:param-variable name="itemid">itemid</xsl:param-variable>
+ <xsl:param-variable name="itemtext">itemtext</xsl:param-variable>
+ <fo:list-item id="{$itemid}">
+ <fo:list-item-label font-style="italic">
+ $labeltext<xsl:text>:</xsl:text>
+ </fo:list-item-label>
+ <fo:list-item-body>
+ <xsl:value-of select="$itemtext"/>
+ </fo:list-item-body>
+ </fo:list-item>
+</xsl:template>
+
+<xsl:template match='/'>
+ <fo:page-sequence>
+ <xsl:apply-templates/>
+ </fo:page-sequence>
+</xsl:template>
+
+<xsl:template match="invitation">
+<fo:list-block>
+ <xsl:call-template name="listitem">
+ <xsl:param name="labeltext">To</xsl:param>
+ <xsl:param name="itemid">listto</xsl:param>
+ <xsl:param name="itemtext">to</xsl:param>
+ </xsl:call-template>
+</fo:list-block>
+</xsl:template>
+
+</xsl:stylesheet>
+
+
+
+
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatestnok.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatestnok.xsl
new file mode 100644
index 00000000000..da5d52f2030
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatestnok.xsl
@@ -0,0 +1,41 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/XSL/Format/1.0"
+ result-ns="fo"
+ default-space="">
+<xsl:template name="listitem">
+ <xsl:param-variable name="labeltext">labeltext</xsl:param-variable>
+ <xsl:param-variable name="itemid">itemid</xsl:param-variable>
+ <xsl:param-variable name="itemtext">itemtext</xsl:param-variable>
+ <fo:list-item id="{$itemid}">
+ <fo:list-item-label font-style="italic">
+ $labeltext<xsl:text>:</xsl:text>
+ </fo:list-item-label>
+ <fo:list-item-body>
+ <xsl:value-of select="$itemtext"/>
+ </fo:list-item-body>
+ </fo:list-item>
+</xsl:template>
+
+<xsl:template match='/'>
+ <fo:page-sequence>
+ <xsl:apply-templates/>
+ </fo:page-sequence>
+</xsl:template>
+
+<xsl:template match="invitation">
+<fo:list-block>
+ <xsl:call-template name="listitem">
+ <xsl:param name="labeltext">To</xsl:param>
+ <xsl:param name="itemid">listto</xsl:param>
+ <xsl:param name="itemtext">to</xsl:param>
+ </xsl:call-template>
+</fo:list-block>
+</xsl:template>
+
+</xsl:stylesheet>
+
+
+
+
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatestok.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatestok.xsl
new file mode 100644
index 00000000000..01daaaa4c32
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatestok.xsl
@@ -0,0 +1,31 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/XSL/Format/1.0"
+ result-ns="fo"
+ default-space="">
+
+<xsl:template match='/'>
+ <fo:page-sequence>
+ <xsl:apply-templates/>
+ </fo:page-sequence>
+</xsl:template>
+
+<xsl:template match="invitation">
+<fo:list-block>
+ <fo:list-item id="listto">
+ <fo:list-item-label font-style="italic">
+ <xsl:text>To:</xsl:text>
+ </fo:list-item-label>
+ <fo:list-item-body>
+ <xsl:value-of select="to"/>
+ </fo:list-item-body>
+ </fo:list-item>
+</fo:list-block>
+</xsl:template>
+
+</xsl:stylesheet>
+
+
+
+
+
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/test-SGMLS.pl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/test-SGMLS.pl
new file mode 100644
index 00000000000..f18f972832e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/test-SGMLS.pl
@@ -0,0 +1,13 @@
+use SGMLS;
+
+$\ = "\n";
+
+$parse = new SGMLS(STDIN);
+
+while ($event = $parse->next_event) {
+ print "Event type: " . $event->type;
+ print "Data: " . $event->data;
+ print "File: " . $event->file || "[unavailable]";
+ print "Line: " . $event->line || "[unavailable]";
+ print "";
+}
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/writefiles.xml b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/writefiles.xml
new file mode 100644
index 00000000000..0f1db9648a5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/writefiles.xml
@@ -0,0 +1,9 @@
+<outputfiles>
+<file filename="filea.out">
+10 &lt; 20
+</file>
+<file filename="fileb.out">
+43 &gt; 34
+An ampersand character: &amp;.
+</file>
+</outputfiles>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/wrong.xml b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/wrong.xml
new file mode 100644
index 00000000000..4f3827b7adc
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/wrong.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE wrong [
+<!ELEMENT wrong (par*)>
+<!ELEMENT par (#PCDATA|emph)*>
+<!ELEMENT emph (#PCDATA)*>
+]>
+<wrong>
+<par>This part has wrong entity syntax &lt;par&gt.</par>
+<emph>Emph text outside scope.</emph>
+<par>Here comes another error <par>a second level
+paragraph</par>.</par>
+<par>A wrongly nested <emph>construct</par></emph>.
+Some more text outside valid scope
+<par>Reserved characters "&" "<" ">" ";" .</par>
+</wrong>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/xml.dcl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/xml.dcl
new file mode 100644
index 00000000000..fed21030921
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/xml.dcl
@@ -0,0 +1,179 @@
+<!SGML -- SGML Declaration for valid XML documents --
+ "ISO 8879:1986 (WWW)"
+
+ CHARSET
+ BASESET
+ "ISO Registration Number 176//CHARSET
+ ISO/IEC 10646-1:1993 UCS-4 with implementation
+ level 3//ESC 2/5 2/15 4/6"
+ DESCSET
+ 0 9 UNUSED
+ 9 2 9
+ 11 2 UNUSED
+ 13 1 13
+ 14 18 UNUSED
+ 32 95 32
+ 127 1 UNUSED
+ 128 32 UNUSED
+ -- use this instead of the official declaration because SP only
+ supports 16-bit characters --
+ 160 65374 160
+ 65534 2 UNUSED
+ -- 55296 2048 UNUSED
+ 57344 8190 57344
+ 65534 2 UNUSED
+ 65536 1048576 65536 --
+ CAPACITY NONE
+
+ SCOPE DOCUMENT
+
+ SYNTAX
+ SHUNCHAR NONE
+ BASESET "ISO Registration Number 176//CHARSET
+ ISO/IEC 10646-1:1993 UCS-4 with implementation
+ level 3//ESC 2/5 2/15 4/6"
+ DESCSET
+ 0 1114112 0
+ FUNCTION
+ RE 13
+ RS 10
+ SPACE 32
+ TAB SEPCHAR 9
+
+ NAMING
+ LCNMSTRT ""
+ UCNMSTRT ""
+ NAMESTRT
+ 58 95 192-214 216-246 248-305 308-318 321-328
+ 330-382 384-451 461-496 500-501 506-535 592-680
+ 699-705 902 904-906 908 910-929 931-974 976-982
+ 986 988 990 992 994-1011 1025-1036 1038-1103
+ 1105-1116 1118-1153 1168-1220 1223-1224
+ 1227-1228 1232-1259 1262-1269 1272-1273
+ 1329-1366 1369 1377-1414 1488-1514 1520-1522
+ 1569-1594 1601-1610 1649-1719 1722-1726
+ 1728-1742 1744-1747 1749 1765-1766 2309-2361
+ 2365 2392-2401 2437-2444 2447-2448 2451-2472
+ 2474-2480 2482 2486-2489 2524-2525 2527-2529
+ 2544-2545 2565-2570 2575-2576 2579-2600
+ 2602-2608 2610-2611 2613-2614 2616-2617
+ 2649-2652 2654 2674-2676 2693-2699 2701
+ 2703-2705 2707-2728 2730-2736 2738-2739
+ 2741-2745 2749 2784 2821-2828 2831-2832
+ 2835-2856 2858-2864 2866-2867 2870-2873 2877
+ 2908-2909 2911-2913 2949-2954 2958-2960
+ 2962-2965 2969-2970 2972 2974-2975 2979-2980
+ 2984-2986 2990-2997 2999-3001 3077-3084
+ 3086-3088 3090-3112 3114-3123 3125-3129
+ 3168-3169 3205-3212 3214-3216 3218-3240
+ 3242-3251 3253-3257 3294 3296-3297 3333-3340
+ 3342-3344 3346-3368 3370-3385 3424-3425
+ 3585-3630 3632 3634-3635 3648-3653 3713-3714
+ 3716 3719-3720 3722 3725 3732-3735 3737-3743
+ 3745-3747 3749 3751 3754-3755 3757-3758 3760
+ 3762-3763 3773 3776-3780 3904-3911 3913-3945
+ 4256-4293 4304-4342 4352 4354-4355 4357-4359
+ 4361 4363-4364 4366-4370 4412 4414 4416 4428
+ 4430 4432 4436-4437 4441 4447-4449 4451 4453
+ 4455 4457 4461-4462 4466-4467 4469 4510 4520
+ 4523 4526-4527 4535-4536 4538 4540-4546 4587
+ 4592 4601 7680-7835 7840-7929 7936-7957
+ 7960-7965 7968-8005 8008-8013 8016-8023 8025
+ 8027 8029 8031-8061 8064-8116 8118-8124 8126
+ 8130-8132 8134-8140 8144-8147 8150-8155
+ 8160-8172 8178-8180 8182-8188 8486 8490-8491
+ 8494 8576-8578 12295 12321-12329 12353-12436
+ 12449-12538 12549-12588 19968-40869 44032-55203
+
+ LCNMCHAR ""
+ UCNMCHAR ""
+ NAMECHAR
+ 45-46 183 720-721 768-837 864-865 903 1155-1158
+ 1425-1441 1443-1465 1467-1469 1471 1473-1474
+ 1476 1600 1611-1618 1632-1641 1648 1750-1764
+ 1767-1768 1770-1773 1776-1785 2305-2307 2364
+ 2366-2381 2385-2388 2402-2403 2406-2415
+ 2433-2435 2492 2494-2500 2503-2504 2507-2509
+ 2519 2530-2531 2534-2543 2562 2620 2622-2626
+ 2631-2632 2635-2637 2662-2673 2689-2691 2748
+ 2750-2757 2759-2761 2763-2765 2790-2799
+ 2817-2819 2876 2878-2883 2887-2888 2891-2893
+ 2902-2903 2918-2927 2946-2947 3006-3010
+ 3014-3016 3018-3021 3031 3047-3055 3073-3075
+ 3134-3140 3142-3144 3146-3149 3157-3158
+ 3174-3183 3202-3203 3262-3268 3270-3272
+ 3274-3277 3285-3286 3302-3311 3330-3331
+ 3390-3395 3398-3400 3402-3405 3415 3430-3439
+ 3633 3636-3642 3654-3662 3664-3673 3761
+ 3764-3769 3771-3772 3782 3784-3789 3792-3801
+ 3864-3865 3872-3881 3893 3895 3897 3902-3903
+ 3953-3972 3974-3979 3984-3989 3991 3993-4013
+ 4017-4023 4025 8400-8412 8417 12293 12330-12335
+ 12337-12341 12441-12442 12445-12446 12540-12542
+
+ NAMECASE
+ GENERAL NO
+ ENTITY NO
+
+ DELIM
+ GENERAL SGMLREF
+ HCRO "&#38;#x" -- 38 is the number for ampersand --
+ NESTC "/"
+ NET ">"
+ PIC "?>"
+ SHORTREF NONE
+
+ NAMES
+ SGMLREF
+
+ QUANTITY NONE
+
+ ENTITIES
+ "amp" 38
+ "lt" 60
+ "gt" 62
+ "quot" 34
+ "apos" 39
+
+ FEATURES
+ MINIMIZE
+ DATATAG NO
+ OMITTAG NO
+ RANK NO
+ SHORTTAG
+ STARTTAG
+ EMPTY NO
+ UNCLOSED NO
+ NETENABL IMMEDNET
+ ENDTAG
+ EMPTY NO
+ UNCLOSED NO
+ ATTRIB
+ DEFAULT YES
+ OMITNAME NO
+ VALUE NO
+ EMPTYNRM YES
+ IMPLYDEF
+ ATTLIST NO
+ DOCTYPE NO
+ ELEMENT NO
+ ENTITY NO
+ NOTATION NO
+ LINK
+ SIMPLE NO
+ IMPLICIT NO
+ EXPLICIT NO
+ OTHER
+ CONCUR NO
+ SUBDOC NO
+ FORMAL NO
+ URN NO
+ KEEPRSRE YES
+ VALIDITY TYPE
+ ENTITIES
+ REF ANY
+ INTEGRAL YES
+ APPINFO NONE
+ SEEALSO "ISO 8879:1986//NOTATION
+ Extensible Markup Language (XML) 1.0//EN"
+>
diff --git a/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/xslexa1.xsl b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/xslexa1.xsl
new file mode 100644
index 00000000000..9a9338b86c9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/xslexa1.xsl
@@ -0,0 +1,20 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/XSL/Format/1.0">
+ <xsl:template match="/">
+ <fo:basic-page-sequence font-family="Helvetica" font-size="10pt" >
+ <xsl:apply-templates/>
+ </fo:basic-page-sequence>
+ </xsl:template>
+ <xsl:template match="par">
+ <fo:block indent-start="10pt" space-before="12pt">
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+ <xsl:template match="emph">
+ <fo:inline-sequence font-style="italic">
+ <xsl:apply-templates/>
+ </fo:inline-sequence>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/LaTeX-info.html b/Master/texmf-doc/doc/english/latex2e-html/LaTeX-info.html
new file mode 100644
index 00000000000..c6167c134fd
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/LaTeX-info.html
@@ -0,0 +1,47 @@
+<html>
+<head><title>About Help On LaTeX</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">About Help on LaTeX</font></h1>
+
+<p>These files originated from Help on LaTeX, Version 1.01, 9 Feb 94,
+which can be accessed from the
+<a href="externals.html">"Other on-line LaTeX Information" Page</a>.
+That, in turn, was derived by Norm Walsh from a VMS help file provided
+by George Greenwade. </p>
+
+<p>The current files are a revised and extended version created by
+<a href="http://www.giss.nasa.gov/staff/sgreen/">Sheldon Green</a>.
+He added much information, especially about those parts of LaTeX
+he used most, equations and mathematical symbols. Whether or not
+commands are
+<a href="fragile.html">fragile</a> has been added in most cases.
+Illustrative examples of usage have been added in several instances.
+The hypertext linking has been greatly improved.
+Each file contains a revision date.</p>
+
+<p>Much of the new information has been taken from Lamport, "A Document
+Preparation System:Latex," and from comp.text.tex newsgroup postings. </p>
+
+<p>Since the death of Dr. Green in December 1995, no substantial
+changes have been to these files. Relatively minor changes have
+been made affecting page formatting (HTML) of the files or
+as the result of verifying the external links.</p>
+
+<p>This set of files is also available as a
+<a href="ltx-tar.html">Unix compressed tar file</a>
+which can be installed locally to provide faster access.</p>
+
+<hr>
+Return to the <a href="index.html">Introduction</a>.<br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>.<br>
+
+<hr>
+
+<address>
+Page revised: 1997:01:14, RBS
+</address>
+
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/baselineskip.html b/Master/texmf-doc/doc/english/latex2e-html/baselineskip.html
new file mode 100644
index 00000000000..332a6425b99
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/baselineskip.html
@@ -0,0 +1,31 @@
+<html>
+<head><title>Help On LaTeX \baselineskip and \baselinestretch</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\baselineskip \baselinestretch</font></h1>
+<tt>\baselineskip</tt> is a <a href="ltx-86.html#lencmd">length command</a>
+which specifies the minimum space between the botton of two successive
+lines in a paragraph.
+Its value may be automatically reset by LaTeX, for example, by font changes
+in the text.
+The value used for an entire paragraph is the value
+in effect at the blank line or command which ends the paragraph unit.
+<p>
+<tt>\baselinestretch</tt> scales the value of <tt>\baselineskip</tt>. Its
+default value is 1.0 but it may be reset with a
+<a href="ltx-18.html"><tt>\renewcommand</tt></a> command. If one wants
+to change the spacing in a document one should reset <tt>\baselinestretch</tt>
+and <strong>not</strong> <tt>\baselineskip</tt> as the latter may be reset
+automatically by LaTeX to account for local variations in the text, but it
+is always scaled by the former. In principle, "double spacing" can be obtained
+by <tt>\renewcommand{\baselinestretch}{2}</tt>.
+
+<hr>
+See also: <A href="ltx-86.html">Lengths</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 23 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/boldmath.html b/Master/texmf-doc/doc/english/latex2e-html/boldmath.html
new file mode 100644
index 00000000000..368f30f40eb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/boldmath.html
@@ -0,0 +1,42 @@
+<html>
+<head><title>Help On LaTeX \boldmath</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\boldmath</font></h1>
+The <tt>\boldmath</tt> <a href="declarations.html">declaration</a> switches
+to a bold math italic font; this causes letters, numbers, and
+<strong>most</strong> symbols used in math mode to be set in a bold type.
+<p>
+(In <a href="versions.html">LaTeX2e</a> <strong>everything</strong> in the
+formula is set in a bold font.)
+<p>
+The <tt>\unboldmath</tt> <a href="declarations.html">declaration</a> switches
+back to the normal math italic font.
+<p>
+Note, these commands should <strong>not</strong> be used in math mode.
+Thus the scope of the <a href="declarations.html">declaration</a> must
+include the math mode expressions to which you want it to apply.
+<p>
+If you
+want only part of a formula to be bold an
+<a href="ltx-265.html"><tt>\mbox</tt></a> command is useful:
+<pre>
+ <tt><a href="ltx-115.html#math">\(</a> Regular formula +
+ \mbox{\boldmath$ Bold part$} = 0 <a href="ltx-115.html#math">\)</a></tt>
+</pre>
+<p>
+Both <tt>\boldmath</tt> and <tt>\unboldmath</tt> commands are
+<a href="fragile.html">fragile</a>.
+<hr>
+Related topics
+<ul>
+<li><a href="ltx-115.html">Math Formulas</a>
+<li><a href="mathfonts.html">Math fonts and styles</a>
+<li><a href="ltx-176.html">Typefaces</a> and <a href="ltx-177.html">Styles</a>
+</ul>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 7 Jul 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/caption.html b/Master/texmf-doc/doc/english/latex2e-html/caption.html
new file mode 100644
index 00000000000..357cdf7892a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/caption.html
@@ -0,0 +1,19 @@
+<html>
+<head><title>Help On LaTeX caption</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\caption</font></h1>
+<tt>\caption[lst-entry]{Text of table caption}</tt> is used to
+generate a caption for a figure or a table.
+<p>
+the optional <tt>lst-entry</tt> may be used to generate an
+entry for a list of figures or tables.
+<hr>
+See also <a href="ltx-43.html">picture environment</a><br>
+See also <a href="ltx-67.html">table environment</a><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 2 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/declarations.html b/Master/texmf-doc/doc/english/latex2e-html/declarations.html
new file mode 100644
index 00000000000..06631b5f7a1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/declarations.html
@@ -0,0 +1,51 @@
+<html>
+<head><title>Help On LaTeX Declarations</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Declarations</font></h1>
+A declaration is a LaTeX command that does not act on an argument,
+but which changes the way LaTeX prints the following text or which changes
+the value or meaning of some <a href="ltx-17.html">command</a> or
+<a href="ltx-3.html">counter</a>.
+
+<h2>Scope</h2>
+The <em>scope</em> of a declaration begins with the declaration
+command itself and is ended by the first right
+brace (<tt>}</tt>) or <tt>\end{}</tt> command whose matching
+left brace (<tt>{</tt>) or <tt>\begin{}</tt> precedes the declaration.
+However, the <tt>\begin{}</tt> and <tt>\end{}</tt> of environments
+you create yourself, for example, with the
+<a href="ltx-19.html"><tt>\newenvironment</tt></a> command, do not
+count for calculating the scope of declarations.
+<p>
+The declaration is in effect within its scope, exept that it may be
+countermanded by another declaration whose scope is a subset.
+<p>
+However, some declarations are <em>global</em>; they are in effect until
+countermanded by another declaration. They include
+<ul>
+<li><a href="ltx-195.html"><tt>\addtocounter</tt></a>
+<li><a href="ltx-271.html"><tt>\newcounter</tt></a>
+<li><a href="ltx-310.html"><tt>\setcounter</tt></a>
+<li><a href="ltx-137.html"><tt>\pagenumbering</tt></a>
+<li><a href="ltx-140.html"><tt>\thispagestyle</tt></a>
+<li><a href="ltx-87.html"><tt>\newlength</tt></a>
+<li><a href="ltx-277.html"><tt>\newsavebox</tt></a>
+<li><a href="ltx-20.html"><tt>\newtheorem</tt></a>
+</ul>
+<p>
+Every declaration has an <a href="ltx-27.html">environment</a> of the
+same name. If <tt>\decl</tt> is a declaration command, then
+<pre> <tt>{\decl .... }</tt></pre>
+can also be effected by
+<pre> <tt>\begin{decl} .... \end{decl}</tt></pre>
+If the declaration takes arguments these become additional arguments of the
+<tt>\begin</tt> command.
+<hr>
+See also <a href="ltx-27.html">Environments</a><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 16 Nov 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ellipses.html b/Master/texmf-doc/doc/english/latex2e-html/ellipses.html
new file mode 100644
index 00000000000..b2110d115cf
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ellipses.html
@@ -0,0 +1,23 @@
+<html>
+<head><title>Help On LaTeX Ellipses</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Ellipses</font></h1>
+Ellipses (three dots) can be produced by the following commands
+<ul>
+<li><A href="ltx-256.html"><tt>\ldots</tt></A> horizontally at bottom of line
+<li><a href="ltx-207.html"><tt>\cdots</tt></a> horizontally center of line
+ (math mode only)
+<li><A href="ltx-218.html"><tt>\ddots</tt></A> diagonal (math mode only)
+<li><A href="ltx-340.html"><tt>\vdots</tt></A> vertical (math mode only)
+</ul>
+
+<hr>
+See also <A href="ltx-115.html">Math Formulas</A>,
+<A href="ltx-119.html">Math Miscellany</A>.<br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 25 April 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/emph.html b/Master/texmf-doc/doc/english/latex2e-html/emph.html
new file mode 100644
index 00000000000..66153686893
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/emph.html
@@ -0,0 +1,24 @@
+<html>
+<head><title>Help On LaTeX \emph</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\emph</font></h1>
+This is LaTeX2e.
+<p>
+The <tt>\emph</tt> command is considered more
+suitable for short stretches of emphasized text.
+Like the LaTeX 2.09 <a href="ltx-221.html"><tt>\em</tt></a> command
+it toggles between italics and Roman typefaces.
+A typical use would be
+<pre>
+ <tt>This is \emph{emphasized text}.</tt>
+</pre>
+<hr>
+See also <a href="ltx-176.html">Typefaces</a>,
+ <a href="ltx-178.html">Sizes</a><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<address>
+<hr>
+Revised: Sheldon Green, 11 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ensuremath.html b/Master/texmf-doc/doc/english/latex2e-html/ensuremath.html
new file mode 100644
index 00000000000..10f0dea1611
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ensuremath.html
@@ -0,0 +1,23 @@
+<html>
+<head><title>Help On LaTeX2e \ensuremath</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\ensuremath (<strong>LaTeX2e</strong>)</font></h1>
+<tt>\ensuremath{Text set in math mode}</tt>
+<p>
+The argument of the <tt>\ensuremath</tt> command is always set in
+math mode, regardless of the current mode. Note that math mode
+is <strong>not</strong> specifically invoked in the argument of
+the <tt>\ensuremath</tt> command.
+<p>
+Thus <tt>\ensuremath{$\alpha^2+\beta^2$}</tt> is <strong>not
+correct</strong>.<br>
+The <strong>correct</strong> form is <tt>\ensuremath{\alpha^2+\beta^2}</tt>.
+<p>
+See also <a href="ltx-18.html"><tt>\newcommand</tt></a>
+<hr>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a><br>
+<hr>
+<address>
+Revised: Sheldon Green, 4 May 1995.
+</address>
+</body></html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/externals.html b/Master/texmf-doc/doc/english/latex2e-html/externals.html
new file mode 100644
index 00000000000..d1cbde94b8a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/externals.html
@@ -0,0 +1,189 @@
+<html>
+<head><title>Other On-line LaTeX Information</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Other on-line LaTeX information</font></h1>
+
+<hr>
+
+<h2>Prime Sources</h2>
+<dl>
+ <dt><b><big><a href="http://www.tug.org/">TeX Users Group Home
+ Page</a></big></b>
+ <!-- link verified 1998-05-21 -->
+
+ <dt><b><big>The Comprehensive Tex Archive Network (CTAN)</big></b>
+ <dd>Virtually all TeX, LaTeX, and related software and documentation can
+ be obtained from CTAN, which has multiple ftp mirror sites.
+ See for example these
+ <a href="http://ctan.tug.org/ctan/">US</a> and
+ <!-- link verified 1998-05-14 -->
+ <a href="http://www.tex.ac.uk/">UK</a> sites.
+ <!-- link verified 1998-05-14 -->
+
+ <dt><b><big><a href="http://www.tex.ac.uk/ctan/latex/">LaTeX
+ home page</a></big></b>
+ <dd>Doesn't seem to have been updated since 1994.
+ <!-- link verified 1998-05-21 -->
+
+</dl>
+
+<hr>
+
+<H2>Packages for Publications</H2>
+<dl>
+ <dt><b><big>REVTeX</big></b>
+ <dd>The <a href="http://www.aip.org/">American Institute of Physics</a>
+ accepts manuscripts for several of its journals in
+ <a href="http://www.aip.org/aip/pubserv.html">REVTeX</a>.
+ <!-- link verified 1998-05-14 -->
+
+ <dt><b><big>AASTeX</big></b>
+ <dd>Similarly, the <a href="http://aas.org/">American Astronomical Society</a>
+ accepts manuscripts for several of its journals in
+ <a href="http://www.aas.org/publications/aastex/">AASTeX</a>.
+ <!-- link verified 1998-05-14 -->
+
+ The <a href="ftp://aas.org/pubs/aastex-misc/FAQ">AASTeX FAQ</a>
+ might be helpful.
+ <!-- link verified 1998-05-14 -->
+
+ Astronomers will also find
+ <a href="http://www.stsci.edu/software/TeX.html">TeX and LaTeX Macros
+ for astronomers</a> from STScI to be useful;
+ Particularly good is Chris Biemesderfer's
+ <a href="http://www.stsci.edu/ftp/software/tex/ltxcrib/">LaTeX
+ Command Summary</a>.
+ <!-- link verified 1998-05-14 -->
+
+ <dt><b><big>AMSTeX</big></b>
+ <dd>The <a href="http://www.ams.org/">American Mathematical Society</a>
+ has their own macro package,
+ <a href="http://www.ams.org/tex/home.html">AMSTeX</a>.
+ <!-- link verified 1998-05-14 -->
+
+</dl>
+
+
+
+
+
+<hr>
+
+<h2>More Resources and Links</h2>
+
+
+<p>The UK TeX Users' Group's
+<a href="http://www.cogs.susx.ac.uk/cgi-bin/texfaq2html?introduction=yes">FAQ
+Page</a> is searchable and up-to-date.</p>
+ <!-- link verified 1998-05-14 -->
+
+
+<p><a href="http://www.emerson.emory.edu/services/latex/latex2e/latex2e_toc.html">LaTeXe help 1.4</a>
+is available from Emory Univ.</p>
+ <!-- link verified 1998-05-14 -->
+
+
+<p><a href="http://www.cis.ohio-state.edu/~gurari/TeX4ht/mn.html">TeX4ht:
+TeX and LaTeX for Hypertext</a>
+is available from Ohio State.</p>
+ <!-- link verified 1998-05-14 -->
+
+
+<p><a href="http://www.am.qub.ac.uk/latex/latex_1.html">Hypertext information
+similar to the current set of files</a> also originated from VMS
+help files.</p>
+
+<p><a href="http://stkwww.fys.ruu.nl:8000/posters/hogeveen/recommend/astdoc.html">Aspects of publishing with TeX and LaTeX</a>
+is an introduction to the philosophy of TeX and LaTeX.</p>
+ <!-- link verified 1998-05-21 -->
+
+<p><a href="http://club.eng.cam.ac.uk/help/tpl/textprocessing/LaTeX_intro.html">Text Processing Using LaTeX</a>
+from Cambridge Univ. Engineering Dept. includes excellent beginning
+and advanced hypertext manuals as well as information in other formats.</p>
+ <!-- link verified 1998-05-21 -->
+
+<p>Macintosh users will want to take a look at Gary Gray's
+<a href="http://www.esm.psu.edu/mac-tex/">TeX/LaTeX Software for the
+Macintosh</a>, with pointers to many tools for dealing with LaTeX
+and what's new listings.</p>
+ <!-- link verified 1998-05-21 -->
+
+<p>For those with less experience with LaTeX, good introductory material
+includes:</p>
+
+<ul>
+ <li><A href="http://riceinfo.rice.edu/Computer/Documents/Classes/Unix/class/class.html">
+ Intro to LaTeX</a>,
+ a short course at Rice University.
+ <!-- link verified 1998-05-21 -->
+
+ <li><a href="http://www.maths.tcd.ie/~dwilkins/LaTeXPrimer/Index.html">Getting
+ Started with LaTeX</a> by David Wilkins, Trinity College, Dublin.
+ <!-- link verified 1998-05-21 -->
+
+ <li><a href="http://zen.efs.mq.edu.au/doc/LatexTutorial/LatexTutorial.html">LaTeX Tutorial</a> from Macquarie University.
+ <!-- link verified 1998-05-21 -->
+
+ <li><a href="http://www.cs.stir.ac.uk/guides/latex/guide.html">Document
+ Preparation with LaTeX</a> from the Univ. of Sterling, UK.
+ <!-- link verified 1998-05-21 -->
+
+</ul>
+
+
+
+
+
+
+<p>The <a href="http://www.loria.fr/services/tex/">(La)TeX navigator</a>
+from LORIA in France is an excellent source of documentation and pointers
+to other resources. The site is also in available in
+<a href="http://www.loria.fr/services/tex/english/index.html">English</a> and
+<a href="http://www.loria.fr/services/tex/german/index.html">Deutsch</a>.</p>
+ <!-- link verified 1998-05-21 -->
+
+<p>Lots of
+<a href="http://www.cs.csubak.edu/Doc/Tex/welcome.html">documentation</a>,
+mostly PostScript, is available from King Lee at Cal State-Bakersfield.</p>
+ <!-- link verified 1998-05-21 -->
+
+<p><a href="http://www.stat.ucla.edu/develop/tex/index.html">TeX
+and Friends</a>, from UCLA, is mostly (compressed) PostScript files.</p>
+ <!-- link verified 1998-05-21 -->
+
+<p><a href="http://www.cl.cam.ac.uk/TeXdoc/TeXdocs.html">Tex-related
+documents</a> from Cambridge Univ.; includes TeX Users Group newsletter
+and many documents (mostly in dvi format).</p>
+ <!-- link verified 1998-05-21 -->
+
+
+
+
+<p>The Usenet newsgroup
+<b><a href="news:comp.text.tex">comp.text.tex</a></b> can be a good
+source of information and help (but read the FAQ before posting).</p>
+
+<p>Of course, there's always
+<a href="http://www.yahoo.com/Computers_and_Internet/Desktop_Publishing/TeX/">Yahoo</a>.</p>
+ <!-- link verified 1998-05-14 -->
+
+
+
+
+
+
+<hr>
+
+Go back to the <a href="index.html">Introduction</a><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a><br>
+
+<hr>
+
+<address>
+Links verified: RBS, 1998-05-14, 05-21<br>
+</address>
+
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/fonts2e.html b/Master/texmf-doc/doc/english/latex2e-html/fonts2e.html
new file mode 100644
index 00000000000..1bc6a6108cf
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/fonts2e.html
@@ -0,0 +1,51 @@
+<html>
+<head><title>Help On LaTeX2e Font Selection</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Font Selection (LaTeX2e)</font></h1>
+The following methods for font selection may
+<strong>not</strong> be used in math mode.
+<p>
+Type styles are specified by three <em>independent</em> components. If
+a font (the combination of these three components) is chosen which is
+not available, LaTeX will issue a warning and substitute a similar font.
+<p>
+<ul>
+<li>series
+<li>family
+<li>shape
+</ul>
+These may be chosen by either a command so that the choice applies
+to the text within the command argument, or by a
+<a href="declarations.html">declaration</a> which obeys the usual
+rules for scope. The two forms are
+<pre>
+ <strong>declaration</strong> <strong>command</strong>
+
+ \mdseries \textmd Medium Series
+ \bfseries \textbf Boldface Series
+
+ \rmfamily \textrm Roman Family
+ \sffamily \textsf Sans Serif Family
+ \ttfamily \texttt Typewrite Family
+
+ \upshape \textup Upright Shape
+ \itshape \textit Italic Shape
+ \slshape \textsl Slanted Shape
+ \scshape \textsc Small Caps Shape
+ \normalfont \textnormal Normal Style
+</pre>
+The <tt>\normalfont</tt> declaration sets series, family, and shape to
+the main text font of the document.
+<p>
+When using the Typewriter Family, words will be hyphenated only where
+permitted by a <tt><a href="ltx-182.html">\-</a></tt> command.
+<hr>
+See also Typeface <a href="ltx-178.html">Sizes</a><br>
+See also <a href="mathfonts.html">Math fonts and styles</a><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 19 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/fragile.html b/Master/texmf-doc/doc/english/latex2e-html/fragile.html
new file mode 100644
index 00000000000..5252c66ffa7
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/fragile.html
@@ -0,0 +1,59 @@
+<html>
+<head><title>Help On LaTeX fragile commands</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Fragile and Robust commands</font></h1>
+LaTeX commands are either <em>robust</em> or <em>fragile</em>. Fragile
+commands need special care <em>if they are part of a moving argument</em>.
+<p>
+Arguments to some LaTeX commands are called <em>moving arguments</em> because
+they may be "moved" to other places in the document. For example, the argument
+of <a href="ltx-141.html">Sectioning comands</a> may be moved
+to the <a href="ltx-170.html">Table of Contents</a>. Other examples
+of moving arguments include:
+<ul>
+<li>arguments of <a href="caption.html"><tt>\caption</tt></a> commands
+<li>terminal input and output, <a href="ltx-174.html"><tt>\typeout</tt></a>
+ and <a href="ltx-175.html"><tt>\typein</tt></a>
+<li>commands that <a href="ltx-264.html">produce page headings</a>
+<li>the <a href="ltx-91.html">Letter Environment</a>
+<li>the <a href="ltx-324.html"><tt>\thanks</tt></a> command
+<li> an <tt>@</tt> expression in the <a href="ltx-202.html">Array</a> or
+ <a href="ltx-68.html">Tabular</a> environment
+</ul>
+A fragile command that appears in a moving argument must be preceded by a
+<tt>\protect</tt> command. The <tt>\protect</tt> applies only to the
+immediately following command; if arguments of this command also contain
+fragile commands, the latter must be protected with their own <tt>\protect</tt>.
+
+<h2>Some fragile commands</h2>
+The following list is not exhaustive, but illustrates the kind of commands
+which are fragile
+<ul>
+<li>All commands that have an optional argument are fragile.
+<li>Environments delimited by <tt>\begin ... \end</tt> are fragile.
+<li><a href="ltx-421.html">Display math</a> environment delimited by
+ <tt>\[ ... \]</tt>
+<li><a href="ltx-115.html">Math environment</a> <tt>\( ... \)</tt>
+ <ul><li>However, <tt>$ ... $</tt> is robust</ul>
+<li>Line breaks, <a href="ltx-181.html"><tt>\\</tt></a>
+<li><a href="item.html"><tt>\item</tt></a> commands
+<li><a href="ltx-231.html"><tt>\footnote</tt></a> commands
+</ul>
+
+<h2>Some robust commands</h2>
+In general, commands which change <a href="ltx-176.html">Type face or
+Type style</a> are robust.
+<p>
+<a href="ltx-86.html">Length commands</a> are robust and should
+<strong>not</strong> be preceded by a <tt>\protect</tt> command. Nor
+should a <tt>\protect</tt> command be used in the argument to
+<a href="ltx-195.html"><tt>\addtocounter</tt></a> or
+<a href="ltx-310.html"><tt>\setcounter</tt></a> command.
+<hr>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Sep 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/frenchsp.html b/Master/texmf-doc/doc/english/latex2e-html/frenchsp.html
new file mode 100644
index 00000000000..222bd8b8452
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/frenchsp.html
@@ -0,0 +1,16 @@
+<html>
+<head><title>Help On LaTeX \frenchspacing</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\frenchspacing</font></h1>
+The <tt>\frenchspacing</tt> <a href="declarations.html">declaration</a>
+tells LaTeX <strong>not</strong> to insert extra space at the end of
+sentences. This style is common in non-English languages.
+<hr>
+See also <a href="ltx-143.html">Spaces and Boxes</a><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/index.html b/Master/texmf-doc/doc/english/latex2e-html/index.html
new file mode 100644
index 00000000000..cf271375d3d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/index.html
@@ -0,0 +1,98 @@
+<html>
+<head>
+<title>Hypertext Help with LaTeX</title>
+</head>
+<body bgcolor="#ffffff"
+text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+
+<h1><font color="#cc0000">Hypertext Help with LaTeX</font></h1>
+
+<p>LaTeX is a word processing (or, more accurately, a typesetting)
+program. It typesets a file of text using the TeX program and
+the LaTeX Macro package for TeX. It does this by processing an
+input file containing the text of a document with interspersed
+commands that describe how the text should be formatted.</p>
+
+<p>Unike many word processing programs, which concentrate on formatting
+material on the page (often called WYSIWYG, for "what you see is what
+you get"), LaTeX concentrates on "content."
+LaTeX is a Generalized Mark-up Language macro package for the TeX
+typesetting program. That is, one specifies
+the structure: sections, title, appendix, authors' names, etc.,
+which bear little relation to how this will look on a page.
+That is determined by the
+<a href="ltx-22.html">document style</a>
+files (*.sty);
+standard ones are provided for such things as articles, reports,
+books, and letters. However, these style files may be readily replaced
+by others, giving a completely different look.
+Of course, it is possible in LaTeX to specify much about
+the physical layout, but this tends
+to be done with commands that define things like space between lines or
+amount to indent paragraphs rather than by positioning each piece of text
+on the page as is typical in WYSIWYG systems.</p>
+
+<p>LaTeX produces
+as output a Device Independent (*.dvi) file that contains
+commands that can be translated into commands for a variety of output
+devices. It also produces a transcript or log (*.log) file
+that contains summary
+information and diagnostic messages for any errors discovered in the
+input file and an auxiliary (*.aux) file which contains cross
+refererence information for Tables, citations, etc. It is sometimes
+necessary to run LaTeX twice so that it has correct cross reference
+information, especially when modifications have changed the numbering.</p>
+
+<p>These hypertext help files are meant to provide reference information
+for those with some familiarity with LaTeX. They are not an introduction
+or tutorial.</p>
+
+
+<dl>
+ <dt><big><b><a href="ltx-2.html">Table of Contents</a></b></big>
+ <dd>Links to help by subject, LaTeX command, or environment
+ <p></p>
+
+ <dt><big><b><a href="versions.html">Notes on Versions</a></b></big>
+ <dd>LaTeX 2.09 and LaTeX2e
+ <p></p>
+
+ <dt><big><b><a href="refs.html">Reference Books</a></b></big>
+ <p></p>
+
+ <dt><big><b><a href="LaTeX-info.html">About these files</a></b></big>
+ <dd>Plus info on how to obtain them via ftp
+ <p></p>
+
+ <dt><big><b><a href="externals.html">LaTeX resources on the Web</a></b></big>
+ <dd>Including REVTeX, AMSTeX, and AASTeX
+ <p></p>
+
+ <dt><big><b><a href="mirror.html">Mirrors of this site</a></b></big>
+ <dd>Copies of these files which might provide faster access
+ <p></p>
+
+</ul>
+
+
+<p>&nbsp;</p>
+
+
+<p>These pages were originally created by
+<a href="http://www.giss.nasa.gov/staff/sgreen/">Sheldon Green</a>,
+who passed away in December 1995.
+Updates subsequent to Dr. Green's death have been made only for
+purposes of page formatting and link verification.
+Please contact
+<a href="mailto:webmaster@giss.nasa.gov">webmaster@giss.nasa.gov</a>
+if you are interested in assisting with maintenance and updates to
+these pages.</p>
+
+<hr>
+
+<address>
+Updated: 1998-12-03, RBS
+</address>
+
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/input.html b/Master/texmf-doc/doc/english/latex2e-html/input.html
new file mode 100644
index 00000000000..4246ee64946
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/input.html
@@ -0,0 +1,95 @@
+<html>
+<head>
+<title>Input to LaTeX</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Input to LaTeX</font></h1>
+Input to LaTeX is plain text (ascii) which includes both the text of the
+document and also formatting commands. It is possible to
+<a href="ltx-165.html">split the input</a> into several files using:
+<ul>
+<li><a href="ltx-245.html"><tt>\include</tt></a>
+<li><a href="ltx-248.html"><tt>\input</tt></a>
+</ul>
+<p>
+Space characters separate words. Two space characters in a row are
+equivalent to a single space character. The end of line is also
+equivalent to a space character. (However, a percent sign,
+<a href="ltx-434.html"><tt>%</tt></a>, can end a line without
+generating a space character.) Generally, space characters at the beginning
+of a line are ignored.
+<p>
+An empty or blank line between two lines of text defines
+<a href="ltx-111.html">a new paragraph</a>.
+Two blank lines are equivalent to one.
+<h2>Special Characters</h2>
+The following ten characters are <a href="ltx-164.html">Special LaTeX
+Characters</a>:
+<pre><tt> $ & % # _ { } ~ ^ \ </tt>
+</pre>
+If entered directly in the input they cause LaTeX to do something special.
+You can get the following seven of them into your document by simply
+preceding them with a backslash (<tt>\</tt>):
+<pre><tt> $ & % # _ { } </tt>
+</pre>
+To get the other three (<tt> ~ ^ \ </tt>) in
+your output requires <a href="ltx-164.html">more work</a>.
+
+<h2>LaTex Commands</h2>
+Commands take one of two forms
+<ul><li>a backslash (<tt>\</tt>) followed by a single special character
+ <li>a bacslash (<tt>\</tt>) followed by a string of letters
+</ul>
+The second case is case-sensitive;
+<a href="ltx-405.html"><tt>\Gamma</tt></a> is different from
+<a href="ltx-405.html"><tt>\gamma</tt></a>.
+These commands are terminated by a nonletter, i.e., a blank, a number,
+a punctuation mark or special character.
+<p>
+Commands may have mandatory arguments, which are input in braces
+(<tt>{}</tt>).
+They may also have optional arguments, which are input in square brackets
+(<tt>[]</tt>).
+<p>
+For commands which produce text a trailing blank may be interpreted as the
+end of the command, which does not automatically create a space, so
+ you may have to do something to create an
+<a href="ltx-431.html">interword space</a> after this text.
+
+<h2><a name="structure">Structure of Input</a></h2>
+LaTeX input normally begins with a
+<a href="ltx-22.html"><tt>\documentstyle</tt></a> command. (In LaTeX2e
+this is replaced with a <a href="versions.html"><tt>\documentclass</tt></a>
+command.)
+<p>
+The beginning of the document text follows a <tt>\begin{document}</tt>
+command.
+<p>
+Input between the <tt>\documentstyle</tt> and <tt>\begin{document}</tt>
+is called the <em>preamble</em> and typically contains <a href="ltx-17.html">new
+command definitions</a>, information for the
+<a href="ltx-263.html">title</a>, <a href="declarations.html">declarations</a>
+which affect things like <a href="ltx-176.html">Typefaces</a>, etc.
+<p>
+The document text (and generally also the LaTeX input) is terminated by a
+<tt>\end{document}</tt> command.
+<p>
+It is possible to obtain some of the input from <a href="ltx-165.html">external
+files</a>, i.e., those which are not the main file input to the LaTeX program.
+<hr>
+See also
+<ul>
+<li><a href="ltx-165.html">Splitting the input</a>
+<li><a href="ltx-164.html">Special Characters</a>
+<li><a href="ltx-99.html">Line and Page Breaking</a>
+<li><a href="ltx-111.html">Making Paragraphs</a>
+<li><a href="ltx-143.html">Spaces and Boxes</a>
+</ul>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 30 Oct 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/item.html b/Master/texmf-doc/doc/english/latex2e-html/item.html
new file mode 100644
index 00000000000..634cf6ae42f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/item.html
@@ -0,0 +1,30 @@
+<html>
+<head><title>Help On LaTeX \item</title>
+</head><body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\item</font></h1>
+<tt>\item[label] Text for this item</tt>
+<p>
+The <tt>\item</tt> command starts a new item in a
+<a href="lists.html">List Environment</a>. The optional argument
+<tt>label</tt> generates the item label; if not given a default
+label is used.
+<p>
+A blank line preceding an <tt>\item</tt> command has no effect.
+<p>
+In order to use brackets as part of the <tt>label</tt> (for example,
+in the <a href="ltx-31.html">Description Environment</a>) they must
+be enclosed in braces:
+<pre>
+ <tt>\item[{[}item 1{]}] This is the first item</tt>
+</pre>
+The <tt>\item</tt> command is <a href="fragile.html">fragile</a>.
+<hr>
+See also <a href="ltx-27.html">Environments</a>,
+ <a href="lists.html">Lists</a><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/lefteqn.html b/Master/texmf-doc/doc/english/latex2e-html/lefteqn.html
new file mode 100644
index 00000000000..3e0af56d138
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/lefteqn.html
@@ -0,0 +1,41 @@
+<html>
+<head><title>Help On LaTeX \lefteqn</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\lefteqn</font></h1>
+<p>
+<p><pre>
+ <tt>\lefteqn{eqn}</tt>
+</pre>
+ prints <tt>eqn</tt> in display math style, but pretends that it has
+ zero width. It is typicaly used within an
+ <a href="ltx-223.html"><tt>Eqnarray</tt></a> environment for
+ displaying long equations that require multiple lines.
+<p>
+A typical use might be
+<pre>
+ <tt>\begin{eqnarray}
+ \lefteqn{\int_0^<a href="ltx-407.html">\infty</a> some expression =} \\
+ & & some terms <a href="ltx-181.html">\\</a>
+ & & <a href="ltx-265.html">\mbox{}</a> + more terms
+ \end{eqnarray}</tt>
+</pre>
+Note that the empty <a href="ltx-265.html"><tt>\mbox{}</tt></a> is so LaTeX
+knows that the following <tt>+</tt> is a binary operator, and is not
+attached to the first of the "more terms" as a unary operator.
+<hr>
+Related topics
+<ul>
+<li><A href="ltx-27.html">Environments</A>
+<li><a href="ltx-202.html">Array Environment</a>
+<li><a href="ltx-223.html">Eqnarray Environment</a>
+<li><a href="ltx-224.html">Equation Environment</a>
+<li><a href="ltx-421.html">Displaymath Environment</a>
+<li><a href="ltx-115.html">Math Formulas</a>
+</ul>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/lists.html b/Master/texmf-doc/doc/english/latex2e-html/lists.html
new file mode 100644
index 00000000000..4912c395d99
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/lists.html
@@ -0,0 +1,58 @@
+<html>
+<head><title>Help On LaTeX Lists</title>
+</head><body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Lists</font></h1>
+LaTeX provides several List-Making Environments
+These may be nested up to four deep.
+<p>
+
+<p>The items in the list are given by <a href="item.html"><tt>\item</tt></a>
+commands.
+A blank line before an <tt>\item</tt> command has no effect.
+
+<h2>List-Making Enviroments</h2>
+<DL>
+<dt><h3><a href="ltx-31.html">Description</a></h3>
+<dd>Typically used for giving short definitions or descriptions; the
+<tt>label</tt> argument of the <a href="item.html"><tt>\item</tt></a> command
+generally giving the term being described (although it <strong>can</strong>
+be left blank, it will look strange). The text of the
+<a href="item.html"><tt>\item</tt></a> command is indented.
+
+<dt><h3><a href="ltx-222.html">Enumerate</a></h3>
+<dd>Typically used for numbered lists.
+<a href="ltx-3.html">Counters</a> for these lists are
+provided by <tt>enumi, emumii, enumiii, enumiv</tt>, respectively, for the four
+levels of nesting.
+
+<dt><h3><a href="ltx-250.html">Itemize</a></h3>
+<dd>Typically used for unnumbered lists. The default
+<tt>label</tt> argument of the <a href="item.html"><tt>\item</tt></a> command
+produces "tick-marks" which vary by level of nesting, generally
+"bullets" for the first level.
+
+<dt><h3><a href="ltx-260.html">List</a></h3>
+<dd>Produces a list of labeled items and has required arguments that
+allow a great deal of flexibility in layout. It is generally used
+to define new environments with the
+<a href="ltx-19.html"><tt>\newenvironment</tt></a> command, or to
+set up one-of-a-kind lists.
+
+<dt><h3><a href="trivlist.html">Trivlist</a></h3>
+<dd>Like the List Environment, using the currently defined values of
+list-making parameters; normally used to define an environment with a
+single item, with an <a href="item.html"><tt>\item</tt></a> command
+as part of the environment definition.
+
+</DL>
+<hr>
+See also <a href="item.html"><tt>\item</tt></a><br>
+See also <a href="ltx-3.html">Counters</a>,
+<a href="ltx-27.html">Environments</a><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 18 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-111.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-111.html
new file mode 100644
index 00000000000..56c6c8bb6be
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-111.html
@@ -0,0 +1,25 @@
+<html>
+<head><title>Help On LaTeX Making Paragraphs</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Making Paragraphs</font></h1>
+<p>
+ A paragraph is ended by one or more completely blank lines -- lines
+ not containing even a <a href="ltx-434.html"><tt>%</tt></a> (comments).
+ A blank line should not appear where a new
+ paragraph cannot be started, such as in math mode or in the argument
+ of a sectioning command.
+
+<H2>Subtopics</H2>
+<ul>
+<li><A href="ltx-247.html">\indent</A>
+<li><A href="ltx-280.html">\noindent</A>
+<li><A href="ltx-293.html">\par</A>
+</ul>
+<hr>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 10 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-115.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-115.html
new file mode 100644
index 00000000000..539ef71c2a0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-115.html
@@ -0,0 +1,82 @@
+<html>
+<head><title>Help On LaTeX Math Formulas</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Math Formulas</font></h1>
+<p>
+ There are four environments that put LaTeX in math mode:
+<ul><li><a href="#math">math</a> (see below)
+ <li><a href="ltx-421.html">displaymath</a>
+ <li><a href="ltx-223.html">eqnarray</a>
+ <li><a href="ltx-224.html">equation</a>
+</ul>
+ All four of these environments are typeset in math
+ <a href="ltx-130.html">mode</a>, using a math italic font and LaTeX
+ ideas about spacing in math mode. (See also <a href="mathfonts.html">math
+ fonts and styles</a>.)
+<p>
+ The math environment is for formulas that
+ appear right in the text. The displaymath, eqnarray, and equation
+ environments are for formulas that apppear on their own line(s).
+ The math environment can be used in both paragraph and LR mode, but
+ displaymath, eqnarray, and equation environments can be used only
+ in paragraph mode.
+
+<h2><a name="math">Math environment</a></h2>
+ The math environment may be specified, as with all environments, by
+<pre>
+ <tt>\begin{math} math equation \end{math}</tt>
+</pre>
+ However, it is used so often that it has two equivalent shorter forms:
+<pre>
+ <tt>\( math equation \)</tt>
+</pre>
+or just
+<pre>
+ <tt>$ math equation $</tt>
+</pre>
+In <a href="versions.html">LaTeX2e</a> one can also use
+<pre>
+ <tt><a href="ensuremath.html">\ensuremath</a>{math equation}</tt>
+</pre>
+<p>
+For example,
+<a href="ltx-179.html">Subscripts</a> and
+<a href="ltx-180.html">superscripts</a> can only be used in math
+mode. To include these in running text one could use:
+<pre>
+ <tt>The formula for water is H$_2$O.
+ If the hypotenuse is $c$, then $c^2=a^2+b^2$.</tt>
+</pre>
+Note that it is standard to use math mode for letters, such as the
+the <tt>$c$</tt> above, which are math variables.
+<hr>
+<h2>Related topics</H2>
+<ul>
+<li><a href="ltx-421.html">Displaymath environment</a>
+<li><a href="ltx-223.html">Eqnarray environment</a>
+<li><a href="ltx-224.html">Equation environment</a>
+<p>
+<li><a href="ltx-130.html">LaTeX Modes</a>
+<p>
+<li><a href="mathfonts.html">Math fonts and styles</a>
+<li><A href="ltx-179.html">Subscripts</A> and
+ <a href="ltx-180.html">Superscripts</a>
+<li><A href="ltx-117.html">Math Symbols</A>
+<li><A href="ltx-118.html">Spacing in Math Mode</A>
+<li><A href="ltx-119.html">Math Miscellany</A>
+<li><a href="ellipses.html">Ellipses</a>
+<p>
+<li><a href="boldmath.html"><tt>\boldmath</tt></a> for a bold math font
+<li><a href="ltx-235.html"><tt>\frac</tt></a> for generating built-up fractions
+<li><a href="stackrel.html"><tt>\stackrel</tt></a> for putting things above
+ each other
+<li><a href="ltx-319.html"><tt>\sqrt</tt></a> for square (and nth) roots
+</ul>
+<p>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 31 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-117.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-117.html
new file mode 100644
index 00000000000..761ec951f03
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-117.html
@@ -0,0 +1,45 @@
+<html>
+<head><title>Help On LaTeX Math Symbols</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Math Symbols</font></h1>
+<p>
+ TeX provides almost any mathematical symbol you're likely to need.
+<p>
+ Some, like <tt>+ - = &lt; &gt; | </tt> are obtained from the keyboard (the
+ first three can be used in any mode; the last three only in math mode).
+<p>
+ Others are generated by LaTeX commands and
+ can generally be used only in math mode.
+ The following describe some of the useful symbols
+<ul>
+ <li><a href="ltx-401.html#math">Accents</a>
+ <li><a href="ltx-406.html">Arrows</a> (math mode)
+ <li><a href="ltx-404.html">Binary and relational operators</a> (math mode)
+ <li><a href="ltx-403.html">Delimiters</a> (parenthesis-like objects; math mode)
+ <li><a href="ltx-405.html">Greek letters</a> (math mode)
+ <li><a href="ltx-407.html">Miscellaneous symbols</a>
+ <li><a href="ltx-409.html">Math functions</a> (sin, cos, log, ... ; math mode)
+ <li><a href="ltx-408.html">Variable size math symbols</a> (sums, integrals, ...
+ ; math mode)
+<p>
+ <li><a href="ltx-119.html">Math Miscellany</a>
+<p>
+ <li><a href="ltx-235.html"><tt>\frac</tt></a> generates fractions (math mode)
+ <li><a href="ltx-319.html"><tt>\sqrt</tt></a> generates n-th root symbol
+ (math mode)
+ <li><a href="stackrel.html"><tt>\stackrel</tt></a> places one item above
+ another (math mode)
+<p>
+ <li><a href="boldmath.html"><tt>\boldmath</tt></a> for a bold math font
+</ul>
+
+<hr>
+See also <a href="mathfonts.html">Math Fonts and Styles</a><br>
+Go to <a href="ltx-115.html">Math Formulas</a><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 Jul 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-118.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-118.html
new file mode 100644
index 00000000000..bd64652c6ee
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-118.html
@@ -0,0 +1,25 @@
+<html>
+<head><title>Help On LaTeX Spacing in Math Mode</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Spacing in Math Mode</font></h1>
+<p>
+ In a math environment, LaTeX ignores the spaces you type and puts in
+ the spacing that it thinks is best. LaTeX formats mathematics the way
+ it's done in mathematics texts. If you want different spacing, LaTeX
+ provides the following four commands for use in math mode:
+<ul>
+<li><a href="ltx-183.html"><tt>\;</tt></a> - a thick space
+<li><a href="ltx-184.html"><tt>\:</tt></a> - a medium space
+<li><a href="ltx-185.html"><tt>\,</tt></a> - a thin space
+<li><a href="ltx-186.html"><tt>\!</tt></a> - a negative thin space
+</ul>
+<hr>
+See also <a href="ltx-115.html">Math Formulas</a>,
+ <a href="ltx-117.html">Math Symbols</a><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a><br>
+<hr>
+<address>
+Revised: Sheldon Green, 7 Jul 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-119.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-119.html
new file mode 100644
index 00000000000..9e0fb80d330
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-119.html
@@ -0,0 +1,39 @@
+<html>
+<head><title>Help On LaTeX Math Miscellany</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Math Miscellany</font></h1>
+
+The math symbols <tt>&lt; &gt;</tt> and <tt>|</tt> are used only in math mode.
+Note that left and right angle brackets (which are somewhat taller than
+&lt; and &gt;) can be obtained with
+<a href="ltx-403.html"><tt>\langle</tt> and <tt>\rangle</tt></a> commands.
+<p>
+The single right quotation mark, <tt>'</tt>, produces a prime in math mode.
+You can also use <a href="ltx-407.html"><tt>\prime</tt></a>.
+
+<H2>Also see</H2>
+<ul>
+<li><a href="boldmath.html"><tt>\boldmath</tt></a> font
+<li><A href="ltx-207.html"><tt>\cdots</tt></A> (centered ellipsis)
+<li><A href="ltx-218.html"><tt>\ddots</tt></A> (diagonal ellipsis)
+<li><A href="ltx-235.html"><tt>\frac</tt></A>
+<li><A href="ltx-256.html"><tt>\ldots</tt></A> (ellipsis)
+<li><A href="ltx-287.html"><tt>\overbrace</tt></A>
+<li><A href="ltx-288.html"><tt>\overline</tt></A>
+<li><A href="ltx-319.html"><tt>\sqrt</tt></A>
+<li><a href="stackrel.html"><tt>\stackrel</tt></a> putting
+ things above other things
+<li><A href="ltx-335.html"><tt>\underbrace</tt></A>
+<li><A href="ltx-336.html"><tt>\underline</tt></A>
+<li><A href="ltx-340.html"><tt>\vdots</tt></A> (vertical ellipsis)
+</ul>
+<hr>
+See also <a href="ltx-115.html">Math Formulas</a>,
+ <a href="ltx-117.html">Math Symbols</a>,
+ <a href="mathfonts.html">Math Fonts and Styles</a><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 Jul 1995.
+</address>
+</body></html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-13.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-13.html
new file mode 100644
index 00000000000..75e5148ba52
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-13.html
@@ -0,0 +1,62 @@
+<html>
+<head><title>Help On LaTeX Cross References</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Cross References</font></h1>
+<p>
+ One reason for numbering things like figures and equations is to refer
+ the reader to them, as in "See Figure 3 for more details."
+
+<H2>Sections, Equations, Tables, etc.</H2>
+One can generate numbered references to anything for which LaTeX
+maintains a <a href="ltx-3.html">counter</a> by placing a
+<a href="ltx-252.html"><tt>\label</tt></a> command
+with some mnemonic name in the appropriate
+<a href="ltx-27.html">environment</a>. The reference is then generated
+by use of the <A href="ltx-303.html"><tt>\ref</tt></A> command with the
+same mnemonic.
+<p>
+For example
+<pre>
+ <tt>\begin{equation}
+ <A href="ltx-252.html">\label</a>{eqno1}
+ c <a href="ltx-404.html">\geq</a> <a href="ltx-319.html">\sqrt</a>{a^2+b^2+1}
+ \end{equation}
+ .... intervening text ...
+ From Eq.~(<A href="ltx-303.html">\ref</a>{eqno1}) we see ...</tt>
+</pre>
+Assuming that this is the first equation,
+the last line will produce "From Eq. (1) we see ..." Note the
+use of the <a href="ltx-143.html"><tt>~</tt></a>
+to ensure that there is no line break between "Eq." and "(1)."
+Also note that the <tt>\ref</tt> command produces only the number;
+if you want the number to be in parentheses (as shown here) you have
+to include them in your text.
+
+<h2>Bibliographic citations</h2>
+Bibliographic citations work somewhat differently. The following
+should be consulted:
+<ul>
+<li><a href="ltx-211.html"><tt>\cite</tt></a>
+<li><a href="ltx-73.html"><tt>\thebibligraphy</tt></a>
+</ul>
+<hr>
+See also
+<ul>
+<li><A href="ltx-252.html"><tt>\label</tt></A>
+<li><A href="ltx-303.html"><tt>\ref</tt></A>
+<li><A href="ltx-291.html"><tt>\pageref</tt></A>
+<p>
+<li><a href="ltx-211.html"><tt>\cite</tt></a>
+<li><a href="ltx-73.html"><tt>\thebibligraphy</tt></a>
+<p>
+<li><a href="ltx-3.html">Counters</a>
+<li><a href="ltx-27.html">Environments</a>
+<li><a href="ltx-141.html">Sectioning</a>
+</ul>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a><br>
+<hr>
+<address>
+Revised: Sheldon Green, 03 Nov 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-130.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-130.html
new file mode 100644
index 00000000000..d6a99f89d07
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-130.html
@@ -0,0 +1,67 @@
+<html>
+<head><title>Help On LaTeX Modes</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Modes</font></h1>
+<p>
+ When LaTeX is processing your input text, it is always in one of three
+ modes:
+<ul>
+ <li><I>Paragraph</I> mode
+ <li><I>Math</I> mode
+ <li><I>Left-to-right</I> mode, called LR mode for short
+</ul>
+
+ LaTeX changes mode only when it goes up or down a staircase to a
+ different level, though not all level changes produce mode changes.
+ Mode changes occur only when entering or leaving an environment, or
+ when LaTeX is processing the argument of certain text-producing
+ commands.
+<h2>Paragraph mode</h2>
+ Paragraph mode is the most common; it's the one LaTeX is in when
+ processing ordinary text. In that mode, LaTeX breaks your text into
+ lines and breaks the lines into pages.
+<p>
+ There
+ are also several text-producing commands and environments for making a
+ box that put LaTeX in paragraph mode. The box made by one of these
+ commands or environments will be called a
+ <a href="ltx-294.html">parbox</a>. When LaTeX is in
+ paragraph mode while making a box, it is said to be in inner paragraph
+ mode. The normal paragraph mode, in which LaTeX starts out, is called
+ outer paragraph mode.
+
+<h2>Math mode</h2>
+ LaTeX is in math mode when it's generating a mathematical formula. It is
+ in math mode in the <a href="ltx-115.html#math">math</a>,
+ <a href="ltx-421.html">displaymath</a>, <a href="ltx-224.html">equation</a>,
+ and <a href="ltx-223.html"> eqnarray</a> environments.
+<p>
+ In math mode letters are assumed to be math symbols and spaced accordingly.
+ Spaces in the input are ignored, except that spaces may be needed to
+ delineate the end of commands.
+
+<h2>LR mode</h2>
+ In LR mode, as in paragraph
+ mode, LaTeX considers the output that it produces to be a string of
+ words with spaces between them. In LR mode, unlike paragraph and math modes,
+ spaces are not ignored; an input space creates an output space.
+ However, unlike paragraph mode, LaTeX
+ keeps going from left to right; it never starts a new line in LR mode.
+ Even if you put a hundred words into an
+ <a href="ltx-265.html"><tt>\mbox</tt></a>, LaTeX would keep
+ typesetting them from left to right inside a single box, and then
+ complain because the resulting box was too wide to fit on the line.
+<p>
+ LaTeX is in LR mode when it starts making a box with an
+ <a href="ltx-265.html"><tt>\mbox</tt></a> command.
+ You can get it to enter a different mode inside the box - for example,
+ you can make it enter math mode to put a formula in the box.
+<hr>
+Also see <a href="ltx-115.html">Math Formulas</a><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a><br>
+<hr>
+<address>
+Revised: Sheldon Green, 31 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-131.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-131.html
new file mode 100644
index 00000000000..70e27e88524
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-131.html
@@ -0,0 +1,24 @@
+<html>
+<head><title>Help On LaTeX Page Styles</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Page Styles</font></h1>
+<p>
+ The <tt>\documentstyle</tt> command determines the size and position of the
+ page's head and foot. The page style determines what goes in them.
+
+<H2>Subtopics</H2>
+<ul>
+<li><A href="ltx-263.html"><tt>\maketitle</tt></A>
+<li><A href="ltx-137.html"><tt>\pagenumbering</tt></A>
+<li><A href="ltx-138.html"><tt>\pagestyle</tt></A>
+<li><A href="ltx-140.html"><tt>\thispagestyle</tt></A>
+<li><a href="ltx-329.html"><tt>\title</tt></a>
+</ul>
+<hr>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 17 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-137.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-137.html
new file mode 100644
index 00000000000..59134f72b88
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-137.html
@@ -0,0 +1,30 @@
+<html>
+<head><title>Help On LaTeX \pagenumbering</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\pagenumbering</font></h1>
+<p>
+ <tt>\pagenumbering{num_style}</tt>
+<p>
+
+ Specifies the style of page numbers. Possible values of num_style are:
+<p>
+
+<ul>
+<li><TT>arabic</TT> Arabic numerals
+<li><TT>roman</TT> Lowercase roman numerals
+<li><TT>Roman</TT> Uppercase roman numerals
+<li><TT>alph</TT> Lowercase letters
+<li><TT>Alph</TT> Uppercase letters
+</ul>
+<hr>
+See also <a href="ltx-131.html">Page Styles</a><br>
+For page numbering, see <a href="ltx-3.html">Counters</a><br>
+To refer to a page number in the text, see
+ <a href="ltx-291.html"><tt>\pageref</tt></a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 20 Oct 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-138.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-138.html
new file mode 100644
index 00000000000..cd6fd4b67c7
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-138.html
@@ -0,0 +1,31 @@
+<html>
+<head><title>Help On LaTeX \pagestyle</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\pagestyle</font></h1>
+ <tt>\pagestyle{option}</tt>
+<p>
+ The <tt>\pagestyle</tt> <a href="declarations.html">declaration</a>
+ changes the style from the current page on
+ throughout the remainder of your document.
+<p>
+ The valid options are:
+<ul>
+<li><TT>plain</TT> Just a plain page number.
+<li><TT>empty</TT> Produces empty heads and feet - no page numbers.
+<li><TT>headings</TT> Puts running headings on each page. The document
+ style specifies what goes in the headings.
+<li><TT>myheadings</TT> You specify what is to go in the heading with the
+ <tt>\markboth</tt> or the <tt>\markright</tt> commands.
+</ul>
+<hr>
+See also
+<A href="ltx-264.html"><tt>\markboth</tt> and
+ <tt>\markright</tt></A><br>
+See also <a href="ltx-131.html">Page Styles</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-140.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-140.html
new file mode 100644
index 00000000000..14882e118a0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-140.html
@@ -0,0 +1,20 @@
+<html>
+<head><title>Help On LaTeX \thispagestyle</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\thispagestyle</font></h1>
+<p>
+ <tt>\thispagestyle{option}</tt>
+<p>
+ The <tt>\thispagestyle</tt> command works in the same manner as the
+ <a href="ltx-138.html"><tt>\pagestyle</tt></a>
+ command except that it changes the style for the current page only.
+<hr>
+See also <a href="ltx-131.html">Page Styles</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 17 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-141.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-141.html
new file mode 100644
index 00000000000..41f2a04db26
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-141.html
@@ -0,0 +1,70 @@
+<html>
+<head><title>Help On LaTeX Sectioning</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Sectioning</font></h1>
+<p>
+ Sectioning commands provide the means to structure your text into
+ units. The <a href="ltx-22.html">document style</a> determines which
+ sectioning commands are supported. They should be used with the
+ following heirarchy:
+ <ul>
+ <li><tt>\part</tt>
+ <li><tt>\chapter</tt> (report style only)
+ <li><tt>\section</tt>
+ <li><tt>\subsection</tt>
+ <li><tt>\subsubsection</tt>
+ <li><tt>\paragraph</tt>
+ <li><tt>\subparagraph</tt>
+ <li><tt>\subsubparagraph</tt> (milstd and book-form styles only)
+ <li><tt>\subsubsubparagraph</tt> (milstd and book-form styles only)
+ </ul>
+<p>
+ The <a href="ltx-3.html">counter</a> for each level is reset when the
+ level above is incremented (except chapters are numbered sequentially
+ regardless of the part).
+<p>
+ All sectioning commands take the same general form:
+<pre>
+ <tt>\chapter[optional]{title}</tt>
+ <a href="ltx-252.html">\label{lab}</a> <a href="ltx-434.html">%</a> optional, for cross referencing
+ text for this unit ...
+ ...
+</pre>
+ In addition to providing the heading in the text, the mandatory
+ argument of the sectioning command can appear in two other places:
+<ol>
+ <li>the table of contents
+ <li>the running head at the top of the page
+</ol>
+ You may not want the same thing to appear in these other two places as
+ appears in the text heading. To handle this situation, the sectioning
+ commands have an optional argument that provides the text for these
+ other two purposes.
+<p>
+The <tt>title</tt> or <tt>optional</tt> title are moving arguments so
+<a href="fragile.html">fragile</a> commands contained in these
+arguments must be protected.
+<p>
+ All the sectioning commands have *-forms that print a title, but do not
+ print a number with the title and do not incement the relevant
+ <a href="ltx-3.html">counter</a> and do not make an entry in the
+ <a href="toc.html">table of contents</a>.
+<p>
+ A blank line before or after a sectioning command has no effect.
+<hr>
+Related topics
+<ul>
+<li><a href="ltx-252.html"><tt>\label</tt></a>
+<li><A href="ltx-142.html"><tt>\appendix</tt></A>
+</ul>
+<hr>
+See also <a href="ltx-3.html">Counters</a>,
+ <a href="ltx-13.html">Cross References</a><br>
+See also <a href="toc.html">Table of Contents</a><br>
+Back to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 14 Jul 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-142.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-142.html
new file mode 100644
index 00000000000..843f696d7c4
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-142.html
@@ -0,0 +1,19 @@
+<html>
+<head><title>Help On LaTeX \appendix</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\appendix</font></h1>
+ <tt>\appendix</tt>
+<p>
+ The <tt>\appendix</tt> command changes the way sectional units are numbered.
+ It generates no text. However, <a href="ltx-141.html">section commands</a>
+ after the <tt>\appendix</tt> command are numbered accordingly.
+
+<hr>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 30 Oct 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-143.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-143.html
new file mode 100644
index 00000000000..12207070528
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-143.html
@@ -0,0 +1,149 @@
+<html>
+<head>
+<title>Help On LaTeX Spaces and Boxes</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Spaces and Boxes</font></h1>
+
+<h2>"Visible" Spaces</h2>
+You can generate a "visible" space, generally indicated as a small, squat
+"u," and useful in didactic material by using the
+<a href="ltx-342.html"><tt>\verb</tt></a> command or the
+<a href="ltx-79.html"><tt>verbatim</tt></a> environment.
+
+<h2>Non-breaking Spaces</h2>
+To generate a space where you do not want to allow a break for a new line use a
+<tt>~</tt>. For example,
+<pre>
+ <tt>... in Table~2 and Fig.~3 ...</tt>
+</pre>
+
+<h2>Controlling Space in Text</h2>
+
+The ends of words and sentences are marked
+in the input by one or more spaces. LaTeX
+treats multiple spaces as if they were a single space. An end of line
+is also equivalent to a space; however, you can end a line
+<em>without</em> a space by using a
+<a href="ltx-434.html"><tt>%</tt></a> (anything following the
+<tt>%</tt> is considered to be
+a comment). LaTeX generally ignores spaces at the beginning of lines.
+<p>
+Paragraphs are
+delineated by a <em>blank line</em> -- one which does not contain even
+comments (anything following a
+<a href="ltx-434.html"><tt>%</tt></a> until the end of a line is
+a comment). See also the <a href="ltx-293.html"><tt>\par</tt></a>
+command.
+<p>
+LaTeX leaves extra space after punctuation, such as the period which
+ends a sentence,
+but, it uses a very simple rule (periods end sentences unless
+they follow a capital letter) so
+sometimes it needs a little help in determining when
+this is required. (However, see
+<a href="frenchsp.html"><tt>\frenchspacing</tt></a>.)
+Use
+<ul>
+<li><a href="ltx-431.html"><tt>\&lt;space&gt;</tt></a> to create an ordinary
+ interword space
+<li><a href="ltx-432.html"><tt>\@</tt></a> before punctuation to force an "end of
+ sentence" space
+</ul>
+<p>
+It is sometimes necessary to add a little additional space, such as between
+consecutive single and double <a href="ltx-433.html">quotation marks</a>.
+The <a href="ltx-185.html"><tt>\,</tt></a> command can be used for this purpose.
+<p>
+Also see
+<ul>
+<li><a href="ltx-430.html">Dashes</a>
+<li><a href="ellipses.html">Ellipses</a>
+<li><a href="ltx-433.html">Quotation Marks</a>
+<li><a href="ltx-118.html">Spacing in Math Mode</a>
+</ul>
+
+<h2>Spaces after Commands</h2>
+
+Most LaTeX commands consist of a <tt>\</tt> followed by a string of
+letters. The end of such commands is indicated by a nonletter, i.e.,
+a number, a punctuation mark, a space, or the end of the line. If the
+command produces text and you want a space to follow this text, you cannot
+just leave a space after the command; that space is treated as the
+end-of-command signal and several spaces are equivalent to one in LaTeX.
+To generate a space after a text-producing command you can use
+<a href="ltx-431.html"><tt>\&lt;space&gt;</tt></a>.
+<p>
+For example
+<pre>
+ <tt>I wrote this on <a href="ltx-330.html">\today</a> .</tt>
+</pre>
+generates "I wrote this on Jul 7, 1995." Note that the spaces
+between <tt>\today</tt> and the period in the input do not generate
+any space in the output. On the other hand,
+<pre>
+ <tt>\today\ was a good day.</tt>
+</pre>
+or
+<pre>
+ <tt>\today \ was a good day.</tt>
+</pre>
+will both produce "Jul 7, 1995 was a good day." The
+<a href="ltx-431.html"><tt>\&lt;space&gt;</tt></a>
+here is necessary to produce space between the date and "was."
+<p>
+An alternatative is to use braces to terminate the command. For
+example, <tt>\today{} was ...</tt> is equivalent to the above.
+
+<h3>Invisible commands</h3>
+Some commands do not produce any output text. LaTeX treats these as
+words of zero length and may try to leave spaces both before and
+after this "word" which will generally produce an undesirable gap.
+This can be avoided by attaching these commands directly to the
+preceding word, i.e., leaving no spaces.
+
+<H2>Some commands which create or manipulate space</H2>
+<ul>
+<li><A href="ltx-198.html">\addvspace</A>
+<li><A href="ltx-206.html">\bigskip</A>
+<li><A href="ltx-220.html">\dotfill</A>
+<li><A href="ltx-238.html">\hfill</A>
+<li><A href="ltx-240.html">\hrulefill</A>
+<li><A href="ltx-241.html">\hspace</A>
+<li><A href="ltx-266.html">\medskip</A>
+<li><A href="ltx-306.html">\rule</A>
+<li><A href="ltx-318.html">\smallskip</A>
+<li><A href="ltx-345.html">\vfill</A>
+<li><A href="ltx-347.html">\vspace</A>
+</ul>
+See also
+<ul>
+<li><a href="ltx-118.html">spacing in math mode</a>
+</ul>
+
+<h2>Boxes</h2>
+A box is an object which TeX treats as a single character; it is therefore
+not broken across lines or pages.
+<p>
+The following commands create or manipulate boxes
+<ul>
+<li><A href="ltx-226.html">\fbox</A>
+<li><A href="ltx-237.html">\framebox</A>
+<li><A href="ltx-262.html">\makebox</A>
+<li><A href="ltx-265.html">\mbox</A>
+<li><A href="ltx-277.html">\newsavebox</A>
+<li><A href="ltx-294.html">\parbox</A>
+<li><A href="ltx-302.html">\raisebox</A>
+<li><A href="ltx-307.html">\savebox</A>
+<li><A href="ltx-307.html">\sbox</A>
+<li><A href="ltx-337.html">\usebox</A>
+</ul>
+
+<hr>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Sep 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-164.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-164.html
new file mode 100644
index 00000000000..342a3e4219d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-164.html
@@ -0,0 +1,68 @@
+<html>
+<head><title>Help On LaTeX Special Characters</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Special Characters</font></h1>
+<p>
+ The following characters play a special role in LaTeX and are called
+ special printing characters, or simply special characters.
+<pre>
+ # $ % & ~ _ ^ <tt>\</tt> { }
+</pre>
+ Whenever you put one of these special characters into your file, you
+ are doing something special, as described below.
+<p>
+ If you simply want the character to be
+ printed just as any other letter, include a <tt>\</tt> in front of the
+ character. For example, <tt>\$</tt> will produce $ in your output.
+<br>
+ Exceptions to this rule:
+<ul>
+<li><tt>\</tt> itself because
+ <a href="ltx-181.html"><tt>\\</tt></a> has its own
+ special meaning. Use <tt>$\backslash$</tt>.
+<li><tt>~</tt> and <tt>^</tt> because <tt>\~</tt> and <tt>\^</tt> produce
+ <a href="ltx-401.html">accents</a>. Use
+ <a href="ltx-342.html"><tt>\verb</tt></a> or the
+ <a href="ltx-79.html">verbatim environment</a>.
+
+</ul>
+<h2>#</h2>
+The number (pound) sign is used to define use of arguments, for example,
+in the <a href="ltx-18.html"><tt>\newcommand</tt></a> command.
+<h2>$</h2>
+The dollar sign is used to delineate <a href="ltx-115.html#math">math</a> and
+<a href="ltx-421.html">displaymath</a> Enviroments.
+<h2>%</h2>
+The percent sign is used to insert <a href="ltx-434.html">Comments</a> in the
+input file, and to allow line breaks without generating a space.
+<h2>&amp;</h2>
+The ampersand is used to separate items in the <a href="ltx-202.html">array</a>
+and <a href="ltx-68.html">tabular</a> Enviroments.
+<h2>~</h2>
+The tilde generates a <a href="ltx-143.html">nonbreaking space</a>
+To create a tilde in the output, use
+ <a href="ltx-342.html"><tt>\verb</tt></a> or the
+ <a href="ltx-79.html">verbatim environment</a> (or cheat by using
+ <tt>\~{}</tt>, i.e., placing a
+ <a href="ltx-401.html">tilde accent</a> over a "blank" letter).
+<h2>_</h2>
+The underscore is used to create <a href="ltx-179.html">subscripts</a>
+<h2>^</h2>The carat (circumflex) symbol generates
+<a href="ltx-180.html">superscripts</a>.
+ To create a carat in the output
+ use <a href="ltx-342.html"><tt>\verb</tt></a> or the
+ <a href="ltx-79.html">verbatim environment</a>.
+<h2>\ , { , and }</h2>
+The backslash and braces are used in
+<a href="ltx-17.html">command</a> definitions, for enclosing
+command arguments, and for delimiting scopes of
+<a href="declarations.html">declarations</a>.
+<hr>
+See also <a href="input.html">Input to LaTeX</a><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 15 Jul 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-165.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-165.html
new file mode 100644
index 00000000000..0acce481a0d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-165.html
@@ -0,0 +1,24 @@
+<html>
+<head><title>Help On LaTeX Splitting the Input</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Splitting the Input</font></h1>
+ A large document requires a lot of input. Rather than putting the
+ whole input in a single large file, it's more efficient to split it
+ into several smaller ones. Regardless of how many separate files you
+ use, there is one that is the root file; it is the one whose name you
+ type when you run LaTeX.
+
+<H2>Subtopics</H2>
+<ul>
+<li><A href="ltx-245.html">\include</A>
+<li><A href="ltx-246.html">\includeonly</A>
+<li><A href="ltx-248.html">\input</A>
+</ul>
+<hr>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Sep 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-169.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-169.html
new file mode 100644
index 00000000000..bfcf7224ec0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-169.html
@@ -0,0 +1,26 @@
+<html>
+<head><title>Help On LaTeX Starting and Ending</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Starting and Ending</font></h1>
+<p>
+ Your input file must contain the following commands as a minimum.
+<pre><tt>
+ <a href="ltx-22.html">\documentstyle{style}</a>
+ \begin{document}
+ ... your text goes here ...
+ \end{document}
+</tt></pre>
+ where the <tt>style</tt> selected is one the valid styles for LaTeX; see
+ <a href="ltx-22.html">Document Styles</a>.
+<p>
+ You may include other LaTeX commands between the <tt>\documentstyle</tt> and
+ the <tt>\begin{document}</tt> commands.
+<hr>
+See also <a href="input.html">Input to LaTeX</a><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 23 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-17.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-17.html
new file mode 100644
index 00000000000..54755ef470a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-17.html
@@ -0,0 +1,51 @@
+<html>
+<head><title>Help On LaTeX Commands</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">LaTex Commands</font></h1>
+
+<p>Commands take one of two forms:</p>
+
+<ul>
+ <li>a backslash (<tt>\</tt>) followed by a single special character
+ <li>a backslash (<tt>\</tt>) followed by a string of letters
+</ul>
+
+<p>The second case is case-sensitive;
+<a href="ltx-405.html"><tt>\Gamma</tt></a> is different from
+<a href="ltx-405.html"><tt>\gamma</tt></a>.
+These commands are terminated by a nonletter, i.e., a blank, a number,
+a punctuation mark or special character. </p>
+
+<p>For commands which produce text a trailing blank is interpreted as the
+end of the command, which does not automatically create a space, so
+you may have to do something to create an
+<a href="ltx-431.html">interword space</a> after this text.</p>
+
+<p>Commands may have mandatory arguments, which are input in braces
+(<tt>{}</tt>).
+They may also have optional arguments, which are input in square brackets
+(<tt>[]</tt>).</p>
+
+<H2>Defining new commands, etc.</H2>
+
+<p>See: </p>
+
+<ul>
+<li><A href="ltx-18.html"><tt>\newcommand</tt></A>
+<li><A href="ltx-19.html"><tt>\newenvironment</tt></A>
+<li><A href="ltx-20.html"><tt>\newtheorem</tt></A>
+<li><A href="ltx-21.html"><tt>\newfont</tt></A>
+</ul>
+These must be used for entities which are not already defined. To
+redefine something use, for example,
+<A href="ltx-18.html"><tt>\renewcommand</tt></A>.
+<hr>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 03 Nov 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-170.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-170.html
new file mode 100644
index 00000000000..4246f9dee24
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-170.html
@@ -0,0 +1,41 @@
+<html>
+<head><title>Help On LaTeX Table of Contents</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Table of Contents</font></h1>
+<p>
+ A table of contents is produced with the
+ <a href="toc.html"><tt>\tableofcontents</tt></a> command. You
+ put the command right where you want the table of contents to go;
+ LaTeX does the rest for you.
+ Entries are taken from the <a href="ltx-141.html">Sectioning</a> commands.
+<p>
+ <tt>\tableofcontents</tt> produces a heading, but it does not
+ automatically start a new page. If you want a new page after the
+ table of contents, include a
+ <a href="ltx-276.html"><tt>\newpage</tt></a> command after the
+ <tt>\tableofcontents</tt> command.
+<p>
+ There are similar commands <tt>\listoffigures</tt> and
+ <tt>\listoftables</tt> for
+ producing a list of figures and a list of tables, respectively.
+ Everything works exactly the same as for the table of contents.
+<p>
+ NOTE: Information for these tables and lists are placed in an auxiliary file
+ and you may have to run latex twice to get it to come out correctly.
+ If you want any of these items to be generated, you can not
+ have the <tt>\nofiles</tt> command in your document as that would suppress
+ writing of the auxiliary files.
+See also
+<ul>
+<li><a href="toc.html"><tt>\tableofcontents</tt></a>
+<li><A href="ltx-171.html"><tt>\addcontentsline</tt></A>
+<li><A href="ltx-172.html"><tt>\addtocontents</tt></A>
+</ul>
+<hr>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 27 Sep 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-171.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-171.html
new file mode 100644
index 00000000000..a6cfc68d9f4
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-171.html
@@ -0,0 +1,32 @@
+<html>
+<head><title>Help On LaTeX \addcontentsline</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\addcontentsline</font></h1>
+ <tt>\addcontentsline{file}{sec_unit}{entry}</tt>
+<p>
+ The <tt>\addcontentsline</tt> command adds an entry to the specified list or
+ table where
+<ul>
+<li><tt>file</tt> is the extension of the file on which information is to be
+ written: toc (table of contents), lof (list of figures), or lot
+ (list of tables).
+<li><tt>sec_unit</tt> controls the formatting of the entry. It should be one
+ of the following, depending upon the value of the file argument:
+ <ul>
+ <li><TT>toc</TT> the name of the sectional unit, such as part or
+ subsection.
+ <li><TT>lof</TT> figure
+ <li><TT>lot</TT> table
+ </ul>
+<li><tt>entry</tt> is the text of the entry.
+</ul>
+<p>
+<hr>
+See also <a href="ltx-170.html">Table of Contents</a><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 28 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-172.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-172.html
new file mode 100644
index 00000000000..32423986d3d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-172.html
@@ -0,0 +1,24 @@
+<html>
+<head><title>Help On LaTeX \addtocontents</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\addtocontents</font></h1>
+ <tt>\addtocontents{file}{text}</tt>
+<p>
+ The <tt>\addtocontents</tt> command adds text (or formatting commands) directly
+ to the file that generates the table of contents or list of figures or
+ tables.
+<ul>
+<li><tt>file</tt> is the extension of the file on which information is to be
+ written: toc (table of contents), lof (list of figures), or lot
+ (list of tables).
+<li><tt>text</tt> is the information to be written.
+</ul>
+<hr>
+See also <a href="ltx-170.html">Table of Contents</a><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 28 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-173.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-173.html
new file mode 100644
index 00000000000..5e94279d73a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-173.html
@@ -0,0 +1,18 @@
+<html>
+<head><title>Help On LaTeX Terminal Input and Output</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Terminal Input and Output</font></h1>
+Input from or output to the terminal is controlled by
+<ul>
+<li><A href="ltx-174.html">\typeout</A>
+<li><A href="ltx-175.html">\typein</A>
+</ul>
+<hr>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Sep 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-174.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-174.html
new file mode 100644
index 00000000000..6cf8f287e3c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-174.html
@@ -0,0 +1,25 @@
+<html><head><title>Help On LaTeX \typeout</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\typeout</font></h1>
+<p>
+ <tt>\typeout{msg}</tt>
+<p>
+ Prints <tt>msg</tt> on the terminal and in the log file. Commands in
+ <tt>msg</tt> that are defined with <a href="ltx-18.html"><tt>\newcommand</tt>
+ or <tt>\renewcommand</tt></a> are replaced by their
+ definitions before being printed.
+<p>
+ LaTeX's usual rules for treating multiple spaces as a single space and
+ ignoring spaces after a command name apply to <tt>msg</tt>.
+ A <a href="ltx-431.html"<tt>\&lt;space&gt;</tt></a> command
+ in <tt>msg</tt> causes a single space to be printed.
+<hr>
+See also <A href="ltx-173.html">Terminal Input and Output</A><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Sep 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-175.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-175.html
new file mode 100644
index 00000000000..b466a07ef25
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-175.html
@@ -0,0 +1,22 @@
+<html>
+<head><title>Help On LaTeX \typein</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\typein</font></h1>
+ <tt>\typein[cmd]{msg}</tt>
+<p>
+ Prints <tt>msg</tt> on the terminal and causes LaTeX to stop and wait for you
+ to type a line of input, ending with return. If the <tt>cmd</tt> argument is
+ missing, the typed input is processed as if it had been included in
+ the input file in place of the <tt>\typein</tt> command. If the <tt>cmd</tt>
+ argument is present, it must be a command name. This command name is then
+ defined or redefined to be the typed input.
+<hr>
+See also <A href="ltx-173.html">Terminal Input and Output</A><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Sep 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-176.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-176.html
new file mode 100644
index 00000000000..9606ffcc49f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-176.html
@@ -0,0 +1,26 @@
+<html>
+<head><title>Help On LaTeX Typefaces</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Typefaces</font></h1>
+<p>
+ The typeface is specified by giving the size and style. A typeface is
+ also called a font.
+<p>
+ In <a href="versions.html">LaTeX2e</a> the "styles" are replaced by a
+ <a href="fonts2e.html">Font Selection</a> scheme.
+
+<H2>Subtopics</H2>
+<ul>
+<li><A href="ltx-177.html">Styles</A>
+<li><A href="ltx-178.html">Sizes</A>
+<li><a href="mathfonts.html">Math fonts and styles</a>
+<li><a href="fonts2e.html">LaTeX2e Font Selection</a>
+</ul>
+<hr>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 19 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-177.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-177.html
new file mode 100644
index 00000000000..36d68f86c0b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-177.html
@@ -0,0 +1,55 @@
+<html>
+<head><title>Help On LaTeX Styles</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Styles</font></h1>
+ The following type style commands are supported by LaTeX. Note
+ that <a href="versions.html">LaTeX2e</a> differs on this point,
+ having instead a <a href="fonts2e.html">Font Selection</a> scheme,
+ but the following should still work (certainly in 2.09 mode).
+ <ul>
+ <li><a href="ltx-304.html"><tt>\rm</tt></a> Roman.
+ <li><a href="ltx-249.html"><tt>\it</tt></a> Italics.
+ <li><a href="ltx-221.html"><tt>\em</tt></a> Emphasis
+ (toggles between <tt>\it</tt> and <tt>\rm</tt>).
+ <li><a href="emph.html"><tt>\emph</tt></a> (LaTeX2e emphasis command)
+ <li><a href="ltx-204.html"><tt>\bf</tt></a> Boldface.
+ <li><a href="ltx-316.html"><tt>\sl</tt></a> Slanted.
+ <li><a href="ltx-313.html"><tt>\sf</tt></a> Sans serif.
+ <li><a href="ltx-308.html"><tt>\sc</tt></a> Small caps.
+ <li><a href="ltx-331.html"><tt>\tt</tt></a> Typewriter.
+<p>
+ <li><a href="boldmath.html"><tt>\boldmath</tt> and <tt>\unboldmath</tt></a>
+ (affects math mode fonts only)
+ </ul>
+These are LaTeX
+<a href="declarations.html"><em>delcarations</em></a> (with the exception of
+<a href="emph.html"><tt>\emph</tt></a>),
+i.e., they do not act on an argument, but change the way LaTeX prints the
+following text. The <em>scope</em> of a declaration is ended by a right
+brace (<tt>}</tt>) or an <tt>\end{}</tt> command whose matching
+left brace (<tt>{</tt>) or <tt>\begin{}</tt> precedes the declaration.
+<p>
+Thus, for a short piece of italics or bold-face text one would use
+<pre>
+ This is {\it italics} and this is {\bf in boldface}.
+</pre>
+which would be set as "This is <em>italics</em> and this is
+<strong>in boldface</strong>.
+<p>
+In LaTeX2e the
+<a href="emph.html"><tt>\emph</tt></a> command is considered more
+suitable for short stretches of emphasized text. A typical use would be
+<pre>
+ <tt>This is \emph{emphasized text}.</tt>
+</pre>
+<hr>
+See also Typeface <a href="ltx-178.html">Sizes</a><br>
+LaTeX2e <a href="fonts2e.html">Font Selection</a><br>
+See also <a href="mathfonts.html">Math fonts and styles</a><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 19 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-178.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-178.html
new file mode 100644
index 00000000000..e29edcf5d4a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-178.html
@@ -0,0 +1,44 @@
+<html>
+<head><title>Help On LaTeX Sizes</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Sizes</font></h1>
+ The following type size commands, in order of increasing font size,
+ are supported by LaTeX.
+<ul>
+ <li><a href="ltx-328.html"><tt>\tiny</tt></a>
+ <li><a href="ltx-309.html"><tt>\scriptsize</tt></a>
+ <li><a href="ltx-233.html"><tt>\footnotesize</tt></a>
+ <li><a href="ltx-317.html"><tt>\small</tt></a>
+ <li><a href="ltx-282.html"><tt>\normalsize</tt></a> (default)
+ <li><a href="ltx-253.html"><tt>\large</tt></a>
+ <li><a href="ltx-254.html"><tt>\Large</tt></a> (capital "l")
+ <li><a href="ltx-255.html"><tt>\LARGE</tt></a> (all caps)
+ <li><a href="ltx-242.html"><tt>\huge</tt></a>
+ <li><a href="ltx-243.html"><tt>\Huge</tt></a> (capital "h")
+</ul>
+The default for <tt>\normalsize</tt> is 10-point, but it may differ
+for some <a href="ltx-22.html">Document Styles</a> or their options.
+The actual size produced by these commands also depends on the Document
+Style and, in some styles, more than one of these size commands may produce
+the same actual size.
+<p>
+The new size takes effect immediately after the size command;
+if an entire paragraph or unit is set in a certain size, the size command
+should include the blank line or the <tt>\end{}</tt> which delimites
+the unit. (See <a href="declarations.html">Declarations</a>.)
+<p>
+These commands cannot be used in <a href="ltx-130.html">math mode</a>.
+However, part of a formula may be set in a different size by using
+an <a href="ltx-265.html"><tt>\mbox</tt></a> command containing the
+size command.
+<hr>
+See also Typeface <a href="ltx-177.html">Styles</a>,
+ <a href="fonts2e.html">LaTeX2e Font Selection</a><br>
+See also <a href="mathfonts.html">Math fonts and styles</a><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 14 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-179.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-179.html
new file mode 100644
index 00000000000..8635de367ef
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-179.html
@@ -0,0 +1,35 @@
+<html>
+<head><title>Help On LaTeX subscripts</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Subscripts</font></h1>
+<p>
+ To get an expression, <tt>exp</tt>, to appear as a subscript, you just type
+ <tt>_{exp}</tt>.<p>
+ Can be used only in <a href="ltx-115.html#math">math</a> mode.
+ Thus, for a simple expression that is part of the running text:
+<pre>
+ <tt>H$_2$O is the formula for water</tt>
+</pre>
+should display as "H<sub>2</sub>O is the formula for water".
+Note that the braces around the argument may be omitted if the
+subscript is a single character.
+<p>
+If a symbol has both subscripts and superscripts, the order doesn't matter.
+The following are equivalent:<br>
+<pre> <tt>a_n^2</tt> and <tt>a^2_n</tt></pre>
+<p>
+Subscripts are normally displayed in a smaller font; to prevent this and,
+for example, use a standard Roman font, one would use;
+<pre>
+ <tt>$J_{<a href="ltx-304.html">\rm</a> Roman}$</tt>
+</pre>
+<hr>
+ See also: <A href="ltx-115.html">Math Formulas</A>,
+ <A href="ltx-180.html">Superscripts</A><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 31 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-18.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-18.html
new file mode 100644
index 00000000000..715be743f32
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-18.html
@@ -0,0 +1,88 @@
+<html>
+<head><title>Help On LaTeX \newcommand and \renewcommand</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\newcommand \renewcommand</font></h1>
+<p>
+ <tt>\newcommand{cmd}[args][opt]{def}</tt>
+<br>
+ <tt>\renewcommand{cmd}[args][opt]{def}</tt>
+<br>
+ <tt>\providecommand{cmd}[args][opt]{def}</tt> --
+ <a href="versions.html">LaTeX2e</a>
+<p>
+ These commands define (or redefine) a command.
+<ul>
+<li><TT>cmd</TT> The name of the new or redefined command.
+ A <tt>\</tt> followed by a string of lower and/or uppercase
+ letters or a <tt>\</tt> followed by a single nonletter.
+ For <tt>\newcommand</tt> the name must
+ not be already defined and must not begin with <tt>\end</tt>; for
+ <tt>\renewcommand</tt> it must already be defined. The
+ <tt>\providecommand</tt> command is identical to the <tt>\newcommand</tt>
+ command if a command with this name does not exist; if it does
+ already exist, the <tt>\providecommand</tt> does nothing and the
+ old definition remains in effect.
+<p>
+<li><TT>args</TT> An integer from 1 to 9 denoting the number of arguments of
+ the command being defined. The default is for the command to
+ have no arguments.
+<p>
+<li><tt>opt</tt> (<strong><a href="versions.html">LaTeX2e only</a></strong>)
+ If present, then the first of the number of arguments specified by
+ <tt>args</tt> is optional with a default value of <tt>opt</tt>;
+ if absent, then all of the arguments are required.
+<p>
+<li><TT>def</TT> The text to be substituted for every occurrence of cmd; a
+ parameter of the form #n in cmd is replaced by the text of the
+ nth argument when this substitution takes place.
+</ul>
+<h2>Examples</h2>
+<tt>\newcommand{\water}{H$_2$O}</tt>
+<p>
+This would allow one to write, e.g.,
+<pre>
+ The formula for water is \water.
+</pre>
+or
+<pre>
+ \water\ is the formula for water.
+</pre>
+Note, in the second case, the trailing <tt>\</tt> followed by a blank
+is required to ensure a blank space after the H<sub>2</sub>O;
+LaTeX ignores the blank following a command, so the space has
+to be specifically inserted with the
+<a href="ltx-431.html"><tt>\&lt;space&gt;</tt></a>.
+<p>
+As a second example consider
+<p>
+<tt>\newcommand{\hypotenuse}{$a^{2}+b^{2}$}</tt>
+<p>
+Note that this will produce the desired formula
+in text (paragraph) mode because of the <tt>$...$</tt> in the definition.
+In math mode, however, the first <tt>$</tt>
+in the definition will cause LaTeX to leave math mode, causing problems.
+<p>
+In <strong>LaTeX 2.09</strong> a standard trick for getting around this is
+to put the math-mode expression in an
+<a href="ltx-265.html"><tt>\mbox</tt></a>, viz.,
+<pre>
+ <tt>\newcommand{\hypotenuse}{\mbox{$a^{2}+b^{2}$}}</tt>
+</pre>
+<p>
+In <strong>LaTeX2e</strong> the
+<a href="ensuremath.html"><tt>\ensuremath</tt></a> command has been
+provided to alleviate this problem. The argument of the <tt>\ensuremath</tt>
+command is always processed in math mode, regardless of the current mode.
+Using this mechanism the above could be written as
+<pre>
+ <tt>\newcommand{\hypotenuse}{\ensuremath{a^{2}+y^{2}}}</tt>
+</pre>
+<hr>
+See also <a href="ltx-17.html">Commands</a><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a><br>
+<hr>
+<address>
+Revised: Sheldon Green, 23 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-180.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-180.html
new file mode 100644
index 00000000000..f1dc0b481e7
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-180.html
@@ -0,0 +1,40 @@
+<html>
+<head><title>Help On LaTeX Superscripts</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Superscripts</font></h1>
+<p>
+ To get an expression, exp, to appear as a superscript, you just type
+ <tt>^{exp}</tt>.<p>
+ Can be used only in <a href="ltx-115.html#math">math</a> mode.
+Thus, for a simple expression that is part of the running text:
+<pre>
+ <tt>x$^3$ is the third power of x</tt>
+</pre>
+should display as "x<sup>3</sup> is the third power of x". Note that
+the braces around the argument may be omitted if the superscript is
+a single character.
+<p>
+If a symbol has both subscripts and superscripts, the order doesn't matter.
+The following are equivalent:<br>
+<pre> <tt>a_n^2</tt> and <tt>a^2_n</tt></pre>
+<p>
+Superscripts may have their own superscripts:
+<pre>
+ <tt>$x^{y^{z}}$</tt>
+</pre>
+should display something like
+<pre>
+ z
+ y
+ x
+</pre>
+<hr>
+ See also: <A href="ltx-115.html">Math Formulas</A>,
+ <A href="ltx-179.html">Subscripts</A><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 31 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-181.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-181.html
new file mode 100644
index 00000000000..4c58f7aba77
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-181.html
@@ -0,0 +1,27 @@
+<html>
+<head><title>Help On LaTeX \\</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\\</font></h1>
+<p>
+ <tt>\\[*][extra-space]</tt>
+<p>
+ The <tt>\\</tt> command tells LaTeX to start a new line. It has an optional
+ argument, extra-space, that specifies how much extra vertical space is
+ to be inserted before the next line. This can be a negative amount.
+<p>
+ The <tt>\\*</tt> command is the same as the ordinary <tt>\\</tt> command except that it
+ tells LaTeX not to start a new page after the line.
+<p>
+ These commands are <a href="fragile.html">fragile</a>.
+<hr>
+See also <A href="ltx-99.html">Line and Page Breaking</A><br>
+See also <a href="ltx-202.html">Array</a>,
+ <a href="ltx-58.html">Tabbing</a>, and
+ <a href="ltx-68.html">Tabular</a> Environments<br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Sep 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-182.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-182.html
new file mode 100644
index 00000000000..e2f0ee12b6b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-182.html
@@ -0,0 +1,26 @@
+<html>
+<head><title>Help On LaTeX \-</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\-</font></h1>
+<p>
+<h2>In normal text</h2>
+ the <tt>\-</tt> command tells LaTeX that it may hyphenate the word at that
+ point. LaTeX is very good at hyphenating, and it will usually find
+ all correct hyphenation points. The <tt>\-</tt> command is used for the
+ exceptional cases.
+<p>
+<h2>In the <a href="ltx-58.html">tabbing</a> environment</h2>
+ the <tt>\-</tt> command moves the left margin of the next and all the following
+ commands one tab stop to the left.
+<hr>
+See also <A href="ltx-27.html">Environments</A>,
+ <A href="ltx-58.html">tabbing</A>,
+ <A href="ltx-99.html">Line and Page Breaking</A><br>
+See also <a href="ltx-244.html"><tt>\hyphenation</tt></a><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 15 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-183.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-183.html
new file mode 100644
index 00000000000..daf7a958ded
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-183.html
@@ -0,0 +1,17 @@
+<html>
+<head><title>Help On LaTeX \;</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\;</font></h1>
+ Include a thick space in <a href="ltx-115.html">math mode</a>.
+
+<hr>
+See also <A href="ltx-115.html">Math Formulas</A>,
+ <A href="ltx-118.html">Spacing in Math Mode</A><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Sep 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-184.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-184.html
new file mode 100644
index 00000000000..f363524f581
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-184.html
@@ -0,0 +1,17 @@
+<html>
+<head><title>Help On LaTeX \:</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\:</font></h1>
+ Include a medium space in <a href="ltx-115.html">math mode</a>.
+
+<hr>
+See also <A href="ltx-115.html">Math Formulas</A>,
+ <A href="ltx-118.html">Spacing in Math Mode</A><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Sep 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-185.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-185.html
new file mode 100644
index 00000000000..fda562d9408
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-185.html
@@ -0,0 +1,17 @@
+<html>
+<head><title>Help On LaTeX \,</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\,</font></h1>
+<p>
+ Include a thin space; can be used in all <a href="ltx-130.html">modes</a>,
+ not just math.
+<hr>
+See also: <A href="ltx-115.html">Math Formulas</A>,
+ <A href="ltx-118.html">Spacing in Math Mode</A><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 10 May 1995.
+</address>
+</body></html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-186.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-186.html
new file mode 100644
index 00000000000..8046229a6f1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-186.html
@@ -0,0 +1,17 @@
+<html>
+<head><title>Help On LaTeX \!</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\!</font></h1>
+ Include a negative thin space in <a href="ltx-115.html">math mode</a>.
+
+<hr>
+See also <A href="ltx-115.html">Math Formulas</A>,
+ <A href="ltx-118.html">Spacing in Math Mode</A><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Sep 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-187.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-187.html
new file mode 100644
index 00000000000..0a7ae1218df
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-187.html
@@ -0,0 +1,20 @@
+<html>
+<head><title>Help On LaTeX \=</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\=</font></h1>
+<h2>In normal text</h2>
+Produces a macron <a href="ltx-401.html">accent</a> (an over bar)
+on the following character.
+
+<h2>In the <a href="ltx-58.html">tabbing</a> environment</h2>
+ The <tt>\=</tt> command sets the tab stops.
+<hr>
+See also <A href="ltx-27.html">Environments</A>,
+ <A href="ltx-58.html">tabbing</A><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 8 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-188.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-188.html
new file mode 100644
index 00000000000..a022349e222
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-188.html
@@ -0,0 +1,16 @@
+<html>
+<head><title>Help On LaTeX \&gt;</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\&gt;</font></h1>
+ The <tt>\&gt;</tt> command causes LaTeX to advance to the next tab stop.
+
+<hr>
+See also <A href="ltx-58.html">tabbing</A><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Sep 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-189.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-189.html
new file mode 100644
index 00000000000..9150944470a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-189.html
@@ -0,0 +1,17 @@
+<html>
+<head><title>Help On LaTeX \&lt;</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\&lt;</font></h1>
+ The <tt>\&lt;</tt> command allows you to put something to the left of the local
+ margin without changing the margin.
+
+<hr>
+See also <A href="ltx-58.html">tabbing</A><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Sep 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-19.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-19.html
new file mode 100644
index 00000000000..a0474f32e71
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-19.html
@@ -0,0 +1,50 @@
+<html>
+<head><title>Help On LaTeX \newenvironment</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\newenvironment</font></h1>
+
+ <tt>\newenvironment{nam}[args]{begdef}{enddef}</tt>
+ <tt>\renewenvironment{nam}[args]{begdef}{enddef}</tt>
+<p>
+ These commands define or redefine an environment.
+<p>
+<ul>
+<li><TT>nam</TT> The name of the environment.
+ For <tt>\newenvironment</tt> there
+ must be no currently defined environment by that name, nor may the
+ command <tt>\nam</tt> be currently defined. For
+ <tt>\renewenvironment</tt> the
+ environment "<tt>nam</tt>" must already be defined. <tt>nam</tt>
+ may contain letters, numbers, and asterisks; it may <strong>not</strong>
+ begin with "end...".
+<p>
+<li><TT>args</TT> An integer from 1 to 9 denoting the number of arguments of
+ the newly-defined environment. The default is no arguments.
+<p>
+<li><TT>begdef</TT> The text substituted for every occurrence of
+ <tt>\begin{nam}</tt>; a parameter of the form <tt>#n</tt> in
+ <tt>begdef</tt> is replaced by
+ the text of the nth argument when this substitution takes place.
+<p>
+<li><TT>enddef</TT> The text substituted for every occurrence of
+ <tt>\end{nam}</tt>. It may not contain any argument parameters.
+</ul>
+<h2>Changes in <a href="versions.html">LaTeX2e</a></h2>
+It is possible to have an optional argument, the form of the command being
+<pre>
+ <tt>\newenvironment{nam}[args][opt]{begdef}{enddef}
+ \renewenvironment{nam}[args][opt]{begdef}{enddef}</tt>
+</pre>
+If <tt>opt</tt> is present, the first of the <tt>args</tt> arguments
+is optional with default value <tt>opt</tt>. If it is absent all
+arguments are mandatory.
+<hr>
+See also <a href="ltx-17.html">Defining commands</a>,
+<a href="ltx-27.html">Environments</a><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 16 Nov 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-190.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-190.html
new file mode 100644
index 00000000000..edd61c28adf
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-190.html
@@ -0,0 +1,17 @@
+<html>
+<head><title>Help On LaTeX \+</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\+</font></h1>
+ The <tt>\+</tt> command moves the left margin of the next and all the following
+ commands one tab stop to the right.
+
+<hr>
+See also <A href="ltx-58.html">tabbing</A><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Sep 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-191.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-191.html
new file mode 100644
index 00000000000..05f53f0e3d5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-191.html
@@ -0,0 +1,28 @@
+<html>
+<head><title>Help On LaTeX \'</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\'</font></h1>
+<h2>In normal text</h2>
+Produces an acute <a href="ltx-401.html">accent</a> on the following character.
+
+<h2>In the <a href="ltx-58.html">tabbing</a> environment</h2>
+ The <tt>\'</tt> command moves everything that you have typed so far in the
+ current column , everything starting from the most recent
+ <a href="ltx-188.html"><tt>\&gt;</tt></a>,
+ <a href="ltx-189.html"><tt>\&lt;</tt></a>,
+ <a href="ltx-192.html"><tt> \'</tt></a>,
+ <a href="ltx-181.html"><tt>\\</tt></a>,
+ or
+ <a href="ltx-251.html"><tt>\kill</tt></a>
+ command, to the right of the previous column, flush
+ against the current column's tab stop.
+<hr>
+See also <A href="ltx-27.html">Environments</A>,
+<A href="ltx-58.html">tabbing</A><br>
+ Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 1 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-192.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-192.html
new file mode 100644
index 00000000000..9ae2a1b7189
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-192.html
@@ -0,0 +1,30 @@
+<html>
+<head><title>Help On LaTeX \`</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\`</font></h1>
+<p>
+<h2>In normal text</h2>
+Produces a grave <a href="ltx-401.html">accent</a> on the following character.
+
+<h2>In the <a href="ltx-58.html">tabbing</a> environment</h2>
+ The <tt>\`</tt> command allows you to put text flushed right against any tab
+ stop, including tab stop 0. However, it can't move text to the right
+ of the last column because there's no tab stop there. The <tt>\`</tt> command
+ moves all the text that follows it, up to the
+ <a href="ltx-181.html"> <tt>\\</tt></a> or
+ <tt>\end{tabbing}</tt>
+ command that ends the line, to the right margin of the tabbing
+ environment. There must be no
+ <a href="ltx-188.html"><tt>\&gt;</tt></a> or
+ <a href="ltx-191.html"><tt>\'</tt></a> command between the <tt>\`</tt> and the
+ command that ends the line.
+<hr>
+See also <A href="ltx-27.html">Environments</A>,
+ <A href="ltx-58.html">tabbing</A><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 8 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-195.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-195.html
new file mode 100644
index 00000000000..64f5fabb3c8
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-195.html
@@ -0,0 +1,20 @@
+<html>
+<head><title>Help On LaTeX \addtocounter</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\addtocounter</font></h1>
+<p>
+ <tt>\addtocounter{counter}{value}</tt>
+<p>
+ The <tt>\addtocounter</tt> command increments the <tt>counter</tt>
+ by the amount
+ specified by the <tt>value</tt> argument,
+ which can be negative.
+<hr>
+See also: <A href="ltx-3.html">Counters</A><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 2 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-198.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-198.html
new file mode 100644
index 00000000000..3b91b06f440
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-198.html
@@ -0,0 +1,23 @@
+<html>
+<head><title>Help On LaTeX \addvspace</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\addvspace</font></h1>
+<p>
+ <tt>\addvspace{length}</tt>
+<p>
+
+ The <tt>\addvspace</tt> command normally adds a vertical space of height
+ <tt>length</tt>.
+ However, if vertical space has already been added to the same
+ point in the output by a previous <tt>\addvspace</tt> command, then this
+ command will not add more space than needed to make the natural length
+ of the total vertical space equal to length.
+<hr>
+See <a href="ltx-143.html">Spaces and Boxes</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 10 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-199.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-199.html
new file mode 100644
index 00000000000..cee315a9884
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-199.html
@@ -0,0 +1,22 @@
+<html>
+<head><title>Help On LaTeX \alph</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\alph</font></h1>
+
+ <tt>\alph{counter}</tt>
+<p>
+ This command causes the current value of <tt>counter</tt> to be printed in
+ alphabetic characters. The <tt>\alph</tt> command causes lower case alphabetic
+ characters, i.e., a, b, c..., while the <tt>\Alph</tt> command causes upper
+ case alphabetic characters, i.e., A, B, C...
+<p>
+ The value of the counter must be less than 27.
+<hr>
+See also <A href="ltx-3.html">Counters</A><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 18 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-2.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-2.html
new file mode 100644
index 00000000000..9537a1851fa
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-2.html
@@ -0,0 +1,328 @@
+<html>
+<head><title>Help On LaTeX Commands</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+
+<h2><font color="#cc0000">Hypertext Help with LaTeX</font></h2>
+
+<hr width="10%" align=left>
+
+<h1><font color="#cc0000">Help by <a href="#subj">Subject</a>,
+<a href="#cmd">Command</a>, or <a href="#env">Environment</a></font></h1>
+
+
+<h2><a name="subj">Subjects</a></h2>
+
+<ul>
+ <li><a href="ltx-401.html">Accenting characters</a> (umlauts, graves, etc.)
+ <li><a href="ltx-202.html">Arrays</a> (math mode)
+ <li><a href="ltx-17.html">Commands</a>, defining and redefining
+ <li><a href="ltx-434.html">Comments in input file</a>
+ <li><a href="ltx-3.html">Counters</a>
+ <li><a href="ltx-13.html">Cross References</a>
+ <li><a href="ltx-430.html">Dashes</a>
+ <li><a href="declarations.html">Declarations</a> (changing how things look)
+ <li><a href="ltx-17.html">Defining New Commands</a>
+ <li><a href="ltx-22.html">Document Styles</a>
+ <li><a href="ltx-27.html">Environments</a>
+ (or see <a href="#env">list below</a>)
+ <li><a href="ltx-82.html">Footnotes</a>
+ <li><a href="ltx-176.html">Fonts</a>
+ <li><a href="fragile.html">Fragile commands</a> (and how to protect them)
+ <li><a href="input.html">Input to LaTeX</a>
+ <li><a href="ltx-402.html">International characters and punctuation</a>
+ <li><a href="ltx-86.html">Lengths</a> and how to change them
+ <li><a href="ltx-91.html">Letters</a> (as in "Dear John")
+ <li><a href="ltx-99.html">Line and Page Breaking</a>
+ <li><a href="lists.html">Lists</a>
+ <li><a href="ltx-111.html">Making Paragraphs</a>
+ <li><a href="ltx-115.html">Math Formulas</a> and
+ <a href="ltx-117.html">Math Symbols</a>
+ <li><a href="ltx-130.html">Modes</a> (paragraph, left-right, math)
+ <li><a href="ltx-402.html">Non-English characters and punctuation</a>
+ <li><a href="ltx-131.html">Page Styles</a>
+ <li><a href="ltx-43.html">Picture environment</a>
+ <li><a href="ltx-433.html">Quotation Marks</a>
+ <li><a href="ltx-141.html">Sectioning</a>
+ <li><a href="ltx-143.html">Spaces and Boxes</a>
+ <li><a href="ltx-164.html">Special Characters</a>: # $ % &amp; ~ _ ^ \ { }
+ <li>Special Symbols
+ <ul>
+ <li><a href="ltx-401.html">Accents on characters</a>
+ (umlauts, graves, etc.)
+ <li><a href="ltx-406.html">Arrows</a> (math mode)
+ <li><a href="ltx-404.html">Binary and relational operators</a> (math mode)
+ <li><a href="ltx-403.html">Delimiters</a>
+ (parenthesis-like objects; math mode)
+ <li><a href="ellipses.html">Ellipses</a>
+ <li><a href="ltx-405.html">Greek letters</a> (math mode)
+ <li><a href="ltx-407.html">Miscellaneous symbols</a>
+ <li><a href="ltx-409.html">Math functions</a>
+ (sin, cos, log, ...; math mode)
+ <li><a href="ltx-408.html">Variable size math symbols</a>
+ (sums, integrals, ...; math mode)
+ </ul>
+ <li><a href="ltx-165.html">Splitting the Input</a>
+ <li><a href="ltx-169.html">Starting and Ending</a>
+ <li><a href="ltx-179.html">Subscripts</a> and
+ <a href="ltx-180.html">Superscripts</a>
+ <li><a href="ltx-67.html">Table</a>,
+ <a href="ltx-68.html">Tabular</a> and
+ <a href="ltx-58.html">Tabbing</a> Environments
+ <li><a href="ltx-170.html">Table of Contents</a>
+ <li><a href="ltx-173.html">Terminal Input and Output</a>
+ <li><a href="ltx-176.html">Typefaces</a>
+</ul>
+
+<h2><a name="cmd">LaTeX Commands</a></h2>
+
+<p>A LaTeX command begins with the command name, which consists of a <tt>\</tt>
+followed by either (a) a string of letters or (b) a single non-letter.
+Arguments contained in square brackets [] are optional while arguments
+contained in braces {} are required.</p>
+
+<p>NOTE: LaTeX is case sensitive. Enter all commands in lower case
+unless explicitly directed to do otherwise.</p>
+
+<ul>
+ <li><a href="ltx-431.html"><tt>\&lt;space&gt;</tt></a> (force ordinary space)
+ <li><a href="ltx-432.html"><tt>\@</tt></a> (following period ends sentence)
+ <li><a href="ltx-181.html"><tt>\\</tt></a> (new line)
+ <li><a href="ltx-185.html"><tt>\,</tt></a> (thin space)
+ <li><a href="ltx-183.html"><tt>\;</tt></a> (thick space, math mode)
+ <li><a href="ltx-184.html"><tt>\:</tt></a> (medium space, math mode)
+ <li><a href="ltx-186.html"><tt>\!</tt></a> (negative thin space, math mode)
+ <li><a href="ltx-182.html"><tt>\-</tt></a>
+ (hyphenation; <a href="ltx-58.html">tabbing</a>)
+ <li><a href="ltx-187.html"><tt>\=</tt></a>
+ (set tab, see <a href="ltx-58.html">tabbing</a>)
+ <li><a href="ltx-188.html"><tt>\&gt;</tt></a>
+ (tab, see <a href="ltx-58.html">tabbing</a>)
+ <li><a href="ltx-189.html"><tt>\&lt;</tt></a>
+ (back tab, see <a href="ltx-58.html">tabbing</a>)
+ <li><a href="ltx-190.html"><tt>\+</tt></a>
+ (see <a href="ltx-58.html">tabbing</a>)
+ <li><a href="ltx-191.html"><tt>\'</tt></a>
+ (<a href="ltx-401.html">accent</a> or <a href="ltx-58.html">tabbing</a>)
+ <li><a href="ltx-192.html"><tt>\`</tt></a>
+ (<a href="ltx-401.html">accent</a> or <a href="ltx-58.html">tabbing</a>)
+ <li><a href="ltx-403.html"><tt>\|</tt></a> (double vertical lines, math mode)
+ <li><tt>\(</tt> and <tt>\)</tt>
+ (define <a href="ltx-115.html#math">math environment</a>)
+ <li><tt>\[</tt> and <tt>\]</tt>
+ (define <a href="ltx-421.html">displaymath environment</a>)
+ <li><a href="ltx-171.html">\addcontentsline</a>
+ <li><a href="ltx-172.html">\addtocontents</a>
+ <li><a href="ltx-195.html">\addtocounter</a>
+ <li><a href="ltx-93.html">\address</a>
+ <li><a href="ltx-89.html">\addtolength</a>
+ <li><a href="ltx-198.html">\addvspace</a>
+ <li><a href="ltx-199.html">\alph</a>
+ <li><a href="ltx-200.html">\appendix</a>
+ <li><a href="ltx-201.html">\arabic</a>
+ <li><a href="ltx-203.html">\author</a>
+ <li><a href="ltx-164.html">\backslash</a>
+ <li><a href="baselineskip.html">\baselineskip</a>
+ <li><a href="baselineskip.html">\baselinestretch</a>
+ <li><a href="ltx-204.html">\bf</a>
+ <li><a href="ltx-205.html">\bibitem</a>
+ <li><a href="ltx-206.html">\bigskip</a>
+ <li><a href="boldmath.html">\boldmath</a>
+ <li><a href="ltx-407.html">\cal</a>
+ <li><a href="caption.html">\caption</a>
+ <li><a href="ltx-207.html">\cdots</a>
+ <li><a href="ltx-30.html">\centering</a>
+ <li><a href="ltx-210.html">\circle</a>
+ <li><a href="ltx-211.html">\cite</a>
+ <li><a href="ltx-212.html">\cleardoublepage</a>
+ <li><a href="ltx-213.html">\clearpage</a>
+ <li><a href="ltx-214.html">\cline</a>
+ <li><a href="ltx-98.html">\closing</a>
+ <li><a href="ltx-216.html">\dashbox</a>
+ <li><a href="ltx-217.html">\date</a>
+ <li><a href="ltx-218.html">\ddots</a>
+ <li><a href="ltx-220.html">\dotfill</a>
+ <li><a href="ltx-221.html">\em</a>
+ <li><a href="ensuremath.html">\ensuremath</a> (LaTeX2e)
+ <li><a href="ltx-226.html">\fbox</a>
+ <li><a href="ltx-227.html">\flushbottom</a>
+ <li><a href="ltx-230.html">\fnsymbol</a>
+ <li><a href="ltx-231.html">\footnote</a>
+ <li><a href="ltx-232.html">\footnotemark</a>
+ <li><a href="ltx-233.html">\footnotesize</a>
+ <li><a href="ltx-234.html">\footnotetext</a>
+ <li><a href="ltx-235.html">\frac</a>
+ <li><a href="ltx-236.html">\frame</a>
+ <li><a href="ltx-237.html">\framebox</a>
+ <li><a href="frenchsp.html">\frenchspacing</a>
+ <li><a href="ltx-238.html">\hfill</a>
+ <li><a href="ltx-239.html">\hline</a>
+ <li><a href="ltx-240.html">\hrulefill</a>
+ <li><a href="ltx-241.html">\hspace</a>
+ <li><a href="ltx-242.html">\huge</a>
+ <li><a href="ltx-243.html">\Huge (capital "h")</a>
+ <li><a href="ltx-244.html">\hyphenation</a>
+ <li><a href="ltx-245.html">\include</a>
+ <li><a href="ltx-246.html">\includeonly</a>
+ <li><a href="ltx-247.html">\indent</a>
+ <li><a href="ltx-248.html">\input</a>
+ <li><a href="ltx-249.html">\it</a>
+ <li><a href="item.html">\item</a>
+ <li><a href="ltx-251.html">\kill</a>
+ <li><a href="ltx-252.html">\label</a>
+ <li><a href="ltx-253.html">\large</a>
+ <li><a href="ltx-254.html">\Large (capital "l")</a>
+ <li><a href="ltx-255.html">\LARGE (all caps)</a>
+ <li><a href="ltx-256.html">\ldots</a>
+ <li><a href="ltx-403.html#big">\left</a>
+ <li><a href="lefteqn.html">\lefteqn</a>
+ <li><a href="ltx-257.html">\line</a>
+ <li><a href="ltx-258.html">\linebreak</a>
+ <li><a href="ltx-259.html">\linethickness</a>
+ <li><a href="textwidth.html">\linewidth</a>
+ <li><a href="ltx-261.html">\location</a>
+ <li><a href="ltx-262.html">\makebox</a>
+ <li><a href="ltx-263.html">\maketitle</a>
+ <li><a href="ltx-264.html">\markboth \markright</a>
+ <li><a href="ltx-407.html">\mathcal</a>
+ <li><a href="stackrel.html#mathop">\mathop</a>
+ <li><a href="ltx-265.html">\mbox</a>
+ <li><a href="ltx-266.html">\medskip</a>
+ <li><a href="ltx-268.html">\multicolumn</a>
+ <li><a href="ltx-269.html">\multiput</a>
+ <li><a href="ltx-18.html">\newcommand</a>
+ <li><a href="ltx-271.html">\newcounter</a>
+ <li><a href="ltx-19.html">\newenvironment</a>
+ <li><a href="ltx-21.html">\newfont</a>
+ <li><a href="ltx-87.html">\newlength</a>
+ <li><a href="ltx-275.html">\newline</a>
+ <li><a href="ltx-276.html">\newpage</a>
+ <li><a href="ltx-277.html">\newsavebox</a>
+ <li><a href="ltx-20.html">\newtheorem</a>
+ <li><a href="ltx-279.html">\nocite</a>
+ <li><a href="ltx-280.html">\noindent</a>
+ <li><a href="ltx-281.html">\nolinebreak</a>
+ <li><a href="ltx-282.html">\normalsize</a> (default)
+ <li><a href="ltx-283.html">\nopagebreak</a>
+ <li><a href="ltx-404.html#not">\not</a>
+ <li><a href="ltx-284.html">\onecolumn</a>
+ <li><a href="ltx-97.html">\opening</a>
+ <li><a href="ltx-286.html">\oval</a>
+ <li><a href="ltx-287.html">\overbrace</a>
+ <li><a href="ltx-288.html">\overline</a>
+ <li><a href="ltx-289.html">\pagebreak</a>
+ <li><a href="ltx-137.html">\pagenumbering</a>
+ <li><a href="ltx-291.html">\pageref</a>
+ <li><a href="ltx-138.html">\pagestyle</a>
+ <li><a href="ltx-293.html">\par</a>
+ <li><a href="ltx-294.html">\parbox</a>
+ <li><a href="ltx-86.html#lencmd">\parindent</a>
+ <li><a href="parskip.html">\parskip</a>
+ <li><a href="fragile.html">\protect</a>
+ <li><a href="ltx-18.html">\providecommand</a> (LaTeX2e)
+ <li><a href="ltx-296.html">\put</a>
+ <li><a href="ltx-299.html">\raggedbottom</a>
+ <li><a href="ltx-300.html">\raggedleft</a>
+ <li><a href="ltx-301.html">\raggedright</a>
+ <li><a href="ltx-302.html">\raisebox</a>
+ <li><a href="ltx-303.html">\ref</a>
+ <li><a href="ltx-18.html">\renewcommand</a>
+ <li><a href="ltx-403.html#big">\right</a>
+ <li><a href="ltx-304.html">\rm</a>
+ <li><a href="ltx-305.html">\roman</a>
+ <li><a href="ltx-306.html">\rule</a>
+ <li><a href="ltx-307.html">\savebox</a>
+ <li><a href="ltx-307.html">\sbox</a>
+ <li><a href="ltx-308.html">\sc</a>
+ <li><a href="ltx-309.html">\scriptsize</a>
+ <li><a href="ltx-310.html">\setcounter</a>
+ <li><a href="ltx-88.html">\setlength</a>
+ <li><a href="ltx-90.html">\settowidth</a>
+ <li><a href="ltx-313.html">\sf</a>
+ <li><a href="ltx-314.html">\shortstack</a>
+ <li><a href="ltx-315.html">\signature</a>
+ <li><a href="ltx-316.html">\sl</a>
+ <li><a href="ltx-317.html">\small</a>
+ <li><a href="ltx-318.html">\smallskip</a>
+ <li><a href="ltx-319.html">\sqrt</a>
+ <li><a href="stackrel.html">\stackrel</a>
+ <li><a href="toc.html">\tableofcontents</a>
+ <li><a href="ltx-323.html">\telephone</a>
+ <li><a href="textwidth.html">\textwidth</a>
+ <li><a href="ltx-86.html#lencmd">\textheight</a>
+ <li><a href="ltx-324.html">\thanks</a>
+ <li><a href="ltx-140.html">\thispagestyle</a>
+ <li><a href="ltx-328.html">\tiny</a>
+ <li><a href="ltx-329.html">\title</a>
+ <li><a href="ltx-330.html">\today</a>
+ <li><a href="ltx-331.html">\tt</a>
+ <li><a href="ltx-332.html">\twocolumn</a>
+ <li><a href="ltx-174.html">\typeout</a>
+ <li><a href="ltx-175.html">\typein</a>
+ <li><a href="ltx-335.html">\underbrace</a>
+ <li><a href="ltx-336.html">\underline</a>
+ <li><a href="unitlength.html">\unitlength</a>
+ <li><a href="ltx-337.html">\usebox</a>
+ <li><a href="ltx-338.html">\usecounter</a>
+ <li><a href="ltx-339.html">\value</a>
+ <li><a href="ltx-340.html">\vdots</a>
+ <li><a href="ltx-341.html">\vector</a>
+ <li><a href="ltx-342.html">\verb</a>
+ <li><a href="ltx-345.html">\vfill</a>
+ <li><a href="ltx-346.html">\vline</a>
+ <li><a href="ltx-403.html#big">\vphantom</a>
+ <li><a href="ltx-347.html">\vspace</a>
+</ul>
+
+
+<h2><a name="env">LaTeX Environments</a></h2>
+
+<p>LaTeX <a href="ltx-27.html">environments</a> are created by</p>
+
+<pre> \begin{<b>environment</b>} ... \end{<b>environment</b>}</pre>
+
+<p><a href="declarations.html">Declarations</a> can be effected by an
+environment of the same name.</p>
+
+<ul>
+ <li><a href="ltx-420.html">abstract</a>
+ <li><a href="ltx-202.html">array</a>
+ <li><a href="ltx-29.html">center</a>
+ <li><a href="ltx-31.html">description</a>
+ <li><a href="ltx-421.html">displaymath</a>
+ <li><a href="ltx-222.html">enumerate</a>
+ <li><a href="ltx-223.html">eqnarray</a>
+ <li><a href="ltx-224.html">equation</a>
+ <li><a href="ltx-225.html">figure</a>
+ <li><a href="ltx-228.html">flushleft</a>
+ <li><a href="ltx-229.html">flushright</a>
+ <li><a href="ltx-250.html">itemize</a>
+ <li><a href="ltx-260.html">list</a>
+ <li><a href="ltx-115.html#math">math</a>
+ <li><a href="ltx-267.html">minipage</a>
+ <li><a href="ltx-43.html">picture</a>
+ <li><a href="ltx-297.html">quotation</a>
+ <li><a href="ltx-298.html">quote</a>
+ <li><a href="ltx-58.html">tabbing</a>
+ <li><a href="ltx-67.html">table</a>
+ <li><a href="ltx-68.html">tabular</a>
+ <li><a href="ltx-73.html">thebibliography</a>
+ <li><a href="ltx-77.html">theorem</a>
+ <li><a href="ltx-78.html">titlepage</a>
+ <li><a href="trivlist.html">trivlist</a>
+ <li><a href="ltx-79.html">verbatim</a>
+ <li><a href="ltx-81.html">verse</a>
+</ul>
+
+<hr>
+
+<p>Return to the <a href="index.html">Introduction</a></p>
+
+<hr>
+
+<address>
+Page revised: 1997:05:15, RBS
+</address>
+
+</body>
+</html>
+
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-20.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-20.html
new file mode 100644
index 00000000000..fcb6b6960d9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-20.html
@@ -0,0 +1,35 @@
+<html>
+<head><title>Help On LaTeX \newtheorem</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\newtheorem</font></h1>
+<p>
+ <tt>\newtheorem{env_name}{caption}[within]</tt>
+ <tt>\newtheorem{env_name}[numbered_like]{caption}</tt>
+<p>
+ This command defines a theorem-like environment.
+<ul>
+<li><TT>env_name</TT> The name of the environment -- a string of letters.
+ Must not be the name of an existing environment or counter.
+<p>
+<li><TT>caption</TT> The text printed at the beginning of the environment,
+ right before the number.
+<p>
+<li><TT>within</TT> The name of an already defined counter, usually of a
+ sectional unit. Provides a means of resetting the new theorem
+ counter within the sectional unit.
+<p>
+<li><TT>numbered_like</TT> The name of an already defined theorem-like
+ environment.
+</ul>
+
+ The <tt>\newtheorem</tt> command may have at most one optional argument.
+
+<hr>
+Go back to <a href="ltx-17.html">Definitions</a><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 2 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-200.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-200.html
new file mode 100644
index 00000000000..d49f3203700
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-200.html
@@ -0,0 +1,44 @@
+<html>
+<head><title>Help On LaTeX \appendix</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\appendix</font></h1>
+ <tt>\appendix</tt>
+<p>
+ The <tt>\appendix</tt> command changes the way sectional units are numbered.
+ The <tt>\appendix</tt> command generates no text and does not affect the
+ numbering of parts.
+<p>Thus, if you want your appendix to be set off with a section-like
+label you need something like<pre>
+ <tt>\begin{<a href="ltx-29.html">center</a>}
+ {<a href="ltx-204.html">\bf</a> APPENDIX}
+ \end{center}</tt>
+</pre>
+<hr>
+I have found the <tt>\appendix</tt> command to sometimes cause
+problems since <em>everything</em> which follows it is treated as part of
+the appendix, for example, a list of figures, which I generally
+want to place after an appendix is labeled "Appendix: List of Figures".
+<p>
+One can create a section labeled "APPENDIX" with distinctive numbering
+by using the <a href="ltx-141.html"><tt>\section</tt></a> command
+with suitably redefined commands for the <a href="ltx-3.html">Counters</a>.
+The following example generates a single "Appendix" with equations numbered
+A-1, A-2, ... <pre>
+ <tt><a href="ltx-18.html">\renewcommand</a>{\theequation}{A-\arabic{equation}}
+ % redefine the command that creates the equation no.
+ <a href="ltx-310.html">\setcounter</a>{equation}{0} % reset counter
+ <a href="ltx-141.html">\section*</a>{APPENDIX} % use *-form to suppress numbering</tt>
+</pre>
+If one had several appendices, appropriate numbering could be obtained by
+redefining the <tt>\thesection</tt> command and resetting the section
+counter in an analogous manner.
+<hr>
+See also: <A href="ltx-141.html">Sectioning</A>,
+ <a href="ltx-3.html">Counters</a><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 14 Jul 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-201.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-201.html
new file mode 100644
index 00000000000..d64e76faf58
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-201.html
@@ -0,0 +1,18 @@
+<html>
+<head><title>Help On LaTeX \arabic</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\arabic</font></h1>
+
+ <tt>\arabic{counter}</tt>
+<p>
+ The <tt>\arabic</tt> command causes the current value of <tt>counter</tt>
+ to be printed in arabic numbers, i.e., 3.
+<hr>
+See also <A href="ltx-3.html">Counters</A><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 18 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-202.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-202.html
new file mode 100644
index 00000000000..5727ba7bcfd
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-202.html
@@ -0,0 +1,68 @@
+<html>
+<head><title>Help On LaTeX arrays</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Arrays</font></h1>
+<p>
+<p><pre>
+ \begin{array}[pos]{vvvv}
+ column 1 entry &amp: column 2 entry ... &amp; column n entry \\
+ ...
+ ...
+ ...
+ \end{array}
+</pre><p>
+ The array environment, like the <a href="ltx-68.html">tabular</a>
+ environment, produces a <a href="ltx-143.html">box</a>
+ consisting of a sequence of rows of
+ vertically aligned columns. It can be used only within the
+ <a href="ltx-115.html">math environment</a>.
+<p>
+ There is a single mandatory argument describing the number of columns and
+ the alignment within each of them.
+ Each of the <tt>v</tt>'s in the argument specifies a column and may be
+ a <tt>l</tt>, <tt>c</tt>, or <tt>r</tt> indicating that the column should
+ be flush left, centered, or flush right, respectively. For more
+ complex options, see the <a href="ltx-68.html">tabular environment</a>
+ which uses the same format.
+<p>
+ The optional <tt>pos</tt> argument specifies the alignment of the array with
+ its surrounding environment (recall that LaTeX treats boxes as one,
+ albeit large letter). The options are
+<ul>
+<li><tt>t</tt> - align on top row
+<li><tt>b</tt> - align on bottom row
+</ul>
+The default is to align on the center of the array.
+<p>
+ Column entries must be separated by an <tt>&amp;</tt>. Column entries
+ may include other LaTeX commands, even other arrays.
+ Each row of the array must be terminated with
+ the string <a href="ltx-181.html"><tt>\\</tt></a>.
+ Note that there is no <tt>&amp;</tt> after the last
+ item in a row and no <tt>\\</tt> after the last row. (An exception is if
+ an <tt><a href="ltx-239.html">\hline</a></tt> is used to place a line
+ at the bottom; it follows a <tt>\\</tt>.)
+<p>
+Each item in the array is treated as if it were surrounded by braces. Thus,
+a <a href="declarations.html">declaration</a> within an array item is
+local to that item, i.e., it is ended by an <tt>&amp;</tt> or <tt>\\</tt>.
+<p>
+Horizontal and vertical lines in the array are produced with
+<ul>
+<li><a href="ltx-214.html"><tt>\cline</tt></a>
+<li><a href="ltx-239.html"><tt>\hline</tt></a>
+<li><a href="ltx-346.html"><tt>\vline</tt></a>
+</ul>
+<hr>
+See also
+<ul>
+ <li><a href="ltx-68.html">tabular environment</a><br>
+ <li><a href="ltx-115.html">math environment</a>
+</ul>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 31 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-203.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-203.html
new file mode 100644
index 00000000000..5c5e6604c0a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-203.html
@@ -0,0 +1,34 @@
+<html>
+<head><title>Help On LaTeX \author</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\author</font></h1>
+<p>
+ <tt>\author{names}</tt>
+<p>
+ The <tt>\author</tt> command declares the author(s), where names is a list of
+ authors separated by <tt>\and</tt> commands. Use
+ <a href="ltx-181.html"><tt>\\</tt></a>
+ to separate lines within a
+ single author's entry -- for example, to give the author's institution
+ or address.
+<p>
+ NOTE: The milstd and book-form styles have re-defined the
+ <A href="ltx-263.html"><tt>\maketitle</tt></a>
+ command. The
+ <a href="ltx-329.html"><tt>\title</tt></a>
+ declaration is the only command that has any meaning.
+<p>
+ A footnote for an author is produced with the
+ <a href="ltx-324.html"><tt>\thanks</tt></a> command.
+
+<hr>
+See also <A href="ltx-131.html">Page Styles</A><br>
+See also <A href="ltx-263.html"><tt>\maketitle</tt></A>,
+ <a href="ltx-329.html"><tt>\title</tt></a><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 16 Nov 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-204.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-204.html
new file mode 100644
index 00000000000..44ed7387d11
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-204.html
@@ -0,0 +1,20 @@
+<html>
+<head><title>Help On LaTeX \bf</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\bf</font></h1>
+<p>
+ Boldface typeface.
+<p>
+This is version 2.09; see also
+ <a href="fonts2e.html">LaTeX2e font selection</a><br>
+<hr>
+See also <A href="ltx-176.html">Typefaces</A>,
+ <A href="ltx-177.html">Styles</A><br>
+See also <a href="boldmath.html"><tt>\boldmath</tt></a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 16 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-205.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-205.html
new file mode 100644
index 00000000000..d290d2c7cb7
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-205.html
@@ -0,0 +1,42 @@
+<html>
+<head><title>Help On LaTeX \bibitem</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\bibitem</font></h1>
+<p>
+ <tt>\bibitem[label]{cite_key}</tt>
+<p>
+
+ The <tt>\bibitem</tt> command generates an entry labeled by <tt>label</tt>.
+ If the <tt>label</tt>
+ argument is missing, a number is generated as the label, using
+ the <tt>enumiv</tt>
+ <a href="ltx-3.html">counter</a>.
+ The <tt>cite_key</tt> is a mnemonic consisting of any sequence of letters,
+ numbers, and punctuation symbols not containing a comma.
+<p>
+ <tt>\bibitem</tt> and <a href="ltx-211.html"><tt>\cite</tt></a> are used
+ together much as <a href="ltx-252.html"><tt>\label</tt></a> and
+ <a href="ltx-303.html"><tt>\ref</tt></a> to produce a correspondence
+ between items in the Reference or Bibliography
+ (<a href="ltx-73.html"><tt>thebibliography</tt></a> environment).
+<p>
+ This command writes
+ an entry on the aux file containing <tt>cite_key</tt> and the item's
+ <tt>label</tt>.
+ When this aux file is read by the
+ <a href="ltx-169.html"><tt>\begin{document}</tt></a> command, the item's
+ <tt>label</tt> is associated with <tt>cite_key</tt>,
+ causing the reference to <tt>cite_key</tt> by a
+ <a href="ltx-211.html"><tt>\cite</tt></a> command to produce the
+ associated <tt>label</tt>.
+<hr>
+See also <A href="ltx-27.html">Environments</A><br>
+See also <A href="ltx-73.html"><tt>thebibliography</tt></A>,
+ <a href="ltx-211.html"><tt>\cite</tt></a><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 17 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-206.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-206.html
new file mode 100644
index 00000000000..6649b51b387
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-206.html
@@ -0,0 +1,17 @@
+<html>
+<head><title>Help On LaTeX \bigskip</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\bigskip</font></h1>
+<p>
+ The <tt>\bigskip</tt> command is equivalent to
+ <tt>\vspace{\bigskipamount}</tt> where
+ <tt>\bigskipamount</tt> is determined by the document style.
+<hr>
+See also: <A href="ltx-143.html">Spaces and Boxes</A><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 10 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-207.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-207.html
new file mode 100644
index 00000000000..287ce7da3fc
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-207.html
@@ -0,0 +1,26 @@
+<html>
+<head><title>Help On LaTeX \cdots</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\cdots</font></h1>
+<p>
+ The <tt>\cdots</tt> command produces a horizontal ellipsis where the dots are
+ raised to the center of the line.<br>
+ Can be used only in math mode.
+<p>
+See also:
+<ul>
+<li><A href="ltx-218.html">\ddots</A>
+<li><A href="ltx-256.html">\ldots</A>
+<li><A href="ltx-340.html">\vdots</A>
+<p>
+<li><A href="ltx-115.html">Math Formulas</A>,
+<li><A href="ltx-119.html">Math Miscellany</A>.
+</ul>
+<p>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 25 April 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-21.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-21.html
new file mode 100644
index 00000000000..9bfe0b716d4
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-21.html
@@ -0,0 +1,20 @@
+<html>
+<head><title>Help On LaTeX \newfont</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\newfont</font></h1>
+<p>
+ <tt>\newfont{cmd}{font_name}</tt>
+<p>
+
+ Defines the command name <tt>cmd</tt>, which must not be currently defined, to
+ be a declaration that selects the font named <tt>font_name</tt> to be the
+ current font.
+<hr>
+Go back to <a href="ltx-17.html">Definitions</a><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 2 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-210.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-210.html
new file mode 100644
index 00000000000..554e7b8619d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-210.html
@@ -0,0 +1,18 @@
+<html>
+<head><title>Help On LaTeX \circle</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\circle</font></h1>
+ <tt>\circle[*]{diameter}</tt>
+<p>
+ The <tt>\circle</tt> command produces a circle of the specified diameter. If
+ the *-form of the command is used, LaTeX draws a solid circle.
+<hr>
+See also: <A href="ltx-27.html">Environments</A>,
+ <A href="ltx-43.html">picture</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 28 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-211.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-211.html
new file mode 100644
index 00000000000..a9fd440a2af
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-211.html
@@ -0,0 +1,32 @@
+<html>
+<head><title>Help On LaTeX \cite</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\cite</font></h1>
+<p>
+ <tt>\cite[text]{key_list}</tt>
+<p>
+
+ The <tt>key_list</tt> argument is a list of citation keys. This command
+ generates an in-text citation to the references associated with the
+ keys in <tt>key_list</tt> by entries on the aux file read by the
+ <a href="ltx-169.html"><tt>\begin{document}</tt></a> command.
+<p>
+ <a href="ltx-205.html"><tt>\bibitem</tt></a> and <tt>\cite</tt> are used
+ together much as <a href="ltx-252.html"><tt>\label</tt></a> and
+ <a href="ltx-303.html"><tt>\ref</tt></a> to produce a correspondence
+ between items in the Reference or Bibliography
+ (<a href="ltx-73.html"><tt>thebibliography</tt></a> environment).
+<p>
+The <tt>\cite</tt> command is <a href="fragile.html">fragile</a>.
+<hr>
+ See also <a href="ltx-27.html">Environments</a>,
+ <A href="ltx-13.html">Cross References</A><br>
+ See also <a href="ltx-73.html"><tt>thebibliography</tt></a>,
+ <a href="ltx-205.html"><tt>\bibitem</tt></a><br>
+ Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 4 Jul 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-212.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-212.html
new file mode 100644
index 00000000000..8116dbf6023
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-212.html
@@ -0,0 +1,18 @@
+<html>
+<head><title>Help On LaTeX \cleardoublepage</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\cleardoublepage</font></h1>
+<p>
+ The <tt>\cleardoublepage</tt> command ends the current page and causes all
+ figures and tables that have so far appeared in the input to be
+ printed. In a two-sided printing style, it also makes the next page a
+ right-hand (odd-numbered) page, producing a blank page if necessary.
+<hr>
+See also <A href="ltx-99.html">Line and Page Breaking</A><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-213.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-213.html
new file mode 100644
index 00000000000..8cee5c21f9d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-213.html
@@ -0,0 +1,16 @@
+<html>
+<head><title>Help On LaTeX \clearpage</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\clearpage</font></h1>
+<p>
+ The <tt>\clearpage</tt> command ends the current page and causes all figures
+ and tables that have so far appeared in the input to be printed.
+<hr>
+See also <A href="ltx-99.html">Line and Page Breaking</A><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-214.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-214.html
new file mode 100644
index 00000000000..41932ca6a02
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-214.html
@@ -0,0 +1,28 @@
+<html>
+<head><title>Help On LaTeX \cline</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\cline</font></h1>
+ <tt>\cline{i-j}</tt>
+<p>
+ The <tt>\cline</tt> command draws horizontal lines across the columns
+ specified, beginning in column i and ending in column j, which are
+ identified in the mandatory argument.
+<p>
+It is used in the <A href="ltx-68.html">tabular</A> and
+<a href="ltx-202.html">array</a> environment.
+<p>
+ Two (or more) successive <tt>\cline</tt> commands draw lines in the same
+ vertical position. Typically, <tt>\cline</tt> commands are placed after a
+ <a href="ltx-181.html"><tt>\\</tt></a> (line breadk) command so that
+ they separate items on two lines; they do
+ not, however, need a line break command afterwards.
+<hr>
+See also <A href="ltx-68.html">tabular</A> and
+ <a href="ltx-202.html">array</a> environments<br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 10 Oct 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-216.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-216.html
new file mode 100644
index 00000000000..d0b9abfc97b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-216.html
@@ -0,0 +1,22 @@
+<html>
+<head><title>Help On LaTeX \dashbox</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\dashbox</font></h1>
+ <tt>\dashbox{dash length}(width,height)[pos]{ ... }</tt>
+<p>
+ Used only in the <a href="ltx-43.html">picture environement</a>,
+ the <tt>\dashbox</tt> is like <a href="ltx-237.html"><tt>\framebox</tt></a>
+ but has an extra argument which specifies the width of each
+ dash. A dashed box looks best when the width and height are multiples
+ of the dash length.
+<hr>
+See also <A href="ltx-43.html">Picture Environment</A><br>
+See also <a href="ltx-237.html"><tt>\framebox</tt></a><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 Dec 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-217.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-217.html
new file mode 100644
index 00000000000..0878ebe1c95
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-217.html
@@ -0,0 +1,22 @@
+<html>
+<head><title>Help On LaTeX \date</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\date</font></h1>
+<p>
+ <tt>\date{text}</tt>
+<p>
+ The <tt>\date</tt> command declares <tt>text</tt>
+ to be the document's date. With no
+ <tt>\date</tt> command, the current date is used.
+<hr>
+See also <A href="ltx-131.html">Page Styles</A>,
+ <A href="ltx-263.html"><tt>\maketitle</tt></A><br>
+See also <a href="ltx-330.html"><tt>\today</tt></a><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 17 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-218.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-218.html
new file mode 100644
index 00000000000..3b4394dae9a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-218.html
@@ -0,0 +1,25 @@
+<html>
+<head><title>Help On LaTeX \ddots</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\ddots</font></h1>
+<p>
+ The <tt>\ddots</tt> command produces a diagonal ellipsis.<br>
+ Can be used only in math mode.
+<p>
+See also:
+<ul>
+<li><A href="ltx-207.html">\cdots</A>
+<li><A href="ltx-256.html">\ldots</A>
+<li><A href="ltx-340.html">\vdots</A>
+<p>
+<li><A href="ltx-115.html">Math Formulas</A>,
+<li><A href="ltx-119.html">Math Miscellany</A>.
+</ul>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 25 April 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-22.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-22.html
new file mode 100644
index 00000000000..cba6bef116a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-22.html
@@ -0,0 +1,46 @@
+<html>
+<head><title>Help On LaTeX Document Styles</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Document Styles</font></h1>
+<p>
+ Valid LaTeX document styles include:
+ <ul>
+ <li><I>article</I>
+ <li><I>report</I>
+ <li><I>letter</I>
+ <li><I>book</I>
+ </ul>
+ They are selected with the following command:
+<p>
+ <tt>\documentstyle[options]{style}</tt>
+<p>
+ The options for the different styles are:
+<ol>
+ <li>article: 11pt, 12pt, twoside, twocolumn, draft, fleqn, leqno,
+ acm
+ <li>report: 11pt, 12pt, twoside, twocolumn, draft, fleqn, leqno, acm
+ <li>letter: 11pt, 12pt, fleqn, leqno, acm
+ <li>book: 11pt, 12pt, twoside,twocolumn, draft, fleqn, leqno
+</ol>
+ If you specify more than one option, they must be separated by a
+ comma.
+<hr>
+Related topics:
+<ul>
+<li><A href="ltx-227.html">\flushbottom</A>
+<li><A href="ltx-284.html">\onecolumn</A>
+<li><A href="ltx-299.html">\raggedbottom</A>
+<li><A href="ltx-332.html">\twocolumn</A>
+</ul>
+See also <a href="ltx-169.html">starting and ending</a><br>
+The <tt>\documentstyle</tt>
+command has been changed in <a href="versions.html">LaTeX2e</a><br>
+<p>
+Go to <A href="ltx-177.html">Typeface Styles</A><br>
+Back to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 7 Jul 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-220.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-220.html
new file mode 100644
index 00000000000..7f3e2e56643
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-220.html
@@ -0,0 +1,17 @@
+<html>
+<head><title>Help On LaTeX \dotfill</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\dotfill</font></h1>
+<p>
+ The <tt>\dotfill</tt> command produces a
+ <a href="ltx-86.html#rubber">rubber length</a> that produces dots
+ instead of just spaces.
+<hr>
+See <a href="ltx-143.html">Spaces and Boxes</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 23 Oct 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-221.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-221.html
new file mode 100644
index 00000000000..47de00fca4c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-221.html
@@ -0,0 +1,19 @@
+<html>
+<head><title>Help On LaTeX \em</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\em</font></h1>
+<p>
+ Emphasis (toggles between <tt>\it</tt> and <tt>\rm</tt>).
+<p>
+This is version 2.09; see also
+ <a href="fonts2e.html">LaTeX2e font selection</a>,
+ <a href="emph.html"><tt>\emph</tt></a>
+<hr>
+See also <A href="ltx-176.html">Typefaces</A>,
+ <A href="ltx-177.html">Styles</A><br>
+See also <a href="boldmath.html"><tt>\boldmath</tt></a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 16 May 1995.
+</address></body></html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-222.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-222.html
new file mode 100644
index 00000000000..59eb551e8b6
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-222.html
@@ -0,0 +1,52 @@
+<html>
+<head><title>Help On LaTeX enumerate</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">enumerate</font></h1>
+<p>
+<p><pre>
+ \begin{enumerate}
+ \item First item
+ \item Second item
+ ....
+ \end{enumerate}
+</pre>
+<p>
+ The enumerate environment produces a numbered list. Enumerations can
+ be nested within one another, up to four levels deep. They can also
+ be nested within other paragraph-making environments.
+<p>
+There must be at least one <tt>\item</tt> command within the environment.
+<p>
+ Each item of an enumerated list begins with an
+ <a href="item.html"><tt>\item</tt></a> command. The optional <tt>label</tt>
+ argument of the <tt>\item</tt> command, if given, suppresses incrementing
+ the <a href="ltx-3.html">counter</a>. If not given the default labels are
+ taken from the counters, <tt>enumi, enumii, enumiii, enumiv</tt> for the
+ four allowed levels of nesting, respectively.
+<p>
+<a name="example">The</a> numbering style for the enumeration is determined by
+the commands, <tt>\labelenumi</tt>, <tt>\labelenumii</tt>, etc., for
+the nested levels. These may be redefined with the
+<a href="ltx-18.html"><tt>\renewcommand</tt></a> command.
+<p>
+For example, to use upper case letters for the first level and lower
+case letters for the second level of enumeration:
+<pre>
+ <tt>\renewcommand{\labelenumi}{<a href="ltx-199.html">\Alph</a>{enumi}}
+ \renewcommand{\labelenumii}{<a href="ltx-199.html">\alph</a>{enumii}}</tt>
+</pre>
+<hr>
+
+See also <A href="ltx-27.html">Environments</A>,
+ <a href="lists.html">Lists</a>,
+ <a href="ltx-3.html">Counters</a><br>
+See also <a href="item.html"><tt>\item</tt></a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Thanks to Robert Biddle, Robert.Biddle@Comp.VUW.AC.NZ, for info on
+the <tt>\labelenumi</tt> commands.<br>
+Revised: Sheldon Green, 10 Oct 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-223.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-223.html
new file mode 100644
index 00000000000..7d5200b374a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-223.html
@@ -0,0 +1,50 @@
+<html>
+<head><title>Help On LaTeX eqnarray</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">eqnarray</font></h1>
+<p>
+<p><pre>
+ <tt>\begin{eqnarray[*]}
+ var_1 & rel_1 & eq1 \\
+ var_2 & rel_2 & eq2 \\
+ ....
+ \end{eqnarray[*]}</tt>
+</pre>
+
+ The eqnarray environment is typically used to display a sequence of equations
+ or inequalities; it may also be used to manage spacing for long equations.
+ The <a href="lefteqn.html"><tt>\lefteqn</tt></a> command is useful in
+ this environment for splitting long equations over several lines.
+<p>
+ It is very much like a three-column
+ <a href="ltx-202.html">array environment</a>, with position argument <tt>rcl</tt>,
+ i.e., the columns are justified right, center, and left, respectively.
+ (However, <a href="ltx-268.html"><tt>\multicolumn</tt></a> may not be used.)
+<p>
+ Consecutive rows are separated by <a href="ltx-181.html"><tt>\\</tt></a>
+ commands and consecutive items within a
+ row separated by an <tt>&amp;</tt>. Any item may be empty, i.e., no text.
+<p>
+ A separate equation number is placed on every
+ line unless that line has a <tt>\nonumber</tt> command.
+ The optional <tt>eqnarray*</tt> form does not generate any equation numbers.
+<p>
+ A <a href="ltx-252.html"><tt>\label</tt></a> command anywhere within a
+ row generates a reference to that row's number.
+<hr>
+Related topics
+<ul>
+<li><A href="ltx-27.html">Environments</A>
+<li><a href="ltx-130.html">LaTeX Modes</a>
+<li><a href="ltx-202.html">Array Environment</a>
+<li><a href="ltx-224.html">Equation Environment</a>
+<li><a href="ltx-421.html">Displaymath Environment</a>
+<li><a href="ltx-115.html">Math Formulas</a>
+</ul>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 26 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-224.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-224.html
new file mode 100644
index 00000000000..c007e0430da
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-224.html
@@ -0,0 +1,35 @@
+<html>
+<head><title>Help On LaTeX equation</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">equation</font></h1>
+<pre>
+ \begin{equation}
+ math formula
+ \label{eqno1}
+ \end{equation}
+</pre>
+
+ The equation environment centers your equation on the page and places
+ the equation number in the right margin.
+<p>
+ The <a href="ltx-252.html"><tt>\label</tt></a> command is required
+ only if you want to use a <a href="ltx-303.html"><tt>\ref</tt></a>
+ command to refer to the number assigned to this equation.
+<p>
+The <a href="ltx-421.html">Display Math</a> environment gives the
+same effect without the equation number.
+<hr>
+Related topics
+<ul>
+<li><A href="ltx-27.html">Environments</A>
+<li><a href="ltx-130.html">LaTeX Modes</a>
+<li><a href="ltx-223.html">Eqnarray Environment</a>
+<li><a href="ltx-115.html">Math Formulas</a>
+</ul>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 31 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-225.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-225.html
new file mode 100644
index 00000000000..e7b032ab3ba
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-225.html
@@ -0,0 +1,45 @@
+<html>
+<head><title>Help On LaTeX figure</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">figure</font></h1>
+<p>
+<p><pre>
+ <tt>\begin{figure}[placement]
+
+ body of the figure
+
+ <a href="caption.html">\caption</a>{figure title}
+ \end{figure}</tt>
+</pre>
+
+ Figures are objects that are not part of the normal text, and are
+ usually "floated" to a convenient place, like the top of a page.
+ Figures will not be split between two pages.
+<p>
+ The optional argument [placement] determines where LaTeX will try to
+ place your figure. There are four places where LaTeX can possibly put
+ a float:
+<ul>
+<li><TT>h</TT> Here - at the position in the text where the figure
+ environment appears.
+<li><TT>t</TT> Top - at the top of a text page.
+<li><TT>b</TT> Bottom - at the bottom of a text page.
+<li><TT>p</TT> Page of floats - on a separate float page, which is a page
+ containing no text, only floats.
+</ul>
+ The standard report and article styles use the default placement tbp.
+<p>
+ The body of the figure is made up of whatever text, LaTeX commands,
+ etc., you wish. The
+ <a href="caption.html"><tt>\caption</tt></a>
+ command allows you to title your figure.
+<hr>
+See also <A href="ltx-27.html">Environments</A>,
+ <a href="ltx-43.html">Picture</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 12 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-226.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-226.html
new file mode 100644
index 00000000000..3becd1a50ff
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-226.html
@@ -0,0 +1,26 @@
+<html>
+<head><title>Help On LaTeX \fbox</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\fbox</font></h1>
+<p>
+ <tt>\fbox{text}</tt>
+<p>
+
+ The <tt>\fbox</tt> command is exactly the same as the
+ <a href="ltx-265.html"><tt>\mbox</tt></a> command, except
+ that it puts a rectangular frame around the outside of the box
+ that it creates.
+<p>
+ The <tt>\fbox</tt> command is <a href="fragile.html">robust</a>.
+<hr>
+See <tt><a href="ltx-237.html">\framebox</a></tt>,
+ <tt><a href="ltx-265.html">\mbox</a></tt><br>
+See also <a href="ltx-143.html">Spaces and Boxes</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 8 Aug 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-227.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-227.html
new file mode 100644
index 00000000000..9641d7baa84
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-227.html
@@ -0,0 +1,17 @@
+<html>
+<head><title>Help On LaTeX \flushbottom</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\flushbottom</font></h1>
+ The <tt>\flushbottom</tt> declaration makes all text pages the same height,
+ adding extra vertical space when necessary to fill out the page.
+
+<hr>
+See also <A href="ltx-22.html">Document Styles</a><br>
+See also <a href="ltx-299.html"><tt>\raggedbottom</tt></a><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 28 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-228.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-228.html
new file mode 100644
index 00000000000..72224f71389
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-228.html
@@ -0,0 +1,29 @@
+<html>
+<head><title>Help On LaTeX flushleft</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">flushleft</font></h1>
+<p>
+<p><pre>
+ \begin{flushleft}
+ Text on line 1 \\
+ Text on line 2 \\
+ ....
+ ....
+ \end{flushleft}
+</pre>
+ The flushleft environment allows you to create a paragraph consisting
+ of lines that are flushed left to the left-hand margin. Each line
+ must be terminated with a
+ <a href="ltx-181.html"><tt>\\</tt></a>.
+<hr>
+See also <A href="ltx-27.html">Environments</A>,
+ <a href="ltx-29.html">Center</a>, <a href="ltx-229.html">Flushright</a><br>
+See also <a href="ltx-301.html"><tt>\raggedright</tt></a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 Jun 1995.
+</address>
+</body>
+</html>
+
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-229.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-229.html
new file mode 100644
index 00000000000..bd65c969c83
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-229.html
@@ -0,0 +1,27 @@
+<html>
+<head><title>Help On LaTeX flushright</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">flushright</font></h1>
+
+<p><pre>
+ \begin{flushright}
+ Text on line 1 \\
+ Text on line 2 \\
+ ...
+ ...
+ \end{flushright}
+</pre>
+ The flushright environment allows you to create a paragraph consisting
+ of lines that are flushed right to the right-hand margin. Each line
+ must be terminated with a <tt><a href="ltx-181.html">\\</a></tt>.
+<hr>
+See also <A href="ltx-27.html">Environments</A>,
+ <a href="ltx-29.html">Center</a>, <a href="ltx-228.html">Flushleft</a><br>
+See also <a href="ltx-300.html"><tt>\raggedleft</tt></a><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 Jun 1995.
+</address>
+</body></html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-230.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-230.html
new file mode 100644
index 00000000000..03784b5af2b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-230.html
@@ -0,0 +1,26 @@
+<html>
+<head><title>Help On LaTeX \fnsymbol</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\fnsymbol</font></h1>
+
+ <tt>\fnsymbol{counter}</tt>
+<p>
+ The <tt>\fnsymbol</tt> command causes the current value of <tt>counter</tt>
+ to be printed in
+ a specific sequence of nine symbols that can be used for numbering
+ footnotes. (The sequence is asterisk, dagger, double dagger, section
+ mark, paragraph mark, double vertical lines, double asterisks, double
+ daggers, double double daggers.)
+<p>
+ The value of <tt>counter</tt> must be less between 1 and 9.
+<p>
+ Can be used <strong>only</strong> in math mode.
+<hr>
+See also <A href="ltx-3.html">Counters</A><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 03 Nov 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-231.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-231.html
new file mode 100644
index 00000000000..a27bb00fc67
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-231.html
@@ -0,0 +1,31 @@
+<html>
+<head><title>Help On LaTeX \footnote</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\footnote</font></h1>
+ <tt>\footnote[num]{text}</tt>
+ The <tt>\footnote</tt> command places a numbered footnote at the bottom
+ of the current page containing the contents of the argument, <tt>text</tt>.
+ The optional argument, <tt>num</tt>, is used to change
+ the default footnote number. This command can only be used in outer
+ paragraph mode.
+<p>
+ If <tt>num</tt> is not specified, the footnote
+ <a href="ltx-3.html">counter</a> is incremented and its value is used.
+<p>
+ Note that <tt>num</tt> is specified as a positive integer even if
+ the footnote <a href="ltx-3.html">counter</a> has been set to use letters
+ or roman numerals.
+<p>
+This command is <a href="fragile.html">fragile.</a>
+<hr>
+See also: <A href="ltx-82.html">Footnotes</A>,
+ <a href="ltx-3.html">Counters</a><br>
+See also <a href="ltx-232.html"><tt>\footnotemark</tt></a> and
+ <a href="ltx-234.html"><tt>\footnotetext</tt></a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: RBS, 5 February 1997.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-232.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-232.html
new file mode 100644
index 00000000000..80680af1eb1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-232.html
@@ -0,0 +1,28 @@
+<html>
+<head><title>Help On LaTeX \footnotemark</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\footnotemark</font></h1>
+<tt>\footnotemark[num]</tt>
+<p>
+ The <tt>\footnotemark[num]</tt> command puts the footnote number in the text.
+ It is used in conjunction with <a href="ltx-234.html"><tt>\footnotetext</tt></a>
+ to produce footnotes where <a href="ltx-231.html"><tt>\footnote</tt></a>
+ cannot be used
+<p>
+ If <tt>num</tt> is not given the footnote <a href="ltx-3.html">counter</a>
+ is incremented and used.
+<p>
+This command is <a href="fragile.html">fragile.</a>
+<hr>
+See also <A href="ltx-82.html">Footnotes</A>,
+<a href="ltx-3.html">Counters</a><br>
+See also <tt><A href="ltx-231.html">\footnote</A></tt>
+ <tt><A href="ltx-234.html">\footnotetext</A></tt><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-233.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-233.html
new file mode 100644
index 00000000000..b2b769e4ab6
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-233.html
@@ -0,0 +1,16 @@
+<html>
+<head><title>Help On LaTeX \footnotesize</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\footnotesize</font></h1>
+ Third smallest of 10 typefaces available. This is the default size
+ for footnotes.
+<hr>
+See also <A href="ltx-176.html">Typefaces</A>,
+ <A href="ltx-178.html">Sizes</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 28 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-234.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-234.html
new file mode 100644
index 00000000000..8a5557b3904
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-234.html
@@ -0,0 +1,31 @@
+<html>
+<head><title>Help On LaTeX \footnotetext</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\footnotetext</font></h1>
+ <tt>\footnotetext[num]{text}</tt>
+<p>
+
+ The <tt>\footnotetext</tt> command is used in conjunction with the
+ <a href="ltx-232.html"><tt>\footnotemark</tt></a> command and
+ places the <tt>text</tt> in the argument at the bottom
+ of the page. This command can come anywhere after the
+ <a href="ltx-232.html"><tt>\footnotemark</tt></a>
+ command.
+<p>
+ The optional argument, number, is used to change the default footnote
+ number.
+ Otherwise, the footnote counter is not changed.
+<p>
+This command is <a href="fragile.html">fragile.</a>
+<hr>
+See also: <A href="ltx-82.html">Footnotes</A>,
+ <a href="ltx-3.html">Counters</a><br>
+See also <tt><A href="ltx-231.html">\footnote</A></tt>,
+ <tt><A href="ltx-232.html">\footnotemark</A></tt><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-235.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-235.html
new file mode 100644
index 00000000000..660f12331fb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-235.html
@@ -0,0 +1,21 @@
+<html>
+<head><title>Help On LaTeX \frac</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\frac</font></h1>
+ <tt>\frac{num}{den}</tt>
+<p>
+
+ The <tt>\frac</tt> command produces the fraction num divided by den,
+ placing the numerator over a horizontal line (solidus) and the
+ denominator below.
+
+<hr>
+See also: <A href="ltx-115.html">Math Formulas</A>,
+ <A href="ltx-119.html">Math Miscellany</A><br>
+Return to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 15 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-236.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-236.html
new file mode 100644
index 00000000000..e383c0fa223
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-236.html
@@ -0,0 +1,21 @@
+<html>
+<head><title>Help On LaTeX \frame</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\frame</font></h1>
+<pre>\frame{ ... }
+</pre>
+
+ The <tt>\frame</tt> command puts a rectangular frame around the object
+ specified in the argument. The reference point is the bottom left
+ corner of the frame. No extra space is put between the frame and the
+ object.
+<hr>
+See also <A href="ltx-43.html">Picture Environment</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 27 Sep 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-237.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-237.html
new file mode 100644
index 00000000000..4ccb4121dab
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-237.html
@@ -0,0 +1,37 @@
+<html>
+<head><title>Help On LaTeX \framebox</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\framebox</font></h1>
+<h2>Normal use</h2>
+ <tt>\framebox[width][position]{text}</tt>
+<p>
+ The <tt>\framebox</tt> command is exactly the same as the
+ <a href="ltx-262.html"><tt>\makebox</tt></a> command,
+ except that it puts a frame around the outside of the box that it
+ creates.
+<p>
+ The framebox command produces a rule of thickness <tt>\fboxrule,</tt> and
+ leaves a space <tt>\fboxsep</tt> between the rule and the contents of the box.
+<p>
+ The <tt>\framebox</tt> command is <a href="fragile.html">fragile</a>.
+
+<h2>In picture environment</h2>
+<tt>\framebox(width,height)[position]{...}</tt>
+<p>
+ The <tt>\framebox</tt> command is exactly the same as the
+ <a href="ltx-262.html"><tt>\makebox</tt></a> command,
+ except that it puts a frame around the outside of the box that it
+ creates.
+<hr>
+ See also <tt><a href="ltx-226.html">\fbox</a></tt>,
+ <tt><a href="ltx-262.html">\makebox</a></tt>,
+ <tt><a href="ltx-216.html">\dashbox</a></tt><br>
+ See also <A href="ltx-143.html">Spaces and Boxes</A>,
+ <A href="ltx-43.html">Picture Environment</A>.<br>
+ Return to <a href="ltx-2.html">LaTeX Table of Contents</a>.
+<hr>
+<address>
+Revised: Sheldon Green, 5 Dec 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-238.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-238.html
new file mode 100644
index 00000000000..d2b610d8a4d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-238.html
@@ -0,0 +1,18 @@
+<html>
+<head><title>Help On LaTeX \hfill</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\hfill</font></h1>
+<p>
+ The <tt>\hfill</tt> fill command produces a
+ <a href="ltx-86.html#rubber">rubber length</a> which can stretch or
+ shrink horizontally. It will be filled with spaces. It is equivalent
+ to <tt><a href="ltx-241.html">\hspace</a>\fill</tt>.
+<hr>
+See <a href="ltx-143.html">Spaces and Boxes</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 23 Oct 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-239.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-239.html
new file mode 100644
index 00000000000..0aa58a30d9b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-239.html
@@ -0,0 +1,27 @@
+<html>
+<head><title>Help On LaTeX \hline</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\hline</font></h1>
+ The <tt>\hline</tt> command will draw a horizontal line the width of the table.
+ It's most commonly used to draw a line at the top, bottom, and between
+ the rows of the table.
+<p>
+ Two successive <tt>\hline</tt> commands leave a space between the
+ lines; this space does <strong>not</strong> contain the vertical lines
+ specified by <tt>|</tt> characters in the <tt>col</tt> argument of the
+ <a href="ltx-68.html"><tt>\begin{tabular}{col}</tt></a> command.
+<p>
+ To place a line at the bottom of a table, the <tt>\hline</tt> command
+ must follow a <a href="ltx-181.html"><tt>\\</tt></a> (line break) command
+ after the last table entry. This final line break command should be
+ present <strong>only</strong> in this circumstance.
+<hr>
+See also <a href="ltx-202.html">array</a>,
+<A href="ltx-68.html">tabular</A>.<br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 22 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-240.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-240.html
new file mode 100644
index 00000000000..9211fcf1f59
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-240.html
@@ -0,0 +1,16 @@
+<html>
+<head><title>Help On LaTeX \hrulefill</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\hrulefill</font></h1>
+<p>
+ The <tt>\hrulefill</tt> fill command produces a
+ <a href="ltx-86.html#rubber">rubber length</a> which can stretch
+ or shrink horizontally. It will be filled with a horizontal rule.
+<hr>
+See <a href="ltx-143.html">Spaces and Boxes</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 23 Oct 1995.
+</address>
+</body></html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-241.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-241.html
new file mode 100644
index 00000000000..bbf4f38e56c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-241.html
@@ -0,0 +1,27 @@
+<html>
+<head><title>Help On LaTeX \hspace</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\hspace</font></h1>
+<p>
+ <tt>\hspace[*]{len}</tt>
+<p>
+
+ The <tt>\hspace</tt> command adds horizontal space. The length of the space
+ <tt>len</tt>
+ can be expressed in any terms that LaTeX understands, i.e., points,
+ inches, etc. You can add negative as well as positive space with an
+ <tt>\hspace</tt> command. Adding negative space is like backspacing.
+<p>
+
+ LaTeX removes horizontal space that comes at the end of a line. If
+ you don't want LaTeX to remove this space, include the optional *
+ argument. Then the space is never removed.
+<hr>
+See <a href="ltx-143.html">Spaces and Boxes</a>,
+ <a href="ltx-86.html">Lengths</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 10 May 1995.
+</address>
+</body></html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-242.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-242.html
new file mode 100644
index 00000000000..8f78e1596da
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-242.html
@@ -0,0 +1,15 @@
+<html>
+<head><title>Help On LaTeX \huge</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\huge</font></h1>
+ Second largest of 10 typefaces available.
+<hr>
+See also <A href="ltx-176.html">Typefaces</A>,
+ <A href="ltx-178.html">Sizes</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 28 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-243.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-243.html
new file mode 100644
index 00000000000..2b38b714c47
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-243.html
@@ -0,0 +1,14 @@
+<html>
+<head><title>Help On LaTeX \Huge (capital "h")</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\Huge (capital "h")</font></h1>
+ Largest of 10 typefaces available. All fonts may not be available in
+ this size.
+<hr>
+See also <A href="ltx-176.html">Typefaces</A>,
+ <A href="ltx-178.html">Sizes</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 28 Jun 1995.
+</address></body></html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-244.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-244.html
new file mode 100644
index 00000000000..37e02cc1172
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-244.html
@@ -0,0 +1,30 @@
+<html>
+<head><title>Help On LaTeX \hyphenation</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\hyphenation</font></h1>
+<p>
+ <tt>\hyphenation{words}</tt>
+<p>
+ The <tt>\hyphenation</tt> command declares allowed hyphenation points, where
+ words is a list of words, separated by spaces, in which each
+ hyphenation point is indicated by a - character. For example
+<pre>
+ <tt>\hyphenation{fortran,er-go-no-mic}</tt></pre>
+indicates that "fortran" cannot be hyphenated and indicates allowed
+hyphenation points for "ergonomic".
+<p>
+This argument to this command should contain words composed only of normal
+letters. To suggest hyphenation points for strings containing nonletters
+or <a href="ltx-401.html">accented letters</a>, use
+the <a href="ltx-182.html"><tt>\-</tt></a> command in the input text.
+<p>
+This command is normally given in the <a href="input.html#structure">preamble</a>.
+<hr>
+See also <A href="ltx-99.html">Line and Page Breaking</A><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-245.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-245.html
new file mode 100644
index 00000000000..ee636285985
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-245.html
@@ -0,0 +1,31 @@
+<html>
+<head><title>Help On LaTeX \include</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\include</font></h1>
+ <tt>\include{file}</tt>
+<p>
+ The <tt>\include</tt> command is used in conjunction with the
+ <tt><a href="ltx-246.html">\includeonly</a></tt>
+ command for selective inclusion of files. The <tt>file</tt> argument is the
+ first name of a file, denoting <tt>file.tex</tt>. If the file is also
+ in the file list of the <tt>\includeonly</tt> command or if there is no
+ <tt>\includeonly</tt> command, the <tt>\include</tt> command is equivalent to
+<Pre>
+ <tt><a href="ltx-213.html">\clearpage</a> \input{file} <a href="ltx-213.html">\clearpage</a></tt>
+</Pre>
+ except that if the file <tt>file.tex</tt> does not exist, then a warning
+ message rather than an error is produced. If the file is not in the
+ file list, the <tt>\include</tt> command is equivalent to <tt>\clearpage</tt>.
+<p>
+ The <tt>\include</tt> command may not appear in the preamble or in a file read
+ by another <tt>\include</tt> command.
+<hr>
+See also <A href="ltx-165.html">Splitting the Input</A><br>
+See also <a href="ltx-248.html"><tt>\input</tt></a><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 30 Oct 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-246.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-246.html
new file mode 100644
index 00000000000..08951cd0f9b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-246.html
@@ -0,0 +1,18 @@
+<html>
+<head><title>Help On LaTeX \includeonly</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\includeonly</font></h1>
+ <tt>\includeonly{file_list}</tt>
+<p>
+ The <tt>\includeonly</tt> command controls which files will be read in by an
+ <a href="ltx-245.html"><tt>\include</tt></a> command.
+ It can only appear in the preamble.
+<hr>
+See also: <A href="ltx-165.html">Splitting the Input</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 28 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-247.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-247.html
new file mode 100644
index 00000000000..dc52f57e073
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-247.html
@@ -0,0 +1,19 @@
+<html>
+<head><title>Help On LaTeX \indent</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\indent</font></h1>
+ This produces a horizontal space whose width equals the width of the
+ paragraph indentation
+ (<a href="ltx-86.html#lencmd"><tt>\parindent</tt></a>).
+ It is used to add paragraph indentation where
+ it would otherwise be suppressed.
+<hr>
+See also <a href="ltx-280.html"><tt>\noindent</tt></a><br>
+See also <A href="ltx-111.html">Making Paragraphs</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-248.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-248.html
new file mode 100644
index 00000000000..0de0c73f47a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-248.html
@@ -0,0 +1,21 @@
+<html>
+<head><title>Help On LaTeX \input</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\input</font></h1>
+ <tt>\input{file}</tt>
+<p>
+ The <tt>\input</tt> command causes the indicated <tt>file</tt>
+ to be read and processed,
+ exactly as if its contents had been inserted in the current file at
+ that point. The file name may be a complete file name with extension
+ or just a first name, in which case the file <tt>file.tex</tt> is used.
+<hr>
+See also <A href="ltx-165.html">Splitting the Input</A><br>
+See also <A href="ltx-245.html"><tt>\include</tt></A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 30 Oct 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-249.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-249.html
new file mode 100644
index 00000000000..18c1d92a31e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-249.html
@@ -0,0 +1,18 @@
+<html>
+<head><title>Help On LaTeX \it</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\it</font></h1>
+<p>
+ Italics typeface.
+<p>
+This is version 2.09; see also
+ <a href="fonts2e.html">LaTeX2e font selection</a><br>
+<hr>
+See also <A href="ltx-176.html">Typefaces</A>,
+ <A href="ltx-177.html">Styles</A><br>
+See also <a href="boldmath.html"><tt>\boldmath</tt></a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 16 May 1995.
+</address></body></html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-250.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-250.html
new file mode 100644
index 00000000000..c8e7d40c39b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-250.html
@@ -0,0 +1,41 @@
+<html>
+<head><title>Help On LaTeX itemize</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">itemize</font></h1>
+<pre>
+ <tt>\begin{itemize}
+ \item First item
+ \item Second item
+ ....
+ \end{itemize}</tt>
+</pre>
+
+ The itemize environment produces a list with "tick-marks" (typically
+ "bullets" for first level). Itemizations can be
+ nested within one another, up to four levels deep.
+<p>
+ Each item of an itemized list begins with an
+ <a href="item.html"><tt>\item</tt></a> command. There
+ must be at least one <tt>\item</tt> command within the environment.
+<p>
+The default optional
+<tt>label</tt> argument of the <a href="item.html"><tt>\item</tt></a> command
+is given by the <tt>\labelitemi, \labelitemii, \labelitemiii, \labelitemiv</tt>
+commands, respectively, depending on the nesting level.
+These may be redefined with the <a href="ltx-18.html"><tt>\renewcommand</tt></a>
+command. For example, to make the first level marks nice five-point stars,
+<pre>
+ <tt>\renewcommand{\labelitemi}{$<a href="ltx-404.html">\star</a>$}</tt>
+</pre>
+<hr>
+See also <A href="ltx-27.html">Environments</A>,
+ <a href="lists.html">Lists</a>,
+ <a href="ltx-3.html">Counters</a><br>
+See also <a href="item.html"><tt>\item</tt></a><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 18 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-251.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-251.html
new file mode 100644
index 00000000000..8ad9d646231
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-251.html
@@ -0,0 +1,22 @@
+<html>
+<head><title>Help On LaTeX \kill</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\kill</font></h1>
+ The <tt>\kill</tt> command allows you to set tab stops without producing text.
+ It works just like the
+ <a href="ltx-181.html"><tt>\\</tt></a> except
+ that it throws away the current line
+ instead of producing output for it. The effect of any
+ <a href="ltx-187.html"><tt>\=</tt></a>,
+ <a href="ltx-190.html"><tt>\+</tt></a> or
+ <a href="ltx-182.html"><tt>\-</tt></a>
+ commands in that line remain in effect.
+<hr>
+See also <A href="ltx-58.html">Tabbing</A> Environment<br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-252.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-252.html
new file mode 100644
index 00000000000..3e70e99f308
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-252.html
@@ -0,0 +1,48 @@
+<html>
+<head><title>Help On LaTeX \label</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\label</font></h1>
+<p>
+ <tt>\label{key}</tt>
+<p>
+
+ A <tt>\label</tt> command appearing in ordinary text assigns to the
+ <tt>key</tt> the
+ number of the current sectional unit; one appearing inside a numbered
+ environment assigns that number to the <tt>key</tt>.
+<p>
+ A <tt>key</tt> can consist of any sequence of letters, digits, or punctuation
+ characters. Upper- and lowercase letters are different.
+<p>
+ The number assigned to the key can be accessed by use of the
+ <a href="ltx-303.html"><tt>\ref</tt></a> command. For example,
+<pre>
+ \begin{equation} ....
+ ....
+ \label{eq:no1}
+ \end{equation}
+ ...
+ One can see from Eq.~(\ref{eq:no1}) that ...
+</pre>
+<p>
+In a <a href="ltx-67.html">table</a> or <a href="ltx-225.html">figure</a>
+environment, the <tt>\label</tt> command should follow the
+<a href="caption.html"><tt>\caption</tt></a> command (or be part of its
+argument) since it is the <tt>\caption</tt> command which generates the
+number.
+<p>
+The <tt>\label</tt> command is <a href="fragile.html">fragile</a> but it
+can be used in the argument of a
+<a href="ltx-141.html">sectioning command</a> or
+<a href="caption.html"><tt>\caption</tt></a> command.
+<hr>
+See also <A href="ltx-13.html">Cross References</A><br>
+See also <a href="ltx-303.html"><tt>\ref</tt></a>,
+ <a href="ltx-291.html"><tt>\pageref</tt></a> <br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-253.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-253.html
new file mode 100644
index 00000000000..9413e7a7f59
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-253.html
@@ -0,0 +1,15 @@
+<html>
+<head><title>Help On LaTeX \large</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\large</font></h1>
+ Slightly larger than default typeface size.
+<hr>
+See also <A href="ltx-176.html">Typefaces</A>,
+ <A href="ltx-178.html">Sizes</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-254.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-254.html
new file mode 100644
index 00000000000..6a981aa4a57
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-254.html
@@ -0,0 +1,16 @@
+<html>
+<head><title>Help On LaTeX \Large (capital "l")</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\Large (capital "l")</font></h1>
+ Fourth largest of typefaces available. Is generally the default for
+ titles.
+<hr>
+See also <A href="ltx-176.html">Typefaces</A>,
+ <A href="ltx-178.html">Sizes</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-255.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-255.html
new file mode 100644
index 00000000000..d1d96f9c62a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-255.html
@@ -0,0 +1,14 @@
+<html>
+<head><title>Help On LaTeX \LARGE (all caps)</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\LARGE (all caps)</font></h1>
+ Third largest of typefaces available.
+<hr>
+See also <A href="ltx-176.html">Typefaces</A>,
+ <A href="ltx-178.html">Sizes</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Jun 1995.
+</address>
+</body></html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-256.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-256.html
new file mode 100644
index 00000000000..5ba330fb9fc
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-256.html
@@ -0,0 +1,25 @@
+<html>
+<head><title>Help On LaTeX \ldots</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\ldots</font></h1>
+ The <tt>\ldots</tt> command produces an ellipsis.<br>
+ Unlike <tt>\cdots, \ddots, \vdots,</tt>
+ this command works in any mode, not just math mode.
+<p>
+See also:
+<ul>
+ <li><A href="ltx-207.html">\cdots</A>
+ <li><A href="ltx-218.html">\ddots</A>
+ <li><A href="ltx-340.html">\vdots</A>
+<p>
+ <li><A href="ltx-115.html">Math Formulas</A>,
+ <li><A href="ltx-119.html">Math Miscellany</A>.
+</ul>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 25 April 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-257.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-257.html
new file mode 100644
index 00000000000..616a63de4f0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-257.html
@@ -0,0 +1,29 @@
+<html>
+<head><title>Help On LaTeX \line</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\line</font></h1>
+<p>
+ <tt>\line(x-slope,y-slope){length}</tt>
+<p>
+ The <tt>\line</tt> command draws a line of the specified length and slope.
+<p>
+The slope is determined by <tt>(x-slope,y-slope)</tt> which are signed
+integers of magnitude less than or equal to 6 and which have no common
+divisor except for plus or minus one; For example (1,0) is a horizontal
+line; (1,1) gives a slope of
+45 degress; (0,1) is a vertical line; (-1,1) is 135 degrees.
+<p>
+The <strong>horizontal</strong> extent of the line is given by the
+<tt>length</tt> parameter, except in the case of a vertical line in
+which case <tt>length</tt> specifies the vertical height.
+<hr>
+See also <A href="ltx-27.html">Environments</A>,
+ <A href="ltx-43.html">picture</A><br>
+See also <a href="ltx-341.html"><tt>\vector</tt></a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 12 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-258.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-258.html
new file mode 100644
index 00000000000..ef7125b06bf
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-258.html
@@ -0,0 +1,25 @@
+<html>
+<head><title>Help On LaTeX \linebreak</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\linebreak</font></h1>
+<p>
+ <tt>\linebreak[number]</tt>
+<p>
+ The <tt>\linebreak</tt> command tells LaTeX to break the current line at the
+ point of the command. With the optional argument, number, you can
+ convert the <tt>\linebreak</tt> command from a demand to a request. The number
+ must be a number from 0 to 4. The higher the number, the more
+ insistent the request is.
+<p>
+ The <tt>\linebreak</tt> command causes LaTeX to stretch the line so it extends
+ to the right margin.
+<p>
+<hr>
+See also <A href="ltx-99.html">Line and Page Breaking</A><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-259.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-259.html
new file mode 100644
index 00000000000..9bce5892257
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-259.html
@@ -0,0 +1,20 @@
+<html>
+<head><title>Help On LaTeX \linethickness</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\linethickness</font></h1>
+ <tt>\linethickness{dimension}</tt>
+<p>
+ Declares the thickness of horizontal and vertical lines in a picture
+ environment to be dimension, which must be a positive length. It does
+ not affect the thickness of slanted lines and circles, or the quarter
+ circles drawn by <tt>\oval</tt> to form the corners of an oval.
+<hr>
+See also: <A href="ltx-86.html">Lengths</A>,
+ <A href="ltx-43.html">Picture Environment</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-260.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-260.html
new file mode 100644
index 00000000000..f89f998f05c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-260.html
@@ -0,0 +1,95 @@
+<html>
+<head><title>Help On LaTeX list enviroment</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">list</font></h1>
+<p>
+<p><pre>
+ <tt>\begin{list}{label}{spacing}
+ \item First item
+ \item Second item
+ ....
+ \end{list}</tt>
+</pre>
+ The <tt>label</tt> argument specifies the <em>default</em> label for items
+ in the list; it may be overriden with the optional argument of the
+ <a href="item.html"><tt>\item</tt></a> command. It is
+ a piece of text that is inserted in a box to form the
+ label. This argument can and usually does contain other LaTeX
+ commands.
+<p>
+ The <tt>spacing</tt> argument contains commands to change the spacing
+ parameters for the list. This argument will most often be null, i.e.
+ <tt>{}</tt>. This will select default spacings, which depends on the
+ <a href="ltx-22.html">document style</a> and options, and
+ which should suffice for
+ most cases. However, the commands which can be put here are
+<ul>
+<li><tt>\topsep</tt> amount of extra vertical space at top of list
+<li><tt>\partopsep</tt> extra length at top if environment is prececed
+ by a blank line (it should be a <a href="ltx-86.html#rubber">rubber length</a>)
+<li><tt>\itemsep</tt> amount of extra vertical space between items
+<li><tt>\parsep</tt> amount of vertical space between paragraphs <em>within</em>
+ an item
+<li><tt>\leftmargin</tt> horizontal distance between the left margins of
+ the environment and the list; must be nonnegative
+<li><tt>\rightmargin</tt> horizontal distance betwen the right margins of
+ the enviroment and the list; must be nonnegative
+<li><tt>\listparindent</tt> amount of extra space for paragraph indent <em>after
+ the first</em> in an item; can be negative
+<li><tt>\itemindent</tt> indentation of first line of an item; can be negative
+<li><tt>\labelsep</tt> separation between end of the box containing the label
+ and the text of the first line of an item
+<li><tt>\labelwidth</tt> normal width of the box containing the label; if the
+ actual label is bigger, the natural width is used, extending into the
+ space for the first line of the item's text
+<li><tt>\makelabel{label}</tt> generates the label printed by the
+ <tt>\item</tt> command
+<p>
+<li><a href="ltx-338.html"><tt>\usecounter{ctr}</tt></a>
+ enables the counter <tt>ctr</tt> to be used
+ for numbering items; it is initialized to zero and stepped when
+ executing an <tt>\item</tt> command that has no optional <tt>label</tt>
+ argument.
+</ul>
+
+<h2><a name="example">An Example</a></h2>
+An simple example of things that can be done with the List Enviroment
+will illustrate typical usage of the arguments. The following will
+make a list numbered by "Item-#", where the # is an upper case
+Roman numeral, and will indent the right margin the same
+as the left margin (it is not normally indented in most styles).
+<pre>
+ <tt>% define "Lcount" as a counter
+ <a href="ltx-271.html">\newcounter</a>{Lcount}
+ % set the "default" label to print counter as a Roman numeral
+ \begin{list}{Item-<a href="ltx-305.html">\Roman</a>{Lcount}}
+ % inform the list command to use this counter
+ {<a href="ltx-338.html">\usecounter</a>{Lcount}
+ % set rightmargin equal to leftmargin
+ <a href="ltx-88.html">\setlength</a>{\rightmargin}{\leftmargin}}
+ % we can now begin the "items"
+ <a href="item.html">\item</a> This is the first item
+ \item And this is the second item
+ \end{list}</tt>
+</pre>
+Note that this would produce something like:
+<pre>
+ Item-I This is the first item
+ Item-II And this is the second item
+</pre>
+<hr>
+See <a href="lists.html">Lists</a>,
+ <a href="ltx-27.html">Environments</a>,
+ <a href="ltx-3.html">Counters</a>,
+ <a href="ltx-86.html">Lenghts</a><br>
+See also <a href="item.html"><tt>\item</tt></a><br>
+Back to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 23 Oct 1995.
+</address>
+</body>
+</html>
+
+
+
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-261.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-261.html
new file mode 100644
index 00000000000..5800bce00e1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-261.html
@@ -0,0 +1,17 @@
+<html>
+<head><title>Help On LaTeX \location</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\location</font></h1>
+ <tt>\location{address}</tt>
+<p>
+ This modifies your organization's standard address. This only appears
+ if the firstpage pagestyle is selected.
+<hr>
+See also: <A href="ltx-91.html">Letters</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 23 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-262.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-262.html
new file mode 100644
index 00000000000..074fa60fdc8
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-262.html
@@ -0,0 +1,62 @@
+<html>
+<head><title>Help On LaTeX \makebox</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\makebox</font></h1>
+<h2>Normal use</h2>
+ <tt>\makebox[width][position]{text}</tt>
+<p>
+ The <tt>\makebox</tt> command creates a box to contain the specified
+ <tt>text</tt>. The
+ width of the box may be specified by the optional <tt>width</tt> argument.
+ The <tt>text</tt> in the box is set in LR mode.
+<p>
+ If the optional <tt>width</tt> argument is used, the optional
+ <tt>position</tt> argument may also be used to specify the position of
+ <tt>text</tt> within the box as follows:
+<ul>
+<li><tt>l</tt> - flushleft
+<li><tt>r</tt> - flushright
+<li><tt>s</tt> - interword space adjusted so <tt>text</tt> fills box exactly
+</ul>
+The default horizontal and vertical positioning (if the second optional
+argument is omitted) is to center <tt>text</tt>
+in the box.
+<p>
+Note that <tt>text</tt> may overflow the box, in which case it is
+typeset on top of the adjacent text. While this is generally undesirable,
+it can also be used to create special effects.
+<p>
+The <tt>\makebox</tt> command is <a href="fragile.html">fragile</a>.
+<p>
+See <tt><a href="ltx-265.html">\mbox</a></tt>,
+ <tt><a href="ltx-237.html">\framebox</a></tt><br>
+See also: <A href="ltx-143.html">Spaces and Boxes</A>.
+
+<h2>In picture environment</h2>
+ <tt>\makebox(width,height)[position]{ ... }</tt>
+<p>
+ The <tt>\makebox</tt> command for the picture environment is similar to the
+ normal <tt>\makebox</tt> command except that you must specify a width and
+ height (note that these are in parentheses) in multiples of
+ <a href="unitlength.html"><tt>\unitlength</tt></a>.
+<p>
+ The optional argument, <tt>position</tt>, specifies the quadrant that your
+ text appears in. You may select up to two of the following:
+<ul>
+<li><TT>t</TT> Moves the item to the top of the rectangle
+<li><TT>b</TT> Moves the item to the bottom
+<li><TT>l</TT> Moves the item to the left
+<li><TT>r</TT> Moves the item to the right
+</ul>
+The default horizontal and vertical positioning is to center <tt>text</tt>
+in the box.
+<hr>
+See also <a href="ltx-143.html">Spaces and Boxes</a>,
+ <A href="ltx-43.html">Picture Environment</A><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 Dec 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-263.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-263.html
new file mode 100644
index 00000000000..b1760e41993
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-263.html
@@ -0,0 +1,33 @@
+<html><head><title>Help On LaTeX \maketitle</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\maketitle</font></h1>
+ <tt>\maketitle</tt>
+<p>
+ The <tt>\maketitle</tt> command generates a title on a separate title page -
+ except in the article style, where the title normally goes at the top
+ of the first page. Information used to produce the title is obtained
+ from the following declarations, which should precede the
+ <tt>\maketitle</tt> command.
+<ul>
+<li><A href="ltx-203.html"><tt>\author</tt></A>
+<li><A href="ltx-217.html"><tt>\date</tt></A>
+<li><A href="ltx-324.html"><tt>\thanks</tt></A>
+<li><A href="ltx-329.html"><tt>\title</tt></A>
+</ul>
+<p>
+The <a href="ltx-78.html">Titlepage Environment</a>
+allows you to design your own title page, rather than using that
+created by the <tt>\maketitle</tt> command whose format is determined
+by the <a href="ltx-22.html">document style</a>.
+.
+<hr>
+See also: <A href="ltx-131.html">Page Styles</A>,
+ <a href="ltx-78.html">Titlepage Environment</a><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 16 Nov 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-264.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-264.html
new file mode 100644
index 00000000000..8395d8863f1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-264.html
@@ -0,0 +1,33 @@
+<html><head>
+<title>Help On LaTeX \markboth \markright</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\markboth \markright</font></h1>
+<p>
+ <tt>\markboth{left head}{right head}</tt>
+<p>
+ <tt> \markright{right head}</tt>
+<p>
+
+ The <tt>\markboth</tt> and <tt>\markright</tt>
+ commands are used in conjunction with the
+ page style myheadings for setting either both or just the right
+ heading. In addition to their use with the myheadings page style, you
+ can use them to override the normal headings in the headings style,
+ since LaTeX uses these same commands to generate those heads. You
+ should note that a left-hand heading is generated by the last
+ <tt>\markboth</tt> command before the end of the page, while a right-hand
+ heading is generated by the first <tt>\markboth</tt> or <tt>\markright</tt>
+ that comes
+ on the page if there is one, otherwise by the last one before the
+ page.
+<hr>
+See also: <A href="ltx-131.html">Page Styles</A>,
+<A href="ltx-138.html"><tt>\pagestyle</tt></A>.<br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 17 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-265.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-265.html
new file mode 100644
index 00000000000..d4d1b8a3a8d
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-265.html
@@ -0,0 +1,35 @@
+<html>
+<head><title>Help On LaTeX \mbox</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\mbox</font></h1>
+<p>
+ <tt>\mbox{text}</tt>
+<p>
+
+ The <tt>\mbox</tt> command creates a box just wide enough to hold the
+ <tt>text</tt> in its argument. The <tt>text</tt> in the box is in LR
+ <a href="ltx-130.html">mode</a> which prevents it from being broken across
+ lines.
+<p>
+ The <a href="ltx-262.html"><tt>\makebox</tt></a> command is similar
+ except that it allows you to specify a width which is not necessarily
+ the natural width of the <tt>text</tt> and also to specify the placement
+ within the box.
+<p>
+An <tt>\mbox</tt> within <a href="ltx-130.html">math mode</a> does
+<strong>not</strong> use the current <a href="mathfonts.html">math font</a>;
+rather it uses the <a href="ltx-176.html">typeface</a> of the surrounding
+running text.
+<p>
+The <tt>\mbox</tt> command is <a href="fragile.html">robust</a>.
+<hr>
+See <a href="ltx-226.html"><tt>\fbox</tt></a>,
+ <a href="ltx-262.html"><tt>\makebox</tt></a><br>
+See also <A href="ltx-143.html">Spaces and Boxes</A><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 8 Aug 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-266.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-266.html
new file mode 100644
index 00000000000..d6c56fb7ec8
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-266.html
@@ -0,0 +1,17 @@
+<html>
+<head><title>Help On LaTeX \medskip</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\medskip</font></h1>
+<p>
+ The <tt>\medskip</tt> command is equivalent to
+ <tt><a href="ltx-347.html">\vspace</a>{\medskipamount}</tt> where
+ <tt>\medskipamount</tt> is determined by the document style.
+<hr>
+See <a href="ltx-143.html">Spaces and Boxes</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 10 May 1995.
+</address>
+</body></html>
+
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-267.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-267.html
new file mode 100644
index 00000000000..123f724b200
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-267.html
@@ -0,0 +1,52 @@
+<html>
+<head><title>Help On LaTeX minipage</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">minipage</font></h1>
+<pre>
+ \begin{minipage}[position]{width}
+ text
+ \end{minipage}
+</pre>
+ The minipage environment is similar to a
+ <a href="ltx-294.html"><tt>\parbox</tt></a> command. It takes
+ the same optional position argument and mandatory width argument. You
+ may use other paragraph-making environments such as the
+ <a href="lists.html">list-making</a> and
+ <a href="ltx-68.html">tabular</a> environments inside a minipage. You can
+ also use the minipage environment or
+ <a href="ltx-294.html"><tt>\parbox</tt></a> command to put one or
+ more paragraphs
+ inside of a <a href="ltx-43.html">picture environment</a> or as a
+ <a href="ltx-67.html">table item</a>, for example.
+<p>
+ There is no paragraph indentation in the minipage environment. That is,
+ LaTeX sets <a href="ltx-86.html#lencmd"><tt>\parindent</tt></a> to zero;
+ however, you may override this with a
+ <a href="ltx-88.html"><tt>\setlength</tt></a> command.
+<p>
+ Footnotes in a minipage environment are handled in a way that is
+ particularly useful for putting footnotes in figures or tables. A
+ <a href="ltx-231.html"><tt>\footnote</tt></a> command puts the
+ footnote at the bottom of
+ the minipage instead of at the bottom of the page, and it uses the
+ <tt>mpfootnote</tt> <a href="ltx-3.html">counter</a> instead of the ordinary
+ footnote counter. If you want the footnote in a minipage environment
+ to be placed at the bottom of the actual page, in the usual fashion,
+ use the <a href="ltx-232.html"><tt>\footnotemark</tt></a> and
+ <a href="ltx-234.html"><tt>\footnotetext</tt></a> commands.
+<p>
+ <strong>Note</strong>: if you put one minipage inside another
+ and if you are using
+ footnotes, they may wind up at the bottom of the wrong minipage.
+
+<hr>
+See also <A href="ltx-27.html">Environments</A>,
+ <a href="ltx-143.html">Spaces and Boxes</a><br>
+See also <a href="ltx-294.html"><tt>\parbox</tt></a><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 22Nov 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-268.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-268.html
new file mode 100644
index 00000000000..1076a69b3aa
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-268.html
@@ -0,0 +1,42 @@
+<html>
+<head><title>Help On LaTeX \multicolumn</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\multicolumn</font></h1>
+<p>
+ <tt>\multicolumn{cols}{pos}{text}</tt>
+<p>
+ Used only in <a href="ltx-202.html">array</a> or
+ <a href="ltx-68.html">tabular</a> environments.
+<p>
+ The <tt>\multicolumn</tt> is command is
+ used to make an entry that spans several columns.
+<p>
+ It is useful for making table headings which span several columns, or
+ for changing the positioning of the heading for a single column (the
+ <tt>pos</tt> argument in <tt>\multicolumn</tt> overriding that of
+ the <tt>\tabular</tt> value, for example).
+<p>
+ The first mandatory argument, <tt>cols</tt>, specifies the number of columns to
+ span. The second mandatory argument, <tt>pos</tt>, specifies the formatting of
+ the entry;
+<ul>
+<li>c for centered
+<li>l for flushleft
+<li>r for flushright
+</ul>
+ The third mandatory argument, <tt>text</tt>,
+ specifies what text is to make up the entry.
+<p>
+ <tt>\multicolumn</tt> must either begin a row or be placed immediately
+ after an <tt>&amp;</tt>.
+
+<hr>See also <A href="ltx-27.html">Environments</A>,
+ <a href="ltx-202.html">array</a>,
+ <A href="ltx-68.html">tabular</A><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 2 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-269.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-269.html
new file mode 100644
index 00000000000..cb6e02dcb4c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-269.html
@@ -0,0 +1,19 @@
+<html>
+<head><title>Help On LaTeX \multiput</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\multiput</font></h1>
+<p>
+ <tt>\multiput(x coord,y coord)(delta x,delta y){number of copies}{object}</tt>
+<p>
+ The <tt>\multiput</tt> command can be used when you are putting the same object
+ in a regular pattern across a picture.
+<hr>
+See also <A href="ltx-27.html">Environments</A>,
+ <A href="ltx-43.html">picture</A><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 12 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-27.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-27.html
new file mode 100644
index 00000000000..9746d13ae2a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-27.html
@@ -0,0 +1,65 @@
+<html>
+<head><title>Help On LaTeX Environments</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Environments</font></h1>
+<p>
+ LaTeX provides a number of different paragraph-making environments.
+ Each environment begins and ends in the same manner.
+<p>
+<pre>
+ \begin{environment-name}
+ ....
+ ....
+ \end{environment-name}
+</pre>
+Blank lines before the <tt>\begin{}</tt> or after the <tt>\end{}</tt> cause a
+paragraph break before or after the environment.
+Blank lines after the <tt>\begin{}</tt> or before the <tt>\end{}</tt> are
+ignored.
+<p>
+All <a href="declarations.html">declarations</a> have an environment of the
+same name. However, the reverse does not always work. For example,
+<tt>{\abstract Abstract text ... .}</tt> may not give correct paragraph
+breaks.
+
+<H2>Subtopics</H2>
+<ul>
+<li><a href="ltx-420.html">abstract</a>
+<li><A href="ltx-202.html">array</A>
+<li><A href="ltx-29.html">center</A>
+<li><A href="ltx-31.html">description</A>
+<li><a href="ltx-421.html">displaymath</a>
+<li><A href="ltx-222.html">enumerate</A>
+<li><A href="ltx-223.html">eqnarray</A>
+<li><A href="ltx-224.html">equation</A>
+<li><A href="ltx-225.html">figure</A>
+<li><A href="ltx-228.html">flushleft</A>
+<li><A href="ltx-229.html">flushright</A>
+<li><A href="ltx-250.html">itemize</A>
+<li><A href="ltx-260.html">list</A>
+<li><a href="ltx-115.html#math">math</a>
+<li><A href="ltx-267.html">minipage</A>
+<li><A href="ltx-43.html">picture</A>
+<li><A href="ltx-297.html">quotation</A>
+<li><A href="ltx-298.html">quote</A>
+<li><A href="ltx-58.html">tabbing</A>
+<li><A href="ltx-67.html">table</A>
+<li><A href="ltx-68.html">tabular</A>
+<li><A href="ltx-73.html">thebibliography</A>
+<li><A href="ltx-77.html">theorem</A>
+<li><A href="ltx-78.html">titlepage</A>
+<li><a href="trivlist.html">trivlist</a>
+<li><A href="ltx-79.html">verbatim</A>
+<li><A href="ltx-81.html">verse</A>
+</ul>
+<hr>
+See also <a href="declarations.html">Declarations</a>,
+ <a href="ltx-3.html">Counters</a><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 16 Nov 1995.
+</address>
+</body>
+</html>
+
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-271.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-271.html
new file mode 100644
index 00000000000..856bad72da7
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-271.html
@@ -0,0 +1,22 @@
+<html>
+<head><title>Help On LaTeX \newcounter</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\newcounter</font></h1>
+<p>
+ <tt>\newcounter{newname}[oldcounter]</tt>
+<p>
+ The <tt>\newcounter</tt> command defines a new counter named
+<tt>newname</tt>. The optional
+ argument <tt>oldcounter</tt> must be the name of an already defined
+ counter; if present the new counter, <tt>newname</tt>, will be
+ reset whenever <tt>oldcounter</tt>, the counter named in the optional
+ argument, is incremented.
+<hr>
+See also <A href="ltx-3.html">Counters</A><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-275.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-275.html
new file mode 100644
index 00000000000..4765fb318c0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-275.html
@@ -0,0 +1,17 @@
+<html>
+<head><title>Help On LaTeX \newline</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\newline</font></h1>
+<p>
+ The <tt>\newline</tt> command breaks the line right where it is. The
+ <tt>\newline</tt>
+ command can be used only in paragraph mode.
+<hr>
+See also <A href="ltx-99.html">Line and Page Breaking</A><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-276.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-276.html
new file mode 100644
index 00000000000..5d8a4bd2310
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-276.html
@@ -0,0 +1,15 @@
+<html>
+<head><title>Help On LaTeX \newpage</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\newpage</font></h1>
+<p>
+ The <tt>\newpage</tt> command ends the current page.
+<hr>
+See also <A href="ltx-99.html">Line and Page Breaking</A><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-277.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-277.html
new file mode 100644
index 00000000000..bb7aa8fbaf0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-277.html
@@ -0,0 +1,25 @@
+<html>
+<head><title>Help On LaTeX \newsavebox</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\newsavebox</font></h1>
+<p>
+ <tt>\newsavebox{cmd}</tt>
+<p>
+
+ Declares <tt>cmd</tt>, which must be a command name that is not already
+ defined, to be a bin for saving boxes.
+<p>
+ The <tt>\newsavebox</tt> command is a global
+ <a href="declarations.html">declaration</a>.
+<p>
+ The <tt>\newsavebox</tt> command is <a href="fragile.html">fragile</a>.
+<hr>
+See <a href="ltx-143.html">Spaces and Boxes</a><br>
+See <a href="ltx-307.html"><tt>\sbox</tt> and <tt>\savebox</tt></a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 15 Aug 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-279.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-279.html
new file mode 100644
index 00000000000..b4f1298c1a8
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-279.html
@@ -0,0 +1,19 @@
+<html>
+<head><title>Help On LaTeX \nocite</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\nocite</font></h1>
+ <tt>\nocite{key_list}</tt>
+<p>
+ The <tt>\nocite</tt> command produces no text, but writes key_list, which is a
+ list of one or more citation keys, on the aux file.
+<p>
+ The <tt>\nocite</tt> command is <a href="fragile.html">fragile</a>.
+<hr>
+See also: <A href="ltx-73.html">thebibliography</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 4 Jul 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-280.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-280.html
new file mode 100644
index 00000000000..78ec8877b28
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-280.html
@@ -0,0 +1,18 @@
+<html>
+<head><title>Help On LaTeX \noindent</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\noindent</font></h1>
+ When used at the beginning of the paragraph, it suppresses the
+ paragraph indentation. It has no effect when used in the middle of a
+ paragraph.
+<p>
+<hr>
+See also <a href="ltx-247.html"><tt>\indent</tt></a><br>
+See also: <A href="ltx-111.html">Making Paragraphs</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-281.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-281.html
new file mode 100644
index 00000000000..810ea9dffbc
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-281.html
@@ -0,0 +1,22 @@
+<html>
+<head><title>Help On LaTeX \nolinebreak</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\nolinebreak</font></h1>
+<p>
+ <tt>\nolinebreak[number]</tt>
+<p>
+ The <tt>\nolinebreak</tt> command prevents LaTeX from breaking the current
+ line at the point of the command. With the optional argument,
+ <tt>number</tt>, you can convert the
+ <tt>\nolinebreak</tt> command from a demand to a
+ request. The number must be a number from 0 to 4. The higher the
+ number, the more insistent the request is.
+<hr>
+See also <A href="ltx-99.html">Line and Page Breaking</A><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-282.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-282.html
new file mode 100644
index 00000000000..beb6444b52e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-282.html
@@ -0,0 +1,17 @@
+<html>
+<head><title>Help On LaTeX \normalsize</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\normalsize</font></h1>
+ This is the default type size.
+ The size of <tt>\normalsize</tt> is defined by as 10pt unless the 11pt or 12pt
+ document style option is used.
+<hr>
+See also <A href="ltx-176.html">Typefaces</A>,
+ <A href="ltx-178.html">Sizes</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-283.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-283.html
new file mode 100644
index 00000000000..c6be23554e3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-283.html
@@ -0,0 +1,21 @@
+<html>
+<head><title>Help On LaTeX \nopagebreak</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\nopagebreak</font></h1>
+<p>
+ <tt>\nopagebreak[number]</tt>
+<p>
+ The <tt>\nopagebreak</tt> command prevents LaTeX form breaking the current page
+ at the point of the command. With the optional argument, <tt>number</tt>, you
+ can convert the <tt>\nopagebreak</tt> command from a demand to a request. The
+ number must be a number from 0 to 4. The higher the number, the more
+ insistent the request is.
+<hr>
+See also <A href="ltx-99.html">Line and Page Breaking</A><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-284.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-284.html
new file mode 100644
index 00000000000..43be5c73ceb
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-284.html
@@ -0,0 +1,18 @@
+<html>
+<head><title>Help On LaTeX \onecolumn</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\onecolumn</font></h1>
+ The <tt>\onecolumn</tt> declaration starts a new page and produces
+ single-column output.
+<p>
+This command is <a href="fragile.html">fragile</a>.
+<hr>
+See also <A href="ltx-22.html">Document Styles</A><br>
+See also <a href="ltx-332.html"><tt>\twocolumn</tt></a><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 7 Jul 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-286.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-286.html
new file mode 100644
index 00000000000..0abec109128
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-286.html
@@ -0,0 +1,23 @@
+<html>
+<head><title>Help On LaTeX \oval</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\oval</font></h1>
+ <tt>\oval(width,height)[portion]</tt>
+<p>
+ The <tt>\oval</tt> command produces a rectangle with rounded corners. The
+ optional argument, <tt>portion</tt>, allows you to select part of the oval.
+<ul>
+<li><TT>t</TT> Selects the top portion
+<li><TT>b</TT> Selects the bottom portion
+<li><TT>r</TT> Selects the right portion
+<li><TT>l</TT> Selects the left portion
+</ul>
+<hr>
+See also <A href="ltx-43.html">Picture Environment</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-287.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-287.html
new file mode 100644
index 00000000000..879f0a4f1be
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-287.html
@@ -0,0 +1,29 @@
+<html>
+<head><title>Help On LaTeX \overbrace</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\overbrace</font></h1>
+<p>
+ <tt>\overbrace{equation}</tt>
+<p>
+
+ The <tt>\overbrace</tt> command generates a brace over
+ <tt>equation</tt>; math mode.
+<p>
+ To "label" the overbrace, use a <a href="ltx-180.html">superscript</a>.
+<hr>
+See also:
+<ul>
+<li><A href="ltx-115.html">Math Formulas</A>
+<li><A href="ltx-119.html">Math Miscellany</A>
+<li><a href="ltx-288.html"><tt>\overline</tt></a>
+<li><a href="ltx-335.html"><tt>\underbrace</tt></a>
+<li><a href="ltx-336.html"><tt>\underline</tt></a>
+</ul>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 31 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-288.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-288.html
new file mode 100644
index 00000000000..5f973045166
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-288.html
@@ -0,0 +1,26 @@
+<html>
+<head><title>Help On LaTeX \overline</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\overline</font></h1>
+<p>
+ <tt>\overline{equation}</tt>
+<p>
+
+ The <tt>\overline</tt> command causes the argument
+ <tt>equation</tt> to be overlined; math mode.
+<hr>
+See also:
+<ul>
+<li><A href="ltx-115.html">Math Formulas</A>
+<li><A href="ltx-119.html">Math Miscellany</A>
+<li><a href="ltx-287.html"><tt>\overbrace</tt></a>
+<li><a href="ltx-335.html"><tt>\underbrace</tt></a>
+<li><a href="ltx-336.html"><tt>\underline</tt></a>
+</ul>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 31 May 1995.
+</address>
+</body></html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-289.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-289.html
new file mode 100644
index 00000000000..d425455d209
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-289.html
@@ -0,0 +1,22 @@
+<html>
+<head><title>Help On LaTeX \pagebreak</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\pagebreak</font></h1>
+<p>
+ <tt>\pagebreak[number]</tt>
+<p>
+ The <tt>\pagebreak</tt> command tells LaTeX to break the current page at the
+ point of the command. With the optional argument, <tt>number</tt>, you can
+ convert the <tt>\pagebreak</tt> command from a demand to a request. The number
+ must be a number from 0 to 4. The higher the number, the more
+ insistent the request is.
+<p>
+<hr>
+See also <A href="ltx-99.html">Line and Page Breaking</A><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-29.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-29.html
new file mode 100644
index 00000000000..96782cb74ec
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-29.html
@@ -0,0 +1,28 @@
+<html>
+<head><title>Help On LaTeX center</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">center</font></h1>
+<p><pre>
+ \begin{center}
+ Text on line 1 \\
+ Text on line 2 \\
+ ...
+ ...
+ \end{center}
+</pre>
+
+ The center environment allows you to create a paragraph consisting of
+ lines that are centered within the left and right margins on the
+ current page. Each line must be terminated with the string <tt>\\.</tt>
+<hr>
+See also <A href="ltx-30.html"><tt>\centering</tt></A><br>
+See also <a href="ltx-228.html">Flushleft</a>,
+ <a href="ltx-229.html">Flushright</a> Environments<br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-291.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-291.html
new file mode 100644
index 00000000000..b307fdd1216
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-291.html
@@ -0,0 +1,22 @@
+<html>
+<head><title>Help On LaTeX \pageref</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\pageref</font></h1>
+<p>
+ <tt>\pageref{key}</tt>
+<p>
+
+ The <tt>\pageref</tt> command produces the page number of the place in the text
+ where the corresponding
+ <a href="ltx-252.html"><tt>\label</tt></a> command appears.
+<p>
+The <tt>\pageref</tt> command is <a href="fragile.html">fragile</a>.
+<hr>
+See also: <A href="ltx-13.html">Cross References</A><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 4 Jul 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-293.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-293.html
new file mode 100644
index 00000000000..8c3c0916b17
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-293.html
@@ -0,0 +1,17 @@
+<html>
+<head><title>Help On LaTeX \par</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\par</font></h1>
+
+ Equivalent to a blank line; often used to make command or environment
+ definitions easier to read.
+<hr>
+See also: <A href="ltx-111.html">Making Paragraphs</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-294.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-294.html
new file mode 100644
index 00000000000..c9801ff9e45
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-294.html
@@ -0,0 +1,35 @@
+<html>
+<head><title>Help On LaTeX \parbox</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\parbox</font></h1>
+<p>
+ <tt>\parbox[position]{width}{text}</tt>
+<p>
+
+ A parbox is a box whose contents are created in paragraph mode. The
+ <tt>\parbox</tt> has two mandatory arguments:
+<ul>
+<li> <tt>width</tt>: specifies the width of the parbox, and
+<li> <tt>text</tt>: the text that goes inside the parbox.
+</ul>
+ LaTeX will position a parbox so its center lines up with the center of
+ the text line. An optional first argument allows you to
+ line up either the top or bottom line in the parbox, by using as optional
+ <tt>position</tt> argument <tt>t</tt> or <tt>b</tt>, respectively .
+<p>
+ A <tt>\parbox</tt> command is used for a parbox containing a small piece of
+ text, with nothing fancy inside. In particular, you shouldn't use any
+ of the paragraph-making environments inside a <tt>\parbox</tt> argument. For
+ larger pieces of text, including ones containing a paragraph-making
+ environment, you should use a <a href="ltx-267.html">minipage</a> environment.
+<p>
+The <tt>\parbox</tt> command is <a href="fragile.html">fragile</a>.
+<hr>
+See <a href="ltx-143.html">Spaces and Boxes</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 8 Aug 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-296.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-296.html
new file mode 100644
index 00000000000..acc52f00fde
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-296.html
@@ -0,0 +1,30 @@
+<html>
+<head><title>Help On LaTeX \put</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\put</font></h1>
+<p>
+ <tt>\put(x-coord,y-coord){object}</tt>
+<p>
+
+ The <tt>\put</tt> command places the <tt>object</tt>
+ specified by the mandatory argument at the given coordinates.
+<p>
+The coordinates are in units of
+<a href="unitlength.html"><tt>\unitlength</tt></a>
+<p>
+Some of the <tt>object</tt> items you might place are
+<ul>
+<li><a href="ltx-257.html"><tt>\line</tt></a>
+<li><a href="ltx-341.html"><tt>\vector</tt></a>
+<li><a href="ltx-210.html"><tt>\circle</tt></a>
+<li><a href="ltx-286.html"><tt>\oval</tt></a>
+</ul>
+See also: <A href="ltx-27.html">Environments</A>,
+ <A href="ltx-43.html">picture</A><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 12 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-297.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-297.html
new file mode 100644
index 00000000000..1712de6aff7
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-297.html
@@ -0,0 +1,26 @@
+<html>
+<head><title>Help On LaTeX quotation</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">quotation</font></h1>
+<pre>
+ \begin{quotation}
+ text
+ \end{quotation}
+</pre>
+ The margins of the quotation environment are indented on the left and
+ the right. The text is justified at both margins and there is
+ paragraph indentation. Leaving a blank line between text produces a
+ new paragraph.
+<p>
+ For a short quote (one paragraph), use the
+ <a href="ltx-298.html">quote environment</a>.
+<hr>
+See also <A href="ltx-298.html">Quote Environment</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 27 Sep 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-298.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-298.html
new file mode 100644
index 00000000000..415c6a86eb2
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-298.html
@@ -0,0 +1,25 @@
+<html>
+<head><title>Help On LaTeX quote</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">quote</font></h1>
+<pre>
+ \begin{quote}
+ text
+ \end{quote}
+</pre>
+
+ The margins of the quote environment are indented on the left and the
+ right. The text is justified at both margins. For longer quotations
+ (more than one paragraph) use the <a href="ltx-297.html">quotation
+ environment</a>.
+
+<hr>
+See also <A href="ltx-297.html">Quotation Environment</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 27 Sep 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-299.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-299.html
new file mode 100644
index 00000000000..dad37b276f5
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-299.html
@@ -0,0 +1,17 @@
+<html>
+<head><title>Help On LaTeX \raggedbottom</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\raggedbottom</font></h1>
+ The <tt>\raggedbottom</tt> declaration makes all pages the height of the text
+ on that page. No extra vertical space is added.
+<hr>
+See also <A href="ltx-22.html">Document Styles</A><br>
+See also <a href="ltx-227.html"><tt>\flushbottom</tt></a><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 28 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-3.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-3.html
new file mode 100644
index 00000000000..2b424b2dd68
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-3.html
@@ -0,0 +1,88 @@
+<html>
+<head><title>Help On LaTeX Counters</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Counters</font></h1>
+<p>
+ Everything LaTeX numbers for you has a counter associated with it. The
+ name of the counter is the same as the name of the environment or
+ command that produces the number, except with no <tt>\.</tt> Below is a list
+ of some of the counters used in LaTeX's standard document styles to control
+ numbering.
+<pre>
+ part paragraph figure enumi
+ chapter subparagraph table enumii
+ section page footnote enumiii
+ subsection equation mpfootnote enumiv
+ subsubsection
+</pre>
+
+<h2>Manipulating the way counters are printed</h2>
+Counters are printed in LaTeX by using a command generated as
+"<tt>\the</tt>" suffixed with the name of the counter. Thus, equation
+numbers are printed by the <tt>\theequation</tt> command, and
+section numbers by the <tt>\thesection</tt> command.
+If you want to change the way such numbers are printed, for example,
+change from arabic to Roman numerals, you need to redefine the
+appropriate command, using the
+<tt><a href="ltx-18.html">\renewcommand</a></tt> command.
+<p>
+As an example, to number equations in an appendix as <tt>A-1</tt>,
+<tt>A-2</tt>, ... , use <pre>
+ <tt>\renewcommand{\theequation}{A-<a href="ltx-201.html">\arabic</a>{equation}}</tt></pre>
+The second argument implies that the text produced by the renewed
+<tt>\theequation</tt> command will be "A-" followed by the output from
+the <tt>\arabic{equation}</tt> command, which is the value of the
+equation counter, printed as an arabic number.
+<p>
+In <a href="lists.html">List Environments</a> the format for the
+item labels is given by commands like <tt>\labelitemi</tt> and
+<tt>\labelitemii</tt> (for the first two levels of the
+<a href="ltx-250.html">Itemize Environment</a>), and like <tt>\labelenumi</tt>
+(for the <a href="ltx-222.html">Enumerate Environment</a>), and these may
+also be redefined.
+<p>
+There is an <a href="ltx-260.html#example">example</a> of manipulating such
+counters in the discussion of the List Environment.
+See also the discussions in the <a href="ltx-250.html">Itemize Environment</a>
+and in the <a href="ltx-222.html#example">Enumerate Environment</a>.
+<p>
+You can force a change in the number produced by any of the counters. For
+example, if you wanted to produce a single page numbered 13, you could use
+<pre>
+ <tt><a href="ltx-310.html">\setcounter</a>{page}{13}</tt></pre>
+A variety of commands for manipulating counters this way are given below.
+
+<H2>Related topics</H2>
+<ul>
+<li>Commands that manupulate counters
+<ul>
+<li><A href="ltx-195.html">\addtocounter</A>
+<li><A href="ltx-271.html">\newcounter</A>
+<li><A href="ltx-310.html">\setcounter</A>
+<li><A href="ltx-338.html">\usecounter</A>
+<li><A href="ltx-339.html">\value</A>
+<li><a href="ltx-18.html">\renewcommand</a>
+</ul>
+<li>Commands that print the value of a counter in various formats
+<ul>
+<li><A href="ltx-201.html">\arabic</A>
+<li><A href="ltx-199.html">\alph \Alph</A>
+<li><A href="ltx-305.html">\roman \Roman</A>
+<li><A href="ltx-230.html">\fnsymbol</A>
+</ul>
+<li>For some examples of usage in list environments, see
+<ul>
+<li><a href="ltx-260.html#example">List Enviroment</a>
+<li><a href="ltx-250.html">Itemize Environment</a>
+<li><a href="ltx-222.html">Enumerate Environment</a>
+</ul>
+</ul>
+<hr>
+See also <a href="ltx-141.html">Sectioning</a><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 25 Oct 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-30.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-30.html
new file mode 100644
index 00000000000..f223a7270ba
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-30.html
@@ -0,0 +1,42 @@
+<html>
+<head><title>Help On LaTeX \centering</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\centering</font></h1>
+
+<p>This <a href="declarations.html">declaration</a>
+corresponds to the center environment. This
+declaration can be used inside an environment such as quote or in a
+parbox. The text of a figure or table can be centered on the page by
+putting a <tt>\centering</tt> command at the beginning of the figure or table
+environment.</p>
+
+<p>Unlike the <a href="ltx-29.html">center environment</a>,
+the <tt>\centering</tt> command does not start
+a new paragraph; it simply changes how LaTeX formats paragraph units.
+To affect a paragraph unit's format, the scope of the declaration
+must contain the blank line or <tt>\end</tt> command (of an environment like
+quote) that ends the paragraph unit.</p>
+
+<p><it>Editor's note: although not listed as <a href="fragile.html">fragile</a>
+in Lamport, I have found it necessary to use a <tt>\protect</tt> when putting
+a <tt>\centering</tt> command in a
+<a href="ltx-3.html">sectioning command</a>.<br>
+For example,</p>
+
+<pre>
+ <tt>\section{\protect \centering Centered section heading}</tt>
+</pre>
+
+<hr>
+
+<p>See also <a href="ltx-29.html">Center environment</a><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a></p>
+
+<hr>
+
+<address>
+Revised: RBS, 21 February 1997
+</address>
+
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-300.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-300.html
new file mode 100644
index 00000000000..5fb17cbbba9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-300.html
@@ -0,0 +1,25 @@
+<html>
+<head><title>Help On LaTeX \raggedleft</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\raggedleft</font></h1>
+ This <a href="declarations.html">declaration</a>
+ corresponds to the <a href="ltx-229.html">flushright
+ environment</a>. This
+ declaration can be used inside an environment such as quote or in a
+ parbox.
+<p>
+ Unlike the flushright environment, the <tt>\raggedleft</tt> command does not
+ start a new paragraph; it simply changes how LaTeX formats paragraph
+ units. To affect a paragraph unit's format, the scope of the
+ declaration must contain the blank line or <tt>\end</tt> command (of an
+ environment like quote) that ends the paragraph unit.
+<hr>
+See also <A href="ltx-27.html">Environments</A>,
+<A href="ltx-229.html">flushright</A><br>
+See also <a href="ltx-301.html"><tt>\raggedright</tt></a><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 Jun 1995.
+</address>
+</body></html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-301.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-301.html
new file mode 100644
index 00000000000..3d85e2cad6c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-301.html
@@ -0,0 +1,25 @@
+<html>
+<head><title>Help On LaTeX \raggedright</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\raggedright</font></h1>
+ This <a href="declarations.html">declaration</a>
+ corresponds to the <a href="ltx-228.html">flushleft environment</a>.
+ This declaration can be used inside an environment such as quote or in a
+ parbox.
+<p>
+ Unlike the flushleft environment, the <tt>\raggedright</tt> command does not
+ start a new paragraph; it simply changes how LaTeX formats paragraph
+ units. To affect a paragraph unit's format, the scope of the
+ declaration must contain the blank line or <tt>\end</tt> command (of an
+ environment like quote) that ends the paragraph unit.
+<hr>
+See also <A href="ltx-27.html">Environments</A>,
+ <a href="ltx-29.html">Center</a>, <a href="ltx-228.html">Flushleft</a><br>
+See also <a href="ltx-300.html"><tt>\raggeleft</tt></a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-302.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-302.html
new file mode 100644
index 00000000000..5b7e97253d4
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-302.html
@@ -0,0 +1,33 @@
+<html>
+<head><title>Help On LaTeX \raisebox</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\raisebox</font></h1>
+<p>
+ <tt>\raisebox{distance}[extend-above][extend-below]{text}</tt>
+<p>
+
+ The <tt>\raisebox</tt> command creates a LR box containing <tt>text</tt>;
+ it is used to raise or lower text. The first
+ mandatory argument specifies how high the text is to be raised (or
+ lowered if it is a negative amount).
+<p>
+ Sometimes it's useful to make LaTeX think something has a different
+ size than it really does - or a different size than LaTeX would
+ normally think it has. The <tt>\raisebox</tt> command lets you tell LaTeX how
+ tall it is.
+<p>
+ The first optional argument, <tt>extend-above</tt>, makes LaTeX think that the
+ text extends above the current line by the amount specified. The second
+ optional argument, <tt>extend-below</tt>, makes LaTeX think that the text
+ extends below the current line by the amount specified.
+<p>
+ <tt>\raisebox</tt> is <a href="fragile.html">fragile</a>.
+<hr>
+See <a href="ltx-143.html">Spaces and Boxes</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 8 Aug 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-303.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-303.html
new file mode 100644
index 00000000000..26d4e22d60b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-303.html
@@ -0,0 +1,27 @@
+<html>
+<head><title>Help On LaTeX \ref</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\ref</font></h1>
+<p>
+ <tt>\ref{key}</tt>
+<p>
+
+ The <tt>\ref</tt> command produces the number of the sectional unit, equation
+ number, ... of the corresponding
+<a href="ltx-252.html"><tt>\label</tt></a> command.
+<p>
+Bibliographic references using the
+<a href="ltx-73.html"><tt>\thebibliography</tt></a>
+mechanism obtain their number or label using
+<a href="ltx-211.html"><tt>\cite</tt></a>
+<p>
+The <tt>\ref</tt> command is <a href="fragile.html">fragile</a>.
+<hr>
+See also <A href="ltx-13.html">Cross References</A><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 4 Jul 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-304.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-304.html
new file mode 100644
index 00000000000..a4c495c3194
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-304.html
@@ -0,0 +1,21 @@
+<html>
+<head><title>Help On LaTeX \rm</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\rm</font></h1>
+<p>
+ Roman typeface (default).
+<p>
+This is version 2.09; see also
+ <a href="fonts2e.html">LaTeX2e font selection</a><br>
+<hr>
+See also <A href="ltx-176.html">Typefaces</A>,
+ <A href="ltx-177.html">Styles</A><br>
+See also <a href="boldmath.html"><tt>\boldmath</tt></a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 16 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-305.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-305.html
new file mode 100644
index 00000000000..82de9076180
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-305.html
@@ -0,0 +1,21 @@
+<html>
+<head><title>Help On LaTeX \roman</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\roman</font></h1>
+
+ <tt>\roman{counter}</tt>
+<p>
+ This command causes the current value of <tt>counter</tt> to be printed
+ in roman numerals.
+ The <tt>\roman</tt> command causes lower case roman numerals, i.e.,
+ i, ii, iii, ..., while the <tt>\Roman</tt> command causes upper case roman
+ numerals, i.e., I, II, III...
+<hr>
+See also <A href="ltx-3.html">Counters</A><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 18 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-306.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-306.html
new file mode 100644
index 00000000000..c9af088929a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-306.html
@@ -0,0 +1,37 @@
+<html>
+<head><title>Help On LaTeX \rule</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\rule</font></h1>
+<p>
+ <tt>\rule[raise-height]{width}{height}</tt>
+<p>
+
+ The <tt>\rule</tt> command generates a rectangular "blob of ink."
+ It can be used to produce horizontal or vertical lines. The arguments
+ are defined as follows.
+ <ul>
+ <li><TT>raise-height</TT> specifies how high to raise the rule (optional)
+ <li><TT>width</TT> specifies the length of the rule (mandatory)
+ <li><TT>height</TT> specifies the height of the rule (mandatory)
+ </ul>
+ The default value for <tt>raise-height</tt> is zero; a negative value
+ lowers the rule.
+<p>
+ The reference point of the rule box is the lower left-hand corner.
+<p>
+ A rule box of zero width may be used as a "strut" which is invisible but
+ which causes LaTeX to adjust veritcal spacing to leave room. This can
+ be particularly useful where the
+ <a href="ltx-347.html"><tt>\vspace</tt></a> command cannot be used,
+ for example, within <a href="ltx-115.html">mathematical formulas</a>.
+<p>
+ The <tt>\rule</tt> command is <a href="fragile.html">fragile</a>.
+<hr>
+See <a href="ltx-143.html">Spaces and Boxes</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 21 Aug 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-307.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-307.html
new file mode 100644
index 00000000000..0b3f34506b1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-307.html
@@ -0,0 +1,35 @@
+<html>
+<head><title>Help On LaTeX \savebox</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\savebox</font></h1>
+<p>
+ <tt>\sbox{cmd}{text}</tt><br>
+ <tt>\savebox{cmd}[width][pos]{text}</tt>
+<p>
+ These commands typeset <tt>text</tt> in a box just as for
+ <a href="ltx-265.html"><tt>\mbox</tt></a> or
+ <a href="ltx-262.html"><tt>\makebox</tt></a>.
+ However, instead of printing the resulting box, they save it in
+ the LaTeX command
+ <tt>cmd</tt>, which must have been declared with
+ <a href="ltx-277.html"><tt>\newsavebox</tt></a>.
+ The saved <tt>text</tt> is accessed by a
+ <a href="ltx-337.html"><tt>\usebox</tt></a> command.
+<p>
+ The <tt>\sbox</tt> and <tt>\savebox</tt> commands are
+ <a href="declarations.html">declarations</a> with the usual
+ rules for scope.
+<p>
+ The <tt>\sbox</tt> command is <a href="fragile.html">robust</a>;
+ the <tt>\savebox</tt> command is <a href="fragile.html">fragile</a>.
+<hr>
+See <a href="ltx-143.html">Spaces and Boxes</a><br>
+See <a href="ltx-277.html"><tt>\newsavebox</tt></a>,
+ <a href="ltx-337.html"><tt>\usebox</tt></a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 15 Aug 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-308.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-308.html
new file mode 100644
index 00000000000..805a66a89c3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-308.html
@@ -0,0 +1,20 @@
+<html>
+<head><title>Help On LaTeX \sc</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\sc</font></h1>
+<p>
+ Small caps typeface.
+<p>
+This is version 2.09; see also
+ <a href="fonts2e.html">LaTeX2e font selection</a><br>
+<hr>
+See also <A href="ltx-176.html">Typefaces</A>,
+ <A href="ltx-177.html">Styles</A><br>
+See also <a href="boldmath.html"><tt>\boldmath</tt></a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 16 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-309.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-309.html
new file mode 100644
index 00000000000..1096770416b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-309.html
@@ -0,0 +1,14 @@
+<html>
+<head><title>Help On LaTeX \scriptsize</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\scriptsize</font></h1>
+ Second smallest of 10 typefaces available.
+<hr>
+See also <A href="ltx-176.html">Typefaces</A>,
+ <A href="ltx-178.html">Sizes</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Jun 1995.
+</address>
+</body></html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-31.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-31.html
new file mode 100644
index 00000000000..462e493dc11
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-31.html
@@ -0,0 +1,32 @@
+<html>
+<head><title>Help On LaTeX description</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">description</font></h1>
+<p>
+<p><pre>
+ <tt>\begin{description}
+ <a href="item.html">\item[label]</a> First item
+ \item[label] Second item
+ ....
+ \end{description}</tt>
+</pre>
+ The description environment is used to make labeled lists. The <tt>label</tt>
+ is bold face and flushed right. The text of the <tt>\item</tt> command
+ is indented.
+<p>
+ Typical usage is for descriptive lists
+ or lists of definitions; the <tt>label</tt> is then the name of the
+ item being described or defined.
+<hr>
+See also <A href="ltx-27.html">Environments</A>,
+ <a href="lists.html">Lists</a>,
+ <a href="ltx-3.html">Counters</a><br>
+See also <a href="ltx-222.html">Enumerate</a><br>
+See also <a href="item.html"><tt>\item</tt></a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 18 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-310.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-310.html
new file mode 100644
index 00000000000..bb877e8b1d6
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-310.html
@@ -0,0 +1,20 @@
+<html>
+<head><title>Help On LaTeX \setcounter</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\setcounter</font></h1>
+<p>
+ <tt>\setcounter{counter}{value}</tt>
+<p>
+
+ The <tt>\setcounter</tt> command sets the value of the specified
+ <tt>counter</tt> to that
+ specified by the <tt>value</tt> argument.
+<hr>
+See also <A href="ltx-3.html">Counters</A><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 2 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-311.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-311.html
new file mode 100644
index 00000000000..18259f9cd11
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-311.html
@@ -0,0 +1,29 @@
+<html>
+<head><title>Help On LaTeX \settoheight</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\settoheight</font></h1>
+<p>
+ <tt>\settoheight{len-cmd}{text}</tt>
+<p>
+
+ The <tt>\settoheight</tt> command sets the value of a
+ <a href="ltx-86.html#lencmd">length command</a>, <tt>len-cmd</tt>,
+ which is specified as the first argument, equal to
+ the maximum height of the <tt>text</tt> argument in the current font.
+<p>
+ For example,
+<pre>
+ <tt>\settoheight{\baselineskip}{Xanadu}
+ <a href="ltx-88.html">\setlength</a>{\baselineskip}{1.5\baselineskip}</tt>
+</pre>
+would set the value of <a href="ltx-86.html#lencmd"><tt>\baselineskip</tt></a>
+to 1.5 times the height of the capital "X".
+<hr>
+See <a href="ltx-86.html">Lengths</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 9 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-312.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-312.html
new file mode 100644
index 00000000000..2935570cb4f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-312.html
@@ -0,0 +1,23 @@
+<html>
+<head><title>Help On LaTeX \settodepth</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\settodepth</font></h1>
+<p>
+ <tt>\settodepth{len-cmd}{text}</tt>
+<p>
+
+ The <tt>\settodepth</tt> command sets the value of a
+ <a href="ltx-86.html#lencmd">length command</a>, <tt>len-cmd</tt>,
+ which is specified as the first argument, equal to
+ the depth (distance below the baseline)
+ of the <tt>text</tt> argument in the current font.
+<p>
+<hr>
+See <a href="ltx-86.html">Lengths</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 9 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-313.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-313.html
new file mode 100644
index 00000000000..e6b486554a3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-313.html
@@ -0,0 +1,18 @@
+<html>
+<head><title>Help On LaTeX \sf</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\sf</font></h1>
+<p>
+ Sans serif typeface.
+<p>
+This is version 2.09; see also
+ <a href="fonts2e.html">LaTeX2e font selection</a><br>
+<hr>
+See also <A href="ltx-176.html">Typefaces</A>,
+ <A href="ltx-177.html">Styles</A><br>
+See also <a href="boldmath.html"><tt>\boldmath</tt></a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 16 May 1995.
+</address></body></html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-314.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-314.html
new file mode 100644
index 00000000000..bacb8e69752
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-314.html
@@ -0,0 +1,25 @@
+<html>
+<head><title>Help On LaTeX \shortstack</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\shortstack</font></h1>
+<p>
+ <tt>\shortstack[position]{ ... \\ ... \\ ... }</tt>
+<p>
+ The <tt>\shortstack</tt> command produces a stack of objects. The valid
+ positions are:
+<ul>
+<li><TT>r</TT> Moves the objects to the right of the stack
+<li><TT>l</TT> Moves the objects to the left of the stack
+<li><TT>c</TT> Moves the objects to the center of the stack (default)
+</ul>
+<hr>
+See also: <A href="ltx-27.html">Environments</A>,
+<A href="ltx-43.html">picture</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 27 Sep 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-315.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-315.html
new file mode 100644
index 00000000000..00db42b0cfc
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-315.html
@@ -0,0 +1,21 @@
+<html>
+<head><title>Help On LaTeX \signature</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\signature</font></h1>
+<tt>\signature{Your Name}</tt>
+<p>
+ Your name, as it should appear at the end of the letter underneath the
+ space for your signature. Items that should go on separate lines
+ should be separated by
+ <a href="ltx-181.html"><tt>\\</tt></a> commands.
+<hr>
+See <a href="ltx-91.html">Letters</a><br>
+See <a href="ltx-98.html"><tt>\closing</tt></a><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 24 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-316.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-316.html
new file mode 100644
index 00000000000..802fbac2f48
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-316.html
@@ -0,0 +1,18 @@
+<html>
+<head><title>Help On LaTeX \sl</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\sl</font></h1>
+<p>
+ Slanted typeface.
+<p>
+This is version 2.09; see also
+ <a href="fonts2e.html">LaTeX2e font selection</a><br>
+<hr>
+See also <A href="ltx-176.html">Typefaces</A>,
+ <A href="ltx-177.html">Styles</A><br>
+See also <a href="boldmath.html"><tt>\boldmath</tt></a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 16 May 1995.
+</address></body></html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-317.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-317.html
new file mode 100644
index 00000000000..c0fc3c21b49
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-317.html
@@ -0,0 +1,15 @@
+<html>
+<head><title>Help On LaTeX \small</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\small</font></h1>
+ Slightly smaller than default typeface size.
+<hr>
+See also <A href="ltx-176.html">Typefaces</A>,
+ <A href="ltx-178.html">Sizes</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-318.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-318.html
new file mode 100644
index 00000000000..7bd0ca09280
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-318.html
@@ -0,0 +1,21 @@
+<html>
+<head><title>Help On LaTeX \smallskip</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\smallskip</font></h1>
+<p>
+ <tt>\smallskip</tt>
+<p>
+
+ The <tt>\smallskip</tt> command is equivalent to
+ <tt><a href="ltx-347.html">\vspace</a>{\smallskipamount}</tt> where
+ <tt>\smallskipamount</tt> is determined by the document style.
+<hr>
+See <a href="ltx-143.html">Spaces and Boxes</a>,
+ <a href="ltx-86.html">Lengths</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 10 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-319.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-319.html
new file mode 100644
index 00000000000..65392112407
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-319.html
@@ -0,0 +1,23 @@
+<html>
+<head><title>Help On LaTeX \sqrt</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\sqrt</font></h1>
+ <tt>\sqrt[root]{arg}</tt>
+<p>
+ The <tt>\sqrt</tt> command produces the square root (radical) symbol with the
+ argument as radicand. The
+ optional argument, root, determines what root to produce, i.e. the
+ cube root of x+y would be typed as <tt>$\sqrt[3]{x+y}$</tt>.
+<p>
+The radical sign is <a href="ltx-408.html">variable size</a>, that is,
+it is made larger if the radicand is, for example, a built-up fraction.
+<hr>
+See also: <A href="ltx-115.html">Math Formulas</A>,
+<A href="ltx-119.html">Math Miscellany</A>.<br>
+Back to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 31 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-323.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-323.html
new file mode 100644
index 00000000000..4340d27eaa3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-323.html
@@ -0,0 +1,19 @@
+<html>
+<head><title>Help On LaTeX \telephone</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\telephone</font></h1>
+ <tt>\telephone{number}</tt>
+<p>
+ This is your telephone number. This only appears if the firstpage
+ pagestyle is selected.
+<hr>
+See <a href="ltx-91.html">Letters</a><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 24 Jun 1995.
+</address>
+
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-324.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-324.html
new file mode 100644
index 00000000000..204ec9e4fb0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-324.html
@@ -0,0 +1,30 @@
+<html>
+<head><title>Help On LaTeX \thanks</title>
+</head><body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\thanks</font></h1>
+<p>
+ <tt>\thanks{text}</tt>
+<p>
+
+ The <tt>\thanks</tt> command produces a footnote to the title.
+<p>
+It is typically used as part of the argument of a
+<a href="ltx-329.html"><tt>\title</tt></a> or
+<a href="ltx-203.html"><tt>\author</tt></a> command.
+<p>
+For example
+<pre>
+ <tt>\title{Work in Progress
+ \thanks{Contribution No. 1 from our lab}}
+ \author{A. Author\thanks{Supported by a grant}}</tt>
+</pre>
+<hr>
+See also <A href="ltx-131.html">Page Styles</A>,
+<A href="ltx-263.html"><tt>\maketitle</tt></A>.<br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 15 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-328.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-328.html
new file mode 100644
index 00000000000..f247468637f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-328.html
@@ -0,0 +1,16 @@
+<html>
+<head><title>Help On LaTeX \tiny</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\tiny</font></h1>
+ Smallest of 10 typefaces available. All fonts may not be available in
+ this size.
+<hr>
+See also <A href="ltx-176.html">Typefaces</A>,
+ <A href="ltx-178.html">Sizes</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 29 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-329.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-329.html
new file mode 100644
index 00000000000..74902fc9774
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-329.html
@@ -0,0 +1,24 @@
+<html>
+<head><title>Help On LaTeX \title</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\title</font></h1>
+<p>
+ <tt>\title{text}</tt>
+<p>
+ The <tt>\title</tt> command declares <tt>text</tt> to be the title. Use
+ <a href="ltx-181.html"><tt>\\</tt></a> to tell
+ LaTeX where to start a new line in a long title.
+<p>
+ A footnote to a title is produced with the
+ <a href="ltx-324.html"><tt>\thanks</tt></a> command.
+<hr>
+See also <A href="ltx-131.html">Page Styles</A>,
+ <a href="ltx-78.html">Titlepage Environment</a><br>
+See also <A href="ltx-263.html"><tt>\maketitle</tt></A><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 16 Nov 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-330.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-330.html
new file mode 100644
index 00000000000..49513cecc87
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-330.html
@@ -0,0 +1,16 @@
+<html>
+<head>
+<title>Help On LaTeX \today</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\today</font></h1>
+The command <tt>\today</tt> generates the current date in the
+format Month dd, year.
+<hr>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 10 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-331.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-331.html
new file mode 100644
index 00000000000..917ba0a38ea
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-331.html
@@ -0,0 +1,20 @@
+<html>
+<head><title>Help On LaTeX \tt</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\tt</font></h1>
+<p>
+ Typewriter typeface.
+<p>
+This is version 2.09; see also
+ <a href="fonts2e.html">LaTeX2e font selection</a><br>
+<hr>
+See also <A href="ltx-176.html">Typefaces</A>,
+ <A href="ltx-177.html">Styles</A><br>
+See also <a href="boldmath.html"><tt>\boldmath</tt></a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 16 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-332.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-332.html
new file mode 100644
index 00000000000..c98b9e94dac
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-332.html
@@ -0,0 +1,18 @@
+<html>
+<head><title>Help On LaTeX \twocolumn</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\twocolumn</font></h1>
+ The <tt>\twocolumn</tt> declaration starts a new page and produces two-column
+ output.
+<p>
+ This command is <a href="fragile.html">fragile</a>.
+<hr>
+See also <A href="ltx-22.html">Document Styles</A><br>
+See also <a href="ltx-284.html"><tt>\onecolumn</tt></a><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 7 Jul 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-335.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-335.html
new file mode 100644
index 00000000000..38dabf514d9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-335.html
@@ -0,0 +1,28 @@
+<html>
+<head><title>Help On LaTeX \underbrace</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\underbrace</font></h1>
+<p>
+ <tt>\underbrace{formula}</tt>
+<p>
+
+ The <tt>\underbrace</tt> command generates a brace underneath
+ the <tt>formula</tt>; math mode.
+<p>
+To "label" the underbrace, use a <a href="ltx-179.html">subscript</a>.
+<hr>
+See also:
+<ul>
+<li><A href="ltx-115.html">Math Formulas</A>
+<li><A href="ltx-119.html">Math Miscellany</A>
+<li><a href="ltx-287.html"><tt>\overbrace</tt></a>
+<li><a href="ltx-288.html"><tt>\overline</tt></a>
+<li><a href="ltx-336.html"><tt>\underline</tt></a>
+</ul>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 31 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-336.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-336.html
new file mode 100644
index 00000000000..ceefcd24112
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-336.html
@@ -0,0 +1,28 @@
+<html>
+<head><title>Help On LaTeX \underline</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\underline</font></h1>
+ <tt>\underline{text}</tt>
+<p>
+ The <tt>\underline</tt> command causes the argument text to be underlined. This
+ command can be used in math mode, paragraph mode, and LR mode.
+<p>
+This command is <a href="fragile.html">fragile</a> although the
+<a href="ltx-288.html"><tt>\overline</tt></a> command is robust.
+<hr>
+See also:
+<ul>
+<li><A href="ltx-115.html">Math Formulas</A>
+<li><A href="ltx-119.html">Math Miscellany</A>
+<li><a href="ltx-287.html"><tt>\overbrace</tt></a>
+<li><a href="ltx-288.html"><tt>\overline</tt></a>
+<li><a href="ltx-335.html"><tt>\underbrace</tt></a>
+</ul>
+Back to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 7 July 1995.
+</address>
+
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-337.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-337.html
new file mode 100644
index 00000000000..f4e30f67bc1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-337.html
@@ -0,0 +1,23 @@
+<html>
+<head><title>Help On LaTeX \usebox</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\usebox</font></h1>
+<p>
+ <tt>\usebox{cmd}</tt>
+<p>
+
+ Prints the box most recently saved in <tt>cmd by</tt> a
+<a href="ltx-307.html"><tt>\savebox</tt> or <tt>\sbox</tt></a> command.
+<p>
+ The <tt>\usebox</tt> command is <a href="fragile.html">robust</a>.
+<hr>
+See <a href="ltx-143.html">Spaces and Boxes</a><br>
+See <a href="ltx-277.html"><tt>\newsavebox</tt></a>,
+ <a href="ltx-307.html"><tt>\savebox</tt></a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 8 Aug 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-338.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-338.html
new file mode 100644
index 00000000000..64db37f4f6b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-338.html
@@ -0,0 +1,22 @@
+<html>
+<head><title>Help On LaTeX \usecounter</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\usecounter</font></h1>
+<p>
+ <tt>\usecounter{counter}</tt>
+<p>
+
+ The <tt>\usecounter</tt> command is used in the second argument of the
+ <a href="ltx-260.html">list environment</a>
+ to allow the counter specified to be used to number the
+ list items.
+<hr>
+See also <A href="ltx-3.html">Counters</A>,
+ <a href="ltx-260.html">list environment</a><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 18 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-339.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-339.html
new file mode 100644
index 00000000000..a1c52a55300
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-339.html
@@ -0,0 +1,27 @@
+<html>
+<head><title>Help On LaTeX \value</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\value</font></h1>
+<p>
+ <tt>\value{counter}</tt>
+<p>
+
+ The <tt>\value</tt> command produces the value of the counter named in the
+ mandatory argument. It can be used where LaTeX expects an integer or
+ number, such as the second argument of a
+ <a href="ltx-310.html"><tt>\setcounter</tt></a> or
+ <a href="ltx-195.html"><tt>\addtocounter</tt></a> command, or in
+<pre>
+ <tt>\hspace{\value{foo}<a href="ltx-86.html#lencmd">\parindent}</a></tt>
+</pre>
+ It is useful for doing arithmetic with counters.
+<hr>
+See also <A href="ltx-3.html">Counters</A>,
+ <a href="ltx-86.html">Lengths</a><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 9 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-340.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-340.html
new file mode 100644
index 00000000000..0f32746eb98
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-340.html
@@ -0,0 +1,25 @@
+<html>
+<head><title>Help On LaTeX \vdots</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\vdots</font></h1>
+ The <tt>\vdots</tt> command produces a vertical ellipsis.<br>
+ Can be used only in math mode.
+<hr>
+See also:
+<ul>
+<li><A href="ltx-207.html">\cdots</A>
+<li><A href="ltx-218.html">\ddots</A>
+<li><A href="ltx-256.html">\ldots</A>
+<li><A href="ltx-340.html">\vdots</A>
+<p>
+<li><A href="ltx-115.html">Math Formulas</A>,
+<li><A href="ltx-119.html">Math Miscellany</A>.
+</ul>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 25 April 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-341.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-341.html
new file mode 100644
index 00000000000..93240e1509c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-341.html
@@ -0,0 +1,31 @@
+<html>
+<head><title>Help On LaTeX \vector</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\vector</font></h1>
+<p>
+ <tt>\vector(x-slope,y-slope){length}</tt>
+<p>
+ The <tt>\vector</tt> command draws an arrow of the specified length and slope
+ with the arrow head at the opposite end of the line from the
+ reference point (see <a href="ltx-296.html"><tt>\put</tt></a>).
+<p>
+The slope is determined by <tt>(x-slope,y-slope)</tt> which are signed
+integers of magnitude less than or equal to 4 and which have no common
+divisor except for plus or minus one; For example (1,0) is a horizontal
+arrow pointing right; (1,1) gives a slope of
+45 degress; (0,1) is a vertical arrow pointing up; (-1,1) is at 135 degrees.
+<p>
+The <strong>horizontal</strong> extent of the arrow is given by the
+<tt>length</tt> parameter, except in the case of a vertical arrow in
+which case <tt>length</tt> specifies the vertical height.
+<hr>
+See also <A href="ltx-27.html">Environments</A>,
+ <A href="ltx-43.html">picture</A><br>
+See also <a href="ltx-257.html"><tt>\line</tt></a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 12 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-342.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-342.html
new file mode 100644
index 00000000000..65cad2f1b0c
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-342.html
@@ -0,0 +1,39 @@
+<html>
+<head><title>Help On LaTeX \verb</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\verb</font></h1>
+<p>
+ <tt>\verb char literal_text char</tt><br>
+or<br>
+ <tt>\verb*char literal_text char</tt><p>
+
+ Typesets <tt>literal_text</tt> exactly as typed,
+ including special characters
+ and spaces, using a typewriter (<tt>\tt</tt>) font. There may be no
+ space between <tt>\verb</tt> or <tt>\verb*</tt>
+ and <tt>char</tt> (space is shown here only for
+ clarity). The *-form differs only in that spaces are printed
+ as "visual" spaces, i.e., a short, squat "u".
+<p>
+ Any <tt>char</tt> except a space (or a <tt>*</tt> for the <tt>\verb</tt>
+ form) may be chosen as the delimiter. Thus, the input
+<pre>
+ \verb1This!is?the##1 verbatim ...
+</pre>
+would produce<p>
+
+<tt>This!is?the##</tt> verbatim ...
+<p>
+The <tt>\verb</tt> command may <strong>not</strong> be used in the argument
+of another command. For example, it cannot be used in the text of a
+<a href="ltx-141.html">sectioning command</a>.
+<hr>
+See also <A href="ltx-27.html">Environments</A>,
+ <A href="ltx-79.html">verbatim</A><br>
+Back to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 20 Oct 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-345.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-345.html
new file mode 100644
index 00000000000..7b0b0ec05e0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-345.html
@@ -0,0 +1,20 @@
+<html>
+<head><title>Help On LaTeX \vfill</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\vfill</font></h1>
+<p>
+ The <tt>\vfill</tt> fill command produces a
+ <a href="ltx-86.html#rubber">rubber length</a> which can stretch or
+ shrink vertically. It is equivalent to a blank line followed by
+ <tt><a href="ltx-347.html">\vspace</a>\fill</tt>. It should be used only
+ in <a href="ltx-130.html">paragraph mode</a>.
+<hr>
+See <a href="ltx-143.html">Spaces and Boxes</a>,
+ <a href="ltx-86.html">Lengths</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 23 Oct 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-346.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-346.html
new file mode 100644
index 00000000000..6e3bc2ba17e
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-346.html
@@ -0,0 +1,17 @@
+<html>
+<head><title>Help On LaTeX \vline</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\vline</font></h1>
+ The <tt>\vline</tt> command will draw a vertical line extending the full height
+ and depth of its row. An <tt><a href="ltx-238.html">\hfill</a></tt> command
+ can be used to move the line
+ to the edge of the column. It can also be used in an @-expression.
+<hr>
+See also: <a href="ltx-202.html">array</a>,
+<A href="ltx-68.html">tabular</A><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 31 May 1995.
+</address>
+</body></html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-347.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-347.html
new file mode 100644
index 00000000000..d643dc901ba
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-347.html
@@ -0,0 +1,29 @@
+<html>
+<head><title>Help On LaTeX \vspace</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\vspace</font></h1>
+<p>
+ <tt>\vspace[*]{length}</tt>
+<p>
+
+ The <tt>\vspace</tt> command adds vertical space. The length of the space can
+ be expressed in any terms that LaTeX understands, i.e., points,
+ inches, etc. You can add negative as well as positive space with an
+ <tt>\vspace</tt> command.
+<p>
+ If <tt>\vspace</tt> appears in the middle of a paragraph the space
+ is added after the line containing it.
+<p>
+ LaTeX removes vertical space that comes at the end of a page. If you
+ don't want LaTeX to remove this space, include the optional *
+ argument. Then the space is never removed.
+<hr>
+See <a href="ltx-143.html">Spaces and Boxes</a>,
+ <a href="ltx-86.html">Lengths</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 14 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-37.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-37.html
new file mode 100644
index 00000000000..fe16097d0f2
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-37.html
@@ -0,0 +1,24 @@
+<html>
+<head><title>Help On LaTeX \raggedright</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\raggedright</font></h1>
+ This <a href="declarations.html">declaration</a>
+ corresponds to the <a href="ltx-228.html">flushleft environment</a>. This
+ declaration can be used inside an environment such as quote or in a
+ parbox.
+<p>
+ Unlike the flushleft environment, the <tt>\raggedright</tt> command does not
+ start a new paragraph; it simply changes how LaTeX formats paragraph
+ units. To affect a paragraph unit's format, the scope of the
+ declaration must contain the blank line or <tt>\end</tt> command (of an
+ environment like quote) that ends the paragraph unit.
+<hr>
+See also <a href="ltx-228.html">flushleft environment</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 27 Sep 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-39.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-39.html
new file mode 100644
index 00000000000..a9a1a1ca3c1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-39.html
@@ -0,0 +1,25 @@
+<html>
+<head><title>Help On LaTeX \raggedleft</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\raggedleft</font></h1>
+<p>
+ This <a href="declarations.html">declaration</a>
+ corresponds to the <a href="ltx-229.html">flushright environment</a>. This
+ declaration can be used inside an environment such as quote or in a
+ parbox.
+<p>
+ Unlike the flushright environment, the <tt>\raggedleft</tt> command does not
+ start a new paragraph; it simply changes how LaTeX formats paragraph
+ units. To affect a paragraph unit's format, the scope of the
+ declaration must contain the blank line or <tt>\end</tt> command (of an
+ environment like quote) that ends the paragraph unit.
+<hr>
+See also <a href="ltx-229.html">flushright environment</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 27 Sep 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-401.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-401.html
new file mode 100644
index 00000000000..3acd2e45614
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-401.html
@@ -0,0 +1,96 @@
+<html>
+<head>
+<title>Accents</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Accents</font></h1>
+The rules differ somewhat depending whether you are in
+<a href="ltx-130.html">text mode</a>, <a href="ltx-115.html#math">math
+mode</a>, or the <a href="ltx-58.html">tabbing environment</a>
+
+<h2>Text mode</h2>
+The following accents may be placed on letters. Although "o" is used in
+most of the example, the accents may be placed on any letter.
+Accents may even be placed above a "missing" letter; for example,
+<tt>\~{}</tt> produces a tilde over a blank space.
+<p>
+The following commands may be used only in paragraph or LR mode.<br>
+<ul>
+<li><tt>\`{o}</tt> produces a grave accent, &ograve;
+<li><tt>\'{o}</tt> produces an acute accent, &oacute;
+<li><tt>\^{o}</tt> produces a circumflex, &ocirc;
+<li><tt>\"{o}</tt> produces an umlaut or dieresis, &ouml;
+<li><tt>\H{o}</tt> produces a long Hungarian umlaut
+<li><tt>\~{o}</tt> produces a tilde, &otilde;
+<li><tt>\c{c}</tt> produces a cedilla, &ccedil;
+<li><tt>\={o}</tt> produces a macron accent (a bar over the letter)
+<li><tt>\b{o}</tt> produces a bar under the letter
+<li><tt>\.{o}</tt> produces a dot over the letter
+<li><tt>\d{o}</tt> produces a dot under the letter
+<li><tt>\u{o}</tt> produces a breve over the letter
+<li><tt>\v{o}</tt> produces a "v" over the letter
+<li><tt>\t{oo}</tt> produces a "tie" (inverted u) over the two letters
+</ul>
+<p>
+Note that the letters "i" and "j" require special treatment when
+they are given accents because it is often desirable to replace the
+dot with the accent. For this purpose, the commands <tt>\i</tt> and
+<tt>\j</tt> can be used to produce dotless letters.<p>
+For example,
+<ul>
+<li><tt>\^{\i}</tt> should be used for i, circumflex, &icirc;
+<li><tt>\"{\i}</tt> should be used for i, umlaut, &iuml;
+</ul>
+
+<h2><a name="math">Math mode</a></h2>
+Several of the above and some similar accents can also be
+produced in math mode. The following commands may be used <strong>only</strong>
+in math mode.
+<ul>
+<li><tt>\hat{o}</tt> is similar to the circumflex (cf. <tt>\^</tt>)
+<li><tt>\widehat{oo}</tt> is a wide version of <tt>\hat</tt> over several letters
+<li><tt>\check{o}</tt> is a vee or check (cf. <tt>\v</tt>)
+<li><tt>\tilde{o}</tt> is a tilde (cf. <tt>\~</tt>)
+<li><tt>\widetilde{oo}</tt> is a wide version
+ of <tt>\tilde</tt> over several letters
+<li><tt>\acute{o}</tt> is an acute accent (cf. <tt>\`</tt>)
+<li><tt>\grave{o}</tt> is a grave accent (cf. <tt>\'</tt>)
+<li><tt>\dot{o}</tt> is a dot over the letter (cf. <tt>\.</tt>)
+<li><tt>\ddot{o}</tt> is a double dot over the letter
+<li><tt>\breve{o}</tt> is a breve (cf. <tt>\u</tt>)
+<li><tt>\bar{o}</tt> is a macron (cf. <tt>\=</tt>)
+<li><tt>\vec{o}</tt> is a vector (arrow) over the letter
+</ul>
+
+<h2><a href="ltx-58.html">Tabbing environment</a></h2>
+Some of the accent marks used in running text have other uses in
+the <a href="ltx-58.html">tabbing environment</a>. In that
+case they can be created with the following command:
+<ul>
+<li><tt>\a'</tt> for an acute accent
+<li><tt>\a`</tt> for a grave accent
+<li><tt>\a=</tt> for a macron accent
+</ul>
+<hr>
+Related topics:
+<ul>
+<li><a href="ltx-405.html">Greek letters</a>
+<li><a href="ltx-402.html">Ligatures and Non-English symbols</a>
+<li><a href="ltx-407.html">Miscellaneous symbols</a>
+<p>
+<li><a href="ltx-287.html"><tt>\overbrace</tt></a>
+<li><a href="ltx-288.html"><tt>\overline</tt></a>
+<p>
+<li><a href="ltx-115.html#math">Math environment</a>
+<li><a href="ltx-115.html">Math Formulas</a> and
+ <a href="ltx-117.html">Math Symbols</a>
+<li><a href="ltx-408.html">Variable size symbols</a>
+</ul>
+Back to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 20 Oct 1995.
+</address>
+</body>
+</html>
+
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-402.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-402.html
new file mode 100644
index 00000000000..500c3d7b99a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-402.html
@@ -0,0 +1,41 @@
+<html>
+<head>
+<title>Non-English characters and ligatures</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Non-English characters and ligatures</font></h1>
+
+These commands may be used only in paragraph or LR mode.<br>
+<ul>
+<li><tt>\ae</tt> small ae ligature (diphthong), &aelig;
+<li><tt>\AE</tt> capital ae ligature, &AElig;
+<li><tt>\oe</tt> small oe ligature
+<li><tt>\OE</tt> capital OE ligature
+<li><tt>\aa</tt> small a, ring, &aring;
+<li><tt>\AA</tt> capital A, ring, &Aring;
+<li><tt>\o</tt> small o, slash, &oslash;
+<li><tt>\O</tt> capital O, slash, &Oslash;
+<li><tt>\ss</tt> German sz ligature, &szlig;
+</ul>
+<p>
+<h2>Non-English punctuation</h2>
+An inverted "question mark" is made by <tt>?`</tt>. It will also be
+generated by a <tt>&gt;</tt> in text mode.
+<p>
+An inverted "exclamation point" is made by <tt>!`</tt>. It will also be
+generated by a <tt>&lt;</tt> in text mode.
+<hr>
+Related topics:
+<ul>
+<li> <a href="ltx-401.html">Accents</a>,
+<li> <a href="ltx-405.html">Greek letters</a>
+<li> <a href="ltx-407.html">Miscellaneous symbols</a>
+</ul>
+Back to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 Jun 1995.
+</address>
+</body>
+</html>
+
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-403.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-403.html
new file mode 100644
index 00000000000..0f74a6048f1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-403.html
@@ -0,0 +1,116 @@
+<html>
+<head>
+<title>Delimiters</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Delimiters</font></h1>
+Delimiters are objects which act logically like parentheses. These can
+be used only in math mode.
+<p>
+The delimiters recognized by LaTeX include
+<ul>
+<li><tt>(</tt> (left parenthesis)
+<li><tt>)</tt> (right parenthesis)
+<li><tt>[</tt> (left bracket)
+<li><tt>]</tt> (right bracket)
+<li><tt>\{</tt> (left brace)
+<li><tt>\}</tt> (right brace)
+<li><tt>|</tt> (vertical line)
+<li><tt>\vert</tt> (vertical line)
+<li><tt>\|</tt> (double vertical lines)
+<li><tt>\Vert</tt> (double vertical lines)
+<li><tt>/</tt> (slash)
+<li><tt><a href="ltx-164.html">\backslash</a></tt> (backslash)
+<li><tt>\langle</tt> (left angle bracket)
+<li><tt>\rangle</tt> (right angle bracket)
+<li><tt>\uparrow</tt> (uparrow)
+<li><tt>\downarrow</tt> (down arrow)
+<li><tt>\updownarrow</tt> (up/down arrow)
+</ul>
+
+<h2><a name="big">Making delimiters the right size</a></h2>
+Delimiters in formulas should be big enough to "fit" around the formulas
+they delimit (for example arround arrays).
+To obtain "stretchable" delimiters (LaTeX makes them the
+appropriate size) type a <tt>\left</tt> or <tt>\right</tt> command before
+the delimiter. <tt>\left</tt> and <tt>\right</tt> commands must come in
+matching pairs, although the delimiters themselves need not be the same.
+Thus, <pre> \left \{ ... \right \[ </pre> produces a legal pair.
+In cases where only one delimiter is desired, it
+is possible to make the matching delimiter "invisible" by typing a
+period (<tt>.</tt>) after the command, i.e.,
+<tt>\left.</tt> or <tt>\right.</tt>.
+<p>
+In an <a href="ltx-223.html">eqnarray environment</a> the matching <tt>\left</tt>
+and <tt>\right</tt> cannot be split between lines and it may be necessary to
+use an "invisible" <tt>\right.</tt> and <tt>\left.</tt> to terminate and
+begin parts on different lines. In this case a second problem may arise,
+since the size of the delimiters will be chosen only for the
+<strong>local part</strong>, so that the size of the <strong>visible</strong>
+"left" and "right" delimiters might not match.
+The solution is to trick LaTeX into thinking
+that both parts have the same vertical height. This can be done by placing
+a strut, that is a zero-width <a href="ltx-306.html"><tt>\rule</tt></a>. It
+can also be accomplished with the <tt>\vphantom</tt> command, which I have
+not found documented, but which appears to work.
+<p>
+<pre><tt>\vphantom{construct}</tt></pre>
+creates a zero-width object with the height of <tt>construct</tt>. The
+argument can contain things such as <a href="ltx-235.html"><tt>\frac</tt></a>
+or the <a href="ltx-408.html">variable size math symbols</a> and should
+be chosen according to what is in the section with the delimiter you want to match.
+
+<h2>Some examples</h2>
+<h3>A six-j symbol</h3>
+<pre>
+ <tt>\[ \left<a href="ltx-164.html">\{</a>
+ \begin{<a href="ltx-202.html">array</a>}{ccc}
+ a &amp; b &amp; c <a href="ltx-181.html">\\</a>
+ d &amp; e &amp; f \end{array}
+ \right<a href="ltx-164.html">\}</a> \]</tt>
+</pre>
+This should be displayed something like (insofar as it can be rendered in
+"ascii art"):
+<pre>
+ ( a b c )
+ - -
+ ( d e f )
+</pre>
+Note that the <tt>\[ ... \]</tt> set this off as <a href="ltx-421.html">
+Display Math</a>, and that the <a href="ltx-202.html">Array Environment</a>
+is used to generate the three centered columns inside the braces.
+<h3>A "multiple choice" equation</h3>
+<pre>
+ <tt>\[ f(x) =
+ \left\{ \begin{array}{l}
+ 0, x &lt; 0 \\ 1, x = 0 \\
+ 2, x &gt; 0 \end{array} \right. \]</tt>
+</pre>
+will be displayed as
+<pre>
+<tt> ( 0, x &lt; 0
+ f(x) = - 1, x = 0
+ ( 2, x &gt; 0</tt>
+</pre>
+Note that the "invisible" <tt>\right</tt> delimiter is specified using
+a "period".
+<hr>
+See also:
+See also <a href="ltx-115.html">Math Formulas</a>,
+ <a href="ltx-117.html">Math Symbols</a>
+<ul>
+<li><a href="ltx-404.html">Binary and relational operators</a>
+<li><a href="ltx-115.html">Math formulas</a>,
+<li><a href="ltx-202.html">Arrays</a>
+<li><a href="ltx-406.html">Arrows</a>
+<li><a href="ltx-408.html">Variable size symbols (sums, integrals, etc.)</a>
+</ul>
+<hr>
+Back to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 28 Nov 1995.
+</address>
+</body>
+</html>
+
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-404.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-404.html
new file mode 100644
index 00000000000..9016b0b2018
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-404.html
@@ -0,0 +1,75 @@
+<html>
+<head>
+<title>Binary and relational opertors</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Binary and relational operators</font></h1>
+Some "math" symbols are obtained by typing the corresponding keyboard
+character. Examples include
+<pre> + - = &lt; &gt; </pre>
+<strong>Note:</strong> plus, minus, and equal sign may be used in
+either text or math mode, but &lt; and &gt; are math mode only
+(they produce inverted exclamation and question marks, respectively,
+in text mode).
+<p>
+The following commands may be used only in math mode.
+
+<ul>
+<li><tt>\pm</tt> plus or minus sign
+<li><tt>\mp</tt> minus or plus sign
+<li><tt>\times</tt> times (an "x")
+<li><tt>\div</tt> divided by sign
+<li><tt>\ast</tt> an asterisk (centered)
+<li><tt>\star</tt> a five-point star (centered)
+<li><tt>\bullet</tt> a bullet
+<li><tt>\circ</tt> an open bullet
+<li><tt>\cdot</tt> a centered dot (see also,
+ <a href="ltx-207.html"><tt>\cdots</tt></a>)
+<p>
+<li><tt>\leq</tt> less than or equal to
+<li><tt>\ll</tt> much less than
+<li><tt>\subset</tt> is a subset of
+<li><tt>\geq</tt> greater than or equal to
+<li><tt>\gg</tt> much greater than
+<li><tt>\equiv</tt> equivalence symbol
+<li><tt>\sim</tt> similar to
+<li><tt>\simeq</tt> similar or equal to
+<li><tt>\approx</tt> approximately equal to
+<li><tt>\neq</tt> not equal to
+<li><tt>\per</tt> "perpendicular to" symbols
+<li><tt>\propto</tt> proportional to
+</ul>
+<p>
+Note that "greater than" and "less than" are obtained simply by
+entering <tt>&gt;</tt> and <tt>&lt;</tt>.
+<p>
+A slash, indicating <a name=not>"not"</a> can be placed through a symbol
+(or a letter) with the <tt>\not</tt> command. For example, not less than is
+<pre> \not&lt;
+</pre>
+and not less than or equal to is
+<pre> \not\leq
+</pre>
+If the slash isn't properly positioned it can be moved by putting a
+<a href="ltx-118.html">math mode spacing command</a> between the <tt>\not</tt>
+and the symbol.
+<p>
+Related topics:
+<ul>
+<li><a href="ltx-406.html">Arrows</a>
+<li><a href="ltx-403.html">Delimiters</a>
+<li><a href="ltx-405.html">Greek letters</a>
+<li><a href="ltx-407.html">Miscellaneous symbols</a>
+<li><a href="ltx-408.html">Variable size symbols</a> (sums, integrals, etc.)
+</ul>
+<hr>
+See also <a href="ltx-115.html">Math Formulas</a>,
+ <a href="ltx-117.html">Math Symbols</a><br>
+Back to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 7Jul 1995.
+</address>
+</body>
+</html>
+
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-405.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-405.html
new file mode 100644
index 00000000000..2d7bda376e4
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-405.html
@@ -0,0 +1,72 @@
+<html>
+<head>
+<title>Greek letters</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Greek letters</font></h1>
+
+These commands may be used only in math mode.
+<h2>Lower case</h2>
+<ul>
+<li><tt>\alpha</tt>
+<li><tt>\beta</tt>
+<li><tt>\gamma</tt>
+<li><tt>\delta</tt>
+<li><tt>\epsilon</tt>
+<li><tt>\varepsilon</tt> (variation, script-like)
+<li><tt>\zeta</tt>
+<li><tt>\eta</tt>
+<li><tt>\theta</tt>
+<li><tt>\vartheta</tt> (variation, script-like)
+<li><tt>\iota</tt>
+<li><tt>\kappa</tt>
+<li><tt>\lambda</tt>
+<li><tt>\mu</tt>
+<li><tt>\nu</tt>
+<li><tt>\xi</tt>
+<li><tt>\pi</tt>
+<li><tt>\varpi</tt> (variation)
+<li><tt>\rho</tt>
+<li><tt>\varrho</tt> (variation, with the tail)
+<li><tt>\sigma</tt>
+<li><tt>\varsigma</tt> (variation, script-like)
+<li><tt>\tau</tt>
+<li><tt>\upsilon</tt>
+<li><tt>\phi</tt>
+<li><tt>\varphi</tt> (variation, script-like)
+<li><tt>\chi</tt>
+<li><tt>\psi</tt>
+<li><tt>\omega</tt>
+</ul>
+<h2>Capital letters</h2>
+<ul>
+<li><tt>\Gamma</tt>
+<li><tt>\Delta</tt>
+<li><tt>\Theta</tt>
+<li><tt>\Lambda</tt>
+<li><tt>\Xi</tt>
+<li><tt>\Pi</tt>
+<li><tt>\Sigma</tt>
+<li><tt>\Upsilon</tt>
+<li><tt>\Phi</tt>
+<li><tt>\Psi</tt>
+<li><tt>\Omega</tt>
+</ul>
+<hr>
+See also:
+See also <a href="ltx-115.html">Math Formulas</a>,
+ <a href="ltx-117.html">Math Symbols</a>
+<ul>
+<li><a href="ltx-401.html">Accents</a>
+<li><a href="ltx-402.html">Ligatures and Non-English symbols</a>
+<li><a href="ltx-407.html">Miscellaneous symbols</a>
+<li><a href="mathfonts.html">Math fonts and styles</a>
+</ul>
+Back to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 7 Jul 1995.
+</address>
+</body>
+</html>
+
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-406.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-406.html
new file mode 100644
index 00000000000..24c60007829
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-406.html
@@ -0,0 +1,58 @@
+<html>
+<head>
+<title>Arrows</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Arrows</font></h1>
+Latex provides commands for all sorts of arrows. The following commands
+are used only in math mode.
+<p>
+In general the command names are created from "left", "right", "up", or
+"down". "leftright" gives a double headed arrow.
+Prefacing with "long" gives a longer arrow. Capitalizing the
+first letter gives a double-shanked arrow.
+<p>
+Examples are
+<ul>
+<li><tt>\leftarrow</tt>
+<li><tt>\Leftarrow</tt>
+<li><tt>\longleftarrow</tt>
+<li><tt>\Longleftarrow</tt>
+<p>
+<li><tt>\rightarrow</tt>
+<li><tt>\Rightarrow</tt>
+<li><tt>\longrightarrow</tt>
+<li><tt>\Longrightarrow</tt>
+<p>
+<li><tt>\leftrightarrow</tt>
+<li><tt>\Leftrightarrow</tt>
+<li><tt>\longleftrightarrow</tt>
+<p>
+<li><tt>\uparrow</tt>
+<li><tt>\downarrow</tt>
+<li><tt>\Uparrow</tt>
+<p>
+<li><tt>\nearrow</tt> points from southwest to northeast
+<li><tt>\searrow</tt> points from northwest to southeast
+<li><tt>\swarrow</tt> points from northeast to southwest
+<li><tt>\nwarrow</tt> points from southeast to northwest
+</ul>
+The <a href="stackrel.html"><tt>\stackrel</tt></a> command is
+useful for putting things over or under your arrow.
+<hr>
+See also:
+See also <a href="ltx-115.html">Math Formulas</a>,
+ <a href="ltx-117.html">Math Symbols</a>
+<ul>
+<li><a href="ltx-404.html">Binary and relational operators</a>
+<li><a href="ltx-405.html">Greek letters</a>
+<li><a href="ltx-407.html">Miscellaneous symbols</a>
+<li><a href="ltx-408.html">Variable size symbols</a> (sums, integrals, etc.)
+</ul>
+Back to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 7 Jull 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-407.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-407.html
new file mode 100644
index 00000000000..e2340140b50
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-407.html
@@ -0,0 +1,90 @@
+<html>
+<head>
+<title>Miscellaneous symbols</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Miscellaneous symbols</font></h1>
+
+<h2>Some symbols for math</h2>
+The following symbols are also used only in math mode
+<ul>
+<li><tt>\aleph</tt> Hebrew aleph
+<li><tt>\hbar</tt> h-bar, Planck's constant
+<li><tt>\imath</tt> variation on "i"; no dot
+<ul><li>See also <a href="ltx-401.html"><tt>\i</tt></a></ul>
+<li><tt>\jmath</tt> variation on "j"; no dot
+<ul><li>See also <a href="ltx-401.html"><tt>\j</tt></a></ul>
+<li><tt>\ell</tt> script (loop) "l"
+<li><tt>\wp</tt> fancy script lowercase "P"
+<li><tt>\Re</tt> script capital "R" ("Real")
+<li><tt>\Im</tt> script capital "I" ("Imaginary")
+<li><tt>\prime</tt> prime (also obtained by typing <tt>'</tt>)
+<li><tt>\nabla</tt> inverted capital Delta
+<li><tt>\surd</tt> radical (square root) symbol
+<li><tt>\angle</tt> angle symbol
+<li><tt>\forall</tt> "for all" (inverted A)
+<li><tt>\exists</tt> "exists" (left-facing E)
+<li><a href="ltx-164.html"><tt>\backslash</tt></a> backslash
+<li><tt>\partial</tt> partial derivative symbol
+<li><tt>\infty</tt> infinity symbol
+<li><tt>\triangle</tt> open triangle symbol
+<li><tt>\Box</tt> open square
+<li><tt>\Diamond</tt> open diamond
+<p>
+<li><tt>\flat</tt> music: flat symbol
+<li><tt>\natural</tt> music: natural symbol
+<li><tt>\sharp</tt> music: sharp symbol
+<p>
+<li><tt>\clubsuit</tt> playing cards: club suit symbol
+<li><tt>\diamondsuit</tt> playing cards: diamond suit symbol
+<li><tt>\heartsuit</tt> playing cards: heart suit symbol
+<li><tt>\spadesuit</tt> playing cards: space suit symbol
+</ul>
+
+<h2>Some other symbols</h2>
+The following symbols can be used in any mode.
+<ul>
+<li><tt>\dag</tt> dagger
+<li><tt>\ddag</tt> double dagger
+<li><tt>\S</tt> section symbol
+<li><tt>\P</tt> paragraph symbol
+<li><tt>\copyright</tt> copyright symbol
+<li><tt>\pounds</tt> British pound sterling symbol
+</ul>
+
+<h2>Calligraphic style letters</h2>
+Twenty-six calligraphic letters are provided (the upper case alphabet). These
+can only be used in math mode.<p>
+In LaTeX 2.09 they are produced with the <tt>\cal</tt>
+<a href="declarations.html">declaration</a>
+<pre>
+ <tt>${\cal A}$</tt>
+</pre>
+
+ In LaTeX2e they are obtained with the <tt>\mathcal</tt> command:
+<pre>
+ <tt>$\mathcal{CAL}$</tt>
+</pre>
+<hr>
+See also:
+See also <a href="ltx-115.html">Math Formulas</a>,
+ <a href="ltx-117.html">Math Symbols</a>,
+ <a href="ltx-119.html">Math Miscellany</a>
+<ul>
+<li><a href="ltx-406.html">Arrows</a>
+<li><a href="ltx-403.html">Delimiters</a>
+<li><a href="ltx-404.html">Binary and relational operators</a>
+<li><a href="ltx-405.html">Greek letters</a>
+<li><a href="ltx-408.html">Variable size symbols</a> (sums, integrals, etc.)
+<li><a href="mathfonts.html">Math fonts and styles</a>
+<p>
+<li><a href="stackrel.html"><tt>\stackrel</tt></a> (putting things above
+ other things)
+</ul>
+Back to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 7 Jul 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-408.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-408.html
new file mode 100644
index 00000000000..ede35a461ac
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-408.html
@@ -0,0 +1,79 @@
+<html>
+<head>
+<title>Variable size symbols</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Variable size symbols</font></h1>
+The size of some mathematical symbols, notably summation signs, product signs, and
+integral signs, depends on the environment in which they
+appear (i.e., <tt>displaymath</tt> as opposed to <tt>math</tt> environments;
+see <a href="ltx-115.html">Math Formulas</a> and
+<a href="mathfonts.html">Math Fonts and Styles</a>).
+<p>
+These include
+<ul>
+<li><tt>\sum</tt> a summation sign (capital sigma)
+<li><tt>\prod</tt> a product (capital pi)
+<li><tt>\coprod</tt> a coproduct (inverted capital pi)
+<li><tt>\int</tt> an integral sign
+<li><tt>\oint</tt> a surface (circular) integral sign
+<li><tt>\bigcup</tt> big "U"
+<li><tt>\bigcap</tt> big inverted "U"
+<li><tt>\bigvee</tt> big "V"
+<li><tt>\bigwedge</tt> big inverted "V"
+<li><tt>\bigodot</tt> big "O" with dot at center
+<li><tt>\bigotimes</tt> big "O" with cross inside
+<li><tt>\bigoplus</tt> big "O" with a + inside
+<li><tt>\biguplus</tt> big "U" with a + inside
+</ul>
+The <a href="ltx-319.html"><tt>\sqrt</tt></a> command also produces a variable
+size symbol appropriate for the size of hte radicand argument.
+<p>
+<p>
+The "limits" associated with these symbols are entered as
+<a href="ltx-179.html">subscripts</a> for entries appearing below the
+symbol and as <a href="ltx-180.html">superscripts</a> for entries appearing
+above the symbol.
+For example the sum from n=0 to infinity of x<sub>n</sub> would be entered as
+<pre>
+ \sum_{n=0}^{<a href="ltx-407.html">\infty</a>} x_{n}
+</pre>
+The actual placement of the limits depends on whether this
+is in <tt>displaymath</tt> mode in which case they are placed below/above
+or in <tt>math</tt> mode in running text in which case they are placed as regular
+subscripts and superscripts.
+<p>
+Note that it is possible to treat several of these symbols (a common example
+would be a double sum) as a single symbol for placing limits above and/or
+below by using the <a href="stackrel.html#mathop"><tt>\mathop</tt></a> command.
+<p>
+"Hats" and "tildes" over symbols which stretch (as best they can) to
+the correct size for their arguments are produced by
+<a href="ltx-401.html#math"><tt>\widehat</tt> and <tt>\widetilde</tt></a>.
+<hr>
+Related topics:
+<ul>
+<li><a href="ltx-403.html">Delimiters</a> can be made variable sized
+<li><a href="mathfonts.html">Math fonts and styles</a>
+<p>
+<li><a href="ltx-115.html">Math Formulas</a>
+<li><a href="ltx-117.html">Math Symbols</a>
+<li><a href="ltx-119.html">Math Miscellany</a>
+<li><a href="ltx-406.html">Arrows</a>
+<li><a href="ltx-404.html">Binary and relational operators</a>
+<li><a href="ltx-409.html">Math function symbols</a>
+<li><a href="ltx-407.html">Miscellaneous symbols</a>
+<p>
+<li><a href="ltx-403.html#big"><tt>\left</tt></a>
+<li><a href="ltx-403.html#big"><tt>\right</tt></a>
+<li><a href="ltx-319.html"><tt>\sqrt</tt></a>
+<li><a href="stackrel.html"><tt>\stackrel</tt> and <tt>\mathop</tt></a>
+</ul>
+Back to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 28 Nov 1995.
+</address>
+</body>
+</html>
+
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-409.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-409.html
new file mode 100644
index 00000000000..468ee7918d0
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-409.html
@@ -0,0 +1,76 @@
+<html>
+<head>
+<title>Math function symbols</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Math function symbols</font></h1>
+Functions like "log" or "cos" are normally used in math mode. However, in
+math mode strings of letters are treated as a product of variables, which
+would normally be displayed in math italics rather than a text font which
+would be appropriate for these functions. To
+get proper display of such functions they are generated with LaTeX commands.
+<p>
+Some of these commands are
+<ul>
+<li><tt>\arccos</tt>
+<li><tt>\arcsin</tt>
+<li><tt>\arctan</tt>
+<li><tt>\cos</tt>
+<li><tt>\cosh</tt>
+<li><tt>\cot</tt>
+<li><tt>\coth</tt>
+<li><tt>\csc</tt>
+<li><tt>\deg</tt>
+<li><tt>\det</tt>
+<li><tt>\dim</tt>
+<li><tt>\exp</tt>
+<li><tt>\gcd</tt>
+<li><tt>\hom</tt>
+<li><tt>\inf</tt>
+<li><tt>\ker</tt>
+<li><tt>\lg</tt>
+<li><tt>\lim</tt>
+<li><tt>\liminf</tt>
+<li><tt>\limsup</tt>
+<li><tt>\ln</tt>
+<li><tt>\log</tt>
+<li><tt>\max</tt>
+<li><tt>\min</tt>
+<li><tt>\sec</tt>
+<li><tt>\sin</tt>
+<li><tt>\sinh</tt>
+<li><tt>\sup</tt>
+<li><tt>\tan</tt>
+<li><tt>\tanh</tt>
+</ul>
+Two commands are provided for the "modulus" function
+<ul>
+<li><tt>\bmod</tt>
+<li><tt>\pmod{}</tt>
+</ul>
+The former would be used to write "a mod b" as
+<pre> a \bmod b
+</pre>
+and the latter, which requires an argument that is displayed in parentheses,
+would be used to write "n = i (mod j)" as
+<pre> n = i \pmod{j}
+</pre>
+
+<p>
+Related topics:
+<ul>
+<li><a href="ltx-406.html">Arrows</a>
+<li><a href="ltx-404.html">Binary and relational operators</a>
+<li><a href="ltx-403.html">Delimiters</a>
+<li><a href="ltx-407.html">Miscellaneous symbols</a>
+<li><a href="ltx-408.html">Variable size symbols</a>
+</ul>
+<hr>
+Back to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 25 April 1995.
+</address>
+</body>
+</html>
+
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-420.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-420.html
new file mode 100644
index 00000000000..a2f26a22b28
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-420.html
@@ -0,0 +1,26 @@
+<html>
+<head><title>Help On LaTeX Abstract Environment</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Abstract environment</font></h1>
+In the article or report <a href="ltx-22.html">document style</a>, the
+abstract is produced by the abstract environment:
+<pre>
+ <tt>\begin{abstract}
+ Abstract text, set in the usual
+ LaTeX paragraph mode.
+
+ An empy line, for example, specifies
+ a new paragraph
+ \end{abstract}</tt>
+</pre>
+The abstract is typically set with a narrower page margin.
+
+<hr>
+See also <a href="ltx-27.html">LaTeX environments</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 8 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-421.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-421.html
new file mode 100644
index 00000000000..8f92d8e2580
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-421.html
@@ -0,0 +1,54 @@
+<html>
+<head><title>Help On LaTeX Displaymath</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Displaymath</font></h1>
+
+ There are four environments that put LaTeX in math mode:
+ <a href="ltx-115.html#math">math</a>,
+ displaymath, <a href="ltx-223.html">eqnarray</a>,
+ and <a href="ltx-224.html">equation</a>.
+ The math environment is for formulas that
+ appear right in the text. The displaymath and equation environments are
+ for formulas that appear on their own line; they differ only insofar
+ as the latter prints an equation number. LaTeX will <strong>not</strong>
+ break lines in displaymath or equation environments unless told to do
+ so with a <a href="ltx-181.html"><tt>\\</tt></a> command.
+<p>
+ The displaymath environment can be entered by
+<pre>
+ <tt>\begin{displaymath}
+ math equation \\
+ second line of math equation
+ \end{displaymath}</tt>
+</pre>
+Because displaymath may be used frequently to display relatively
+short equations, there are convenient alternative forms:
+<pre>
+ <tt>\[ displayed math equation \]</tt>
+</pre>
+or (the following does not seem to be well documented, but appears to work)
+<pre>
+ <tt>$$ dispalyed math equation $$</tt>
+</pre>
+<hr>
+Related topics
+<ul>
+<li><a href="ltx-115.html#math">Math environment</a>
+<li><a href="ltx-223.html">Eqnarray environment</a>
+<li><a href="ltx-224.html">Equation environment</a>
+<p>
+<li><a href="ltx-130.html">LaTeX Modes</a>
+<p>
+<li><A href="ltx-117.html">Math Symbols</A>
+<li><A href="ltx-179.html">Subscripts</A> and
+ <a href="ltx-180.html">Superscripts</a>
+<li><A href="ltx-118.html">Spacing in Math Mode</A>
+<li><A href="ltx-119.html">Math Miscellany</A>
+</ul>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-43.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-43.html
new file mode 100644
index 00000000000..61de1ff618a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-43.html
@@ -0,0 +1,107 @@
+<html>
+<head><title>Help On LaTeX picture</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Picture environment</font></h1>
+<p>
+<p><pre>
+ \begin{picture}(width,height)(x-offset,y-offset)
+ ...
+ picture commands
+ ...
+ \end{picture}
+</pre>
+<p>
+ The picture environment allows you to create just about any kind of
+ picture you want containing text, lines, arrows and circles. You tell
+ LaTeX where to put things in the picture by specifying their
+ coordinates. A coordinate is a number that may have a decimal point
+ and a minus sign (<tt>-</tt>), for example, 5, 2.3, or -3.1416. A coordinate
+ specifies a length in multiples of the unit length
+ <a href="unitlength.html"><tt>\unitlength</tt></a>, so if
+ <tt>\unitlength</tt> has been set to 1cm, then the coordinate 2.54 specifies a
+ length of 2.54 centimeters. You can change the value of <tt>\unitlength</tt>
+ anywhere you want, using the
+ <a href="ltx-88.html"><tt>\setlength</tt></a> command,
+ but it should be set before the beginning of the picture environment since
+ strange things may happen if you try changing it inside the picture environment.
+<p>
+ A position is a pair of coordinates, such as (2.4,-5), specifying the
+ point with x-coordinate = 2.4 and y-coordinate = -5. Coordinates are
+ specified in the usual way with respect to an origin, which is
+ normally at the lower-left corner of the picture. Note that when a
+ position appears as an argument, it is not enclosed in braces; the
+ parentheses serve to delimit the argument.
+<p>
+ The picture environment has one mandatory argument, which
+ specifies the size of the picture. The environment
+ produces a rectangular box with width and height determined by this
+ argument's two values.
+<p>
+ The picture environment also has an optional position argument,
+ following the size argument, that can change the origin. (Unlike
+ ordinary optional arguments, this argument is not contained in square
+ brackets.) The optional argument gives the coordinates of the point at
+ the lower-left corner of the picture (thereby determining the origin).
+ For example, if
+ <a href="unitlength.html"><tt>\unitlength</tt></a> has been set to 1mm,
+ the command
+<p>
+<p><pre>
+ \begin{picture}(100,200)(10,20)
+</pre>
+ produces a picture of width 100 millimeters and height 200
+ millimeters, whose lower-left corner is the point (10,20) and whose
+ upper-right corner is therefore the point (110,220).
+ Typically one initially omits the optional argument, leaving the
+ origin at the lower-left corner. If you then want to modify your
+ picture by shifting everything, you just add the appropriate optional
+ argument.
+<p>
+ The environment's mandatory argument determines the nominal size of
+ the picture. This need bear no relation to how large the picture
+ really is; LaTeX will happily allow you to put things outside the
+ picture, or even off the page. The picture's nominal size is used by
+ TeX in determining how much room to leave for it.
+<p>
+ Everything that appears in a picture is drawn by the
+ <a href="ltx-296.html"><tt>\put</tt></a> command. The
+ command
+<pre>
+ \put (11.3,-.3){obj}
+</pre>
+ puts the object specified by <tt>obj</tt> in the picture, with its reference
+ point at coordinates (11.3,-.3). The reference points for various
+ objects will be described below.
+<p>
+ The <a href="ltx-296.html"><tt>\put</tt></a>
+ command creates an LR box. You can put anything in the text
+ argument of the <tt>\put</tt> command that you'd put into the argument
+ of an <a href="ltx-265.html"><tt>\mbox</tt></a>
+ (or related) command. When you do this, the reference point
+ will be the lower left corner of the box.
+<p>
+See also
+<ul>
+<li><A href="ltx-210.html"><tt>\circle</tt></A>
+<li><A href="ltx-216.html"><tt>\dashbox</tt></A>
+<li><A href="ltx-236.html"><tt>\frame</tt></A>
+<li><A href="ltx-237.html"><tt>\framebox</tt></A>
+<li><A href="ltx-257.html"><tt>\line</tt></A>
+<li><A href="ltx-259.html"><tt>\linethickness</tt></A>
+<li><A href="ltx-262.html"><tt>\makebox</tt></A>
+<li><A href="ltx-269.html"><tt>\multiput</tt></A>
+<li><A href="ltx-286.html"><tt>\oval</tt></A>
+<li><A href="ltx-296.html"><tt>\put</tt></A>
+<li><A href="ltx-314.html"><tt>\shortstack</tt></A>
+<li><a href="unitlength.html"><tt>\unitlength</tt></a>
+<li><A href="ltx-341.html"><tt>\vector</tt></A>
+<p>
+<li><a href="ltx-86.html">Lengths</a>
+</ul>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 12 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-430.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-430.html
new file mode 100644
index 00000000000..6d7c78c1e97
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-430.html
@@ -0,0 +1,25 @@
+<html>
+<head>
+<title>Help On LaTeX Dashes</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Dashes</font></h1>
+LaTeX provides for three sizes of dashes which are indicated by
+typing one, two, or three consecutive dashes in the text.
+<ul>
+<li>a hyphenation dash, as in X-ray, is a single dash
+<li>a dash between limits, as in 1--2, is a double dash
+<li>a parenthetical punctuation --- such as this --- is a triple dash
+</ul>
+Note that this applies to paragraph mode. In math mode each <tt>-</tt>
+is interpreted as a minus sign.
+<hr>
+See also <a href="ltx-143.html">Spaces and boxes</a>,
+ <a href="ltx-130.html">Modes</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 11 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-431.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-431.html
new file mode 100644
index 00000000000..3dd0c9f8d0f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-431.html
@@ -0,0 +1,47 @@
+<html>
+<head><title>Help On LaTeX \&lt;space&gt;</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\&lt;space&gt;</font></h1>
+LaTeX normally leaves a little extra space after sentences. However, it
+uses a rather simple rule for determining whether a period ends a
+sentence: it assumes that periods end sentences <em>unless</em> they
+follow an upper case letter. To let LaTeX know that a period does
+<em>not</em> end a sentence after, for example, an abbreviation, use:
+<p>
+ <tt>\&lt;space&gt;</tt>
+<p>
+For example,
+<pre>
+ <tt>Jones, et al.\ (1993) ...</tt>
+</pre>
+Such a space may also be needed after a text-producing command,
+such as one defined with <a href="ltx-18.html"><tt>\newcommand</tt></a>.
+As an example, consider
+<pre>
+ <tt>\newcommand{\water}{H$_2$O}
+ \water, \water\ everywhere, but not a drop ...</tt>
+</pre>
+The first <tt>\water</tt> command is terminated by the comma;
+note that LaTeX does not leave a space between the first <tt>\water</tt>
+and the comma -- as desired -- and the trailing space is treated as an
+interword space. However, the second <tt>\water</tt> command
+is terminated by the space, but LaTeX would not leave an extra space after
+this, running "H<sub>2</sub>Owater" into one word, except for the
+trailing <tt>\ </tt>.
+<p>
+An alternate way to indicate the end of a command so that a trailing
+space is interpreted as an interword space is to use braces:
+<pre>
+ <tt>\water, \water{} everywhere, ...</tt>
+</pre>
+<hr>
+See <a href="ltx-432.html"><tt>\@.</tt></a> for the opposite case<br>
+See also <A href="ltx-99.html">Line and Page Breaking</A>,
+ <a href="ltx-143.html">Spaces and Boxes</a><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 26 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-432.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-432.html
new file mode 100644
index 00000000000..325075dc2b7
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-432.html
@@ -0,0 +1,27 @@
+<html>
+<head><title>Help On LaTeX \@</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\@</font></h1>
+LaTeX normally leaves a little extra space after punctuation, such as the
+period which ends a sentence. However, it
+uses a rather simple rule for determining whether a period ends a
+sentence: it assumes that periods end sentences <em>unless</em> they
+follow an upper case letter. To tell LaTeX to insert extra space after
+punctuation which follows an upper case letter, precede the punctuation
+by <tt>\@</tt>.
+<p>
+For example:
+<pre>
+ <tt>It is I\@.</tt>
+</pre>
+would not be considered to be a sentence by LaTeX except for the <tt>\@</tt>.
+<hr>
+See also <a href="ltx-431.html"><tt>\&lt;space&gt;</tt></a> for the opposite case<br>
+See also <A href="ltx-99.html">Line and Page Breaking</A><br>
+Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 10 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-433.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-433.html
new file mode 100644
index 00000000000..69134f59518
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-433.html
@@ -0,0 +1,26 @@
+<html>
+<head>
+<title>Help On Quotation Marks</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Quotation Marks</font></h1>
+LaTeX distinguishes between left (<tt>`</tt>) and right (<tt>'</tt>)
+quotation marks; the former corresponds to the "grave" generally found
+to the left of the numbers at top of the keyboard, and the latter
+corresponds to the usual single quote mark.
+<p>
+These symbols, by themselves, produce left and right single quotes.
+<p>
+Double quote are produced by typing two in a row: <tt>``text''</tt>.
+<p>
+To separate consecutive single and double quotes, use a
+<a href="ltx-185.html"><tt>\,</tt></a>.
+<hr>
+See also <a href="ltx-143.html">Spaces and boxes</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 10 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-434.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-434.html
new file mode 100644
index 00000000000..3851d4499d9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-434.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+<title>Help Comments in file</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Comments in file</font></h1>
+You can insert comments into the LaTeX input (*.tex) file. Anything following
+a percent sign (<tt>%</tt>) until the end of the line is ignored by the
+LaTeX processor.
+<p>
+In fact, the <tt>%</tt> ends a line without generating a space;
+an end-of-line in LaTeX input is normally equivalent to a space.
+Thus, for example, it allows one to split a word
+over lines without inserting a break. For example
+<pre>
+ <tt> this is an extr%
+ ordinarily long word</tt>
+</pre>
+would produce "this is an extraordinarily long word" with no breaks.
+However, a <strong>command</strong> cannot be split over lines this way.
+<hr>
+See also <a href="ltx-164.html">Special Characters</a>,
+<a href="input.html">Input to LaTeX</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 1 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-58.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-58.html
new file mode 100644
index 00000000000..d5624173888
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-58.html
@@ -0,0 +1,60 @@
+<html>
+<head><title>Help On LaTeX tabbing</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">tabbing</font></h1>
+<p><pre>
+ \begin{tabbing}
+ text \= more text \= still more text \= last text \\
+ second row \&gt; \&gt; more \\
+ ....
+ ....
+ \end{tabbing}
+</pre>
+ The tabbing environment provides a way to align text in columns. It
+ works by setting tab stops and tabbing to them much the way you do
+ with an ordinary typewriter.
+<p>
+ The <a href="ltx-68.html">tabular</a> environment also aligns text in
+ columns, but there are several important differences.
+ <ul>
+ <li> The tabular environment can be used in any <a href="ltx-130.html">mode</a>
+ whereas the tabbing environment can be used only in paragraph
+ <a href="ltx-130.html">mode</a> and it starts a new paragraph.
+<p>
+ <li>The tabular
+ environment generates a box, which LaTeX treats as one (albeit very large)
+ letter; it cannot be split across pages. A long tabbing environment can
+ be split across pages.
+<p>
+ <li>The width of columns in a tabular environment is determined automatically
+ by LaTeX; in the tabbing environment this is done by setting tab stops.
+</ul>
+<H2>Tabbing commands</H2>
+<ul>
+<li><A href="ltx-187.html"><tt>\=</tt></A> (set tab)
+<li><A href="ltx-188.html"><tt>\&gt;</tt></A> (advance to next tab stop)
+<li><A href="ltx-189.html"><tt>\&lt;</tt></A>
+<li><A href="ltx-190.html"><tt>\+</tt></A> (indent; move margin right)
+<li><A href="ltx-182.html"><tt>\-</tt></A> (unindent; move margin left)
+<li><A href="ltx-191.html"><tt>\'</tt></A>
+<li><A href="ltx-192.html"><tt>\`</tt></A>
+<li><a href="ltx-181.html"><tt>\\</tt></a> (end of line; newline)
+<li><A href="ltx-251.html"><tt>\kill</tt></A> (ignore preceding text; use only
+ for spacing)
+</ul>
+The <a href="ltx-241.html"><tt>\hspace</tt></a> command is useful for
+controlling horizontal space in the tabbing environment.
+<p>
+Note that the commands <tt>\=</tt>, <tt>\'</tt>, and <tt>\`</tt>
+normally produce <a href="ltx-401.html">accents</a> over the subsequent
+letter. These commands are redefined in the tabbing environment;
+in this environment it is possible to get the accents by using
+<tt>\a=</tt>, <tt>\a'</tt>, and <tt>\a`</tt>, respectively.
+</body>
+<hr>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 28 Nov 1995.
+</address>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-67.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-67.html
new file mode 100644
index 00000000000..eb5e016f1b1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-67.html
@@ -0,0 +1,49 @@
+<html>
+<head><title>Help On LaTeX table</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">table</font></h1>
+<p>
+<p><pre>
+ \begin{table}[placement]
+
+ body of the table
+
+ <a href="caption.html">\caption{table title}</a>
+ \end{table}
+</pre>
+<p>
+
+ Tables are objects that are not part of the normal text, and are
+ usually "floated" to a convenient place, like the top of a page.
+ Tables will not be split between two pages.
+<p>
+ Note that there is an *-form: <tt>\begin{table*} ... \end{table*}</tt>.
+ This form will put the table in a single column when in two column mode;
+ in one column mode it is identical to the non-* form
+<p>
+ The optional argument [placement] determines where LaTeX will try to
+ place your table. There are four places where LaTeX can possibly put
+ a float:
+<ul>
+<li><TT>h</TT> Here - at the position in the text where the table
+ environment appears.
+<li><TT>t</TT> Top - at the top of a text page.
+<li><TT>b</TT> Bottom - at the bottom of a text page.
+<li><TT>p</TT> Page of floats - on a separate float page, which is a page
+ containing no text, only floats.
+</ul>
+ The standard report and article styles use the default placement <tt>tbp</tt>.
+<p>
+ The body of the table is made up of whatever text, LaTeX commands,
+ etc., you wish.
+<p>
+ The <a href="caption.html"><tt>\caption</tt></a> command allows you to title your table.
+<hr>
+ See also <a href="ltx-68.html">tabular environment</a><br>
+ Go to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 2 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-68.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-68.html
new file mode 100644
index 00000000000..3926aafd653
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-68.html
@@ -0,0 +1,149 @@
+<html>
+<head><title>Help On LaTeX tabular</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">tabular</font></h1>
+<pre>
+ \begin{tabular}[pos]{cols}
+ column 1 entry & column 2 entry ... & column n entry \\
+ ...
+ ...
+ \end{tabular}
+</pre>
+
+or
+
+<pre>
+ \begin{tabular*}{width}[pos]{cols}
+ column 1 entry & column 2 entry ... & column n entry \\
+ ...
+ ...
+ \end{tabular*}
+</pre>
+Note that the *-form takes an additional <tt>width</tt> mandatory argument
+which specifies the width of the tabular environment; in the regular form
+the width is determined by LaTeX from the contents of the tabular environment.
+<p>
+ These environments produce a box consisting of a sequence of rows of
+ items, aligned vertically in columns. The mandatory and optional
+ arguments consist of:
+<ul>
+ <li><TT>cols</TT> Specifies the column formatting. It consists of a
+ sequence of the following specifiers, at least one for each
+ of the columns.
+ <ul>
+ <li><tt>l</tt> - A column of left-aligned items.
+ <li><tt>r</tt> - A column of right-aligned items.
+ <li><tt>c</tt> - A column of centered items.
+ <li><tt>p{wd}</tt> - Produces a column which can be multiple lines,
+ with each item typeset in a parbox
+ of width wd. It works as if each item were the argument of a
+ <a href="ltx-294.html"><tt>\parbox[t]{wd}</tt></a>
+ command. However, a
+ <a href="ltx-181.html"><tt>\\</tt></a>
+ may not appear in the item, except in
+ the following situations: (i) inside an environment like
+ minipage, array, or tabular, (ii) inside an explicit <tt>\parbox,</tt>
+ or (iii) in the scope of a
+ <a href="ltx-30.html"><tt>\centering</tt></a>,
+ <a href="ltx-300.html"><tt>\raggedleft</tt></a>, or
+ <a href="ltx-301.html"><tt>\raggedright</tt></a>
+ declaration. The latter declarations must appear
+ inside braces or an environment when used in a <tt>p</tt>-column
+ element.
+<p>
+ <li><tt>|</tt> - A vertical line the full height and depth of the
+ environment.
+ <li><tt>@{text}</tt> - This inserts <tt>text</tt> in every row.
+ An @-expression
+ suppresses the intercolumn space normally inserted between
+ columns; any desired space between the inserted text and the
+ adjacent items must be included in <tt>text</tt>.
+ To force the spacing between two columns to be <tt>wdth</tt>,
+ use an <tt>@{\hspace{wdth}}</tt> between the column specifiers.
+ An <tt>\extracolsep{wd}</tt>
+ command in an @-expression causes an extra space of width <tt>wd</tt>
+ to appear to the left of all subsequent columns, until
+ countermanded by another <tt>\extracolsep</tt> command. Unlike
+ ordinary intercolumn space, this extra space is not
+ suppressed by an @-expression. An <tt>\extracolsep</tt> command can
+ be used only in an @-expression in the <tt>cols</tt> argument.
+ <li><tt>*{num}{cols}</tt> - Equivalent to num copies of cols, where num is
+ any positive integer and cols is any list of
+ column-specifiers, which may contain another *-expression.
+ </ul>
+<p>
+ <li><TT>pos</TT> Specifies the vertical position of the whole tabular
+ environment (recall that it is a <a href="ltx-143.html">box</a>).
+ The default is to align the box on the center of the environment.
+ <ul>
+ <li><tt>t</tt> - align on top row
+ <li><tt>b</tt> - align on bottom row
+ </ul>
+<p>
+ <li><TT>width</TT> Specifies the width of the tabular* environment. There
+ must be rubber space between columns that can stretch to fill out
+ the specified width.
+</ul>
+
+ Note that <a href="ltx-181.html"><tt>\\</tt></a>
+ must be used to specify the end of each line of the table, except the last.
+ (It must be used after the last line if an
+ <a href="ltx-239.html"><tt>\hline</tt></a> command is used to put a line
+ at the bottom of the table.)
+
+<h2>Aligning on decimal points: an example of the @ specifier</h2>
+In scientific tables it is often desirable to align the columns on a decimal
+point. This can be done using the <tt>@</tt> <tt>col</tt> specifier and
+breaking the number into the integral part in a right-justified column and
+the fractional part in a left-justified column:
+<pre>
+ The following input: will display as:
+
+ <tt>\begin{tabular}{r@{.}l}
+ 3&14159\\ 3.14159
+ 16&2\\ 16.2
+ 123$456\\ \end{tabular} 123.456 </tt>
+</pre>
+Note that the decimal point is replaced by the column separator, <tt>&amp;</tt>
+and that the <tt>@</tt>suppresses the intercolumn space
+
+<h2>Another example: centering and controlling table width</h2>
+LaTeX normally sets the width of the tabular environment to "natural"
+width, i.e., determined from the contents of the columns. For narrow
+tables it is sometimes more pleasing to make them wider. The
+<tt>tabular*</tt> environments allows for setting a width; however, it
+is necessary to have rubber space between colunmns that can expand to the
+specified width. This can often be most easily accomplished by using
+an <tt>\extracolsep{wdth}</tt> command in an @ specifier as shown in the
+example below which sets the table width to 75% of the text width.
+<p>
+This example also centers the table.
+<pre>
+ <tt><a href="ltx-29.html">\begin{center}</a> % put inside center environment
+ \begin{tabular*}{0.75<a href="textwidth.html">\textwidth</a>}%
+ {@{\extracolsep{<a href="ltx-238.html">\fill</a>}}cccr}
+ label 1 &amp; label 2 &amp; label 3 &amp; label 4 \\
+ <a href="ltx-239.html">\hline</a> % put a line under headers
+ item 1 &amp; item 2 &amp; item 3 &amp; item 4 \\
+ ...
+ \end{tabular*}
+ \end{center}</tt>
+</pre>
+<H2>See also</H2>
+<ul>
+<li><A href="ltx-214.html">\cline</A>
+<li><A href="ltx-239.html">\hline</A>
+<li><A href="ltx-268.html">\multicolumn</A>
+<li><A href="ltx-346.html">\vline</A>
+</ul>
+<hr>
+See also <a href="ltx-67.html">table environment</a>,
+ <a href="ltx-202.html">array environment</a>,
+ <a href="ltx-58.html">tabbing environment</a>.<br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 22 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-73.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-73.html
new file mode 100644
index 00000000000..f89c5573985
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-73.html
@@ -0,0 +1,78 @@
+<html>
+<head><title>Help On LaTeX thebibliography</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">thebibliography</font></h1>
+<p>
+<p><pre>
+ \begin{thebibliography}{widest-label}
+ <a href="ltx-205.html">\bibitem</a>[label]{cite_key}
+ literature citation ...
+ ....
+ \end{thebibliography}
+</pre>
+ The <tt>thebibliography</tt> environment produces a bibliography or reference
+ list. In the article style, this reference list is labeled
+ "References"; in the report style, it is labeled "Bibliography".
+<p>
+<TT>widest-label</TT> is text that, when printed, is approximately as wide
+ as the widest item label produced by the <tt>\bibitem</tt> command.
+<p>
+The <tt>thebibliography</tt> environment is similar to the
+<a href="ltx-222.html"><tt>enumerate</tt></a> environment, except that
+items are associated with a <a href="ltx-205.html"><tt>\bibitem</tt></a>
+command and can be cross-referenced with the
+<A href="ltx-211.html"><tt>\cite</tt></A> command.
+
+<h2>An example</h2>
+In the text you generate a reference to the bibliographic list as follows:
+<pre>
+ <tt> ... In the running text you might want to refer to
+ Dow &amp; Jones\cite{DandJ} and then again you
+ might not ... </tt>
+</pre>
+The <A href="ltx-211.html"><tt>\cite</tt></a>
+command will produce a sequence number by default,
+or the text from the optional <tt>label</tt> argument of
+<A href="ltx-205.html"><tt>\bibcite</tt></a>; this latter is useful
+if the style is to use, for example,
+the first three letters of the author's last name and a year, as in Dow29.
+<p>
+The associated item in the bibliography section at the end of the
+article would be generated by
+<pre>
+ \begin{thebibliography}{99}
+ ....
+ \bibitem{DandJ} Dow, W. \& Jones, E.A.,
+ {<a href="ltx-249.html">\it</a> Wall Street Journal},
+ March 29, 1929.
+ ....
+ \end{thebibliography}
+</pre>
+Note that the <tt>widest-label</tt> parameter has been set assuming less than
+100 numbered items in the bibliography. Also note that the key,
+<tt>DandJ</tt>, is what connects the <A href="ltx-211.html"><tt>\cite</tt></A>
+and <A href="ltx-205.html"><tt>\bibitem</tt></A>.
+<p>
+If <tt>label</tt> is omitted, the numbers are generated sequentially by
+the <A href="ltx-205.html"><tt>\bibitem</tt></A> commands. Many journals
+want these in order of appearance in the text, so you have to sort this
+list to the proper order.
+
+<H2>See also</H2>
+<ul>
+<li><A href="ltx-205.html">\bibitem</A>
+<li><A href="ltx-211.html">\cite</A>
+<li><A href="ltx-279.html">\nocite</A>
+<li><a href="ltx-222.html">Enumerate</a> environment
+</ul>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 17 May 1995.
+</address>
+</body>
+</html>
+
+
+
+
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-77.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-77.html
new file mode 100644
index 00000000000..c5cf895b2ef
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-77.html
@@ -0,0 +1,21 @@
+<html>
+<head><title>Help On LaTeX theorem</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">theorem</font></h1>
+<pre>
+ \begin{theorem}
+ theorem text
+ \end{theorem}
+</pre>
+ The theorem environment produces "Theorem x" in boldface followed by
+ your theorem text.
+<hr>
+See also <a href="ltx-3.html">Counters</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 27 Sep 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-78.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-78.html
new file mode 100644
index 00000000000..ef866ac8c08
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-78.html
@@ -0,0 +1,29 @@
+<html>
+<head><title>Help On LaTeX titlepage</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">titlepage</font></h1>
+<pre>
+ \begin{titlepage}
+ text
+ \end{titlepage}
+</pre>
+ The titlepage environment creates a title page, i.e. a page with no
+ printed page number or heading. It also causes the following page to
+ be numbered page one. Text and formatting for the title page
+ are left to you.
+<p>
+ The <a href="ltx-330.html"><tt>\today</tt></a> command comes in handy for
+ title pages. Other useful commands include those that change
+ <a href="ltx-176.html">Typefaces</a>, the
+ <a href="ltx-29.html">Centering Environment</a>, and the
+ <a href="ltx-420.html">Abstract Environment</a>.
+<hr>
+See also <a href="ltx-263.html"><tt>\maketitle</tt></a> and
+ <a href="ltx-329.html"><tt>\title</tt></a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 16 Nov 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-79.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-79.html
new file mode 100644
index 00000000000..3e32e32e9ec
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-79.html
@@ -0,0 +1,43 @@
+<html>
+<head><title>Help On LaTeX verbatim</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">verbatim</font></h1>
+<p>
+<p><pre>
+ \begin{verbatim}
+ text
+ \end{verbatim}
+</pre>
+or
+<pre>
+ \begin{verbatim*}
+ text
+ \end{verbatim*}
+</pre>
+ The <tt>verbatim</tt> environment is a paragraph-making environment
+ that gets
+ LaTeX to print exactly what you type in. It turns LaTeX into a
+ typewriter with carriage returns and blanks having the same effect
+ that they would on a typewriter. The output looks exactly as it
+ looks in the input file.
+<p>
+ The difference between <tt>verbatim</tt> and <tt>verbatim*</tt>
+ is that the latter prints spaces as "visual" spaces, i.e.,
+ a short, squat "u".
+<p>
+ The only text which cannot be placed in the <tt>verbatim</tt>
+ environment is the 14-character sequence "\end{verbatim}".
+<p>
+ The <tt>verbatim</tt> environment may <strong>not</strong> be used
+ in the argument of another command. However, it <strong>can</strong> be
+ placed inside a <a href="ltx-267.html">minipage environment</a> which
+ allows you to manipulate it's placement.
+<hr>
+Also see <A href="ltx-342.html">\verb</A><br>
+Back to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 4 Dec 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-81.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-81.html
new file mode 100644
index 00000000000..a2e8c47f6fa
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-81.html
@@ -0,0 +1,20 @@
+<html>
+<head><title>Help On LaTeX verse</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">verse</font></h1>
+<pre>
+ \begin{verse}
+ text
+ \end{verse}
+</pre>
+ The verse environment is designed for poetry, though you may find
+ other uses for it.
+<hr>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 27 Sep 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-82.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-82.html
new file mode 100644
index 00000000000..1fe9fb6bf71
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-82.html
@@ -0,0 +1,31 @@
+<html>
+<head><title>Help On LaTeX Footnotes</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Footnotes</font></h1>
+
+ Footnotes can be produced in one of two ways. They can be produced
+ with one command, the <tt>\footnote</tt> command. They can also be produced
+ with two commands, the <tt>\footnotemark</tt> and the <tt>\footnotetext</tt>
+ commands.
+ See the specific commands, below, for information on why you would use one rather
+ than another.
+<ul>
+<li><A href="ltx-231.html">\footnote</A>
+<li><A href="ltx-232.html">\footnotemark</A>
+<li><A href="ltx-234.html">\footnotetext</A>
+<p>
+<li><a href="ltx-233.html">\footnotesize</a> refers to a font size
+</ul>
+ Note that footnotes associated with "floated objects" like
+ <a href="ltx-67.html">tables</a> or <a href="ltx-225.html">figures</a>
+ may have a problem insofar as the footnote might not follow the floated
+ object. This can be alleviated by putting the object inside a
+ <a href="ltx-267.html">minipage environment</a>.
+<hr>
+See also <a href="ltx-3.html">Counters</a><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 22 Nov 1995.
+</address>
+</body></html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-86.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-86.html
new file mode 100644
index 00000000000..e04c6937cb2
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-86.html
@@ -0,0 +1,111 @@
+<html>
+<head><title>Help On LaTeX Lengths</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Lengths</font></h1>
+<p>
+ A length is a measure of distance. Many LaTeX commands take a length
+ as an argument.
+ A length of one inch is specified by typing <tt>1in</tt> or, to specify
+ the same length using metric units, by typing <tt>2.54cm</tt>.
+
+<h2>Units</h2>
+ LaTeX knows about the following common units.
+<ul>
+<li><tt>in</tt> - inches
+<li><tt>mm</tt> - millimeters
+<li><tt>cm</tt> - centimeters
+<li><tt>pt</tt> - points (about 1/72 inch)
+<li><tt>em</tt> - approximately the width of an "M"
+ <em>in the current font</em>
+<li><tt>ex</tt> - approximately the height of an "x"
+ <em>in the current font</em>
+</ul>
+ And the following less common units
+<ul>
+<li><tt>pc</tt> - pica (12pt/pc)
+<li><tt>bp</tt> - big pt (72bp/in)
+<li><tt>dd</tt> - did&ocirc;t (1157dd=1238pt)
+<li><tt>cc</tt> - c&icirc;cero (12dd/cc)
+<li><tt>sp</tt> - scaled point (65536sp/pt)
+</ul>
+ Lengths may also be negative, for example, <tt>-1.5em</tt>.<br>
+ Note that the number <tt>0</tt> by itself is not a length;
+ it must be specified as <tt>0in</tt> or <tt>0pt</tt>, for example.<br>
+
+<h2><a name="lencmd">Length commands</a></h2>
+ A length may also be specified by a <em>length command</em>. An example
+ is <tt>\parindent</tt>
+ whose value specifies the current width of the indentation
+ which begins paragraphs. Multiples of such length commands may be specified,
+ for example by writing <tt>2.5\parindent</tt> or <tt>-0.1\parindent</tt>.
+<p>
+ Some length commands are
+<ul>
+<li><tt>\parindent</tt> - normal paragraph indentation
+<li><a href="baselineskip.html"><tt>\baselineskip</tt></a> -
+ normal vertical distance between lines in a paragraph
+<ul><li><a href="baselineskip.html"><tt>\baselinestretch</tt></a> - multiplies
+ <tt>\baselineskip</tt></ul>
+<li><a href="parskip.html"><tt>\parskip</tt></a> -
+ the <strong>extra</strong> vertical space between
+ paragraphs
+<li><a href="textwidth.html"><tt>\textwidth</tt></a> -
+ the width of text on the page
+<li><a href="textwidth.html"><tt>\linewidth</tt></a> -
+ width of a line in the <strong>local</strong>
+ environment
+<li><tt>\textheight</tt> - the height of text on the page
+<li><a href="unitlength.html"><tt>\unitlength</tt></a> - units of
+ lenght in <a href="ltx-43.html">Picture</a> Environment
+</ul>
+All length commands are robust and <strong>should not</strong> be preceded
+by a <tt>\protect</tt> command.
+
+<h2><a name="rubber">Rubber lengths</a></h2>
+Most lengths have a fixed value. However, LaTeX also allows for "rubber"
+lengths; these have a natural length plus a degree of elasticity. For
+example, the <tt>\fill</tt> length command has a natural length of zero
+but is infinitely stretchable, so that a space of width <tt>\fill</tt> will
+try to stretch as much as possible. Multiplying a rubber length by a fixed
+factor destroys its elasticity: <tt>0.5\fill</tt> becomes a rigid length
+with a value of zero.
+
+<h2>Setting values for length commands</h2>
+The following LaTeX commands define and manipulate the value of length
+commands
+<ul>
+<li><A href="ltx-87.html"><tt>\newlength</tt></A> - define a new length command
+<p>
+<li><A href="ltx-88.html"><tt>\setlength</tt></A>
+<li><A href="ltx-89.html"><tt>\addtolength</tt></A>
+<p>
+<li><A href="ltx-90.html"><tt>\settowidth</tt></A>
+<li><A href="ltx-311.html"><tt>\settoheight</tt></A>
+<li><A href="ltx-312.html"><tt>\settodepth</tt></A>
+</ul>
+
+<h2>Commands that add space</h2>
+<ul>
+<li>Horizontal space
+ <ul>
+ <li><a href="ltx-238.html"><tt>\hfill</tt></a>
+ <li><a href="ltx-241.html"><tt>\hspace</tt></a>
+ </ul>
+<li>Vertical Space
+ <ul>
+ <li><a href="ltx-198.html"><tt>\addvspace</tt></a>
+ <li><a href="ltx-318.html"><tt>\smallskip</tt></a>
+ <li><a href="ltx-266.html"><tt>\medskip</tt></a>
+ <li><a href="ltx-206.html"><tt>\bigskip</tt></a>
+ <li><a href="ltx-345.html"><tt>\vfill</tt></a>
+ <li><a href="ltx-347.html"><tt>\vspace</tt></a>
+ </ul>
+</ul>
+<hr>
+Back to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 23 Oct 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-87.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-87.html
new file mode 100644
index 00000000000..d0cfcc367d2
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-87.html
@@ -0,0 +1,21 @@
+<html>
+<head><title>Help On LaTeX \newlength</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\newlength</font></h1>
+<p>
+ <tt>\newlength{\gnat}</tt>
+<p>
+
+ The <tt>\newlength</tt> command defines the mandatory argument, <tt>\gnat</tt>,
+ as a
+ length command with a value of 0in. An error occurs if a <tt>\gnat</tt>
+ command already exists.
+<hr>
+See <a href="ltx-86.html">Lengths</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 8 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-88.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-88.html
new file mode 100644
index 00000000000..54623e8ddb3
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-88.html
@@ -0,0 +1,22 @@
+<html>
+<head><title>Help On LaTeX \setlength</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\setlength</font></h1>
+<p>
+ <tt>\setlength{len-cmd}{len}</tt>
+<p>
+
+ The <tt>\setlength</tt> command is used to set the value of a length command,
+ <tt>len-cmd</tt>, which is specified as the first argument.
+ The <tt>len</tt> argument can be expressed in any terms of length LaTeX
+ understands, i.e., inches (in), millimeters (mm), points (pt), etc.
+
+<hr>
+See <a href="ltx-86.html">Lengths</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 9 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-89.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-89.html
new file mode 100644
index 00000000000..f6b77694576
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-89.html
@@ -0,0 +1,27 @@
+<html>
+<head><title>Help On LaTeX \addtolength</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\addtolength</font></h1>
+<p>
+ <tt>\addtolength{len-cmd}{len}</tt>
+<p>
+
+ The <tt>\addtolength</tt> command increments a
+ <a href="ltx-86.html#lencmd">length command</a>,
+ <tt>len-cmd</tt>, which is specified by the first argument, by the amount
+ specified in the <tt>len</tt> argument. It can be a negative amount.
+<p>
+As an example,
+<pre>
+ <tt>\addtolength{<a href="parskip.html">\parskip</a>}{-.1\parskip}</tt>
+</pre>
+decreases the value of <tt>\parskip</tt> by 10%.
+<hr>
+See <a href="ltx-86.html">Lengths</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 9 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-90.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-90.html
new file mode 100644
index 00000000000..ee987ef0a6a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-90.html
@@ -0,0 +1,21 @@
+<html>
+<head><title>Help On LaTeX \settowidth</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\settowidth</font></h1>
+<p>
+ <tt>\settowidth{len-cmd}{text}</tt>
+<p>
+
+ The <tt>\settowidth</tt> command sets the value of a
+ <a href="ltx-86.html#lencmd">length command</a>, <tt>len-cmd</tt>,
+ which is specified as the first argument, equal to
+ the width of the <tt>text</tt> argument in the current font.
+<hr>
+See <a href="ltx-86.html">Lengths</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 9 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-91.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-91.html
new file mode 100644
index 00000000000..1aaa58df93a
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-91.html
@@ -0,0 +1,78 @@
+<html>
+<head><title>Help On LaTeX Letters</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Letters</font></h1>
+ You can use LaTeX to typeset letters, both personal and business. The
+ letter document style is designed to make a number of letters at once,
+ although you can make just one if you so desire.
+<p>
+ Your *.tex source file has the same
+ <a href="input.html#structure">minimum commands</a> as the other
+ document styles, i.e., you must have the following commands as a
+ minimum:
+<pre>
+ <tt>\documentstyle{letter}
+ <a href="ltx-315.html">\signature{Your Name}</a>
+ <a href="ltx-93.html">\address{Return address}</a>
+ \begin{document}
+ ... First letter ...
+ ... Second letter ...
+ ...
+ \end{document}</tt>
+</pre>
+Note that the <tt>\address</tt> and <tt>\signature</tt> commands are
+<a href="declarations.html">declarations</a> and follow the usual
+scope rules. They are generally placed in the preamble, as indicated here,
+and apply to all letters in the file.
+<p>
+ Each letter is a letter <a href="ltx-27.html">environment</a>,
+ whose argument is the name and
+ address of the recipient. For example, a typical letter might have<pre>
+ <tt>\begin{letter}{Mr. John Doe \\ 2345 Jones St.
+ \\ Oakland, CA 91123}
+ <a href="ltx-97.html">\opening{Dear John,}</a>
+ ...
+ text of letter
+ ...
+ <a href="ltx-98.html">\closing{Best regards,}</a>
+ \end{letter}</tt>
+</pre>
+ The letter itself begins with the
+ <a href="ltx-97.html"><tt>\opening</tt></a> command. The text of the
+ letter follows. It is typed as ordinary LaTeX input. Commands that
+ make no sense in a letter, like <tt>\chapter,</tt> don't work. The letter
+ closes with a
+ <a href="ltx-98.html"><tt>\closing</tt></a> command.
+<h2>Closing matter</h2>
+ Several commands may be used after the <tt>\closing</tt> command:
+<ul>
+<li><tt>\ps{PS text}</tt> command produces a "P.S."
+<li><tt>\cc{text}</tt> command produces the usual "cc: text".
+<li><tt>\encl{list of enclosures}</tt> command produces an "encl:" list
+</ul>
+<h2>Date</h2>
+The <a href="ltx-330.html"><tt>\today</tt></a> command is used by the
+letter <a href="ltx-22.html">document style</a> to generate the date.
+If you wish a fixed date, rather than the current date, you should use<pre>
+ <tt><a href="ltx-18.html">\renewcommand</a>{\today}{Month day, year}</tt>
+</pre>
+This may be put in the preamble if it is to apply to all letters in the
+file, or just before the <tt>\opening</tt> command if it is to apply to
+just that letter.
+<hr>
+See also
+<ul>
+<li><a href="ltx-93.html"><tt>\address</tt></a>
+<li><A href="ltx-98.html"><tt>\closing</tt></A>
+<li><a href="ltx-261.html"><tt>\location</tt></a>
+<li><A href="ltx-97.html"><tt>\opening</tt></A>
+<li><a href="ltx-315.html"><tt>\signature</tt></a>
+<li><a href="ltx-323.html"><tt>\telephone</tt></a>
+</ul>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<address>
+Revised: Sheldon Green, 24 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-93.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-93.html
new file mode 100644
index 00000000000..28fcacada52
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-93.html
@@ -0,0 +1,22 @@
+<html>
+<head><title>Help On LaTeX \address</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\address</font></h1>
+<tt>\address{Return address}</tt>
+<p>
+ The return address, as it should appear on the letter and the
+ envelope. Separate lines of the address should be separated by
+<a href="ltx-181.html"><tt>\\</tt></a>
+ commands. If you do not make an <tt>\address</tt> declaration, then the
+ letter will be formatted for copying onto your organization's
+ standard letterhead. If you give an <tt>\address</tt> declaration, then the
+ letter will be formatted as a personal letter.
+<hr>
+See <a href="ltx-91.html">Letters</a><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 28 Apr 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-97.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-97.html
new file mode 100644
index 00000000000..226af36881b
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-97.html
@@ -0,0 +1,20 @@
+<html>
+<head><title>Help On LaTeX \opening</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\opening</font></h1>
+ <tt>\opening{text}</tt>
+<p>
+ The letter begins with the <tt>\opening</tt> command. The mandatory argument,
+ <tt>text</tt>, is what ever text you wish to start your letter, for example:
+<pre>
+ <tt>\opening{Dear John,}</tt>
+</pre>
+</body>
+<hr>
+See <a href="ltx-91.html">Letters</a><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 24 Jun 1995.
+</address>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-98.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-98.html
new file mode 100644
index 00000000000..e505cb235b9
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-98.html
@@ -0,0 +1,23 @@
+<html>
+<head><title>Help On LaTeX \closing</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\closing</font></h1>
+ <tt>\closing{text}</tt>
+<p>
+ The letter closes with a <tt>\closing</tt> command, where the
+mandatory argument, <tt>text</tt> is the desired text, for example:
+<pre>
+ <tt>\closing{Sincerely yours,}</tt>
+</pre>
+The signature will be taken from the
+<a href="ltx-315.html"><tt>\signature</tt></a> declaration.
+<hr>
+See <a href="ltx-91.html">Letters</a><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 24 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-99.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-99.html
new file mode 100644
index 00000000000..c83b00674c1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-99.html
@@ -0,0 +1,40 @@
+<html>
+<head><title>Help On LaTeX Line and Page Breaking</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Line and Page Breaking</font></h1>
+ The first thing LaTeX does when processing ordinary text is to
+ translate your input file into a string of glyphs and spaces. To
+ produce a printed document, this string must be broken into lines, and
+ these lines must be broken into pages. In some environments, you do
+ the line breaking yourself with the <tt>\\</tt> command, but LaTeX usually does
+ it for you.
+
+<H2>Commands for line and page breaks</H2>
+<ul>
+<li><A href="ltx-181.html">\\</A>
+<li><A href="ltx-182.html">\-</A>
+<li><A href="ltx-244.html">\hyphenation</A>
+<p>
+<li><A href="ltx-212.html">\cleardoublepage</A>
+<li><A href="ltx-213.html">\clearpage</A>
+<p>
+<li><A href="ltx-275.html">\newline</A>
+<li><A href="ltx-258.html">\linebreak</A>
+<li><A href="ltx-281.html">\nolinebreak</A>
+<li><A href="ltx-276.html">\newpage</A>
+<li><A href="ltx-289.html">\pagebreak</A>
+<li><A href="ltx-283.html">\nopagebreak</A>
+</ul>
+
+</body>
+<hr>
+For page numbering, see <a href="ltx-3.html">Counters</a><br>
+To refer to a page number in the text, see
+ <a href="ltx-291.html"><tt>\pageref</tt></a><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 20 Oct 1995.
+</address>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/ltx-tar.html b/Master/texmf-doc/doc/english/latex2e-html/ltx-tar.html
new file mode 100644
index 00000000000..ddb8132efbe
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/ltx-tar.html
@@ -0,0 +1,102 @@
+<html>
+<head>
+<title>Hypertext LaTeX Help files</title>
+</head>
+<body bgcolor="#ffffff"
+text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Hypertext LaTeX Help files</font></h1>
+
+<p>If you find Hypertext Help with LaTeX to be useful, you are welcome to
+obtain the complete set of files and install them on your own machine.
+Retrieval and installation instructions are given below.
+They may be installed for use either with a webserver, which
+will ease network traffic and probably give you faster access,
+or they may be installed as local files which may be "read"
+with an HTML viewer, such as Mosaic, Cello, Lynx, Netscape, etc.
+without the necessity of a network connection.</p>
+
+<p>To facilitate off-network usage,
+the files generally have only local (within the same directory) hypertext
+links. All links to "external" URLs, including much LaTeX information
+available on the Web, have been restricted to one file in this set other than
+the current one.</p>
+
+<p>Although it is not required, if you make these files available on a public
+Web server, please send a note to
+<a href="mailto:webmaster@giss.nasa.gov">webmaster@giss.nasa.gov</a>
+so that we can add you to the list of
+<a href="mirror.html">mirror sites</a>.</p>
+
+
+<hr>
+
+<p>The files are available via anonymous ftp as a
+<a href="ftp://ftp.giss.nasa.gov/pub/sgreen/latex/latex.tar.Z">Unix-compressed
+tar file</a> (about 125 KByte) or
+<a href="ftp://ftp.giss.nasa.gov/pub/sgreen/latex/latex.tar.gz">gzipped
+tar file</a> (about 85 KByte).
+Your Web browser can probably retrieve the files via the above link, or they
+can be retrieved by anonymous ftp to ftp.giss.nasa.gov.
+Login as anonymous and give your e-mail address as the password,
+then switch to binary mode and download the file by issuing the
+commands:</p>
+
+<pre>
+ bin
+ cd pub/sgreen/latex
+ get filename.tar.Z
+</pre>
+
+<p>or</p>
+
+<pre>
+ bin
+ cd pub/sgreen/latex
+ get filename.tar.gz
+</pre>
+
+<p>After downloading the file on your local machine, issue the
+Unix commands:</p>
+
+<pre>
+ uncompress filename.tar.Z
+ tar -xf filename.tar
+</pre>
+
+or
+
+<pre>
+ gunzip filename.tar.gz
+ tar -xf filename.tar
+</pre>
+
+
+<p>(Note: some Web software, such as Mosaic, will automatically
+uncompress the file after retrieving it, in which case save it as
+<code>filename.tar</code> and execute only the <code>tar -xf</code>
+line above.) This will create a subdirectory named
+<code>latex</code> in your current directory which contains the complete
+set of html files and which requires about 1 MByte of disk space.
+The "Introduction" file is <code>index.html</code> and the Table of
+Contents page is <code>ltx-2.html</code>. </p>
+
+<p>You may rename or move the entire <code>latex</code> subdirectory
+if desired; all file references are local to this directory so links
+should continue to work.</p>
+
+<hr>
+
+<ul>
+ <li><a href="index.html">Back to the Introduction</a>
+ <li><a href="ltx-2.html">On to the Table of Contents</a>
+</ul>
+
+<hr>
+
+<address>
+Page revised: 1998-05-21, RBS
+</address>
+
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/mathfonts.html b/Master/texmf-doc/doc/english/latex2e-html/mathfonts.html
new file mode 100644
index 00000000000..e5b78af08ee
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/mathfonts.html
@@ -0,0 +1,87 @@
+<html>
+<head><title>Help On LaTeX math fonts and styles</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">Math fonts and styles</font></h1>
+
+<h2>Math styles</h2>
+The following applies to both LaTeX 2.09 and LaTeX2e.
+<p>
+There are four styles used in typesetting <a href="ltx-115.html">math
+formulas</a> which affect the size and certain formatting parameters
+(notably the placement of sub and superscripts on <a href="ltx-408.html">
+variable size symbols</a>).
+<ul>
+<li><tt>\textstyle</tt> - default in the running text and in
+ <a href="ltx-202.html">array</a> environment
+<li><tt>\displaystyle</tt> - default for displayed equations
+<li><tt>\scriptstyle</tt> - default for first-level sub and superscripts
+<li><tt>\scriptscriptstyle</tt> - default for higher-level sub and superscripts
+</ul>
+All four of these may be used in math mode as
+<a href="declarations.html">declarations</a> to <strong>force</strong> the
+type size and formatting to a style other than what would normally be used.
+<p>
+For example, to get a superscript that is the same size as the running text:
+<pre> <tt>$e^{\textstyle -E/kT}</tt>$ </pre>
+<p>
+As another example, the limits on a summation symbol are normally placed
+below and above the symbol in <tt>display</tt> style and in normal sub and
+superscript position in <tt>textstyle</tt>. One could <strong>force</strong>
+the below/above placement in running text by using:
+<pre> <tt>\displaystyle $<a href="ltx-408.html">\sum</a>_{n=0}^<a href="ltx-407.html">\infty</a> x_n$</tt></pre>
+although it should be noted that this might cause LaTeX to leave extra
+space between the text lines which might not be desirable.
+
+<h2>LaTeX 2.09 fonts</h2>
+The regular <a href="ltx-177.html">type style</a> declarations can be
+used in <a href="ltx-115.html#math">math mode</a>.
+They affect only letters (including upper case <a href="ltx-405.html">Greek</a>
+letters) but not symbols
+(or lower case <a href="ltx-405.html">Greek</a> letters). Two additional style
+<a href="declarations.html">declarations</a> which can be used
+<strong>only</strong> in math mode are
+<ul>
+<li><tt>\mit</tt>
+<li><tt><a href="ltx-407.html">\cal</a></tt>
+</ul>
+The former is math italic style; it spaces letters as if they were words,
+however, not as if they were each separate math symbols.
+The latter produces upper case calligraphic letters.
+
+<h2>LaTeX2e math fonts</h2>
+The following <a href="declarations.html">declarations</a> change the style
+only of letters, numbers, and uppercase <a href="ltx-405.html">Greek</a>.
+<ul>
+<li><tt>\mathit</tt> - same as <tt>\mit</tt> in 2.09 (see above)
+<li><tt>\mathrm</tt> - Roman
+<li><tt>\mathbf</tt> - Bold face
+<li><tt>\mathsf</tt> - San Serif
+<li><tt>\mathtt</tt> - Typewriter style
+<li><tt><a href="ltx-407.html">\mathcal</a></tt> - Calligraphic
+</ul>
+All of these produce spacing appropriate for text; they do not interpret each
+letter as a separate math symbol.
+<p>
+The <a href="boldmath.html"><tt>\boldmath</tt></a> declaration causes
+everything (including symbols) in a formula to be in a bold font.
+Note that this differs somewhat from the same declaration in 2.09 which
+did not affect some symbols.
+<hr>
+Related topics
+<ul>
+<li><a href="ltx-115.html">Math Formulas</a>
+<li><a href="ltx-176.html">Typefaces</a>
+ <ul><li><a href="ltx-177.html">Styles</a>
+ <li><a href="ltx-178.html">Sizes</a>
+ <li><a href="fonts2e.html">LaTeX2e fonts</a>
+ </ul>
+<li><a href="ltx-408.html">Variable size symbols</a>
+<li><a href="ltx-407.html">Miscellaneous symbols</a>
+</ul>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 2 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/mirror.html b/Master/texmf-doc/doc/english/latex2e-html/mirror.html
new file mode 100644
index 00000000000..fd87330c1bf
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/mirror.html
@@ -0,0 +1,125 @@
+<html>
+<head><title>Hypertext Help with LaTeX - Mirror Sites</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+
+<h1><font size="-2">Hypertext Help with LaTeX</font><br>
+<font color="#cc0000">Mirror Sites</font></h1>
+
+<p>Copies of <strong>Hypertext Help with LaTeX</strong> are available
+from several other Web sites which might provide faster access depending
+on your location.
+However, these files may not be quite as up-to-date as the original files at
+<a href="http://www.giss.nasa.gov/latex/">NASA Goddard Institute for
+Space Studies, New York, NY, USA</a>.</p>
+
+<p>The following mirror sites were last verified on December 3, 1998.
+Please contact
+<a href="mailto:webmaster@giss.nasa.gov">webmaster@giss.nasa.gov</a>
+if you discover that one of these sites is no longer available or
+if you know of additional sites that should be listed.</p>
+
+
+<dl>
+
+<dt><b>Australia</b>
+<dd><a href="http://ecco.bsee.swin.edu.au/text/hyperlatex/">Swinburne
+ University of Technology</a>
+ <!-- verified 19981203 -->
+
+<dt><b>Brazil</b>
+<dd><a href="http://www.cos.ufrj.br/~gabriel/latex/">Universidade Federal
+ do Rio de Janeiro</a>
+ <!-- verified 19981203 -->
+
+<dt><b>Canada</b>
+<dd><a href="http://www.cs.ualberta.ca/~vladimir/latex/">Dept. Of Computing
+ Science, University of Alberta</a>
+ <!-- verified 19981203 -->
+
+<dd><a href="http://sault.qucis.queensu.ca/wright/latex/">Dept. Of Computing
+ and Information Science, Queen's University</a>
+ <!-- verified 19981203 -->
+
+<dt><b>Chile</b>
+<dd><a href="http://www.dim.uchile.cl/documents/giss-latex/">Departamento
+ de Ingenier&#237;a Matem&#225;tica, Universidad de Chile</a>
+ <!-- verified 19981203 -->
+
+<dt><b>Denmark</b>
+<dd><a href="http://www.astro.ku.dk/help/LaTeX/">Niels Bohr Institute for
+ Astronomy, Physics and Geophysics, University of Copenhagen</a>
+ <small>(May 1995 copy)</small>
+ <!-- verified 19981203 -->
+
+<dt><b>Germany</b>
+<dd><a href="http://www-ti.informatik.uni-tuebingen.de/~frech/latex/">Arbeitsbereich
+ Technische Informatik, University of T&#252;bingen</a>
+ <!-- verified 19981203 -->
+
+<dt><b>India</b>
+<dd><a href="http://www.aero.iitm.ernet.in/dcf/LaTeX/">Indian Institute
+ of Technology, Madras</a>
+ <!-- verified 19981203 -->
+
+<dt><b>Ireland</b>
+<dd><a href="http://www.eeng.dcu.ie/local-docs/latex-help/">School of
+ Electonic Engineering, Dublin City University</a>
+ <!-- verified 19981203 -->
+
+<!-- not responding 19981203
+<dt><b>Mexico</b>
+<dd><a href="http://ixmati.uam.mx/comp/LaTeX/LaTeXHelp">UAM-Iztapalapa</a>
+-->
+
+<!-- not responding 19981203
+<dt><b>Netherlands</b>
+<dd><a href="http://www.fys.ruu.nl/~fange/LaTeX/">Universiteit Utrecht</a>
+-->
+
+<dt><b>Norway</b>
+<dd><a href="http://mitra.phys.uit.no/edb/latex/">University of
+ Troms&#248;</a>
+ <small>(May 1995 copy)</small>
+ <!-- verified 19981203 -->
+
+<dt><b>Poland</b>
+<dd><a href="http://zon8.physd.amu.edu.pl/LaTeX/">Institute of Physics,
+ Adam Mickiewicz University</a>
+ <small>(November 1995 copy)</small>
+ <!-- verified 19981203 -->
+
+<dt><b>Portugal</b>
+<dd><a href="http://www.astro.up.pt/LaTeX/">Center for Astrophysics,
+ University of Porto</a>
+ <!-- verified 19981203 -->
+
+<dt><b>Russia</b>
+<dd><a href="http://www.izmiran.rssi.ru/doc/latex/">Institute of
+ Terrestrial Magnetism, Ionosphere and Radiowave Propagation</a>
+ <!-- verified 19981203 -->
+
+<dt><b>Sweden</b>
+<dd><a href="http://www.ce.chalmers.se/~case/Help/LaTeX/">Dept.
+ of Computer Engineering, Chalmers University of Technology</a>
+ <!-- verified 19981203 -->
+
+<dt><b>Switzerland</b>
+<dd><a href="http://www.ee.ethz.ch/isg/tardis/soft/latex/green/">Dept.
+ of Electrical Engineering, Federal Institute of Technology</a>
+ <!-- verified 19981203 -->
+
+<dt><b>United States</b>
+<dd><a href="http://www.giss.nasa.gov/latex/">NASA Goddard Institute
+ for Space Studies</a>
+
+</dl>
+
+<hr>
+
+<address>
+Page revised: 1998-12-03, RBS
+</address>
+
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/parskip.html b/Master/texmf-doc/doc/english/latex2e-html/parskip.html
new file mode 100644
index 00000000000..0f22ae706d1
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/parskip.html
@@ -0,0 +1,27 @@
+<html>
+<head><title>Help On LaTeX \parskip</title>
+</head>
+<body bgcolor="#ffffff"
+text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\parskip</font></h1>
+<tt>\parskip</tt> is the extra vertical space inserted before a
+paragraph. It has a natural length of zero but should be a
+<a href="ltx-86.html#rubber">rubber length</a> so that it may
+be stretched in a
+<a href="ltx-227.html">flushbottom</a> environment.
+<p>
+To increase <tt>\parskip</tt> to skip a line between paragraphs one
+could use
+<pre>
+ <tt><a href="ltx-89.html">\addtolength</a>{<a href="parskip.html">\parskip</a>}{<a href="baselineskip.html">\baselineskip}</a></tt>
+</pre>
+<hr>
+See also: <A href="ltx-86.html">Lengths</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 23 Oct 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/refs.html b/Master/texmf-doc/doc/english/latex2e-html/refs.html
new file mode 100644
index 00000000000..b8d15e4f741
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/refs.html
@@ -0,0 +1,53 @@
+<html>
+<head><title>LaTeX Reference Books</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">LaTeX Reference Books</font></h1>
+
+
+<p The standard reference source for LaTeX is
+<cite>A Document Preparation System: LaTeX</cite>,
+by Leslie Lamport, ISBN 0-201-52983-1, published
+jointly by the American Mathematical Society and Addison-Wesley
+Publishing Company. The 2nd edition, 1994, describes LaTeX2e, the
+second widely distributed version of LaTeX. The first edition of this
+book, which appeared in 1985, described LaTeX 2.09.</p>
+
+<p>The standard reference for what goes on inside TeX is
+<cite>The TeXbook</cite>
+by Donald E. Knuth, ISBN 0-201-13448-9, published jointly by
+the American Mathematical Society and Addison-Wesley.</p>
+
+<p>M. Goossens, F. Mittelbach, and A. Samarin,
+<cite>The LaTeX Companion</cite>, published
+by Addison-Wesley, ISBN 0-201-54199-8 (essential for the serious
+LaTeX hackers).</p>
+
+<p>L. Botway and C. Biemesderfer,
+<cite>LaTeX Command Summary</cite>, published by
+the TeX Users Group, Providence, RI is a good companion.</p>
+
+<p>A. Diller,
+<cite>LaTeX Line by Line</cite>, published by Wiley.</p>
+
+<p>N. Walsh,
+<cite><a href="http://www.ora.com/catalog/tex/">Making TeX Work</a></cite>,
+published by O'Reilly &amp; Associates, ISBN 1-56592-051-1.</p>
+
+<hr>
+
+<p>Other information is available <a href="externals.html">on the Web</a>.</p>
+
+<hr>
+
+<p>Back to the <a href="index.html">Introduction</a><br>
+Go to the <a href="ltx-2.html">Table of Contents</a></p>
+
+<hr>
+
+<address>
+Revised: RBS, 20 February 1997<br>
+Thanks to Anthony Stone (Cambridge) for suggestions.
+</address>
+
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/stackrel.html b/Master/texmf-doc/doc/english/latex2e-html/stackrel.html
new file mode 100644
index 00000000000..1ae9cb1bc03
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/stackrel.html
@@ -0,0 +1,90 @@
+<html>
+<head><title>Help On LaTeX \stackrel and \mathop</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\stackrel</font></h1>
+<p>
+This can be used to stack something above something else; used in math mode.
+<pre>
+ <tt>\stackrel{top}{bot}</tt>
+</pre>
+The first argument, <tt>top</tt>, is typset immediately above the
+second argument, <tt>bot</tt>; the former is set in the same
+math style as a superscript.
+<p>
+For example
+<pre>
+ <tt>H$_2$CO$_3$ $\stackrel{<a href="ltx-304.html">\rm</a> heat}
+ {<a href="ltx-406.html">\longrightarrow}</a>$ H$_2$O + CO$_2$</tt>
+</pre>
+will produce something like
+<pre><tt>
+ heat
+ H CO ------> H O + CO
+ 2 3 2 2
+</tt></pre>
+Note that the the <a href="ltx-304.html"><tt>\rm</tt></a> declaration is used
+so that "heat" is set in Roman face and not math italics.
+<h1><font size="-2">Hypertext Help with LaTeX</font><br>a name="mathop">\mathop</a></h1>
+This command does not seem to be well documented but appears to work,
+at least in current versions of LaTeX 2.09.
+<p>
+The argument is considered to be a single <a href="ltx-408.html">variable
+sized math symbol</a> for purposes of placing limits below
+(<a href="ltx-179.html">subscripts</a>) and above
+(<a href="ltx-180.html">superscripts</a>) in
+<a href="mathfonts.html">display math</a> style. For example,
+<pre>
+ <tt>\mathop{\sum \sum}_{i,j=1}^{N} a_i a_j</tt>
+</pre>
+would produce something like
+<pre>
+ N
+ --- ---
+ \ \
+ / / a a
+ --- --- i j
+ i,j
+</pre>
+It is possible to create <strong>two rows</strong> of "subscripts" by using
+a similar construction: The first row is created as subscripts of the symbol
+in the usual way and a lower row is created by placing this whole construct
+as the argument of a <tt>\mathop</tt> command with its own subscript. For
+example
+<pre>
+ <tt>\mathop{\sum_{i,j=1}^{N}}_{i&gt;j}</tt>
+</pre>
+would produce something like
+<pre>
+ N
+ ---
+ \
+ /
+ ---
+ i,j=1
+ i&gt;j
+</pre>
+
+<hr>
+Related topics
+<ul>
+<li><a href="ltx-115.html">Math Formulas</a>
+ and <a href="ltx-117.html">Math Symbols</a>
+<li><a href="ltx-406.html">Arrows</a>
+<li><a href="ltx-404.html">Binary and relational opertors</a>
+<li><a href="ltx-223.html">Eqnarray Environment</a>
+<li><a href="ltx-224.html">Equation Environment</a>
+<li><a href="ltx-421.html">Displaymath Environment</a>
+<li><a href="mathfonts.html">Math Fonts and Styles</a>
+<p>
+<li><a href="ltx-287.html"><tt>\overbrace</tt></a>
+<li><a href="ltx-288.html"><tt>\overline</tt></a>
+<li><a href="ltx-335.html"><tt>\underbrace</tt></a>
+<li><a href="ltx-336.html"><tt>\underline</tt></a>
+</ul>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 15 Aug 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/textwidth.html b/Master/texmf-doc/doc/english/latex2e-html/textwidth.html
new file mode 100644
index 00000000000..912c11d74be
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/textwidth.html
@@ -0,0 +1,21 @@
+<html>
+<head><title>Help On LaTeX \textwidth \linewidth</title>
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\textwidth \linewidth</font></h1>
+<tt>\textwidth</tt> is the normal width of the text on a page. It should
+generally be changed only in the <a href="input.html#structure">preamble</a>.
+<p>
+<tt>\linewidth</tt> is the width of lines in the current environment. Normally
+equal to <tt>\textwidth</tt>, it may be different within an environment such
+as <a href="lists.html">list</a> or
+<a href="ltx-298.html">quote</a> environments.
+<hr>
+See also: <A href="ltx-86.html">Lengths</A><br>
+Return to the <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 23 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/toc.html b/Master/texmf-doc/doc/english/latex2e-html/toc.html
new file mode 100644
index 00000000000..5f975e1a36f
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/toc.html
@@ -0,0 +1,26 @@
+<html>
+<head><title>Help On LaTeX \tableofcontents</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\tableofcontents</font></h1>
+<p>
+ A table of contents is produced with the
+ <tt>\tableofcontents</tt> command. You
+ put the command right where you want the table of contents to go;
+ LaTeX does the rest for you.
+ Entries are taken from the <a href="ltx-141.html">Sectioning</a> commands.
+<p>
+ <tt>\tableofcontents</tt> produces a heading, but it does not
+ automatically start a new page. If you want a new page after the
+ table of contents, include a
+ <a href="ltx-276.html"><tt>\newpage</tt></a> command after the
+ <tt>\tableofcontents</tt> command.
+<p>
+<hr>
+See also <a href="ltx-170.html">Table of Contents</a><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 5 Jun 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/trivlist.html b/Master/texmf-doc/doc/english/latex2e-html/trivlist.html
new file mode 100644
index 00000000000..e73e8d4ba85
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/trivlist.html
@@ -0,0 +1,30 @@
+<html>
+<head><title>Help On LaTeX trivlist</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">trivlist</font></h1>
+<p>
+<p><pre>
+ <tt>\begin{trivlist}
+ \item First item
+ ....
+ \end{trivlist}</tt>
+</pre>
+This is ike the <a href="ltx-260.html">List Environment</a>, but
+uses the currently defined values of
+list-making parameters. It is normally used to define an environment with a
+single item, with an <a href="item.html"><tt>\item</tt></a> command
+as part of the environment definition.
+<hr>
+See <a href="lists.html">Lists</a>,
+ <a href="ltx-260.html">List Environment</a>,
+ <a href="ltx-27.html">Environments</a><br>
+Back to the <a href="ltx-2.html">Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 1 Jun 1995.
+</address>
+</body>
+</html>
+
+
+
diff --git a/Master/texmf-doc/doc/english/latex2e-html/unitlength.html b/Master/texmf-doc/doc/english/latex2e-html/unitlength.html
new file mode 100644
index 00000000000..f1bd14691d4
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/unitlength.html
@@ -0,0 +1,24 @@
+<html>
+<head><title>Help On LaTeX \unitlength</title></head>
+<body bgcolor="#ffffff" text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+<h1><font size="-2">Hypertext Help with LaTeX</font><br><font color="#cc0000">\unitlength</font></h1>
+ <tt>\unitlength</tt>
+<p>
+ The <tt>\unitlength</tt> command is a <a href="ltx-86.html">Length
+ command</a>. It defines the units used in the
+ <a href="ltx-43.html">Picture Environment</a>
+<p>
+The default value is 1 point (approximately 1/72 inch) but it may
+be changed using the <a href="ltx-88.html"><tt>\setlength</tt></a>
+command.
+<hr>
+See also <A href="ltx-27.html">Environments</A>,
+ <A href="ltx-43.html">Picture Environment</A><br>
+See also <a href="ltx-86.html">Lengths</a><br>
+Return to <a href="ltx-2.html">LaTeX Table of Contents</a>
+<hr>
+<address>
+Revised: Sheldon Green, 12 May 1995.
+</address>
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/latex2e-html/versions.html b/Master/texmf-doc/doc/english/latex2e-html/versions.html
new file mode 100644
index 00000000000..922e5070f98
--- /dev/null
+++ b/Master/texmf-doc/doc/english/latex2e-html/versions.html
@@ -0,0 +1,83 @@
+<html>
+<head>
+<title>LaTeX 2.09 and LaTeX2e</title>
+</head>
+<body bgcolor="#ffffff"
+text="#000000" link="#000099" vlink="#cc0000" alink="#cc0000">
+
+<h1><font size="-2">Hypertext Help with LaTeX</font><br>
+<font color="#cc0000">LaTeX 2.09 and LaTeX2e</font></h1>
+
+<p>The following information is excerpted from "A Document Preparation System:
+LaTeX" by Leslie Lamport, 2nd edition and/or "LaTeX2e for authors",
+by the LaTeX3 Project Team, June 1994.</p>
+
+<p>LaTex2e was produced in an attempt to reconcile the various, sometimes
+incompatble, "flavors" of LaTeX which were developing. Some of these
+included the New Font Selection Scheme (NFSS), SLITeX (for slides),
+AASTeX (the American Astronomical Society macros), etc. The major
+change to LaTeX2e is the method for trying to make the use of add-on
+packages more uniform by the introduction of "classes"
+and "packages." Most of the new commands are the "initial" commands,
+i.e., those which can appear only <em>before</em> the
+<tt>\documentclass</tt> command.</p>
+
+<p>A few standard LaTeX commands have been modified and a few new commands
+added, notably:</p>
+
+<ul>
+ <li><a href="ltx-18.html"><tt>\newcommand</tt></a> (and related) commands,
+ which now allow for an optional argument in newly defined commands
+ <li><a href="ensuremath.html"><tt>\ensuremath</tt></a>
+</ul>
+
+
+<h2>Document Styles and Style Options</h2>
+
+<p>In LaTeX2e, documents begin with a <tt>\documentclass</tt> command. This
+replaces the LaTeX 2.09
+<a href="ltx-22.html"><tt>\documentstyle</tt></a> command. The
+<tt>\usepackage</tt> command has been added and is used in conjunction
+with <tt>\documentclass</tt>.</p>
+
+<p> aTeX2e still understands the old
+<a href="ltx-22.html"><tt>\documentstyle</tt></a> command; if it is
+encountered, LaTex2e enters <em>compatibility
+mode</em> in which most 2.09 input files should still be processed properly.</p>
+
+
+<h2>Type Styles and Sizes</h2>
+
+<p>LaTeX 2.09 commands for changing type style, for example, <tt>\tt</tt>,
+still work similarly in LaTeX2e.
+The major difference is that <tt>\sc</tt> and <tt>\sl</tt>
+can no longer be used in math mode (except when LaTeX2e is in
+<em>compatibility mode</em>, see above).</p>
+
+<p>However, <a href="fonts2e.html">a new set of commands</a>
+have been added to allow separate (and independent) specification of </p>
+
+<ul>
+ <li>Shape
+ <li>Series
+ <li>Family
+</ul>
+
+<p>These can be combined to form a wide variety of type styles. If a style
+you specify is not available on your computer, LaTeX2e produce a warning
+message and will substitute a style it thinks is similar.</p>
+
+<hr>
+
+<p>Return to the <a href="index.html">Introduction</a><br>
+Go to the <a href="ltx-2.html">LaTeX Table of Contents</a></p>
+
+<hr>
+
+<address>
+Revised: Sheldon Green, 14 May 1995.
+</address>
+
+
+</body>
+</html>
diff --git a/Master/texmf-doc/doc/english/lshort-english/CHANGES b/Master/texmf-doc/doc/english/lshort-english/CHANGES
new file mode 100644
index 00000000000..e7d67110410
--- /dev/null
+++ b/Master/texmf-doc/doc/english/lshort-english/CHANGES
@@ -0,0 +1,401 @@
+4.17 2005.09.27
+---------------
+* removed eurosans package I did never get it to actually display a symbol with all the
+ other euro packages loaded at the same time.
+* made mentions of Latin and Cyrillic consistently capitalized
+* added note on Latin modern outline fonts to replace EC in pdfs
+* added proc and minimal class
+* mention companion 2nd edition
+* update for ifpdf section from Morten Høgholm
+* print from 4.1 to chapter 5 for pure latex graphics
+
+4.16 2005.05.08
+---------------
+* include properly rendered PDF version with the distribution
+
+4.15 2005.05.08
+----
+* replaced pdfscreen with beamer for presentations. Used text from the french
+ lshort by Daniel Flipo as a basis for this.
+* eqref requires amslatex
+* use \centering to put figure into the center as begin/end{center} adds
+ extra vertical space as suggested in http://www.ctan.org/tex-archive/info/l2tabu/english/l2tabuen.pdf
+* fixed missing , after pdfauthor on page 77
+* added note on texdoc
+* renames longtabular to longtable
+* added notes on greek TeX -- Dimitrios 'sehh' Michelinakis <dimitrios@michelinakis.gr>
+* added notes about pronunciation of ch in ach
+
+4.14 2004.04.04
+----
+* improved explanation of raisebox parameters
+* added pagelayout parameters to index
+* added caption to includegraphics example
+* better examples for math fonts -- Vadym Lepetyuk <lepetyuk@econ.umn.edu>
+* note in pdf fonts section that fonts may work just fine in a modern tex installation
+* have label inside caption
+* rephrase the back-tick grave stuff
+* it's textcomp and not texcomp
+
+4.13
+----
+* added comment on bad rendering of example in Quotes section
+* added section on abstract
+* added note on textcelsius and texdegree in texcomp
+* added section on ignorespaces and ignorespacesafterend
+
+4.12
+----
+* fixed order of hebrwe letters to be 'alphabetic'
+* fixed colons in table 3.7 (Rightarrow was captured by marovsym)
+* added cyrguide bibliogrphay entry back in ...
+* table head in eurotable translated to english
+* remove kees.fig from Makefile
+* some wording fixes to the cirillic section.
+* added pdfstringdefDisableCommands to the preamble to fix some broken bookmarks -- Maksym Polyakov
+* reworded the paragraph on the position argument of the newsavebox command.
+
+4.11
+---
+* added graphic.tex file to source distro
+
+4.10
+----
+* Integrated EuroSymbol table from the french translation by Daniel Flipo
+* Created new chapter: graphics with description on the picture environment by Urs Oswald.
+* Moved Xy pics to the graphics chapter
+* compile with cm-super fonts for now
+* updates to the hyperref syntax table -- Maksym Polyakov
+* rewritten sectons on fontencoding, inputencoding -- Maksym Polyakov
+* section on cyrillic support -- Maksym Polyakov
+* turned CTAN references into URLs as suggested by Maksym Polyakov
+* minor updates to pdfscreen section as suggested by Maksym Polyakov
+* other little spellers
+* get rid of color in ps output ... we do not need it ... tobi
+* added note on p{} to tabular section
+* minor fixes to pdf section --- Matthias Dreier
+* added note on changeing baselineskip instead of using linespread.
+* added example for using the index command.
+
+4.0
+---
+* many minor fixes and edits in pagebreaks
+* added note on cm-super
+* punctuation, wording, big patch from Baron Schwartz
+* Translated and integreated the pdfTeX description from the
+ franch version of lshort.
+* Added descrion of the .fd files
+* \part is available in article too
+* small backports from the french translation
+* drop atop and choose. Replace by binom
+* put notes on Float Placing Permissions where they belong
+* added eqref
+* mention landscape option of default document classes
+* mathcal update
+* changed section headings in first sample
+* drop latex structure figure from the intro as it is way to complex for a beginner to understand.
+* drop LaTeX2e story ... who care these days
+* added note on swiss use of >>guillemets<<
+* added note on eurosymb
+* added note on dvipdf
+* added article on Korean Support
+* added Xy Pic intro
+* more symbols aded -- alex mai
+
+3.21
+----
+From Tobi
+* Added some notes on problems when running latex to section 1.5
+* added oddsidemargin to layout graphics
+* added note on the AE package
+* added extension and font indexes
+* mention optional label in bibitem
+* rephrase hyphenation explanation
+* added \aa to index
+* rearranged PageLayout section
+From Alexander Mai <mai@migdal.ikp.physik.tu-darmstadt.de>
+* mini rewrites for math explanations
+* improved makefile
+* improved table environment spec
+
+From Daniel Flipo <daniel.flipo@univ-lille1.fr>
+* section on french language support
+
+From Maksym Polyakov <polyama@myrealbox.com>
+* parbox is not an evironment
+* line 248 rephrasing
+
+3.20
+----
+From Alexander Mai <st002279@hrzpub.tu-darmstadt.de>
+* tabular presentation of input encodings
+* description of a typical commandline latex session
+* \X{\lvert}&\X{\rvert}&\X{\lVert}&\X{\rVert}
+* bigskip smallskip description
+* new ctan reference
+* cdot for the math section
+
+From Tobi
+* added lshort.ist to insert letters between index sections
+* added comment on plus and minus in setlength
+* degree symbol
+* moved fragile commands section to chapter 2
+* no more bad boxes ... neither over nor underfull
+* no more oscilating text
+
+From Many
+* spelling fixes
+
+3.19
+----
+changed wording on \apendix \frontmatter \backmatter ...
+fixed pagebreaks in math chapter
+
+3.18
+----
+compile fixed for environments where TEXINPUTS is set
+replace the environemnt command with lscommand
+ it seems command is too common .. (Alex Mai)
+
+3.17
+----
+Added more info on the inputenc package.
+Added Section on German Language support. Sections for other languages are welcome.
+Better explanation of the \section[xxx]{yyy} syntax
+Changed wording for Cross Ref
+Changed wording on Quotation Marks
+added note on fbox.
+added \underline command
+\cleardoublepage goes to a righthand page
+added \cline
+added section on package installation contributed by Joseph Hilferty
+
+3.16
+----
+Fixed upload procedure
+Some spelling fixes
+Updated old URLs
+
+3.15
+----
+Integrated a number of spelling and logic fixes by Björn Hvittfeldt
+
+3.14
+----
+Even better Makefile
+Update TODO
+
+3.13
+----
+Better Makefile
+Added description of Today, TeX, LaTeX, LaTeXe
+Added description of file extensions you will find when working with latex
+Some CTAN references fixed
+Better explanation for hyphenation command
+Added paragraph on typesetting tildes ...
+Added example with multicol and borders (|c|)
+Added Hamster disadvantage ...
+How todo a tilde
+
+3.12
+----
+Replaced first section (TeX) as suggested by Michael John Downes in order to
+be more in sync with the real events ...
+
+3.11
+----
+better explanation for sloppy/fussy
+\sin and frinds in index
+pointer to whitespace after non argument commands information in custom.tex
+
+3.10
+----
+removed some exess files from tar files
+
+
+3.9
+---
+* included a number of minor fixes from Alexander Mai ...
+
+3.8
+---
+* Added sections on \phantom and \protect commands, based
+ on a contribution from Alexander Mai
+* Added section on lines in array environments ... thanks Alex
+* rephrased newcommand section ... again thnaks to Alex
+
+3.7
+---
+* re-release to for some even spelling :-)
+
+3.6
+---
+* released on CTAN ...
+
+3.5
+---
+* even smaller factual errors corrected ...
+
+3.4
+---
+* minor spelling fixes
+
+3.3
+---
+* lots of small patches from Prof Ripley ...
+* fixed compile problem on first run ...
+* properly packaged the whole thing ....
+
+3.2
+---
+
+* added better explanation of the difference between newline and linebreak
+* added about 1000 spell and detail fixed contributed by Hanspeter Schmid
+* added new section: The Structure of Text and Language contributed by
+ Hanspeter Schmid
+* added more verbose explanation about babel and hyphenation
+
+
+3.1
+---
+* Var spell and other fixes. Especially the ftp.shsu.edu reference
+ has been fixed.
+
+3.0
+---
+* Restructuring of the Chapter 4 for didactical reasons ...
+* moved some bits to the new Chapter 5.
+* added 15 pages of new material ...
+
+
+2.3
+---
+* it's slides and not slide ... p8
+* pointer to foiltex added ... p8
+
+2.2 non beta 13/10/97
+---------------------
+* made the thing compile with pdftex and hyperref
+
+David Frey:
+* Sensible copyright notice
+* some mathematical error in math mode
+* correct Murphy ...
+
+Cyril Goutte:
+* typos
+
+Martin Maechler:
+* an Inch is exactly 25.4 mm!
+
+2.2 7/11/95
+-----------
+Christian Kern:
+ * Spelling, and some suggestions for new stuff to inlcude
+
+Young U. Ryu:
+ * Spelling and some errors in latex
+
+Cyril Goutte:
+ * Some additions for math
+
+Brian Ripley:
+ * Spelling, LateX 95/12/1 compatibility
+ * Some more real english .... :-)
+ * AMS-LaTeX now prefers eucal to euscript, so he has altered both
+ lssym.tex and lshort2e.sty.
+ * He has corrected some examples in chapter 3 which would be regarded
+ as bad practice in mathematical typesetting.
+ * He has added a section on bold symbols, and conditionals for amsbsy.
+
+
+2.1 17/6/1995
+-------------
+Rasmus Borup Hansen:
+ * tonns of spelling mistakes and some suggestions for more logic ...
+
+Josef Tkadlec:
+ * some spellings
+ * all new hopefully even more usefull maths tables ...
+
+2.0 5/6/1995
+-----------
+Mike Ressler:
+ * Fixed Loads of spelling Mistakes.
+1.9.9: 16/5/95
+---------------
+Tobi:
+ * General Makeover
+
+ * Added Preface.
+
+ * Added example to math.tex
+
+ * Introduced intro environment. I am going to add a short describtion about
+ what the user can expect, to each chapter.
+
+ * Page Layout. spec.tex now contains a copy of the Geometry page layout
+ parameters page. Provided by the layout package from the tools bundle.
+
+ * newcommand, newenvironament and newtheorem are described.
+
+ * new dynamic document title
+
+ * using fancy headings for header.
+
+1.2: 8/2/95
+------------
+Tobi:
+Revoved all | | in an attempt to make
+the document latex2html compatible ... failed :-(
+
+Elliot:
+* Odd spelling mistakes
+
+David Jones:
+* "Whitespace Description" ...
+
+Byron:
+* Many Spelling fixes Some requests for examples
+
+Partl:
+* Fixed Irene Hyna addr
+
+Martien:
+* "Character" spelling
+
+Claus:
+* ref to indexing without backslash ...
+
+
+1.1: 17/11/94
+------------------
+Eric:
+* Spelling.
+* Removed numerical from section 1.3.3 (suggesting \3 as a valid command)
+* \quad as MATH spacing
+* No Pagenumber on first Page
+
+Mike:
+* Fixed @{} Discussion (thanks)
+
+David:
+* Letter case in \hyphenation ignored
+* `|-|.''
+* shelf\mbox{}ful because TeX can `forget' {} after hyphenation attempt
+* pointer to dcolumn package
+* standard calsses assume [tbp] !
+* Pointer to amstex and exscale package added to \big description
+* Thanks for symbols.tex
+* |*| and | | as forbidden delimiters with verb
+* refrence to amsfonts removed
+* LaTeX \vspace works within a paragraph ... (-> normally)
+* Pointer to graphguide.tex
+
+Tobi:
+* `horizontal' and Page Style Indexentries
+* Odd Spell Fix
+* pagestyle index entries
+* Commented out display style example, to keep total size down to 58 Pages
+* Fixed eufrak problem thanks David and Martien
+
diff --git a/Master/texmf-doc/doc/english/lshort-english/README b/Master/texmf-doc/doc/english/lshort-english/README
new file mode 100644
index 00000000000..06bc77e4dfd
--- /dev/null
+++ b/Master/texmf-doc/doc/english/lshort-english/README
@@ -0,0 +1,76 @@
+ The not so Short Introduction to LaTeX
+------------------------------------------------------------------------
+ by Tobias Oetiker <oetiker@ee.ethz.ch>
+
+ If you want to learn how to write your documents with LaTeX,
+ this introduction is for you. It is not about setting up a
+ LaTeX system. While it is not as comprehensive as Lamport's book,
+ it should be sufficient in most cases.
+
+ To print the document, there are several possibilities:
+
+ a) Copy one of the ps files to your printer:
+
+ lshort.ps
+ lshort-book.ps A4/booklet/duplex
+
+ NOTE for Abt IIIB: you can print the booklet version to
+ the VPP printer with
+
+ vpp -dest=etzj61 lshort-book.ps
+ or
+ vpp -dest=etzd96 lshort-book.ps
+
+ b) Print the lshort2e.dvi file with a dvi-driver. (You need to
+ have the AMS math fonts installed your system. If you don't,
+ your dvi-driver will complain.)
+
+ c) Rebuild the whole document from scratch by LaTeXing
+ lshort2e.tex. (If you don't have the AMS classes installed, the
+ relevant parts of the document will be left out, but it
+ will format without problem. After latexing the document twice,
+ you should use makeindex to generate a new index file.
+
+ (to get the adobe euro symbol right you need to install the
+ ftp://ftp.adobe.com/pub/adobe/type/win/all/eurofont.exe as described in
+ http://www.ctan.org/tex-archive/fonts/euro/latex/europs/README.europs)
+
+ The preformatted versions of the document are set for double sided
+ printing on A4 paper. If you want a single sided version, you need to
+ replace "twoside" by "oneside" in the parameters list of the
+ \documentclass command in lshort2e.tex. To produce a small booklet (A5)
+ you can use the pre generated ps file of you can use your dvi-driver to
+ shrink the output and then use pstops to paste the resulting pages
+ together in the right order.
+
+ To produce a A5 Booklet from source, I recommend the following procedure,
+ on the twoside lshort2e.dvi:
+
+ *) dvips -x800 -P?? -olshort.ps lshort.dvi
+ (?? is the name of the printer you want to print the booklet)
+
+ *) psbook lshort2e.ps out.ps
+
+ *) pstops "4:0L(27.8cm,-1.5cm)+1L(27.8cm,13.3cm)" out.ps p1.ps
+ (p1.ps now contains the front pages)
+
+ *) pstops "4:2L(27.8cm,-1.5cm)+3L(27.8cm,13.3cm)" out.ps p2.ps
+ (p2.ps contains the back pages)
+
+ If have a doublex(shoprtbind) Printer:
+
+ *) pstops "4:0L(27.8cm,-1.5cm)+1L(27.8cm,13.3cm),2L(27.8cm,-1.5cm)+3L(27.8cm,13.3cm)" out.ps lshort-book.ps
+
+ If you have postscript versions of the latex Fonts you can use
+ (make sure your printer has enough memmory for this)
+
+ *) dvips -Pcmz -olshort.ps lshort.dvi
+ *) psbook lshort.ps out.ps
+ *) pstops "4:0L@0.8(22.76cm,-0.6cm)+1L@0.8(22.76cm,13.45cm),3R@0.8(-1.38cm,16.25cm)+2R@0.8(-1.38cm,30.3cm)" out.ps lshort-book.ps
+
+
+ Cheers
+ Tobias Oetiker oetiker@ee.ethz.ch
+
+PS: If you have any comment, or just find the book helpful,
+ please let me know.
diff --git a/Master/texmf-doc/doc/english/lshort-english/lshort-4.17.src.tar.gz b/Master/texmf-doc/doc/english/lshort-english/lshort-4.17.src.tar.gz
new file mode 100644
index 00000000000..588408144bc
--- /dev/null
+++ b/Master/texmf-doc/doc/english/lshort-english/lshort-4.17.src.tar.gz
Binary files differ
diff --git a/Master/texmf-doc/doc/english/lshort-english/lshort.pdf b/Master/texmf-doc/doc/english/lshort-english/lshort.pdf
new file mode 100644
index 00000000000..edb1e4eb622
--- /dev/null
+++ b/Master/texmf-doc/doc/english/lshort-english/lshort.pdf
Binary files differ