diff options
author | Karl Berry <karl@freefriends.org> | 2009-05-23 00:04:06 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2009-05-23 00:04:06 +0000 |
commit | 20d25e62ad99344ee37e88fb0787319391107640 (patch) | |
tree | b956bd202233c91691644f7177f7440cf44d673b /Master/texmf-doc/doc/english/impatient | |
parent | ed6a6417c1055f64cde693e71238dc996d1710e6 (diff) |
move plain docs out of texmf-doc
git-svn-id: svn://tug.org/texlive/trunk@13404 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-doc/doc/english/impatient')
32 files changed, 0 insertions, 25064 deletions
diff --git a/Master/texmf-doc/doc/english/impatient/Makefile b/Master/texmf-doc/doc/english/impatient/Makefile deleted file mode 100644 index 63c0d7841ce..00000000000 --- a/Master/texmf-doc/doc/english/impatient/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -# 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 deleted file mode 100644 index 07dee675182..00000000000 --- a/Master/texmf-doc/doc/english/impatient/README +++ /dev/null @@ -1,40 +0,0 @@ -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 -It is also available from http://mirror.ctan.org/info/impatient/. - -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 also a GNU project, and the development -sources, contact information, and other project details are available at -http://savannah.gnu.org/projects/teximpatient. - -TeX for the Impatient has been (independently!) translated into a wikibook: -http://en.wikibooks.org/wiki/TeX_for_the_Impatient - - -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 want to redo the index creation to use makeindex or some -other standard program, instead of our homegrown Icon programs (included -in the distribution, for what it's worth). 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 (and quick) TeXing! diff --git a/Master/texmf-doc/doc/english/impatient/backm.tex b/Master/texmf-doc/doc/english/impatient/backm.tex deleted file mode 100644 index 11d1502718f..00000000000 --- a/Master/texmf-doc/doc/english/impatient/backm.tex +++ /dev/null @@ -1,92 +0,0 @@ -% 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.pdf b/Master/texmf-doc/doc/english/impatient/book.pdf Binary files differdeleted file mode 100644 index 988068a123e..00000000000 --- a/Master/texmf-doc/doc/english/impatient/book.pdf +++ /dev/null diff --git a/Master/texmf-doc/doc/english/impatient/book.tex b/Master/texmf-doc/doc/english/impatient/book.tex deleted file mode 100644 index 9d656f7c998..00000000000 --- a/Master/texmf-doc/doc/english/impatient/book.tex +++ /dev/null @@ -1,47 +0,0 @@ -% 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 deleted file mode 100644 index 59e9a2bef09..00000000000 --- a/Master/texmf-doc/doc/english/impatient/capsule.tex +++ /dev/null @@ -1,1134 +0,0 @@ -% This is part of the book TeX for the Impatient. -% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. -% See file fdl.tex for copying conditions. - -\input macros -\chapter{Capsule summary \linebreak of commands} - -\chapterdef{capsule} - -This section contains one-line descriptions of the primitive \TeX\ -commands and the \TeX\ commands defined in \plainTeX. These include both -control sequences and -special characters. -We've omitted those commands that are only intended for internal use -in the -\plainTeX\ definition (\knuth{Appendix~B}). -Note that ordinary characters -such as `|a|' or `|6|' are also commands, and indeed the most common -ones \seeconcept{character}. - -To keep the descriptions brief, we've adopted -certain conventions: - -\ulist - -\li An asterisk in front of a command indicates that the command is primitive, -^^{primitive//command} i.e., built into the \TeX\ computer program -\seeconcept{primitive}. - -\li The words ``music'', ``punctuation'', ``function'', -``symbol'', ``relation'', ``delimiter'', or ``operator'' in a command -description imply that the command is only legal in math modes. - -\li The verb ``display'' applies to information -that \TeX\ sends to the ^{log file}, unless otherwise indicated. If -|\tracingonline| is positive, \TeX\ also sends that output to the -terminal. We use the noun ``display'' to refer to math displays (see -\xref{display math}), i.e., material between |$$|'s. - -\li The phrase ``produce $x$'' indicates that the command will typeset -$x$ and put the result in a box. -We sometimes omit ``produce'' when the omission is unlikely to -cause confusion. For example, we describe |\alpha| as ``math Greek -letter $\alpha$'', not ``produce the math Greek letter $\alpha$''. -\margin{Remove explanations of ``space'' and ``glue''} - -\endulist - -\begincapsum - -{\catcode `@ = \letter -\caplineout {\\\visiblespace} {interword space}*{\@space}}% - {\catcode `\ =\other\ctsidxref{ }} -\capcs ! {negative thin space for math}{}{\@shriek} -\capcs " {umlaut accent for text, as in \"o}{}{\@quote} -\capactwo # {introduce a macro parameter, or indicate where the text of - an entry goes in an alignment preamble}{}{@msharp:@asharp} -\capcs # {produce \# character from current font}{}{\@pound} -\capac $ {begin or end a math formula}{}{mathform} -\capcs $ {produce \$ character from current font}{}{\@bucks} -\capac % {begin a comment}*{comments} -\capcs % {produce \% character from current font}{}{\@percent} -\capac & {separate templates and entries in an alignment}{}{@and} -\capcs & {produce \& character from current font}{}{\@and} -\capac ' {prime symbol for math, as in $p'$}{}{@prime} -\capcs ' {acute accent for text, as in \'e}{}{\@prime} -\capcs * {multiplication symbol that allows a line break}{}{\@star} -\capcs + {begin tabbed line}{}{\@plus} -\capcs , {thin space for math}{}{\@comma} -\capcs - {specify a legal hyphenation point}*{\@minus} -\capcs . {dot accent for text, as in \.n}{}{\@dot} -\capcs / {italic correction for the previous character}*{\@slash} -\capcs ; {thick space for math}{}{\@semi} -\capcs = {macron accent for text, as in \=r}{}{\@equal} -\capac \ {begin a control sequence}*{@backslash} -\capcs > {medium space for math}{}{\@greater} -\capac ^ {produce a specified subformula as a superscript}{}{@hat} -\capcs ^ {circumflex accent for text, as in \^o}{}{\@hat} -{\catcode `@ = \letter -\caplineout {\twocarets L}{equivalent to the |\\par| primitive} - {}{\@par}\ttidxref{^^L} -\caplineout {\twocarets M}{an end-of-line}*{@newline}\ttidxref{^^M} -}% -\capac _ {produce a specified subformula as a subscript}{}{@underscore} -\capcs _ {underscore: \_}{}{\@underscore} -%x \capac ` {in a \<number> context, \ascii\ code for character that follows}*{@lquote} -\capcs ` {grave accent for text, as in \`e}{}{\@lquote} -\capac { {start a group}{}{@lbrace} -\capcs { {left brace delimiter for math: $\{$}{}{\@lbrace} -\capcs | {parallel lines for math: $\Vert$}{}{\@bar} -\capac } {end a group}{}{@rbrace} -\capcs } {right brace delimiter for math: $\}$}{}{\@rbrace} -\capac ~ {interword space at which a line will not break}{}{@not} -\capcs ~ {tilde accent for text, as in \~a}{}{\@not} -\capcs aa {Scandinavian letter: \aa}{}{} -\capcs AA {Scandinavian letter: \AA}{}{} -\capcs above {produce a fraction with a bar of specified thickness}*{} -\capcs abovedisplayshortskip {glue \TeX\ inserts before a display when the - previous line fits in the display's indentation, by - default 0\pt\ plus 3\pt}*{} -\capcs abovedisplayskip {glue \TeX\ inserts before a display when the previous - line doesn't fit in the display's indentation, by default 12\pt\ - plus 3\pt\ minus 9\pt}*{} -\capcs abovewithdelims {produce a fraction with a bar of specified thickness - and surrounded by specified delimiters}*{} -\capcs accent {put specified accent over the next character}*{} -\capcs active {category code for active characters, viz., the number $13$}{}{} -\capcs acute {acute accent for math, as in $\acute x$}{}{} -\capcs adjdemerits {additional demerits for a line break which would result in - adjacent lines with incompatible word spacing, by default~10000}*{} -\capcs advance {add a number to a |\\count| register}*{} -\capcs advancepageno {if |\\pageno| is positive, add one; - if it's negative, subtract one}{}{} -\capcs ae {\ae\ ligature}{}{} -\capcs AE {\AE\ ligature}{}{} -\capcs afterassignment {wait to expand the following token until - the next assignment is done}*{} -\capcs aftergroup {wait to expand the following token until the end - of the current group}*{} -\capcs aleph {only Hebrew letter for math: $\aleph$}{}{} -\capcstwo allowbreak {do |\\penalty0|, i.e., allow a line or page break - where one could not ordinarily occur}{}{hallowbreak:vallowbreak} -\capcs alpha {math Greek letter $\alpha$}{}{} -\capcs amalg {amalgamation operator: $\amalg$}{}{} -\capcs angle {angle symbol: $\angle$}{}{} -\capcs approx {approximation relation: $\approx$}{}{} -\capcs arccos {arc cosine function: $\arccos$}{}{} -\capcs arcsin {arc sine function: $\arcsin$}{}{} -\capcs arctan {arc tangent function: $\arctan$}{}{} -\capcs arg {argument (phase) function: $\arg$}{}{} -\capcs arrowvert {vertical portion of an extensible double arrow}{}{} -\capcs Arrowvert {vertical portion of an extensible single arrow}{}{} -\capcs ast {asterisk operator: $\ast$}{}{} -\capcs asymp {asymptote relation: $\asymp$}{}{} -\capcs atop {produce a fraction without a fraction bar}*{} -\capcs atopwithdelims {produce a fraction without a fraction bar and - surrounded by specified delimiters}*{} -\capcs b {bar-under accent for math, as in $\b x$}{}{} -\capcs backslash {backslash symbol: $\backslash$}{}{} -\capcs badness {the badness of the glue setting in the last box - made}*{} -\capcs bar {bar accent for math, as in $\bar x$}{}{} -\capcs baselineskip {glue for the normal vertical distance from one baseline - to the next, by default 12\pt}*{} -\capcs batchmode {don't stop at errors and don't output to terminal}*{} -\capcs begingroup {start a group to be ended by |\\endgroup|}*{} -\capcs beginsection {begin a major subdivision of a document}{}% - {\@beginsection} -\capcs belowdisplayshortskip {glue \TeX\ inserts after a display when the - previous line fits in the display's indentation, - by default 7\pt\ plus 0.3\pt\ minus 4\pt}*{} -\capcs belowdisplayskip {glue \TeX\ inserts after a display when the previous - line doesn't fit in the display's indentation, - by default 12\pt\ plus 3\pt\ minus 9\pt}*{} -\capcs beta {math Greek letter $\beta$}{}{} -\capcs bf {use boldface, i.e., do |\\tenbf\\fam=\\bffam|}{}{} -\capcs bffam {boldface family for math}{}{} -\capcs bgroup {implicit beginning-of-group character}{}{} -\capcs big {make the specified delimiter larger than an ordinary one, but - still small enough for text}{}{} -\capcs Big {make the specified delimiter about 11.5\pt\ tall}{}{} -\capcs bigbreak {indicate desirable page break with |\\penalty-200| - and produce |\\bigskipamount| glue}{}{} -\capcs bigcap {large cap operator (no, it doesn't produce a large - capital letter!): $\bigcap$}{}{} -\capcs bigcirc {large circle operator: $\bigcirc$}{}{} -\capcs bigcup {large cup operator: $\bigcup$}{}{} -\capcs bigg {make the specified delimiter about 14.5\pt\ tall}{}{} -\capcs Bigg {make specified delimiter about 17.5\pt\ tall}{}{} -\capcs biggl {sized like |\\bigg|, but spaced as an opening}{}{} -\capcs Biggl {sized like |\\Bigg|, but spaced as an opening}{}{} -\capcs biggm {sized like |\\bigg|, but spaced as a relation}{}{} -\capcs Biggm {sized like |\\Bigg|, but spaced as a relation}{}{} -\capcs biggr {sized like |\\bigg|, but spaced as a closing}{}{} -\capcs Biggr {sized like |\\Bigg|, but spaced as a closing}{}{} -\capcs bigl {sized like |\\big|, but spaced as an opening}{}{} -\capcs Bigl {sized like |\\Big|, but spaced as an opening}{}{} -\capcs bigm {sized like |\\big|, but spaced as a relation}{}{} -\capcs Bigm {sized like |\\Big|, but spaced as a relation}{}{} -\capcs bigodot {large circled dot operator: $\bigodot$}{}{} -\capcs bigoplus {large circled plus operator: $\bigoplus$}{}{} -\capcs bigotimes {large circled times operator: $\bigotimes$}{}{} -\capcs bigr {sized like |\\big|, but spaced as a closing}{}{} -\capcs Bigr {sized like |\\Big|, but spaced as a closing}{}{} -\capcs bigskip {produce |\\bigskipamount| glue}{}{} -\capcs bigskipamount {glue for a big vertical skip, by default 12\pt\ - plus 4\pt\ minus 4\pt}{}{} -\capcs bigsqcup {large square cup operator: $\bigsqcup$}{}{} -\capcs bigtriangledown {triangle operator pointing downward: - $\bigtriangledown$}{}{} -\capcs bigtriangleup {triangle operator pointing upward: $\bigtriangleup$}{}{} -\capcs biguplus {large cupped plus operator: $\biguplus$}{}{} -\capcs bigvee {large logical ``or'' operator: $\bigvee$}{}{} -\capcs bigwedge {large logical ``and'' operator: $\bigwedge$}{}{} -\capcs binoppenalty {additional penalty for breaking after a binary math - operator, by default~700}*{} -\capcs bmod {modulus operator, as in $n \bmod 2$}{}{} -\capcs bordermatrix {produce matrix with labelled rows and columns}{}{} -\capcs bot {lattice bottom symbol: $\bot$}{}{} -\capcs botmark {the last mark item on the page just boxed}*{} -\capcs bowtie {bowtie relation: $\bowtie$}{}{} -\capcs box {append the box in a specified box register - to the current list, and void the register}*{} -\capcs boxmaxdepth {maximum depth of vboxes, by default |\\maxdimen|}*{} -\capcs brace {|\char36 n\\brace k\char36| produces - braced notation: $n \brace k$}{}{} -\capcs bracevert {vertical portion of extensible large brace}{}{} -\capcs brack {|\char36 n\\brack k\char36| produces bracketed notation: $n \brack k$}{}{} -\capcstwo break {do |\\penalty-10000|, i.e., force a line or page - break}{}{hbreak:vbreak} -\capcs breve {breve accent for math, as in $\breve x$}{}{} -\capcs brokenpenalty {penalty for line break at a discretionary item, by - default~100}*{} -\capcs buildrel {produce specified formula over the specified relation}{}{} -\capcs bullet {bullet operation: $\bullet$}{}{} -\capcs bye {|\\vfill| the last page with blank space, |\\supereject| it, - and |\\end| the job}{}{\@bye} -\capcs c {cedilla accent for text, as in \c c}{}{} -\capcs cal {use calligraphic font for uppercase letters in math, - as in $\cal XYZ$}{}{} -\capcs cap {cap operator: $\cap$}{}{} -\capcs cases {produce cases for math, as in $\bigl\{{\cdots\atop\cdots}$}{}{} -\capcs catcode {the category code of a specified character}*{} -\capcs cdot {centered dot operator: $\cdot$}{}{} -\capcs cdotp {centered dot punctuation: $\cdotp$}{}{} -\capcs cdots {centered dots for math: $\cdots$}{}{} -\capcs centerline {produce line with its text centered}{}{} -\capcs char {produce the character from the current font with the specified - code}*{} -\capcs chardef {define a specified control sequence to be a character's - code, a number between 0 and $255$}*{} -\capcs check {check accent for math, as in $\check x$}{}{} -\capcs chi {math Greek letter $\chi$}{}{} -\capcs choose {|\char36 n\\choose k\char36| produces combinatorial notation: - $n \choose k$}{}{} -\capcs circ {circle operation: $\circ$}{}{} -\capcs cleaders {produce leaders with half of leftover space before - the first box, and half after the last}*{} -\capcs cleartabs {clear all the tabs for tabbing alignments}{}{} -\capcs closein {close a specified input stream}*{} -\capcs closeout {close a specified output stream}*{} -\capcs clubpenalty {additional penalty for a single line remaining before - a page break, by default~150}*{} -\capcs clubsuit {club suit symbol: $\clubsuit$}{}{} -\capcs colon {colon punctation symbol for math: $:$}{}{} -\capcs cong {congruence relation: $\cong$}{}{} -\capcs coprod {coproduct operator: $\coprod$}{}{} -\capcs copy {like |\\box|, but don't void the register}*{} -\capcs copyright {copyright mark: \copyright}{}{} -\capcs cos {cosine function: $\cos$}{}{} -\capcs cosh {hyperbolic cosine function: $\cosh$}{}{} -\capcs cot {cotangent function : $\cot$}{}{} -\capcs coth {hyperbolic cotangent function: $\coth$}{}{} -\capcs count {the specified integer register}*{} -\capcs countdef {define a specified control sequence to be a number - corresponding to a |\\count| register}*{} -\capcs cr {end a row (or column) within an alignment}*{} -\capcs crcr {does nothing if the last command was |\\cr| or |\\noalign|; - otherwise, equivalent to |\\cr|}*{} -\capcs csc {cosecant function: $\csc$}{}{} -\capcs csname {start a control sequence name to be ended by |\\endcsname|}*{} -\capcs cup {cup operator: $\cup$}{}{} -\capcs d {underdot accent for text, as in \d r}{}{} -\capcs dag {dagger symbol for text: \dag}{}{} -\capcs dagger {dagger operator for math: $\dagger$}{}{} -\capcs dashv {right turnstile relation: $\dashv$}{}{} -\capcs day {current day of the month, as a number}*{} -\capcs ddag {double dagger symbol for text: \ddag}{}{} -\capcs ddagger {double dagger operator for math: $\ddagger$}{}{} -\capcs ddot {double dot accent for math: $\ddot x$}{}{} -\capcs ddots {diagonal dots for math: \smash{$\ddots$}}{}{} -\capcs deadcycles {number of |\\output| initiations since the last - |\\shipout|}*{} -\capcs def {define a control sequence to be a macro}*{} -\capcs defaulthyphenchar {default hyphenation character code}*{} -\capcs defaultskewchar {default accent skewing character code}*{} -\capcs deg {degree function: $\deg$}{}{} -\capcs delcode {the delimiter code of a specified character}*{} -\capcs delimiter {produce a specified delimiter}*{} -\capcs delimiterfactor {1000 times the ratio of the minimum size of a - delimiter to the size that would completely cover the formula, by - default~901}*{} -\capcs delimitershortfall {minimum difference between formula height and - delimiter height, by default 5\pt}*{} -\capcs delta {math Greek letter $\delta$}{}{} -\capcs Delta {math Greek letter $\Delta$}{}{} -\capcs det {determinant function: $\det$}{}{} -\capcs diamond {diamond operator: $\diamond$}{}{} -\capcs diamondsuit {diamond suit symbol: $\diamondsuit$}{}{} -\capcs dim {dimension function: $\dim$}{}{} -\capcs dimen {the specified dimension register}*{} -\capcs dimendef {define a specified control sequence to be a number - corresponding to a |\\dimen| register}*{} -\capcs discretionary {specify three texts, the first two for before and - after a line break, the third for no line break}*{} -\capcs displayindent {\TeX\ sets this to the indentation of a display}*{} -\capcs displaylimits {place limits above and below operators only in display - styles}*{} -\capcs displaylines {produce specified multiline display with each - line centered}{}{} -\capcs displaystyle {use displaystyle size in a formula}*{} -\capcs displaywidowpenalty {penalty for a single line beginning a page - just before a display, by default~50}*{} -\capcs displaywidth {\TeX\ sets this to the width of a display}*{} -\capcs div {division operator: $\div$}{}{} -\capcs divide {divide a specified |\\count| register by a specified integer}*{} -\capcs dot {dot accent for math, as in $\dot x$}{}{} -\capcs doteq {dotted equality relation: $\doteq$}{}{} -\capcs dotfill {fill enclosing horizontal space with dots}{}{} -\capcs dots {ellipsis for sequences: $x_1$, \dots, $x_n$}{}{} -\capcs doublehyphendemerits {demerits for two consecutive lines ending - with hyphens, by default~10000}*{} -\capcs downarrow {relation: $\downarrow$}{}{} -\capcs Downarrow {relation: $\Downarrow$}{}{} -\capcs downbracefill {fill enclosing hbox with a downwards facing brace: - \hbox to 3.5em{\downbracefill}}{}{} -\capcs dp {the depth of the box in a specified box register}*{} -\capcs dump {end the job and produce a format file}*{} -\capcs edef {define a control sequence to be a macro, immediately expanding the - replacement text}*{} -\capcs egroup {implicit end-of-group character}{}{} -\capcs eject {end current paragraph and force a page break, - stretching out current page}{}{} -\capcs ell {script letter for math: $\ell$}{}{} -\capcs else {false or default case alternative for a conditional}*{\@else} -\capcs emergencystretch {additional stretch added to every line if - |\\tol\-er\-ance| is not satisfied}*{} -\capcs empty {macro that expands to nothing}{}{} -\capcs emptyset {empty set symbol: $\emptyset$}{}{} -\capcs end {|\\output| the last page and end the job}*{} -\capcs endcsname {end a control sequence name started by - |\\csname|}*{} -\capcs endgraf {equivalent to the |\\par| primitive}{}{} -\capcs endgroup {end a group started by |\\begingroup|}*{} -\capcs endinput {terminate input from the current file}*{} -\capcs endinsert {end insertion}{}{} -\capcs endline {equivalent to the |\\cr| primitive}{}{} -\capcs endlinechar {character \TeX\ inserts at the end of each input - line, by default |\twocarets M|}*{} -\capcs enskip {horizontal glue with width \frac1/2\em}{}{} -\capcs enspace {kern \frac1/2\em}{}{} -\capcs epsilon {math Greek letter $\epsilon$}{}{} -\capcs eqalign {produce specified multiline display whose indicated parts - are vertically aligned}{}{} -\capcs eqalignno {produce specified multiline display - with equation numbers whose indicated parts are vertically aligned}{}{} -\capcs eqno {put a specified equation number on the right of a display}*{} -\capcs equiv {equivalence relation: $\equiv$}{}{} -\capcs errhelp {token list whose expansion \TeX\ displays when the user asks - for help in response to an |\\errmessage|}*{} -\capcs errmessage {give specified error message}*{} -\capcs errorcontextlines {the number of lines of context \TeX\ - displays at an error, by default~5}*{} -\capcs errorstopmode {stop for interaction at error messages}*{} -\capcs escapechar {character with which \TeX\ precedes control sequence - names that are displayed}*{} -\capcs eta {math Greek letter $\eta$}{}{} -\capcs everycr {token list \TeX\ expands after a |\\cr|, or a |\\crcr| - not following |\\cr| or |\\noalign|}*{} -\capcs everydisplay {token list \TeX\ expands when a math display begins}*{} -\capcs everyhbox {token list \TeX\ expands when an hbox begins}*{} -\capcs everyjob {token list \TeX\ expands when a job begins}*{} -\capcs everymath {token list \TeX\ expands when text math mode - begins}*{} -\capcs everypar {token list \TeX\ expands when a paragraph begins}*{} -\capcs everyvbox {token list \TeX\ expands when a vbox begins }*{} -\capcs exhyphenpenalty {additional penalty for a line break after - an explicit hyphen, by default~50}*{} -\capcs exists {``there exists'' symbol: $\exists$}{}{} -\capcs exp {exponential function: $\exp$}{}{} -\capcs expandafter {expand the next token only after expanding the token - following it}*{} -\capcs fam {font family \TeX\ uses for characters with class seven - (i.e., variables) in math}*{} -\capcs fi {end a conditional}*{\@fi} -\capcs filbreak {force a page break unless the text up to another |\\filbreak| - also fits on the page}{}{} -\capcs finalhyphendemerits {penalty for the second to last line breaking at a - hyphen, by default~5000}*{} -\capcs firstmark {first mark item on the page just boxed}*{} -\capcs fivebf {use $5$-point bold font, |cmbx5|}{}{} -\capcs fivei {use $5$-point math italic font, |cmmi5|}{}{} -\capcs fiverm {use $5$-point roman font, |cmr5|}{}{} -\capcs fivesy {use $5$-point symbol font, |cmsy5|}{}{} -\capcs flat {flat symbol for music: $\flat$}{}{} -\capcs floatingpenalty {penalty for insertions that are split across - pages, by default~0}*{} -\capcs fmtname {name of the current format}{}{} -\capcs fmtversion {version number of the current format}{}{} -\capcs folio {produce |\\pageno| as characters; - in roman numerals if it's negative}{}{} -\capcs font {define a specified control sequence to select a font}*{} -\capcs fontdimen {a specified parameter of a specified font}*{} -\capcs fontname {produce the filename of a specified font as characters}*{} -\capcs footline {token list that produces line at the bottom of each page}{}{} -\capcs footnote {produce a specified footnote - with a specified reference mark}{}{} -\capcs forall {``for all'' symbol: $\forall$}{}{} -\capcs frenchspacing {make interword spacing independent of punctuation}{}{} -\capcs frown {frown relation: $\frown$}{}{} -\capcs futurelet {assign the third following token to a specified control - sequence, then expand the second following token}*{} -\capcs gamma {math Greek letter $\gamma$}{}{} -\capcs Gamma {math Greek letter $\Gamma$}{}{} -\capcs gcd {greatest common denominator function: $\gcd$}{}{} -\capcs gdef {equivalent to |\\global\\def|, i.e., globally define a macro}*{} -\capcs ge {greater than or equal relation: $\ge$}{}{} -\capcs geq {equivalent to |\\ge|}{}{} -\capcs gets {gets relation: $\gets$}{}{} -\capcs gg {much greater than relation: $\gg$}{}{} -\capcs global {make the following definition global}*{} -\capcs globaldefs {overrides |\\global| prefixes on assignments}*{} -\capcs goodbreak {indicate desirable page break with |\\penalty-500|}{}{} -\capcs grave {grave accent for math, as in $\grave x$}{}{} -\capcs H {Hungarian umlaut accent for text, as in \H o}{}{} -\capcs halign {align text in columns}*{} -\capcs hang {indent the current paragraph by |\\parindent|}{}{} -\capcs hangafter {starting line number for hanging indentation}*{} -\capcs hangindent {space for hanging indentation}*{} -\capcs hat {hat accent for math, as in $\hat x$}{}{} -\capcs hbadness {badness threshold for reporting underfull or overfull - hboxes, by default 1000}*{} -\capcs hbar {math symbol: $\hbar$}{}{} -\capcs hbox {produce a specified hbox}*{} -\capcs headline {token list that produces the line at the - top of every page}{}{} -\capcs heartsuit {heart suit symbol: $\heartsuit$}{}{} -\capcs hfil {produce infinitely stretchable horizontal glue}*{} -\capcs hfill {produce horizontal glue even more infinitely stretchable - than that produced by |\\hfil|}*{} -\capcs hfilneg {produce infinitely negative stretchable horizontal glue}*{} -\capcs hfuzz {space threshold for reporting overfull hboxes, by default - 0.1\pt}*{} -\capcs hglue {produce horizontal glue that doesn't disappear at line - breaks}{}{} -\capcs hidewidth {ignore width of an entry in an alignment, so that it - extends out from its box in the direction of the |\\hidewidth|}{}{} -\capcs hoffset {page offset relative to one inch from the paper's left edge}*{} -\capcs holdinginserts {if positive, do not remove insertions from the - current page}*{} -\capcs hom {homology function: $\hom$}{}{} -\capcs hookleftarrow {relation: $\hookleftarrow$}{}{} -\capcs hookrightarrow {relation: $\hookrightarrow$}{}{} -\capcs hphantom {produce an invisible formula with zero height and depth but - natural width}{}{} -\capcs hrule {produce a horizontal rule; legal only in vertical modes}*{} -\capcs hrulefill {fill enclosing space with a horizontal rule}{}{} -\capcs hsize {line length, by default 6.5\thinspace in}*{} -\capcs hskip {produce specified horizontal glue}*{} -\capcs hss {produce horizontal glue that is infinitely stretchable and - infinitely shrinkable}*{} -\capcs ht {the height of the box in a specified box register}*{} -\capcs hyphenation {add specified words to the - hyphenation exception dictionary}*{} -\capcs hyphenchar {the hyphenation character in a specified font}*{} -\capcs hyphenpenalty {additional penalty for a line break at a hyphen, by - default~50}*{} -\capcs i {dotless letter `\i' for use with accents}{}{} -\capcs ialign {start an |\\halign| with the |\\tabskip| glue zero and - |\\everycr| empty}{}{} -\capcs if {test if two specified tokens have the same character code}*{\@if} -\capcs ifcase {expand case $n$ for specified value $n$}*{\@ifcase} -\capcs ifcat {test if two specified tokens have the same category - code}*{\@ifcat} -\capcs ifdim {test for a specified relationship between two specified - dimensions}*{\@ifdim} -\capcs ifeof {test for being at the end of a specified file}*{\@ifeof} -\capcs iff {if and only if relation: $\iff$}{}{} -\capcs iffalse {test that is always false}*{\@iffalse} -\capcs ifhbox {test if a specified box register contains an hbox}*{\@ifhbox} -\capcs ifhmode {test if \TeX\ is in a horizontal mode}*{\@ifhmode} -\capcs ifinner {test if \TeX\ is in an internal mode}*{\@ifinner} -\capcs ifmmode {test if \TeX\ is in a math mode}*{\@ifmmode} -\capcs ifnum {test for a specified relationship - between two specified numbers}*{\@ifnum} -\capcs ifodd {test if a specified number is odd}*{\@ifodd} -\capcs iftrue {test that is always true}*{\@iftrue} -\capcs ifvbox {test if a specified box register contains a vbox}*{\@ifvbox} -\capcs ifvmode {test if \TeX\ is in a vertical mode}*{\@ifvmode} -\capcs ifvoid {test if a specified box register is void}*{\@ifvoid} -\capcs ifx {test if two tokens are the same, or if - two macros have the same top-level definition}*{\@ifx} -\capcs ignorespaces {ignore any following space tokens}*{} -\capcs Im {complex imaginary part symbol: $\Im$}{}{} -\capcs imath {dotless letter `$\imath$' for use with math accents}{}{} -\capcs immediate {perform the specified file operation without delay}*{} -\capcs in {containment relation: $\in$}{}{} -\capcs indent {produce an empty box of width |\\parindent| and enter - horizontal mode}*{} -\capcs inf {inferior function: $\inf$}{}{} -\capcs infty {infinity symbol: $\infty$}{}{} -\capcs input {begin to read from a specified file}*{} -\capcs inputlineno {the current line number of the current input file}*{} -\capcs insert {produce an insertion of a specified class}*{} -\capcs insertpenalties {sum of penalties due to insertions}*{} -\capcs int {integral symbol: $\int$}{}{} -\capcs interlinepenalty {additional penalty for a page break - between lines of a paragraph, by default~0}*{} -\capcs iota {math Greek letter $\iota$}{}{} -\capcs it {use italics, i.e., do |\\tenit\\fam=\\itfam|}{}{} -\capcs item {begin a paragraph with hanging indentation of |\\parindent| - and preceded by a specified label}{}{} -\capcs itemitem {like |\\item|, but with indentation of |2\\parindent|}{}{} -\capcs itfam {italic family for math}{}{} -\capcs j {dotless letter `\j', for use with accents}{}{} -\capcs jmath {dotless letter `$\jmath$' for use with math accents}{}{} -\capcs jobname {base name of the file with which \TeX\ was invoked}*{} -\capcs jot {unit of measure for opening up displays}{}{} -\capcs kappa {math Greek letter $\kappa$}{}{} -\capcs ker {kernel function: $\ker$}{}{} -\capcs kern {produce a specified amount of space at which - a break is not allowed}*{} -\capcs l {Polish letter: \l}{}{} -\capcs L {Polish letter: \L}{}{} -\capcs lambda {math Greek letter $\lambda$}{}{} -\capcs Lambda {math Greek letter $\Lambda$}{}{} -\capcs land {logical ``and'' operator: $\land$}{}{} -\capcs langle {left angle delimiter: $\langle$}{}{} -\capcs language {the current set of hyphenation patterns}*{} -\capcs lastbox {retrieve and remove the last item from the current list, if - it's a box}*{} -\capcs lastkern {retrieve the last item from the current list, if it's a - kern}*{} -\capcs lastpenalty {retrieve the last item from the current list, if it's a - penalty}*{} -\capcs lastskip {retrieve the last item from the current list, if it's - glue}*{} -\capcs lbrace {left brace delimiter: $\lbrace$}{}{} -\capcs lbrack {left bracket delimiter: $\lbrack$}{}{} -\capcs lccode {the character code for the lowercase form of a letter}*{} -\capcs lceil {left ceiling delimiter: $\lceil$}{}{} -\capcs ldotp {dot on baseline as punctuation: $\ldotp$}{}{} -\capcs ldots {dots on baseline for math: $\ldots$}{}{} -\capcs le {less than or equal relation: $\le$}{}{} -\capcs leaders {fill a specified horizontal or vertical space by repeating a - specified box or rule}*{} -\capcs left {produce the specified delimiter, sizing it to cover the - following subformula ended by |\\right|}*{} -\capcs leftarrow {relation: $\leftarrow$}{}{} -\capcs Leftarrow {relation: $\Leftarrow$}{}{} -\capcs leftarrowfill {fill enclosing hbox with a |\\leftarrow|: - \hbox to 3.5em{\leftarrowfill}}{}{} -\capcs leftharpoondown {relation: $\leftharpoondown$}{}{} -\capcs leftharpoonup {relation: $\leftharpoonup$}{}{} -\capcs lefthyphenmin {size of the smallest word fragment \TeX\ allows - before a hyphen at the beginning of a word, by default~2}*{} -\capcs leftline {produce line with its text pushed to left margin}{}{} -\capcs leftrightarrow {relation: $\leftrightarrow$}{}{} -\capcs Leftrightarrow {relation: $\Leftrightarrow$}{}{} -\capcs leftskip {glue \TeX\ inserts at the left of each line}*{} -\capcs leq {equivalent to |\\le|}{}{} -\capcs leqalignno {produce specified multiline display with equation numbers - on the left whose indicated parts are vertically aligned}{}{} -\capcs leqno {put a specified equation number on the left of a display}*{} -\capcs let {define a control sequence to be the next token}*{} -\capcs lfloor {left floor delimiter: $\lfloor$}{}{} -\capcs lg {logarithm function: $\lg$}{}{} -\capcs lgroup {left group delimiter (the smallest size is shown here): - $\Big\lgroup$}{}{} -\capcs lim {limit function: $\lim$}{}{} -\capcs liminf {inferior limit function: $\liminf$}{}{} -\capcs limits {place superscript above and subscript below a - large operator}*{} -\capcs limsup {superior limit function: $\limsup$}{}{} -\capcs line {produce a justified line of type}{}{} -\capcs linepenalty {penalty for line breaking added to each line, - by default~10}*{} -\capcs lineskip {vertical glue from one baseline to the next if the - lines are closer together than |\\lineskiplimit|, by default 1\pt}*{} -\capcs lineskiplimit {threshold for using |\\lineskip| instead of - |\\base\-line\-skip|, by default 0\pt}*{} -\capcs ll {much less than relation: $\ll$}{}{} -\capcs llap {produce text (with no width) extending to the left - of the current position}{}{} -\capcs lmoustache {top half of a large brace: $\big\lmoustache$}{}{} -\capcs ln {natural logarithm function: $\ln$}{}{} -\capcs lnot {logical ``not'' symbol: $\lnot$}{}{} -\capcs log {logarithm function: $\log$}{}{} -\capcs long {allow |\\par| tokens in the argument(s) of - the following definition}*{} -\capcs longleftarrow {relation: $\longleftarrow$}{}{} -\capcs Longleftarrow {relation: $\Longleftarrow$}{}{} -\capcs longleftrightarrow {relation: $\longleftrightarrow$}{}{} -\capcs Longleftrightarrow {relation: $\Longleftrightarrow$}{}{} -\capcs longmapsto {relation: $\longmapsto$}{}{} -\capcs longrightarrow {relation: $\longrightarrow$}{}{} -\capcs Longrightarrow {relation: $\Longrightarrow$}{}{} -\capcs loop {start a loop to be ended by |\\repeat|}{}{} -\capcs looseness {difference between the number of lines you want a - paragraph to be relative to the optimal number}*{} -\capcs lor {logical ``or'' operator: $\lor$}{}{} -\capcs lower {lower a specified box by a specified amount}*{} -\capcs lowercase {convert uppercase letters in the specified text - to lowercase}*{} -\capcs lq {left quote character for text: \lq}{}{} -\capcs mag {$1000$ times the ratio for enlarging all dimensions}*{} -\capcs magnification {like |\\mag|, but don't enlarge the page size}{}{} -\capcs magstep {$1000 \cdot 1.2^n$ for a specified $n$}{}{} -\capcs magstephalf {$1000\cdot\sqrt{1.2}$}{}{} -\capcs mapsto {relation: $\mapsto$}{}{} -\capcs mark {produce a mark item with a specified text}*{} -\capcs mathaccent {put specified math accent over the next character}*{} -\capcs mathbin {space a specified subformula as a binary operator}*{} -\capcs mathchar {produce the math character with the specified mathcode}*{} -\capcs mathchardef {define a specified control sequence to be a mathcode, - a number between 0 and $2^{15}-1$}*{} -\capcs mathchoice {select one of four specified math subformulas - depending on the current style}*{} -\capcs mathclose {space a specified subformula as a closing delimiter}*{} -\capcs mathcode {the mathcode of a specified character}*{} -\capcs mathinner {space a specified subformula as an inner formula, e.g., a - fraction}*{} -\capcs mathop {space a specified subformula as a large math operator}*{} -\capcs mathopen {space a specified subformula as an opening delimiter}*{} -\capcs mathord {space a specified subformula as an ordinary character}*{} -\capcs mathpalette {produce a |\\mathchoice| which expands a specified - control sequence depending on the current style}{}{} -\capcs mathpunct {space a specified subformula as punctuation}*{} -\capcs mathrel {space a specified subformula as a relation}*{} -\capcs mathstrut {produce an invisible box with the height and depth of a - left parenthesis and no width}{}{} -\capcs mathsurround {space \TeX\ kerns before and after math in text}*{} -\capcs matrix {produce a specified matrix}{}{} -\capcs max {maximum function: $\max$}{}{} -\capcs maxdeadcycles {value of |\\deadcycles| at which \TeX\ complains, - and then uses its own output routine, by default~25}*{} -\capcs maxdepth {maximum depth of the bottom box on a page, - by default 4\pt}*{} -\capcs maxdimen {largest dimension acceptable to \TeX}{}{} -\capcs meaning {produce the human-understandable meaning of a specified - token as characters}*{} -\capcs medbreak {indicate desirable page - break with |\\penalty-100| and produce |\\medskipamount| glue}{}{} -\capcs medmuskip {glue for a medium math space, by default 4\mud\ plus 2\mud\ - minus 4\mud}*{} -\capcs medskip {produce |\\medskipamount| glue}{}{} -\capcs medskipamount {glue for a medium vertical skip, by default 6\pt - plus 2\pt\ minus 2\pt}{}{} -\capcs message {show expansion of the specified text on the terminal}*{} -\capcs mid {middle relation: $\mid$}{}{} -\capcs midinsert {produce the specified text at the current position if - possible, otherwise at the top of the next page}{}{} -\capcs min {minimum function: $\min$}{}{} -\capcs mit {use math italics, i.e., do |\\fam=1|}{}{} -\capcs mkern {produce a specified kern in units of |mu| for math}*{} -\capcs models {models relation: $\models$}{}{} -\capcs month {current month, as a number}*{} -\capcs moveleft {move a specified box left by a specified space; legal - only in vertical modes}*{} -\capcs moveright {move a specified box right by a specified space; legal - only in vertical modes}*{} -\capcs mp {minus and plus operator: $\mp$}{}{} -\capcs mskip {produce specified glue in units of |mu| for math}*{} -\capcs mu {math Greek letter $\mu$}{}{} -\capcs multiply {multiply a specified |\\count| register by a specified - integer}*{} -\capcs multispan {make next alignment entry span a specified number of - columns (or rows)}{}{} -\capcs muskip {the specified muglue register}*{} -\capcs muskipdef {define a specified control sequence to be a number - corresponding to a |\\muskip| register}*{} -\capcs nabla {backwards difference symbol: $\nabla$}{}{} -\capcs narrower {make both left and right margins narrower by - |\\parindent|}{}{} -\capcs natural {natural symbol for music: $\natural$}{}{} -\capcs nearrow {northeast arrow relation: $\nearrow$}{}{} -\capcs ne {not equal relation: $\ne$}{}{} -\capcs neg {logical ``not'' symbol: $\neg$}{}{} -\capcs negthinspace {kern $-\frac1/6$\em}{}{} -\capcs neq {not equal relation: $\neq$}{}{} -\capcs newbox {reserve and name a |\\box| register}{}{\@newbox} -\capcs newcount {reserve and name a |\\count| register}{}{\@newcount} -\capcs newdimen {reserve and name a |\\dimen| register}{}{\@newdimen} -\capcs newfam {reserve and name a math family}{}{\@newfam} -\capcs newhelp {name a specified help message}{}{\@newhelp} -\capcs newif {define a new conditional with the specified name}{}{\@newif} -\capcs newinsert {name an insertion class, and reserve a - corresponding |\\box|, |\\count|, |\\dimen|, and |\\skip| registers} - {}{\@newinsert} -\capcs newlanguage {reserve and name a |\\language|}{}{\@newlanguage} -\capcs newlinechar {end-of-line character for |\\write|, etc.}*{} -\capcs newmuskip {reserve and name a |\\muskip| register}{}{\@newmuskip} -\capcs newread {reserve and name an input stream}{}{\@newread} -\capcs newskip {reserve and name a |\\skip| register}{}{\@newskip} -\capcs newtoks {reserve and name a |\\toks| register}{}{\@newtoks} -\capcs newwrite {reserve and name an output stream}{}{\@newwrite} -\capcs ni {``reverse in'' relation: $\ni$}{}{} -\capcs noalign {insert material between rows (or columns) of an - alignment}*{} -\capcs noboundary {inhibit ligatures or kerns involving the current font's - |boundarychar|}*{} -\capcstwo nobreak {do |\\penalty10000|, i.e., - inhibit a line or page break}{}{hnobreak:vnobreak} -\capcs noexpand {suppress expansion of the next token}*{} -\capcs noindent {enter horizontal mode without indenting the paragraph}*{} -\capcs nointerlineskip {inhibit interline glue before the next line}{}{} -\capcs nolimits {place superscript and subscript after large operators}*{} -\capcs nonfrenchspacing {make interword spacing depend on punctuation}{}{} -\capcs nonscript {inhibit any following glue or kern when - in script and scriptscript styles}*{} -\capcs nonstopmode {don't stop at errors, even those about missing files}*{} -\capcs nopagenumbers {inhibit printing of page numbers, i.e., do - |\\footline = {\\hfil}|}{}{} -\capcs normalbaselines {set |\\baselineskip|, |\\line\-skip|, and - |\\line\-skip\-limit| to the normal values for the current type size}{}{} -\capcs normalbaselineskip {value of |\\baselineskip| for the - current type size}{}{} -\capcs normalbottom {make the bottom margin be the same from page to page}{}{} -\capcs normallineskip {value of |\\lineskip| for the current type - size}{}{} -\capcs normallineskiplimit {value of |\\lineskiplimit| for the - current type size}{}{} -\capcs not {a slash with zero width for constructing negations of math - relations, as in $\not=$}{}{} -\capcs notin {noninclusion relation: $\notin$}{}{} -\capcs nu {math Greek letter $\nu$}{}{} -\capcs null {expands to an empty hbox}{}{} -\capcs nulldelimiterspace {space produced by a null delimiter, by - default 1.2\pt}*{} -\capcs nullfont {primitive font with no characters in it}*{} -\capcs number {produce a specified number as characters}*{} -\capcs nwarrow {northwest arrow relation: $\nwarrow$}{}{} -\capcs o {Danish letter: \o}{}{} -\capcs O {Danish letter: \O}{}{} -\capcs obeylines {make each end-of-line in the input file - equivalent to |\\par|}{}{} -\capcs obeyspaces {produce space in the output for each space character in the - input}{}{} -\capcs odot {centered dot operation: $\odot$}{}{} -\capcs oe {\oe\ ligature}{}{} -\capcs OE {\OE\ ligature}{}{} -\capcs offinterlineskip {inhibit interline glue from now on}{}{} -\capcs oint {contour integral operator: $\oint$}{}{} -\capcs oldstyle {use old style digits: {\oldstyle1234567890}}{}{} -\capcs omega {math Greek letter $\omega$}{}{} -\capcs Omega {math Greek letter $\Omega$}{}{} -\capcs ominus {circled minus operator: $\ominus$}{}{} -\capcs omit {skip a column's (or row's) template in an alignment}*{} -\capcs openin {prepare a specified input stream to read from a file}*{} -\capcs openout {prepare a specified output stream to write to a file}*{} -\capcs openup {increase |\\baselineskip|, |\\lineskip|, and - |\\lineskiplimit| by a specified amount}{}{} -\capcs oplus {circled plus operator: $\oplus$}{}{} -\capcs or {separate the cases of an |\\ifcase|}*{\@or} -\capcs oslash {circled slash operator: $\oslash$}{}{} -\capcs otimes {circled times operator: $\otimes$}{}{} -\capcs outer {make the following macro definition illegal in contexts in - which tokens are absorbed at high speed}*{} -\capcs output {token list \TeX\ expands when it finds a page break}*{} -\capcs outputpenalty {if the page break occurred at a penalty, the value - of that penalty; otherwise zero}*{} -\capcs over {produce a fraction with a bar of default thickness}*{} -\capcs overbrace {produce a brace covering the top of a formula, - as in $\overbrace{h+w}{}$}{}{} -\capcs overfullrule {width of the rule appended to an overfull box}*{} -\capcs overleftarrow {produce a left arrow covering the top of - a formula, as in $\overleftarrow{r+a}$}{}{} -\capcs overline {produce a line covering the top of a formula, - as in $\overline{2b}$}*{} -\capcs overrightarrow {produce a right arrow covering the top of a - formula, as in $\overrightarrow{i+t}$}{}{} -\capcs overwithdelims {produce a fraction with a bar of the default thickness - and surrounded by specified delimiters}*{} -\capcs owns {owns relation: $\owns$}{}{} -\capcs P {paragraph character for text: \P}{}{} -\capcs pagedepth {\TeX\ sets this to the current depth of the current - page}*{} -\capcs pagefilllstretch {\TeX\ sets this to the amount of |filll| stretch on - the current page}*{} -\capcs pagefillstretch {\TeX\ sets this to the amount of |fill| stretch on - the current page}*{} -\capcs pagefilstretch {\TeX\ sets this to the amount of |fil| stretch on the - current page}*{} -\capcs pagegoal {\TeX\ sets this to the desired height for the current page - (i.e., |\\vsize| when the first box is put on the page)}*{} -\capcs pageinsert {produce the specified text on the following page, and use up - the full page}{}{} -\capcs pageno {the register |\\count0|, which contains the - (possibly negative) page number}{}{} -\capcs pageshrink {\TeX\ sets this to the total amount of shrinkability - on the current page}*{} -\capcs pagestretch {\TeX\ sets this to the total amount of stretchability - on the current page}*{} -\capcs pagetotal {\TeX\ sets this to the natural height of the current - page}*{} -\capcs par {finish paragraph and terminate horizontal mode}*{\@par} -\capcs parallel {parallel relation: $\parallel$}{}{} -\capcs parfillskip {horizontal glue \TeX\ inserts at the end of a - paragraph}*{} -\capcs parindent {horizontal space \TeX\ inserts at the start of a - paragraph}*{} -\capcs parshape {specify the width and length of each line - in the next paragraph}*{} -\capcs parskip {vertical glue \TeX\ inserts before a paragraph}*{} -\capcs partial {partial derivative symbol: $\partial$}{}{} -\capcs pausing {if positive, stop after reading each line of input for a - possible replacement}*{} -\capcstwo penalty {produce penalty (or bonus, if negative) for breaking - line or page here}*{hpenalty:vpenalty} -\capcs perp {perpendicular relation: $\perp$}{}{} -\capcs phantom {produce an invisible formula with the - dimensions of a specified subformula}{}{} -\capcs phi {math Greek letter $\phi$}{}{} -\capcs Phi {math Greek letter $\Phi$}{}{} -\capcs pi {math Greek letter $\pi$}{}{} -\capcs Pi {math Greek letter $\Pi$}{}{} -\capcs plainoutput {\plainTeX's |\\output| routine}{}{} -\capcs pm {plus and minus operator: $\pm$}{}{} -\capcs pmatrix {produce a parenthesized matrix}{}{} -\capcs pmod {parenthesized modulus notation to put at the end of a formula, as - in $x \equiv y+1 \pmod 2$}{}{} -\capcs postdisplaypenalty {additional penalty for a line break - just after a display, by default~0}*{} -\capcs Pr {probability function: $\Pr$}{}{} -\capcs prec {precedes relation: $\prec$}{}{} -\capcs preceq {precedes or equals relation: $\preceq$}{}{} -\capcs predisplaypenalty {additional penalty for a line break just - before a display, by default~0}*{} -\capcs predisplaysize {\TeX\ sets this to the width of the - line preceding a display}*{} -\capcs pretolerance {badness tolerance for line breaks without - hyphenation, by default~100}*{} -\capcs prevdepth {depth of the last nonrule box on the - current vertical list}*{} -\capcs prevgraf {\TeX\ sets this to the number - of lines in the paragraph so far (in horizontal mode) - or in the previous paragraph (in vertical mode)}*{} -\capcs prime {prime math symbol, as in $r^\prime$}{}{} -\capcs proclaim {begin a theorem, lemma, hypothesis, $\ldots$}{}{\@proclaim} -\capcs prod {large product operator: $\prod$}{}{} -\capcs propto {proportional to relation: $\propto$}{}{} -\capcs psi {math Greek letter $\psi$}{}{} -\capcs Psi {math Greek letter $\Psi$}{}{} -\capcs qquad {produce horizontal glue with width 2\em}{}{} -\capcs quad {produce horizontal glue with width 1\em}{}{} -\capcs radical {produce a specified radical symbol}*{} -\capcs raggedbottom {allow the bottom margin to vary from page to page}{}{} -\capcs raggedright {allow the right margin to vary from line to line}{}{} -\capcs raise {raise a specified box by a specified amount}*{} -\capcs rangle {right angle delimiter: $\rangle$}{}{} -\capcs rbrace {right brace delimiter: $\rbrace$}{}{} -\capcs rbrack {right bracket delimiter: $\rbrack$}{}{} -\capcs rceil {right ceiling delimiter: $\rceil$}{}{} -\capcs Re {complex real part symbol: $\Re$}{}{} -\capcs read {read a line from a specified input stream}*{} -\capcs relax {do nothing}*{} -\capcs relpenalty {additional penalty for breaking after a relation, - by default~500}*{} -\capcs repeat {end a loop started with |\\loop|}{}{\@repeat} -\capcs rfloor {right floor delimiter: $\rfloor$}{}{} -\capcs rgroup {right group delimiter (the smallest size is shown here): - $\Big\rgroup$}{}{} -\capcs rho {math Greek letter $\rho$}{}{} -\capcs right {produce the specified delimiter at the right end of a - subformula started with |\\left|}*{} -\capcs rightarrow {relation: $\rightarrow$}{}{} -\capcs Rightarrow {relation: $\Rightarrow$}{}{} -\capcs rightarrowfill {fill enclosing hbox with a |\\rightarrow|: - \hbox to 3.5em{\rightarrowfill}}{}{} -\capcs rightharpoondown {relation: $\rightharpoondown$}{}{} -\capcs rightharpoonup {relation: $\rightharpoonup$}{}{} -\capcs rightleftharpoons {relation: $\rightleftharpoons$}{}{} -\capcs rightline {produce line with its text pushed to right margin}{}{} -\capcs rightskip {glue \TeX\ inserts at the right of each line}*{} -\capcs righthyphenmin {size of the smallest word fragment \TeX\ allows - after a hyphen at the end of a word, by default~3}*{} -\capcs rlap {produce text (with no width) extending to the right - of the current position}{}{} -\capcs rm {use roman type, i.e., do |\\tenrm\\fam=0|}{}{} -\capcs rmoustache {bottom half of a large brace: $\big\rmoustache$}{}{} -\capcs romannumeral {produce the lowercase roman numeral representation of a - specified number as characters}{}{} -\capcs root {produce a specified root of a specified subformula, as in - $\root 3 \of 2$}{}{} -\capcs rq {right quote character for text: \rq}{}{} -\capcs S {section character for text: \S}{}{} -\capcs sb {implicit subscript character}{}{} -\capcs scriptfont {the script style font in a specified math family}*{} -\capcs scriptscriptfont {the scriptscript style font in a specified - math family}*{} -\capcs scriptscriptstyle {use scriptscriptstyle size in a formula}*{} -\capcs scriptspace {additional space \TeX\ kerns after a subscript or - superscript, by default 0.5\pt}*{} -\capcs scriptstyle {use scriptstyle size in a formula}*{} -\capcs scrollmode {don't stop at most errors, but do stop at errors - about missing files}*{} -\capcs searrow {southeast arrow relation: $\searrow$}{}{} -\capcs sec {secant function: $\sec$}{}{} -\capcs setbox {define a specified box register to be a box}*{} -\capcs setlanguage {change to a specified set of hyphenation rules, but - don't change |\\language|}{*}{} -\capcs setminus {set difference operator: $\setminus$}{}{} -\capcs settabs {define the tabs for a tabbing alignment}{}{} -\capcs sevenbf {use $7$-point bold font, |cmbx7|}{}{} -\capcs seveni {use $7$-point math italic font, |cmmi5|}{}{} -\capcs sevenrm {use $7$-point roman font, |cmr7|}{}{} -\capcs sevensy {use $7$-point symbol font, |cmsy7|}{}{} -\capcs sfcode {the space factor code of a specified character}*{} -\capcs sharp {sharp symbol for music: $\sharp$}{}{} -\capcs shipout {output a box to the |.dvi| file}*{} -\capcs show {show, in the log and - on the terminal, the meaning of a specified token}*{} -\capcs showbox {display the contents of a specified box register}*{} -\capcs showboxbreadth {maximum number of items shown on each nesting - level, by default~5}*{} -\capcs showboxdepth {maximum nesting level shown, by default~3}*{} -\capcs showhyphens {show, in the log - and on the terminal, hyphenations in the specified text}{}{} -\capcs showlists {display all lists being worked on}*{} -\capcs showthe {show, in the log - and on the terminal, what |\\the| would produce}*{} -\capcs sigma {math Greek letter $\sigma$}{}{} -\capcs Sigma {math Greek letter $\Sigma$}{}{} -\capcs sim {similarity relation: $\sim$}{}{} -\capcs simeq {similar or equal relation: $\simeq$}{}{} -\capcs sin {sine function: $\sin$}{}{} -\capcs sinh {hyperbolic sine function: $\sinh$}{}{} -\capcs skew {shift a specified accent by a specified amount - on a specified accented character}{}{} -\capcs skewchar {character in a specified font used for positioning accents}*{} -\capcs skip {the specified glue register}*{} -\capcs skipdef {define a specified control sequence to be a number - corresponding to a |\\skip| register}*{} -\capcs sl {use slanted type, i.e., do |\\tensl\\fam=\\slfam|}{}{} -\capcs slash {\slash\ character that allows a line break}{}{} -\capcs slfam {slanted family for math}{}{} -\capcs smallbreak {indicate somewhat desirable page break - with |\\penalty-50| and produce |\\smallskipamount| glue}{}{} -\capcs smallint {small integral symbol: $\smallint$}{}{} -\capcs smallskip {produce |\\smallskipamount| glue}{}{} -\capcs smallskipamount {glue for a small vertical skip, by default 3\pt\ - plus 1\pt\ minus 1\pt}{}{} -\capcs smash {produce formula with zero height and depth}{}{} -\capcs smile {smile relation: $\smile$}{}{} -\capcs sp {implicit superscript character}{}{} -\capcs space {produce normal interword glue}{}{} -\capcs spacefactor {modifies stretch and shrink of interword glue - if not 1000}*{} -\capcs spaceskip {if nonzero and |\\spacefactor|${}<2000$, overrides - the normal interword glue}*{} -\capcs spadesuit {spade suit symbol: $\spadesuit$}{}{} -\capcs span {either combine entries in an alignment body or expand tokens in a - preamble}*{} -\capcs special {write tokens to the |.dvi| file to be interpreted by a - DVI-reading program}*{} -\capcs splitbotmark {last mark item in a box resulting from |\\vsplit|}*{} -\capcs splitfirstmark {first mark item in a box resulting from - |\\vsplit|}*{} -\capcs splitmaxdepth {maximum depth of a box resulting from |\\vsplit|}*{} -\capcs splittopskip {glue \TeX\ inserts at the top of a box resulting from - |\\vsplit|}*{} -\capcs sqcap {square cap operator: $\sqcap$}{}{} -\capcs sqcup {square cup operator: $\sqcup$}{}{} -\capcs sqrt {produce square root of a subformula, as in $\sqrt 2$}{}{} -\capcs sqsubseteq {square subset or equal relation: $\sqsubseteq$}{}{} -\capcs sqsupseteq {square superset or equal relation: $\sqsupseteq$}{}{} -\capcs ss {German letter: \ss}{}{} -\capcs star {star operator: $\star$}{}{} -\capcs string {produce a specified token, most commonly a control - sequence, as characters}*{} -\capcs strut {box with zero width, but height and depth of a standard - line, from baseline to baseline, in the current font}{}{} -\capcs subset {subset relation: $\subset$}{}{} -\capcs subseteq {subset or equal relation: $\subseteq$}{}{} -\capcs succ {successor relation: $\succ$}{}{} -\capcs succeq {successor or equal relation: $\succeq$}{}{} -\capcs sum {large summation operator: $\sum$}{}{} -\capcs sup {superior function: $\sup$}{}{} -\capcs supereject {force a page break, and output all insertions}{}{} -\capcs supset {superset relation: $\supset$}{}{} -\capcs supseteq {superset or equal relation: $\supseteq$}{}{} -\capcs surd {surd symbol: $\surd$}{}{} -\capcs swarrow {southwest arrow relation: $\swarrow$}{}{} -\capcs t {tie-after accent for text, as in \t uu}{}{} -\capcs tabalign {equivalent to |\\+|, except it's not |\\outer|}{}{} -\capcs tabskip {glue between columns (or rows) of an alignment}*{} -\capcs tan {tangent function: $\tan$}{}{} -\capcs tanh {hyperbolic tangent function: $\tanh$}{}{} -\capcs tau {math Greek letter $\tau$}{}{} -\capcs tenbf {use $10$-point bold font, |cmbx10|}{}{} -\capcs tenex {use $10$-point math extension font, |cmex10|}{}{} -\capcs teni {use $10$-point math italic font, |cmmi10|}{}{} -\capcs tenit {use $10$-point text italic font, |cmti10|}{}{} -\capcs tenrm {use $10$-point roman text font, |cmr10|}{}{} -\capcs tensl {use $10$-point slanted roman font, |cmsl10|}{}{} -\capcs tensy {use $10$-point math symbol font, |cmsy10|}{}{} -\capcs tentt {use $10$-point typewriter font, |cmtt10|}{}{} -\capcs TeX {produce the \TeX\ logo}{}{} -\capcs textfont {the text style font in a specified math family}*{} -\capcs textindent {like |\\item|, but doesn't do hanging indentation}{}{} -\capcs textstyle {use textstyle size in a formula}*{} -\capcs the {give the value of a specified token}*{} -\capcs theta {math Greek letter $\theta$}{}{} -\capcs Theta {math Greek letter $\Theta$}{}{} -\capcs thickmuskip {glue for a thick math space, by default 5\mud\ plus 5\mud}*{} -\capcs thinmuskip {glue for a thin math space, by default 3\mud}*{} -\capcs thinspace {kern \frac1/6\em}{}{} -\capcs tilde {tilde accent for math, as in $\tilde x$}{}{} -\capcs time {the time of day, in minutes since midnight}*{} -\capcs times {times operator: $\times$}{}{} -\capcs toks {the specified token register}*{} -\capcs toksdef {define a specified control sequence to be a number - corresponding to a |\\toks| register}*{} -\capcs tolerance {badness tolerance for line breaks with hyphenation}*{} -\margin{{\tt\\topglue} command added; recent addition to \TeX} -\capcs to {mapping relation: $\to$}{}{} -\capcs top {lattice top symbol: $\top$}{}{} -\capcs topglue {produce specified vertical glue at the - top of a page}{}{} -\capcs topinsert {produce the specified text at top of a page}{}{} -\capcs topmark {|\\botmark| before the current page was boxed}*{} -\capcs topskip {glue between the headline and the first line of text - on a page, by default 10\pt}*{} -\capcs tracingall {turn on maximal tracing}{}{} -\capcs tracingcommands {display execution of commands}*{} -\capcs tracinglostchars {display characters that are asked for, but not - defined}*{} -\capcs tracingmacros {display macro expansions}*{} -\capcs tracingonline {show diagnostic output on the terminal as well as in - the log file}*{} -\capcs tracingoutput {display contents of shipped-out boxes}*{} -\capcs tracingpages {display page break calculations}*{} -\capcs tracingparagraphs {display line break calculations}*{} -\capcs tracingrestores {display values restored at the end - of a group}*{} -\capcs tracingstats {display memory usage statistics}*{} -\capcs triangle {triangle symbol: $\triangle$}{}{} -\capcs triangleleft {left triangle operator: $\triangleleft$}{}{} -\capcs triangleright {right triangle operator: $\triangleright$}{}{} -\capcs tt {use typewriter type, i.e., do |\\tentt\\fam=\\ttfam|}{}{} -\capcs ttfam {typewriter family for math}{}{} -\capcs ttraggedright {use typewriter type and allow right margins of - paragraphs to vary from line to line}{}{} -\capcs u {breve accent for text, as in \u r}{}{} -\capcs uccode {the character code for the uppercase form of a letter}*{} -\capcs uchyph {if positive, consider hyphenating words that start with a - capital letter}*{} -\capcs underbar {underline the specified text without avoiding - any descenders, as in \underbar{fog}}{}{} -\capcs underbrace {produce a brace covering the bottom of a formula, as in - $\underbrace{x+x}{}$}{}{} -\capcs underline {underline a math formula below the descenders, as in - $\underline{x+y}$}*{} -\capcs unhbox {append the contents of the box - in a specified box - register to the current list, and void the register; legal only in - horizontal modes}*{} -\capcs unhcopy {like |\\unhbox|, but doesn't void the register}*{} -\capcs unkern {if the last item on the current list is a kern, remove it}*{} -\capcs unpenalty {if the last item on the current list is a penalty, remove - it}*{} -\capcs unskip {if the last item on the current list is glue, remove it}*{} -\capcs unvbox {append the contents of the box - in a specified box - register to the current list, and void the register; legal only in - vertical modes}*{} -\capcs unvcopy {like |\\unvbox|, but doesn't void the register}*{} -\capcs uparrow {relation: $\uparrow$}{}{} -\capcs Uparrow {relation: $\Uparrow$}{}{} -\capcs upbracefill {fill enclosing hbox with an upwards facing brace: - \hbox to 3.5em{\upbracefill}}{}{} -\capcs updownarrow {relation: $\updownarrow$}{}{} -\capcs Updownarrow {relation: $\Updownarrow$}{}{} -\capcs uplus {cupped plus operator: $\uplus$}{}{} -\capcs uppercase {convert lowercase letters in the specified text - to uppercase}*{} -\capcs upsilon {math Greek letter $\upsilon$}{}{} -\capcs Upsilon {math Greek letter $\Upsilon$}{}{} -\capcs v {check accent for text, as in \v o}{}{} -\capcs vadjust {produce vertical mode material after the current line}*{} -\capcs valign {align text in rows}*{} -\capcs varepsilon {variant math Greek letter $\varepsilon$}{}{} -\capcs varphi {variant math Greek letter $\varphi$}{}{} -\capcs varpi {variant math Greek letter $\varpi$}{}{} -\capcs varrho {variant math Greek letter $\varrho$}{}{} -\capcs varsigma {variant Greek letter $\varsigma$}{}{} -\capcs vartheta {variant math Greek letter $\vartheta$}{}{} -\capcs vbadness {badness threshold for reporting underfull or overfull - vboxes, by default~1000}*{} -\capcs vbox {produce a vbox whose baseline is that of the bottom box - enclosed}*{} -\capcs vcenter {center the specified text on the math axis}*{} -\capcs vdash {left turnstile symbol: $\vdash$}{}{} -\capcs vdots {vertical dots for math: \smash{$\vdots$}}{}{} -\capcs vec {vector accent for math, as in $\vec x$}{}{} -\capcs vee {logical ``or'' operator: $\vee$}{}{} -\capcs vert {bar relation: $\vert$}{}{} -\capcs Vert {double bar relation: $\Vert$}{}{} -\capcs vfil {produce infinitely stretchable vertical glue}*{} -\capcs vfill {produce even more infinitely stretchable vertical glue -than that produced by |\\vfil|}*{} -\capcs vfilneg {produce infinitely negative stretchable vertical glue}*{} -\capcs vfootnote {produce a specified footnote with a specified - reference mark, but don't produce the reference mark in the text}{}{} -\capcs vfuzz {space threshold for reporting overfull vboxes, by default - 0.1\pt}*{} -\capcs vglue {produce specified vertical glue - that doesn't disappear at page breaks}{}{} -\capcs voffset {vertical offset relative to one inch from the - paper's top edge}*{} -\capcs vphantom {produce an invisible formula with zero width but natural - height and depth}{}{} -\capcs vrule {produce a vertical rule; legal only in horizontal modes}*{} -\capcs vsize {page height, by default 8.9\thinspace in}*{} -\capcs vskip {produce specified vertical glue}*{} -\capcs vsplit {break the contents of a specified box - register to the specified height}*{} -\capcs vss {produce vertical glue that is infinitely stretchable and - infinitely shrinkable}*{} -\capcs vtop {produce a vbox whose baseline is that of the top box enclosed}*{} -\capcs wd {the width of the box in a specified box register}*{} -\capcs wedge {logical ``and'' operator: $\wedge$}{}{} -\capcs widehat {math accent, as in $\widehat {y+z+a}$}{}{} -\capcs widetilde {math accent $\widetilde {b+c+d}$}{}{} -\capcs widowpenalty {penalty for a single line beginning a page, - by default~150}*{} -\capcs wlog {|\\write| the specified token list in the log file}{}{} -\capcs wp {Weierstra\ss\ `p' symbol: $\wp$}{}{} -\capcs wr {wreath product operator: $\wr$}{}{} -\capcs write {write a line to a specified output stream}*{} -\capcs xdef {equivalent to |\\global\\edef|, i.e., globally define a - macro, immediately expanding the replacement text}*{} -\capcs xi {math Greek letter $\xi$}{}{} -\capcs Xi {math Greek letter $\Xi$}{}{} -\capcs xleaders {produce leaders with leftover space distributed equally - between the leader boxes}*{} -\capcs xspaceskip {if nonzero and |\\spacefactor|${}\ge2000$, - overrides the normal interword glue}*{} -\capcs year {the current year, as a number}*{} -\capcs zeta {math Greek letter $\zeta$}{}{} - -\endcapsum -\endchapter -\byebye diff --git a/Master/texmf-doc/doc/english/impatient/concepts.tex b/Master/texmf-doc/doc/english/impatient/concepts.tex deleted file mode 100644 index ad5f4cc42d2..00000000000 --- a/Master/texmf-doc/doc/english/impatient/concepts.tex +++ /dev/null @@ -1,4097 +0,0 @@ -% This is part of the book TeX for the Impatient. -% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. -% See file fdl.tex for copying conditions. - -\input macros -\chapter{Concepts} - -\chapterdef{concepts} - -This part of the book contains definitions and explanations of -the concepts that we use in describing \TeX. -The concepts include both -technical terms that we use in explaining the commands and -important topics that don't fit elsewhere in the book. - -The concepts are arranged alphabetically. -The inside back cover of the book contains a complete list of -concepts and the pages on which they are explained. -We suggest that you make a copy of the inside back cover and keep it nearby -so that you'll be able to identify and look up an unfamiliar -concept immediately. -As far as possible, we've kept our terminology consistent with that of -\texbook.\idxref{\texbook} - -\beginconcepts - -\conceptindex{active characters} -\concept {active character} - -An \defterm{active character} is a \refterm{character} -that has a definition, e.g., a macro definition, associated with it. -^^{macros//named by active characters} -You can think of an active character as a special kind of control sequence. -When \TeX\ encounters an active character, it -executes the definition associated with the character. -If \TeX\ encounters an active character that does not have -an associated definition, it will complain about an -undefined control sequence. - -An active character has a \refterm{category code} of $13$ (the value -of ^|\active|). -To define an active character, you should first -use the ^|\catcode| command -\ctsref{\catcode} to make it active -and then provide the definition of the character, using -a command such as |\def|, |\let|, or |\chardef|. -The definition of an active character has the same form as -the definition of a \refterm{control sequence}. -^^{category codes//of active characters} -If you try to define the macro for an active character -before you make the character active, \TeX\ will complain about a -missing control sequence. - -For example, the tilde character (|~|) is defined as an active character -in \plainTeX. It -produces a space between two words but links those words so that -\TeX\ will not turn the space into a \refterm{line break}. -\refterm{\PlainTeX:\plainTeX} defines `|~|' by the commands: - -\csdisplay -\catcode `~ = \active \def~{\penalty10000\!visiblespace} -| -(The |\penalty| inhibits a line break and the `|\!visiblespace|' -inserts a space.) -\endconcept - - -\conceptindex{alignments} -\concept alignment - -\bix^^{tables} -An \defterm{alignment} is a construct for aligning material, such as a -table, in columns or rows. To form an alignment you need to -(a)~describe the layout of the columns or rows and (b)~tell \TeX\ what -material goes into the columns or rows. A tabbing alignment or a -horizontal alignment is organized as a sequence of rows; a vertical -alignment is organized as a sequence of columns. We first describe -tabbing and horizontal alignments and then more briefly describe -vertical alignments. - -Tabbing alignments are defined by \plainTeX. They are simpler but less -flexible than horizontal alignments. Tabbing and horizontal alignments -differ principally in how you describe their layouts. - -\bix^^|\settabs| -\bix\ctsidxref{+} -\bix\ctsidxref{cr} - -To construct a tabbing alignment you first issue a |\settabs| command -\ctsref{\settabs} that specifies how \TeX\ should divide the available -horizontal space into columns. Then you provide a sequence of rows for -the table. Each row consists of a |\+| control sequence \ctsref{\@plus} -followed by a list of ``entries'', i.e., row\slash column intersections. -^^{entry (column or row)} -Adjacent entries in a row are separated by an ampersand (|&|). -\xrdef{@and} -\ttidxref{&} -The end of a row is indicated by ^|\cr| after its -last entry. -If a row has fewer entries than there are columns in the alignment, -\TeX\ effectively fills out the row with blank entries. - -As long as it's preceded by a |\settabs| command, you can put a row of a -tabbing alignment anywhere in your document. In particular, you can put -other things between the rows of a tabbing alignment or describe several -tabbing alignments with a single |\settabs|. Here's an example of a -tabbing alignment: - -\xrdef{tabbedexample}\csdisplay -{\hsize = 1.7 in \settabs 2 \columns -\+cattle&herd\cr -\+fish&school\cr -\+lions&pride\cr} -| -The |\settabs 2 \columns| command in this example \ctsref{\settabs} -tells \TeX\ to produce two equally wide columns. -The line length is $1.7$ inches. -The typeset alignment looks like this: - -{\def\+{\tabalign}% so it isn't \outer. -\vdisplay{% -\hsize 1.7 in \settabs 2 \columns -\+cattle&herd\cr -\+fish&school\cr -\+lions&pride\cr} -}% - -\margin{Missing explanation added here.} -There's another form of tabbing alignment in which you specify the column -widths with a template. The column widths in the template -determine the column widths in the rest of the alignment: -\csdisplay -{\settabs\+cattle\quad&school\cr -\+cattle&herd\cr -\+fish&school\cr -\+lions&pride\cr} -| -Here's the result: -{\def\+{\tabalign}% so it isn't \outer. -\vdisplay{% -\settabs\+cattle\quad&school\cr -\+cattle&herd\cr -\+fish&school\cr -\+lions&pride\cr} -}% - -\eix^^|\settabs| -\eix\ctsidxref{+} -\bix^^|\halign| -Horizontal alignments are constructed with |\halign| \ctsref\halign. -\TeX\ adjusts the column widths of a horizontal alignment according to -what is in the columns. When \TeX\ encounters the |\halign| command -that begins a horizontal alignment, it first examines all the rows of -the alignment to see how wide the entries are. It then sets each column -width to accommodate the widest entry in that column. - -A horizontal alignment governed by |\halign| consists of a -``\pix^{preamble}'' that indicates the row layout followed by the rows -themselves. -\ulist -\li The preamble consists of a sequence of \pix^{template}s, one for each -column. The template for a column specifies how the text for that -column should be typeset. Each template must include a single |#| -character -\ttidxref{#}\xrdef{@asharp} -to indicate where \TeX\ should substitute the text of an entry into the -template. The templates are separated by ampersands (|&|), \ttidxref{&} -and the end of the preamble is indicated by |\cr|. By providing an -appropriate template you can obtain effects such as centering a column, -left or right justifying a column, or setting a column in a particular -\refterm{font}. - -\li The rows have the same form as in a tabbing alignment, except that -you omit the |\+| at the beginning of each row. -As before, entries are separated by |&| and the end of the row -is indicated by |\cr|. -\TeX\ treats each entry as a -\refterm{group}, so any -font-setting command or other \refterm{assignment} -in a column template is in effect only for the entries in that column. -\endulist -\noindent The preamble and the rows must all be enclosed in the braces -that follow |\halign|. Each |\halign| alignment must include -its own preamble. - -For example, the horizontal alignment: -\csdisplay -\tabskip=2pc -\halign{\hfil#\hfil &\hfil#\hfil &\hfil#\hfil \cr - &&\it Table\cr -\noalign{\kern -2pt} - \it Creature&\it Victual&\it Position\cr -\noalign{\kern 2pt} - Alice&crumpet&left\cr - Dormouse&muffin&middle\cr - Hatter&tea&right\cr} -| - -\noindent produces the result: - -\xrdef{halignexample} -\vdisplay{% -\tabskip=2pc \halign{\hfil#\hfil &\hfil#\hfil &\hfil#\hfil \cr - &&\it Table\cr -\noalign{\kern -2pt} - \it Creature&\it Victual&\it Position\cr -\noalign{\kern 2pt} - Alice&crumpet&left\cr - Dormouse&muffin&middle\cr - Hatter&tea&right\cr} -}% -\noindent The ^|\tabskip| \ctsref{\tabskip} in this example -tells \TeX\ to insert |2pc| of -\refterm{glue} between the columns. -The ^|\noalign| \ctsref{\noalign} commands tell \TeX\ to insert -\refterm{vertical mode} material between two rows. -In this example we've -used |\noalign| to produce some extra space between the title rows and -the data rows, and also to bring ``Table'' and ``Position'' closer together. -(You can also use |\noalign| before the first row or after the -last row.) -\eix^^|\halign| - -You can construct a vertical alignment with the ^|\valign| command -\ctsref{\valign}. A vertical alignment is organized as a series of -columns rather than as a series of rows. A vertical alignment follows -the same rules as a horizontal alignment except that the roles of rows -and columns are interchanged. For example, the vertical alignment: - -\csdisplay -{\hsize=0.6in \parindent=0pt -\valign{#\strut&#\strut&#\strut\cr - one&two&three\cr - four&five&six\cr - seven&eight&nine\cr - ten&eleven\cr}} -| -\noindent yields: -\vdisplay{% -{\hsize=0.6in \parindent=\listleftindent % Because lists and displays - % are not indented just by \parindent. -\valign{#\strut&#\strut&#\strut\cr - one&two&three\cr - four&five&six\cr - seven&eight&nine\cr - ten&eleven\cr}} -} -The ^|\strut| commands \ctsref{\strut} -in the template are necessary to get the entries in each row -to line up properly, i.e., to have a common \refterm{baseline}, -and to keep the distance between baselines uniform. -\eix\ctsidxref{cr} -\eix^^{tables} - -\endconcept - - -\concept{\anatomy} - -\texbook\ describes the way that {\TeX} processes its input in terms of \TeX's -``digestive tract''---its ``^{eyes}'', ``^{mouth}'', -``^{gullet}'', ``^{stomach}'', and ``^{intestines}''. Knowing how this -processing works can be helpful when you're trying to understand subtle -aspects of \TeX's behavior as it's digesting a document. - -\ulist - -\li Using its ``\pix^{eyes}'', \TeX\ reads \refterm{characters:character} from -^{input files} and passes them to its mouth. Since an input file -can contain ^|\input| commands \ctsref{\input}, -\TeX\ can in effect ``shift its gaze'' from one file to another. - -\li Using its ``\pix^{mouth}'', {\TeX} assembles the characters into -\refterm{tokens:token} and passes them to its gullet. -Each token is either a \refterm{control sequence} or a single -character. A control sequence always starts with an \refterm{escape -character}. Note that spaces and ends-of-line are characters in their -own right, although \TeX\ compresses a sequence of input spaces into a single -space token. See \knuth{pages~46--47} for the rules by which \TeX\ assembles -characters into tokens. -^^{tokens//assembled from characters} - -\li Using its ``\pix^{gullet}'', {\TeX} expands any macros, conditionals, and -^^{macros//expanded in \TeX's stomach} -^^{tokens//passed to \TeX's stomach} -similar constructs that it finds (see \knuth{pages~212--216}) and passes -the resulting sequence of \refterm{tokens:token} -to \TeX's stomach. Expanding one token -may yield other tokens that in turn need to be expanded. {\TeX} carries -out this expansion from left to right unless the order is modified by -a command such as |\expandafter| \ctsref{\expandafter}. -In other words, \TeX's gullet always expands the leftmost un\-ex\-panded -token that it has not yet sent to \TeX's stomach. - -\li Using its ``\pix^{stomach}'', {\TeX} processes the tokens in -groups. -Each group contains a primitive command followed by its arguments, if any. -Most of the commands are of the ``typeset this character'' variety, -so their groups consist of just one token. -Obeying the instructions given by the commands, -\TeX's stomach assembles larger and larger -units, starting with -characters and ending with pages, -and passes the pages to \TeX's intestines. -^^{pages//assembled in \TeX's stomach} -\TeX's stomach handles the tasks of \refterm{line break}ing---% -^^{line breaking} -i.e., breaking each paragraph into a sequence of lines---% -and of \refterm{page break}ing---i.e., breaking a continuous sequence of lines -and other vertical mode material -into pages. - -\li Using its ``\pix^{intestines}'', \TeX\ transforms the pages produced by its -stomach into a form intended for processing -by other programs. It then sends the transformed output to the -\dvifile. -^^{\dvifile//created by \TeX's intestines} - -\endulist - -Most of the time you can think of the processes that take place in \TeX's -eyes, mouth, gullet, stomach, and intestines -as happening one after the other. But the -truth of the matter is that commands executed in \TeX's stomach can -influence the earlier stages of digestion. For instance, when \TeX's stomach -encounters the |\input| command \ctsref{\input}, -its eyes start reading from a different -file; when \TeX's stomach encounters a |\catcode| command - \ctsref{\catcode} specifying a category code -for a character $c$, the interpretation of $c$ by \TeX's mouth is affected. -And when -\TeX's stomach encounters a \refterm{macro} definition, the expansions carried -out in \TeX's gullet are affected. - -You can understand how the processes interact by imagining that each -process eagerly gobbles up the output of its predecessor as soon as it -becomes available. For instance, once \TeX's stomach has seen -the last character of the filename in an |\input| command, \TeX's gaze -immediately shifts to the first character of the specified input file. -\endconcept - -\pagebreak -\conceptindex{arguments} -\concept argument - -^^{commands//arguments of} -An \defterm{argument} contains text that is passed to a -\refterm{command}. -The arguments of a command complete the description of what -the command is supposed to do. -The command can either be a \refterm{primitive} command or a -\refterm{macro}. - -Each primitive command ^^{primitive//command} -has its own convention about the form of its -arguments. For instance, the sequence of \refterm{tokens:token}: - -\csdisplay -\hskip 3pc plus 1em -| -consists of the command `|\hskip|' and the arguments -`|3pc plus 1em|'. But if you were to write: - -\csdisplay -\count11 3pc plus 1em -| -you'd get an entirely different effect. -\TeX\ would treat `|\count11|' as a command with argument `|3|', -followed by the ordinary text tokens `|pc plus 1em|' -(because count registers expect a number to be assigned to them)% ----probably not what -you intended. The effect of the command, by the way, would be to -assign $3$ to count register $11$ (see the discussion of ^|\count|, -\xref\count). - -Macros, on the other hand, all follow the same convention -for their arguments. -^^{macros//arguments of} -Each argument passed to a macro -corresponds to a \refterm{parameter} -^^{parameters//and arguments} -in the definition of that -macro. ^^{macros//parameters of} -A macro parameter is either ``delimited'' or ``undelimited''. -The macro definition determines the number and nature of the macro parameters -and therefore the number and nature of the macro arguments. - -The difference between a delimited argument and an undelimited argument -lies in the way that \TeX\ decides where the argument ends. -^^{delimited arguments} -^^{undelimited arguments} -\ulist -\li A delimited argument consists of the tokens -from the start of the argument up to, but not including, the -particular sequence of tokens that serves as the delimiter for that argument. -The delimiter is specified in the macro definition. Thus you -supply a delimited argument to a macro by writing the argument itself -followed by the delimiter. A delimited argument can be empty, i.e., have -no text at all in it. Any braces in a delimited argument must be paired -properly, i.e., every left brace must have a corresponding right brace -and vice versa. - -\li An undelimited argument consists of a single token or a sequence of -tokens enclosed in braces, like this: -`|{Here is {the} text.}|'. Despite appearances, the outer braces don't -form a \refterm{group}---\TeX\ uses them only to determine what the -argument is. Any inner braces, such as the ones around `|the|', must be -paired properly. If you make a mistake and put in too many right -braces, \TeX\ will complain about an unexpected right brace. \TeX\ will -also complain if you put in too many left braces, but you'll probably -get \emph{that} complaint long after the place where you intended to -end the argument (see \xref{mismatched}). -\endulist -\noindent -See \conceptcit{macro} for more information -about parameters and arguments. You'll find the precise rules pertaining -to delimited and undelimited arguments in \knuth{pages~203--204}. -\endconcept - - -\concept{ASCII} - -\defterm{\ascii} is the abbreviation of ``American Standard Code for -Information Interchange''. There are $256$ \ascii\ -^{characters}, each with its own code number, but -the meanings of only the first~$128$ have been standardized. You can -find these meanings in an \ascii\ ``code table'' such as the one on -\knuth{page~367}. Characters $32$--$126$ are ``printable characters'', -^^{printable characters} such as letters, numbers, and punctuation -marks. The remaining characters are ``^{control characters}'' that are -typically used (in the computer industry, not in \TeX) to control -input\slash output and data communications devices. For instance, -\ascii\ code $84$ corresponds to the letter `T', while \ascii\ -code~$12$ corresponds to the ``form feed'' function (interpreted by most -printers as ``start a new page''). Although the \ascii\ standard -specifies meanings for the control characters, many manufacturers of -equipment such as modems and printers have used the control characters -for purposes other than the standard ones. - -The meaning of a -character in \TeX\ is usually consistent with its meaning in standard \ascii, -and \refterm{fonts:font} that contain \ascii\ -printable characters usually have those characters in the same positions as -their \ascii\ counterparts. -But some fonts, notably those used for math, replace the \ascii\ -printable characters by other characters unrelated to the \ascii\ characters. -For instance, the Computer Modern math font -^^{Computer Modern fonts} -|cmsy10| has the math symbol -`{$\forall$}' in place of the \ascii\ digit `8'. - - -\endconcept - -\conceptindex{assignments} -\concept assignment - -An \defterm{assignment} is a construct that tells \TeX\ to assign a -value to a register, -^^{registers//assignment to} -to one of its internal -\refterm{parameters:parameter}, -^^{parameters//assignments to} -to an entry in one of its internal tables, -or to a \refterm{control sequence}. Some examples of assignments are: - -\csdisplay -\tolerance = 2000 -\advance\count12 by 17 -\lineskip = 4pt plus 2pt -\everycr = {\hskip 3pt \relax} -\catcode\`@ = 11 -\let\graf = \par -\font\myfont = cmbx12 -| - -The first assignment indicates that \TeX\ should assign the numeric value -|2000| to the numeric parameter |\tolerance|, i.e., make the value of -|\tolerance| be $2000$. The other assignments are similar. The `|=|' -and the spaces are optional, so you could also write the first -assignment more tersely as: - -\csdisplay -\tolerance2000 -| - -See \knuth{pages~276--277} for the detailed syntax of assignments. -\endconcept - - -\concept badness - -The \defterm{badness} of a line is a measure of how far the interword -spaces ^^{interword spacing} -in the line deviate from their natural values, -i.e., the values specified in the \refterm{fonts:font} used in the line. -The greater the -deviation, the greater the badness. Similarly, the badness of a page is -a measure of how far the spaces between the boxes that -make up the page deviate from their ideal values. (Ordinarily, most of these -boxes are single lines of paragraphs.) - -More precisely, the badness -is a measure of how much the \refterm{glue} associated with these spaces needs -to stretch or shrink to fill the line or page exactly. -\TeX\ computes the badness as approximately $100$ -times the cube of the ratio by which it must stretch or shrink the glue -in order to compose a line or a page of the required size. -^^{line breaks//badness for}^^{page breaks//badness for} -For example, stretching the glue by twice its stated stretch yields a ratio of -$2$ and a badness of $800$; stretching it by half its stated stretch yields -a ratio of $.5$ and a badness of $13$. -\TeX\ treats a badness greater than $10000$ as -equal to $10000$. - -\TeX\ uses the badness of a line when it's breaking a paragraph into lines -\seeconcept{line break}. It uses this information in two stages: - -\olist -\li When \TeX\ is choosing line breaks, -it will eventually accept lines whose badness is less than or equal to -the value of |\tolerance| (\xref \tolerance). If \TeX\ cannot avoid setting -a line whose badness exceeds this -value, it will set it as an underfull or overfull \refterm{hbox}. -\TeX\ will set -an overfull or underfull hbox only as a last resort, i.e., only if there's no -other way to break the paragraph into lines. -\li Assuming that all lines are tolerably bad, \TeX\ uses the badness of lines -in order to evaluate the different ways of breaking the paragraph into lines. -During this evaluation it associates ``demerits'' with each potential line. -The badness increases the number of \refterm{demerits}. -\TeX\ then -breaks the paragraph into lines in a way that minimizes the -total demerits for the paragraph. -Most -often \TeX\ arranges the paragraph in a way that minimizes the badness of the -worst line. See \knuth{pages~97--98} for the details of how \TeX\ -breaks a paragraph into lines. -\endolist - -\TeX's procedure for assembling a sequence of lines and other vertical -mode material into pages is similar to its procedure for line breaking. -However, assembling pages is -not as complicated because \TeX\ only considers one page at a time -when it looks for page breaks. -Thus the only decision it must make is where to end the current page. -In contrast, when \TeX\ is choosing line breaks it -considers several of them simultaneously. -(Most word processors choose line breaks one at a time, -and thus don't do as good a job at it as \TeX\ does.) -See \knuth{pages~111--113} for the details of how \TeX\ chooses its -page breaks. -\endconcept - - -\conceptindex{baselines} -\concept baseline - -The \defterm{baseline} of a \refterm{box} is an imaginary line that runs -across the box. -^^{boxes//baselines of} -When \TeX\ is -assembling the boxes of a \refterm{horizontal list} into a larger box, -it lines up the boxes in the list so that their baselines coincide. -As an analogy, think of writing on a pad of ruled paper. Each letter -that you write has -an implicit baseline. -In order to line up the letters horizontally, -you place them on the pad so that their baselines -agree with the light guidelines that are printed on the pad. - -A box can and often does extend below its baseline. -For instance, the letter `g' extends below the baseline of its box because -it has a descender (the bottom loop of the `g'). -\endconcept - - -\conceptindex{boxes} -\concept box - -A \defterm{box} is a rectangle of material to be typeset. A single -\refterm{character} is a box by itself, -and an entire page is also a box. -\TeX\ forms a page as a nest of boxes within boxes within boxes. The -outermost box is the page itself, the innermost boxes are mostly -single characters, and single lines are boxes that are -somewhere in the middle. - -\TeX\ carries out most of its box-building activities implicitly as it -constructs paragraphs and pages. -You can construct boxes explicitly -using a number of \TeX\ \refterm{commands}, notably -^|\hbox| \ctsref{\hbox}, -^|\vbox| \ctsref{\vbox}, and -^|\vtop| \ctsref{\vtop}. -The ^|\hbox| command -constructs a box by appending smaller boxes horizontally from left to right; -it operates on a \refterm{horizontal list} and yields -an \refterm{hbox} ^^{hboxes} (horizontal box). -^^{horizontal lists} -The ^|\vbox| and |\vtop| commands -construct a box by appending smaller boxes vertically from top to bottom; -^^{vboxes} -they operate on a \refterm{vertical list} -and yield a \refterm{vbox} ^^{vboxes} (vertical box). -^^{vertical lists} -These horizontal and vertical lists can include not just smaller boxes but -several other kinds of entities as well, e.g., \refterm{glue} and -kerns. -^^{kerns//as list items} - -A box has \refterm{height}, \refterm{depth}, and \refterm{width}, -^^{height} ^^{depth} ^^{width} -like this: -\vdisplay{\offinterlineskip\sevenrm - \halign{#&#&\kern3pt \hfil#\hfil\cr - &\hrulefill\cr - &\vrule - \vtop to .7in{\vss \hbox to .9in{\hss baseline\hss}\vskip4pt}% - \vrule - &\labelledheight{.7in}{height}\cr - % - \vbox to 0pt{ - \vss - \hbox{reference point \hbox to 15pt{\rightarrowfill}% - \hskip3pt}% - \kern-4.5pt}&{\box\refpoint}\hrulefill\cr - % - \omit - &\vrule\hfil\vrule - &\labelledheight{.4in}{depth}\cr - % - &\hrulefill\cr - % - \noalign{\vskip3pt}% - &\leftarrowfill { width }\rightarrowfill\cr -}} - -^^{baselines} -The \refterm{baseline} is like one of -the light guidelines on a pad of ruled paper. -The boxes for letters such as `g' -extend below the baseline; the boxes for letters such as `h' don't. -The height of a box is the distance that the box extends above its -baseline, while its depth is the distance that it extends below its -baseline. \bix^^{reference point} -The \minref{reference point} -of a box is the place where its baseline intersects its left edge. - -{\tighten -\TeX\ builds an hbox $H$ from a horizontal list by assuming -a reference point for $H$ and then appending the items in the list to $H$ -one by one from left to right. -Each box in the list is placed so that its baseline coincides with the -baseline of $H$\kern-2pt, -i.e., the component boxes are lined up horizontally.% -\footnote{If a box is moved up or down with ^|\raise| or -^|\lower|, \TeX\ uses its reference point before the move when -placing it.} -The height of $H$ is the -height of the tallest box in the list, and the depth of $H$ is the depth -of the deepest box in the list. -The width of $H$ is the sum of the -widths of all the items in the list. -If any of these items are \refterm{glue} and \TeX\ needs to stretch or shrink -the glue, -the width of $H$ will be larger or smaller accordingly. -See \knuth{page~77} for the~details. -\par} - -Similarly, \TeX\ builds a vbox $V$ from a vertical list by assuming a -temporary reference point for $V$ and then appending the items in the -list to $V$ one by one from top to bottom. Each box in the list is -placed so that its reference point is lined up vertically with the -reference point of \Vperiod.\footnote{If a box is moved left or right with -^|\moveleft| or ^|\moveright|, \TeX\ uses its reference point before the -move when placing it.} As each box other than the first one is added to -\Vcomma, \TeX\ puts \minref{interline glue} just above it. (This -^{interline glue} has no analogue for hboxes.) The width of $V$ is the -width of the widest box in the list, and the vertical extent (height -plus depth) of $V$ is the sum of the vertical extents of all the -items in the list. - -\bix^^|\vbox| -\bix^^|\vtop| -The difference between |\vbox| and |\vtop| is in how they partition -the vertical extent of $V$ into a height and a depth. -Choosing the reference point of $V$ determines that partition. -\ulist -\li For |\vbox|, \TeX\ places the reference point on a horizontal line -with the reference point of the last component box -or rule of \Vcomma, except -that if the last box (or rule) is followed by glue or a kern, \TeX\ places the -reference point at the very bottom of \Vperiod.% -\footnote{The depth is limited by -the parameter ^|\boxmaxdepth| \ctsref{\boxmaxdepth}.} - -\li For |\vtop|, \TeX\ places the reference point on a horizontal line -with the reference point of the first component box or rule of \Vcomma, -except that if the first box (or rule) -is preceded by glue or a kern, \TeX\ places -the reference point at the very top of \Vperiod. - -\endulist -\noindent -Roughly speaking, then, |\vbox| puts the reference point near the bottom -of the vbox and |\vtop| puts it near the top. -When you want to align a -row of vboxes so that their tops line up horizontally, -you should usually use |\vtop| rather than |\vbox|. -See \knuth{pages~78 and 80--81} for the -details of how \TeX\ builds vboxes. -\eix^^|\vbox| -\eix^^|\vtop| -\eix^^{reference point} - -You have quite a lot of freedom in constructing boxes. The typeset -material in a box can extend beyond the boundaries of the box as it does -for some letters (mostly italic or slanted ones). The component boxes -of a larger box can overlap. A box can have negative width, depth, or -height, though boxes like that are not often needed. - -You can save a box in a box \refterm{register} and retrieve it later. -Before using a box register, -^^{box registers} -you should reserve it and give it a name -with the ^|\newbox| command \ctsref{\@newbox}. See -\conceptcit{register} for more information about box -registers. -\endconcept - - -\conceptindex{category codes} -\concept {category code} - -The \defterm{category code} of a \refterm{character} determines that -character's role in \TeX. -^^{characters//category code of} -For instance, \TeX\ assigns a certain role to -letters, another to space characters, and so forth. \TeX\ attaches a -code to each character that it reads. When \TeX\ reads the -letter `|r|', for example, it ordinarily -attaches the category code $11$ (letter) -to it. For simple \TeX\ applications you won't need to worry about -category codes, but they become important when you are trying to achieve -special effects. - -Category codes apply only to characters that \TeX\ reads from input -files. Once a character has gotten past \TeX's ^{gullet} -\seeconcept{\anatomy} and been interpreted, its category code no -longer matters. A character that you produce with the ^|\char| command -\ctsref{\char} does not have a category code because |\char| -is an instruction to \TeX\ to produce a certain character in a certain -\refterm{font}. For instance, the ^{\ascii} code for `|\|' -(the usual escape character) is $92$. If -you type `|\char92 grok|', it is \emph{not} equivalent to |\grok|. -Instead it tells \TeX\ to -typeset `$c$grok', where $c$ is the character in position $92$ -of the code table for the current font. - -You can use the ^|\catcode| command \ctsref{\catcode} to reassign the -category code of any character. By changing category codes you can -change the roles of various characters. For instance, if you type -`|\catcode`\@ = 11|', the category code of the at sign (|@|) will be set -to ``letter''. You then can use `|@|' in the name of a control -sequence. - -Here is a list of the category codes as they're defined in -\refterm{\plainTeX} (see \xref{twocarets} for an explanation of -the |^^| notation), -together with the characters in each category: - -\xrdef{catcodes} -\vskip\abovedisplayskip -%k \vskip 0pt plus 2pt % to fix bad page break -{%k \interlinepenalty = 10000 -\halign{\indent\hfil\strut#&\qquad#\hfil\cr -\it Code&\it Meaning\cr -\noalign{\vskip\tinyskipamount} -0&Escape character \quad |\| ^^{escape character//category code of} - {\recat!ttidxref[\//category code of]] - \cr -1&Beginning of group \quad |{| ^^{groups} - {\recat!ttidxref[{//category code of]] - \cr -2&End of group \quad |}| - {\recat!ttidxref[}//category code of]] - \cr -3&Math shift \quad |$| ^^{math shift} - {\recat!ttidxref[$//category code of]] - \cr -4&Alignment tab \quad |&| ^^{tabs} ^^{alignments//tab character for} - \ttidxref{&//category code of} \cr -5&End of line \quad |^^M| \tequiv \ascii\ \asciichar{return} - ^^{end of line} \ttidxref{^^M//category code of}\cr -6&Macro parameter \quad |#| - ^^{macros//parameters of} - ^^{parameters//indicated by \b\tt\#\e} - \ttidxref{#//category code of} \cr -7&Superscript \quad |^| and |^^K| ^^{superscripts} - \ttidxref{^^K} - \ttidxref{^//category code of} \cr -8&Subscript \quad |_| and |^^A| ^^{subscripts} - \ttidxref{^^A} - \ttidxref{_//category code of} \cr -9&Ignored character \quad |^^@| \tequiv \ascii\ \asciichar{null} - ^^{ignored characters} \indexchar ^^@ \cr -10&Space \quad \visiblespace\ and |^^I| \tequiv \ascii\ - \asciichar{horizontal\ tab} - ^^{horizontal tab} - ^^{space characters//category code of} \indexchar ^^I - {\recat!ttidxref[ ]] - \cr -11&Letter \quad |A| \dots |Z| and |a| \dots |z| ^^{letter}\cr -12&Other character \quad (everything not listed above or below) - ^^{other characters}\cr -13&Active character \quad |~| and |^^L| \tequiv\ascii\ \asciichar{form\ feed} - ^^{active characters} ^^{form feed} \indexchar ~ \indexchar ^^L \cr -14&Comment character \quad |%| ^^{comments} - {\recat!ttidxref[%//category code of]] - \cr -15&Invalid character \quad |^^?| \tequiv \ascii\ \asciichar{delete} - ^^{invalid character} \indexchar ^^? \cr -}} -\vskip\belowdisplayskip -%k \vskip 0pt plus 2pt % to fix bad page break - -\noindent Except for categories $11$--$13$, -all the characters in a particular category produce the same effect. -\margin{Misleading material removed.} -For instance, suppose -that you type: -\csdisplay -\catcode`\[ = 1 \catcode`\] = 2 -| -Then the left and right bracket characters become -beginning-of-group and end-of-group characters equivalent to -the left and right brace characters. With these definitions `|[a b]|' -is a valid group, and so are \hbox{`|[a b}|'} and~\hbox{`|{a b]|'}. - -The characters in categories $11$ (letter) and $12$ -(other character) act as \refterm{commands:command} -that mean -``produce a \refterm{box} containing this character -typeset in the current font''. -The only distinction between letters and ``other'' characters is -that letters can appear in \refterm{control word}s but -``other'' characters~can't. - -A character in category $13$ (active) acts like a control sequence -all by itself. \TeX\ complains if it encounters an active character that -doesn't have a definition associated with it. -^^{active characters} - -If \TeX\ encounters an ^{invalid character} (category $15$) -in your input, it will complain about it. - -The `|^^K|' and `|^^A|' characters have been included in categories -$8$ (subscript) and $9$ (superscript), even though these meanings -don't follow the standard \refterm{\ascii} interpretation. -That's because some keyboards, notably some at Stanford -University where \TeX\ originated, -have down arrow and up arrow keys that generate these characters. -\ttidxref{^^A} -\ttidxref{^^K} - -There's a subtle point about the way \TeX\ assigns category codes that -can trip you up if you're not aware of it. \TeX\ sometimes needs to -look at a character twice as it does its initial scan: first to find the -end of some preceding construct, e.g., a control sequence, and later to -turn that character into a token. \TeX\ doesn't assign the category -code until its \emph{second} look at the character. For example: - -\csdisplay -\def\foo{\catcode`\$ = 11 }% Make $ be a letter. -\foo$ % Produces a `$'. -\foo$ % Undefined control sequence `foo$'. -| -\noindent -This bit of \TeX\ code produces `\$' in the typeset output. When -\TeX\ first sees the `|$|' on the second line, -it's looking for the end of a control sequence name. Since -the `|$|' isn't yet a letter, it marks the end of `|\foo|'. Next, -\TeX\ expands the `|\foo|' macro and changes the category code of `|$|' -to $11$ (letter). Then \TeX\ reads the `|$|' ``for real''. Since -`|$|' is now a letter, \TeX\ produces a box -containing the `|$|' character in the current font. -When \TeX\ sees the third line, it treats `|$|' as a letter and thus -considers it to be part of the control sequence name. -As a result it complains about an undefined control sequence |\foo$|. - -\TeX\ behaves this way even when the terminating character is an -end of line. For example, suppose that the macro |\fum| activates the -end-of-line character. Then if |\fum| appears on a line $\ell$ by -itself, \TeX\ will first interpret the end of line of $\ell$ as -the end of the |\fum| control sequence and then will \emph{reinterpret} -the end of line of $\ell$ as an active character. -\endconcept - - -\conceptindex{characters} -\concept character - -{\tighten -\TeX\ works with \defterm{characters} in two contexts: -as input characters, which it reads, and as output characters, -which it typesets. -\TeX\ transforms most input characters -into the output characters that depict them. -For example, it normally -transforms the input letter `|h|' into the letter `h' typeset in the current -font. -That is not the case, however, for an input character such as `|$|' that has a -special meaning. -\par} - -\TeX\ gets its input characters by reading them from input files (or from your -terminal) and by expanding \refterm{macros:macro}. These are the -\emph{only} ways that \TeX\ can acquire an input character. -Each input character has a code number corresponding to its position in the -\refterm{\ascii} code table. ^^{\ascii} -For instance, the letter `|T|' has \ascii\ code~$84$. - -When \TeX\ reads -a character, it attaches a \refterm{category code} -^^{category codes//attached during input} -to it. The category code affects how \TeX\ interprets the -character once it has been read in. \TeX\ determines -(and remembers) the category codes of the characters in a macro when it -reads the macro's definition. As \TeX\ reads characters with its eyes -\seeconcept{\anatomy} it does some ``filtering'', -such as condensing -sequences of spaces to a single space. See \knuth{pages~46--48} for the -details of this filtering. - -The \ascii\ -``^{control characters}'' have codes $0$--$31$ and $127$--$255$. -They either don't -show up or cause strange behavior on most terminals if you try to -display them. Nonetheless they are sometimes needed in \TeX\ input, -so \TeX\ has a special notation for them. -\xrdef{twocarets} -If you type `|^^|$c$', where $c$ is any character, you get the character -whose \ascii\ code is either $64$ greater or $64$ less than $c$'s -\ascii\ code. The largest acceptable code value using this notation -is $127$, so the notation is unambiguous. -Three particularly common instances of this -notation are `|^^M|' (the \ascii\ \asciichar{return} character), -`|^^J|' (the \ascii\ \asciichar{line\ feed} character) and `|^^I|' -(the \ascii\ \asciichar{horizontal\ tab} character). -\ttidxref{^^M}\ttidxref{^^J}\ttidxref{^^I} - -{\tighten -\TeX\ also has another notation for indicating \ascii\ code values -that works for all character codes from $0$ to $255$. -\xrdef{hexchars} -If you type `|^^|$xy$', where $x$ -and $y$ are any of the ^{hexadecimal digit}s `|0123456789abcdef|', -you get the single character with the specified code. -(Lowercase letters are required here.) -\TeX\ opts for the ``hexadecimal digits'' -interpretation whenever it has a choice, so you must not follow a character -like `|^^a|' with a lowercase hexadecimal digit---if you do, you'll get the -wrong interpretation. -If you need to use this -notation you'll find it handy to have a table of \ascii\ codes. -\par} - -An output character is a character to be typeset. -A command for producing an output character has the meaning -``Produce a \refterm{box} containing -character number $n$ from the current \refterm{font}'', -where $n$ is determined by the command. -\TeX\ produces your typeset document by combining such boxes with -other typographical \hbox{elements} and arranging them -on the page. - -An input character whose category code is $11$ (^{letter}) or $12$ (other) -^^{other characters} -acts as a command to produce the corresponding output character. In -addition you can get \TeX\ to produce character $n$ by issuing the -command `|\char |$n$' \ctsref{\char}, ^^|\char| where $n$ is a -\refterm{number} between $0$ and $255$. The commands `|h|', -|\char`h|, and |\char104| all have the same effect. ($104$ is the -\ascii\ code for `h'.) - -\endconcept - - -\concept class - -The \defterm{class} of a \refterm{character} specifies that character's -role in math formulas. The class of a character is encoded in its -\refterm{mathcode}. ^^{mathcodes//class encoded in} For example, the -equals sign `|=|' is in class $3$ (Relation). \TeX\ uses its knowledge -of character classes to decide how much space to put between different -components of a math formula. \margin{clarifying material added} For -example, here's a math formula shown first as \TeX\ normally prints it -and then with the class of each character randomly changed: -$$\strut a+(b-a)=a \qquad - \mathopen{a}\mathord{+}\mathrel{(}\mathclose{b}\mathclose{-} - \mathop{a}\mathopen{)}\mathord{=}\mathopen{a}$$ - -See \xrefpg\mathord\ of this book for a list of the classes and -\knuth{page~154} for their meanings. - -\endconcept - - -\conceptindex{commands} -\concept command - -A \defterm{command} instructs \TeX\ to carry out a certain action. -Every \refterm{token} that reaches \TeX's stomach \seeconcept{\anatomy} -acts as a command, except for those that are parts of arguments to -other commands (see below). -^^{tokens//as commands} -A command can be invoked by a -\refterm{control sequence}, by an \refterm{active character}, or by an -ordinary character. It might seem odd that \TeX\ treats an ordinary -character as a command, but in fact that's what it does: -when \TeX\ sees -an ordinary character -it constructs a \refterm{box} containing that character typeset in -the current font. - -A command can have arguments. -The arguments of a command are single tokens or -groups of tokens that complete the description of what -the command is supposed to do. -For example, the command `|\vskip 1in|' tells \TeX\ to skip -$1$ inch vertically. It has an argument `|1in|', -which consists of three tokens. -The description of what |\vskip| is supposed to do would be incomplete -without specifying how far it is supposed to skip. -The tokens in the arguments to a command are not themselves considered -to be commands. - -Some examples of different kinds of \TeX\ commands are: -\ulist\compact -\li Ordinary characters, such as `|W|', which instructs \TeX\ -to produce a box containing a typeset `W' -\li Font-setting commands, -such as |\bf|, which begins boldface type -\li Accents, such as |\`|, which produces a grave accent as in `\`e' -\li Special symbols and ligatures, such as |\P| (\P) and |\ae| (\ae) -\li Parameters, such as |\parskip|, the amount of glue that -\TeX\ puts between paragraphs -\li Math symbols, such as |\alpha| ($\alpha$) and |\in| ($\in$) -\li Math operators, such as |\over|, which produces a fraction -\endulist -\endconcept - - -\conceptindex{conditional tests} -\concept {conditional test} - -A \defterm{conditional test} is a command that tests whether or not a certain -condition is true and -causes \TeX\ either to expand or to skip some text, depending on -the outcome. -The general form of a conditional test is either: -\display{ -{\tt \\if}$\alpha$\<true text>{\tt \\else}\<false text>{\tt \\fi}} -^^|\else|^^|\fi| -\noindent or:\hfil\ -\display{ -{\tt \\if}$\alpha$\<true text>{\tt \\fi}} -\noindent where $\alpha$ specifies the particular test. -For example, |\ifvmode| tests the condition that \TeX\ -is currently in a \refterm{vertical mode}. -If the condition is true, \TeX\ expands \<true text>. -If the condition is false, \TeX\ expands \<false text> (if it's present). -Conditional tests are interpreted in \TeX's gullet -\seeconcept{\anatomy}, so any expandable \minref{token}s in -the interpreted text are expanded after the test has been resolved. -The -various conditional tests are explained in \headcit{Conditional tests}% -{conds}. - -\endconcept - - -\conceptindex{control sequences} -\concept{control sequence} - -A \defterm{control sequence} is a name for a \TeX\ \refterm{command}. -A control sequence always starts with an ^{escape character}, usually -a backslash (|\|). -\indexchar \ -A control sequence takes one of two forms: - -\ulist - -\li A \refterm{control word} is a control sequence consisting of an -\refterm{escape character} followed by one or more letters. -^^{control words} -The control -word ends when \TeX\ sees a nonletter. For instance, when \TeX\ reads -`\hbox{|\hfill!visiblespace,!visiblespace!.the|}', it sees six -\refterm{tokens:token}: -the control sequence `|\hfill|', comma, space, `|t|', `|h|', `|e|'. The -space after `|\hfill|' ends the control sequence and -is absorbed by \TeX\ when it scans the control sequence. -(For the text `|\hfill,!visiblespace!.the|', on the other hand, -the comma both ends the control sequence and counts as a character in its -own right.) - -\li A \refterm{control symbol} -^^{control symbols} -is a control sequence consisting of an -^{escape character} followed by any character other than a letter---% -even a space or an end of line. -A control symbol is self-delimited, i.e., \TeX\ knows where it ends without -having to look at what character comes after it. -The character after a control symbol is never absorbed by -the control symbol. -\endulist -\noindent See \xrefpg{spaces} for more information about spaces after control -sequences. - -\TeX\ provides a great many predefined control sequences. The -\refterm{primitive} control sequences are built into the \TeX\ computer -program and thus are available in all forms of \TeX. -^^{primitive//control sequence} -Other -predefined control sequences are provided by \refterm{\plainTeX}, the -form of \TeX\ described in this book. - -You can augment the predefined control sequences with ones of your own, -using commands such as ^|\def| and ^|\let| to define them. -\chapterref{eplain} of this book contains a -collection of control sequence definitions that you may find -useful. In addition, your computing facility may -be able to provide a collection of -locally developed \TeX\ macros. -\endconcept - - -\conceptindex{control symbols} -\concept{control symbol} - -A \defterm{control symbol} is a \refterm{control sequence} that consists -of an \refterm{escape character} followed by any character other than a -letter---even a space or end of line. -^^{escape character} -\endconcept - - -\conceptindex{control words} -\concept{control word} - -A \defterm{control word} is a \refterm{control sequence} that consists -of an \refterm{escape character} followed by one or more -letters.\footnote{A ``letter'' here has the strict meaning of a -character with category code $11$.} -\TeX\ -ignores any spaces or ends-of-line that follow a control word, except to -note that they end the control word. -^^{escape character} -\endconcept - - - -\concept {decimal constant} - -See \conceptcit{number}. -\endconcept - -\conceptindex{delimiters} -\concept delimiter - -A \defterm{delimiter} is a character -that is intended to be used as -a visible boundary of a math formula. -The essential property of a delimiter is that \TeX\ can adjust -its size according -to the vertical size (\refterm{height} plus \refterm{depth}) -of the subformula. -However, \TeX\ performs the adjustment only if the delimiter -appears in a ``delimiter context'', namely, as an argument to -one of the commands ^|\left|, -^|\right|, -|\over!-with!-delims|, -|\atop!-with!-delims|, -or |\above!-with!-delims| -^^|\overwithdelims| -^^|\atopwithdelims| -^^|abovewithdelims| -\margin{Footnote deleted} -(see \pp\xrefn{\overwithdelims},~\xrefn{\left}). -The delimiter contexts also include any \refterm{argument} -to a \refterm{macro} that uses the argument in a delimiter context. - -For example, the left and right -parentheses are delimiters. -If you use ^{parentheses} in a delimiter context -around a formula, \TeX\ makes the parentheses big -enough to enclose the \refterm{box} that contains the formula (as long as the -\refterm{fonts:font} you're using have big enough parentheses). -For example: -\csdisplay -$$ \left( a \over b \right) $$ -| -yields: -\centereddisplays $$\left (a \over b \right ) $$ -Here \TeX\ has made the parentheses big enough to accommodate the fraction. -But if you write, instead: -\csdisplay -$$({a \over b})$$ -| -you'll get: -$$({a \over b})$$ -Since the parentheses aren't in a delimiter context, -they are \emph{not} enlarged. - -Delimiters come in pairs: -an opening delimiter at the left of the subformula -and a closing delimiter at its right. -You can explicitly choose a larger height for a -delimiter with the commands ^|\bigl|, ^|\bigr|, and their -relatives \ctsref{\bigl}.\footnote -{\PlainTeX\ defines the various |\big| commands by using |\left| and |\right| -to provide a delimiter context. It sets the size by -constructing an empty formula with the desired height.} -For instance, in order to get the -displayed formula: -$$\bigl(f(x) - x \bigr) \bigl(f(y) - y \bigr)$$ - -\noindent in which the outer parentheses are a little bigger than the inner -ones, you should write: - -\csdisplay -$$\bigl( f(x) - x \bigr) \bigl( f(y) - y \bigr)$$ -| - -The $22$ \plainTeX\ delimiters, shown at their normal size, are: -\display{% -$( \>) \>[ \>] \>\{ \>\} -\>\lfloor \>\rfloor \>\lceil \>\rceil -\>\langle \>\rangle \>/ \>\backslash -\>\vert \>\Vert -\>\uparrow \>\downarrow \>\updownarrow -\>\Uparrow \>\Downarrow \>\Updownarrow$} -^^|)| ^^|)| ^^|[| ^^|]| ^^|\lbrack| ^^|\rbrack| -^^|\{| ^^|\}| ^^|\lbrace| ^^|\rbrace| -^^|\lfloor| ^^|\rfloor| ^^|\lceil| ^^|\rceil| -^^|\langle| ^^|\rangle| ^^|/| ^^|\backslash| -^^|\vert| ^^|\Vert| -^^|\uparrow| ^^|\downarrow| ^^|\updownarrow| -^^|\Uparrow| ^^|\Downarrow| ^^|\Updownarrow| -\noindent -Here they are at the largest size provided explicitly by \plainTeX\ - (the |\Biggl|, |\Biggr|, etc., versions): -\nobreak\vskip .5\abovedisplayskip -\display{% -$\Biggl( \>\Biggr) \>\Biggl[ \>\Biggr] -\>\Biggl\{ \>\Biggr\} \>\Biggl\lfloor \>\Biggr\rfloor -\>\Biggl\lceil \>\Biggr\rceil -\>\Biggl\langle \>\Biggr\rangle -\>\Biggm/ \>\Biggm\backslash -\>\Biggm\vert \>\Biggm\Vert -\>\Biggm\uparrow \>\Biggm\downarrow \>\Biggm\updownarrow -\>\Biggm\Uparrow \>\Biggm\Downarrow \>\Biggm\Updownarrow$} -\vskip .5\belowdisplayskip -\noindent -The delimiters (except for `|(|', `|)|', and -`|/|') -are among the symbols listed on -pages~\xrefn{\lbrace}--\xrefn{\Uparrow}. -They are listed in one place on \knuth{page~146}. - -A delimiter can belong to any class. -^^{class//of a delimiter} -For a delimiter that you enlarge with -|\bigl|, |\bigr|, etc., the class is determined by the command: -``opener'' for |l|-commands, ``closer'' for |r|-commands, -``relation'' for |m|-commands, and ``ordinary symbol'' for |g|-commands, -e.g., |\Big|. - -You can obtain a delimiter in two different ways: -\olist -\li You can make a character be a delimiter by assigning it a -nonnegative delimiter code -\bix^^{delimiter codes} -(see below) with the ^|\delcode| command (\xref\delcode). -Thereafter the character acts as a delimiter whenever you use it in a -delimiter context.\footnote{% -It's possible to use a character with a nonnegative delimiter code in -a context where it isn't a delimiter. In this case \TeX\ doesn't perform the -search; instead it just uses the character in the ordinary way -(see \knuth{page~156}).} -\li You can produce a delimiter explicitly with the ^|\delimiter| command -(\xref\delimiter), in analogy to the way that you can produce an ordinary -character with the |\char| command or a math character with the |\mathchar| -command. -The |\delimiter| command uses the same delimiter codes that are used in a -|\delcode| table entry, but with an extra digit in front to indicate a -class. -It's rare to use |\delimiter| outside of a macro definition. -\endolist - -A delimiter code tells -\TeX\ how to search for an appropriate output character to represent -a delimiter. -The rules for this search are rather complicated -(see \knuth{pages~156 and 442}). -A complete understanding of these rules requires knowing -about the organization of font ^{metrics file}s, a topic that is not just beyond -the scope of this book but beyond the scope of \texbook\ as well. - -In essence the search works like this. The delimiter code specifies a -``small'' output character and a ``large'' output character by -providing a \refterm{font} position and a font \refterm{family} for each -(see \xref\delcode). -Using this information, \TeX\ can find (or construct) -larger and larger versions of the delimiter. \TeX\ first tries -different sizes (from small to large) -of the ``small'' character in the ``small'' font -and then -different sizes (also from small to large) -of the ``large'' character in the ``large'' font, -seeking one whose height plus depth is sufficiently large. -If none of the characters it finds are large -enough, it uses the largest one that it finds. -It's possible that -the small character, the large character, or both have been left unspecified -(indicated by a zero in the appropriate part of the delimiter code). -If only one character -has been specified, \TeX\ uses that one. If neither has been specified, -it replaces the delimiter by a space of width ^|\nulldelimiterspace|. -\eix^^{delimiter codes} - -\endconcept - - -\concept demerits - -\TeX\ uses \refterm{demerits} as a measure of how undesirable a line is -when it's breaking a paragraph into lines \seeconcept{line break}. -^^{line breaks//demerits for} -The demerits of a line are affected both by the \refterm{badness} of the line -and by \refterm{penalties:penalty} associated with the line. -^^{badness} -\TeX's goal in choosing a particular arrangement of lines is to minimize the -total demerits for the paragraph, which it computes by adding up the demerits -for the individual lines. -See \knuth{pages~97--98} for the details of how \TeX\ -breaks a paragraph into lines. -\TeX\ does not use demerits when it's choosing page breaks; instead, it uses -a similar measure known as the ``cost'' of a particular page break. -\endconcept - -\concept depth - -^^{boxes//depth of} -The \defterm{depth} of a \refterm{box} is the distance that the box extends -below its \refterm{baseline}. -\endconcept - - -\conceptindex{dimensions} -\concept dimension - -A \defterm{dimension} specifies a distance, that is, a linear measure of -space. You use dimensions to specify sizes of things, such as the length -of a line. Printers in English-speaking countries traditionally measure -distance in points and picas, while printers in continental Europe -traditionally measure distance in did\^ot points and ciceros. You can -use these units or others, such as inches, that may be more -familiar to you. The font-independent -^{units of measure} that \TeX\ understands are: - -\xrdef{dimdefs} -\nobreak\vskip\abovedisplayskip -\halign{\indent\hfil\tt #\qquad&#\hfil\cr -pt&^{point} (72.27 points = 1 inch)\cr -pc&^{pica} (1 pica = 12 points)\cr -bp&big point (72 big points = 1 inch)\cr -in&^{inch}\cr -cm&^{centimeter} (2.54 centimeters = 1 inch)\cr -mm&^{millimeter} (10 millimeters = 1 centimeter)\cr -dd&^{\didotpt} (1157 {\didotpt}s = 1238 points)\cr -cc&^{cicero} (1 cicero = 12 {\didotpt}s)\cr -sp&^{scaled point} (65536 scaled points = 1 point)\cr -} -\vskip\belowdisplayskip - -Two additional units of measure are associated with every font: `^|ex|', -a vertical measure usually about the height of the letter `x' -in the font, and `^|em|', a -horizontal measure usually equal to the point size of the font and -about the width of the letter `M' in the font. Finally, -\TeX\ provides three ``infinite'' units of measure: `^|fil|', `^|fill|', and -`^|filll|', in increasing order of~strength. - -A dimension is written as a ^{factor}, i.e, a multiplier, -followed by a unit of measure. -^^{units of measure} -The factor can be either a whole \refterm{number} or -a \refterm{decimal constant} containing a decimal point -or decimal comma. -The factor can be preceded by a plus or minus sign, so a dimension -can be positive or negative. -^^{dimensions//negative} -The unit of measure must be there, even if the number is -zero. Spaces between the number and the unit of measure are permitted -but not required. You'll find a precise definition of a -dimension on \knuth{page~270}. Here are some examples of dimensions: - -\csdisplay -5.9in 0pt -2,5 pc 2fil -| -The last of these represents a first-order infinite distance. - -An infinite distance outweighs any finite distance or any weaker infinite -distance. If you add |10in| to |.001fil|, you get |.001fil|; if you add -|2fil| to |-1fill| you get |-1fill|; and so forth. -\TeX\ accepts infinite distances -only when you are specifying the \refterm{stretch} and \refterm{shrink} -of \refterm{glue}. - -\TeX\ multiplies all dimensions in your document by a -\refterm{magnification} factor $f/1000$, -where $f$ is the value of the ^|\mag| parameter. -^^{magnification} -Since the default value of -|\mag| is $1000$, the normal case is that your document is -typeset just as specified. You can specify a dimension as it will be -measured in the final document independent of magnification by putting -`|true|' in front of the unit. For instance, `|\kern 8 true pt|' -produces a kern of $8$ points whatever the magnification. -\endconcept - - -\concept {display math} - -The term \defterm{display math} refers to a math formula that \TeX\ -places on a line by itself with extra space above and below -so as to set it off from the surrounding text. -A display math formula is enclosed by `|$$|'s. -\ttidxref{$$} -\TeX\ reads display math in display math \refterm{mode}. -\endconcept - - -\concept{escape character} - -An \defterm{escape character} introduces a control sequence. The escape -character in \refterm{\plainTeX} is the backslash (|\|). -\indexchar \ -You can change the escape character from $c_1$ to $c_2$ -by reassigning the category codes of $c_1$ and $c_2$ -with the ^|\catcode| command \ctsref{\catcode}. -You can also define additional escape characters similarly. -If you want to typeset material containing literal escape characters, you must -either -(a) define a control sequence that stands for the printed escape character or -(b) temporarily -disable the escape character by changing its category code, using the -method shown on \xrefpg{verbatim}. The definition: - -\csdisplay -\def\\{$\backslash$} -| -is one way of creating a control sequence that stands for `$\backslash$' -(a backslash typeset in a math font). - -You can use the ^|\escapechar| parameter \ctsref{\escapechar} to specify -how the escape character is represented in synthesized control sequences, -e.g., those created by |\string| and |\message|. - - -\endconcept - - -\concept family - -A \defterm{family} is a group of three related \refterm{fonts:font} used -when \TeX\ is in \refterm{math mode}. -^^{fonts//families of} -Outside of math mode, families -have no effect. The three fonts in a family are used for normal symbols -(\refterm{text size}), subscripts and superscripts (\refterm{script -size}), and sub-subscripts, super-superscripts, etc.\ -(\refterm{scriptscript size}). -^^{text size} -^^{script size} -^^{scriptscript size} -For example, the numeral `|2|' set in -these three fonts would give you `$2$', `$\scriptstyle 2$', and -`$\scriptscriptstyle 2$' (in \plainTeX). -Ordinarily you would set up the -three fonts in a family as different point sizes of the same typeface, -but nothing prevents you from using different typefaces for the three -fonts as well or using the same font twice in a family. - -{\tighten -\TeX\ provides for up to sixteen families, numbered $0$--$15$. For -example, family $0$ in \refterm{\plainTeX} consists of $10$-point roman -for text, $7$-point roman for script, and $5$-point roman for -scriptscript. -^^{\plainTeX//font families in} -\PlainTeX\ also defines family $1$ to consist of math -italic fonts and reserves families $2$ and $3$ for ^{special symbols} and -^{math extensions} respectively.\footnote{Families $2$ and $3$ are special -in that their font metric files must include parameters for math -spacing.} If you need to define a family for yourself, you should use -the ^|\newfam| command \ctsref{\@newfam} to get the number of a family that -isn't in use, and the ^|\textfont|, ^|\scriptfont|, -and ^|\scriptscriptfont| commands \ctsref{\scriptscriptfont} -to assign fonts to that family. -\par} - -\endconcept - - -\conceptindex{files} -\concept file - -A \defterm{file} is a stream of information that \TeX\ interprets or -creates. Files are managed by the ^{operating system} that supervises your -\TeX\ run. \TeX\ deals with files in four different contexts: -\olist -\li A ``^{source file}'' is one that \TeX\ reads with its ``eyes'' -\seeconcept{\anatomy} and interprets according to its ordinary rules. -Your primary input file---the one you specify after `|**|' or -on the command line when -you invoke \TeX---is a source file, and so is any file that you call for -with an ^|\input| command \ctsref \input. - -\li A ``^{result file}'' is one that contains the results of -running \TeX. A \TeX\ run creates two result files: the -\dvifile\ and the log file. -^^{\dvifile//as a result file} -^^{log file//as a result file} -The \dvifile\ contains the information needed to print your document; -the -log file contains a record of what happened during the run, including any -error messages that \TeX\ generated. -If your primary source file is named -|screed.tex|, your \dvifile\ and log file will be named |screed.dvi| -and |screed.log|.\footnote{This is the usual convention, but -particular implementations of \TeX\ are free to change it.} - -\li To read from a file with the ^|\read| -command \ctsref{\read} you need to associate the file with an input stream. -^^{input streams//reading with \b\tt\\read\e} -You can have up to $16$ input streams active -at once, numbered $0$--$15$. -The |\read| command reads a single line and makes it the value of a -designated \refterm{control sequence}, so reading with -|\read| is very different from reading with ^|\input| (which brings in an -entire file). -\TeX\ takes any input stream number not between -$0$ and $15$ to refer to the terminal, -so `|\read16|', say, reads the next line that you type at the terminal. - -\li To write to a file with the |\write| -command \ctsref \write\ you need to associate the file -with an output stream. -^^|\write//output stream for| -^^{output streams} -You can have up to $16$ output streams active -at once, numbered $0$--$15$. -Input and output streams are independent. -Anything sent to an output stream with a negative number goes to the log -file; anything sent to an output stream with a number greater than $15$ -goes both to the log file and to the terminal. -Thus `|\write16|', say, writes a line on the terminal and also sends -that line -to the log~file. - -\endolist - -You must open a stream file before you can use it. -An input stream file is opened with an ^|\openin| -command \ctsref \openin\ and an output stream file is opened with an -^|\openout| command \ctsref\openout. -For tidiness -you should close a stream file when you're done with it, although -\TeX\ will do that at the end of the run if you don't. -The two commands for closing a stream file are ^|\closein| \ctsref\closein\ -and ^|\closeout| \ctsref\closeout. -An advantage of closing a stream when -you're done with it is that you can then reuse the stream for a different file. -Doing this can be essential when you're reading a long sequence of files. - -Although you can assign numbers yourself to input and output streams, -it's better to do it with the ^|\newread| and -^|\newwrite| \ctsref{\@newwrite} commands. -You can have more than one stream associated with a particular file, -but you'll get (probably undiagnosed) garbage unless all of the streams -are input streams. Associating more than one stream with an input file -can be useful when you want to use the same input file for two different -purposes. - -\TeX\ ordinarily defers the actions of opening, writing to, or closing -an output stream until it ships out a page with ^|\shipout| -(see \knuth{page~227} -for the details). This behavior applies even to messages written to the -terminal with |\write|. But you can get \TeX\ to perform an action -on an output stream immediately by preceding the action command with -^|\immediate| \ctsref\immediate. For example: -\csdisplay -\immediate\write16{Do not pass GO!! Do not collect $200!!} -| -\endconcept - - -\conceptindex{file names} -\concept {file name} - -A \defterm{file name} names a -\refterm{file} that is known to the ^{operating system} -that in turn -supervises your \TeX\ run. The syntax of a file name does \emph{not} -follow the usual rules of \TeX\ syntax, and in fact it is different -in different implementations of \TeX. -In particular, most \TeX\ implementations consider a file name to be -terminated by a blank or an end of line. Thus \TeX\ is likely to -misinterpret `|{\input chapter2}|' -by taking the right brace as part of the file name. -As a general rule, you should follow a file name by a blank or the -end of the line as in `|{\input chapter2!visiblespace}|'. - -\endconcept - - -\eject -\conceptindex{fonts} -\concept font - -A \defterm{font} in \TeX\ is a collection of up to $256$ output -characters, usually having the same typeface design, style (roman, -italic, bold, condensed, etc.), -and point size.\footnote{\PlainTeX\ uses a special -font for constructing ^{math symbols} in which the characters have -different sizes. Other special fonts are often useful for applications -such as typesetting ^{logos}.} The ^{Computer Modern fonts} that -generally come with \TeX\ have only $128$ characters. The colophon on -the last page of this book describes the typefaces that we used to set -this book. - -For instance, here is the alphabet in the Palatino Roman $10$ point font: -^^{Palatino fonts} -\vskip\abovedisplayskip{\narrower\tenpal -\noindent ABCDEFGHIJKLMNOPQRSTUVWXYZ\hfil\break -abcdefghijklmnopqrstuvwxyz\par -}\vskip\belowdisplayskip -\noindent -And here it is in the Computer Modern Bold Extended $12$ -point font: -^^{Computer Modern fonts} -\vskip\abovedisplayskip{\narrower\font\twelvebf=cmbx12\twelvebf -\noindent ABCDEFGHIJKLMNOPQRSTUVWXYZ\hfil\break -abcdefghijklmnopqrstuvwxyz\par -}\vskip\belowdisplayskip -The characters in a font are numbered. -The numbering usually agrees with the ^{\ascii} numbering -for those characters that exist in the \ascii\ character set. -The code table for each font indicates what the character -with code $n$ looks like in that font. -Some fonts, such as the ones used for mathematical symbols, have no -letters at all in them. You can produce a \refterm{box} containing the -character numbered $n$, typeset in the current font, by writing `|\char |$n$' - \ctsref{\char}. - -In order to use a font in your document, -you must first name it with a control sequence and load it. Thereafter you -can select it by typing -that control sequence whenever you want to use it. -\PlainTeX\ provides a number of fonts that are already named and~loaded. - -You name and load a font as a single operation, using a -command such as `|\font\twelvebf=cmbx12|'. Here `|\twelvebf|' is the -control sequence that you use to name the font -and `|cmbx12|' identifies the font metrics file -|cmbx12.tfm| -in your computer's file system. -You then can start to use the font by typing -`|\twelvebf|'. After that, the font will be in effect until -either (a)~you select another font or (b)~you terminate the -\refterm{group}, if any, in which you started the -font. For example, the input: - -\csdisplay -{\twelvebf white rabbits like carrots} -| -will cause the |cmbx12| font to be in effect just for the -text `|white rabbits like carrots|'. - -You can use \TeX\ with fonts other than -Computer Modern (look at the example on \xrefpg{palatino} and -at the page headers). -The files for such fonts need to be -installed in your computer's file system in a place where \TeX\ can find -them. \TeX\ and its companion programs generally need two files for each font: -one to give its metrics (|cmbx12.tfm|, -^^{\tfmfile} -for example) and another to -give the shape of the characters (|cmbx12.pk|, for example). -\TeX\ itself uses only the metrics -file. Another program, the device driver, -^^{device drivers} -converts the \dvifile\ -^^{\dvifile//converted by driver} -produced by \TeX\ to a form that your printer -or other output device can handle. The driver -uses the shape file (if it exists). - -The font metrics file contains the information that \TeX\ needs in -order to allocate space for each typeset character. -Thus it includes the size of each character, the ligatures and -kerns that pertain to sequences of adjacent characters, and so on. -What the metrics file -\emph{doesn't} include is any information about the shapes -of the characters in the font. - -{\tighten -The shape (pixel) file \xrdef{shape} -^^{pixel file}^^{shape file} -may be in any of several -formats. The extension part of the name (the part after the dot) -tells the driver which format the shape file is in. For example, -|cmbx12.pk| ^^{\pkfile} might be the shape file for font |cmbx12| in -packed format, while |cmbx12.gf| ^^{\gffile} might be the shape file -for font |cmbx12| in generic font format. -A shape file may not be needed for a font that's resident in your -output device. -\par} - -\endconcept - - -\conceptindex{footers} -\concept footer - -A \defterm{footer} is material that \TeX\ puts at the bottom of every page, -below the text of that page. -The default footer in \plainTeX\ is a centered page number. -Ordinarily a footer consists of a single line, which you can set by -assigning a token list to ^|\footline| \ctsref\footline. -See \xrefpg{bighead} for a method of producing multiline footers. - -\endconcept - -%k \vskip 0pt plus 2pt % to solve page break problem - -\concept {format file} - -{\tighten -A \defterm{format file} is a file that contains an image of -\TeX's memory in a form in which it can be reloaded quickly. -A format file can be created with the ^|\dump| command \ctsref\dump. -The image contains a complete record -of the definitions (of \refterm{fonts:font}, \refterm{macros:macro}, etc.) -that were present when the dump took place. -By using ^|virtex|, a special ``virgin'' form of \TeX, -you can then reload the format file at high speed and -continue in the same state that \TeX\ was in at the time of the dump. -The advantage of a format file over an ordinary input -file containing the same information is that \TeX\ can load it much -faster. -\par} - -Format files can only be created by ^|initex|, another special -form of \TeX\ intended just for that purpose. -Neither |virtex| nor |initex| has any -facilities other than the primitives built into the -\TeX\ program itself. - -A ^{preloaded} form of \TeX\ is one that has a format file already -loaded and is ready to accept user input. -The form of \TeX\ that's called |tex| -often has the \plainTeX\ definitions preloaded. -(\PlainTeX\ is ordinarily available in two other forms as well: -as a format file and as a \TeX\ source file. -In some environments, |tex| is equivalent to calling |virtex| -and then loading |plain|.) -Creating preloaded forms of \TeX\ requires a special program; -it cannot be done using only the facilities of \TeX\ itself. - -\endconcept - -\concept global - -A \defterm{global} definition is effective -until the end of the -document or until it is overridden by another definition, -even when it occurs within a \refterm{group}. -Thus a global definition is unaffected by group boundaries. -You can make any definition global by prefixing it with the |\global| -command \ctsref{\global} unless ^|\globaldefs| \ctsref\globaldefs{} -is negative. -^^|\global| - -There's a special way of making a \refterm{macro} definition global. -^^{macros//global} -Normally you define a macro using either the |\def| command -or the |\edef| command \ctsref{\edef}. -^^|\edef//making global| -^^|\def//making global| -If you use |\gdef| or |\xdef| -instead of |\def| and |\edef| respectively, the macro definition will -be global. That is, `^|\gdef|' is equivalent to `|\global\def|' and -`^|\xdef|' is equivalent to `|\global\edef|'. -\endconcept - - -\concept glue - -\bix^^{stretch} -\bix^^{shrink} -\defterm{Glue} is blank space that can stretch or shrink. -Glue gives \TeX\ the flexibility that it needs in order to produce -handsome -documents. Glue comes in two flavors: horizontal glue and vertical glue. -Horizontal glue occurs within \refterm{horizontal lists:horizontal list}, -while vertical glue occurs within \refterm{vertical lists:vertical list}. -^^{horizontal lists} -^^{vertical lists} -You -can produce a glue item either implicitly, e.g., with an interword space, or -explicitly, e.g., with the ^|\hskip| command. -^^{spaces//interword} -\TeX\ itself produces many glue -items as it typesets your document. -We'll just describe horizontal glue---vertical glue is analogous. - -When \TeX\ assembles a list of boxes and glue into a larger -unit, -^^{boxes//glue with} -it adjusts the size of the glue to meet the space requirements of the -larger unit. For instance, \TeX\ ensures that the ^{right margin} of a page -is uniform by adjusting the horizontal glue within lines. -Similarly, it ensures that different pages have the -same ^{bottom margin} -by adjusting the glue between blocks of text such as paragraphs and -math displays -(where the change is least likely to be conspicuous). - -A glue item has a natural space---the size it ``wants to be''. Glue -also has two other attributes: its \refterm{stretch} and its -\refterm{shrink}. You can produce a specific amount of horizontal glue -with the ^|\hskip| \refterm{command} \ctsref{\hskip}. The command -|\hskip 6pt plus 2pt minus 3pt| -produces a horizontal glue item whose natural -size is $6$ points, whose stretch is $2$ points, and whose shrink is -$3$ points. Similarly, you can produce a specific amount of vertical -glue with the ^|\vskip| command \ctsref{\vskip}. - -The best way to understand what stretch and shrink are about -is to see an example of glue at work. -Suppose you're constructing an \refterm{hbox} from three boxes and two glue -items, as in this picture: -\gluepicture - 29 {\picbox 4 \gluebox 6 4 1 6 \picbox 5 \gluebox 10 8 3 10 \picbox 4 } -\noindent -The units of measurement here could be points, millimeters, or anything else. -If the hbox is allowed to assume its natural width, then each glue item in the -box also assumes its natural width. The total width of the hbox is then the -sum of the widths of its parts, namely, $29$ units. - -Next, suppose that the hbox is required to be wider than $29$ units, say -$35$ units. This -could happen, for example, if the hbox is required to occupy an entire -line and the line width is $35$ units. -Since the boxes can't change their width, -\TeX\ produces the necessary extra space by making the glue items wider. -The picture now looks like this: -\gluepicture - 35 {\picbox 4 \gluebox 6 4 2 8 \picbox 5 \gluebox 10 8 6 14 \picbox 4 } -The glue items don't become wider equally; they became wider in proportion to -their stretch. Since the second glue item -has twice as much stretch as the first one, -it gets wider by four units while the first glue item gets wider by only -two units. -Glue can be stretched as far as necessary, although \TeX\ is -somewhat reluctant to -stretch it beyond the amount of stretch given in its definition. - -Finally, suppose that the hbox is required to be narrower than $29$ units, say -$25$ units. In this case \TeX\ makes the glue items narrower. -The picture looks like this: -\gluepicture - 25 {\picbox 4 \gluebox 6 4 2 5 \picbox 5 \gluebox 10 8 6 7 \picbox 4 } -The glue items become narrower in proportion to their shrink. -The first glue item becomes narrower by one unit, while the second glue item -becomes narrower by three units. Glue cannot shrink by a distance -less than the amount of shrink -given in its definition even though the distance it can stretch is -unlimited. In this important sense the shrink and -the stretch behave differently. - -A good rule of thumb for glue is to set the natural size to the amount -of space that looks best, the stretch to the largest amount of space -that \TeX\ can add before the document starts to look bad, and the -shrink to the largest amount of space that \TeX\ can take away before -the document starts to look bad. You may need to set the values by -experiment. - -You can produce glue that is infinitely stretchable by specifying -its stretch in units of `^|fil|', `^|fill|', or `^|filll|'. Glue measured in -`|fill|' is infinitely more stretchable than glue measured in `|fil|', and -glue measured in `|filll|' is infinitely more stretchable than glue measured -in `|fill|'. You should rarely have any need for `|filll|' glue. Glue whose -stretch is |2fil| has twice as much stretch as glue whose stretch is |1fil|, -and similarly for the other kinds of infinitely stretchable glue. - -When \TeX\ is -apportioning extra space among glue items, the infinitely stretchable -ones, if there -are any, get all of it. Infinitely stretchable glue is particularly useful for -setting text flush left, flush right, or centered: - -\ulist\compact -\li To set text ^{flush left}, put infinitely stretchable -horizontal glue to the right of it. -That glue will consume all the -extra space that's available on the line. -You can use the ^|\leftline| command \ctsref{\leftline} -or the |\raggedright| command \ctsref{\raggedright} to do~this. -\li To set text ^{flush right}, put infinitely -stretchable horizontal glue to the left of it. -As before, that glue will consume all the extra space on the line. -You can use the ^|\rightline| command \ctsref{\rightline} to do~this. -\li To set ^{centered text}, put identical infinitely stretchable -horizontal glue items -on both sides of it. -These two glue items will divide all the extra space on the line -equally between them. -You can use the ^|\centerline| command \ctsref{\centerline} to do~this. -\endulist - -You can also specify infinitely shrinkable glue -^^{glue//infinitely shrinkable} -in a similar way. Infinitely shrinkable glue can act as negative space. -Note that |fil|, etc., can be used only -to specify the stretch and shrink of glue---they can't be used to specify -its natural size. -\eix^^{stretch} -\eix^^{shrink} -\endconcept - - -\conceptindex{groups} -\concept group - -A \defterm{group} is a part of your manuscript that \TeX\ treats as a unit. -You indicate a group by enclosing it in the braces -`|{|' and `|}|' (or any other characters with the appropriate -\refterm{category codes}). -^^|{//starting a group| -^^|}//ending a group| - -The most important property of a group is that any nonglobal -definition or assignment that you make inside a group disappears when -the group ends. For instance, if you write: - -\csdisplay -Please don't pour {\it any} more tea into my hat. -| -the |\it| \refterm{control sequence} causes \TeX\ to set the word -`|any|' in italic type but does not affect the rest of the text. -As another example, if you use the |\hsize| parameter -\ctsref{\hsize} to change the line length within a group, the line length -reverts to its previous value once \TeX\ has gotten past the group. - -Groups are also useful as a way of controlling spacing. For instance, if you -write: - -\csdisplay -\TeX for the Impatient and the Outpatient too. -| -\noindent -you'll get: -\display{% -\TeX for the Impatient and the Outpatient too. -} -\noindent -since the control sequence |\TeX| (which produces the \TeX\ -logo) absorbs the following space. -What you probably want is: -\display{% -{\TeX} for the Impatient and the Outpatient too. -} -\noindent -One way to get it is to enclose `|\TeX|' in a group: -\csdisplay -{\TeX} for the Impatient and the Outpatient too. -| -The right brace prevents the control sequence from absorbing the space. -\endconcept - - -\conceptindex{hboxes} -\concept hbox - -An \defterm{hbox} (horizontal box) is a \refterm{box} that \TeX\ -constructs by placing the items of a \refterm{horizontal list} one after -another, left to right. -^^{horizontal lists//hboxes formed from} -An hbox, taken as a unit, is neither -inherently horizontal nor inherently vertical, i.e., it can appear as an -item of either a horizontal list or a \refterm{vertical list}. You can -construct an hbox with the |\hbox| command \ctsref{\hbox}. -\endconcept - - -\conceptindex{headers} -\concept header - -A \defterm{header} is material that \TeX\ puts at the top of every page, -above the text of that page. -The header for a simple report -might consist of the title on the left side of -the page and the text ``Page $n$'' on the right side of the page. -Ordinarily a header consists of a single line, which you can set by -assigning a token list to ^|\headline| \ctsref\headline. -The default \plainTeX\ header is blank. -It's possible to produce multiline headers too; see \xrefpg{bighead} for -how to do it. -\endconcept - - -\concept height - -The \defterm{height} of a \refterm{box} is the distance that the box -extends above its \refterm{baseline}. -^^{boxes//height of} -\endconcept - - -\conceptindex{horizontal lists} -\concept{horizontal list} - -A \defterm{horizontal list} is a list of items -that \TeX\ has produced while it is -in one of its \refterm{horizontal modes:horizontal mode}, i.e., assembling -either a paragraph or an hbox. See ``horizontal mode'' below. -\endconcept - - -\concept {horizontal mode} - -^^{hboxes//horizontal mode for} -When \TeX\ is assembling a paragraph or an \refterm{hbox}, it is in one -of two \defterm{horizontal modes}: ^{ordinary horizontal -mode} for assembling paragraphs and ^{restricted horizontal mode} for -assembling hboxes. Whenever \TeX\ is in a horizontal mode its stomach -\seeconcept{\anatomy} is constructing a \refterm{horizontal -list} of items (boxes, glue, penalties, etc.). -\TeX\ typesets the items in the list -one after another, left to right. - -A horizontal list can't contain any -items produced by inherently vertical commands, e.g., |\vskip|. -^^{horizontal lists//can't contain vertical commands} - -\ulist -\li If \TeX\ is assembling a horizontal list in ordinary horizontal mode and -encounters an inherently vertical command, \TeX\ ends the paragraph and -enters \refterm{vertical mode}. - -\li If \TeX\ is assembling a horizontal list in restricted horizontal -mode and encounters an inherently vertical command, it complains. -\endulist Two commands that you might at first think are inherently -horizontal are in fact inherently vertical: |\halign| \ctsref{\halign} -and |\hrule| \ctsref{\hrule}. -^^|\hrule//inherently vertical| -^^|\halign//inherently vertical| -See \knuth{page~286} for a list -of the inherently vertical commands. - -{\tighten -You should be aware of a subtle but important property of restricted -horizontal mode: \emph{you can't enter restricted horizontal mode -when you're in ordinary horizontal mode}. What this means in practice is that -when \TeX\ is assembling an hbox it -won't handle paragraph-like text, i.e., text for which it does -\refterm{line breaking}. You can get -around this restriction by enclosing the paragraph-like text in a -\refterm{vbox} within the hbox. The same method works if you want to -put, say, a horizontal \refterm{alignment} inside an~hbox. -}% end scope of tighten - -\endconcept - - -\concept{hyphenation} - -\TeX\ automatically hyphenates words as it is processing your document. -\TeX\ is not eager to insert hyphens, preferring instead to find good -line breaks by adjusting the spacing between words and moving words -from one line to another. -\TeX\ is clever enough to understand -hyphens that are already in words. - -You can control \TeX's hyphenation in several ways: -\ulist -\li You can tell \TeX\ to -allow a hyphen in a particular place by inserting a -discretionary hyphen -^^{discretionary hyphens} -with the ^|\-| command \ctsref{\@minus}. -\li You can tell \TeX\ how to -hyphenate particular words throughout your document with the ^|\hyphenation| -command \ctsref{\hyphenation}. -\li You can enclose a word in an \refterm{hbox}, thus preventing \TeX\ -from hyphenating it. -\li You can set the value of penalties such as |\hyphenpenalty| -\ctsref\hyphenpenalty. -\endulist -\noindent If a word contains an explicit or discretionary hyphen, -\TeX\ will never break it elsewhere. -\endconcept - - -\conceptindex{input streams} -\concept {input stream} - -See \conceptcit{file}. -\endconcept - -\conceptindex{insertions} -\concept insertion - -\looseness = -1 -An \defterm{insertion} is a vertical list containing material -to be inserted into -a page when \TeX\ has finished building that page.\footnote -{\tighten -\TeX\ itself doesn't -insert the material---it just makes the material available to -the output routine, which is then responsible for transferring -it to the composed page. -^^{output routine//insertions, treatment of} -The only immediate effect of the ^|\insert| command -\ctsref{\insert} is to change \TeX's page break calculations so that it -will leave room on the page for the inserted material. Later, when -\TeX\ actually breaks the page, it divides the inserted material into -two groups: the material that fits on the current page and the material -that doesn't. -^^{page breaks//insertions at} -The material that fits on the page is placed into box registers, -one per insertion, -and the material that doesn't fit is carried over to the next page. -This procedure allows \TeX\ to do such -things as distributing parts of a long footnote over several consecutive -pages.} Examples of such insertions are footnotes and figures. The -\refterm{\plainTeX} commands for -creating insertions are ^|\footnote|, ^|\topinsert|, |\mid!-insert|, -^^|\midinsert| -and ^|\pageinsert|, as well as the primitive ^|\insert| command -itself (\pp\xrefn\footnote--\xrefn{endofinsert}). -\TeX's mechanism for handling insertions is rather complicated; -see \knuth{pages~122--125} for the details. -\endconcept - - -\concept {interline glue} - -\defterm{Interline glue} is the glue that \TeX\ inserts in front of every -\refterm{box} in a \refterm{vertical list} except for the first one. -The interline glue is ordinarily specified so as to maintain a constant -distance between the baselines of the boxes. -Its value is jointly determined by the ^|\baselineskip|, -^|\lineskip|, and ^|\lineskiplimit| parameters \ctsref{\baselineskip}. -\endconcept - - -\conceptindex{items} -\concept item - -The term \defterm{item} is often used to refer to a component of -a horizontal, vertical, or math list, i.e., a list of items that -\TeX\ is building while it is in a horizontal, vertical, or math mode. -\endconcept - - - -\conceptindex{justification} -\concept {justified text} - -\defterm{Justified text} is text that has been typeset so that both -margins are even. Unjustified text, on the other hand, has been typeset -with ``ragged'' margins on one or both sides. -Documents typed on old-fashioned typewriters almost always have -ragged right margins. -Although documents produced by \TeX\ are -justified by default, you can if you wish produce documents (or -sequences of lines) that have ^{ragged right}---or ^{ragged left}---margins. -You can also get \TeX\ to center a sequence of lines, thus making both -margins ragged. -^^{centered text} -You can use the -^|\leftskip|, ^|\rightskip|, and ^|\raggedright| commands -(\pp \xrefn{\leftskip},~\xrefn{\raggedright}) for these purposes. - -When \TeX\ is producing justified text, it usually -needs to stretch or shrink the glue within each line to make the margins -come out even. When \TeX\ is producing unjustified text, on the other -hand, it usually leaves the glue within each line at its natural width. -Many typographers prefer unjustified text because its interword -spacing is more uniform. -\endconcept - - -\conceptindex{kerns} -\concept kern - -^^{spacing//adjusting with kerns} -A \defterm{kern} indicates a change to the normal spacing between -the items of a vertical or horizontal list. -A kern can be either positive or negative. By -putting a positive kern between two items, you push them further apart -by the amount of the kern. By putting a negative kern between two -items, you bring them closer together by the amount of the kern. For -instance, this text: -\csdisplay -11\quad 1\kern1pt 1\quad 1\kern-.75pt 1 -| -produces letter pairs that look like this: -\display{11\quad 1\kern1pt 1\quad 1\kern-.75pt 1} -You can use kerns in vertical mode to adjust the space between -particular pairs of lines. - -A kern of size $d$ is very similar to a \refterm{glue} item that has -size $d$ and no stretch or shrink. Both the kern and the glue insert or -remove space between neighboring items. The essential difference is -that \TeX\ considers two boxes with only kerns between them to be tied -together. That is, \TeX\ won't break a line or a page at a kern unless -the kern is immediately followed by glue. Bear this difference in mind -when you're deciding whether to use a kern or a glue item for a -particular purpose. - -\TeX\ automatically inserts kerns between particular pairs of adjacent -letters, thus adjusting the space between those letters and enhancing -the appearance of your typeset document. -For instance, the Computer Modern $10$-point roman font contains a kern -for the pair `To' that brings the left edge of the `o' under the -`T'. Without the kern, you'd get \hbox{``T{o}p''} rather than ``Top''---% -the difference is slight but noticeable. -The metrics file -(^{\tfmfile}) -for each \refterm{font} specifies the placement and size of the -kerns that \TeX\ automatically inserts when it is setting text in that~font. -\margin{paragraph deleted to save space; most of the material was -already in this section.} - -\endconcept - - -\concept leaders - -You can use \defterm{leaders} to fill a space with copies of -a pattern, e.g., -to put repeated dots between a title and a page number in a table of contents. -A leader is a single copy of the pattern. -The specification of leaders contains three pieces of information: -\olist\compact -\li what a single leader is -\li how much space needs to be filled -\li how the copies of the pattern should be arranged within the space -\endolist - -\bix^^|\leaders| -\bix^^|\cleaders| -\bix^^|\xleaders| -{\tighten -\TeX\ has three commands for specifying leaders: -|\leaders|, \hbox{|\cleaders|}, and |\xleaders| (\xref\leaders). The -\refterm{argument} of each command specifies the leader. -The command must be followed by \refterm{glue}; the size of the glue -specifies how much space is to be filled. The choice of command determines -how the leaders are arranged within the space.} - -Here's an example showing how |\leaders| works: -\csdisplay -\def\dotting{\leaders\hbox to 1em{\hfil.\hfil}\hfil} -\line{The Political Process\dotting 18} -\line{Bail Bonds\dotting 26} -| -Here we've put the leaders and their associated glue into a \refterm{macro} -definition so that we can conveniently -use them in two places. This input produces: - -\vdisplay{\advance\hsize by -\parindent -\def\dotting{\leaders\hbox to 1em{\hfil{.}\hfil}\hfill}% -\line{The Political Process{\dotting}18} -\line{Bail Bonds{\dotting}26} -} - -The \refterm{hbox} following |\leaders| specifies -the leader, namely, an hbox 1\em\ wide containing a dot -at its center. -The space is filled with copies of this box, -effectively filling it -with dots whose centers are 1\em{} apart. -The following |\hfil| (the one at the -end of the macro definition) is glue that -specifies the space to be filled. -In this case it's whatever space is needed to fill out the line. -By choosing |\leaders| rather than |\cleaders| or |\xleaders| we've insured -that the dots on different lines line up with each other. - -In general, the space to be filled acts as a window -on the repeated copies of the leader. -\TeX\ inserts as many copies as possible, but some space is -usually left over---either because of where the leaders fall -within the window or because -the width of the window isn't an exact multiple of the width of the -leader. -The difference among the three commands is in how they arrange the leaders -within the window and how they distribute any leftover space: - -\ulist -\li For |\leaders|, \TeX\ first produces a row of copies of the leader. -It then aligns the start of this row with the left end of the innermost -box $B$ that is to contain the result of the |\leaders| command. -In the two-line example above, $B$ is a box produced by |\line|. -Those leaders that fit entirely in the window are placed into $B$, -and the leftover space at the left and right ends is left empty. -The picture is like this: -\vdisplay{% -\def\dotting{\leaders\hbox to 1em{\hfil{.}\hfil}\hfill}% -\def\pp{The Political Process} -\line{\dotting} -\line{\hphantom\pp\hfil$\Downarrow$\hfil\hphantom{18}} -\vskip 4pt -\setbox0 = \hbox{\pp} -\setbox1 = \hbox{18} -\dimen0 = \hsize \advance\dimen0 by -\wd0 \advance \dimen0 by -\wd1 -\advance\dimen0 by -0.8pt -\hbadness=10000 -\line{\pp - \vrule\vbox{\hrule width \dimen0\vskip 2pt - \hbox to \dimen0{\hfil window\strut\hfil} - \vskip 2pt\hrule width \dimen0}% - \vrule 18} -\line{\hphantom\pp\hfil$\Downarrow$\hfil\hphantom{18}} -\vskip 2pt -\line{\pp{\dotting}18} -} -\vskip\medskipamount -{\tighten -\noindent -This procedure ensures that in the two-line example on the previous page, -the dots in the two lines -are vertically aligned (since the \refterm{reference points:reference point} -of the hboxes produced by |\line| are vertically aligned). -\par} - -\li For |\cleaders|, \TeX\ centers the leaders within the window -by dividing the leftover space between the two ends of the window. -The leftover space is always less than the width of a single leader. - -\li For |\xleaders|, \TeX\ distributes the -leftover space evenly within the window. -In other words, if the leftover space is $w$ and the -leader is repeated $n$ times, -\TeX\ puts space of width $w/(n+1)$ between adjacent leaders and -at the two ends of the leaders. -The effect is usually to spread out the leaders a little bit. -The leftover space for |\xleaders|, like that for |\cleaders|, -is always less than the width of a single leader. -\endulist - -So far we've assumed that the leaders consist of hboxes arranged -horizontally. Two variations are possible: -\olist -\li You can use a -rule instead of an hbox for the leader. -\TeX\ makes the rule as wide as necessary to extend -across the glue (and the three commands are equivalent). -\li You -can produce vertical leaders that run down the page by including them in -a \refterm{vertical list} rather than a \refterm{horizontal list}. In -this case you need vertical glue following the leaders. -\endolist -\noindent -See \knuth{pages~223--225} for the precise rules that \TeX\ uses -in typesetting leaders. -\eix^^|\leaders| -\eix^^|\cleaders| -\eix^^|\xleaders| -\endconcept - - -\conceptindex{ligatures} -\concept ligature - -A \defterm{ligature} is a single character that replaces a -particular sequence of adjacent characters in a typeset document. -For example, the word `|office|' is typeset as \hbox{``office''}, -not \hbox{``of{f}ice''}, by high-quality typesetting systems. -Knowledge of ligatures is built into the -\refterm{fonts:font} that you use, so there's nothing explicit you need do -in order to get \TeX\ to produce them. (You could defeat the ligature -in ``office'', as we did just above, by writing `|of{f}ice|' in your input.) -\TeX\ is also capable of using its ligature mechanism to typeset the -first or last letter of a word differently than the same letter as it would -appear in the middle of a word. -You can defeat this effect (if you ever encounter it) by using the -^|\noboundary| command (\xref\noboundary). - -Sometimes you may need a ligature from a European language. -^^{European languages} -\TeX\ won't -produce these automatically unless you're using a font designed for that -language. A number of these ligatures, e.g., `\AE', are available as -commands (see ``Letters and ligatures for European alphabets'', -\xref{fornlets}). -\endconcept - - -\conceptindex{line breaks} -\concept{line break} - -A \defterm{line break} is a place in your document where \TeX\ ends -a line as it typesets a paragraph. -When \TeX\ processes your document, it collects the contents of each -paragraph in a \refterm{horizontal list}. -When it has collected an entire paragraph, -it analyzes the list to find what it considers to be the best possible -line breaks. \TeX\ associates ``^{demerits}'' with various symptoms of -unattractive line breaks---lines that have too much or too little -space between words, consecutive lines that end in hyphens, and so forth. It -then chooses the line breaks so as to minimize the total number of demerits. -See \knuth{pages~96--101} for a full description of \TeX's line-breaking rules. - -You can control \TeX's choice of line breaks in several ways: -\ulist - -\li You can insert a \refterm{penalty} (\xref{hpenalty}) somewhere in -the horizontal list that \TeX\ builds as it forms a paragraph. -^^{penalties//in horizontal lists} -A -positive penalty discourages \TeX\ from breaking the line there, while a -negative penalty---a bonus, in other words---encourages \TeX\ to break -the line there. A penalty of $10000$ or more prevents a line break, -while a penalty of $-10000$ or less forces a line break. You can get -the same effects with the ^|\break| and -^|\nobreak| commands (\pp\xrefn{hbreak},~\xrefn{hnobreak}). - -\li You can tell \TeX\ to allow a hyphen in a particular place by -inserting a discretionary hyphen -^^{discretionary hyphens} -with the |\-| command \ctsref{\@minus}, or -otherwise control how \TeX\ hyphenates your document \seeconcept -{hyphenation}. -^^|\-//in line breaking| - -\li You can tell \TeX\ to allow a line break after a ^{solidus} (/) between -two words by inserting ^|\slash| \ctsref{\slash} -between them, e.g., `|fur!-longs\slash fortnight|'. - -\li You can tell \TeX\ not to break a line between two particular words by -inserting a ^{tie} (|~|) between those words. -^^|~//in line breaking| - -\li You can adjust the penalties associated with line breaking by -assigning different values to \TeX's line-breaking -\refterm{parameters:parameter}. - -\li You can enclose a word or sequence of words in an \refterm{hbox}, -thus preventing \TeX\ from breaking the line anywhere within the hbox. -^^{hboxes//controlling line breaks} -\endulist - -It's useful to know the places where \TeX\ can break a line: -\ulist -\li at glue, provided that: -\olist -\li the item preceding the glue is one of the following: -a box, a discretionary item (e.g., a discretionary hyphen), -the end of a math formula, -a whatsit, -or vertical material produced by |\mark| or |\vadjust| -or |\insert| -\li the glue is not part of a math formula -\endolist -\noindent -When \TeX\ breaks a line at glue, it makes the break at the left edge -of the glue space and forgets about the rest of the glue. -\li at a kern that's immediately followed by glue, -provided that this kern isn't within a math formula -\li at the end of a math formula that's immediately followed by glue -\li at a penalty, even one within a math formula -\li at a discretionary break -\endulist -When \TeX\ breaks a line, it discards any -sequence of glue, kerns, and penalty items that follows the break point. -If such a sequence is followed by the beginning of a math formula, it -also discards any kern produced by the beginning of the formula. -\endconcept - - -\conceptindex{lists} -\concept list - -A \defterm{list} is a sequence of \refterm{items:item} -(\refterm{boxes:box}, \refterm{glue}, \refterm{kerns:kern}, etc.) -that comprise the contents of an hbox, a vbox, -or a math formula. -See \conceptcit{horizontal list}, \conceptcit{vertical list}. - -\endconcept - - -\concept {log file} - -See \conceptcit{file}. -\endconcept - - -\conceptindex{macros} -\concept macro - -{% Use a brace here so that definitions of explanatory macros remain local. -% The closing brace is at the end of the concept. -A \defterm{macro} is a definition that gives a name to a pattern of -\TeX\ input text.\footnote{More precisely, the definition gives a name -to a sequence of tokens.} The name can be either a \refterm{control -sequence} or an \refterm{active character}. The pattern is called the -``replacement text''. The primary command for defining macros is the -|\def| control sequence. - -\def\arctheta{\cos \theta + i \sin \theta} -As a simple example, suppose that you have a document in which -the sequence `$\cos \theta + i \sin \theta$' occurs many times. -Instead of writing it out each time, you can define a macro for it: -\csdisplay -\def\arctheta{\cos \theta + i \sin \theta} -| -Now whenever you need this sequence, you can just ``call'' the macro -by writing `|\arctheta|' -and you'll get it. For example, `|$e^{\arctheta}$|' will give you -`$e^{\arctheta}$'. - -\bix^^{macros//parameters of} -But the real power of macros lies in the fact that a macro can have -parameters. When you call a macro that has parameters, you provide -arguments that are substituted for those parameters. For example, suppose -you write: -\pix\indexchar # -\def\arc#1{\cos #1 + i \sin #1} -\csdisplay -\def\arc#1{\cos #1 + i \sin #1} -| - -The notation |#1| \xrdef{@msharp} indicates the first parameter -of the macro, which in this case has only one parameter. You now can -produce a similar form, such as `$\arc{2t}$', with the macro call `|\arc -{2t}|'. - -More generally, a macro can have up to nine parameters, which you -indicate as `|#1|', `|#2|', etc\null. in the macro definition. \TeX\ -provides two kinds of parameters: delimited parameters and undelimited -parameters. Briefly, a delimited parameter has an \refterm{argument} -that's delimited, or ended, by a -specified sequence of tokens (the delimiter), while an undelimited -parameter has an argument that doesn't need a delimiter to end it. -First we'll explain how macros work when they have only undelimited -parameters, and then we'll explain how they work when -they have delimited parameters. - -^^{parameters//undelimited} -If a macro has only undelimited parameters, those parameters must appear -one after another in the macro definition \emph{with nothing between -them or between the last parameter and the left brace in front of the -replacement text}. -A call on such a macro consists of the macro name followed by -the arguments of the call, one for each parameter. Each argument is -either: - -\ulist \compact -\li a single \refterm{token} other than a left or right brace, or - -\li a sequence of tokens enclosed between a left brace and -a matching right brace.\footnote{The -argument can have nested pairs of braces within it, and each of these -pairs can indicate either a \refterm{group} or a further macro -argument.} -\endulist - -When \TeX\ encounters a macro, it expands the macro in its gullet -\seeconcept{\anatomy} -by substituting each argument for the corresponding -parameter in the replacement text. The resulting text may contain other macro -calls. When \TeX\ encounters such an embedded macro call, it expands -that call immediately without looking at what follows the -call.\footnote{In computer science terminology, the expansion is ``depth -first'' rather than ``breadth first''. Note that you can modify the -order of expansion with commands such as |\expandafter|.} When \TeX's -gullet gets to a \refterm{primitive} \refterm{command} that -cannot be further expanded, \TeX\ passes that command to \TeX's stomach. -The order of expansion is sometimes critical, so in order to help -you understand it we'll give you an example of \TeX\ at work. - -Suppose you provide \TeX\ with the following input: -\csdisplay -\def\a#1#2{\b#2#1\kern 2pt #1} -\def\b{bb} -\def\c{\char49 cc} -\def\d{dd} -\a\c{e\d} % Call on \a. -| -Then the argument corresponding to |#1| is |\c|, -and the argument corresponding to |#2| is |e\d|. -\TeX\ expands the macro call in the following steps: - -{\vskip\abovedisplayskip\obeylines % ugly -|\b e\d\c\kern 2pt \c| -|bbe\d\c\kern 2pt \c| -|\d\c\kern 2pt \c|\quad(`|b|', `|b|', `|e|' sent to stomach) -|dd\c\kern 2pt \c| -|\c\kern 2pt \c|\quad(`|d|', `|d|' sent to stomach) -|\char49 cc\kern 2pt \c| -|\c|\quad(`|\char|', `|4|', `|9|', `|c|', `|c|', % -`|\kern|', `|2|', `|p|', `|t|' sent to stomach) -|\char49 cc| -(`|\char49|', `|c|', `|c|' sent to stomach) -\vskip\belowdisplayskip} - -\noindent Note that the letters `|b|', `|c|', `|d|', and `|e|' and the -control sequences `|\kern|' and `|\char|' are all primitive -commands that cannot be expanded further. - -\bix^^{parameters//delimited} -A macro can also have ``delimited parameters'', which can be mixed with -the undelimited ones in any combination. The idea of a delimited -parameter is that \TeX\ finds the corresponding argument by looking for -a certain sequence of tokens that marks the end of the argument---the -delimiter. That is, when \TeX\ is looking for such an argument, it -takes the argument to be all the tokens from \TeX's current position up -to but not including the delimiter. - -You indicate a delimited parameter by writing `|#|$n$' ($n$ -must be between $0$ -and $9$) followed by one or more tokens that act as the delimiter. The -delimiter extends up to the next `|#|' or `|{|'---which makes sense -since `|#|' starts another parameter and `|{|' starts the replacement text. - -The delimiter can't be `|#|' or `|{|', so you can tell a delimited -parameter from an undelimited one by looking at what comes after it. - -If the character after the parameter is `|#|' or `|{|', you've got an -undelimited parameter; otherwise you've got a delimited one. Note -the difference in arguments for the two kinds of parameters---an -undelimited parameter is matched either by a single token or by -a sequence of tokens enclosed in braces, while a -delimited parameter is matched by any number of tokens, even zero. - -An example of a macro that uses two delimited parameters is: -\def\diet#1 #2.{On #1 we eat #2!} -\csdisplay -\def\diet#1 #2.{On #1 we eat #2!!} -| -Here the first parameter is delimited by a single space -and the second parameter is delimited by a period. If you write: -\csdisplay -\diet Tuesday turnips. -| -you'll get the text ``\diet Tuesday turnips.''. -But if the delimiting tokens are enclosed in a group, \TeX\ doesn't consider -them as delimiting. So if you write: -\csdisplay -\diet {Sunday mornings} pancakes. -| -you'll get the text `\diet {Sunday mornings} pancakes.' -even though there's a space between `|Sunday|' and `|morning|'. -When you use a space as a delimiter, -an end-of-line character ordinarily also delimits the argument -since \TeX\ converts the end-of-line to a space before the macro -mechanism ever sees it. -\eix^^{parameters//delimited} -\eix^^{macros//parameters of} - -Once in a while you might need to define a macro that has `|#|' as a -meaningful character within it. -You're most likely to need to do this when you're defining a macro -that in turn defines a second macro. -What then do you do about -the parameters of the second macro to avoid getting \TeX\ confused? -The answer is that you write -two `|#|'s for every one that you want -when the first macro is expanded. For example, suppose you -write the macro definition: -\def\first#1{\def\second##1{#1/##1}} -\csdisplay -\def\first#1{\def\second##1{#1/##1}} -| -Then the call `|\first{One}|' defines `|\second|' as: -\csdisplay -\def\second#1{One/#1} -| -and the subsequent call `|\second{Two}|' produces the text -\def\second#1{One/#1}% -`\second {Two}'. - -A number of commands provide additional ways of defining macros -(see pp.~\xrefn{mac1}--\xrefn{mac2}). -For the complete rules pertaining to macros, see \knuth{Chapter~20}. -}% close brace at the start of the `macro' concept. -\endconcept - - -\concept magnification - -When \TeX\ typesets your document, it multiplies all dimensions -by a -\refterm{magnification} factor $f/1000$, -where $f$ is the value of the ^|\mag| parameter \ctsref\mag. -Since the default value of |\mag| is $1000$, the normal case is that -your document is typeset just as specified. -Increasing the magnification is often useful when you're typesetting a document -that will later be photoreduced. - -You can also apply magnification to a single \refterm{font} so as to get -a smaller or larger version of that font than its ``^{design size}''. You -need to provide the device driver with a ^{shape file} -\seeconcept{font} for -each magnification of a font that you're using---% -unless the fonts are built into your printer and your device driver -knows about them. -When you're defining a font with -the |\font| command \ctsref{\font}, you can specify a magnification with -the word `|scaled|'. For example: - -\csdisplay -\font\largerbold = cmbx10 scaled 2000 -| -defines `|\largerbold|' as a font that is -twice as big as |cmbx10| (Computer Modern -Bold Extended $10$-point) and has the character shapes -uniformly enlarged by a factor of~$2$. - -Many computer centers find it convenient to provide fonts scaled by a ratio -of $1.2$, corresponding to magnification values of $1200$, $1440$, etc. -\TeX\ has special names for these values: -^^|\magstep| -`|\magstep1|' for $1200$, -`|\magstep2|' for $1440$, and so forth up to `|\magstep5|'. The special -value `^|\magstephalf|' corresponds to magnification by $\sqrt{1.2}$, which -is visually halfway between `|\magstep0|' (no magnification) and -`|\magstep1|'. For example: - -\csdisplay -\font\bigbold = cmbx10 scaled \magstephalf -| - -You can specify a \refterm{dimension} as it will be -measured in the final document independent of magnification by putting -`^|true|' in front of the unit. For instance, `|\kern 8 true pt|' -produces a kern of $8$ points whatever the magnification. - -\endconcept - -\concept margins - -The \refterm{margins} -of a page define a rectangle that normally -contains the printed matter on the page. -You can get \TeX\ to print material outside of this rectangle, -but only by taking some explicit action that moves the material there. -\TeX\ considers headers and footers to lie outside the margins. - -The rectangle is defined in terms of its upper-left corner, its width, and -its depth. The location of the upper-left corner is defined by -the ^|\hoffset| -and ^|\voffset| parameters -\ctsref\voffset. The default is to place that corner one inch from the top -and one inch from the left side of the page, corresponding to a value of -zero for both |\hoffset| and |\voffset|.% -\footnote{This seems to us to be an odd convention. -It would have been more natural to have the $(0,0)$ -point for |\hoffset| and |\voffset| be at the upper-left corner of the -paper and to have set their default values to one inch.} -The width of the rectangle is given by ^|\hsize| and the depth by ^|\vsize|. - -The implications of these conventions are: -\ulist\compact -\li The left margin is given by |\hoffset|\tplus|1in|. -\li The right margin is given by the width of the paper minus - |\hoffset|\tplus|1in|\tplus|\hsize|. -\li The top margin is given by |\voffset|\tplus|1in|. -\li The bottom margin is given by the length of the paper minus - |\voff!-set|\tplus|1in|\tplus|\vsize|. -\endulist -From this information you can see what parameters you need to -change in order to change the margins. - -Any changes that you make to |\hoffset|, |\voffset|, or |\vsize| become -effective the next time \TeX\ starts a page. In other words, if you change -them within a page, the change will affect only the \emph{following} pages. -If you change |\hsize|, the change will become effective immediately. -\endconcept - - -\conceptindex{marks} -\concept mark - -A \defterm{mark} is an item that you can insert into a -horizontal, vertical, or math list and later recover from within your -output routine. Marks are useful for purposes such as -keeping track of topics to appear in page headers. -Each mark has a list of tokens---the ``^{mark text}''---associated with it. -The ^|\mark| command \ctsref{\mark} expects such a token list as its argument, -and appends an item containing that token list (after -expansion) to whatever list \TeX\ is -currently building. The ^|\topmark|, ^|\firstmark|, and ^|\botmark| commands -\ctsref{\topmark} can be used to retrieve various marks on a page. -These commands are most often used in page headers and footers. -^^{footers//marks used in} -^^{headers//marks used in} - -\margin{This example of {\tt\\mark} replaces the previous explanatory -paragraph.} -Here is a simplified example. -Suppose you define a section heading macro as follows: -\csdisplay -\def\section#1{\medskip{\bf#1}\smallskip\mark{#1}} -% #1 is the name of the section -| -^^|\mark| -This macro, when called, will produce a section heading in boldface and -will also record the name of the section as a mark. -You can now define the header for each printed page -as follows: -\csdisplay -\headline = {\ifodd\pageno \hfil\botmark\quad\folio - \else \folio\quad\firstmark\hfil \fi} -| -Each even (left-hand) page will now have the page number followed by the -name of the first section on that page, while each odd (right-hand) page -will have the page number followed by the name of the last section on -that page. Special cases, e.g., no sections starting on a page, will -generally come out correctly because of how ^|\firstmark| -and ^|\botmark| work. - -When you split a page using the |\vsplit| command \ctsref{\vsplit} you can -retrieve the mark texts of the first and last marks of the split-off -portion with the ^|\splitfirstmark| and ^|\splitbotmark| commands -\ctsref{\splitfirstmark}. - -See \knuth{pages~258--260} for a more precise explanation of how -to create and retrieve marks. -\endconcept - - -\concept math mode - -{\tighten -A \defterm{math mode} is a \refterm{mode} that \TeX\ is in when it is -building a math formula. \TeX\ has two different math modes: ^{text -math mode} for building a formula to be embedded within a line of text, -and ^{display math mode} for building a formula to appear on a line by -itself. You indicate text math mode by enclosing the formula in -|$|'s, and display math mode by enclosing the formula in -|$$|'s. -%\TeX\ will accept most \refterm{commands:command} in -%math mode. If it encounters a command in math mode that doesn't make -%sense in a formula, it will complain. -An important property of both -math modes is that \emph{input spaces don't count}. See -\knuth{pages~290--293} for details on how \TeX\ responds to different -commands in math mode. -\par} - -\endconcept - - -\conceptindex{mathcodes} -\concept mathcode - -A \defterm{mathcode} is a number that \TeX\ uses to identify and -describe a math character, -^^{math characters//described by mathcodes} -i.e., a character that has a -particular role in a math formula. A mathcode conveys three pieces of -information about a character: its \refterm{font} position, its -\refterm{family}, and its \refterm{class}. -Each of the $256$ possible -input characters has a mathcode, which is defined by the \TeX\ program -but can be changed. - -^^{family//as part of mathcode} -\TeX\ has sixteen families of fonts, numbered $0$--$15$. Each -family contains three fonts: one for \refterm{text size}, one for -\refterm{script size}, and one for \refterm{scriptscript size}. \TeX\ -chooses the size of a particular character, and therefore its font, -according to the context. The class of a character specifies its role -in a formula (see \knuth{page~154}). For example, the equals sign `|=|' -is in class $3$ (Relation). \TeX\ uses its knowledge of character -classes when it is deciding how much space to put between different -components of a math formula. - -The best way to understand what mathcodes are all about is to see how -\TeX\ uses them. So we'll show you what \TeX\ does with a -character token $t$ of \refterm{category code}~11 or~12 in a math -formula: - -\olist\compact -\li It looks up the character's mathcode. -\li It determines a family $f$ from the mathcode. -\li It determines the size $s$ from the context. -\li It selects a font $F$ by picking the font for size $s$ in family $f$. -\li It determines a character number $n$ from the mathcode. -\li It selects as the character $c$ to be typeset the character -at position $n$ of font $F$. -\li It adjusts the spacing around $c$ according to the class of $t$ and -the surrounding context. -\li It typesets the character $c$. -\endolist - -The context dependence in -items (3) and (7) implies that \TeX\ cannot typeset a math character -until it has seen the entire formula containing the -math character. For example, in the formula -`|$a\over b$|', \TeX\ doesn't know what size the `|a|' should be until it -has seen the |\over|. - -{\tighten -The mathcode of a character is encoded according to the formula $4096c -+ 256f + n$, where $c$ is the class of the character, $f$ is its -\refterm{family}, and $n$ is its \refterm{\ascii\ character} code within -the family. You can change \TeX's interpretation of an input character -in math mode by assigning a value to the ^|\mathcode| -table entry \ctsref{\mathcode} -for that character. The character must have a -\refterm{category code} of $11$ (letter) or $12$ (other) for \TeX\ to -look at its |\mathcode|. -}\par - -^^{family//variable} -You can define a mathematical character to have a ``variable'' family by -giving it a class of $7$. Whenever \TeX\ encounters that character in a -math formula, it takes the family of the character to be the current -value of the |\fam| parameter \ctsref{\fam}. A variable family enables -you to specify the font of ordinary text in a math formula. For -instance, if the roman characters are in family $0$, the assignment -|\fam = 0| -will cause ordinary text in a math formula to be set in roman type -rather than in something else like math italic type. If the value of -|\fam| is not in the range from $0$ to $15$, \TeX\ takes the value to be -$0$, thus making classes $0$ and $7$ equivalent. -\TeX\ sets |\fam| to $-1$ whenever it enters math mode. -\endconcept - - -\conceptindex{mathematical units} -\concept{mathematical unit} - -A \defterm{mathematical unit}, denoted by `|mu|', is a unit of distance -that is used to specify \refterm{glue} in math formulas. See -\conceptcit{muglue}. -\endconcept - - -\conceptindex{modes} -\concept mode - -When \TeX\ is processing your input in its stomach \seeconcept{\anatomy}, -it is in one of six \defterm{modes}: -\ulist\compact -\li ^{ordinary horizontal mode} (assembling a paragraph) -\li ^{restricted horizontal mode} (assembling an \refterm{hbox}) -\li ^{ordinary vertical mode} (assembling a page) -\li ^{internal vertical mode} (assembling a \refterm{vbox}) -\li ^{text math mode} (assembling a formula that appears in text) -\li ^{display math mode} -(assembling a formula that appears on a line by~itself) -^^{horizontal mode}^^{vertical mode}^^{math mode} -\endulist -The mode describes the kind of entity that \TeX\ is putting together. - -Because you can embed one kind of entity within another, e.g., a vbox -within a math formula, \TeX\ keeps track not just of one mode but of a -whole list of modes (what computer scientists call a ``stack''). -Suppose that \TeX\ is in mode $M$ and encounters something that -puts it into a new mode \Mprimeperiod. When it finishes its work in -mode \Mprimecomma, it resumes what it was doing in mode \Mperiod. - -\endconcept - - -\concept muglue - -\defterm{Muglue} is a kind of \refterm{glue} that you can use only in math -formulas. It is measured in ^|mu| (\refterm{mathematical -units:mathematical unit}). -^^{mathematical units}^^{glue//mathematical} -One |mu| is equal to \frac1/{18} em, where -the size of an em is taken from \refterm{family} 2 of the math fonts. -\TeX\ automatically adjusts the size of muglue according to the context. -For instance, a glue size of |2mu| is normally smaller within a -subscript than it is within ordinary text. -You must use the ^|\mskip| command to produce muglue. -For example, `|\mskip 4mu plus 5mu|' produces mathematical glue with -natural space of four |mu| and \refterm{stretch} of five |mu|. - -\endconcept - - -\conceptindex{numbers} -\concept number - -In \TeX, a \defterm{number} is a positive or negative integer. -You can write a number in \TeX\ in four different ways: -\olist\compact -\li as an ordinary decimal integer, e.g., |52| -\li as an octal number, e.g., |'14| ^^{octal numbers} -\li as a hexadecimal number, e.g., |"FF0| ^^{hexadecimal numbers} -\li as the code for an \refterm{\ascii\ character}, e.g., |`)| -or |`\)| -\endolist -\noindent -Any of these forms can be preceded by `|+|' or `|-|'. - -An octal number can have only the digits |0|--|7|. -^^{octal numbers} -A hexadecimal number can have digits |0|--|9| and -|A|--|F|, representing -values from $0$ to $15$. -^^{hexadecimal numbers} -You can't, alas, use lowercase letters when you write a hexadecimal number. -If you need an explanation of octal and hexadecimal numbers, -you'll find one on \knuth{pages~43--44}. - -A decimal, octal, or hexadecimal number -ends at the first character that can't be part of the number. -Thus a decimal number ends when \TeX\ sees, say, a letter, even though a -letter between `|A|' and `|F|' would not end a hexadecimal number. -You can end a number with one or more spaces and -\TeX\ will ordinarily ignore them.\footnote{ -When you're defining a macro that ends in a number, you should always -put a space after that number; otherwise \TeX\ may later combine that -number with something else.} - -The fourth form above specifies a number as the -\minref{\ascii} code for a character. -^^{characters//\ascii\ codes for} -\TeX\ ignores spaces after this form of number also. -You can write a number in this form either as |`|$c$ or as |`\|$c$. -The second form, though longer, has the advantage that you can use it -with \emph{any} character, even `|\|', `|%|', or `|^^M|'. -It does have one rather technical disadvantage: when \TeX\ is expanding -a token sequence for a command such as |\edef| or |\write|, -^^|\edef//expansion of {\tt\\'\it c} in| -^^|\write//expansion of {\tt\\'\it c} in| -occurrences of `|\|$c$' within numbers will also be expanded if they can be. -That's rarely the effect you want. - -The following are all valid representations of the decimal number -$78$: -\csdisplay -78 +078 "4E '116 `N `\N -| - - -You can't use a number in text by itself since a number isn't -a command. -However, you can insert the decimal form of a number in text -by putting a ^|\number| command (\xref\number) in front of it -or the roman numeral form by putting a ^|\romannumeral| command -in front of it. - -You can also use ^{decimal constant}s, i.e., numbers with a fractional part, -for specifying dimensions \seeconcept{dimension}. -A decimal constant has a ^{decimal point}, which -can be the first character of the constant. -You can use a comma instead of a period to represent the decimal point. -A decimal constant can be preceded by a plus or minus sign. -Thus `|.5in|', -`|-3.22pt|', and `|+1,5\baselineskip|' are valid dimensions. -You can't, however, use decimal constants -in any context \emph{other} than as the ``factor'' part of a dimension, -i.e., its multiplier. - - -\endconcept - - -\concept{ordinary mode} - -An \defterm{ordinary mode} is a \refterm{mode} that \TeX\ is in when it is -assembling a paragraph into lines or assembling lines -into a page. See \conceptcit{horizontal mode}, \conceptcit{vertical mode}. -\endconcept - - -\concept outer - -\bix^^{macros//outer} -An \defterm{outer} macro is one that you can't use in certain contexts -where \TeX\ is processing tokens at high speed. -The purpose of making a command outer is to enable \TeX\ to catch -errors before it's gone too far. -When you define a macro, you can make it outer with the -^|\outer| command \ctsref\outer. - -You cannot use an outer macro in any of the following contexts: -\ulist\compact -\li within an argument to a macro -\li in the parameter text or replacement text of a definition -\li in the preamble to an alignment -\li in the unexecuted part of a conditional test -\endulist -\noindent -An outer context is a context in which you can use an outer macro, -i.e., it's any context other than the ones just listed. - -For example, the following input would be a forbidden use of an -outer macro: -\csdisplay -\leftline{\proclaim Assertion 2. That which is not inner - is outer.} -| -The |\proclaim| macro (\xref{\@proclaim}) is defined in \plainTeX\ -to be outer, but it's being used here in a macro argument to |\leftline|. -\eix^^{macros//outer} - -\endconcept - - -\concept {output routine} - -When \TeX\ has accumulated -at least enough material to fill up a page, it chooses a breakpoint -and places the material before the breakpoint in |\box255|. It then -calls the -current \defterm{output routine}, which processes the material and eventually -sends it to the \dvifile. -^^{\dvifile//material from output routine} -The output routine can perform further -processing, such as inserting headers, footers, and footnotes. -\refterm{\PlainTeX:\plainTeX} provides -a default output routine that inserts a centered page number -at the bottom of each page. -By providing a different output routine you can achieve such -effects as double-column output. -You can think of the output routine as having a single responsibility: -disposing of the material in |\box255| one way or another. - -The current output routine is defined by the value of ^|\output| -\ctsref{\output}, which is a list of \refterm{tokens:token}. When \TeX\ -is ready to produce a page, it just expands the token list. - -You can make some simple changes to the actions of the \plainTeX\ -output routine without actually modifying it. For example, by assigning -a list of \refterm{tokens:token} to |\headline| or -|\footline| \ctsref{\footline} you can have \TeX\ produce a different -header or footer than it ordinarily would. - -The output routine is also -responsible for collecting any \refterm{insertions:insertion}; -combining those insertions and any -``decorations'' such as headers and -footers with the main contents of the page and packaging all -of this material in a box; and -eventually sending that box to the \dvifile\ -^^{\dvifile//material from output routine} -with the ^|\shipout| -command \ctsref{\shipout}. -Although this is what an output routine most often does, -a special-purpose output routine might behave differently. -\endconcept - - -\conceptindex{output streams} -\concept {output stream} - -\margin{This concept was out of order.} -See \conceptcit{file}. -\endconcept - - -\conceptindex{pages} -\concept page - -\TeX\ processes a document by assembling \defterm{pages} one at a time -and passing them to the output routine. -As it proceeds through your document, \TeX\ maintains a list of lines -and other -items to be placed on the page. (The lines are actually hboxes.) -This list is called the ``^{main vertical list}''. -Periodically \TeX\ goes through a process called ``exercising the -^{page builder}''. -The items added to the main vertical list between exercises of the -page builder are called ``^{recent contributions}''. - -The page builder first examines the main vertical list to see if it's -necessary to ship out a page yet, either because the items on the main -vertical list won't all fit on the page or because of an explicit item, -such as |\eject| \ctsref\eject, that tells \TeX\ to end the page. -If it's not necessary to ship out a page, then the page builder is done -for the time being. - -Otherwise the page builder analyzes the main vertical -list to find what it considers to be the best possible page break. -It associates penalties with various kinds of unattractive page -breaks---a break that would leave an -isolated line at the top or bottom of a page, a break just before a -math display, and so forth. It then -chooses the least costly page break, -where the cost of a break is increased by any penalty associated with that -break and by the badness of the page that would result -(see \knuth{page~111} for the cost formula). If it finds several -equally costly page breaks, it chooses the last one. - -{\tighten -Once the page builder has chosen a page break, -it places the items on the list that are before that break -into ^|\box255| and leaves the remaining ones for the next page. -It then calls the output routine. |\box255| acts as a mailbox, with the -page builder as the sender and the output routine as the receiver. -Ordinarily the output routine processes |\box255|, adds -other items, such as insertions, headers, and footers, to the page, and -ships out the page to the \dvifile\ -^^{\dvifile//material from output routine} -with a |\shipout| command. -(Specialized output routines may behave differently.) -From \TeX's standpoint, it doesn't matter whether or not the output -routine ships out a page; -the only -responsibility of the output routine is to process |\box255| one way or -another. -\par} - -{\tighten -It's important to realize that the best place to break a page isn't -necessarily the last possible place to break the page. -Penalties and other considerations may cause the page break -to come earlier. -Furthermore, \TeX\ appends items to the main vertical list in batches, -not just singly. -The lines of a paragraph are an example of such a batch. -For these reasons the page builder usually has items left over when it -breaks a page. -These leftover items then form the beginning of the main vertical list -for the next page (possibly in the middle of a batch). -Because items are carried over from one page to another, -you can't assume that as \TeX\ is processing -input, the current page number accurately reflects the page on which the -corresponding output will appear. See \knuth{pages~110--114} for a full -description of \TeX's page-breaking rules. -\par} - -\endconcept - - -\conceptindex{page breaks} -\concept{page break} - -A \defterm{page break} is a place in your document where \TeX\ ends a -page and (except at the end of the document) starts a new one. -See \conceptcit{page} for the process that \TeX\ goes through in choosing -a page break. - -You can control \TeX's choice of page breaks in several ways: -\ulist -\li You can insert a penalty (\xref{vpenalty}) -^^{penalties//in vertical lists} -between two items in the main vertical list. A positive -penalty discourages \TeX\ from breaking the page -there, while a negative penalty---a bonus, in other words---% -encourages \TeX\ to break the page there. A penalty of $10000$ -or more prevents a -page break, while a penalty of $-10000$ or less forces a page break. -You can get the same effects with the |\break| and -|\nobreak| commands \ctsref{vbreak}. - -\li You can adjust the penalties associated with page breaking -by assigning different values to \TeX's page-breaking -\refterm{parameters:parameter}. - -\li You can enclose a sequence of paragraphs -or other items in the main vertical list within a \refterm{vbox}, -thus preventing \TeX\ from breaking the page anywhere within the sequence. -\endulist - -Once \TeX\ has chosen a page break, it places the portion of the main vertical -list that precedes the break into |\box255|. -It then calls the current \refterm{output routine} -to process |\box255| and eventually ships its contents to the \dvifile. -^^{\dvifile//material from output routine} -The output routine must -also handle \refterm{insertions}, such as footnotes, that \TeX\ has accumulated -while processing the page. - -It's useful to know the places where \TeX\ can break a page: -\ulist -\li At glue, provided that the item preceding the glue is -a box, a whatsit, a mark, or an insertion. -When \TeX\ breaks a page at glue, it makes the break at the top -of the glue space and forgets about the rest of the glue. -\li At a kern that's immediately followed by glue. -\li At a penalty, possibly between the lines of a paragraph. -\endulist -When \TeX\ breaks a page, it discards any -sequence of glue, kerns, and penalty items that follows the break point. - - -\endconcept - - -\concept page builder - -See \conceptcit{page}. -\endconcept - - -\concept {page layout} - -\bix^^{margins} -\bix^^{headers} -\bix^^{footers} -When you're designing a document, you need to decide on its -\defterm{page layout}: the page size, -the margins on all four sides, the headers and footers, if any, -that appear at the top and bottom of the page, -and the amount of space between the body of the text and the headers or -footers. \TeX\ has defaults for all of these. It assumes an $8 \frac1/2$-% -by-$11$-inch page with margins of approximately one inch -on all four sides, no header, -and a footer consisting of a centered page number. - -The margins are determined jointly by the four parameters -^|\hoffset|, ^|\voffset|, ^|\hsize|, and ^|\vsize| (see -``margins'', \xrefpg{margins}, -for advice on how to adjust them). -\eix^^{margins} -The header normally consists of a single line that appears at the top of each -page, within the top margin area. You can set it by assigning -a \refterm{token} list to the ^|\headline| parameter (\xref{\headline}). -Similarly, -the footer normally consists of a single line that appears at the bottom -of each -page, within the bottom margin area. You can set it by assigning -a \refterm{token} list to the ^|\footline| parameter (\xref{\footline}). -For example, the input: -\csdisplay -\headline = {Baby's First Document\dotfill Page\folio} -\footline = {\hfil} -| -produces a header line like this on each page: -\vdisplay{ -\dimen0 = \hsize -\advance \dimen0 by -\parindent -\hbox to \dimen0{Baby's First Document\dotfill Page 19}} -\noindent -and no footer line. - -You can use marks to place the current topic of a section -of text into the header or footer. -^^{marks//with headers or footers} -See \conceptcit{mark} for an explanation of how to do this. -\eix^^{headers} -\eix^^{footers} -\endconcept - -\conceptindex{paragraphs} -\concept paragraph - -Intuitively, a \defterm{paragraph} is a sequence of input lines that's -ended by a blank line, by a ^|\par| command \ctsref{\@par}, -^^|\par//ending a paragraph with| -or by an intrinsically vertical command, such as |\vskip|. -More precisely, a paragraph is a sequence of commands that \TeX\ processes -in ordinary horizontal mode. -When \TeX\ has collected an entire paragraph, it forms it into a sequence of -lines by choosing line breaks \seeconcept{line break}. -The result is a list of hboxes with glue, interline penalties, -and interspersed vertical material between them. -Each hbox is a single line, and the glue is the interline glue. - -\eject -\TeX\ starts a paragraph when it's in a vertical mode -and encounters an inherently horizontal command. -In particular, it's in a vertical mode when it's just finished a paragraph, -so the horizontal material on the line after a blank input line starts the -next paragraph in a natural way. -There are many kinds of inherently horizontal commands, but the most common -kind is an ordinary character, e.g., a letter. - -\looseness = -1 -The ^|\indent| and ^|\noindent| commands -(\pp\xrefn{\indent},~\xrefn{\noindent}) -are also inherently horizontal commands that tell -\TeX\ either to indent or not to indent the beginning of a paragraph. -Any other horizontal command in vertical -mode causes \TeX\ to do an implicit |\indent|. -Once \TeX\ has started a paragraph, it's in ordinary horizontal mode. -It first obeys any commands that are in ^|\everypar|. -It then proceeds to collect items for the paragraph until it gets a signal -that the paragraph is ended. -At the end of the paragraph it -resets the paragraph shape parameters ^|\parshape|, |\hang!-indent|, -^^|\hangindent| -and ^|\looseness|. - -\TeX\ ordinarily translates a blank line into |\par|. -It also -inserts a |\par| into the input whenever it's in horizontal mode and -sees an intrinsically vertical command. -So ultimately the thing that ends a paragraph is always a |\par| command. - -When \TeX\ receives a |\par| command, it first -fills out\footnote{% -More precisely, it executes the commands: -\csdisplay -\unskip \penalty10000 \hskip\parfillskip -| -thus appending items for these commands -to the end of the current horizontal list.} -the paragraph it's working on. -It then breaks the paragraph into lines, -adds the resulting list of items to the enclosing vertical list, -and exercises the page builder -(in the case where the enclosing vertical list is the main vertical list). -If the paragraph was ended by an intrinsically vertical command, -\TeX\ then executes that command. - -\endconcept - -\conceptindex{parameters} -\concept parameter - -The term \defterm{parameter} has two different meanings---it can refer -either to a \TeX\ parameter or to a macro parameter. - -A \TeX\ parameter is a \refterm{control sequence} that names -a value. -The value of a parameter can be a \refterm{number}, a \refterm{dimension}, -an amount of \refterm{glue} or muglue, or a \refterm{token list}. -For example, the ^|\parindent| parameter -specifies the distance that \TeX\ skips at the start of an -indented paragraph. - -You can use the control sequence for a parameter either to retrieve the value -of the parameter or to set that value. \TeX\ interprets the control sequence -as a request for a value if it appears in a context where a value is expected, -and as an \refterm{assignment} otherwise. -^^{assignments} -For example: -\csdisplay -\hskip\parindent -| -produces horizontal \refterm{glue} whose natural size is given by |\parindent|, -while: -\csdisplay -\parindent = 2pc % (or \parindent 2pc) -| -sets |\parindent| to a length of two picas. The assignment: -\csdisplay -\parindent = 1.5\parindent -| -uses |\parindent| in both ways. Its effect is to multiply the value of -|\parindent| by $1.5$. - -You can think of a parameter as a built-in \refterm{register}. -^^{registers//parameters as} -You'll find a complete list of the \TeX\ parameters on \knuth{pages~272--275}. - -A \refterm{macro} parameter is a placeholder for text that is to be -plugged into the definition of a macro. See \conceptcit{macro} -for more information about this kind of parameter. - -\endconcept - - -\conceptindex{penalties} -\concept penalty - -A \defterm{penalty} is an item that you can include in a -horizontal, vertical, or math list -in order to discourage \TeX\ from breaking the list -at that point or encourage \TeX\ to break the list there. -^^{horizontal lists//penalties in} -^^{vertical lists//penalties in} -A positive penalty indicates a bad break point, while -a negative penalty indicates a good break point. -Breaking an -ordinary horizontal -list produces a \refterm{line break}, while breaking an -ordinary vertical list produces -a \refterm{page break}. -(A penalty has no effect in restricted horizontal or -internal vertical \refterm{mode}.) - -You can use the -|\penalty| command (\pp\xrefn{hpenalty},~\xrefn{vpenalty}) -to insert a penalty explicitly. -A penalty of $10000$ or more prevents a break, while a penalty of -$-10000$ or less forces a break. -\endconcept - - -\concept{\plainTeX} - -\defterm{\PlainTeX} is the form of \TeX\ described in this -book and in \texbook. \PlainTeX\ is part of the standard \TeX\ -system, so documents that use only the facilities of \plainTeX\ can -usually be transferred from one installation to another without -difficulty. - -\PlainTeX\ consists of the \refterm{primitive} commands together with a -large collection of macros and -other definitions. These additional definitions are given in -\knuth{Appendix~B}. They should also be in the file |plain.tex| -somewhere in your computer system. -\endconcept - - -\concept{primitive} - -A \defterm{primitive} \refterm{command} is one whose definition is built -into the \TeX\ computer program. In contrast, a command that is not -primitive is defined by a \refterm{macro} or some other form of -definition written in \TeX\ itself. The commands in \refterm{\plainTeX} -consist of the primitive commands together with -other commands defined in terms of the -primitive ones. -\endconcept - - -\concept {reference point} - -^^{baselines} -^^{boxes//reference point of} -The \defterm{reference point} of a \refterm{box} is the point where the -left edge of the box intersects its \refterm{baseline}. When \TeX\ is -processing a \refterm{horizontal:horizontal list} or \refterm{vertical -list}, it uses the reference points of the boxes in the list to line up -those boxes horizontally or vertically \seeconcept{box}. -\endconcept - -\conceptindex{registers} -\concept register - -A \defterm{register} is a named location for storing a value. -It is much like a variable in a programming language. -\TeX\ has five kinds of registers, as shown in the following table: - -\vdisplay{\tabskip 10pt\halign{\tt #\hfil &#\hfil\cr -{\it Register type}&{\it Contents}\cr -box&a \refterm{box} \idxref{box registers}\cr -count&a \refterm{number} \idxref{count registers}\cr -dimen&a \refterm{dimension} \idxref{dimension registers}\cr -muskip&\refterm{muglue} \idxref{muglue registers}\cr -skip&\refterm{glue} \idxref{glue registers}\cr -toks&a \refterm{token} list\idxref{token registers}\cr}} - -The registers of each type are numbered from $0$ to $255$. -You can access register $n$ of category $c$ by using the form `|\|$cn$', -e.g., |\muskip192|. -You can use a register -anywhere that information of the appropriate type is called for. For -instance, you can use |\count12| -in any context calling for a number or |\skip0| -in any context calling for glue. - -You put information into a register by \refterm{assigning:assignment} -something to it: - -\csdisplay -\setbox3 = \hbox{lagomorphs are not mesomorphs} -\count255 = -1 -| -The first assignment constructs an hbox and assigns it to -box register~$3$. -You can -subsequently use `|\box3|' wherever a box is called for, and you will -get just that hbox.\footnote{But note carefully: using a box register -also empties it so that its contents become void. The other kinds of -registers don't behave that way. You can use the |\copy| command -\ctsref{\copy} to retrieve the contents of a box register without -emptying it.} -The second assignment assigns $-1$ to count register~$255$. - -A register of a given type, e.g., a glue register, behaves just like -a parameter of that type. -^^{parameters//like registers} -You retrieve its value or assign to it -just as you would with a \refterm{parameter}. -Some \TeX\ parameters, e.g., |\pageno|, -are implemented as registers, in fact. - -\PlainTeX\ -uses many registers for its own purposes, so you should not just -pick an arbitrary -register number when you need a register. Instead you should ask -\TeX\ to reserve a register by using one of the commands -^|\newbox|, ^|\newcount|, ^|\newdimen|, ^|\newmuskip|, ^|\newskip|, -or ^|\newtoks| -\ctsref{\@newbox}. These commands are outer, so you can't -use them in a macro definition. -If you could, -you'd use up a register every time the macro was called and probably run out -of registers before long. - -Nonetheless you can with some caution use any register temporarily -within a \refterm{group}, even one that \TeX\ is using for something -else. -After \TeX\ finishes executing the commands in a group, -it restores the contents of every register -to what they were before it started executing the group. -When you use an explicitly numbered register inside a group, -you must be sure that the register isn't modified by any -\refterm{macro} -that you might call within the group. -Be especially careful -about using arbitrary registers in a group that calls macros -that you didn't write yourself. - -{\tighten -\TeX\ reserves certain registers for special purposes: |\count0| through -|\count9| for page numbering information and -^^{page numbering} -^|\box255| for the contents -of a page just before it is offered to the \refterm{output routine}. -Registers |\dimen0|--|\dimen9|, |\skip0|--|\skip9|, -|\muskip0|--|\mu!-skip9|, |\box0|--|\box9|, -and the |255| registers other than |\box255| -are generally available as ``scratch'' registers. -Thus \plainTeX\ provides only one scratch register, |\count255|, for -counts. -See \knuth{pages~122 and 346} for conventions to follow -in choosing register numbers. -\par} - -You can examine the contents of registers during a \TeX\ run with the -^|\showthe| command \ctsref\showthe, e.g., with `|\showthe\dimen0|'. -\endconcept - - -\concept{restricted mode} - -A \defterm{restricted mode} is a \refterm{mode} that \TeX\ is in when it is -assembling an \refterm{hbox} or a \refterm{vbox}. -We follow \texbook\ in using the term ``internal vertical mode'' -for what you might expect to be ``restricted vertical mode''. -See \conceptcit{horizontal -mode} and \conceptcit{vertical mode}.\endconcept - - -\conceptindex{rules} -\concept rule - -A \defterm{rule} is a solid black rectangle. -A rule, like a \refterm{box}, -has \refterm{width}, \refterm{height}, and \refterm{depth}. -The vertical dimension of the rectangle -is the sum of its height and its depth. -An ordinary horizontal or vertical straight line is a special case of a rule. - -\bix^^{horizontal rules} -\bix^^{vertical rules} -\bix^^|\hrule| -\bix^^|\vrule| -A rule can be either horizontal or vertical. The distinction between a -horizontal rule and a vertical one has to do with how you produce the -rule, since a vertical rule can be short and fat (and therefore look -like a horizontal line), while a horizontal rule can be tall and skinny -(and therefore look like a vertical line). \TeX's notion of a rule is -more general than that of typographers, who think of a rule as a line -and would not usually call a square black box a rule. - -You can produce a horizontal rule using the -|\hrule| command and a vertical rule using -the |\vrule| command \ctsref{\vrule}. -For example, the control sequence |\hrule| by itself -produces a thin rule that runs across the page, like this: - -{\offinterlineskip -\nobreak\medskip -\hrule -\medskip} - -The command `|\vrule height .25in|' produces a vertical rule -that runs $.25$~inches down the page like this: -\nobreak\vskip \abovedisplayskip -\leftline{\vrule height .25in} -\vskip \belowdisplayskip - -There are two differences between horizontal rules and vertical rules: -\olist -\li For a horizontal rule, \TeX\ defaults the width to the width of the -smallest \refterm{box} or \refterm{alignment} that encloses it. For a -vertical rule, \TeX\ defaults the height and depth in the same way. (The -default is the size that you get if you don't give a size explicitly for that -dimension.) - -^^{horizontal lists//rule in} -^^{vertical lists//rule in} -\li -{\tighten -A horizontal rule is an inherently vertical item that cannot participate in -a \refterm{horizontal list}, -while a vertical -rule is an inherently horizontal item -that cannot participate in a \refterm{vertical list}. This behavior -may seem strange at first but there is good reason for it: -a horizontal rule ordinarily runs visually from left -to right and thus separates items in a vertical list, -while a vertical rule ordinarily runs visually from top to bottom -and thus separates items in a horizontal list. -%(Look at the rules that are shown above.) -\par} -\endolist - -{\tighten -If you construct a rule with three explicit dimensions, it will look the -same whether you make it a horizontal rule or a vertical rule. -For example, the command `|\vrule height1pt depth2pt width3in|' produces this -horizontal-looking rule: -\par} - -{\offinterlineskip -\nobreak\medskip\nobreak\vskip3pt -\leftline{\vrule height1pt depth2pt width3in} -\medskip} - -You'll find a precise statement of \TeX's treatment of rules on -\knuth{pages~221--222}. -\eix^^{horizontal rules} -\eix^^{vertical rules} -\eix^^|\hrule| -\eix^^|\vrule| -\endconcept - - -\concept {script size} - -\defterm{Script size} describes one of the three related -\refterm{fonts:font} in a family. -^^{family//script size in} -Script size is smaller than \refterm{text size} but larger than -\refterm{scriptscript size}. \TeX\ uses script size for subscripts and -superscripts, as well as for the numerators and denominators of -fractions in text. -\endconcept - - -\concept {scriptscript size} - -\defterm{Scriptscript size} describes the smallest of the three related -\refterm{fonts:font} in a family. -^^{family//scriptscript size in} -\TeX\ uses \refterm{scriptscript size} for second-order subscripts, -superscripts, numerators, and denominators. For example, \TeX\ will use -scriptscript size for a subscript on a subscript or for a superscript on -a scriptsize numerator. -\endconcept - -\concept shrink - -See \conceptcit{glue}. -\endconcept - -\concept space - -You can cause \TeX\ to put \defterm{space} between two items in -several~ways: - -\olist -^^{end of line} -\li You can write something that \TeX\ treats as a space -\refterm{token}: one or more blank characters, the end of a line (the -end-of-line character acts like a space), or any \refterm{command} that -expands into a space token. \TeX\ generally treats several consecutive -spaces as equivalent to a single one, including the case where the -spaces include a single end-of-line. (An empty line -indicates the end of a paragraph; it -causes \TeX\ to generate a |\par| token.) -^^|\par//from empty line| -\TeX\ adjusts the size of -this kind of space to suit the length required by the context. - -^^{glue//creating space with} -\li You can write a skip command that produces the glue -you specify in the command. The glue can -\refterm{stretch} or \refterm{shrink}, -producing more or less space. You can have vertical glue as -well as horizontal glue. Glue disappears whenever it is next to a -line or page break. - -^^{kerns//creating space with} -\li You can write a \refterm{kern}. A kern produces a fixed amount of -space that does not stretch or shrink and does not disappear at a line -or page break (unless it is immediately followed by glue). The most -common use of a kern is to establish a fixed spatial relationship -between two adjacent \refterm{boxes}. -\endolist - -Glue and kerns can have negative values. Negative glue or a negative kern -between adjacent items brings those items closer together. -\endconcept - - -\concept stretch - -See \conceptcit{glue}. -\endconcept - - -\conceptindex{struts} -\concept strut - -{\tighten -A \defterm{strut} is an invisible \refterm{box} -^^{boxes//invisible} -whose width is zero and whose height and depth are slightly more than -those of a ``normal'' -line of type in the context. Struts are useful for obtaining -uniform vertical spacing when \TeX's -usual line spacing is disabled, e.g., within a math formula -or within a horizontal alignment where you've specified ^|\offinterlineskip|. -Because a strut is taller and deeper than everything else on its line, -it determines the height and depth of the line. -You can produce a strut with -the ^|\strut| command \ctsref{\strut} or the ^|\mathstrut| command -\ctsref\mathstrut. -You can use |\strut| anywhere, but you can only use |\mathstrut| when -\TeX\ is in math \refterm{mode}. A strut in \plainTeX\ has height 8.5\pt\ and -depth 3.5\pt, while a math strut has the height and depth of a left -parenthesis in the current \refterm{style} (so it's smaller for -subscripts and superscripts). -\par} - -Here's an example showing how you might use a strut: -\csdisplay -\vbox{\hsize = 3in \raggedright - \strut Here is the first of two paragraphs that we're - setting in a much narrower line length.\strut} -\vbox{\hsize = 3in \raggedright - \strut Here is the second of two paragraphs that we're - setting in a much narrower line length.\strut} -| -This input yields: -\display{\vbox{ -\vbox{\hsize = 3in \raggedright -\strut Here is the first of two paragraphs that we're setting -in a much narrower line length.\strut} -\vbox{\hsize = 3in \raggedright -\strut Here is the second of two paragraphs that we're setting -in a much narrower line length.\strut} -}} -\noindent -Without the struts the \refterm{vboxes:vbox} would be too close -together. Similarly, in the formula: -\csdisplay -$\overline{x\mathstrut} \otimes \overline{t\mathstrut}$ -| -the math struts cause both bars to be set at the same height even -though the `$x$' and the `$t$' have different heights: -\display{ -$\overline{x\mathstrut} \otimes \overline{t\mathstrut}$ -} -\vskip -\belowdisplayskip -\endconcept -\nobreak - -\conceptindex{styles} -\concept {style} - -Material in a math formula is set in one of eight \defterm{styles}, -depending on the context. Knowing about styles can be useful if you want to -set part of a formula in a different size of type than the one -that \TeX\ has chosen according to its usual rules. - -\eject -The four primary styles are: - -\vdisplay{% -\halign{\refterm{# style}\hfil&\hskip .25in(for #)\hfil\cr -display&formulas displayed on a line by themselves\cr -text&formulas embedded in ordinary text\cr -script&superscripts and subscripts\cr -scriptscript&superscripts on superscripts, etc.\cr -}} - -The other four styles are so-called ^{cramped variants}. In these -variants superscripts aren't raised as high as usual, and so the formula -needs less vertical space than it otherwise would. See -\knuth{pages~140--141} for the details of how \TeX\ selects the style. - -\TeX\ chooses a size of type according to the style: - -\ulist\compact -^^{display style}^^{text style} -\li Display style and text style are set in \refterm{text size}, like -`$\rm this$'. - -^^{script style} -\li Script style is set in \refterm{script size}, like `$\scriptstyle -\rm this$'. - -^^{scriptscript style} -\li Scriptscript style is set in \refterm{scriptscript size}, like -`$\scriptscriptstyle \rm this$'. -\endulist - -See \conceptcit{family} for more information about these three sizes. - -\TeX\ doesn't have a ``scriptscriptscript'' style because such a style -would usually have to be set in a size of type too small to read. \TeX\ -therefore sets third-order subscripts, superscripts, etc., using the -scriptscript style. - -Once in a while you may find that \TeX\ has set a formula in a different style -than the one you'd prefer. You can override \TeX's choice with the -^|\textstyle|, ^|\displaystyle|, ^|\scriptstyle|, and ^|\scriptscriptstyle| -commands \ctsref{\textstyle}. -\endconcept - -\concept {\TeXMeX} - -(a)~A variant of \TeX\ used for mathematical typesetting in -Central American countries. -(b)~A spicy cuisine favored by the \TeX\-ni\-cians of ^{El Paso}. -\endconcept - - -\concept {text math} - -We use the term \defterm{text math} to refer to a math formula set within a -line of text, i.e., enclosed in |$|'s. -\ttidxref{$} -\TeX\ sets text math in text math \refterm{mode}. -\endconcept - - -\concept {text size} - -\defterm{Text size} describes the largest of the three related -\refterm{fonts:font} in a \refterm{family}. -^^{family//text size in} -\TeX\ uses text size for ordinary symbols appearing in -\refterm{math mode}. -\endconcept - - -\conceptindex{tokens} -\concept token - -A \defterm{token} is either a single character tagged with a -\refterm{category code}, or a \refterm{control sequence}. \TeX\ reads -characters from a file using its eyes \seeconcept{\anatomy} -and groups the characters into tokens using its mouth. When a token -reaches \TeX's stomach, \TeX\ interprets it as a \refterm{command} -unless it's part of an argument of a preceding command. -\endconcept - - -\conceptindex{units of measure} -\concept {unit of measure} - -See \conceptcit{dimension}. -\endconcept - -\conceptindex{vboxes} -\concept vbox - -^^{vertical lists//vboxes formed from} -A \defterm{vbox} (vertical box) is a \refterm{box} that \TeX\ constructs -by placing the items of a \refterm{vertical list} one after another, top -to bottom. A vbox, taken as a unit, is neither inherently horizontal -nor inherently vertical, i.e., it can appear as an item of either a -vertical list or a \refterm{horizontal list}. You can construct a vbox -with the ^|\vbox| or the ^|\vtop| command -\ctsref{\vtop}. The difference is that for |\vbox|, -the \refterm{reference point} -of the constructed vbox is derived from that of the last (and -usually bottommost) constituent list item, but for |\vtop|, it's that of the -first (and usually topmost) constituent list item. -\endconcept - - -\conceptindex{vertical lists} -\concept{vertical list} - -A \defterm{vertical list} is a list of items -that \TeX\ has produced while it is -in one of its vertical modes, i.e., -assembling either a -\refterm{vbox} or a page. See ``vertical mode'' below. - -\endconcept - - -\concept{vertical mode} - -^^{vboxes//vertical mode for} When \TeX\ is assembling either a -\refterm{vbox} or the main vertical list from which pages are derived, -it is in one of two \defterm{vertical modes}: ^{ordinary -vertical mode} for assembling the main vertical list, and ^{internal -vertical mode} for assembling vboxes. Whenever \TeX\ is in a vertical mode -its stomach \seeconcept{\anatomy} is constructing a \refterm{vertical -list} of items (boxes, glue, penalties, etc.). -\TeX\ typesets the items in the list -one below another, top to bottom. - -A vertical list can't contain any items produced by -inherently horizontal commands, e.g., -^^{vertical lists//can't contain horizontal commands} -|\hskip| or an ordinary (nonspace) character. -\footnote{\TeX\ \emph{ignores} any space characters -that it encounters while it's in a vertical mode.} - -\ulist -\li If \TeX\ is assembling a vertical list in ordinary vertical mode and -encounters an inherently horizontal command, it switches to ordinary -\refterm{horizontal mode}. -\li If \TeX\ is assembling a vertical list in internal vertical mode and -encounters an inherently horizontal command, it complains. -\endulist - -Two commands that you might at first think are inherently vertical are -in fact inherently horizontal: |\valign| \ctsref{\valign} and |\vrule| -\ctsref{\vrule}. -^^|\valign//inherently horizontal| -^^|\vrule//inherently horizontal| -See \knuth{page~283} for a list of the -inherently horizontal commands. - -It's particularly important to be aware that \TeX\ considers an ordinary -character other than a space character to be inherently horizontal. If -\TeX\ suddenly starts a new paragraph when you weren't expecting it, -a likely cause is a -character that \TeX\ encountered while in vertical mode. -You can convince \TeX\ -not to treat that character as inherently horizontal by enclosing it in -an \refterm{hbox} since the |\hbox| command, despite its name, is -neither inherently horizontal nor inherently vertical. -\endconcept - - -\concept whatsit - -A \defterm{whatsit} is an item of information that -tells \TeX\ to carry out some action -that doesn't fit into its ordinary scheme of things. -A whatsit can appear in a horizontal or vertical list, just like a box -or a glue item. -\TeX\ typesets a whatsit -as a \refterm{box} having zero width, height, and depth---in other -words, a box that contains nothing and occupies no space. - -Three sorts of whatsits are built into \TeX: -\ulist -\li The |\openout|, |\closeout|, and |\write| commands -(\p\xrefn{\openout}) -% (2nd) removed \xref to \write, since it's on the same page -produce a whatsit for operating on an output file. -^^|\openout//whatsit produced by| -^^|\write//whatsit produced by| -^^|\closeout//whatsit produced by| -\TeX\ postpones the operation until it next ships out a page -to the {\dvifile} -^^{\dvifile//whatsits in} -(unless the operation is preceded by ^|\immediate|). -\TeX\ uses a whatsit for these commands because they don't have anything -to do with what it's typesetting when it encounters them. -\li The ^|\special| command \ctsref{\special} tells \TeX\ to -insert certain text directly into the \dvifile. -As with the |\write| command, \TeX\ postpones the insertion -until it next ships out a page to the {\dvifile}. -^^{\dvifile//material inserted by \b\tt\\special\e} -A typical use of |\special| would be to -name a graphics file that the device driver should incorporate into -your final output. -\li When you change languages with the ^|\language| or ^|\setlanguage| -commands \ctsref{\language}, -\TeX\ inserts a whatsit that instructs it to use a -certain set of hyphenation rules later on when it's breaking a paragraph -into lines. -\endulist -\noindent -A particular implementation of \TeX\ may provide additional whatsits. -\endconcept - - -\concept width - -^^{boxes//width of} -The \defterm{width} of a \refterm{box} is the amount of horizontal space -that it occupies, i.e., the distance from its left edge to its -right edge. The typeset material in a box can be wider than the box itself. -\endconcept - -\endconcepts - -\endchapter -\byebye diff --git a/Master/texmf-doc/doc/english/impatient/config.tex b/Master/texmf-doc/doc/english/impatient/config.tex deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/texmf-doc/doc/english/impatient/config.tex +++ /dev/null diff --git a/Master/texmf-doc/doc/english/impatient/copyrght.tex b/Master/texmf-doc/doc/english/impatient/copyrght.tex deleted file mode 100644 index 2fe8addc6c9..00000000000 --- a/Master/texmf-doc/doc/english/impatient/copyrght.tex +++ /dev/null @@ -1,48 +0,0 @@ -% 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 deleted file mode 100644 index 19ad8cf59f6..00000000000 --- a/Master/texmf-doc/doc/english/impatient/eplain.tex +++ /dev/null @@ -1,1196 +0,0 @@ -%% @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 deleted file mode 100644 index 8b364ffc315..00000000000 --- a/Master/texmf-doc/doc/english/impatient/errata.future +++ /dev/null @@ -1,256 +0,0 @@ -$Id: errata.future,v 1.2 2003/09/16 21:17:27 karl Exp $ - -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. :) - - -from Will Adams: - - - p. 105 (and throughout) the encoding for Zapf Dingbats doesn't -agree w/ what was used and instead of a right pointing hand dingbat, a -Star of David appears on the .pdf - - - p. 113 - text overlaps / crashes here, I think 'cause some stuff -escaped out of Verbatim mode. - - - colophon - this appears on a verso, not a recto, which I find a bit odd. - -One last bit of consideration is how you want to handle the cover / -frontmatter. - - -from Karl and Kathy: - -* 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 deleted file mode 100644 index f2e59773363..00000000000 --- a/Master/texmf-doc/doc/english/impatient/errors.tex +++ /dev/null @@ -1,325 +0,0 @@ -% This is part of the book TeX for the Impatient. -% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. -% See file fdl.tex for copying conditions. - -\input macros -\chapter{Making sense \linebreak of error messages} - -\chapterdef{errors} - -\codefuzz = 4pc % for this chapter only (in scope of \chapter) -\bix^^{error messages} -Interpreting \TeX's error messages can sometimes -be like going to your physician -with a complaint that you're feeling fatigued and being handed, -in response, -a breakdown of your blood chemistry. The explanation of your distress -is probably there, but it's not easy to figure out what it is. -A few simple rules will go a long way in helping you to understand \TeX's -error messages and get the most benefit from them. - -Your first goal should be -to understand what you did that caused \TeX\ to complain. -Your second goal (if you're working interactively) -should be to catch as many errors as you can in a single run. - -Let's look at an example. Suppose that your input -contains the line: -\csdisplay -We skip \quid a little bit. -| -You meant to type `|\quad|', but you typed `|\quid|' instead. -Here's what you'll get from \TeX\ in response: -\csdisplay -!! Undefined control sequence. -l.291 We skip \quid - a little bit. -? -| -This message will appear both at your terminal and in your log file. -^^{log file//error messages} -The first line, which always starts with an exclamation point (|!!|), -tells you what the problem is. The last two lines before the `|?|' prompt -(which in this case are also -the next two lines) tell you how far \TeX\ has gotten -when it found the error. -It found the error on line $291$ of the current input file, -and the break between the two message lines indicates -\TeX's precise position within line $291$, namely, just after |\quid|. -The current input file is the one just after the most recent unclosed -left parenthesis in the terminal output of your run (see \xref{infiles}). - -This particular error, an undefined control -sequence, is one of the most common ones you can get. -If you respond to the prompt with another~`|?|', -\TeX\ will display the following message: -{\hfuzz = 2in -\csdisplay -Type <return> to proceed, S to scroll future error messages, -R to run without stopping, Q to run quietly, -I to insert something, E to edit your file, -1 or ... or 9 to ignore the next 1 to 9 tokens of input, -H for help, X to quit. -| -}% -Here's what these alternatives mean: -\ulist -\li If you type \asciichar{return}, -\TeX\ will continue processing your document. -In this case it will just ignore the |\quid|. -\li If you type `|S|' (or `|s|'---uppercase and lowercase are equivalent -here), \TeX\ will process your document without stopping \emph{except} -if it encounters a missing file. Error messages will still appear at your -terminal and in the log file. -\li If you type `|R|' or `|r|', -you'll get the same effect as `|S|' except that -\TeX\ won't even stop for missing files. -\li If you type `|Q|' or `|q|', -\TeX\ will continue processing your document but -will neither stop for errors nor display them at your terminal. The -errors will still show up in the log file. -\li If you type `|X|' or `|x|', -\TeX\ will clean up as best it can, discard the page -it's working on, and quit. You can still print or view the -pages that \TeX\ has already processed. -\li If you type `|E|' or `|e|', \TeX\ will clean up and terminate -as it would for `|X|' or `|x|' and then enter your text editor, -positioning you at the erroneous line. -(Not all systems support this option.) -\li If you type `|H|' or `|h|', -you'll get a further explanation of the error displayed -at your terminal and -possibly some advice about what to do about it. This explanation will also -appear in your log file. For the undefined control sequence above, -you'll get: -{\hfuzz = 2in -\csdisplay -The control sequence at the end of the top line -of your error message was never \def'ed. If you have -misspelled it (e.g., `\hobx'), type `I' and the correct -spelling (e.g., `I\hbox'). Otherwise just continue, -and I'll forget about whatever was undefined. -| -} -\li If you type `|?|', you'll get this same message again. -\endulist -\noindent -The other two alternatives, typing `|I|' or a small integer, provide ways of -getting \TeX\ back on the track so that your error won't cause further errors -later in your document: -\ulist -\li If you type `|I|' or `|i|' -followed by some text, then \TeX\ will insert -that text as though it had occurred just after the point of the error, -at the innermost level where \TeX\ is working. -In the case of the example above, that means at \TeX's -position in your original input, namely, just after `|\quid|'. -Later you'll see an example that shows -the difference between inserting something at the innermost level and -inserting it into your original input. In the example above of the undefined -control sequence, if you type: -\csdisplay -I\quad -| -\TeX\ will carry out the |\quad| command and produce a quad space -where you intended to have one. -\li If you type a positive integer less than $100$ (not less than $10$ as the -message misleadingly suggests), -\TeX\ will delete that number of tokens from the innermost -level where it is working. -(If you type an integer greater than or equal to $100$, \TeX\ will -delete $10$ tokens!) -\endulist - -Here's an example of another common error: -\csdisplay -Skip across \hskip 3cn by 3 centimeters. -| -The error message for this is: -\csdisplay -!! Illegal unit of measure (pt inserted). -<to be read again> - c -<to be read again> - n -l.340 Skip across \hskip 3cn - by 3 centimeters. -| -^^|<to be read again>| -In this case \TeX\ has observed that `|3|' is followed by something that -isn't a proper unit of measure, and so it's assumed the unit of measure to be -points. \TeX\ will read the tokens of `|cn|' again and insert them into -your input, which is not what you want. In this case you can get a better -result by first typing `|2|' to bypass the `|cn|'. -You'll get the message: -\csdisplay -<recently read> n - -l.340 Skip across \hskip 3cn - by 3 centimeters. -| - -Now you can type -`|I\hskip 3cm|' to get the skip you wanted (in addition to the |3pt| skip -that you've already gotten).\footnote -{By typing `|I\unskip\hskip 3cm|' you can get rid of the |3pt| skip.} - -If you type something that's only valid in math mode, \TeX\ will switch over -to math mode for you whether or not that's what you really wanted. -For example: -\csdisplay -So \spadesuit s are trumps. -| -Here's \TeX's error message: -\csdisplay -!! Missing $ inserted. -<inserted text> - $ -<to be read again> - \spadesuit -l.330 So \spadesuit - s are trumps. -| -Since the |\spadesuit| symbol is only allowed in math mode, -\TeX\ has inserted a `|$|' in front of it. -After \TeX\ inserts a token, it's positioned in \emph{front} of -that token, in this case the `|$|', ready to read it. -Typing `|2|' will cause \TeX\ to skip both the `|$|' -and the `|\spadesuit|' tokens, leaving it ready to process the `|s|' -in `|s are trumps.|'. -(If you just let \TeX\ continue, it will typeset `|s are trumps|' -in math mode.) - -Here's an example where \TeX's error diagnostic is downright wrong: -\csdisplay -\hbox{One \vskip 1in two.} -| -The error message is: -\csdisplay -!! Missing } inserted. -<inserted text> - } -<to be read again> - \vskip -l.29 \hbox{One \vskip - 1in two.} -| -^^|<inserted text>| -The problem is that you can't use |\vskip| when \TeX\ is in -restricted horizontal mode, i.e, constructing an hbox. -But instead of rejecting the |\vskip|, \TeX\ has inserted a right brace -in front of it in an attempt to close out the hbox. -If you accept \TeX's correction, \TeX\ will complain again -when it gets to the correct right brace later on. It will also complain -about anything before that right brace that isn't allowed in vertical mode. -These additional complaints will be particularly confusing -because the errors they indicate are bogus, a -result of the propagated effects of the inappropriate -insertion of the right brace. -Your best bet is to type `|5|', skipping past all the tokens -in `|}\vskip 1in|'. - -Here's a similar example in which the error message is longer -than any we've seen so far: -\csdisplay -\leftline{Skip \smallskip a little further.} But no more. -| -The mistake here is that |\smallskip| only works in a vertical mode. -The error message is something like: -\csdisplay -!! Missing } inserted. -<inserted text> - } -<to be read again> - \vskip -\smallskip ->\vskip - \smallskipamount -<argument> Skip \smallskip - a little further. -\leftline #1->\line {#1 - \hss } -l.93 ...Skip \smallskip a little further.} - But no more. -| -The error messages here give you a tour through the macros that are used in -\plainTeX's implementation of |\leftline|---macros -that you probably don't care about. -The first line tells you that \TeX\ intends to cure the problem by -inserting a right brace. -\TeX\ hasn't actually read the -right brace yet, so you can delete it if you choose to. -Each component of the message after the first line -(the one with the `!') occupies a pair of lines. -Here's what the successive pairs of lines mean: -\olist -\li The first pair indicates that \TeX\ has inserted, but not yet read, -a right brace. -\li The next pair indicates that after reading the right brace, \TeX\ will -again read a `|\vskip|' command (gotten from the macro definition -of |\smallskip|). -\li The third pair indicates that \TeX\ was expanding the |\smallskip| -macro when it found the error. The pair also displays the definition of -|\smallskip| and indicates how far \TeX\ has gotten in expanding and -executing that definition. Specifically, it's just attempted -unsuccessfully to execute the |\vskip| command. In general, a -diagnostic line that starts with a control sequence followed by `|->|' -indicates that \TeX\ has been expanding and executing a macro by that -name. -\li The fourth pair indicates that \TeX\ was processing a macro argument -when it found the |\smallskip| and also indicates \TeX's position in that -argument, i.e., it's just processed the |\smallskip| (unsuccessfully). -By looking ahead to the next pair of lines -we can see that the argument was passed to -|\leftline|. -\li The fifth pair indicates that \TeX\ was expanding -the |\leftline| -macro when it found the error. -(In this example the error occurred while \TeX\ was -in the middle of interpreting several -macro definitions at different levels of expansion.) -Its position after |#1| indicates that the last thing it saw was the -first (and in this case the only) argument to |\leftline|. -\li The last pair indicates where \TeX\ is positioned in your input file. -Note that this position is well beyond the position where it's -inserting the right brace and reading `|\vskip|' again. -That's because \TeX\ has already read the entire argument to |\leftline| -from your input file, even though it's only processed part of that argument. -The dots at the beginning of the pair indicate a preceding part of the -input line that isn't shown. This preceding part, in fact, includes -the |\leftline| control sequence that made the |\vskip| illegal. -\endolist -\noindent -In a long message like this, you'll generally find only the first line and the -last pair of lines to be useful; but it sometimes helps to know what the other -lines are about. Any text that you insert or delete will be -inserted or deleted at the -innermost level. In this example the insertion or deletion would occur -just before the -inserted right brace. -Note in particular that in this case \TeX\ puts any text you might insert -\emph{not} into your input text but into a macro definition -several levels down. (The original macro definition is of course not modified.) - -You can use the ^|\errorcontextlines| command \ctsref{\errorcontextlines} -to limit the -number of pairs of error context lines that \TeX\ produces. -If you're not interested in all the information that \TeX\ is giving you, -you can set |\error!-contextlines| to $0$. That will give you just the first -and last pairs of lines. - -Finally, -we'll mention two other indicators that can appear at the start of a pair -of error message lines: -\ulist -\li ^|<output>| indicates that \TeX\ was in the middle of its output routine -when this error occurred. -\li ^|<write>| indicates that \TeX\ was in the middle of executing a -|\write| command when this error occurred. -\TeX\ will detect such an error when it is actually doing the |\write| -(during a |\shipout|), rather than when it first encounters the |\write|. -\endulist - - -\eix^^{error messages} -\endchapter -\byebye diff --git a/Master/texmf-doc/doc/english/impatient/examples.tex b/Master/texmf-doc/doc/english/impatient/examples.tex deleted file mode 100644 index 1b244362d61..00000000000 --- a/Master/texmf-doc/doc/english/impatient/examples.tex +++ /dev/null @@ -1,56 +0,0 @@ -% 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 deleted file mode 100644 index 4ae17d2d753..00000000000 --- a/Master/texmf-doc/doc/english/impatient/fdl.tex +++ /dev/null @@ -1,463 +0,0 @@ -% 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 deleted file mode 100644 index ad10cf4e455..00000000000 --- a/Master/texmf-doc/doc/english/impatient/fonts.tex +++ /dev/null @@ -1,241 +0,0 @@ -% 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 deleted file mode 100644 index 40a0189f5b5..00000000000 --- a/Master/texmf-doc/doc/english/impatient/frontm.tex +++ /dev/null @@ -1,82 +0,0 @@ -% 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 deleted file mode 100644 index 46bc83a1a88..00000000000 --- a/Master/texmf-doc/doc/english/impatient/genops.tex +++ /dev/null @@ -1,2827 +0,0 @@ -% This is part of the book TeX for the Impatient. -% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. -% See file fdl.tex for copying conditions. - -\input macros -\chapter {Commands for \linebreak general operations} - -\chapterdef{general} - -This section covers -\TeX's ^{programming features} and -everything else that doesn't fit into the categories -of commands in the previous chapters. -For an explanation of the conventions used in this section, -see \headcit{Descriptions of the commands}{cmddesc}. - -\begindescriptions - -%========================================================================== -\section {Naming and modifying fonts} - -\begindesc -\bix^^{fonts//naming and modifying} -\cts font {} -\aux\cts font {\<control sequence> = \<fontname>} -\aux\cts font {\<control sequence> = \<fontname> {\bt scaled} \<number>} -\aux\cts font {\<control sequence> = \<fontname> {\bt at} \<dimen>} -\explain -Used alone, the |\font| control sequence designates the current font. -|\font| isn't a true command when it's used alone, -since it then can appear only as an argument to another command. - -For the other three forms of |\font|, -\<font\-name> names a set of files that define a font. -These forms of |\font| are commands. Each of these forms has two effects: -{\tighten -\olist -\li It defines \<control sequence> as a name that selects -the font \<font\-name>, possibly magnified (see below). -\li It causes \TeX\ to load the font ^{metrics file} -(^{\tfmfile}) for \<fontname>. -\endolist -}% end tighten - -\noindent -The name of a font file usually indicates its design size. -For example, |cmr10| indicates Computer Modern roman with a -design size of $10$ points. -The design size of a font is recorded in its metrics file. - -If neither |scaled| \<number> nor |at| \<dimen> -is present, the font is used -at its design size---the size at which it usually looks best. -Otherwise, a magnified version of the font is loaded: -\ulist -\li If |scaled| \<number> -is present, the font is magnified by a factor of $\hbox{\<number>}/1000$. -\li If |at| \<dimen> is present, the font is scaled to \<dimen> by magnifying -it by $\hbox{\<dimen>}/ds$, where $ds$ is the design size of -\<fontname>. -\<dimen> and $ds$ are nearly always given in points. -\endulist -\noindent -Magnifications of less than $1$ are possible; they reduce the size. - -You usually need to provide a shape file (\xref{shape}) for each -magnification of a font that you load. -However, some ^{device drivers} can utilize fonts that are resident -in a printer. ^^{resident fonts} -Such fonts don't need shape files. - -See \conceptcit{font} and -\conceptcit{magnification} for further information. - -\example -\font\tentt = cmtt10 -\font\bigttfont = cmtt10 scaled \magstep2 -\font\eleventtfont = cmtt10 at 11pt -First we use {\tentt regular CM typewriter}. -Then we use {\eleventtfont eleven-point CM typewriter}. -Finally we use {\bigttfont big CM typewriter}. -| -\produces -\font\regttfont = cmtt10 -\font\bigttfont = cmtt10 scaled \magstep 2 -\font\eleventtfont = cmtt10 at 11pt -First we use {\regttfont regular CM typewriter}. -Then we use {\eleventtfont eleven-point CM typewriter}. -Finally we use {\bigttfont big CM typewriter}. -\endexample -\enddesc - -\begindesc -\cts fontdimen {\<number> \<font>\param{dimen}} -\explain -^^{fonts//parameters of} -These parameters specify various dimensions associated with -the font named by the control sequence \<font> -(as distinguished from the \<font\-name> that names the font files). -Values of these parameters are specified in the metrics -file for \<font>, but you can -retrieve or change their values during a \TeX\ run. -The numbers and meanings of the parameters are: -\display{\halign{\hfil#\hfil\quad&#\hfil\cr -\it Number&\it Meaning\cr -\noalign{\vskip 1\jot}% -1&slant per point\cr -2&interword space\cr -3&interword stretch\cr -4&interword shrink\cr -5&x-height (size of |1ex|)\cr -6&quad width (size of |1em|)\cr -7&extra space\cr}} -\noindent -\TeX\ uses the slant per point for positioning accents. -It uses the interword parameters for producing interword spaces -(see |\spaceskip|, \xref\spaceskip) and the extra space parameter -for the additional space after a period (see |\xspaceskip|, -\xref\xspaceskip). -The values of these parameters for the -\plainTeX\ fonts are enumerated on \knuth{page~433}. -Math symbol fonts have $15$ additional parameters, which we won't discuss here. - -Beware: -assignments to these parameters are \emph{not} undone at the end -of a group. -If you want to change these parameters locally, you'll need to -save and restore their original settings explicitly. -\example -Here's a line printed normally.\par -\fontdimen2\font = 3\fontdimen2\font -% Triple the interword spacing. -\noindent Here's a really spaced-out line. -| -\produces -Here's a line printed normally.\par -\dimen0 = \fontdimen2\font % to undo global assignment -\fontdimen2\font = 3\fontdimen2\font -% triple the interword spacing -\noindent Here's a really spaced-out line. -\fontdimen2\font = \dimen0 -\endexample -\enddesc - -\begindesc -\cts magnification {{\bt =} \<number>} -\cts mag {\param{number}} -\explain -\margin{{\tt\\mag} and {\tt\\magnification} combined.} -An assignment to |\magnification| establishes -the ``^{scale factor}'' $f$ that determines -the \minref{magnification} ratio of your document \seeconcept{magnification}. -The assignment to |\magni!-fication| must occur before the first page -of your document has been shipped out. - -The assignment sets $f$ to \<number> and also -sets |\hsize| and |\vsize| -^^|\hsize//set by {\tt\\magnification}| -^^|\vsize//set by {\tt\\magnification}| -respectively to |6.5true in| and |8.9true in|, -the values appropriate for an $8 \frac1/2$-% -by-$11$-inch page. -$f$ must be between $0$ and $32768$. -The \minref{magnification} ratio of the -document is $f/1000$. -A scale factor -of $1000$ provides unit magnification, i.e., it leaves the size of your -document -unchanged. It's customary to use powers of $1.2$ as scale factors, and -most libraries of fonts are based on such factors. You can use the -^|\magstep| and ^|\magstephalf| commands to specify magnifications by -these factors. - -|\magnification| is not a parameter. You can't use it -to \emph{retrieve} the scale factor. If you write something like -|\dimen0 = \mag!-nifi!-cation|, \TeX\ will complain about it. - -The |\mag| parameter contains the scale factor. -Changing the value of |\mag| rescales the page dimensions, which is not -usually what you want. -Therefore it's usually better to change the magnification by -assigning to |\magnification| rather than to |\mag|. - -\example -\magnification = \magstep2 -% magnify fonts by 1.44 (=1.2x1.2) -| -\endexample -\enddesc - -\begindesc -\cts magstep {\<number>} -\explain -This command expands to the \minref{magnification} ratio needed to -magnify everything in your document -(other than |true| dimensions) -by $1.2^r$, where $r$ is -the value of \<number>. \<number> must be between $0$ and $5$. -\example -\magnification = \magstep1 % Magnify by ratio of 1.2. -| -\endexample -\enddesc - -\begindesc -\cts magstephalf {} -\explain -This command expands to the \minref{magnification} ratio needed to -magnify everything in your document -(other than |true| dimensions) -by $\sqrt{1.2}$, -i.e., halfway between $1$ and $1.2$. -\example -\magnification = \magstephalf -| -\endexample -\eix^^{fonts//naming and modifying} -\enddesc - -%========================================================================== -\section {Converting information to tokens} - -\subsection {Numbers} - -\begindesc -\xrdef{convert} -\bix^^{numbers//converting to characters} -% -\cts number {\<number>} -\explain -This command produces the representation of a \minref{number} -as a sequence of -character \minref{token}s. The number can be either an explicit integer, -a \<number> parameter, or a \<number> register. -\example -\number 24 \quad \count13 = -10000 \number\count13 -| -\produces -\number 24 \quad \count13 = -10000 \number\count13 -\endexample -\enddesc - -\begindesc -^^{Roman numerals} -\easy\cts romannumeral {\<number>} -\explain -This command produces the roman numeral representation of a \minref{number} -as a sequence of -character \minref{token}s. The number can be either an explicit integer, -a \<number> parameter, or a \<number> register. -If the number is zero or negative, |\romannumeral| produces -no tokens. -\example -\romannumeral 24 \quad (\romannumeral -16)\quad -\count13 = 6000 \romannumeral\count13 -| -\produces -\romannumeral 24 \quad (\romannumeral -16)\quad -\count13 = 6000 \romannumeral\count13 -\endexample - -\eix^^{numbers//converting to characters} -\enddesc - -%========================================================================== -\subsection {Environmental information} - -\begindesc -^^{time of day} -\cts time {\param{number}} -\explain -\TeX\ sets this parameter to the -number of minutes that have elapsed since midnight (of the current day). -At noon, for instance, |\time| is $720$. -This command and the next three make use of the time and date as -recorded in your computer. -\TeX\ retrieves them just once, at the beginning of your run, so |\time| -at the end of the run always has the same value as |\time| at the -beginning of the run (unless you've explicitly changed it). -\enddesc - -\bix^^{date} -\begindesc -\cts day {\param{number}} -\explain -\TeX\ sets this parameter to the current day of the month. It is -a number between $1$ and $31$. -|\day| is set at the beginning of your run (see the comments on -|\time| above). -\enddesc - -\begindesc -\cts month {\param{number}} -\explain -\TeX\ sets this parameter to the current month. It is -a number between $1$ and $12$. -|\month| is set at the beginning of your run (see the comments on -|\time| above). -\enddesc - -\begindesc -\cts year {\param{number}} -\explain -\TeX\ sets this parameter to the current year ({\sc A.D.}). -It is a number such as $1991$. -|\year| is set at the beginning of your run (see the comments on -|\time| above). - -\eix^^{date} -\enddesc - -\begindesc -^^{version number} -\cts fmtname {} -\cts fmtversion {} -\explain -These commands produce the name and version number -of the \TeX\ format, -e.g., \minref{\plainTeX} or ^{\LaTeX}, that you're using. -\example -This book was produced with the \fmtname\ format, -version~\fmtversion. -| -\produces -This book was produced with the \fmtname\ format, -version~\fmtversion. -\endexample -\enddesc - -\begindesc -\cts jobname {} -\explain -This command produces the base -name of the file with which \TeX\ was invoked. -For example, if your main input file is |hatter.tex|, -|\jobname| will expand to |hatter|. -|\jobname| is most useful when you're -creating an auxiliary file to be associated with a document. -^^{auxiliary files} -\example -\newwrite\indexfile \openout\indexfile = \jobname.idx -% For input file `hatter.tex', open index file `hatter.idx'. -| -\endexample\enddesc - -%========================================================================== -\subsection {Values of variables} - -\begindesc -\cts meaning {\<token>} -\explain -^^{tokens//showing the meaning of} -This command produces -the meaning of \<token>. It is useful for diagnostic output. -You can use the ^|\the| command (\xref\the) in a similar way -to get information about the values of \minref{register}s and other -\TeX\ entities. -\example -[{\tt \meaning\eject}] [\meaning\tenrm] [\meaning Y] -| -\produces -[{\tt \meaning\eject}] [\meaning\tenrm] [\meaning Y] -\endexample\enddesc - -\begindesc -\cts string {\<control sequence>} -\explain -^^{control sequences//converting to strings} -This command produces -the characters that form the name of \<control sequence>, -including the \minref{escape character}. -The escape character is represented by the current value of -^|\escapechar|. -^^{escape character//represented by \b\tt\\escapechar\e} -\TeX\ gives the characters in the list a category code of $12$ (other). - -You can perform the reverse operation with -the ^|\csname| command (\xref \csname), -which turns a string into a control sequence. -\example -the control sequence {\tt \string\bigbreak} -| -\produces -the control sequence {\tt \string\bigbreak} -\endexample\enddesc - -\begindesc -\cts escapechar {\param{number}} -\explain -This parameter specifies the \ascii\ code \minrefs{\ascii} of the -character that \TeX\ uses to represent the \minref{escape character} -^^{escape character//represented by \b\tt\\escapechar\e} -when it's -converting a control sequence name to a sequence of character tokens. -This conversion occurs when you use the |\string| command and also when -\TeX\ is producing diagnostic messages. The default value of the escape -character is $92$, the {\ascii} character code for a ^{backslash}. -If |\escapechar| is not in the range $0$--$255$, -\TeX\ does not include an escape character in the result of the conversion. -\example -\escapechar = `!! -the control sequence {\tt \string\bigbreak} -| -\produces -\escapechar = `! -the control sequence {\tt \string\bigbreak} -\endexample -\enddesc - -\begindesc -\cts fontname {\<font>} -\explain -^^{fonts//names of} -This command produces the filename -for \<font>. The filename is the \<font\-name> that was used to define -\<font>. -\example -\font\myfive=cmr5 [\fontname\myfive] -| -\produces -\font\myfive=cmr5 [\fontname\myfive] -\endexample -\enddesc - - -%========================================================================== -\section {Grouping} - -\begindesc -\bix^^{groups} -% -\cts begingroup {} -\cts endgroup {} -\explain -These two commands begin and end a \minref{group}. -A |\begingroup| does not match up with a right brace, -nor an |\endgroup| with a left brace. - -\TeX\ treats |\begingroup| and |\endgroup| like any other -\minref{control sequence} when it's scanning its input. In particular, -you can define a \minref{macro} that contains a |\begingroup| -but not an |\endgroup|, and conversely. -^^{macros//using \b\tt\\begingroup\e\ and \b\tt\\endgroup\e\ in} -This technique is often useful -when you're defining paired macros, one of which establishes -an environment and the other of which terminates that environment. -You can't, however, use |\begingroup| and |\endgroup| as substitutes for -braces other than the ones that surround a group. -\example -\def\a{One \begingroup \it two } -\def\enda{\endgroup four} -\a three \enda -| -\produces -\def\a{One \begingroup \it two } -\def\enda{\endgroup four} -\a three \enda -\endexample -\enddesc - -\begindesc -\makecolumns 4/2: -\easy% -\ctsact { \xrdef{@lbrace} -\cts bgroup {} -\ctsact } \xrdef{@rbrace} -\cts egroup {} -\explain -The left and right braces are commands that begin and end a -\minref{group}. -The |\bgroup| and |\egroup| \minref{control sequence}s are equivalent -to `|{|' and `|}|', except that -\TeX\ treats |\bgroup| and |\egroup| like any other -\minref{control sequence} when it's scanning its input. - -|\bgroup| and |\egroup| can be useful when you're -defining paired macros, one of which -starts a brace-delimited construct (not necessarily a group) -and the other one of which ends that construct. -^^{macros//using \b\tt\\bgroup\e\ and \b\tt\\egroup\e\ in} -You can't define such macros using ordinary braces---if you try, -your macro definitions will contain unmatched braces -and will therefore be unacceptable to \TeX. -Usually you should use these commands only when you can't use -ordinary braces. - -\example -Braces define the {\it boundaries\/} of a group. -| -\produces -Braces define the {\it boundaries\/} of a group. -\nextexample -\def\a{One \vbox\bgroup} -% You couldn't use { instead of \bgroup here because -% TeX would not recognize the end of the macro -\def\enda#1{{#1\egroup} two} -% This one is a little tricky, since the \egroup actually -% matches a left brace and the following right brace -% matches the \bgroup. But it works!! -\a \enda{\hrule width 1in} -| -\produces -\def\a{One \vbox\bgroup} -% You couldn't use { instead of \bgroup here because -% TeX would not recognize the end of the macro -\def\enda#1{{#1\egroup} two} -% This one is a little tricky, since the \egroup actually -% matches a left brace and the following right brace -% matches the \bgroup. But it works! -\a \enda{\hrule width 1in} -\endexample -\enddesc - -\begindesc -\cts global {} -\explain -This command makes the following definition -or \minref{assignment} \minref{global} \seeconcept{global} so that it -becomes effective independent of \minref{group} boundaries. -You can apply a |\global| prefix to any kind of definition -or \minref{assignment}, -including a \minref{macro} definition or a \minref{register} assignment. -\example -{\global\let\la = \leftarrow} -$a \la b$ -| -\produces -% for safety's sake we fake this one! -\let\la = \leftarrow -$a \la b$ -\endexample -\enddesc - -\begindesc -\cts globaldefs {\param{number}} -\explain -This parameter controls whether or not \TeX\ takes definitions -and other assignments to be -\minref{global}: -\ulist -\li If |\globaldefs| is zero (as it is by default), a definition is global -if and only if it is preceded by |\global| either explicitly or implicitly. -(The ^|\gdef| and ^|\xdef| commands (\xref\gdef) have an implicit -|\global| prefix). -\li If |\globaldefs| is greater than zero, all assignments and -definitions are implicitly prefixed by ^|\global|. -\li If |\globaldefs| is less than zero, all ^|\global| prefixes are ignored. -\endulist -\enddesc - -\begindesc -\margin{Order of {\tt\\aftergroup} and {\tt\\afterassignment} changed.} -\cts aftergroup {\<token>} -\explain -When \TeX\ encounters this command during input, -it saves \<token>. -After the end of the current \minref{group}, -it inserts \<token> back into the input and expands it. -If a group contains several |\aftergroup|s, the corresponding tokens -are \emph{all} inserted following the end of the group, in the order -in which they originally appeared. - -The example that follows shows how you can use |\aftergroup| to postpone -processing a token that you generate within a \minref{conditional test}. -\example -\def\neg{negative} \def\pos{positive} -% These definitions are needed because \aftergroup applies -% to a single token, not to a sequence of tokens or even -% to a brace-delimited text. -\def\arith#1{Is $#1>0$? \begingroup - \ifnum #1>-1 Yes\aftergroup\pos - \else No\aftergroup\neg\fi - , it's \endgroup. } -\arith 2 -\arith {-1} -| -\produces -\def\neg{negative} \def\pos{positive} -% These definitions are needed because \aftergroup applies -% to a single token, not a sequence of tokens or even -% a group. -\def\arith#1{Is $#1>0$? \begingroup - \ifnum #1>-1 Yes\aftergroup\pos - \else No\aftergroup\neg\fi - , it's \endgroup. } -\arith 2 -\arith {-1} -\endexample -\eix^^{groups} -\enddesc - -\begindesc -\cts afterassignment {\<token>} -\explain -When \TeX\ encounters this command it saves \<token> in a special -place. After it next performs an \minref{assignment}, it inserts -\<token> into the input and expands it. If you call |\afterassignment| -more than once before an assignment, only the last call has any effect. -One use of |\afterassignment| -is in writing \minref{macro}s for commands intended to be written -in the -form of assignments, as in the example below. - -See \knuth{page~279} for a precise description -of the behavior of |\afterassignment|. -\example -\def\setme{\afterassignment\setmeA\count255} -\def\setmeA{$\number\count255\advance\count255 by 10 - +10=\number\count255$} -Some arithmetic: \setme = 27 -% After expanding \setme, TeX sets \count255 to 27 and -% then calls \setmeA. -| -\produces -\def\setme{\afterassignment\setmeA\count255} -\def\setmeA{$\number\count255\advance\count255 by 10 -+10=\number\count255$} -Some arithmetic: \setme = 27 -% After expanding \setme, TeX sets \count255 to 27 and -% then calls \setmeA. -\endexample -\enddesc - - -%========================================================================== -\section {Macros} - -%========================================================================== -\subsection {Defining macros} - -\begindesc -\bix^^{macros} -\bix^^{macros//defining} -\xrdef{mac1}% begin the section on macros -% -\cts def {\<control sequence> \<parameter text> \rqbraces{\<replacement text>}} -\explain -This command defines \<control sequence> as a \minref{macro} with the -specified \<parameter text> and \<replacement text>. -See \xrefpg{macro} for a full explanation of how to write a macro -definition. -\example -\def\add#1+#2=?{#1+#2&= - \count255=#1 \advance\count255 by #2 \number\count255\cr} -$$\eqalign{ - \add 27+9=? - \add -5+-8=?}$$ -| -\dproduces -\def\add#1+#2=?{#1+#2&= - \count255=#1 \advance\count255 by #2 \number\count255\cr} -$$\eqalign{ - \add 27+9=? - \add -5+-8=?}$$ -\endexample -\enddesc - -\begindesc -\cts edef {\<control sequence> \<parameter text> \rqbraces{\<replacement text>}} -\explain -This command defines a macro in the same general way as |\def|. -The difference is that \TeX\ expands the \<replacement text> -of an |\edef| immediately (but still without executing anything). -Thus any definitions within the \<replacement text> are expanded, but -assignments and commands that produce things such as boxes and glue -are left as is. For example, an |\hbox| command within -the \<replacement text> of an |\edef| remains as a command and is not -turned into a box as \TeX\ is processing the definition. -It isn't always obvious what's expanded and what isn't, but you'll -find a complete list of expandable control sequences on -\knuth{pages~212--215}. - -You can inhibit the expansion of a control sequence that would otherwise -be expanded by using |\no!-expand| (\xref\noexpand). ^^|\noexpand| -You can postpone the expansion of a control sequence by using -^|\expandafter| (\xref\expandafter). - -The |\write|, |\message|, |\errmessage|, |\wlog|, and |\csname| -commands expand their -token lists using the same rules that |\edef| uses to expand its -replacement text. -^^|\write//expanded by {\tt\\edef} rules| -^^|\message//expanded by {\tt\\edef} rules| -^^|\errmessage//expanded by {\tt\\edef} rules| -^^|\wlog//expanded by {\tt\\edef} rules| -^^|\csname//expanded by {\tt\\edef} rules| -\example -\def\aa{xy} \count255 = 1 -\edef\bb{w\ifnum \count255 > 0\aa\fi z} -% equivalent to \def\bb{wxyz} -\def\aa{} \count255 = 0 % leaves \bb unaffected -\bb -| -\produces -\def\aa{xy} \count255 = 1 -\edef\bb{w\ifnum \count255 > 0\aa\fi z} -% equivalent to \def\bb{wxyz} -\def\aa{} \count255 = 0 % leaves \bb unaffected -\bb -\endexample -\enddesc - -\begindesc -\cts gdef {\<control sequence> \<parameter text> \rqbraces{\<replacement text>}} -\explain -This command is equivalent to |\global\def|. -\enddesc - -\begindesc -\cts xdef {\<control sequence> \<parameter text> \rqbraces{\<replacement text>}} -\explain -This command is equivalent to |\global\edef|. -\enddesc - -\begindesc -\cts long {} -\explain -This command is used as a prefix to a \minref{macro} definition. -It tells \TeX\ that the arguments to the macro are permitted to include -|\par| tokens (\xref{\@par}), which normally indicate the end of a paragraph. -^^|\par//in macro arguments| -If \TeX\ -tries to expand a macro defined without |\long| and any of -the macro's arguments include a |\par| token, -\TeX\ will complain about a runaway argument. The purpose -of this behavior is to provide you with some protection against unterminated -macro arguments. -|\long| gives you a way of bypassing the protection. -\example -\long\def\aa#1{\par\hrule\smallskip#1\par\smallskip\hrule} -\aa{This is the first line.\par -This is the second line.} -% without \long, TeX would complain -| -\produces -\medskip -\long\def\aa#1{\par\hrule\smallskip#1\par\smallskip\hrule} -\aa{This is the first line.\par -This is the second line.} -% without \long, TeX would complain -\endexample -\enddesc - -\begindesc -\cts outer {} -\explain -\null ^^{outer} -This command is used as a prefix to a \minref{macro} definition. -It tells \TeX\ that the macro is outer (\xref{outer}) -and cannot be used in certain contexts. -If the macro is used in a forbidden context, \TeX\ will complain. - -\example -\outer\def\chapterhead#1{% - \eject\topglue 2in \centerline{\bf #1}\bigskip} -% Using \chapterhead in a forbidden context causes an -% error message. -| -\endexample -\enddesc - -\begindesc -\cts chardef {\<control sequence>=\<charcode>} -\explain -^^{characters//defined by \b\tt\\chardef\e} -This command defines \<control sequence> -to be \<charcode>. -Although |\chardef| is most often used to define characters, you can also -use it to give a name to a number in the range $0$--$255$ even when you -aren't using that number as a character code. -\example -\chardef\percent = `\% 21\percent, {\it 19\percent} -% Get the percent character in roman and in italic -| -\produces -\chardef\percent = `\% -21\percent, {\it 19\percent} -% You'll get the percent character in roman and in italic -\endexample -\enddesc - -\begindesc -^^{math characters} -^^{mathcodes} -\cts mathchardef {\<control sequence>=\<mathcode>} -\explain -This command defines \<control sequence> as a math character -with the given \minrefs{mathcode}\<mathcode>. -The control sequence will only be legal in math mode. -\example -\mathchardef\alphachar = "010B % As in plain TeX. -$\alphachar$ -| -\produces -\mathchardef\alphachar = "010B % As in plain TeX. -$\alphachar$ -\endexample -\eix^^{macros//defining} -\enddesc - -%========================================================================== -\subsection {Other definitions} - -\begindesc -\cts let {\<control sequence> = \<token>} -\explain -^^{control sequences//defining with \b\tt\\let\e} -\minrefs{token} -This command causes -\<control sequence> to acquire the current meaning of \<token>. -Even if you redefine \<token> later, the meaning of \<control sequence> -will not change. Although \<token> is most commonly a control sequence, -it can also be a \minref{character} token. -\enddesc - -\begindesc -\cts futurelet {\<control sequence> \<token$_1$> \<token$_2$>} -\explain -This command tells \TeX\ to make \<token$_2$> the meaning of -\<control sequence> (as would be done with |\let|), and then to -process \<token$_1$> and \<token$_2$> normally. -|\futurelet| is useful at the end of macro definitions -because it gives you a way of looking beyond the token that \TeX\ -is about to process before it processes it. -\example -\def\predict#1{\toks0={#1}\futurelet\next\printer} -% \next will acquire the punctuation mark after the -% argument to \predict -\def\printer#1{A \punc\ lies ahead for \the\toks0. } -\def\punc{% - \ifx\next;semicolon\else - \ifx\next,comma\else - ``\next''\fi\fi} -\predict{March}; \predict{April}, \predict{July}/ -| -\produces -\def\predict#1{\toks0={#1}\futurelet\next\printer} -\def\printer#1{A \punc\ lies ahead for \the\toks0. } -\def\punc{% - \ifx\next;semicolon\else - \ifx\next,comma\else - ``\next''\fi\fi - } -\predict{March}; -\predict{April}, -\predict{July}/ -\endexample -\enddesc - -\begindesc -\cts csname {\<token list> {\bt \\endcsname}} -\xrdef{\endcsname} -\explain -This command produces a control sequence from \<token list>. -It provides a way of synthesizing control sequences, -including ones that you can't normally write. -\<token list> can itself include control sequences; it is expanded -in the same way as the replacement text of an |\edef| definition (\xref\edef). -If the final expansion -yields anything that isn't a character, \TeX\ will complain. -|\csname| goes from a list of tokens to a control sequence; -you can go the other way with ^|\string| \ctsref\string. -\example -\def\capTe{Te} -This book purports to be about \csname\capTe X\endcsname. -| -\produces -\def\capTe{Te} -This book purports to be about \csname\capTe X\endcsname. -\endexample -\enddesc - -%========================================================================== -\subsection {Controlling expansion} - -\begindesc -\bix^^{macros//controlling expansion of} -\cts expandafter {\<token$_1$> \<token$_2$>} -\explain -This command tells \TeX\ to expand \<token$_1$> according to its rules -for \minref{macro} expansion \emph{after} it has expanded \<token$_2$> -by one level. It's useful when \<token$_1$> is something like `|{|' -^^|{//with {\tt\\expandafter}| -or ^|\string| that inhibits expansion of \<token$_2$>, -but you want to expand \<token$_2$> nevertheless. -\example -\def\aa{xyz} -\tt % Use this font so `\' prints that way. -[\string\aa] [\expandafter\string\aa] -[\expandafter\string\csname TeX\endcsname] -| -\produces -\def\aa{xyz} -\tt -[\string\aa] [\expandafter\string\aa] -[\expandafter\string\csname TeX\endcsname] -\endexample -\enddesc - -\begindesc -\cts noexpand {\<token>} -\explain -This command tells \TeX\ to -suppress expansion of \<token> if \<token> is a -\minref{control sequence} that can be expanded. -If \<token> can't be expanded, e.g., it's a letter, -\TeX\ acts as though the |\noexpand| wasn't there -and processes \<token> normally. -In other words the expansion of `|\noexpand|\<token>' -is simply \<token> no matter what \<token> happens to be. -\example -\def\bunny{rabbit} -\edef\magic{Pull the \noexpand\bunny\ out of the hat!! } -% Without \noexpand, \bunny would always be replaced -% by `rabbit' -\let\oldbunny=\bunny \def\bunny{lagomorph} \magic -\let\bunny=\oldbunny \magic -| -\produces -\def\bunny{rabbit} -\edef\magic{Pull the \noexpand\bunny\ out of the hat! } -% Without \noexpand, \bunny would always be replaced -% by `rabbit' -\let\oldbunny=\bunny \def\bunny{lagomorph} \magic -\let\bunny=\oldbunny \magic -\endexample -\enddesc - -\begindesc -\cts the {\<token>} -\explain -This command generally expands to a list of \minref{character} tokens -that represents \<token>. \<token> can be any of the following: - -\ulist\compact -\li a \TeX\ \minref{parameter}, e.g., |\parindent| or |\deadcycles| -^^{parameters//using \b\tt\\the\e\ with} -\li a \minref{register}, e.g., |\count0| -^^{registers//with \b\tt\\the\e} -\margin{Item for special registers removed} -\li a code associated with an input character, e.g., |\catcode`(| -\li a font parameter, e.g., |\fontdimen3\sevenbf| -\li the ^|\hyphenchar| or ^|\skewchar| of a font, e.g., -|\skewchar\teni| -\li ^|\lastpenalty|, ^|\lastskip|, or ^|\lastkern| (values derived from -the last item on the current horizontal \minrefs{horizontal list} -or \minref{vertical list}) -\li a control sequence defined by ^|\chardef| or -^|\mathchardef| -\endulist - -\noindent -In addition, |\the| can expand to noncharacter tokens in the following two -cases: -\ulist\compact -\li |\the| \<font>, which expands to the most recently defined -control sequence that selects -the same font as the control sequence \<font> -\li |\the| \<token variable>, which expands to a copy of the value of the -variable, e.g., |\the\everypar| -\endulist - -See \knuth{pages~214--215} for a more detailed description of what -|\the| does in various cases. -\example -The vertical size is currently \the\vsize. -The category code of `(' is \the\catcode `(. -| -\produces -The vertical size is currently \the\vsize. -The category code of `(' is \the\catcode `(. -\endexample -\enddesc - -{\tighten -\see \headcit{Converting information to tokens}{convert}, -|\showthe| (\xref\showthe). -\par} - -\eix^^{macros//controlling expansion of} - -%========================================================================== -\subsection {Conditional tests} - -\begindesc -\xrdef{conds} -\bix^^{conditional tests} -% -\ctspecial if {\<token$_1$> \<token$_2$>}\ctsxrdef{@if} -\explain -{\emergencystretch=1em -This command tests if \<token$_1$> and \<token$_2$> -have the same \minref{character} code, independent of their -\minref{category code}s. -Before performing the test, \TeX\ expands tokens following the |\if| -until it obtains two tokens that can't be expanded further. -These two tokens become \<token$_1$> and \<token$_2$>. -The expansion -includes replacing a control sequence |\let| equal to a character token -by that character token. -A \minref{control sequence} that can't be further expanded is -considered to have character code $256$.\par} -\example -\def\first{abc} -\if\first true\else false\fi; -% ``c'' is left over from the expansion of \first. -% It lands in the unexecuted ``true'' part. -\if a\first\ true\else false\fi; -% Here ``bc'' is left over from the expansion of \first -\if \hbox\relax true\else false\fi -% Unexpandable control sequences test equal with ``if'' -| -\produces -\def\first{abc} -\if\first true\else false\fi; -% ``c'' is left over from the expansion of \first. -% It lands in the unexecuted ``true'' part. -\if a\first\ true\else false\fi; -% Here ``bc'' is left over from the expansion of \first -\if \hbox\relax true\else false\fi -% Unexpandable control sequences test equal with ``if'' -\endexample -\enddesc - -\begindesc -\ctspecial ifcat {\<token$_1$> \<token$_2$>}\ctsxrdef{@ifcat} -\explain -^^{category codes//testing} -This command tests if \<token$_1$> and \<token$_2$> -have the same \minref{category code}. -Before performing the test, \TeX\ expands tokens following the |\ifcat| -until it obtains two tokens that can't be expanded further. -These two tokens become \<token$_1$> and \<token$_2$>. -The expansion -includes replacing a control sequence |\let| equal to a character token -by that character token. -A \minref{control sequence} that can't be further expanded is -considered to have category code $16$. -\example -\ifcat axtrue\else false\fi; -\ifcat ]}true\else false\fi; -\ifcat \hbox\day true\else false\fi; -\def\first{12345} -\ifcat (\first true\else false\fi -% ``2345'' lands in the true branch of the test -| -\produces -\ifcat axtrue\else false\fi; -\ifcat ]}true\else false\fi; -\ifcat \hbox\day true\else false\fi; -\def\first{12345} -\ifcat (\first true\else false\fi -% ``2345'' lands in the true branch of the test -\endexample -\enddesc - -\begindesc -\ctspecial ifx {\<token$_1$> \<token$_2$>}\ctsxrdef{@ifx} -\explain -This command tests if \<token$_1$> and \<token$_2$> agree. -Unlike |\if| and |\ifcat|, |\ifx| does \emph{not} expand the tokens -following |\ifx|, so \<token$_1$> and \<token$_2$> are the two -tokens immediately after |\ifx|. -There are three cases: -\olist -\li If one token is a \minref{macro} and the other one isn't, -the tokens don't agree. -\li If neither token is a macro, the tokens agree if: -\olist -\li both tokens are characters (or control sequences denoting characters) and -their \minref{character} codes and \minref{category code}s agree, or -\li both tokens refer to the same \TeX\ command, -font, etc. -\endolist -\li If both tokens are macros, the tokens agree if: -\olist\compact -\li their ``first level'' expansions, i.e., -their replacement texts, are identical, and -\li they have the same status with respect to ^|\long| (\xref\long) -and ^|\outer| (\xref\outer). -\endolist -Note in particular that \emph{any two undefined control -sequences agree}. -\endolist -\noindent -This test is generally more useful than |\if|. -\example -\ifx\alice\rabbit true\else false\fi; -% true since neither \rabbit nor \alice is defined -\def\a{a}% -\ifx a\a true\else false\fi; -% false since one token is a macro and the other isn't -\def\first{\a}\def\second{\aa}\def\aa{a}% -\ifx \first\second true\else false\fi; -% false since top level expansions aren't the same -\def\third#1:{(#1)}\def\fourth#1?{(#1)}% -\ifx\third\fourth true\else false\fi -% false since parameter texts differ -| -\produces -\ifx\alice\rabbit true\else false\fi; -% true since neither \rabbit nor \alice is defined -\def\a{a}% -\ifx a\a true\else false\fi; -% false since one token is a macro and the other isn't -\def\first{\a}\def\second{\aa}\def\aa{a}% -\ifx \first\second true\else false\fi; -% false since top level expansions aren't the same -\def\third#1:{(#1)}\def\fourth#1?{(#1)}% -\ifx\third\fourth true\else false\fi -% false since parameter texts differ -\endexample -\enddesc - -\begindesc -\ctspecial ifnum {\<number$_1$> \<relation> \<number$_2$>}\ctsxrdef{@ifnum} -\explain -^^{numbers//comparing} -This command tests if \<number$_1$> and \<number$_2$> -satisfy \<relation>, which must be either `|<|', `|=|', or `|>|'. -The numbers can be constants such as |127|, count registers such as -|\pageno| or |\count22|, or numerical parameters such as |\hbadness|. -Before performing the test, \TeX\ expands tokens following the |\ifnum| -until it obtains a sequence of tokens having -the form \<number$_1$> \<relation> \<number$_2$>, followed by a token -that can't be part of \<number$_2$>. -\example -\count255 = 19 \ifnum \count255 > 12 true\else false\fi -| -\produces -\count255 = 19 \ifnum \count255 > 12 true\else false\fi -\endexample -\enddesc - -\begindesc -\ctspecial ifodd {\<number>}\ctsxrdef{@ifodd} -\explain -^^{numbers//testing for odd/even} -This command tests if \<number> is odd. -Before performing the test, \TeX\ expands tokens following the |\ifodd| -until it obtains a sequence of tokens having the form \<number>, -followed by a token that can't be part of \<number>. -\example -\count255 = 19 -\ifodd 5 true\else false\fi -| -\produces -\ifodd 5 true\else false\fi -\endexample -\enddesc - -\begindesc -\ctspecial ifdim {\<dimen$_1$> \<relation> \<dimen$_2$>}\ctsxrdef{@ifdim} -\explain -^^{dimensions//comparing} -This command tests if \<dimen$_1$> and \<dimen$_2$> -satisfy \<relation>, which must be either `|<|', `|=|', or `|>|'. -The dimensions can be constants such as |1in|, dimension registers -such as |\dimen6|, or dimension parameters such as |\parindent|. -Before performing the test, \TeX\ expands tokens following the |\ifdim| -until it obtains a sequence of tokens having -the form \<dimen$_1$> \<relation> \<dimen$_2$>, followed by a token -that can't be part of \<dimen$_2$>. - -\example -\dimen0 = 1000pt \ifdim \dimen0 > 3in true\else false\fi -| -\produces -\dimen0 = 1000pt \ifdim \dimen0 > 3in true\else false\fi -\endexample -\enddesc - -\begindesc -\ctspecial ifhmode {}\ctsxrdef{@ifhmode} -\ctspecial ifvmode {}\ctsxrdef{@ifvmode} -\ctspecial ifmmode {}\ctsxrdef{@ifmmode} -\ctspecial ifinner {}\ctsxrdef{@ifinner} -\explain -^^{horizontal mode//testing for} -^^{vertical mode//testing for} -^^{math mode//testing for} -^^{internal mode//testing for} -These commands test what \minref{mode} \TeX\ is in: -\ulist -\li |\ifhmode| is true if \TeX\ is in ordinary or restricted horizontal mode. -\li |\ifvmode| is true if \TeX\ is in ordinary or internal vertical mode. -\li |\ifmmode| is true if \TeX\ is in text math or display math mode. -\li |\ifinner| is true if \TeX\ is in an ``internal'' mode: -restricted horizontal, internal vertical, or text math. -\endulist -\example -\def\modes{{\bf - \ifhmode - \ifinner IH\else H\fi - \else\ifvmode - \ifinner \hbox{IV}\else \hbox{V}\fi - \else\ifmmode \hbox{M}\else - error\fi\fi\fi}} -Formula $\modes$; then \modes, - \hbox{next \modes\ and \vbox{\modes}}. -\par\modes -| -\produces -\def\modes{{\bf - \ifhmode - \ifinner IH\else H\fi - \else\ifvmode - \ifinner \hbox{IV}\fi - \else\ifmmode \hbox{M}\else - error\fi\fi\fi}} -Formula $\modes$; then \modes, - \hbox{next \modes\ and \vbox{\modes}}. -\par\noindent{\bf V} % sorry folks, we have to fake this one -\endexample -\enddesc - -\begindesc -\ctspecial ifhbox {\<register>}\ctsxrdef{@ifhbox} -\ctspecial ifvbox {\<register>}\ctsxrdef{@ifvbox} -\ctspecial ifvoid {\<register>}\ctsxrdef{@ifvoid} -\explain -^^{hboxes//testing for} -^^{vboxes//testing for} -^^{boxes//testing if void} -These commands test the contents of -the box register numbered \<reg\-ister>. -Let \<register> be $n$. Then: -\ulist -\li |\ifhbox| is true if |\box|$\,n$ is an \minref{hbox}. -\li |\ifvbox| is true if |\box|$\,n$ is an \minref{vbox}. -\li |\ifvoid| is true if |\box|$\,n$ is void, i.e, doesn't have -a box in it. -\endulist -\example -\setbox0 = \vbox{} % empty but not void -\setbox1 = \hbox{a} -\setbox2 = \box1 % makes box1 void -\ifvbox0 true\else false\fi; -\ifhbox2 true\else false\fi; -\ifvoid1 true\else false\fi -| -\produces -\setbox0 = \vbox{} -\setbox1 = \hbox{a} -\setbox2 = \box1 % empties box1 -\ifvbox0 true\else false\fi; -\ifhbox2 true\else false\fi; -\ifvoid1 true\else false\fi -\endexample -\enddesc - -\begindesc -\ctspecial ifeof {\<number>}\ctsxrdef{@ifeof} -\explain -^^{end of file, testing for} -\minrefs{file} -This command tests an input stream for end of file. -It is true if input stream \<number> has not been opened, -or has been opened and the associated file has been entirely read in -(or doesn't exist). -\enddesc - -\begindesc -\ctspecial ifcase -{\<number>\<case$_0$ text> {\bt \\or }\<case$_1$ text> {\bt \\or} - $\ldots$ {\bt \\or} \<case$_n$ text>\hfil\break -\hglue 3pc{\bt \\else} \<otherwise text> {\bt \\fi}} -\ctsxrdef{@ifcase} -\ctsxrdef{@or} -\explain -^^{case testing} -This command introduces a test with numbered multiple cases. -If \<num\-ber> has the value $k$, \TeX\ will expand \<case$_k$ text> if -it exists, and \<other\-wise text> if it doesn't. You can omit the |\else|---% -in this case, \TeX\ won't expand anything if none of the cases are satisfied. -\example -\def\whichday#1{\ifcase #1<day 0>\or Sunday\or Monday% - \or Tuesday\or Wednesday\or Thursday\or Friday% - \or Saturday\else Nonday\fi - \ is day \##1. } -\whichday2 \whichday3 \whichday9 -| -\produces -\def\whichday#1{\ifcase #1<day 0>\or Sunday\or Monday% - \or Tuesday\or Wednesday\or Thursday\or Friday% - \or Saturday\else Nonday\fi - \ is day \##1. } -\whichday2 \whichday3 \whichday9 -\endexample -\enddesc - -\begindesc -\ctspecial iftrue {}\ctsxrdef{@iftrue} -\ctspecial iffalse {}\ctsxrdef{@iffalse} -\explain -These commands are equivalent to tests that are always true or always -false. The main use of these commands is in defining macros that keep -track of the result of a test. -\example -\def\isbigger{\let\bigger=\iftrue} -\def\isnotbigger{\let\bigger=\iffalse} -% These \let's MUST be buried in macros!! If they aren't, -% TeX erroneously tries to match them with \fi. -\def\test#1#2{\ifnum #1>#2 \isbigger\else\isnotbigger\fi} -\test{3}{6} -\bigger$3>6$\else$3\le6$\fi -| -\produces -\def\isbigger{\let\bigger=\iftrue} -\def\isnotbigger{\let\bigger=\iffalse} -% These \let's MUST be buried in macros! -% If they aren't, TeX erroneously tries to match them with \fi -\def\test#1#2{\ifnum #1>#2 \isbigger\else\isnotbigger\fi} -\test{3}{6} -\bigger$3>6$\else$3\le6$\fi -\endexample -\enddesc - -\begindesc -\ctspecial else {} \ctsxrdef{@else} -\explain -This command introduces the ``false'' alternative of a conditional test. -\enddesc - -\begindesc -\ctspecial fi {} \ctsxrdef{@fi} -\explain -This command ends the text of a conditional test. -\enddesc - -\begindesc -\ctspecial newif {{\bt \\if}\<test name>}\ctsxrdef{@newif} -\explain -This command names a trio of control sequences with names |\alpha!-true|, -|\alphafalse|, -and |\ifalpha|, where |alpha| is \<test name>. -You can use them to define your own tests by -creating a logical variable that records -true\slash false information: -\ulist\compact -\li |\alphatrue| sets the logical variable |alpha| true. -\li |\alphafalse| sets the logical variable |alpha| false -\li |\ifalpha| is a conditional test that is true if the logical -variable |alpha| is true and false otherwise. -\endulist -The logical variable |alpha| doesn't really exist, but \TeX\ behaves as -though it did. After |\newif\ifalpha|, the logical variable is initially -false. - -|\newif| is an outer command, so you can't use it inside a macro -definition. -\example -\newif\iflong \longtrue -\iflong Rabbits have long ears. -\else Rabbits don't have long ears.\fi -| -\produces -\newif\iflong -\longtrue -\iflong Rabbits have long ears.\else Rabbits don't have long ears.\fi -\endexample -\eix^^{conditional tests} -\enddesc - - -%========================================================================== -\subsection {Repeated actions} - -{\def\test{{\bt \\if}$\Omega$}% -\begindesc -\bix^^{repeated actions} -\bix^^{loops} -\cts loop {$\alpha$ {\test} $\beta$ {\bt \\repeat}} -\ctspecial repeat {}\ctsxrdef{@repeat} -\explain -These commands provide a looping construct for \TeX. -Here $\alpha$ and $\beta$ are arbitrary sequences of commands -and \test\ is any of the conditional tests described in -\headcit{Conditional tests}{conds}. -The |\repeat| replaces the |\fi| corresponding to the test, -so you must not write an explicit |\fi| to terminate the test. -Nor, unfortunately, can you associate an |\else| with the test. -If you want to use the test in the opposite sense, you need to -rearrange the test or -define an auxiliary test with |\newif| (see above) and use that -test in the sense you want (see the second example below). - -\TeX\ expands |\loop| as follows: -\olist -\li $\alpha$ is expanded. -\li {\test} is performed. If the result is false, the loop is terminated. -\li $\beta$ is expanded. -\li The cycle is repeated. -\endolist -\example -\count255 = 6 -\loop - \number\count255\ - \ifnum\count255 > 0 - \advance\count255 by -1 -\repeat -| -\produces -\count255 = 6 -\loop - \number\count255\ - \ifnum\count255 > 0 - \advance\count255 by -1 -\repeat -\nextexample -\newif\ifnotdone % \newif uses \count255 in its definition -\count255=6 -\loop - \number\count255\ - \ifnum\count255 < 1 \notdonefalse\else\notdonetrue\fi - \ifnotdone - \advance\count255 by -1 -\repeat -| -\produces -\newif\ifnotdone -\count255=6 -\loop - \number\count255\ - \ifnum\count255 < 1 \notdonefalse\else\notdonetrue\fi - \ifnotdone - \advance\count255 by -1 -\repeat -% -\eix^^{repeated actions} -\eix^^{loops} -% -\endexample -\enddesc -} % end scope of definition of \test - -%========================================================================== -\subsection {Doing nothing} - -\begindesc -\cts relax {} -\explain -This command tells \TeX\ to do nothing. It's useful in a context where -you need to provide a command but there's nothing that you want \TeX\ to do. -\example -\def\medspace{\hskip 12pt\relax} -% The \relax guards against the possibility that -% The next tokens are `plus' or `minus'. -| - -\endexample -\enddesc - -\begindesc -\cts empty {} -\explain -This command expands to no tokens at all. -It differs from |\relax| in that it disappears after macro expansion. -% -\xrdef{mac2}% end the section on macros -\eix^^{macros} -\enddesc - -%========================================================================== -\section {Registers} - -%========================================================================== -\subsection {Using registers} - -\begindesc -\bix^^{registers} -\makecolumns 11/2: -\cts count {\<register> {\bt =} \<number>} -\cts dimen {\<register> {\bt =} \<dimen>} -\cts skip {\<register> {\bt =} \<glue>} -\cts muskip {\<register> {\bt =} \<muglue>} -\cts toks {\<register> {\bt =} \<token variable>} -\aux\cts toks {\<register> {\bt =} \rqbraces{\<token list>}} -\aux\cts count {\<register>} -\aux\cts dimen {\<register>} -\aux\cts skip {\<register>} -\aux\cts muskip {\<register>} -\aux\cts toks {\<register>} -\explain -^^{assignments//of registers} -The first six commands listed here assign something to a register. -The |=|'s in the assignments are optional. -The remaining five control sequences are not true commands -because they can only appear as part of an argument. -They yield the contents of the specified register. -Although you can't use these control sequences by themselves as commands -in text, you can use ^|\the| to convert them to text so that -you can typeset their values. - -You can name and reserve registers -with the ^|\newcount| command and its relatives -(\xref{\@newcount}). -Using these commands is a safe way to obtain registers that -are known not to have any conflicting usage. - -^^{count registers} -A |\count| register contains an integer, which can be either positive or -negative. -Integers can be as large as you're ever likely to need them to be.\footnote -{Here's the only exercise in this book: find out what's the largest -integer that \TeX\ will accept.} -\TeX\ uses count registers $0$--$9$ to keep track of the -page number (see \knuth{page~119}). -|\count255| is the only count register available for use -without a reservation. -\example -\count255 = 17 \number\count255 -| -\produces -\count255 = 17 \number\count255 -\endexample - -\medskip\noindent -^^{dimension registers} -A |\dimen| register contains a dimension. -Registers |\dimen0| through |\dimen9| and |\dimen255| are available -for scratch use. - -\example -\dimen0 = 2.5in -\hbox to \dimen0{$\Leftarrow$\hfil$\Rightarrow$} -| -\produces -\dimen0 = 2.5in -\hbox to \dimen0{$\Leftarrow$\hfil$\Rightarrow$} -\doruler{\8\8\8}3{in} -\endexample - -\medskip\noindent -^^{skip registers} -A |\skip| register contains the dimensions of glue. -Unlike a |\dimen| register, it -records an amount of shrink and stretch as well as a natural size. -Registers |\skip0| through |\skip9| and |\skip255| are available -for use without a reservation. - -\example -\skip2 = 2in -$\Rightarrow$\hskip \skip2 $\Leftarrow$ -| -\produces -\skip2 = 2in -$\Rightarrow$\hskip \skip2 $\Leftarrow$\par -\noindent\hphantom{$\Rightarrow$}\ruler{\8\8}2{in} -\endexample - -\medskip\noindent -^^{muskip registers} -A |\muskip| register is like a |\skip| register, -but the glue in it is always measured in ^|mu| -\seeconcept{mathematical unit}. -The size of a |mu| depends on the current font. -For example, it's usually a little -smaller in a subscript than in ordinary text. -Registers |\muskip0| through |\muskip9| and |\muskip255| are available -for use without a reservation. - -\example -\muskip0 = 24mu % An em and a half, no stretch or shrink. -$\mathop{a \mskip\muskip0 b}\limits^{a \mskip\muskip0 b}$ -% Note the difference in spacing. -| -\produces -\muskip0 = 24mu % an em and a half -$\mathop{a \mskip\muskip0 b}\limits^{a \mskip\muskip0 b}$ -% Note the difference in spacing -\endexample - -\medskip\noindent -^^{token registers} -You can assign either a token variable -(a register or a parameter) or a token list -to a |\toks| register. -When you assign a token list to a token register, -the tokens in the token list are \emph{not} expanded. - -Once the tokens in a token list have been inserted into text -using ^|\the|, they are -expanded just like tokens that were read in directly. -They have the category codes that they received when \TeX\ first -saw them in the~\hbox{input}. - -\example -\toks0 = {the \oystereaters\ were at the seashore} -% This assignment doesn't expand \oystereaters. -\def\oystereaters{Walrus and Carpenter} -\toks1 = \toks0 -% the same tokens are now in \toks0 and \toks1 -Alice inquired as to whether \the\toks1. -| -\produces -\toks0 = {the \oystereaters\ were at the seashore} -% This assignment doesn't expand \oystereaters -\def\oystereaters{Walrus and Carpenter} -\toks1 = \toks0 -% the same tokens are now in \toks0 and \toks1 -Alice inquired as to whether \the\toks1. -\endexample -\enddesc - -\begindesc -\cts maxdimen {} -\explain -^^{dimensions//maximum} -This control sequence yields a \<dimen> that is the -largest dimension acceptable to \TeX\ (nearly 18 feet). -It is not a true command because it can only appear as part of an argument -to another command. -\example -\maxdepth = \maxdimen % Remove restrictions on \maxdepth. -| -\endexample -\enddesc - -\see |\advance| (\xref\advance), |\multiply|, -|\divide| (\xref\divide), |\set!-box|, |\box| (\xref\box). - -%========================================================================== -\subsection {Naming and reserving registers, etc.} - -\begindesc -\bix^^{registers//reserving} -\makecolumns 11/2: -\ctspecial newcount \ctsxrdef{@newcount} -\ctspecial newdimen \ctsxrdef{@newdimen} -\ctspecial newskip \ctsxrdef{@newskip} -\ctspecial newmuskip \ctsxrdef{@newmuskip} -\ctspecial newtoks \ctsxrdef{@newtoks} -\ctspecial newbox \ctsxrdef{@newbox} -\ctspecial newread \ctsxrdef{@newread} -\ctspecial newwrite \ctsxrdef{@newwrite} -\ctspecial newfam \ctsxrdef{@newfam} -\ctspecial newinsert \ctsxrdef{@newinsert} -\ctspecial newlanguage \ctsxrdef{@newlanguage} -\explain -These commands -reserve and name an entity of the indicated type: -\ulist -{\tolerance = 5000 -\fontdimen3\the\font = 2\fontdimen3\the\font % allow spaces to stretch more -\li |\new!-count|, |\newdimen|, |\newskip|, |\new!-mu!-skip|, |\new!-toks|, -and |\new!-box| each reserve a \minref{register} of the indicated type. -} -^^{count registers//reserved by \b\tt\\newcount\e} -^^{dimension registers//reserved by \b\tt\\newdimen\e} -^^{skip registers//reserved by \b\tt\\newskip\e} -^^{muskip registers//reserved by \b\tt\\newmuskip\e} -^^{token registers//reserved by \b\tt\\newtoks\e} -^^{box registers//reserved by \b\tt\\newbox\e} -\li |\newread| and |\newwrite| reserve an input stream and -an output stream \minrefs{input stream}\minrefs{output stream} -respectively. -^^{input streams//reserved by \b\tt\\newread\e} -^^{output streams//reserved by \b\tt\\newwrite\e} -\li |\newfam| reserves a \minref{family} of math fonts. -^^{family//reserved by \b\tt\\newfam\e} -\li |\newinsert| reserves an insertion type. -(Reserving an insertion type involves reserving several different registers.) -^^{insertions//numbers reserved by \b\tt\\newinsert\e} -\li |\newlanguage| reserves a set of hyphenation patterns. -\endulist -You should use these commands whenever you need one of these entities, -other than in a very local region, -in order to avoid numbering conflicts. - -There's an important difference among these commands: -\ulist -\li The control sequences defined by -|\newcount|, |\newdimen|, |\newskip|, |\newmuskip|, and |\newtoks| -each designate an entity of the appropriate type. -For instance, after the command: -\csdisplay -\newdimen\listdimen -| -the control sequence |\listdimen| can be used as a dimension. -\li The control sequences defined by -|\newbox|, |\newread|, |\newwrite|, |\newfam|, |\newinsert|, -and |\newlanguage| each -evaluate to the \emph{number} of an entity of the appropriate type. -For instance, after the command: -\csdisplay -\newbox\figbox -| -the control sequence |\figbox| must be used in conjunction with -a |\box|-like command, e.g.: -\csdisplay -\setbox\figbox = \vbox{!dots} -| -\endulist -\enddesc - -\begindesc -\cts countdef {\<control sequence> {\bt =} \<register>} -\cts dimendef {\<control sequence> {\bt =} \<register>} -\cts skipdef {\<control sequence> {\bt =} \<register>} -\cts muskipdef {\<control sequence> {\bt =} \<register>} -\cts toksdef {\<control sequence> {\bt =} \<register>} -\explain -These commands define \<control sequence> to refer to the -\minref{register} of the indicated category whose number is \<register>. -Normally you should use the commands in the previous group -(|\newcount|, etc.) in preference to these commands in order to avoid -numbering conflicts. The commands in the previous group are -defined in terms of the commands \hbox{in this group}. -\example -\countdef\hatters = 19 % \hatters now refers to \count19 -\toksdef\hares = 200 % \hares now refers to \toks200 -| -\endexample -\enddesc - -\see |\newif| (\xref{\@newif}), |\newhelp| (\xref{\@newhelp}). -\eix^^{registers//reserving} - -%========================================================================== -\subsection {Doing arithmetic in registers} - -\begindesc -\bix^^{arithmetic} -\bix^^{registers//arithmetic in} -% -\cts advance {\<count register> {\bt by} \<number>} -\aux\cts advance {\<dimen register> {\bt by} \<dimen>} -\aux\cts advance {\<skip register> {\bt by} \<glue>} -\aux\cts advance {\<muskip register> {\bt by} \<muglue>} -\explain -This command adds a compatible quantity to a register. For \<glue> -or \<muglue> all three components (natural value, stretch, and shrink) -\minrefs{glue} are added. -Any of the quantities can be negative. For purposes of these calculations -(and other assignments as well), \<glue> can be converted to a -\<dimen> by dropping the stretch and shrink, and a \<dimen> can be converted -to a \<number> by taking its value in scaled points -\seeconcept{dimension}. -You can omit the word |by| in these commands---\TeX\ will understand them -anyway. -\example -\count0 = 18 \advance\count0 by -1 \number\count0\par -\skip0 = .5in \advance\skip0 by 0in plus 1in % add stretch -\hbox to 2in{a\hskip\skip0 b} -| -\produces -\count0 = 18 \advance\count0 by -1 \number\count0\par -\skip0 = .5in \advance\skip0 by 0in plus 1in % add stretch -\hbox to 2in{a\hskip\skip0 b} -\doruler{\8\8}2{in} -\endexample -\enddesc - -\begindesc -\cts multiply {\<register> {\bt by} \<number>} -\cts divide {\<register> {\bt by} \<number>} -\explain -These commands multiply and divide the value in \<register> -by \<number> (which can be negative). -The register can be a ^|\count|, ^|\dimen|, ^|\skip|, or ^|\muskip| -register. -For a ^|\skip| or ^|\muskip| register (\xref\skip), -all three components of the \minref{glue} in the register are modified. -You can omit the word |by| in these commands---\TeX\ will understand them -anyway. - -You can also obtain a multiple of a \<dimen> by preceding it by a \<number> -\minrefs{number} -or decimal constant, e.g., -|-2.5\dimen2|. -You can also use this notation for \<glue>, but watch out---the result -is a \<dimen>, not \<glue>. -Thus |2\baselineskip| yields a \<dimen> that is twice the natural size -of |\baselineskip|, with no stretch or shrink. -\example -\count0 = 9\multiply \count0 by 8 \number\count0 ; -\divide \count0 by 12 \number\count0 \par -\skip0 = 20pt plus 2pt minus 3pt \multiply \skip0 by 3 -Multiplied value of skip0 is \the\skip0.\par -\dimen0 = .5in \multiply\dimen0 by 6 -\hbox to \dimen0{a\hfil b} -| -\produces -\count0 = 9\multiply \count0 by 8 \number\count0 ; -\divide \count0 by 12 \number\count0 \par -\skip0 = 20pt plus 2pt minus 3pt \multiply \skip0 by 3 -Multiplied value of skip0 is \the\skip0.\par -\dimen0 = .5in \multiply\dimen0 by 6 -\hbox to \dimen0{a\hfil b} -\doruler{\8\8\8}3{in} -\endexample - -\eix^^{arithmetic} -\eix^^{registers//arithmetic in} -\eix^^{registers} -\enddesc - -%========================================================================== -\section {Ending the job} - -\begindesc -^^{ending the job} -\easy\ctspecial bye \ctsxrdef{@bye} -\explain -This command tells \TeX\ to fill out and produce the last page, print -any held-over \minref{insertion}s, and end the job. -It is the usual way to end your input file. -\enddesc - -\begindesc -\cts end {} -\explain -This command tells \TeX\ to produce the last page and end the job. -It does not fill out the page, however, -so it's usually better to use |\bye| rather than |\end|. -\enddesc - -%========================================================================== -\section {Input and output} - -%========================================================================== -\subsection {Operations on input files} - -\begindesc -\bix^^{files} -\bix^^{input files} -\easy\cts input {\<filename>} -\explain -\minrefs{file}\minrefs{file name} -This command tells \TeX\ to read its input from file \<filename>. -When that file is exhausted, \TeX\ returns to reading from its previous -input source. You can nest input files to any level you like -(within reason). - -When you're typesetting a large document, it's usually a good idea to -structure your main file as a sequence of |\input| commands that refer -to the subsidiary parts of the document. That way you can process the -individual parts easily as you're working on drafts. It's also a good -practice to put all of your \minref{macro} definitions into a separate file and -summon that file with an |\input| command as the first action in your -main file. - -\TeX\ uses different rules for scanning file names than it does for scanning -\minref{token}s in general (see \xref{file name}). -If your implementation expects file names to have extensions (usually -indicated by a preceding dot), then \TeX\ provides a default extension -of |.tex|. -\example -\input macros.tex -\input chap1 % equivalent to chap1.tex -| -\endexample -\enddesc - -\begindesc -\cts endinput {} -\explain -This command tells \TeX\ to stop reading input from the current file when it -next reaches the end of a line. -\enddesc - -\begindesc -\cts inputlineno {} -\explain -This command yields a number (not a string) giving the line number of the -current line, defined to be the number that would appear in an error message -if an error occurred at this point. -\enddesc - -\begindesc -\cts openin {\<number> {\bt =} \<filename>} -\explain -This command tells \TeX\ to open the file named \<filename> -and make it available for reading via the input stream -designated by \<number>. -^^{input streams//opening} -\<number> must be between $0$ and $15$. -Once you've opened a file and connected it to an input stream, -you can read from the file using the |\read| command -with the input stream's number. - -You can associate more than one input stream with the same -file. You can then read from several different positions within -the file, one for each input stream. - -You should allocate stream numbers for |\openin| using -|\new!-read| (\xref{\@newread}). -\example -\newread\auxfile \openin\auxfile = addenda.aux -% \auxfile now denotes the number of this opening -% of addenda.aux. -| -\endexample -\enddesc - -\begindesc\secondprinting{\vglue-.5\baselineskip\vskip0pt} -\cts closein {\<number>} -\explain -This command tells \TeX\ to close the \minref{input stream} numbered -\<number>, i.e., -end the association between the input stream and its file. -The input stream with this number then becomes available for use with a -different file. -You should close an input stream once you're finished using its file. -\example -\closein\auxfile -| -\endexample -\enddesc - -\begindesc\secondprinting{\vglue-.5\baselineskip\vskip0pt} -\cts read {\<number> {\bt to} \<control sequence>} -\explain -^^{input streams//reading with \b\tt\\read\e} -^^{reading a file} -This command tells \TeX\ to read a line from the file -associated with the \minref{input stream} -designated by \<number> and assign the tokens on that line to -\<control sequence>. The \minref{control sequence} then becomes a -parameterless \minref{macro}. No macro expansion takes place -during the reading operation. If the line contains any unmatched -left braces, \TeX\ will read additional lines until the braces are -all matched. If \TeX\ reaches the end of the file without matching all the -braces, it will complain. - -If \<number> is greater than $15$ or hasn't been associated with a file -using ^|\openin|, \TeX\ prompts you with `\<control sequence> |=|' -on your terminal and waits for you to type a line of input. -It then assigns the input line to \<control sequence>. -If \<number> is less than zero, it reads a line of input from your -terminal but omits the prompt. -\example -\read\auxfile to \holder -% Expanding \holder will produce the line just read. -| -\endexample -\eix^^{input files} -\enddesc - -\secondprinting{\vfill\eject} - - -%========================================================================== -\subsection {Operations on output files} - -\bix^^{output files} -\begindesc -\cts openout {\<number> {\bt =} \<filename>} -\explain -^^{output streams//opening} -This command tells \TeX\ to open the file named \<filename> -and make it available for writing via the \minref{output stream} -designated by \<number>. -\<number> must be between $0$ and $15$. -Once you've opened a file and connected it to an output stream, -you can write to the file using the |\write| command -with the output stream's number. - -An |\openout| generates a whatsit that becomes part of a box. -The |\openout| does not take effect until \TeX\ ships out that box -to the \dvifile, -unless you've preceded the |\openout| with ^|\immediate|. - -\TeX\ won't complain if you associate more than one output stream with the -same file, but you'll get garbage in the file if you try it! - -You should allocate stream numbers for |\openout| using -|\newwrite| (\xref{\@newwrite}). -\example -\newwrite\auxfile \openout\auxfile = addenda.aux -% \auxfile now denotes the number of this opening -% of addenda.aux. -| -\endexample -\enddesc - -\begindesc -\cts closeout {\<number>} -\explain -^^{output streams//closing} -This command tells \TeX\ to close the \minref{output stream} numbered -\<number>. i.e., -end the association between the output stream and its file. -The output stream with this number then becomes available for use with a -different file. -You should close an output stream once you're finished using its file. - -A |\closeout| generates a whatsit that becomes part of a box. -The |\closeout| does not take effect until \TeX\ ships out that box -to the \dvifile, -unless you've preceded the |\closeout| with ^|\immediate|. -\example -\closeout\auxfile -| -\endexample -\enddesc - -\begindesc -\cts write {\<number> \rqbraces{\<token list>}} -\explain -^^{output streams//writing} -^^{writing a file} -This command tells \TeX\ to write \<token list> to the file -associated with the \minref{output stream} -designated by \<number>. -It generates a whatsit that becomes part of a box. -The actual writing does not take place until \TeX\ ships out that box -to the \dvifile, -unless you've preceded the |\write| with ^|\immediate|. - -For a |\write| that is not immediate, \TeX\ does not expand macros in -\<token list> until the token list is actually written to the file. -The macro expansions follow the same rules as |\edef| (\xref\edef). -In particular, any control sequence that is not -the name of a macro is written as -^|\escapechar| followed by the control sequence name -and a space. Any `|#|' tokens -in \<token list> are doubled, i.e., written as `|##|'. - -If \<number> is not in the range from $0$ to $15$, \TeX\ writes -\<token list> to the log file. -^^{log file//written by \b\tt\\write\e} -If \<number> is greater than $15$ or isn't associated with an output -stream, \TeX\ also writes \<token list> to the terminal. -\example -\def\aa{a a} -\write\auxfile{\hbox{$x#y$} \aa} -% Writes the string `\hbox {$x##y$} a a' to \auxfile. -| -\endexample -\enddesc - -\begindesc -\cts immediate {} -\explain -This command should precede an |\openout|, |\closeout|, or |\write|. -^^|\write//with {\tt\\immediate}| -^^|\openout//with {\tt\\immediate}| -^^|\closeout//with {\tt\\immediate}| -It tells \TeX\ to perform the specified file operation without delay. -\example -\immediate\write 16{I'm stuck!!} -% has the same effect as \message -| -\endexample\enddesc - -\begindesc -\cts special {\rqbraces{\<token list>}} -\explain -This command tells \TeX\ to -write \<token list> directly to the \dvifile\ when it next -ships out a page. -A typical use of |\special| would be to tell the device driver to incorporate -the contents of a named graphics file into the output page. -^^{device drivers//instructions from \b\tt\\special\e} -The |\special| command produces a whatsit that associates -\<token list> with a particular position on the page, namely, -the position that a zero-size box would have had if such a box -had appeared instead of the |\special| command. -Any use you might make of |\special| depends strictly on -the ^{device drivers} that you have available. -\example -\special{graphic expic} -% Display the graphics file `expic' here. -| -\endexample -\enddesc - -\begindesc -\cts newlinechar {\param{number}} -\explain -This parameter contains a character that indicates a new line on -output. When \TeX\ encounters this character -while reading the argument of -a |\write|, |\message|, or -|\errmessage| command, it starts a new line. -If |\newlinechar| is not in the range $0$--$255$, -there is no character that indicates -a new line on output. -\PlainTeX\ sets |\newlinechar| to $-1$. -\example -\newlinechar = `\^^J -\message{This message appears^^Jon two lines.} -| -\logproduces -This message appears -on two lines. -| -\endexample -\enddesc - -\see |\newread|, |\newwrite| (\xref{\@newwrite}). -\eix^^{files} -\eix^^{output files} - -%========================================================================== -\subsection {Interpreting input characters} - -\begindesc -\cts catcode {\<charcode> \tblentry{number}} -\explain -^^{category codes//in \b\tt\\catcode\e\ table} -This table entry contains the \minref{category code} of the character -whose \ascii\ code is \<charcode>. -The category codes are listed on \xrefpg{catcodes}. -By changing the category code of a character you can get \TeX\ to treat -that character differently. -\example -\catcode `\[ = 1 \catcode `\] = 2 -% Make [ and ] act like left and right braces. -| -\endexample -\enddesc - -\begindesc -\cts active {} -\explain -This command contains the -category code for an active character, namely, the number $13$. -\example -\catcode `\@ = \active % Make @ an active character. -| -\endexample -\enddesc - -\begindesc -\cts mathcode {\<charcode> \tblentry{number}} -\explain -This table entry contains the \minref{mathcode} of the character -whose \ascii\ code is \<charcode> \seeconcept{mathcode}. -The mathcode specifies that character's interpretation in math mode. -\example -\mathcode\> = "313E % as in plain TeX -% The > character has class 3 (relation), family 1 (math -% italic), and character code "3E -| -\endexample -\enddesc - -\begindesc -\margin{{\tt\\delcode} was explained in two places. This explanation -combines them. (The other place was in the math section.)} -\cts delcode {\<charcode>\tblentry{number}} -\explain -^^{delimiter codes} -This table entry specifies the \minref{delimiter} code for the input character -whose \ascii\ code is \<charcode>. -The delimiter code tells \TeX\ how to find the best output character to use -for typesetting the indicated input character as a delimiter. - -\<number> is normally written in hexadecimal notation. -Suppose that \<number> is the hexadecimal number $s_1s_2s_3\, -l_1l_2l_3$. Then when the character is used as a delimiter, -\TeX\ takes the character to have small variant -$s_1s_2s_3$ and large variant $l_1l_2l_3$. Here $s_1s_2s_3$ indicates -the math character found in position $s_2s_3$ of family $s_1$, and -similarly for $l_1l_2l_3$. This is the same convention as the one -used for ^|\mathcode| (\xref \mathcode), -except that |\mathcode| also specifies a class. -\example -\delcode `( = "028300 % As in plain TeX. -| -\endexample -\enddesc - -\begindesc -\cts endlinechar {\param{number}} -\explain -This parameter -contains the character code for the character that -\TeX\ appends to the end of each input line. -^^{input lines} -A value not in the range $0$--$255$ -indicates that no character should be appended. -\PlainTeX\ leaves |\end!-line!-char| at -|`\^^M| (the {\ascii} code for \asciichar{return}). -\enddesc - -\begindesc -\cts ignorespaces {} -\explain -This command tells \TeX\ to read and expand tokens until it finds one that -is not a space \minref{token}, ignoring any space tokens -that it finds on the way. -|\ignorespaces| is often useful at the end of a \minref{macro} as a way -of making the macro insensitive to any spaces or ends of line -that might follow calls on it. -(An empty line after |\ignorespaces| still produces a |\par| token, -however.) -\example -\def\aa#1{yes #1\ignorespaces} -\aa{may} -be -| -\produces -\def\aa#1{yes #1\ignorespaces} -\aa{may} -be -\endexample -\enddesc - -%========================================================================== -\section {Controlling interaction with \TeX} - -\begindesc -\bix^^{controlling \TeX} -\bix^^{running \TeX} -\cts errorstopmode {} -\explain -This command tells \TeX\ -to stop for interaction whenever it finds an error. -This is the normal mode of operation. -\enddesc - -\begindesc -\cts scrollmode {} -\explain -This command tells \TeX\ -not to stop for most errors, -but to continue displaying the error messages on your terminal. -Typing `|S|' or `|s|' in response to an error message puts you -into scroll mode. -\enddesc - -\begindesc -\cts nonstopmode {} -\explain -This command tells \TeX\ -not to stop for errors, even those pertaining to files that -it can't find, but to continue displaying the error messages on your terminal. -Typing `|R|' or `|r|' in response to an error message puts you -into nonstop mode. -\enddesc - -\begindesc -\cts batchmode {} -\explain -This command tells \TeX\ -not to stop for errors and to suppress all further output to your terminal. -Typing `|Q|' or `|q|' in response to an error message puts you -into batch mode. -\enddesc - -\begindesc -\cts pausing {\param{number}} -\explain -If this parameter is greater than zero, \TeX\ will pause -at each line of input to give you an opportunity to -replace it with a different line. If you type in a replacement, -\TeX\ will use that line instead of the original one; if you respond -with \asciichar{return}, \TeX\ will use the original line. - -Setting |\pausing| to $1$ can be useful as a way of patching a document as -\TeX\ is processing it. For example, -you can use this facility to insert ^|\show| commands (see below). -\eix^^{running \TeX} -\eix^^{controlling \TeX} -\enddesc - -%========================================================================== -\section {Diagnostic aids} - -\subsection{Displaying internal data} - -\begindesc -\bix^^{tracing} -\bix^^{debugging} -\bix^^{diagnostic aids} -\cts show {\<token>} -\cts showthe {\<argument>} -\cts showbox {\<number>} -\cts showlists {} -\explain -These commands record information in the log of your \TeX\ run: -\ulist -\li |\show| records the meaning of \<token>.\minrefs{token} -^^{tokens//displayed by \b\tt\\show\e} -\li |\showthe| records - whatever tokens would be produced by -|\the| \<arg\-u\-ment> (see \xref \the). -\li |\showbox| records the contents of the \minref{box} -\minref{register} numbered \<num\-ber>. -The number of -leading dots in the log indicates the number of -levels of nesting of inner boxes. -\li |\showlists| records -the contents of each list that \TeX\ is currently constructing. -(These lists are nested one within another.) -See \knuth{pages~88--89} for further information about interpreting -the output of |\showlists|. -\endulist -For |\show| and |\showthe|, \TeX\ also displays the information at your -^{terminal}. -For |\showbox| and |\showlists|, \TeX\ displays the information at your -terminal only -if ^|\tracingonline| (\xref \tracingonline) is greater than zero; -if ^|\tracingonline| is zero or less (the default case), -the information is not displayed. - -Whenever \TeX\ encounters a |\show|-type command it -stops for interaction. The request for interaction does \emph{not} -indicate an error, but it does give you an opportunity to ask \TeX\ to -show you something else. If you don't want to see anything else, just -press \asciichar{return}. - -You can control the amount of output produced by |\showbox| by setting -|\show!-box!-breadth| and |\show!-box!-depth| (\xref\showboxbreadth). -^^|\showboxbreadth| ^^|\showboxdepth| -These parameters respectively have default values of $5$ -and $3$, which is why -just five items appear for each box described -in the log output below. (The `|..etc.|' indicates additional items -within the boxes that aren't displayed.) -\example -\show a -\show \hbox -\show \medskip -\show & -| -\logproduces -> the letter a. -> \hbox=\hbox. -> \medskip=macro: -->\vskip \medskipamount . -> alignment tab character &. -| -\nextexample -\showthe\medskipamount -\toks27={\hbox{Joe's\quad\ Diner}} -\showthe\toks27 -| -\logproduces -> 6.0pt plus 2.0pt minus 2.0pt. -> \hbox {Joe's\quad \ Diner}. -| -\nextexample -\setbox 3=\vbox{\hbox{A red dog.}\hrule A black cat.} -\showbox 3 -| -\logproduces -> \box3= -\vbox(16.23332+0.0)x53.05565 -.\hbox(6.94444+1.94444)x46.41675 -..\tenrm A -..\glue 3.33333 plus 1.66498 minus 1.11221 -..\tenrm r -..\tenrm e -..\tenrm d -..etc. -.\rule(0.4+0.0)x* -.\hbox(6.94444+0.0)x53.05565 -..\tenrm A -..\glue 3.33333 plus 1.66498 minus 1.11221 -..\tenrm b -..\tenrm l -..\tenrm a -..etc. -| -\endexample -\vfil\eject -\example -\vbox{A \hbox - {formula - $x \over y\showlists$}} -| -\logproduces -### math mode entered at line 3 -\mathord -.\fam1 y -this will be denominator of: -\fraction, thickness = default -\\mathord -\.\fam1 x -### restricted horizontal mode entered at line 2 -\tenrm f -\tenrm o -\tenrm r -\tenrm m -\kern-0.27779 -\tenrm u -\tenrm l -\tenrm a -\glue 3.33333 plus 1.66666 minus 1.11111 -spacefactor 1000 -### horizontal mode entered at line 1 -\hbox(0.0+0.0)x20.0 -\tenrm A -\glue 3.33333 plus 1.66498 minus 1.11221 -spacefactor 999 -### internal vertical mode entered at line 1 -prevdepth ignored -### vertical mode entered at line 0 -prevdepth ignored -| -\endexample -\enddesc - -\see |\showboxbreadth|, |\showboxdepth| \ctsref\showboxbreadth. - -\subsection{Specifying what is traced} - -\begindesc -\cts tracingonline {\param{number}} -\explain -If this parameter is greater than zero, -\TeX\ will display the results of tracing -(including ^|\showbox| and ^|\showlists|) -at your terminal in addition to recording them in the log file. -\enddesc - -\begindesc -\cts tracingcommands {\param{number}} -\explain -If this parameter is $1$ or greater, -\TeX\ will record in the log file most commands that it executes. -If ^|\tracingonline| is greater than zero, this information will also appear -at your terminal. -Typesetting the first character of a word counts as a command, -but (for the purposes of the trace only) -the actions of typesetting the subsequent characters -and any punctuation following them -do not count as commands. -If |\tracingcommands| is $2$ or greater, -\TeX\ will also record commands that are expanded -rather than executed, e.g., conditional tests and their outcomes. -\example -\tracingcommands = 1 If $x+y>0$ we quit.\par -On the other hand, \tracingcommands = 0 -| -\logproduces -{vertical mode: the letter I} -{horizontal mode: the letter I} -{blank space } -{math shift character $} -{math mode: the letter x} -{the character +} -{the letter y} -{the character >} -{the character 0} -{math shift character $} -{horizontal mode: blank space } -{the letter w} -{blank space } -{the letter q} -{blank space } -{\par} -{vertical mode: the letter O} -{horizontal mode: the letter O} -{blank space } -{the letter t} -{blank space } -{the letter o} -{blank space } -{the letter h} -{blank space } -{\tracingcommands} -| -\endexample -\enddesc - -\begindesc -\cts tracinglostchars {\param{number}} -\explain -If this parameter is greater than zero, -\TeX\ will record an indication in the log file of each time -that it drops an output character because that character does not exist -in the current font. -If ^|\tracingonline| is greater than zero, this information will also appear -at your terminal. -\PlainTeX\ defaults it to $1$ (unlike the others). -\example -\tracinglostchars = 1 -A {\nullfont few} characters. -| -\logproduces -Missing character: There is no f in font nullfont!! -Missing character: There is no e in font nullfont!! -Missing character: There is no w in font nullfont!! -| -\endexample -\enddesc - -\begindesc -\cts tracingmacros {\param{number}} -\explain -If this parameter is $1$ or greater, -\TeX\ will record in the log file the expansion and arguments -of every macro that it executes. -^^{macros//tracing} -If |\tracingmacros| is $2$ or greater, -\TeX\ will record, in addition, -every expansion of a \minref{token} list such as -|\output| or |\everycr|. -If ^|\tracingonline| is greater than zero, this information will also appear -at your terminal. -\example -\def\a{first \b, then \c} -\def\b{b} \def\c{c} -\tracingmacros = 2 -Call \a once. -| -\logproduces -\a ->first \b , then \c - -\b ->b - -\c ->c -| -\endexample -\enddesc - -\begindesc -\cts tracingoutput {\param{number}} -\explain -If this parameter is greater than zero, -\TeX\ will record in the log file the contents of every box that -it sends to the \dvifile. -^^{\dvifile//boxes recorded in log file} -If ^|\tracingonline| is greater than zero, this information will also appear -at your terminal. -The number of leading dots in each line of the trace output indicates -the nesting level of the box at that line. -You can control the amount of tracing by setting -^|\showboxbreadth| and ^|\showboxdepth| (\xref\showboxbreadth). - -Setting |\tracingoutput| to $1$ can be particularly helpful when you're trying -to determine why you've gotten ^{extra space} on a page. - -\example -% This is the entire file. -\tracingoutput = 1 \nopagenumbers -One-line page. \bye -| -\logproduces -Completed box being shipped out [1] -\vbox(667.20255+0.0)x469.75499 -.\vbox(0.0+0.0)x469.75499, glue set 13.99998fil -..\glue -22.5 -..\hbox(8.5+0.0)x469.75499, glue set 469.75499fil -...\vbox(8.5+0.0)x0.0 -...\glue 0.0 plus 1.0fil -..\glue 0.0 plus 1.0fil minus 1.0fil -.\vbox(643.20255+0.0)x469.75499, glue set 631.2581fill -..\glue(\topskip) 3.05556 -..\hbox(6.94444+1.94444)x469.75499, glue set 386.9771fil -...\hbox(0.0+0.0)x20.0 -...\tenrm O -...\tenrm n -...\tenrm e -...\tenrm - -...etc. -..\glue 0.0 plus 1.0fil -..\glue 0.0 plus 1.0fill -.\glue(\baselineskip) 24.0 -.\hbox(0.0+0.0)x469.75499, glue set 469.75499fil -..\glue 0.0 plus 1.0fil -| -\endexample -\enddesc - -\begindesc -\cts tracingpages {\param{number}} -\explain -If this parameter is greater than zero, -\TeX\ will record in the log file its calculations of the cost of -various page breaks that it tries. -^^{page breaks//tracing} -If |\tracing!-online| ^^|\tracingonline| -is greater than zero, this information will also appear -at your terminal. -\TeX\ produces a line of this output -whenever it first places a box or \minref{insertion} -on the current page list, and also whenever it processes a potential -break point for the page. -Examining this output can be helpful when you're trying to determine -the cause of a bad page break. -See \knuth{pages~112--114} for an illustration and explanation of -this output. - -Some production forms of \TeX\ ignore the value of |\tracingpages| -so that they can run faster. -If you need to use this parameter, be sure to use a form that -responds to it. -\enddesc - -\begindesc -\cts tracingparagraphs {\param{number}} -\explain -If this parameter is greater than zero, -\TeX\ will record in the log file its calculations of the cost of -various line breaks that it tries. -^^{line breaking//tracing} -If ^|\tracingonline| is greater than zero, this information will also appear -at your terminal. -\TeX\ produces this output when it reaches the end of each paragraph. -See \knuth{pages~98--99} for an illustration and explanation of -this output. - -Some production forms of \TeX\ ignore the value of |\tracing!-para!-graphs| -so that they can run faster. -If you need to use this parameter, be sure to use a form that -responds to it. -\enddesc - -\begindesc -\cts tracingrestores {\param{number}} -\explain -If this parameter is greater than zero, -\TeX\ will record in the log file -the values that it restores when it encounters the end of a \minref{group}. -If ^|\tracingonline| is greater than zero, this information will also appear -at your terminal. - -Some production forms of \TeX\ ignore the value of |\tracing!-restores| -so that they can run faster. -If you need to use this parameter, be sure to use a form that -responds to it. -\enddesc - -\begindesc -\cts tracingstats {\param{number}} -\explain -If this parameter is $1$ or greater, \TeX\ will -include a report on the resources that it used to run your job -(see \knuth{page~300} for a list and explanation of these resources). -Moreover, if |\tracingstats| is $2$ or greater, -\TeX\ will report on its memory usage whenever it does a -^|\shipout| (\xref \shipout) for a page. -The report appears at the end of the log file. -^^{log file//tracing statistics in} -If ^|\tracingonline| is greater than zero, the information will also appear -at your terminal. -If you're having trouble with \TeX\ exceeding one of its -capacities, the information provided by |\tracingstats| may help you -pinpoint the cause of the difficulty. - -Some production forms of \TeX\ ignore the value of |\tracingstats| -so that they can run faster. -If you need to use this parameter, be sure to use a form that -responds to it. - -The following example shows a sample of -the tracing output you'd get on one implementation -of \TeX. It may be different on other implementations. -{\codefuzz = 1in -\example -\tracingstats=1 -| -\logproduces -Here is how much of TeX's memory you used: - 4 strings out of 5540 - 60 string characters out of 72328 - 5956 words of memory out of 262141 - 921 multiletter control sequences out of 9500 - 14794 words of font info for 50 fonts, out of 72000 for 255 - 14 hyphenation exceptions out of 607 - 7i,4n,1p,68b,22s stack positions out of 300i,40n,60p,3000b,4000s -| -\endexample -}% end scope of codefuzz -\enddesc - -\begindesc -\cts tracingall {} -\explain -This command tells \TeX\ to -turn on every available form of tracing. -It also sets ^|\tracingonline| to $1$ so that the trace output will appear -at your terminal. -\enddesc - -\begindesc -\cts showboxbreadth {\param{number}} -\explain -This parameter specifies the maximum number of list items -that \TeX\ displays for one level of one box when it is producing -the output for ^|\showbox| or ^|\tracingoutput|. -\PlainTeX\ sets |\showboxbreadth| to $5$. -\enddesc - -\begindesc -\cts showboxdepth {\param{number}} -\explain -This parameter specifies the -level of the deepest list that \TeX\ displays when -it is producing the output for ^|\showbox| or ^|\showlists|. -\PlainTeX\ sets |\showboxdepth| is $3$. -\eix^^{tracing} -\eix^^{debugging} -\eix^^{diagnostic aids} -\enddesc - -%========================================================================== -\subsection {Sending messages} - -\begindesc -\bix^^{messages, sending} -\bix^^{error messages} -\cts message {\rqbraces{\<token list>}} -\cts errmessage {\rqbraces{\<token list>}} -\explain -These commands display the message given by \<token list> on your -terminal and also enter it into the log. Any \minref{macro}s in the -message are expanded, but no commands are executed. This is the same rule -that \TeX\ uses for |\edef| (\xref \edef). - -For |\errmessage|, \TeX\ pauses -in the same way that it does for one of its own error messages -and displays the |\errhelp| tokens if you ask for help. - -You can generate multiline messages by using the ^|\newlinechar| -character (\xref \newlinechar). -\example -\message{Starting a new section.} -| -\endexample -\enddesc - -\begindesc -\cts wlog {\rqbraces{\<token list>}} -\explain -This command writes \<token list> on the log file. -^^{log file//written by \b\tt\\wlog\e} -\minrefs{log file} -\TeX\ expands \<token list> according to the same rules that it uses -for |\edef| (\xref\edef). -\example -\wlog{Take two aspirins and call me in the morning.} -| -\logproduces -Take two aspirins and call me in the morning. -| -\endexample -\enddesc - -\begindesc -\cts errhelp {\param{token list}} -\explain -This parameter contains the token list that \TeX\ displays -when you ask for help in response to an |\errmessage| command. -We recommend that when -you're generating an error message with |\errmessage|, you -set |\errhelp| to a string that describes the nature of the -error and use |\newhelp| to produce that string. -You can use the ^|\newlinechar| character to produce multiline messages. -\enddesc - -\begindesc -\ctspecial newhelp \ctsxrdef{@newhelp} {\<control sequence> - \rqbraces{\<help text>}} -\explain -This command assigns the ^{help message} given by \<help text> to -\<control sequence>. It provides an efficient way of defining -the ^{help text} that further explains an error message. -Before issuing the error message with the |\errmessage| command, -you should assign \<control sequence> to ^|\errhelp|. The help text -will then appear if the user types `|H|' -or `|h|' in response to the error message. -\example -\newhelp\pain{Your input includes a token that I find^^J - to be offensive. Don't bother me again with this^^J - document until you've removed it.} -\errhelp = \pain \newlinechar = `\^^J -% ^^J will start a new line -\errmessage{I do not appreciate receiving this token} -| -\logproduces -!! I do not appreciate receiving this token. -l.8 ...t appreciate receiving this token.} - -? H -\Your input includes a token that I find - to be offensive. Don't bother me again with this - document until you've removed it. -| -\endexample -\enddesc - -\begindesc -\cts errorcontextlines {\param{number}} -\explain -This parameter determines the number of pairs of context lines, -not counting the top and bottom pairs, that \TeX\ prints when it -encounters an error. By setting it to $0$ you can get rid of long -error messages. -You can still force out the full context by typing something like: -\csdisplay -I\errorcontextlines=100\oops -| -in response to an error, -since the undefined control sequence |\oops| will cause another error. -\PlainTeX\ sets |\error!-context!-lines| to $5$. -\enddesc - -\see |\write| (\xref \write), |\escapechar| (\xref \escapechar). -\eix^^{messages, sending} -\eix^^{error messages} - -%========================================================================== -\section {Initializing \TeX} - -\begindesc -\cts dump {} -\explain -This command, which must not appear inside a group, dumps the -contents of \TeX's memory -to a ^{format file} (\xref{format file}). -By using ^|virtex|, a special ``virgin'' form of \TeX, -you can then reload the format file at high speed and -continue in the same state that \TeX\ was in at the time of the dump. -|\dump| also ends the run. Since |\dump| can only be used -in ^|initex|, not in production forms of \TeX, it is only useful -to people who are installing \TeX. -\enddesc - -\begindesc -\cts everyjob {\param{token list}} -\explain -This parameter contains a \minref{token} list that \TeX\ expands at the -start of every job. Because an assignment to |\everyjob| cannot affect -the current run (by the time you've done the assignment it's already too -late), it is only useful to people who are preparing format files. -\enddesc - - -\enddescriptions \endchapter \byebye diff --git a/Master/texmf-doc/doc/english/impatient/index.tex b/Master/texmf-doc/doc/english/impatient/index.tex deleted file mode 100644 index 54e2e04b384..00000000000 --- a/Master/texmf-doc/doc/english/impatient/index.tex +++ /dev/null @@ -1,39 +0,0 @@ -% 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 deleted file mode 100644 index 29cc4a6ed61..00000000000 --- a/Master/texmf-doc/doc/english/impatient/index1.icn +++ /dev/null @@ -1,90 +0,0 @@ -# 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 deleted file mode 100644 index 19913c42880..00000000000 --- a/Master/texmf-doc/doc/english/impatient/index2.icn +++ /dev/null @@ -1,239 +0,0 @@ -# This Icon program is the second pass of the indexing process for TeX for the -# Impatient. It must be preceded by index1 and by a sort of the intermediate -# file. - -# This program was written by Paul Abrahams and is public domain. - -record topic_entry(term, type, groupchar, pages, level) -record pgrec(number, flags) -record term_list_record(term_list, start) -procedure main(a) - local gen, pages, term, topic - local groupchar - - write(&errout, "Second indexing pass has started.") - -# Each pass through this loop produces the entry for a single topic -# or subtopic, including both the text of the topic and its pages. - - every topic := get_topic_info() do { - -# If we're starting a new group (initial character), produce the macro -# for it. - if topic.level = 1 then { # only primary topics affect the group - if not(\groupchar == topic.groupchar) then - write("\\indexgroup ", groupchar := topic.groupchar) - } - else - topic.type := "N" # subtopics are always printed normally - -# Write the index term - writes("\\indexentry {", topic.level - 1, "}{", - edit_term(topic.term), "}{", topic.type, "}{") - -# Write the list of pages - write(edit_pages(topic.pages, topic.term), "}") - } -end - -procedure get_topic_info() - local page, type, full_term, flags # info in an index item - local term # the index term to be printed (part of full_term) - local item_text # holds an input item to be parsed - local topic # the topic we're now working on - local term_list_info # returned term_list_record from get_term_list - local term_list # list of index terms extracted from the input item - local first # position of first thing in term_list to print - local t # loop variable - local term1 # first term in full_term, usually the only one - - term_list := [] - -# At the start of each pass through this loop, `topic' contains the text of -# the index topic most recently seen together with the pages seen so far for -# that index topic. - - every !&input ? (tab(find("@@@")\1), move(3), item_text := tab(0)) do { - -# Dissect the original index item, discarding the key - - item_text ? (full_term := tab(find("::")), move(2), - type := tab(find("::")), move(2), - page := tab(many('-0123456789*')), flags := tab(0)) -# a page of * indicates a see-also - - term_list_info := get_term_list(full_term, term_list) - term_list := term_list_info.term_list - if type == (\topic).type then # no change of type - first := term_list_info.start - else - first := 1 # change of type, so all terms are different - term1 := term_list[\first] - -# If we've finished the current topic, produce it and start the next one - - if \first then { - suspend \topic - topic := topic_entry(term1, type, find_groupchar(term1), [], first) - every t := !term_list[first + 1:0] do { - suspend topic - topic.term := t; topic.type := "N"; topic.level +:= 1 - } } - put(topic.pages, - if page == "*" then - flags # flags here is the see-also - else - pgrec(page, cset(flags))) - } - suspend topic - fail -end - -procedure edit_term(term) -# This procedure edits `term' into a proper argument for \indexterm - - if term == " " then - term := "\\visiblespace" - else if *term = 1 then - term := "\\char `\\" || term - else if match("^^", term) then - term := "\\twocarets " || term[3:0] - else if term == "$$" then - term := "\\$\\$" -# $$ is the only other 2-character sequence that has to be protected. - return term -end - -procedure edit_pages(l, term) -# edit_pages removes duplicate pages from the page list, produces the -# macro call for a principal entry, and coalesces page ranges. -# It also converts negative numbers to roman numerals. -# Each element of l is a pgrec, except that the last (and possibly only) -# element may be a see-also string starting with *. -# The result is a list of strings - local pg, n, m, pf, see_also, pagelist - local l1, k - -# If the last element of l is a string, remove it and set it aside. -# It's a see-also. - if type(l[-1]) == "string" then - {see_also := l[-1]; l := l[1:-1]} - - -# First pass through the page list, coalescing duplicates and combining -# their flags. - - l1 := [] - while *l > 0 do { - pg := pop(l); n := pg.number; pf := pg.flags - -# Loop over pages 2..k within a group - - while n = l[1].number do - pf ++:= pop(l).flags - - if *(pf ** 'BE') = 2 then # delete B and E if they both occur - pf --:= 'BE' - put(l1, pgrec(n, pf)) - } - -# Now l1 has no duplicates and no trivial page ranges. Replace each -# page range by a single entry, inverting the order for negative page -# numbers since those indicate roman numerals. -# When we're done, l1 has a list of strings rather than a list of pgrecs. - - l := l1; l1 := [] - while *l > 0 do { - pg := pop(l); n := pg.number; pf := pg.flags - if *(pf ** 'E') > 0 then { - every write(errfiles(), "Unmatched end of page range, page ", - integer(n), ", index term `", term, "'!") - pf --:= 'E' - } - if *(pf ** 'B') > 0 then { # beginning a page range - every k := 1 to *l do { - pf ++:= l[k].flags - if *(pf ** 'E') > 0 then break - } - if *(pf ** 'E') = 0 then { - every write(errfiles(), "Unmatched beginning of page range, page ", - integer(n), ", index term `", term, "'!") - pf := pg.flags - } - else { - m := l[k].number - if m < 0 then { # roman numerals - m := "\\r" || -m - n := "\\r" || -n - } - n := string(n || "--" || m) - l := l[k+ 1:0] - } } - else if n < 0 then - n := "\\r" || -n - if *(pf ** 'P') > 0 then - n := "\\pp{" || n || "}" - put(l1, n) - } - -# Now l1 is a list of page numbers and page ranges. -# If it's empty and we have a see-also, make it a \see and return it. - - if *l1 = 0 then - return "\\see{" || \see_also || "}" | "" - -# Turn l1 into a string and insert the comma commands \ic and \c -# \ic goes at the beginning, \c between the remaining elements. - - pagelist := "\\ic " || pop(l1) | "" - every pagelist ||:= "\\c " || !l1 - -# Now attach the see-also to pagelist if we had one and return the result - - return pagelist || ("\\seealso{" || \see_also || "}" | "") -end - -procedure find_groupchar(t) -# This procedure finds the character that heads the group containing -# the index term `t'. We want all special characters in a single group -# and all digits in a single group. -# A term that begins with `\<c' or `\c' or `.c' is grouped as `c'. - local c - static printable, specials - initial { - printable := &ascii[33:-1] - specials := string(printable -- (&ucase ++ &lcase ++ &digits)) - } - - return map( - if t ? (tab(many('\\.<')), c := move(1)) then c - else if any(specials, t[1]) then "+" - else if any(&digits, t[1]) then "0" - else t[1] | "", - &lcase, &ucase) -end - -procedure get_term_list(ft, tl) -# `ft' is the full term just read in, `tl' is the current term list -# return a record containing all the terms and the position of the first -# one that's different from the previous full term - local tl1, pos, pos1, first, k - - tl1 := [] - pos := 1 - every pos1 := (find("//", ft) | 0) do - {put(tl1, ft[pos:pos1]); pos := pos1 + 2} - - first := &null - every k := 1 to *tl1 do - if not(tl1[k] == tl[k]) then - {first := k; break} - return term_list_record(tl1, first) -end - -procedure errfiles() - static errf - initial - errf := open("index.err", "w") - suspend &errout | errf -end diff --git a/Master/texmf-doc/doc/english/impatient/macros.tex b/Master/texmf-doc/doc/english/impatient/macros.tex deleted file mode 100644 index e3a84adac70..00000000000 --- a/Master/texmf-doc/doc/english/impatient/macros.tex +++ /dev/null @@ -1,2295 +0,0 @@ -% This is part of the book TeX for the Impatient. -% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. -% See file fdl.tex for copying conditions. -% -% Macros for typesetting TeX for the Impatient. -% -% These macros are being distributed without any warranty whatsoever. -% The level of commentary is that which we, the authors, found necessary -% for our own purposes. -% -% ========================================================================== -% -% The macros use the term `chapter' for what in the book is called -% a `section', `section' for the book's `subsection', etc. For purposes of -% defining macros it's convenient to think of the book as divided into -% chapters, but because of the nonsequential nature of the book we don't -% want to tell the readers that they are reading chapters. - - -% An embedded file should end with \byebye. -% -\begingroup -\ifx \macsin\relax - % In frontm.tex, we do \input macros several times, and we still want - % the \byebye at the end to end the job. - % So we \input inside a group in frontm, and make the assignment to - % \endinput local. - \aftergroup\let\aftergroup\byebye\aftergroup\endinput - \aftergroup\endinput % Don't read this file again. -\else - \global\let\byebye = \end - \global\let\macsin = \relax -\fi -\endgroup - -% This must come before config.tex. -\input eplain - -% Define configuration switches and then read their values. -% -\newif\ifcenterpage \centerpagetrue -\newif\ifcompletebook -\newif\iffinal % true for the 2000dpi copy -\newif\ifmsdos -\newif\ifedgetabs \edgetabstrue -\newif\ifdvi \dvitrue % true if we want a .dvi file - -%\xrefwarningfalse - -% The config file contains settings for flags, e.g., -% \completebookfalse -% It can be empty as long as it exists. -\input config -\ifcompletebook \else\rewritetocfilefalse \fi -\edef\tempfile{\ifmsdos g:temp \else x \fi} -\ifx\setmodes\undefined\else\setmodes\fi % modify from command line input - -% Certain defaults are forced by certain others. -% -\iffinal \centerpagetrue \edgetabstrue\fi - -% Initial definitions. (These should come before \input fonts.) -% -\catcode`\@ = \letter % For the macro file only. - -% We don't want register allocation information in the log, -% so we redefine the relevant macro from plain.tex. - -\def\alloc@#1#2#3#4#5{\global\advance\count1#1 by 1 - \ch@ck#1#4#2% - \allocationnumber=\count1#1 \global#3#5=\allocationnumber -} - -% The fonts. This should come before defining the new character control -% sequences that follow. -% -\input fonts - -\hyphenation{script-script base-line-skip no-base-line-skip line-skip - line-skip-limit max-dead-cycles output-penalty no-inter-line-skip - show-box-depth show-box-breadth if-hmode if-vmode if-mmode - back-spaces back-space par-indent tracing-on-line} - -{ - \catcode`\| = 0 - \catcode`\\ = \other - |global|let|bsc = \ % \bsc is a true backslash character. -} - -\let\\ = \bsc - -\def\bslash{$\backslash$} % backslash suitable for printing -\let\shriek = ! -\let\vbar = | -{ - \catcode `\[ = 1 \catcode `\] = 2 - \catcode `\{ = \other \catcode `\} = \other - \global\let\lbracechar = { - \global\let\rbracechar = } -] -\def\blbrace{{\bt \{}} -\def\brbrace{{\bt \}}} - -{ - \catcode`\ =\other% Notice no spaces at beginning of next line. -\gdef\otherspace{ } -} - -\let\mathlbrace = \{ \let\mathrbrace = \} -{ - \catcode `\[ = 1 \catcode `\] = 2 - \catcode `\{ = \other \catcode `\} = \other - \gdef\{[\ifmmode\mathlbrace\else [\bt {]\fi] - \gdef\}[\ifmmode\mathrbrace\else [\bt }]\fi] -] - - -% These are for debugging (less drastically than \tracingall or \loggingall). -% -\def\tron{\tracingmacros=2 \tracingcommands=2 \tracingonline=1} -\def\troff{\tracingmacros=0 \tracingcommands=0} - -% \pagebreak should always cause a break, even if the resulting -% page is empty. -% -\def\pagebreak{\null\vfill\eject} - -% \linebreak causes a line break in chapter headings, but outside of that -% context we don't want it to do anything. -% -\let\linebreak = \relax - - -% Parameters. -% -\parskip = 0pt plus 0.3pt -\newdimen\codefuzz \codefuzz = 10pt % for \csdisplay, \example -\hbadness = 4000 -\vbadness = 8000 -\hfuzz = 0.1pt % as in plain TeX -\vfuzz = 0.1pt % as in plain TeX -\exhyphenpenalty = 0 % we don't mind these -\widowpenalty = 10000 % these are very bad -\clubpenalty = 10000 % these are very bad too - -% Page margins. -% -% Note that the \newdimens can't be within an \if or a \def -% because \newdimen is an \outer macro (thanks to DEK). -% -\newdimen\insidemargin \newdimen\outsidemargin -\newdimen\topmargin \newdimen\bottommargin -\newdimen\headmargin -\newdimen\totalwidth \newdimen\totalheight -\newdimen\oddoffset \newdimen\evenoffset -\newif\ifnoheadline - -% \totalwidth and \totalheight are the actual trim size of the book. -% \insidemargin, \outsidemargin, \topmargin, and \bottommargin are margins -% with respect to the pages of the book, not the draft 8 1/2 x 11 pages. -% - -% This makes it so that we only have to cut twice on a page. -% 8.5" = 51.19125pc exactly. -% \totalwidth should = \outsidemargin + \insidemargin + \hsize. -% -\totalwidth = 7.375in % 44.4159375pc = 7 3/8". -\outsidemargin = 8pc -\insidemargin = 10pc -\hsize = \totalwidth -\advance \hsize by -\outsidemargin -\advance \hsize by -\insidemargin -% \hsize should now be 26.4159375pc - -% Now that we know \hsize, we can set \parfillskip to eliminate (most) -% widows. -% -\parfillskip = .75\hsize plus .06\hsize minus .75\hsize - - -% \oddoffset and \evenoffset are the \hoffset values needed to -% align the left edge of the virtual page with the left edge of the -% draft paper (not the left edge of the book pages). -% -% The -1in below comes from the default margin, which the DVI driver must -% set at 1in. Odd pages are on the left, even on the right. -% -% First, align the left edge of the virtual page with the left edge of the -% draft page. -% -\oddoffset = -1in -\advance\oddoffset by \insidemargin -% -\evenoffset = -1in -\advance\evenoffset by \outsidemargin - -% For centered pages, move the virtual page right by half the trim width. -% -\ifcenterpage - \dimen0 = 8.5in - \advance\dimen0 by -\totalwidth - \divide\dimen0 by 2 - \advance\oddoffset by \dimen0 - \advance\evenoffset by \dimen0 - -% For uncentered even-numbered pages, align the right edge of the virtual -% page with the right edge of the draft paper so that we can remove the trim -% of two-sided pages with a single cut. -% -\else - \advance\evenoffset by 8.5in - \advance\evenoffset by -\totalwidth -\fi - -\hoffset = \oddoffset % First page is numbered one. - -% Now for the vertical, which is simpler, since it doesn't vary from -% page to page. -% 11" = 66.2475pc exactly. -% \totalheight should = \topmargin + \bottommargin + \vsize. -% -\totalheight = 9.25in % 9 1/4" = 55.708125pc -\topmargin = 6pc % Distance from top of page to baseline of text line 1 -\bottommargin = 6pc % Distance from last line to bottom of page. -\topskip = 2pc % Distance from top of \box255 to baseline of text line 1 -% \vsize Distance from top of \box255 to last line of text. -% \headmargin Distance from top of \box255 to top of page -% We'll place the headline just above \box255 - -\headmargin = \topmargin \advance \headmargin by -\topskip - -\vsize = \totalheight -\advance \vsize by -\headmargin -\advance \vsize by -\bottommargin -% \vsize should now be 46.708125pc - -\voffset = -1in % align top of logical page with top of physical page -\advance \voffset by \headmargin -\ifcenterpage - \dimen0 = 11in - \advance\dimen0 by -\totalheight - \divide\dimen0 by 2 - \advance\voffset by \dimen0 -\fi - -\topskip = 2pc % Distance from headline to first line of text. - - -% Other formatting parameters. -% -% The basic increments we'll use in the layout. -% -\def\setskip#1 = #2 {% - \dimen0 = #2\baselineskip - \csname #1skipamount\endcsname = - \dimen0 plus .33\dimen0 minus .25\dimen0 - \ignorespaces -} -\newskip\greaterskipamount -\newskip\greatskipamount -\newskip\biggerskipamount -\newskip\medbigskipamount -\newskip\medsmallskipamount -\newskip\tinyskipamount - -\setskip greater = 2.5 -\setskip great = 2.0 -\setskip bigger = 1.5 -\setskip big = 1.0 -\setskip medbig = .75 -\setskip med = .5 -\setskip medsmall = .375 -\setskip small = .25 -\setskip tiny = .125 - -\parindent = 1em -\newdimen\normalindent \normalindent = \parindent - -\footnotemarkseparation = .16666em - -\abovelistskip = \smallskipamount -\interitemskip = \tinyskipamount -\belowlistskip = \smallskipamount -\listleftindent = \parindent - -% Displays involve text and math. We don't want as much flexibility in -% the glue as plain.tex sets. -% -\abovedisplayskip = \medsmallskipamount -\abovedisplayshortskip = 0pt plus 2pt -\belowdisplayskip = \medsmallskipamount -\belowdisplayshortskip = \belowdisplayskip - -\newskip\intercapsuleskip \intercapsuleskip = .75\tinyskipamount plus 0.4pt -\newdimen\capsulehangindent \capsulehangindent = 2pc - -\newskip\aboveconceptskip \aboveconceptskip = \bigskipamount - - -\newskip\abovesectionskip \abovesectionskip = \greaterskipamount -% No stretch or shrink below heads, according to A-W. -\newskip\belowsectionskip \belowsectionskip = 1\biggerskipamount - -\newskip\abovesubsectionskip \abovesubsectionskip = \greatskipamount -\newskip\belowsubsectionskip \belowsubsectionskip = 1\bigskipamount - -\newskip\abovedescriptionskip \abovedescriptionskip = \biggerskipamount -\newskip\belowdescriptionskip \belowdescriptionskip = \medskipamount - -\newskip\explainskip \explainskip = \tinyskipamount -\newskip\exampleskip \exampleskip = \smallskipamount - -\def\interexampleskip{\vskip\medsmallskipamount} -\def\tinyskip{\vskip\tinyskipamount} - -% Space in which a symbol is shown in a columnated list of commands. -\newdimen\symbolspace \symbolspace = 14pt - -% \colsindent is the indentation before material arranged in columns and -% displayed, as in the list of Greek letters. -\newskip\colsindent \colsindent = \parindent - -% The indentation for page lists in the index that don't fit on one line. -\newdimen\indexpageindent \indexpageindent = 1pc - -% The indentation for subsidiary entries in the index. (Should be less -% than \indexpageindent.) -\newdimen\indexlevelindent \indexlevelindent = .5pc - -\newskip\codebaselineskip \codebaselineskip = \baselineskip - -% Fill the previous page with blank space before a command. -% -\def\cmdbreak{\par\nobreak\vfil\penalty 1000\vfilneg\par} - -% Penalties. -% -\newcount\conceptpenalty \conceptpenalty = -1500 -\newcount\intercmdnamepenalty \intercmdnamepenalty = 300 -\newcount\@intercmdnamepenalty \@intercmdnamepenalty = \intercmdnamepenalty - - - -% The output routine. -% -\output = {% - \onepageout - % - % Odd pages are right-hand pages. - % - % Note \pageno has been incremented when we get here -- it now refers - % to the page number of the page about to be typeset, not the page - % that we just shipped out. - % - \ifodd\pageno % \onepageout advances \pageno. - \global\hoffset = \oddoffset - \global\intercmdnamepenalty = 10000 - \else - \global\hoffset = \evenoffset - \global\intercmdnamepenalty = \@intercmdnamepenalty - \fi -} - -\ifdvi\else\output={% - \setbox0=\box255\deadcycles=0 - \advancepageno - \global\advance \truepage by 1 - \ifnum\outputpenalty>-20000\else \dosupereject \fi - } -\fi - -\def\onepageout{% - \shipout\vbox{% - \offinterlineskip % The page should have vertically abutting boxes. - \ifodd\pageno - \cropmargin = \insidemargin - \else - \cropmargin = \outsidemargin - \fi - \addcropmarks % Does not affect the position. - \ifcenterpage \addtruepage \fi - % - \ifedgetabs \ifodd\pageno \ifnoheadline\else - \edgetabs % Does not affect the position. - \fi\fi\fi - % - \vbox to 0pt{\vskip-\headmargin \vskip-3.5pc - \rightline{\sevenrm\timestamp}\vss}% - % - \smash{\line{\the\headline}}% Simplified \makeheadline. - \pagebody - \vskip 2\normalbaselineskip - % The footline is needed on one page (for an example). - \line{\the\footline}% - }% - % Now the rest from \plainoutput: - \advancepageno - \global\advance\truepage by 1 - \ifnum\outputpenalty>-20000\else \dosupereject \fi -} - -\footline = {\hfil} - -% The headline always includes the name of the current chapter. This -% goes on the inside. If more information, such as the concept we're -% explaining, is included, it goes on the outside. -% -\headline = {% - % Produce the timestamp - \ifnoheadline - \hfil - \global\noheadlinefalse - \else - \let\\ = \ignorespaces - \ifodd \pageno % Right-hand page. - {\tenit \firstmark}\hfil {\tenbf \folio}% - \else % Left-hand page. - {\tenbf \folio}% - \hfil - {\tenit - \chaptername - \ifnum\pageno>0\ifback\else - \quad $\backslash$\quad\S\the\chapterno - \fi\fi - }% - \fi - \fi -} - -% Sizes for cropmarks: -% -\newdimen\cropthick \cropthick = 0.4pt -\newdimen\crophsize \crophsize = 1pc -\newdimen\cropvsize \cropvsize = 1pc -\newdimen\cropoffset \cropoffset = .0625in - -% Each of the following macros generates a quarter of a cropmark as -% a zero-size box at the center point of the cropmark. -% We want the cropmarks to be centered with respect to their thicknesses. - -\def\vcropdown {\hbox to 0pt{% - \kern -.5\cropthick - \vbox to 0pt{% - \vskip \cropoffset - \hrule width\cropthick depth\cropvsize height0pt - \vss}% - \kern -.5\cropthick}% -} - -\def\vcropup {\hbox to 0pt{% - \kern -.5\cropthick - \vbox to 0pt{% - \vss - \hrule width\cropthick depth\cropvsize height0pt - \vskip \cropoffset}% - \kern -.5\cropthick}% -} - -\def\hcropright{\rlap{\kern\cropoffset\smash{% - \vrule width\crophsize depth .5\cropthick height .5\cropthick}}} - -\def\hcropleft{\llap{\smash{% - \vrule width\crophsize depth .5\cropthick height .5\cropthick}% - \kern\cropoffset}} - -% \cropmargin will be set to the left margin on the current page. -% -\newdimen\cropmargin -\def\cropline#1{\moveleft\cropmargin\hbox to \totalwidth{#1}} - -% \addcropmarks adds the cropmarks to a page while leaving everything else -% alone. It assumes we're positioned at the top of the page. - -\def\addcropmarks{% - \vbox to 0pt{% - \offinterlineskip % contextually redundant but precautionary - \vskip -\headmargin % to get to logical top of page - \ifcenterpage - \cropline{\hcropleft\vcropup \hfil \vcropup\hcropright} - \else - \cropline{\hfil \vcropdown}% - \fi - \vskip\totalheight - \ifcenterpage - \cropline{\hcropleft\vcropdown \hfil \vcropdown\hcropright}% - \else - \cropline{\hcropright\hfil\hcropleft\vcropup\vcropdown\hcropright}% - \fi - \vss -}} - -% \addtruepage adds a small page number near the upper right cropmark. -% -\newcount\truepage \truepage = 1 -\def\addtruepage{% - \vbox to 0pt{\vskip -\headmargin\vskip -2pc - \moveleft\cropmargin\hbox to \totalwidth{% - \twelvebf - \quad\TeX\ for the Impatient\hss - N\raise 3.3pt\hbox{o} \the\truepage\quad}% - \vss}% -} - - -% The mark information is output by \markinfo. -% -% We can use a different mark, e.g., a shorter heading, by calling -% \changemark. -% -\newtoks\shortmark \shortmark = {} -\newif\ifchangemark - -\def\markinfo#1{% - \ifchangemark - \mark{\the\shortmark}\changemarkfalse - \else - \mark{#1}% - \fi -} - -\def\changemark#1{\shortmark = {#1}\changemarktrue} - - -% ``Tabs'' down the side of the book. -% Say \nextedgetab to move the thing down to the next. -% Say \edgetabsfalse to turn them off. -% -\newcount\numtabs \numtabs = 7 -\newdimen\edgetabjump \edgetabjump = 0pt -\def\nextedgetab{% - \advance\edgetabjump by \edgetabdepth -} - -\def\settabdepth#1{% - \edgetabdepth = #1 - \setbox\tabbox = \vbox to \edgetabdepth{% - \leaders - \vbox{\vskip \edgespacing - \hrule width\edgetabwidth height0pt depth\edgethick}% - \vfil} -} - -\newskip\bigtab \newskip\smalltab -\newskip\edgetabdepth -\newbox\tabbox - -\bigtab = \totalheight \divide\bigtab by \numtabs -\smalltab = .4\bigtab % five smalls make two bigs - -\newdimen\edgetabin \edgetabin = .25in -\newdimen\edgetabbleed \edgetabbleed = .25in -\newdimen\edgetabwidth - \edgetabwidth = \edgetabin - \advance \edgetabwidth by \edgetabbleed -\newdimen\edgethick \edgethick = .3pt % line thickness -\newdimen\edgespacing \edgespacing = .9pt % line spacing - - -\def\edgetabs{\vbox to 0pt{% - \vskip-\headmargin - \vskip\edgetabjump - \hbox{% - \hskip \hsize - \hskip\outsidemargin - \hskip-\edgetabin - \copy\tabbox - }% - \vss -}} - - -% We can simplify \pagecontents (which is called by \pagebody) somewhat, -% since we don't have \topinserts. -% -\def\pagecontents{% - \unvbox255 % The main page contents. - % - \ifvoid\footins\else % Footnotes are present. - \vskip\skip\footins - \footnoterule - \unvbox\footins - \fi -} - - -% The command chapters had a mini-index at the bottom of right-hand -% pages. These definitions are the way to put entries into it. -% -% \minref generates a reference for the mini-index, and prints the -% reference on the page, also. -% -\def\minref#1{% - #1% Print it on the page. - % That's it, now. -} - -% Mini-index entry without printing the argument on the page. -% Just ignore the argument now. -% -\def\minrefs#1{% - \ignorespaces -} - -% This is used for producing the concept mini-index. -% -\def\minrefsdelim#1\endmark{\minrefs{#1}} - -% One last insertion-oriented thing: -% we always want numbered footnotes, as defined in eplain. -% We'll do them in 8-point type. -% -\let\@plainfootnote = \footnote -\let\footnote = \numberedfootnote -\everyfootnote = {\footnotefonts} - - -% The \margin macro produces a marginal note at the same level as its call. -% It should only be used in a paragraph or in the main vertical list. -% It is nullified when we're printing the final copy. -% -\def\margin#1{% - \ifhmode - \vadjust{\printmarginnote{#1}}% - \else - \dimen0 = \prevdepth - \prevdepth = -1000pt - \printmarginnote{#1}% - \prevdepth = \dimen0 - \fi - \ignorespaces -} - -\def\printmarginnote#1{% - \hbox to 0pt{% - \hskip 1.1\hsize - \vbox to 0pt{% - \everypar = {}% Don't inherit hanging indentation. - \hsize = 1in \rightskip = 0pt plus 1fil \noindent \sevenrm - \let\tt = \eighttt - \parfillskip = 0pt plus 1fil - \baselineskip = 8pt #1% - \vss - }% - \hss - }% -} - -%\iffinal -\iftrue - \def\margin#1{\ignorespaces} -\fi - - -% Stuff to preserve page breaks inserted for the 2nd printing. -% This macro takes one ``argument''. -% -\def\secondprinting{\afterassignment\finishsecondprinting \toks0 = } -\def\finishsecondprinting{\the\toks0} - - - -% Parts of the book. -% -% -% Chapters. -% -\let\chaptername = \empty -\newcount\chapterno - -\def\chaprule{\vrule depth3\baselineskip height1.5pc width1pt} - -% Chapter openings should not have headlines. -% The text of each chapter starts on a right-hand page in the final -% book. The facing page has an illustration. This means that if the -% previous chapter ended on a left-hand (i.e., even) page, we have to -% eject an extra blank page. -% -\outer\def\chapter#1 \par{% - \ifcompletebook % Don't do the blank pages for proof copies. - \blankpage % the illustration page - % The first real chapter starts on page 1. - \ifnum\pageno < 0 \pageno = 1 \fi - \fi - % - \def\chaptername{#1}% - \advance\chapterno by 1 - % - \setbox0 = \hbox{\chapternumeralfont - \kern1pt - \expandafter\kernchapno\the\chapterno\empty - \kern3pt}% - \vglue 0pt % But we get a \topskip of 2pc now. - \nointerlineskip - \leftline{% - \ifback\else - \vtop{% - \copy0 - \vskip6pt - \hrule width\wd0 height2.2pc - }% - \kern 16pt - \fi - \chapterfonts % to get \baselineskip now - \chaprule - \kern 6pt - \vtop{% - \def\linebreak{\hfil\break}% - \noindent \chaptername}% - }% - \vskip 6pc plus.5pc minus.5pc - \noheadlinetrue - \toks0=\expandafter{\chaptername} - \edef\writechaptertoc{% - \noexpand\writenumberedtocentry{chapter}{\the\toks0}{\the\chapterno}% - }% - \writechaptertoc - % - % Use chaptername as first A-head (or only one). - \mark{\chaptername}% - \footnotenumber = 0 % Number footnotes from 1 in each chapter. - \beginit{CHAPTER}% - \noindent - \ignorespaces -} - -\def\endchapter{% - \mark{\chaptername}% Use chapter name on last blank recto page - \vfil\eject % be sure everything's out before testing for recto - \ifodd\pageno - \message{Chapter ends on a verso page.}% - \blankpage - \fi - \endit{CHAPTER}% -} -% -% \blankpage creates a blank page with no headline. -% In the final book, it just advances the page number. -% For the web edition, the blank pages serve no purpose except to keep -% the indexing correct. I didn't want to rerun the index. -% -\def\blankpage{% - \iffinal - \advancepageno - \global \advance \truepage by 1 - \else - \noheadlinetrue\pagebreak - \fi -} - -% This hokey little macro kerns between the numerals in the chapter -% number. We want to kern more between `11' then otherwise; also, we -% want to remove the extra space before the chapter number, and after -% `11'. -% -\def\kernchapno#1#2{% - \ifx\empty#2\else \kern-3pt \fi - #1% - \ifx\empty#2\else - \if1#2% - \kern-.1em - \else - \kern-.05em - \fi - \fi - #2% - \if 1#2\kern-.1em\fi -} - -% Sections. -% -\newif\ifheading % Avoid breaking after a heading. - -% get section numbers for the fdl only, since it has internal references. -\let\fdlkludge=\empty - -% The heading flag is turned on by headings and turned off -% at the start of a description. -% -\outer\def\section#1 \par{% - \par % be sure we're in vertical mode - \saveskip = \lastskip % will be 0 if no skip - \cmdbreak - \combineskips\abovesectionskip - \dimen0 = 2.5\baselineskip \advance\dimen0 by -\topskip - \vskip -\dimen0 - \vglue \dimen0 - % - {\sectionfonts \leftline{\fdlkludge #1}}% - % - \markinfo{#1}% - \writetocentry{section}{#1}% - \nobreak - % Don't go into horizontal mode within the command descriptions. - % - \vskip\belowsectionskip - \ifcommands \else \noindent \fi - \headingtrue - \everypar = {\headingfalse \global\everypar = {}}% - % only gets executed for \par in horizontal mode - \ignorespaces -} - - -% Subsections. We don't want a break at the glue if we were preceded by -% a \nobreak. -% -\def\subsection#1 \par{% - \par % be sure we're in vertical mode - \saveskip = \lastskip % will be 0 if no skip - \ifheading % Did we just have \section? - \nobreak - \fi - \combineskips\abovesubsectionskip - \dimen0 = 2.5\baselineskip \advance\dimen0 by -\topskip - \vskip -\dimen0 - \vglue \dimen0 - % - {\subsectionfonts - \leftline{\vrule width.5em height1.2ex depth.2ex \enspace #1}}% - \writetocentry{subsection}{#1}% - \nobreak - % Don't go into horizontal mode within the command descriptions. - \vskip\belowsubsectionskip - \ifcommands \else \noindent \fi - \headingtrue - \everypar = {\headingfalse \global\everypar = {}}% - % only gets executed for \par in horizontal mode - \ignorespaces -} - -% \combineskips combines the current skip (#1) with the previous skip -% (which must be in \saveskip), and effectively skips by the larger of -% the two. -% -\newskip\saveskip -\def\combineskips#1{\ifdim\saveskip<#1\vskip-\saveskip \vskip#1\fi} - - - -% List macros. -% - -% We want to use different names than eplain. -% -\let\ulist = \unorderedlist -\let\endulist = \endunorderedlist -% -\let\olist = \numberedlist -\let\endolist = \endnumberedlist - -\let\compact = \listcompact - -% The \noindent here keeps us from getting indentation on the first line. -% It also makes the display into a `short' display, FYI. -% The \belowdisplayskip and \abovedisplayskip glue are inserted by the -% display. -% -\long\def\display#1{% - \ifvmode \noindent \fi - $$\vtop{\everypar = {}\hsize = \displaywidth - \parfillskip = 0pt plus 1fil % don't worry about widows - \noindent #1\par\global\savedepth = \prevdepth}$$% - \endgraf - \prevdepth = \savedepth -} - -% \vdisplay is like \display, except it's for vertical mode material. Use it -% to avoid an unwanted initial lineskip. -% -\long\def\vdisplay#1{% - \ifvmode \noindent \fi - $$\vtop{\everypar = {}\hsize = \displaywidth - \parfillskip = 0pt plus 1fil % don't worry about widows - #1\par\global\savedepth = \prevdepth}$$% - \endgraf - \prevdepth = \savedepth -} - - - -% Indexing. -% Derived from Knuth's manmac macros. -% -\newwrite\index - -\immediate\openout\index = \jobname.idx -\newif\ifsilent - -% We need ^ to be active temporarily, while we define it. -% -{ \catcode`\^ = \active -% -\gdef^{% - \ifmmode - \let \nextaction = \sp - \else - \let \nextaction = \beginindexref - \begingroup - \catcode `| = \other \catcode `^ = \other - \fi - \nextaction -}} - -\def\beginindexref{\futurelet\next\checksilence} - -{% And for here, we need ^ to be deactivated -\catcode `^ = \other - -\gdef\checksilence{% - \if ^\next - \silenttrue \let\nextaction = \secondhat - \else - \silentfalse \let\nextaction = \checkbar - \fi - \nextaction -} - -% Eat the `^' that we saw would be the next token. -% -\gdef\secondhat^{\checkbar} - -} % end scope where ^ is \other - -\def\checkbar{\futurelet\next\iswitch} - -% Here we start reading the text of the actual index entry; -% we've determined whether it's silent or not. -% -% We handle the following cases: -% ^{alpha} and ^^{alpha} -% ^|alpha| and ^^|alpha| -% ^|\alpha| and ^^|\alpha| -% -% When this is called, \next is either `|' or `{'. -% -\def\iswitch{% - \ifx |\next - \let \nextaction = \checkbackslash - \else - \let \nextaction = \normalidx - \fi - \nextaction -} - -\def\checkbackslash|{% - % within |...| we allow anything (but another |) - \deactivate \catcode `\ = \other - \futurelet\next\litidx -} - -% The thing after the ^ is a |. We have further checking to do -- is -% the next character a \? -% -{ % reverse \ and / -\catcode`\/ = 0 -\catcode`\\ = \other -/gdef/litidx{% - /if \/next - /expandafter/litidxA - /else - /expandafter/litidxB - /fi -} - -% The thing being indexed starts with a \. -% -/gdef/litidxA \#1|{% - /ctsidxref{#1}% - /litidxswitch{/\#1}% -} - -% The thing being indexed is just a word. -% -/gdef/litidxB #1|{% - /ttidxref{#1}% - /litidxswitch{#1}% -} -}% end reversal of \ and / - -% The thing after the ^ is not a |. -% -\def\normalidx#1{% - \ifsilent - \aftergroup\ignorespaces - \else - #1% - \fi - \idxref{#1}% - \endgroup % group started by \iswitch. -} - -\def\litidxswitch#1{% - \ifsilent - \aftergroup\ignorespaces - \else - {\tt #1}% - \fi - \endgroup % group started by \iswitch. -} - - - -% Indexing macros for external use. - -% \idxref generates an index entry for #1. If #1 contains any control -% sequences, they are treated literally. -% -\def\idxref#1{\indexwrite{#1}N\ignorespaces} - - -% For creating an index entry for control space. -{\catcode `\ =\other -\gdef\blankidxref{\ctsidxref{ }} -} - -% I removed this macro from eplain because \csname works as well, but -% since the macros below are already written to use it ... -\def\@tokstostring#1{\@ttsA#1 \@ttsmarkA}% -\let\tokstostring=\@tokstostring -\def\@ttsA#1 #2\@ttsmarkA{% - \@ifempty{#1}\else - \@ttsB #1\@ttsmarkB - \@ifempty{#2}\else - \@spacesub\@ttsA#2\@ttsmarkA - \fi - \fi -}% -\def\@ttsB#1{% - \ifx #1\@ttsmarkB\else - \string #1% - \expandafter\@ttsB - \fi -}% -\def\@ttsmarkB{\@ttsmarkB}% should never be expanded -% -\def\@spacesub{+}% -\let\spacesub = \@spacesub -% -\def\@ifempty#1{\@@ifempty #1\@emptymarkA\@emptymarkB}% -\def\@@ifempty#1#2\@emptymarkB{\ifx #1\@emptymarkA}% -\def\@emptymarkA{\@emptymarkA}% Again, so \ifx won't complain. - -% #1 is the index term, #2 is the reference as in -% Diacritical mark, see accent. - -\def\idxsee#1#2{% - \begingroup - \def\spacesub{\otherspace}% - \edef\nextaction{\write\index{\tokstostring{#1}::N::*\tokstostring{#2}}}% - \nextaction - \ignorespaces -\endgroup} - - -% \ttidxref generates an index entry for #1 in the program font. -% If #1 contains any control sequences, they are treated literally. -% -\def\ttidxref#1{\indexwrite{#1}T\ignorespaces} - - -% \ctsidxref generates an index entry for a control sequence. #1 -% should not have a preceding backslash, so that the proper call for -% indexing \alpha is \ctsidxref{alpha}. -% -\def\ctsidxref #1{\indexwrite{#1}C\ignorespaces} - -% \indexchar is needed to generate index entries for three especially -% difficult single characters: {, }, and \. They are blank-delimited. -% -\def\indexchar{\begingroup \deactivate \indexcharA} -\def\indexcharA#1 {\indexwrite{#1}T\endgroup} - -% \pix indicates that the next index entry is a principal one. -% -\newif\ifpix -\def\pix{\global\pixtrue} - -% \bix and \eix indicate that the next index entry begins or ends a -% range of pages. -% -\newif\ifbix \def\bix{\bixtrue} -\newif\ifeix \def\eix{\eixtrue} - -% #1 is the text of the entry, #2 is N (normal), T (typewriter) or -% C (control sequence) or `cs' for now. -% -\def\indexwrite#1#2{\begingroup - \def\spacesub{\otherspace}% - \edef\tts{\tokstostring{#1}}% - \edef\nextaction{\write\index{\tts::#2::\noexpand\number\noexpand\pageno - \ifpix P\fi\ifbix B\fi\ifeix E\fi}}% - \nextaction - \global\pixfalse \global\bixfalse \global\eixfalse -\endgroup} - -{\catcode `\^ = \other \gdef\twocarets{^^}} - - -% For generating index entries with weird characters, we need to deactivate -% them: { } blank \ and substitute [ ] ! for { } \ . \recat does this. -% It should be enclosed in a group (which must end in `]'). -\def\recat{% - \aftergroup\ignorespaces - \catcode `\! = 0 \catcode `[ = 1 \catcode `] = 2 - \catcode `\ = \other \deactivate -} - - - -% Macros for the front matter. -% -% Space at the top of the frontmatter pages. -% -\def\sinkage{\vglue 7pc \relax} - -% And at the top of the backmatter pages. -% -\def\backsinkage{\vglue 2pc \relax} - -% \frontchapter doesn't care if we're on an even page or an odd page. -% -\def\frontchapter#1 \par{% - \def\chaptername{#1}% - \leftline{% - \chapterfonts - \chaprule - \kern 6pt - \vtop{% - \def\linebreak{\hfil\break}% - \noindent \chaptername}% - }% - \vskip 4pc - \noheadlinetrue - % Use chaptername as first A-head (or only one) - \mark{\chaptername}% - \noheadlinetrue - \noindent \ignorespaces -} - - -% We are called from inside a group, so we can redefine the \toc... macros. -% -\def\shortcontents{{% - \firsttoctrue - \backfalse - \shorttocfonts - \let\tocchapterentry = \shorttocchapter - \let\tocsectionentry = \gobblethree - \let\tocsubsectionentry = \gobblethree - \halign{\hfil\strut##&\strut ##\hfil\cr - \readtocfile - \crcr}}% - \pagebreak - \global\backfalse -} - -% #1 is the chapter name, #2 the chapter number, #3 the page number. -% -\def\shorttocchapter#1#2#3{% - \ifback\else#2\quad $\backslash$\quad\fi\qquad - \raise3pt\hbox{\vrule height2pt width4pt depth2pt}$\,\,$#3\cr -} - -% Yes, we read the entire contents (several pages) as one alignment. -% -\def\contents{{% - \firsttoctrue - \backfalse - \tocfonts - \interlinepenalty = 100 - \halign{\hfil\strut##&\strut ##\hfil\cr - \readtocfile - \crcr}}% - \pagebreak - % We want to end the contents on a recto page, even if it's blank - \ifodd\pageno\pagebreak\fi % leaves us on an even page. - \global\backfalse -} - -\newif\iffirsttoc - -\def\tocchapterentry#1#2#3{% - \iffirsttoc - \global\firsttocfalse - \else - \noalign{\penalty-1000 \bigskip\smallskip}% - \fi - % - \ifback\else\bf#2\quad $\backslash$\quad\fi - &\bf#1\qquad\raise3pt\hbox{\vrule height2pt width4pt depth2pt}% - $\,\,$#3\cr - \noalign{\nobreak\vskip2pt}% -} - -\def\tocsectionentry#1#2#3{% - \noalign{\penalty-500 \vskip\medsmallskipamount}% - &\it #1\quad \openbox$\,\,$\rm #3\cr -} - -\def\tocsubsectionentry#1#2#3{% - &\qquad #1\quad $\cdot\,$#3\cr -} - -\def\openbox{\ht0 = 1.75pt \dp0 = 1.75pt \wd0 = 3.5pt - \raise 2.75pt \makeblankbox{.2pt}{.2pt}% -} - -\newif\ifback -% \ifback is true when we're doing the table of contents and are about -% to do the back matter. It is also true just before we do the back matter -% chapters (really, only the index). -% -\def\backmatter{\write\tocfile{\noexpand\setback}\backtrue} -\def\setback{\noalign{\bigskip\global\backtrue}} - - - -% Macros for the examples chapter. -% -% \doexamples is called with the name of the examples file -% Each example is ended by ::: (including the last one) -% A line starting with ~ is executed in the output (without the ~) -% but dropped from the input. -% -% Within the input, ! is an escape character, but {} are not recognized. -% This provides a limited control sequence capability, which is sufficient -% for delimited macros and therefore for cross-references (see \xrefdelim). -% !! stands for !. -% -\def\endmark{:::} - -\newif\ifnotatend \newif\ifnotatendfile \newif\iftildeline -\newread\exfileA \newread\exfileB \newwrite\exfileC -\newcount\examplenumber - -\def\doexamples#1{% - % Here we assume that two read-only openings of the same file are OK. - \immediate\openin\exfileA = #1 - \immediate\openin\exfileB = #1 - \loop - \advance\examplenumber by 1 - \reader - \ifx\holder\empty \notatendfilefalse \else \notatendfiletrue \fi - \ifnotatendfile - \dooneexample - \repeat -} - - -% We want control sequences to be executed as the input of each example -% is formatted, but we don't want to execute them for the output of each -% example until we generate that output with an \input command. -% Therefore, we treat ! differently for \holder, which produces example -% input, and \holderA, which produces example output. -% -% We can't say \global\immediate\read, but \immediate is implied with \read. -% -\def\reader{{\deactivate - \catcode`\! = \other % To execute control sequences on \input. - \catcode`\^^M = 9 \global\read\exfileA to \holder - % - \catcode`\! = 0 % To execute control sequences right away. - \obeyspaces \global\read\exfileB to \holderA - }% -} - -\def\dooneexample{{% - % We want to mention \! in one of the examples: - \edef\examplenum{\numbername\examplenumber}% - - \immediate\openout\exfileC = \tempfile - - \catcode`\| = \other % No literal code in these examples. - \chardef\! = `\! % !! means a literal ! character. - - - % Collect the input page, as it is to be printed, in a box - % At the same time, write out each line to \exfileC - % We make the box 0pt tall to avoid problems with overfull pages. - \setbox\xmpinput = \vbox to 0pt{% - % - \baselineskip = \codebaselineskip - \loop - \ifx\endmark\holder \notatendfalse \else\notatendtrue \fi - \ifnotatend - \expandafter\tildecheck\holder \empty \marker - \iftildeline\else - \leftline{\tt\frenchspacing \holderA \thinspace}% - \immediate\write\exfileC{\holder}% - \fi - \reader - \repeat - \vss % reduce height to 0pt - }% end \vtop - - \immediate\closeout\exfileC - - {% - \maxdepth = \maxdimen % allow long input - \vfill\eject - \catcode`\! = 0 - \restoreplainTeX - {% - \let\eject = \relax \input\tempfile - % Every example ends with \bye, but \bye is disabled in the main text. - \vfill\par\penalty-10000 - \global\footline = {\hfil}% - }% - \box\xmpinput - }% -}} - -{ - \catcode `\~ = \other % So the \ifx works. - \gdef\tildecheck#1#2\marker{% - \ifx #1~% - \immediate\write\exfileC {#2}\tildelinetrue - \else - \tildelinefalse - \fi - } -} - -% This definition is more or less repeated verbatim in the first example -% in xmptext.tex. -% -\def\xmpheader #1/#2{% - {\exampletitlefonts \leftline{Example #1:\quad \bi#2}}% - \vglue .5\baselineskip - \count255 = \pageno - \xdef\examplepage{\number\count255}% - \markinfo{Example #1: #2} - \ifrewritetocfile - \write\tocfile{\string\tocsectionentry{#2}{}{\examplepage}}% - \fi -} -% Let's number examples automatically; it makes it easier to move them -% around and add new ones. - -\def\xmpnum{\number\examplenumber} - -\newbox\xmpinput - - -% \negthin lets us put `\!' in examples. - -\def\negthin{\ifmmode \mskip-\thinmuskip \else \char`\\ \char`\! \fi} - -\def\xmpheaddef{see \xref{xmphead}} - -\def\restoreplainTeX{% - % Restore plain TeX's parameters (except for \hsize and \hoffset). - \parindent = 20pt - \parskip = 0pt plus 1pt - \parfillskip = 0pt plus 1fil - \hfuzz = 0.1pt - \hbadness = 1000 - \abovedisplayskip=12pt plus 3pt minus 9pt - \abovedisplayshortskip=0pt plus 3pt - \belowdisplayskip=12pt plus 3pt minus 9pt - \belowdisplayshortskip=7pt plus 3pt minus 4pt - \everymath = {}% - \everydisplay = {}% - \centereddisplays - \let\vfootnote = \@plainvfootnote - \let\footnote = \@plainfootnote - \let\tenrm = \oldtenrm - \textfont0 = \tenrm - \rm - \ignorespaces -}% - - - -% Macros for the concepts chapter. -% -% -% Start off the chapter. -% -\def\beginconcepts{\openout\conceptfile = \jobname.ccs } -\def\endconcepts{\closeout\conceptfile} - -\newwrite\conceptfile - -% \concept produces a concept heading and also generates a crossreference -% suitable for the mini-index. It even works for concepts with several words -% or containing control sequences like `\ascii'. -% -\def\concept#1 \par{% - \par - %k \cmdbreak - \penalty\conceptpenalty\vskip\aboveconceptskip - %k \vskip 0pt plus 1pt % allow a little more stretch - \noindent - % generate the index entry - \ifconceptindex \else \global\indextoks = {\idxref{#1}}\fi - \conceptindexfalse - \pix\bix\the\indextoks - % - {\bt \let\it=\bti \unskip\null #1.\hskip1em plus.2em minus.2em }% - \markinfo{#1}% - \xrdef{#1}% - \write\conceptfile{\string\doconcept{#1}{\number\pageno}}% - \beginit{CONCEPT}% - \nobreak - \ignorespaces -} - -\def\endconcept{% - \par % always go to vertical mode here - \eix\the\indextoks - \endit{CONCEPT}% - \ignorespaces -} - -\def\doconcept#1#2{\hbox{#1\quad #2}} - -% Sometimes we want to index a concept under some other name than the -% concept name, e.g., indexing `delimiter' as `delimiters'. The -% \conceptindex macro lets us do this. -% -\newif\ifconceptindex -\newtoks\indextoks -\def\conceptindex#1{% - \conceptindextrue - \global\indextoks = {\idxref{#1}}% - \ignorespaces -} - - -% Commands for cross-referencing within the concepts chapter. -% Each refterm has the form {a} or {a:b}, where b is the term to -% actually reference (e.g., \refterm{\PlainTeX:\plainTeX}). -% -\def\refterm#1{% - \reftermA #1:\endmark % Parse the stuff. - \expandafter\minrefsdelim\termtoref\endmark - \relax % Cancel the \ignorespaces. -}% -\def\reftermA#1:{\reftermfirst{#1}\futurelet\next\reftermB} -\def\reftermB#1\endmark{\ifx\endmark \next \else \reftermsecond#1\fi} - -\def\reftermfirst#1{#1\def\termtoref{#1}} -\def\reftermsecond#1:{\def\termtoref{#1}}% - -% The defining sentence for a concept. -% -\def\defterm#1{{\it #1\/}} - - -% This macro prints the single page that will go on the back cover. -% -\def\printconceptpage{% - % Make sure this is considered an odd page. - \ifodd\pageno\else\blankpage\fi - \noheadlinetrue - \advance\hsize by 2pc - \vglue2pc % Plus a \topskip of 2pc. - {\sectionfonts \leftline{List of concepts}}% - \vskip\belowsectionskip - {\conceptpagefonts - \parindent=0pt - \makecolumns 94/3: - \input \jobname.ccs - \vfil - % Put the `logo' at the bottom of the page. - \rightline{\thisbook}% - }% - \eject -} - - - -% Macros for the commands chapters. -% -% \ifcommands is true when we're within \begindescriptions ... - -\newif\ifcommands - - -% \begindescriptions should be called to start the actual control sequences. -% -\outer\def\begindescriptions{\beginit{DESCRIPTIONS}% - % The following definitions are local to this chapter. - % - \let\example = \commandexample - \let\endexample = \endcommandexample - \interlinepenalty = 50 - % - \commandstrue - \ignorespaces -} - -% The \endgroup that \enddescriptions does must come after the page -% break, so the last page of descriptions will get a mini-index. -% -\def\enddescriptions{% - \vskip -\lastskip % undo the skip created by \enddesc - \endit{DESCRIPTIONS}% - \ignorespaces -} - - -% Begin or end the description of a control sequence or group thereof. -% -\def\begindesc{% - \par % force vertical mode - \saveskip = \lastskip % will be 0 if no skip - \ifheading % Did we just have \section or \subsection? - \nobreak - \else - \cmdbreak - \fi - \combineskips\abovedescriptionskip - \headingfalse - \beginit{DESCRIPTION}% - \beginit{COMMANDS}% - % Each command name is set as a paragraph (for reasons I don't - % remember, \leftline doesn't work because of the way the manuscript - % was typed), and so \clubpenalty will be the penalty at the - % interline glue (see p.96). - \clubpenalty = \intercmdnamepenalty - \parfillskip = 0pt plus 1fil - \ignorespaces -} - -\def\enddesc{% - \nobreak % if we need a break, we'll get it from the next group opener - \vskip\belowdescriptionskip - \endit{DESCRIPTION}% - \ignorespaces -} - -% Begin the explanation of a control sequence. Don't break at the -% space above the explanation, or the interline glue before the first line. -% -\def\explain{% - \par - \endit{COMMANDS}% - \nobreak \vskip\explainskip - \interlinepenalty = 50 - \nobreak \noindent - \ignorespaces -} - -% Here is how \example looks in the text: -% \example -% ... -% | -% \produces -% ... -% \endexample -% -% repeated an indefinite number of times. -% -% We want to set the code of an example in a box so as to prevent it from -% being broken across pages. By using \vtop we assure that the code is the -% right distance from the `Example:' line. In order to keep the `produces:' -% the right distance from the last code line, we save the depth of that code -% line and then fool TeX into thinking that the \vtop has that depth by -% assigning it to \prevdepth. If we didn't do this, the last line of the code -% would be too close to the `produces:' (as indeed it was in earlier versions -% of the book. -% -\newdimen\savedepth - -{\makeactive| -\gdef\commandexample{% a.k.a. \example, inside \begindescriptions. - \cmdbreak\vskip\exampleskip - \leftline{\it Example:}% - \nobreak % At the interline glue. - \beginit{EXAMPLE}% - \parfillskip = 0pt plus 1fil - \hbox\bgroup\hskip\parindent\vtop\bgroup - \begincs - \let | = \endcode - \advance\hsize by -\parindent - \parindent = 0pt - \bgroup\obeywhitespace -}}% - -\def\endcode{% - \egroup % end \obeywhitespace group - \par\global\savedepth=\prevdepth - \egroup % end inner \vbox - \egroup % end outer \hbox - \prevdepth = \savedepth - \ignorespaces -} - -% \dproduces should be used when the following material is a math -% display. -% -\newif\ifexampledisplay -\def\dproduces{\global\exampledisplaytrue \produces} - -\newif\ifproduces - -% \produces puts its material into a vbox so it won't be broken. -% The material starts in VERTICAL MODE! It uses the plainTeX conventions -% except that \parindent is 0pt. - -\def\produces{% - \producestrue - \ifodd\pageno \par \nobreak \else \cmdbreak\fi - \vskip\tinyskipamount - \noindent {\it produces\ifexamplelog\ in the log\examplelogfalse\fi :}% - \vadjust{\nobreak}% At the interline glue. - \ifexampledisplay - \centereddisplays - \else - \par\nobreak - \advance\hsize by -\parindent - \savedepth = \prevdepth - \nointerlineskip - \hbox\bgroup\hskip\normalindent - \vtop\bgroup \restoreplainTeX \parindent = 0pt - \prevdepth = \savedepth - \fi -}% - -% we need another ``produces'' form for when a command puts things in -% the log. In this case, the produces text also ends with a |. -% -\newif\ifexamplelog -{\makeactive| -\gdef\logproduces{\examplelogtrue\produces - \begincs - \def |{\endcode\producesfalse}% - % Every line is set as a paragraph, so we get one \parindent for free. - % But we also did \advance\leftskip in \produces, so now we have two. - % We only want one. - \advance\leftskip by -\parindent - \bgroup\obeywhitespace -}}% - -\def\nextexample{\endexample\interexampleskip\example} - -\def\endcommandexample{% - \par % force vertical mode, set previous paragraph - \ifproduces \ifexampledisplay \global\exampledisplayfalse \else - \global\savedepth = \prevdepth - \egroup % Matches the \vtop in either the \produces or the \example. - \egroup % Matches the \hbox in \producesbox. - \global\producesfalse - \par - \prevdepth = \savedepth - \fi\fi - \endit{EXAMPLE}% - \ignorespaces -} - -\def\see{% - \ifodd\pageno\nobreak\fi % don't put at the top of a verso page - \vskip -\lastskip % should be \belowdescriptionskip - \bigskip - \noindent - {\tenbi \spaceskip = 3.33pt plus 2pt minus 1.1pt - \parfillskip = 0pt plus 1fil - See also: %k \hskip 1em plus .5em minus .25em - }% - \ignorespaces -}% - - -\newif\ifxref \xreftrue - -% \aux acts as a prefix to a \cts command, specifying that a -% cross-reference should not be generated. -% -\def\aux{\xreffalse} - -% So does \easy, which prints a hand, pointing at the control sequence. -% (The hand font doesn't define an em.) -% -\newif\ifeasy -\let\easy = \easytrue -\def\testeasy{\ifeasy\llap{\hand\ \kern 6pt}\easyfalse\fi} - -% \cts typesets the beginning of a control sequence description, and -% generates an index entry and cross-reference definition for it. The -% control sequence name must be delimited by a blank, since there may be -% parameters that follow. The control sequence name can contain special -% characters; they are deactivated. The initial \ must be omitted. -% -\def\cts{\begingroup \deactivate \ctsA} -\def\ctsA#1 {\endgroup \ctsB{#1}} -\def\ctsB#1#2{% - \ctsbasic{\\#1}{#2}% - \ifxref \ctsxrdef{#1}\else \xreftrue \fi - \pix\ctsidxref{#1}% -} - -% \ctsx is like \cts, but separates the control sequence name and the -% text by more space. (`x' for `extra') -% -\def\ctsx{\begingroup \deactivate \ctsxA} -\def\ctsxA#1 {\endgroup \ctsxB{#1}} -\def\ctsxB#1#2{% - \ctsbasic{\\#1}{\quad #2}% - \ifxref \ctsxrdef{#1}\else \xreftrue \fi - \pix\ctsidxref{#1}% -} - - -% \ctscol is like \cts, but doesn't start a new paragraph. It's used in -% in columns of cs's and their explanations. -% -\def\ctscol#1 #2{% - {\bt \\#1}\quad #2% - \ifxref \ctsxrdef{#1}\else \xreftrue \fi - \pix\ctsidxref{#1}% -} - -% \ctsbasic does the actual printing of a cs name. It's needed on its -% own for `\ '. It does not generate any index or cross-reference -% entries. #1 is the command name, #2 some (possibly empty) text to go -% next to it. -% -\def\ctsbasic#1#2{% - \par - \nobreak % At the \parskip glue the \noindent will produce. - \noindent\testeasy {{\bt #1}\space #2}% -} - -% \ctsxrdef generates a control sequence cross-reference definition. -% For example, `\ctsxrdef{@star}' generates a cross-reference definition -% for `\@star'. -% -\def\ctsxrdef#1{\expandafter\xrdef\csname#1\endcsname} - -% \ctsact prints an active character #1 and generates an index entry -% for it. #1 is blank-delimited. \ctsact does not generate a -% cross-reference definition. -% -\def\ctsact{\begingroup \deactivate \ctsactA} -\def\ctsactA#1 {\endgroup - \ctsbasic{#1}{}% - \pix\ttidxref{#1}} - -% \ctspecial prints a control sequence #1 and generates an index -% entry for it. #1 is blank-delimited. \ctspecial does not -% automatically generate a cross-reference definition, and so it's used -% for things like \newbox and \%. -% -\def\ctspecial{\begingroup \deactivate \ctspecialA} -\def\ctspecialA#1 {\endgroup - \ctsbasic{\\#1}{}% - \pix\ctsidxref{#1}% -} - -% \ctspecialx is like \ctspecial, but leaves more space after its -% argument. We want ` and ' to come from cmtt, instead of Optima, so we -% call \mapquotes before reading the argument. This only affects the \` -% and \' descriptions. -% -\def\ctspecialx{\begingroup \deactivate \mapquotes \ctspecialxA} -\def\ctspecialxA#1 {\endgroup - \ctsbasic{\\#1}{}\quad - \pix\ctsidxref{#1}% -} - -% \ctsdisplay has a blank-delimited argument consisting of a control -% sequence such as alpha. It produces $\alpha$ followed by \alpha. -% -\def\ctsdisplay#1 {\basicdisplay {$\csname #1\endcsname$}{\\#1}% - \ifxref\ctsxrdef{#1}\else\xreftrue\fi \pix\ctsidxref {#1}} - -% \ctsdoubledisplay has a blank-delimited argument consisting of a -% control sequence such as bigvee. It produces $\bigvee$ and -% $\big\bigvee$ followed by \bigvee. -% -\def\ctsdoubledisplay#1 { - {% - \symbolspace = 42pt - \basicdisplay{$\csname #1\endcsname\quad - \displaystyle\csname #1\endcsname$\ddstrut}% - {\\#1}% - }% - \ifxref\ctsxrdef{#1}\else\xreftrue\fi - \pix\ctsidxref{#1}% -} -\def\ddstrut{\vrule width0pt height15pt depth11pt} - -% \ctsydisplay displays a control symbol. #1 is a single character, -% which may be active. #2 is the cross-reference label, -% blank-delimited. -% -\def\ctsydisplay{\begingroup \deactivate\catcode`\|=\other \ctsydisplayA} -\def\ctsydisplayA#1 #2 {\endgroup - \basicdisplay{$\csname\string#1\endcsname$}{\\#1}% - \ifxref \ctsxrdef{#2}\else \xreftrue \fi - \pix\ctsidxref{#1}% -} - -% \actdisplay displays an active character. #1 is the character, and -% #2 is the cross-reference label, blank-delimited. -% -\def\actdisplay{\begingroup\catcode `\|=\other\actdisplayA} -\def\actdisplayA#1 #2 {\endgroup - \basicdisplay{$#1$}{\string#1}% - \ifxref \xrdef{#2}\else \xreftrue \fi - \pix\ttidxref{#1}% -} - -% \basicdisplay does the actual typesetting of a control sequence name. -% for inside displays. -% -\def\basicdisplay#1#2{\testeasy\hbox to \symbolspace{#1\hfil}{\bt #2}} - -% Printing parameter and table entry headings. -% -\def\param#1{\printparam{#1}{parameter}} -\def\tblentry#1{\printparam{#1}{table entry}} -\def\printparam#1#2{\hskip1.5em [\kern3pt \<#1> #2\kern2pt]} - -% Required braces. -% -\def\rqbraces#1{\{\hskip2pt#1\hskip2pt\}} - -% Printing rulers. -% -\def\1{\vrule height 0pt depth 2pt} -\def\2{\vrule height 0pt depth 4pt} -\def\3{\vrule height 0pt depth 6pt} -\def\4{\vrule height 0pt depth 8pt} -\def\ruler#1#2#3{{$\vcenter{\hrule\hbox{\4#1}}\,\,\rm#2\,{#3}$}} -\def\doruler{\par \noindent\ruler} -\def\tick#1{\hbox to .125in{\hfil#1}} -\def\8{\tick\1\tick\2\tick\1\tick\3\tick\1\tick\2\tick\1\tick\4} - -% Macros for the capsule summary chapter. -% -\def\begincapsum{\beginit{CAPSULE SUMMARY}% - \let\bt = \tentt - \bigskip -} - -\def\endcapsum{\endit{CAPSULE SUMMARY}} - -\newbox\@primitivebox \setbox\@primitivebox = \hbox{\tt *} -\newif\ifcs - -\def\capline{\begingroup \deactivate\catcode `\| = \other \caplineA} -\def\caplineA#1 {\endgroup - \begingroup - \catcode `@ = \letter % for constructing labels - \caplineB{#1}% -} - -% Parameters of \caplineB: -% #1 name of control sequence -% #2 description -% #3 * or empty -% #4 xref or xref1:xref2 or empty - -\def\caplineB#1#2#3#4{% - \ifempty {#4}\temptrue\else\tempfalse\fi - % \iftemp needed to avoid \if ... \else ... \fi nesting problems - \ifcs - \toks0 = {\caplineout{\\#1}{#2}{#3}}% - \iftemp - \toks1 = \expandafter{\csname #1\endcsname}% - \else - \toks1 = {#4}% - \fi - \edef\nextaction{\the\toks0 {\the\toks1}}% - \nextaction - \ctsidxref {#1}% - \else - % The \space makes one-character entries line up nicely. - \caplineout{\space #1}{#2}{#3}{#4}% - \ttidxref {#1}% - \fi - \endgroup -} - -\newif\iftemp - - -% In a few cases we have two cross-references for a single control -% sequence. -% -\newif\ifcstwo - -\def\capac{\cstwofalse\csfalse\capline} -\def\capactwo{\cstwotrue\csfalse\capline} -\def\capcs{\cstwofalse\cstrue\capline} -\def\capcstwo{\cstwotrue\cstrue\capline} - -% \caplineout produces an output line (or several lines) for the capsule -% summary. #1 is the command text, #2 is the description, #3 is either * or -% empty, and #4 is the cross-reference label. -% -\def\caplineout#1#2#3#4{% - \setbox0 = \ifempty {#3}\box\voidb@x \else \copy\@primitivebox\fi - \vskip\intercapsuleskip - % If we use \vbox here, a multi-line summary at the top of a page - % will cause \topskip to disappear. - % - \vtop{\noindent \hangindent = \capsulehangindent - \spaceskip = 3.33pt plus 2pt minus 1.5pt - \rightskip = 0pt plus 4em % a little more stretch - \parfillskip = 0pt plus 1fil - \llap{\box0}{\bt #1}% Bold typewriter for the cs name. - \quad \hskip 0pt plus 1pt minus 1pt - #2\unskip\ - (\ifcstwo \tworefs #4:\else \xref{#4}\fi)% - }% - \par -} - -\def\tworefs#1:#2:{\xref{#1}, \xref{#2}} - - - -% Macros for printing the index. -% -% Set up to print it. -% -\def\beginindex{% - \doublecolumns - \beginit{THE INDEX} - \markinfo{\chaptername}% - \indexfonts - \parindent = 0pt - \def\pp##1{{\it ##1}} % Principal entry. - \def\c{,\thinspace\allowbreak}% - \def\ic{,\quad} - \def\see##1{.\quad{\it See} ##1 } - \def\seealso##1{\hfil\break{\it See also} ##1 } - \let\r = \romannumeral - - \raggedright -} - -\def\endindex{\endit{THE INDEX}\singlecolumn} - - -% #1 is the level of this index entry minus 1 (i.e., 0 for a main -% entry), #2 is the index term, #3 is the kind of term -% (T for ttfont, C for control sequence, N for normal), and -% #4 is the list of pages. The page list can have \pp (principal -% entry)in it, and each page is separated by \c. -% -\def\indexentry#1#2#3#4{% - \beginit{INDEX ENTRY}% - \leftskip = #1\indexpageindent - \par - \leavevmode - \hangindent = \indexlevelindent - \ifx #3T% - {\tt #2}% Typewriter. - \else \ifx #3C% - {\tt \llap{\\}#2}% Control sequence. - \else - % in normal entries, \b and \e enclose a group. ({ and } don't work.) - {\let \b = \bgroup \let \e = \egroup #2}% - \fi\fi - #4% The list of pages. - \par - \endit{INDEX ENTRY}% -} - -% Nah, let's forget printing the initial. -% -\def\indexgroup#1{% - \bigskip -} - - - -% Code formatting. -% -% -% Turn off normally special characters. -% -\def\deactivate{% - \catcode`\\ = \other \catcode`\{ = \other \catcode`\} = \other - \catcode`\$ = \other \catcode`\& = \other \catcode`\# = \other - \catcode`\% = \other \catcode`\~ = \other \catcode`\^ = \other - \catcode`\_ = \other -} - -% It is convenient to have |...| mean print the ... verbatim, except for !. -% (But | should just be a vertical bar in math mode.) This should be -% used only for inline code; returns inside |...| become spaces. -% -\catcode`\| = \active -\def|{% - \ifmmode - \vert - \else - \begingroup - \obeyspaces - \begincs - \let| = \endgroup - \fi -} - -% \csdisplay is similar, but it inserts glue before and after. -% It also is ended by |, so we have to redefine that. -% -\def\csdisplay{% - \par - \nobreak % don't break above displays - \vskip\abovedisplayskip - \begingroup - \interlinepenalty = 10000 - \obeywhitespace - \begincs - \def|{\endgroup\vskip\belowdisplayskip \noindent\ignorespaces}% -} - -% \begincs does the setup for verbatim printing. It does not confine -% its effects to a group. -% -\def\begincs{% - \hfuzz = \codefuzz - \parfillskip = 0pt plus 1fil - \parskip = 0pt % don't stretch interparagraph space within code displays - \catcode`\! = 0 - \let\! = \exclam - \let\| = \verticalbar - \let\$ = $% - \let\. = \empty % Use !. to end a control sequence to be executed. - \def\-{\discretionary{-}{}{}}% but allow explicit discretionary hyphens - \tt \deactivate -} - - -\chardef\exclam = `\! -\chardef\verticalbar = `\| - -% In math mode we want vertical bars and exclamation points to be -% regular characters again. -% -\everymath = {\setmathchars} -\everydisplay = {\setmathchars} -\leftdisplays - -\def\setmathchars{% - \catcode`\| = \other \catcode`\! = \other - \let\{ = \lbrace \let\} = \rbrace -} - - - - -% Some miscellanous macros. -% -\def\anatomy{anatomy of \TeX} -\def\ascii{{\ninerm ASCII}} -\def\asciichar#1{$\langle \rm #1\rangle$} -\def\bblfile{{\tt .bbl} file} -\def\bibfile{{\tt .bib} file} -\def\bstfile{{\tt .bst} file} -\def\didotpt{did\^ot point} -\def\dvifile{{\tt .dvi} file} -\def\em{\thinspace {\rm em}} -\def\emph#1{{\it #1}\itcorr} % Emphasize. -\def\ftp{{\tt ftp}} -\def\gffile{{\tt .gf} file} -\def\hand{{\handfont A}} -\def\ifatest{{\tt \\if} test} -\chardef\inches = "7D -\def\knuth#1{#1 of \texbook} -\let\Metafont = \MF -\def\Mperiod.{$M$\kern-1.6pt.} -\def\Mprimecomma,{$M'$\kern-3.5pt,} -\def\Mprimeperiod.{$M'$\kern-2.5pt.} -\def\mud{\thinspace {\rm mu}} % can't use \mu; it'a a Greek letter! -\def\newTeX{new \TeX} -\def\p{p.\thinspace} -\def\pkfile{{\tt .pk} file} -\def\plainTeX{plain \TeX} -\def\PlainTeX{Plain \TeX} -\def\pp{p\p} -\def\pt{\thinspace {\rm pt}} -\def\pxlfile{{\tt .pxl} file} -\def\tequiv{\unskip $\>\equiv\>$} % equivalence in text -\def\texbook{{\sl The \TeX book}\itcorr} -\let\tex@ = \TeX -\def\TeX{\tex@\null} -\def\TeXMeX{\TeX\ M\kern-.11em\lower .5ex\hbox{E}\kern-.125em X\null}% -\def\tfmfile{{\tt .tfm} file} -\def\thisbook{{\sl \TeX\ for the Impatient\/}} -\let\ths = \thinspace -\def\tminus{\unskip\allowbreak $\>-\>$\allowbreak} % minus in text -\def\tplus{\unskip\allowbreak $\>+\>$\allowbreak} % plus in text -\def\TUG{\TeX{} Users Group} -\def\Vcomma,{$V$\kern-2pt,} -\def\visiblespace{{\tentt \char'040}} -\def\Vperiod.{$V$\kern-2pt.} -\let\vs=\visiblespace -\def\xrefpg#1{page~\xrefn{#1}} - -% \tighten attempts to shorten the number of lines occupied by a paragraph. -\def\tighten{\looseness=-1 - \spaceskip = .9\fontdimen2\font plus \fontdimen3\font - minus 1.1\fontdimen4\font -} - -% \itcorr can be used at the end of a macro that puts its argument in -% italics in order to produce an italic correction just when it's needed. -% It won't look inside a following macro call, however. - -\def\itcorr{\futurelet\next\itcorrA} -\def\itcorrA{\ifx.\next\else\ifx,\next\else\/\fi\fi} - - -% Arrange N items in three columns. -% A right brace is needed at the end of the list to match the \bgroup. -% -\def\threecolumns{\nobreak\vskip\abovedisplayskip\dothreecolumns} - -\def\dothreecolumns#1 {\bgroup - \parindent = 0pt - \makecolumns #1/3: -} - -% We don't want to make < an active character because then it cannot be used -% in \ifnum tests. So, \<foo> denotes a nonterminal `foo'. -% -\def\<#1>{$\langle${\rm\it \kern-.2pt #1\kern.65pt}$\rangle$} - -\let\beginit = \environment -\let\endit = \endenvironment - -\def\eatpar#1\par{} - -% \needspace breaks out the page if there's less than #1 left on it. - -\def\needspace#1{% - \saveskip = \lastskip - \par % force vertical mode - \vfil - \penalty 1000 - \vskip #1 - \penalty9999 - \par % exercise the page builder - \vskip -#1 plus -1fil - \vskip -\saveskip \vskip \saveskip % to restore \lastskip -} - - - - -% Expanded cross-referencing for various parts of the books. -% - -% Sometimes it is clearer to refer to a cross-reference as a control -% sequence. -% -\def\ctsref{\begingroup \catcode`\@ = \letter \@ctsref} -\def\@ctsref#1{(\xref{#1})\endgroup} - -\def\xrefdelim[#1]{page~\xrefn{#1}} % this form doesn't need braces - -% This command comes at the beginning of chapters, after the \chapter -% command and before the text. Hence the \par in the template -% and the \noindent -% -\def\chapterdef#1#2\par{% - \@writeaux{% - \string\gdef\expandafter\string - \csname#1_C\endcsname{\the\chapterno}}% - \noindent -} - -\def\chapternum#1{% - \def\csn{#1_C}% - \expandafter\ifx\csname\csn\endcsname \relax - \expandafter\def\csname\csn\endcsname{`#1'}% - \ifxrefwarning - \message{Undefined chapter `#1'.}% - \fi - \fi - \csname\csn\endcsname -} - -\def\chapterref#1{Section~\chapternum{#1}} - -\def\headcit#1#2{``{\rm #1}'' (\xref{#2})} - -\def\conceptcit#1{\headcit{#1}{#1}} - -\def\seeconcept#1{(see ``{\rm #1}'', \xref{#1})} - - - - -% Special types of pictures. -% -% Glue pictures: -% -\newdimen\glueboxwidth -\newdimen\boxdepth \boxdepth = 3.5pc -\newskip\underlabel \underlabel= .1\boxdepth % space under `width n'. -\def\squeezeglue{\glueboxwidth = .725\glueboxwidth} - -\def\labelledbox#1 #2 #3{\vtop{% - \hrule - \hbox{% - \vrule - \hbox to #1{\hfil \vbox to #2{\vfil#3\vskip\underlabel}\hfil}% - \vrule - }% - \hrule -}}% - -% Make a picture of a box. -% -\def\picbox#1 {% - \glueboxwidth = #1pc \squeezeglue - \vtop{% - \hbox to \glueboxwidth{\strut \hfil {\it box}\hfil}% - \labelledbox % Have to have spaces after the arguments. - {\glueboxwidth} - {\boxdepth} - {\halign{\hfil##\hfil\cr width #1\cr}}% - }% -} - -% And of glue. -% -\def\gluebox#1 #2 #3 #4 {\vtop{% - \glueboxwidth = #4pc \squeezeglue - \hbox to \glueboxwidth{\strut \hfil {\it glue}\hfil}% - \nointerlineskip - \kern2pt % to move the brace down a bit - \hbox{$\overbrace{\hbox{\hskip\glueboxwidth}}$}% - \kern-3pt % The \overbrace puts in 3pt below itself. - \nointerlineskip - \vbox to \boxdepth{% - \hsize = \glueboxwidth - \vskip 2pt - \advance\baselineskip by -2pt - \centerline{\strut size #1}% - \centerline{stretch #2}% - \centerline{shrink #3}% - \centerline{width #4}% - \vss - }% - \kern 1.5pt % I don't know why this is needed. - \nointerlineskip - \hbox{$\underbrace{\hbox{\hskip\glueboxwidth}}$}% -}} - -\def\gluepicture#1 #2{{\ninerm - \medskip - \vtop{% - \setbox0 = \hbox{#2}% The glue and box pictures. - \glueboxwidth = \wd0 - \leftline{\box0}% - \kern 6pt - \hbox to \glueboxwidth{\leftarrowfill{ width #1 }\rightarrowfill}% - }% - \medskip -}} - -% Box pictures. -% -% Set up a `reference point' and the macro for a labelled height, for use -% in forming pictures of boxes. -% -\newbox\refpoint - -\setbox\refpoint = \vbox to 0pt{% - \kern-2.6pt - \hbox to 0pt{\kern-2.2pt $\bullet$\hss} - \vss -}% - -\def\labelledheight#1#2{% -\vtop to #1{\offinterlineskip - \setbox0=\hbox{#2}\skip0=\wd0 - \hbox to \skip0{\hss\tenex\char"78\hss}\kern-4pt - {\cleaders\hbox to \skip0{\hss\tenex\char"3F\hss}\vfil}% - \vskip1pt\box0\vskip1pt - {\cleaders\hbox to \skip0{\hss\tenex\char"3F\hss}\vfil}% - \kern -6pt\boxmaxdepth 0pt\hbox to \skip0{\hss\tenex\char"79\hss}}} - - - -% Paul's updates -- no longer needed; we have converged. -% -%\input paulmacs - -% Read the cross-reference definitions. -% -\readauxfile - -\catcode`\@ = \other % Make @ an `other' character again. -\catcode`\^ = \active % Make ^'s do indexing outside of math mode. diff --git a/Master/texmf-doc/doc/english/impatient/math.tex b/Master/texmf-doc/doc/english/impatient/math.tex deleted file mode 100644 index 31d7f1aa157..00000000000 --- a/Master/texmf-doc/doc/english/impatient/math.tex +++ /dev/null @@ -1,2190 +0,0 @@ -% This is part of the book TeX for the Impatient. -% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. -% See file fdl.tex for copying conditions. - -\input macros -\chapter {Commands \linebreak for composing \linebreak math formulas} - -\bix^^{math} -\chapterdef{math} - -This section covers commands for constructing math formulas. -For an explanation of the conventions used in this section, -see \headcit{Descriptions of the commands}{cmddesc}. - -\begindescriptions -%========================================================================== -\section {Simple parts of formulas} - -%========================================================================== -\subsection {Greek letters} - -\begindesc -\bix^^{Greek letters} -\dothreecolumns 40 -\easy\ctsdisplay alpha {} -\ctsdisplay beta {} -\ctsdisplay chi {} -\ctsdisplay delta {} -\ctsdisplay Delta {} -\ctsdisplay epsilon {} -\ctsdisplay varepsilon {} -\ctsdisplay eta {} -\ctsdisplay gamma {} -\ctsdisplay Gamma {} -\ctsdisplay iota {} -\ctsdisplay kappa {} -\ctsdisplay lambda {} -\ctsdisplay Lambda {} -\ctsdisplay mu {} -\ctsdisplay nu {} -\ctsdisplay omega {} -\ctsdisplay Omega {} -\ctsdisplay phi {} -\ctsdisplay varphi {} -\ctsdisplay Phi {} -\ctsdisplay pi {} -\ctsdisplay varpi {} -\ctsdisplay Pi {} -\ctsdisplay psi {} -\ctsdisplay Psi {} -\ctsdisplay rho {} -\ctsdisplay varrho {} -\ctsdisplay sigma {} -\ctsdisplay varsigma {} -\ctsdisplay Sigma {} -\ctsdisplay tau {} -\ctsdisplay theta {} -\ctsdisplay vartheta {} -\ctsdisplay Theta {} -\ctsdisplay upsilon {} -\ctsdisplay Upsilon {} -\ctsdisplay xi {} -\ctsdisplay Xi {} -\ctsdisplay zeta {} -\egroup -\explain -These commands produce Greek letters suitable for mathematics. -You can only use them -within a math formula, so if you need a Greek letter within ordinary -text you must enclose it in dollar signs (|$|). \TeX\ does not have -commands for Greek letters that look like their roman -counterparts, since you can get them by using those roman -counterparts. For example, you can get a lowercase -^{omicron} in a formula by writing the letter `o', i.e., -`|{\rm o}|' or an uppercase ^{beta} (`B') by writing -`|{\rm B}|'. - -Don't confuse the following letters: -\ulist \compact -\li |\upsilon| (`$\upsilon$'), |{\rm v}| (`v'), and |\nu| (`$\nu$'). -\li |\varsigma| (`$\varsigma$') and |\zeta| (`$\zeta$'). -\endulist - -You can get slanted capital Greek letters by using the math italic -(|\mit|) \minref{font}. - -\TeX\ treats Greek letters as ordinary symbols when it's figuring how -much space to put around them. - -\example -If $\rho$ and $\theta$ are both positive, then $f(\theta) --{\mit \Gamma}_{\theta} < f(\rho)-{\mit \Gamma}_{\rho}$. -| -\produces -If $\rho$ and $\theta$ are both positive, then -$f(\theta)-{\mit \Gamma}_{\theta} < f(\rho)-{\mit \Gamma}_{\rho}$. -\endexample -\eix^^{Greek letters} -\enddesc - -%========================================================================== -\subsection {Miscellaneous ordinary math symbols} - -\begindesc -\xrdef{specsyms} -\dothreecolumns 34 -\easy\ctsdisplay infty {} -\ctsdisplay Re {} -\ctsdisplay Im {} -\ctsdisplay angle {} -\ctsdisplay triangle {} -\ctsdisplay backslash {} -\ctsdisplay vert {} -\ctsydisplay | @bar {} -\ctsdisplay Vert {} -\ctsdisplay emptyset {} -\ctsdisplay bot {} -\ctsdisplay top {} -\ctsdisplay exists {} -\ctsdisplay forall {} -\ctsdisplay hbar {} -\ctsdisplay ell {} -\ctsdisplay aleph {} -\ctsdisplay imath {} -\ctsdisplay jmath {} -\ctsdisplay nabla {} -\ctsdisplay neg {} -\ctsdisplay lnot {} -\actdisplay ' @prime \ (apostrophe) -\ctsdisplay prime {} -\ctsdisplay partial {} -\ctsdisplay surd {} -\ctsdisplay wp {} -\ctsdisplay flat {} -\ctsdisplay sharp {} -\ctsdisplay natural {} -\ctsdisplay clubsuit {} -\ctsdisplay diamondsuit {} -\ctsdisplay heartsuit {} -\ctsdisplay spadesuit {} -\egroup -\explain -^^{music symbols} ^^{card suits} -These commands produce various symbols. They are called -``^{ordinary symbol}s'' to distinguish them from other classes of -symbols such as relations. You can only use -an ordinary symbol -within a math formula, so if you need an ordinary symbol within ordinary text -you must enclose it in dollar signs (|$|). - -The commands |\imath| and |\jmath| are useful when you need to put an -accent on top of an `$i$' or a `$j$'. - -An apostrophe (|'|) is a short way of writing a superscript |\prime|. (The -|\prime| command by itself generates a big ugly prime.) - -The |\!|| and ^|\Vert| commands are synonymous, as -are the ^|\neg| and ^|\lnot| commands. -\margin{explanation of {\tt\\vert} added} -The |\vert| command produces the same result as `|!||'. -\indexchar | - -The symbols produced by |\backslash|, |\vert|, and |\Vert| -are \minref{delimiter}s. These symbols can be produced in larger sizes -by using ^|\bigm| et al.\ (\xref \bigm). - -\example -The Knave of $\heartsuit$s, he stole some tarts. -| -\produces -The Knave of $\heartsuit$s, he stole some tarts. -\nextexample -If $\hat\imath < \hat\jmath$ then $i' \leq j^\prime$. -| -\produces -If $\hat\imath < \hat\jmath$ then $i' \leq j^\prime$. -\nextexample -$${{x-a}\over{x+a}}\biggm\backslash{{y-b}\over{y+b}}$$ -| -\dproduces -$${{x-a}\over{x+a}}\biggm\backslash{{y-b}\over{y+b}}$$ -\endexample -\enddesc - -%========================================================================== -\subsection {Binary operations} - -\begindesc -\bix^^{operations} -\xrdef{binops} -\dothreecolumns 34 -\easy\ctsdisplay vee {} -\ctsdisplay wedge {} -\ctsdisplay amalg {} -\ctsdisplay cap {} -\ctsdisplay cup {} -\ctsdisplay uplus {} -\ctsdisplay sqcap {} -\ctsdisplay sqcup {} -\ctsdisplay dagger {} -\ctsdisplay ddagger {} -\ctsdisplay land {} -\ctsdisplay lor {} -\ctsdisplay cdot {} -\ctsdisplay diamond {} -\ctsdisplay bullet {} -\ctsdisplay circ {} -\ctsdisplay bigcirc {} -\ctsdisplay odot {} -\ctsdisplay ominus {} -\ctsdisplay oplus {} -\ctsdisplay oslash {} -\ctsdisplay otimes {} -\ctsdisplay pm {} -\ctsdisplay mp {} -\ctsdisplay triangleleft {} -\ctsdisplay triangleright {} -\ctsdisplay bigtriangledown {} -\ctsdisplay bigtriangleup {} -\ctsdisplay ast {} -\ctsdisplay star {} -\ctsdisplay times {} -\ctsdisplay div {} -\ctsdisplay setminus {} -\ctsdisplay wr {} -\egroup -\explain -These commands produce the symbols for various binary operations. -Binary operations are one of \TeX's \minref{class}es of math symbols. -\TeX\ puts different amounts of space around different classes of math -symbols. When \TeX\ needs to break a line of text within a math -formula, \minrefs{line break} it will consider placing the break -after a binary operation---but only if -the operation is at the outermost level of -the formula, i.e., not enclosed in~a~group. - -In addition to these commands, \TeX\ also treats `|+|' and `|-|' -as binary operations. It considers `|/|' to be an ordinary symbol, -despite the fact that mathematically it is a binary operation, -because it looks better with less space around it. - -\example -$$z = x \div y \quad \hbox{if and only if} \quad -z \times y = x \;\hbox{and}\; y \neq 0$$ -| -\dproduces -$$z = x \div y \quad \hbox{if and only if} \quad -z \times y = x \;\hbox{and}\; y \neq 0$$ -\endexample -\enddesc - -\begindesc -\ctspecial * \ctsxrdef{@star} -\explain -The |\*| command indicates a discretionary multiplication symbol -($\times$), which is a binary operation. This multiplication symbol -behaves like a discretionary hyphen when it appears in a formula within -text\minrefs{text math}. That is, \TeX\ will typeset the |\times| -symbol \emph{only} if the formula needs to be broken at that point. -There's no point in using |\*| in a displayed formula \minrefs{display -math} since \TeX\ never breaks displayed formulas on its own. - -\example -Let $c = a\*b$. In the case that $c=0$ or $c=1$, let -$\Delta$ be $(\hbox{the smallest $q$})\*(\hbox{the -largest $q$})$ in the set of approximate $\tau$-values. -| -\produces -Let $c = a\*b$. In the case that $c=0$ or $c=1$, let -$\Delta$ be $(\hbox{the smallest $q$})\*(\hbox{the -largest $q$})$ in the set of approximate $\tau$-values. - -\eix^^{operations} -\endexample -\enddesc - -%========================================================================== -\subsection {Relations} - -\begindesc -\xrdef {relations} -\bix^^{relations} -\dothreecolumns 39 -\easy\ctsdisplay asymp {} -\ctsdisplay cong {} -\ctsdisplay dashv {} -\ctsdisplay vdash {} -\ctsdisplay perp {} -\ctsdisplay mid {} -\ctsdisplay parallel {} -\ctsdisplay doteq {} -\ctsdisplay equiv {} -\ctsdisplay ge {} -\ctsdisplay geq {} -\ctsdisplay le {} -\ctsdisplay leq {} -\ctsdisplay gg {} -\ctsdisplay ll {} -\ctsdisplay models {} -\ctsdisplay ne {} -\ctsdisplay neq {} -\ctsdisplay notin {} -\ctsdisplay in {} -\ctsdisplay ni {} -\ctsdisplay owns {} -\ctsdisplay prec {} -\ctsdisplay preceq {} -\ctsdisplay succ {} -\ctsdisplay succeq {} -\ctsdisplay bowtie {} -\ctsdisplay propto {} -\ctsdisplay approx {} -\ctsdisplay sim {} -\ctsdisplay simeq {} -\ctsdisplay frown {} -\ctsdisplay smile {} -\ctsdisplay subset {} -\ctsdisplay subseteq {} -\ctsdisplay supset {} -\ctsdisplay supseteq {} -\ctsdisplay sqsubseteq {} -\ctsdisplay sqsupseteq {} -\egroup -\explain -These commands produce the symbols for various relations. -Relations are one of \TeX's \minref{class}es of math symbols. -\TeX\ puts different amounts of space -around different \minref{class}es of math symbols. -When \TeX\ needs to break a line of text -within a math formula, \minrefs{line break} it will consider -placing the break after a relation---but only if -the relation is at the outermost level of the formula, -i.e., not enclosed in a group. - -In addition to the commands listed here, \TeX\ treats `^|=|' and the -``arrow'' commands (\xref{arrows}) as relations. - -Certain relations have more than one command that you can use -to produce them: -\ulist \compact -\li `$\ge$' (|\ge| and |\geq|). -\li `$\le$' (|\le| and |\leq|). -\li `$\ne$' (|\ne|, |\neq|, and |\not=|). -\li `$\ni$' (|\ni| and |\owns|). -\endulist - -\xrdef{\not} -You can produce negated relations by prefixing them with |\not|, as follows: - -\nobreak -\threecolumns 21 -\basicdisplay {$\not\asymp$}{\\not\\asymp}\ctsidxref{asymp} -\basicdisplay {$\not\cong$}{\\not\\cong}\ctsidxref{cong} -\basicdisplay {$\not\equiv$}{\\not\\equiv}\ctsidxref{equiv} -\basicdisplay {$\not=$}{\\not=}\ttidxref{=} -\basicdisplay {$\not\ge$}{\\not\\ge}\ctsidxref{ge} -\basicdisplay {$\not\geq$}{\\not\\geq}\ctsidxref{geq} -\basicdisplay {$\not\le$}{\\not\\le}\ctsidxref{le} -\basicdisplay {$\not\leq$}{\\not\\leq}\ctsidxref{leq} -\basicdisplay {$\not\prec$}{\\not\\prec}\ctsidxref{prec} -\basicdisplay {$\not\preceq$}{\\not\\preceq}\ctsidxref{preceq} -\basicdisplay {$\not\succ$}{\\not\\succ}\ctsidxref{succ} -\basicdisplay {$\not\succeq$}{\\not\\succeq}\ctsidxref{succeq} -\basicdisplay {$\not\approx$}{\\not\\approx}\ctsidxref{approx} -\basicdisplay {$\not\sim$}{\\not\\sim}\ctsidxref{sim} -\basicdisplay {$\not\simeq$}{\\not\\simeq}\ctsidxref{simeq} -\basicdisplay {$\not\subset$}{\\not\\subset}\ctsidxref{subset} -\basicdisplay {$\not\subseteq$}{\\not\\subseteq}\ctsidxref{subseteq} -\basicdisplay {$\not\supset$}{\\not\\supset}\ctsidxref{supset} -\basicdisplay {$\not\supseteq$}{\\not\\supseteq}\ctsidxref{supseteq} -\basicdisplay {$\not\sqsubseteq$}{\\not\\sqsubseteq}% - \ctsidxref{sqsubseteq} -\basicdisplay {$\not\sqsupseteq$}{\\not\\sqsupseteq}% - \ctsidxref{sqsupseteq} -\egroup - -\example -We can show that $AB \perp AC$, and that -$\triangle ABF \not\sim \triangle ACF$. -| -\produces -We can show that $AB \perp AC$, and that -$\triangle ABF \not\sim \triangle ACF$. - -\eix^^{relations} -\endexample -\enddesc - -%========================================================================== -\subsection {Left and right delimiters} - -\begindesc -\bix^^{delimiters} -% -\dothreecolumns 12 -\easy\ctsdisplay lbrace {} -\ctsydisplay { @lbrace {} -\ctsdisplay rbrace {} -\ctsydisplay } @rbrace {} -\ctsdisplay lbrack {} -\ctsdisplay rbrack {} -\ctsdisplay langle {} -\ctsdisplay rangle {} -\ctsdisplay lceil {} -\ctsdisplay rceil {} -\ctsdisplay lfloor {} -\ctsdisplay rfloor {} -\egroup -\explain -These commands produce left and right \minref{delimiter}s. -Mathematicians use delimiters to indicate the boundaries between parts -of a formula. Left delimiters are also called ``^{opening}s'', and -right delimiters are also called ``^{closing}s''. Openings and closings -are two of \TeX's \minref{class}es of math symbols. \TeX\ puts -different amounts of space around different \minref{class}es of math -symbols. You might expect the space that \TeX\ puts around openings and -closings to be symmetrical, but in fact it isn't. - -Some left and right delimiters have more than one command that you can -use to produce them: - -\ulist\compact -\li `$\{$' (|\lbrace| and |\{|) -\li `$\}$' (|\rbrace| and |\}|) -\li `$[$' (|\lbrack| and `|[|') -\li `$]$' (|\rbrack| and `|]|') -\endulist -\noindent You can also use the left and right bracket characters -(in either form) outside of math mode. - -In addition to these commands, \TeX\ treats `|(|' as a left -delimiter and `|)|' as a right delimiter. - -You can have \TeX\ -choose the size for a delimiter by using |\left| and |\right| (\xref\left). -Alternatively, -you can get a delimiter of a specific size by using one of the |\big|$x$ -commands (see |\big| et al., \xref{\big}). - -\example -The set $\{\,x \mid x>0\,\}$ is empty. -| -\produces -The set $\{\,x \mid x>0\,\}$ is empty. - -\eix^^{delimiters} -\endexample -\enddesc - -%========================================================================== -\subsection {Arrows} - -\begindesc -\bix^^{arrows} -\xrdef{arrows} -% -{\symbolspace=24pt \makecolumns 34/2: -\easy% -\ctsdisplay leftarrow {} -\ctsdisplay gets {} -\ctsdisplay Leftarrow {} -\ctsdisplay rightarrow {} -\ctsdisplay to {} -\ctsdisplay Rightarrow {} -\ctsdisplay leftrightarrow {} -\ctsdisplay Leftrightarrow {} -\ctsdisplay longleftarrow {} -\ctsdisplay Longleftarrow {} -\ctsdisplay longrightarrow {} -\ctsdisplay Longrightarrow {} -\ctsdisplay longleftrightarrow {} -\ctsdisplay Longleftrightarrow {} -\basicdisplay {$\Longleftrightarrow$}{\\iff}\pix\ctsidxref{iff}\xrdef{\iff} -\ctsdisplay hookleftarrow {} -\ctsdisplay hookrightarrow {} -\ctsdisplay leftharpoondown {} -\ctsdisplay rightharpoondown {} -\ctsdisplay leftharpoonup {} -\ctsdisplay rightharpoonup {} -\ctsdisplay rightleftharpoons {} -\ctsdisplay mapsto {} -\ctsdisplay longmapsto {} -\ctsdisplay downarrow {} -\ctsdisplay Downarrow {} -\ctsdisplay uparrow {} -\ctsdisplay Uparrow {} -\ctsdisplay updownarrow {} -\ctsdisplay Updownarrow {} -\ctsdisplay nearrow {} -\ctsdisplay searrow {} -\ctsdisplay nwarrow {} -\ctsdisplay swarrow {} -} -\explain -These commands provide arrows of different kinds. They -are classified as relations (\xref{relations}). -The vertical arrows in the list are also \minref{delimiter}s, so you can make -them larger by using |\big| et al.\ (\xref \big). - -The command |\iff| differs from |\Longleftrightarrow| in that -it produces extra space to the left and right of the arrow. - -You can place symbols or other legends on top of a left or right arrow -with |\buildrel| (\xref \buildrel). - -\example -$$f(x)\mapsto f(y) \iff x \mapsto y$$ -| -\dproduces -$$f(x)\mapsto f(y) \iff x \mapsto y$$ - -\eix^^{arrows} -\endexample -\enddesc - -%========================================================================== -\subsection {Named mathematical functions} - -\begindesc -\xrdef{namedfns} -\bix^^{functions, names of} -{\symbolspace = 36pt -\threecolumns 32 -\easy\ctsdisplay cos {} -\ctsdisplay sin {} -\ctsdisplay tan {} -\ctsdisplay cot {} -\ctsdisplay csc {} -\ctsdisplay sec {} -\ctsdisplay arccos {} -\ctsdisplay arcsin {} -\ctsdisplay arctan {} -\ctsdisplay cosh {} -\ctsdisplay coth {} -\ctsdisplay sinh {} -\ctsdisplay tanh {} -\ctsdisplay det {} -\ctsdisplay dim {} -\ctsdisplay exp {} -\ctsdisplay ln {} -\ctsdisplay log {} -\ctsdisplay lg {} -\ctsdisplay arg {} -\ctsdisplay deg {} -\ctsdisplay gcd {} -\ctsdisplay hom {} -\ctsdisplay ker {} -\ctsdisplay inf {} -\ctsdisplay sup {} -\ctsdisplay lim {} -\ctsdisplay liminf {} -\ctsdisplay limsup {} -\ctsdisplay max {} -\ctsdisplay min {} -\ctsdisplay Pr {} -\egroup} -\explain -These commands set the names of various mathematical functions -in roman type, as is customary. -If you apply a superscript or subscript to one of these commands, -\TeX\ will in most cases typeset it in the usual place. -In display style, \TeX\ typesets superscripts and subscripts -on |\det|, |\gcd|, |\inf|, |\lim|, |\liminf|, -|\limsup|, |\max|, |\min|, |\Pr|, and |\sup| -as though they were limits, -i.e., directly above or directly below the function name. - -\example -$\cos^2 x + \sin^2 x = 1\qquad\max_{a \in A} g(a) = 1$ -| -\produces -$\cos^2 x + \sin^2 x = 1\qquad\max_{a \in A} g(a) = 1$ -\endexample\enddesc - -\begindesc -\cts bmod {} -\explain -This command produces a binary operation for indicating a ^{modulus} -within a formula. -\example -$$x = (y+1) \bmod 2$$ -| -\dproduces -$$x = (y+1) \bmod 2$$ -\endexample -\enddesc - -\begindesc -\cts pmod {} -\explain -This command provides a notation for indicating a ^{modulus} in parentheses -at the end of a formula. -\example -$$x \equiv y+1 \pmod 2$$ -| -\dproduces -$$x \equiv y+1 \pmod 2$$ - -\eix^^{functions, names of} -\endexample -\enddesc - -%========================================================================== -\subsection {Large operators} - -\begindesc -\bix^^{operators//large} -\threecolumns 15 -\easy\ctsdoubledisplay bigcap {} -\ctsdoubledisplay bigcup {} -\ctsdoubledisplay bigodot {} -\ctsdoubledisplay bigoplus {} -\ctsdoubledisplay bigotimes {} -\ctsdoubledisplay bigsqcup {} -\ctsdoubledisplay biguplus {} -\ctsdoubledisplay bigvee {} -\ctsdoubledisplay bigwedge {} -\ctsdoubledisplay coprod {} -{\symbolspace = 42pt\basicdisplay {\hskip 26pt$\smallint$}% - {\\smallint}\ddstrut}% - \xrdef{\smallint} \pix\ctsidxref{smallint} -\ctsdoubledisplay int {} -\ctsdoubledisplay oint {} -\ctsdoubledisplay prod {} -\ctsdoubledisplay sum {} -} -\explain -These commands produce various large operator symbols. -\TeX\ produces the smaller size when it's in ^{text style} -\minrefs{math mode} and the larger size when it's in ^{display style}. -Operators are one of \TeX's \minref{class}es of math symbols. -\TeX\ puts different amounts of space -around different classes of math symbols. - -The large operator symbols with `|big|' in their names are different -from the corresponding binary operations (see \xref{binops}) such as -|\cap| ($\cap$) since they usually appear at the beginning -of a formula. \TeX\ uses different spacing for a large operator -than it does for a binary operation. - -Don't confuse `$\sum$' (|\sum|) with `$\Sigma$'^^|\Sigma| (|\Sigma|) -or confuse `$\prod$' (|\prod|) with `$\Pi$' ^^|\Pi| (|\Pi|). -|\Sigma| and |\Pi| produce capital Greek letters, which are smaller and -have a different appearance. - -A large operator can have ^{limits}. The lower limit is specified as a -subscript and the upper limit as a superscript. - -\example -$$\bigcap_{k=1}^r (a_k \cup b_k)$$ -| -\dproduces -$$\bigcap_{k=1}^r (a_k \cup b_k)$$ -\endexample -\interexampleskip -\example -$${\int_0^\pi \sin^2 ax\,dx} = {\pi \over 2}$$ -| -\dproduces -$${\int_0^\pi \sin^2 ax\,dx} = {\pi \over 2}$$ -\endexample -\enddesc - -\begindesc -\cts limits {} -\explain -When it's in text style, \TeX\ normally places limits after a large operator. -This command tells \TeX\ to place -limits above and below a large operator rather than after it. - -If you specify more than one of |\limits|, |\nolimits|, -and |\display!-limits|, the last command rules. - -\example -Suppose that $\bigcap\limits_{i=1}^Nq_i$ contains at least -two elements. -| -\produces -Suppose that $\bigcap\limits_{i=1}^Nq_i$ contains at least -two elements. -\endexample -\enddesc - -\begindesc -\cts nolimits {} -\explain -When it's in display -style, \TeX\ normally places limits above and below a large operator. -(The |\int| operator is an exception---\TeX\ -places limits for |\int| after the operator in all cases.) -^^|\int//limits after| -This command tells \TeX\ to place -limits after a large operator rather than above and below it. - -If you specify more than one of |\limits|, |\nolimits|, -and |\display!-limits|, the last command rules. - -\example -$$\bigcap\nolimits_{i=1}^Nq_i$$ -| -\dproduces -$$\bigcap\nolimits_{i=1}^Nq_i$$ -\endexample -\enddesc - -\begindesc -\cts displaylimits {} -\explain -This command tells \TeX\ to -follow its normal rules for placement of limits: -\olist\compact -\li Limits on ^|\int| are placed after the operator. -\li Limits on other large operators are placed after the -operator in text style. -\li Limits on other large operators are placed above and below the operator -in display style. -\endolist -It's usually simpler to use |\limits| or |\nolimits| -to produce a specific effect, but |\display!-limits| is sometimes -useful in \minref{macro} definitions. - -Note that \plainTeX\ defines ^|\int| as a macro that sets |\nolimits|, -so |\int\displaylimits| in text style restores the |\limits| -convention. - -If you specify more than one of |\limits|, |\nolimits|, -and |\display!-limits|, the last command rules. - -\example -$$a(\lambda) = {1 \over {2\pi}} \int\displaylimits -_{-\infty}^{+\infty} f(x)e^{-i\lambda x}\,dx$$ -| -\dproduces -$$a(\lambda) = {1 \over {2\pi}} \int\displaylimits -_{-\infty}^{+\infty} f(x)e^{-i\lambda x}\,dx$$ - -\eix^^{operators//large} -\endexample -\enddesc - - -%========================================================================== -\subsection {Punctuation} - -\begindesc -\bix^^{punctuation in math formulas} -\cts cdotp {} -\cts ldotp {} -\explain -These two commands respectively produce a centered dot and a dot -positioned on the \minref{baseline}. They are valid only in math -\minref{mode}. \TeX\ treats them as punctuation, putting no extra space in -front of them but a little extra space after them. -In contrast, \TeX\ puts an equal amount of space on both sides -of a centered dot generated by the ^|\cdot| command (\xref \cdot). -\example -$x \cdotp y \quad x \ldotp y \quad x \cdot y$ -| -\produces -$x \cdotp y \quad x \ldotp y \quad x \cdot y$ -\endexample -\enddesc - -\begindesc -\cts colon {} -\explain -This command produces a colon punctation symbol. -It is valid only in math mode. -The difference between |\colon| and the colon character (|:|) is that -`|:|' is an operator, so \TeX\ puts extra space to the left of it whereas -it doesn't put extra space to the left of |\colon|. -\example -$f \colon t \quad f : t$ -| -\produces -$f \colon t \quad f : t$ - -\eix^^{punctuation in math formulas} -\endexample -\enddesc - - -%========================================================================== -\secondprinting{\vfill\eject\null\vglue-30pt\vskip0pt} -\section {Superscripts and subscripts} - -\begindesc -\margin{Two groups of commands have been combined here.} -\bix^^{superscripts} -\bix^^{subscripts} -\secondprinting{\vglue-12pt} -\makecolumns 4/2: -\easy\ctsact _ \xrdef{@underscore} {\<argument>} -\cts sb {\<argument>} -\ctsact ^ \xrdef{@hat} {\<argument>} -\cts sp {\<argument>} -\secondprinting{\vglue-4pt} -\explain -The commands in each column are equivalent. The commands in the first -column typeset \<argument> as a subscript, and those in the second -column typeset \<argument> as a superscript. The |\sb| and |\sp| -commands are mainly useful if you're working on a terminal that lacks an -underscore or caret, or if you've redefined `|_|' or `|^|' and need -access to the original definition. These commands are also used for -setting lower and upper limits on summations and integrals. ^^{lower -limits} ^^{upper limits} - -If a subscript or superscript is not a single \minref{token}, you need -to enclose it in a \minref{group}. \TeX\ does not prioritize subscripts -or superscripts, so it will reject formulas such as |a_i_j|, |a^i^j|, or -|a^i_j|. - -Subscripts and superscripts are normally typeset in ^{script style}, or -in ^{scriptscript style} if they are second-order, e.g., a subscript on -a subscript or a superscript on a a subscript. You can set \emph{any} -text in a math formula in a script or scriptscript \minref{style} with -the ^|\scriptstyle| and ^|\scriptscriptstyle| commands (\xref -\scriptscriptstyle). - -You can apply a subscript or superscript to any of the commands that -produce named mathematical functions in roman type (see -\xref{namedfns}). In certain cases (again, see \xref{namedfns}) the -subscript or superscript appears directly above or under the function -name as shown in the examples of ^|\lim| and ^|\det| below. - -\example -$x_3 \quad t_{\max} \quad a_{i_k} \quad \sum_{i=1}^n{q_i} - \quad x^3\quad e^{t \cos\theta}\quad r^{x^2}\quad - \int_0^\infty{f(x)\,dx}$ -$$\lim_{x\leftarrow0}f(x)\qquad\det^{z\in A}\qquad\sin^2t$$ -| -\produces -\secondprinting{\divide\abovedisplayskip by 2} -$x_3 \quad t_{\max} \quad a_{i_k} \quad \sum_{i=1}^n{q_i} - \quad x^3\quad e^{t \cos\theta}\quad r^{x^2}\quad - \int_0^\infty{f(x)\,dx}$ -$$\lim_{x \leftarrow 0} f(x)\qquad - \det^{z \in A}\qquad \sin^2 t$$ - -\eix^^{superscripts} -\eix^^{subscripts} -\endexample -\enddesc - -\secondprinting{\vfill\eject} - -%========================================================================== -\subsection {Selecting and using styles} - -\begindesc -\bix^^{styles} -\cts textstyle {} -\cts scriptstyle {} -\cts scriptscriptstyle {} -\cts displaystyle {} -\explain -^^{text style} ^^{script style} ^^{scriptscript style} ^^{display style} -These commands override the normal \minref{style} and hence the -font that \TeX\ uses in setting a formula. Like -font-setting commands such as |\it|, they are in -effect until the end of the group containing them. -They are useful when \TeX's choice of style is inappropriate for the formula -you happen to be setting. -\example -$t+{\scriptstyle t + {\scriptscriptstyle t}}$ -| -\produces -$t+{\scriptstyle t + {\scriptscriptstyle t}}$ -\endexample -\enddesc - - -\begindesc -\cts mathchoice {% - \rqbraces{\<math$_1$>} - \rqbraces{\<math$_2$>} - \rqbraces{\<math$_3$>} - \rqbraces{\<math$_4$>}} -\explain -This command tells \TeX\ to typeset one of the subformulas -\<math$_1$>, \<math$_2$>, \<math$_3$>, or \<math$_4$>, making its choice -according to the current \minref{style}. -That is, if \TeX\ is in -display style it sets the |\mathchoice| as \<math$_1$>; in text style it sets -it as \<math$_2$>; in script style it sets it as \<math$_3$>; -and in scriptscript style it sets it as \<math$_4$>. -\example -\def\mc{{\mathchoice{D}{T}{S}{SS}}} -The strange formula $\mc_{\mc_\mc}$ illustrates a -mathchoice. -| -\produces -\def\mc{{\mathchoice{D}{T}{S}{SS}}} -The strange formula $\mc_{\mc_\mc}$ illustrates a -mathchoice. -\endexample -\enddesc - -\begindesc -\cts mathpalette {\<argument$_1$> \<argument$_2$>} -\explain -^^{math symbols} -This command provides a convenient way of -producing a math construct that works in all four \minref{style}s. -To use it, you'll normally need to define an additional macro, -which we'll call |\build|. -The call on |\math!-palette| should then have the form -|\mathpalette|\allowbreak|\build|\<argument>. - -|\build| tests what style \TeX\ is in and typesets \<argu\-ment> accordingly. -It should be defined to have two parameters. -When you call |\math!-palette|, it will in turn call |\build|, -with |#1| being a -command that selects the current style and |#2| being \<argument>. -Thus, within the definition of |\build| you can typeset something -in the current style by preceding it with `|#1|'. -See \knuth{page~360} for examples of using |\mathpalette| -and \knuth{page~151} for a further explanation of how it works. - -\eix^^{styles} -\enddesc - -%========================================================================== -\section {Compound symbols} - -%========================================================================== -\subsection {Math accents} - -\begindesc -\xrdef{mathaccent} -^^{accents} -^^{math//accents} -% -\easy\ctsx acute {^{acute accent} as in $\acute x$} -\ctsx b {^{bar-under accent} as in $\b x$} -\ctsx bar {^{bar accent} as in $\bar x$} -\ctsx breve {^{breve accent} as in $\breve x$} -\ctsx check {^{check accent} as in $\check x$} -\ctsx ddot {^{double dot accent} as in $\ddot x$} -\ctsx dot {^{dot accent} as in $\dot x$} -\ctsx grave {^{grave accent} as in $\grave x$} -\ctsx hat {^{hat accent} as in $\hat x$} -\ctsx widehat {^{wide hat accent} as in $\widehat {x+y}$} -\ctsx tilde {^{tilde accent} as in $\tilde x$} -\ctsx widetilde {^{wide tilde accent} as in $\widetilde {z+a}$} -\ctsx vec {^{vector accent} as in $\vec x$} -\explain -These commands produce accent marks in math formulas. You'll ordinarily -need to leave a space after any one of them. -A wide accent can be applied to a multicharacter subformula; -\TeX\ will center the accent over the subformula. -The other accents are usefully applied only to a single character. - -\example -$\dot t^n \qquad \widetilde{v_1 + v_2}$ -| -\produces -$\dot t^n \qquad \widetilde{v_1 + v_2}$ -\endexample - -\begindesc -\cts mathaccent {\<mathcode>} -\explain -This command tells \TeX\ to typeset a math accent -whose family and character code are given by \<mathcode>. (\TeX\ ignores -the class of the \minref{mathcode}.) -See \knuth{Appendix~G} for the details of how \TeX\ positions such an accent. -The usual way to use |\mathaccent| is to put it in a macro definition -that gives a name to a math accent. -\example -\def\acute{\mathaccent "7013} -| -\endexample -\enddesc - -\see ``Accents'' (\xref {accents}). -\enddesc - -%========================================================================== -\subsection {Fractions and other stacking operations} - -\begindesc -\bix^^{fractions} -\bix^^{stacking subformulas} -\easy\cts over {} -\cts atop {} -\cts above {\<dimen>} -\cts choose {} -\cts brace {} -\cts brack {} -\explain -{\def\fri{\<formula$_1$>}% -\def\frii{\<formula$_2$>}% -These commands stack one subformula on top of another one. We will explain how -|\over| works, and then relate the other commands to it. - -|\over| is the command that you'd normally use to produce a fraction. -^^{fractions//produced by \b\tt\\over\e} -If you write something in one of the following forms: -\csdisplay -$$!fri\over!frii$$ -$!fri\over!frii$ -\left!<delim>!fri\over!frii\right!<delim> -{!fri\over!frii} -| -you'll get a fraction with numerator \fri\ and denominator \<for\-mu\-la$_2$>, -i.e., \fri\ over \frii. -In the first three of -these forms the |\over| is not implicitly contained in a group; -it absorbs -everything to its left and to its right until it comes to a boundary, -namely, the beginning or end of a group. - -You can't use |\over| or any of the other commands in this group -more than once in a formula. -Thus a formula such as: -\csdisplay -$$a \over n \choose k$$ -| -isn't legal. -This is not a severe restriction because -you can always enclose one of the commands in braces. -The reason for the restriction is that if you had two of these commands -in a single formula, \TeX\ wouldn't know how to group them. - -The other commands are similar to |\over|, with the following exceptions: -\ulist\compact -\li |\atop| leaves out the fraction bar. -\li |\above| provides a fraction bar of thickness \<dimen>. -\li |\choose| -leaves out the fraction bar and encloses the construct in parentheses. -(It's called ``choose'' because $n \choose k$ is the notation for the -number of ways of choosing $k$ things out of $n$ things.) -\li |\brace| leaves out the fraction bar and encloses the construct in braces. -\li |\brack| -leaves out the fraction bar and encloses the construct in brackets. -\endulist -}% -\example -$${n+1 \over n-1} \qquad {n+1 \atop n-1} \qquad - {n+1 \above 2pt n-1} \qquad {n+1 \choose n-1} \qquad - {n+1 \brace n-1} \qquad {n+1 \brack n-1}$$ -| -\dproduces -$${n+1 \over n-1} \qquad {n+1 \atop n-1} \qquad - {n+1 \above 2pt n-1} \qquad {n+1 \choose n-1} \qquad - {n+1 \brace n-1} \qquad {n+1 \brack n-1}$$ -\endexample -\enddesc - -\begindesc -\cts overwithdelims {\<delim$_1$> \<delim$_2$>} -\cts atopwithdelims {\<delim$_1$> \<delim$_2$>} -\cts abovewithdelims {\<delim$_1$> \<delim$_2$> \<dimen>} -\explain -Each of these commands stacks one subformula on top of another one and -surrounds the entire construct with \<delim$_1$> on the left and -\<delim$_2$> on the right. These commands follow the same rules as -|\over|, |\atop|, and |\above|. The \<dimen> in |\abovewithdelims| -specifies the thickness of the fraction bar. -\example -$${m \overwithdelims () n}\qquad - {m \atopwithdelims !|!| n}\qquad - {m \abovewithdelims \{\} 2pt n}$$ -| -\dproduces -$${m \overwithdelims () n}\qquad - {m \atopwithdelims || n}\qquad - {m \abovewithdelims \{\} 2pt n}$$ -\endexample -\enddesc - -\begindesc -\cts cases {} -\explain -^^{combinations, notation for} -This command produces the mathematical form that denotes a choice among -several cases. -Each case has two parts, separated by `|&|'. -\TeX\ treats the first part as a math formula -and the second part as ordinary text. Each -case must be followed by |\cr|. - -\example -$$g(x,y) = \cases{f(x,y),&if $x<y$\cr - f(y,x),&if $x>y$\cr - 0,&otherwise.\cr}$$ -| -\dproduces -$$g(x,y) = \cases{f(x,y),&if $x<y$\cr - f(y,x),&if $x>y$\cr - 0,&otherwise.\cr}$$ -\endexample -\enddesc - -\begindesc -\cts underbrace {\<argument>} -\cts overbrace {\<argument>} -\cts underline {\<argument>} -\cts overline {\<argument>} -\cts overleftarrow {\<argument>} -\cts overrightarrow {\<argument>} -\explain -These commands place extensible ^{braces}, lines, or ^{arrows} -over or under the subformula given by \<argument>. -\TeX\ will make these constructs as wide as they need to be for -the context. -When \TeX\ produces the extended braces, lines, or arrows, it considers -only the dimensions of the \minref{box} containing \<argument>. -If you use more than one of these commands in a single formula, the -braces, lines, or arrows they produce -may not line up properly with each other. -You can use the |\mathstrut| command (\xref \mathstrut) -to overcome this difficulty. -\example -$$\displaylines{ -\underbrace{x \circ y}\qquad \overbrace{x \circ y}\qquad -\underline{x \circ y}\qquad \overline{x \circ y}\qquad -\overleftarrow{x \circ y}\qquad -\overrightarrow{x \circ y}\cr -{\overline r + \overline t}\qquad -{\overline {r \mathstrut} + \overline {t \mathstrut}}\cr -}$$ -| -\dproduces -$$\displaylines{ -\underbrace{x \circ y}\qquad \overbrace{x \circ y}\qquad -\underline{x \circ y}\qquad \overline{x \circ y}\qquad -\overleftarrow{x \circ y}\qquad -\overrightarrow{x \circ y}\cr -{\overline r + \overline t}\qquad -{\overline {r \mathstrut} + \overline {t \mathstrut}}\cr -}$$ -\endexample -\enddesc - -\begindesc\secondprinting{\vglue-.5\baselineskip\vskip0pt} -\cts buildrel {\<formula> {\bt \\over} \<relation>} -\explain -^^{relations//putting formulas above} -This command produces a \minref{box} in which \<formula> -is placed on top of \<relation>. \TeX\ treats the result as a relation -for spacing purposes \seeconcept{class}. -\example -$\buildrel \rm def \over \equiv$ -| -\produces -$\buildrel \rm def \over \equiv$ - -\eix^^{fractions} -\eix^^{stacking subformulas} -\endexample -\enddesc - -\secondprinting{\vfill\eject} - - -%========================================================================== -\subsection {Dots} - -\begindesc -\bix^^{dots} -\easy\cts ldots {} -\cts cdots {} -\explain -These commands produce three ^{dots} in a row. For |\ldots|, the dots -are on the baseline; for |\cdots|, the dots are centered with respect to -the axis (see the explanation of |\vcenter|, \xref\vcenter). - -\example -$t_1 + t_2 + \cdots + t_n \qquad x_1,x_2, \ldots\,, x_r$ -| -\produces -$t_1 + t_2 + \cdots + t_n \qquad x_1,x_2, \ldots\,, x_r$ -\endexample -\enddesc - -\begindesc -\easy\cts vdots {} -\explain -This command produces three vertical dots. -\example -$$\eqalign{f(\alpha_1)& = f(\beta_1)\cr - \noalign{\kern -4pt}% - &\phantom{a}\vdots\cr % moves the dots right a bit - f(\alpha_k)& = f(\beta_k)\cr}$$ -| -\dproduces -$$\eqalign{f(\alpha_1)& = f(\beta_1)\cr - \noalign{\kern -4pt}% - &\phantom{a}\vdots\cr - f(\alpha_k)& = f(\beta_k)\cr}$$ -\endexample -\enddesc - -\begindesc -\cts ddots {} -\explain -This command produces three dots on a diagonal. -Its most common use is to indicate repetition along the diagonal of a matrix. -\example -$$\pmatrix{0&\ldots&0\cr - \vdots&\ddots&\vdots\cr - 0&\ldots&0\cr}$$ -| -\dproduces -$$\pmatrix{0&\ldots&0\cr - \vdots&\ddots&\vdots\cr - 0&\ldots&0\cr}$$ - -\eix^^{dots} -\endexample -\enddesc - -\see |\dots| \ctsref\dots. - -%========================================================================== -\subsection {Delimiters} - -\begindesc -\bix^^{delimiters} -% -\cts lgroup {} -\cts rgroup {} -\explain -These commands produce large left and right ^{parentheses} -that are defined as opening and closing \minref{delimiter}s. -The smallest available size for these delimiters is |\Big|. -If you use smaller sizes, you'll get weird characters. -\example -$$\lgroup\dots\rgroup\qquad\bigg\lgroup\dots\bigg\rgroup$$ -| -\dproduces -$$\lgroup\dots\rgroup\qquad\bigg\lgroup\dots\bigg\rgroup$$ -\endexample -\enddesc - -\begindesc -\margin{{\tt\\vert} and {\tt\\Vert} were explained elsewhere.} -\easy\cts left {} -\cts right {} -\explain -These commands must be used together in the pattern: -\display -{{\bt \\left} \<delim$_1$> \<subformula> {\bt \\right} \<delim$_2$>} -This construct causes \TeX\ to produce \<subformula>, -enclosed in the \minref{delimiter}s \<delim$_1$> and \<delim$_2$>. -The vertical size of the delimiter is adjusted to fit the -vertical size (height plus depth) of \<subformula>. \<delim$_1$> and -\<delim$_2$> need not correspond. -For instance, you could use `|]|' as a left delimiter -and `|(|' as a right delimiter in a single use of |\left| -and |\right|. - -|\left| and |\right| have the important property that they define a -group, i.e., they act like left and right braces. This grouping -property is particularly useful when you put ^|\over| (\xref{\over}) or -a related command between |\left| and |\right|, since you don't need to -put braces around the fraction constructed by |\over|. - -If you want a left delimiter but not a right delimiter, you can use `|.|' in -place of the delimiter you don't want and it will turn into empty space -(of width ^|\nulldelimiterspace|). -\example -$$\left\Vert\matrix{a&b\cr c&d\cr}\right\Vert - \qquad \left\uparrow q_1\atop q_2\right.$$ -| -\dproduces -$$\left\Vert\matrix{a&b\cr c&d\cr}\right\Vert - \qquad \left\uparrow q_1\atop q_2\right.$$ -\endexample -\enddesc - -\begindesc -\cts delimiter {\<number>} -\explain -This command produces a delimiter whose characteristics are given by -\<number>. \<number> is normally written in hexadecimal notation. -You can use the |\delimiter| command instead of a character in any context -where \TeX\ expects a delimiter (although the command is rarely used -outside of a macro definition). -Suppose that \<number> is the hexadecimal number $cs_1s_2s_3 -l_1l_2l_3$. Then \TeX\ takes the delimiter to have -\minref{class} $c$, small variant -$s_1s_2s_3$, and large variant $l_1l_2l_3$. Here $s_1s_2s_3$ indicates -the math character found in position $s_2s_3$ of family $s_1$, and -similarly for $l_1l_2l_3$. This is the same convention as the one -used for ^|\mathcode| (\xref\mathcode). -\example -\def\vert{\delimiter "026A30C} % As in plain TeX. -| -\endexample -\enddesc - - -\begindesc -\margin{{\tt\\delcode} was explained in two places. The -combined explanation is now in `General operations'.} -\cts delimiterfactor {\param{number}} -\cts delimitershortfall {\param{number}} -\explain -^^{delimiters//height of} -These parameters together tell \TeX\ how the height of a \minref{delimiter} -should be related to the vertical size of the subformula -with which the delimiter is associated. -|\delimiterfactor| gives the minimum -ratio of the delimiter size to the vertical size of the subformula, and -|\delimitershortfall| gives the maximum by which the height of the -delimiter will be reduced from that of the vertical size of the subformula. - -Suppose that the \minref{box} containing the subformula -has height $h$ and depth $d$, and let $y=2\,\max(h,d)$. -Let the value of |\delimiterfactor| be $f$ and the value of -|\delimitershortfall| be $\delta$. -Then \TeX\ takes the minimum delimiter size to be at least $y \cdot -f/1000$ and at least $y-\delta$. In particular, if |\delimiterfactor| -is exactly $1000$ then \TeX\ will try to make a delimiter at least as tall -as the formula to which it is attached. -See \knuth{page~152 and page~446 (Rule 19)} -for the exact details of how \TeX\ uses these parameters. -\PlainTeX\ sets |\delimiter!-factor| to $901$ and -|\delimiter!-shortfall| to |5pt|. -\enddesc - -\see |\delcode| (\xref\delcode), |\vert|, |\Vert|, -and |\backslash| (\xref\vert). -\eix^^{delimiters} - -%========================================================================== -\subsection {Matrices} - -\begindesc -\cts matrix - {{\bt \rqbraces{\<line> \\cr $\ldots$ \<line> \\cr}}} -\cts pmatrix - {{\bt \rqbraces{\<line> \\cr $\ldots$ \<line> \\cr}}} -\cts bordermatrix - {{\bt \rqbraces{\<line> \\cr $\ldots$ \<line> \\cr}}} -\explain -Each of these three commands produces a ^{matrix}. -The elements of each row of the input matrix -are separated by `|&|' and each row in turn is ended -by |\cr|. -(This is the same form that is used for an -\minref{alignment}.) -The commands differ in the following ways: -\ulist\compact -\li |\matrix| produces a matrix without any surrounding or inserted -\minref{delimiter}s. -\li |\pmatrix| produces a matrix surrounded by parentheses. -\li |\bordermatrix| produces a matrix in which the first row and the first -column are treated as labels. (The first element of the first row is -usually left blank.) The rest of the matrix is enclosed in -parentheses. -\endulist -\TeX\ can make the parentheses for |\pmatrix| and |\bordermatrix| as large as -they need to be by inserting vertical extensions. If you want a matrix -to be surrounded by delimiters other than parentheses, you should use -|\matrix| in conjunction with |\left| and |\right| (\xref \left). - -\example -$$\displaylines{ - \matrix{t_{11}&t_{12}&t_{13}\cr - t_{21}&t_{22}&t_{23}\cr - t_{31}&t_{32}&t_{33}\cr}\qquad -\left\{\matrix{t_{11}&t_{12}&t_{13}\cr - t_{21}&t_{22}&t_{23}\cr - t_{31}&t_{32}&t_{33}\cr}\right\}\cr -\pmatrix{t_{11}&t_{12}&t_{13}\cr - t_{21}&t_{22}&t_{23}\cr - t_{31}&t_{32}&t_{33}\cr}\qquad -\bordermatrix{&c_1&c_2&c_3\cr - r_1&t_{11}&t_{12}&t_{13}\cr - r_2&t_{21}&t_{22}&t_{23}\cr - r_3&t_{31}&t_{32}&t_{33}\cr}\cr}$$ -| -\dproduces -$$\displaylines{ - \matrix{t_{11}&t_{12}&t_{13}\cr - t_{21}&t_{22}&t_{23}\cr - t_{31}&t_{32}&t_{33}\cr}\qquad -\left\{\matrix{t_{11}&t_{12}&t_{13}\cr - t_{21}&t_{22}&t_{23}\cr - t_{31}&t_{32}&t_{33}\cr}\right\}\cr -\pmatrix{t_{11}&t_{12}&t_{13}\cr - t_{21}&t_{22}&t_{23}\cr - t_{31}&t_{32}&t_{33}\cr}\qquad -\bordermatrix{&c_1&c_2&c_3\cr - r_1&t_{11}&t_{12}&t_{13}\cr - r_2&t_{21}&t_{22}&t_{23}\cr - r_3&t_{31}&t_{32}&t_{33}\cr}\cr}$$ -\endexample -\enddesc - -%========================================================================== -\subsection {Roots and radicals} - -\begindesc -\easy\cts sqrt {\<argument>} -\explain -This command produces the notation for the square root of \<argument>. -\example -$$x = {-b\pm\sqrt{b^2-4ac} \over 2a}$$ -| -\dproduces -$$x = {-b\pm\sqrt{b^2-4ac} \over 2a}$$ -\endexample -\enddesc - -\begindesc -\easy\cts root {\<argument$_1$> {\bt \\of} \<argument$_2$>} -\explain -This command produces the notation for a root of \<argument$_2$>, where the -root is given by \<argument$_1$>. -\example -$\root \alpha \of {r \cos \theta}$ -| -\produces -$\root \alpha \of {r \cos \theta}$ -\endexample -\enddesc - -\begindesc -\cts radical {\<number>} -\explain -This command produces a radical sign -whose characteristics are given by -\<number>. It uses the same representation as the delimiter code -^^{delimiter codes} -in the ^|\delcode| command (\xref \delcode). - -\example -\def\sqrt{\radical "270370} % as in plain TeX -| -\endexample -\enddesc - -%========================================================================== -\section {Equation numbers} - -\begindesc -\easy\cts eqno {} -\cts leqno {} -\explain -These commands attach an equation number to a displayed formula. -|\eqno| puts the equation number on the right and |\leqno| puts it on -the left. -The commands must be given at the end of the formula. -If you have a multiline display and you want to number more than one -of the lines, use the |\eq!-alignno| or |\leq!-alignno| command -(\xref \eqalignno). - -These commands are valid only in display math mode. - -\example -$$e^{i\theta} = \cos \theta + i \sin \theta\eqno{(11)}$$ -| -\produces -$$e^{i\theta} = \cos \theta + i \sin \theta\eqno{(11)}$$ -\endexample -\example -$$\cos^2 \theta + \sin^2 \theta = 1\leqno{(12)}$$ -| -\produces -\abovedisplayskip = -\baselineskip -$$\cos^2 \theta + \sin^2 \theta = 1\leqno{(12)}$$ -\endexample -\enddesc - - -%========================================================================== -\section {Multiline displays} - -\begindesc -\bix^^{displays//multiline} -\cts displaylines - {{\bt \rqbraces{\<line>\ths\\cr$\ldots$\<line>\ths\\cr}}} -\explain -This command produces a multiline math display in which each line is -centered independently of the other lines. -You can use the |\noalign| command (\xref \noalign) to change the amount -of space between two lines of a multiline display. - -If you want to attach equation numbers to some or all of the equations -in a multiline math display, you should use |\eqalignno| or -|\leqalignno|. -\example -$$\displaylines{(x+a)^2 = x^2+2ax+a^2\cr - (x+a)(x-a) = x^2-a^2\cr}$$ -| -\dproduces\centereddisplays -$$\displaylines{ -(x+a)^2 = x^2+2ax+a^2\cr -(x+a)(x-a) = x^2-a^2\cr -}$$ -\endexample -\enddesc - -\begindesc -\cts eqalign {} - {{\bt \rqbraces{\<line> \\cr $\ldots$ \<line> \\cr}}} -\cts eqalignno {} - {{\bt \rqbraces{\<line> \\cr $\ldots$ \<line> \\cr}}} -\cts leqalignno {} - {{\bt \rqbraces{\<line> \\cr $\ldots$ \<line> \\cr}}} -\explain -^^{equation numbers} -These commands produce a multiline math display -in which certain corresponding parts of the lines are lined up vertically. -The |\eqalignno| and |\leqalignno| commands also let you -provide equation numbers for some or all of the lines. -|\eqalignno| puts the equation numbers on the right and -|\leqalignno| puts them on the left. - -Each line in the display is ended by |\cr|. Each of the parts to be aligned -(most often an equals sign) is preceded by -`|&|'. An `|&|' also precedes each equation number, which comes at the -end of a line. -You can put more than one of these commands in a single display in order -to produce several groups of equations. In this case, only the rightmost -or leftmost group can be produced by |\eqalignno| or |\leqalignno|. - -You can use the |\noalign| command (\xref \noalign) to change the amount -of space between two lines of a multiline display. -\example -$$\left\{\eqalign{f_1(t) &= 2t\cr f_2(t) &= t^3\cr - f_3(t) &= t^2-1\cr}\right\} - \left\{\eqalign{g_1(t) &= t\cr g_2(t) &= 1}\right\}$$ -| -\dproduces -$$\left\{\eqalign{f_1(t) &= 2t\cr f_2(t) &= t^3\cr - f_3(t) &= t^2-1\cr}\right\} -\left\{\eqalign{g_1(t) &= t\cr g_2(t) &= 1}\right\}$$ -\nextexample -$$\eqalignno{ -\sigma^2&=E(x-\mu)^2&(12)\cr - &={1 \over n}\sum_{i=0}^n (x_i - \mu)^2&\cr - &=E(x^2)-\mu^2\cr}$$ -| -\produces -\abovedisplayskip = -\baselineskip -$$\eqalignno{ -\sigma^2&=E(x-\mu)^2&(12)\cr - &={1 \over n}\sum_{i=0}^n (x_i - \mu)^2&\cr - &=E(x^2)-\mu^2\cr}$$ -\nextexample -$$\leqalignno{ -\sigma^2&=E(x-\mu)^2&(6)\cr - &=E(x^2)-\mu^2&(7)\cr}$$ -| -\produces -\abovedisplayskip = -\baselineskip -$$\leqalignno{ -\sigma^2&=E(x-\mu)^2&(6)\cr - &=E(x^2)-\mu^2&(7)\cr}$$ -\nextexample -$$\eqalignno{ - &(x+a)^2 = x^2+2ax+a^2&(19)\cr - &(x+a)(x-a) = x^2-a^2\cr}$$ -% same effect as \displaylines but with an equation number -| -\dproduces -$$\eqalignno{ -&(x+a)^2 = x^2+2ax+a^2&(19)\cr -&(x+a)(x-a) = x^2-a^2\cr -}$$ -% same effect as \displaylines but with an equation number - -\eix^^{displays//multiline} -\endexample -\enddesc - -%========================================================================== -\section {Fonts in math formulas} - -\begindesc -^^{fonts} -\xrdef{mathfonts} -% -\easy\ctsx cal {use calligraphic uppercase font} -\ctsx mit {use math italic font} -\ctsx oldstyle {use old style digit font} -\explain -These commands cause \TeX\ to typeset the following text in the -specified font. You can only use them in \minref{math mode}. -The |\mit| command is useful for producing slanted capital ^{Greek letters}. -You can also use the commands given in -\headcit{Selecting fonts}{selfont} to change fonts in math mode. -\example -${\cal XYZ} \quad -{\mit AaBb\Gamma \Delta \Sigma} \quad -{\oldstyle 0123456789}$ -| -\produces -${\cal XYZ} \quad -{\mit AaBb\Gamma \Delta \Sigma} \quad -{\oldstyle 0123456789}$ -\endexample -\enddesc - -^^{type styles} -\begindesc -\ctsx itfam {family for italic type} -\ctsx bffam {family for boldface type} -\ctsx slfam {family for slanted type} -\ctsx ttfam {family for typewriter type} -\explain -These commands define type families \minrefs{family} for use in -\minref{math mode}. Their principal use is in defining the -|\it|, |\bf|, |\sl|, and |\tt| commands so that they work in math mode. -\enddesc - -\begindesc -\cts fam {\param{number}} -\explain -When \TeX\ is in \minref{math mode}, it ordinarily typesets a character -using the font family ^^{class} given in its \minref{mathcode}. -^^{family//given by \b\tt\\fam\e} -However, when \TeX\ is in math mode and encounters a character whose -\minref{class} is $7$ (Variable), it typesets that character using -the font \minref{family} given by the value of |\fam|, provided that the -value of |\fam| is between $0$ and $15$. -If the value of |\fam| isn't in that range, \TeX\ uses the family in -the character's mathcode as in the ordinary case. -\TeX\ sets |\fam| to $-1$ whenever it enters math mode. -Outside of math mode, |\fam| has no effect. - -By assigning a value to -|\fam| you can change the way that \TeX\ typesets ordinary -characters such as variables. -For instance, by setting |\fam| to |\ttfam|, you cause \TeX\ to typeset -variables using a typewriter font. -\PlainTeX\ defines |\tt| as a \minref{macro} that, among other things, -sets |\fam| to |\ttfam|. -\example -\def\bf{\fam\bffam\tenbf} % As in plain TeX. -| -\endexample -\enddesc - -\begindesc -\cts textfont {\<family>\param{fontname}} -\cts scriptfont {\<family>\param{fontname}} -\cts scriptscriptfont {\<family>\param{fontname}} -\explain -^^{text style} -^^{script style} -^^{scriptscript style} -Each of these parameters specifies the font that \TeX\ is to use for -typesetting the indicated \minref{style} in the indicated \minref{family}. -These choices have no effect outside of \minref{math mode}. -\example -\scriptfont2 = \sevensy % As in plain TeX. -| -\endexample -\enddesc - -\see ``Type styles'' (\xref{seltype}). -%========================================================================== -\section {Constructing math symbols} - -%========================================================================== -\subsection {Making delimiters bigger} - -\begindesc -\makecolumns 16/4: -\easy\cts big {} -\cts bigl {} -\cts bigm {} -\cts bigr {} -\cts Big {} -\cts Bigl {} -\cts Bigm {} -\cts Bigr {} -\cts bigg {} -\cts biggl {} -\cts biggm {} -\cts biggr {} -\cts Bigg {} -\cts Biggl {} -\cts Biggm {} -\cts Biggr {} -\explain -^^{delimiters//enlarging} -These commands make \minref{delimiter}s bigger than their normal size. -The commands in the four columns -produce successively larger sizes. The difference between |\big|, -|\bigl|, |\bigr|, and |bigm| has to do with the \minref{class} of the -enlarged delimiter: -\ulist\compact -\li |\big| produces an ordinary symbol. -\li |\bigl| produces an opening symbol. -\li |\bigr| produces a closing symbol. -\li |\bigm| produces a relation symbol. -\endulist -\noindent -\TeX\ uses the class of a symbol in order to decide how much space to put -around that symbol. - -These commands, unlike |\left| and |\right|, -do \emph{not} define a group. - -\example -$$(x) \quad \bigl(x\bigr) \quad \Bigl(x\Bigr) \quad - \biggl(x\biggr) \quad \Biggl(x\Biggr)\qquad -[x] \quad \bigl[x\bigr] \quad \Bigl[x\Bigr] \quad - \biggl[x\biggr] \quad \Biggl[x\Biggr]$$ -| -\dproduces -$$(x) \quad \bigl(x\bigr) \quad \Bigl(x\Bigr) \quad -\biggl(x\biggr) \quad \Biggl(x\Biggr)\qquad -[x] \quad \bigl[x\bigr] \quad \Bigl[x\Bigr] \quad -\biggl[x\biggr] \quad \Biggl[x\Biggr]$$ -\endexample -\enddesc - -%========================================================================== -\subsection {Parts of large symbols} - -\begindesc -\cts downbracefill {} -\cts upbracefill {} -\explain -These commands respectively produce upward-pointing -and downward-pointing extensible ^{horizontal braces}. ^^{braces} -\TeX\ will make the braces as wide as necessary. -These commands -are used in the definitions of ^|\overbrace| and ^|\underbrace| -(\xref \overbrace). -\example -$$\hbox to 1in{\downbracefill} \quad - \hbox to 1in{\upbracefill}$$ -| -\dproduces -$$\hbox to 1in{\downbracefill} \quad - \hbox to 1in{\upbracefill}$$ -\endexample -\enddesc - -\begindesc -\cts arrowvert {} -\cts Arrowvert {} -\cts lmoustache {} -\cts rmoustache {} -\cts bracevert {} -\explain -These commands produce portions of certain large -delimiters -^^{delimiters//parts of} -and can themselves be used as delimiters. -They refer to characters in the ^|cmex10| math font. -\example -$$\cdots \Big\arrowvert \cdots \Big\Arrowvert \cdots - \Big\lmoustache \cdots \Big\rmoustache \cdots - \Big\bracevert \cdots$$ -| -\dproduces -$$\cdots \Big\arrowvert \cdots \Big\Arrowvert \cdots - \Big\lmoustache \cdots \Big\rmoustache \cdots - \Big\bracevert \cdots$$ -\endexample -\enddesc - - -%========================================================================== -\section {Aligning parts of a formula} - -%========================================================================== -\subsection {Aligning accents} - -\begindesc -\bix^^{accents//aligning} -\cts skew {\<number> \<argument$_1$> \<argument$_2$>} -\explain -This command shifts the accent \<argument$_1$> by -\<number> \minref{mathematical unit}s to the right of its normal position -with respect to \<argu\-ment$_2$>. -The most common use of this command is for -modifying the position of an accent that's over -another accent. -\example -$$\skew 2\bar{\bar z}\quad\skew 3\tilde{\tilde y}\quad - \skew 4\tilde{\hat x}$$ -| -\dproduces -$$\skew 2\bar{\bar z}\quad\skew 3\tilde{\tilde y}\quad - \skew 4\tilde{\hat x}$$ -\endexample -\enddesc - -\begindesc -\cts skewchar {\<font>\param{number}} -\explain -The |\skewchar| of a font -is the character in the font whose kerns, -as defined in the font's metrics file, determine the positions -of math accents. That is, suppose that \TeX\ is applying a math accent -to the character `|x|'. \TeX\ checks if the character pair -`|x\skewchar|' has a kern; if so, it moves the accent by the amount of -that kern. The complete algorithm that \TeX\ uses to position math -accents (which involves many more things) is in \knuth{Appendix~G}. - -If the value of |\skewchar| is not in the range $0$--$255$, -\TeX\ takes the kern value to be zero. - -Note that \<font> is a control sequence -that names a font, not a \<font\-name> that names font files. -Beware: -an assignment to |\skewchar| is \emph{not} undone at the end -of a group. -If you want to change |\skewchar| locally, you'll need to -save and restore its original value explicitly. -\enddesc - -\begindesc -\cts defaultskewchar {\param{number}} -\explain -When \TeX\ reads the metrics file -^^{metrics file//default skew character in} -for a font in response to a -^|\font| command, it sets the font's ^|\skewchar| to -|\default!-skewchar|. -If the value of |\default!-skewchar| is -not in the range $0$--$255$, \TeX\ does not assign any -skew characters by default. -\PlainTeX\ sets |\defaultskewchar| to $-1$, and it's usually best -to leave it there. -\margin{Misleading example deleted.} -\eix^^{accents//aligning} -\enddesc - -%========================================================================== -\subsection {Aligning material vertically} - -\begindesc -\cts vcenter {\rqbraces{\<vertical mode material>}} -\ctsbasic {\\vcenter to \<dimen> \rqbraces{\<vertical mode material>}}{} -\ctsbasic {\\vcenter spread \<dimen> \rqbraces{\<vertical mode material>}}{} -\explain -Every math formula has an invisible -``^{axis}'' that \TeX\ treats as a kind of -horizontal centering line for that formula. -For instance, the axis of a formula consisting of a -fraction is at the center of the fraction bar. -The |\vcenter| command tells \TeX\ to place the \<vertical mode material> -in a \minref{vbox} and to center the vbox -with respect to the axis of the formula it is currently constructing. - -The first form of the command -centers the material as given. The second and third -forms expand or shrink the material vertically as in the |\vbox| command -(\xref \vbox). - -\example -$${n \choose k} \buildrel \rm def \over \equiv \> -\vcenter{\hsize 1.5 in \noindent the number of -combinations of $n$ things taken $k$ at a time}$$ -| -\dproduces -$${n \choose k} \buildrel \rm def \over \equiv \> -\vcenter{\hsize 1.5 in \noindent the number of -combinations of $n$ things taken $k$ at a time}$$ -\endexample -\enddesc - -%========================================================================== -\section {Producing spaces} - -%========================================================================== -\subsection {Fixed-width math spaces} - -\begindesc -\bix^^{space//in math formulas} -\ctspecial ! \ctsxrdef{@shriek} -\ctspecial , \ctsxrdef{@comma} -\ctspecial > \ctsxrdef{@greater} -\ctspecial ; \ctsxrdef{@semi} -\explain -These commands produce various amounts of ^{extra space} in formulas. They -are defined in terms of \minref{mathematical unit}s, so \TeX\ adjusts -the amount of space according to the current \minref{style}. -\ulist -\li |\!!| produces a negative thin space, i.e., it reduces the space -between its neighboring subformulas by the amount of a thin space. -\li |\,| produces a thin space. -\li |\>| produces a medium space. -\li |\;| produces a thick space. -\endulist -\example -$$00\quad0\!!0\quad0\,0\quad0\>0\quad0\;0\quad -{\scriptstyle 00\quad0\!!0\quad0\,0\quad0\>0\quad0\;0}$$ -| -\dproduces -$$00\quad0\!0\quad0\,0\quad0\>0\quad0\;0\quad -{\scriptstyle 00\quad0\!0\quad0\,0\quad0\>0\quad0\;0}$$ -\endexample -\enddesc - -\begindesc -\cts thinmuskip {\param{muglue}} -\cts medmuskip {\param{muglue}} -\cts thickmuskip {\param{muglue}} -\explain -These parameters define thin, medium, and thick spaces in -math mode. -\example -$00\quad0\mskip\thinmuskip0\quad0\mskip\medmuskip0 - \quad0\mskip\thickmuskip0$ -| -\produces -$00\quad0\mskip\thinmuskip0\quad0\mskip\medmuskip0 - \quad0\mskip\thickmuskip0$ -\endexample -\enddesc - -\begindesc -\cts jot {\param{dimen}} -\explain -This parameter defines a distance that is equal to three points (unless -you change it). -The |\jot| is a convenient unit of measure for opening up \hbox{math displays}. -\enddesc - -%========================================================================== -\subsection {Variable-width math spaces} - -\begindesc -\cts mkern {\<mudimen>} -\explain -^^{kerns//in math formulas} -This command -produces a \minref{kern}, i.e., blank space, of width \<mudimen>. -The kern is measured -in \minref{mathematical unit}s, which vary according to the style. -Aside from its unit of measurement, this command behaves just like -|\kern| (\xref \kern) does in horizontal mode. - -\example -$0\mkern13mu 0 \qquad {\scriptscriptstyle 0 \mkern13mu 0}$ -| -\produces -$0\mkern13mu 0 \qquad {\scriptscriptstyle 0 \mkern13mu 0}$ -\endexample -\enddesc - -\begindesc -\cts mskip {\<mudimen$_1$> {\bt plus} \<mudimen$_2$> {\bt minus} - \<mudimen$_3$>} -\explain -^^{glue} -This command produces horizontal \minref{glue} -that has natural width \<mu\-dimen$_1$>, stretch \<mudimen$_2$>, -and shrink \<mudimen$_3$>. -The glue is measured in \minref{mathematical unit}s, which vary according -to the style. Aside from its units of measurement, this command behaves -just like |\hskip| (\xref \hskip). - -\example -$0\mskip 13mu 0 \quad {\scriptscriptstyle 0 \mskip 13mu 0}$ -| -\produces -$0\mskip 13mu 0 \quad {\scriptscriptstyle 0 \mskip 13mu 0}$ -\endexample -\enddesc - -\begindesc -\cts nonscript {} -\explain -When \TeX\ is currently typesetting in script or scriptscript -\minref{style} and encounters this command -immediately in front of glue or a kern, -it cancels the glue or kern. -|\nonscript| has no effect in the other styles. - -This command provides a way of ``tightening up'' the spacing in -script and scriptscript styles, which generally are set in smaller type. -It is of little use outside of macro definitions. -\example -\def\ab{a\nonscript\; b} -$\ab^{\ab}$ -| -\produces -\def\ab{a\nonscript\; b} -$\ab^{\ab}$ -\endexample -\enddesc - -\see |\kern| (\xref\kern), |\hskip| (\xref\hskip). -\eix^^{space//in math formulas} - - -%========================================================================== -\subsection {Spacing parameters for displays} - -\begindesc -\bix^^{displays//spacing parameters for} -\cts displaywidth {\param{dimen}} -\explain -This parameter specifies the maximum width that -\TeX\ allows for a math display. If \TeX\ cannot fit the display -into a space of this width, it sets an overfull \minref{hbox} -and complains. -\TeX\ sets the value of |\displaywidth| when it encounters the `|$$|' -that starts the display. This initial value is -|\hsize| (\xref \hsize) unless it's overridden by changes to the -paragraph shape. -See \knuth{pages~188--189} for a more detailed explanation of this parameter. -\enddesc - -\begindesc -\cts displayindent {\param{dimen}} -\explain -This parameter specifies the space by which \TeX\ indents a -math display. -\TeX\ sets the value of |\displayindent| when it encounters the `|$$|' -that starts the display. Usually this initial value is zero, -but if the paragraph shape indicates that the display should -be shifted by an amount $s$, -\TeX\ will set |\displayindent| to $s$. -See \knuth{pages~188--189} for a more detailed explanation of this parameter. -\enddesc - -\begindesc -\cts predisplaysize {\param{dimen}} -\explain -\TeX\ sets this parameter to the width of the line preceding -a math display. -\TeX\ uses |\predisplaysize| to determine whether or not -the display starts to -the left of where the previous line ends, i.e., whether or not it visually -overlaps the previous line. -If there is overlap, it uses the |\abovedisplayskip| and -|\belowdisplayskip| glue in setting the display; -otherwise it uses the |\abovedisplay!-shortskip| and -|\belowdisplay!-shortskip| glue. -See \knuth{pages~188--189} for a more detailed explanation of this parameter. -\enddesc - -\begindesc -\cts abovedisplayskip {\param{glue}} -\explain -This parameter specifies the amount of vertical glue that -\TeX\ inserts before a display when the display starts to -the left of where the previous line ends, i.e., when it visually -overlaps the previous line. -\PlainTeX\ sets |\abovedisplayskip| to |12pt plus3pt minus9pt|. -See \knuth{pages~188--189} for a more detailed explanation of this parameter. -\enddesc - -\begindesc -\cts belowdisplayskip {\param{glue}} -\explain -This parameter specifies the amount of vertical glue that -\TeX\ inserts after a display when the display starts to -the left of where the previous line ends, i.e., when it visually -overlaps the previous line. -\PlainTeX\ sets |\belowdisplay!-skip| to |12pt plus3pt minus9pt|. -See \knuth{pages~188--189} for a more detailed explanation of this parameter. -\enddesc - -\begindesc -\cts abovedisplayshortskip {\param{glue}} -\explain -This parameter specifies the amount of vertical glue that -\TeX\ inserts before a math display -when the display starts to -the right of where the previous line ends, i.e., when it does not visually -overlap the previous line. -\PlainTeX\ sets |\abovedisplay!-shortskip| to |0pt plus3pt|. -See \knuth{pages~188--189} for a more detailed explanation of this parameter. -\enddesc - -\begindesc -\cts belowdisplayshortskip {\param{glue}} -\explain -This parameter specifies the amount of vertical glue that -\TeX\ inserts after a display -when the display starts to -the right of where the previous line ends, i.e., when it does not visually -overlap the previous line. -\PlainTeX\ sets |\belowdisplay!-shortskip| to |7pt plus3pt minus4pt|. -See \knuth{pages~188--189} for a more detailed explanation of this parameter. - -\eix^^{displays//spacing parameters for} -\enddesc - - -%========================================================================== -\subsection {Other spacing parameters for math} - -\begindesc -\cts mathsurround {\param{dimen}} -\explain -This parameter specifies the amount of space that \TeX\ -inserts before and after a math formula in text mode (i.e., a formula -surrounded by single |$|'s). See \knuth{page~162} for further details about -its behavior. -\PlainTeX\ leaves |\mathsurround| at |0pt|. -\enddesc - -\begindesc -\cts nulldelimiterspace {\param{dimen}} -\explain -^^{delimiters//null, space for} -This parameter specifies the width of the -space produced by a null \minref{delimiter}. -\PlainTeX\ sets |\nulldelimiterspace| to |1.2pt|. -\enddesc - -\begindesc -\cts scriptspace {\param{dimen}} -\explain -This parameter specifies the amount of space that \TeX\ -inserts before and after a subscript or superscript. -The |\nonscript| command (\xref\nonscript) ^^|\nonscript| -after a subscript or superscript cancels this space. -\PlainTeX\ sets |\script!-space| to |0.5pt|. -\enddesc - -%========================================================================== -\section {Categorizing math constructs} - -\begindesc -\makecolumns 7/2: -\cts mathord {} -\cts mathop {} -\cts mathbin {} -\cts mathrel {} -\cts mathopen {} -\cts mathclose {} -\cts mathpunct {} -\explain -These commands tell \TeX\ to treat the construct that follows as belonging -to a particular ^{class} (see \knuth{page~154} for the definition -of the classes). They are listed here in the order of the class numbers, -from $0$ to $6$. Their primary -effect is to adjust the spacing around the construct -to be whatever it is for the specified class. - -\example -$\mathop{\rm minmax}\limits_{t \in A \cup B}\,t$ -% By treating minmax as a math operator, we can get TeX to -% put something underneath it. -| -\produces -$\mathop{\rm minmax}\limits_{t \in A \cup B}\,t$ -\endexample -\enddesc - -\begindesc -\cts mathinner {} -\explain -This command tells \TeX\ to treat the construct that follows -as an ``inner formula'', e.g., a fraction, for spacing purposes. -It resembles the class commands given just above. -\enddesc - -%========================================================================== -\section {Special actions for math formulas} - -\begindesc -\cts everymath {\param{token list}} -\cts everydisplay {\param{token list}} -\explain -^^{displays//actions for every display} -These parameters specify \minref{token} lists that \TeX\ inserts -at the start of every text math or display math formula, respectively. -You can -take special actions at the start of each math formula by -assigning those actions to |\everymath| or -|\everydisplay|. Don't forget that if you want both kinds of formulas to -be affected, you need to set \emph{both} parameters. -\example -\everydisplay={\heartsuit\quad} -\everymath = {\clubsuit} -$3$ is greater than $2$ for large values of $3$. -$$4>3$$ -| -\produces -\everydisplay={\heartsuit\quad} -\everymath = {\clubsuit} -$3$ is greater than $2$ for large values of $3$. -$$4>3$$ -\endexample -\enddesc - -\enddescriptions -\eix^^{math} -\endchapter -\byebye diff --git a/Master/texmf-doc/doc/english/impatient/modes.tex b/Master/texmf-doc/doc/english/impatient/modes.tex deleted file mode 100644 index 1adce6a950a..00000000000 --- a/Master/texmf-doc/doc/english/impatient/modes.tex +++ /dev/null @@ -1,2078 +0,0 @@ -% This is part of the book TeX for the Impatient. -% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. -% See file fdl.tex for copying conditions. - -\input macros -\chapter {Commands for \linebreak horizontal and \linebreak vertical modes} - -\chapterdef{hvmodes} - -This section covers commands that have corresponding or identical -forms for both horizontal and vertical modes. -These commands provide boxes, spaces, rules, leaders, -and alignments. -For an explanation of the conventions used in this section, -see \headcit{Descriptions of the commands}{cmddesc}. - -\begindescriptions - -%========================================================================== -\section {Producing space} - -%========================================================================== - -\subsection {Fixed-width horizontal space} - -\begindesc -\bix^^{space//producing} -\bix^^{horizontal space} -\cts thinspace {} -\explain -This command produces a positive \minref{kern} -whose width is one-sixth of an em -(\xref{dimdefs}) -i.e., it causes \TeX\ to move its position right by that amount. -It is useful -when you have a nested quotation, for example, -and you want to separate the levels of quotes. -\TeX\ won't break a line at -a |\thinspace|.\minrefs{line break} - -\example -``\thinspace`A quote.'\thinspace''\par -24,\thinspace 29--31,\thinspace 45,\thinspace 102 -| -\produces -``\thinspace`A quote.'\thinspace''\par -24,\thinspace 29--31,\thinspace 45,\thinspace 102 -\endexample -\enddesc - -\begindesc -\cts negthinspace {} -\explain -This command -produces a negative kern whose width is one-sixth of an em -(\xref{dimdefs}), -i.e., it causes \TeX\ to move its position left by that amount. -It is useful for bringing together characters that are a little too -far apart. -\TeX\ won't break a line at a |\negthinspace|.\minrefs{line break} -\example -The horror, the horror\negthinspace, the horror of it all!! -| -\produces -The horror, the horror\negthinspace, the horror of it all! -\endexample -\enddesc - -\begindesc -\cts enspace {} -\explain -This command produces a \minref{kern} whose width is one ^{en} -(half of an em, see \xrefpg{dimdefs}). -\TeX\ won't break a line -at an |\enspace| unless it's followed by glue. -In a bulleted list, the bullets are usually separated from the following -text by an |\enspace|. -\example -Lemma 1.\enspace There exists a white rabbit. -| -\produces -Lemma 1.\enspace There exists a white rabbit. -\endexample -% the enspace here follows the \proclaim convention (Knuth p. 355). -\enddesc - -\begindesc -\easy\cts enskip {} -\cts quad {} -\cts qquad {} -\explain -^^{en} -Each of these commands -produces a glob of horizontal \minref{glue} -that can neither stretch nor shrink. -\TeX\ can break a line \minrefs{line break} at such glue. -The width of these glues (which are relative to the current font) -are as follows for |cmr10|, the default \plainTeX\ font: -\medskip - -\def\distance#1{\hbox{\strut $\rightarrow$\vrule\hskip #1\vrule$\leftarrow$}} - -{\def\l#1{\hfil$#1$\thinspace em} -\tabskip 3pc \halign{#&#&\hfil#\hfil\cr -{\it Command}&{\it Space}&{\it Illustration}\cr -\noalign{\vskip 4pt} -|\enskip|&\l{\frac 1/2}&\distance{.5em}\cr -|\quad|&\l1&\distance{1em}\cr -|\qquad|&\l2&\distance{2em}\cr -}} -\example -en\enskip skip; quad\quad skip; qquad\qquad skip -| -\produces -en\enskip skip; quad\quad skip; qquad\qquad skip -\endexample -\eix^^{horizontal space} -\enddesc - -%========================================================================== -\subsection {Fixed-length vertical space} - -\begindesc -\bix^^{vertical space} -\easy\cts smallskip {} -\cts medskip {} -\cts bigskip {} -\explain -These commands produce successively larger -amounts of vertical space: -\display{{\def\bar{\kern 2pt\hrule width 5pc} -\def\lbl#1{\hbox to 5pc{\hfil #1skip\hfil}} -\leavevmode -\vtop{\lbl{small}\bar\smallskip\bar}\quad -\vtop{\lbl{med}\bar\medskip\bar}\quad\vtop{\lbl{big}\bar\bigskip\bar}}} -\noindent -|\smallskip| skips by $3$ points and can stretch or -shrink by $1$ point. |\med!-skip| is equivalent to two |\smallskip|s -and |\bigskip| is equivalent to two |\medskip|s. - -These commands end a paragraph since they are inherently vertical. -The skips that they produce -are in addition to the normal interparagraph skip. -\example -Hop \smallskip skip \medskip and \bigskip jump. -| -\produces -Hop \smallskip skip \medskip and \bigskip jump. -\endexample -\enddesc - -\begindesc -\cts smallskipamount {\param{glue}} -\cts medskipamount {\param{glue}} -\cts bigskipamount {\param{glue}} -\explain -These parameters specify the amounts of glue produced by -the |\small!-skip|, |\med!-skip|, and |\big!-skip| commands. -By changing these parameters you change the effect of the commands. -The default values (for \plainTeX) -correspond to a quarter of a linespace, half a linespace, -and a full linespace. -We recommend that you maintain this ratio by changing -these values whenever -you change |\baselineskip| (\xref\baselineskip). -^^|\baselineskip//and {\tt\\smallskipamount}, etc.| -\eix^^{vertical space} - -\enddesc - -%========================================================================== -\subsection {Variable-size space} - -\begindesc -\easy\cts hskip {\<dimen$_1$> {\bt plus} \<dimen$_2$> {\bt minus} \<dimen$_3$>} -\cts vskip {\<dimen$_1$> {\bt plus} \<dimen$_2$> {\bt minus} \<dimen$_3$>} -^^{vertical skip}^^{vertical glue} -^^{horizontal skip}^^{horizontal glue} -\bix^^{horizontal space} -\bix^^{vertical space} -\explain -These commands produce horizontal and vertical glue respectively. -In the simplest and most common case when only \<dimen$_1$> is present, -|\hskip| skips to the right by \<dimen$_1$> -and |\vskip| skips down the page by \<dimen$_1$>. -More generally, these commands -produce \minref{glue} whose natural size is -\<dimen$_1$>, whose stretch is \<dimen$_2$>, and whose shrink is \<dimen$_3$>. -Either the |plus| \<dimen$_2$>, the |minus |\<dimen$_3$>, -or both can be omitted. -If both are present, the |plus| must come before the |minus|. -An omitted value -is taken to be zero. Any of the \<dimen>s can be negative. - -You can use |\hskip| in math mode, but you can't use |mu| units -\seeconcept{mathematical unit} -for any of the dimensions. If you want |mu| units, use |\mskip| -(\xref\mskip) instead. - -\example -\hbox to 2in{one\hskip 0pt plus .5in two} -| -\produces -\hbox to 2in{one\hskip 0pt plus 2in two} - -\doruler{\8\8}2{in} -\nextexample -\hbox to 2in{Help me!! I can't fit -{\hskip 0pt minus 2in} inside this box!!} -| -\produces -\hbox to 2in{Help me! I can't fit -{\hskip 0pt minus 2in} inside this box!} - -\doruler{\8\8}2{in} -\nextexample -\vbox to 4pc{\offinterlineskip% Just show effects of \vskip. - \hbox{one}\vskip 0pc plus 1pc \hbox{two} - \vskip .5pc \hbox{three}} -| -\produces -\smallskip -\vbox to 4pc{\offinterlineskip% Just show effects of \vskip. - \hbox{one}\vskip 0pc plus 1pc \hbox{two} - \vskip .5pc \hbox{three}} -\endexample -\enddesc - -\begindesc -\cts hglue {\<glue>} -\cts vglue {\<glue>} -^^{vertical glue} -^^{horizontal glue} -\explain -The |\hglue| command produces horizontal \minref{glue} that won't disappear at -a line break; the |\vglue| command -produces vertical \minref{glue} that won't disappear at a page break. -In other respects these commands are just like |\hskip| and |\vskip|. -You can use |\vglue| to produce blank space at the top of a page, -e.g., above a title on the first page of a document, but -^|\topglue| (next) is usually better for this purpose. -\enddesc - -\begindesc -\cts topglue {\<glue>} -\explain -\margin{Command added; recent addition to \TeX} -This command\footnote{|\topglue| was added to \TeX\ in version 3.0, -later than the other enhancements introduced by ^{\newTeX} -(\xref{newtex}). It is first described in the \emph{eighteenth\/} -edition of \texbook.} causes the space from the top of the page to the -top of the first box on the page to be \<glue> precisely. -The top of the page is considered to be at the baseline of an -imaginary line of text just above the top line of the page. -More precisely, it's a distance |\topskip| above the origin as given by -|\hoffset| and |\voffset|. - -This command is useful because \TeX\ ordinarily adjusts the glue -produced by |\topskip| in a complex way. By using |\topglue| you can -control the position of the first box on the page without worrying about -those adjustments. - -\enddesc - -\begindesc -\cts kern {\<dimen>} -\explain -The effect of this command depends on the mode that \TeX\ is in when -it encounters it: -\ulist - -\li In a horizontal mode, \TeX\ moves its position to the right (for a positive -kern) or to the left (for a negative kern). - -\li In a vertical mode, \TeX\ moves its position down the page (for a positive -kern) or up the page (for a negative kern). - -\endulist -\noindent -Thus a positive kern produces empty space while a negative kern -causes \TeX\ to back up over something that it's already produced. -This notion of a kern ^^{kerns} -is different from the notion of a kern in some computerized -typesetting systems---in \TeX, positive kerns push two letters \emph{apart} -instead of bringing them closer together. - -A kern is similar to -\minref{glue}, except that (a)~a kern can neither stretch nor shrink, -and (b)~\TeX\ will only break a line or a page at a kern if the kern -is followed by glue and is not part of a math formula. -If \TeX\ finds a kern at the -end of a line or a page, it discards the kern. -If you want to get the effect of a kern that never disappears, -use ^|\hglue| or ^|\vglue|. - -You can use |\kern| in math mode, but you can't use |mu| units -\seeconcept{mathematical unit} -for \<dimen>. If you want |mu| units, use |\mkern| -(\xref\mkern) instead. -^^{line breaks//kerns at} -^^{page breaks//kerns at} - -\example -\centerline{$\Downarrow$}\kern 3pt % a vertical kern -\centerline{$\Longrightarrow$\kern 6pt % a horizontal kern - {\bf Heed my warning!!}\kern 6pt % another horizontal kern - $\Longleftarrow$} -\kern 3pt % another vertical kern -\centerline{$\Uparrow$} -| -\produces -\centerline{$\Downarrow$}\kern 3pt % a vertical kern -\centerline{$\Longrightarrow$\kern 6pt % a horizontal kern - {\bf Heed my warning!}\kern 6pt % another horizontal kern - $\Longleftarrow$} -\kern 3pt % another vertical kern -\centerline{$\Uparrow$} -\endexample -\enddesc - -\begindesc -\makecolumns 4/2: -\cts hfil {} -\cts hfill {} -\cts vfil {} -\cts vfill {} -\explain -\bix^^{glue//infinitely stretchable} -These commands produce infinitely stretchable horizontal -and vertical glue that -overwhelms any finite stretch that may be present. -|\hfil| and |\hfill| produce horizontal glue, while -|\vfil| and |\vfill| produce vertical glue. - -|\hfill| is infinitely larger than |\hfil|. -If both |\hfill| and |\hfil| appear in the same \minref{box}, -the |\hfill| will consume all the available extra space -and the |\hfil| will be effectively ignored. -|\hfill| can in turn be overwhelmed by |\hskip 0pt plus 1filll|. -The glue produced by -|\hfil| and |\hfill| never shrinks. - -The behavior of |\vfil| and |\vfill| is analogous. - -\example -\hbox to 2in{Left\hfil Middle \hfil Right} -| -\produces -\hbox to 2in{Left\hfil Middle \hfil Right} - -\doruler{\8\8}2{in} -\nextexample -\hbox to 2in{Left\hfil Middle \hfill Right} -| -\produces -\hbox to 2in{Left\hfil Middle \hfill Right} - -\doruler{\8\8}2{in} -\nextexample -\leftline{% -\vbox to 4pc{% - \hbox{Top}\vfil\hbox{Middle}\vfil \hbox{Bottom}}\quad -\vbox to 4pc{% - \hbox{Top}\vfil\hbox{Middle}\vfill\hbox{Bottom}}} -| -\produces -\smallskip -\leftline{% -\vbox to 4pc{% - \hbox{Top}\vfil\hbox{Middle}\vfil \hbox{Bottom}}\quad -\vbox to 4pc{% - \hbox{Top}\vfil\hbox{Middle}\vfill\hbox{Bottom}}} -\endexample - -\eix^^{glue//infinitely stretchable} -\enddesc - -\begindesc -\cts hss {} -\cts vss {} -\explain -These commands produce horizontal and vertical glue -that is both infinitely stretchable and -infinitely shrinkable. The glue can shrink -to a negative distance, producing the effect of backspacing along a line -(for |\hss|) or moving back up a page (for |\vss|). - -\example -\line{text\hfil\hbox to 0pt{margin\hss}} -% `margin\hss' shrinks to the zero width of the hbox. -| -\produces -\line{text\hfil\hbox to 0pt{margin\hss}} -\nextexample -\vbox to 1pc{\hrule width 6pc % Top of box. - \hbox{1} \vskip 1pc\hbox to 2pc{\hfil 2} - % The \vss absorbs the extra distance produced by \vskip. - \vss \hbox to 3pc{\hfil 3} - \hrule width 6pc}% Bottom of box. -| -\produces -\medskip -\vbox to 1pc{\hrule width 6pc % top of box - \hbox{1} \vskip 1pc\hbox to 2pc{\hfil 2} - \vss \hbox to 3pc{\hfil 3} - \hrule width 6pc}% bottom of box -\vskip 2.5pc -\endexample -\enddesc - -\begindesc -\cts hfilneg {} -\cts vfilneg {} -\explain -^^{glue//negative} -These commands cancel the effect of a preceding |\hfil| -or |\vfil|. While |\hfil| and |\vfil| -produce infinitely stretchable positive \minref{glue}, |\hfilneg| -and |\vfilneg| produce infinitely stretchable negative glue. -(Thus, $n$ |\hfilneg|s cancel $n$ ^|\hfil|s, and similarly for -|\vfilneg|.) -The main use of |\hfilneg| and |\vfilneg| -is to counteract the effect of an |\hfil| or |\vfil| -inserted by a \minref{macro}. - -|\hfilneg| and |\vfilneg| have -the curious property that if they are the only infinitely stretchable -glue in a box, they produce exactly the same effect as |\hfil| -and |\vfil|. - -\example -\leftline{\hfil on the right\hfilneg} -% Cancel the \hfil that \leftline produces to the right -% of its argument. -| -\produces -\leftline{\hfil on the right \hfilneg} -% Cancel the \hfil that \leftline produces to the right -% of its argument. -% -\nextexample -\def\a{\hbox to 1pc{\hfil 2}\vfil} -\vbox to 4pc{\hbox{1} \vfil \a - \vfilneg \hbox to 2pc{\hfil 3}} -| -\produces -\smallskip -\def\a{\hbox to 1pc{\hfil 2}\vfil} -\vbox to 4pc{\hbox{1} \vfil \a - \vfilneg \hbox to 2pc{\hfil 3}} -\endexample\enddesc - -{\emergencystretch=2em -\see |\hbadness| and |\vbadness| (\xref \vbadness), -|\hfuzz| and |\vfuzz| (\xref \vfuzz), -\conceptcit{leaders}.\par} -\eix^^{space//producing} -\eix^^{horizontal space} -\eix^^{vertical space} - -%========================================================================== -\section {Manipulating boxes} - -%========================================================================== -\subsection {Constructing hboxes and vboxes} - -\begindesc -\bix^^{box commands} -^^{hboxes//constructing with \b\tt\\hbox\e} -% -\cts hbox {\rqbraces{\<horizontal mode material>}} -\aux\cts hbox {{\bt to} \<dimen> \rqbraces{\<horizontal mode material>}} -\aux\cts hbox {{\bt spread} \<dimen> \rqbraces{\<horizontal mode material>}} -\explain -This command produces an hbox -(horizontal \minref{box}) containing \<horizontal mode material>. -The braces around \<horizontal mode material> define a group. -\TeX\ doesn't break the \<horizontal mode material> into lines, -since it's in restricted horizontal mode when it's assembling the box. -\TeX\ won't change the size of the box once it's been produced. - -|\hbox| is often useful when you want to keep some text all on one line. -If your use of |\hbox| prevents \TeX\ from breaking lines in an acceptable -way, \TeX\ will complain about an overfull hbox. - -The width of the hbox depends on the arguments to |\hbox|: -\ulist\compact -\li If you specify only \<horizontal mode material>, -the hbox will have its natural \minref{width}. -\li If you specify |to| \<dimen>, the width of the hbox will be \<dimen>. -\li If you specify |spread| \<dimen>, the width of the hbox will be -its natural width plus \<dimen>, i.e., the hbox will be spread out by -\<dimen>. -\endulist - -The ^|\hfil| command (\xref\hfil) is useful for filling out an -hbox with empty space when the material in the box isn't as wide as -the width of the box. -\example -\hbox{ugly suburban sprawl} -\hbox to 2in{ugly \hfil suburban \hfil sprawl} -\hbox spread 1in {ugly \hfil suburban \hfil sprawl} -% Without \hfil in the two preceding lines, -% you'd get `underfull hbox'es. -| -\produces -\hbox{ugly suburban sprawl} -\hbox to 2in{ugly \hfil suburban \hfil sprawl} -\hbox spread 1in {ugly \hfil suburban \hfil sprawl} -% Without \hfil in the two preceding lines, -% you'd get `underfull hbox'es. - -\doruler{\8\8\8}3{in} -\endexample -\enddesc - -\begindesc -\cts vtop {\<vertical mode material>} -\aux\cts vtop {{\bt to} \<dimen> \rqbraces{\<vertical mode material>}} -\aux\cts vtop {{\bt spread} \<dimen> \rqbraces{\<vertical mode material>}} -\cts vbox {\rqbraces{\<vertical mode material>}} -\aux\cts vbox {{\bt to} \<dimen> \rqbraces{\<vertical mode material>}} -\aux\cts vbox {{\bt spread} \<dimen> \rqbraces{\<vertical mode material>}} -\explain -^^{hbox//constructing with \b\tt\\hbox\e} -These commands -produce a \minref{vbox} (vertical \minref{box}) -containing \<vertical mode material>. -The braces around \<vertical mode material> define a group. -\TeX\ is in internal vertical mode when it's assembling the box. -\TeX\ won't change the size of the box once it's been produced. - -The difference between |\vtop| and |\vbox| lies in where \TeX\ puts -the reference point of the constructed vbox. -Ordinarily, the reference point gotten from |\vtop| tends to be at or near -the top of the constructed vbox, -while -the reference point gotten from |\vbox| tends to be at or near -the bottom of the constructed vbox. -Thus a row of vboxes all constructed with |\vtop| -will tend to have their tops nearly in a line, -while a row of vboxes all constructed with |\vbox| -will tend to have their bottoms nearly in a line. - -|\vtop| and |\vbox| are often useful -when you want to keep some text together on a single page. -(For this purpose, it usually doesn't matter which command you use.) -If your use of these commands -prevents \TeX\ from breaking pages in an acceptable -way, \TeX\ will complain that it's found an overfull or underfull vbox while -|\output| is active. - -The height of a vbox depends on -the arguments to |\vtop| or |\vbox|. -For |\vbox|, \TeX\ determines the height as follows: -\ulist\compact -\li If you specify only \<vertical mode material>, -the vbox will have its natural height. -\li If you specify |to| \<dimen>, -the height of the vbox will be \<dimen>. -\li If you specify |spread| \<dimen>, the height of the vbox will be -its natural height plus \<dimen>, i.e., -the height of the vbox will be stretched vertically by \<dimen>. -\endulist -\noindent -For |\vtop|, -\TeX\ constructs the box using its rules for |\vbox| and then -apportions the vertical extent between the height and the depth as -described below. - -Ordinarily, the width of a constructed vbox is the width of the widest -item inside it.\footnote -{More precisely, it's the distance from the reference point to the rightmost -edge of the constructed vbox. Therefore, -if you move any of the items right using ^|\moveright| or -^|\moveleft| (with a negative distance), -the constructed vbox might be wider.} -The rules for apportioning the vertical extent between the -height and the depth are more complicated: -\ulist -\li For |\vtop|, -the height is the height of its first item, if that item is a box or rule. -Otherwise the height is zero. The depth is whatever vertical -extent remains after the height is subtracted. -\li For |\vbox|, -the depth is the depth of its last item, if that item is a box or rule. -Otherwise the depth is zero. The height is whatever vertical -extent remains after the depth is subtracted.% -\footnote{In fact, there's a further complication. -Suppose that after the depth has been determined -using the two rules just given, the depth turns out to be greater than -^|\boxmaxdepth|. -Then the depth is reduced to |\boxmaxdepth| and the height is adjusted -accordingly.} -\endulist - -The |\vfil| command (\xref\vfil) is useful for filling out a vbox -^^|\vfil//filling a vbox| -with empty space when the material in the box isn't as tall as -the vertical extent of the box. -\example -\hbox{\hsize = 10pc \raggedright\parindent = 1em -\vtop{In this example, we see how to use vboxes to -produce the effect of double columns. Each vbox -contains two paragraphs, typeset according to \TeX's -usual rules except that it's ragged right.\par -This isn't really the best way to get true double -columns because the columns} -\hskip 2pc -\vtop{\noindent -aren't balanced and we haven't done anything to choose -the column break automatically or even to fix up the -last line of the first column.\par -However, the technique of putting running text into a -vbox is very useful for placing that text where you -want it on the page.}} -| -\produces -\hbox{\hsize = 10pc \raggedright\parindent = 1em -\vtop{In this example, we see how to use vboxes to -produce the effect of double columns. Each vbox -contains two paragraphs, typeset according to \TeX's -usual rules except that it's ragged right.\par -This isn't really the best way to get true double -columns because the columns} -\hskip 2pc -\vtop{\noindent -aren't balanced and we haven't done anything to choose -the column break automatically or even to fix up the -last line of the first column.\par -However, the technique of putting running text into a -vbox is very useful for placing that text where you -want it on the page.}} -\nextexample -\hbox{\hsize = 1in \raggedright\parindent = 0pt -\vtop to .75in{\hrule This box is .75in deep. \vfil\hrule} -\qquad -\vtop{\hrule This box is at its natural depth. \vfil\hrule} -\qquad -\vtop spread .2in{\hrule This box is .2in deeper than - its natural depth.\vfil\hrule}} -| -\produces -\hbox{\hsize = 1in \raggedright\parindent=0pt -\vtop to .75in{\hrule This box is .75in deep. \vfil\hrule} -\qquad -\vtop{\hrule This box is at its natural depth. \vfil\hrule} -\qquad -\vtop spread .2in{\hrule This box is .2in deeper than - its natural depth.\vfil\hrule}} -\nextexample -% See how \vbox lines up boxes at their bottoms -% instead of at their tops. -\hbox{\hsize = 1in \raggedright -\vbox to .5in{\hrule This box is .5in deep.\vfil\hrule} -\qquad -\vbox to .75in{\hrule This box is .75in deep.\vfil\hrule}} -| -\produces -\hbox{\hsize = 1in \raggedright -\vbox to .5in{\hrule This box is .5in deep.\vfil\hrule} -\qquad -\vbox to .75in{\hrule This box is .75in deep.\vfil\hrule}} -\vskip 16pt % to avoid running into the next command description -\endexample -\enddesc - -\begindesc -\margin{Two commands interchanged here.} -\cts boxmaxdepth {\param{dimen}} -\explain -This parameter contains a dimension $D$. -\TeX\ will not construct a box whose depth exceeds $D$. -If you produce a box whose depth $d$ would exceed $D$, -\TeX\ will transfer the -excess depth to the height of the box, effectively moving the -\minref{reference point} of the box down by $d-D$. -If you set |\boxmaxdepth| to zero, \TeX\ will line up a row of vboxes -so that their bottom boundaries all lie on the same horizontal line. -\PlainTeX\ sets |\boxmaxdepth| to |\maxdimen| \ctsref{\maxdimen}, -so |\boxmaxdepth| won't affect your boxes unless you change it. -\enddesc - -\begindesc -\cts underbar {\<argument>} -\explain -This command puts \<argument> into an \minref{hbox} -and underlines it without regard to anything that protrudes below the -\minref{baseline} of the box. -\example -\underbar{Why not learn \TeX?} -| -\produces -\underbar{Why not learn \TeX?} -\endexample -\enddesc - -\begindesc -\cts everyhbox {\param{token list}} -\cts everyvbox {\param{token list}} -\explain -These parameters contain token lists that \TeX\ expands at the start of -every \minref{hbox} or \minref{vbox} that it constructs. -Any items resulting from the expansion then become -the beginning of the list of items for the box. -By default these token lists are empty. -\enddesc - -%========================================================================== -\subsection {Setting and retrieving the contents of boxes} - -\begindesc -\bix^^{box registers} -% -\cts setbox {\<register>\thinspace{\bt =}\thinspace\<box>} -\cts box {\<register>} -\explain -^^{assignments//of boxes} -These commands respectively set and retrieve the contents -of the box register -whose number is \<register>. -Note that you set a box register a little differently than -you set the other kinds of registers: you use -|\setbox|$\,n$~|=| rather than |\box|$\,n$~|=|. - -\emph{Retrieving the contents of a box register -with these commands has the side effect of emptying it, -so that the box register become void.} If you don't want that to happen, -you can use |\copy| (see below) to retrieve the contents. -You should use |\box| in preference to |\copy| -when you don't care about what's in a box register after you've used it, -so as not to exhaust \TeX's memory by filling it with obsolete boxes. -\example -\setbox0 = \hbox{mushroom} -\setbox1 = \vbox{\copy0\box0\box0} -\box1 -| -\produces -\setbox0 = \hbox{mushroom} -\setbox1 = \vbox{\copy0\box0\box0} -\box1 -\endexample -\enddesc - -\begindesc -\cts copy {\<register>} -\explain -^^{boxes//copying}\minrefs{box} -This command -produces a copy of box register \<register>. -This command is useful when you want to retrieve the contents of a box -register but don't want to destroy the contents. -(Retrieving the register contents with ^|\box| makes the register void.) -\example -\setbox0 = \hbox{good } -Have a \copy0 \box0 \box0 day!! -| -\produces -\setbox0 = \hbox{good } -Have a \copy0 \box0 \box0 day! -\endexample -\enddesc - -\begindesc -\cts unhbox {\<register>} -\cts unvbox {\<register>} -^^{boxes//extracting contents of} -\explain -These commands produce the list contained in box register \<register> and make -that box register void. -|\unhbox| applies to box registers containing -hboxes and |\unvbox| applies to box registers containing vboxes. -You should use these commands in preference to |\unhcopy| and |\unvcopy| -(see below) -when you don't care about what's in the box register after you've used it, -so as not to exhaust \TeX's memory by filling it with obsolete boxes. -\example -\setbox0=\hbox{The Mock Turtle sighed deeply, and -drew the back of one flapper across his eyes. } -\setbox1=\hbox{He tried to speak, but sobs choked - his voice. } -\unhbox0 \unhbox1 -% \box0 \box1 would set two hboxes side by side -% (and produce a badly overfull line). -\box1 % produces nothing -| -\produces -\setbox0=\hbox{The Mock Turtle sighed deeply, and -drew the back of one flapper across his eyes. } -\setbox1=\hbox{He tried to speak, but sobs choked - his voice. } -\unhbox0 \unhbox1 -% \hbox0 \hbox1 would set two hboxes side by side -% (and produce a badly overfull line). -\box1 % Produces nothing. -\endexample -\enddesc - -\begindesc -\cts unhcopy {\<register>} -\cts unvcopy {\<register>} -^^{boxes//extracting contents of} -^^{boxes//copying }\minrefs{box} -\explain -These commands produce the list contained in box register \<register> and -leave the contents of the register undisturbed. -|\unhcopy| applies to box registers containing hboxes -and |\unvcopy| applies to box registers containing vboxes. -\example -\setbox0=\hbox{The Mock Turtle sighed deeply, and -drew the back of one flapper across his eyes. } -\setbox1=\hbox{He tried to speak, but sobs choked his - voice. } -\unhcopy0 \unhcopy1\par\noindent -% \box0 \box1 would set two hboxes side by side -% (and produce a badly overfull line). -\box1 % Produces an hbox (which can't be broken). -| -\produces -\setbox0=\hbox{The Mock Turtle sighed deeply, and -drew the back of one flapper across his eyes. } -\setbox1=\hbox{He tried to speak, but sobs choked his - voice. } -\unhcopy0 \unhcopy1\par\noindent -% \hbox0 \hbox1 would set two hboxes side by side -% (and produce a badly overfull line). -\box1 % produces an hbox (which can't be broken) -\endexample -\enddesc - -\see |\wd|, |\dp|, |\ht| (\xref\ht). -\eix^^{box registers} - -%========================================================================== -\subsection {Shifting boxes} - -\begindesc -\cts moveleft {\<dimen> \<box>} -\cts moveright {\<dimen> \<box>} -\bix^^{boxes//shifting} -\minrefs{box} -\explain -These commands move \<box> left or right by \<dimen> (which can be -negative). You can only apply |\moveleft| and |\moveright| to a box -that's in a \minref{vertical list}. -\example -\vbox{\vbox{Phoebe}\vbox{walked}% -\moveleft 20pt\vbox{a}\moveright 20pt\vbox{crooked}% -\vbox{mile.}} -| -\produces -\hfuzz = \maxdimen -\vbox{\vbox{Phoebe}\vbox{walked}% -\moveleft 20pt\vbox{a}\moveright 20pt\vbox{crooked}% -\vbox{mile.}} -\endexample -\enddesc - -\begindesc -\cts lower {\<dimen> \<box>} -\cts raise {\<dimen> \<box>} -\explain -These commands move \<box> up or down by \<dimen> -(which can be negative). -You can only apply |\raise| and |\lower| to a box -that's in a \minref{horizontal list}. -\example -Are you feeling \lower 6pt \hbox{depressed} about the - \raise 6pt \hbox{bump} on your nose? -| -\produces -Are you feeling \lower 6pt \hbox{depressed} about the - \raise 6pt \hbox{bump} on your nose? -\endexample - -\eix^^{boxes//shifting} -\enddesc - -%========================================================================== -\subsection {Dimensions of box registers} - -\begindesc -\bix^^{box registers} -\bix^^{dimensions//of box registers} -\cts ht {\<register>\param{dimen}} -\cts dp {\<register>\param{dimen}} -\cts wd {\<register>\param{dimen}} -\explain -These parameters refer to the ^{height}, ^{depth}, and ^{width} -respectively of \minref{box} \minref{register} \<register>. -You can use them to find out the dimensions of a box. -You can also change the dimensions of a box, but it's a tricky business; -if you want to be adventurous you can -learn all about it from \knuth{pages~388--389}. -\example -\setbox0 = \vtop{\hbox{a}\hbox{beige}\hbox{bunny}}% -The box has width \the\wd0, height \the\ht0, -and depth \the\dp0. -| -\produces -\setbox0 = \vtop{\hbox{a}\hbox{beige}\hbox{bunny}}% -The box has width \the\wd0, height \the\ht0, -and depth \the\dp0. -\endexample -\eix^^{box registers} -\eix^^{dimensions//of box registers} -\enddesc - -%========================================================================== -\subsection {Struts, phantoms, and empty boxes} - -\begindesc -\margin{This subsection is a merger of two previous subsections. -The commands have also been reordered.} -\bix^^{struts} -\cts strut {} -\explain -This command produces a box whose width is zero -and whose height (|8.5pt|) and depth (|3.5pt|) -are those of a more or less typical line of type in |cmr10|, -the default \plainTeX\ font. -Its main use is in forcing lines to have the same height -when you've disabled \TeX's interline glue with -|\offinter!-lineskip| ^^|\offinterlineskip| or a similar command, -e.g., when you're constructing an alignment. -If the natural height of a line is -too short, you can bring it up to standard by including a |\strut| -in the line. The strut will force the height and depth of the line -to be larger, but it won't print anything or consume any horizontal -space. - -If you're setting type in a font that's bigger or smaller than |cmr10|, -you should redefine |\strut| for that context. -\example -\noindent % So we're in horizontal mode. -\offinterlineskip % So we get the inherent spacing. -% The periods in this vbox are not vertically equidistant. -\vtop{\hbox{.}\hbox{.(}\hbox{.x} - \hbox{.\vrule height 4pt depth 0pt}}\qquad -% The periods in this vbox are vertically equidistant -% because of the struts. -\vtop{\hbox{.\strut}\hbox{.(\strut}\hbox{.x\strut} - \hbox{.\vrule height 4pt depth 0pt\strut}} -| - -\produces -\noindent % So we're in horizontal mode. -\offinterlineskip % So we get the inherent spacing. -% The periods in this vbox are not vertically equidistant. -\vtop{\hbox{.}\hbox{.(}\hbox{.x} - \hbox{.\vrule height 4pt depth 0pt}}\qquad -% The periods in this vbox are vertically equidistant -% because of the struts. -\vtop{\hbox{.\strut}\hbox{.(\strut}\hbox{.x\strut} - \hbox{.\vrule height 4pt depth 0pt\strut}} -\endexample -\enddesc - -\begindesc -\cts mathstrut {} -\explain -This command produces a phantom formula whose width is zero -and whose height and depth are the same as those of a left parenthesis. -|\mathstrut| is in fact defined as `|\vphantom(|'. -Its main use is for getting radicals, underbars, and overbars to line -up with other radicals, underbars, and overbars in a formula. -It is much like ^|\strut| (\xref \strut), -except that it adjusts itself to the different \minref{style}s -that can occur in math formulas. -\example -$$\displaylines{ -\overline{a_1a_2} \land \overline{b_1b_2} -\quad{\rm versus}\quad \overline{a_1a_2\mathstrut} - \land \overline{b_1b_2\mathstrut}\cr -\sqrt{\epsilon} + \sqrt{\xi} \quad{\rm versus}\quad -\sqrt{\epsilon\mathstrut} + \sqrt{\xi\mathstrut}\cr}$$ -| -\dproduces -\kern 4pt -$$\displaylines{ -\overline{a_1a_2} \land \overline{b_1b_2} -\quad{\rm versus}\quad \overline{a_1a_2\mathstrut} - \land \overline{b_1b_2\mathstrut}\cr -\sqrt{\epsilon} + \sqrt{\xi} \quad{\rm versus}\quad -\sqrt{\epsilon\mathstrut} + \sqrt{\xi\mathstrut}\cr}$$ -\endexample -\eix^^{struts} -\enddesc - -\begindesc -\cts phantom {\<argument>} -\explain -\bix^^{boxes//phantom} -\bix^^{phantoms} -This command produces an empty \minref{box} -having the same size and placement -that \<argument> would have were it typeset. -One use of |\phantom| is for reserving space for a symbol that for some -reason needs to be drawn in by hand. -\example -$1\phantom{9}2$ -| -\produces -$1\phantom{9}2$ -\endexample -\enddesc - -\begindesc -\cts hphantom {\<argument>} -\cts vphantom {\<argument>} -\explain -These commands produce phantom boxes\minrefs{box}\ that -don't print anything: -\ulist\compact -\li |\hphantom| produces a box with the same width as \<argument> -but zero height and depth. -\li |\vphantom| produces a box with the same height and depth as \<argu\-ment> -but zero width. -\endulist -\noindent -Their main purpose is to force a subformula to have a certain minimum -horizontal or vertical dimension. -\example -$$\left[\vphantom{u\over v}t\right] \star - \left[{u\over v}\right]\quad - \{\hphantom{xx}\}$$ -| -\dproduces -\kern 4pt -$$\left[\vphantom{u\over v}t\right] \star - \left[{u\over v}\right]\quad - \{\hphantom{xx}\}$$ -\endexample -\enddesc - -\begindesc -\cts smash {\<argument>} -\explain -This command typesets \<argument>, -but forces the height and depth of its containing \minref{box} to be zero. -You can use |\smash| and |\vphantom| in combination to give a subformula -any height and depth that you wish. -\example -$${\smash{r_m \brace r_n}\vphantom{r}} \Longrightarrow r$$ -| -\dproduces -\kern 4pt -$${\smash{r_m \brace r_n}\vphantom{r}} \Longrightarrow r$$ -\endexample -\eix^^{boxes//phantom} -\eix^^{phantoms} -\enddesc - -\begindesc -^^{boxes//empty} -\cts null {} -\explain -This command produces an empty \minref{hbox}. -\example -\setbox0 = \null -The null box \null has width \the\wd0, height \the\ht0, -and depth \the\dp0. -| -\produces -\setbox0 = \null -The null box \null has width \the\wd0, height \the\ht0, -and depth \the\dp0. -\endexample -\enddesc - - -%========================================================================== -\subsection {Parameters pertaining to malformed boxes} - -\begindesc -\bix^^{boxes//overfull} -\bix^^{boxes//underfull} -\cts overfullrule {\param{dimen}} -\explain -This parameter specifies the width of the rule -that \TeX\ appends to an overfull \minref{hbox}. -\PlainTeX\ sets it to |5pt|. -\enddesc - -\begindesc -\cts hbadness {\param{number}} -\cts vbadness {\param{number}} -\explain -These parameters specify the thresholds of horizontal and vertical -\minref{badness} for reporting underfull or overfull boxes. -|\hbadness| applies to hboxes and |\vbadness| applies to vboxes. -If the badness of a constructed box exceeds the threshold, -\TeX\ will report an error. If you raise the thresholds -(the \plainTeX\ defaults are both $1000$), -\TeX\ will be less likely to complain. -Note that the settings of |\hbadness| and |\vbadness| have no effect on -the appearance of your typeset document; they only affect the error -messages that you get. -See \knuth{page~302} for a precise description -of how \TeX\ decides when to complain about an overfull or underfull -box. - -\margin{The material on tolerance was inappropriate here and has been -removed. A new example replaces it.} -\example -\hbadness = 10000 % Suppress any hbadness complaints. -\hbox to 2in{a b}\par -\hbadness = 500 % Report hbadness exceeding 500. -\hbox to 2in{a\hskip 0pt plus .5in b} -| -\logproduces -Underfull \hbox (badness 5091) detected at line 4 -\tenrm a b - -\hbox(6.94444+0.0)x144.54, glue set 3.70787 -.\tenrm a -.\glue 0.0 plus 36.135 -.\tenrm b -| -\endexample -\enddesc - -\begindesc -\cts badness {} -\explain -This command yields the numerical value of the badness of the \minref{box} -(either horizontal or vertical) that \TeX\ has most recently produced. -If the box was overfull, |\badness| will be $1000000$; in all other cases -it will be between $0$ and $10000$. -\enddesc - -\begindesc -\cts hfuzz {\param{dimen}} -\cts vfuzz {\param{dimen}} -\explain -These parameters specify the amount that -a \minref{box} can exceed its natural size before \TeX\ considers it to be -overfull. ^^{boxes//overfull} -|\hfuzz| applies to hboxes and |\vfuzz| applies to vboxes. -\PlainTeX\ sets both parameters to |0.1pt|. -\example -\hfuzz = .5in -\hbox to 2in{This box is longer than two inches.} -% No error results -| -\produces -\hfuzz = .5in -\hbox to 2in{This box is longer than two inches.} -% No error results -\doruler{\8\8\8}3{in} -\endexample - -\eix^^{boxes//overfull} -\eix^^{boxes//underfull} -\eix^^{box commands} -\enddesc - -\see |\tolerance| \ctsref{\tolerance}. -%========================================================================== -\section {Retrieving the last item from a list} - -\begindesc -^^{boxes//last box in a list} -^^{kerns//last kern in a list} -^^{penalties//last penalty in a list} -^^{glue//last glue item in a list} -\margin{This section has been moved in its entirety from the chapter -(`Commands for general operations')} -\cts lastkern {} -\cts lastskip {} -\cts lastpenalty {} -\cts lastbox {} -\explain -These control sequences yield the value of the last item on the current -list. They aren't true commands because they can only appear as -part of an argument. -If the last item on the list isn't of the indicated type, -they yield a zero value (or an empty box, in the case of |\lastbox|). -For example, -if the last item on the current list is a \minref{kern}, -|\lastkern| yields the dimension of that kern; if it -isn't a kern, it yields a dimension of $0$. - -Using |\lastbox| has the additional effect of removing the last box from -the list. -If you want the original |\last!-box| to remain on the list, you -have to add a copy of it to the list. -|\last!-box| is not permitted in a math list or in the main -vertical~list. - -These control sequences are -most useful after macro calls that might have inserted entities of -the indicated kinds. - -\example -\def\a{two\kern 15pt} -one \a\a\hskip 2\lastkern three\par -% Get three times as much space before `three'. -\def\a{\hbox{two}} -one \a -\setbox0 = \lastbox % Removes `two'. -three \box0. -| -\produces -\def\a{two\kern 15pt} -one \a\a\hskip 2\lastkern three\par -% get three times as much space before `three' -\def\a{\hbox{two}} -one \a -\setbox0 = \lastbox % removes `two' -three \box0. -\endexample -\enddesc - -\begindesc -\cts unkern {} -\cts unskip {} -\cts unpenalty {} -\explain -If the last item on the current list is of type \minref{kern}, -\minref{glue}, or \minref{penalty} respectively, these commands remove it -from that list. If the item isn't of the right type, these commands have -no effect. Like ^|\lastbox|, you can't apply them to lists in math mode or to -the main vertical list. -These commands -are most useful after a macro call that is known to have inserted -a specific item that you don't want there. -\TeX\ doesn't provide an ^|\unbox| command because |\lastbox| produces -nearly the same effect. -\enddesc - - -%========================================================================== -\section {Rules and leaders} - -\begindesc -\bix^^{rules} -\bix^^{horizontal rules} -\bix^^{vertical rules} -% -\cts hrule {} -\aux\cts hrule {\bt height \<dimen> width \<dimen> depth \<dimen>} -\cts vrule {} -\aux\cts vrule {{\bt width \<dimen> height \<dimen> depth \<dimen>}} -\explain -The |\hrule| command produces a horizontal rule; the |\vrule| command -produces a vertical rule. You can specify any or all of the width, -height, and depth of the rule---\TeX\ supplies default values for those -that you omit. You can give the dimensions of the rule in any order; -the forms listed above show just two of the possible combinations. You -can even give a dimension of a given kind more than once---if you do, -the last one is the one that counts. - -If you don't specify the width of a horizontal rule, the rule is -extended horizontally to the boundaries of the innermost \minref{box} or -\minref{alignment} that contains the rule. If you don't specify the -height of a horizontal rule, it defaults to |0.4pt|; if you don't -specify the depth of a horizontal rule, it defaults to |0pt|. - -If you don't specify the width of a vertical rule, it defaults to -|0.4pt|. If you don't specify the height or the depth of a vertical -rule, the rule is extended to the boundary of the innermost \minref{box} -or \minref{alignment} that contains the rule. - -\TeX\ treats a horizontal rule as an inherently vertical item -and a vertical rule as an inherently horizontal item. -Thus a horizontal rule is legal only in a \minref{vertical mode}, -while a vertical rule is legal only in a \minref{horizontal mode}. -^^{horizontal mode//rules in} -^^{vertical mode//rules in} -If this seems surprising, visualize it---a horizontal rule runs -from left to right and separates vertical items in a sequence, while -a vertical rule runs up and down and -separates horizontal items in a sequence. - -\example -\hrule\smallskip -\hrule width 2in \smallskip -\hrule width 3in height 2pt \smallskip -\hrule width 3in depth 2pt -| -\produces -\medskip -\hrule\smallskip -\hrule width 2in \smallskip -\hrule width 3in height 2pt \smallskip -\hrule width 3in depth 2pt -\nextexample -% Here you can see how the baseline relates to the -% height and depth of an \hrule. -\leftline{ - \vbox{\hrule width .6in height 5pt depth 0pt} - \vbox{\hrule width .6in height 0pt depth 8pt} - \vbox{\hrule width .6in height 5pt depth 8pt} - \vbox{\hbox{ baseline}\kern 3pt \hrule width .6in} -} -| -\produces -\medskip -\leftline{ - \vbox{\hrule width .6in height 5pt depth 0pt} - \vbox{\hrule width .6in height 0pt depth 8pt} - \vbox{\hrule width .6in height 5pt depth 8pt} - \vbox{\hbox{ baseline}\kern 3pt \hrule width .6in} -} -\nextexample -\hbox{( {\vrule} {\vrule width 8pt} )} -\hbox {( {\vrule height 13pt depth 0pt} - {\vrule height 13pt depth 7pt} x)} -% the parentheses define the height and depth of each of the -% two preceding boxes; the `x' sits on the baseline -| -\produces -\medskip -\hbox{( {\vrule} {\vrule width 8pt} )} -\hbox {( {\vrule height 13pt depth 0pt} - {\vrule height 13pt depth 7pt} x)} -\endexample - -\eix^^{rules} -\eix^^{horizontal rules} -\eix^^{vertical rules} -\enddesc - -\begindesc -\bix^^{leaders} -\easy\cts leaders {\<box or rule> \<skip command>} -\cts cleaders {\<box or rule> \<skip command>} -\cts xleaders {\<box or rule> \<skip command>} -\explain -These commands produce \minref{leaders}, i.e., they fill a -horizontal or vertical space with -copies of a pattern \seeconcept{leaders}. -The \<box> or \<rule> specifies a leader, -i.e., a single copy of the pattern, -while the \<skip command> specifies a -window to be filled with a -row or a column of the leaders. -The pattern is repeated as many times as will fit into the window. -If \<skip command> is a horizontal skip, the window -contains a row of leaders and \TeX\ must be in a horizontal mode; -if \<skip command> is a vertical skip, the window -contains a column of leaders and \TeX\ must be in a vertical mode. - -The commands differ in how they arrange the repeated pattern in the space -and where they put any leftover space: - -\ulist\compact -\li For |\leaders|, \TeX\ aligns a row of leaders with the left end of -the innermost \minref{box} $B$ that is to contain the result of the -|\leaders| command. -It aligns a column of leaders with the top of $B$. -Those leaders that fall entirely within the window are retained. -Any leftover space at the top and bottom of the window is left empty. -\li For |\cleaders|, the leaders are centered within the window. -\li For |\xleaders| the pattern is uniformly distributed throughout the window. -If the leftover space is $l$ and the leader is repeated $n$ times, -\TeX\ puts space of width or height $l/(n+1)$ between adjacent leaders and -at the two ends (left and right or top and bottom) of the leaders. -\endulist - -\example -\def\pattern{\hbox to 15pt{\hfil.\hfil}} -\line{Down the Rabbit-Hole {\leaders\pattern\hfil} 1} -\line{The Pool of Tears {\leaders\pattern\hfil} 9} -\line{A Caucus-Race and a Long Tale {\cleaders\pattern - \hfil} 19} -\line{Pig and Pepper {\xleaders\pattern\hfil} 27} -| -\produces -\def\pattern{\hbox to 15pt{\hfil.\hfil}}\par -\line{Down the Rabbit-Hole {\leaders\pattern\hfil} 1} -\line{The Pool of Tears {\leaders\pattern\hfil} 9} -\line{A Caucus-Race and a Long Tale {\cleaders\pattern - \hfil} 19} -\line{Pig and Pepper {\xleaders\pattern\hfil} 27} -\nextexample -\def\bulletfill{\vbox to 3ex{\vfil\hbox{$\bullet$}\vfil}}% -\def\mybox{\vbox to 1in} -\def\myrule{\hrule width 4pt}\hsize=2in -\hrule \line{% - \mybox{\myrule depth 8pt \leaders\bulletfill\vfill} - \hfil - \mybox{\myrule depth 15pt \leaders\bulletfill\vfill} - \hfil - \mybox{\myrule depth 18pt \cleaders\bulletfill\vfill} - \hfil - \mybox{\myrule depth 12pt \xleaders\bulletfill\vfill}% -}\hrule -| -\produces -\medskip -\def\bulletfill{\vbox to 3ex{\vfil\hbox{$\bullet$}\vfil}}% -\def\mybox{\vbox to 1in}\def\myrule{\hrule width 4pt}\hsize=2in -\hrule \line{% - \mybox{\myrule depth 8pt \leaders\bulletfill\vfill} - \hfil - \mybox{\myrule depth 15pt \leaders\bulletfill\vfill} - \hfil - \mybox{\myrule depth 18pt \cleaders\bulletfill\vfill} - \hfil - \mybox{\myrule depth 12pt \xleaders\bulletfill\vfill}% -}\hrule -\endexample\enddesc - -\begindesc -\cts dotfill {} -\cts hrulefill {} -\explain -^^{fill} -These commands respectively fill the enclosing horizontal space with -a row of dots on the baseline and with -a horizontal line on the baseline. -It's usually a good idea to leave a space between -|\dotfill| or |\hrulefill| -and any text that precedes or follows it (see the example below). -\example -\hbox to 3in{Start {\dotfill} Finish} -\hbox to 3in{Swedish {\hrulefill} Finnish} -| -\produces -\par\hbox to 3in{Start {\dotfill} Finish} -\hbox to 3in{Swedish {\hrulefill} Finnish} -\endexample\enddesc - -\begindesc -\cts leftarrowfill {} -\cts rightarrowfill {} -\explain -^^{fill} -These commands fill the enclosing horizontal space with -left-pointing or right-pointing ^{arrows}. -\example -\hbox to 3in{\vrule \rightarrowfill \ 3 in - \leftarrowfill\vrule} -| -\produces -\medskip -\hbox to 3in{\vrule \rightarrowfill \ 3 in - \leftarrowfill\vrule} -\endexample - -\eix^^{leaders} -\enddesc - -%========================================================================== -\section {Alignments} - -%========================================================================== -\subsection {Tabbing alignments} - -\begindesc -\bix^^{tabbing alignments} -\bix^^{alignments//commands for} -% -\ctspecial + {{\bt \<text>\thinspace\&\thinspace\<text>% - \thinspace\& $\cdots$ \\cr}} -\ctsxrdef{@plus} -\cts tabalign {} -\explain -These commands begin a single line in a tabbed \minref{alignment}. -The only difference between |\+| and |\tabalign| is that -|\+| is an outer macro---you can't use it when \TeX\ is reading tokens at -high speed \seeconcept{outer}. - -If you place an `|&|' at a position -to the right of all existing tabs in a tabbing alignment, -the `|&|' establishes a new tab at that position. -\example -\cleartabs % Nullify any previous \settabs. -\+ {\bf if }$a[i] < a[i+1]$ &{\bf then}&\cr -\+&&$a[i] := a[i+1]$;\cr -\+&&{\it found }$:=$ {\bf true};\cr -\+&{\bf else}\cr -\+&&{\it found }$:=$ {\bf false};\cr -\+&{\bf end if};\cr -| -\produces -\cleartabs % Nullify any previous \settabs. -\+ {\bf if }$a[i] < a[i+1]$ &{\bf then}&\cr -\+&&$a[i] := a[i+1]$;\cr -\+&&{\it found }$:=$ {\bf true};\cr -\+&{\bf else}\cr -\+&&{\it found }$:=$ {\bf false};\cr -\+&{\bf end if};\cr -\endexample -\enddesc - -\begindesc -\cts settabs {\<number> {\bt \\columns}} -\aux\cts settabs {{\bt \\+} \<sample line> {\bt \\cr}} -\explain -The first form of -this command defines a set of tab stops ^^{tabs} -for a tabbing \minref{alignment}. -It tells \TeX\ to set the tab stops so as to divide each line into -\<number> equal parts. \TeX\ takes the length of a line to be -|\hsize|, as usual. You can make the alignment narrower by decreasing -|\hsize|. -\margin{paragraph ``The tab settings $\ldots$'' moved to below.} -\example -{\hsize = 3in \settabs 3 \columns -\+$1$&one&first\cr -\+$2$&two&second\cr -\+$3$&three&third\cr} -| -\produces -{\hsize = 3in \settabs 3 \columns -\+$1$ & one & first\cr -\+$2$ & two & second\cr -\+$3$ & three & third\cr} - -\noindent\doruler{\8\8\8}3{in} -\smallskip -\endexample - -The second form of this command defines tab stops by setting the tab stops -at the positions indicated by the `|&|'s in the sample line. -The sample line itself does not appear in the output. When you -use this form you'll usually want to put material into the sample line that is -somewhat wider than the widest corresponding material in the alignment, -in order to produce space between the columns. -That's what we've done in the -example below. The material following the last tab -stop is irrelevant, since \TeX\ does not need to position -anything at the place where the |\cr|~appears. - -The tab settings established by |\settabs| remain in effect until -you issue a new |\settabs| command or end a group containing -the |\settabs| command. -This is true for both forms of the command. - -\example -% The first line establishes the template. -\settabs \+$1$\qquad & three\quad & seventh\cr -\+$1$&one&first\cr -\+$2$&two&second\cr -\+$3$&three&third\cr -| -\produces -\settabs \+$1$\qquad & three\quad & seventh\cr % the sample line -\+$1$&one&first\cr -\+$2$&two&second\cr -\+$3$&three&third\cr -\smallskip -\endexample -\enddesc - -\begindesc - -\cts cleartabs {} -\explain -This command clears all the tabs to the right of the current column. -Its main use is in applications such as typesetting computer programs -in which the tab positions change from line to line. -\enddesc - -\see |\cr|, |\endline|, |\crcr| (\xref \endline). -\eix^^{tabbing alignments} - -%========================================================================== -\subsection {General alignments} - -\begindesc -\cts halign {{\bt \rqbraces{\<preamble> \\cr \<row> \\cr $\ldots$ \<row> \\cr}}} - \xrdef{@and}\xrdef{@pound} -\aux\cts halign {{\bt to \<dimen>% - \rqbraces{\<preamble> \\cr \<row> \\cr $\ldots$ \<row> \\cr}}} -\aux\cts halign {{\bt spread \<dimen>% - \rqbraces{\<preamble> \\cr \<row> \\cr $\ldots$ \<row> \\cr}}} -\explain -This command produces a horizontal \minref{alignment} consisting of a -sequence of rows, where each row in turn contains a sequence of column -entries. \TeX\ adjusts the widths of the column entries to accommodate -the widest one in each column. - -A horizontal alignment can only appear when \TeX\ is in a vertical -\minref{mode}. We recommend that you first study alignments in general -(\xref{alignment}) before you attempt to use this command. - -An alignment consists of a ^{preamble} -followed by the text to be aligned. The preamble, -which describes the layout of the rows that follow, consists of a -sequence of column templates, separated by `|&|' and ended -by |\cr|. -\bix^^{template} -\bix^^{entry (column or row)} -Each row consists of a sequence of column -entries, also separated by `|&|' and ended by |\cr|. Within -a template, `|#|' indicates where \TeX\ should insert the -corresponding text of a column entry. -In contrast, |\settabs| uses a fixed implicit template of `|#|', -i.e., it just inserts the text as is. - -\TeX\ typesets each column entry in restricted horizontal mode, -i.e., as the contents of an \minref{hbox}, -and implicitly encloses it in a group. - -The |to| form of this command instructs \TeX\ -to make the width of the alignment be \<dimen>, -adjusting the space between columns as necessary. -The |spread| form of this command instructs \TeX\ -to make the alignment wider by \<dimen> than its natural width. -These forms are like the corresponding forms of |\hbox| \ctsref\hbox. - -See |\tabskip| \ctsref\tabskip{} for an example using the -|to| form. - -\example -\tabskip = 1em \halign{% - \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr - United States&Washington&dollar&1.00\cr - France&Paris&franc&0.174\cr - Israel&Jerusalem&shekel&0.507\cr - Japan&Tokyo¥&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{\<preamble>\\cr \<column>\\cr $\ldots$ - \<column>\\cr}}} -\aux\cts valign {{\bt to \<dimen>% - \rqbraces{\<preamble>\\cr \<column>\\cr $\ldots$ \<column>\\cr}}} -\aux\cts valign {{\bt spread \<dimen>% - \rqbraces{\<preamble>\\cr \<column>\\cr $\ldots$ \<column>\\cr}}} -\par} -\explain -This command produces a vertical \minref{alignment} -consisting of -a sequence of columns, where each column in turn contains a sequence -of row entries. -\TeX\ adjusts the heights of the row entries to accommodate the tallest one -in each row. - -A vertical alignment -can only appear when \TeX\ is in a horizontal \minref{mode}. -Because vertical alignments are (a)~conceptually somewhat difficult and -(b)~not often used, we recommend that you learn about -alignments in general -(\xref{alignment}) and the |\halign| command (see above) before -you attempt to use the |\valign| command. - -An alignment consists of a ^{preamble} -followed by the text to be aligned. The preamble, -which describes the layout of the columns that follow, -consists of a -sequence of row templates, separated by `|&|' and ended -by |\cr|. -\bix^^{template} -Each column consists of a sequence of ^{row} -entries, also separated by `|&|' and ended by |\cr|. Within -a template, `|#|' indicates where \TeX\ should insert the -corresponding text of a row entry. - -\TeX\ typesets each row entry in internal vertical -mode, i.e., as the contents of a \minref{vbox}, -and implicitly encloses the entry in a group. -It always gives the vbox zero depth. -Any text or other horizontal mode material in a row entry then puts \TeX\ -into ordinary horizontal mode. -(This is just an application of the general rules for \TeX's behavior -in internal vertical mode.) -The usual paragraphing parameters apply in this case: -the row entry has an initial -indentation of |\parindent| (\xref\parindent) and -its lines have the -|\leftskip| and |\rightskip| (\xref\leftskip) \minref{glue} -appended to~them. - -Note in particular that a row entry containing text has -a width of |\hsize| (\xref\hsize). Unless you reset -|\hsize| to the row width that you want, you're likely to -encounter overfull \minref{hbox}es, or find that -the first column takes up the width of the entire page, or both. -\eix^^{entry (column or row)} - -Normally, you need to include a \minref{strut} -^^{struts//in vertical alignments} -in each -template so that the rows don't come out crooked as a result -of the varying heights of the entries in the alignment. You -can produce a strut with the |\strut| command. - -The |to| form of this command instructs \TeX\ -to make the vertical extent of the alignment be \<dimen>, -adjusting the space between rows as necessary. -The |spread| form of this command instructs \TeX\ -to make the alignment taller by \<dimen> than its natural height. -These forms are like the corresponding forms of |\vbox| \ctsref\vbox. - -\example -{\hsize=1in \parindent=0pt -\valign{#\strut&#\strut&#\strut&#\strut\cr - bernaise&curry&hoisin&hollandaise\cr - ketchup&marinara&mayonnaise&mustard\cr - rarebit&tartar\cr}} -| -\produces -{\hsize=1in \parindent=0pt \leftskip=0pt -\valign{#\strut&#\strut&#\strut&#\strut\cr - bernaise&curry&hoisin&hollandaise\cr - ketchup&marinara&mayonnaise&mustard\cr - rarebit&tartar\cr}} -\nextexample -% same thing but without struts (shows why you need them) -{\hsize=1in \parindent=0pt -\valign{#&#&#&#\cr - bernaise&curry&hoisin&hollandaise\cr - ketchup&marinara&mayonnaise&mustard\cr - rarebit&tartar\cr}} -| -\produces -{\hsize=1in \parindent=0pt \leftskip=0pt -\valign{#&#&#&#\cr - bernaise&curry&hoisin&hollandaise\cr - ketchup&marinara&mayonnaise&mustard\cr - rarebit&tartar\cr}} -\endexample -\enddesc - -\begindesc -\cts ialign {} -\explain -This command behaves just like ^|\halign|, -except that it first sets the |\tabskip| glue to zero and -sets |\everycr| empty. -\enddesc - -\begindesc -\cts cr {} -\explain -This command ends the preamble of a horizontal or vertical -alignment, a row of a horizontal or tabbing alignment, -or a column of a vertical alignment. -You can cause \TeX\ to take certain actions whenever it sees a |\cr| -by setting the value of the ^|\everycr| parameter \ctsref\everycr. -\enddesc - -\begindesc -\cts endline {} -\explain -This command is a synonym for the ^|\cr| command. It is useful when -you've redefined |\cr| but still need access to the original definition. -\enddesc - -\begindesc -\cts crcr {} -\explain -This command behaves just like ^|\cr|, except that \TeX\ ignores it if -it comes immediately after a |\cr| or a ^|\noalign|. -Its main application is as a safety measure to avoid a misleading error -message caused by a \minref{macro} that expects an argument ending in |\cr|. -If you put |\crcr| after the `|#|$n$' that denotes such an argument -in the macro's definition, the -macro will work properly whether or not the argument ends with |\cr|. -\enddesc - -\begindesc -\cts omit {} -\explain -This command tells \TeX\ to ignore a template in a horizontal or vertical -\minref{alignment} while processing a particular column or row entry -respectively. -|\omit| must appear as the first item in a column or row entry; in effect, -it overrides the template from the preamble with the simple -template `|#|'. - - -\example -\tabskip = 2em\halign{% - \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr - United States&Washington&dollar&1.00\cr - \omit \dotfill France\dotfill&Paris&franc&0.174\cr - Israel&Jerusalem&shekel&0.507\cr - Japan&Tokyo¥&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 {\<number>} -\explain -This command tells \TeX\ that the following -\<number> columns in a row of a horizontal alignment, -or -\<number> rows in a column of a vertical alignment, -should be combined into a single column or row (as with -|\span|) and that their templates should be omitted (as with |\omit|). - -\example -\tabskip = 13pt\halign{% - \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr - United States&Washington&dollar&1.00\cr - France&Paris&franc&0.174\cr - Israel&Jerusalem & - \multispan 2 \hfil\it(no information)\hfil \cr - Japan&Tokyo¥&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{\<vertical mode material>}} -\aux\cts noalign {\rqbraces{\<horizontal mode material>}} -\explain -This command inserts -\<vertical mode material> -after the current row of a horizontal \minref{alignment} or -\<horizontal mode material> after the current column of a vertical -\minref{alignment}. -The material can be text, glue, a rule, or anything else. - -The most common use of |\noalign| -is to put extra space after a row or column. -If you want to put extra space after \emph{every\/} row of a horizontal -alignment, use ^|\openup| (\xref\openup). - -\example -\halign{% - \hfil\it#\hfil\tabskip=2em&\hfil#\hfil&#& - \hfil\$#\tabskip=0em\cr - % The \tabskip changes prevent the rule below - % from sticking out. - United States&Washington&dollar&1.00\cr - France&Paris&franc&0.174\cr - \noalign{\smallskip\hrule\smallskip} - Israel&Jerusalem&shekel&0.507\cr - Japan&Tokyo¥&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 \<token list> whenever it executes -a |\cr|---at the end of every preamble, -at the end of every row of a horizontal alignment, -and at the end of every column of a vertical alignment. -The |\everycr| commands are expanded just after the |\cr|. -Thus you can cause \TeX\ to -execute certain commands at the end of a preamble, row, or column by -assigning a list of those commands to |\everycr|. - -The |\everycr| tokens shouldn't include any commands other than |\no!-align|. -That's because -the |\everycr| tokens will reappear after the last -|\cr| of the alignment. A command other than -|\noalign| will then make \TeX\ think that it's starting a new -row or column. -\TeX\ will complain about a missing |\cr|, insert -a |\cr|, insert the |\everycr| tokens again, and repeat these actions -indefinitely. -\example -\everycr={\noalign{\smallskip\hrule\smallskip}} -\halign{#\tabskip = 11pt&\hfil#\hfil&\hfil#\hfil - \tabskip = 0pt\cr - $1$&one&first\cr - $2$&two&second\cr - $3$&three&third\cr} -| -\produces -\medskip -\everycr={\noalign{\smallskip\hrule\smallskip}} -\halign{#\tabskip = 11pt&\hfil#\hfil&\hfil#\hfil - \tabskip = 0pt\cr - $1$&one&first\cr - $2$&two&second\cr - $3$&three&third\cr} -\endexample - -\eix^^{alignments//commands for} -\enddesc - -\enddescriptions - - -\endchapter -\byebye diff --git a/Master/texmf-doc/doc/english/impatient/pages.tex b/Master/texmf-doc/doc/english/impatient/pages.tex deleted file mode 100644 index 230802e9b5f..00000000000 --- a/Master/texmf-doc/doc/english/impatient/pages.tex +++ /dev/null @@ -1,1153 +0,0 @@ -% This is part of the book TeX for the Impatient. -% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. -% See file fdl.tex for copying conditions. - -\input macros -\chapter {Commands for \linebreak composing pages} - -\chapterdef{pages} - -This section covers commands that deal with -pages, their components, and the output routine. -For an explanation of the conventions used in this section, -see \headcit{Descriptions of the commands}{cmddesc}. - -\begindescriptions - -%========================================================================== -\section {Interline and interparagraph spaces} - -\begindesc -\cts baselineskip {\param{glue}} -\cts lineskiplimit {\param{dimen}} -\cts lineskip {\param{glue}} -\explain -^^{line spacing} -\bix^^{interline glue} -\bix^^|\baselineskip| -\bix^^|\lineskip| -\bix^^|\lineskiplimit| -These three parameters jointly determine how much space \TeX\ leaves between -consecutive \minref{box}es of an ordinary \minref{vertical list}, -e.g., the lines of a paragraph. -This space is called ``\minref{interline glue}''. -It is also inserted between the component boxes of a vbox constructed in -internal vertical mode. -^^{vboxes//interline glue for} - -In the usual case, when the boxes aren't abnormally high or deep, \TeX\ -makes the distance from the baseline of one box to the baseline of the -next one equal to |\baselineskip|. It does this by inserting interline -glue equal to |\baselineskip| minus the depth of the upper box (as given -by ^|\prevdepth|) and the height of the lower box. But if this -interline glue would be less than |\lineskiplimit|, indicating that the -two boxes are too close together, \TeX\ inserts the |\lineskip| glue -instead.\footnote -{\TeX\ actually accounts for the beginning of a -vertical list by setting |\prevdepth| to $-1000$\pt\ and testing -|\prevdepth| before \emph{every} box. If |\prevdepth|$\>\le-1000$\pt\ -it does not insert any interline glue.} See \knuth{pages~79--80} for a -precise description. - -Note that |\baselineskip| and |\lineskip| measure \emph{different -things}: the distance between baselines on the one hand and the distance -between the bottom of one box and the top of the next box on the other -hand. See \knuth{page~78} for further details. The first example below -shows the effects of |\lineskiplimit|. - -You can obtain the effect of ^{double spacing} by doubling the value -of |\baselineskip| as illustrated in the second example below. -A change to |\baselineskip| at any point before the end of a paragraph affects -the entire paragraph. - -\example -\baselineskip = 11pt \lineskiplimit = 1pt -\lineskip = 2pt plus .5pt -Sometimes you'll need to typeset a paragraph that has -tall material, such as a mathematical formula, embedded -within it. An example of such a formula is $n \choose k$. -Note the extra space above and below this line as -compared with the other lines. -(If the formula didn't project below the line, -we'd only get extra space above the line.) -| -\produces -\baselineskip = 11pt \lineskiplimit = 1pt -\lineskip = 2pt plus .5pt -Sometimes you'll need to typeset a paragraph that has -tall material, such as a mathematical formula, embedded -within it. An example of such a formula is $n \choose k$. -Note the extra space above and below this line as -compared with the other lines. -(If the formula didn't project below the line, -we'd only get extra space above the line.) -\endexample - -\example -\baselineskip = 2\baselineskip % Start double spacing. -| -\endexample - -\eix^^{interline glue} -\eix^^|\baselineskip| -\eix^^|\lineskip| -\eix^^|\lineskiplimit| -\enddesc - -\begindesc -\cts prevdepth {\param{dimen}} -\explain -When \TeX\ adds a box to a vertical list, it sets |\prevdepth| to the -depth of that box. \TeX\ sets |\prevdepth| to $-1000$\pt\ at the start -of a vertical list, indicating that the usual interline glue should be -suppressed. -\enddesc - -\begindesc -\cts normalbaselineskip {\param{glue}} -\cts normallineskiplimit {\param{dimen}} -\cts normallineskip {\param{glue}} -\cts normalbaselines {} -\explain -The three parameters contain values for |\base!-line!-skip|, -|\line!-skip|, and |\line!-skip!-limit| respectively. -^^|\baselineskip| ^^|\lineskip| ^^|\lineskiplimit| -The |\normalbaselines| command sets |\base!-line!-skip|, -|\line!-skip|, and |\line!-skip!-limit| to the values contained in the -three parameters. -\enddesc - -\begindesc -\cts offinterlineskip {} -\explain -This command tells \TeX\ to stop inserting interline glue from -now on. Unless you want it to be in effect for the rest of the document -(which you probably don't), you should enclose it in a group -together with the text you want it to affect. -Its main purpose is to let you do interline spacing yourself, -e.g., using ^{struts}, -without interference from \TeX's normal interline glue. -|\offinterlineskip| is often useful when -you're constructing a horizontal \minref{alignment}. -^^{alignments//using \b\tt\\offinterlineskip\e\ in} -\example -\def\entry#1:#2 {\strut\quad#1\quad&\quad#2\quad\cr} -\offinterlineskip \tabskip = 0pt \halign{% -\vrule\quad\hfil#\hfil\quad\vrule& - \quad\hfil#\hfil\quad\vrule\cr -\noalign{\hrule} -\vphantom{\vrule height 2pt}&\cr \noalign{\hrule} -\entry \it Opera:\it Composer -\vphantom{\vrule height 2pt}&\cr \noalign{\hrule} -\vphantom{\vrule height 2pt}&\cr -\entry Fidelio:Beethoven -\entry Peter Grimes:Britten -\entry Don Giovanni:Mozart -\vphantom{\vrule height 2pt}&\cr \noalign{\hrule}} -| -\produces -\medskip -\def\entry#1:#2 {\strut\quad#1\quad&\quad#2\quad\cr} -\offinterlineskip \tabskip = 0pt \halign{% -\vrule\quad\hfil#\hfil\quad\vrule& - \quad\hfil#\hfil\quad\vrule\cr -\noalign{\hrule} -\vphantom{\vrule height 2pt}&\cr \noalign{\hrule} -\entry \it Opera:\it Composer -\vphantom{\vrule height 2pt}&\cr \noalign{\hrule} -\vphantom{\vrule height 2pt}&\cr -\entry Fidelio:Beethoven -\entry Peter Grimes:Britten -\entry Don Giovanni:Mozart -\vphantom{\vrule height 2pt}&\cr \noalign{\hrule}} -\endexample -\enddesc - -\begindesc -\cts nointerlineskip {} -\explain -This command tells \TeX\ not to insert interline glue in front of the -next line. -It has no effect on subsequent lines. -\enddesc - -\begindesc -\cts openup {\<dimen>} -\explain -This command increases ^|\baselineskip| by \<dimen>. -An |\openup| command before the end of a paragraph affects -the entire paragraph, so you shouldn't use |\openup| to -change |\baseline!-skip| within a paragraph. |\openup| is -most useful for typesetting tables and math displays---a -little extra space between rows often makes them more readable. -^^{alignments//space between rows of} -\example -Alice picked up the White King very gently, and lifted him -across more slowly than she had lifted the Queen; but before -she put him on the table, she thought she might well dust -him a little, he was so covered with ashes. -\openup .5\baselineskip % 1.5 linespacing. -| -\produces -Alice picked up the White King very gently, and lifted him -across more slowly than she had lifted the Queen; but before -she put him on the table, she thought she might well dust -him a little, he was so covered with ashes. -\openup .5\baselineskip %1.5 linespacing -\endexample\enddesc - -%========================================================================== -\section {Page breaks} - -%========================================================================== -\subsection {Encouraging or discouraging page breaks} - -\begindesc -\bix^^{page breaks} -\bix^^{page breaks//encouraging or discouraging} -\ctspecial break {} \xrdef{vbreak} -\explain -% -\margin{Four commands identical to ones for line breaks (\xref{hbreak}) -have been added to correct an omission. The descriptions are exactly parallel.} -% -This command forces a page break. -Unless you do something to fill out the page, you're likely to -get an underfull vbox. -|\break| can also be used in horizontal mode. -\enddesc - -\begindesc -\ctspecial nobreak {} \xrdef{vnobreak} -\explain -This command prevents a page break where it -otherwise might occur. -|\nobreak| can also be used in horizontal mode. -\enddesc - -\begindesc -\ctspecial allowbreak {} \xrdef{vallowbreak} -\explain -This command tells \TeX\ to -allow a page break where one could not ordinarily occur. -|\allowbreak| can also be used in horizontal mode. -\enddesc - -\begindesc -\ctspecial penalty {\<number>} \xrdef{vpenalty} -\explain -This command produces a \minref{penalty} item. -The penalty item makes \TeX\ more or less willing to break a page -at the point where that item occurs. -A negative penalty, i.e., a bonus, encourages a page break; -a positive penalty discourages a page break. -A penalty of $10000$ or more prevents a break altogether, -while a penalty of $-10000$ or less forces a break. -|\penalty| can also be used in horizontal mode. -\example -\def\break{\penalty-10000 } % as in plain TeX -\def\nobreak{\penalty10000 } % as in plain TeX -\def\allowbreak{\penalty0 } % as in plain TeX -| -\endexample -\enddesc - -\begindesc -\cts goodbreak {} -\explain -This command ends a paragraph and also indicates to \TeX\ that -this is a good place to break the page. -\enddesc - -\begindesc -\cts smallbreak {} -\cts medbreak {} -\cts bigbreak {} -\explain -These commands indicate increasingly desirable places for \TeX\ to -break a page. They also cause \TeX\ to -insert a ^|\smallskip|, ^|\medskip|, or -^|\bigskip| (\xref \smallskip) if the page break doesn't actually -happen. \TeX\ suppresses this skip if it occurs just after an -equal or larger skip. -\enddesc - -\begindesc -\easy\cts eject {} -\cts supereject {} -\explain -These commands force a page break at the current position -and end the current paragraph. -If you don't precede them with |\vfil| (\xref \vfil), -^^|\vfil//needed with {\tt\\eject}| -\TeX\ will try to stretch out the page contents -(and will probably complain about an underfull vbox). -The |\supereject| command, in addition, -instructs the \plainTeX\ output routine to -force out any leftover insertions, -^^{insertions//forced out by \b\tt\\supereject\e} -such as long footnotes, -so that they are produced before any more input -is processed. Thus |\supereject| is a good command to use at the end of each -chapter or other major unit of your document. -\enddesc - -\begindesc -\cts filbreak {} -\explain -This command provides a kind of conditional page break. -It tells \TeX\ to -break the page---but not if the text up to a later |\filbreak| also -fits on the same page. -By enclosing a paragraph in a pair of |\filbreak|s, -you can ensure that \TeX\ will keep a paragraph on a single page if it can. -You should not use |\filbreak| within a paragraph, since it -forces \TeX\ into vertical mode and thus ends the paragraph. -See \xrefpg{filbreak} for more advice on this subject. -\enddesc - -\begindesc -\cts raggedbottom {} -\cts normalbottom {} -\explain -Normally \TeX\ tries hard to ensure that all pages have the same depth, -i.e., that their bottom margins are equal. -The |\raggedbottom| command tells \TeX\ to -allow some variability among the bottom margins on different pages. -It's often appropriate to use |\raggedbottom| when you have material that -contains large blocks of material that should not be split across pages. -The |\normalbottom| command cancels the effect of |\raggedbottom|. - -\eix^^{page breaks//encouraging or discouraging} -\enddesc - -%========================================================================== -\subsection {Page breaking parameters} - -\bix^^{page breaks//parameters for} -\begindesc -\cts interlinepenalty {\param{number}} -\explain -This parameter specifies the \minref{penalty} for -breaking a page between the lines of a paragraph. -By setting it to $10000$ you can force all page breaks to occur -between paragraphs, provided that the pages have enough stretch so -that \TeX\ can still compose them decently. -\PlainTeX\ leaves |\inter!-linepenalty| at~$0$. -\enddesc - -\begindesc -\cts clubpenalty {\param{number}} -\explain -^^{club line} -This parameter specifies the \minref{penalty} for -breaking a page just after the first line of a paragraph. -A line by itself at the bottom of a page is called a ``club line''. -\PlainTeX\ sets |\clubpenalty| to $150$. -\enddesc - -\begindesc -\cts widowpenalty {\param{number}} -\explain -^^{widow line} -This parameter specifies the \minref{penalty} for -breaking a page just before the last line of a paragraph. -A line by itself at the top of a page is called a ``widow line''. -\PlainTeX\ sets |\widowpenalty| to $150$. -\enddesc - -\begindesc -\cts displaywidowpenalty {\param{number}} -\explain -^^{widow line}^^{math display} -This parameter specifies the \minref{penalty} for -breaking a page just before the last line of a partial paragraph -that immediately precedes a math display. -\PlainTeX\ sets |\displaywidowpenalty| to $50$. - -\enddesc - -\begindesc -\cts predisplaypenalty {\param{number}} -\explain -^^{math display} -This parameter specifies the \minref{penalty} for -breaking a page just before a math display. -\PlainTeX\ sets |\predisplaypenalty| to $10000$. -\enddesc - -\begindesc -\cts postdisplaypenalty {\param{number}} -\explain -^^{math display} -This parameter specifies the \minref{penalty} for -breaking a page just after a math display. -\PlainTeX\ leaves |\postdisplaypenalty| at $0$. -\enddesc - -\begindesc -\cts brokenpenalty {\param{number}} -\explain -This parameter specifies the \minref{penalty} for -breaking a page just after a line that ends in -a discretionary item (usually a hyphen). -^^{hyphenation} -|\brokenpenalty| applies to page breaking, while -^|\hyphenpenalty| \ctsref{\hyphenpenalty} applies to line breaking. -\PlainTeX\ sets |\brokenpenalty| to $100$. -\enddesc - -\begindesc -\cts insertpenalties {\param{number}} -\explain -\bix^^{insertions//penalties for} -\bix^^{floating material} -This parameter contains the sum of certain penalties \minrefs{penalty} -that \TeX\ accumulates as it is placing insertions onto the -current page. -These penalties are incurred when \TeX\ is processing an |\insert| -command -and discovers that a previous insertion of the same kind on this page has -been split, leaving part of it for subsequent pages. -See \knuth{pages~123--125} for the details of this -calculation. - -\margin{Material moved from a footnote to the main text.} -|\insertpenalties| has an entirely different meaning during an -^^{output routine//meaning of \b\tt\\insertpenalties\e\ in} -output routine---it's the number of insertions that have been seen -but that don't fit on the current page (see \knuth{page~125}). -\enddesc - -\begindesc -\cts floatingpenalty {\param{number}} -\explain -This parameter specifies the \minref{penalty} that -\TeX\ adds to |\insertpenalties| -^^|\insertpenalties| -when the page builder is adding an insertion to the current page -and discovers that a previous insertion of the same kind on this page has -been split, leaving part of it for subsequent pages. -\PlainTeX\ leaves |\floatingpenalty| at~$0$. -\eix^^{insertions//penalties for} -\eix^^{floating material} - -\enddesc - -\begindesc -\cts pagegoal {\param{dimen}} -\explain -This parameter specifies the -desired height for the current page. -\TeX\ sets -|\pagegoal| to the current value of |\vsize| -when it first puts a box or an insertion on the current page. -You can shorten a page while \TeX\ is working on it by -changing the value of |\pagegoal|---even if the new value is -less than the height of the material already on that page. -\TeX\ will just put the extra material on the next page. -But remember---|\pagegoal| is reset to |\vsize| again when \TeX\ -starts the next page. -\enddesc - -\begindesc -\cts pagetotal {\param{dimen}} -\explain -This parameter specifies the -accumulated natural height of the current page. -\TeX\ updates |\pagetotal| as it adds -items to the main \minref{vertical list}. - - -\enddesc - -\begindesc -\cts pagedepth {\param{dimen}} -\explain -This parameter specifies the depth of the current page. -\TeX\ updates |\pagedepth| as it adds -items to the main \minref{vertical list}. -\enddesc - -\begindesc -\cts pageshrink {\param{dimen}} -\explain -This parameter specifies the amount of \minref{shrink} -in the accumulated \minref{glue} on the current page. -\TeX\ updates |\pageshrink| as it adds -items to the main \minref{vertical list}. -\enddesc - -\begindesc -\cts pagestretch {\param{dimen}} -\cts pagefilstretch {\param{dimen}} -\cts pagefillstretch {\param{dimen}} -\cts pagefilllstretch {\param{dimen}} -\explain -These four parameters together specify the amount of \minref{stretch} -in the \minref{glue} on the current page. The amount of stretch has -the form -{\def\f#1{\hbox{\tt fi#1}}% -$n_0 + n_1\f{l} + n_2\f{ll} + n_3\f{lll}$}, with the four parameters -giving the values of the four $n_i$. -\TeX\ updates these parameters as it adds -items to the main \minref{vertical list}. - -\eix^^{page breaks//parameters for} -\eix^^{page breaks} -\enddesc - -%========================================================================== -\section{Page layout} - -\subsection {Page description parameters} - -\begindesc -\bix^^{page dimensions} -\margin{This command was also described in the `Paragraphs' section. -The combined description now appears there.} -\aux\cts hsize {\param{dimen}} -\explain -This parameter specifies the current line length. -See \xrefpg{\hsize} for a more complete explanation. -\enddesc - -\begindesc -\cts vsize {\param{dimen}} -\explain -This parameter specifies the current vertical extent of a page. -\TeX\ examines it only when it is starting a page. Thus if you change -|\vsize| in the -middle of a page, your change won't affect anything until the following page. -If you want to change the vertical extent of a page when -you're in the middle of it, you should assign the new -height to ^|\pagegoal| (\xref \pagegoal) instead. (If you -want the change to affect the following pages too, you should -change \emph{both} |\vsize| and |\pagegoal|.) -\PlainTeX\ sets |\vsize| to |8.9in|. -\eix^^{page dimensions} -\enddesc - -\begindesc -\cts hoffset {\param{dimen}} -\cts voffset {\param{dimen}} -\margin{These commands were moved up from later in the subsection.} -^^{page origin} -\idxsee{origin}{page origin} -\explain -\TeX\ normally takes the ``origin'' of a page, that is, the point where -it starts printing, as being one inch down from the top of the page and one -inch to the right of the left end of the page.\footnote{ -\TeX\ itself is indifferent to where the origin of the page is, -but this information has to be built into the device drivers -^^{device drivers//page origin known to} -that convert \dvifile s into printable form so that different devices -will yield the same results.} -The values of |\hoffset| and -|\voffset| give the horizontal and vertical offset of the actual origin -from this point. Thus if |\hoffset| and |\voffset| are both -zero, \TeX\ uses its normal origin. -\example -\hoffset = -.3in - % Start printing .7 inches from left edge of paper. -\voffset = 1in - % Start printing 2 inches from top edge of paper. -| -\endexample -\enddesc - -\begindesc -\cts topskip {\param{glue}} -\explain -\TeX\ inserts glue at the top of each -page in order to ensure that the baseline of the first box on the page -always is the same distance $d$ from the top of the page. -|\topskip| determines the amount of that glue, -called the ``|\topskip| glue'', by specifying -what $d$ should be (provided that the first box -on the page isn't too tall). -$d$ is given by the natural size of the |\topskip| glue. -If the height of the first box on the page exceeds $d$, -so that the glue would be negative, \TeX\ simply inserts no -|\topskip| glue at all on that page. - -To understand better the effect of these rules, assume that |\topskip| -has no stretch or shrink and that the first item on the page is indeed a box. -Then if the height of that box is no greater than |\topskip|, -its baseline will be |\topskip| -from the top of the page independently of its height. On the other hand, -if the height of the box is $e$ greater than |\topskip|, its baseline will be -|\topskip|\tplus$e$ from the top of the page. -See \knuth{pages~113--114} for the remaining details of how -|\topskip| works. -\PlainTeX\ sets |\topskip| to |10pt|. -\enddesc - - -\begindesc -\cts parskip {\param{glue}} -\explain -This parameter specifies the ``^{paragraph skip}'', i.e., the -vertical glue that \TeX\ inserts at the start of a paragraph. -^^{paragraphs//glue between} -See |\par| (\xref{\@par}) for more information about what happens -when \TeX\ starts a paragraph. -\PlainTeX\ sets |\parskip| to |0pt plus 0.1pt|. -\enddesc - -\begindesc -\cts maxdepth {\param{dimen}} -\explain -This parameter specifies the maximum depth of the bottom \minref{box} on -a page. It is related to |\boxmaxdepth| (\xref \boxmaxdepth). If the -depth of the bottom box on a page exceeds |\maxdepth|, \TeX\ moves the -box's reference point down so that it's -|\maxdepth| from the bottom of that box. -Without this adjustment, the bottom box on -a page could extend well into the bottom margin or even off -the page entirely. \PlainTeX\ sets |\maxdepth| to |4pt|. -\enddesc - -%========================================================================== -\subsection{Page numbers} - -\begindesc -\bix^^{page numbering} -\cts pageno {\param{number}} -\explain -This parameter contains the current page number as an integer. The page -number is normally negative for front-matter pages that are numbered -with small roman numerals instead of arabic numerals. If you change the -page number within a page, -the changed number will be used in any headers or footers that -appear on that page. -The actual -printing of page numbers is handled by \TeX's \minref{output routine}, -which you can modify. - -\PlainTeX\ keeps the page number in the \minref{register} ^|\count0|. -(|\pageno| is, in fact, a synonym for |\count0|.) -Whenever it ships out a page to the \dvifile, -^^|\shipout//{\tt\\count} registers displayed at| -\TeX\ displays the current value of |\count0| on your -terminal so that you can tell which page it is working on. -It's possible to use registers |\count1|--|\count9| for nested -levels of page numbers (you must program this yourself). -If any of these registers are nonzero, \TeX\ displays them on your -terminal also.\footnote{ -More precisely, it displays all registers in sequence from -|\count0| to |\count9|, but omits trailing zero registers. -For instance, if the values of |\count0|--|\count3| -are $(17, 0 , 0, 7)$ and the others are $0$, -\TeX\ displays the page number as {\tt [17.0.0.7]}.} -\example -This explanation appears on page \number\pageno\ -of our book. -| -\produces -This explanation appears on page \number\pageno\ -of our book. - -\nextexample -\pageno = 30 % Number the next page as 30. -Don't look for this explanation on page \number\pageno. -| -\produces -Don't look for this explanation on page 30. -\endexample -\enddesc - -\begindesc -\cts advancepageno {} -\explain -This command adds $1$ to the page number -$n$ in |\pageno| if $n\ge0$ -and subtracts $1$ from it if $n<0$. -\enddesc - -\begindesc -\easy\cts nopagenumbers {} -\explain -By default, \plainTeX\ produces a footer containing a centered page number. -This command tells \TeX\ to produce a blank footer instead. -\enddesc - -\begindesc -\cts folio {} -\explain -This command produces the current page number, whose value is the number -$n$ contained in ^|\pageno|. -If $n\ge0$, -\TeX\ produces $n$ as a decimal number, -while if $n<0$, -\TeX\ produces $-n$ in lowercase roman numerals. -\example -This explanation appears on page \folio\ of the book. -| -\produces -This explanation appears on page \folio\ of the book. -\endexample - -\eix^^{page numbering} -\enddesc - - -%========================================================================== -\subsection{Header and footer lines} - -\begindesc\secondprinting{\vglue-.75\baselineskip\vskip0pt} -\cts headline {\param{token list}} -\cts footline {\param{token list}} -\explain -These parameters -contain, respectively, the current headline (header) and the current -footline (footer). -The \plainTeX\ output routine -places the headline at the top of each page and the footline -at the bottom of each page. -The default headline is empty and the default footline is a centered -page number. - -The headline and footline should both -be as wide as |\hsize| (use |\hfil|, \xref{\hfil}, for this -if necessary). -You should always include a font-setting command in these lines, since -the current font is unpredictable when \TeX\ is calling the -output routine. If you don't set the font explicitly, -you'll get whatever font \TeX\ was using when it broke the page. - -You shouldn't try to use |\headline| or |\footline| -to produce multiline headers or footers. -Although \TeX\ won't complain, it will give you something that's very ugly. -See \xrefpg{bighead} for a method of creating multiline headers or -footers. -\example -\headline = {\tenrm My First Reader\hfil Page \folio} -| -\produces -\pageno = 10 -\line{\tenrm \noindent My First Reader\hfil Page \folio} -\par ({\it at the top of page \folio}\/) -\nextexample -\footline = {\tenit\ifodd\pageno\hfil\folio - \else\folio\hfil\fi} -% Produce the page number in ten-point italic at -% the outside bottom corner of each page. -| -\endexample\enddesc - -\secondprinting{\vfill\eject} - - -%========================================================================== -\subsection {Marks} - -\begindesc -\cts mark {\rqbraces{\<text>}} -\explain -\bix^^{marks} -This command causes \TeX\ to append a mark -containing \<mark text> -to whatever list it is currently constructing. -Generally you shouldn't use |\mark| within an -``inner'' construct such as a math formula or a \minref{box} -you've built with an |\hbox|, |\vbox|, or |\vtop| command, because -\TeX\ won't see the mark when it's constructing the main box of the page. But -if you use |\mark| in ordinary horizontal \minref{mode} -or directly in an hbox that's part of the main vertical list, -the mark migrates out -to the main \minref{vertical list}. -See \knuth{pages~259--260} for examples showing how |\mark| can be used. -\enddesc - -\begindesc -\cts firstmark {} -\cts botmark {} -\cts topmark {} -\explain -These commands expand to the mark text in an item generated by an earlier -^|\mark| command. -The mark text has the form of a token list. -\TeX\ sets the values of these commands when it -finishes placing the contents of a page into ^|\box255|, -just before calling the \minref{output routine} -as part of its \minref{page break}ing actions. \TeX\ determines -these values as follows: -\ulist\compact -\li |\firstmark| contains the tokens of the first mark on the page. -\li |\botmark| contains the tokens of the last mark on the page. -\li |\topmark| contains the tokens of the mark that is in effect at -the very top of the page. -That mark is the last mark -that \emph{preceded} the page, -i.e., the |\botmark| of the previous page. -It is empty if no marks preceded the page. -\endulist -\noindent -If a page has no marks on it, \TeX\ will set |\firstmark| and |\botmark| to -the same mark as |\topmark|, i.e., the most recent preceding mark. -The table at the bottom of \knuth{page~258} illustrates the relation among -|\firstmark|, |\botmark|, and |\topmark|. -\enddesc - -\begindesc -\cts splitfirstmark {} -\cts splitbotmark {} -\explain -^^{marks//for split lists} -These commands expand to the ^{mark text} generated by an earlier -^|\mark| command that produced an item in the item list of a vbox $V$. -The mark text has the form of a token list. -When \TeX\ -splits $V$ in response to a ^|\vsplit| command (\xref \vsplit), -it sets the values of these commands as follows: -\ulist\compact -\li |\splitfirstmark| contains the tokens of the first mark in -the item list of $V$. -\li |\splitbotmark| contains the tokens of the last mark in -the item list of $V$. -\endulist -These commands produce no tokens if there was no preceding |\vsplit|, -or if the most recent preceding |\vsplit| didn't contain any marks. -\eix^^{marks} -\enddesc - -%========================================================================== -\section {Insertions} - -\subsection {Footnotes} - -\begindesc -\easy\cts footnote {\<argument$_1$> \<argument$_2$>} -\cts vfootnote {\<argument$_1$> \<argument$_2$>} -\explain -These commands produce footnotes. -\<argument$_1$> is the ``^{reference mark}'' -for the footnote and \<argument$_2$> is its text. -The text can be several paragraphs long if necessary and can contain -constructs such as math displays, but it shouldn't contain any -\minref{insertion}s (such as other footnotes). - -You shouldn't use these commands inside a subformula of a math formula, -in a box within a box being contributed to a page, -or in an insertion of any kind. -If you're unsure whether these restrictions apply, you can be safe by -only using |\footnote| and |\vfootnote| directly within a paragraph or -between paragraphs. - -These restrictions aren't as severe as they seem because you can use -|\vfootnote| to footnote most anything. -Both |\foot!-note| and |\vfoot!-note| insert the reference mark in front of the -footnote itself, but |\vfoot!-note| doesn't insert the reference mark into the -text. -Thus, when you use |\vfoot!-note| you can -explicitly insert the reference mark -wherever it belongs without concern about the context -and place the |\vfootnote| in the next paragraph. -If you find that the footnote lands on -the page following the one where it belongs, move the |\vfootnote| back -to the previous paragraph. -There are rare circumstances where you'll need to -alter the text of your document in order to get a footnote to appear on -the same page as its reference mark. -\example -To quote the mathematician P\'olya is a ploy.\footnote -*{This is an example of an anagram, but not a strict one.} -| -\produces -To quote the mathematician P\'olya is a ploy.* -\par\line{\hskip .5in \vdots\hfil} -\nointerlineskip \bigskip -\footnoterule\par\parindent = 12pt -\textindent{*}This is -an example of an anagram, but not a strict one. -\endexample -\example -$$f(t)=\sigma\sigma t\;\raise 1ex \hbox{\dag}$$ -\vfootnote \dag{The $\sigma\sigma$ notation was explained in -the previous section.} -| -\produces -$$f(t)=\sigma\sigma t\>\raise 1ex \hbox{\dag}$$ -\par\line{\hskip .5in \vdots\hfil} -\nointerlineskip \bigskip -\footnoterule\par\parindent = 12pt -\textindent{\dag}{The $\sigma\sigma$ notation was explained in -the previous section.} -\endexample -\enddesc - -%========================================================================== -\subsection {General insertions} - -\begindesc -\bix^^{insertions//commands for} -\cts topinsert {\<vertical mode material> {\bt \\endinsert}} -\cts midinsert {\<vertical mode material> {\bt \\endinsert}} -\cts pageinsert {\<vertical mode material> {\bt \\endinsert}} -\explain -These commands produce different forms of insertions that -instruct -(or allow) \TeX\ to relocate the \<vertical mode material>: -\ulist -\li |\topinsert| attempts to put the material at the top of the current page. -If it won't fit there, |\topinsert| -will move the material to the next available top of page. -\li |\midinsert| attempts to put the material at the current position. -If it won't fit there, |\midinsert| -will move the material to the next available top of page. -\li |\pageinsert| puts the material by itself on the next page. -To avoid an underfull page, be sure to end the inserted material with -|\vfil| or fill out the excess space some other way. -% Knuth doesn't say this, but I tried an experiment that verified it. -% Nor does he say explicitly that an insertion does a \par. -\endulist -\noindent -The \<vertical mode material> -is said to be ``floating'' ^^{floating material} because \TeX\ -can move it from one place to another. -Insertions are very useful for material such as figures and tables because -you can position such material where you want it without knowing where the -page breaks will fall. - -Each of these commands implicitly ends the current paragraph, so -you should use them only between paragraphs. -You should not use them within a box or within another insertion. -If you have several insertions competing for -the same space, \TeX\ will retain their relative order. -\example -\pageinsert -% This text will appear on the following page, by itself. -This page is reserved for a picture of the Queen of Hearts -sharing a plate of oysters with the Walrus and -the Carpenter. -\endinsert -| -\endexample -\enddesc - -\begindesc -\cts endinsert {} -\explain -This command ends an insertion started by -|\topinsert|, |\midinsert|, or |\pageinsert|. -\enddesc - -\begindesc -\cts insert {\<number> \rqbraces{\<vertical mode material>}} -\explain -\minrefs{insertion} -This primitive command provides the -underlying mechanism for constructing insertions, but -it is hardly ever used outside of a \minref{macro} definition. -The definitions of the -|\foot!-note|, |\vfoot!-note|, -|\top!-insert|, |\mid!-insert|, and |\page!-insert| commands are -all built around |\insert|. -^^|\topinsert| -^^|\midinsert| ^^|\pageinsert| ^^|\footnote| ^^|\vfootnote| - -When you design insertions for a document, you should assign a different -integer code\footnote -{\texbook{} uses the term ``class'' for a code. -We use a different term to avoid confusion with the other meaning of -``class'' (\xref{class}).} -$n$ to each kind of insertion, -using the ^|\newinsert| command (\xref{\@newinsert}) to obtain the -integer codes. -The |\insert| command itself appends the \<vertical mode material> -to the current horizontal or \minref{vertical list}. -Your \minref{output routine} is responsible for -moving the inserted material from where it resides in |\box|$\,n$ -to an output page. -^^{output routine} - -\TeX\ groups together all insertions having the same code -number. Each insertion -code $n$ has four \minref{register}s associated with it: -\ulist -\li |\box|$\,n$ is where \TeX\ accumulates the material for insertions -with code $n$. When \TeX\ breaks a page, it puts into |\box|$\,n$ -as much insertion $n$ material as will fit on the page. -Your output routine should then move this material to the actual page. -You can use ^|\ifvoid| \ctsref{\@ifvoid} -to test if there is any material in |\box|$\,n$. -If not all the material fits, \TeX\ saves the leftovers for the next page. -\li |\count|$\,n$ is a magnification factor $f.$ When \TeX\ is computing -the vertical space occupied on the page -by insertion $n$ material, it multiplies the -vertical extent of this material by $f/1000$. -Thus you would ordinarily set $f$ to $500$ for a double-column insertion -and to $0$ for a marginal~note. -\li |\dimen|$\,n$ specifies the maximum amount -of insertion $n$ material that \TeX\ will put on a single page. -\li |\skip|$\,n$ specifies extra space that \TeX\ allocates on the page -if the page contains any insertion $n$ material. -This space is in addition to the space occupied by the insertion itself. -For example, it would account for the space on a page above the footnotes -(if there are~any). -\endulist -\noindent -\TeX\ sets |\box|$\,n$, and you should set the other three registers -so that \TeX\ can correctly compute the vertical space required by the -insertion. -See \knuth{pages~122--125} for further details of how \TeX\ processes this -command and of how insertions interact with page breaking. -\xrdef{endofinsert} -\enddesc - -\see |\floatingpenalty| (\xref \floatingpenalty). -\eix^^{insertions//commands for} - - -%========================================================================== -\section{Modifying the output routine} - -\bix^^{output routine} -\begindesc -\cts output {\param{token list}} -\explain -This parameter contains the current \minref{output routine}, i.e., -the token list that \TeX\ expands when it finds a page break. -\TeX\ puts the page into ^|\box255|, so |\output| is responsible -for doing something with |\box255|---either shipping it out or -putting it somewhere else. -The output routine is also responsible for attaching things such as -headers and footers. -\enddesc - -\begindesc -\cts plainoutput {} -\explain -This command invokes \plainTeX's output routine. -^^{output routine//default in \plainTeX} -\PlainTeX\ defines ^|\output| as -a token list containing the single token |\plainoutput|. -\enddesc - -\begindesc -\cts shipout {\<box>} -\explain -This command instructs \TeX\ to send \<box> to the \dvifile. -^^{\dvifile//receives boxes from \b\tt\\shipout\e} -\TeX\ expands any |\write| command in \<box> as part of |\shipout|. -^^|\write//expanded during {\tt\\shipout}| -The principal use of |\shipout| is in the output routine, but you can -use it anywhere. -\enddesc - -\begindesc -\cts deadcycles {\param{number}} -\explain -This parameter contains the number of times that \TeX\ has initiated -the \minref{output routine} since the last time it did a -^^|\shipout| |\ship!-out|.\footnote{ -More precisely, \TeX\ sets |\dead!-cyles| to $0$ whenever it executes -|\ship!-out| -and increments it by $1$ whenever it executes |\output|.} -If |\deadcycles| gets too big, you've probably gotten -\TeX\ into a loop, e.g., one where the page builder is trying the same page -break over and over again. -\enddesc - -\begindesc -\cts maxdeadcycles {\param{number}} -\explain -If the value of |\deadcycles| exceeds the value of |\maxdeadcycles|, -\TeX\ assumes that the output routine has gotten into a loop. -\TeX\ then complains and runs its own simple output routine, -equivalent to |\shipout!allowbreak\box255|, -that is likely to break the loop. -\PlainTeX\ sets |\maxdeadcycles| \hbox{to $25$}. -\enddesc - -\begindesc -\cts outputpenalty {\param{number}} -\explain -\TeX\ sets this parameter when it breaks a page. If the breakpoint was at a -\minref{penalty} item, \TeX\ removes the penalty item and -sets |\outputpenalty| to the penalty value at -the breakpoint; otherwise it sets |\outputpenalty| \hbox{to $0$}. - -Suppose that you are undoing a page break -in order to break the page at a different place than the one that \TeX\ -has just chosen. In order to reconstruct the page, you need to recreate -the penalty at \TeX's chosen breakpoint. -You can accomplish this with the command -|\penalty!allowbreak\outputpenalty|. -\enddesc - -\begindesc -\cts holdinginserts {\param{number}} -\explain -If this parameter is greater than $0$ when \TeX\ -is processing a page break, \TeX\ will refrain from processing insertions. -Setting this parameter to $1$ -can be useful when you're writing an output routine -that needs to reprocess the contents of the page, e.g., -an output routine that uses a value of |\vsize| (\xref \vsize) different from -the one used by the page builder. - -\eix^^{output routine} -\enddesc - -%========================================================================== -\section {Splitting vertical lists} - -\begindesc -\cts vsplit {\<number> {\bt to} \<dimen>} -\explain -This command causes \TeX\ to split the \minref{box} numbered -\<number>, which we'll call $B_2$, into two parts. -It uses the same algorithm that it would use if $B_2$ was a page -and it was breaking that page; -the division point then corresponds to the page break that it would find. -The box $B_2$ must be a vbox, not an hbox. -% we avoid starting the previous sentence with a symbol, a copyediting no-no. -\TeX\ puts the material preceding the division point into -another box $B_1$ and leaves the material after the division point in $B_2$. -The |\vsplit| command then produces $B_1$. -Normally you'd assign $B_1$ to a different -box register, as in the example below. -If the division point is at the end of $B_2$, -$B_2$ will be empty after the |\vsplit|. - -\TeX\ employs its usual page-breaking algorithm -^^{page breaks//in split lists} -for the split. -It uses \<dimen> for ^|\pagegoal|, the desired height of $B_1$. -The vertical extent of $B_1$ may not be exactly -\<dimen> because \TeX\ may not be able to achieve its page goal perfectly. -\TeX\ does not consider insertions in calculating the split, -so insertions in the original vertical list of $B_2$ will be retained -but won't affect the split point. - -\example -\setbox 20 = \vsplit 30 to 7in -% Split off the first seven inches or so of material from -% box 30 and place that material in box 20. -| -\endexample -\enddesc - -\begindesc -\cts splitmaxdepth {\param{dimen}} -\explain -This parameter specifies the -maximum allowable depth of a box resulting from a |\vsplit|. -|\splitmaxdepth| plays the -same role that ^|\maxdepth| (\xref \maxdepth) plays for a page. -\enddesc - -\begindesc -\cts splittopskip {\param{glue}} -\explain -This parameter specifies the glue that \TeX\ inserts at the top of -a box resulting from a |\vsplit|. -|\splittopskip| plays the -same role that ^|\topskip| (\xref \topskip) plays for a page. -\enddesc - -\see |\splitbotmark|, |\splitfirstmark| (\xref \splitfirstmark). - -\enddescriptions \endchapter \byebye diff --git a/Master/texmf-doc/doc/english/impatient/paras.tex b/Master/texmf-doc/doc/english/impatient/paras.tex deleted file mode 100644 index 81501f57721..00000000000 --- a/Master/texmf-doc/doc/english/impatient/paras.tex +++ /dev/null @@ -1,2166 +0,0 @@ -% This is part of the book TeX for the Impatient. -% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. -% See file fdl.tex for copying conditions. - -\input macros -\chapter {Commands \linebreak for composing \linebreak paragraphs} - -\chapterdef{paras} - -This section covers commands that -deal with characters, words, lines, and entire paragraphs. -For an explanation of the conventions used in this section, -see \headcit{Descriptions of the commands}{cmddesc}. - -\begindescriptions - -\section {Characters and accents} - -%========================================================================== -\subsection {Letters and ligatures for European alphabets} - -\begindesc -\xrdef{fornlets} -\bix^^{ligatures} -^^{special symbols} -^^{European alphabets} -% -\ctsx AA {Scandinavian letter \AA} -\ctsx aa {Scandinavian letter \aa} -\ctsx AE {\AE\ ligature} -\ctsx ae {\ae\ ligature} -\ctsx L {Polish letter \L} -\ctsx l {Polish letter \l} -\ctsx O {Danish/Norwegian letter \O} -\ctsx o {Danish/Norwegian letter \o} -\ctsx OE {\OE\ ligature} -\ctsx oe {\oe\ ligature} -\ctsx ss {German letter \ss} -\explain -These commands produce various letters and ligatures from European -alphabets. -They are useful for occasional words and phrases in these -languages---but if you need to typeset a large amount of text in a European -language, you should probably be using a version of \TeX\ adapted -to that language.\footnote{The \TeX\ Users Group (\xref{resources}) can -provide you with information about European language versions of \TeX.} - -You'll need a space after these commands when you use them within a word, -so that -\TeX\ will treat the following letters as part of the word -rather than as part of the command. -You needn't be in \minref{math mode} to use these commands. -\example -{\it les \oe vres de Moli\`ere} -| -\produces -{\it les \oe vres de Moli\`ere} -\endexample -\eix^^{ligatures} -\enddesc - -%========================================================================== -\subsection {Special symbols} - -\begindesc -^^{special characters} -% -\easy\ctspecialx # \ctsxrdef{@pound} {pound sign \#} -\ctspecialx $ \ctsxrdef{@bucks} {dollar sign \$} -\ctspecialx % \ctsxrdef{@percent} {percent sign \%} -\ctspecialx & \ctsxrdef{@and} {ampersand \&} -\ctspecialx _ \ctsxrdef{@underscore} {underscore \_} -\ctsx lq {left quote \lq} -\ctsx rq {right quote \rq} -\aux\ctsx lbrack left bracket [ -\aux\ctsx rbrack right bracket ] -\ctsx dag {dagger symbol \dag} -\ctsx ddag {double dagger symbol \ddag} -\ctsx copyright {copyright symbol \copyright} -\ctsx P {paragraph symbol \P} -\ctsx S {section symbol \S} -\explain -These commands produce various special characters and marks. The first -five commands are necessary because \TeX\ by default -attaches special meanings to -the characters (|#|, |$|, |%|, |&|, |_|). -You needn't be in \minref{math mode} to use these commands. - -You can use the dollar sign in the Computer Modern -italic fonts to get the ^{pound -sterling} symbol, as shown in the example below. - -\example -\dag It'll only cost you \$9.98 over here, but in England -it's {\it \$}24.98. -| -\produces -\dag It'll only cost you \$9.98 over here, but in England -it's {\it \$}24.98. -\endexample -\enddesc - -\begindesc -\cts TeX {} -\explain -This command produces the \TeX\ logo. Remember to follow it by -|\!vs| or to enclose it in a \minref{group} when you want a space -after it. - -\example -A book about \TeX\ is in your hands. -| -\produces -A book about \TeX\ is in your hands. -\endexample -\enddesc - -\begindesc -\cts dots {} -\explain -^^{dots} -This command produces an ^{ellipsis}, i.e., three dots, in ordinary text. -It's intended for use in mathematical writing; for an ellipsis -between ordinary words, you should use |$\ldots$| \ctsref{\ldots} instead. -Since |\dots| includes its own space, you shouldn't follow it by -|\!vs|. -\example -The sequence $x_1$, $x_2$, \dots, $x_\infty$ -does not terminate. -| -\produces -The sequence $x_1$, $x_2$, \dots, $x_\infty$ -does not terminate. -\endexample -\enddesc - -\see ``Miscellaneous ordinary math symbols'' (\xref{specsyms}). -%========================================================================== -\subsection {Arbitrary characters} - -\begindesc -\bix^^{characters} -\cts char {\<charcode>} -\explain -This command produces the character located at position \<charcode> -of the current font. -\example -{\char65} {\char `A} {\char `\A} -| -\produces -{\char65} {\char `A} {\char `\A} -\endexample -\enddesc - -\begindesc -\cts mathchar {\<mathcode>} -\explain -This command produces the math character whose class, family, and -font position are given by \<mathcode>. -It is only legal in math mode. -\example -\def\digger{\mathchar "027F} % Like \spadesuit in plain TeX. -% Class 0, family 2, font position "7F. -$\digger$ -| -\produces -\def\digger{\mathchar "027F} -% class 0, family 2, font position "7F -$\digger$ -\endexample -\enddesc - -\see |\delimiter| (\xref\delimiter). -\eix^^{characters} - -%========================================================================== -\subsection {Accents} - -\begindesc -^^{accents} -\xrdef{accents} -% -\ctspecialx ' \ctsxrdef{@prime} {^{acute accent} as in \'e} -\ctspecialx . \ctsxrdef{@dot} {^{dot accent} as in \.n} -\ctspecialx = \ctsxrdef{@equal} {^{macron accent} as in \=r} -\ctspecialx ^ \ctsxrdef{@hat} {^{circumflex accent} as in \^o} -\ctspecialx ` \ctsxrdef{@lquote} {^{grave accent} as in \`e} -\ctspecialx " \ctsxrdef{@quote} {^{umlaut accent} as in \"o} -\ctspecialx ~ \ctsxrdef{@not} {^{tilde accent} as in \~a} -\ctsx c {^{cedilla accent} as in \c c} -\ctsx d {^{underdot accent} as in \d r} -\ctsx H {^{Hungarian umlaut accent} as in \H o} -\ctsx t {^{tie-after accent} as in \t uu} -\ctsx u {^{breve accent} as in \u r} -\ctsx v {^{check accent} as in \v o} -\explain -These commands produce accent marks in ordinary text. You'll usually -need to leave a space after the ones denoted by a single letter -(see ``Spaces'', \xref{spaces}). - -\example -Add a soup\c con of \'elan to my pin\~a colada. -| -\produces -Add a soup\c con of \'elan to my pin\~a colada. -\endexample - -\margin{`see also' moved to end of group, replacing the one there.} -\enddesc - -\begindesc -\cts i {} -\cts j {} -\explain -These commands produce dotless versions of the letters `i' and `j'. -You should use them instead of the ordinary `i' and `j' when you are putting -an accent above those letters in ordinary text. -^^{dotless letters} -Use the ^|\imath| and ^|\jmath| commands (\xref\imath) -for dotless `i's and `j's in math formulas. -\example -long `i' as in l\=\i fe \quad \v\j -| -\produces -long `i' as in l\=\i fe \quad \v\j -\endexample -\enddesc - -\begindesc -\cts accent {\<charcode>} -\explain -^^{accents} -This command puts an accent over the character following this command. -The accent is the character at position \<charcode> in the current font. -\TeX\ assumes that the accent has been designed to fit over a character -$1$\thinspace ex high in the same font as the accent. If the -character to be accented -is taller or shorter, \TeX\ adjusts the position accordingly. You can -change \minref{font}s between the accent and the next character, thus -drawing the accent character and the character to be accented -from different fonts. If -the accent character isn't really intended to be -an accent, \TeX\ won't complain; it -will just typeset something ridiculous. -\example -l'H\accent94 otel des Invalides -% Position 94 of font cmr10 has a circumflex accent. -| -\produces -l'H\accent94 otel des Invalides -% Position 94 of font cmr10 has a circumflex accent. -\endexample -\see Math accents (\xref{mathaccent}). -\enddesc -%========================================================================== -\subsection {Defeating boundary ligatures} - -\begindesc -\bix^^{ligatures} -\cts noboundary {} -\explain -You can defeat a ligature -or kern that \TeX\ applies to the -first or last character of a word by putting |\noboundary| just before -or just after the word. -Certain fonts intended for languages other than English -contain a special boundary -character that \TeX\ puts at the beginning -and end of each word. -The boundary character occupies no space and is invisible when printed. -It enables \TeX\ to provide different typographical -treatment to characters at the beginning or end of a word, -since -the boundary character can be part of a sequence of -characters to be kerned or replaced by a ligature. -(None of the standard \TeX\ fonts contain this boundary character.) -The effect of |\noboundary| is to delete the -boundary character if it's there, thus preventing \TeX\ -from recognizing the ligature or kern. -\eix^^{ligatures} -\enddesc - -%========================================================================== -\section {Selecting fonts} - -\xrdef{selfont} - -%========================================================================== -\subsection {Particular fonts} - -\begindesc -^^{fonts} -% -\ctsx fivebf {use $5$-point bold font} -\ctsx fivei {use $5$-point math italic font} -\ctsx fiverm {use $5$-point roman font} -\ctsx fivesy {use $5$-point math symbol font} -\ctsx sevenbf {use $7$-point bold font} -\ctsx seveni {use $7$-point math italic font} -\ctsx sevenrm {use $7$-point roman font} -\ctsx sevensy {use $7$-point math symbol font} -\ctsx tenbf {use $10$-point bold text font} -\ctsx tenex {use $10$-point math extension font} -\ctsx teni {use $10$-point math italic font} -\ctsx tenrm {use $10$-point roman text font} -\ctsx tensl {use $10$-point slanted roman font} -\ctsx tensy {use $10$-point math symbol font} -\ctsx tenit {use $10$-point italic font} -\ctsx tentt {use $10$-point typewriter font} -\explain -These commands cause \TeX\ to typeset the following text in the -specified font. Normally you would enclose -one of these font-selecting commands in a -group, together with the text to be set in the selected font. -Outside of a group a font-selecting command is -effective until the end of the document -(unless you override it with another such command). -\example -See how I've reduced my weight---from -120 lbs.\ to {\sevenrm 140 lbs}. -| -\produces -See how I've reduced my weight---from -120 lbs.\ to {\sevenrm 140 lbs}. -\endexample -\enddesc - -\begindesc -\cts nullfont {} -\explain -This command selects a font, built into \TeX, -that has no characters in it. \TeX\ uses it -as a replacement for an undefined font in a family of math fonts. -\enddesc - -%========================================================================== -\subsection {Type styles} - -\xrdef{seltype} -\begindesc -^^{type styles} -\easy\ctsx bf {use boldface type} -\ctsx it {use italic type} -\ctsx rm {use roman type} -\ctsx sl {use slanted type} -\ctsx tt {use typewriter type} -\explain -These commands select a type style without changing the typeface or -the point size.\footnote{ -\TeX\ does not provide predefined commands for changing just the point -size, e.g., |\eightpoint|. -Supporting such commands would require a great number of fonts, -most of which would never be used. -Such commands were, however, used in typesetting \texbook.} -Normally you would enclose -one of these type style commands in a -group, together with the text to be set in the selected font. -Outside of a group a type style command is -effective until the end of the document -(unless you override it with another such command). -\example -The Dormouse was {\it not} amused. -| -\produces -The Dormouse was {\it not} amused. -\endexample -\enddesc - -\see ``Fonts in math formulas'' (\xref{mathfonts}). -%========================================================================== -\section {Uppercase and lowercase} - -\begindesc -\bix^^{case conversion} -\bix^^{uppercase//conversion to} -\bix^^{lowercase//conversion to} -\cts lccode {\<charcode> \tblentry{number}} -\cts uccode {\<charcode> \tblentry{number}} -\explain -The |\lccode| and |\uccode| values for the $256$ possible input -characters specify the correspondence between the lowercase and -uppercase forms of letters. These values are used by the |\lowercase| -and |\uppercase| commands respectively and by \TeX's hyphenation -algorithm. - -\TeX\ initializes the values of |\lccode| and |\uccode| as follows: - -\ulist\compact -\li The |\lccode| of a lowercase letter is the {\ascii} code for that letter. -\li The |\lccode| of an uppercase letter is the {\ascii} code for the -corresponding lowercase letter. -\li The |\uccode| of an uppercase letter is the {\ascii} code for that letter. -\li The |\uccode| of a lowercase letter is the {\ascii} code for the -corresponding uppercase letter. -\li The |\lccode| and |\uccode| of a nonletter are both zero. -\endulist - -Most of the time there's no reason to change these values, -but you might want to change them if you're using a language -that has more letters than English. -\example -\char\uccode`s \char\lccode`a \char\lccode`M -| -\produces -\char\uccode`s \char\lccode`a \char\lccode`M -\endexample -\enddesc - -\begindesc -\cts lowercase {\rqbraces{\<token list>}} -\cts uppercase {\rqbraces{\<token list>}} -\explain ^^{case conversion} -These commands convert the letters in \<token list>, -i.e., those tokens with category code $11$, to their lowercase -and uppercase forms. -The conversion of a letter is defined by its |\lccode| (for lowercase) -or |\uccode| (for uppercase) table value. -Tokens in the list that are not letters are not affected---even if the -tokens are \minref{macro} calls or other commands that expand into letters. -\example -\def\x{Cd} \lowercase{Ab\x} \uppercase{Ab\x} -| -\produces -\def\x{Cd} \lowercase{Ab\x} \uppercase{Ab\x} - -\eix^^{case conversion} -\eix^^{uppercase//conversion to} -\eix^^{lowercase//conversion to} -\endexample -\enddesc - -%========================================================================== -\section {Interword spacing} - -\begindesc -\bix^^{spaces//interword} -\easy\ctsbasic {\\\vs}{} -\blankidxref\ctsxrdef{@space} -\explain -This command explicitly produces an interword -space called a ``^{control space}''. -A control space is useful when a -letter occurs immediately after a control sequence, or in any other -circumstance where you don't want two tokens to be run together in the -output. -The amount of space produced by |\!vs| -is independent of preceding punctuation, i.e., its space factor -(\xref\spacefactor) is $1000$. - -Incidentally, if you want to print the `\vs' ^^{visible space} -character that we've used here to denote a space, you can get it by typing -|{\tt \char `\ }|. - -\example -The Dormouse was a \TeX\ expert, but he never let on. -| -\produces -The Dormouse was a \TeX\ expert, but he never let on. -\endexample -\enddesc - -\begindesc -\cts space {} -\explain -This command is equivalent to an input space character. -It differs from ^|\ | in that its -width \emph{can} be affected by preceding punctuation. -\example -Yes.\space No.\space Maybe.\par -Yes.\!vs!.No.\!vs!.Maybe. - -| -\produces -Yes.\space No.\space Maybe.\par -Yes.\ No.\ Maybe. -\endexample -\enddesc - -\begindesc -\ctsact ^^M \xrdef{@newline} -\explain -This construct produces the ^{end of line} character. -It normally has two effects when \TeX\ encounters it in -your input: -\olist -\li It acts as a command, producing either an input space -(if it comes at the end of a nonblank line) -or a |\par| token (if it comes at the end of a blank line). -^^|\par//from empty line| -\li It ends the input line, causing \TeX\ to ignore the remaining -characters on the line. -\endolist -\noindent -However, |^^M| does \emph{not} end the line when it appears in the -context |`\^^M|, denoting the ASCII code for control-M (the number $13$). -You can change the meaning of |^^M| -by giving it a different \minref{category code}. -See \xrefpg{twocarets} for a more general explanation of the |^^| notation. -\example -Hello.^^MGoodbye. -Goodbye again.\par -The \char `\^^M\ character.\par -% The fl ligature is at position 13 of font cmr10 -\number `\^^M\ is the end of line code.\par -Again, \number `^^M is the end of line code, -isn't it? % 32 is the ASCII code for a space -| -\produces -{\catcode `\^ = 7 % disable indexing use within this display -Hello.^^MGoodbye -Goodbye again.\par -The \char `\^^M\ character.\par -\number `\^^M\ is the end of line code.\par -Again, \number `^^M is the end of line code, -isn't it?} -\endexample -\enddesc - -\begindesc -\easy\ctsact ~ \xrdef{@not} -\explain -The \minref{active character} `|~|', called a ``^{tie}'', -produces a normal interword space -between two words and links those words so that -a line break will not occur between them. -You should use a tie in any context where a line break would be confusing, -e.g., before a middle initial, after an abbreviation such as ``Dr.'', -or after ``Fig.'' in ``Fig.~8''. - -\example -P.D.Q.~Bach (1807--1742), the youngest and most -imitative son of Johann~S. Bach, composed the -{\sl Concerto for Horn and Hardart}. -| -\produces -\margin{The inversion of dates is deliberate---cf. Peter Schickele.} -P.D.Q.~Bach (1807--1742), the youngest and most -imitative son of Johann~S. Bach, composed the -{\sl Concerto for Horn and Hardart}. -\endexample\enddesc - -\begindesc -\easy\ctspecial / \ctsxrdef{@slash} -\explain -Every character in a \TeX\ \minref{font} -has an ``^{italic correction}'' associated with it, although -the italic correction -is normally zero for a character in an unslanted (upright) font. -The italic correction specifies the extra space that's needed -when you're switching from a slanted font (not necessarily -an italic font) to an unslanted font. -The extra -space is needed because a slanted character projects into the -space that follows it, making the space look too small when the -next character is unslanted. -The metrics file for a font includes the italic correction of each -character in the font. -^^{metrics file//italic correction in} - -The |\/| command -produces an ^{italic correction} for the preceding character. -You should insert an italic correction when you're switching from -a slanted font to an unslanted font, -except when the next character is a period or comma. -\example -However, {\it somebody} ate {\it something}: that's clear. - -However, {\it somebody\/} ate {\it something\/}: -that's clear. -| -\produces -However, {\it somebody} ate {\it something}: that's clear. - -However, {\it somebody\/} ate {\it something\/}: -that's clear. -\endexample -\enddesc - -\begindesc -\cts frenchspacing {} -\cts nonfrenchspacing {} -\explain -^^{interword spacing} -\TeX\ normally adjusts the spacing between words to account for -punctuation marks. For example, it inserts extra space at the end of a -sentence and adds some stretch to the \minref{glue} following any -punctuation mark there. The |\frenchspacing| command tells \TeX\ to make -the interword spacing independent of punctuation, while the -|\nonfrenchspacing| command tells \TeX\ to use its normal spacing rules. -If you don't specify -|\frenchspacing|, you'll get \TeX's normal spacing. - -See \xrefpg{periodspacing} for advice on how to control \TeX's treatment -of punctuation at the end of sentences. - -\example -{\frenchspacing An example: two sentences. Right? No.\par} -{An example: two sentences. Right? No. \par}% -| -\produces -{\frenchspacing An example: two sentences. Right? No.\par} -{An example: two sentences. Right? No. \par}% -\endexample - -\enddesc - -\begindesc -\cts obeyspaces {} -\explain -\TeX\ normally condenses a sequence of several spaces to a single space. -|\obeyspaces| instructs \TeX\ to produce a space in the output -for each space in the input. -|\obeyspaces| does not cause spaces at the beginning of a line -to show up, however; for that we recommend the |\obey!-white!-space| -command defined in |eplain.tex| -(\xref{ewhitesp}). -^^|\obeywhitespace| -|\obeyspaces| is often useful when you're typesetting something, -computer input for example, -in a monospaced font (one in which each character takes up the -same amount of space) -and you want to show exactly what each line of input looks like. - -You can use the |\obeylines| command (\xref{\obeylines}) to get \TeX\ -to follow the line boundaries of your input. |\obeylines| is often -used in combination with |\obeyspaces|. -\example -These spaces are closed up -{\obeyspaces but these are not }. -| -\produces -These spaces are closed up -{\obeyspaces but these are not }. -\endexample -\enddesc - -\begindesc -\cts spacefactor {\param{number}} -\cts spaceskip {\param{glue}} -\cts xspaceskip {\param{glue}} -\cts sfcode {\<charcode> \tblentry{number}} -\explain -These primitive \minref{parameter}s affect how much space \TeX\ -puts between two adjacent words, i.e., the ^{interword spacing}. -The normal interword spacing is supplied by the current font. -As \TeX\ is processing a \minref{horizontal list}, it keeps track of the -^{space factor} $f$ in |\spacefactor|. -As it processes each input character $c$, it updates $f$ according to the -value of $f_c$, the space factor code of $c$ (see below). -For most characters, $f_c$ is $1000$ and \TeX\ sets $f$ to $1000$. -(The initial value of $f$ is also $1000$.) -When \TeX\ sees an interword space, it adjusts the size of that space -by multiplying the stretch and shrink of that space by -$f/1000$ and $1000/f$ respectively. -Thus: -\olist\compact -\li If $f=1000$, the interword space keeps its normal value. -\li If $f<1000$, the interword space gets less \minref{stretch} -and more \minref{shrink}. -\li If $f>1000$, the interword space gets more \minref{stretch} -and less \minref{shrink}. -\endolist -% > changed to \ge on the next line after second edition was typeset. -% Correction made by A-W production. -In addition, if $f\ge2000$ the interword space is further increased by the -``extra space'' parameter associated with the current font. - -Each -input character $c$ has an entry in the |\sfcode| (space factor code) -table. -The |\sfcode| table entry is independent of the font. -Usually \TeX\ just sets $f$ to $f_c$ after it processes $c$. -However: -\ulist -\li If $f_c$ is zero, \TeX\ leaves $f$ unchanged. -Thus a character such as `|)|' in \plainTeX, -for which $f_c$ is zero, is essentially transparent to -the interword space calculation. -\li If $f<1000<f_c$, \TeX\ sets $f$ to $1000$ rather than to $f_c$, -i.e., it refuses to raise $f$ very rapidly. -\endulist -The |\sfcode| value for a period is normally $3000$, -which is why \TeX\ usually puts extra space after a period -% > to \ge here, too, as above. -(see the rule above for the case $f\ge2000$). -Noncharacter items in a horizontal list, e.g., vertical rules, -generally act like characters with a space factor of $1000$. - -You can change the space factor explicitly by assigning -a different numerical value to |\spacefactor|. -You can also override the normal -interword spacing by assigning a different numerical -value to |\xspaceskip| or to |\spaceskip|: -\ulist -\li |\xspaceskip| specifies the glue to be used when $f\ge2000$; -in the case where -|\xspaceskip| is zero, the normal rules apply. -\li |\spaceskip| specifies the glue to be used when $f<2000$ or when -\hbox{|\xspaceskip|} is zero; if |\spaceskip| is zero, the normal rules apply. -The stretch and shrink of -the |\spaceskip| glue, like that of the ordinary interword glue, -is modified according to the value of $f$. -\endulist - -See \knuth{page~76} for the precise rules that \TeX\ uses in calculating -interword \minref{glue}, and \knuth{pages~285--287} for the adjustments -made to |\spacefactor| after various items in a horizontal list. -\eix^^{spaces//interword} -\enddesc - -%========================================================================== -\section {Centering and justifying lines} - -\begindesc -\bix^^{centering} -\bix^^{flush left} -\bix^^{flush right} -\bix^^{justification} -\easy\cts centerline {\<argument>} -\cts leftline {\<argument>} -\cts rightline {\<argument>} -\explain -The |\centerline| command produces an \minref{hbox} exactly as wide -as the current line and places \<argument> at the center of the box. -The |\leftline| and |\rightline| commands are analogous; they -place \<argument> at the left end or at the right end of the box. -If you want to apply one of these commands to -several consecutive lines, you must apply -it to each one individually. -See \xrefpg{eplaincenter} for an alternate approach. - -Don't use these commands within a paragraph---if you do, -\TeX\ probably won't be able to break the paragraph into lines and -will complain about an overfull hbox. -\example -\centerline{Grand Central Station} -\leftline{left of Karl Marx} -\rightline{right of Genghis Khan} -| -\produces -\centerline{Grand Central Station} -\leftline{left of Karl Marx} -\rightline{right of Genghis Khan} - -\eix^^{centering} -\eix^^{flush left} -\eix^^{flush right} -\eix^^{justification} - -\endexample -\enddesc - -\begindesc -\easy\cts line {\<argument>} -\explain -This command produces an \minref{hbox} containing \<argument>. -The hbox is exactly as wide as the current line, i.e., it -extends from the right margin to the left margin. -\example -\line{ugly \hfil suburban \hfil sprawl} -% Without \hfil you'd get an `underfull box' from this. -| -\produces -\line{ugly \hfil suburban \hfil sprawl}% -\endexample - -\enddesc - -\begindesc -^^{overlapping text} -\cts llap {\<argument>} -\cts rlap {\<argument>} -\explain -These commands enable you to produce text that overlaps -whatever happens to be to the left or to the right of the current -position. |\llap| backspaces by the width of \<argument> and then -typesets \<argument>. |\rlap| is similar, except that it typesets -\<argument> first and then backspaces. |\llap| and |\rlap| are useful for -placing text outside of the current margins. -Both |\llap| and |\rlap| do their work by creating -a \minref{box} of zero~width. - -You can also use |\llap| or |\rlap| to construct special characters by -^{overprinting}, but don't try it unless you're sure that the characters -you're using have the same width (which is the case for a monospaced -font such as ^|cmtt10|, the Computer Modern $10$-point ^{typewriter font}). -^^{Computer Modern fonts} -\example -\noindent\llap{off left }\line{\vrule $\Leftarrow$ -left margin of examples\hfil right margin of examples -$\Rightarrow$\vrule}\rlap{ off right} -| -\produces -\noindent\llap{off left }\line{\vrule $\Leftarrow$ -left margin of examples\hfil right margin of examples -$\Rightarrow$\vrule}\rlap{ off right} -\endexample - -%\example -%{\tt O\llap{!|}} -%| -%\produces -%{\cm \tt O\llap{\char `|}} -%\endexample - -\nobreak % don't lose the \see -\enddesc - -\see |\hsize| (\xref{\hsize}). - -%========================================================================== -\section {Shaping paragraphs} - -\subsection {Starting, ending, and indenting paragraphs} - -\begindesc -\bix^^{paragraphs//shaping} -\ctspecial par \ctsxrdef{@par} -\explain -This command ends a paragraph and puts \TeX\ into \minref{vertical mode}, -ready to add more items to the page. Since \TeX\ converts a blank line in -your input file into a |\par| \minref{token}, you don't ordinarily need to -type an explicit |\par| in order to end a paragraph. - -An important point is that |\par| doesn't tell -\TeX\ to start a paragraph; it only tells \TeX\ to end a paragraph. -\TeX\ starts a paragraph when it is in ordinary vertical mode (which it -is after a |\par|) and encounters an inherently horizontal item such as -a letter. As part of its ceremony for starting a paragraph, \TeX\ -^^{paragraphs//starting} -inserts an amount of vertical space given by the parameter |\parskip| -(\xref{\parskip}) and indents the paragraph by a horizontal space given -by |\parindent| (\xref{\parindent}). - -You can usually cancel any interparagraph space produced by a |\par| by giving -the command |\vskip -\lastskip|. It can often -be helpful to do this when you're writing a \minref{macro} that is -supposed to work the same way whether or not it is preceded by a blank -line. - -You can get \TeX\ to take some special action at the start of each paragraph -by placing the instructions in ^|\everypar| (\xref\everypar). - -See \knuth{pages~283 and 286} for the precise effect of |\par|. - -\example -\parindent = 2em -``Can you row?'' the Sheep asked, handing Alice a pair of -knitting-needles as she was speaking.\par ``Yes, a little% ----but not on land---and not with needles---'' Alice was -starting to say, when suddenly the needles turned into oars. -| -\produces -\parindent = 2em -``Can you row?'' the Sheep asked, handing Alice a pair of -knitting-needles as she was speaking.\par ``Yes, a little% ----but not on land---and not with needles---'' Alice was -starting to say, when suddenly the needles turned into oars. -\endexample -\enddesc - -\begindesc -\cts endgraf {} -\explain -This command is a synonym for the ^|\par| primitive command. -It is useful when you've redefined ^|\par| but still want access to the -original definition of |\par|. -\enddesc - -\begindesc -\cts parfillskip {\param{glue}} -\explain -^^{paragraphs//glue at end of} -This parameter specifies the horizontal glue that -\TeX\ inserts at the end of a paragraph. -The default value of |\parfillskip| is |0pt plus 1fil|, -which causes the last line of a paragraph to be -filled out with blank space. A value of |0pt| forces -\TeX\ to end the last line of a paragraph at the right margin. -\enddesc - -\bix^^{indentation} -\begindesc -\easy\cts indent {} -\explain -If \TeX\ is in vertical mode, as it is after ending a paragraph, -this command inserts the ^|\parskip| interparagraph glue, -puts \TeX\ into horizontal mode, starts a paragraph, and -indents that paragraph by |\parindent|. -If \TeX\ is already in horizontal mode, this command merely produces -a blank space of width |\parindent|. -Two |\indent|s in a row -produce two indentations. -^^{indentation} - -As the example below shows, an |\indent| at a point where \TeX\ -would start a paragraph anyway is redundant. -When \TeX\ is in vertical mode and sees a letter or some other -inherently horizontal command, it starts a paragraph by -switching to horizontal mode, -doing an |\indent|, and processing the horizontal command. - -\example -\parindent = 2em This is the first in a series of three -paragraphs that show how you can control indentation. Note -that it has the same indentation as the next paragraph.\par -\indent This is the second in a series of three paragraphs. -It has \indent an embedded indentation.\par -\indent\indent This doubly indented paragraph -is the third in the series. -| -\produces -\parindent = 2em This is the first in a series of three -paragraphs that show how you can control indentation. Note -that it has the same indentation as the next paragraph.\par -\indent This is the second in a series of three paragraphs. -It has \indent an embedded indentation.\par -\indent\indent This doubly indented paragraph -is the third in the series. -\endexample -\enddesc - - -\begindesc -\easy\cts noindent {} -\explain -If \TeX\ is in vertical mode, as it is after ending a paragraph, -this command inserts the ^|\parskip| interparagraph glue, -puts \TeX\ into horizontal mode, and starts an unindented paragraph. -It has no effect in horizontal mode, i.e., within a paragraph. -Starting a paragraph with |\noindent| thus cancels -the indentation by |\parindent| -that would normally occur there. -^^{indentation} - -A common use of |\noindent| is to cancel the indentation of -the first line of a -paragraph when the paragraph follows some displayed material. - -\example -\parindent = 1em -Tied round the neck of the bottle was a label with the -words \smallskip \centerline{EAT ME}\smallskip -\noindent beautifully printed on it in large letters. -| -\produces -\parindent = 1em -Tied round the neck of the bottle was a label with the -words \smallskip \centerline{EAT ME}\smallskip -\noindent beautifully printed on it in large letters. -\endexample -\enddesc - -\margin{{\tt\\textindent} moved here from later in the section.} -\begindesc -\cts textindent {\<argument>} -\explain -^^{indentation} -This command tells \TeX\ to start a paragraph and indent it by -|\par!-indent|, -as usual. -\TeX\ then right-justifies \<argument> within the indentation -and -follows it with an en space (half an em). -\PlainTeX\ uses this command to typeset footnotes (\xref\footnote) -^^{footnotes//using \b\tt\\textindent\e\ with} -and items in lists (see |\item|, \xref\item). - -\example -\parindent = 20pt \textindent{\raise 1pt\hbox{$\bullet$}}% -You are allowed to use bullets in \TeX\ even if -you don't join the militia, and many peace-loving -typographers do so. -| -\produces -\parindent = 20pt \textindent{\raise 1pt\hbox{$\bullet$}}% -You are allowed to use bullets in \TeX\ even if -you don't join the militia, and many peace-loving -typographers do so. -\endexample\enddesc - -\begindesc -\cts parindent {\param{dimen}} -\explain -This \minref{parameter} specifies the amount by which -the first line of each paragraph is to be indented. ^^{indentation} -As the example below shows, it's a bad idea to set both |\parindent| -and ^|\parskip| to zero since then the paragraph breaks are -no longer apparent. -\example -\parindent = 2em This paragraph is indented by 2 ems. -\par \parindent=0pt This paragraph is not indented at all. -\par Since we haven't reset the paragraph indentation, -this paragraph isn't indented either. -| -\produces -\parindent = 2em This paragraph is indented by 2 ems. -\par \parindent=0pt This paragraph is not indented at all. -\par Since we haven't reset the paragraph indentation, -this paragraph isn't indented either. -\endexample\enddesc - -\begindesc -\cts everypar {\param{token list}} -\explain -\TeX\ performs the commands in \<token list> whenever it -enters horizontal mode, e.g., when it starts a paragraph. -By default |\everypar| is empty, but you can -take extra actions at the start of every paragraph by putting -the commands for those actions into a token list -% -% This \vglue makes the example overwrite the example, but since we are -% not reprinting this page, it doesn't matter. For reasons I did not -% attempt to track down, a page break happened before the example, -% unlike in the first printing. -% -\secondprinting{\vglue-48pt} -and assigning that token list to |\everypar|. -\example -\everypar = {$\Longrightarrow$\enspace} -Now pay attention!!\par -I said, ``Pay attention!!''.\par -I'll say it again!! Pay attention!! -| -\produces -\everypar = {$\Longrightarrow$\enspace} -Now pay attention!\par -I said, ``Pay attention!''.\par -I'll say it again! Pay attention! -\endexample -\enddesc -\secondprinting{\vfill\eject} - -%========================================================================== -\subsection {Shaping entire paragraphs} - -\begindesc -\margin{This command was also described in the `Pages' chapter. The -description here now combines the two earlier descriptions.} -\bix^^{line breaks//and paragraph shape} -\easy\cts hsize {\param{dimen}} -\explain -This \minref{parameter} specifies the current ^{line length}, -i.e., the usual width of lines in a paragraph -starting at the left margin. -A great many \TeX\ commands, e.g., |\centerline| (\xref{\centerline}) -and |\hrule| (\xref{\hrule}), implicitly use the value of -|\hsize|. By changing |\hsize| within a group -you can change the width of the constructs produced by such commands. - -If you -set |\hsize| within a \minref{vbox} that contains text, the vbox will -have whatever width you've given to |\hsize|. -^^{vboxes//width determined by \b\tt\\hsize\e} - -\PlainTeX\ sets |\hsize| to |6.5in|. - -\example -{\hsize = 3.5in % Set this paragraph 3.5 inches wide. -The hedgehog was engaged in a fight with another hedgehog, -which seemed to Alice an excellent opportunity for -croqueting one of them with the other.\par}% -| -\produces -{\hsize = 3.5in -The hedgehog was engaged in a fight with another hedgehog, -which seemed to Alice an excellent opportunity for croqueting -one of them with the other.\par}% - -\doruler{\8\8\8\tick\1\tick\2\tick\1\tick\3}{3.5}{in} -\nextexample -\leftline{\raggedright\vtop{\hsize = 1.5in -Here is some text that we put into a paragraph that is -an inch and a half wide.}\qquad -\vtop{\hsize = 1.5in Here is some more text that -we put into another paragraph that is an inch and a -half wide.}} -| -\produces -\leftline{\raggedright\vtop{\hsize = 1.5in -Here is some text that we put into a paragraph that is -an inch and a half wide.}\qquad -\vtop{\hsize = 1.5in Here is some more text that -we put into another paragraph that is an inch and a -half wide.}} -\endexample -\enddesc - -\begindesc -\easy\cts narrower {} -\explain -^^{paragraphs//narrow} -This command makes paragraphs narrower, increasing the left and right -margins by |\parindent|, the -current paragraph ^{indentation}. -It achieves this by increasing -both |\leftskip| and |\rightskip| by |\parindent|. -Normally you place |\narrower| at the -beginning of a \minref{group} containing the paragraphs that you want to -make narrower. If you forget to enclose |\narrower| within a group, -you'll find that all the rest of your document will have narrow -paragraphs. - -|\narrower| affects just those paragraphs that end after you invoke it. -If you end a |\narrower| group before you've ended -a paragraph, \TeX\ won't make that paragraph narrower. - -\example -{\parindent = 12pt \narrower\narrower\narrower -This is a short paragraph. Its margins are indented -three times as much as they would be -had we used just one ``narrower'' command.\par} -| -\produces -{\parindent = 12pt \narrower\narrower\narrower -This is a short paragraph. Its margins are indented -three times as much as they would be -had we used just one ``narrower'' command.\par} -\endexample\enddesc - -\begindesc -\cts leftskip {\param{glue}} -\cts rightskip {\param{glue}} -\explain -These parameters tell \TeX\ how much glue to place -at the left and at the right end of each line of the current -paragraph. We'll just explain how |\leftskip| works since |\rightskip| -is analogous. - -^^{indentation} You can increase the left margin by setting |\leftskip| -to a fixed nonzero \minref{dimension}. If you give |\leftskip| some -stretch, you can produce ^{ragged left} text, i.e., -text that has an uneven left margin. - -Ordinarily, you should enclose any \minref{assignment} to |\leftskip| -in a \minref{group} together with the affected text -in order to keep its effect from continuing to -the end of your document. However, it's pointless to change -|\leftskip|'s value inside a group that is in turn -contained within a paragraph---the value of |\leftskip| at the -\emph{end} of a paragraph -is what determines how \TeX\ breaks the paragraph into lines. \minrefs{line -break} - -\example -{\leftskip = 1in The White Rabbit trotted slowly back -again, looking anxiously about as it went, as if it had -lost something. {\leftskip = 10in % has no effect -It muttered to itself, ``The Duchess!! The Duchess!! She'll -get me executed as sure as ferrets are ferrets!!''}\par}% -| -\produces -{\leftskip = 1in The White Rabbit trotted slowly back -again, looking anxiously about as it went, as if it had -lost something. {\leftskip = 10in % has no effect -It muttered to itself, ``The Duchess! The Duchess! -She'll get me executed as sure as ferrets are ferrets!''}\par}% -\nextexample -\pretolerance = 10000 % Don't hyphenate. -\rightskip = .5in plus 2em -The White Rabbit trotted slowly back again, looking -anxiously about as it went, as if it had lost something. -It muttered to itself, ``The Duchess!! The Duchess!! She'll -get me executed as sure as ferrets are ferrets!!'' -| -\produces -\pretolerance = 10000 % Don't hyphenate. -\rightskip = .5in plus 2em -The White Rabbit trotted slowly back again, looking -anxiously about as it went, as if it had lost something. -It muttered to itself, ``The Duchess! The Duchess! She'll -get me executed as sure as ferrets are ferrets!'' -\endexample -\enddesc - -\begindesc -\easy\cts raggedright {} -\cts ttraggedright {} -\explain -These commands cause \TeX\ to typeset your document -``^{ragged right}''. Interword spaces all -have their natural size, i.e., they all have the same width and -don't stretch or shrink. -Consequently the right margin is generally not even. -The alternative, which is \TeX's default, is to typeset your document -justified, -^^{justification} -i.e., with uniform left and right margins. -In justified text, interword spaces are stretched in order to -make the right margin even. -Some typographers prefer ragged right because -it avoids distracting ``rivers'' of white space on the printed page. -\minrefs{justified text} - -You should use the |\ttraggedright| command when typesetting text in a -monospaced font and the |\raggedright| command when typesetting text in any -other font. - -Most of the time you'll want to apply these commands to an entire document, -but you can limit their effects by enclosing them -in a \minref{group}. -\example -\raggedright ``You couldn't have it if you {\it did\/} -want it,'' the Queen said. ``The rule is, jam tomorrow -and jam yesterday---but never jam {\it today\/}.'' -``It {\it must\/} come sometimes to `jam today,% -thinspace'' Alice objected. ``No, it can't'', said the -Queen. ``It's jam every {\it other\/} day: today isn't -any {\it other\/} day.'' -| -\produces -\raggedright ``You couldn't have it if you {\it did\/} -want it,'' the Queen said. ``The rule is, jam tomorrow -and jam yesterday---but never jam {\it today\/}.'' -``It {\it must\/} come sometimes to `jam today,% -'\thinspace'' Alice objected. ``No, it can't'', said the -Queen. ``It's jam every {\it other\/} day: today isn't -any {\it other\/} day.'' -\endexample -\enddesc - -\begindesc -\cts hang {} -\explain -This command indents the second and subsequent lines of a paragraph -by |\parindent|, the paragraph ^{indentation} -(\xref{\parindent}). -Since the first line is already indented by |\parindent| -(unless you've cancelled the indentation with |\noindent|), the -entire paragraph appears to be indented by |\parindent|. - -\example -\parindent=24pt \hang ``I said you {\it looked} like an -egg, Sir,'' Alice gently explained to Humpty Dumpty. ``And -some eggs are very pretty, you know,'' she added. -| -\produces -\parindent=24pt \hang ``I said you {\it looked} like an -egg, Sir,'' Alice gently explained to Humpty Dumpty. ``And -some eggs are very pretty, you know,'' she added. -\endexample -\enddesc - -\begindesc -\cts hangafter {\param{number}} -\cts hangindent {\param{dimen}} - -\explain -These two \minref{parameter}s jointly -specify ``^{hanging indentation}'' for a paragraph. -The hanging indentation indicates to \TeX\ that certain lines -of the paragraph should -be indented and the remaining lines should have their normal width. -^^{indentation} -|\hangafter| determines which lines -are indented, while |\hangindent| determines the amount of indentation -and whether it occurs on the left or on the right: - -\ulist -\li Let $n$ be the value of |\hangafter|. If $n < 0$, -the first $-n$ lines of the paragraph will be indented. -If $n\ge0$, all but the first $n$ lines of the paragraph will be -indented. - -\li Let $x$ be the value of |\hangindent|. -If $x\ge0$, the lines will be indented -by $x$ on the left. If $x<0$ the lines will be indented by $-x$ on -the right. -\endulist - -When you specify hanging indentation, it applies -only to the next paragraph (if you're in vertical mode) or to -the current paragraph (if you're in horizontal mode). -\TeX\ uses the values of |\hangafter| and |\hangindent| at the end of a -paragraph, when it breaks that paragraph into lines.\minrefs{line -break} - -Unlike most of the other paragraph-shaping parameters, -|\hangafter| and |\hangindent| are reset to their default values -at the start of each paragraph, namely, -$1$ for |\hangafter| and $0$ for |\hangindent|. -If you want to typeset a sequence of paragraphs with hanging -indentation, use |\everypar| (\xref{\everypar}). -^^|\everypar//for hanging indentation| -If you specify |\hangafter| and |\hangindent| as well as ^|\parshape|, -\TeX\ ignores the |\hangafter| and |\hangindent|. - -\example -\hangindent=6pc \hangafter=-2 -This is an example of a paragraph with hanging indentation. -In this case, the first two lines are indented on the left, -but after that we return to unindented text. -| -\produces -\hangindent=6pc \hangafter=-2 -This is an example of a paragraph with hanging indentation. -In this case, the first two lines are indented on the left, -but after that we return to unindented text. -\nextexample -\hangindent=-6pc \hangafter=1 -This is another example of a paragraph with hanging -indentation. Here, all lines after the first have been -indented on the right. The first line, on the other -hand, has been left unindented. -| -\produces -\hangindent=-6pc \hangafter=1 -This is another example of a paragraph with hanging -indentation. Here, all lines after the first have been -indented on the right. The first line, on the other -hand, has been left unindented. -\endexample -\enddesc - -\margin{{\tt\\textindent} has been moved to earlier in this section.} - -\begindesc -\cts parshape {$n\; i_1 l_1\; i_2 l_2\; \ldots \;i_n l_n$} -\explain -This command specifies the shape of the first $n$ lines of a paragraph--- -the next paragraph if you're in vertical mode and the current paragraph -if you're in horizontal mode. -The $i$'s and $l$'s are all -dimensions. The first line is indented by $i_1$ and has length $l_1$, -the second line is indented by $i_2$ and has length $l_2$, and so forth. -If the paragraph has more than $n$ lines, the last indentation\slash -length pair is used for the extra lines. -To achieve special effects such as the one -shown here, you usually have to experiment a lot, insert kerns here and -there, and choose your words to fit the shape. - -|\parshape|, like ^|\hangafter| and ^|\hangindent|, is effective only for one -paragraph. -If you specify |\hangafter| and |\hangindent| as well as |\par!-shape|, -\TeX\ ignores the ^|\hangafter| and ^|\hangindent|. -\ifodd\pageno\vfill\eject\fi % so the wineglass is on a single page. - -\example -% A small font and close interline spacing make this work -\smallskip\font\sixrm=cmr6 \sixrm \baselineskip=7pt -\fontdimen3\font = 1.8pt \fontdimen4\font = 0.9pt -\noindent \hfuzz 0.1pt -\parshape 30 0pt 120pt 1pt 118pt 2pt 116pt 4pt 112pt 6pt -108pt 9pt 102pt 12pt 96pt 15pt 90pt 19pt 84pt 23pt 77pt -27pt 68pt 30.5pt 60pt 35pt 52pt 39pt 45pt 43pt 36pt 48pt -27pt 51.5pt 21pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt 53pt -16.75pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt -53pt 14.6pt 48pt 24pt 45pt 30.67pt 36.5pt 51pt 23pt 76.3pt -The wines of France and California may be the best -known, but they are not the only fine wines. Spanish -wines are often underestimated, and quite old ones may -be available at reasonable prices. For Spanish wines -the vintage is not so critical, but the climate of the -Bordeaux region varies greatly from year to year. Some -vintages are not as good as others, -so these years ought to be -s\kern -.1pt p\kern -.1pt e\kern -.1pt c\hfil ially -n\kern .1pt o\kern .1pt t\kern .1pt e\kern .1pt d\hfil: -1962, 1964, 1966. 1958, 1959, 1960, 1961, 1964, -1966 are also good California vintages. -Good luck finding them!! -| -%\margin{Wineglass text replaced because of permissions problem.} -\produces -% A small font and close interline spacing make this work -\smallskip\font\sixrm=cmr6 \sixrm \baselineskip=7pt -\fontdimen3\font = 1.8pt \fontdimen4\font = 0.9pt -\noindent \hfuzz 0.1pt -\parshape 30 0pt 120pt 1pt 118pt 2pt 116pt 4pt 112pt 6pt 108pt 9pt 102pt -12pt 96pt 15pt 90pt 19pt 84pt 23pt 77pt 27pt 68pt 30.5pt 60pt 35pt 52pt -39pt 45pt 43pt 36pt 48pt 27pt 51.5pt 21pt 53pt 16.75pt 53pt 16.75pt -53pt 16.75pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt -53pt 16.75pt 53pt 14.6pt 48pt 24pt 45pt 30.67pt 36.5pt 51pt 23pt 76.3pt -The wines of France and California may be the best -known, but they are not the only fine wines. Spanish -wines are often underestimated, and quite old ones may -be available at reasonable prices. For Spanish wines -the vintage is not so critical, but the climate of the -Bordeaux region varies greatly from year to year. Some -vintages are not as good as others, -so these years ought to be -s\kern -.1pt p\kern -.1pt e\kern -.1pt c\hfil ially -n\kern .1pt o\kern .1pt t\kern .1pt e\kern .1pt d\hfil: -1962, 1964, 1966. 1958, 1959, 1960, 1961, 1964, -1966 are also good California vintages. -Good luck finding them! -\endexample -\eix^^{indentation} -\enddesc - -\begindesc -\cts prevgraf {\param{number}} -\explain -In horizontal mode, this parameter specifies the -number of lines in the paragraph so far; in vertical mode, -it specifies the number of lines in the previous paragraph. -\TeX\ only sets |\prevgraf| after it has finished breaking some text into -lines, i.e., at a math display or at the end of a paragraph. -See \knuth{page~103} for more details about it. -\enddesc - -\begindesc -\cts vadjust {\rqbraces{\<vertical mode material>}} -\explain -This command inserts the specified \<vertical mode material> just after the -output line containing the position where the command occurs. -^^{vertical lists//inserting in paragraphs} -You can use it, for instance, to cause a page eject or to insert extra -space after a certain line. - -\example -Some of these words are \vadjust{\kern8pt\hrule} to be -found above the line and others are to be found below it. -| -\produces -Some of these words are \vadjust{\kern8pt -\hbox to \hsize{\hfil\vbox{\advance\hsize by -\parindent -\hrule width \hsize}}} -to be found above the line and others are to be found below it. -\endexample -\enddesc - -\see |\parindent| (\xref\parindent), -|\parskip| (\xref\parskip), |\everypar| (\xref\everypar). -\eix^^{line breaks//and paragraph shape} -\eix^^{paragraphs//shaping} - -%========================================================================== -\section {Line breaks} - -%========================================================================== -\subsection {Encouraging or discouraging line breaks} - -\begindesc -\bix^^{line breaks} -\bix^^{line breaks//encouraging or discouraging} -\ctspecial break {} \xrdef{hbreak} -\explain -This command forces a line break. -Unless you do something to fill out the line, you're likely to -get an ``underfull hbox'' complaint. -|\break| can also be used in vertical mode. -\example -Fill out this line\hfil\break and start another one.\par -% Use \hfil here to fill out the line. -This line is underfull---we ended it\break prematurely. -% This line causes an `underfull hbox' complaint. -| -\produces -\hbadness = 10000 % avoid hbadness message -Fill out this line\hfil\break and start another one.\par -% Use \hfil here to fill out the line. -This line is underfull---we ended it\break prematurely. -% This line causes an `underfull hbox' complaint. -\endexample\enddesc - -\begindesc -\ctspecial nobreak {} \xrdef{hnobreak} -\explain -This command prevents a line break where it -otherwise might occur. -|\nobreak| can also be used in vertical mode. -\example -Sometimes you'll encounter a situation where -a certain space\nobreak\qquad must not get lost. -| -\produces -Sometimes you'll encounter a situation where -a certain space\nobreak\qquad must not get lost. -\endexample -\enddesc - -\begindesc -\ctspecial allowbreak {} \xrdef{hallowbreak} -\explain -This command tells \TeX\ to -allow a line break where one could not ordinarily occur. -It's most often useful within a math formula, since \TeX\ -is reluctant to break lines there. ^^{line breaks//in math formulas} -|\allowbreak| can also be used in vertical mode. -\example -Under most circumstances we can state with some confidence -that $2+2\allowbreak=4$, but skeptics may disagree. -\par For such moronic automata, it is not difficult to -analyze the input/\allowbreak output behavior in the limit. -| -\produces -Under most circumstances we can state with some confidence -that $2+2\allowbreak=4$, but skeptics may disagree. -\par For such moronic automata, it is not difficult to -analyze the input/\allowbreak output behavior in the limit. -\endexample\enddesc - -\begindesc -\ctspecial penalty {\<number>} \xrdef{hpenalty} -\explain -This command produces a \minref{penalty} item. -The penalty item makes \TeX\ more or less willing to break a line -at the point where that item occurs. -A negative penalty, i.e., a bonus, encourages a line break; -a positive penalty discourages a line break. -A penalty of $10000$ or more prevents a break altogether, -while a penalty of $-10000$ or less forces a break. -|\penalty| can also be used in vertical mode. -\secondprinting{\vfill\eject} -\example -\def\break{\penalty -10000 } % as in plain TeX -\def\nobreak{\penalty 10000 } % as in plain TeX -\def\allowbreak{\penalty 0 } % as in plain TeX -| -\endexample -\enddesc - -\secondprinting{\vglue-\baselineskip\vskip0pt} -\begindesc -\cts obeylines {} -\explain -\TeX\ normally treats an end of line as a space. -|\obeylines| instructs \TeX\ to treat each end of line as -an end of paragraph, thus forcing a line break. -|\obeylines| is often useful when you're typesetting verse or -computer programs. -^^{verse, typesetting}^^{poetry, typesetting}^^{computer programs, typesetting} -If any of your lines are longer than the effective line length -(|\hsize|\tminus|\parindent|), -however, -you may get an extra line break within those lines. - -Because \TeX\ inserts the |\parskip| glue (\xref\parskip) -between lines controlled by |\obeylines| (since it thinks each line is a -paragraph), you should normally set |\parskip| to zero when you're using -|\obeylines|. - -You can use the ^|\obeyspaces| command (\xref{\obeyspaces}) to get -\TeX\ to take spaces within a line literally. |\obeylines| and |\obeyspaces| -are often used together. -\example -\obeylines -``Beware the Jabberwock, my son!! -\quad The jaws that bite, the claws that catch!! -Beware the Jubjub bird, and shun -\quad The frumious Bandersnatch!!'' -| -\produces -\obeylines -``Beware the Jabberwock, my son! -\quad The jaws that bite, the claws that catch! -Beware the Jubjub bird, and shun -\quad The frumious Bandersnatch!'' -\endexample -\enddesc - -\secondprinting{\vglue-\baselineskip\vskip0pt} - -\begindesc -\easy\cts slash {} -\explain -This command produces a ^{solidus} (/) and also tells \TeX\ that it can -break the line after the solidus, if necessary. -\example -Her oldest cat, while apparently friendly to most people, -had a Jekyll\slash Hyde personality when it came to mice. -| -\produces -Her oldest cat, while apparently friendly to most people, -had a Jekyll\slash Hyde personality when it came to mice. -\endexample -\eix^^{line breaks//encouraging or discouraging} -\enddesc - -\secondprinting{\vfill\eject} - - -%========================================================================== -\subsection {Line breaking parameters} - -\begindesc -\bix^^{line breaks//parameters affecting} -% -\cts pretolerance {\param{number}} -\cts tolerance {\param{number}} -\explain -These parameters determine the \minref{badness} that \TeX\ will tolerate -on each line when it is choosing line breaks -for a paragraph. -The badness is a measure of how far the interword spacing deviates from -the ideal. -|\pretolerance| specifies the tolerable badness for -line breaks without hyphenation; -|\tolerance| specifies the tolerable badness for line breaks with -hyphenation. -The tolerable badness can be exceeded in either of two ways: -a line is too tight (the interword spaces are too -small) or it is too loose (the interword spaces are too big). - -\ulist -\li If \TeX\ must set a line too loosely, it -complains about an ``underfull hbox''. -\li If \TeX\ must set a line too rightly, -it lets the line run past the right margin and -complains about an ``overfull \minref{hbox}''. -\endulist - -\noindent \TeX\ chooses line breaks in the following steps: -\olist -\li It attempts to choose line breaks without hyphenating. -If none of the -resulting lines have a badness exceeding |\pretolerance|, the -line breaks are acceptable and the paragraph can now be set. -\li Otherwise, it tries another set of line breaks, this -time allowing hyphenation. If none of the resulting lines have a badness -exceeding |\tolerance|, the new set of line breaks is -acceptable and the paragraph can now be set. -\li Otherwise, it adds ^|\emergencystretch| (see below) to the stretch -of each line and tries again. -\li If none of these attempts have produced an acceptable -set of line breaks, -it sets the paragraph with one or more overfull hboxes -and complains about them. -\endolist - -\PlainTeX\ sets |\tolerance| to $200$ and |\pretolerance| to $100$. -If you set |\tolerance| to $10000$, \TeX\ -becomes infinitely tolerant and accepts any spacing, no matter how bad -(unless it encounters a word that won't fit on a line, even with -hyphenation). Thus by changing |\tolerance| you can avoid -overfull and underfull hboxes, but at the cost of making the spacing worse. -By making |\pretolerance| larger you can get \TeX\ to avoid hyphenation -(and also run faster), -again at the cost of possibly worse spacing. -If you set |\pretolerance| to $-1$, -\TeX\ will not even try to set the paragraph without hyphenation. - -The ^|\hbadness| parameter (\xref \hbadness) determines the level of badness -that \TeX\ will tolerate before it complains, but |\hbadness| does not affect -the way that \TeX\ typesets your document. -The ^|\hfuzz| parameter (\xref \hfuzz) determines the amount that -an hbox can exceed its specified width before \TeX\ considers it to be -erroneous. -\enddesc - -\begindesc -\cts emergencystretch {\param{dimen}} -\explain -By setting this parameter to be greater than zero, -you can make it easier for \TeX\ -to typeset your document without generating overfull hboxes. -^^{overfull boxes} -This is a better alternative than setting |\tolerance=10000|, -since that tends to produce really ugly lines. -If \TeX\ can't typeset a paragraph without exceeding ^|\tolerance|, -it will try again, adding |\emergencystretch| to the stretch of each -line. -The effect of the change is to scale down the badness of each -line, enabling \TeX\ to make spaces wider than they would otherwise be -and thus choose line breaks that are as -good as possible under the circumstances. -\enddesc - -\begindesc -\cts looseness {\param{number}} -\explain -\minrefs{line break} -This parameter gives you a way -to change the total number of lines in a paragraph from what they -optimally would be. -|\looseness| is so named because it's a -measure of how loose the paragraph is, i.e., how much extra space there is in -it. - -Normally, |\looseness| is $0$ and -\TeX\ chooses line breaks in its usual way. But if -|\looseness| is, say, $3$, \TeX\ does the following: -\olist -\li It chooses line breaks normally, resulting in a paragraph of $n$ lines. -\li It discards these line breaks and -tries to find a new set of line breaks that gives the paragraph $n+3$ lines. -(Without the previous step, \TeX\ wouldn't know the value of $n$.) -\li If the previous attempt results in lines whose badness exceeds -|\tol!-er!-ance|, -^^|\tolerance| -it tries to get $n+2$ lines---and if that also fails, -$n+1$ lines, and finally $n$ lines again. -\endolist -\noindent -Similarly, if looseness is $-n$, -\TeX\ attempts to set the paragraph with $n$ -fewer lines than normal. -The easiest way for \TeX\ to make a paragraph one line longer is to put -a single word on the excess line. You can prevent this by -putting a tie (\xref{@not}) between the last two words of the paragraph. - -Setting |\looseness| is the best way to force a paragraph -to occupy a given number of lines. -Setting it to a negative value is useful when you're trying to -increase the amount of text you can fit on a page. -Similarly, setting it to a positive -value is useful when you're trying to -decrease the amount of text on a page. - -\TeX\ sets |\looseness| to $0$ when it ends a paragraph, after breaking -the paragraph into lines. -If you want to change the looseness of several paragraphs, you must do it -individually for each one or put the change into |\everypar| -\ctsref\everypar. -^^|\everypar//for setting \b\tt\\looseness\e| -\enddesc - -\begindesc -\cts linepenalty {\param{number}} -\explain -\minrefs{line break} -This parameter specifies \minref{demerits} that \TeX\ assesses for each line -break when it is breaking a paragraph into lines. -The penalty is independent of where the line break occurs. -Increasing the value -of this parameter causes \TeX\ to try harder to set a paragraph with a -minimum number of lines, even at the cost of other aesthetic considerations -such as avoiding overly tight interword spacing. -Demerits are in units of \minref{badness} squared, so -you need to assign a rather large value to this parameter (in the -thousands) for it to have any effect. -\PlainTeX\ sets |\linepenalty| to $10$. -\enddesc - -\begindesc -\cts adjdemerits {\param{number}} -\explain -\minrefs{line break} -^^{hyphenation//penalties for} -{\tighten -This parameter specifies additional \minref{demerits} that \TeX\ attaches to a -breakpoint between two adjacent lines that are -``visually incompatible''. -Such a pair of lines makes a paragraph appear uneven. -Incompatibility is evaluated in terms of the tightness or looseness -of lines: -} -\olist\compact -\li A line is tight if its \minref{glue} needs to shrink by at least $50\%$. -\li A line is decent if its badness is $12$ or less. -\li A line is loose if its glue needs to stretch by more than $50\%$. -\li A line is very loose if its glue needs to stretch so much -that its badness exceeds $100$. -\endolist -Two adjacent lines are visually incompatible -if their categories are not adjacent, e.g., a tight line is next to a loose one -or a decent line is next to a very loose one. - -Demerits are in units of \minref{badness} squared, so -you need to assign a rather large value to this parameter (in the -thousands) for it to have any effect. -\PlainTeX\ sets |\adjdemerits| to~$10000$. -\enddesc - -\begindesc -\bix^^{hyphenation//penalties for} -\cts exhyphenpenalty {\param{number}} -\explain -\minrefs{line break} -This parameter specifies the \minref{penalty} that \TeX\ attaches to a -breakpoint at an explicit hyphen such as the one in -``helter-skelter''. Increasing this parameter has the effect of discouraging -\TeX\ from ending a line at an explicit hyphen. -\PlainTeX\ sets |\exhyphenpenalty| to $50$. -\enddesc - -\begindesc -\cts hyphenpenalty {\param{number}} -\explain -\minrefs{line break} -This parameter specifies the \minref{penalty} that \TeX\ attaches to a -breakpoint at an implicit hyphen. -Implicit hyphens can come from \TeX's hyphenation dictionary or -from ^{discretionary hyphens} that you've inserted with |\-|~(\xref{\@minus}). -^^|-//leads to {\tt\\hyphenpenalty}| -Increasing this parameter has the effect of discouraging -\TeX\ from hyphenating words. -\PlainTeX\ sets |\hyphenpenalty| to $50$. -\enddesc - -\begindesc -\cts doublehyphendemerits {\param{number}} -\explain -\minrefs{line break} -{\tighten -This parameter specifies additional \minref{demerits} that \TeX\ -attaches to a breakpoint when that breakpoint leads to -two consecutive lines that end in a hyphen. -Increasing the value of this parameter has the effect of discouraging -\TeX\ from hyphenating two lines in a row. -Demerits are in units of \minref{badness} squared, so -you need to assign a rather large value to this parameter (in the -thousands) for it to have any effect. -\PlainTeX\ sets |\doublehyphendemerits| to $10000$. -} -\enddesc - -\begindesc -\cts finalhyphendemerits {\param{number}} -\explain -\minrefs{line break} -{\tighten -This parameter specifies additional \minref{demerits} that \TeX\ -attaches to a breakpoint that causes -the next to last line of a paragraph to end with a hyphen. -Such a hyphen is generally considered to be unaesthetic -because of the possible blank space from a short last line beneath it. -Increasing the value of this parameter has the effect of discouraging -\TeX\ from ending the next to the last line with a hyphen. -Demerits are in units of \minref{badness} squared, so -you need to assign a rather large value to this parameter (in the -thousands) for it to have any effect. -\PlainTeX\ sets |\finalhyphendemerits| to $5000$. -} -\eix^^{hyphenation//penalties for} -\enddesc - -\begindesc -\cts binoppenalty {\param{number}} -\explain -^^{operators} -This parameter specifies the penalty for breaking a math formula -after a binary operator when the formula appears in a paragraph. -\PlainTeX\ sets |\binoppenalty| to $700$. -\enddesc - -\begindesc -\cts relpenalty {\param{number}} -\explain -^^{relations} -This parameter specifies the penalty for breaking a math formula -after a relation when the formula appears in a paragraph. -\PlainTeX\ sets |\rel!-penal!-ty| to~$500$. - -\eix^^{line breaks//parameters affecting} -\enddesc - -%========================================================================== -\subsection {Hyphenation} - -\begindesc -\bix^^{hyphenation} -% -\easy\ctspecial - \ctsxrdef{@minus} -\explain -The |\-| command inserts a ``discretionary hyphen'' -^^{discretionary hyphens} -into a word. -The discretionary hyphen allows \TeX\ to hyphenate the word at that -place. \TeX\ isn't obliged to hyphenate there---it does so -only if it needs to. This command is useful when a word -that occurs in one or two places in your document -needs to be hyphenated, -but \TeX\ can't find an appropriate hyphenation point on its own. -\example -Alice was exceedingly reluctant to shake hands first -with either Twee\-dle\-dum or Twee\-dle\-dee, for -fear of hurting the other one's feelings. -| -\produces -Alice was exceedingly reluctant to shake hands first -with either Twee\-dle\-dum or Twee\-dle\-dee, for -fear of hurting the other one's feelings. -\endexample -\enddesc - -\begindesc -\cts discretionary {\rqbraces{\<pre-break text>} - \rqbraces{\<post-break text>} - \rqbraces{\<no-break text>}} -\explain -\minrefs{line break} -^^{hyphenation} -This command specifies a ``discretionary break'', namely, -a place where \TeX\ can break a line. -It also tells \TeX\ what text to put on either side of the break. -\ulist -\li If \TeX\ does not break there, it uses the \<no-break text>. -\li If \TeX\ does break there, it puts the \<pre-break text> just before -the break and the \<post-break text> just after the break. -\endulist -\noindent -Just as with |\-|, -\TeX\ isn't obligated to break a line at a discretionary break. -In fact, |\-| is ordinarily equivalent to |\discretionary!allowbreak{-}{}{}|. - -\TeX\ sometimes inserts discretionary breaks on its own. -For example, it inserts |\discretionary!allowbreak{}{}{}| after -an explicit hyphen or dash. - -{\hyphenchar\tentt=-1 % needed to avoid weirdnesses -\example -% An ordinary discretionary hyphen (equivalent to \-): -\discretionary{-}{}{} -% A place where TeX can break a line, but should not -% insert a space if the line isn't broken there, e.g., -% after a dash: -\discretionary{}{}{} -% Accounts for German usage: `flicken', but `flik- -% ken': -German ``fli\discretionary{k-}{k}{ck}en'' -| -^^{hyphenation//German} -\endexample} - -\enddesc - -\begindesc -\cts hyphenation {\rqbraces{\<word>\thinspace\vs\ $\ldots$\ \vs - \thinspace\<word>}} -\explain -\TeX\ keeps a dictionary of exceptions to its ^{hyphenation} rules. -Each dictionary entry indicates how a particular word should -be hyphenated. -The |\hyphenation| command adds words to the dictionary. -Its argument is a sequence of words separated by blanks. -Uppercase and lowercase letters are equivalent. -The hyphens in each word indicate the places -where \TeX\ can hyphenate that word. -A word with no hyphens in it will never be hyphenated. -However, you can still override the hyphenation dictionary by -using |\-| in a particular occurrence of a word. -You need to provide all the grammatical forms of a word -that you want \TeX\ to handle, e.g., both the singular and the plural. - -\example -\hyphenation{Gry-phon my-co-phagy} -\hyphenation{man-u-script man-u-scripts piz-za} -| -\endexample -\enddesc - -\begindesc -\cts uchyph {\param{number}} -\explain -A positive value of |\uchyph| (uppercase hyphenation) -permits hyphenation of words, such as proper names, -that start with a capital letter. -A zero or negative -value inhibits such hyphenation. \PlainTeX\ sets |\uchyph| to $1$, -so \TeX\ normally tries to hyphenate words that start with a capital letter. -\enddesc - -\begindesc -\cts showhyphens {\rqbraces{\<word>\thinspace\vs\ $\ldots$\ \vs - \thinspace\<word>}} -\explain -This command isn't normally used in documents, but you can use it at -your terminal to see how \TeX\ would hyphenate some random set of words. -The words, with hyphenations indicated, appear both in the log and at -your terminal. You'll get a complaint about an underfull hbox---just -ignore it. -\example -\showhyphens{threshold quizzical draughts argumentative} -| -\logproduces -Underfull \hbox (badness 10000) detected at line 0 -[] \tenrm thresh-old quizzi-cal draughts ar-gu-men-ta-tive -| -\endexample -\enddesc - -\begindesc -\cts language {\param{number}} -\explain -Different languages have different sets of hyphenation rules. -This parameter determines the set of ^{hyphenation rules} that \TeX\ uses. -By changing |\language| you can get \TeX\ -to hyphenate portions of text or entire documents according to the -hyphenation rules appropriate to a particular language. -^^{European languages} -Your ^{local information} about \TeX\ will tell you if any -additional sets of hyphenation rules are available (besides the -ones for English) -and what the appropriate values of |\language| are. -The default value of |\language| is $0$. - -\TeX\ sets the current language to $0$ at the start of every paragraph, -and compares |\language| to the current language whenever it adds -a character to the current paragraph. -If they are not the same, \TeX\ adds a ^{whatsit} indicating the -language change. -This whatsit is the clue in later processing that the language rules -should change. -\enddesc - -\begindesc -\cts setlanguage {\<number>} -\explain -This command sets the current language to \<number> -by inserting the same whatsit that you'd get by changing ^|\language|. -However, it does not change the value of |\language|. -\enddesc - -\begindesc -\cts lefthyphenmin {\param{number}} -\cts righthyphenmin {\param{number}} -\explain -These parameters specify the smallest word fragments that \TeX\ allows -at the left and at the right end of a hyphenated word. -\PlainTeX\ defaults them to $2$ and $3$ respectively; -these are the recommended values for English. -\enddesc - -\begindesc -\bix^^{fonts//hyphenation characters for} -\cts hyphenchar {\<font>\param{number}} -\explain -\TeX\ doesn't necessarily use the `-' character at hyphenation points. -Instead, it uses the |\hyphenchar| of the current font, which is usually -`-' but need not be. If a font has a negative |\hyphenchar| value, -\TeX\ won't hyphenate words in that font. - -Note that \<font> is a control sequence -that names a font, not a \<font\-name> that names font files. -Beware: -an assignment to |\hyphenchar| is \emph{not} undone at the end -of a group. -If you want to change |\hyphenchar| locally, you'll need to -save and restore its original value explicitly. - -\example -\hyphenchar\tenrm = `- - % Set hyphenation for tenrm font to `-'. -\hyphenchar\tentt = -1 - % Don't hyphenate words in font tentt. -| -\endexample -\enddesc - -\begindesc -\cts defaulthyphenchar {\param{number}} -\explain -When \TeX\ reads the metrics file -^^{metrics file//default hyphen in} -for a font in response to a -^|\font| command, it sets the font's ^|\hyphenchar| to -|\default!-hyphen!-char|. -If the value of |\default!-hyphen!-char| is -not in the range $0$--$255$ when you load a font, -\TeX\ won't hyphenate any words in that font unless you -override the decision by setting the font's |\hyphenchar| later on. -\PlainTeX\ sets |\default!-hyphen!-char| to $45$, the \ascii\ code -for `|-|'. -\example -\defaulthyphenchar = `- - % Assume `-' is the hyphen, unless overridden. -\defaulthyphenchar = -1 - % Don't hyphenate, unless overridden. -| -\endexample - -\eix^^{fonts//hyphenation characters for} -\enddesc - -\see |\pretolerance| (\xref \pretolerance). -\eix^^{hyphenation} -\eix^^{line breaks} - -%========================================================================== -\section {Section headings, lists, and theorems} - -\begindesc -^^{section headings} -\easy\ctspecial beginsection {\<argument>\thinspace{\bt\\par}} - \ctsxrdef{@beginsection} -\explain -You can use this command to begin a major subdivision of your document. -\<argument> is intended to serve as a section title. -|\beginsection| surrounds \<argument> -by extra vertical space and sets it in -boldface, left-justified. -You can produce the |\par| that ends \<argument> with a blank line. -\let\message = \gobble % Don't bother to tell us about Pig and Pepper. -\example -$\ldots$ till she had brought herself down to nine -inches high. - -\beginsection Section 6. Pig and Pepper - -For a minute or two she stood looking at the house $\ldots$ -| -\produces -$\ldots$ till she had brought herself down to nine -inches high. - -\beginsection Section 6. Pig and Pepper - -For a minute or two she stood looking at the house $\ldots$ -\endexample -\enddesc - -\begindesc -\cts item {\<argument>} -\cts itemitem {\<argument>} -\explain -^^{itemized lists} -These commands are useful for creating ^{itemized lists}. The entire paragraph -following \<argument> is indented by |\parindent| -^^|\parindent//indentation for itemized lists| -(for |\item|) or by |2\parindent| (for |\itemitem|). -(See \xrefpg{\parindent} for an explanation of |\parindent|.) -Then \<argument>, -followed by an en space, is placed just to -the left of the text of the -first line of the paragraph so that it falls within the paragraph indentation -as specified by |\parindent|. - -If you want to include more than one -paragraph in an item, put |\item{}| in front of the additional paragraphs. -\example -{\parindent = 18pt -\noindent Here is what we require: -\item{1.}Three eggs in their shells, -but with the yolks removed. -\item{2.}Two separate glass cups containing: -\itemitem{(a)}One-half cup {\it used} motor oil. -\itemitem{(b)}One cup port wine, preferably French. -\item{3.}Juice and skin of one turnip.} -| -\produces -{\parindent = 18pt -\noindent Here is what we require: -\item{1.}Three eggs in their shells, -but with the yolks removed. -\item{2.}Two separate glass cups containing: -\itemitem{(a)}One-half cup {\it used} motor oil. -\itemitem{(b)}One cup port wine, preferably French. -\item{3.}Juice and skin of one turnip.} -\endexample -\enddesc - -\begindesc -\easy\ctspecial proclaim {\<argument>{\tt.}\vs\thinspace - \<general text>\thinspace{\bt\\par}} - \ctsxrdef{@proclaim} -\explain -^^{theorems} -^^{lemmas} -^^{hypotheses} -This command ``proclaims'' a theorem, lemma, hypothesis, etc. -It sets \<argument> in boldface type and the following paragraph in -italics. \<arg\-u\-ment> must be followed by a period and a space token, -which serve -to set off \<argument> from \<general text>. -\<general text> consists of the text up to the next paragraph -boundary, except that you can include multiple paragraphs by putting them -within braces and ending a paragraph after the closing right brace. -\example -\proclaim Theorem 1. -What I say is not to be believed. - -\proclaim Corollary 1. Theorem 1 is false.\par -| -\produces -\proclaim Theorem 1. -What I say is not to be believed. - -\proclaim Corollary 1. Theorem 1 is false.\par -\endexample -\enddesc - -\enddescriptions -\endchapter -\byebye diff --git a/Master/texmf-doc/doc/english/impatient/preface.tex b/Master/texmf-doc/doc/english/impatient/preface.tex deleted file mode 100644 index b48193d749a..00000000000 --- a/Master/texmf-doc/doc/english/impatient/preface.tex +++ /dev/null @@ -1,157 +0,0 @@ -% 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 deleted file mode 100644 index fddaed637e6..00000000000 --- a/Master/texmf-doc/doc/english/impatient/read1st.tex +++ /dev/null @@ -1,45 +0,0 @@ -% 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 deleted file mode 100644 index b55408f71d4..00000000000 --- a/Master/texmf-doc/doc/english/impatient/tips.tex +++ /dev/null @@ -1,1011 +0,0 @@ -% This is part of the book TeX for the Impatient. -% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. -% See file fdl.tex for copying conditions. - -\input macros -\chapter{Tips and techniques} - -\chapterdef{tips} - -\TeX\ is a complex program that occasionally works its will in -mysterious ways. In this section we offer some tips on solving -problems that you might encounter and explain some handy techniques. - - -\section Correcting bad page breaks - -\bix^^{page breaks//bad} -Sometimes \TeX\ breaks a page right in the middle of material that you -want to keep together---for example, -a section heading and the text that follows it, -or a short list of related items. There are two ways to correct the -situation: -\ulist\compact -\li You can force the material to be kept together. -\li You can force a page break at a different place. -\endulist - -The simplest way to force \TeX\ to keep material together on a page is -to enclose the material in a vbox using the |\vbox| command \ctsref{\vbox}. -^^|\vbox//fixing page breaks with| -A vbox is ordinarily better than an hbox for this purpose because most -often the material to be kept together, -e.g., a sequence of paragraphs, will be vertical mode material. -You should -precede and follow the vbox by an implicit or explicit paragraph command -(either a blank line or |\par|); otherwise -\TeX\ may try to make the vbox part of an an adjacent paragraph. -The vbox method has an important limitation: -you can't apply it to portions of text smaller than a paragraph. - -You can sometimes keep the lines of a single paragraph together by enclosing -the paragraph in a group and assigning |\interlinepenalty| -\ctsref{\interlinepenalty} -a value of $10000$ at the start of the group (or elsewhere before the -end of the paragraph). -This method causes \TeX\ to consider page breaks within that paragraph to be -infinitely undesirable. -However, if all the page breaks that \TeX\ can find are infinitely undesirable, -it may break the page within the paragraph anyway. - -A ^|\nobreak| command (\xref{vnobreak}) -after the end of a paragraph prevents \TeX\ -from breaking the page at the following item -(unless that item happens to be a penalty of less than $10000$). -This is also the best way to prevent a page break after a heading, -since a heading usually behaves like a paragraph. -The |\nobreak| must follow the blank line or |\par| that ends -the paragraph so that \TeX\ won't treat the |\nobreak| as part of the -paragraph. -For the |\nobreak| to be effective, it must also come before -any legal breakpoint at the end of the paragraph. -The glue that \TeX\ inserts -before the next paragraph is such a breakpoint, -and so is any vertical glue that you insert explicitly after a paragraph. -Thus the |\nobreak| should usually be -the very first thing after the end of the paragraph or heading. - -You can use the ^|\eject| command \ctsref{\eject} -to force \TeX\ to break a page at a -particular place. Within a paragraph, you can use the combination -`|\vadjust{\vfill\eject}|' -\ctsref{\vadjust} -^^|\vadjust| -to force a break after the next complete output line. -The reason for preceding |\eject| by ^|\vfill| -\ctsref{\vfill} is to -get \TeX\ to fill out the page with blank space. -However, using |\eject| to fix page break problems -has a major disadvantage: -if the page boundaries in your document change, -the page breaks that you've inserted may no longer be where you want them. - -If you don't provide \TeX\ with a |\vfill| command to fill out the page -after an |\eject|, -\TeX\ redistributes the extra blank space as best it can and then usually -complains that ``an -underfull |\vbox| (badness $10000$) has occurred while |\output| is active.'' -You may encounter a similar problem with -any of the methods mentioned above for enclosing -material that you want to keep together. - -The ^|\filbreak| command \ctsref\filbreak{} -\xrdef{filbreak} -provides a way of keeping the lines of one or more paragraphs -(or other vertical mode material) together on -a page. If you enclose a paragraph in |\filbreak|s, \TeX\ will effectively -ignore the |\filbreak|s if the paragraph fits on the current page and -break the page before the first |\filbreak| if the paragraph doesn't fit. -If you put |\filbreak|s around each paragraph in a sequence of paragraphs, -like this: -{\obeylines\display{ -{\tt \\filbreak} -\<paragraph> -{\tt \\filbreak} -\<paragraph> -{\tt \\filbreak} -\leavevmode\indent\vdots -\<paragraph> -{\tt \\filbreak} -}} -\vfil\eject -\noindent -\TeX\ will keep the lines of each paragraph together on a page. -If \TeX{} breaks a page at a |\filbreak|, it will fill the bottom of the -page with blank space. - -Sometimes you can get \TeX\ to modify the length of a page by changing -the ^|\looseness| parameter \ctsref\looseness{} for one or more paragraphs. -Setting |\looseness| negative within a paragraph causes \TeX\ to try to squeeze -the paragraph into fewer lines; setting it positive causes \TeX\ to try to -expand the paragraph into more lines. The disadvantage of changing |\looseness| -is that the interword spacing in the affected region won't be optimal. -You can get further information about \TeX's attempted line breaks by -setting |\tracingpages| (\xref\tracingpages) to $1$. - - -\section Preserving the end of a page - -Sometimes you need to modify something on a single page and you want to avoid -reprinting the entire document. If your modification doesn't -change the page length too much, there's hope. You need to fix the end -of the page so that it falls in the same place; -the methods are similar to the ones for fixing a bad page break. - -If the original end of page came between paragraphs, you can -force a page break at the same place -using any of the methods we've described above. Otherwise, -you must force \emph{both} a line break and a page break at a particular -place. If the new page is shorter than the old one, the sequence: -\csdisplay -\vadjust{\vfill\eject}\break -| -^^|\vadjust| -should do the trick. -But if the new page is longer, -the problem is far more difficult because \TeX\ has probably already -squeezed the page as tightly as it can. Your only hopes in this case are -to set ^|\looseness| \ctsref\looseness{} to a negative value, -to shorten some of the vertical skips on the page, to add some shrink to -^|\parskip| (\xref\parskip) if it was nonzero, or, as a last resort, -to decrease |\baselineskip| \ctsref{\baselineskip} ever so slightly. -^^|\baselineskip//and preserving end of page| - -\section Leaving space at the top of a page - -\null -^^{vertical space//reserving at top of page} -You can usually use the |\vskip| command \ctsref\vskip{} -to leave vertical space on a page. -That doesn't work at the top of a page, however, since -\TeX\ discards glue, kerns, and penalties that occur just after a page break. -^^{page breaks//glue at} -Use the ^|\topglue| command \ctsref\topglue\ instead; it produces glue that -never disappears. -\eix^^{page breaks//bad} - - - -\section Correcting bad line breaks - -\null -\bix^^{line breaks//bad} -If \TeX\ breaks a line in the middle of material that you wanted to keep -on a single line, there are several ways to correct the situation: -\ulist\compact -\li You can force a break in a nearby place with the -|\break| command (\xref{hbreak}). -^^|\break//correcting line breaks with| -\li You can insert a tie (|~|) between two words -(see \xref{@not}) to prevent a break between them.\ttidxref{~} -\li You can tell \TeX\ about hyphenations that it wouldn't -otherwise consider by -inserting one or more discretionary hyphens in various words -(see |\-|, \xref{\@minus}). -\ctsidxref{-//in line breaking} -^^{discretionary hyphens//bad line breaks, correcting with} -\li You can enclose several words in an hbox using the ^|\hbox| -command \ctsref{\hbox}. -\endulist - -The disadvantage of all of these methods, except for inserting discretionary -hyphens, is that they may make it impossible for \TeX\ to find a -satisfactory set of line breaks. Should that happen, \TeX\ will -set one or more underfull or overfull boxes and complain about it. -^^{underfull boxes} ^^{overfull boxes} -The hbox method has a further disadvantage: because \TeX\ sets an hbox -as a single unit without considering its context, the interword space -within the hbox may not be consistent with the interword space in the rest of -the line. -\eix^^{line breaks//bad} - - -\section Correcting overfull or underfull boxes - -\null -\bix^^{overfull boxes} -\bix^^{underfull boxes} -\bix^^{boxes//overfull} -\bix^^{boxes//underfull} -If \TeX\ complains about an overfull box, it means you've put -more material into a box than that box has room for. -Similarly, if \TeX\ complains about an underfull box, it means you -haven't put enough material into the box. You can encounter -these complaints under many different circumstances, so let's look at the more -common ones: - -\ulist -\li An overfull hbox that's a line of a paragraph indicates that the line was -too long and that -\TeX\ couldn't rearrange the paragraph -to make the line shorter. If you set ^|\emergencystretch| -\ctsref{\emergencystretch} to some nonzero -value, that may cure the problem by allowing \TeX\ to put more space between -words. Another solution is to set |\tolerance| \ctsref{\tolerance} -to $10000$, but that's likely -to yield lines with far too much space in them. Yet another solution is to -insert a discretionary hyphen -^^{discretionary hyphens//overfull boxes, correcting with} -in a critical word that \TeX\ didn't know how to hyphenate. -If all else fails, you might try rewording the paragraph. -A solution that is rarely satisfactory is increasing ^|\hfuzz| \ctsref\hfuzz, -allowing \TeX\ to construct lines that project beyond the right margin. - -\li An underfull hbox that's a line of a paragraph indicates that the line was -too short and that \TeX\ couldn't rearrange the paragraph to -make the line longer. -\TeX\ will set such a line by stretching its interword spaces -beyond their normal -limits. Two of the cures for overfull lines mentioned above -also apply to underfull lines: -inserting discretionary hyphens and rewording the paragraph. -Underfull lines -won't trouble you if you're using ragged right formatting, which you can get -with the ^|\raggedright| command \ctsref\raggedright. - -\li The complaint: -\csdisplay -Underfull \vbox (badness 10000) has occurred - while \output is active -| -indicates that \TeX\ didn't have enough material to fill up a page. The -likely cause is that you've been using vboxes to keep material together -and \TeX\ has encountered a vbox near the bottom of a page that wouldn't fit on -that page. -It has put the vbox on the next page, but in doing so has left too much -empty space in the current page. -In this case you'll either have to insert some more space -elsewhere on the current page or break up the vbox into smaller parts. - -Another possible cause of this complaint is having a long paragraph -that occupies an entire page without a break. -Since \TeX\ won't ordinarily vary the spacing between lines, -it may be unable to fill a gap at the bottom of the page -amounting to a fraction of the line spacing. -This can happen if |\vsize| \ctsref{\vsize}, the page length, -is not an even multiple of |\baselineskip| \ctsref{\baselineskip}, -the space between consecutive -baselines. - -Yet another cause of this complaint, -similar to the previous one, is setting ^|\parskip| \ctsref{\parskip}, -the interparagraph glue, to a value that doesn't have any -stretch or shrink. You can fix these last two problems by increasing ^|\vfuzz| -\ctsref\vfuzz. - -\li The complaint -\csdisplay -Overfull \vbox (296.30745pt too high) has occurred - while \output is active -| -indicates that you constructed a vbox that was longer than the page. You'll -just have to make it shorter. - -\li -\bix^^|\hbox//overfull box from| -\bix^^|\vbox//overfull box from| -The only cures for an overfull hbox or vbox that you've constructed -with the |\hbox| or |\vbox| commands -(\pp\xrefn\hbox, \xrefn\vbox) -are to take something out of the box, to insert some negative glue -with ^|\hss| or ^|\vss| (\xref\hss), or to increase the size -of the box. - -\li If you encounter an underfull hbox or vbox that you've constructed -with |\hbox| or |\vbox|, -you're usually best off to fill out the box with ^|\hfil| -or ^|\vfil| (\xref\hfil). -\eix^^|\hbox//overfull box from| -\eix^^|\vbox//overfull box from| - -\endulist -\eix^^{boxes//overfull} -\eix^^{boxes//underfull} -\eix^^{overfull boxes} -\eix^^{underfull boxes} - - -\section Recovering lost interword spaces - -\null -^^{space//lost} -^^{words run together} -If you find that \TeX\ has run two words together, the likely cause is a -control sequence that's absorbed the spaces after it. -Put a ^{control space} (|\!visiblespace|) after the control -sequence. - - -\section Avoiding unwanted interword spaces - -\null -\bix^^{space//unwanted}\xrdef{unwantedspace} -If you get a space in your document where you don't want and don't -expect one, the most likely cause, in our experience, -is an end of line or a space following a brace. -^^{braces//space after} -(If you're doing fancy things with category codes, -^^{category codes//cause of unwanted spaces} -you've introduced lots of other likely causes.) -\TeX\ ordinarily translates an end-of-line into a space, -and it considers a space after a right or left brace to be significant. - -If the unwanted space is caused by a space after a brace within -an input line, then remove that space. -If the unwanted space is caused by a brace at the end of an input line, -put a `|%|' immediately after the brace. -{\recat!ttidxref[%//to eliminate unwanted spaces]] -The `|%|' starts a comment, but this comment needn't -have any text. - -A macro definition can also -introduce unwanted spaces if you haven't written it -carefully. If you're getting unwanted spaces when you call a macro, check -its definition to be sure that you don't have an unintended space after a -brace and that you haven't ended a line of the definition immediately -after a brace. -People often end lines of macro definitions after braces in order to make -the definitions more readable. -To be safe, put a `|%|' after any brace that ends a line of a macro -definition. -It may not be needed, but it won't do any harm.\footnote{ -Admittedly there are rare cases where you really do want an end of line -after a brace.} - -When you're having trouble locating the source of an unwanted space, -try setting |\tracingcommands| \ctsref{\tracingcommands} to $2$. -You'll get a |{blank space}| command in the log file for each space -that \TeX\ sees. - -It helps to know \TeX's rules for spaces: - -\olist -\li Spaces are ignored at the beginnings of input lines. -\li Spaces at the ends of input lines are ignored under \emph{all} -circumstances, although the end of line itself is treated like a space. -(A completely blank line, however, generates a |\par| token.) -\li Multiple spaces are treated like a single space, but -only if they appear together in your input. -Thus a space following the arguments of a macro call is not combined -with a final space produced by the macro call. Instead, you get two spaces. -\li Spaces are ignored after control words. -\li Spaces are in effect ignored after numbers, dimensions, -and the `|plus|' and `|minus|' in glue specifications.% -\footnote{Actually, \TeX\ ignores only a -single space in these places. -Since multiple spaces ordinarily reduce to a single space, however, the -effect is that of ignoring any number of spaces.} -\endolist -\noindent If you've changed the category code of the space or the end-of-line -character, all bets are off. -\eix^^{space//unwanted} - - -\section Avoiding excess space around a display - -\null -^^{math display} -If you're getting too much space above a math display, it may be because -you've left a blank line in your input above the display. -The blank line starts a new paragraph and puts \TeX\ into -vertical mode. When -\TeX\ sees a `|$|' in vertical mode, it switches back to horizontal mode -and inserts the interparagraph glue (|\parskip|) followed by -the interline glue (|\baselineskip|). -Then, when it starts the display itself, -it inserts \emph{more} glue (either ^|\abovedisplayskip| -or ^|\abovedisplayshortskip|, depending on the length of the preceding -line). -This last glue is the only glue that you want. -To avoid getting the interparagraph glue as well, don't leave a blank line above a -math display or otherwise -end a paragraph (with |\par|, say) just before a math display. - -Similarly, -if you're getting too much space below a math display, it may be because -you've left a blank line in your input below the display. -Just remove it. - - -\section Avoiding excess space after a paragraph - -If you get too much vertical space after a paragraph that was produced by a -macro, you may be getting the interparagraph glue produced by the macro, -an empty paragraph, and then more interparagraph glue. -You can get rid of the second paragraph skip by inserting: -\csdisplay -\vskip -\parskip -\vskip -\baselineskip -| -just after the macro call. -If you always get this problem with a certain macro, you can put these -lines at the end of the macro definition instead. -You may also be able to cure the problem by never leaving a blank line -after the macro call---if you want a blank line just to make your input -more readable, start it with a `|%|'. - - -\section Changing the paragraph shape - -\null -\bix^^{paragraphs//shaping} -Several \TeX\ parameters---^|\hangindent|, ^|\leftskip|, etc.---% -affect the way that \TeX\ shapes paragraphs and breaks them into lines. -^^{line breaking} -These parameters are used indirectly in \plainTeX{} commands such as -^|\narrower| and ^|\hang|; you can also assign to them directly. -If you've used one of these commands (or changed one of these parameters), -but the command or parameter change -does not seem to be having any effect on a paragraph, -the problem may be that you've ended a group before you've ended the -paragraph. For example: -\csdisplay -{\narrower She very soon came to an open field, with -a wood on the other side of it: it looked much darker -than the last wood, and Alice felt a little timid -about going into it.} -| -This paragraph won't be set narrower because the right brace at the end -terminates the |\narrower| group before \TeX\ has had a chance to -break the paragraph into lines. Instead, put a |\par| before the -right brace; then you'll get the effect you want. -^^|\par//when changing paragraph shape| -\eix^^{paragraphs//shaping} - - -\section Putting paragraphs into a box - -Suppose you have a few paragraphs of text that you want to put in a -particular place on the page. The obvious way to do it is to enclose -the paragraphs in an hbox of an appropriate size, and then place the hbox -where you want it to be. Alas, the obvious way doesn't work because -\TeX\ won't do line breaking in restricted horizontal mode. -^^{restricted mode//horizontal} -If you try it, -you'll get a misleading error message that suggests you're -missing the end of a group. -The way around this restriction is to write: -\csdisplay -\vbox{\hsize = !<dimen> !dots !<paragraphs> !dots} -| -where \<dimen> is the line length that you want for the paragraphs. -This is what you need to do, in particular, when you want to enclose some -paragraphs in a box (a box enclosed in ruled lines, not a \TeX\ box). - -\section Drawing lines - -\null -\bix^^{rules} -You can use the ^|\hrule| and ^|\vrule| commands (\xref\hrule) -to draw lines, i.e., rules. You'll need to -know (a)~where you can use each command and -(b)~how \TeX\ determines the lengths of rules when -you haven't given the lengths explicitly. -\ulist -\li You can only use |\hrule| when \TeX\ is in a vertical mode and |\vrule| -when \TeX\ is in a horizontal mode. -This requirement means that -you can't put a horizontal rule into an hbox or a vertical rule -into a vbox. -You can, however, construct a horizontal rule that looks vertical by -specifying all three dimensions and making it tall and skinny. -Similarly, you can construct a vertical rule that looks horizontal -by making it short and fat. - -\li A horizontal rule inside a vbox -has the same width as does the vbox if you haven't -given the width of the rule explicitly. -Vertical rules -inside hboxes behave analogously. -If your rules are coming out too long or too short, -check the dimensions of the enclosing box. -\endulist - -As an example, suppose we want to produce: -\display{% -\hbox{\vrule - \vbox{\hrule\vskip 3pt - \hbox{\hskip 3pt - \vbox{\hsize .7in\raggedright - \noindent Help! Let me out of here!}% - \hskip 3pt} - \vskip 3pt\hrule}% -\vrule}} -The following input will do it: -\csdisplay -\hbox{\vrule - \vbox{\hrule \vskip 3pt - \hbox{\hskip 3pt - \vbox{\hsize = .7in \raggedright - \noindent Help!! Let me out of here!!}% - \hskip 3pt}% - \vskip 3pt \hrule}% -\vrule} -| -We need to put the text into a vbox in order to get \TeX\ to process it -as a paragraph. -The four levels of boxing are really -necessary---if you doubt it, try to run this example with fewer levels. -\eix^^{rules} - - -\section Creating multiline headers or footers - -\null -\xrdef{bighead} -\bix^^{headers//multiple-line} -\bix^^{footers//multiple-line} -You can use -the ^|\headline| and ^|\footline| commands -(\xref\footline) to produce headers and footers, but they don't work properly -for headers and footers having more than one line. However, you can get -multiline headers and footers by redefining some of the subsidiary -macros in \TeX's output routine. - -For a multiline header, you need to do three things: -\olist\compact -\li Redefine the ^|\makeheadline| macro that's called from \TeX's -output routine. -\li Increase ^|\voffset| by the amount of vertical space consumed by the -extra lines. -\li Decrease ^|\vsize| by the same amount. -\endolist -\noindent The following example shows how you might do this: -\csdisplay -\advance\voffset by 2\baselineskip -\advance\vsize by -2\baselineskip -\def\makeheadline{\vbox to 0pt{\vss\noindent - Header line 1\hfil Page \folio\break - Header line 2\hfil\break - Header line 3\hfil}% - \vskip\baselineskip} -| -You can usually follow the pattern of this definition quite closely, just -substituting your own header lines and choosing an appropriate multiple -of |\baselineskip| (one less than the number of lines in the header). - -For a multiline footer, the method is similar: -\olist -\li Redefine the ^|\makefootline| macro that's called from \TeX's -output routine. -\li Decrease ^|\vsize| by the amount of vertical space consumed by the -extra lines. -\endolist -\noindent The following example shows how you might do this: -\csdisplay -\advance\vsize by -2\baselineskip -\def\makefootline{% - \lineskip = 24pt - \vbox{\raggedright\noindent - Footer line 1\hfil\break - Footer line 2\hfil\break - Footer line 3\hfil}} -| -Again, you can usually follow the pattern of this definition quite closely. -The value of |\lineskip| determines the amount of space between the -baseline of the last line -of the main text on the page and the baseline of the first line of the footer. -\eix^^{headers//multiple-line} -\eix^^{footers//multiple-line} - - -\section Finding mismatched braces - -\bix^^{braces//mismatched} -\xrdef{mismatched} -Most times when your \TeX\ input suffers from mismatched braces, you'll -get a diagnostic from \TeX\ fairly near the place where you actually -made the mistake. -But one of the most frustrating errors you can get from a \TeX\ run, -just before \TeX\ quits, is -the following: -\csdisplay -(\end occurred inside a group at level 1) -| -This indicates that there is an extra left brace -or a missing right brace somewhere -in your document, but it gives you no hint at all -about where the problem might be. So how can you find it? - -A debugging trick we've found useful -is to insert the following line or its equivalent -at five or six places equally spaced within the document (and not within -a known group): -\csdisplay -}% a fake ending -| -Let's assume the problem is an extra left brace. -If the extra left brace -is, say, between the third and fourth fake ending, -you'll get error messages from the first three fake endings but not from -the fourth one. The reason is that \TeX\ will ignore the first three -fake endings after complaining about them, -but the fourth fake ending will match -the extra left brace. -Thus you know that the extra left brace -is somewhere between the third and fourth -fake ending. -If the region of the error -is still too large for you to find it, -just remove the original set of fake endings and -repeat the process within that region. -If the problem is a missing right brace rather than an extra left brace, -you should be able to track it down once you've found its mate. - -This method doesn't work under all circumstances. In particular, it doesn't -work if your document consists of several really large groups. But often -you can find some variation on this method that will lead you to that -elusive brace. - -If all else fails, try shortening your input by removing -the last half of the file -(after stashing away the original version first!) or inserting a -|\bye| command in the middle. -If the error persists, you know it's in the first half; if it goes away, -you know it's in the second half. -By repeating this process you'll eventually find the error. -\eix^^{braces//mismatched} - - -\section Setting dimensions - -\null -\bix^^{\<dimen>} -The simplest way to set a dimension is to specify it directly, e.g.: -\csdisplay -\hsize = 6in -| -You can also specify a dimension in terms of other dimensions or as a mixture -of different units, but it's a little more work. There are two ways -to construct a dimension as such a combination: -\olist\compact -\li You can add a dimension to a dimension parameter or to a dimension -register. -For example: -\csdisplay -\hsize = 6in \advance\hsize by 3pc % 6in + 3pc -| -\li You can indicate a dimension as a multiple of a dimension -or glue parameter or register. -In this case, \TeX\ converts glue to a dimension by throwing away -the stretch and shrink. For example: -\csdisplay -\parindent = .15\hsize -\advance\vsize by -2\parskip -| -\endolist -\eix^^{\<dimen>} - - -\section Creating composite fonts - -\null -\bix^^{fonts//composite} -It's sometimes useful to create a ``composite font'', -named by a control sequence $\cal F$, in which all the characters -are taken from a font $f_1$ except for a few that are -borrowed from another font $f_2$. -You can then set text in the composite font by using $\cal F$ just as -you'd use any other font identifier. - -You can create such a composite font by defining $\cal F$ as a macro. -In the definition of $\cal F$, you first select font $f_1$ and then -define control sequences that produce the borrowed characters, -set in $f_2$. -For example, suppose that you want to -create a composite font |\britrm| which has all the characters of |cmr10| -except for the dollar sign, for which you want to borrow -the pound sterling symbol -from font |cmti10|. -The pound sterling symbol in |cmti10| happens to be in the same font position -as the dollar sign in |cmr10|. -Here's how to do it: -\csdisplay -\def\britrm{% - \tenrm % \tenrm names the cmr10 font - \def\${{\tenit\char `\$}}% \tenit names the cmti10 font. -} -| -Now whenever you start the font named |\britrm|, -|\$| will produce a pound sterling symbol. - -You can also get the same effect by changing the category codes -of the characters in question to make those characters active and then -providing a definition for the character. For example: -\csdisplay -\catcode `* = \active -\def*{{\tentt \char `\*}} -| -In this case the asterisk will be taken from the |\tentt| font. -If you then type the input line: -\csdisplay -Debbie was the * of the show. -| -it will be set as: -{\font\tentt=cmtt10% -\catcode `* = \active -\def*{{\tentt \char `\*}}% -\display{Debbie was the * of the show.}} -\noindent - -\eix^^{fonts//composite} - - -\section Reproducing text verbatim - -\null -^^{verbatim text}\xrdef{verbatim} -Verbatim text is text that is reproduced in a typeset -document just as it appeared in the input. -The most common use of verbatim text is in typesetting -computer input, -including both computer programs and input to \TeX\ itself. -^^{computer programs, typesetting} -Computer input is not easy to produce verbatim for two reasons: -\olist\compact -\li Some characters (control symbols, escape characters, braces, -etc.) have -special meanings to \TeX. -\li Ends of line and multiple spaces are translated to single spaces. -\endolist -\noindent -In order to produce verbatim text, you have to cancel the special meanings -and disable the translation. This is best done with macros. - -To cancel the special meanings, you need to change the category codes -of those characters that have special meanings. -^^{category codes//for verbatim text} -The following macro illustrates how you might do it: -\csdisplay -\chardef \other = 12 -\def\deactivate{% - \catcode`\\ = \other \catcode`\{ = \other - \catcode`\} = \other \catcode`\$ = \other - \catcode`\& = \other \catcode`\# = \other - \catcode`\% = \other \catcode`\~ = \other - \catcode`\^ = \other \catcode`\_ = \other -} -| -But beware! Once you've changed the category codes in this way, you've lost -the ability to use control sequences since there's no longer an escape -character. You need some way of getting back to the normal mode of -operation. We'll explain how to do that in a moment, after considering -the other problem: disabling the translation of spaces and ends of line. - -\PlainTeX\ has two commands that together nearly solve the problem: -^|\obeyspaces| \ctsref{\obeyspaces} and ^|\obeylines| \ctsref{\obeylines}. -The two things that they don't do are to preserve spaces at the start of -a line -and to preserve blank lines. -For that you need stronger measures---which are provided by -the ^|\obeywhitespace| macro that we are about to define. - -\TeX\ normally insists on collecting lines into paragraphs. One way to -convince it to take line boundaries literally is to turn individual lines -into paragraphs.\footnote{% -Another way is to turn the end of line character into a |\break| -command and provide infinite glue at the end of each line. -^^|\break//end of line as| -} -You can do this by redefining the end of line character to produce -the |\par| control sequence. The following three macro definitions -show how: - -^^{whitespace, preserving} -\xrdef{\obeywhitespace} -\csdisplay -\def\makeactive#1{\catcode`#1 = \active \ignorespaces} -{% The group delimits the text over which ^^M is active. - \makeactive\^^M % - \gdef\obeywhitespace{% - % Use \gdef so the definition survives the group. - \makeactive\^^M % - \let^^M = \newline % - \aftergroup\removebox % Kill extra paragraph at end. - \obeyspaces % - }% -} -\def\newline{\par\indent} -\def\removebox{\setbox0=\lastbox} - -| -A subtle point about the definition of |\obeywhitespace| is that -|^^M| must be made active both -when |\obeywhitespace| is being \emph{defined} and when -it is being \emph{used}. - -In order to be able to get back to normal operation after verbatim text, -you need to choose a character that -appears rarely if at all in the verbatim text. This character serves as -a temporary escape character. -The vertical bar (|!||) is sometimes a good choice. -With this choice, the macros: -\csdisplay -\def\verbatim{\par\begingroup\deactivate\obeywhitespace - \catcode `\!| = 0 % Make !| the new escape character. -} - -\def\endverbatim{\endgroup\endpar} - -\def\!|{!|} -| -will do the trick. Within the verbatim text, you can use a double -vertical bar (|!|!||) to denote a single one, and you end the verbatim text -with |!|endverbatim|. - -There are many variations on this technique: -\ulist -\li If a programming language has keywords, you can turn -each keyword into a command that typesets -that keyword in boldface. Each keyword in the input should then be -preceded by the temporary escape character. -\li If you have a character (again, let's assume it's the vertical bar) -that -\emph{never} appears in the verbatim text, you can make it active and -cause it to end the verbatim text. The macro definitions then go like -this: -\csdisplay -{\catcode `\!| = \active -\gdef\verbatim{% - \par\begingroup\deactivate\obeywhitespace - \catcode `!| = \active - \def !|{\endgroup\par}% -}} -| -\endulist - -The ideas presented here provide only a simple approach to typesetting -computer programs. -Verbatim reproduction is often not as revealing or easy to read as a version -that uses typographical conventions to reflect the syntax -and even the semantics of the program. -If you'd like to pursue this subject further, we recommend the following book: - -\smallskip{\narrower\noindent -Baecker, Ronald M., and Marcus, Aaron, {\sl Human Factors -and Typography for More Readable Programs}. Reading, Mass.: -Addison-Wesley, 1990.\par} - - -\section Using outer macros - -\null -^^{forbidden control sequence}^^{incomplete conditional} -If \TeX\ complains about a ``forbidden control sequence'', -you've probably used an outer macro in a non-outer context -\seeconcept{outer}. -^^{macros//outer} -An outer macro is one whose definition is -preceded by ^|\outer|. -An outer macro can't be used in a macro argument, in a macro definition, -in the preamble of an alignment, or in conditional -text, i.e., text that will be expanded only when a conditional test -has a particular outcome. -^^{alignments//outer control sequence in} -Certain macros have been defined as outer because they aren't -intended to be used in these contexts and such a use is probably an error. -The only ways around this problem are to redefine the -macro or to move its use to an acceptable context. - -Using an outer macro in an improper context can also cause -\TeX\ to complain about a runaway situation or an incomplete conditional. -The problem can be hard to diagnose because the error message -gives no hint as to what it is. -If you get such an error message, look around for a call on an outer macro. -You may not always know that a particular macro is outer, but the -command `^|\show||\a|' \ctsref{\show} -will show you the definition of |\a| and also tell you -if |\a| is outer. - - -\section Changing category codes - -\null -\bix^^{category codes//changing} -Sometimes it's useful to make local changes to the category code of a -character in some part of your document. For instance, you might be -typesetting a computer program -^^{computer programs, typesetting} -or something else that uses normally active -characters for special purposes. You'd then want to deactivate those -characters so that \TeX\ will treat them as being like any other character. - -If you make such a local change to the category code of a character, -you may sometimes be dismayed to find that -\TeX\ seems to be paying no attention whatsoever to your change. -Two aspects of \TeX's behavior are likely causes: -\olist -\li \TeX\ determines the category code of an input character -^^{input characters} -and attaches it to the character when it reads in the character. -Let's say you read in a tilde (|~|) and later -change the category code of tildes, -but make the change -before \TeX's stomach has actually processed that \emph{particular\/} -tilde \seeconcept{\anatomy}. -\TeX\ will still respond to that -tilde using the category code as it was before the change. -This difficulty typically arises -when the tilde is part of an argument to a macro -and the macro itself changes the category code of tilde. - -\li When \TeX\ is matching a call of a macro to the definition of that macro, -it matches not just the characters in the parameter pattern but also their -category codes. -^^{macros//arguments of} -^^{macros//parameters of} -If the category code of a pattern character isn't equal to -the category code of the same character in the call, \TeX\ won't consider -the characters as matching. -This effect can produce mysterious results because it -\emph{looks} as though the pattern should match. -For example, if you've defined a macro: -\csdisplay -\def\eurodate#1/#2/#3{#2.#1.#3} -| -then the slash character must have the same category code when you -call |\eurodate| as it had when you defined |\eurodate|. -\endolist -If the problem arises because the troublesome character is an argument to -a macro, then -the usual cure is to redefine the macro as a pair -of macros |\mstart| and |\mfinish|, where -|\mstart| is to be called before the argument text -and |\mfinish| is to be called after it. -|\mstart| then sets up the category codes and |\mfinish| undoes the change, -perhaps just by ending a group. -\eix^^{category codes//changing} - - -\section Making macro files more readable - -\null -\bix^^{macros//making readable} -You can make a file of macros more readable by -setting the category codes of space to $9$ (ignored -character) and ^|\endlinechar| \ctsref{\endlinechar} to $-1$ -at the beginning of the file. -Then you can use spaces and ends of line freely in the -macro definitions without getting -unwanted spaces when you call the macros. -The ignored characters won't generate spaces, but they'll still -act as terminators for control sequences. -If you really do want a space, you can still get it with the ^|\space| -command \ctsref\space. - -Of course you'll need to restore the category codes of space and end of line -to their normal values ($10$ and $5$, respectively) at the end of the file. -You can do this either by enclosing the entire file in a group or by -restoring the values explicitly. If you choose to enclose the file in a group, -then you should also set ^|\globaldefs| to $1$ so that -all the macro definitions will be global and thus visible outside of the group. - -A miniature example of a macro file of this form is: - -\csdisplay -\catcode `\ = 9 \endlinechar = -1 - -\def \makeblankbox #1 #2 { - \hbox{\lower \dp0 \vbox{\hidehrule {#1} {#2} - \kern -#1 % overlap rules - \hbox to \wd0{\hidevrule {#1} {#2}% - \raise \ht0 \vbox to #1{} % vrule height - \lower \dp0 \vtop to #1{} % vrule depth - \hfil \hidevrule {#2} {#1} } - \kern -#1 \hidehrule {#2} {#1} } } - -\def\hidehrule #1 #2 { - \kern -#1 \hrule height#1 depth#2 \kern -#2 } -\def\hidevrule #1 #2 { - \kern -#1 {\dimen0 = #1 \advance \dimen0 by #2 - \vrule width \dimen0 } \kern -#2 } - -\catcode `\ = 10 \endlinechar = `\^^M -| -\noindent -Without the changed category codes, -these macros would have to be written much more compactly, using fewer -spaces and more `|%|'s at the ends of lines. -\eix^^{macros//making readable} - -\endchapter\byebye diff --git a/Master/texmf-doc/doc/english/impatient/usebook.tex b/Master/texmf-doc/doc/english/impatient/usebook.tex deleted file mode 100644 index e9d01c6841f..00000000000 --- a/Master/texmf-doc/doc/english/impatient/usebook.tex +++ /dev/null @@ -1,243 +0,0 @@ -% This is part of the book TeX for the Impatient. -% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. -% See file fdl.tex for copying conditions. - -\input macros -\chapter{Using this book} - -\chapterdef{usebook} - -This book is a do-it-yourself guide and handbook for \TeX. -Here in this section we tell you how to use the book to maximum advantage. - -We recommend that you first either read or skim in sequence Sections -\chapternum{usebook} through \chapternum{examples}, -which tell you what you need to know in order to get started using \TeX. -If you've already had experience using \TeX, it will still be helpful -to know what kinds of information are in these sections of the book. -Sections~\chapternum{concepts}--\chapternum{tips}, which -occupy most of -the rest of the book, are designed to be accessed randomly. -Nevertheless, if you're the kind of person who likes to read reference manuals, -you'll find that it \emph{is} possible to proceed sequentially if you're -willing to take a lot of detours at first. - -In \chapterref{usingtex}, ``Using \TeX'', -we explain how to produce a \TeX\ document from a -\TeX{} input file. -We also describe the conventions for preparing that input file, -explain a little about how \TeX{} works, and tell you about additional -resources that are available. -Reading this section will help you understand -the examples in the next section. - -\chapterref{examples}, ``Examples'', -contains a sequence of -examples that illustrate the use of \TeX. -Each example consists of a page of output -together with the input that we used to create it. -These examples will orient you and help you -locate the more detailed material that you'll need as you go. -By seeing which commands are used in the input, you'll know -where to look for more detailed information on how to achieve -the effects shown in the output. -The -examples can also serve as models for simple documents, although we must -caution you that -because we've tried to pack a variety of \TeX\ commands into a small -number of pages, -the examples are not necessarily illustrations of good or complete -document~design. - -As you read the explanation of a command, you may encounter -some unfamiliar technical terms. -In \chapterref{concepts}, ``Concepts'', -we define and explain these terms. -We also discuss other topics that aren't covered -elsewhere in the book. -The inside back cover of the book contains a list of all the -concepts and the pages where they are described. -We suggest that you make a copy of this list and keep it nearby -so that you'll be able to identify and look up an unfamiliar -concept immediately. - -\TeX's commands are its primary vocabulary, -and the largest part of this book is -devoted to explaining them. In Sections~\chapternum{paras} -through~\chapternum{general} we describe the commands. -You'll find general information about the command descriptions -on \xrefpg{cmddesc}. -The command descriptions are arranged -functionally, rather like a thesaurus, so if you know what you want to -do but you don't know which command does it for you, you can use the -table of contents to guide you to the right group of commands. -Commands that we think are both particularly useful and easy to understand -are indicated with a pointing~hand~(\hand). - -\chapterref{capsule}, ``Capsule summary of commands'', is a -specialized index that complements the more complete descriptions -in Sections~\chapternum{paras}--\chapternum{general}. -It lists \TeX's commands -alphabetically, with a brief explanation of each command -and a reference to the page -where it is described more completely. The capsule summary -will help you when you just want a quick reminder of what a command -does. - -\TeX\ is a complex program that occasionally works its will in -mysterious ways. -In \chapterref{tips}, ``Tips and techniques'', -we provide advice on solving a variety of specific -problems that you may encounter from time to time. -And if you're stumped by -\TeX's error messages, you'll find succor in \chapterref{errors}, -``Making sense of error messages''. - -The gray tabs on the side of the book will help you locate parts of the -book quickly. They divide the book into the following major parts: -\olist -\li general explanations and examples -\li concepts -\li descriptions of commands (five shorter tabs) -\li advice, error messages, and the |eplain.tex| macros -\li capsule summary of commands -\li index -\endolist - -In many places we have provided page references to -^{\texbook} (see \xrefpg{resources} for a citation). -These references apply to the seventeenth edition of \texbook. -For other editions, some references may be off by a page or two. - - -\section Syntactic conventions - -In any book about preparing input for a computer, -it's necessary to indicate clearly the literal characters that should be typed -and to distinguish those characters from the explanatory text. -We use the Computer Modern typewriter font for {\tt literal input -like this}, and also for the names of \TeX{} commands. -When there's any possibility of confusion, we enclose \TeX\ -input in single quotation marks, `{\tt like this}'. -However, we occasionally use parentheses when we're indicating single -characters such as (|`|) (you can see why). - -For the sake of your eyes we usually just put spaces -where you should put spaces. In some places where -we need to emphasize the space, however, -we use a `\visiblespace' character -{\catcode `\ =\other\pix^^| |}% -to indicate it. -Naturally enough, this character is called a \emph{visible space}. -\pix^^{spaces//visible} - - -\section Descriptions of the commands - -\xrdef{cmddesc} -Sections~\chapternum{paras}--\chapternum{general} contain -a description of what nearly every \TeX\ command does. ^^{commands} -Both the primitive commands ^^{primitive//command} -and those of ^{\plainTeX} are covered. -The primitive commands are those built into the \TeX\ computer program, while -the \plainTeX{} commands are defined in a standard file of -auxiliary definitions (see \xref\plainTeX). -The only commands we've omitted are those that are used purely locally -in the definition of \plainTeX\ (\knuth{Appendix~B}). -The commands are organized as follows: -\ulist\compact -\li ``Commands for composing paragraphs'', \chapterref{paras}, -deal with characters, words, lines, and entire paragraphs. -\li ``Commands for composing pages'', \chapterref{pages}, -deal with pages, their components, and the output routine. -\li ``Commands for horizontal and vertical modes'', \chapterref{hvmodes}, -have corresponding or identical -forms for both horizontal modes (paragraphs and hboxes) and vertical -modes (pages and vboxes). -These commands provide boxes, spaces, rules, leaders, -and alignments. -\li ``Commands for composing math formulas'', \chapterref{math}, -provide capabilities for constructing math formulas. -\li ``Commands for general operations'', \chapterref{general}, -provide -\TeX's programming features and -everything else that doesn't fit into any of the other sections. -\endulist -You should think of these categories as being suggestive rather than -rigorous, because the commands don't really fit neatly into these -(or any other) categories. - -Within each section, the descriptions of the commands are organized -by function. When several commands are closely related, they are described as -a group; otherwise, each command has its own explanation. -The description of each command -includes one or more examples and the output -produced by each example when examples are appropriate (for -some commands they aren't). -When you are looking at a subsection containing functionally related -commands, be sure to check the end of a subsection for a ``see also'' -item that refers you to related commands that are described elsewhere. - -Some commands are closely related to certain concepts. -For instance, the |\halign| and |\valign| commands are related to -``alignment'', the |\def| -command is related to ``macro'', -and the |\hbox| and |\vbox| commands are related to ``box''. -In these cases we've usually given a bare-bones des\-crip\-tion of the -commands themselves and explained the underlying ideas -in the concept. - -The examples associated with the commands have been typeset with -^|\parindent|, the paragraph indentation, set to zero so that -paragraphs are normally unindented. -This convention makes the examples easier to read. -In those examples where the paragraph indentation is essential, -we've set it explicitly to a nonzero value. - -The pointing hand in front of a command or a group of commands indicates -that we judged this command or group of commands to be particularly useful -and easy to understand. - -Many commands expect ^{arguments} of one kind or another -(\xref{arg1}). The arguments of -a command give \TeX\ additional information that it needs in order to -carry out the command. Each argument is indicated by an italicized -term in angle brackets that indicates what kind of argument it~is: - -\display{% -\halign{\<#>\quad&#\hfil\cr -argument&a single token or some text enclosed in braces\cr -charcode&a character code, i.e., an integer between $0$ and $255$\cr -dimen&a dimension, i.e., a length\cr -glue&glue (with optional stretch and shrink)\cr -number&an optionally signed integer (whole number)\cr -register&a register number between $0$ and $255$\cr -}} -^^{\<dimen>} -^^{\<argument>} -^^{\<charcode>} -^^{\<glue>} -^^{\<number>} -^^{\<register>} - -\noindent -All of these terms are explained in more detail in \chapterref{concepts}. -In addition, we sometimes use terms such as \<token list> that are either -self-explanatory or explained in the description of the command. -Some commands have special formats that require either braces or -particular words. -These are set in the same bold font that we use -for the command headings. - -Some commands are parameters (\xref{introparms}) or table entries. -^^{parameters//as commands} -This is indicated in the command's listing. -You can either use a parameter as an argument or assign a value to it. -The same holds for table entries. -We use the term ``parameter'' to refer to entities such as |\pageno| -that are actually registers but behave just like parameters. -^^{registers//parameters as} - - -\endchapter -\byebye diff --git a/Master/texmf-doc/doc/english/impatient/usermacs.tex b/Master/texmf-doc/doc/english/impatient/usermacs.tex deleted file mode 100644 index 71d8d64bc26..00000000000 --- a/Master/texmf-doc/doc/english/impatient/usermacs.tex +++ /dev/null @@ -1,1168 +0,0 @@ -% 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 deleted file mode 100644 index 35ec5310d23..00000000000 --- a/Master/texmf-doc/doc/english/impatient/usingtex.tex +++ /dev/null @@ -1,822 +0,0 @@ -% This is part of the book TeX for the Impatient. -% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. -% See file fdl.tex for copying conditions. - -\input macros -\chapter{Using \TeX} - -\chapterdef{usingtex} - -% Avoid underfull box complaint about the empty paragraph -% that precedes the first section heading. -% -\def\par{{\parfillskip = 0pt plus 1fil\endgraf}\let\par=\endgraf} -\vglue-\abovesectionskip % we've skipped enough already -\vskip0pt % Make \combineskips work. - -\section Turning input into ink - -\subsection Programs and files you need - -In order to produce a \TeX\ document, you'll need to run the \TeX\ -program and several related programs as well. You'll also need -supporting files for \TeX\ and possibly for these other programs. In -this book we can tell you about \TeX, but we can't tell you about the -other programs and the supporting files except in very general terms -because they depend on your local \TeX\ environment. The people who -provide you with \TeX\ should be able to supply you with what we call -\emph{local information}. -\pix^^{local information} -The local information tells you how to -start up \TeX, how to use the related programs, and how to gain access -to the supporting files. - -Input to \TeX\ consists of a file of ordinary text that you can prepare -with a ^{text editor}. A \TeX\ input file, unlike an input file for a -typical word processor, doesn't ordinarily contain any invisible -^{control characters}. -Everything that \TeX\ sees is visible to you too if you -look at a listing of the file. - -Your input file may turn out to be little more than a skeleton that -calls for other input files. \TeX\ users often organize large documents -such as books this way. You can use the ^|\input| command (\xref\input) -to embed one input file within another. In particular, you can use -|\input| to incorporate files containing \emph{macro definitions}---% -^^{macros//in auxiliary files} -auxiliary definitions that enhance \TeX's capabilities. -If any macro files are available at your \TeX\ installation, the local -information about \TeX\ should tell you how to get at the macro files -and what they can do for you. The standard form of \TeX, -the one described in this book, incorporates a -collection of macros and other definitions known as ^{\plainTeX} -(\xref{\plainTeX}). - -When \TeX\ processes your document, it produces a file called the -^{\dvifile}. The abbreviation ``|dvi|'' stands for ``device -independent''. The abbreviation was chosen because the information in -the \dvifile\ is independent of the device that you use to print or -display your document. - -To print your document or view it with a \emph{previewer}, -^^{previewer} -you need to process the ^{\dvifile} with -a \emph{device driver\/} program. -^^{device drivers} -(A previewer is a program that -enables you to see on a screen some approximation of what the typeset -output will look like.) -Different output devices usually -require different device drivers. -After running the device driver, -you may also need to transfer the output of the device driver to the -printer or other output device. -^^{printers} ^^{output devices} -The local information about \TeX\ should tell -you how to get the correct device driver and use it. - -Since \TeX\ has no built-in knowledge of particular fonts, it uses -\emph{font files} -^^{font files} -to obtain information about the fonts used in your -document. The font files should also be part of your local \TeX\ -environment. Each font normally requires two files: one containing the -dimensions of the characters in the font (the \emph{metrics file}) -^^{metrics file} -and one containing the shapes of the characters (the \emph{shape file}). -^^{shape file} -Magnified versions of a font share the metrics file but have -different shape files. ^^{magnification} Metrics files are sometimes -referred to as ^{\tfmfile}s, and the different varieties of shape files -are sometimes referred to as ^{\pkfile}s, ^{\pxlfile}s, and ^{\gffile}s. -These names correspond to the names of the files that \TeX\ and its -companion programs use. For example, |cmr10.tfm| is the metrics file -for the |cmr10| font (10-point Computer Modern Roman). - -\TeX\ itself uses only the metrics file, since it doesn't care what the -characters look like but only how much space they occupy. The device -driver ordinarily uses the shape file, since it's responsible for -creating the printed image of each typeset character. Some device -drivers need to use the metrics file as well. Some device drivers can -utilize fonts that are resident in a printer and don't need shape files -for those fonts. -\secondprinting{\vfill\eject} - - -\subsection Running {\TeX} - -\bix^^{running \TeX} -You can run \TeX\ on an input file |screed.tex| by typing -^^{input files} -something like `|run tex|' or just `|tex|' (check your local information). -\TeX\ will respond with something like: -% 4/23/90 is Shakespeare's 426th birthday, and Karl's 26th. -\csdisplay -This is TeX, Version 3.0 (preloaded format=plain 90.4.23) -** -| -The ``preloaded format'' here refers to a predigested form of the -^{\plainTeX} macros that come with \TeX. -You can now type `|screed|' to get \TeX\ to process your file. -When it's done, you'll see something like: -\csdisplay -(screed.tex [1] [2] [3] ) -Output written on screed.dvi (3 pages, 400 bytes). -Transcript written on screed.log. -| -displayed on your terminal, or printed in the record of your -run if you're not working at a terminal. Most of this output is -self-explanatory. -The numbers in brackets are page numbers that \TeX\ displays when it -ships out each page of your document to the \dvifile. -\TeX\ will usually assume an -extension `|.tex|' to an input file name -if the input file name you gave doesn't -have an extension. For some forms of \TeX\ you may be able to -invoke \TeX\ directly for an input file by typing: -\csdisplay -tex screed -| -or something like this. - -Instead of providing your \TeX\ input from a file, you can type it directly at -your terminal. To do so, type `^|\relax|' instead of `|screed|' at the -`|**|' prompt. -\TeX\ will now prompt you with a `|*|' for each line of input and interpret -each line of input as it sees it. -To terminate the input, type a command such as `|\bye|' that tells \TeX\ -you're done. -Direct input is sometimes a handy way of experimenting with \TeX. - -When your input file contains other embedded input files, the displayed -information indicates when \TeX\ begins and ends processing each -embedded file. -^^{input files//embedded} -\xrdef{infiles} -\TeX\ displays a left parenthesis and the file name -when it starts working on a file and displays the corresponding right -parenthesis when it's done with the file. -If you get any ^{error messages} in the displayed output, you can match -them with a file by looking for the most recent unclosed left parenthesis. - -For a more complete explanation of how to run \TeX, -see \knuth{Chapter~6} and your ^{local information}. -\eix^^{running \TeX} - - -\section Preparing an input file - -In this section we explain some of the conventions that you must follow in -preparing input for \TeX\null. Some of the information given here also -appears in the examples in \chapterref{examples} of this book. -^^{input, preparing} - -\subsection Commands and control sequences - -\bix^^{commands} -\bix^^{control sequences} -Input to \TeX\ consists of a sequence of commands that tell \TeX\ how to -typeset your document. Most characters act as commands of a particularly -simple kind: ``typeset me''. The letter `|a|', for instance, is a -command to typeset an `a'. But there's another kind of command---a -\emph{control sequence}---that gives \TeX\ a more elaborate -instruction. A control sequence ordinarily starts with a backslash -(|\|), though you can change that convention if you need to. -\xrdef{@backslash} -For instance, the input: - -\csdisplay -She plunged a dagger (\dag) into the villain's heart. -| -contains the control sequence |\dag|; it produces the typeset output: -\display{% -She plunged a dagger (\dag) into the villain's heart. -} -\noindent Everything in this example except for the |\dag| and the spaces -acts like a ``typeset me'' command. We'll explain more about spaces -on \xrefpg{spaces}. - -There are two kinds of control sequences: \emph{control words} -^^{control words} -and \emph{control symbols}: -^^{control symbols} -\ulist\compact -\li A control word consists of a -backslash followed by one or more letters, e.g., `|\dag|'. -The first character that isn't a letter marks the end -of the control word. -\li A control symbol consists of a backslash followed by a single character -that isn't a letter, e.g., `|\$|'. -The character can be a space or even the end of a line (which is a perfectly -legitimate character). -\endulist -\noindent -A control word (but not a control symbol) -absorbs any spaces or ends of line that follow it. -^^{control sequences//absorbing spaces} -If you don't want to lose a space after a control word, -follow the control sequence with a ^{control space} -(|\!visiblespace|) or with `|{}|'. Thus either: -\csdisplay -The wonders of \TeX\!visiblespace!.shall never cease!! -| -or:\hfil\ -\csdisplay -The wonders of \TeX{} shall never cease!! -| -produces: -\display{% -The wonders of \TeX{} shall never cease! -} -\noindent rather than: -\display{% -The wonders of \TeX shall never cease! -} -\noindent -which is what you'd get if you left out the `|\|\visiblespace' -or the `|{}|'. - -Don't run a control word together with the text that follows it---\TeX\ -won't know where the control word ends. For instance, the |\c| control -sequence places a cedilla accent on the character that follows it. The -French word {\it gar\c con\/} must be typed as -`|gar\c!visiblespace!.con|', not `|gar\ccon|'; if you write the latter, -\TeX\ will complain about an undefined control sequence |\ccon|. - -A control symbol, on the other hand, doesn't absorb anything that -follows it. Thus you must type `\$13.56' as `|\$13.56|', not -`|\$!vs13.56|'; the latter form would produce `\hbox{\$ 13.56}'. -However, those accenting commands that are named by control symbols are -defined in such a way that they produce the effect of absorbing a -following space. Thus, for example, you can type the French word {\it -d\'eshabiller\/} either as `|d\'eshabiller|' or as -`|d\'!visiblespace!.eshabiller|'. - -Every control sequence is also a command, -but not the other way around. -^^{commands//versus control sequences} -^^{control sequences//versus commands} -For instance, the letter `|N|' -is a command, but it isn't a control sequence. -In this book we ordinarily use ``command'' rather than -``control sequence'' when either term would do. -We use ``control sequence'' when we want to emphasize aspects of \TeX\ -syntax that don't apply to commands in general. - -\eix^^{control sequences} -\eix^^{commands} - - -\subsection Arguments - -\xrdef{arg1} -Some commands need to be followed by one or more -\emph{arguments} ^^{arguments} -that help to determine what the command does. -For instance, the |\vskip| command, which -tells \TeX\ to skip down (or up) the page, -expects an argument specifying how much space to skip. To skip -down two inches, you would type `|\vskip 2in|', where |2in| -is the argument of |\vskip|. - -Different commands expect different kinds of arguments. Many commands -expect dimensions, such as the |2in| in the example above. -Some commands, particularly those defined by macros, -expect arguments that are either a single character or some -text enclosed in braces. -Yet others require that their arguments be enclosed in braces, i.e., -they don't accept single-character arguments. -The description of each command in this book tells you what kinds of arguments, -if any, the command expects. -In some cases, required braces define a group (see \xref{bracegroup}). - -\secondprinting{\vfill\eject} - - -\subsection Parameters - -\xrdef{introparms} -Some commands are parameters (\xref{parameter}). -^^{parameters//as commands} -You can use a parameter in either of two ways: -\olist -\li You can use the value of a parameter -as an argument to another command. For example, the command -\hbox{|\vskip\parskip|} -causes a vertical skip by the value of the |\parskip| (paragraph skip) -glue parameter. -\li You can change the value of the parameter by assigning -something to it. For example, the assignment \hbox{|\hbadness=200|} -causes the value of the |\hbadness| number parameter to be $200$. -\endolist -\noindent -We also use the term ``parameter'' to refer to entities such as |\pageno| -that are actually registers but behave just like parameters. -^^{registers//parameters as} - -Some commands are names of tables. These commands are used like -parameters, except that they require an additional argument that -specifies a particular entry in the table. For example, |\catcode| names -a table of category codes (\xref{category code}). Thus -the command -\hbox{|\catcode`~=13|} sets the category code of the `|~|' -character to $13$. - - -\subsection Spaces - -\xrdef{spaces} -\bix^^{spaces} -You can freely use extra spaces in your input. Under nearly all circumstances -\TeX\ treats several spaces in a row as being equivalent to a -single space. For instance, it doesn't matter whether you put one space -or two spaces after a ^{period} in your input. Whichever you do, \TeX\ -performs its end-of-sentence maneuvers and leaves the appropriate -(in most cases) amount of space after the period. -\TeX\ also treats the end of an input line as equivalent to a space. -Thus you can end your input lines wherever it's convenient---% -\TeX\ makes input -lines into -paragraphs in the same way no matter where the line breaks are in your -input. - -A blank line in your input marks the end of a paragraph. -^^{paragraphs//ending} -Several blank lines are equivalent to a single one. - -\TeX\ ignores input spaces within math formulas (see below). Thus you can -include or omit spaces anywhere within a math formula---\TeX\ doesn't care. -Even within a math formula, however, -you must not run a control word together with a following letter. - -If you are defining your own macros, you need to be particularly careful about -where you put ends of line in their definitions. -It's all too easy to define a macro that produces an -^{unwanted space} in addition to whatever else it's supposed to produce. -We discuss this problem elsewhere since it's somewhat -technical; see \xrefpg{unwantedspace}. - -A space or its equivalent between two words in your input doesn't simply turn -into a space character in your output. -A few of these input spaces turn into ends of lines -in the output, -since input lines generally don't correspond to output lines. -The others turn into spaces of variable width called ``glue'' (\xref{glue}), -which has a natural size (the size it ``wants to be'') -but can stretch or shrink. -When \TeX\ is typesetting a paragraph -that is supposed to have an even right margin (the usual -case), it adjusts the widths of the glue in each line -to get the lines to end at the margin. -(The last line of a paragraph is an exception, since it isn't ordinarily -required to end at the right margin.) - -You can prevent an input space from turning into an end of line by using a -^{tie} (^|~|). -For example, you wouldn't want \TeX\ to put a line break between the -`Fig.' and `8' of `Fig.~8'. -By typing `|Fig.~8|' you can prevent such a line break. -\eix^^{spaces} -\needspace{2in} - -\subsection Comments - -\xrdef{comments} -\pix\bix^^{comments} -You can include comments in your \TeX\ input. -When \TeX\ sees a comment it just passes over it, so -what's in a comment doesn't affect your typeset document in any way. -Comments are useful for -providing extra information about what's in your input file. -For example: -\csdisplay -% ========= Start of Section `Hedgehog' ========= -| - -{\indexchar % }% -A comment starts with a percent sign (|%|) and extends to the end of the -input line. -\TeX\ ignores not just the comment but the end of the line as well, so -comments have another very -important use: connecting two lines so that the end of line -^^{line breaks//deleting} -between them is invisible to \TeX\ and doesn't generate -an output space or an end of line. -For instance, if you type: -\csdisplay -A fool with a spread% -sheet is still a fool. -| -you'll get: -\display{ -A fool with a spread% -sheet is still a fool. -} -\eix^^{comments} - - -\subsection Punctuation - -\null -\xrdef{periodspacing} -\TeX\ normally adds some extra space after what it thinks is a -^{punctuation} mark at the end of a sentence, -namely, `^|.|', `^|?|', or `|!!|' \indexchar ! -^^{period} ^^{question mark} ^^{exclamation point} -followed by an input space. -\TeX\ doesn't add -the extra space if the punctuation mark follows -a capital letter, though, because it assumes the capital -letter to be an initial in someone's name. -You can force the extra space where it wouldn't otherwise occur by -typing something like: -\csdisplay -A computer from IBM\null? -| -The |\null| doesn't produce any output, but it does prevent \TeX\ -from associating the capital `M' with the question mark. -On the other hand, you can cancel the -extra space where it doesn't belong by typing a control space -after the punctuation mark, e.g.: -\csdisplay -Proc.\!visiblespace!.Royal Acad.\!visiblespace!.of Twits -| -so that you'll get: -\display{Proc.\ Royal Acad.\ of Twits} -\noindent rather than: -\display{Proc. Royal Acad. of Twits} - -Some people prefer not to leave more space after punctuation at the -end of a sentence. You can get this effect with the -^|\frenchspacing| command (\xref\frenchspacing). -|\frenchspacing| is often recommended for ^{bibliographies}. - -For single ^{quotation marks}, you should use the left and right -single quotes -(|`| and |'|) on your keyboard. For left and right -double quotation marks, use two left single -quotes or two right single quotes (|``| or |''|) rather -than the double quote (|"|) on your keyboard. -The keyboard double quote -will in fact give you a right double quotation mark in -many fonts, but the two right single quotes -are the preferred \TeX\ style. -For example: - -\vbox{% -\csdisplay -There is no `q' in this sentence. -``Talk, child,'' said the Unicorn. -She said, ``\thinspace`Enough!!', he said.'' -| -}% -These three lines yield: -\display{\par\restoreplainTeX -There is no `q' in this sentence. -\par ``Talk, child,'' said the Unicorn. -\par She said, ``\thinspace`Enough!', he said.'' -} -\noindent -The |\thinspace| in the third input line prevents -the single quotation mark from coming -too close to the double quotation marks. -Without it, you'd just see three -nearly equally spaced quotation marks in a row. - -\TeX\ has three kinds of ^{dashes}: -\ulist\compact -\li Short ones (hyphens) like this ( - ). You get them by typing~`^|-|'. -\li Medium ones (en-dashes) like this ( -- ). You get them by typing~`^|--|'. -\li Long ones (em-dashes) like this ( --- ). You get them by typing~`^|---|'. -\endulist -\noindent -Typically you'd use hyphens to indicate compound words like -``will-o'-the-wisp'', -en-dashes to indicate -page ranges such as ``pages~81--87'', and em-dashes to indicate -a break in continuity---like this. - - -\subsection Special characters - -Certain characters have special meaning to \TeX, so you shouldn't use them -in ordinary text. They are: - -\csdisplay - $ # & % _ ^ ~ { } \ -| -^^|$//in ordinary text| -^^|#//in ordinary text| -^^|&//in ordinary text| -^^|_//in ordinary text| -^^|^//in ordinary text| -^^|~//in ordinary text| -^^|%//in ordinary text| -^^|{//in ordinary text| -^^|}//in ordinary text| -{\recat!ttidxref[\//in ordinary text]] -\noindent -In order to produce them in your typeset document, -you need to use circumlocutions. For the first five, -you should instead type: -^^|\$| -^^|\#| -^^|\&| -^^|\%| -^^|\_| -\csdisplay - \$ \# \& \% \_ -| - -\noindent -For the others, you need something more elaborate: - -\csdisplay - \^{!visiblespace} \~{!visiblespace} $\{$ $\}$ $\backslash$ -| - - -\subsection Groups - -\bix^^{groups} -A \emph{group} -consists of material enclosed in matching left and right braces (|{| and -|}|). -^^|{//starting a group| -^^|}//ending a group| -By placing a command within a group, you can limit its effects to -the material within the group. -For instance, the |\bf| command tells \TeX\ to set -something in {\bf boldface} type. If you were to put |\bf| into your input -and do nothing else to counteract it, everything in your document following the -|\bf| would be set in boldface. -By enclosing |\bf| in a group, -you limit its effect to the group. For example, if you type: -\csdisplay -We have {\bf a few boldface words} in this sentence. -| -\noindent you'll get: -\display{We have {\bf a few boldface words} in this sentence.} - -\noindent You can also use a group to limit the effect of -an assignment to one of \TeX's parameters. -These parameters contain values that affect how \TeX\ typesets your document. -For example, the value of the |\parindent| -parameter specifies the indentation at the beginning of a paragraph. -The assignment |\parindent = 15pt| -sets the indentation to $15$ printer's points. -By placing this assignment at the beginning -of a group containing a few paragraphs, you can change -the indentation of just those paragraphs. If you don't enclose -the assignment in a group, -the changed indentation will apply to the rest of the document (or up to the -next assignment to |\parindent|, if there's a later one). - -\xrdef{bracegroup} -Not all pairs of braces indicate a group. -In particular, the braces associated with an argument for which the -braces are \emph{not} required don't indicate a group---they just -serve to delimit the argument. -Of those commands that do require braces for their arguments, -some treat the braces as defining a group -and the others interpret the argument in some special way that depends on -the command.\footnote -{More precisely, for primitive commands either -the braces define a group or they enclose tokens that aren't processed in -\TeX's stomach. -For |\halign| and |\valign| the group has a trivial -effect because everything within the braces either doesn't reach the stomach -(because it's in the template) or is enclosed in a further inner group. -^^|\halign//grouping for| -^^|\valign//grouping for| -} -\eix^^{groups} - - -\subsection Math formulas - -\bix^^{math} -\xrdef{mathform} -A math formula can appear in text (\emph{text math}) -^^{text math} -or set off on a line by itself -with extra vertical space around it (\emph{display math}). -^^{display math} -You enclose a text formula in single dollar signs (|$|) -and a displayed formula in double dollar signs (|$$|). -\ttidxref{$}\ttidxref{$$} -For example: - -\csdisplay -If $a<b$, then the relation $$e^a < e^b$$ holds. -| -\noindent This input produces: -\display{\centereddisplays -If $a<b$, then the relation $$e^a < e^b$$ holds.} -\smallskip -\noindent \chapterref{math} describes the commands that are useful -in math formulas. -\eix^^{math} - - -\section How \TeX\ works - -In order to use \TeX\ effectively, it helps to -have some idea of how \TeX\ goes about -its activity of transmuting input into output. -You can imagine \TeX\ as a kind of organism with ``eyes'', -``mouth'', ``gullet'', -``stomach'', and ``intestines''. -Each part of the organism transforms its input in some way and passes -the transformed input to the next stage. - -The ^{eyes} transform an input file into a sequence of characters. -The ^{mouth} transforms the sequence of characters into a sequence of -\emph{tokens}, -^^{tokens} -where each token is either a single character or a control sequence. -^^{control sequences//as tokens} -The gullet expands the tokens into a sequence of -\emph{primitive commands}, which are also tokens. -^^{expanding tokens} -The ^{stomach} carries out the operations specified by the primitive commands, -producing a sequence of pages. -Finally, the ^{intestines} transform each page into the form required -for the \dvifile\ and send it there. -^^{\dvifile//created by \TeX's intestines} -These actions are described in more detail -in \chapterref{concepts} under \conceptcit{\anatomy}. -^^{\anatomy} - -The real typesetting goes on in the stomach. -The commands instruct \TeX\ to typeset such-and-such a character in -such-and-such a font, to insert an interword space, to end a paragraph, and -so on. -Starting with individual typeset characters and other simple typographic -elements, \TeX\ builds up a page ^^{pages} as a nest of -^{boxes} within boxes within boxes \seeconcept{box}. -Each typeset character occupies a box, and so does an entire page. -A box can contain not just smaller boxes but also \emph{glue} ^^{glue} -(\xref{glue}) and a few other things. -The glue produces -space between the smaller boxes. -An important property of glue is that it can stretch and shrink; -thus \TeX\ can make a box -larger or smaller by stretching or shrinking -the glue within~it. - -Roughly speaking, a line is a box containing a sequence of character boxes, -and a page is a box containing a sequence of line boxes. -There's glue between the words of a line and between the lines of a page. -\TeX\ stretches or shrinks -the glue on each line so as to make the right margin -of the page come out even and the glue on each page -so as to make the bottom margins of different pages be equal. -Other kinds of typographical elements can also appear in a line or in a page, -but we won't go into them here. - -As part of the process of assembling pages, \TeX\ needs to break paragraphs -into lines and lines into pages. The stomach first sees a paragraph as one -long line, in effect. It inserts \emph{line breaks} -^^{line breaking} -in order to transform -the paragraph into a sequence of lines of the right length, performing a -rather elaborate analysis in order to choose the set of breaks -that makes the paragraph look best -\seeconcept{line break}. -The stomach carries out a similar -but simpler process in order to transform a sequence of lines into a page. -Essentially the stomach accumulates lines until no more lines can fit on the -page. It then chooses a single place to break the page, putting the lines -before the break on the current page -and saving the lines after the break for the -next page \seeconcept{page break}. ^^{page breaks//inserted by \TeX's stomach} - -When \TeX\ is assembling an entity from a list of items (boxes, glue, etc.), -it is in one of six -\emph{modes} ^^{modes} (\xref{mode}). -The kind of entity it is assembling defines the mode that it is in. -There are two ordinary modes: ordinary horizontal mode for assembling -paragraphs (before they are broken into lines) -and ordinary vertical mode for assembling pages. -There are two restricted modes: -restricted horizontal mode for appending items horizontally to form -a horizontal box -and internal vertical mode for appending items vertically to form -a vertical box (other than a page). -Finally, there are two math modes: text math mode for assembling math formulas -within a paragraph and display math mode for assembling math formulas that are -displayed on lines by themselves (see ``Math formulas'', \xref{mathform}). - - -\section New \TeX\ versus old {\TeX} - -\xrdef{newtex} -In 1989 Knuth made a major revision to \TeX\ in order to -adapt it to the -character sets needed to support typesetting for languages other than -English.\space ^^{foreign languages} -The revision included a few minor extra features that could be added -without disturbing anything else. -This book describes ``^{\newTeX}''. -If you're still using an older version -of \TeX\ (version $2.991$ or earlier), -you'll want to know what features of {\newTeX} you can't use. -The following features aren't available in the older versions: -\ulist\compact -\li ^|\badness| (\xref\badness) -\li ^|\emergencystretch| (\xref\emergencystretch) -\li ^|\errorcontextlines| (\xref\errorcontextlines) -\li ^|\holdinginserts| (\xref\holdinginserts) -\li ^|\language|, ^|\setlanguage|, and |\new!-lan!-guage| -(\pp\xrefn\language, \xrefn{\@newlanguage}) ^^|\newlanguage| -\li ^|\lefthyphenmin| and ^|\righthyphenmin| (\xref\lefthyphenmin) -\li ^|\noboundary| (\xref\noboundary) -\li ^|\topglue| (\xref\topglue) -\li The |^^|$xy$ notation for hexadecimal digits (\xref{hexchars}) -\endulist -\noindent -We recommend that you obtain new \TeX\ if you can. - -\section Resources - -\xrdef{resources} -A number of resources are available to help you in using \TeX. -\texbook\ is the definitive source of information on \TeX: - -\smallskip -{\narrower\noindent -^{Knuth, Donald E.}, \texbook. Reading, Mass.: Addison-Wesley, 1984.\par} -\smallskip -\noindent -Be sure to get the seventeenth printing (January 1990) or later; -the earlier printings don't cover the features of new \TeX. - -^{\LaTeX} is a very popular collection of commands designed to simplify the use -of \TeX. It is described in: -\smallskip -{\narrower\noindent\frenchspacing\spaceskip = 3.33pt plus 2pt minus 1.2pt -^{Lamport, Leslie}, {\sl The \LaTeX\ Document Preparation System}. -Reading, Mass.: Addison-Wesley, 1986.\par} -\smallskip -\noindent -^{\AMSTeX} is the collection of commands adopted by the American Mathematical -Society as a standard for submitting mathematical man\-u\-scripts -electronically. -It is described in: -\smallskip -{\narrower\noindent -^{Spivak, Michael~D.}, {\sl The Joy of \TeX}. Providence, R.I.: -American Mathematical Society, 1986. -\par} -\smallskip -\noindent -You can join the ^{\TUG} (TUG), which publishes a newsletter -called {\it ^{TUGBoat}}. -TUG is an excellent source not only for information about \TeX\ but also -for collections of macros, including \AMSTeX. -Its address is: -\smallskip -{\obeylines -^{\TUG} -c/o American Mathematical Society -P.O. Box 9506 -Providence, RI 02940 -U.S.A. -} -\smallskip -\noindent -Finally, you can obtain copies of the ^|eplain.tex| macros -described in \chapterref{eplain} as well as the macros used in typesetting -this book. -They are available through the Internet network by anonymous \ftp\ from the -following hosts: -{\obeylines\display{\tt -labrea.stanford.edu [36.8.0.47] -ics.uci.edu [128.195.1.1] -june.cs.washington.edu [128.95.1.4]}} - -The electronic version includes additional macros -that format input for the -^{\BibTeX}\ computer program, written by Oren Patashnik at Stanford -University, ^^{Patashnik, Oren} -and print the output from that program. -If you find bugs in the macros, or think of improvements, you can send -electronic mail to Karl at {\tt karl@cs.umb.edu}. - -The macros are also available for US \$10.00 on $5\frac1/4$\inches\ -or $3\frac1/2$\inches\ PC-format diskettes from: -\smallskip -{\obeylines -Paul Abrahams -214 River Road -Deerfield, MA 01342 -\vskip\tinyskipamount -Email: {\tt Abrahams\%Wayne-MTS@um.cc.umich.edu} -} -\smallskip -\noindent -These addresses are correct as of June 1990; please be aware that they may -change after that, particularly the electronic addresses. - -\endchapter\byebye diff --git a/Master/texmf-doc/doc/english/impatient/xmptext.tex b/Master/texmf-doc/doc/english/impatient/xmptext.tex deleted file mode 100644 index 47599421fde..00000000000 --- a/Master/texmf-doc/doc/english/impatient/xmptext.tex +++ /dev/null @@ -1,449 +0,0 @@ -~% This is part of the book TeX for the Impatient. -~% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. -~% See file fdl.tex for copying conditions. -% TeX ignores anything on a line after a % -% The next two lines define fonts for the title -\font\xmplbx = cmbx10 scaled \magstephalf -\font\xmplbxti = cmbxti10 scaled \magstephalf -% Now here's the title. -\leftline{\xmplbx Example !xmpnum:\quad\xmplbxti Entering simple text} -\vglue .5\baselineskip % skip an extra half line -~\count255 = \pageno -~\xdef\examplepage{\number\count255} -~\markinfo{Example 1: Entering simple text} -~\ifrewritetocfile -~\write\tocfile{\string\tocsectionentry{Entering simple text}{}{\examplepage}}% -~\fi -~^^{footnotes} ^^{comments} ^^{punctuation} ^^{quotation marks} -~^^{space characters} ^^{dashes} ^^{paragraphs//ending} -~\edef\examplepageno{\number\count255}% -It's easy to prepare ordinary text for \TeX\ since -\TeX\ usually doesn't care about how you break up your input into -lines. It treats the end of a line of text like a space.% -\footnote \dag{\TeX\ treats a tab like a space too, as we point -out in this {\it footnote}.} If you don't want a space there, -put a per% -cent sign (the comment character) at the end of the line. - \TeX\ ignores spaces at the start of a line, and treats more -than one space as equivalent to a single space, -even after a period. You indicate a new paragraph by -skipping a line (or more than one line). - - -When \TeX\ sees a period followed by a space (or the end of the -line, which is equivalent), it ordinarily assumes you've ended a -sentence and inserts a little extra space after the period. It -treats question marks and exclamation points the same way. - - But \TeX's rules for handling periods sometimes need fine -tuning. \TeX\ assumes that a capital letter before a period -doesn't end the sentence, so you have to do something a little -different if, say, you're writing about DNA\null. -% The \null prevents TeX from perceiving the capital `A' -% as being next to the period. -It's a good idea to tie words together in references such as -``see Fig.~8'' and in names such as V.~I\null. Lenin and in -$\ldots$ so that \TeX\ will never split them in an awkward place -between two lines. (The three dots indicate an ellipsis.) - -You should put quotations in pairs of left and right -single ``quotes'' so that you get the correct left and right -double quotation marks. ``For adjacent single and double -quotation marks, insert a `thinspace'\thinspace''. You can -get en-dashes--like so, and em-dashes---like so. - -\bye % end the document -::: -\xmpheader !xmpnum/{Indentation}% !xmpheaddef -~^^{indentation} ^^{margins} ^^{paragraphs//narrow} -\noindent Now let's see how to control indentation. If an -ordinary word processor can do it, so surely can \TeX. Note -that this paragraph isn't indented. - -Usually you'll either want to indent paragraphs or to leave -extra space between them. Since we haven't changed anything -yet, this paragraph is indented. - -{\parindent = 0pt \parskip = 6pt -% The left brace starts a group containing the unindented text. -Let's do these two paragraphs a different way, -with no indentation and six printer's points of extra space -between paragraphs. - -So here's another paragraph that we're typesetting without -indentation. If we didn't put space between these paragraphs, -you would have a hard time knowing where one ends -and the next begins. -\par % The paragraph *must* be ended within the group. -}% The right brace ends the group containing unindented text. - -It's also possible to indent both sides of entire paragraphs. -The next three paragraphs illustrate this: -\smallskip % Provide a little extra space here. -% Skips like this and \vskip below end a paragraph. -{\narrower -``We've indented this paragraph on both sides by the paragraph -indentation. This is often a good way to set long quotations. - -``You can do multiple paragraphs this way if you choose. This -is the second paragraph that's singly indented.''\par} - -{\narrower \narrower You can even make paragraphs doubly narrow -if that's what you need. This is an example of a doubly -narrowed paragraph.\par} -\vskip 1pc % Skip down one pica for visual separation. -In this paragraph we're back to the normal margins, as you can -see for yourself. We'll let it run on a little longer so that -the margins are clearly visible. - -{\leftskip .5in Now we'll indent the left margin by half -an inch and leave the right margin at its usual position.\par} -{\rightskip .5in Finally, we'll indent the right margin by half -an inch and leave the left margin at its usual position.\par} -\bye % end the document -::: -\xmpheader !xmpnum/{Fonts and special characters}% !xmpheaddef -\chardef \\ = `\\ % Let \\ denote a backslash. -~^^{fonts} ^^{characters//special} ^^{accents} -~^^{music symbols} ^^{card suits} -~^^|$| ^^|&| ^^|#| ^^|_| ^^|%| ^^|^| ^^|~| ^^|{| ^^|}| \indexchar \ -{\it Here are a few words in an italic font}, {\bf a -few words in a boldface font}, {\it and a\/ {\bf mixture} -of the two, with two\/ {\rm roman words} inserted}. -Where an italic font is followed by a nonitalic font, we've -inserted an ``italic correction'' ({\tt \\/}) to make the -spacing look right. -Here's a {\sevenrm smaller} word---but the standard \TeX\ -fonts won't give you anything smaller than {\fiverm this}. - -If you need any of the ten characters: -\medskip -\centerline{\$ \quad \& \quad \# \quad \_ \quad \% \quad - \char `\^ \quad \char `\~ \quad $\{$ \quad - $\}$ \quad $\backslash$} -% The \quad inserts an em space between characters. -\medskip -\noindent you'll need to write them a special way. Look at -the facing page to see how to do it. - -\TeX\ has the accents and letters that you'll need -for French words such as {\it r\^ ole\/} and {\it \' -el\` eve\/}, for German words such as {\it Schu\ss\/}, -and for words in several other languages as well. -You'll find a complete list of \TeX's accents and letters -of European languages on !xrefdelim[accents] and !xrefdelim[fornlets]. - -You can also get Greek letters such as ``$\alpha$'' and -``$\Omega$'' for use in math, card suits such as -``$\spadesuit$'' and ``$\diamondsuit$'', music symbols -such as ``$\sharp$'' and ``$\flat$'', and many other special -symbols that you'll find listed on !xrefdelim[specsyms]. -\TeX\ will only accept these sorts of special symbols in its -``math mode'', so you'll need to enclose them -within `{\tt \$}' characters. -\bye % end the document -::: -\xmpheader !xmpnum/{Interline spacing}% !xmpheaddef -~^^{spacing//interline} ^^{baselines} -\baselineskip = 2\baselineskip % double spacing -\parskip = \baselineskip % Skip a line between paragraphs. -\parindent = 3em % Increase indentation of paragraphs. - -% The following macro definition gives us nice inline -% fractions. You'll find it in our eplain macros. -\def\frac#1/#2{\leavevmode - \kern.1em \raise .5ex \hbox{\the\scriptfont0 #1}% - \kern-.1em $/$% - \kern-.15em \lower .25ex \hbox{\the\scriptfont0 #2}% -}% - -Once in a while you may want to print a document with extra -space between the lines. For instance, bills before Congress -are printed this way so that the legislators can mark them up. -For the same reason, book publishers usually insist that -manuscripts be double-spaced. Double spacing is rarely -appropriate for finished documents, however. - -A baseline is an imaginary line that acts like the lines -on a pad of ruled paper. You can control the interline -spacing---what printers call ``leading''---% -by setting the amount of space between baselines. Take a -look at the input to see how to do it. You could use -the same method for $1\;1/2$ spacing as well, using {\tt 1.5} -instead of {\tt 2}. (You can also write $1\frac 1/2$ -a nicer way.) -% Here we've used the macro definition given above. - -For this example we've also increased the paragraph indentation -and skipped an extra line between paragraphs. - -\bye % end the document -::: -\xmpheader !xmpnum/{Spacing, rules, and boxes}% !xmpheaddef -~^^{description lists} ^^{boxes//drawing} ^^{revision bars} -Here's an example of a ``description list''. In practice you'd -be better off using a macro to avoid the repetitive constructs -and to make sure that the subhead widths are wide enough: -\bigskip -% Call the indentation for descriptions \descindent -% and set it to 8 picas. -\newdimen\descindent \descindent = 8pc -% Indent paragraphs by \descindent. -% Skip an additional half line between paragraphs. -{\noindent \leftskip = \descindent \parskip = .5\baselineskip -% Move the description to the left of the paragraph. -\llap{\hbox to \descindent{\bf Queen of Hearts\hfil}}% -An ill-tempered woman, prone to saying ``Off with his -head!!''\ at the slightest provocation.\par -\noindent\llap{\hbox to \descindent{\bf Cheshire Cat\hfil}}% -A cat with an enormous smile that Alice found -in a tree.\par -\noindent\llap{\hbox to \descindent{\bf Mock Turtle\hfil}}% -A lachrymose creature, quite a storyteller, who was a -companion to the Gryphon. Reputedly the principal ingredient -of Mock Turtle Soup. -\par} -\bigskip\hrule\bigskip % A line with vertical space around it. -Here's an example of some words in a ruled box, just as -Lewis Carroll wrote them: -\bigskip -% Put 8pt of space between the text and the surrounding rules. -\hbox{\vrule\vbox{\hrule - \hbox spread 8pt{\hfil\vbox spread 8pt{\vfil - \hbox{Who would not give all else for twop}% - \hbox{ennyworth only of Beautiful Soup?}% - \vfil}\hfil} -\hrule}\vrule}% - -\bigskip\line{\hfil\hbox to 3in{\leaders\hbox{ * }\hfil}\hfil} -\bigskip - -\line{\hskip -4pt\vrule\hfil\vbox{ -Here we've gotten the effect of a revision bar on the material -in this paragraph. The revision bar might indicate a change.}} -\bye % end the document -::: -\xmpheader !xmpnum/{Odds and ends}% !xmpheaddef -~^^{hyphenation} ^^{theorems} ^^{lemmas} ^^{itemized lists} -~^^{flush left} ^^{flush right} ^^{centering} -\chardef \\ = `\\ % Let \\ denote a backslash. -\footline{\hfil{\tenit - \folio -}\hfil} -~\global\footline{\hfil{\tenit - \folio\ -}\hfil} -% \footline provides a footer line. -% Here it's a centered, italicized page number. -\TeX\ knows how to hyphenate words, but it isn't infallible. -If you are discussing the chemical -${\it 5}$-[p-(Flouro\-sul\-fonyl)ben\-zoyl]-l,% -$N^6$-ethe\-no\-adeno\-sine -and \TeX\ complains to you about an ``overfull hbox'', try -inserting some ``discretionary hyphens''. The notation -`{\tt \\-}' tells \TeX\ about a dis\-cre\-tion\-ary hyphen, -that is, one that it might not have inserted otherwise. -\medskip -{\raggedright You can typeset text unjustified, i.e., with -an uneven right margin. In the old days, before word -processors were common, typewritten documents were -unjustified because there was no convenient alternative. -Some people prefer text to be unjustified so that the -spacing between words can be uniform. Most books are set -with justified margins, but not all. \par} - -\proclaim Assertion 27. There is an easy way to typeset -the headings of assertions, lemmas, theorems, etc. - -Here's an example of how to typeset an itemized list two -levels deep. If you need more levels, you'll have to -program it yourself, alas. -\smallskip -\item {1.} This is the first item. -\item {2.} This is the second item. It consists of two -paragraphs. We've indented the second paragraph so that -you can easily see where it starts. - -\item{} \indent The second paragraph has three subitems -underneath it. -\itemitem {(a)} This is the first subitem. -\itemitem {(b)} This is the second subitem. -\itemitem {(c)} This is the third subitem. -\item {$\bullet$} This is a strange-looking item because it's -completely different from the others. -\smallskip -\leftline{Here's a left-justified line.$\Leftarrow$} -\rightline{$\Rightarrow$Here's a right-justified line.} -\centerline{$\Rightarrow$Here's a centered line.$\Leftarrow$} -% Don't try to use these commands within a paragraph. -\bye % end the document -::: -\xmpheader !xmpnum/{Using fonts from other sources}% !xmpheaddef -~\xrdef{palatino} -~\idxref{Palatino fonts} -~\idxref{Zapf, Hermann} -~\idxref{Computer Modern fonts} ^^{\Metafont} -\font\tenrm = pplr % Palatino -% Define a macro for invoking Palatino. -\def\pal{\let\rm = \tenrm \baselineskip=12.5pt \rm} -\pal % Use Palatino from now on. - -You aren't restricted to using the Computer Modern fonts that -come with \TeX. Other fonts are available from many sources, -and you may prefer them. For instance, we've set this page -in 10-point Palatino Roman. Palatino was designed by -Hermann Zapf, considered to be one of the greatest type -designers of the twentieth century. This page will -give you some idea of what it looks like. - -Fonts can be provided either as outlines or as bitmaps. An -outline font describes the shapes of the characters, while a -bitmap font specifies each pixel (dot) that makes up each -character. A font outline can be used to generate many -different sizes of the same font. The Metafont program -that's associated with \TeX\ provides a particularly -powerful way of generating bitmap fonts, but it's not the -only way. - -The fact that a single outline can generate a great range of -point sizes for a font tempts many vendors of digital -typefaces to provide just one set of outlines for a typeface -such as Palatino Roman. This may be a sensible economic -decision, but it is an aesthetic sacrifice. Fonts cannot be -scaled up and down linearly without loss of quality. -Larger sizes of letters should not, in general, have the -same proportions as smaller sizes; they just don't look -right. For example, a font that's linearly scaled down will -tend to have too little space between strokes, and its -x-height will be too~small. % tie added to avoid widow word - -A type designer can compensate for these changes by -providing different outlines for different point sizes, but -it's necessary to go to the expense of designing these -different outlines. One of the great advantages of Metafont -is that it's possible to parameterize the descriptions of -characters in a font. Metafont can then maintain the -typographical quality of characters over a range of point -sizes by adjusting the character shapes accordingly. -\bye % end the document -::: -~\idxref{mushrooms} -\xmpheader !xmpnum/{A ruled table}% !xmpheaddef -\bigskip -\offinterlineskip % So the vertical rules are connected. -% \tablerule constructs a thin rule across the table. -\def\tablerule{\noalign{\hrule}} -% \tableskip creates 9pt of space between entries. -\def\tableskip{\omit&height 9pt&&&\omit\cr} -% & separates templates for each column. TeX substitutes -% the text of the entries for #. We must have a strut -% present in every row of the table; otherwise, the boxes -% won't butt together properly, and the rules won't join. -\halign{\tabskip = .7em plus 1em % glue between columns -% Use \vtop for short multiline entries in the first column. -% Typeset the lines ragged right, without hyphenation. - \vtop{\hsize=6pc\pretolerance = 10000\hbadness = 10000 - \normalbaselines\noindent\it#\strut}% - &\vrule #&#\hfil &\vrule #% the rules and middle column -% Use \vtop to get whole paragraphs in the last column. - &\vtop{\hsize=11pc \parindent=0pt \normalbaselineskip=12pt - \normalbaselines \rightskip=3pt plus2em #}\cr -% The table rows begin here. -\noalign{\hrule height2pt depth2pt \vskip3pt} - % The header row spans all the columns. - \multispan5\bf Some Choice Edible Mushrooms\hfil\strut\cr -\noalign{\vskip3pt} \tablerule - \omit&height 3pt&\omit&&\omit\cr - \bf Botanical&&\bf Common&&\omit \bf Identifying \hfil\cr -\noalign{\vskip -2pt}% close up lines of heading - \bf Name&&\bf Name &&\omit \bf Characteristics \hfil\cr -\tableskip Pleurotus ostreatus&&Oyster mushroom&& - Grows in shelf\kern 1pt like clusters on stumps or logs, - % without the kern, the `f' and `l' would be too close - pink-gray oyster-shaped caps, stem short or absent.\cr -\tableskip Lactarius hygrophoroides&&Milky hygroph&& - Butterscotch-brown cap and stem, copious white latex, - often on ground in woods near streams.\cr -\tableskip Morchella esculenta&&White morel&&Conical cap - with black pits and white ridges; no gills. Often found - near old apple trees and dying elms in the spring.\cr -\tableskip Boletus edulus&&King bolete&&Reddish-brown to - tan cap with yellow pores (white when young), - bulbous stem, often near conifers, birch, or~aspen.\cr -\tableskip \tablerule \noalign{\vskip 2pt} \tablerule -}\bye -::: -\xmpheader !xmpnum/{Typesetting mathematics}% !xmpheaddef -~^^{math} -For a spherical triangle with sides $a$, $b$, and $c$, and -opposite angles $\alpha$, $\beta$, and $\gamma$, we have: -$$\cos \alpha = -\cos \beta \cos \gamma + - \sin \beta \sin \gamma \cos \alpha \quad - \hbox{(Law of Cosines)}$$ -and: -$$\tan {\alpha \over 2} = \sqrt{ - {- \cos \sigma \cdot \cos(\sigma - \alpha)} \over - {\cos (\sigma - \beta) \cdot \cos (\sigma - \gamma)}},\quad - \hbox{where $\sigma = {1 \over 2}(a+b+c)$}$$ -We also have:$$\sin x = {{e^{ix}-e^{-ix}}\over 2i}$$ -and: -$$\int _0 ^\infty {{\sin ax \sin bx}\over{x^2}}\,dx -% The \, above produces a thin space - = {\pi a\over 2}, \quad \hbox{if $a < b$}$$ - -\noindent The number of combinations ${}_nC_r$ of $n$ -things taken $r$ at a time is: -$$C(n,r) = {}_nC_r = {n \choose r} = - {{n(n-1) \cdots (n-r+1)} \over {r(r-1) \cdots (1)}} = - {{n!!}\over {r!!(n-r)!!}}$$ - -\noindent -The value of the determinant $D$ of order $n$: -$$D = \left|\matrix{a_{11}&a_{12}&\ldots&a_{1n}\cr - a_{21}&a_{22}&\ldots&a_{2n}\cr - \vdots&\vdots&\ddots&\vdots\cr - a_{n1}&a_{n2}&\ldots&a_{nn}\cr}\right| $$ -is defined as the sum of $n!!$ terms: -$$\sum\>(\pm)\>a_{1i}a_{2j} \ldots a_{nk}$$ -% The \> above produces a medium space. -where $i$, $j$, \dots,~$k$\/ take on all possible values -between $1$ and $n$, and the sign of the product is -$+$ if the sequence $i$, $j$, \dots,~$k$\/ is an -even permutation and $-$ otherwise. Moreover: -$$Q(\xi) = \lambda_1 y_1^2 \sum_{i=2}^n \sum_{j=2}^n y_i -b_{ij} y_j,\qquad B = \Vert b_{ij} \Vert = B'$$ -\bye -::: -\xmpheader !xmpnum/{More mathematics}% !xmpheaddef -~^^{math} -The absolute value of $X$, $|x|$, is defined by: -$$|x| = \cases{x, &if $x\ge 0$;\cr --x,&otherwise.\cr}$$ -Now for some numbered equations. -It is the case that for $k \ge 0$: -$$x^{k^2}=\overbrace{x\>x\>\cdots\> x}^{2k\ \rm times} - \eqno (1)$$ - -Here's an example that shows some spacing controls, with -a number on the left: -$$[u]!negthin[v][w]\,[x]\>[y]\;[z]\leqno(2a)$$ -The amount of space between the items in brackets -gradually increases from left to right. (We've made -the space between the first two items be {\it less\/} -than the natural space.) -It is sometimes the case that $$\leqalignno{ -u'_1 + tu''_2 &= u'_2 + tu''_1&(2b)\cr -\hat\imath &\ne \hat \jmath&(2c)\cr -\vec {\vphantom{b}a}&\approx \vec b\cr}$$ -% The \vphantom is an invisible rule as tall as a `b'. -The result is of order $O(n \log\log n)$. Thus -$$\sum_{i=1}^n x_i = x_1+x_2+\cdots+x_n -= {\rm Sum}(x_1,x_2,\ldots,x_n). \eqno(3)$$ -and -$$dx\,dy = r\,dr\,d\theta!negthin.\eqno(4)$$ -The set of all $q$ such that $q\le0$ is written as: -$$\{\,q\mid q\le0\, \}$$ -Thus -$$\forall x\exists y\;P(x,y)\Rightarrow -\exists x\exists y\;P(x,y)$$ -where -$$P(x,y) \buildrel \rm def \over \equiv -\hbox{\rm any predicate in $x$ and $y$} . $$ -\bye -::: |