summaryrefslogtreecommitdiff
path: root/info/impatient/concepts.tex
diff options
context:
space:
mode:
Diffstat (limited to 'info/impatient/concepts.tex')
-rw-r--r--info/impatient/concepts.tex4097
1 files changed, 4097 insertions, 0 deletions
diff --git a/info/impatient/concepts.tex b/info/impatient/concepts.tex
new file mode 100644
index 0000000000..2b38675345
--- /dev/null
+++ b/info/impatient/concepts.tex
@@ -0,0 +1,4097 @@
+% This is part of the book TeX for the Impatient.
+% Copyright (C) 2003, 2014 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 ordinary horizontal mode
+when you're in restricted 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