diff options
Diffstat (limited to 'Master/texmf-doc/doc/english/impatient/concepts.tex')
-rw-r--r-- | Master/texmf-doc/doc/english/impatient/concepts.tex | 4097 |
1 files changed, 0 insertions, 4097 deletions
diff --git a/Master/texmf-doc/doc/english/impatient/concepts.tex b/Master/texmf-doc/doc/english/impatient/concepts.tex deleted file mode 100644 index ad5f4cc42d2..00000000000 --- a/Master/texmf-doc/doc/english/impatient/concepts.tex +++ /dev/null @@ -1,4097 +0,0 @@ -% This is part of the book TeX for the Impatient. -% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. -% See file fdl.tex for copying conditions. - -\input macros -\chapter{Concepts} - -\chapterdef{concepts} - -This part of the book contains definitions and explanations of -the concepts that we use in describing \TeX. -The concepts include both -technical terms that we use in explaining the commands and -important topics that don't fit elsewhere in the book. - -The concepts are arranged alphabetically. -The inside back cover of the book contains a complete list of -concepts and the pages on which they are explained. -We suggest that you make a copy of the inside back cover and keep it nearby -so that you'll be able to identify and look up an unfamiliar -concept immediately. -As far as possible, we've kept our terminology consistent with that of -\texbook.\idxref{\texbook} - -\beginconcepts - -\conceptindex{active characters} -\concept {active character} - -An \defterm{active character} is a \refterm{character} -that has a definition, e.g., a macro definition, associated with it. -^^{macros//named by active characters} -You can think of an active character as a special kind of control sequence. -When \TeX\ encounters an active character, it -executes the definition associated with the character. -If \TeX\ encounters an active character that does not have -an associated definition, it will complain about an -undefined control sequence. - -An active character has a \refterm{category code} of $13$ (the value -of ^|\active|). -To define an active character, you should first -use the ^|\catcode| command -\ctsref{\catcode} to make it active -and then provide the definition of the character, using -a command such as |\def|, |\let|, or |\chardef|. -The definition of an active character has the same form as -the definition of a \refterm{control sequence}. -^^{category codes//of active characters} -If you try to define the macro for an active character -before you make the character active, \TeX\ will complain about a -missing control sequence. - -For example, the tilde character (|~|) is defined as an active character -in \plainTeX. It -produces a space between two words but links those words so that -\TeX\ will not turn the space into a \refterm{line break}. -\refterm{\PlainTeX:\plainTeX} defines `|~|' by the commands: - -\csdisplay -\catcode `~ = \active \def~{\penalty10000\!visiblespace} -| -(The |\penalty| inhibits a line break and the `|\!visiblespace|' -inserts a space.) -\endconcept - - -\conceptindex{alignments} -\concept alignment - -\bix^^{tables} -An \defterm{alignment} is a construct for aligning material, such as a -table, in columns or rows. To form an alignment you need to -(a)~describe the layout of the columns or rows and (b)~tell \TeX\ what -material goes into the columns or rows. A tabbing alignment or a -horizontal alignment is organized as a sequence of rows; a vertical -alignment is organized as a sequence of columns. We first describe -tabbing and horizontal alignments and then more briefly describe -vertical alignments. - -Tabbing alignments are defined by \plainTeX. They are simpler but less -flexible than horizontal alignments. Tabbing and horizontal alignments -differ principally in how you describe their layouts. - -\bix^^|\settabs| -\bix\ctsidxref{+} -\bix\ctsidxref{cr} - -To construct a tabbing alignment you first issue a |\settabs| command -\ctsref{\settabs} that specifies how \TeX\ should divide the available -horizontal space into columns. Then you provide a sequence of rows for -the table. Each row consists of a |\+| control sequence \ctsref{\@plus} -followed by a list of ``entries'', i.e., row\slash column intersections. -^^{entry (column or row)} -Adjacent entries in a row are separated by an ampersand (|&|). -\xrdef{@and} -\ttidxref{&} -The end of a row is indicated by ^|\cr| after its -last entry. -If a row has fewer entries than there are columns in the alignment, -\TeX\ effectively fills out the row with blank entries. - -As long as it's preceded by a |\settabs| command, you can put a row of a -tabbing alignment anywhere in your document. In particular, you can put -other things between the rows of a tabbing alignment or describe several -tabbing alignments with a single |\settabs|. Here's an example of a -tabbing alignment: - -\xrdef{tabbedexample}\csdisplay -{\hsize = 1.7 in \settabs 2 \columns -\+cattle&herd\cr -\+fish&school\cr -\+lions&pride\cr} -| -The |\settabs 2 \columns| command in this example \ctsref{\settabs} -tells \TeX\ to produce two equally wide columns. -The line length is $1.7$ inches. -The typeset alignment looks like this: - -{\def\+{\tabalign}% so it isn't \outer. -\vdisplay{% -\hsize 1.7 in \settabs 2 \columns -\+cattle&herd\cr -\+fish&school\cr -\+lions&pride\cr} -}% - -\margin{Missing explanation added here.} -There's another form of tabbing alignment in which you specify the column -widths with a template. The column widths in the template -determine the column widths in the rest of the alignment: -\csdisplay -{\settabs\+cattle\quad&school\cr -\+cattle&herd\cr -\+fish&school\cr -\+lions&pride\cr} -| -Here's the result: -{\def\+{\tabalign}% so it isn't \outer. -\vdisplay{% -\settabs\+cattle\quad&school\cr -\+cattle&herd\cr -\+fish&school\cr -\+lions&pride\cr} -}% - -\eix^^|\settabs| -\eix\ctsidxref{+} -\bix^^|\halign| -Horizontal alignments are constructed with |\halign| \ctsref\halign. -\TeX\ adjusts the column widths of a horizontal alignment according to -what is in the columns. When \TeX\ encounters the |\halign| command -that begins a horizontal alignment, it first examines all the rows of -the alignment to see how wide the entries are. It then sets each column -width to accommodate the widest entry in that column. - -A horizontal alignment governed by |\halign| consists of a -``\pix^{preamble}'' that indicates the row layout followed by the rows -themselves. -\ulist -\li The preamble consists of a sequence of \pix^{template}s, one for each -column. The template for a column specifies how the text for that -column should be typeset. Each template must include a single |#| -character -\ttidxref{#}\xrdef{@asharp} -to indicate where \TeX\ should substitute the text of an entry into the -template. The templates are separated by ampersands (|&|), \ttidxref{&} -and the end of the preamble is indicated by |\cr|. By providing an -appropriate template you can obtain effects such as centering a column, -left or right justifying a column, or setting a column in a particular -\refterm{font}. - -\li The rows have the same form as in a tabbing alignment, except that -you omit the |\+| at the beginning of each row. -As before, entries are separated by |&| and the end of the row -is indicated by |\cr|. -\TeX\ treats each entry as a -\refterm{group}, so any -font-setting command or other \refterm{assignment} -in a column template is in effect only for the entries in that column. -\endulist -\noindent The preamble and the rows must all be enclosed in the braces -that follow |\halign|. Each |\halign| alignment must include -its own preamble. - -For example, the horizontal alignment: -\csdisplay -\tabskip=2pc -\halign{\hfil#\hfil &\hfil#\hfil &\hfil#\hfil \cr - &&\it Table\cr -\noalign{\kern -2pt} - \it Creature&\it Victual&\it Position\cr -\noalign{\kern 2pt} - Alice&crumpet&left\cr - Dormouse&muffin&middle\cr - Hatter&tea&right\cr} -| - -\noindent produces the result: - -\xrdef{halignexample} -\vdisplay{% -\tabskip=2pc \halign{\hfil#\hfil &\hfil#\hfil &\hfil#\hfil \cr - &&\it Table\cr -\noalign{\kern -2pt} - \it Creature&\it Victual&\it Position\cr -\noalign{\kern 2pt} - Alice&crumpet&left\cr - Dormouse&muffin&middle\cr - Hatter&tea&right\cr} -}% -\noindent The ^|\tabskip| \ctsref{\tabskip} in this example -tells \TeX\ to insert |2pc| of -\refterm{glue} between the columns. -The ^|\noalign| \ctsref{\noalign} commands tell \TeX\ to insert -\refterm{vertical mode} material between two rows. -In this example we've -used |\noalign| to produce some extra space between the title rows and -the data rows, and also to bring ``Table'' and ``Position'' closer together. -(You can also use |\noalign| before the first row or after the -last row.) -\eix^^|\halign| - -You can construct a vertical alignment with the ^|\valign| command -\ctsref{\valign}. A vertical alignment is organized as a series of -columns rather than as a series of rows. A vertical alignment follows -the same rules as a horizontal alignment except that the roles of rows -and columns are interchanged. For example, the vertical alignment: - -\csdisplay -{\hsize=0.6in \parindent=0pt -\valign{#\strut&#\strut&#\strut\cr - one&two&three\cr - four&five&six\cr - seven&eight&nine\cr - ten&eleven\cr}} -| -\noindent yields: -\vdisplay{% -{\hsize=0.6in \parindent=\listleftindent % Because lists and displays - % are not indented just by \parindent. -\valign{#\strut&#\strut&#\strut\cr - one&two&three\cr - four&five&six\cr - seven&eight&nine\cr - ten&eleven\cr}} -} -The ^|\strut| commands \ctsref{\strut} -in the template are necessary to get the entries in each row -to line up properly, i.e., to have a common \refterm{baseline}, -and to keep the distance between baselines uniform. -\eix\ctsidxref{cr} -\eix^^{tables} - -\endconcept - - -\concept{\anatomy} - -\texbook\ describes the way that {\TeX} processes its input in terms of \TeX's -``digestive tract''---its ``^{eyes}'', ``^{mouth}'', -``^{gullet}'', ``^{stomach}'', and ``^{intestines}''. Knowing how this -processing works can be helpful when you're trying to understand subtle -aspects of \TeX's behavior as it's digesting a document. - -\ulist - -\li Using its ``\pix^{eyes}'', \TeX\ reads \refterm{characters:character} from -^{input files} and passes them to its mouth. Since an input file -can contain ^|\input| commands \ctsref{\input}, -\TeX\ can in effect ``shift its gaze'' from one file to another. - -\li Using its ``\pix^{mouth}'', {\TeX} assembles the characters into -\refterm{tokens:token} and passes them to its gullet. -Each token is either a \refterm{control sequence} or a single -character. A control sequence always starts with an \refterm{escape -character}. Note that spaces and ends-of-line are characters in their -own right, although \TeX\ compresses a sequence of input spaces into a single -space token. See \knuth{pages~46--47} for the rules by which \TeX\ assembles -characters into tokens. -^^{tokens//assembled from characters} - -\li Using its ``\pix^{gullet}'', {\TeX} expands any macros, conditionals, and -^^{macros//expanded in \TeX's stomach} -^^{tokens//passed to \TeX's stomach} -similar constructs that it finds (see \knuth{pages~212--216}) and passes -the resulting sequence of \refterm{tokens:token} -to \TeX's stomach. Expanding one token -may yield other tokens that in turn need to be expanded. {\TeX} carries -out this expansion from left to right unless the order is modified by -a command such as |\expandafter| \ctsref{\expandafter}. -In other words, \TeX's gullet always expands the leftmost un\-ex\-panded -token that it has not yet sent to \TeX's stomach. - -\li Using its ``\pix^{stomach}'', {\TeX} processes the tokens in -groups. -Each group contains a primitive command followed by its arguments, if any. -Most of the commands are of the ``typeset this character'' variety, -so their groups consist of just one token. -Obeying the instructions given by the commands, -\TeX's stomach assembles larger and larger -units, starting with -characters and ending with pages, -and passes the pages to \TeX's intestines. -^^{pages//assembled in \TeX's stomach} -\TeX's stomach handles the tasks of \refterm{line break}ing---% -^^{line breaking} -i.e., breaking each paragraph into a sequence of lines---% -and of \refterm{page break}ing---i.e., breaking a continuous sequence of lines -and other vertical mode material -into pages. - -\li Using its ``\pix^{intestines}'', \TeX\ transforms the pages produced by its -stomach into a form intended for processing -by other programs. It then sends the transformed output to the -\dvifile. -^^{\dvifile//created by \TeX's intestines} - -\endulist - -Most of the time you can think of the processes that take place in \TeX's -eyes, mouth, gullet, stomach, and intestines -as happening one after the other. But the -truth of the matter is that commands executed in \TeX's stomach can -influence the earlier stages of digestion. For instance, when \TeX's stomach -encounters the |\input| command \ctsref{\input}, -its eyes start reading from a different -file; when \TeX's stomach encounters a |\catcode| command - \ctsref{\catcode} specifying a category code -for a character $c$, the interpretation of $c$ by \TeX's mouth is affected. -And when -\TeX's stomach encounters a \refterm{macro} definition, the expansions carried -out in \TeX's gullet are affected. - -You can understand how the processes interact by imagining that each -process eagerly gobbles up the output of its predecessor as soon as it -becomes available. For instance, once \TeX's stomach has seen -the last character of the filename in an |\input| command, \TeX's gaze -immediately shifts to the first character of the specified input file. -\endconcept - -\pagebreak -\conceptindex{arguments} -\concept argument - -^^{commands//arguments of} -An \defterm{argument} contains text that is passed to a -\refterm{command}. -The arguments of a command complete the description of what -the command is supposed to do. -The command can either be a \refterm{primitive} command or a -\refterm{macro}. - -Each primitive command ^^{primitive//command} -has its own convention about the form of its -arguments. For instance, the sequence of \refterm{tokens:token}: - -\csdisplay -\hskip 3pc plus 1em -| -consists of the command `|\hskip|' and the arguments -`|3pc plus 1em|'. But if you were to write: - -\csdisplay -\count11 3pc plus 1em -| -you'd get an entirely different effect. -\TeX\ would treat `|\count11|' as a command with argument `|3|', -followed by the ordinary text tokens `|pc plus 1em|' -(because count registers expect a number to be assigned to them)% ----probably not what -you intended. The effect of the command, by the way, would be to -assign $3$ to count register $11$ (see the discussion of ^|\count|, -\xref\count). - -Macros, on the other hand, all follow the same convention -for their arguments. -^^{macros//arguments of} -Each argument passed to a macro -corresponds to a \refterm{parameter} -^^{parameters//and arguments} -in the definition of that -macro. ^^{macros//parameters of} -A macro parameter is either ``delimited'' or ``undelimited''. -The macro definition determines the number and nature of the macro parameters -and therefore the number and nature of the macro arguments. - -The difference between a delimited argument and an undelimited argument -lies in the way that \TeX\ decides where the argument ends. -^^{delimited arguments} -^^{undelimited arguments} -\ulist -\li A delimited argument consists of the tokens -from the start of the argument up to, but not including, the -particular sequence of tokens that serves as the delimiter for that argument. -The delimiter is specified in the macro definition. Thus you -supply a delimited argument to a macro by writing the argument itself -followed by the delimiter. A delimited argument can be empty, i.e., have -no text at all in it. Any braces in a delimited argument must be paired -properly, i.e., every left brace must have a corresponding right brace -and vice versa. - -\li An undelimited argument consists of a single token or a sequence of -tokens enclosed in braces, like this: -`|{Here is {the} text.}|'. Despite appearances, the outer braces don't -form a \refterm{group}---\TeX\ uses them only to determine what the -argument is. Any inner braces, such as the ones around `|the|', must be -paired properly. If you make a mistake and put in too many right -braces, \TeX\ will complain about an unexpected right brace. \TeX\ will -also complain if you put in too many left braces, but you'll probably -get \emph{that} complaint long after the place where you intended to -end the argument (see \xref{mismatched}). -\endulist -\noindent -See \conceptcit{macro} for more information -about parameters and arguments. You'll find the precise rules pertaining -to delimited and undelimited arguments in \knuth{pages~203--204}. -\endconcept - - -\concept{ASCII} - -\defterm{\ascii} is the abbreviation of ``American Standard Code for -Information Interchange''. There are $256$ \ascii\ -^{characters}, each with its own code number, but -the meanings of only the first~$128$ have been standardized. You can -find these meanings in an \ascii\ ``code table'' such as the one on -\knuth{page~367}. Characters $32$--$126$ are ``printable characters'', -^^{printable characters} such as letters, numbers, and punctuation -marks. The remaining characters are ``^{control characters}'' that are -typically used (in the computer industry, not in \TeX) to control -input\slash output and data communications devices. For instance, -\ascii\ code $84$ corresponds to the letter `T', while \ascii\ -code~$12$ corresponds to the ``form feed'' function (interpreted by most -printers as ``start a new page''). Although the \ascii\ standard -specifies meanings for the control characters, many manufacturers of -equipment such as modems and printers have used the control characters -for purposes other than the standard ones. - -The meaning of a -character in \TeX\ is usually consistent with its meaning in standard \ascii, -and \refterm{fonts:font} that contain \ascii\ -printable characters usually have those characters in the same positions as -their \ascii\ counterparts. -But some fonts, notably those used for math, replace the \ascii\ -printable characters by other characters unrelated to the \ascii\ characters. -For instance, the Computer Modern math font -^^{Computer Modern fonts} -|cmsy10| has the math symbol -`{$\forall$}' in place of the \ascii\ digit `8'. - - -\endconcept - -\conceptindex{assignments} -\concept assignment - -An \defterm{assignment} is a construct that tells \TeX\ to assign a -value to a register, -^^{registers//assignment to} -to one of its internal -\refterm{parameters:parameter}, -^^{parameters//assignments to} -to an entry in one of its internal tables, -or to a \refterm{control sequence}. Some examples of assignments are: - -\csdisplay -\tolerance = 2000 -\advance\count12 by 17 -\lineskip = 4pt plus 2pt -\everycr = {\hskip 3pt \relax} -\catcode\`@ = 11 -\let\graf = \par -\font\myfont = cmbx12 -| - -The first assignment indicates that \TeX\ should assign the numeric value -|2000| to the numeric parameter |\tolerance|, i.e., make the value of -|\tolerance| be $2000$. The other assignments are similar. The `|=|' -and the spaces are optional, so you could also write the first -assignment more tersely as: - -\csdisplay -\tolerance2000 -| - -See \knuth{pages~276--277} for the detailed syntax of assignments. -\endconcept - - -\concept badness - -The \defterm{badness} of a line is a measure of how far the interword -spaces ^^{interword spacing} -in the line deviate from their natural values, -i.e., the values specified in the \refterm{fonts:font} used in the line. -The greater the -deviation, the greater the badness. Similarly, the badness of a page is -a measure of how far the spaces between the boxes that -make up the page deviate from their ideal values. (Ordinarily, most of these -boxes are single lines of paragraphs.) - -More precisely, the badness -is a measure of how much the \refterm{glue} associated with these spaces needs -to stretch or shrink to fill the line or page exactly. -\TeX\ computes the badness as approximately $100$ -times the cube of the ratio by which it must stretch or shrink the glue -in order to compose a line or a page of the required size. -^^{line breaks//badness for}^^{page breaks//badness for} -For example, stretching the glue by twice its stated stretch yields a ratio of -$2$ and a badness of $800$; stretching it by half its stated stretch yields -a ratio of $.5$ and a badness of $13$. -\TeX\ treats a badness greater than $10000$ as -equal to $10000$. - -\TeX\ uses the badness of a line when it's breaking a paragraph into lines -\seeconcept{line break}. It uses this information in two stages: - -\olist -\li When \TeX\ is choosing line breaks, -it will eventually accept lines whose badness is less than or equal to -the value of |\tolerance| (\xref \tolerance). If \TeX\ cannot avoid setting -a line whose badness exceeds this -value, it will set it as an underfull or overfull \refterm{hbox}. -\TeX\ will set -an overfull or underfull hbox only as a last resort, i.e., only if there's no -other way to break the paragraph into lines. -\li Assuming that all lines are tolerably bad, \TeX\ uses the badness of lines -in order to evaluate the different ways of breaking the paragraph into lines. -During this evaluation it associates ``demerits'' with each potential line. -The badness increases the number of \refterm{demerits}. -\TeX\ then -breaks the paragraph into lines in a way that minimizes the -total demerits for the paragraph. -Most -often \TeX\ arranges the paragraph in a way that minimizes the badness of the -worst line. See \knuth{pages~97--98} for the details of how \TeX\ -breaks a paragraph into lines. -\endolist - -\TeX's procedure for assembling a sequence of lines and other vertical -mode material into pages is similar to its procedure for line breaking. -However, assembling pages is -not as complicated because \TeX\ only considers one page at a time -when it looks for page breaks. -Thus the only decision it must make is where to end the current page. -In contrast, when \TeX\ is choosing line breaks it -considers several of them simultaneously. -(Most word processors choose line breaks one at a time, -and thus don't do as good a job at it as \TeX\ does.) -See \knuth{pages~111--113} for the details of how \TeX\ chooses its -page breaks. -\endconcept - - -\conceptindex{baselines} -\concept baseline - -The \defterm{baseline} of a \refterm{box} is an imaginary line that runs -across the box. -^^{boxes//baselines of} -When \TeX\ is -assembling the boxes of a \refterm{horizontal list} into a larger box, -it lines up the boxes in the list so that their baselines coincide. -As an analogy, think of writing on a pad of ruled paper. Each letter -that you write has -an implicit baseline. -In order to line up the letters horizontally, -you place them on the pad so that their baselines -agree with the light guidelines that are printed on the pad. - -A box can and often does extend below its baseline. -For instance, the letter `g' extends below the baseline of its box because -it has a descender (the bottom loop of the `g'). -\endconcept - - -\conceptindex{boxes} -\concept box - -A \defterm{box} is a rectangle of material to be typeset. A single -\refterm{character} is a box by itself, -and an entire page is also a box. -\TeX\ forms a page as a nest of boxes within boxes within boxes. The -outermost box is the page itself, the innermost boxes are mostly -single characters, and single lines are boxes that are -somewhere in the middle. - -\TeX\ carries out most of its box-building activities implicitly as it -constructs paragraphs and pages. -You can construct boxes explicitly -using a number of \TeX\ \refterm{commands}, notably -^|\hbox| \ctsref{\hbox}, -^|\vbox| \ctsref{\vbox}, and -^|\vtop| \ctsref{\vtop}. -The ^|\hbox| command -constructs a box by appending smaller boxes horizontally from left to right; -it operates on a \refterm{horizontal list} and yields -an \refterm{hbox} ^^{hboxes} (horizontal box). -^^{horizontal lists} -The ^|\vbox| and |\vtop| commands -construct a box by appending smaller boxes vertically from top to bottom; -^^{vboxes} -they operate on a \refterm{vertical list} -and yield a \refterm{vbox} ^^{vboxes} (vertical box). -^^{vertical lists} -These horizontal and vertical lists can include not just smaller boxes but -several other kinds of entities as well, e.g., \refterm{glue} and -kerns. -^^{kerns//as list items} - -A box has \refterm{height}, \refterm{depth}, and \refterm{width}, -^^{height} ^^{depth} ^^{width} -like this: -\vdisplay{\offinterlineskip\sevenrm - \halign{#&#&\kern3pt \hfil#\hfil\cr - &\hrulefill\cr - &\vrule - \vtop to .7in{\vss \hbox to .9in{\hss baseline\hss}\vskip4pt}% - \vrule - &\labelledheight{.7in}{height}\cr - % - \vbox to 0pt{ - \vss - \hbox{reference point \hbox to 15pt{\rightarrowfill}% - \hskip3pt}% - \kern-4.5pt}&{\box\refpoint}\hrulefill\cr - % - \omit - &\vrule\hfil\vrule - &\labelledheight{.4in}{depth}\cr - % - &\hrulefill\cr - % - \noalign{\vskip3pt}% - &\leftarrowfill { width }\rightarrowfill\cr -}} - -^^{baselines} -The \refterm{baseline} is like one of -the light guidelines on a pad of ruled paper. -The boxes for letters such as `g' -extend below the baseline; the boxes for letters such as `h' don't. -The height of a box is the distance that the box extends above its -baseline, while its depth is the distance that it extends below its -baseline. \bix^^{reference point} -The \minref{reference point} -of a box is the place where its baseline intersects its left edge. - -{\tighten -\TeX\ builds an hbox $H$ from a horizontal list by assuming -a reference point for $H$ and then appending the items in the list to $H$ -one by one from left to right. -Each box in the list is placed so that its baseline coincides with the -baseline of $H$\kern-2pt, -i.e., the component boxes are lined up horizontally.% -\footnote{If a box is moved up or down with ^|\raise| or -^|\lower|, \TeX\ uses its reference point before the move when -placing it.} -The height of $H$ is the -height of the tallest box in the list, and the depth of $H$ is the depth -of the deepest box in the list. -The width of $H$ is the sum of the -widths of all the items in the list. -If any of these items are \refterm{glue} and \TeX\ needs to stretch or shrink -the glue, -the width of $H$ will be larger or smaller accordingly. -See \knuth{page~77} for the~details. -\par} - -Similarly, \TeX\ builds a vbox $V$ from a vertical list by assuming a -temporary reference point for $V$ and then appending the items in the -list to $V$ one by one from top to bottom. Each box in the list is -placed so that its reference point is lined up vertically with the -reference point of \Vperiod.\footnote{If a box is moved left or right with -^|\moveleft| or ^|\moveright|, \TeX\ uses its reference point before the -move when placing it.} As each box other than the first one is added to -\Vcomma, \TeX\ puts \minref{interline glue} just above it. (This -^{interline glue} has no analogue for hboxes.) The width of $V$ is the -width of the widest box in the list, and the vertical extent (height -plus depth) of $V$ is the sum of the vertical extents of all the -items in the list. - -\bix^^|\vbox| -\bix^^|\vtop| -The difference between |\vbox| and |\vtop| is in how they partition -the vertical extent of $V$ into a height and a depth. -Choosing the reference point of $V$ determines that partition. -\ulist -\li For |\vbox|, \TeX\ places the reference point on a horizontal line -with the reference point of the last component box -or rule of \Vcomma, except -that if the last box (or rule) is followed by glue or a kern, \TeX\ places the -reference point at the very bottom of \Vperiod.% -\footnote{The depth is limited by -the parameter ^|\boxmaxdepth| \ctsref{\boxmaxdepth}.} - -\li For |\vtop|, \TeX\ places the reference point on a horizontal line -with the reference point of the first component box or rule of \Vcomma, -except that if the first box (or rule) -is preceded by glue or a kern, \TeX\ places -the reference point at the very top of \Vperiod. - -\endulist -\noindent -Roughly speaking, then, |\vbox| puts the reference point near the bottom -of the vbox and |\vtop| puts it near the top. -When you want to align a -row of vboxes so that their tops line up horizontally, -you should usually use |\vtop| rather than |\vbox|. -See \knuth{pages~78 and 80--81} for the -details of how \TeX\ builds vboxes. -\eix^^|\vbox| -\eix^^|\vtop| -\eix^^{reference point} - -You have quite a lot of freedom in constructing boxes. The typeset -material in a box can extend beyond the boundaries of the box as it does -for some letters (mostly italic or slanted ones). The component boxes -of a larger box can overlap. A box can have negative width, depth, or -height, though boxes like that are not often needed. - -You can save a box in a box \refterm{register} and retrieve it later. -Before using a box register, -^^{box registers} -you should reserve it and give it a name -with the ^|\newbox| command \ctsref{\@newbox}. See -\conceptcit{register} for more information about box -registers. -\endconcept - - -\conceptindex{category codes} -\concept {category code} - -The \defterm{category code} of a \refterm{character} determines that -character's role in \TeX. -^^{characters//category code of} -For instance, \TeX\ assigns a certain role to -letters, another to space characters, and so forth. \TeX\ attaches a -code to each character that it reads. When \TeX\ reads the -letter `|r|', for example, it ordinarily -attaches the category code $11$ (letter) -to it. For simple \TeX\ applications you won't need to worry about -category codes, but they become important when you are trying to achieve -special effects. - -Category codes apply only to characters that \TeX\ reads from input -files. Once a character has gotten past \TeX's ^{gullet} -\seeconcept{\anatomy} and been interpreted, its category code no -longer matters. A character that you produce with the ^|\char| command -\ctsref{\char} does not have a category code because |\char| -is an instruction to \TeX\ to produce a certain character in a certain -\refterm{font}. For instance, the ^{\ascii} code for `|\|' -(the usual escape character) is $92$. If -you type `|\char92 grok|', it is \emph{not} equivalent to |\grok|. -Instead it tells \TeX\ to -typeset `$c$grok', where $c$ is the character in position $92$ -of the code table for the current font. - -You can use the ^|\catcode| command \ctsref{\catcode} to reassign the -category code of any character. By changing category codes you can -change the roles of various characters. For instance, if you type -`|\catcode`\@ = 11|', the category code of the at sign (|@|) will be set -to ``letter''. You then can use `|@|' in the name of a control -sequence. - -Here is a list of the category codes as they're defined in -\refterm{\plainTeX} (see \xref{twocarets} for an explanation of -the |^^| notation), -together with the characters in each category: - -\xrdef{catcodes} -\vskip\abovedisplayskip -%k \vskip 0pt plus 2pt % to fix bad page break -{%k \interlinepenalty = 10000 -\halign{\indent\hfil\strut#&\qquad#\hfil\cr -\it Code&\it Meaning\cr -\noalign{\vskip\tinyskipamount} -0&Escape character \quad |\| ^^{escape character//category code of} - {\recat!ttidxref[\//category code of]] - \cr -1&Beginning of group \quad |{| ^^{groups} - {\recat!ttidxref[{//category code of]] - \cr -2&End of group \quad |}| - {\recat!ttidxref[}//category code of]] - \cr -3&Math shift \quad |$| ^^{math shift} - {\recat!ttidxref[$//category code of]] - \cr -4&Alignment tab \quad |&| ^^{tabs} ^^{alignments//tab character for} - \ttidxref{&//category code of} \cr -5&End of line \quad |^^M| \tequiv \ascii\ \asciichar{return} - ^^{end of line} \ttidxref{^^M//category code of}\cr -6&Macro parameter \quad |#| - ^^{macros//parameters of} - ^^{parameters//indicated by \b\tt\#\e} - \ttidxref{#//category code of} \cr -7&Superscript \quad |^| and |^^K| ^^{superscripts} - \ttidxref{^^K} - \ttidxref{^//category code of} \cr -8&Subscript \quad |_| and |^^A| ^^{subscripts} - \ttidxref{^^A} - \ttidxref{_//category code of} \cr -9&Ignored character \quad |^^@| \tequiv \ascii\ \asciichar{null} - ^^{ignored characters} \indexchar ^^@ \cr -10&Space \quad \visiblespace\ and |^^I| \tequiv \ascii\ - \asciichar{horizontal\ tab} - ^^{horizontal tab} - ^^{space characters//category code of} \indexchar ^^I - {\recat!ttidxref[ ]] - \cr -11&Letter \quad |A| \dots |Z| and |a| \dots |z| ^^{letter}\cr -12&Other character \quad (everything not listed above or below) - ^^{other characters}\cr -13&Active character \quad |~| and |^^L| \tequiv\ascii\ \asciichar{form\ feed} - ^^{active characters} ^^{form feed} \indexchar ~ \indexchar ^^L \cr -14&Comment character \quad |%| ^^{comments} - {\recat!ttidxref[%//category code of]] - \cr -15&Invalid character \quad |^^?| \tequiv \ascii\ \asciichar{delete} - ^^{invalid character} \indexchar ^^? \cr -}} -\vskip\belowdisplayskip -%k \vskip 0pt plus 2pt % to fix bad page break - -\noindent Except for categories $11$--$13$, -all the characters in a particular category produce the same effect. -\margin{Misleading material removed.} -For instance, suppose -that you type: -\csdisplay -\catcode`\[ = 1 \catcode`\] = 2 -| -Then the left and right bracket characters become -beginning-of-group and end-of-group characters equivalent to -the left and right brace characters. With these definitions `|[a b]|' -is a valid group, and so are \hbox{`|[a b}|'} and~\hbox{`|{a b]|'}. - -The characters in categories $11$ (letter) and $12$ -(other character) act as \refterm{commands:command} -that mean -``produce a \refterm{box} containing this character -typeset in the current font''. -The only distinction between letters and ``other'' characters is -that letters can appear in \refterm{control word}s but -``other'' characters~can't. - -A character in category $13$ (active) acts like a control sequence -all by itself. \TeX\ complains if it encounters an active character that -doesn't have a definition associated with it. -^^{active characters} - -If \TeX\ encounters an ^{invalid character} (category $15$) -in your input, it will complain about it. - -The `|^^K|' and `|^^A|' characters have been included in categories -$8$ (subscript) and $9$ (superscript), even though these meanings -don't follow the standard \refterm{\ascii} interpretation. -That's because some keyboards, notably some at Stanford -University where \TeX\ originated, -have down arrow and up arrow keys that generate these characters. -\ttidxref{^^A} -\ttidxref{^^K} - -There's a subtle point about the way \TeX\ assigns category codes that -can trip you up if you're not aware of it. \TeX\ sometimes needs to -look at a character twice as it does its initial scan: first to find the -end of some preceding construct, e.g., a control sequence, and later to -turn that character into a token. \TeX\ doesn't assign the category -code until its \emph{second} look at the character. For example: - -\csdisplay -\def\foo{\catcode`\$ = 11 }% Make $ be a letter. -\foo$ % Produces a `$'. -\foo$ % Undefined control sequence `foo$'. -| -\noindent -This bit of \TeX\ code produces `\$' in the typeset output. When -\TeX\ first sees the `|$|' on the second line, -it's looking for the end of a control sequence name. Since -the `|$|' isn't yet a letter, it marks the end of `|\foo|'. Next, -\TeX\ expands the `|\foo|' macro and changes the category code of `|$|' -to $11$ (letter). Then \TeX\ reads the `|$|' ``for real''. Since -`|$|' is now a letter, \TeX\ produces a box -containing the `|$|' character in the current font. -When \TeX\ sees the third line, it treats `|$|' as a letter and thus -considers it to be part of the control sequence name. -As a result it complains about an undefined control sequence |\foo$|. - -\TeX\ behaves this way even when the terminating character is an -end of line. For example, suppose that the macro |\fum| activates the -end-of-line character. Then if |\fum| appears on a line $\ell$ by -itself, \TeX\ will first interpret the end of line of $\ell$ as -the end of the |\fum| control sequence and then will \emph{reinterpret} -the end of line of $\ell$ as an active character. -\endconcept - - -\conceptindex{characters} -\concept character - -{\tighten -\TeX\ works with \defterm{characters} in two contexts: -as input characters, which it reads, and as output characters, -which it typesets. -\TeX\ transforms most input characters -into the output characters that depict them. -For example, it normally -transforms the input letter `|h|' into the letter `h' typeset in the current -font. -That is not the case, however, for an input character such as `|$|' that has a -special meaning. -\par} - -\TeX\ gets its input characters by reading them from input files (or from your -terminal) and by expanding \refterm{macros:macro}. These are the -\emph{only} ways that \TeX\ can acquire an input character. -Each input character has a code number corresponding to its position in the -\refterm{\ascii} code table. ^^{\ascii} -For instance, the letter `|T|' has \ascii\ code~$84$. - -When \TeX\ reads -a character, it attaches a \refterm{category code} -^^{category codes//attached during input} -to it. The category code affects how \TeX\ interprets the -character once it has been read in. \TeX\ determines -(and remembers) the category codes of the characters in a macro when it -reads the macro's definition. As \TeX\ reads characters with its eyes -\seeconcept{\anatomy} it does some ``filtering'', -such as condensing -sequences of spaces to a single space. See \knuth{pages~46--48} for the -details of this filtering. - -The \ascii\ -``^{control characters}'' have codes $0$--$31$ and $127$--$255$. -They either don't -show up or cause strange behavior on most terminals if you try to -display them. Nonetheless they are sometimes needed in \TeX\ input, -so \TeX\ has a special notation for them. -\xrdef{twocarets} -If you type `|^^|$c$', where $c$ is any character, you get the character -whose \ascii\ code is either $64$ greater or $64$ less than $c$'s -\ascii\ code. The largest acceptable code value using this notation -is $127$, so the notation is unambiguous. -Three particularly common instances of this -notation are `|^^M|' (the \ascii\ \asciichar{return} character), -`|^^J|' (the \ascii\ \asciichar{line\ feed} character) and `|^^I|' -(the \ascii\ \asciichar{horizontal\ tab} character). -\ttidxref{^^M}\ttidxref{^^J}\ttidxref{^^I} - -{\tighten -\TeX\ also has another notation for indicating \ascii\ code values -that works for all character codes from $0$ to $255$. -\xrdef{hexchars} -If you type `|^^|$xy$', where $x$ -and $y$ are any of the ^{hexadecimal digit}s `|0123456789abcdef|', -you get the single character with the specified code. -(Lowercase letters are required here.) -\TeX\ opts for the ``hexadecimal digits'' -interpretation whenever it has a choice, so you must not follow a character -like `|^^a|' with a lowercase hexadecimal digit---if you do, you'll get the -wrong interpretation. -If you need to use this -notation you'll find it handy to have a table of \ascii\ codes. -\par} - -An output character is a character to be typeset. -A command for producing an output character has the meaning -``Produce a \refterm{box} containing -character number $n$ from the current \refterm{font}'', -where $n$ is determined by the command. -\TeX\ produces your typeset document by combining such boxes with -other typographical \hbox{elements} and arranging them -on the page. - -An input character whose category code is $11$ (^{letter}) or $12$ (other) -^^{other characters} -acts as a command to produce the corresponding output character. In -addition you can get \TeX\ to produce character $n$ by issuing the -command `|\char |$n$' \ctsref{\char}, ^^|\char| where $n$ is a -\refterm{number} between $0$ and $255$. The commands `|h|', -|\char`h|, and |\char104| all have the same effect. ($104$ is the -\ascii\ code for `h'.) - -\endconcept - - -\concept class - -The \defterm{class} of a \refterm{character} specifies that character's -role in math formulas. The class of a character is encoded in its -\refterm{mathcode}. ^^{mathcodes//class encoded in} For example, the -equals sign `|=|' is in class $3$ (Relation). \TeX\ uses its knowledge -of character classes to decide how much space to put between different -components of a math formula. \margin{clarifying material added} For -example, here's a math formula shown first as \TeX\ normally prints it -and then with the class of each character randomly changed: -$$\strut a+(b-a)=a \qquad - \mathopen{a}\mathord{+}\mathrel{(}\mathclose{b}\mathclose{-} - \mathop{a}\mathopen{)}\mathord{=}\mathopen{a}$$ - -See \xrefpg\mathord\ of this book for a list of the classes and -\knuth{page~154} for their meanings. - -\endconcept - - -\conceptindex{commands} -\concept command - -A \defterm{command} instructs \TeX\ to carry out a certain action. -Every \refterm{token} that reaches \TeX's stomach \seeconcept{\anatomy} -acts as a command, except for those that are parts of arguments to -other commands (see below). -^^{tokens//as commands} -A command can be invoked by a -\refterm{control sequence}, by an \refterm{active character}, or by an -ordinary character. It might seem odd that \TeX\ treats an ordinary -character as a command, but in fact that's what it does: -when \TeX\ sees -an ordinary character -it constructs a \refterm{box} containing that character typeset in -the current font. - -A command can have arguments. -The arguments of a command are single tokens or -groups of tokens that complete the description of what -the command is supposed to do. -For example, the command `|\vskip 1in|' tells \TeX\ to skip -$1$ inch vertically. It has an argument `|1in|', -which consists of three tokens. -The description of what |\vskip| is supposed to do would be incomplete -without specifying how far it is supposed to skip. -The tokens in the arguments to a command are not themselves considered -to be commands. - -Some examples of different kinds of \TeX\ commands are: -\ulist\compact -\li Ordinary characters, such as `|W|', which instructs \TeX\ -to produce a box containing a typeset `W' -\li Font-setting commands, -such as |\bf|, which begins boldface type -\li Accents, such as |\`|, which produces a grave accent as in `\`e' -\li Special symbols and ligatures, such as |\P| (\P) and |\ae| (\ae) -\li Parameters, such as |\parskip|, the amount of glue that -\TeX\ puts between paragraphs -\li Math symbols, such as |\alpha| ($\alpha$) and |\in| ($\in$) -\li Math operators, such as |\over|, which produces a fraction -\endulist -\endconcept - - -\conceptindex{conditional tests} -\concept {conditional test} - -A \defterm{conditional test} is a command that tests whether or not a certain -condition is true and -causes \TeX\ either to expand or to skip some text, depending on -the outcome. -The general form of a conditional test is either: -\display{ -{\tt \\if}$\alpha$\<true text>{\tt \\else}\<false text>{\tt \\fi}} -^^|\else|^^|\fi| -\noindent or:\hfil\ -\display{ -{\tt \\if}$\alpha$\<true text>{\tt \\fi}} -\noindent where $\alpha$ specifies the particular test. -For example, |\ifvmode| tests the condition that \TeX\ -is currently in a \refterm{vertical mode}. -If the condition is true, \TeX\ expands \<true text>. -If the condition is false, \TeX\ expands \<false text> (if it's present). -Conditional tests are interpreted in \TeX's gullet -\seeconcept{\anatomy}, so any expandable \minref{token}s in -the interpreted text are expanded after the test has been resolved. -The -various conditional tests are explained in \headcit{Conditional tests}% -{conds}. - -\endconcept - - -\conceptindex{control sequences} -\concept{control sequence} - -A \defterm{control sequence} is a name for a \TeX\ \refterm{command}. -A control sequence always starts with an ^{escape character}, usually -a backslash (|\|). -\indexchar \ -A control sequence takes one of two forms: - -\ulist - -\li A \refterm{control word} is a control sequence consisting of an -\refterm{escape character} followed by one or more letters. -^^{control words} -The control -word ends when \TeX\ sees a nonletter. For instance, when \TeX\ reads -`\hbox{|\hfill!visiblespace,!visiblespace!.the|}', it sees six -\refterm{tokens:token}: -the control sequence `|\hfill|', comma, space, `|t|', `|h|', `|e|'. The -space after `|\hfill|' ends the control sequence and -is absorbed by \TeX\ when it scans the control sequence. -(For the text `|\hfill,!visiblespace!.the|', on the other hand, -the comma both ends the control sequence and counts as a character in its -own right.) - -\li A \refterm{control symbol} -^^{control symbols} -is a control sequence consisting of an -^{escape character} followed by any character other than a letter---% -even a space or an end of line. -A control symbol is self-delimited, i.e., \TeX\ knows where it ends without -having to look at what character comes after it. -The character after a control symbol is never absorbed by -the control symbol. -\endulist -\noindent See \xrefpg{spaces} for more information about spaces after control -sequences. - -\TeX\ provides a great many predefined control sequences. The -\refterm{primitive} control sequences are built into the \TeX\ computer -program and thus are available in all forms of \TeX. -^^{primitive//control sequence} -Other -predefined control sequences are provided by \refterm{\plainTeX}, the -form of \TeX\ described in this book. - -You can augment the predefined control sequences with ones of your own, -using commands such as ^|\def| and ^|\let| to define them. -\chapterref{eplain} of this book contains a -collection of control sequence definitions that you may find -useful. In addition, your computing facility may -be able to provide a collection of -locally developed \TeX\ macros. -\endconcept - - -\conceptindex{control symbols} -\concept{control symbol} - -A \defterm{control symbol} is a \refterm{control sequence} that consists -of an \refterm{escape character} followed by any character other than a -letter---even a space or end of line. -^^{escape character} -\endconcept - - -\conceptindex{control words} -\concept{control word} - -A \defterm{control word} is a \refterm{control sequence} that consists -of an \refterm{escape character} followed by one or more -letters.\footnote{A ``letter'' here has the strict meaning of a -character with category code $11$.} -\TeX\ -ignores any spaces or ends-of-line that follow a control word, except to -note that they end the control word. -^^{escape character} -\endconcept - - - -\concept {decimal constant} - -See \conceptcit{number}. -\endconcept - -\conceptindex{delimiters} -\concept delimiter - -A \defterm{delimiter} is a character -that is intended to be used as -a visible boundary of a math formula. -The essential property of a delimiter is that \TeX\ can adjust -its size according -to the vertical size (\refterm{height} plus \refterm{depth}) -of the subformula. -However, \TeX\ performs the adjustment only if the delimiter -appears in a ``delimiter context'', namely, as an argument to -one of the commands ^|\left|, -^|\right|, -|\over!-with!-delims|, -|\atop!-with!-delims|, -or |\above!-with!-delims| -^^|\overwithdelims| -^^|\atopwithdelims| -^^|abovewithdelims| -\margin{Footnote deleted} -(see \pp\xrefn{\overwithdelims},~\xrefn{\left}). -The delimiter contexts also include any \refterm{argument} -to a \refterm{macro} that uses the argument in a delimiter context. - -For example, the left and right -parentheses are delimiters. -If you use ^{parentheses} in a delimiter context -around a formula, \TeX\ makes the parentheses big -enough to enclose the \refterm{box} that contains the formula (as long as the -\refterm{fonts:font} you're using have big enough parentheses). -For example: -\csdisplay -$$ \left( a \over b \right) $$ -| -yields: -\centereddisplays $$\left (a \over b \right ) $$ -Here \TeX\ has made the parentheses big enough to accommodate the fraction. -But if you write, instead: -\csdisplay -$$({a \over b})$$ -| -you'll get: -$$({a \over b})$$ -Since the parentheses aren't in a delimiter context, -they are \emph{not} enlarged. - -Delimiters come in pairs: -an opening delimiter at the left of the subformula -and a closing delimiter at its right. -You can explicitly choose a larger height for a -delimiter with the commands ^|\bigl|, ^|\bigr|, and their -relatives \ctsref{\bigl}.\footnote -{\PlainTeX\ defines the various |\big| commands by using |\left| and |\right| -to provide a delimiter context. It sets the size by -constructing an empty formula with the desired height.} -For instance, in order to get the -displayed formula: -$$\bigl(f(x) - x \bigr) \bigl(f(y) - y \bigr)$$ - -\noindent in which the outer parentheses are a little bigger than the inner -ones, you should write: - -\csdisplay -$$\bigl( f(x) - x \bigr) \bigl( f(y) - y \bigr)$$ -| - -The $22$ \plainTeX\ delimiters, shown at their normal size, are: -\display{% -$( \>) \>[ \>] \>\{ \>\} -\>\lfloor \>\rfloor \>\lceil \>\rceil -\>\langle \>\rangle \>/ \>\backslash -\>\vert \>\Vert -\>\uparrow \>\downarrow \>\updownarrow -\>\Uparrow \>\Downarrow \>\Updownarrow$} -^^|)| ^^|)| ^^|[| ^^|]| ^^|\lbrack| ^^|\rbrack| -^^|\{| ^^|\}| ^^|\lbrace| ^^|\rbrace| -^^|\lfloor| ^^|\rfloor| ^^|\lceil| ^^|\rceil| -^^|\langle| ^^|\rangle| ^^|/| ^^|\backslash| -^^|\vert| ^^|\Vert| -^^|\uparrow| ^^|\downarrow| ^^|\updownarrow| -^^|\Uparrow| ^^|\Downarrow| ^^|\Updownarrow| -\noindent -Here they are at the largest size provided explicitly by \plainTeX\ - (the |\Biggl|, |\Biggr|, etc., versions): -\nobreak\vskip .5\abovedisplayskip -\display{% -$\Biggl( \>\Biggr) \>\Biggl[ \>\Biggr] -\>\Biggl\{ \>\Biggr\} \>\Biggl\lfloor \>\Biggr\rfloor -\>\Biggl\lceil \>\Biggr\rceil -\>\Biggl\langle \>\Biggr\rangle -\>\Biggm/ \>\Biggm\backslash -\>\Biggm\vert \>\Biggm\Vert -\>\Biggm\uparrow \>\Biggm\downarrow \>\Biggm\updownarrow -\>\Biggm\Uparrow \>\Biggm\Downarrow \>\Biggm\Updownarrow$} -\vskip .5\belowdisplayskip -\noindent -The delimiters (except for `|(|', `|)|', and -`|/|') -are among the symbols listed on -pages~\xrefn{\lbrace}--\xrefn{\Uparrow}. -They are listed in one place on \knuth{page~146}. - -A delimiter can belong to any class. -^^{class//of a delimiter} -For a delimiter that you enlarge with -|\bigl|, |\bigr|, etc., the class is determined by the command: -``opener'' for |l|-commands, ``closer'' for |r|-commands, -``relation'' for |m|-commands, and ``ordinary symbol'' for |g|-commands, -e.g., |\Big|. - -You can obtain a delimiter in two different ways: -\olist -\li You can make a character be a delimiter by assigning it a -nonnegative delimiter code -\bix^^{delimiter codes} -(see below) with the ^|\delcode| command (\xref\delcode). -Thereafter the character acts as a delimiter whenever you use it in a -delimiter context.\footnote{% -It's possible to use a character with a nonnegative delimiter code in -a context where it isn't a delimiter. In this case \TeX\ doesn't perform the -search; instead it just uses the character in the ordinary way -(see \knuth{page~156}).} -\li You can produce a delimiter explicitly with the ^|\delimiter| command -(\xref\delimiter), in analogy to the way that you can produce an ordinary -character with the |\char| command or a math character with the |\mathchar| -command. -The |\delimiter| command uses the same delimiter codes that are used in a -|\delcode| table entry, but with an extra digit in front to indicate a -class. -It's rare to use |\delimiter| outside of a macro definition. -\endolist - -A delimiter code tells -\TeX\ how to search for an appropriate output character to represent -a delimiter. -The rules for this search are rather complicated -(see \knuth{pages~156 and 442}). -A complete understanding of these rules requires knowing -about the organization of font ^{metrics file}s, a topic that is not just beyond -the scope of this book but beyond the scope of \texbook\ as well. - -In essence the search works like this. The delimiter code specifies a -``small'' output character and a ``large'' output character by -providing a \refterm{font} position and a font \refterm{family} for each -(see \xref\delcode). -Using this information, \TeX\ can find (or construct) -larger and larger versions of the delimiter. \TeX\ first tries -different sizes (from small to large) -of the ``small'' character in the ``small'' font -and then -different sizes (also from small to large) -of the ``large'' character in the ``large'' font, -seeking one whose height plus depth is sufficiently large. -If none of the characters it finds are large -enough, it uses the largest one that it finds. -It's possible that -the small character, the large character, or both have been left unspecified -(indicated by a zero in the appropriate part of the delimiter code). -If only one character -has been specified, \TeX\ uses that one. If neither has been specified, -it replaces the delimiter by a space of width ^|\nulldelimiterspace|. -\eix^^{delimiter codes} - -\endconcept - - -\concept demerits - -\TeX\ uses \refterm{demerits} as a measure of how undesirable a line is -when it's breaking a paragraph into lines \seeconcept{line break}. -^^{line breaks//demerits for} -The demerits of a line are affected both by the \refterm{badness} of the line -and by \refterm{penalties:penalty} associated with the line. -^^{badness} -\TeX's goal in choosing a particular arrangement of lines is to minimize the -total demerits for the paragraph, which it computes by adding up the demerits -for the individual lines. -See \knuth{pages~97--98} for the details of how \TeX\ -breaks a paragraph into lines. -\TeX\ does not use demerits when it's choosing page breaks; instead, it uses -a similar measure known as the ``cost'' of a particular page break. -\endconcept - -\concept depth - -^^{boxes//depth of} -The \defterm{depth} of a \refterm{box} is the distance that the box extends -below its \refterm{baseline}. -\endconcept - - -\conceptindex{dimensions} -\concept dimension - -A \defterm{dimension} specifies a distance, that is, a linear measure of -space. You use dimensions to specify sizes of things, such as the length -of a line. Printers in English-speaking countries traditionally measure -distance in points and picas, while printers in continental Europe -traditionally measure distance in did\^ot points and ciceros. You can -use these units or others, such as inches, that may be more -familiar to you. The font-independent -^{units of measure} that \TeX\ understands are: - -\xrdef{dimdefs} -\nobreak\vskip\abovedisplayskip -\halign{\indent\hfil\tt #\qquad&#\hfil\cr -pt&^{point} (72.27 points = 1 inch)\cr -pc&^{pica} (1 pica = 12 points)\cr -bp&big point (72 big points = 1 inch)\cr -in&^{inch}\cr -cm&^{centimeter} (2.54 centimeters = 1 inch)\cr -mm&^{millimeter} (10 millimeters = 1 centimeter)\cr -dd&^{\didotpt} (1157 {\didotpt}s = 1238 points)\cr -cc&^{cicero} (1 cicero = 12 {\didotpt}s)\cr -sp&^{scaled point} (65536 scaled points = 1 point)\cr -} -\vskip\belowdisplayskip - -Two additional units of measure are associated with every font: `^|ex|', -a vertical measure usually about the height of the letter `x' -in the font, and `^|em|', a -horizontal measure usually equal to the point size of the font and -about the width of the letter `M' in the font. Finally, -\TeX\ provides three ``infinite'' units of measure: `^|fil|', `^|fill|', and -`^|filll|', in increasing order of~strength. - -A dimension is written as a ^{factor}, i.e, a multiplier, -followed by a unit of measure. -^^{units of measure} -The factor can be either a whole \refterm{number} or -a \refterm{decimal constant} containing a decimal point -or decimal comma. -The factor can be preceded by a plus or minus sign, so a dimension -can be positive or negative. -^^{dimensions//negative} -The unit of measure must be there, even if the number is -zero. Spaces between the number and the unit of measure are permitted -but not required. You'll find a precise definition of a -dimension on \knuth{page~270}. Here are some examples of dimensions: - -\csdisplay -5.9in 0pt -2,5 pc 2fil -| -The last of these represents a first-order infinite distance. - -An infinite distance outweighs any finite distance or any weaker infinite -distance. If you add |10in| to |.001fil|, you get |.001fil|; if you add -|2fil| to |-1fill| you get |-1fill|; and so forth. -\TeX\ accepts infinite distances -only when you are specifying the \refterm{stretch} and \refterm{shrink} -of \refterm{glue}. - -\TeX\ multiplies all dimensions in your document by a -\refterm{magnification} factor $f/1000$, -where $f$ is the value of the ^|\mag| parameter. -^^{magnification} -Since the default value of -|\mag| is $1000$, the normal case is that your document is -typeset just as specified. You can specify a dimension as it will be -measured in the final document independent of magnification by putting -`|true|' in front of the unit. For instance, `|\kern 8 true pt|' -produces a kern of $8$ points whatever the magnification. -\endconcept - - -\concept {display math} - -The term \defterm{display math} refers to a math formula that \TeX\ -places on a line by itself with extra space above and below -so as to set it off from the surrounding text. -A display math formula is enclosed by `|$$|'s. -\ttidxref{$$} -\TeX\ reads display math in display math \refterm{mode}. -\endconcept - - -\concept{escape character} - -An \defterm{escape character} introduces a control sequence. The escape -character in \refterm{\plainTeX} is the backslash (|\|). -\indexchar \ -You can change the escape character from $c_1$ to $c_2$ -by reassigning the category codes of $c_1$ and $c_2$ -with the ^|\catcode| command \ctsref{\catcode}. -You can also define additional escape characters similarly. -If you want to typeset material containing literal escape characters, you must -either -(a) define a control sequence that stands for the printed escape character or -(b) temporarily -disable the escape character by changing its category code, using the -method shown on \xrefpg{verbatim}. The definition: - -\csdisplay -\def\\{$\backslash$} -| -is one way of creating a control sequence that stands for `$\backslash$' -(a backslash typeset in a math font). - -You can use the ^|\escapechar| parameter \ctsref{\escapechar} to specify -how the escape character is represented in synthesized control sequences, -e.g., those created by |\string| and |\message|. - - -\endconcept - - -\concept family - -A \defterm{family} is a group of three related \refterm{fonts:font} used -when \TeX\ is in \refterm{math mode}. -^^{fonts//families of} -Outside of math mode, families -have no effect. The three fonts in a family are used for normal symbols -(\refterm{text size}), subscripts and superscripts (\refterm{script -size}), and sub-subscripts, super-superscripts, etc.\ -(\refterm{scriptscript size}). -^^{text size} -^^{script size} -^^{scriptscript size} -For example, the numeral `|2|' set in -these three fonts would give you `$2$', `$\scriptstyle 2$', and -`$\scriptscriptstyle 2$' (in \plainTeX). -Ordinarily you would set up the -three fonts in a family as different point sizes of the same typeface, -but nothing prevents you from using different typefaces for the three -fonts as well or using the same font twice in a family. - -{\tighten -\TeX\ provides for up to sixteen families, numbered $0$--$15$. For -example, family $0$ in \refterm{\plainTeX} consists of $10$-point roman -for text, $7$-point roman for script, and $5$-point roman for -scriptscript. -^^{\plainTeX//font families in} -\PlainTeX\ also defines family $1$ to consist of math -italic fonts and reserves families $2$ and $3$ for ^{special symbols} and -^{math extensions} respectively.\footnote{Families $2$ and $3$ are special -in that their font metric files must include parameters for math -spacing.} If you need to define a family for yourself, you should use -the ^|\newfam| command \ctsref{\@newfam} to get the number of a family that -isn't in use, and the ^|\textfont|, ^|\scriptfont|, -and ^|\scriptscriptfont| commands \ctsref{\scriptscriptfont} -to assign fonts to that family. -\par} - -\endconcept - - -\conceptindex{files} -\concept file - -A \defterm{file} is a stream of information that \TeX\ interprets or -creates. Files are managed by the ^{operating system} that supervises your -\TeX\ run. \TeX\ deals with files in four different contexts: -\olist -\li A ``^{source file}'' is one that \TeX\ reads with its ``eyes'' -\seeconcept{\anatomy} and interprets according to its ordinary rules. -Your primary input file---the one you specify after `|**|' or -on the command line when -you invoke \TeX---is a source file, and so is any file that you call for -with an ^|\input| command \ctsref \input. - -\li A ``^{result file}'' is one that contains the results of -running \TeX. A \TeX\ run creates two result files: the -\dvifile\ and the log file. -^^{\dvifile//as a result file} -^^{log file//as a result file} -The \dvifile\ contains the information needed to print your document; -the -log file contains a record of what happened during the run, including any -error messages that \TeX\ generated. -If your primary source file is named -|screed.tex|, your \dvifile\ and log file will be named |screed.dvi| -and |screed.log|.\footnote{This is the usual convention, but -particular implementations of \TeX\ are free to change it.} - -\li To read from a file with the ^|\read| -command \ctsref{\read} you need to associate the file with an input stream. -^^{input streams//reading with \b\tt\\read\e} -You can have up to $16$ input streams active -at once, numbered $0$--$15$. -The |\read| command reads a single line and makes it the value of a -designated \refterm{control sequence}, so reading with -|\read| is very different from reading with ^|\input| (which brings in an -entire file). -\TeX\ takes any input stream number not between -$0$ and $15$ to refer to the terminal, -so `|\read16|', say, reads the next line that you type at the terminal. - -\li To write to a file with the |\write| -command \ctsref \write\ you need to associate the file -with an output stream. -^^|\write//output stream for| -^^{output streams} -You can have up to $16$ output streams active -at once, numbered $0$--$15$. -Input and output streams are independent. -Anything sent to an output stream with a negative number goes to the log -file; anything sent to an output stream with a number greater than $15$ -goes both to the log file and to the terminal. -Thus `|\write16|', say, writes a line on the terminal and also sends -that line -to the log~file. - -\endolist - -You must open a stream file before you can use it. -An input stream file is opened with an ^|\openin| -command \ctsref \openin\ and an output stream file is opened with an -^|\openout| command \ctsref\openout. -For tidiness -you should close a stream file when you're done with it, although -\TeX\ will do that at the end of the run if you don't. -The two commands for closing a stream file are ^|\closein| \ctsref\closein\ -and ^|\closeout| \ctsref\closeout. -An advantage of closing a stream when -you're done with it is that you can then reuse the stream for a different file. -Doing this can be essential when you're reading a long sequence of files. - -Although you can assign numbers yourself to input and output streams, -it's better to do it with the ^|\newread| and -^|\newwrite| \ctsref{\@newwrite} commands. -You can have more than one stream associated with a particular file, -but you'll get (probably undiagnosed) garbage unless all of the streams -are input streams. Associating more than one stream with an input file -can be useful when you want to use the same input file for two different -purposes. - -\TeX\ ordinarily defers the actions of opening, writing to, or closing -an output stream until it ships out a page with ^|\shipout| -(see \knuth{page~227} -for the details). This behavior applies even to messages written to the -terminal with |\write|. But you can get \TeX\ to perform an action -on an output stream immediately by preceding the action command with -^|\immediate| \ctsref\immediate. For example: -\csdisplay -\immediate\write16{Do not pass GO!! Do not collect $200!!} -| -\endconcept - - -\conceptindex{file names} -\concept {file name} - -A \defterm{file name} names a -\refterm{file} that is known to the ^{operating system} -that in turn -supervises your \TeX\ run. The syntax of a file name does \emph{not} -follow the usual rules of \TeX\ syntax, and in fact it is different -in different implementations of \TeX. -In particular, most \TeX\ implementations consider a file name to be -terminated by a blank or an end of line. Thus \TeX\ is likely to -misinterpret `|{\input chapter2}|' -by taking the right brace as part of the file name. -As a general rule, you should follow a file name by a blank or the -end of the line as in `|{\input chapter2!visiblespace}|'. - -\endconcept - - -\eject -\conceptindex{fonts} -\concept font - -A \defterm{font} in \TeX\ is a collection of up to $256$ output -characters, usually having the same typeface design, style (roman, -italic, bold, condensed, etc.), -and point size.\footnote{\PlainTeX\ uses a special -font for constructing ^{math symbols} in which the characters have -different sizes. Other special fonts are often useful for applications -such as typesetting ^{logos}.} The ^{Computer Modern fonts} that -generally come with \TeX\ have only $128$ characters. The colophon on -the last page of this book describes the typefaces that we used to set -this book. - -For instance, here is the alphabet in the Palatino Roman $10$ point font: -^^{Palatino fonts} -\vskip\abovedisplayskip{\narrower\tenpal -\noindent ABCDEFGHIJKLMNOPQRSTUVWXYZ\hfil\break -abcdefghijklmnopqrstuvwxyz\par -}\vskip\belowdisplayskip -\noindent -And here it is in the Computer Modern Bold Extended $12$ -point font: -^^{Computer Modern fonts} -\vskip\abovedisplayskip{\narrower\font\twelvebf=cmbx12\twelvebf -\noindent ABCDEFGHIJKLMNOPQRSTUVWXYZ\hfil\break -abcdefghijklmnopqrstuvwxyz\par -}\vskip\belowdisplayskip -The characters in a font are numbered. -The numbering usually agrees with the ^{\ascii} numbering -for those characters that exist in the \ascii\ character set. -The code table for each font indicates what the character -with code $n$ looks like in that font. -Some fonts, such as the ones used for mathematical symbols, have no -letters at all in them. You can produce a \refterm{box} containing the -character numbered $n$, typeset in the current font, by writing `|\char |$n$' - \ctsref{\char}. - -In order to use a font in your document, -you must first name it with a control sequence and load it. Thereafter you -can select it by typing -that control sequence whenever you want to use it. -\PlainTeX\ provides a number of fonts that are already named and~loaded. - -You name and load a font as a single operation, using a -command such as `|\font\twelvebf=cmbx12|'. Here `|\twelvebf|' is the -control sequence that you use to name the font -and `|cmbx12|' identifies the font metrics file -|cmbx12.tfm| -in your computer's file system. -You then can start to use the font by typing -`|\twelvebf|'. After that, the font will be in effect until -either (a)~you select another font or (b)~you terminate the -\refterm{group}, if any, in which you started the -font. For example, the input: - -\csdisplay -{\twelvebf white rabbits like carrots} -| -will cause the |cmbx12| font to be in effect just for the -text `|white rabbits like carrots|'. - -You can use \TeX\ with fonts other than -Computer Modern (look at the example on \xrefpg{palatino} and -at the page headers). -The files for such fonts need to be -installed in your computer's file system in a place where \TeX\ can find -them. \TeX\ and its companion programs generally need two files for each font: -one to give its metrics (|cmbx12.tfm|, -^^{\tfmfile} -for example) and another to -give the shape of the characters (|cmbx12.pk|, for example). -\TeX\ itself uses only the metrics -file. Another program, the device driver, -^^{device drivers} -converts the \dvifile\ -^^{\dvifile//converted by driver} -produced by \TeX\ to a form that your printer -or other output device can handle. The driver -uses the shape file (if it exists). - -The font metrics file contains the information that \TeX\ needs in -order to allocate space for each typeset character. -Thus it includes the size of each character, the ligatures and -kerns that pertain to sequences of adjacent characters, and so on. -What the metrics file -\emph{doesn't} include is any information about the shapes -of the characters in the font. - -{\tighten -The shape (pixel) file \xrdef{shape} -^^{pixel file}^^{shape file} -may be in any of several -formats. The extension part of the name (the part after the dot) -tells the driver which format the shape file is in. For example, -|cmbx12.pk| ^^{\pkfile} might be the shape file for font |cmbx12| in -packed format, while |cmbx12.gf| ^^{\gffile} might be the shape file -for font |cmbx12| in generic font format. -A shape file may not be needed for a font that's resident in your -output device. -\par} - -\endconcept - - -\conceptindex{footers} -\concept footer - -A \defterm{footer} is material that \TeX\ puts at the bottom of every page, -below the text of that page. -The default footer in \plainTeX\ is a centered page number. -Ordinarily a footer consists of a single line, which you can set by -assigning a token list to ^|\footline| \ctsref\footline. -See \xrefpg{bighead} for a method of producing multiline footers. - -\endconcept - -%k \vskip 0pt plus 2pt % to solve page break problem - -\concept {format file} - -{\tighten -A \defterm{format file} is a file that contains an image of -\TeX's memory in a form in which it can be reloaded quickly. -A format file can be created with the ^|\dump| command \ctsref\dump. -The image contains a complete record -of the definitions (of \refterm{fonts:font}, \refterm{macros:macro}, etc.) -that were present when the dump took place. -By using ^|virtex|, a special ``virgin'' form of \TeX, -you can then reload the format file at high speed and -continue in the same state that \TeX\ was in at the time of the dump. -The advantage of a format file over an ordinary input -file containing the same information is that \TeX\ can load it much -faster. -\par} - -Format files can only be created by ^|initex|, another special -form of \TeX\ intended just for that purpose. -Neither |virtex| nor |initex| has any -facilities other than the primitives built into the -\TeX\ program itself. - -A ^{preloaded} form of \TeX\ is one that has a format file already -loaded and is ready to accept user input. -The form of \TeX\ that's called |tex| -often has the \plainTeX\ definitions preloaded. -(\PlainTeX\ is ordinarily available in two other forms as well: -as a format file and as a \TeX\ source file. -In some environments, |tex| is equivalent to calling |virtex| -and then loading |plain|.) -Creating preloaded forms of \TeX\ requires a special program; -it cannot be done using only the facilities of \TeX\ itself. - -\endconcept - -\concept global - -A \defterm{global} definition is effective -until the end of the -document or until it is overridden by another definition, -even when it occurs within a \refterm{group}. -Thus a global definition is unaffected by group boundaries. -You can make any definition global by prefixing it with the |\global| -command \ctsref{\global} unless ^|\globaldefs| \ctsref\globaldefs{} -is negative. -^^|\global| - -There's a special way of making a \refterm{macro} definition global. -^^{macros//global} -Normally you define a macro using either the |\def| command -or the |\edef| command \ctsref{\edef}. -^^|\edef//making global| -^^|\def//making global| -If you use |\gdef| or |\xdef| -instead of |\def| and |\edef| respectively, the macro definition will -be global. That is, `^|\gdef|' is equivalent to `|\global\def|' and -`^|\xdef|' is equivalent to `|\global\edef|'. -\endconcept - - -\concept glue - -\bix^^{stretch} -\bix^^{shrink} -\defterm{Glue} is blank space that can stretch or shrink. -Glue gives \TeX\ the flexibility that it needs in order to produce -handsome -documents. Glue comes in two flavors: horizontal glue and vertical glue. -Horizontal glue occurs within \refterm{horizontal lists:horizontal list}, -while vertical glue occurs within \refterm{vertical lists:vertical list}. -^^{horizontal lists} -^^{vertical lists} -You -can produce a glue item either implicitly, e.g., with an interword space, or -explicitly, e.g., with the ^|\hskip| command. -^^{spaces//interword} -\TeX\ itself produces many glue -items as it typesets your document. -We'll just describe horizontal glue---vertical glue is analogous. - -When \TeX\ assembles a list of boxes and glue into a larger -unit, -^^{boxes//glue with} -it adjusts the size of the glue to meet the space requirements of the -larger unit. For instance, \TeX\ ensures that the ^{right margin} of a page -is uniform by adjusting the horizontal glue within lines. -Similarly, it ensures that different pages have the -same ^{bottom margin} -by adjusting the glue between blocks of text such as paragraphs and -math displays -(where the change is least likely to be conspicuous). - -A glue item has a natural space---the size it ``wants to be''. Glue -also has two other attributes: its \refterm{stretch} and its -\refterm{shrink}. You can produce a specific amount of horizontal glue -with the ^|\hskip| \refterm{command} \ctsref{\hskip}. The command -|\hskip 6pt plus 2pt minus 3pt| -produces a horizontal glue item whose natural -size is $6$ points, whose stretch is $2$ points, and whose shrink is -$3$ points. Similarly, you can produce a specific amount of vertical -glue with the ^|\vskip| command \ctsref{\vskip}. - -The best way to understand what stretch and shrink are about -is to see an example of glue at work. -Suppose you're constructing an \refterm{hbox} from three boxes and two glue -items, as in this picture: -\gluepicture - 29 {\picbox 4 \gluebox 6 4 1 6 \picbox 5 \gluebox 10 8 3 10 \picbox 4 } -\noindent -The units of measurement here could be points, millimeters, or anything else. -If the hbox is allowed to assume its natural width, then each glue item in the -box also assumes its natural width. The total width of the hbox is then the -sum of the widths of its parts, namely, $29$ units. - -Next, suppose that the hbox is required to be wider than $29$ units, say -$35$ units. This -could happen, for example, if the hbox is required to occupy an entire -line and the line width is $35$ units. -Since the boxes can't change their width, -\TeX\ produces the necessary extra space by making the glue items wider. -The picture now looks like this: -\gluepicture - 35 {\picbox 4 \gluebox 6 4 2 8 \picbox 5 \gluebox 10 8 6 14 \picbox 4 } -The glue items don't become wider equally; they became wider in proportion to -their stretch. Since the second glue item -has twice as much stretch as the first one, -it gets wider by four units while the first glue item gets wider by only -two units. -Glue can be stretched as far as necessary, although \TeX\ is -somewhat reluctant to -stretch it beyond the amount of stretch given in its definition. - -Finally, suppose that the hbox is required to be narrower than $29$ units, say -$25$ units. In this case \TeX\ makes the glue items narrower. -The picture looks like this: -\gluepicture - 25 {\picbox 4 \gluebox 6 4 2 5 \picbox 5 \gluebox 10 8 6 7 \picbox 4 } -The glue items become narrower in proportion to their shrink. -The first glue item becomes narrower by one unit, while the second glue item -becomes narrower by three units. Glue cannot shrink by a distance -less than the amount of shrink -given in its definition even though the distance it can stretch is -unlimited. In this important sense the shrink and -the stretch behave differently. - -A good rule of thumb for glue is to set the natural size to the amount -of space that looks best, the stretch to the largest amount of space -that \TeX\ can add before the document starts to look bad, and the -shrink to the largest amount of space that \TeX\ can take away before -the document starts to look bad. You may need to set the values by -experiment. - -You can produce glue that is infinitely stretchable by specifying -its stretch in units of `^|fil|', `^|fill|', or `^|filll|'. Glue measured in -`|fill|' is infinitely more stretchable than glue measured in `|fil|', and -glue measured in `|filll|' is infinitely more stretchable than glue measured -in `|fill|'. You should rarely have any need for `|filll|' glue. Glue whose -stretch is |2fil| has twice as much stretch as glue whose stretch is |1fil|, -and similarly for the other kinds of infinitely stretchable glue. - -When \TeX\ is -apportioning extra space among glue items, the infinitely stretchable -ones, if there -are any, get all of it. Infinitely stretchable glue is particularly useful for -setting text flush left, flush right, or centered: - -\ulist\compact -\li To set text ^{flush left}, put infinitely stretchable -horizontal glue to the right of it. -That glue will consume all the -extra space that's available on the line. -You can use the ^|\leftline| command \ctsref{\leftline} -or the |\raggedright| command \ctsref{\raggedright} to do~this. -\li To set text ^{flush right}, put infinitely -stretchable horizontal glue to the left of it. -As before, that glue will consume all the extra space on the line. -You can use the ^|\rightline| command \ctsref{\rightline} to do~this. -\li To set ^{centered text}, put identical infinitely stretchable -horizontal glue items -on both sides of it. -These two glue items will divide all the extra space on the line -equally between them. -You can use the ^|\centerline| command \ctsref{\centerline} to do~this. -\endulist - -You can also specify infinitely shrinkable glue -^^{glue//infinitely shrinkable} -in a similar way. Infinitely shrinkable glue can act as negative space. -Note that |fil|, etc., can be used only -to specify the stretch and shrink of glue---they can't be used to specify -its natural size. -\eix^^{stretch} -\eix^^{shrink} -\endconcept - - -\conceptindex{groups} -\concept group - -A \defterm{group} is a part of your manuscript that \TeX\ treats as a unit. -You indicate a group by enclosing it in the braces -`|{|' and `|}|' (or any other characters with the appropriate -\refterm{category codes}). -^^|{//starting a group| -^^|}//ending a group| - -The most important property of a group is that any nonglobal -definition or assignment that you make inside a group disappears when -the group ends. For instance, if you write: - -\csdisplay -Please don't pour {\it any} more tea into my hat. -| -the |\it| \refterm{control sequence} causes \TeX\ to set the word -`|any|' in italic type but does not affect the rest of the text. -As another example, if you use the |\hsize| parameter -\ctsref{\hsize} to change the line length within a group, the line length -reverts to its previous value once \TeX\ has gotten past the group. - -Groups are also useful as a way of controlling spacing. For instance, if you -write: - -\csdisplay -\TeX for the Impatient and the Outpatient too. -| -\noindent -you'll get: -\display{% -\TeX for the Impatient and the Outpatient too. -} -\noindent -since the control sequence |\TeX| (which produces the \TeX\ -logo) absorbs the following space. -What you probably want is: -\display{% -{\TeX} for the Impatient and the Outpatient too. -} -\noindent -One way to get it is to enclose `|\TeX|' in a group: -\csdisplay -{\TeX} for the Impatient and the Outpatient too. -| -The right brace prevents the control sequence from absorbing the space. -\endconcept - - -\conceptindex{hboxes} -\concept hbox - -An \defterm{hbox} (horizontal box) is a \refterm{box} that \TeX\ -constructs by placing the items of a \refterm{horizontal list} one after -another, left to right. -^^{horizontal lists//hboxes formed from} -An hbox, taken as a unit, is neither -inherently horizontal nor inherently vertical, i.e., it can appear as an -item of either a horizontal list or a \refterm{vertical list}. You can -construct an hbox with the |\hbox| command \ctsref{\hbox}. -\endconcept - - -\conceptindex{headers} -\concept header - -A \defterm{header} is material that \TeX\ puts at the top of every page, -above the text of that page. -The header for a simple report -might consist of the title on the left side of -the page and the text ``Page $n$'' on the right side of the page. -Ordinarily a header consists of a single line, which you can set by -assigning a token list to ^|\headline| \ctsref\headline. -The default \plainTeX\ header is blank. -It's possible to produce multiline headers too; see \xrefpg{bighead} for -how to do it. -\endconcept - - -\concept height - -The \defterm{height} of a \refterm{box} is the distance that the box -extends above its \refterm{baseline}. -^^{boxes//height of} -\endconcept - - -\conceptindex{horizontal lists} -\concept{horizontal list} - -A \defterm{horizontal list} is a list of items -that \TeX\ has produced while it is -in one of its \refterm{horizontal modes:horizontal mode}, i.e., assembling -either a paragraph or an hbox. See ``horizontal mode'' below. -\endconcept - - -\concept {horizontal mode} - -^^{hboxes//horizontal mode for} -When \TeX\ is assembling a paragraph or an \refterm{hbox}, it is in one -of two \defterm{horizontal modes}: ^{ordinary horizontal -mode} for assembling paragraphs and ^{restricted horizontal mode} for -assembling hboxes. Whenever \TeX\ is in a horizontal mode its stomach -\seeconcept{\anatomy} is constructing a \refterm{horizontal -list} of items (boxes, glue, penalties, etc.). -\TeX\ typesets the items in the list -one after another, left to right. - -A horizontal list can't contain any -items produced by inherently vertical commands, e.g., |\vskip|. -^^{horizontal lists//can't contain vertical commands} - -\ulist -\li If \TeX\ is assembling a horizontal list in ordinary horizontal mode and -encounters an inherently vertical command, \TeX\ ends the paragraph and -enters \refterm{vertical mode}. - -\li If \TeX\ is assembling a horizontal list in restricted horizontal -mode and encounters an inherently vertical command, it complains. -\endulist Two commands that you might at first think are inherently -horizontal are in fact inherently vertical: |\halign| \ctsref{\halign} -and |\hrule| \ctsref{\hrule}. -^^|\hrule//inherently vertical| -^^|\halign//inherently vertical| -See \knuth{page~286} for a list -of the inherently vertical commands. - -{\tighten -You should be aware of a subtle but important property of restricted -horizontal mode: \emph{you can't enter restricted horizontal mode -when you're in ordinary horizontal mode}. What this means in practice is that -when \TeX\ is assembling an hbox it -won't handle paragraph-like text, i.e., text for which it does -\refterm{line breaking}. You can get -around this restriction by enclosing the paragraph-like text in a -\refterm{vbox} within the hbox. The same method works if you want to -put, say, a horizontal \refterm{alignment} inside an~hbox. -}% end scope of tighten - -\endconcept - - -\concept{hyphenation} - -\TeX\ automatically hyphenates words as it is processing your document. -\TeX\ is not eager to insert hyphens, preferring instead to find good -line breaks by adjusting the spacing between words and moving words -from one line to another. -\TeX\ is clever enough to understand -hyphens that are already in words. - -You can control \TeX's hyphenation in several ways: -\ulist -\li You can tell \TeX\ to -allow a hyphen in a particular place by inserting a -discretionary hyphen -^^{discretionary hyphens} -with the ^|\-| command \ctsref{\@minus}. -\li You can tell \TeX\ how to -hyphenate particular words throughout your document with the ^|\hyphenation| -command \ctsref{\hyphenation}. -\li You can enclose a word in an \refterm{hbox}, thus preventing \TeX\ -from hyphenating it. -\li You can set the value of penalties such as |\hyphenpenalty| -\ctsref\hyphenpenalty. -\endulist -\noindent If a word contains an explicit or discretionary hyphen, -\TeX\ will never break it elsewhere. -\endconcept - - -\conceptindex{input streams} -\concept {input stream} - -See \conceptcit{file}. -\endconcept - -\conceptindex{insertions} -\concept insertion - -\looseness = -1 -An \defterm{insertion} is a vertical list containing material -to be inserted into -a page when \TeX\ has finished building that page.\footnote -{\tighten -\TeX\ itself doesn't -insert the material---it just makes the material available to -the output routine, which is then responsible for transferring -it to the composed page. -^^{output routine//insertions, treatment of} -The only immediate effect of the ^|\insert| command -\ctsref{\insert} is to change \TeX's page break calculations so that it -will leave room on the page for the inserted material. Later, when -\TeX\ actually breaks the page, it divides the inserted material into -two groups: the material that fits on the current page and the material -that doesn't. -^^{page breaks//insertions at} -The material that fits on the page is placed into box registers, -one per insertion, -and the material that doesn't fit is carried over to the next page. -This procedure allows \TeX\ to do such -things as distributing parts of a long footnote over several consecutive -pages.} Examples of such insertions are footnotes and figures. The -\refterm{\plainTeX} commands for -creating insertions are ^|\footnote|, ^|\topinsert|, |\mid!-insert|, -^^|\midinsert| -and ^|\pageinsert|, as well as the primitive ^|\insert| command -itself (\pp\xrefn\footnote--\xrefn{endofinsert}). -\TeX's mechanism for handling insertions is rather complicated; -see \knuth{pages~122--125} for the details. -\endconcept - - -\concept {interline glue} - -\defterm{Interline glue} is the glue that \TeX\ inserts in front of every -\refterm{box} in a \refterm{vertical list} except for the first one. -The interline glue is ordinarily specified so as to maintain a constant -distance between the baselines of the boxes. -Its value is jointly determined by the ^|\baselineskip|, -^|\lineskip|, and ^|\lineskiplimit| parameters \ctsref{\baselineskip}. -\endconcept - - -\conceptindex{items} -\concept item - -The term \defterm{item} is often used to refer to a component of -a horizontal, vertical, or math list, i.e., a list of items that -\TeX\ is building while it is in a horizontal, vertical, or math mode. -\endconcept - - - -\conceptindex{justification} -\concept {justified text} - -\defterm{Justified text} is text that has been typeset so that both -margins are even. Unjustified text, on the other hand, has been typeset -with ``ragged'' margins on one or both sides. -Documents typed on old-fashioned typewriters almost always have -ragged right margins. -Although documents produced by \TeX\ are -justified by default, you can if you wish produce documents (or -sequences of lines) that have ^{ragged right}---or ^{ragged left}---margins. -You can also get \TeX\ to center a sequence of lines, thus making both -margins ragged. -^^{centered text} -You can use the -^|\leftskip|, ^|\rightskip|, and ^|\raggedright| commands -(\pp \xrefn{\leftskip},~\xrefn{\raggedright}) for these purposes. - -When \TeX\ is producing justified text, it usually -needs to stretch or shrink the glue within each line to make the margins -come out even. When \TeX\ is producing unjustified text, on the other -hand, it usually leaves the glue within each line at its natural width. -Many typographers prefer unjustified text because its interword -spacing is more uniform. -\endconcept - - -\conceptindex{kerns} -\concept kern - -^^{spacing//adjusting with kerns} -A \defterm{kern} indicates a change to the normal spacing between -the items of a vertical or horizontal list. -A kern can be either positive or negative. By -putting a positive kern between two items, you push them further apart -by the amount of the kern. By putting a negative kern between two -items, you bring them closer together by the amount of the kern. For -instance, this text: -\csdisplay -11\quad 1\kern1pt 1\quad 1\kern-.75pt 1 -| -produces letter pairs that look like this: -\display{11\quad 1\kern1pt 1\quad 1\kern-.75pt 1} -You can use kerns in vertical mode to adjust the space between -particular pairs of lines. - -A kern of size $d$ is very similar to a \refterm{glue} item that has -size $d$ and no stretch or shrink. Both the kern and the glue insert or -remove space between neighboring items. The essential difference is -that \TeX\ considers two boxes with only kerns between them to be tied -together. That is, \TeX\ won't break a line or a page at a kern unless -the kern is immediately followed by glue. Bear this difference in mind -when you're deciding whether to use a kern or a glue item for a -particular purpose. - -\TeX\ automatically inserts kerns between particular pairs of adjacent -letters, thus adjusting the space between those letters and enhancing -the appearance of your typeset document. -For instance, the Computer Modern $10$-point roman font contains a kern -for the pair `To' that brings the left edge of the `o' under the -`T'. Without the kern, you'd get \hbox{``T{o}p''} rather than ``Top''---% -the difference is slight but noticeable. -The metrics file -(^{\tfmfile}) -for each \refterm{font} specifies the placement and size of the -kerns that \TeX\ automatically inserts when it is setting text in that~font. -\margin{paragraph deleted to save space; most of the material was -already in this section.} - -\endconcept - - -\concept leaders - -You can use \defterm{leaders} to fill a space with copies of -a pattern, e.g., -to put repeated dots between a title and a page number in a table of contents. -A leader is a single copy of the pattern. -The specification of leaders contains three pieces of information: -\olist\compact -\li what a single leader is -\li how much space needs to be filled -\li how the copies of the pattern should be arranged within the space -\endolist - -\bix^^|\leaders| -\bix^^|\cleaders| -\bix^^|\xleaders| -{\tighten -\TeX\ has three commands for specifying leaders: -|\leaders|, \hbox{|\cleaders|}, and |\xleaders| (\xref\leaders). The -\refterm{argument} of each command specifies the leader. -The command must be followed by \refterm{glue}; the size of the glue -specifies how much space is to be filled. The choice of command determines -how the leaders are arranged within the space.} - -Here's an example showing how |\leaders| works: -\csdisplay -\def\dotting{\leaders\hbox to 1em{\hfil.\hfil}\hfil} -\line{The Political Process\dotting 18} -\line{Bail Bonds\dotting 26} -| -Here we've put the leaders and their associated glue into a \refterm{macro} -definition so that we can conveniently -use them in two places. This input produces: - -\vdisplay{\advance\hsize by -\parindent -\def\dotting{\leaders\hbox to 1em{\hfil{.}\hfil}\hfill}% -\line{The Political Process{\dotting}18} -\line{Bail Bonds{\dotting}26} -} - -The \refterm{hbox} following |\leaders| specifies -the leader, namely, an hbox 1\em\ wide containing a dot -at its center. -The space is filled with copies of this box, -effectively filling it -with dots whose centers are 1\em{} apart. -The following |\hfil| (the one at the -end of the macro definition) is glue that -specifies the space to be filled. -In this case it's whatever space is needed to fill out the line. -By choosing |\leaders| rather than |\cleaders| or |\xleaders| we've insured -that the dots on different lines line up with each other. - -In general, the space to be filled acts as a window -on the repeated copies of the leader. -\TeX\ inserts as many copies as possible, but some space is -usually left over---either because of where the leaders fall -within the window or because -the width of the window isn't an exact multiple of the width of the -leader. -The difference among the three commands is in how they arrange the leaders -within the window and how they distribute any leftover space: - -\ulist -\li For |\leaders|, \TeX\ first produces a row of copies of the leader. -It then aligns the start of this row with the left end of the innermost -box $B$ that is to contain the result of the |\leaders| command. -In the two-line example above, $B$ is a box produced by |\line|. -Those leaders that fit entirely in the window are placed into $B$, -and the leftover space at the left and right ends is left empty. -The picture is like this: -\vdisplay{% -\def\dotting{\leaders\hbox to 1em{\hfil{.}\hfil}\hfill}% -\def\pp{The Political Process} -\line{\dotting} -\line{\hphantom\pp\hfil$\Downarrow$\hfil\hphantom{18}} -\vskip 4pt -\setbox0 = \hbox{\pp} -\setbox1 = \hbox{18} -\dimen0 = \hsize \advance\dimen0 by -\wd0 \advance \dimen0 by -\wd1 -\advance\dimen0 by -0.8pt -\hbadness=10000 -\line{\pp - \vrule\vbox{\hrule width \dimen0\vskip 2pt - \hbox to \dimen0{\hfil window\strut\hfil} - \vskip 2pt\hrule width \dimen0}% - \vrule 18} -\line{\hphantom\pp\hfil$\Downarrow$\hfil\hphantom{18}} -\vskip 2pt -\line{\pp{\dotting}18} -} -\vskip\medskipamount -{\tighten -\noindent -This procedure ensures that in the two-line example on the previous page, -the dots in the two lines -are vertically aligned (since the \refterm{reference points:reference point} -of the hboxes produced by |\line| are vertically aligned). -\par} - -\li For |\cleaders|, \TeX\ centers the leaders within the window -by dividing the leftover space between the two ends of the window. -The leftover space is always less than the width of a single leader. - -\li For |\xleaders|, \TeX\ distributes the -leftover space evenly within the window. -In other words, if the leftover space is $w$ and the -leader is repeated $n$ times, -\TeX\ puts space of width $w/(n+1)$ between adjacent leaders and -at the two ends of the leaders. -The effect is usually to spread out the leaders a little bit. -The leftover space for |\xleaders|, like that for |\cleaders|, -is always less than the width of a single leader. -\endulist - -So far we've assumed that the leaders consist of hboxes arranged -horizontally. Two variations are possible: -\olist -\li You can use a -rule instead of an hbox for the leader. -\TeX\ makes the rule as wide as necessary to extend -across the glue (and the three commands are equivalent). -\li You -can produce vertical leaders that run down the page by including them in -a \refterm{vertical list} rather than a \refterm{horizontal list}. In -this case you need vertical glue following the leaders. -\endolist -\noindent -See \knuth{pages~223--225} for the precise rules that \TeX\ uses -in typesetting leaders. -\eix^^|\leaders| -\eix^^|\cleaders| -\eix^^|\xleaders| -\endconcept - - -\conceptindex{ligatures} -\concept ligature - -A \defterm{ligature} is a single character that replaces a -particular sequence of adjacent characters in a typeset document. -For example, the word `|office|' is typeset as \hbox{``office''}, -not \hbox{``of{f}ice''}, by high-quality typesetting systems. -Knowledge of ligatures is built into the -\refterm{fonts:font} that you use, so there's nothing explicit you need do -in order to get \TeX\ to produce them. (You could defeat the ligature -in ``office'', as we did just above, by writing `|of{f}ice|' in your input.) -\TeX\ is also capable of using its ligature mechanism to typeset the -first or last letter of a word differently than the same letter as it would -appear in the middle of a word. -You can defeat this effect (if you ever encounter it) by using the -^|\noboundary| command (\xref\noboundary). - -Sometimes you may need a ligature from a European language. -^^{European languages} -\TeX\ won't -produce these automatically unless you're using a font designed for that -language. A number of these ligatures, e.g., `\AE', are available as -commands (see ``Letters and ligatures for European alphabets'', -\xref{fornlets}). -\endconcept - - -\conceptindex{line breaks} -\concept{line break} - -A \defterm{line break} is a place in your document where \TeX\ ends -a line as it typesets a paragraph. -When \TeX\ processes your document, it collects the contents of each -paragraph in a \refterm{horizontal list}. -When it has collected an entire paragraph, -it analyzes the list to find what it considers to be the best possible -line breaks. \TeX\ associates ``^{demerits}'' with various symptoms of -unattractive line breaks---lines that have too much or too little -space between words, consecutive lines that end in hyphens, and so forth. It -then chooses the line breaks so as to minimize the total number of demerits. -See \knuth{pages~96--101} for a full description of \TeX's line-breaking rules. - -You can control \TeX's choice of line breaks in several ways: -\ulist - -\li You can insert a \refterm{penalty} (\xref{hpenalty}) somewhere in -the horizontal list that \TeX\ builds as it forms a paragraph. -^^{penalties//in horizontal lists} -A -positive penalty discourages \TeX\ from breaking the line there, while a -negative penalty---a bonus, in other words---encourages \TeX\ to break -the line there. A penalty of $10000$ or more prevents a line break, -while a penalty of $-10000$ or less forces a line break. You can get -the same effects with the ^|\break| and -^|\nobreak| commands (\pp\xrefn{hbreak},~\xrefn{hnobreak}). - -\li You can tell \TeX\ to allow a hyphen in a particular place by -inserting a discretionary hyphen -^^{discretionary hyphens} -with the |\-| command \ctsref{\@minus}, or -otherwise control how \TeX\ hyphenates your document \seeconcept -{hyphenation}. -^^|\-//in line breaking| - -\li You can tell \TeX\ to allow a line break after a ^{solidus} (/) between -two words by inserting ^|\slash| \ctsref{\slash} -between them, e.g., `|fur!-longs\slash fortnight|'. - -\li You can tell \TeX\ not to break a line between two particular words by -inserting a ^{tie} (|~|) between those words. -^^|~//in line breaking| - -\li You can adjust the penalties associated with line breaking by -assigning different values to \TeX's line-breaking -\refterm{parameters:parameter}. - -\li You can enclose a word or sequence of words in an \refterm{hbox}, -thus preventing \TeX\ from breaking the line anywhere within the hbox. -^^{hboxes//controlling line breaks} -\endulist - -It's useful to know the places where \TeX\ can break a line: -\ulist -\li at glue, provided that: -\olist -\li the item preceding the glue is one of the following: -a box, a discretionary item (e.g., a discretionary hyphen), -the end of a math formula, -a whatsit, -or vertical material produced by |\mark| or |\vadjust| -or |\insert| -\li the glue is not part of a math formula -\endolist -\noindent -When \TeX\ breaks a line at glue, it makes the break at the left edge -of the glue space and forgets about the rest of the glue. -\li at a kern that's immediately followed by glue, -provided that this kern isn't within a math formula -\li at the end of a math formula that's immediately followed by glue -\li at a penalty, even one within a math formula -\li at a discretionary break -\endulist -When \TeX\ breaks a line, it discards any -sequence of glue, kerns, and penalty items that follows the break point. -If such a sequence is followed by the beginning of a math formula, it -also discards any kern produced by the beginning of the formula. -\endconcept - - -\conceptindex{lists} -\concept list - -A \defterm{list} is a sequence of \refterm{items:item} -(\refterm{boxes:box}, \refterm{glue}, \refterm{kerns:kern}, etc.) -that comprise the contents of an hbox, a vbox, -or a math formula. -See \conceptcit{horizontal list}, \conceptcit{vertical list}. - -\endconcept - - -\concept {log file} - -See \conceptcit{file}. -\endconcept - - -\conceptindex{macros} -\concept macro - -{% Use a brace here so that definitions of explanatory macros remain local. -% The closing brace is at the end of the concept. -A \defterm{macro} is a definition that gives a name to a pattern of -\TeX\ input text.\footnote{More precisely, the definition gives a name -to a sequence of tokens.} The name can be either a \refterm{control -sequence} or an \refterm{active character}. The pattern is called the -``replacement text''. The primary command for defining macros is the -|\def| control sequence. - -\def\arctheta{\cos \theta + i \sin \theta} -As a simple example, suppose that you have a document in which -the sequence `$\cos \theta + i \sin \theta$' occurs many times. -Instead of writing it out each time, you can define a macro for it: -\csdisplay -\def\arctheta{\cos \theta + i \sin \theta} -| -Now whenever you need this sequence, you can just ``call'' the macro -by writing `|\arctheta|' -and you'll get it. For example, `|$e^{\arctheta}$|' will give you -`$e^{\arctheta}$'. - -\bix^^{macros//parameters of} -But the real power of macros lies in the fact that a macro can have -parameters. When you call a macro that has parameters, you provide -arguments that are substituted for those parameters. For example, suppose -you write: -\pix\indexchar # -\def\arc#1{\cos #1 + i \sin #1} -\csdisplay -\def\arc#1{\cos #1 + i \sin #1} -| - -The notation |#1| \xrdef{@msharp} indicates the first parameter -of the macro, which in this case has only one parameter. You now can -produce a similar form, such as `$\arc{2t}$', with the macro call `|\arc -{2t}|'. - -More generally, a macro can have up to nine parameters, which you -indicate as `|#1|', `|#2|', etc\null. in the macro definition. \TeX\ -provides two kinds of parameters: delimited parameters and undelimited -parameters. Briefly, a delimited parameter has an \refterm{argument} -that's delimited, or ended, by a -specified sequence of tokens (the delimiter), while an undelimited -parameter has an argument that doesn't need a delimiter to end it. -First we'll explain how macros work when they have only undelimited -parameters, and then we'll explain how they work when -they have delimited parameters. - -^^{parameters//undelimited} -If a macro has only undelimited parameters, those parameters must appear -one after another in the macro definition \emph{with nothing between -them or between the last parameter and the left brace in front of the -replacement text}. -A call on such a macro consists of the macro name followed by -the arguments of the call, one for each parameter. Each argument is -either: - -\ulist \compact -\li a single \refterm{token} other than a left or right brace, or - -\li a sequence of tokens enclosed between a left brace and -a matching right brace.\footnote{The -argument can have nested pairs of braces within it, and each of these -pairs can indicate either a \refterm{group} or a further macro -argument.} -\endulist - -When \TeX\ encounters a macro, it expands the macro in its gullet -\seeconcept{\anatomy} -by substituting each argument for the corresponding -parameter in the replacement text. The resulting text may contain other macro -calls. When \TeX\ encounters such an embedded macro call, it expands -that call immediately without looking at what follows the -call.\footnote{In computer science terminology, the expansion is ``depth -first'' rather than ``breadth first''. Note that you can modify the -order of expansion with commands such as |\expandafter|.} When \TeX's -gullet gets to a \refterm{primitive} \refterm{command} that -cannot be further expanded, \TeX\ passes that command to \TeX's stomach. -The order of expansion is sometimes critical, so in order to help -you understand it we'll give you an example of \TeX\ at work. - -Suppose you provide \TeX\ with the following input: -\csdisplay -\def\a#1#2{\b#2#1\kern 2pt #1} -\def\b{bb} -\def\c{\char49 cc} -\def\d{dd} -\a\c{e\d} % Call on \a. -| -Then the argument corresponding to |#1| is |\c|, -and the argument corresponding to |#2| is |e\d|. -\TeX\ expands the macro call in the following steps: - -{\vskip\abovedisplayskip\obeylines % ugly -|\b e\d\c\kern 2pt \c| -|bbe\d\c\kern 2pt \c| -|\d\c\kern 2pt \c|\quad(`|b|', `|b|', `|e|' sent to stomach) -|dd\c\kern 2pt \c| -|\c\kern 2pt \c|\quad(`|d|', `|d|' sent to stomach) -|\char49 cc\kern 2pt \c| -|\c|\quad(`|\char|', `|4|', `|9|', `|c|', `|c|', % -`|\kern|', `|2|', `|p|', `|t|' sent to stomach) -|\char49 cc| -(`|\char49|', `|c|', `|c|' sent to stomach) -\vskip\belowdisplayskip} - -\noindent Note that the letters `|b|', `|c|', `|d|', and `|e|' and the -control sequences `|\kern|' and `|\char|' are all primitive -commands that cannot be expanded further. - -\bix^^{parameters//delimited} -A macro can also have ``delimited parameters'', which can be mixed with -the undelimited ones in any combination. The idea of a delimited -parameter is that \TeX\ finds the corresponding argument by looking for -a certain sequence of tokens that marks the end of the argument---the -delimiter. That is, when \TeX\ is looking for such an argument, it -takes the argument to be all the tokens from \TeX's current position up -to but not including the delimiter. - -You indicate a delimited parameter by writing `|#|$n$' ($n$ -must be between $0$ -and $9$) followed by one or more tokens that act as the delimiter. The -delimiter extends up to the next `|#|' or `|{|'---which makes sense -since `|#|' starts another parameter and `|{|' starts the replacement text. - -The delimiter can't be `|#|' or `|{|', so you can tell a delimited -parameter from an undelimited one by looking at what comes after it. - -If the character after the parameter is `|#|' or `|{|', you've got an -undelimited parameter; otherwise you've got a delimited one. Note -the difference in arguments for the two kinds of parameters---an -undelimited parameter is matched either by a single token or by -a sequence of tokens enclosed in braces, while a -delimited parameter is matched by any number of tokens, even zero. - -An example of a macro that uses two delimited parameters is: -\def\diet#1 #2.{On #1 we eat #2!} -\csdisplay -\def\diet#1 #2.{On #1 we eat #2!!} -| -Here the first parameter is delimited by a single space -and the second parameter is delimited by a period. If you write: -\csdisplay -\diet Tuesday turnips. -| -you'll get the text ``\diet Tuesday turnips.''. -But if the delimiting tokens are enclosed in a group, \TeX\ doesn't consider -them as delimiting. So if you write: -\csdisplay -\diet {Sunday mornings} pancakes. -| -you'll get the text `\diet {Sunday mornings} pancakes.' -even though there's a space between `|Sunday|' and `|morning|'. -When you use a space as a delimiter, -an end-of-line character ordinarily also delimits the argument -since \TeX\ converts the end-of-line to a space before the macro -mechanism ever sees it. -\eix^^{parameters//delimited} -\eix^^{macros//parameters of} - -Once in a while you might need to define a macro that has `|#|' as a -meaningful character within it. -You're most likely to need to do this when you're defining a macro -that in turn defines a second macro. -What then do you do about -the parameters of the second macro to avoid getting \TeX\ confused? -The answer is that you write -two `|#|'s for every one that you want -when the first macro is expanded. For example, suppose you -write the macro definition: -\def\first#1{\def\second##1{#1/##1}} -\csdisplay -\def\first#1{\def\second##1{#1/##1}} -| -Then the call `|\first{One}|' defines `|\second|' as: -\csdisplay -\def\second#1{One/#1} -| -and the subsequent call `|\second{Two}|' produces the text -\def\second#1{One/#1}% -`\second {Two}'. - -A number of commands provide additional ways of defining macros -(see pp.~\xrefn{mac1}--\xrefn{mac2}). -For the complete rules pertaining to macros, see \knuth{Chapter~20}. -}% close brace at the start of the `macro' concept. -\endconcept - - -\concept magnification - -When \TeX\ typesets your document, it multiplies all dimensions -by a -\refterm{magnification} factor $f/1000$, -where $f$ is the value of the ^|\mag| parameter \ctsref\mag. -Since the default value of |\mag| is $1000$, the normal case is that -your document is typeset just as specified. -Increasing the magnification is often useful when you're typesetting a document -that will later be photoreduced. - -You can also apply magnification to a single \refterm{font} so as to get -a smaller or larger version of that font than its ``^{design size}''. You -need to provide the device driver with a ^{shape file} -\seeconcept{font} for -each magnification of a font that you're using---% -unless the fonts are built into your printer and your device driver -knows about them. -When you're defining a font with -the |\font| command \ctsref{\font}, you can specify a magnification with -the word `|scaled|'. For example: - -\csdisplay -\font\largerbold = cmbx10 scaled 2000 -| -defines `|\largerbold|' as a font that is -twice as big as |cmbx10| (Computer Modern -Bold Extended $10$-point) and has the character shapes -uniformly enlarged by a factor of~$2$. - -Many computer centers find it convenient to provide fonts scaled by a ratio -of $1.2$, corresponding to magnification values of $1200$, $1440$, etc. -\TeX\ has special names for these values: -^^|\magstep| -`|\magstep1|' for $1200$, -`|\magstep2|' for $1440$, and so forth up to `|\magstep5|'. The special -value `^|\magstephalf|' corresponds to magnification by $\sqrt{1.2}$, which -is visually halfway between `|\magstep0|' (no magnification) and -`|\magstep1|'. For example: - -\csdisplay -\font\bigbold = cmbx10 scaled \magstephalf -| - -You can specify a \refterm{dimension} as it will be -measured in the final document independent of magnification by putting -`^|true|' in front of the unit. For instance, `|\kern 8 true pt|' -produces a kern of $8$ points whatever the magnification. - -\endconcept - -\concept margins - -The \refterm{margins} -of a page define a rectangle that normally -contains the printed matter on the page. -You can get \TeX\ to print material outside of this rectangle, -but only by taking some explicit action that moves the material there. -\TeX\ considers headers and footers to lie outside the margins. - -The rectangle is defined in terms of its upper-left corner, its width, and -its depth. The location of the upper-left corner is defined by -the ^|\hoffset| -and ^|\voffset| parameters -\ctsref\voffset. The default is to place that corner one inch from the top -and one inch from the left side of the page, corresponding to a value of -zero for both |\hoffset| and |\voffset|.% -\footnote{This seems to us to be an odd convention. -It would have been more natural to have the $(0,0)$ -point for |\hoffset| and |\voffset| be at the upper-left corner of the -paper and to have set their default values to one inch.} -The width of the rectangle is given by ^|\hsize| and the depth by ^|\vsize|. - -The implications of these conventions are: -\ulist\compact -\li The left margin is given by |\hoffset|\tplus|1in|. -\li The right margin is given by the width of the paper minus - |\hoffset|\tplus|1in|\tplus|\hsize|. -\li The top margin is given by |\voffset|\tplus|1in|. -\li The bottom margin is given by the length of the paper minus - |\voff!-set|\tplus|1in|\tplus|\vsize|. -\endulist -From this information you can see what parameters you need to -change in order to change the margins. - -Any changes that you make to |\hoffset|, |\voffset|, or |\vsize| become -effective the next time \TeX\ starts a page. In other words, if you change -them within a page, the change will affect only the \emph{following} pages. -If you change |\hsize|, the change will become effective immediately. -\endconcept - - -\conceptindex{marks} -\concept mark - -A \defterm{mark} is an item that you can insert into a -horizontal, vertical, or math list and later recover from within your -output routine. Marks are useful for purposes such as -keeping track of topics to appear in page headers. -Each mark has a list of tokens---the ``^{mark text}''---associated with it. -The ^|\mark| command \ctsref{\mark} expects such a token list as its argument, -and appends an item containing that token list (after -expansion) to whatever list \TeX\ is -currently building. The ^|\topmark|, ^|\firstmark|, and ^|\botmark| commands -\ctsref{\topmark} can be used to retrieve various marks on a page. -These commands are most often used in page headers and footers. -^^{footers//marks used in} -^^{headers//marks used in} - -\margin{This example of {\tt\\mark} replaces the previous explanatory -paragraph.} -Here is a simplified example. -Suppose you define a section heading macro as follows: -\csdisplay -\def\section#1{\medskip{\bf#1}\smallskip\mark{#1}} -% #1 is the name of the section -| -^^|\mark| -This macro, when called, will produce a section heading in boldface and -will also record the name of the section as a mark. -You can now define the header for each printed page -as follows: -\csdisplay -\headline = {\ifodd\pageno \hfil\botmark\quad\folio - \else \folio\quad\firstmark\hfil \fi} -| -Each even (left-hand) page will now have the page number followed by the -name of the first section on that page, while each odd (right-hand) page -will have the page number followed by the name of the last section on -that page. Special cases, e.g., no sections starting on a page, will -generally come out correctly because of how ^|\firstmark| -and ^|\botmark| work. - -When you split a page using the |\vsplit| command \ctsref{\vsplit} you can -retrieve the mark texts of the first and last marks of the split-off -portion with the ^|\splitfirstmark| and ^|\splitbotmark| commands -\ctsref{\splitfirstmark}. - -See \knuth{pages~258--260} for a more precise explanation of how -to create and retrieve marks. -\endconcept - - -\concept math mode - -{\tighten -A \defterm{math mode} is a \refterm{mode} that \TeX\ is in when it is -building a math formula. \TeX\ has two different math modes: ^{text -math mode} for building a formula to be embedded within a line of text, -and ^{display math mode} for building a formula to appear on a line by -itself. You indicate text math mode by enclosing the formula in -|$|'s, and display math mode by enclosing the formula in -|$$|'s. -%\TeX\ will accept most \refterm{commands:command} in -%math mode. If it encounters a command in math mode that doesn't make -%sense in a formula, it will complain. -An important property of both -math modes is that \emph{input spaces don't count}. See -\knuth{pages~290--293} for details on how \TeX\ responds to different -commands in math mode. -\par} - -\endconcept - - -\conceptindex{mathcodes} -\concept mathcode - -A \defterm{mathcode} is a number that \TeX\ uses to identify and -describe a math character, -^^{math characters//described by mathcodes} -i.e., a character that has a -particular role in a math formula. A mathcode conveys three pieces of -information about a character: its \refterm{font} position, its -\refterm{family}, and its \refterm{class}. -Each of the $256$ possible -input characters has a mathcode, which is defined by the \TeX\ program -but can be changed. - -^^{family//as part of mathcode} -\TeX\ has sixteen families of fonts, numbered $0$--$15$. Each -family contains three fonts: one for \refterm{text size}, one for -\refterm{script size}, and one for \refterm{scriptscript size}. \TeX\ -chooses the size of a particular character, and therefore its font, -according to the context. The class of a character specifies its role -in a formula (see \knuth{page~154}). For example, the equals sign `|=|' -is in class $3$ (Relation). \TeX\ uses its knowledge of character -classes when it is deciding how much space to put between different -components of a math formula. - -The best way to understand what mathcodes are all about is to see how -\TeX\ uses them. So we'll show you what \TeX\ does with a -character token $t$ of \refterm{category code}~11 or~12 in a math -formula: - -\olist\compact -\li It looks up the character's mathcode. -\li It determines a family $f$ from the mathcode. -\li It determines the size $s$ from the context. -\li It selects a font $F$ by picking the font for size $s$ in family $f$. -\li It determines a character number $n$ from the mathcode. -\li It selects as the character $c$ to be typeset the character -at position $n$ of font $F$. -\li It adjusts the spacing around $c$ according to the class of $t$ and -the surrounding context. -\li It typesets the character $c$. -\endolist - -The context dependence in -items (3) and (7) implies that \TeX\ cannot typeset a math character -until it has seen the entire formula containing the -math character. For example, in the formula -`|$a\over b$|', \TeX\ doesn't know what size the `|a|' should be until it -has seen the |\over|. - -{\tighten -The mathcode of a character is encoded according to the formula $4096c -+ 256f + n$, where $c$ is the class of the character, $f$ is its -\refterm{family}, and $n$ is its \refterm{\ascii\ character} code within -the family. You can change \TeX's interpretation of an input character -in math mode by assigning a value to the ^|\mathcode| -table entry \ctsref{\mathcode} -for that character. The character must have a -\refterm{category code} of $11$ (letter) or $12$ (other) for \TeX\ to -look at its |\mathcode|. -}\par - -^^{family//variable} -You can define a mathematical character to have a ``variable'' family by -giving it a class of $7$. Whenever \TeX\ encounters that character in a -math formula, it takes the family of the character to be the current -value of the |\fam| parameter \ctsref{\fam}. A variable family enables -you to specify the font of ordinary text in a math formula. For -instance, if the roman characters are in family $0$, the assignment -|\fam = 0| -will cause ordinary text in a math formula to be set in roman type -rather than in something else like math italic type. If the value of -|\fam| is not in the range from $0$ to $15$, \TeX\ takes the value to be -$0$, thus making classes $0$ and $7$ equivalent. -\TeX\ sets |\fam| to $-1$ whenever it enters math mode. -\endconcept - - -\conceptindex{mathematical units} -\concept{mathematical unit} - -A \defterm{mathematical unit}, denoted by `|mu|', is a unit of distance -that is used to specify \refterm{glue} in math formulas. See -\conceptcit{muglue}. -\endconcept - - -\conceptindex{modes} -\concept mode - -When \TeX\ is processing your input in its stomach \seeconcept{\anatomy}, -it is in one of six \defterm{modes}: -\ulist\compact -\li ^{ordinary horizontal mode} (assembling a paragraph) -\li ^{restricted horizontal mode} (assembling an \refterm{hbox}) -\li ^{ordinary vertical mode} (assembling a page) -\li ^{internal vertical mode} (assembling a \refterm{vbox}) -\li ^{text math mode} (assembling a formula that appears in text) -\li ^{display math mode} -(assembling a formula that appears on a line by~itself) -^^{horizontal mode}^^{vertical mode}^^{math mode} -\endulist -The mode describes the kind of entity that \TeX\ is putting together. - -Because you can embed one kind of entity within another, e.g., a vbox -within a math formula, \TeX\ keeps track not just of one mode but of a -whole list of modes (what computer scientists call a ``stack''). -Suppose that \TeX\ is in mode $M$ and encounters something that -puts it into a new mode \Mprimeperiod. When it finishes its work in -mode \Mprimecomma, it resumes what it was doing in mode \Mperiod. - -\endconcept - - -\concept muglue - -\defterm{Muglue} is a kind of \refterm{glue} that you can use only in math -formulas. It is measured in ^|mu| (\refterm{mathematical -units:mathematical unit}). -^^{mathematical units}^^{glue//mathematical} -One |mu| is equal to \frac1/{18} em, where -the size of an em is taken from \refterm{family} 2 of the math fonts. -\TeX\ automatically adjusts the size of muglue according to the context. -For instance, a glue size of |2mu| is normally smaller within a -subscript than it is within ordinary text. -You must use the ^|\mskip| command to produce muglue. -For example, `|\mskip 4mu plus 5mu|' produces mathematical glue with -natural space of four |mu| and \refterm{stretch} of five |mu|. - -\endconcept - - -\conceptindex{numbers} -\concept number - -In \TeX, a \defterm{number} is a positive or negative integer. -You can write a number in \TeX\ in four different ways: -\olist\compact -\li as an ordinary decimal integer, e.g., |52| -\li as an octal number, e.g., |'14| ^^{octal numbers} -\li as a hexadecimal number, e.g., |"FF0| ^^{hexadecimal numbers} -\li as the code for an \refterm{\ascii\ character}, e.g., |`)| -or |`\)| -\endolist -\noindent -Any of these forms can be preceded by `|+|' or `|-|'. - -An octal number can have only the digits |0|--|7|. -^^{octal numbers} -A hexadecimal number can have digits |0|--|9| and -|A|--|F|, representing -values from $0$ to $15$. -^^{hexadecimal numbers} -You can't, alas, use lowercase letters when you write a hexadecimal number. -If you need an explanation of octal and hexadecimal numbers, -you'll find one on \knuth{pages~43--44}. - -A decimal, octal, or hexadecimal number -ends at the first character that can't be part of the number. -Thus a decimal number ends when \TeX\ sees, say, a letter, even though a -letter between `|A|' and `|F|' would not end a hexadecimal number. -You can end a number with one or more spaces and -\TeX\ will ordinarily ignore them.\footnote{ -When you're defining a macro that ends in a number, you should always -put a space after that number; otherwise \TeX\ may later combine that -number with something else.} - -The fourth form above specifies a number as the -\minref{\ascii} code for a character. -^^{characters//\ascii\ codes for} -\TeX\ ignores spaces after this form of number also. -You can write a number in this form either as |`|$c$ or as |`\|$c$. -The second form, though longer, has the advantage that you can use it -with \emph{any} character, even `|\|', `|%|', or `|^^M|'. -It does have one rather technical disadvantage: when \TeX\ is expanding -a token sequence for a command such as |\edef| or |\write|, -^^|\edef//expansion of {\tt\\'\it c} in| -^^|\write//expansion of {\tt\\'\it c} in| -occurrences of `|\|$c$' within numbers will also be expanded if they can be. -That's rarely the effect you want. - -The following are all valid representations of the decimal number -$78$: -\csdisplay -78 +078 "4E '116 `N `\N -| - - -You can't use a number in text by itself since a number isn't -a command. -However, you can insert the decimal form of a number in text -by putting a ^|\number| command (\xref\number) in front of it -or the roman numeral form by putting a ^|\romannumeral| command -in front of it. - -You can also use ^{decimal constant}s, i.e., numbers with a fractional part, -for specifying dimensions \seeconcept{dimension}. -A decimal constant has a ^{decimal point}, which -can be the first character of the constant. -You can use a comma instead of a period to represent the decimal point. -A decimal constant can be preceded by a plus or minus sign. -Thus `|.5in|', -`|-3.22pt|', and `|+1,5\baselineskip|' are valid dimensions. -You can't, however, use decimal constants -in any context \emph{other} than as the ``factor'' part of a dimension, -i.e., its multiplier. - - -\endconcept - - -\concept{ordinary mode} - -An \defterm{ordinary mode} is a \refterm{mode} that \TeX\ is in when it is -assembling a paragraph into lines or assembling lines -into a page. See \conceptcit{horizontal mode}, \conceptcit{vertical mode}. -\endconcept - - -\concept outer - -\bix^^{macros//outer} -An \defterm{outer} macro is one that you can't use in certain contexts -where \TeX\ is processing tokens at high speed. -The purpose of making a command outer is to enable \TeX\ to catch -errors before it's gone too far. -When you define a macro, you can make it outer with the -^|\outer| command \ctsref\outer. - -You cannot use an outer macro in any of the following contexts: -\ulist\compact -\li within an argument to a macro -\li in the parameter text or replacement text of a definition -\li in the preamble to an alignment -\li in the unexecuted part of a conditional test -\endulist -\noindent -An outer context is a context in which you can use an outer macro, -i.e., it's any context other than the ones just listed. - -For example, the following input would be a forbidden use of an -outer macro: -\csdisplay -\leftline{\proclaim Assertion 2. That which is not inner - is outer.} -| -The |\proclaim| macro (\xref{\@proclaim}) is defined in \plainTeX\ -to be outer, but it's being used here in a macro argument to |\leftline|. -\eix^^{macros//outer} - -\endconcept - - -\concept {output routine} - -When \TeX\ has accumulated -at least enough material to fill up a page, it chooses a breakpoint -and places the material before the breakpoint in |\box255|. It then -calls the -current \defterm{output routine}, which processes the material and eventually -sends it to the \dvifile. -^^{\dvifile//material from output routine} -The output routine can perform further -processing, such as inserting headers, footers, and footnotes. -\refterm{\PlainTeX:\plainTeX} provides -a default output routine that inserts a centered page number -at the bottom of each page. -By providing a different output routine you can achieve such -effects as double-column output. -You can think of the output routine as having a single responsibility: -disposing of the material in |\box255| one way or another. - -The current output routine is defined by the value of ^|\output| -\ctsref{\output}, which is a list of \refterm{tokens:token}. When \TeX\ -is ready to produce a page, it just expands the token list. - -You can make some simple changes to the actions of the \plainTeX\ -output routine without actually modifying it. For example, by assigning -a list of \refterm{tokens:token} to |\headline| or -|\footline| \ctsref{\footline} you can have \TeX\ produce a different -header or footer than it ordinarily would. - -The output routine is also -responsible for collecting any \refterm{insertions:insertion}; -combining those insertions and any -``decorations'' such as headers and -footers with the main contents of the page and packaging all -of this material in a box; and -eventually sending that box to the \dvifile\ -^^{\dvifile//material from output routine} -with the ^|\shipout| -command \ctsref{\shipout}. -Although this is what an output routine most often does, -a special-purpose output routine might behave differently. -\endconcept - - -\conceptindex{output streams} -\concept {output stream} - -\margin{This concept was out of order.} -See \conceptcit{file}. -\endconcept - - -\conceptindex{pages} -\concept page - -\TeX\ processes a document by assembling \defterm{pages} one at a time -and passing them to the output routine. -As it proceeds through your document, \TeX\ maintains a list of lines -and other -items to be placed on the page. (The lines are actually hboxes.) -This list is called the ``^{main vertical list}''. -Periodically \TeX\ goes through a process called ``exercising the -^{page builder}''. -The items added to the main vertical list between exercises of the -page builder are called ``^{recent contributions}''. - -The page builder first examines the main vertical list to see if it's -necessary to ship out a page yet, either because the items on the main -vertical list won't all fit on the page or because of an explicit item, -such as |\eject| \ctsref\eject, that tells \TeX\ to end the page. -If it's not necessary to ship out a page, then the page builder is done -for the time being. - -Otherwise the page builder analyzes the main vertical -list to find what it considers to be the best possible page break. -It associates penalties with various kinds of unattractive page -breaks---a break that would leave an -isolated line at the top or bottom of a page, a break just before a -math display, and so forth. It then -chooses the least costly page break, -where the cost of a break is increased by any penalty associated with that -break and by the badness of the page that would result -(see \knuth{page~111} for the cost formula). If it finds several -equally costly page breaks, it chooses the last one. - -{\tighten -Once the page builder has chosen a page break, -it places the items on the list that are before that break -into ^|\box255| and leaves the remaining ones for the next page. -It then calls the output routine. |\box255| acts as a mailbox, with the -page builder as the sender and the output routine as the receiver. -Ordinarily the output routine processes |\box255|, adds -other items, such as insertions, headers, and footers, to the page, and -ships out the page to the \dvifile\ -^^{\dvifile//material from output routine} -with a |\shipout| command. -(Specialized output routines may behave differently.) -From \TeX's standpoint, it doesn't matter whether or not the output -routine ships out a page; -the only -responsibility of the output routine is to process |\box255| one way or -another. -\par} - -{\tighten -It's important to realize that the best place to break a page isn't -necessarily the last possible place to break the page. -Penalties and other considerations may cause the page break -to come earlier. -Furthermore, \TeX\ appends items to the main vertical list in batches, -not just singly. -The lines of a paragraph are an example of such a batch. -For these reasons the page builder usually has items left over when it -breaks a page. -These leftover items then form the beginning of the main vertical list -for the next page (possibly in the middle of a batch). -Because items are carried over from one page to another, -you can't assume that as \TeX\ is processing -input, the current page number accurately reflects the page on which the -corresponding output will appear. See \knuth{pages~110--114} for a full -description of \TeX's page-breaking rules. -\par} - -\endconcept - - -\conceptindex{page breaks} -\concept{page break} - -A \defterm{page break} is a place in your document where \TeX\ ends a -page and (except at the end of the document) starts a new one. -See \conceptcit{page} for the process that \TeX\ goes through in choosing -a page break. - -You can control \TeX's choice of page breaks in several ways: -\ulist -\li You can insert a penalty (\xref{vpenalty}) -^^{penalties//in vertical lists} -between two items in the main vertical list. A positive -penalty discourages \TeX\ from breaking the page -there, while a negative penalty---a bonus, in other words---% -encourages \TeX\ to break the page there. A penalty of $10000$ -or more prevents a -page break, while a penalty of $-10000$ or less forces a page break. -You can get the same effects with the |\break| and -|\nobreak| commands \ctsref{vbreak}. - -\li You can adjust the penalties associated with page breaking -by assigning different values to \TeX's page-breaking -\refterm{parameters:parameter}. - -\li You can enclose a sequence of paragraphs -or other items in the main vertical list within a \refterm{vbox}, -thus preventing \TeX\ from breaking the page anywhere within the sequence. -\endulist - -Once \TeX\ has chosen a page break, it places the portion of the main vertical -list that precedes the break into |\box255|. -It then calls the current \refterm{output routine} -to process |\box255| and eventually ships its contents to the \dvifile. -^^{\dvifile//material from output routine} -The output routine must -also handle \refterm{insertions}, such as footnotes, that \TeX\ has accumulated -while processing the page. - -It's useful to know the places where \TeX\ can break a page: -\ulist -\li At glue, provided that the item preceding the glue is -a box, a whatsit, a mark, or an insertion. -When \TeX\ breaks a page at glue, it makes the break at the top -of the glue space and forgets about the rest of the glue. -\li At a kern that's immediately followed by glue. -\li At a penalty, possibly between the lines of a paragraph. -\endulist -When \TeX\ breaks a page, it discards any -sequence of glue, kerns, and penalty items that follows the break point. - - -\endconcept - - -\concept page builder - -See \conceptcit{page}. -\endconcept - - -\concept {page layout} - -\bix^^{margins} -\bix^^{headers} -\bix^^{footers} -When you're designing a document, you need to decide on its -\defterm{page layout}: the page size, -the margins on all four sides, the headers and footers, if any, -that appear at the top and bottom of the page, -and the amount of space between the body of the text and the headers or -footers. \TeX\ has defaults for all of these. It assumes an $8 \frac1/2$-% -by-$11$-inch page with margins of approximately one inch -on all four sides, no header, -and a footer consisting of a centered page number. - -The margins are determined jointly by the four parameters -^|\hoffset|, ^|\voffset|, ^|\hsize|, and ^|\vsize| (see -``margins'', \xrefpg{margins}, -for advice on how to adjust them). -\eix^^{margins} -The header normally consists of a single line that appears at the top of each -page, within the top margin area. You can set it by assigning -a \refterm{token} list to the ^|\headline| parameter (\xref{\headline}). -Similarly, -the footer normally consists of a single line that appears at the bottom -of each -page, within the bottom margin area. You can set it by assigning -a \refterm{token} list to the ^|\footline| parameter (\xref{\footline}). -For example, the input: -\csdisplay -\headline = {Baby's First Document\dotfill Page\folio} -\footline = {\hfil} -| -produces a header line like this on each page: -\vdisplay{ -\dimen0 = \hsize -\advance \dimen0 by -\parindent -\hbox to \dimen0{Baby's First Document\dotfill Page 19}} -\noindent -and no footer line. - -You can use marks to place the current topic of a section -of text into the header or footer. -^^{marks//with headers or footers} -See \conceptcit{mark} for an explanation of how to do this. -\eix^^{headers} -\eix^^{footers} -\endconcept - -\conceptindex{paragraphs} -\concept paragraph - -Intuitively, a \defterm{paragraph} is a sequence of input lines that's -ended by a blank line, by a ^|\par| command \ctsref{\@par}, -^^|\par//ending a paragraph with| -or by an intrinsically vertical command, such as |\vskip|. -More precisely, a paragraph is a sequence of commands that \TeX\ processes -in ordinary horizontal mode. -When \TeX\ has collected an entire paragraph, it forms it into a sequence of -lines by choosing line breaks \seeconcept{line break}. -The result is a list of hboxes with glue, interline penalties, -and interspersed vertical material between them. -Each hbox is a single line, and the glue is the interline glue. - -\eject -\TeX\ starts a paragraph when it's in a vertical mode -and encounters an inherently horizontal command. -In particular, it's in a vertical mode when it's just finished a paragraph, -so the horizontal material on the line after a blank input line starts the -next paragraph in a natural way. -There are many kinds of inherently horizontal commands, but the most common -kind is an ordinary character, e.g., a letter. - -\looseness = -1 -The ^|\indent| and ^|\noindent| commands -(\pp\xrefn{\indent},~\xrefn{\noindent}) -are also inherently horizontal commands that tell -\TeX\ either to indent or not to indent the beginning of a paragraph. -Any other horizontal command in vertical -mode causes \TeX\ to do an implicit |\indent|. -Once \TeX\ has started a paragraph, it's in ordinary horizontal mode. -It first obeys any commands that are in ^|\everypar|. -It then proceeds to collect items for the paragraph until it gets a signal -that the paragraph is ended. -At the end of the paragraph it -resets the paragraph shape parameters ^|\parshape|, |\hang!-indent|, -^^|\hangindent| -and ^|\looseness|. - -\TeX\ ordinarily translates a blank line into |\par|. -It also -inserts a |\par| into the input whenever it's in horizontal mode and -sees an intrinsically vertical command. -So ultimately the thing that ends a paragraph is always a |\par| command. - -When \TeX\ receives a |\par| command, it first -fills out\footnote{% -More precisely, it executes the commands: -\csdisplay -\unskip \penalty10000 \hskip\parfillskip -| -thus appending items for these commands -to the end of the current horizontal list.} -the paragraph it's working on. -It then breaks the paragraph into lines, -adds the resulting list of items to the enclosing vertical list, -and exercises the page builder -(in the case where the enclosing vertical list is the main vertical list). -If the paragraph was ended by an intrinsically vertical command, -\TeX\ then executes that command. - -\endconcept - -\conceptindex{parameters} -\concept parameter - -The term \defterm{parameter} has two different meanings---it can refer -either to a \TeX\ parameter or to a macro parameter. - -A \TeX\ parameter is a \refterm{control sequence} that names -a value. -The value of a parameter can be a \refterm{number}, a \refterm{dimension}, -an amount of \refterm{glue} or muglue, or a \refterm{token list}. -For example, the ^|\parindent| parameter -specifies the distance that \TeX\ skips at the start of an -indented paragraph. - -You can use the control sequence for a parameter either to retrieve the value -of the parameter or to set that value. \TeX\ interprets the control sequence -as a request for a value if it appears in a context where a value is expected, -and as an \refterm{assignment} otherwise. -^^{assignments} -For example: -\csdisplay -\hskip\parindent -| -produces horizontal \refterm{glue} whose natural size is given by |\parindent|, -while: -\csdisplay -\parindent = 2pc % (or \parindent 2pc) -| -sets |\parindent| to a length of two picas. The assignment: -\csdisplay -\parindent = 1.5\parindent -| -uses |\parindent| in both ways. Its effect is to multiply the value of -|\parindent| by $1.5$. - -You can think of a parameter as a built-in \refterm{register}. -^^{registers//parameters as} -You'll find a complete list of the \TeX\ parameters on \knuth{pages~272--275}. - -A \refterm{macro} parameter is a placeholder for text that is to be -plugged into the definition of a macro. See \conceptcit{macro} -for more information about this kind of parameter. - -\endconcept - - -\conceptindex{penalties} -\concept penalty - -A \defterm{penalty} is an item that you can include in a -horizontal, vertical, or math list -in order to discourage \TeX\ from breaking the list -at that point or encourage \TeX\ to break the list there. -^^{horizontal lists//penalties in} -^^{vertical lists//penalties in} -A positive penalty indicates a bad break point, while -a negative penalty indicates a good break point. -Breaking an -ordinary horizontal -list produces a \refterm{line break}, while breaking an -ordinary vertical list produces -a \refterm{page break}. -(A penalty has no effect in restricted horizontal or -internal vertical \refterm{mode}.) - -You can use the -|\penalty| command (\pp\xrefn{hpenalty},~\xrefn{vpenalty}) -to insert a penalty explicitly. -A penalty of $10000$ or more prevents a break, while a penalty of -$-10000$ or less forces a break. -\endconcept - - -\concept{\plainTeX} - -\defterm{\PlainTeX} is the form of \TeX\ described in this -book and in \texbook. \PlainTeX\ is part of the standard \TeX\ -system, so documents that use only the facilities of \plainTeX\ can -usually be transferred from one installation to another without -difficulty. - -\PlainTeX\ consists of the \refterm{primitive} commands together with a -large collection of macros and -other definitions. These additional definitions are given in -\knuth{Appendix~B}. They should also be in the file |plain.tex| -somewhere in your computer system. -\endconcept - - -\concept{primitive} - -A \defterm{primitive} \refterm{command} is one whose definition is built -into the \TeX\ computer program. In contrast, a command that is not -primitive is defined by a \refterm{macro} or some other form of -definition written in \TeX\ itself. The commands in \refterm{\plainTeX} -consist of the primitive commands together with -other commands defined in terms of the -primitive ones. -\endconcept - - -\concept {reference point} - -^^{baselines} -^^{boxes//reference point of} -The \defterm{reference point} of a \refterm{box} is the point where the -left edge of the box intersects its \refterm{baseline}. When \TeX\ is -processing a \refterm{horizontal:horizontal list} or \refterm{vertical -list}, it uses the reference points of the boxes in the list to line up -those boxes horizontally or vertically \seeconcept{box}. -\endconcept - -\conceptindex{registers} -\concept register - -A \defterm{register} is a named location for storing a value. -It is much like a variable in a programming language. -\TeX\ has five kinds of registers, as shown in the following table: - -\vdisplay{\tabskip 10pt\halign{\tt #\hfil &#\hfil\cr -{\it Register type}&{\it Contents}\cr -box&a \refterm{box} \idxref{box registers}\cr -count&a \refterm{number} \idxref{count registers}\cr -dimen&a \refterm{dimension} \idxref{dimension registers}\cr -muskip&\refterm{muglue} \idxref{muglue registers}\cr -skip&\refterm{glue} \idxref{glue registers}\cr -toks&a \refterm{token} list\idxref{token registers}\cr}} - -The registers of each type are numbered from $0$ to $255$. -You can access register $n$ of category $c$ by using the form `|\|$cn$', -e.g., |\muskip192|. -You can use a register -anywhere that information of the appropriate type is called for. For -instance, you can use |\count12| -in any context calling for a number or |\skip0| -in any context calling for glue. - -You put information into a register by \refterm{assigning:assignment} -something to it: - -\csdisplay -\setbox3 = \hbox{lagomorphs are not mesomorphs} -\count255 = -1 -| -The first assignment constructs an hbox and assigns it to -box register~$3$. -You can -subsequently use `|\box3|' wherever a box is called for, and you will -get just that hbox.\footnote{But note carefully: using a box register -also empties it so that its contents become void. The other kinds of -registers don't behave that way. You can use the |\copy| command -\ctsref{\copy} to retrieve the contents of a box register without -emptying it.} -The second assignment assigns $-1$ to count register~$255$. - -A register of a given type, e.g., a glue register, behaves just like -a parameter of that type. -^^{parameters//like registers} -You retrieve its value or assign to it -just as you would with a \refterm{parameter}. -Some \TeX\ parameters, e.g., |\pageno|, -are implemented as registers, in fact. - -\PlainTeX\ -uses many registers for its own purposes, so you should not just -pick an arbitrary -register number when you need a register. Instead you should ask -\TeX\ to reserve a register by using one of the commands -^|\newbox|, ^|\newcount|, ^|\newdimen|, ^|\newmuskip|, ^|\newskip|, -or ^|\newtoks| -\ctsref{\@newbox}. These commands are outer, so you can't -use them in a macro definition. -If you could, -you'd use up a register every time the macro was called and probably run out -of registers before long. - -Nonetheless you can with some caution use any register temporarily -within a \refterm{group}, even one that \TeX\ is using for something -else. -After \TeX\ finishes executing the commands in a group, -it restores the contents of every register -to what they were before it started executing the group. -When you use an explicitly numbered register inside a group, -you must be sure that the register isn't modified by any -\refterm{macro} -that you might call within the group. -Be especially careful -about using arbitrary registers in a group that calls macros -that you didn't write yourself. - -{\tighten -\TeX\ reserves certain registers for special purposes: |\count0| through -|\count9| for page numbering information and -^^{page numbering} -^|\box255| for the contents -of a page just before it is offered to the \refterm{output routine}. -Registers |\dimen0|--|\dimen9|, |\skip0|--|\skip9|, -|\muskip0|--|\mu!-skip9|, |\box0|--|\box9|, -and the |255| registers other than |\box255| -are generally available as ``scratch'' registers. -Thus \plainTeX\ provides only one scratch register, |\count255|, for -counts. -See \knuth{pages~122 and 346} for conventions to follow -in choosing register numbers. -\par} - -You can examine the contents of registers during a \TeX\ run with the -^|\showthe| command \ctsref\showthe, e.g., with `|\showthe\dimen0|'. -\endconcept - - -\concept{restricted mode} - -A \defterm{restricted mode} is a \refterm{mode} that \TeX\ is in when it is -assembling an \refterm{hbox} or a \refterm{vbox}. -We follow \texbook\ in using the term ``internal vertical mode'' -for what you might expect to be ``restricted vertical mode''. -See \conceptcit{horizontal -mode} and \conceptcit{vertical mode}.\endconcept - - -\conceptindex{rules} -\concept rule - -A \defterm{rule} is a solid black rectangle. -A rule, like a \refterm{box}, -has \refterm{width}, \refterm{height}, and \refterm{depth}. -The vertical dimension of the rectangle -is the sum of its height and its depth. -An ordinary horizontal or vertical straight line is a special case of a rule. - -\bix^^{horizontal rules} -\bix^^{vertical rules} -\bix^^|\hrule| -\bix^^|\vrule| -A rule can be either horizontal or vertical. The distinction between a -horizontal rule and a vertical one has to do with how you produce the -rule, since a vertical rule can be short and fat (and therefore look -like a horizontal line), while a horizontal rule can be tall and skinny -(and therefore look like a vertical line). \TeX's notion of a rule is -more general than that of typographers, who think of a rule as a line -and would not usually call a square black box a rule. - -You can produce a horizontal rule using the -|\hrule| command and a vertical rule using -the |\vrule| command \ctsref{\vrule}. -For example, the control sequence |\hrule| by itself -produces a thin rule that runs across the page, like this: - -{\offinterlineskip -\nobreak\medskip -\hrule -\medskip} - -The command `|\vrule height .25in|' produces a vertical rule -that runs $.25$~inches down the page like this: -\nobreak\vskip \abovedisplayskip -\leftline{\vrule height .25in} -\vskip \belowdisplayskip - -There are two differences between horizontal rules and vertical rules: -\olist -\li For a horizontal rule, \TeX\ defaults the width to the width of the -smallest \refterm{box} or \refterm{alignment} that encloses it. For a -vertical rule, \TeX\ defaults the height and depth in the same way. (The -default is the size that you get if you don't give a size explicitly for that -dimension.) - -^^{horizontal lists//rule in} -^^{vertical lists//rule in} -\li -{\tighten -A horizontal rule is an inherently vertical item that cannot participate in -a \refterm{horizontal list}, -while a vertical -rule is an inherently horizontal item -that cannot participate in a \refterm{vertical list}. This behavior -may seem strange at first but there is good reason for it: -a horizontal rule ordinarily runs visually from left -to right and thus separates items in a vertical list, -while a vertical rule ordinarily runs visually from top to bottom -and thus separates items in a horizontal list. -%(Look at the rules that are shown above.) -\par} -\endolist - -{\tighten -If you construct a rule with three explicit dimensions, it will look the -same whether you make it a horizontal rule or a vertical rule. -For example, the command `|\vrule height1pt depth2pt width3in|' produces this -horizontal-looking rule: -\par} - -{\offinterlineskip -\nobreak\medskip\nobreak\vskip3pt -\leftline{\vrule height1pt depth2pt width3in} -\medskip} - -You'll find a precise statement of \TeX's treatment of rules on -\knuth{pages~221--222}. -\eix^^{horizontal rules} -\eix^^{vertical rules} -\eix^^|\hrule| -\eix^^|\vrule| -\endconcept - - -\concept {script size} - -\defterm{Script size} describes one of the three related -\refterm{fonts:font} in a family. -^^{family//script size in} -Script size is smaller than \refterm{text size} but larger than -\refterm{scriptscript size}. \TeX\ uses script size for subscripts and -superscripts, as well as for the numerators and denominators of -fractions in text. -\endconcept - - -\concept {scriptscript size} - -\defterm{Scriptscript size} describes the smallest of the three related -\refterm{fonts:font} in a family. -^^{family//scriptscript size in} -\TeX\ uses \refterm{scriptscript size} for second-order subscripts, -superscripts, numerators, and denominators. For example, \TeX\ will use -scriptscript size for a subscript on a subscript or for a superscript on -a scriptsize numerator. -\endconcept - -\concept shrink - -See \conceptcit{glue}. -\endconcept - -\concept space - -You can cause \TeX\ to put \defterm{space} between two items in -several~ways: - -\olist -^^{end of line} -\li You can write something that \TeX\ treats as a space -\refterm{token}: one or more blank characters, the end of a line (the -end-of-line character acts like a space), or any \refterm{command} that -expands into a space token. \TeX\ generally treats several consecutive -spaces as equivalent to a single one, including the case where the -spaces include a single end-of-line. (An empty line -indicates the end of a paragraph; it -causes \TeX\ to generate a |\par| token.) -^^|\par//from empty line| -\TeX\ adjusts the size of -this kind of space to suit the length required by the context. - -^^{glue//creating space with} -\li You can write a skip command that produces the glue -you specify in the command. The glue can -\refterm{stretch} or \refterm{shrink}, -producing more or less space. You can have vertical glue as -well as horizontal glue. Glue disappears whenever it is next to a -line or page break. - -^^{kerns//creating space with} -\li You can write a \refterm{kern}. A kern produces a fixed amount of -space that does not stretch or shrink and does not disappear at a line -or page break (unless it is immediately followed by glue). The most -common use of a kern is to establish a fixed spatial relationship -between two adjacent \refterm{boxes}. -\endolist - -Glue and kerns can have negative values. Negative glue or a negative kern -between adjacent items brings those items closer together. -\endconcept - - -\concept stretch - -See \conceptcit{glue}. -\endconcept - - -\conceptindex{struts} -\concept strut - -{\tighten -A \defterm{strut} is an invisible \refterm{box} -^^{boxes//invisible} -whose width is zero and whose height and depth are slightly more than -those of a ``normal'' -line of type in the context. Struts are useful for obtaining -uniform vertical spacing when \TeX's -usual line spacing is disabled, e.g., within a math formula -or within a horizontal alignment where you've specified ^|\offinterlineskip|. -Because a strut is taller and deeper than everything else on its line, -it determines the height and depth of the line. -You can produce a strut with -the ^|\strut| command \ctsref{\strut} or the ^|\mathstrut| command -\ctsref\mathstrut. -You can use |\strut| anywhere, but you can only use |\mathstrut| when -\TeX\ is in math \refterm{mode}. A strut in \plainTeX\ has height 8.5\pt\ and -depth 3.5\pt, while a math strut has the height and depth of a left -parenthesis in the current \refterm{style} (so it's smaller for -subscripts and superscripts). -\par} - -Here's an example showing how you might use a strut: -\csdisplay -\vbox{\hsize = 3in \raggedright - \strut Here is the first of two paragraphs that we're - setting in a much narrower line length.\strut} -\vbox{\hsize = 3in \raggedright - \strut Here is the second of two paragraphs that we're - setting in a much narrower line length.\strut} -| -This input yields: -\display{\vbox{ -\vbox{\hsize = 3in \raggedright -\strut Here is the first of two paragraphs that we're setting -in a much narrower line length.\strut} -\vbox{\hsize = 3in \raggedright -\strut Here is the second of two paragraphs that we're setting -in a much narrower line length.\strut} -}} -\noindent -Without the struts the \refterm{vboxes:vbox} would be too close -together. Similarly, in the formula: -\csdisplay -$\overline{x\mathstrut} \otimes \overline{t\mathstrut}$ -| -the math struts cause both bars to be set at the same height even -though the `$x$' and the `$t$' have different heights: -\display{ -$\overline{x\mathstrut} \otimes \overline{t\mathstrut}$ -} -\vskip -\belowdisplayskip -\endconcept -\nobreak - -\conceptindex{styles} -\concept {style} - -Material in a math formula is set in one of eight \defterm{styles}, -depending on the context. Knowing about styles can be useful if you want to -set part of a formula in a different size of type than the one -that \TeX\ has chosen according to its usual rules. - -\eject -The four primary styles are: - -\vdisplay{% -\halign{\refterm{# style}\hfil&\hskip .25in(for #)\hfil\cr -display&formulas displayed on a line by themselves\cr -text&formulas embedded in ordinary text\cr -script&superscripts and subscripts\cr -scriptscript&superscripts on superscripts, etc.\cr -}} - -The other four styles are so-called ^{cramped variants}. In these -variants superscripts aren't raised as high as usual, and so the formula -needs less vertical space than it otherwise would. See -\knuth{pages~140--141} for the details of how \TeX\ selects the style. - -\TeX\ chooses a size of type according to the style: - -\ulist\compact -^^{display style}^^{text style} -\li Display style and text style are set in \refterm{text size}, like -`$\rm this$'. - -^^{script style} -\li Script style is set in \refterm{script size}, like `$\scriptstyle -\rm this$'. - -^^{scriptscript style} -\li Scriptscript style is set in \refterm{scriptscript size}, like -`$\scriptscriptstyle \rm this$'. -\endulist - -See \conceptcit{family} for more information about these three sizes. - -\TeX\ doesn't have a ``scriptscriptscript'' style because such a style -would usually have to be set in a size of type too small to read. \TeX\ -therefore sets third-order subscripts, superscripts, etc., using the -scriptscript style. - -Once in a while you may find that \TeX\ has set a formula in a different style -than the one you'd prefer. You can override \TeX's choice with the -^|\textstyle|, ^|\displaystyle|, ^|\scriptstyle|, and ^|\scriptscriptstyle| -commands \ctsref{\textstyle}. -\endconcept - -\concept {\TeXMeX} - -(a)~A variant of \TeX\ used for mathematical typesetting in -Central American countries. -(b)~A spicy cuisine favored by the \TeX\-ni\-cians of ^{El Paso}. -\endconcept - - -\concept {text math} - -We use the term \defterm{text math} to refer to a math formula set within a -line of text, i.e., enclosed in |$|'s. -\ttidxref{$} -\TeX\ sets text math in text math \refterm{mode}. -\endconcept - - -\concept {text size} - -\defterm{Text size} describes the largest of the three related -\refterm{fonts:font} in a \refterm{family}. -^^{family//text size in} -\TeX\ uses text size for ordinary symbols appearing in -\refterm{math mode}. -\endconcept - - -\conceptindex{tokens} -\concept token - -A \defterm{token} is either a single character tagged with a -\refterm{category code}, or a \refterm{control sequence}. \TeX\ reads -characters from a file using its eyes \seeconcept{\anatomy} -and groups the characters into tokens using its mouth. When a token -reaches \TeX's stomach, \TeX\ interprets it as a \refterm{command} -unless it's part of an argument of a preceding command. -\endconcept - - -\conceptindex{units of measure} -\concept {unit of measure} - -See \conceptcit{dimension}. -\endconcept - -\conceptindex{vboxes} -\concept vbox - -^^{vertical lists//vboxes formed from} -A \defterm{vbox} (vertical box) is a \refterm{box} that \TeX\ constructs -by placing the items of a \refterm{vertical list} one after another, top -to bottom. A vbox, taken as a unit, is neither inherently horizontal -nor inherently vertical, i.e., it can appear as an item of either a -vertical list or a \refterm{horizontal list}. You can construct a vbox -with the ^|\vbox| or the ^|\vtop| command -\ctsref{\vtop}. The difference is that for |\vbox|, -the \refterm{reference point} -of the constructed vbox is derived from that of the last (and -usually bottommost) constituent list item, but for |\vtop|, it's that of the -first (and usually topmost) constituent list item. -\endconcept - - -\conceptindex{vertical lists} -\concept{vertical list} - -A \defterm{vertical list} is a list of items -that \TeX\ has produced while it is -in one of its vertical modes, i.e., -assembling either a -\refterm{vbox} or a page. See ``vertical mode'' below. - -\endconcept - - -\concept{vertical mode} - -^^{vboxes//vertical mode for} When \TeX\ is assembling either a -\refterm{vbox} or the main vertical list from which pages are derived, -it is in one of two \defterm{vertical modes}: ^{ordinary -vertical mode} for assembling the main vertical list, and ^{internal -vertical mode} for assembling vboxes. Whenever \TeX\ is in a vertical mode -its stomach \seeconcept{\anatomy} is constructing a \refterm{vertical -list} of items (boxes, glue, penalties, etc.). -\TeX\ typesets the items in the list -one below another, top to bottom. - -A vertical list can't contain any items produced by -inherently horizontal commands, e.g., -^^{vertical lists//can't contain horizontal commands} -|\hskip| or an ordinary (nonspace) character. -\footnote{\TeX\ \emph{ignores} any space characters -that it encounters while it's in a vertical mode.} - -\ulist -\li If \TeX\ is assembling a vertical list in ordinary vertical mode and -encounters an inherently horizontal command, it switches to ordinary -\refterm{horizontal mode}. -\li If \TeX\ is assembling a vertical list in internal vertical mode and -encounters an inherently horizontal command, it complains. -\endulist - -Two commands that you might at first think are inherently vertical are -in fact inherently horizontal: |\valign| \ctsref{\valign} and |\vrule| -\ctsref{\vrule}. -^^|\valign//inherently horizontal| -^^|\vrule//inherently horizontal| -See \knuth{page~283} for a list of the -inherently horizontal commands. - -It's particularly important to be aware that \TeX\ considers an ordinary -character other than a space character to be inherently horizontal. If -\TeX\ suddenly starts a new paragraph when you weren't expecting it, -a likely cause is a -character that \TeX\ encountered while in vertical mode. -You can convince \TeX\ -not to treat that character as inherently horizontal by enclosing it in -an \refterm{hbox} since the |\hbox| command, despite its name, is -neither inherently horizontal nor inherently vertical. -\endconcept - - -\concept whatsit - -A \defterm{whatsit} is an item of information that -tells \TeX\ to carry out some action -that doesn't fit into its ordinary scheme of things. -A whatsit can appear in a horizontal or vertical list, just like a box -or a glue item. -\TeX\ typesets a whatsit -as a \refterm{box} having zero width, height, and depth---in other -words, a box that contains nothing and occupies no space. - -Three sorts of whatsits are built into \TeX: -\ulist -\li The |\openout|, |\closeout|, and |\write| commands -(\p\xrefn{\openout}) -% (2nd) removed \xref to \write, since it's on the same page -produce a whatsit for operating on an output file. -^^|\openout//whatsit produced by| -^^|\write//whatsit produced by| -^^|\closeout//whatsit produced by| -\TeX\ postpones the operation until it next ships out a page -to the {\dvifile} -^^{\dvifile//whatsits in} -(unless the operation is preceded by ^|\immediate|). -\TeX\ uses a whatsit for these commands because they don't have anything -to do with what it's typesetting when it encounters them. -\li The ^|\special| command \ctsref{\special} tells \TeX\ to -insert certain text directly into the \dvifile. -As with the |\write| command, \TeX\ postpones the insertion -until it next ships out a page to the {\dvifile}. -^^{\dvifile//material inserted by \b\tt\\special\e} -A typical use of |\special| would be to -name a graphics file that the device driver should incorporate into -your final output. -\li When you change languages with the ^|\language| or ^|\setlanguage| -commands \ctsref{\language}, -\TeX\ inserts a whatsit that instructs it to use a -certain set of hyphenation rules later on when it's breaking a paragraph -into lines. -\endulist -\noindent -A particular implementation of \TeX\ may provide additional whatsits. -\endconcept - - -\concept width - -^^{boxes//width of} -The \defterm{width} of a \refterm{box} is the amount of horizontal space -that it occupies, i.e., the distance from its left edge to its -right edge. The typeset material in a box can be wider than the box itself. -\endconcept - -\endconcepts - -\endchapter -\byebye |