From 41ceff5a615ab4e3d46b1c94bd26d9dcf9d6c1f8 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 29 Dec 2005 00:34:36 +0000 Subject: doc/english/i-l git-svn-id: svn://tug.org/texlive/trunk@21 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-doc/doc/english/impatient/Makefile | 15 + Master/texmf-doc/doc/english/impatient/README | 36 + Master/texmf-doc/doc/english/impatient/backm.tex | 92 + Master/texmf-doc/doc/english/impatient/book.ccs | 94 + Master/texmf-doc/doc/english/impatient/book.pdf | Bin 0 -> 1421239 bytes Master/texmf-doc/doc/english/impatient/book.sdx | 1691 ++++ Master/texmf-doc/doc/english/impatient/book.tex | 47 + Master/texmf-doc/doc/english/impatient/capsule.tex | 1134 +++ .../texmf-doc/doc/english/impatient/concepts.tex | 4097 +++++++++ Master/texmf-doc/doc/english/impatient/config.tex | 0 .../texmf-doc/doc/english/impatient/copyrght.tex | 48 + Master/texmf-doc/doc/english/impatient/eplain.tex | 1196 +++ .../texmf-doc/doc/english/impatient/errata.future | 237 + Master/texmf-doc/doc/english/impatient/errors.tex | 325 + .../texmf-doc/doc/english/impatient/examples.tex | 56 + Master/texmf-doc/doc/english/impatient/fdl.tex | 463 + Master/texmf-doc/doc/english/impatient/fonts.tex | 241 + Master/texmf-doc/doc/english/impatient/frontm.tex | 82 + Master/texmf-doc/doc/english/impatient/genops.tex | 2827 ++++++ Master/texmf-doc/doc/english/impatient/index.tex | 39 + Master/texmf-doc/doc/english/impatient/index1.icn | 90 + Master/texmf-doc/doc/english/impatient/index2.icn | 239 + Master/texmf-doc/doc/english/impatient/macros.tex | 2295 +++++ Master/texmf-doc/doc/english/impatient/math.tex | 2190 +++++ Master/texmf-doc/doc/english/impatient/modes.tex | 2078 +++++ Master/texmf-doc/doc/english/impatient/pages.tex | 1153 +++ Master/texmf-doc/doc/english/impatient/paras.tex | 2166 +++++ Master/texmf-doc/doc/english/impatient/preface.tex | 157 + Master/texmf-doc/doc/english/impatient/read1st.tex | 45 + Master/texmf-doc/doc/english/impatient/tips.tex | 1011 +++ Master/texmf-doc/doc/english/impatient/usebook.tex | 243 + .../texmf-doc/doc/english/impatient/usermacs.tex | 1168 +++ .../texmf-doc/doc/english/impatient/usingtex.tex | 822 ++ Master/texmf-doc/doc/english/impatient/xmptext.tex | 449 + Master/texmf-doc/doc/english/knuth/errata/README | 69 + Master/texmf-doc/doc/english/knuth/errata/cm85.bug | 1860 ++++ .../doc/english/knuth/errata/errata.eight | 610 ++ .../texmf-doc/doc/english/knuth/errata/errata.five | 1108 +++ .../texmf-doc/doc/english/knuth/errata/errata.four | 1052 +++ .../texmf-doc/doc/english/knuth/errata/errata.nine | 226 + .../texmf-doc/doc/english/knuth/errata/errata.one | 751 ++ .../doc/english/knuth/errata/errata.seven | 821 ++ .../texmf-doc/doc/english/knuth/errata/errata.six | 528 ++ .../texmf-doc/doc/english/knuth/errata/errata.ten | 1289 +++ .../texmf-doc/doc/english/knuth/errata/errata.tex | 736 ++ .../doc/english/knuth/errata/errata.three | 1898 +++++ .../texmf-doc/doc/english/knuth/errata/errata.two | 491 ++ .../texmf-doc/doc/english/knuth/errata/errata1.tex | 751 ++ .../texmf-doc/doc/english/knuth/errata/errata2.tex | 491 ++ .../texmf-doc/doc/english/knuth/errata/errata3.tex | 1898 +++++ .../texmf-doc/doc/english/knuth/errata/errata4.tex | 1052 +++ .../texmf-doc/doc/english/knuth/errata/errata5.tex | 1108 +++ .../texmf-doc/doc/english/knuth/errata/errata6.tex | 528 ++ .../texmf-doc/doc/english/knuth/errata/errata7.tex | 821 ++ .../texmf-doc/doc/english/knuth/errata/errata8.tex | 525 ++ .../texmf-doc/doc/english/knuth/errata/errata9.tex | 226 + .../doc/english/knuth/errata/errorlog.tex | 2924 +++++++ .../texmf-doc/doc/english/knuth/errata/index.html | 60 + .../texmf-doc/doc/english/knuth/errata/logmac.tex | 107 + Master/texmf-doc/doc/english/knuth/errata/mf84.bug | 2279 +++++ .../texmf-doc/doc/english/knuth/errata/tex82.bug | 9006 ++++++++++++++++++++ Master/texmf-doc/doc/english/knuth/errorlog.tex | 2914 +++++++ Master/texmf-doc/doc/english/knuth/expr.mf | 5 + Master/texmf-doc/doc/english/knuth/index.html | 193 + Master/texmf-doc/doc/english/knuth/io.mf | 23 + Master/texmf-doc/doc/english/knuth/mfman.mf | 2474 ++++++ Master/texmf-doc/doc/english/knuth/primes.web | 414 + Master/texmf-doc/doc/english/knuth/story.tex | 18 + Master/texmf-doc/doc/english/knuth/trap.mf | 170 + Master/texmf-doc/doc/english/knuth/trap.pl | 490 ++ Master/texmf-doc/doc/english/knuth/trapman.tex | 400 + Master/texmf-doc/doc/english/knuth/trip.pl | 833 ++ Master/texmf-doc/doc/english/knuth/trip.tex | 448 + Master/texmf-doc/doc/english/knuth/tripman.tex | 413 + Master/texmf-doc/doc/english/knuth/web.tex | 1477 ++++ Master/texmf-doc/doc/english/knuth/webman.tex | 1672 ++++ .../doc/english/l2tabu-english/l2tabuen.pdf | Bin 0 -> 305712 bytes .../doc/english/l2tabu-english/l2tabuen.tex | 1800 ++++ .../doc/english/latex-graphics-companion/1-4-1.ltx | 26 + .../english/latex-graphics-companion/1-4-10.pic | 16 + .../english/latex-graphics-companion/1-4-11.pic | 30 + .../english/latex-graphics-companion/1-4-12.ltx | 288 + .../doc/english/latex-graphics-companion/1-4-2.ltx | 12 + .../doc/english/latex-graphics-companion/1-4-3.ltx | 45 + .../doc/english/latex-graphics-companion/1-4-4.ltx | 20 + .../doc/english/latex-graphics-companion/1-4-5.ltx | 28 + .../doc/english/latex-graphics-companion/1-4-6.ltx | 21 + .../doc/english/latex-graphics-companion/1-4-7.ltx | 17 + .../doc/english/latex-graphics-companion/1-4-8.ltx | 174 + .../doc/english/latex-graphics-companion/1-4-9.pic | 21 + .../english/latex-graphics-companion/10-1-1.ltx | 28 + .../english/latex-graphics-companion/10-1-2.ltx | 48 + .../english/latex-graphics-companion/10-1-3.ltx | 48 + .../english/latex-graphics-companion/10-1-4.inl | 8 + .../english/latex-graphics-companion/10-1-5.inl | 21 + .../english/latex-graphics-companion/10-5-1.ltx | 86 + .../english/latex-graphics-companion/11-3-1.ltx | 23 + .../english/latex-graphics-companion/11-6-1.inl | 2 + .../doc/english/latex-graphics-companion/12-0-1.mp | 15 + .../english/latex-graphics-companion/12-0-10.ltx | 46 + .../english/latex-graphics-companion/12-0-11.ltx | 93 + .../english/latex-graphics-companion/12-0-12.ltx | 111 + .../doc/english/latex-graphics-companion/12-0-2.mp | 59 + .../doc/english/latex-graphics-companion/12-0-3.mp | 24 + .../doc/english/latex-graphics-companion/12-0-4.mp | 34 + .../english/latex-graphics-companion/12-0-5.ltx | 22 + .../english/latex-graphics-companion/12-0-6.ltx | 16 + .../english/latex-graphics-companion/12-0-7.ltx | 22 + .../english/latex-graphics-companion/12-0-8.ltx | 28 + .../english/latex-graphics-companion/12-0-9.ltx | 60 + .../doc/english/latex-graphics-companion/2-2-1.inl | 5 + .../english/latex-graphics-companion/2-2-10.inl | 5 + .../english/latex-graphics-companion/2-2-11.inl | 5 + .../english/latex-graphics-companion/2-2-12.inl | 6 + .../english/latex-graphics-companion/2-2-13.inl | 5 + .../english/latex-graphics-companion/2-2-14.inl | 6 + .../english/latex-graphics-companion/2-2-15.inl | 6 + .../english/latex-graphics-companion/2-2-16.inl | 4 + .../english/latex-graphics-companion/2-2-17.inl | 5 + .../english/latex-graphics-companion/2-2-18.inl | 5 + .../english/latex-graphics-companion/2-2-19.inl | 6 + .../doc/english/latex-graphics-companion/2-2-2.inl | 9 + .../english/latex-graphics-companion/2-2-20.inl | 7 + .../doc/english/latex-graphics-companion/2-2-3.inl | 10 + .../doc/english/latex-graphics-companion/2-2-4.inl | 10 + .../doc/english/latex-graphics-companion/2-2-5.inl | 6 + .../doc/english/latex-graphics-companion/2-2-6.inl | 4 + .../doc/english/latex-graphics-companion/2-2-7.inl | 10 + .../doc/english/latex-graphics-companion/2-2-8.inl | 10 + .../doc/english/latex-graphics-companion/2-2-9.inl | 5 + .../doc/english/latex-graphics-companion/2-3-1.inl | 5 + .../english/latex-graphics-companion/2-3-10.ltx | 21 + .../english/latex-graphics-companion/2-3-11.ltx | 72 + .../english/latex-graphics-companion/2-3-12.ltx | 18 + .../english/latex-graphics-companion/2-3-13.inl | 7 + .../english/latex-graphics-companion/2-3-14.ltx | 16 + .../english/latex-graphics-companion/2-3-15.inl | 9 + .../english/latex-graphics-companion/2-3-16.inl | 14 + .../english/latex-graphics-companion/2-3-17.inl | 11 + .../doc/english/latex-graphics-companion/2-3-2.inl | 5 + .../doc/english/latex-graphics-companion/2-3-3.inl | 3 + .../doc/english/latex-graphics-companion/2-3-4.inl | 7 + .../doc/english/latex-graphics-companion/2-3-5.inl | 7 + .../doc/english/latex-graphics-companion/2-3-6.inl | 10 + .../doc/english/latex-graphics-companion/2-3-7.inl | 9 + .../doc/english/latex-graphics-companion/2-3-8.inl | 13 + .../doc/english/latex-graphics-companion/2-3-9.inl | 7 + .../doc/english/latex-graphics-companion/3-1-1.mp | 7 + .../doc/english/latex-graphics-companion/3-1-2.mp | 8 + .../doc/english/latex-graphics-companion/3-1-3.mp | 7 + .../doc/english/latex-graphics-companion/3-1-4.mp | 14 + .../doc/english/latex-graphics-companion/3-1-5.mp | 13 + .../doc/english/latex-graphics-companion/3-1-6.mp | 13 + .../doc/english/latex-graphics-companion/3-1-7.mp | 18 + .../doc/english/latex-graphics-companion/3-1-8.mp | 30 + .../doc/english/latex-graphics-companion/3-1-9.mp | 87 + .../doc/english/latex-graphics-companion/3-2-1.mp | 15 + .../doc/english/latex-graphics-companion/3-2-2.mp | 23 + .../doc/english/latex-graphics-companion/3-2-3.mp | 26 + .../doc/english/latex-graphics-companion/3-3-1.mp | 11 + .../doc/english/latex-graphics-companion/3-3-10.mp | 18 + .../doc/english/latex-graphics-companion/3-3-11.mp | 17 + .../doc/english/latex-graphics-companion/3-3-12.mp | 23 + .../doc/english/latex-graphics-companion/3-3-13.mp | 27 + .../doc/english/latex-graphics-companion/3-3-14.mp | 20 + .../doc/english/latex-graphics-companion/3-3-15.mp | 24 + .../doc/english/latex-graphics-companion/3-3-16.mp | 30 + .../doc/english/latex-graphics-companion/3-3-17.mp | 33 + .../doc/english/latex-graphics-companion/3-3-18.mp | 21 + .../doc/english/latex-graphics-companion/3-3-19.mp | 23 + .../doc/english/latex-graphics-companion/3-3-2.mp | 11 + .../doc/english/latex-graphics-companion/3-3-3.mp | 19 + .../doc/english/latex-graphics-companion/3-3-4.mp | 18 + .../doc/english/latex-graphics-companion/3-3-5.mp | 21 + .../doc/english/latex-graphics-companion/3-3-6.mp | 47 + .../doc/english/latex-graphics-companion/3-3-7.mp | 19 + .../doc/english/latex-graphics-companion/3-3-8.mp | 18 + .../doc/english/latex-graphics-companion/3-3-9.mp | 15 + .../doc/english/latex-graphics-companion/3-4-1.ltx | 21 + .../doc/english/latex-graphics-companion/3-4-2.ltx | 14 + .../doc/english/latex-graphics-companion/3-4-3.ltx | 27 + .../doc/english/latex-graphics-companion/3-4-4.ltx | 49 + .../doc/english/latex-graphics-companion/3-4-5.ltx | 17 + .../doc/english/latex-graphics-companion/3-4-6.ltx | 25 + .../english/latex-graphics-companion/4-10-1.inl | 8 + .../english/latex-graphics-companion/4-10-10.ltx | 152 + .../english/latex-graphics-companion/4-10-11.ltx | 83 + .../english/latex-graphics-companion/4-10-2.inl | 8 + .../english/latex-graphics-companion/4-10-3.inl | 8 + .../english/latex-graphics-companion/4-10-4.inl | 8 + .../english/latex-graphics-companion/4-10-5.ltx | 46 + .../english/latex-graphics-companion/4-10-6.inl | 11 + .../english/latex-graphics-companion/4-10-7.ltx | 20 + .../english/latex-graphics-companion/4-10-8.inl | 28 + .../english/latex-graphics-companion/4-10-9.inl | 80 + .../doc/english/latex-graphics-companion/4-2-1.inl | 5 + .../doc/english/latex-graphics-companion/4-2-2.inl | 4 + .../doc/english/latex-graphics-companion/4-2-3.inl | 5 + .../doc/english/latex-graphics-companion/4-2-4.inl | 6 + .../doc/english/latex-graphics-companion/4-2-5.inl | 13 + .../doc/english/latex-graphics-companion/4-3-1.inl | 6 + .../doc/english/latex-graphics-companion/4-3-2.inl | 6 + .../doc/english/latex-graphics-companion/4-4-1.inl | 4 + .../english/latex-graphics-companion/4-4-10.inl | 8 + .../english/latex-graphics-companion/4-4-11.inl | 6 + .../english/latex-graphics-companion/4-4-12.inl | 6 + .../doc/english/latex-graphics-companion/4-4-2.inl | 5 + .../doc/english/latex-graphics-companion/4-4-3.inl | 4 + .../doc/english/latex-graphics-companion/4-4-4.inl | 8 + .../doc/english/latex-graphics-companion/4-4-5.inl | 10 + .../doc/english/latex-graphics-companion/4-4-6.inl | 6 + .../doc/english/latex-graphics-companion/4-4-7.inl | 10 + .../doc/english/latex-graphics-companion/4-4-8.inl | 9 + .../doc/english/latex-graphics-companion/4-4-9.inl | 10 + .../doc/english/latex-graphics-companion/4-5-1.inl | 2 + .../english/latex-graphics-companion/4-5-10.inl | 11 + .../english/latex-graphics-companion/4-5-11.inl | 12 + .../english/latex-graphics-companion/4-5-12.inl | 16 + .../english/latex-graphics-companion/4-5-13.ltx | 50 + .../english/latex-graphics-companion/4-5-14.ltx | 17 + .../english/latex-graphics-companion/4-5-15.ltx | 22 + .../english/latex-graphics-companion/4-5-16.ltx | 30 + .../doc/english/latex-graphics-companion/4-5-2.inl | 5 + .../doc/english/latex-graphics-companion/4-5-3.ltx | 16 + .../doc/english/latex-graphics-companion/4-5-4.inl | 7 + .../doc/english/latex-graphics-companion/4-5-5.inl | 3 + .../doc/english/latex-graphics-companion/4-5-6.inl | 5 + .../doc/english/latex-graphics-companion/4-5-7.inl | 2 + .../doc/english/latex-graphics-companion/4-5-8.inl | 5 + .../doc/english/latex-graphics-companion/4-5-9.inl | 3 + .../doc/english/latex-graphics-companion/4-6-1.inl | 9 + .../english/latex-graphics-companion/4-6-10.inl | 6 + .../english/latex-graphics-companion/4-6-11.inl | 6 + .../english/latex-graphics-companion/4-6-12.inl | 6 + .../english/latex-graphics-companion/4-6-13.inl | 6 + .../english/latex-graphics-companion/4-6-14.inl | 6 + .../english/latex-graphics-companion/4-6-15.inl | 6 + .../english/latex-graphics-companion/4-6-16.inl | 7 + .../english/latex-graphics-companion/4-6-17.inl | 6 + .../english/latex-graphics-companion/4-6-18.inl | 6 + .../english/latex-graphics-companion/4-6-19.inl | 6 + .../doc/english/latex-graphics-companion/4-6-2.inl | 6 + .../english/latex-graphics-companion/4-6-20.inl | 6 + .../english/latex-graphics-companion/4-6-21.inl | 6 + .../english/latex-graphics-companion/4-6-22.inl | 6 + .../english/latex-graphics-companion/4-6-23.inl | 5 + .../english/latex-graphics-companion/4-6-24.inl | 7 + .../english/latex-graphics-companion/4-6-25.inl | 7 + .../english/latex-graphics-companion/4-6-26.ltx | 35 + .../english/latex-graphics-companion/4-6-27.inl | 14 + .../english/latex-graphics-companion/4-6-28.inl | 9 + .../english/latex-graphics-companion/4-6-29.inl | 11 + .../doc/english/latex-graphics-companion/4-6-3.inl | 6 + .../english/latex-graphics-companion/4-6-30.inl | 14 + .../english/latex-graphics-companion/4-6-31.ltx | 19 + .../english/latex-graphics-companion/4-6-32.ltx | 30 + .../english/latex-graphics-companion/4-6-33.inl | 15 + .../english/latex-graphics-companion/4-6-34.inl | 5 + .../english/latex-graphics-companion/4-6-35.inl | 9 + .../english/latex-graphics-companion/4-6-36.inl | 11 + .../english/latex-graphics-companion/4-6-37.inl | 11 + .../english/latex-graphics-companion/4-6-38.inl | 18 + .../english/latex-graphics-companion/4-6-39.ltx | 26 + .../doc/english/latex-graphics-companion/4-6-4.inl | 6 + .../english/latex-graphics-companion/4-6-40.ltx | 34 + .../english/latex-graphics-companion/4-6-41.inl | 16 + .../english/latex-graphics-companion/4-6-42.inl | 24 + .../english/latex-graphics-companion/4-6-43.inl | 13 + .../english/latex-graphics-companion/4-6-44.inl | 15 + .../english/latex-graphics-companion/4-6-45.inl | 5 + .../english/latex-graphics-companion/4-6-46.inl | 17 + .../doc/english/latex-graphics-companion/4-6-5.inl | 6 + .../doc/english/latex-graphics-companion/4-6-6.inl | 7 + .../doc/english/latex-graphics-companion/4-6-7.inl | 6 + .../doc/english/latex-graphics-companion/4-6-8.inl | 6 + .../doc/english/latex-graphics-companion/4-6-9.inl | 6 + .../doc/english/latex-graphics-companion/4-7-1.ltx | 18 + .../doc/english/latex-graphics-companion/4-7-2.ltx | 21 + .../doc/english/latex-graphics-companion/4-7-3.ltx | 17 + .../doc/english/latex-graphics-companion/4-7-4.ltx | 52 + .../doc/english/latex-graphics-companion/4-8-1.inl | 4 + .../doc/english/latex-graphics-companion/4-8-2.inl | 7 + .../doc/english/latex-graphics-companion/4-8-3.ltx | 17 + .../doc/english/latex-graphics-companion/4-8-4.ltx | 60 + .../doc/english/latex-graphics-companion/4-8-5.ltx | 84 + .../doc/english/latex-graphics-companion/4-9-1.inl | 4 + .../english/latex-graphics-companion/4-9-10.ltx | 152 + .../doc/english/latex-graphics-companion/4-9-2.inl | 5 + .../doc/english/latex-graphics-companion/5-2-1.ltx | 15 + .../doc/english/latex-graphics-companion/5-3-1.ltx | 15 + .../doc/english/latex-graphics-companion/5-3-2.ltx | 17 + .../doc/english/latex-graphics-companion/5-3-3.ltx | 14 + .../doc/english/latex-graphics-companion/5-3-4.ltx | 14 + .../doc/english/latex-graphics-companion/5-3-5.ltx | 15 + .../doc/english/latex-graphics-companion/5-3-6.ltx | 14 + .../doc/english/latex-graphics-companion/5-3-7.ltx | 15 + .../doc/english/latex-graphics-companion/5-3-8.ltx | 18 + .../doc/english/latex-graphics-companion/5-3-9.ltx | 23 + .../doc/english/latex-graphics-companion/5-4-1.ltx | 21 + .../doc/english/latex-graphics-companion/5-4-2.ltx | 17 + .../doc/english/latex-graphics-companion/5-4-3.ltx | 15 + .../doc/english/latex-graphics-companion/5-4-4.ltx | 19 + .../doc/english/latex-graphics-companion/5-5-1.ltx | 20 + .../english/latex-graphics-companion/5-5-10.ltx | 32 + .../english/latex-graphics-companion/5-5-11.ltx | 14 + .../english/latex-graphics-companion/5-5-12.ltx | 20 + .../english/latex-graphics-companion/5-5-13.ltx | 25 + .../english/latex-graphics-companion/5-5-14.ltx | 25 + .../english/latex-graphics-companion/5-5-15.ltx | 15 + .../english/latex-graphics-companion/5-5-16.ltx | 15 + .../english/latex-graphics-companion/5-5-17.ltx | 31 + .../english/latex-graphics-companion/5-5-18.ltx | 23 + .../english/latex-graphics-companion/5-5-19.ltx | 23 + .../doc/english/latex-graphics-companion/5-5-2.ltx | 21 + .../english/latex-graphics-companion/5-5-20.ltx | 23 + .../english/latex-graphics-companion/5-5-21.ltx | 20 + .../english/latex-graphics-companion/5-5-22.ltx | 22 + .../english/latex-graphics-companion/5-5-23.ltx | 21 + .../english/latex-graphics-companion/5-5-24.ltx | 21 + .../english/latex-graphics-companion/5-5-25.ltx | 18 + .../english/latex-graphics-companion/5-5-26.ltx | 23 + .../english/latex-graphics-companion/5-5-27.ltx | 22 + .../english/latex-graphics-companion/5-5-28.ltx | 20 + .../english/latex-graphics-companion/5-5-29.ltx | 22 + .../doc/english/latex-graphics-companion/5-5-3.ltx | 19 + .../english/latex-graphics-companion/5-5-30.ltx | 20 + .../english/latex-graphics-companion/5-5-31.ltx | 22 + .../english/latex-graphics-companion/5-5-32.ltx | 14 + .../english/latex-graphics-companion/5-5-33.ltx | 25 + .../english/latex-graphics-companion/5-5-34.ltx | 27 + .../english/latex-graphics-companion/5-5-35.ltx | 28 + .../doc/english/latex-graphics-companion/5-5-4.ltx | 34 + .../doc/english/latex-graphics-companion/5-5-5.ltx | 21 + .../doc/english/latex-graphics-companion/5-5-6.ltx | 31 + .../doc/english/latex-graphics-companion/5-5-7.ltx | 14 + .../doc/english/latex-graphics-companion/5-5-8.ltx | 21 + .../doc/english/latex-graphics-companion/5-5-9.ltx | 27 + .../doc/english/latex-graphics-companion/6-2-1.ltx | 13 + .../english/latex-graphics-companion/6-2-10.ltx | 16 + .../english/latex-graphics-companion/6-2-11.ltx | 14 + .../english/latex-graphics-companion/6-2-12.ltx | 12 + .../english/latex-graphics-companion/6-2-13.ltx | 16 + .../english/latex-graphics-companion/6-2-14.ltx | 15 + .../english/latex-graphics-companion/6-2-15.ltx | 15 + .../english/latex-graphics-companion/6-2-16.ltx | 15 + .../english/latex-graphics-companion/6-2-17.ltx | 14 + .../english/latex-graphics-companion/6-2-18.ltx | 13 + .../english/latex-graphics-companion/6-2-19.ltx | 17 + .../doc/english/latex-graphics-companion/6-2-2.ltx | 17 + .../english/latex-graphics-companion/6-2-20.ltx | 17 + .../english/latex-graphics-companion/6-2-21.ltx | 19 + .../english/latex-graphics-companion/6-2-22.ltx | 16 + .../english/latex-graphics-companion/6-2-23.ltx | 19 + .../english/latex-graphics-companion/6-2-24.ltx | 14 + .../doc/english/latex-graphics-companion/6-2-3.ltx | 17 + .../doc/english/latex-graphics-companion/6-2-4.ltx | 15 + .../doc/english/latex-graphics-companion/6-2-5.ltx | 18 + .../doc/english/latex-graphics-companion/6-2-6.ltx | 13 + .../doc/english/latex-graphics-companion/6-2-7.ltx | 15 + .../doc/english/latex-graphics-companion/6-2-8.ltx | 15 + .../doc/english/latex-graphics-companion/6-2-9.ltx | 30 + .../doc/english/latex-graphics-companion/6-3-1.ltx | 16 + .../english/latex-graphics-companion/6-3-10.ltx | 14 + .../english/latex-graphics-companion/6-3-11.ltx | 27 + .../english/latex-graphics-companion/6-3-12.ltx | 17 + .../english/latex-graphics-companion/6-3-13.ltx | 19 + .../english/latex-graphics-companion/6-3-14.ltx | 19 + .../doc/english/latex-graphics-companion/6-3-2.ltx | 15 + .../doc/english/latex-graphics-companion/6-3-3.ltx | 53 + .../doc/english/latex-graphics-companion/6-3-4.ltx | 17 + .../doc/english/latex-graphics-companion/6-3-5.ltx | 18 + .../doc/english/latex-graphics-companion/6-3-6.ltx | 18 + .../doc/english/latex-graphics-companion/6-3-7.ltx | 17 + .../doc/english/latex-graphics-companion/6-3-8.ltx | 13 + .../doc/english/latex-graphics-companion/6-3-9.ltx | 15 + .../doc/english/latex-graphics-companion/6-4-1.ltx | 19 + .../doc/english/latex-graphics-companion/6-4-2.ltx | 25 + .../doc/english/latex-graphics-companion/6-4-3.ltx | 38 + .../doc/english/latex-graphics-companion/6-5-1.ltx | 34 + .../doc/english/latex-graphics-companion/6-6-1.ltx | 47 + .../doc/english/latex-graphics-companion/6-6-2.ltx | 38 + .../doc/english/latex-graphics-companion/6-6-3.ltx | 36 + .../doc/english/latex-graphics-companion/6-6-4.ltx | 33 + .../doc/english/latex-graphics-companion/6-6-5.ltx | 42 + .../doc/english/latex-graphics-companion/6-6-6.ltx | 46 + .../doc/english/latex-graphics-companion/6-6-7.ltx | 99 + .../doc/english/latex-graphics-companion/6-7-1.ltx | 90 + .../doc/english/latex-graphics-companion/6-7-1.m4 | 20 + .../doc/english/latex-graphics-companion/6-7-2.ltx | 80 + .../doc/english/latex-graphics-companion/6-7-2.m4 | 22 + .../doc/english/latex-graphics-companion/6-7-3.ltx | 75 + .../doc/english/latex-graphics-companion/6-7-3.m4 | 22 + .../doc/english/latex-graphics-companion/6-7-4.ltx | 169 + .../doc/english/latex-graphics-companion/6-7-4.m4 | 23 + .../doc/english/latex-graphics-companion/7-2-1.mx1 | 19 + .../doc/english/latex-graphics-companion/7-2-1.mx2 | 1 + .../doc/english/latex-graphics-companion/7-2-1.ptx | 98 + .../doc/english/latex-graphics-companion/7-2-2.ltx | 17 + .../doc/english/latex-graphics-companion/7-2-3.ltx | 19 + .../doc/english/latex-graphics-companion/7-2-4.ltx | 19 + .../doc/english/latex-graphics-companion/7-2-5.ltx | 39 + .../doc/english/latex-graphics-companion/7-2-6.ltx | 36 + .../doc/english/latex-graphics-companion/7-3-1.abc | 6 + .../doc/english/latex-graphics-companion/7-3-2.ltx | 29 + .../doc/english/latex-graphics-companion/7-3-3.abc | 8 + .../doc/english/latex-graphics-companion/7-3-4.abc | 6 + .../doc/english/latex-graphics-companion/7-3-5.abc | 8 + .../doc/english/latex-graphics-companion/7-3-6.abc | 6 + .../doc/english/latex-graphics-companion/7-3-7.abc | 7 + .../doc/english/latex-graphics-companion/7-3-8.abc | 7 + .../doc/english/latex-graphics-companion/7-3-9.abc | 7 + .../doc/english/latex-graphics-companion/7-4-1.mpp | 7 + .../english/latex-graphics-companion/7-4-10.mx1 | 27 + .../english/latex-graphics-companion/7-4-10.mx2 | 1 + .../english/latex-graphics-companion/7-4-10.ptx | 82 + .../doc/english/latex-graphics-companion/7-4-2.mpp | 6 + .../doc/english/latex-graphics-companion/7-4-3.mpp | 5 + .../doc/english/latex-graphics-companion/7-4-4.mpp | 6 + .../doc/english/latex-graphics-companion/7-4-5.mpp | 3 + .../doc/english/latex-graphics-companion/7-4-6.mpp | 8 + .../doc/english/latex-graphics-companion/7-4-7.mpp | 5 + .../doc/english/latex-graphics-companion/7-4-8.mpp | 11 + .../doc/english/latex-graphics-companion/7-4-9.mpp | 6 + .../doc/english/latex-graphics-companion/8-1-1.ltx | 19 + .../doc/english/latex-graphics-companion/8-1-2.ltx | 22 + .../doc/english/latex-graphics-companion/8-1-3.ltx | 43 + .../doc/english/latex-graphics-companion/8-1-4.ltx | 21 + .../doc/english/latex-graphics-companion/8-2-1.ltx | 37 + .../doc/english/latex-graphics-companion/8-2-2.ltx | 18 + .../doc/english/latex-graphics-companion/8-2-3.ltx | 29 + .../doc/english/latex-graphics-companion/8-3-1.ltx | 14 + .../doc/english/latex-graphics-companion/8-3-2.ltx | 49 + .../doc/english/latex-graphics-companion/8-3-3.ltx | 26 + .../doc/english/latex-graphics-companion/8-4-1.ltx | 25 + .../doc/english/latex-graphics-companion/8-4-2.ltx | 24 + .../doc/english/latex-graphics-companion/8-5-1.inl | 9 + .../doc/english/latex-graphics-companion/8-6-1.inl | 13 + .../doc/english/latex-graphics-companion/8-6-2.inl | 8 + .../doc/english/latex-graphics-companion/8-6-3.inl | 10 + .../doc/english/latex-graphics-companion/8-6-4.inl | 4 + .../doc/english/latex-graphics-companion/8-6-5.inl | 2 + .../doc/english/latex-graphics-companion/8-6-6.inl | 6 + .../doc/english/latex-graphics-companion/8-6-7.inl | 9 + .../doc/english/latex-graphics-companion/8-6-8.inl | 8 + .../doc/english/latex-graphics-companion/8-7-1.acr | 27 + .../doc/english/latex-graphics-companion/8-7-1.dwn | 30 + .../doc/english/latex-graphics-companion/8-7-1.ltx | 90 + .../doc/english/latex-graphics-companion/8-7-2.ltx | 69 + .../doc/english/latex-graphics-companion/8-7-3.ltx | 15 + .../doc/english/latex-graphics-companion/8-7-4.ltx | 21 + .../doc/english/latex-graphics-companion/9-2-1.inl | 6 + .../doc/english/latex-graphics-companion/9-2-2.inl | 6 + .../doc/english/latex-graphics-companion/9-2-3.inl | 8 + .../doc/english/latex-graphics-companion/9-2-4.inl | 10 + .../doc/english/latex-graphics-companion/9-2-5.inl | 8 + .../doc/english/latex-graphics-companion/9-2-6.inl | 6 + .../doc/english/latex-graphics-companion/9-2-7.inl | 9 + .../doc/english/latex-graphics-companion/9-2-8.ltx | 26 + .../doc/english/latex-graphics-companion/9-2-9.ltx | 23 + .../doc/english/latex-graphics-companion/9-3-1.inl | 17 + .../english/latex-graphics-companion/9-3-10.inl | 18 + .../english/latex-graphics-companion/9-3-11.inl | 16 + .../english/latex-graphics-companion/9-3-12.inl | 18 + .../english/latex-graphics-companion/9-3-13.inl | 12 + .../english/latex-graphics-companion/9-3-14.inl | 18 + .../english/latex-graphics-companion/9-3-15.inl | 14 + .../english/latex-graphics-companion/9-3-16.inl | 16 + .../english/latex-graphics-companion/9-3-17.inl | 14 + .../english/latex-graphics-companion/9-3-18.inl | 14 + .../english/latex-graphics-companion/9-3-19.inl | 14 + .../doc/english/latex-graphics-companion/9-3-2.inl | 17 + .../english/latex-graphics-companion/9-3-20.inl | 21 + .../doc/english/latex-graphics-companion/9-3-3.inl | 12 + .../doc/english/latex-graphics-companion/9-3-4.inl | 12 + .../doc/english/latex-graphics-companion/9-3-5.inl | 13 + .../doc/english/latex-graphics-companion/9-3-6.inl | 16 + .../doc/english/latex-graphics-companion/9-3-7.inl | 17 + .../doc/english/latex-graphics-companion/9-3-8.inl | 17 + .../doc/english/latex-graphics-companion/9-3-9.inl | 16 + .../doc/english/latex-graphics-companion/A-1-1.inl | 15 + .../doc/english/latex-graphics-companion/Makefile | 2 + .../doc/english/latex-graphics-companion/README | 17 + .../doc/english/latex-graphics-companion/ages.dat | 458 + .../doc/english/latex-graphics-companion/bar.ini | 19 + .../doc/english/latex-graphics-companion/chap.dat | 12 + .../doc/english/latex-graphics-companion/clef.ini | 16 + .../english/latex-graphics-companion/config.ps.gz | Bin 0 -> 384 bytes .../english/latex-graphics-companion/decade.dat | 19 + .../english/latex-graphics-companion/feature.ini | 22 + .../english/latex-graphics-companion/graves.dat | 25 + .../latex-graphics-companion/inputs/graphics.cfg | 8 + .../latex-graphics-companion/inputs/header.tex | 212 + .../latex-graphics-companion/inputs/mfpic.sty | 4 + .../latex-graphics-companion/inputs/ppex.cls | 59 + .../doc/english/latex-graphics-companion/key.ini | 23 + .../doc/english/latex-graphics-companion/langs.dat | 16 + .../english/latex-graphics-companion/langs2.dat | 16 + .../english/latex-graphics-companion/langs3.dat | 16 + .../doc/english/latex-graphics-companion/macro.ini | 45 + .../doc/english/latex-graphics-companion/mpp.tex | 206 + .../doc/english/latex-graphics-companion/note.ini | 57 + .../english/latex-graphics-companion/notecc.ini | 66 + .../doc/english/latex-graphics-companion/pot.dat | 90 + .../english/latex-graphics-companion/script.ini | 58 + .../english/latex-graphics-companion/scriptcc.ini | 58 + .../english/latex-graphics-companion/stones.dat | 25 + .../english/latex-graphics-companion/students.dat | 4 + .../english/latex-graphics-companion/veracx.mx1 | 51 + .../english/latex-graphics-companion/veracx.tex | 22 + .../doc/english/latex-graphics-companion/yearm.dat | 171 + .../doc/english/latex-graphics-companion/years.dat | 171 + .../doc/english/latex-graphics-companion/years.men | 171 + .../doc/english/latex-graphics-companion/years.wom | 171 + .../doc/english/latex-graphics-companion/yearw.dat | 171 + .../doc/english/latex-web-companion/apa/README.apa | 18 + .../latex-web-companion/apa/latexexa-raw.xml | 1054 +++ .../english/latex-web-companion/apa/latexexa.dtd | 190 + .../english/latex-web-companion/apa/latexexa.ltx | 109 + .../english/latex-web-companion/apa/latexexa.tex | 546 ++ .../english/latex-web-companion/apa/latexexa.xml | 171 + .../english/latex-web-companion/apa/phys332-1.eps | 419 + .../english/latex-web-companion/apa/phys332-2.eps | 556 ++ .../english/latex-web-companion/apa/teched.html | 47 + .../english/latex-web-companion/apa/teched.java | 187 + .../latex-web-companion/apb/InvitationSAX.class | Bin 0 -> 1961 bytes .../latex-web-companion/apb/InvitationSAX.java | 53 + .../english/latex-web-companion/apb/MySAXApp.class | Bin 0 -> 747 bytes .../english/latex-web-companion/apb/MySAXApp.java | 16 + .../doc/english/latex-web-companion/apb/README.apb | 56 + .../latex-web-companion/apb/bibliotest1.xml | 116 + .../latex-web-companion/apb/bibliotest2.xml | 114 + .../english/latex-web-companion/apb/biblioxml1.dtd | 144 + .../english/latex-web-companion/apb/biblioxml2.dtd | 194 + .../english/latex-web-companion/apb/colorcir.eps | 109 + .../doc/english/latex-web-companion/apb/inv2.tex | 24 + .../english/latex-web-companion/apb/invitation.sty | 49 + .../latex-web-companion/apb/invitation2.dtd | 15 + .../latex-web-companion/apb/invitation2.xml | 20 + .../english/latex-web-companion/apb/latexmath.dtd | 11 + .../english/latex-web-companion/apb/latexmml.dtd | 57 + .../english/latex-web-companion/apb/minilatex.dtd | 179 + .../english/latex-web-companion/apb/minilatex.xsl | 342 + .../latex-web-companion/apb/minilatexexa.tex | 120 + .../latex-web-companion/apb/minilatexexa.xml | 138 + .../english/latex-web-companion/apb/mybiblio.dtd | 24 + .../english/latex-web-companion/apb/utf82latin1.sh | 24 + .../english/latex-web-companion/apc/ISOcyr1.pen | 84 + .../doc/english/latex-web-companion/apc/README.apc | 24 + .../english/latex-web-companion/apc/invitation.sty | 46 + .../latex-web-companion/apc/invitationfr.dtd | 14 + .../latex-web-companion/apc/invitationfr.sty | 46 + .../latex-web-companion/apc/invitationfr.tex | 25 + .../latex-web-companion/apc/invitationfr.xml | 30 + .../english/latex-web-companion/apc/invlat1fr.xsl | 67 + .../doc/english/latex-web-companion/apc/utf8.html | 36 + .../doc/english/latex-web-companion/apc/utf8.xml | 33 + .../doc/english/latex-web-companion/apc/utf8.xsl | 36 + .../english/latex-web-companion/apc/utf8tei.xml | 48 + .../english/latex-web-companion/ch3bis/Makefile | 62 + .../latex-web-companion/ch3bis/Makefile.ex2 | 10 + .../latex-web-companion/ch3bis/Makefile.ex3 | 62 + .../english/latex-web-companion/ch3bis/README.ch3 | 37 + .../latex-web-companion/ch3bis/colorcir.eps | 109 + .../english/latex-web-companion/ch3bis/ex20.tex | 25 + .../english/latex-web-companion/ch3bis/ex21.tex | 27 + .../english/latex-web-companion/ch3bis/ex22.tex | 29 + .../english/latex-web-companion/ch3bis/ex2bib.tex | 16 + .../english/latex-web-companion/ch3bis/ex30.lof | 2 + .../english/latex-web-companion/ch3bis/ex30.lot | 2 + .../english/latex-web-companion/ch3bis/ex30.tex | 43 + .../latex-web-companion/ch3bis/ex30/contents.pl | 30 + .../latex-web-companion/ch3bis/ex30/ex30.css | 31 + .../latex-web-companion/ch3bis/ex30/ex30.html | 139 + .../latex-web-companion/ch3bis/ex30/index.html | 139 + .../latex-web-companion/ch3bis/ex30/index.pl | 23 + .../latex-web-companion/ch3bis/ex30/internals.pl | 10 + .../latex-web-companion/ch3bis/ex30/labels.pl | 21 + .../latex-web-companion/ch3bis/ex30/sections.pl | 36 + .../english/latex-web-companion/ch3bis/ex31.ptr | 9 + .../english/latex-web-companion/ch3bis/ex31.tex | 27 + .../latex-web-companion/ch3bis/ex31/Timg1.gif | Bin 0 -> 1873 bytes .../latex-web-companion/ch3bis/ex31/WARNINGS | 1 + .../latex-web-companion/ch3bis/ex31/contents.pl | 10 + .../latex-web-companion/ch3bis/ex31/ex31.css | 31 + .../latex-web-companion/ch3bis/ex31/ex31.html | 90 + .../latex-web-companion/ch3bis/ex31/figure.pl | 1 + .../latex-web-companion/ch3bis/ex31/images.pl | 16 + .../latex-web-companion/ch3bis/ex31/images.tex | 136 + .../latex-web-companion/ch3bis/ex31/img1.gif | Bin 0 -> 10042 bytes .../latex-web-companion/ch3bis/ex31/index.pl | 49 + .../latex-web-companion/ch3bis/ex31/internals.pl | 14 + .../latex-web-companion/ch3bis/ex31/labels.pl | 33 + .../latex-web-companion/ch3bis/ex31/sections.pl | 11 + .../english/latex-web-companion/ch3bis/ex32.ptr | 9 + .../english/latex-web-companion/ch3bis/ex32.tex | 27 + .../latex-web-companion/ch3bis/ex32/contents.pl | 10 + .../latex-web-companion/ch3bis/ex32/ex32.css | 31 + .../latex-web-companion/ch3bis/ex32/ex32.html | 111 + .../latex-web-companion/ch3bis/ex32/index.pl | 40 + .../latex-web-companion/ch3bis/ex32/internals.pl | 10 + .../latex-web-companion/ch3bis/ex32/labels.pl | 29 + .../latex-web-companion/ch3bis/ex32/sections.pl | 11 + .../latex-web-companion/ch3bis/ex32/table.pl | 2 + .../english/latex-web-companion/ch3bis/ex3bib.tex | 6 + .../english/latex-web-companion/ch3bis/l2hexa.lof | 2 + .../english/latex-web-companion/ch3bis/l2hexa.lot | 2 + .../english/latex-web-companion/ch3bis/l2hexa.tex | 62 + .../latex-web-companion/ch3bis/l2hexa/images.pl | 18 + .../latex-web-companion/ch3bis/l2hexa/images.tex | 132 + .../latex-web-companion/ch3bis/l2hexa/img1.gif | Bin 0 -> 6865 bytes .../latex-web-companion/ch3bis/l2hexa/img2.gif | Bin 0 -> 2056 bytes .../latex-web-companion/ch3bis/l2hexa/index.html | 84 + .../latex-web-companion/ch3bis/l2hexa/internals.pl | 18 + .../latex-web-companion/ch3bis/l2hexa/l2hexa.css | 31 + .../latex-web-companion/ch3bis/l2hexa/l2hexa.html | 84 + .../latex-web-companion/ch3bis/l2hexa/labels.pl | 33 + .../latex-web-companion/ch3bis/l2hexa/node1.html | 88 + .../latex-web-companion/ch3bis/l2hexa/node2.html | 77 + .../latex-web-companion/ch3bis/l2hexa/node3.html | 77 + .../latex-web-companion/ch3bis/l2hexa/node4.html | 115 + .../latex-web-companion/ch3bis/l2hexa/node5.html | 128 + .../latex-web-companion/ch3bis/l2hexa/node6.html | 78 + .../latex-web-companion/ch3bis/l2hexa/node7.html | 85 + .../latex-web-companion/ch3bis/l2hexa/node8.html | 84 + .../english/latex-web-companion/ch3bis/myinit.pl | 8 + .../latex-web-companion/ch3bis/sampleAMS.css | 4 + .../latex-web-companion/ch3bis/sampleAMS.tex | 54 + .../latex-web-companion/ch3bis/sampleAMS/WARNINGS | 2 + .../latex-web-companion/ch3bis/sampleAMS/images.pl | 139 + .../ch3bis/sampleAMS/images.tex | 276 + .../latex-web-companion/ch3bis/sampleAMS/img1.gif | Bin 0 -> 271 bytes .../latex-web-companion/ch3bis/sampleAMS/img10.gif | Bin 0 -> 485 bytes .../latex-web-companion/ch3bis/sampleAMS/img11.gif | Bin 0 -> 161 bytes .../latex-web-companion/ch3bis/sampleAMS/img12.gif | Bin 0 -> 160 bytes .../latex-web-companion/ch3bis/sampleAMS/img13.gif | Bin 0 -> 527 bytes .../latex-web-companion/ch3bis/sampleAMS/img14.gif | Bin 0 -> 354 bytes .../latex-web-companion/ch3bis/sampleAMS/img15.gif | Bin 0 -> 346 bytes .../latex-web-companion/ch3bis/sampleAMS/img16.gif | Bin 0 -> 342 bytes .../latex-web-companion/ch3bis/sampleAMS/img17.gif | Bin 0 -> 232 bytes .../latex-web-companion/ch3bis/sampleAMS/img18.gif | Bin 0 -> 237 bytes .../latex-web-companion/ch3bis/sampleAMS/img19.gif | Bin 0 -> 1265 bytes .../latex-web-companion/ch3bis/sampleAMS/img2.gif | Bin 0 -> 73 bytes .../latex-web-companion/ch3bis/sampleAMS/img20.gif | Bin 0 -> 1940 bytes .../latex-web-companion/ch3bis/sampleAMS/img21.gif | Bin 0 -> 4526 bytes .../latex-web-companion/ch3bis/sampleAMS/img3.gif | Bin 0 -> 1067 bytes .../latex-web-companion/ch3bis/sampleAMS/img4.gif | Bin 0 -> 219 bytes .../latex-web-companion/ch3bis/sampleAMS/img5.gif | Bin 0 -> 138 bytes .../latex-web-companion/ch3bis/sampleAMS/img6.gif | Bin 0 -> 678 bytes .../latex-web-companion/ch3bis/sampleAMS/img7.gif | Bin 0 -> 135 bytes .../latex-web-companion/ch3bis/sampleAMS/img8.gif | Bin 0 -> 857 bytes .../latex-web-companion/ch3bis/sampleAMS/img9.gif | Bin 0 -> 154 bytes .../ch3bis/sampleAMS/index.html | 279 + .../ch3bis/sampleAMS/internals.pl | 30 + .../latex-web-companion/ch3bis/sampleAMS/labels.pl | 61 + .../ch3bis/sampleAMS/node1.html | 72 + .../ch3bis/sampleAMS/sampleAMS.css | 31 + .../ch3bis/sampleAMS/sampleAMS.html | 279 + .../latex-web-companion/ch3bis/sampleMath.tex | 54 + .../latex-web-companion/ch3bis/sampleMath/WARNINGS | 2 + .../ch3bis/sampleMath/images.pl | 132 + .../ch3bis/sampleMath/images.tex | 254 + .../latex-web-companion/ch3bis/sampleMath/img1.gif | Bin 0 -> 271 bytes .../ch3bis/sampleMath/img10.gif | Bin 0 -> 161 bytes .../ch3bis/sampleMath/img11.gif | Bin 0 -> 779 bytes .../ch3bis/sampleMath/img12.gif | Bin 0 -> 160 bytes .../ch3bis/sampleMath/img13.gif | Bin 0 -> 527 bytes .../ch3bis/sampleMath/img14.gif | Bin 0 -> 354 bytes .../ch3bis/sampleMath/img15.gif | Bin 0 -> 346 bytes .../ch3bis/sampleMath/img16.gif | Bin 0 -> 342 bytes .../ch3bis/sampleMath/img17.gif | Bin 0 -> 232 bytes .../ch3bis/sampleMath/img18.gif | Bin 0 -> 237 bytes .../ch3bis/sampleMath/img19.gif | Bin 0 -> 1265 bytes .../latex-web-companion/ch3bis/sampleMath/img2.gif | Bin 0 -> 73 bytes .../ch3bis/sampleMath/img20.gif | Bin 0 -> 1940 bytes .../latex-web-companion/ch3bis/sampleMath/img3.gif | Bin 0 -> 1286 bytes .../latex-web-companion/ch3bis/sampleMath/img4.gif | Bin 0 -> 138 bytes .../latex-web-companion/ch3bis/sampleMath/img5.gif | Bin 0 -> 675 bytes .../latex-web-companion/ch3bis/sampleMath/img6.gif | Bin 0 -> 135 bytes .../latex-web-companion/ch3bis/sampleMath/img7.gif | Bin 0 -> 855 bytes .../latex-web-companion/ch3bis/sampleMath/img8.gif | Bin 0 -> 154 bytes .../latex-web-companion/ch3bis/sampleMath/img9.gif | Bin 0 -> 490 bytes .../ch3bis/sampleMath/index.html | 235 + .../ch3bis/sampleMath/internals.pl | 14 + .../ch3bis/sampleMath/labels.pl | 29 + .../ch3bis/sampleMath/node1.html | 72 + .../ch3bis/sampleMath/sampleMath.css | 31 + .../ch3bis/sampleMath/sampleMath.html | 235 + .../ch3bis/sampleMathImages.tex | 64 + .../ch3bis/sampleMathImages/WARNINGS | 4 + .../ch3bis/sampleMathImages/images.pl | 66 + .../ch3bis/sampleMathImages/images.tex | 213 + .../ch3bis/sampleMathImages/img1.gif | Bin 0 -> 4314 bytes .../ch3bis/sampleMathImages/img2.gif | Bin 0 -> 160 bytes .../ch3bis/sampleMathImages/img3.gif | Bin 0 -> 527 bytes .../ch3bis/sampleMathImages/img4.gif | Bin 0 -> 354 bytes .../ch3bis/sampleMathImages/img5.gif | Bin 0 -> 346 bytes .../ch3bis/sampleMathImages/img6.gif | Bin 0 -> 342 bytes .../ch3bis/sampleMathImages/img7.gif | Bin 0 -> 232 bytes .../ch3bis/sampleMathImages/img8.gif | Bin 0 -> 3312 bytes .../ch3bis/sampleMathImages/img9.gif | Bin 0 -> 50 bytes .../ch3bis/sampleMathImages/index.html | 169 + .../ch3bis/sampleMathImages/internals.pl | 30 + .../ch3bis/sampleMathImages/labels.pl | 61 + .../ch3bis/sampleMathImages/node1.html | 73 + .../ch3bis/sampleMathImages/sampleMathImages.css | 31 + .../ch3bis/sampleMathImages/sampleMathImages.html | 169 + .../latex-web-companion/ch3bis/sampleMathThumb.tex | 64 + .../ch3bis/sampleMathThumb/Timg8.gif | Bin 0 -> 630 bytes .../ch3bis/sampleMathThumb/Timg9.gif | Bin 0 -> 35 bytes .../ch3bis/sampleMathThumb/WARNINGS | 2 + .../ch3bis/sampleMathThumb/images.pl | 68 + .../ch3bis/sampleMathThumb/images.tex | 213 + .../ch3bis/sampleMathThumb/img1.gif | Bin 0 -> 4314 bytes .../ch3bis/sampleMathThumb/img2.gif | Bin 0 -> 160 bytes .../ch3bis/sampleMathThumb/img3.gif | Bin 0 -> 527 bytes .../ch3bis/sampleMathThumb/img4.gif | Bin 0 -> 354 bytes .../ch3bis/sampleMathThumb/img5.gif | Bin 0 -> 346 bytes .../ch3bis/sampleMathThumb/img6.gif | Bin 0 -> 342 bytes .../ch3bis/sampleMathThumb/img7.gif | Bin 0 -> 232 bytes .../ch3bis/sampleMathThumb/img8.gif | Bin 0 -> 3304 bytes .../ch3bis/sampleMathThumb/img9.gif | Bin 0 -> 42 bytes .../ch3bis/sampleMathThumb/index.html | 171 + .../ch3bis/sampleMathThumb/internals.pl | 30 + .../ch3bis/sampleMathThumb/labels.pl | 61 + .../ch3bis/sampleMathThumb/node1.html | 73 + .../ch3bis/sampleMathThumb/sampleMathThumb.css | 31 + .../ch3bis/sampleMathThumb/sampleMathThumb.html | 171 + .../english/latex-web-companion/ch3bis/tac2dim.eps | 201 + .../english/latex-web-companion/intro/lwc.eepic | 95 + .../doc/english/latex-web-companion/intro/lwc.fig | 103 + .../latex-web-companion/latex2html/Makefile.ex2 | 10 + .../latex-web-companion/latex2html/Makefile.ex3 | 62 + .../latex-web-companion/latex2html/README.ch3 | 72 + .../latex-web-companion/latex2html/colorcir.eps | 109 + .../latex-web-companion/latex2html/ex20.tex | 25 + .../latex-web-companion/latex2html/ex21.tex | 27 + .../latex-web-companion/latex2html/ex22.tex | 29 + .../latex-web-companion/latex2html/ex2bib.tex | 16 + .../latex-web-companion/latex2html/ex30.tex | 43 + .../latex-web-companion/latex2html/ex31.tex | 27 + .../latex-web-companion/latex2html/ex32.tex | 27 + .../latex-web-companion/latex2html/ex3bib.tex | 6 + .../latex-web-companion/latex2html/l2hexa.tex | 62 + .../latex-web-companion/latex2html/myinit.pl | 8 + .../latex-web-companion/latex2html/sampleAMS.css | 4 + .../latex-web-companion/latex2html/sampleAMS.tex | 54 + .../latex-web-companion/latex2html/sampleMath.tex | 54 + .../latex2html/sampleMathImages.tex | 64 + .../latex2html/sampleMathThumb.tex | 64 + .../latex-web-companion/latex2html/tac2dim.eps | 201 + .../latex-web-companion/latex2xml/amaya.mml | 104 + .../latex-web-companion/latex2xml/isoamsae.dtd | 259 + .../latex-web-companion/latex2xml/isoamsbe.dtd | 183 + .../latex-web-companion/latex2xml/isoamsce.dtd | 43 + .../latex-web-companion/latex2xml/isoamsne.dtd | 187 + .../latex-web-companion/latex2xml/isoamsoe.dtd | 77 + .../latex-web-companion/latex2xml/isoamsre.dtd | 304 + .../latex-web-companion/latex2xml/isogrk3e.dtd | 55 + .../latex-web-companion/latex2xml/isomfrke.dtd | 63 + .../latex-web-companion/latex2xml/isomopfe.dtd | 37 + .../latex-web-companion/latex2xml/isomscre.dtd | 63 + .../latex-web-companion/latex2xml/isonume.dtd | 86 + .../latex-web-companion/latex2xml/isoteche.dtd | 238 + .../latex-web-companion/latex2xml/l2xdemo.cfg | 41 + .../latex-web-companion/latex2xml/l2xdemo.tex | 29 + .../latex-web-companion/latex2xml/l2xdemo.xml | 40 + .../latex-web-companion/latex2xml/l2xmath.cfg | 31 + .../latex-web-companion/latex2xml/mathml.dsl | 1346 +++ .../latex-web-companion/latex2xml/mathml.dtd | 924 ++ .../latex-web-companion/latex2xml/mathmltools.dsl | 97 + .../latex-web-companion/latex2xml/mathmlx.dsl | 181 + .../latex-web-companion/latex2xml/mmaliase.dtd | 78 + .../latex-web-companion/latex2xml/mmlent.dtd | 114 + .../latex-web-companion/latex2xml/mtdemo.tex | 10 + .../english/latex-web-companion/latex2xml/stix.mml | 66 + .../latex-web-companion/latex2xml/techexpl.mml | 100 + .../english/latex-web-companion/latex2xml/test.dtd | 62 + .../english/latex-web-companion/latex2xml/test.xml | 16 + .../english/latex-web-companion/latex2xml/tmp.tmp | 2 + .../english/latex-web-companion/latex2xml/try.cfg | 11 + .../english/latex-web-companion/latex2xml/try2.cfg | 18 + .../english/latex-web-companion/latex2xml/try3.cfg | 8 + .../english/latex-web-companion/latex2xml/try4.cfg | 14 + .../english/latex-web-companion/latex2xml/try5.cfg | 16 + .../latex-web-companion/latex2xml/webeq.mml | 111 + .../english/latex-web-companion/latex2xml/xml.dcl | 179 + .../doc/english/latex-web-companion/xml/README.ch6 | 26 + .../doc/english/latex-web-companion/xml/catalog | 2 + .../latex-web-companion/xml/emptyexample.xml | 15 + .../english/latex-web-companion/xml/invitation.dtd | 14 + .../english/latex-web-companion/xml/invitation.xml | 30 + .../doc/english/latex-web-companion/xml/wrong.xml | 15 + .../doc/english/latex-web-companion/xml/xml.dcl | 179 + .../latex-web-companion/xmlstyle/README.ch7 | 124 + .../english/latex-web-companion/xmlstyle/SGMLS.pm | 893 ++ .../latex-web-companion/xmlstyle/SGMLS/Output.pm | 225 + .../latex-web-companion/xmlstyle/SGMLS/Refs.pm | 216 + .../latex-web-companion/xmlstyle/SGMLS/SGMLS.pm | 893 ++ .../english/latex-web-companion/xmlstyle/catalog | 5 + .../latex-web-companion/xmlstyle/catalog.dsssl | 4 + .../latex-web-companion/xmlstyle/catalog.xml | 2 + .../english/latex-web-companion/xmlstyle/dsssl.cat | 3 + .../english/latex-web-companion/xmlstyle/dsssl.dtd | 134 + .../english/latex-web-companion/xmlstyle/empty.dsl | 8 + .../english/latex-web-companion/xmlstyle/empty.xsl | 2 + .../latex-web-companion/xmlstyle/emptyexample.xml | 15 + .../latex-web-companion/xmlstyle/entable-alt.xml | 243 + .../latex-web-companion/xmlstyle/entable.xml | 2639 ++++++ .../english/latex-web-companion/xmlstyle/fot.dtd | 507 ++ .../latex-web-companion/xmlstyle/frisotab1exa1.xsl | 17 + .../latex-web-companion/xmlstyle/frisotab1exa2.xsl | 48 + .../latex-web-companion/xmlstyle/inv1html.pl | 61 + .../latex-web-companion/xmlstyle/inv2css.html.save | 44 + .../latex-web-companion/xmlstyle/inv2html.pl | 61 + .../latex-web-companion/xmlstyle/inv2lat.pl | 76 + .../english/latex-web-companion/xmlstyle/inv3.xml | 21 + .../latex-web-companion/xmlstyle/invcss.html.save | 44 + .../english/latex-web-companion/xmlstyle/invfo1.fo | 4 + .../latex-web-companion/xmlstyle/invfo1.xsl | 118 + .../latex-web-companion/xmlstyle/invfop.pdf | 247 + .../latex-web-companion/xmlstyle/invhtml.dsl | 90 + .../latex-web-companion/xmlstyle/invhtml2.xsl | 42 + .../english/latex-web-companion/xmlstyle/invit.css | 31 + .../latex-web-companion/xmlstyle/invitation.dsl | 66 + .../latex-web-companion/xmlstyle/invitation.dtd | 12 + .../latex-web-companion/xmlstyle/invitation.sty | 30 + .../xmlstyle/invitation.tex.save | 27 + .../latex-web-companion/xmlstyle/invitation.xml | 24 + .../latex-web-companion/xmlstyle/invitation1.tex | 22 + .../latex-web-companion/xmlstyle/invitation2.dtd | 15 + .../latex-web-companion/xmlstyle/invitation2.html | 39 + .../latex-web-companion/xmlstyle/invitation2.xml | 21 + .../latex-web-companion/xmlstyle/invitationfr.sty | 49 + .../latex-web-companion/xmlstyle/invlat1.xsl | 66 + .../latex-web-companion/xmlstyle/invptex.pdf | Bin 0 -> 4618 bytes .../latex-web-companion/xmlstyle/invtab1.dsl | 82 + .../latex-web-companion/xmlstyle/invtab2.dsl | 75 + .../xmlstyle/isotab1to2-bis.xsl | 22 + .../latex-web-companion/xmlstyle/isotab1to2.xsl | 42 + .../latex-web-companion/xmlstyle/isotabexa1.xsl | 20 + .../latex-web-companion/xmlstyle/isotabexa2.xsl | 73 + .../latex-web-companion/xmlstyle/sectionexa.xml | 22 + .../latex-web-companion/xmlstyle/sectionexa.xsl | 73 + .../latex-web-companion/xmlstyle/sgmlspl.pl | 317 + .../english/latex-web-companion/xmlstyle/skel.pl | 178 + .../latex-web-companion/xmlstyle/style-sheet.dtd | 41 + .../latex-web-companion/xmlstyle/templatest.xml | 3 + .../latex-web-companion/xmlstyle/templatest.xsl | 41 + .../latex-web-companion/xmlstyle/templatestnok.xsl | 41 + .../latex-web-companion/xmlstyle/templatestok.xsl | 31 + .../latex-web-companion/xmlstyle/test-SGMLS.pl | 13 + .../latex-web-companion/xmlstyle/writefiles.xml | 9 + .../english/latex-web-companion/xmlstyle/wrong.xml | 15 + .../english/latex-web-companion/xmlstyle/xml.dcl | 179 + .../latex-web-companion/xmlstyle/xslexa1.xsl | 20 + .../doc/english/latex2e-html/LaTeX-info.html | 47 + .../doc/english/latex2e-html/baselineskip.html | 31 + .../doc/english/latex2e-html/boldmath.html | 42 + .../doc/english/latex2e-html/caption.html | 19 + .../doc/english/latex2e-html/declarations.html | 51 + .../doc/english/latex2e-html/ellipses.html | 23 + .../texmf-doc/doc/english/latex2e-html/emph.html | 24 + .../doc/english/latex2e-html/ensuremath.html | 23 + .../doc/english/latex2e-html/externals.html | 189 + .../doc/english/latex2e-html/fonts2e.html | 51 + .../doc/english/latex2e-html/fragile.html | 59 + .../doc/english/latex2e-html/frenchsp.html | 16 + .../texmf-doc/doc/english/latex2e-html/index.html | 98 + .../texmf-doc/doc/english/latex2e-html/input.html | 95 + .../texmf-doc/doc/english/latex2e-html/item.html | 30 + .../doc/english/latex2e-html/lefteqn.html | 41 + .../texmf-doc/doc/english/latex2e-html/lists.html | 58 + .../doc/english/latex2e-html/ltx-111.html | 25 + .../doc/english/latex2e-html/ltx-115.html | 82 + .../doc/english/latex2e-html/ltx-117.html | 45 + .../doc/english/latex2e-html/ltx-118.html | 25 + .../doc/english/latex2e-html/ltx-119.html | 39 + .../texmf-doc/doc/english/latex2e-html/ltx-13.html | 62 + .../doc/english/latex2e-html/ltx-130.html | 67 + .../doc/english/latex2e-html/ltx-131.html | 24 + .../doc/english/latex2e-html/ltx-137.html | 30 + .../doc/english/latex2e-html/ltx-138.html | 31 + .../doc/english/latex2e-html/ltx-140.html | 20 + .../doc/english/latex2e-html/ltx-141.html | 70 + .../doc/english/latex2e-html/ltx-142.html | 19 + .../doc/english/latex2e-html/ltx-143.html | 149 + .../doc/english/latex2e-html/ltx-164.html | 68 + .../doc/english/latex2e-html/ltx-165.html | 24 + .../doc/english/latex2e-html/ltx-169.html | 26 + .../texmf-doc/doc/english/latex2e-html/ltx-17.html | 51 + .../doc/english/latex2e-html/ltx-170.html | 41 + .../doc/english/latex2e-html/ltx-171.html | 32 + .../doc/english/latex2e-html/ltx-172.html | 24 + .../doc/english/latex2e-html/ltx-173.html | 18 + .../doc/english/latex2e-html/ltx-174.html | 25 + .../doc/english/latex2e-html/ltx-175.html | 22 + .../doc/english/latex2e-html/ltx-176.html | 26 + .../doc/english/latex2e-html/ltx-177.html | 55 + .../doc/english/latex2e-html/ltx-178.html | 44 + .../doc/english/latex2e-html/ltx-179.html | 35 + .../texmf-doc/doc/english/latex2e-html/ltx-18.html | 88 + .../doc/english/latex2e-html/ltx-180.html | 40 + .../doc/english/latex2e-html/ltx-181.html | 27 + .../doc/english/latex2e-html/ltx-182.html | 26 + .../doc/english/latex2e-html/ltx-183.html | 17 + .../doc/english/latex2e-html/ltx-184.html | 17 + .../doc/english/latex2e-html/ltx-185.html | 17 + .../doc/english/latex2e-html/ltx-186.html | 17 + .../doc/english/latex2e-html/ltx-187.html | 20 + .../doc/english/latex2e-html/ltx-188.html | 16 + .../doc/english/latex2e-html/ltx-189.html | 17 + .../texmf-doc/doc/english/latex2e-html/ltx-19.html | 50 + .../doc/english/latex2e-html/ltx-190.html | 17 + .../doc/english/latex2e-html/ltx-191.html | 28 + .../doc/english/latex2e-html/ltx-192.html | 30 + .../doc/english/latex2e-html/ltx-195.html | 20 + .../doc/english/latex2e-html/ltx-198.html | 23 + .../doc/english/latex2e-html/ltx-199.html | 22 + .../texmf-doc/doc/english/latex2e-html/ltx-2.html | 328 + .../texmf-doc/doc/english/latex2e-html/ltx-20.html | 35 + .../doc/english/latex2e-html/ltx-200.html | 44 + .../doc/english/latex2e-html/ltx-201.html | 18 + .../doc/english/latex2e-html/ltx-202.html | 68 + .../doc/english/latex2e-html/ltx-203.html | 34 + .../doc/english/latex2e-html/ltx-204.html | 20 + .../doc/english/latex2e-html/ltx-205.html | 42 + .../doc/english/latex2e-html/ltx-206.html | 17 + .../doc/english/latex2e-html/ltx-207.html | 26 + .../texmf-doc/doc/english/latex2e-html/ltx-21.html | 20 + .../doc/english/latex2e-html/ltx-210.html | 18 + .../doc/english/latex2e-html/ltx-211.html | 32 + .../doc/english/latex2e-html/ltx-212.html | 18 + .../doc/english/latex2e-html/ltx-213.html | 16 + .../doc/english/latex2e-html/ltx-214.html | 28 + .../doc/english/latex2e-html/ltx-216.html | 22 + .../doc/english/latex2e-html/ltx-217.html | 22 + .../doc/english/latex2e-html/ltx-218.html | 25 + .../texmf-doc/doc/english/latex2e-html/ltx-22.html | 46 + .../doc/english/latex2e-html/ltx-220.html | 17 + .../doc/english/latex2e-html/ltx-221.html | 19 + .../doc/english/latex2e-html/ltx-222.html | 52 + .../doc/english/latex2e-html/ltx-223.html | 50 + .../doc/english/latex2e-html/ltx-224.html | 35 + .../doc/english/latex2e-html/ltx-225.html | 45 + .../doc/english/latex2e-html/ltx-226.html | 26 + .../doc/english/latex2e-html/ltx-227.html | 17 + .../doc/english/latex2e-html/ltx-228.html | 29 + .../doc/english/latex2e-html/ltx-229.html | 27 + .../doc/english/latex2e-html/ltx-230.html | 26 + .../doc/english/latex2e-html/ltx-231.html | 31 + .../doc/english/latex2e-html/ltx-232.html | 28 + .../doc/english/latex2e-html/ltx-233.html | 16 + .../doc/english/latex2e-html/ltx-234.html | 31 + .../doc/english/latex2e-html/ltx-235.html | 21 + .../doc/english/latex2e-html/ltx-236.html | 21 + .../doc/english/latex2e-html/ltx-237.html | 37 + .../doc/english/latex2e-html/ltx-238.html | 18 + .../doc/english/latex2e-html/ltx-239.html | 27 + .../doc/english/latex2e-html/ltx-240.html | 16 + .../doc/english/latex2e-html/ltx-241.html | 27 + .../doc/english/latex2e-html/ltx-242.html | 15 + .../doc/english/latex2e-html/ltx-243.html | 14 + .../doc/english/latex2e-html/ltx-244.html | 30 + .../doc/english/latex2e-html/ltx-245.html | 31 + .../doc/english/latex2e-html/ltx-246.html | 18 + .../doc/english/latex2e-html/ltx-247.html | 19 + .../doc/english/latex2e-html/ltx-248.html | 21 + .../doc/english/latex2e-html/ltx-249.html | 18 + .../doc/english/latex2e-html/ltx-250.html | 41 + .../doc/english/latex2e-html/ltx-251.html | 22 + .../doc/english/latex2e-html/ltx-252.html | 48 + .../doc/english/latex2e-html/ltx-253.html | 15 + .../doc/english/latex2e-html/ltx-254.html | 16 + .../doc/english/latex2e-html/ltx-255.html | 14 + .../doc/english/latex2e-html/ltx-256.html | 25 + .../doc/english/latex2e-html/ltx-257.html | 29 + .../doc/english/latex2e-html/ltx-258.html | 25 + .../doc/english/latex2e-html/ltx-259.html | 20 + .../doc/english/latex2e-html/ltx-260.html | 95 + .../doc/english/latex2e-html/ltx-261.html | 17 + .../doc/english/latex2e-html/ltx-262.html | 62 + .../doc/english/latex2e-html/ltx-263.html | 33 + .../doc/english/latex2e-html/ltx-264.html | 33 + .../doc/english/latex2e-html/ltx-265.html | 35 + .../doc/english/latex2e-html/ltx-266.html | 17 + .../doc/english/latex2e-html/ltx-267.html | 52 + .../doc/english/latex2e-html/ltx-268.html | 42 + .../doc/english/latex2e-html/ltx-269.html | 19 + .../texmf-doc/doc/english/latex2e-html/ltx-27.html | 65 + .../doc/english/latex2e-html/ltx-271.html | 22 + .../doc/english/latex2e-html/ltx-275.html | 17 + .../doc/english/latex2e-html/ltx-276.html | 15 + .../doc/english/latex2e-html/ltx-277.html | 25 + .../doc/english/latex2e-html/ltx-279.html | 19 + .../doc/english/latex2e-html/ltx-280.html | 18 + .../doc/english/latex2e-html/ltx-281.html | 22 + .../doc/english/latex2e-html/ltx-282.html | 17 + .../doc/english/latex2e-html/ltx-283.html | 21 + .../doc/english/latex2e-html/ltx-284.html | 18 + .../doc/english/latex2e-html/ltx-286.html | 23 + .../doc/english/latex2e-html/ltx-287.html | 29 + .../doc/english/latex2e-html/ltx-288.html | 26 + .../doc/english/latex2e-html/ltx-289.html | 22 + .../texmf-doc/doc/english/latex2e-html/ltx-29.html | 28 + .../doc/english/latex2e-html/ltx-291.html | 22 + .../doc/english/latex2e-html/ltx-293.html | 17 + .../doc/english/latex2e-html/ltx-294.html | 35 + .../doc/english/latex2e-html/ltx-296.html | 30 + .../doc/english/latex2e-html/ltx-297.html | 26 + .../doc/english/latex2e-html/ltx-298.html | 25 + .../doc/english/latex2e-html/ltx-299.html | 17 + .../texmf-doc/doc/english/latex2e-html/ltx-3.html | 88 + .../texmf-doc/doc/english/latex2e-html/ltx-30.html | 42 + .../doc/english/latex2e-html/ltx-300.html | 25 + .../doc/english/latex2e-html/ltx-301.html | 25 + .../doc/english/latex2e-html/ltx-302.html | 33 + .../doc/english/latex2e-html/ltx-303.html | 27 + .../doc/english/latex2e-html/ltx-304.html | 21 + .../doc/english/latex2e-html/ltx-305.html | 21 + .../doc/english/latex2e-html/ltx-306.html | 37 + .../doc/english/latex2e-html/ltx-307.html | 35 + .../doc/english/latex2e-html/ltx-308.html | 20 + .../doc/english/latex2e-html/ltx-309.html | 14 + .../texmf-doc/doc/english/latex2e-html/ltx-31.html | 32 + .../doc/english/latex2e-html/ltx-310.html | 20 + .../doc/english/latex2e-html/ltx-311.html | 29 + .../doc/english/latex2e-html/ltx-312.html | 23 + .../doc/english/latex2e-html/ltx-313.html | 18 + .../doc/english/latex2e-html/ltx-314.html | 25 + .../doc/english/latex2e-html/ltx-315.html | 21 + .../doc/english/latex2e-html/ltx-316.html | 18 + .../doc/english/latex2e-html/ltx-317.html | 15 + .../doc/english/latex2e-html/ltx-318.html | 21 + .../doc/english/latex2e-html/ltx-319.html | 23 + .../doc/english/latex2e-html/ltx-323.html | 19 + .../doc/english/latex2e-html/ltx-324.html | 30 + .../doc/english/latex2e-html/ltx-328.html | 16 + .../doc/english/latex2e-html/ltx-329.html | 24 + .../doc/english/latex2e-html/ltx-330.html | 16 + .../doc/english/latex2e-html/ltx-331.html | 20 + .../doc/english/latex2e-html/ltx-332.html | 18 + .../doc/english/latex2e-html/ltx-335.html | 28 + .../doc/english/latex2e-html/ltx-336.html | 28 + .../doc/english/latex2e-html/ltx-337.html | 23 + .../doc/english/latex2e-html/ltx-338.html | 22 + .../doc/english/latex2e-html/ltx-339.html | 27 + .../doc/english/latex2e-html/ltx-340.html | 25 + .../doc/english/latex2e-html/ltx-341.html | 31 + .../doc/english/latex2e-html/ltx-342.html | 39 + .../doc/english/latex2e-html/ltx-345.html | 20 + .../doc/english/latex2e-html/ltx-346.html | 17 + .../doc/english/latex2e-html/ltx-347.html | 29 + .../texmf-doc/doc/english/latex2e-html/ltx-37.html | 24 + .../texmf-doc/doc/english/latex2e-html/ltx-39.html | 25 + .../doc/english/latex2e-html/ltx-401.html | 96 + .../doc/english/latex2e-html/ltx-402.html | 41 + .../doc/english/latex2e-html/ltx-403.html | 116 + .../doc/english/latex2e-html/ltx-404.html | 75 + .../doc/english/latex2e-html/ltx-405.html | 72 + .../doc/english/latex2e-html/ltx-406.html | 58 + .../doc/english/latex2e-html/ltx-407.html | 90 + .../doc/english/latex2e-html/ltx-408.html | 79 + .../doc/english/latex2e-html/ltx-409.html | 76 + .../doc/english/latex2e-html/ltx-420.html | 26 + .../doc/english/latex2e-html/ltx-421.html | 54 + .../texmf-doc/doc/english/latex2e-html/ltx-43.html | 107 + .../doc/english/latex2e-html/ltx-430.html | 25 + .../doc/english/latex2e-html/ltx-431.html | 47 + .../doc/english/latex2e-html/ltx-432.html | 27 + .../doc/english/latex2e-html/ltx-433.html | 26 + .../doc/english/latex2e-html/ltx-434.html | 30 + .../texmf-doc/doc/english/latex2e-html/ltx-58.html | 60 + .../texmf-doc/doc/english/latex2e-html/ltx-67.html | 49 + .../texmf-doc/doc/english/latex2e-html/ltx-68.html | 149 + .../texmf-doc/doc/english/latex2e-html/ltx-73.html | 78 + .../texmf-doc/doc/english/latex2e-html/ltx-77.html | 21 + .../texmf-doc/doc/english/latex2e-html/ltx-78.html | 29 + .../texmf-doc/doc/english/latex2e-html/ltx-79.html | 43 + .../texmf-doc/doc/english/latex2e-html/ltx-81.html | 20 + .../texmf-doc/doc/english/latex2e-html/ltx-82.html | 31 + .../texmf-doc/doc/english/latex2e-html/ltx-86.html | 111 + .../texmf-doc/doc/english/latex2e-html/ltx-87.html | 21 + .../texmf-doc/doc/english/latex2e-html/ltx-88.html | 22 + .../texmf-doc/doc/english/latex2e-html/ltx-89.html | 27 + .../texmf-doc/doc/english/latex2e-html/ltx-90.html | 21 + .../texmf-doc/doc/english/latex2e-html/ltx-91.html | 78 + .../texmf-doc/doc/english/latex2e-html/ltx-93.html | 22 + .../texmf-doc/doc/english/latex2e-html/ltx-97.html | 20 + .../texmf-doc/doc/english/latex2e-html/ltx-98.html | 23 + .../texmf-doc/doc/english/latex2e-html/ltx-99.html | 40 + .../doc/english/latex2e-html/ltx-tar.html | 102 + .../doc/english/latex2e-html/mathfonts.html | 87 + .../texmf-doc/doc/english/latex2e-html/mirror.html | 125 + .../doc/english/latex2e-html/parskip.html | 27 + .../texmf-doc/doc/english/latex2e-html/refs.html | 53 + .../doc/english/latex2e-html/stackrel.html | 90 + .../doc/english/latex2e-html/textwidth.html | 21 + Master/texmf-doc/doc/english/latex2e-html/toc.html | 26 + .../doc/english/latex2e-html/trivlist.html | 30 + .../doc/english/latex2e-html/unitlength.html | 24 + .../doc/english/latex2e-html/versions.html | 83 + .../texmf-doc/doc/english/lshort-english/CHANGES | 401 + Master/texmf-doc/doc/english/lshort-english/README | 76 + .../english/lshort-english/lshort-4.17.src.tar.gz | Bin 0 -> 201487 bytes .../doc/english/lshort-english/lshort.pdf | Bin 0 -> 1807090 bytes 1105 files changed, 122247 insertions(+) create mode 100644 Master/texmf-doc/doc/english/impatient/Makefile create mode 100644 Master/texmf-doc/doc/english/impatient/README create mode 100644 Master/texmf-doc/doc/english/impatient/backm.tex create mode 100644 Master/texmf-doc/doc/english/impatient/book.ccs create mode 100644 Master/texmf-doc/doc/english/impatient/book.pdf create mode 100644 Master/texmf-doc/doc/english/impatient/book.sdx create mode 100644 Master/texmf-doc/doc/english/impatient/book.tex create mode 100644 Master/texmf-doc/doc/english/impatient/capsule.tex create mode 100644 Master/texmf-doc/doc/english/impatient/concepts.tex create mode 100644 Master/texmf-doc/doc/english/impatient/config.tex create mode 100644 Master/texmf-doc/doc/english/impatient/copyrght.tex create mode 100644 Master/texmf-doc/doc/english/impatient/eplain.tex create mode 100644 Master/texmf-doc/doc/english/impatient/errata.future create mode 100644 Master/texmf-doc/doc/english/impatient/errors.tex create mode 100644 Master/texmf-doc/doc/english/impatient/examples.tex create mode 100644 Master/texmf-doc/doc/english/impatient/fdl.tex create mode 100644 Master/texmf-doc/doc/english/impatient/fonts.tex create mode 100644 Master/texmf-doc/doc/english/impatient/frontm.tex create mode 100644 Master/texmf-doc/doc/english/impatient/genops.tex create mode 100644 Master/texmf-doc/doc/english/impatient/index.tex create mode 100644 Master/texmf-doc/doc/english/impatient/index1.icn create mode 100644 Master/texmf-doc/doc/english/impatient/index2.icn create mode 100644 Master/texmf-doc/doc/english/impatient/macros.tex create mode 100644 Master/texmf-doc/doc/english/impatient/math.tex create mode 100644 Master/texmf-doc/doc/english/impatient/modes.tex create mode 100644 Master/texmf-doc/doc/english/impatient/pages.tex create mode 100644 Master/texmf-doc/doc/english/impatient/paras.tex create mode 100644 Master/texmf-doc/doc/english/impatient/preface.tex create mode 100644 Master/texmf-doc/doc/english/impatient/read1st.tex create mode 100644 Master/texmf-doc/doc/english/impatient/tips.tex create mode 100644 Master/texmf-doc/doc/english/impatient/usebook.tex create mode 100644 Master/texmf-doc/doc/english/impatient/usermacs.tex create mode 100644 Master/texmf-doc/doc/english/impatient/usingtex.tex create mode 100644 Master/texmf-doc/doc/english/impatient/xmptext.tex create mode 100644 Master/texmf-doc/doc/english/knuth/errata/README create mode 100644 Master/texmf-doc/doc/english/knuth/errata/cm85.bug create mode 100644 Master/texmf-doc/doc/english/knuth/errata/errata.eight create mode 100644 Master/texmf-doc/doc/english/knuth/errata/errata.five create mode 100644 Master/texmf-doc/doc/english/knuth/errata/errata.four create mode 100644 Master/texmf-doc/doc/english/knuth/errata/errata.nine create mode 100644 Master/texmf-doc/doc/english/knuth/errata/errata.one create mode 100644 Master/texmf-doc/doc/english/knuth/errata/errata.seven create mode 100644 Master/texmf-doc/doc/english/knuth/errata/errata.six create mode 100644 Master/texmf-doc/doc/english/knuth/errata/errata.ten create mode 100644 Master/texmf-doc/doc/english/knuth/errata/errata.tex create mode 100644 Master/texmf-doc/doc/english/knuth/errata/errata.three create mode 100644 Master/texmf-doc/doc/english/knuth/errata/errata.two create mode 100644 Master/texmf-doc/doc/english/knuth/errata/errata1.tex create mode 100644 Master/texmf-doc/doc/english/knuth/errata/errata2.tex create mode 100644 Master/texmf-doc/doc/english/knuth/errata/errata3.tex create mode 100644 Master/texmf-doc/doc/english/knuth/errata/errata4.tex create mode 100644 Master/texmf-doc/doc/english/knuth/errata/errata5.tex create mode 100644 Master/texmf-doc/doc/english/knuth/errata/errata6.tex create mode 100644 Master/texmf-doc/doc/english/knuth/errata/errata7.tex create mode 100644 Master/texmf-doc/doc/english/knuth/errata/errata8.tex create mode 100644 Master/texmf-doc/doc/english/knuth/errata/errata9.tex create mode 100644 Master/texmf-doc/doc/english/knuth/errata/errorlog.tex create mode 100644 Master/texmf-doc/doc/english/knuth/errata/index.html create mode 100644 Master/texmf-doc/doc/english/knuth/errata/logmac.tex create mode 100644 Master/texmf-doc/doc/english/knuth/errata/mf84.bug create mode 100644 Master/texmf-doc/doc/english/knuth/errata/tex82.bug create mode 100644 Master/texmf-doc/doc/english/knuth/errorlog.tex create mode 100644 Master/texmf-doc/doc/english/knuth/expr.mf create mode 100644 Master/texmf-doc/doc/english/knuth/index.html create mode 100644 Master/texmf-doc/doc/english/knuth/io.mf create mode 100644 Master/texmf-doc/doc/english/knuth/mfman.mf create mode 100644 Master/texmf-doc/doc/english/knuth/primes.web create mode 100644 Master/texmf-doc/doc/english/knuth/story.tex create mode 100644 Master/texmf-doc/doc/english/knuth/trap.mf create mode 100644 Master/texmf-doc/doc/english/knuth/trap.pl create mode 100644 Master/texmf-doc/doc/english/knuth/trapman.tex create mode 100644 Master/texmf-doc/doc/english/knuth/trip.pl create mode 100644 Master/texmf-doc/doc/english/knuth/trip.tex create mode 100644 Master/texmf-doc/doc/english/knuth/tripman.tex create mode 100644 Master/texmf-doc/doc/english/knuth/web.tex create mode 100644 Master/texmf-doc/doc/english/knuth/webman.tex create mode 100644 Master/texmf-doc/doc/english/l2tabu-english/l2tabuen.pdf create mode 100644 Master/texmf-doc/doc/english/l2tabu-english/l2tabuen.tex create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/1-4-1.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/1-4-10.pic create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/1-4-11.pic create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/1-4-12.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/1-4-2.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/1-4-3.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/1-4-4.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/1-4-5.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/1-4-6.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/1-4-7.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/1-4-8.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/1-4-9.pic create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/10-1-1.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/10-1-2.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/10-1-3.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/10-1-4.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/10-1-5.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/10-5-1.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/11-3-1.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/11-6-1.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/12-0-1.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/12-0-10.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/12-0-11.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/12-0-12.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/12-0-2.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/12-0-3.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/12-0-4.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/12-0-5.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/12-0-6.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/12-0-7.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/12-0-8.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/12-0-9.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-2-1.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-2-10.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-2-11.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-2-12.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-2-13.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-2-14.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-2-15.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-2-16.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-2-17.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-2-18.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-2-19.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-2-2.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-2-20.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-2-3.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-2-4.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-2-5.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-2-6.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-2-7.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-2-8.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-2-9.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-3-1.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-3-10.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-3-11.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-3-12.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-3-13.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-3-14.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-3-15.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-3-16.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-3-17.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-3-2.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-3-3.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-3-4.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-3-5.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-3-6.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-3-7.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-3-8.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/2-3-9.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-1-1.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-1-2.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-1-3.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-1-4.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-1-5.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-1-6.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-1-7.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-1-8.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-1-9.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-2-1.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-2-2.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-2-3.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-3-1.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-3-10.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-3-11.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-3-12.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-3-13.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-3-14.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-3-15.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-3-16.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-3-17.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-3-18.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-3-19.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-3-2.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-3-3.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-3-4.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-3-5.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-3-6.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-3-7.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-3-8.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-3-9.mp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-4-1.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-4-2.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-4-3.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-4-4.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-4-5.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/3-4-6.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-10-1.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-10-10.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-10-11.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-10-2.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-10-3.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-10-4.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-10-5.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-10-6.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-10-7.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-10-8.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-10-9.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-2-1.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-2-2.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-2-3.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-2-4.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-2-5.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-3-1.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-3-2.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-4-1.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-4-10.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-4-11.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-4-12.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-4-2.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-4-3.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-4-4.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-4-5.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-4-6.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-4-7.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-4-8.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-4-9.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-5-1.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-5-10.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-5-11.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-5-12.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-5-13.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-5-14.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-5-15.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-5-16.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-5-2.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-5-3.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-5-4.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-5-5.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-5-6.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-5-7.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-5-8.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-5-9.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-1.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-10.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-11.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-12.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-13.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-14.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-15.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-16.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-17.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-18.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-19.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-2.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-20.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-21.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-22.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-23.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-24.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-25.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-26.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-27.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-28.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-29.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-3.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-30.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-31.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-32.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-33.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-34.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-35.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-36.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-37.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-38.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-39.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-4.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-40.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-41.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-42.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-43.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-44.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-45.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-46.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-5.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-6.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-7.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-8.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-6-9.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-7-1.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-7-2.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-7-3.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-7-4.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-8-1.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-8-2.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-8-3.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-8-4.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-8-5.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-9-1.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-9-10.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/4-9-2.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-2-1.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-3-1.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-3-2.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-3-3.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-3-4.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-3-5.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-3-6.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-3-7.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-3-8.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-3-9.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-4-1.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-4-2.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-4-3.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-4-4.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-1.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-10.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-11.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-12.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-13.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-14.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-15.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-16.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-17.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-18.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-19.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-2.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-20.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-21.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-22.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-23.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-24.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-25.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-26.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-27.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-28.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-29.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-3.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-30.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-31.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-32.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-33.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-34.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-35.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-4.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-5.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-6.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-7.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-8.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/5-5-9.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-1.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-10.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-11.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-12.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-13.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-14.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-15.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-16.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-17.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-18.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-19.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-2.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-20.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-21.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-22.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-23.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-24.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-3.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-4.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-5.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-6.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-7.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-8.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-2-9.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-3-1.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-3-10.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-3-11.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-3-12.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-3-13.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-3-14.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-3-2.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-3-3.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-3-4.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-3-5.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-3-6.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-3-7.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-3-8.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-3-9.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-4-1.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-4-2.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-4-3.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-5-1.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-6-1.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-6-2.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-6-3.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-6-4.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-6-5.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-6-6.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-6-7.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-7-1.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-7-1.m4 create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-7-2.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-7-2.m4 create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-7-3.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-7-3.m4 create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-7-4.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/6-7-4.m4 create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-2-1.mx1 create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-2-1.mx2 create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-2-1.ptx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-2-2.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-2-3.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-2-4.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-2-5.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-2-6.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-3-1.abc create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-3-2.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-3-3.abc create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-3-4.abc create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-3-5.abc create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-3-6.abc create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-3-7.abc create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-3-8.abc create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-3-9.abc create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-4-1.mpp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-4-10.mx1 create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-4-10.mx2 create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-4-10.ptx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-4-2.mpp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-4-3.mpp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-4-4.mpp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-4-5.mpp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-4-6.mpp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-4-7.mpp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-4-8.mpp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/7-4-9.mpp create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-1-1.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-1-2.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-1-3.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-1-4.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-2-1.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-2-2.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-2-3.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-3-1.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-3-2.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-3-3.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-4-1.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-4-2.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-5-1.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-6-1.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-6-2.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-6-3.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-6-4.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-6-5.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-6-6.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-6-7.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-6-8.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-7-1.acr create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-7-1.dwn create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-7-1.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-7-2.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-7-3.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/8-7-4.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-2-1.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-2-2.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-2-3.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-2-4.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-2-5.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-2-6.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-2-7.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-2-8.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-2-9.ltx create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-3-1.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-3-10.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-3-11.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-3-12.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-3-13.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-3-14.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-3-15.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-3-16.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-3-17.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-3-18.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-3-19.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-3-2.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-3-20.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-3-3.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-3-4.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-3-5.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-3-6.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-3-7.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-3-8.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/9-3-9.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/A-1-1.inl create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/Makefile create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/README create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/ages.dat create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/bar.ini create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/chap.dat create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/clef.ini create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/config.ps.gz create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/decade.dat create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/feature.ini create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/graves.dat create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/inputs/graphics.cfg create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/inputs/header.tex create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/inputs/mfpic.sty create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/inputs/ppex.cls create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/key.ini create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/langs.dat create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/langs2.dat create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/langs3.dat create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/macro.ini create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/mpp.tex create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/note.ini create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/notecc.ini create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/pot.dat create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/script.ini create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/scriptcc.ini create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/stones.dat create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/students.dat create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/veracx.mx1 create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/veracx.tex create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/yearm.dat create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/years.dat create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/years.men create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/years.wom create mode 100644 Master/texmf-doc/doc/english/latex-graphics-companion/yearw.dat create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apa/README.apa create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa-raw.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa.ltx create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apa/latexexa.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apa/phys332-1.eps create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apa/phys332-2.eps create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apa/teched.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apa/teched.java create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apb/InvitationSAX.class create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apb/InvitationSAX.java create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apb/MySAXApp.class create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apb/MySAXApp.java create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apb/README.apb create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apb/bibliotest1.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apb/bibliotest2.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apb/biblioxml1.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apb/biblioxml2.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apb/colorcir.eps create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apb/inv2.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apb/invitation.sty create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apb/invitation2.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apb/invitation2.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apb/latexmath.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apb/latexmml.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apb/minilatex.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apb/minilatex.xsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apb/minilatexexa.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apb/minilatexexa.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apb/mybiblio.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apb/utf82latin1.sh create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apc/ISOcyr1.pen create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apc/README.apc create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apc/invitation.sty create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apc/invitationfr.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apc/invitationfr.sty create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apc/invitationfr.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apc/invitationfr.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apc/invlat1fr.xsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apc/utf8.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apc/utf8.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apc/utf8.xsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/apc/utf8tei.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/Makefile create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/Makefile.ex2 create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/Makefile.ex3 create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/README.ch3 create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/colorcir.eps create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex20.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex21.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex22.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex2bib.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30.lof create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30.lot create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/contents.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/ex30.css create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/ex30.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/index.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/index.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/internals.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/labels.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex30/sections.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31.ptr create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/Timg1.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/WARNINGS create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/contents.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/ex31.css create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/ex31.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/figure.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/images.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/images.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/img1.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/index.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/internals.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/labels.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex31/sections.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32.ptr create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/contents.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/ex32.css create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/ex32.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/index.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/internals.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/labels.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/sections.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex32/table.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/ex3bib.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa.lof create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa.lot create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/images.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/images.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/img1.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/img2.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/index.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/internals.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/l2hexa.css create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/l2hexa.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/labels.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node1.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node2.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node3.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node4.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node5.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node6.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node7.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/l2hexa/node8.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/myinit.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS.css create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/WARNINGS create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/images.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/images.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img1.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img10.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img11.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img12.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img13.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img14.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img15.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img16.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img17.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img18.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img19.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img2.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img20.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img21.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img3.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img4.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img5.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img6.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img7.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img8.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/img9.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/index.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/internals.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/labels.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/node1.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/sampleAMS.css create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleAMS/sampleAMS.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/WARNINGS create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/images.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/images.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img1.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img10.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img11.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img12.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img13.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img14.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img15.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img16.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img17.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img18.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img19.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img2.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img20.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img3.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img4.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img5.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img6.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img7.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img8.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/img9.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/index.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/internals.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/labels.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/node1.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/sampleMath.css create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMath/sampleMath.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/WARNINGS create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/images.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/images.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img1.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img2.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img3.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img4.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img5.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img6.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img7.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img8.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/img9.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/index.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/internals.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/labels.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/node1.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/sampleMathImages.css create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathImages/sampleMathImages.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/Timg8.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/Timg9.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/WARNINGS create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/images.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/images.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img1.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img2.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img3.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img4.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img5.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img6.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img7.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img8.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/img9.gif create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/index.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/internals.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/labels.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/node1.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/sampleMathThumb.css create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/sampleMathThumb/sampleMathThumb.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/ch3bis/tac2dim.eps create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/intro/lwc.eepic create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/intro/lwc.fig create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2html/Makefile.ex2 create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2html/Makefile.ex3 create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2html/README.ch3 create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2html/colorcir.eps create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex20.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex21.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex22.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex2bib.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex30.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex31.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex32.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2html/ex3bib.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2html/l2hexa.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2html/myinit.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleAMS.css create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleAMS.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleMath.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleMathImages.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2html/sampleMathThumb.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2html/tac2dim.eps create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/amaya.mml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsae.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsbe.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsce.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsne.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsoe.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoamsre.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isogrk3e.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isomfrke.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isomopfe.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isomscre.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isonume.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/isoteche.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/l2xdemo.cfg create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/l2xdemo.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/l2xdemo.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/l2xmath.cfg create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mathml.dsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mathml.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mathmltools.dsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mathmlx.dsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mmaliase.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mmlent.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/mtdemo.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/stix.mml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/techexpl.mml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/test.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/test.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/tmp.tmp create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try.cfg create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try2.cfg create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try3.cfg create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try4.cfg create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/try5.cfg create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/webeq.mml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/latex2xml/xml.dcl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xml/README.ch6 create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xml/catalog create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xml/emptyexample.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xml/invitation.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xml/invitation.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xml/wrong.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xml/xml.dcl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/README.ch7 create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS.pm create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/Output.pm create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/Refs.pm create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/SGMLS/SGMLS.pm create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog.dsssl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/catalog.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/dsssl.cat create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/dsssl.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/empty.dsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/empty.xsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/emptyexample.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/entable-alt.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/entable.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/fot.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/frisotab1exa1.xsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/frisotab1exa2.xsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv1html.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2css.html.save create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2html.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv2lat.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/inv3.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invcss.html.save create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfo1.fo create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfo1.xsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invfop.pdf create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invhtml.dsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invhtml2.xsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invit.css create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.dsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.sty create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.tex.save create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation1.tex create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.html create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitation2.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invitationfr.sty create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invlat1.xsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invptex.pdf create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invtab1.dsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/invtab2.dsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotab1to2-bis.xsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotab1to2.xsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotabexa1.xsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/isotabexa2.xsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sectionexa.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sectionexa.xsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/sgmlspl.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/skel.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/style-sheet.dtd create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatest.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatest.xsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatestnok.xsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/templatestok.xsl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/test-SGMLS.pl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/writefiles.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/wrong.xml create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/xml.dcl create mode 100644 Master/texmf-doc/doc/english/latex-web-companion/xmlstyle/xslexa1.xsl create mode 100644 Master/texmf-doc/doc/english/latex2e-html/LaTeX-info.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/baselineskip.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/boldmath.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/caption.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/declarations.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ellipses.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/emph.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ensuremath.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/externals.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/fonts2e.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/fragile.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/frenchsp.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/index.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/input.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/item.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/lefteqn.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/lists.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-111.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-115.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-117.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-118.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-119.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-13.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-130.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-131.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-137.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-138.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-140.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-141.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-142.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-143.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-164.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-165.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-169.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-17.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-170.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-171.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-172.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-173.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-174.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-175.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-176.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-177.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-178.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-179.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-18.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-180.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-181.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-182.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-183.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-184.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-185.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-186.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-187.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-188.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-189.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-19.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-190.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-191.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-192.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-195.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-198.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-199.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-2.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-20.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-200.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-201.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-202.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-203.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-204.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-205.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-206.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-207.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-21.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-210.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-211.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-212.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-213.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-214.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-216.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-217.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-218.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-22.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-220.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-221.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-222.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-223.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-224.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-225.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-226.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-227.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-228.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-229.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-230.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-231.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-232.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-233.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-234.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-235.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-236.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-237.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-238.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-239.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-240.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-241.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-242.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-243.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-244.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-245.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-246.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-247.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-248.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-249.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-250.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-251.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-252.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-253.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-254.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-255.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-256.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-257.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-258.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-259.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-260.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-261.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-262.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-263.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-264.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-265.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-266.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-267.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-268.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-269.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-27.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-271.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-275.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-276.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-277.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-279.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-280.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-281.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-282.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-283.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-284.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-286.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-287.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-288.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-289.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-29.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-291.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-293.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-294.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-296.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-297.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-298.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-299.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-3.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-30.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-300.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-301.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-302.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-303.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-304.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-305.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-306.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-307.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-308.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-309.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-31.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-310.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-311.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-312.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-313.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-314.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-315.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-316.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-317.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-318.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-319.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-323.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-324.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-328.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-329.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-330.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-331.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-332.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-335.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-336.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-337.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-338.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-339.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-340.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-341.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-342.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-345.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-346.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-347.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-37.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-39.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-401.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-402.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-403.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-404.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-405.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-406.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-407.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-408.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-409.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-420.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-421.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-43.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-430.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-431.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-432.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-433.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-434.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-58.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-67.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-68.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-73.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-77.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-78.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-79.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-81.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-82.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-86.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-87.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-88.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-89.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-90.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-91.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-93.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-97.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-98.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-99.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/ltx-tar.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/mathfonts.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/mirror.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/parskip.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/refs.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/stackrel.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/textwidth.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/toc.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/trivlist.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/unitlength.html create mode 100644 Master/texmf-doc/doc/english/latex2e-html/versions.html create mode 100644 Master/texmf-doc/doc/english/lshort-english/CHANGES create mode 100644 Master/texmf-doc/doc/english/lshort-english/README create mode 100644 Master/texmf-doc/doc/english/lshort-english/lshort-4.17.src.tar.gz create mode 100644 Master/texmf-doc/doc/english/lshort-english/lshort.pdf (limited to 'Master/texmf-doc') 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 Binary files /dev/null and b/Master/texmf-doc/doc/english/impatient/book.pdf 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}{\}{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}{\}{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}{\}{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}{\}{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}{}{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}{\}{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}{}{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}{\}{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}{}{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}{}{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 \ 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$\{\tt \\else}\{\tt \\fi}} +^^|\else|^^|\fi| +\noindent or:\hfil\ +\display{ +{\tt \\if}$\alpha$\{\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 \. +If the condition is false, \TeX\ expands \ (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 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 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). + + c + + n +l.340 Skip across \hskip 3cn + by 3 centimeters. +| +^^|| +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 + 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. + + $ + + \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. + + } + + \vskip +l.29 \hbox{One \vskip + 1in two.} +| +^^|| +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. + + } + + \vskip +\smallskip ->\vskip + \smallskipamount + 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 ^|| indicates that \TeX\ was in the middle of its output routine +when this error occurred. +\li ^|| 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 {\ = \} +\aux\cts font {\ = \ {\bt scaled} \} +\aux\cts font {\ = \ {\bt at} \} +\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|, +\ 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 \ as a name that selects +the font \, possibly magnified (see below). +\li It causes \TeX\ to load the font ^{metrics file} +(^{\tfmfile}) for \. +\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| \ nor |at| \ +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| \ +is present, the font is magnified by a factor of $\hbox{\}/1000$. +\li If |at| \ is present, the font is scaled to \ by magnifying +it by $\hbox{\}/ds$, where $ds$ is the design size of +\. +\ 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 {\ \\param{dimen}} +\explain +^^{fonts//parameters of} +These parameters specify various dimensions associated with +the font named by the control sequence \ +(as distinguished from the \ that names the font files). +Values of these parameters are specified in the metrics +file for \, 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 =} \} +\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 \ 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 {\} +\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 \. \ 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 {\} +\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 \ parameter, or a \ 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 {\} +\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 \ parameter, or a \ 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 {\} +\explain +^^{tokens//showing the meaning of} +This command produces +the meaning of \. 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 {\} +\explain +^^{control sequences//converting to strings} +This command produces +the characters that form the name of \, +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 {\} +\explain +^^{fonts//names of} +This command produces the filename +for \. The filename is the \ that was used to define +\. +\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 {\} +\explain +When \TeX\ encounters this command during input, +it saves \. +After the end of the current \minref{group}, +it inserts \ 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 {\} +\explain +When \TeX\ encounters this command it saves \ in a special +place. After it next performs an \minref{assignment}, it inserts +\ 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 {\ \ \rqbraces{\}} +\explain +This command defines \ as a \minref{macro} with the +specified \ and \. +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 {\ \ \rqbraces{\}} +\explain +This command defines a macro in the same general way as |\def|. +The difference is that \TeX\ expands the \ +of an |\edef| immediately (but still without executing anything). +Thus any definitions within the \ 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 \ 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 {\ \ \rqbraces{\}} +\explain +This command is equivalent to |\global\def|. +\enddesc + +\begindesc +\cts xdef {\ \ \rqbraces{\}} +\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 {\=\} +\explain +^^{characters//defined by \b\tt\\chardef\e} +This command defines \ +to be \. +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 {\=\} +\explain +This command defines \ as a math character +with the given \minrefs{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 {\ = \} +\explain +^^{control sequences//defining with \b\tt\\let\e} +\minrefs{token} +This command causes +\ to acquire the current meaning of \. +Even if you redefine \ later, the meaning of \ +will not change. Although \ is most commonly a control sequence, +it can also be a \minref{character} token. +\enddesc + +\begindesc +\cts futurelet {\ \ \} +\explain +This command tells \TeX\ to make \ the meaning of +\ (as would be done with |\let|), and then to +process \ and \ 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 {\ {\bt \\endcsname}} +\xrdef{\endcsname} +\explain +This command produces a control sequence from \. +It provides a way of synthesizing control sequences, +including ones that you can't normally write. +\ 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 {\ \} +\explain +This command tells \TeX\ to expand \ according to its rules +for \minref{macro} expansion \emph{after} it has expanded \ +by one level. It's useful when \ is something like `|{|' +^^|{//with {\tt\\expandafter}| +or ^|\string| that inhibits expansion of \, +but you want to expand \ 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 {\} +\explain +This command tells \TeX\ to +suppress expansion of \ if \ is a +\minref{control sequence} that can be expanded. +If \ can't be expanded, e.g., it's a letter, +\TeX\ acts as though the |\noexpand| wasn't there +and processes \ normally. +In other words the expansion of `|\noexpand|\' +is simply \ no matter what \ 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 {\} +\explain +This command generally expands to a list of \minref{character} tokens +that represents \. \ 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| \, which expands to the most recently defined +control sequence that selects +the same font as the control sequence \ +\li |\the| \, 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 {\ \}\ctsxrdef{@if} +\explain +{\emergencystretch=1em +This command tests if \ and \ +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 \ and \. +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 {\ \}\ctsxrdef{@ifcat} +\explain +^^{category codes//testing} +This command tests if \ and \ +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 \ and \. +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 {\ \}\ctsxrdef{@ifx} +\explain +This command tests if \ and \ agree. +Unlike |\if| and |\ifcat|, |\ifx| does \emph{not} expand the tokens +following |\ifx|, so \ and \ 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 {\ \ \}\ctsxrdef{@ifnum} +\explain +^^{numbers//comparing} +This command tests if \ and \ +satisfy \, 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 \ \ \, followed by a token +that can't be part of \. +\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 {\}\ctsxrdef{@ifodd} +\explain +^^{numbers//testing for odd/even} +This command tests if \ is odd. +Before performing the test, \TeX\ expands tokens following the |\ifodd| +until it obtains a sequence of tokens having the form \, +followed by a token that can't be part of \. +\example +\count255 = 19 +\ifodd 5 true\else false\fi +| +\produces +\ifodd 5 true\else false\fi +\endexample +\enddesc + +\begindesc +\ctspecial ifdim {\ \ \}\ctsxrdef{@ifdim} +\explain +^^{dimensions//comparing} +This command tests if \ and \ +satisfy \, 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 \ \ \, followed by a token +that can't be part of \. + +\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 {\}\ctsxrdef{@ifhbox} +\ctspecial ifvbox {\}\ctsxrdef{@ifvbox} +\ctspecial ifvoid {\}\ctsxrdef{@ifvoid} +\explain +^^{hboxes//testing for} +^^{vboxes//testing for} +^^{boxes//testing if void} +These commands test the contents of +the box register numbered \. +Let \ 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 {\}\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 \ 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 +{\\ {\bt \\or }\ {\bt \\or} + $\ldots$ {\bt \\or} \\hfil\break +\hglue 3pc{\bt \\else} \ {\bt \\fi}} +\ctsxrdef{@ifcase} +\ctsxrdef{@or} +\explain +^^{case testing} +This command introduces a test with numbered multiple cases. +If \ has the value $k$, \TeX\ will expand \ if +it exists, and \ 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\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\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}\}\ctsxrdef{@newif} +\explain +This command names a trio of control sequences with names |\alpha!-true|, +|\alphafalse|, +and |\ifalpha|, where |alpha| is \. +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 {\ {\bt =} \} +\cts dimen {\ {\bt =} \} +\cts skip {\ {\bt =} \} +\cts muskip {\ {\bt =} \} +\cts toks {\ {\bt =} \} +\aux\cts toks {\ {\bt =} \rqbraces{\}} +\aux\cts count {\} +\aux\cts dimen {\} +\aux\cts skip {\} +\aux\cts muskip {\} +\aux\cts toks {\} +\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 \ 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 {\ {\bt =} \} +\cts dimendef {\ {\bt =} \} +\cts skipdef {\ {\bt =} \} +\cts muskipdef {\ {\bt =} \} +\cts toksdef {\ {\bt =} \} +\explain +These commands define \ to refer to the +\minref{register} of the indicated category whose number is \. +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 {\ {\bt by} \} +\aux\cts advance {\ {\bt by} \} +\aux\cts advance {\ {\bt by} \} +\aux\cts advance {\ {\bt by} \} +\explain +This command adds a compatible quantity to a register. For \ +or \ 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), \ can be converted to a +\ by dropping the stretch and shrink, and a \ can be converted +to a \ 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 {\ {\bt by} \} +\cts divide {\ {\bt by} \} +\explain +These commands multiply and divide the value in \ +by \ (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 \ by preceding it by a \ +\minrefs{number} +or decimal constant, e.g., +|-2.5\dimen2|. +You can also use this notation for \, but watch out---the result +is a \, not \. +Thus |2\baselineskip| yields a \ 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 {\} +\explain +\minrefs{file}\minrefs{file name} +This command tells \TeX\ to read its input from file \. +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 {\ {\bt =} \} +\explain +This command tells \TeX\ to open the file named \ +and make it available for reading via the input stream +designated by \. +^^{input streams//opening} +\ 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 {\} +\explain +This command tells \TeX\ to close the \minref{input stream} numbered +\, 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 {\ {\bt to} \} +\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 \ and assign the tokens on that line to +\. 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 \ is greater than $15$ or hasn't been associated with a file +using ^|\openin|, \TeX\ prompts you with `\ |=|' +on your terminal and waits for you to type a line of input. +It then assigns the input line to \. +If \ 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 {\ {\bt =} \} +\explain +^^{output streams//opening} +This command tells \TeX\ to open the file named \ +and make it available for writing via the \minref{output stream} +designated by \. +\ 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 {\} +\explain +^^{output streams//closing} +This command tells \TeX\ to close the \minref{output stream} numbered +\. 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 {\ \rqbraces{\}} +\explain +^^{output streams//writing} +^^{writing a file} +This command tells \TeX\ to write \ to the file +associated with the \minref{output stream} +designated by \. +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 +\ 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 \ are doubled, i.e., written as `|##|'. + +If \ is not in the range from $0$ to $15$, \TeX\ writes +\ to the log file. +^^{log file//written by \b\tt\\write\e} +If \ is greater than $15$ or isn't associated with an output +stream, \TeX\ also writes \ 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{\}} +\explain +This command tells \TeX\ to +write \ 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 +\ 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 {\ \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 \. +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 {\ \tblentry{number}} +\explain +This table entry contains the \minref{mathcode} of the character +whose \ascii\ code is \ \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 {\\tblentry{number}} +\explain +^^{delimiter codes} +This table entry specifies the \minref{delimiter} code for the input character +whose \ascii\ code is \. +The delimiter code tells \TeX\ how to find the best output character to use +for typesetting the indicated input character as a delimiter. + +\ is normally written in hexadecimal notation. +Suppose that \ 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 {\} +\cts showthe {\} +\cts showbox {\} +\cts showlists {} +\explain +These commands record information in the log of your \TeX\ run: +\ulist +\li |\show| records the meaning of \.\minrefs{token} +^^{tokens//displayed by \b\tt\\show\e} +\li |\showthe| records + whatever tokens would be produced by +|\the| \ (see \xref \the). +\li |\showbox| records the contents of the \minref{box} +\minref{register} numbered \. +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{\}} +\cts errmessage {\rqbraces{\}} +\explain +These commands display the message given by \ 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{\}} +\explain +This command writes \ on the log file. +^^{log file//written by \b\tt\\wlog\e} +\minrefs{log file} +\TeX\ expands \ 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} {\ + \rqbraces{\}} +\explain +This command assigns the ^{help message} given by \ to +\. 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 \ 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 `\-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\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, \ 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} {\} +\cts sb {\} +\ctsact ^ \xrdef{@hat} {\} +\cts sp {\} +\secondprinting{\vglue-4pt} +\explain +The commands in each column are equivalent. The commands in the first +column typeset \ as a subscript, and those in the second +column typeset \ 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{\} + \rqbraces{\} + \rqbraces{\} + \rqbraces{\}} +\explain +This command tells \TeX\ to typeset one of the subformulas +\, \, \, or \, making its choice +according to the current \minref{style}. +That is, if \TeX\ is in +display style it sets the |\mathchoice| as \; in text style it sets +it as \; in script style it sets it as \; +and in scriptscript style it sets it as \. +\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 {\ \} +\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|\. + +|\build| tests what style \TeX\ is in and typesets \ 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 \. +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 {\} +\explain +This command tells \TeX\ to typeset a math accent +whose family and character code are given by \. (\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 {\} +\cts choose {} +\cts brace {} +\cts brack {} +\explain +{\def\fri{\}% +\def\frii{\}% +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!!fri\over!frii\right! +{!fri\over!frii} +| +you'll get a fraction with numerator \fri\ and denominator \, +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 \. +\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 {\ \} +\cts atopwithdelims {\ \} +\cts abovewithdelims {\ \ \} +\explain +Each of these commands stacks one subformula on top of another one and +surrounds the entire construct with \ on the left and +\ on the right. These commands follow the same rules as +|\over|, |\atop|, and |\above|. The \ 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 $xy$\cr + 0,&otherwise.\cr}$$ +| +\dproduces +$$g(x,y) = \cases{f(x,y),&if $xy$\cr + 0,&otherwise.\cr}$$ +\endexample +\enddesc + +\begindesc +\cts underbrace {\} +\cts overbrace {\} +\cts underline {\} +\cts overline {\} +\cts overleftarrow {\} +\cts overrightarrow {\} +\explain +These commands place extensible ^{braces}, lines, or ^{arrows} +over or under the subformula given by \. +\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 \. +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 {\ {\bt \\over} \} +\explain +^^{relations//putting formulas above} +This command produces a \minref{box} in which \ +is placed on top of \. \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} \ \ {\bt \\right} \} +This construct causes \TeX\ to produce \, +enclosed in the \minref{delimiter}s \ and \. +The vertical size of the delimiter is adjusted to fit the +vertical size (height plus depth) of \. \ and +\ 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 {\} +\explain +This command produces a delimiter whose characteristics are given by +\. \ 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 \ 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{\ \\cr $\ldots$ \ \\cr}}} +\cts pmatrix + {{\bt \rqbraces{\ \\cr $\ldots$ \ \\cr}}} +\cts bordermatrix + {{\bt \rqbraces{\ \\cr $\ldots$ \ \\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 {\} +\explain +This command produces the notation for the square root of \. +\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 {\ {\bt \\of} \} +\explain +This command produces the notation for a root of \, where the +root is given by \. +\example +$\root \alpha \of {r \cos \theta}$ +| +\produces +$\root \alpha \of {r \cos \theta}$ +\endexample +\enddesc + +\begindesc +\cts radical {\} +\explain +This command produces a radical sign +whose characteristics are given by +\. 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{\\ths\\cr$\ldots$\\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{\ \\cr $\ldots$ \ \\cr}}} +\cts eqalignno {} + {{\bt \rqbraces{\ \\cr $\ldots$ \ \\cr}}} +\cts leqalignno {} + {{\bt \rqbraces{\ \\cr $\ldots$ \ \\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 {\\param{fontname}} +\cts scriptfont {\\param{fontname}} +\cts scriptscriptfont {\\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 {\ \ \} +\explain +This command shifts the accent \ by +\ \minref{mathematical unit}s to the right of its normal position +with respect to \. +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 {\\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 \ is a control sequence +that names a font, not a \ 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{\}} +\ctsbasic {\\vcenter to \ \rqbraces{\}}{} +\ctsbasic {\\vcenter spread \ \rqbraces{\}}{} +\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 \ +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 {\} +\explain +^^{kerns//in math formulas} +This command +produces a \minref{kern}, i.e., blank space, of width \. +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 {\ {\bt plus} \ {\bt minus} + \} +\explain +^^{glue} +This command produces horizontal \minref{glue} +that has natural width \, stretch \, +and shrink \. +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 {\ {\bt plus} \ {\bt minus} \} +\cts vskip {\ {\bt plus} \ {\bt minus} \} +^^{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 \ is present, +|\hskip| skips to the right by \ +and |\vskip| skips down the page by \. +More generally, these commands +produce \minref{glue} whose natural size is +\, whose stretch is \, and whose shrink is \. +Either the |plus| \, the |minus |\, +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 \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 {\} +\cts vglue {\} +^^{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 {\} +\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 \ 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 {\} +\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 \. 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{\}} +\aux\cts hbox {{\bt to} \ \rqbraces{\}} +\aux\cts hbox {{\bt spread} \ \rqbraces{\}} +\explain +This command produces an hbox +(horizontal \minref{box}) containing \. +The braces around \ define a group. +\TeX\ doesn't break the \ 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 \, +the hbox will have its natural \minref{width}. +\li If you specify |to| \, the width of the hbox will be \. +\li If you specify |spread| \, the width of the hbox will be +its natural width plus \, i.e., the hbox will be spread out by +\. +\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 {\} +\aux\cts vtop {{\bt to} \ \rqbraces{\}} +\aux\cts vtop {{\bt spread} \ \rqbraces{\}} +\cts vbox {\rqbraces{\}} +\aux\cts vbox {{\bt to} \ \rqbraces{\}} +\aux\cts vbox {{\bt spread} \ \rqbraces{\}} +\explain +^^{hbox//constructing with \b\tt\\hbox\e} +These commands +produce a \minref{vbox} (vertical \minref{box}) +containing \. +The braces around \ 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 \, +the vbox will have its natural height. +\li If you specify |to| \, +the height of the vbox will be \. +\li If you specify |spread| \, the height of the vbox will be +its natural height plus \, i.e., +the height of the vbox will be stretched vertically by \. +\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 {\} +\explain +This command puts \ 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 {\\thinspace{\bt =}\thinspace\} +\cts box {\} +\explain +^^{assignments//of boxes} +These commands respectively set and retrieve the contents +of the box register +whose number is \. +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 {\} +\explain +^^{boxes//copying}\minrefs{box} +This command +produces a copy of box 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 {\} +\cts unvbox {\} +^^{boxes//extracting contents of} +\explain +These commands produce the list contained in box 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 {\} +\cts unvcopy {\} +^^{boxes//extracting contents of} +^^{boxes//copying }\minrefs{box} +\explain +These commands produce the list contained in box 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 {\ \} +\cts moveright {\ \} +\bix^^{boxes//shifting} +\minrefs{box} +\explain +These commands move \ left or right by \ (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 {\ \} +\cts raise {\ \} +\explain +These commands move \ up or down by \ +(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 {\\param{dimen}} +\cts dp {\\param{dimen}} +\cts wd {\\param{dimen}} +\explain +These parameters refer to the ^{height}, ^{depth}, and ^{width} +respectively of \minref{box} \minref{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 {\} +\explain +\bix^^{boxes//phantom} +\bix^^{phantoms} +This command produces an empty \minref{box} +having the same size and placement +that \ 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 {\} +\cts vphantom {\} +\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 \ +but zero height and depth. +\li |\vphantom| produces a box with the same height and depth as \ +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 {\} +\explain +This command typesets \, +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 \ width \ depth \} +\cts vrule {} +\aux\cts vrule {{\bt width \ height \ depth \}} +\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 {\ \} +\cts cleaders {\ \} +\cts xleaders {\ \} +\explain +These commands produce \minref{leaders}, i.e., they fill a +horizontal or vertical space with +copies of a pattern \seeconcept{leaders}. +The \ or \ specifies a leader, +i.e., a single copy of the pattern, +while the \ 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 \ is a horizontal skip, the window +contains a row of leaders and \TeX\ must be in a horizontal mode; +if \ 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 \\thinspace\&\thinspace\% + \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 {\ {\bt \\columns}} +\aux\cts settabs {{\bt \\+} \ {\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 +\ 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{\ \\cr \ \\cr $\ldots$ \ \\cr}}} + \xrdef{@and}\xrdef{@pound} +\aux\cts halign {{\bt to \% + \rqbraces{\ \\cr \ \\cr $\ldots$ \ \\cr}}} +\aux\cts halign {{\bt spread \% + \rqbraces{\ \\cr \ \\cr $\ldots$ \ \\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 \, +adjusting the space between columns as necessary. +The |spread| form of this command instructs \TeX\ +to make the alignment wider by \ 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¥&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¥&0.0829\cr} +\endexample +\enddesc + +\begindesc +{\tighten +\cts valign {{\bt \rqbraces{\\\cr \\\cr $\ldots$ + \\\cr}}} +\aux\cts valign {{\bt to \% + \rqbraces{\\\cr \\\cr $\ldots$ \\\cr}}} +\aux\cts valign {{\bt spread \% + \rqbraces{\\\cr \\\cr $\ldots$ \\\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 \, +adjusting the space between rows as necessary. +The |spread| form of this command instructs \TeX\ +to make the alignment taller by \ 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¥&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¥&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 {\} +\explain +This command tells \TeX\ that the following +\ columns in a row of a horizontal alignment, +or +\ 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¥&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¥&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{\}} +\aux\cts noalign {\rqbraces{\}} +\explain +This command inserts +\ +after the current row of a horizontal \minref{alignment} or +\ 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¥&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¥&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¥&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¥&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¥&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¥&0.0829\cr} +\endexample +\enddesc + +\begindesc +\cts everycr {\param{token list}} +\explain +\TeX\ expands \ 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 {\} +\explain +This command increases ^|\baselineskip| by \. +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 {\} \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{\}} +\explain +\bix^^{marks} +This command causes \TeX\ to append a mark +containing \ +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 {\ \} +\cts vfootnote {\ \} +\explain +These commands produce footnotes. +\ is the ``^{reference mark}'' +for the footnote and \ 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 {\ {\bt \\endinsert}} +\cts midinsert {\ {\bt \\endinsert}} +\cts pageinsert {\ {\bt \\endinsert}} +\explain +These commands produce different forms of insertions that +instruct +(or allow) \TeX\ to relocate the \: +\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 \ +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 {\ \rqbraces{\}} +\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 \ +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 {\} +\explain +This command instructs \TeX\ to send \ to the \dvifile. +^^{\dvifile//receives boxes from \b\tt\\shipout\e} +\TeX\ expands any |\write| command in \ 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 {\ {\bt to} \} +\explain +This command causes \TeX\ to split the \minref{box} numbered +\, 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 \ for ^|\pagegoal|, the desired height of $B_1$. +The vertical extent of $B_1$ may not be exactly +\ 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 {\} +\explain +This command produces the character located at position \ +of the current font. +\example +{\char65} {\char `A} {\char `\A} +| +\produces +{\char65} {\char `A} {\char `\A} +\endexample +\enddesc + +\begindesc +\cts mathchar {\} +\explain +This command produces the math character whose class, family, and +font position are given by \. +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 {\} +\explain +^^{accents} +This command puts an accent over the character following this command. +The accent is the character at position \ 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 {\ \tblentry{number}} +\cts uccode {\ \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{\}} +\cts uppercase {\rqbraces{\}} +\explain ^^{case conversion} +These commands convert the letters in \, +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 {\ \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 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 {\} +\cts leftline {\} +\cts rightline {\} +\explain +The |\centerline| command produces an \minref{hbox} exactly as wide +as the current line and places \ at the center of the box. +The |\leftline| and |\rightline| commands are analogous; they +place \ 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 {\} +\explain +This command produces an \minref{hbox} containing \. +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 {\} +\cts rlap {\} +\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 \ and then +typesets \. |\rlap| is similar, except that it typesets +\ 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 {\} +\explain +^^{indentation} +This command tells \TeX\ to start a paragraph and indent it by +|\par!-indent|, +as usual. +\TeX\ then right-justifies \ 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 \ 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{\}} +\explain +This command inserts the specified \ 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 {\} \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{\} + \rqbraces{\} + \rqbraces{\}} +\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 \. +\li If \TeX\ does break there, it puts the \ just before +the break and the \ 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{\\thinspace\vs\ $\ldots$\ \vs + \thinspace\}} +\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{\\thinspace\vs\ $\ldots$\ \vs + \thinspace\}} +\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 {\} +\explain +This command sets the current language to \ +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 {\\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 \ is a control sequence +that names a font, not a \ 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 {\\thinspace{\bt\\par}} + \ctsxrdef{@beginsection} +\explain +You can use this command to begin a major subdivision of your document. +\ is intended to serve as a section title. +|\beginsection| surrounds \ +by extra vertical space and sets it in +boldface, left-justified. +You can produce the |\par| that ends \ 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 {\} +\cts itemitem {\} +\explain +^^{itemized lists} +These commands are useful for creating ^{itemized lists}. The entire paragraph +following \ 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 \, +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 {\{\tt.}\vs\thinspace + \\thinspace{\bt\\par}} + \ctsxrdef{@proclaim} +\explain +^^{theorems} +^^{lemmas} +^^{hypotheses} +This command ``proclaims'' a theorem, lemma, hypothesis, etc. +It sets \ in boldface type and the following paragraph in +italics. \ must be followed by a period and a space token, +which serve +to set off \ from \. +\ 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} +\ +{\tt \\filbreak} +\ +{\tt \\filbreak} +\leavevmode\indent\vdots +\ +{\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 = ! !dots ! !dots} +| +where \ 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^^{\} +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^^{\} + + +\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 +}} +^^{\} +^^{\} +^^{\} +^^{\} +^^{\} +^^{\} + +\noindent +All of these terms are explained in more detail in \chapterref{concepts}. +In addition, we sometimes use terms such as \ 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(\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 fine1): +vardef Vround primary y = y_:=vround y; + if y_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_stem1.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 crispy$) <> (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 ^\ 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\, $\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\, $\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 j0$ {\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|\. + +\bugonpage A214, lines 19--24 (9/23/89) + +\ninepoint +\textindent\bull |\the|\, where \ 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\alt^|\count|<8-bit number>\alt<8-bit number> + \alt\alt\alt^|\parshape|\alt^|\inputlineno| + \alt^|\hyphenchar|\alt^|\skewchar|\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$}% +\, \, \kern-1pt^|\char|\<8-bit number>, \, +\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|\.\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 \ +is replaced by an ^{active character} token having the original character +code (0 to~255); \TeX\ forgets the original \ 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 +\ 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~\ value must be less than~$16384\pt$, i.e.,~$2^{14}\pt$; +similarly, the \ in a~\ 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~\ must be less than +$2^{30}\rm\,sp$ in absolute value; a~\ 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 \ 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|\; 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| \. + +\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\\=`\| +\is[ligtable] +\is\alt[,] +\is[,] [skipto]\alt +\is + \alt[kern] + \alt