diff options
Diffstat (limited to 'support/digestif/data/teximpatient.tags')
-rw-r--r-- | support/digestif/data/teximpatient.tags | 3848 |
1 files changed, 3848 insertions, 0 deletions
diff --git a/support/digestif/data/teximpatient.tags b/support/digestif/data/teximpatient.tags new file mode 100644 index 0000000000..229133e1ef --- /dev/null +++ b/support/digestif/data/teximpatient.tags @@ -0,0 +1,3848 @@ +-- Copyright 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry +-- Copyright 2022 Augusto Stoffel +-- SPDX-License-Identifier: GFDL-1.3-only +-- +-- Adapted from the book TeX for the Impatient, which can be found at +-- https://www.gnu.org/software/teximpatient. +data = { + ["+"] = [[ +`\+`, `\tabalign` + +These commands begin a single line in a tabbed alignment. The only +difference between `\+` and `\tabalign` is that `\+` is an outer +macro—you can’t use it when TeX is reading tokens at high speed . + +If you place an ‘`&`’ at a position to the right of all existing tabs in +a tabbing alignment, the ‘`&`’ establishes a new tab at that position. +]], + AA = [[ +`\AA` (Å), `\AE`, `\L` (Ł), `\OE`, `\O` (Ø), `\aa` (å), `\ae`, `\l` (ł), +`\oe`, `\o` (ø), `\ss` (ß) + +These commands produce various letters and ligatures from European +alphabets. They are useful for occasional words and phrases in these +languages—but if you need to typeset a large amount of text in a +European language, you should probably be using a version of TeX adapted +to that language.[1] + +You’ll need a space after these commands when you use them within a +word, so that TeX will treat the following letters as part of the word +rather than as part of the command. You needn’t be in math mode to use +these commands. + +[1] The TeX Users Group can provide you with information about European +language versions of TeX. +]], + TeX = [[ +This command produces the TeX logo. Remember to follow it by `\!vs` or +to enclose it in a group when you want a space after it. +]], + abovedisplayshortskip = [[ +This parameter specifies the amount of vertical glue that TeX inserts +before a math display when the display starts to the right of where the +previous line ends, i.e., when it does not visually overlap the previous +line. Plain TeX sets `\abovedisplayshortskip` to `0pt plus3pt`. See +pages 188–189 of *The TeXbook* for a more detailed explanation of this +parameter. +]], + abovedisplayskip = [[ +This parameter specifies the amount of vertical glue that TeX inserts +before a display when the display starts to the left of where the +previous line ends, i.e., when it visually overlaps the previous line. +Plain TeX sets `\abovedisplayskip` to `12pt plus3pt minus9pt`. See +pages 188–189 of *The TeXbook* for a more detailed explanation of this +parameter. +]], + accent = [[ +This command puts an accent over the character following this command. +The accent is the character at position `charcode` in the current font. +TeX assumes that the accent has been designed to fit over a character +1ex high in the same font as the accent. If the character to be +accented is taller or shorter, TeX adjusts the position accordingly. You +can change fonts between the accent and the next character, thus drawing +the accent character and the character to be accented from different +fonts. If the accent character isn’t really intended to be an accent, +TeX won’t complain; it will just typeset something ridiculous. +]], + active = [[ +This command contains the category code for an active character, namely, +the number 13. +]], + acute = [[ +`\acute`, `\bar`, `\breve`, `\b`, `\check`, `\ddot`, `\dot`, `\grave`, +`\hat`, `\tilde`, `\vec`, `\widehat`, `\widetilde` + +These commands produce accent marks in math formulas. You’ll ordinarily +need to leave a space after any one of them. A wide accent can be +applied to a multicharacter subformula; TeX will center the accent over +the subformula. The other accents are usefully applied only to a single +character. +]], + adjdemerits = [[ +This parameter specifies additional demerits that TeX attaches to a +breakpoint between two adjacent lines that are “visually incompatible”. +Such a pair of lines makes a paragraph appear uneven. Incompatibility is +evaluated in terms of the tightness or looseness of lines: + +1. A line is tight if its glue needs to shrink by at least $50\%$. + +2. A line is decent if its badness is 12 or less. + +3. A line is loose if its glue needs to stretch by more than $50\%$. + +4. A line is very loose if its glue needs to stretch so much that its + badness exceeds 100. + +Two adjacent lines are visually incompatible if their categories are not +adjacent, e.g., a tight line is next to a loose one or a decent line is +next to a very loose one. + +Demerits are in units of badness squared, so you need to assign a rather +large value to this parameter (in the thousands) for it to have any +effect. Plain TeX sets `\adjdemerits` to 10000. +]], + advance = [[ +This command adds a compatible quantity to a register. For `glue` or +`muglue` all three components (natural value, stretch, and shrink) are +added. Any of the quantities can be negative. For purposes of these +calculations (and other assignments as well), `glue` can be converted to +a `dimen` by dropping the stretch and shrink, and a `dimen` can be +converted to a `number` by taking its value in scaled points . You can +omit the word `by` in these commands—TeX will understand them anyway. +]], + advancepageno = [[ +This command adds 1 to the page number $n$ in `\pageno` if $n\ge0$ and +subtracts 1 from it if $n<0$. +]], + afterassignment = [[ +When TeX encounters this command it saves `token` in a special place. +After it next performs an assignment, it inserts `token` into the input +and expands it. If you call `\afterassignment` more than once before an +assignment, only the last call has any effect. One use of +`\afterassignment` is in writing macros for commands intended to be +written in the form of assignments, as in the example below. + +See page 279 of *The TeXbook* for a precise description of the behavior +of `\afterassignment`. +]], + aftergroup = [[ +When TeX encounters this command during input, it saves `token`. After +the end of the current group, it inserts `token` back into the input and +expands it. If a group contains several `\aftergroup`s, the +corresponding tokens are *all* inserted following the end of the group, +in the order in which they originally appeared. + +The example that follows shows how you can use `\aftergroup` to postpone +processing a token that you generate within a conditional test. +]], + allowbreak = [[ +This command tells TeX to allow a page break where one could not +ordinarily occur. `\allowbreak` can also be used in horizontal mode. +]], + alpha = [[ +`\Delta` (Δ), `\Gamma` (Γ), `\Lambda` (Λ), `\Omega` (Ω), `\Phi` (Φ), +`\Pi` (Π), `\Psi` (Ψ), `\Sigma` (Σ), `\Theta` (Θ), `\Upsilon` (Υ), `\Xi` +(Ξ), `\alpha` (α), `\beta` (β), `\chi` (χ), `\delta` (δ), `\epsilon` +(ϵ), `\eta` (η), `\gamma` (γ), `\iota` (ι), `\kappa` (κ), `\lambda` (λ), +`\mu` (μ), `\nu` (ν), `\omega` (ω), `\phi` (ϕ), `\pi` (π), `\psi` (ψ), +`\rho` (ρ), `\sigma` (σ), `\tau` (τ), `\theta` (θ), `\upsilon` (υ), +`\varepsilon` (ε), `\varphi` (φ), `\varpi` (ϖ), `\varrho` (𝜚), +`\varsigma` (ς), `\vartheta` (ϑ), `\xi` (ξ), `\zeta` (ζ) + +These commands produce Greek letters suitable for mathematics. You can +only use them within a math formula, so if you need a Greek letter +within ordinary text you must enclose it in dollar signs (`$`). TeX does +not have commands for Greek letters that look like their roman +counterparts, since you can get them by using those roman counterparts. +For example, you can get a lowercase omicron in a formula by writing the +letter ‘o’, i.e., ‘`{\rm o}`’ or an uppercase beta (‘B’) by writing +‘`{\rm B}`’. + +Don’t confuse the following letters: + +- `\upsilon` (‘$\upsilon$’), `{\rm v}` (‘v’), and `\nu` (‘$\nu$’). + +- `\varsigma` (‘$\varsigma$’) and `\zeta` (‘$\zeta$’). + +You can get slanted capital Greek letters by using the math italic +(`\mit`) font. + +TeX treats Greek letters as ordinary symbols when it’s figuring how much +space to put around them. +]], + arrowvert = [[ +`\Arrowvert`, `\arrowvert`, `\bracevert`, `\lmoustache`, `\rmoustache` + +These commands produce portions of certain large delimiters + +and can themselves be used as delimiters. They refer to characters in +the `cmex10` math font. +]], + asymp = [[ +`\approx` (≈), `\asymp` (≍), `\bowtie` (⋈), `\cong` (≅), `\dashv` (⊣), +`\doteq` (≐), `\equiv` (≡), `\frown` (⌢), `\geq`, `\ge` (≥), `\gg` (≫), +`\in` (∈), `\leq`, `\le` (≤), `\ll` (≪), `\mid` (∣), `\models` (⊨), +`\neq` (≠), `\ne` (≠), `\ni` (∋), `\notin` (∉), `\owns` (∋), `\parallel` +(∥), `\perp` (⊥), `\preceq` (≼), `\prec` (≺), `\propto` (∝), `\simeq` +(≃), `\sim` (∼), `\smile` (⌣), `\sqsubseteq` (⊑), `\sqsupseteq` (⊒), +`\subseteq` (⊆), `\subset` (⊂), `\succeq` (≽), `\succ` (≻), `\supseteq` +(⊇), `\supset` (⊃), `\vdash` (⊢) + +These commands produce the symbols for various relations. Relations are +one of TeX’s classes of math symbols. TeX puts different amounts of +space around different classes of math symbols. When TeX needs to break +a line of text within a math formula, it will consider placing the break +after a relation—but only if the relation is at the outermost level of +the formula, i.e., not enclosed in a group. + +In addition to the commands listed here, TeX treats ‘`=\verb`’ and the +“arrow” commands as relations. + +Certain relations have more than one command that you can use to produce +them: + +- ‘$\ge$’ (|| and `\geq`). + +- ‘$\le$’ (`\le` and `\leq`). + +- ‘$\ne$’ (`\ne`, `\neq`, and `\not=`). + +- ‘$\ni$’ (`\ni` and `\owns`). +]], + badness = [[ +This command yields the numerical value of the badness of the box +(either horizontal or vertical) that TeX has most recently produced. If +the box was overfull, `\badness` will be 1000000; in all other cases +it will be between 0 and 10000. +]], + baselineskip = [[ +`\baselineskip`, `\lineskiplimit`, `\lineskip` + +These three parameters jointly determine how much space TeX leaves +between consecutive boxes of an ordinary vertical list, e.g., the lines +of a paragraph. This space is called “interline glue”. It is also +inserted between the component boxes of a vbox constructed in internal +vertical mode. + +In the usual case, when the boxes aren’t abnormally high or deep, +TeX makes the distance from the baseline of one box to the baseline of +the next one equal to `\baselineskip`. It does this by inserting +interline glue equal to `\baselineskip` minus the depth of the upper box +(as given by `\prevdepth`) and the height of the lower box. But if this +interline glue would be less than `\lineskiplimit`, indicating that the +two boxes are too close together, TeX inserts the `\lineskip` glue +instead.[1] See pages 79–80 of *The TeXbook* for a precise description. + +Note that `\baselineskip` and `\lineskip` measure *different things*: +the distance between baselines on the one hand and the distance between +the bottom of one box and the top of the next box on the other hand. See +page 78 of *The TeXbook* for further details. The first example below +shows the effects of `\lineskiplimit`. + +You can obtain the effect of double spacing by doubling the value of +`\baselineskip` as illustrated in the second example below. A change to +`\baselineskip` at any point before the end of a paragraph affects the +entire paragraph. + +[1] TeX actually accounts for the beginning of a vertical list by +setting `\prevdepth` to $-1000$pt and testing `\prevdepth` before +*every* box. If `\prevdepth`$\>\le-1000$pt it does not insert any +interline glue. +]], + batchmode = [[ +This command tells TeX not to stop for errors and to suppress all +further output to your terminal. Typing ‘`Q`’ or ‘`q`’ in response to an +error message puts you into batch mode. +]], + begingroup = [[ +`\begingroup`, `\endgroup` + +These two commands begin and end a group. A `\begingroup` does not match +up with a right brace, nor an `\endgroup` with a left brace. + +TeX treats `\begingroup` and `\endgroup` like any other control sequence +when it’s scanning its input. In particular, you can define a macro that +contains a `\begingroup` but not an `\endgroup`, and conversely. + +This technique is often useful when you’re defining paired macros, one +of which establishes an environment and the other of which terminates +that environment. You can’t, however, use `\begingroup` and `\endgroup` +as substitutes for braces other than the ones that surround a group. +]], + beginsection = [[ +You can use this command to begin a major subdivision of your document. +`argument` is intended to serve as a section title. `\beginsection` +surrounds `argument` by extra vertical space and sets it in boldface, +left-justified. You can produce the `\par` that ends `argument` with a +blank line. +]], + belowdisplayshortskip = [[ +This parameter specifies the amount of vertical glue that TeX inserts +after a display when the display starts to the right of where the +previous line ends, i.e., when it does not visually overlap the previous +line. Plain TeX sets `\belowdisplayshortskip` to `7pt plus3pt minus4pt`. +See pages 188–189 of *The TeXbook* for a more detailed explanation of +this parameter. +]], + belowdisplayskip = [[ +This parameter specifies the amount of vertical glue that TeX inserts +after a display when the display starts to the left of where the +previous line ends, i.e., when it visually overlaps the previous line. +Plain TeX sets `\belowdisplayskip` to `12pt plus3pt minus9pt`. See +pages 188–189 of *The TeXbook* for a more detailed explanation of this +parameter. +]], + bf = [[ +`\bf`, `\it`, `\rm`, `\sl`, `\tt` + +These commands select a type style without changing the typeface or the +point size.[1] Normally you would enclose one of these type style +commands in a group, together with the text to be set in the selected +font. Outside of a group a type style command is effective until the end +of the document (unless you override it with another such command). + +[1] TeX does not provide predefined commands for changing just the point +size, e.g., `\eightpoint`. Supporting such commands would require a +great number of fonts, most of which would never be used. Such commands +were, however, used in typesetting *The TeXbook*. +]], + bgroup = [[ +`\bgroup`, `\egroup` + +The left and right braces are commands that begin and end a group. The +`\bgroup` and `\egroup` control sequences are equivalent to ‘`{`’ and +‘`}`’, except that TeX treats `\bgroup` and `\egroup` like any other +control sequence when it’s scanning its input. + +`\bgroup` and `\egroup` can be useful when you’re defining paired +macros, one of which starts a brace-delimited construct (not necessarily +a group) and the other one of which ends that construct. + +You can’t define such macros using ordinary braces—if you try, your +macro definitions will contain unmatched braces and will therefore be +unacceptable to TeX. Usually you should use these commands only when you +can’t use ordinary braces. +]], + big = [[ +`\Biggl`, `\Biggm`, `\Biggr`, `\Bigg`, `\Bigl`, `\Bigm`, `\Bigr`, +`\Big`, `\biggl`, `\biggm`, `\biggr`, `\bigg`, `\bigl`, `\bigm`, +`\bigr`, `\big` + +These commands make delimiters bigger than their normal size. The +commands in the four columns produce successively larger sizes. The +difference between `\big`, `\bigl`, `\bigr`, and `bigm` has to do with +the class of the enlarged delimiter: + +- `\big` produces an ordinary symbol. + +- `\bigl` produces an opening symbol. + +- `\bigr` produces a closing symbol. + +- `\bigm` produces a relation symbol. + +TeX uses the class of a symbol in order to decide how much space to put +around that symbol. + +These commands, unlike `\left` and `\right`, do *not* define a group. +]], + binoppenalty = [[ +This parameter specifies the penalty for breaking a math formula after a +binary operator when the formula appears in a paragraph. Plain TeX sets +`\binoppenalty` to 700. +]], + bmod = [[ +This command produces a binary operation for indicating a modulus within +a formula. +]], + boxmaxdepth = [[ +This parameter contains a dimension $D$. TeX will not construct a box +whose depth exceeds $D$. If you produce a box whose depth $d$ would +exceed $D$, TeX will transfer the excess depth to the height of the box, +effectively moving the reference point of the box down by $d-D$. If you +set `\boxmaxdepth` to zero, TeX will line up a row of vboxes so that +their bottom boundaries all lie on the same horizontal line. Plain +TeX sets `\boxmaxdepth` to `\maxdimen` , so `\boxmaxdepth` won’t affect +your boxes unless you change it. +]], + ["break"] = [[ +This command forces a page break. Unless you do something to fill out +the page, you’re likely to get an underfull vbox. `\break` can also be +used in horizontal mode. +]], + brokenpenalty = [[ +This parameter specifies the penalty for breaking a page just after a +line that ends in a discretionary item (usually a hyphen). + +`\brokenpenalty` applies to page breaking, while `\hyphenpenalty` +applies to line breaking. Plain TeX sets `\brokenpenalty` to 100. +]], + c = [[ +`\H`, `\c`, `\d`, `\t`, `\u`, `\v` + +These commands produce accent marks in ordinary text. You’ll usually +need to leave a space after the ones denoted by a single letter ). +]], + cal = [[ +`\cal`, `\mit`, `\oldstyle` + +These commands cause TeX to typeset the following text in the specified +font. You can only use them in math mode. The `\mit` command is useful +for producing slanted capital Greek letters. You can also use the +commands given in “TeX for the Impatient”, Selecting fonts,selfont to +change fonts in math mode. +]], + cases = [[ +This command produces the mathematical form that denotes a choice among +several cases. Each case has two parts, separated by ‘`&`’. TeX treats +the first part as a math formula and the second part as ordinary text. +Each case must be followed by `\cr`. +]], + catcode = [[ +This table entry contains the category code of the character whose +ASCII code is `charcode`. The category codes are listed on in “TeX for +the Impatient”. By changing the category code of a character you can get +TeX to treat that character differently. +]], + cdotp = [[ +`\cdotp` (·), `\ldotp` + +These two commands respectively produce a centered dot and a dot +positioned on the baseline. They are valid only in math mode. TeX treats +them as punctuation, putting no extra space in front of them but a +little extra space after them. In contrast, TeX puts an equal amount of +space on both sides of a centered dot generated by the `\cdot` command. +]], + centerline = [[ +`\centerline`, `\leftline`, `\rightline` + +The `\centerline` command produces an hbox exactly as wide as the +current line and places `argument` at the center of the box. The +`\leftline` and `\rightline` commands are analogous; they place +`argument` at the left end or at the right end of the box. If you want +to apply one of these commands to several consecutive lines, you must +apply it to each one individually. See in “TeX for the Impatient” for an +alternate approach. + +Don’t use these commands within a paragraph—if you do, TeX probably +won’t be able to break the paragraph into lines and will complain about +an overfull hbox. +]], + char = [[ +This command produces the character located at position `charcode` of +the current font. +]], + chardef = [[ +This command defines `control sequence` to be `charcode`. Although +`\chardef` is most often used to define characters, you can also use it +to give a name to a number in the range 0–255 even when you aren’t +using that number as a character code. +]], + cleartabs = [[ +This command clears all the tabs to the right of the current column. Its +main use is in applications such as typesetting computer programs in +which the tab positions change from line to line. +]], + closeout = [[ +This command tells TeX to close the output stream numbered `number`. +i.e., end the association between the output stream and its file. The +output stream with this number then becomes available for use with a +different file. You should close an output stream once you’re finished +using its file. + +A `\closeout` generates a whatsit that becomes part of a box. The +`\closeout` does not take effect until TeX ships out that box to the +.dvi file, unless you’ve preceded the `\closeout` with `\immediate`. +]], + clubpenalty = [[ +This parameter specifies the penalty for breaking a page just after the +first line of a paragraph. A line by itself at the bottom of a page is +called a “club line”. Plain TeX sets `\clubpenalty` to 150. +]], + colon = [[ +This command produces a colon punctation symbol. It is valid only in +math mode. The difference between `\colon` and the colon character (`:`) +is that ‘`:`’ is an operator, so TeX puts extra space to the left of it +whereas it doesn’t put extra space to the left of `\colon`. +]], + copy = [[ +This command produces a copy of box register `register`. This command is +useful when you want to retrieve the contents of a box register but +don’t want to destroy the contents. (Retrieving the register contents +with `\box` makes the register void.) +]], + cos = [[ +`\Pr`, `\arccos`, `\arcsin`, `\arctan`, `\arg`, `\cosh`, `\cos`, +`\coth`, `\cot`, `\csc`, `\deg`, `\det`, `\dim`, `\exp`, `\gcd`, `\hom`, +`\inf`, `\ker`, `\lg`, `\liminf`, `\limsup`, `\lim`, `\ln`, `\log`, +`\max`, `\min`, `\sec`, `\sinh`, `\sin`, `\sup`, `\tanh`, `\tan` + +These commands set the names of various mathematical functions in roman +type, as is customary. If you apply a superscript or subscript to one of +these commands, TeX will in most cases typeset it in the usual place. In +display style, TeX typesets superscripts and subscripts on `\det`, +`\gcd`, `\inf`, `\lim`, `\liminf`, `\limsup`, `\max`, `\min`, `\Pr`, and +`\sup` as though they were limits, i.e., directly above or directly +below the function name. +]], + count = [[ +`\count`, `\dimen`, `\muskip`, `\skip`, `\toks` + +The first six commands listed here assign something to a register. The +`=`’s in the assignments are optional. The remaining five control +sequences are not true commands because they can only appear as part of +an argument. They yield the contents of the specified register. Although +you can’t use these control sequences by themselves as commands in text, +you can use `\the` to convert them to text so that you can typeset their +values. + +You can name and reserve registers with the `\newcount` command and its +relatives . Using these commands is a safe way to obtain registers that +are known not to have any conflicting usage. + +A `\count` register contains an integer, which can be either positive or +negative. Integers can be as large as you’re ever likely to need them to +be.[1] TeX uses count registers 0–9 to keep track of the page number +(see page 119 of *The TeXbook*). `\count255` is the only count register +available for use without a reservation. + +[1] Here’s the only exercise in this book: find out what’s the largest +integer that TeX will accept. +]], + countdef = [[ +`\countdef`, `\dimendef`, `\muskipdef`, `\skipdef`, `\toksdef` + +These commands define `control sequence` to refer to the register of the +indicated category whose number is `register`. Normally you should use +the commands in the previous group (`\newcount`, etc.) in preference to +these commands in order to avoid numbering conflicts. The commands in +the previous group are defined in terms of the commands in this group. +]], + cr = [[ +This command ends the preamble of a horizontal or vertical alignment, a +row of a horizontal or tabbing alignment, or a column of a vertical +alignment. You can cause TeX to take certain actions whenever it sees a +`\cr` by setting the value of the `\everycr` parameter . +]], + crcr = [[ +This command behaves just like `\cr`, except that TeX ignores it if it +comes immediately after a `\cr` or a `\noalign`. Its main application is +as a safety measure to avoid a misleading error message caused by a +macro that expects an argument ending in `\cr`. If you put `\crcr` after +the ‘`#`$n$’ that denotes such an argument in the macro’s definition, +the macro will work properly whether or not the argument ends with +`\cr`. +]], + csname = [[ +This command produces a control sequence from `token list`. It provides +a way of synthesizing control sequences, including ones that you can’t +normally write. `token list` can itself include control sequences; it is +expanded in the same way as the replacement text of an `\edef` +definition. If the final expansion yields anything that isn’t a +character, TeX will complain. `\csname` goes from a list of tokens to a +control sequence; you can go the other way with `\string` . +]], + day = [[ +TeX sets this parameter to the current day of the month. It is a number +between 1 and 31. `\day` is set at the beginning of your run (see +the comments on `\time` above). +]], + ddots = [[ +This command produces three dots on a diagonal. Its most common use is +to indicate repetition along the diagonal of a matrix. +]], + deadcycles = [[ +This parameter contains the number of times that TeX has initiated the +output routine since the last time it did a `\shipout`.[1] If +`\deadcycles` gets too big, you’ve probably gotten TeX into a loop, +e.g., one where the page builder is trying the same page break over and +over again. + +[1] More precisely, TeX sets `\deadcyles` to 0 whenever it executes +`\shipout` and increments it by 1 whenever it executes `\output`. +]], + def = [[ +This command defines `control sequence` as a macro with the specified +`parameter text` and `replacement text`. See in “TeX for the Impatient” +for a full explanation of how to write a macro definition. +]], + defaulthyphenchar = [[ +When TeX reads the metrics file + +for a font in response to a `\font` command, it sets the font’s +`\hyphenchar` to `\defaulthyphenchar`. If the value of +`\defaulthyphenchar` is not in the range 0–255 when you load a font, +TeX won’t hyphenate any words in that font unless you override the +decision by setting the font’s `\hyphenchar` later on. Plain TeX sets +`\defaulthyphenchar` to 45, the ASCII code for ‘`-`’. +]], + defaultskewchar = [[ +When TeX reads the metrics file + +for a font in response to a `\font` command, it sets the font’s +`\skewchar` to `\defaultskewchar`. If the value of `\defaultskewchar` is +not in the range 0–255, TeX does not assign any skew characters by +default. Plain TeX sets `\defaultskewchar` to $-1$, and it’s usually +best to leave it there. +]], + delcode = [[ +This table entry specifies the delimiter code for the input character +whose ASCII code is `charcode`. The delimiter code tells TeX how to find +the best output character to use for typesetting the indicated input +character as a delimiter. + +`number` is normally written in hexadecimal notation. Suppose that +`number` is the hexadecimal number $s_1s_2s_3\, +l_1l_2l_3$. Then when the character is used as a delimiter, TeX takes +the character to have small variant $s_1s_2s_3$ and large variant +$l_1l_2l_3$. Here $s_1s_2s_3$ indicates the math character found in +position $s_2s_3$ of family $s_1$, and similarly for $l_1l_2l_3$. This +is the same convention as the one used for `\mathcode`, except that +`\mathcode` also specifies a class. +]], + delimiter = [[ +This command produces a delimiter whose characteristics are given by +`number`. `number` is normally written in hexadecimal notation. You can +use the `\delimiter` command instead of a character in any context where +TeX expects a delimiter (although the command is rarely used outside of +a macro definition). Suppose that `number` is the hexadecimal number +$cs_1s_2s_3 +l_1l_2l_3$. Then TeX takes the delimiter to have class $c$, small +variant $s_1s_2s_3$, and large variant $l_1l_2l_3$. Here $s_1s_2s_3$ +indicates the math character found in position $s_2s_3$ of family $s_1$, +and similarly for $l_1l_2l_3$. This is the same convention as the one +used for `\mathcode`. +]], + discretionary = [[ +This command specifies a “discretionary break”, namely, a place where +TeX can break a line. It also tells TeX what text to put on either side +of the break. + +- If TeX does not break there, it uses the `no-break text`. + +- If TeX does break there, it puts the `pre-break text` just before + the break and the `post-break text` just after the break. + +Just as with `\-`, TeX isn’t obligated to break a line at a +discretionary break. In fact, `\-` is ordinarily equivalent to +`\discretionary!allowbreak{-}{}{}`. + +TeX sometimes inserts discretionary breaks on its own. For example, it +inserts `\discretionary!allowbreak{}{}{}` after an explicit hyphen or +dash. +]], + displayindent = [[ +This parameter specifies the space by which TeX indents a math display. +TeX sets the value of `\displayindent` when it encounters the ‘`$$`’ +that starts the display. Usually this initial value is zero, but if the +paragraph shape indicates that the display should be shifted by an +amount $s$, TeX will set `\displayindent` to $s$. See pages 188–189 of +*The TeXbook* for a more detailed explanation of this parameter. +]], + displaylimits = [[ +This command tells TeX to place limits above and below all operators +(including the integrals) if in display style, and after all operators +if in text style. + +If you specify more than one of `\limits`, `\nolimits`, and +`\displaylimits`, the last command rules. +]], + displaywidowpenalty = [[ +This parameter specifies the penalty for breaking a page just before the +last line of a partial paragraph that immediately precedes a math +display. Plain TeX sets `\displaywidowpenalty` to 50. +]], + displaywidth = [[ +This parameter specifies the maximum width that TeX allows for a math +display. If TeX cannot fit the display into a space of this width, it +sets an overfull hbox and complains. TeX sets the value of +`\displaywidth` when it encounters the ‘`$$`’ that starts the display. +This initial value is `\hsize` unless it’s overridden by changes to the +paragraph shape. See pages 188–189 of *The TeXbook* for a more detailed +explanation of this parameter. +]], + dotfill = [[ +`\dotfill`, `\hrulefill` + +These commands respectively fill the enclosing horizontal space with a +row of dots on the baseline and with a horizontal line on the baseline. +It’s usually a good idea to leave a space between `\dotfill` or +`\hrulefill` and any text that precedes or follows it (see the example +below). +]], + dots = [[ +This command produces an ellipsis, i.e., three dots, in ordinary text. +It’s intended for use in mathematical writing; for an ellipsis between +ordinary words, you should use `$\ldots$` instead. Since `\dots` +includes its own space, you shouldn’t follow it by `\!vs`. +]], + doublehyphendemerits = [[ +This parameter specifies additional demerits that TeX attaches to a +breakpoint when that breakpoint leads to two consecutive lines that end +in a hyphen. Increasing the value of this parameter has the effect of +discouraging TeX from hyphenating two lines in a row. Demerits are in +units of badness squared, so you need to assign a rather large value to +this parameter (in the thousands) for it to have any effect. Plain +TeX sets `\doublehyphendemerits` to 10000. +]], + downbracefill = [[ +`\downbracefill`, `\upbracefill` + +These commands respectively produce upward-pointing and +downward-pointing extensible horizontal braces. TeX will make the braces +as wide as necessary. These commands are used in the definitions of +`\overbrace` and `\underbrace` . +]], + dump = [[ +This command, which must not appear inside a group, dumps the contents +of TeX’s memory to a format file. By using `virtex`, a special “virgin” +form of TeX, you can then reload the format file at high speed and +continue in the same state that TeX was in at the time of the dump. +`\dump` also ends the run. Since `\dump` can only be used in `initex`, +not in production forms of TeX, it is only useful to people who are +installing TeX. +]], + edef = [[ +This command defines a macro in the same general way as `\def`. The +difference is that TeX expands the `replacement text` of an `\edef` +immediately (but still without executing anything). Thus any definitions +within the `replacement text` are expanded, but assignments and commands +that produce things such as boxes and glue are left as is. For example, +an `\hbox` command within the `replacement text` of an `\edef` remains +as a command and is not turned into a box as TeX is processing the +definition. It isn’t always obvious what’s expanded and what isn’t, but +you’ll find a complete list of expandable control sequences on +pages 212–215 of *The TeXbook*. + +You can inhibit the expansion of a control sequence that would otherwise +be expanded by using `\noexpand`. You can postpone the expansion of a +control sequence by using `\expandafter`. + +The `\write`, `\message`, `\errmessage`, `\wlog`, and `\csname` commands +expand their token lists using the same rules that `\edef` uses to +expand its replacement text. +]], + eject = [[ +`\eject`, `\supereject` + +These commands force a page break at the current position and end the +current paragraph. If you don’t precede them with `\vfil`, + +TeX will try to stretch out the page contents (and will probably +complain about an underfull vbox). The `\supereject` command, in +addition, instructs the plain TeX output routine to force out any +leftover insertions, + +such as long footnotes, so that they are produced before any more input +is processed. Thus `\supereject` is a good command to use at the end of +each chapter or other major unit of your document. +]], + ["else"] = [[ +This command introduces the “false” alternative of a conditional test. +]], + emergencystretch = [[ +By setting this parameter to be greater than zero, you can make it +easier for TeX to typeset your document without generating overfull +hboxes. + +This is a better alternative than setting `\tolerance=10000`, since that +tends to produce really ugly lines. If TeX can’t typeset a paragraph +without exceeding `\tolerance`, it will try again, adding +`\emergencystretch` to the stretch of each line. The effect of the +change is to scale down the badness of each line, enabling TeX to make +spaces wider than they would otherwise be and thus choose line breaks +that are as good as possible under the circumstances. +]], + empty = [[ +This command expands to no tokens at all. It differs from `\relax` in +that it disappears after macro expansion. +]], + ["end"] = [[ +This command tells TeX to produce the last page and end the job. It does +not fill out the page, however, so it’s usually better to use `\bye` +rather than `\end`. +]], + endgraf = [[ +This command is a synonym for the `\par` primitive command. It is useful +when you’ve redefined `\par` but still want access to the original +definition of `\par`. +]], + endinput = [[ +This command tells TeX to stop reading input from the current file when +it next reaches the end of a line. +]], + endinsert = [[ +This command ends an insertion started by `\topinsert`, `\midinsert`, or +`\pageinsert`. +]], + endline = [[ +This command is a synonym for the `\cr` command. It is useful when +you’ve redefined `\cr` but still need access to the original definition. +]], + endlinechar = [[ +This parameter contains the character code for the character that +TeX appends to the end of each input line. + +A value not in the range 0–255 indicates that no character should be +appended. Plain TeX leaves `\endlinechar` at `` `\^^M `` (the ASCII code +for ⟨return⟩). +]], + enskip = [[ +`\enskip`, `\qquad`, `\quad` + +Each of these commands produces a glob of horizontal glue that can +neither stretch nor shrink. TeX can break a line at such glue. The width +of these glues (which are relative to the current font) are as follows +for `cmr10`, the default plain TeX font: +]], + enspace = [[ +This command produces a kern whose width is one en (half of an em, see +in “TeX for the Impatient”). TeX won’t break a line at an `\enspace` +unless it’s followed by glue. In a bulleted list, the bullets are +usually separated from the following text by an `\enspace`. +]], + eqalign = [[ +`\eqalignno`, `\eqalign`, `\leqalignno` + +These commands produce a multiline math display in which certain +corresponding parts of the lines are lined up vertically. The +`\eqalignno` and `\leqalignno` commands also let you provide equation +numbers for some or all of the lines. `\eqalignno` puts the equation +numbers on the right and `\leqalignno` puts them on the left. + +Each line in the display is ended by `\cr`. Each of the parts to be +aligned (most often an equals sign) is preceded by ‘`&`’. An ‘`&`’ also +precedes each equation number, which comes at the end of a line. You can +put more than one of these commands in a single display in order to +produce several groups of equations. In this case, only the rightmost or +leftmost group can be produced by `\eqalignno` or `\leqalignno`. + +You can use the `\noalign` command to change the amount of space between +two lines of a multiline display. +]], + eqno = [[ +`\eqno`, `\leqno` + +These commands attach an equation number to a displayed formula. `\eqno` +puts the equation number on the right and `\leqno` puts it on the left. +The commands must be given at the end of the formula. If you have a +multiline display and you want to number more than one of the lines, use +the `\eqalignno` or `\leqalignno` command . + +These commands are valid only in display math mode. +]], + errhelp = [[ +This parameter contains the token list that TeX displays when you ask +for help in response to an `\errmessage` command. We recommend that when +you’re generating an error message with `\errmessage`, you set +`\errhelp` to a string that describes the nature of the error and use +`\newhelp` to produce that string. You can use the `\newlinechar` +character to produce multiline messages. +]], + errorcontextlines = [[ +This parameter determines the number of pairs of context lines, not +counting the top and bottom pairs, that TeX prints when it encounters an +error. By setting it to 0 you can get rid of long error messages. You +can still force out the full context by typing something like: + + I\errorcontextlines=100\oops + +in response to an error, since the undefined control sequence `\oops` +will cause another error. Plain TeX sets `\errorcontextlines` to 5. +]], + errorstopmode = [[ +This command tells TeX to stop for interaction whenever it finds an +error. This is the normal mode of operation. +]], + escapechar = [[ +This parameter specifies the ASCII code of the character that TeX uses +to represent the escape character + +when it’s converting a control sequence name to a sequence of character +tokens. This conversion occurs when you use the `\string` command and +also when TeX is producing diagnostic messages. The default value of the +escape character is 92, the ASCII character code for a backslash. If +`\escapechar` is not in the range 0–255, TeX does not include an +escape character in the result of the conversion. +]], + everycr = [[ +TeX expands `token list` whenever it executes a `\cr`—at the end of +every preamble, at the end of every row of a horizontal alignment, and +at the end of every column of a vertical alignment. The `\everycr` +commands are expanded just after the `\cr`. Thus you can cause TeX to +execute certain commands at the end of a preamble, row, or column by +assigning a list of those commands to `\everycr`. + +The `\everycr` tokens shouldn’t include any commands other than +`\noalign`. That’s because the `\everycr` tokens will reappear after the +last `\cr` of the alignment. A command other than `\noalign` will then +make TeX think that it’s starting a new row or column. TeX will complain +about a missing `\cr`, insert a `\cr`, insert the `\everycr` tokens +again, and repeat these actions indefinitely. +]], + everyhbox = [[ +`\everyhbox`, `\everyvbox` + +These parameters contain token lists that TeX expands at the start of +every hbox or vbox that it constructs. Any items resulting from the +expansion then become the beginning of the list of items for the box. By +default these token lists are empty. +]], + everyjob = [[ +This parameter contains a token list that TeX expands at the start of +every job. Because an assignment to `\everyjob` cannot affect the +current run (by the time you’ve done the assignment it’s already too +late), it is only useful to people who are preparing format files. +]], + everymath = [[ +`\everydisplay`, `\everymath` + +These parameters specify token lists that TeX inserts at the start of +every text math or display math formula, respectively. You can take +special actions at the start of each math formula by assigning those +actions to `\everymath` or `\everydisplay`. Don’t forget that if you +want both kinds of formulas to be affected, you need to set *both* +parameters. +]], + everypar = [[ +TeX performs the commands in `token list` whenever it enters horizontal +mode, e.g., when it starts a paragraph. By default `\everypar` is empty, +but you can take extra actions at the start of every paragraph by +putting the commands for those actions into a token list and assigning +that token list to `\everypar`. +]], + exhyphenpenalty = [[ +This parameter specifies the penalty that TeX attaches to a breakpoint +at an explicit hyphen such as the one in “helter-skelter”. Increasing +this parameter has the effect of discouraging TeX from ending a line at +an explicit hyphen. Plain TeX sets `\exhyphenpenalty` to 50. +]], + expandafter = [[ +This command tells TeX to expand `token_1` according to its rules for +macro expansion *after* it has expanded `token_2` by one level. It’s +useful when `token_1` is something like ‘`{`’ + +or `\string` that inhibits expansion of `token_2`, but you want to +expand `token_2` nevertheless. +]], + fam = [[ +When TeX is in math mode, it ordinarily typesets a character using the +font family given in its mathcode. + +However, when TeX is in math mode and encounters a character whose class +is 7 (Variable), it typesets that character using the font family +given by the value of `\fam`, provided that the value of `\fam` is +between 0 and 15. If the value of `\fam` isn’t in that range, +TeX uses the family in the character’s mathcode as in the ordinary case. +TeX sets `\fam` to $-1$ whenever it enters math mode. Outside of math +mode, `\fam` has no effect. + +By assigning a value to `\fam` you can change the way that TeX typesets +ordinary characters such as variables. For instance, by setting `\fam` +to `\ttfam`, you cause TeX to typeset variables using a typewriter font. +Plain TeX defines `\tt` as a macro that, among other things, sets `\fam` +to `\ttfam`. +]], + fi = [[ +This command ends the text of a conditional test. +]], + filbreak = [[ +This command provides a kind of conditional page break. It tells TeX to +break the page—but not if the text up to a later `\filbreak` also fits +on the same page. By enclosing a paragraph in a pair of `\filbreak`s, +you can ensure that TeX will keep a paragraph on a single page if it +can. You should not use `\filbreak` within a paragraph, since it forces +TeX into vertical mode and thus ends the paragraph. See in “TeX for the +Impatient” for more advice on this subject. +]], + finalhyphendemerits = [[ +This parameter specifies additional demerits that TeX attaches to a +breakpoint that causes the next to last line of a paragraph to end with +a hyphen. Such a hyphen is generally considered to be unaesthetic +because of the possible blank space from a short last line beneath it. +Increasing the value of this parameter has the effect of discouraging +TeX from ending the next to the last line with a hyphen. Demerits are in +units of badness squared, so you need to assign a rather large value to +this parameter (in the thousands) for it to have any effect. Plain +TeX sets `\finalhyphendemerits` to 5000. +]], + firstmark = [[ +`\botmark`, `\firstmark`, `\topmark` + +These commands expand to the mark text in an item generated by an +earlier `\mark` command. The mark text has the form of a token list. +TeX sets the values of these commands when it finishes placing the +contents of a page into `\box255`, just before calling the output +routine as part of its page breaking actions. TeX determines these +values as follows: + +- `\firstmark` contains the tokens of the first mark on the page. + +- `\botmark` contains the tokens of the last mark on the page. + +- `\topmark` contains the tokens of the mark that is in effect at the + very top of the page. That mark is the last mark that *preceded* the + page, i.e., the `\botmark` of the previous page. It is empty if no + marks preceded the page. + +If a page has no marks on it, TeX will set `\firstmark` and `\botmark` +to the same mark as `\topmark`, i.e., the most recent preceding mark. +The table at the bottom of page 258 of *The TeXbook* illustrates the +relation among `\firstmark`, `\botmark`, and `\topmark`. +]], + fivebf = [[ +`\fivebf`, `\fivei`, `\fiverm`, `\fivesy`, `\sevenbf`, `\seveni`, +`\sevenrm`, `\sevensy`, `\tenbf`, `\tenex`, `\tenit`, `\teni`, `\tenrm`, +`\tensl`, `\tensy`, `\tentt` + +These commands cause TeX to typeset the following text in the specified +font. Normally you would enclose one of these font-selecting commands in +a group, together with the text to be set in the selected font. Outside +of a group a font-selecting command is effective until the end of the +document (unless you override it with another such command). +]], + floatingpenalty = [[ +This parameter specifies the penalty that TeX adds to `\insertpenalties` + +when the page builder is adding an insertion to the current page and +discovers that a previous insertion of the same kind on this page has +been split, leaving part of it for subsequent pages. Plain TeX leaves +`\floatingpenalty` at 0. +]], + fmtname = [[ +`\fmtname`, `\fmtversion` + +These commands produce the name and version number of the TeX format, +e.g., plain TeX or LaTeX, that you’re using. +]], + folio = [[ +This command produces the current page number, whose value is the number +$n$ contained in `\pageno`. If $n\ge0$, TeX produces $n$ as a decimal +number, while if $n<0$, TeX produces $-n$ in lowercase roman numerals. +]], + font = [[ +Used alone, the `\font` control sequence designates the current font. +`\font` isn’t a true command when it’s used alone, since it then can +appear only as an argument to another command. + +For the other three forms of `\font`, `fontname` names a set of files +that define a font. These forms of `\font` are commands. Each of these +forms has two effects: + +1. It defines `control sequence` as a name that selects the font + `fontname`, possibly magnified (see below). + +2. It causes TeX to load the font metrics file (.tfm file) for + `fontname`. + +The name of a font file usually indicates its design size. For example, +`cmr10` indicates Computer Modern roman with a design size of 10 +points. The design size of a font is recorded in its metrics file. + +If neither `scaled` `number` nor `at` `dimen` is present, the font is +used at its design size—the size at which it usually looks best. +Otherwise, a magnified version of the font is loaded: + +- If `scaled` `number` is present, the font is magnified by a factor + of $\texttt{number}/1000$. + +- If `at` `dimen` is present, the font is scaled to `dimen` by + magnifying it by $\texttt{dimen}/ds$, where $ds$ is the design size + of `fontname`. `dimen` and $ds$ are nearly always given in points. + +Magnifications of less than 1 are possible; they reduce the size. + +You usually need to provide a shape file for each magnification of a +font that you load. However, some device drivers can utilize fonts that +are resident in a printer. Such fonts don’t need shape files. + +See “TeX for the Impatient” and “TeX for the Impatient” for further +information. +]], + fontdimen = [[ +These parameters specify various dimensions associated with the font +named by the control sequence `font` (as distinguished from the +`fontname` that names the font files). Values of these parameters are +specified in the metrics file for `font`, but you can retrieve or change +their values during a TeX run. The numbers and meanings of the +parameters are: + +TeX uses the slant per point for positioning accents. It uses the +interword parameters for producing interword spaces ) and the extra +space parameter for the additional space after a period). The values of +these parameters for the plain TeX fonts are enumerated on page 433 of +*The TeXbook*. Math symbol fonts have 15 additional parameters, which +we won’t discuss here. + +Beware: assignments to these parameters are *not* undone at the end of a +group. If you want to change these parameters locally, you’ll need to +save and restore their original settings explicitly. +]], + fontname = [[ +This command produces the filename for `font`. The filename is the +`fontname` that was used to define `font`. +]], + footnote = [[ +`\footnote`, `\vfootnote` + +These commands produce footnotes. `argument_1` is the “reference mark” +for the footnote and `argument_2` is its text. The text can be several +paragraphs long if necessary and can contain constructs such as math +displays, but it shouldn’t contain any insertions (such as other +footnotes). + +You shouldn’t use these commands inside a subformula of a math formula, +in a box within a box being contributed to a page, or in an insertion of +any kind. If you’re unsure whether these restrictions apply, you can be +safe by only using `\footnote` and `\vfootnote` directly within a +paragraph or between paragraphs. + +These restrictions aren’t as severe as they seem because you can use +`\vfootnote` to footnote most anything. Both `\footnote` and +`\vfootnote` insert the reference mark in front of the footnote itself, +but `\vfootnote` doesn’t insert the reference mark into the text. Thus, +when you use `\vfootnote` you can explicitly insert the reference mark +wherever it belongs without concern about the context and place the +`\vfootnote` in the next paragraph. If you find that the footnote lands +on the page following the one where it belongs, move the `\vfootnote` +back to the previous paragraph. There are rare circumstances where +you’ll need to alter the text of your document in order to get a +footnote to appear on the same page as its reference mark. +]], + frenchspacing = [[ +`\frenchspacing`, `\nonfrenchspacing` + +TeX normally adjusts the spacing between words to account for +punctuation marks. For example, it inserts extra space at the end of a +sentence and adds some stretch to the glue following any punctuation +mark there. The `\frenchspacing` command tells TeX to make the interword +spacing independent of punctuation, while the `\nonfrenchspacing` +command tells TeX to use its normal spacing rules. If you don’t specify +`\frenchspacing`, you’ll get TeX’s normal spacing. + +See in “TeX for the Impatient” for advice on how to control TeX’s +treatment of punctuation at the end of sentences. +]], + futurelet = [[ +This command tells TeX to make `token_2` the meaning of +`control sequence` (as would be done with `\let`), and then to process +`token_1` and `token_2` normally. `\futurelet` is useful at the end of +macro definitions because it gives you a way of looking beyond the token +that TeX is about to process before it processes it. +]], + gdef = [[ +This command is equivalent to `\global\def`. +]], + global = [[ +This command makes the following definition or assignment global so that +it becomes effective independent of group boundaries. You can apply a +`\global` prefix to any kind of definition or assignment, including a +macro definition or a register assignment. +]], + globaldefs = [[ +This parameter controls whether or not TeX takes definitions and other +assignments to be global: + +- If `\globaldefs` is zero (as it is by default), a definition is + global if and only if it is preceded by `\global` either explicitly + or implicitly. (The `\gdef` and `\xdef` commands have an implicit + `\global` prefix). + +- If `\globaldefs` is greater than zero, all assignments and + definitions are implicitly prefixed by `\global`. + +- If `\globaldefs` is less than zero, all `\global` prefixes are + ignored. +]], + goodbreak = [[ +This command ends a paragraph and also indicates to TeX that this is a +good place to break the page. +]], + halign = [[ +This command produces a horizontal alignment consisting of a sequence of +rows, where each row in turn contains a sequence of column entries. +TeX adjusts the widths of the column entries to accommodate the widest +one in each column. + +A horizontal alignment can only appear when TeX is in a vertical mode. +We recommend that you first study alignments in general before you +attempt to use this command. + +An alignment consists of a preamble followed by the text to be aligned. +The preamble, which describes the layout of the rows that follow, +consists of a sequence of column templates, separated by ‘`&`’ and ended +by `\cr`. Each row consists of a sequence of column entries, also +separated by ‘`&`’ and ended by `\cr`. Within a template, ‘`#`’ +indicates where TeX should insert the corresponding text of a column +entry. In contrast, `\settabs` uses a fixed implicit template of ‘`#`’, +i.e., it just inserts the text as is. + +TeX typesets each column entry in restricted horizontal mode, i.e., as +the contents of an hbox, and implicitly encloses it in a group. + +The `to` form of this command instructs TeX to make the width of the +alignment be `dimen`, adjusting the space between columns as necessary. +The `spread` form of this command instructs TeX to make the alignment +wider by `dimen` than its natural width. These forms are like the +corresponding forms of `\hbox` . + +See `\tabskip` for an example using the `to` form. +]], + hang = [[ +This command indents the second and subsequent lines of a paragraph by +`\parindent`, the paragraph indentation . Since the first line is +already indented by `\parindent` (unless you’ve cancelled the +indentation with `\noindent`), the entire paragraph appears to be +indented by `\parindent`. +]], + hangafter = [[ +`\hangafter`, `\hangindent` + +These two parameters jointly specify “hanging indentation” for a +paragraph. The hanging indentation indicates to TeX that certain lines +of the paragraph should be indented and the remaining lines should have +their normal width. + +`\hangafter` determines which lines are indented, while `\hangindent` +determines the amount of indentation and whether it occurs on the left +or on the right: + +- Let $n$ be the value of `\hangafter`. If $n < 0$, the first $-n$ + lines of the paragraph will be indented. If $n\ge0$, all but the + first $n$ lines of the paragraph will be indented. + +- Let $x$ be the value of `\hangindent`. If $x\ge0$, the lines will be + indented by $x$ on the left. If $x<0$ the lines will be indented by + $-x$ on the right. + +When you specify hanging indentation, it applies only to the next +paragraph (if you’re in vertical mode) or to the current paragraph (if +you’re in horizontal mode). TeX uses the values of `\hangafter` and +`\hangindent` at the end of a paragraph, when it breaks that paragraph +into lines. + +Unlike most of the other paragraph-shaping parameters, `\hangafter` and +`\hangindent` are reset to their default values at the start of each +paragraph, namely, 1 for `\hangafter` and 0 for `\hangindent`. If +you want to typeset a sequence of paragraphs with hanging indentation, +use `\everypar`. + +If you specify `\hangafter` and `\hangindent` as well as `\parshape`, +TeX ignores the `\hangafter` and `\hangindent`. +]], + hbadness = [[ +`\hbadness`, `\vbadness` + +These parameters specify the thresholds of horizontal and vertical +badness for reporting underfull or overfull boxes. `\hbadness` applies +to hboxes and `\vbadness` applies to vboxes. If the badness of a +constructed box exceeds the threshold, TeX will report an error. If you +raise the thresholds (the plain TeX defaults are both 1000), TeX will +be less likely to complain. Note that the settings of `\hbadness` and +`\vbadness` have no effect on the appearance of your typeset document; +they only affect the error messages that you get. See page 302 of *The +TeXbook* for a precise description of how TeX decides when to complain +about an overfull or underfull box. +]], + hbox = [[ +This command produces an hbox (horizontal box) containing +`horizontal mode material`. The braces around `horizontal mode material` +define a group. TeX doesn’t break the `horizontal mode material` into +lines, since it’s in restricted horizontal mode when it’s assembling the +box. TeX won’t change the size of the box once it’s been produced. + +`\hbox` is often useful when you want to keep some text all on one line. +If your use of `\hbox` prevents TeX from breaking lines in an acceptable +way, TeX will complain about an overfull hbox. + +The width of the hbox depends on the arguments to `\hbox`: + +- If you specify only `horizontal mode material`, the hbox will have + its natural width. + +- If you specify `to` `dimen`, the width of the hbox will be `dimen`. + +- If you specify `spread` `dimen`, the width of the hbox will be its + natural width plus `dimen`, i.e., the hbox will be spread out by + `dimen`. + +The `\hfil` command is useful for filling out an hbox with empty space +when the material in the box isn’t as wide as the width of the box. +]], + hfil = [[ +`\hfill`, `\hfil`, `\vfill`, `\vfil` + +These commands produce infinitely stretchable horizontal and vertical +glue that overwhelms any finite stretch that may be present. `\hfil` and +`\hfill` produce horizontal glue, while `\vfil` and `\vfill` produce +vertical glue. + +`\hfill` is infinitely larger than `\hfil`. If both `\hfill` and `\hfil` +appear in the same box, the `\hfill` will consume all the available +extra space and the `\hfil` will be effectively ignored. `\hfill` can in +turn be overwhelmed by `\hskip 0pt plus 1filll`. The glue produced by +`\hfil` and `\hfill` never shrinks. + +The behavior of `\vfil` and `\vfill` is analogous. +]], + hfilneg = [[ +`\hfilneg`, `\vfilneg` + +These commands cancel the effect of a preceding `\hfil` or `\vfil`. +While `\hfil` and `\vfil` produce infinitely stretchable positive glue, +`\hfilneg` and `\vfilneg` produce infinitely stretchable negative glue. +(Thus, $n$ `\hfilneg`s cancel $n$ `\hfil`s, and similarly for +`\vfilneg`.) The main use of `\hfilneg` and `\vfilneg` is to counteract +the effect of an `\hfil` or `\vfil` inserted by a macro. + +`\hfilneg` and `\vfilneg` have the curious property that if they are the +only infinitely stretchable glue in a box, they produce exactly the same +effect as `\hfil` and `\vfil`. +]], + hfuzz = [[ +`\hfuzz`, `\vfuzz` + +These parameters specify the amount that a box can exceed its natural +size before TeX considers it to be overfull. `\hfuzz` applies to hboxes +and `\vfuzz` applies to vboxes. Plain TeX sets both parameters to +`0.1pt`. +]], + hglue = [[ +`\hglue`, `\vglue` + +The `\hglue` command produces horizontal glue that won’t disappear at a +line break; the `\vglue` command produces vertical glue that won’t +disappear at a page break. In other respects these commands are just +like `\hskip` and `\vskip`. You can use `\vglue` to produce blank space +at the top of a page, e.g., above a title on the first page of a +document, but `\topglue` (next) is usually better for this purpose. +]], + hidewidth = [[ +This command tells TeX to ignore the width of the next column entry in a +horizontal alignment. It’s useful when you have an entry that is longer +than most of the others in the same column, and you’d rather have that +entry stick out of the column than make all the entries in the column +wider. If the `\hidewidth` is at the left of the entry, the entry sticks +out to the left; if the `\hidewidth` is at the right of the entry, the +entry sticks out to the right. +]], + hoffset = [[ +`\hoffset`, `\voffset` + +TeX normally takes the “origin” of a page, that is, the point where it +starts printing, as being one inch down from the top of the page and one +inch to the right of the left end of the page.[1] The values of +`\hoffset` and `\voffset` give the horizontal and vertical offset of the +actual origin from this point. Thus if `\hoffset` and `\voffset` are +both zero, TeX uses its normal origin. + +[1] TeX itself is indifferent to where the origin of the page is, but +this information has to be built into the device drivers + +that convert .dvi files into printable form so that different devices +will yield the same results. +]], + holdinginserts = [[ +If this parameter is greater than 0 when TeX is processing a page +break, TeX will refrain from processing insertions. Setting this +parameter to 1 can be useful when you’re writing an output routine +that needs to reprocess the contents of the page, e.g., an output +routine that uses a value of `\vsize` different from the one used by the +page builder. +]], + hphantom = [[ +`\hphantom`, `\vphantom` + +These commands produce phantom boxes that don’t print anything: + +- `\hphantom` produces a box with the same width as `argument` but + zero height and depth. + +- `\vphantom` produces a box with the same height and depth as + `argument` but zero width. + +Their main purpose is to force a subformula to have a certain minimum +horizontal or vertical dimension. +]], + hrule = [[ +`\hrule`, `\vrule` + +The `\hrule` command produces a horizontal rule; the `\vrule` command +produces a vertical rule. You can specify any or all of the width, +height, and depth of the rule—TeX supplies default values for those that +you omit. You can give the dimensions of the rule in any order; the +forms listed above show just two of the possible combinations. You can +even give a dimension of a given kind more than once—if you do, the last +one is the one that counts. + +If you don’t specify the width of a horizontal rule, the rule is +extended horizontally to the boundaries of the innermost box or +alignment that contains the rule. If you don’t specify the height of a +horizontal rule, it defaults to `0.4pt`; if you don’t specify the depth +of a horizontal rule, it defaults to `0pt`. + +If you don’t specify the width of a vertical rule, it defaults to +`0.4pt`. If you don’t specify the height or the depth of a vertical +rule, the rule is extended to the boundary of the innermost box or +alignment that contains the rule. + +TeX treats a horizontal rule as an inherently vertical item and a +vertical rule as an inherently horizontal item. Thus a horizontal rule +is legal only in a vertical mode, while a vertical rule is legal only in +a horizontal mode. + +If this seems surprising, visualize it—a horizontal rule runs from left +to right and separates vertical items in a sequence, while a vertical +rule runs up and down and separates horizontal items in a sequence. +]], + hsize = [[ +This parameter specifies the current line length. See in “TeX for the +Impatient” for a more complete explanation. +]], + hskip = [[ +`\hskip`, `\vskip` + +These commands produce horizontal and vertical glue respectively. In the +simplest and most common case when only `dimen_1` is present, `\hskip` +skips to the right by `dimen_1` and `\vskip` skips down the page by +`dimen_1`. More generally, these commands produce glue whose natural +size is `dimen_1`, whose stretch is `dimen_2`, and whose shrink is +`dimen_3`. Either the `plus` `dimen_2`, the `minus ``dimen_3`, or both +can be omitted. If both are present, the `plus` must come before the +`minus`. An omitted value is taken to be zero. Any of the `dimen`s can +be negative. + +You can use `\hskip` in math mode, but you can’t use `mu` units for any +of the dimensions. If you want `mu` units, use `\mskip` instead. +]], + hss = [[ +`\hss`, `\vss` + +These commands produce horizontal and vertical glue that is both +infinitely stretchable and infinitely shrinkable. The glue can shrink to +a negative distance, producing the effect of backspacing along a line +(for `\hss`) or moving back up a page (for `\vss`). +]], + ht = [[ +`\dp`, `\ht`, `\wd` + +These parameters refer to the height, depth, and width respectively of +box register `register`. You can use them to find out the dimensions of +a box. You can also change the dimensions of a box, but it’s a tricky +business; if you want to be adventurous you can learn all about it from +pages 388–389 of *The TeXbook*. +]], + hyphenchar = [[ +TeX doesn’t necessarily use the ‘-’ character at hyphenation points. +Instead, it uses the `\hyphenchar` of the current font, which is usually +‘-’ but need not be. If a font has a negative `\hyphenchar` value, +TeX won’t hyphenate words in that font. + +Note that `font` is a control sequence that names a font, not a +`fontname` that names font files. Beware: an assignment to `\hyphenchar` +is *not* undone at the end of a group. If you want to change +`\hyphenchar` locally, you’ll need to save and restore its original +value explicitly. +]], + hyphenpenalty = [[ +This parameter specifies the penalty that TeX attaches to a breakpoint +at an implicit hyphen. Implicit hyphens can come from TeX’s hyphenation +dictionary or from discretionary hyphens that you’ve inserted with +`\-` . + +Increasing this parameter has the effect of discouraging TeX from +hyphenating words. Plain TeX sets `\hyphenpenalty` to 50. +]], + i = [[ +`\i` (ı), `\j` (ȷ) + +These commands produce dotless versions of the letters ‘i’ and ‘j’. You +should use them instead of the ordinary ‘i’ and ‘j’ when you are putting +an accent above those letters in ordinary text. + +Use the `\imath` and `\jmath` commands for dotless ‘i’s and ‘j’s in math +formulas. +]], + ialign = [[ +This command behaves just like `\halign`, except that it first sets the +`\tabskip` glue to zero and sets `\everycr` empty. +]], + ["if"] = [[ +=1em This command tests if `token_1` and `token_2` have the same +character code, independent of their category codes. Before performing +the test, TeX expands tokens following the `\if` until it obtains two +tokens that can’t be expanded further. These two tokens become `token_1` +and `token_2`. The expansion includes replacing a control sequence +`\let` equal to a character token by that character token. A control +sequence that can’t be further expanded is considered to have character +code 256. +]], + ifcat = [[ +This command tests if `token_1` and `token_2` have the same category +code. Before performing the test, TeX expands tokens following the +`\ifcat` until it obtains two tokens that can’t be expanded further. +These two tokens become `token_1` and `token_2`. The expansion includes +replacing a control sequence `\let` equal to a character token by that +character token. A control sequence that can’t be further expanded is +considered to have category code 16. +]], + ifdim = [[ +This command tests if `dimen_1` and `dimen_2` satisfy `relation`, which +must be either ‘`<`’, ‘`=`’, or ‘`>`’. The dimensions can be constants +such as `1in`, dimension registers such as `\dimen6`, or dimension +parameters such as `\parindent`. Before performing the test, TeX expands +tokens following the `\ifdim` until it obtains a sequence of tokens +having the form `dimen_1` `relation` `dimen_2`, followed by a token that +can’t be part of `dimen_2`. +]], + ifeof = [[ +This command tests an input stream for end of file. It is true if input +stream `number` has not been opened, or has been opened and the +associated file has been entirely read in (or doesn’t exist). +]], + ifhbox = [[ +`\ifhbox`, `\ifvbox`, `\ifvoid` + +These commands test the contents of the box register numbered +`register`. Let `register` be $n$. Then: + +- `\ifhbox` is true if `\box`$\,n$ is an hbox. + +- `\ifvbox` is true if `\box`$\,n$ is an vbox. + +- `\ifvoid` is true if `\box`$\,n$ is void, i.e, doesn’t have a box in + it. +]], + ifhmode = [[ +`\ifhmode`, `\ifinner`, `\ifmmode`, `\ifvmode` + +These commands test what mode TeX is in: + +- `\ifhmode` is true if TeX is in ordinary or restricted horizontal + mode. + +- `\ifvmode` is true if TeX is in ordinary or internal vertical mode. + +- `\ifmmode` is true if TeX is in text math or display math mode. + +- `\ifinner` is true if TeX is in an “internal” mode: restricted + horizontal, internal vertical, or text math. +]], + ifnum = [[ +This command tests if `number_1` and `number_2` satisfy `relation`, +which must be either ‘`<`’, ‘`=`’, or ‘`>`’. The numbers can be +constants such as `127`, count registers such as `\pageno` or +`\count22`, or numerical parameters such as `\hbadness`. Before +performing the test, TeX expands tokens following the `\ifnum` until it +obtains a sequence of tokens having the form `number_1` `relation` +`number_2`, followed by a token that can’t be part of `number_2`. +]], + ifodd = [[ +This command tests if `number` is odd. Before performing the test, +TeX expands tokens following the `\ifodd` until it obtains a sequence of +tokens having the form `number`, followed by a token that can’t be part +of `number`. +]], + iftrue = [[ +`\iffalse`, `\iftrue` + +These commands are equivalent to tests that are always true or always +false. The main use of these commands is in defining macros that keep +track of the result of a test. +]], + ifx = [[ +This command tests if `token_1` and `token_2` agree. Unlike `\if` and +`\ifcat`, `\ifx` does *not* expand the tokens following `\ifx`, so +`token_1` and `token_2` are the two tokens immediately after `\ifx`. +There are three cases: + +1. If one token is a macro and the other one isn’t, the tokens don’t + agree. + +2. If neither token is a macro, the tokens agree if: + + 1. both tokens are characters (or control sequences denoting + characters) and their character codes and category codes agree, + or + + 2. both tokens refer to the same TeX command, font, etc. + +3. If both tokens are macros, the tokens agree if: + + 1. their “first level” expansions, i.e., their replacement texts, + are identical, and + + 2. they have the same status with respect to `\long` and `\outer`. + + Note in particular that *any two undefined control sequences agree*. + +This test is generally more useful than `\if`. +]], + ignorespaces = [[ +This command tells TeX to read and expand tokens until it finds one that +is not a space token, ignoring any space tokens that it finds on the +way. `\ignorespaces` is often useful at the end of a macro as a way of +making the macro insensitive to any spaces or ends of line that might +follow calls on it. (An empty line after `\ignorespaces` still produces +a `\par` token, however.) +]], + immediate = [[ +This command should precede an `\openout`, `\closeout`, or `\write`. + +It tells TeX to perform the specified file operation without delay. +]], + indent = [[ +If TeX is in vertical mode, as it is after ending a paragraph, this +command inserts the `\parskip` interparagraph glue, puts TeX into +horizontal mode, starts a paragraph, and indents that paragraph by +`\parindent`. If TeX is already in horizontal mode, this command merely +produces a blank space of width `\parindent`. Two `\indent`s in a row +produce two indentations. + +As the example below shows, an `\indent` at a point where TeX would +start a paragraph anyway is redundant. When TeX is in vertical mode and +sees a letter or some other inherently horizontal command, it starts a +paragraph by switching to horizontal mode, doing an `\indent`, and +processing the horizontal command. +]], + infty = [[ +`\Im` (ℑ), `\Re` (ℜ), `\Vert` (‖), `\aleph` (ℵ), `\angle` (∠), +`\backslash` (∖), `\bot` (⊥), `\clubsuit` (♣), `\diamondsuit` (♢), +`\ell` (ℓ), `\emptyset` (∅), `\exists` (∃), `\flat` (♭), `\forall` (∀), +`\hbar` (ℏ), `\heartsuit` (♡), `\imath` (𝚤), `\infty` (∞), `\jmath` (𝚥), +`\lnot` (¬), `\nabla` (∇), `\natural` (♮), `\neg` (¬), `\partial` (∂), +`\prime`, `\sharp` (♯), `\spadesuit` (♠), `\surd`, `\top` (⊤), +`\triangle` (△), `\vert`, `\wp` (℘) + +These commands produce various symbols. They are called “ordinary +symbols” to distinguish them from other classes of symbols such as +relations. You can only use an ordinary symbol within a math formula, so +if you need an ordinary symbol within ordinary text you must enclose it +in dollar signs (`$`). + +The commands `\imath` and `\jmath` are useful when you need to put an +accent on top of an ‘$i$’ or a ‘$j$’. + +An apostrophe (`'`) is a short way of writing a superscript `\prime`. +(The `\prime` command by itself generates a big ugly prime.) + +The `\|` and `\Vert` commands are synonymous, as are the `\neg` and +`\lnot` commands. + +The `\vert` command produces the same result as ‘`|`’. + +The symbols produced by `\backslash`, `\vert`, and `\Vert` are +delimiters. These symbols can be produced in larger sizes by using +`\bigm` et al. +]], + input = [[ +This command tells TeX to read its input from file `filename`. When that +file is exhausted, TeX returns to reading from its previous input +source. You can nest input files to any level you like (within reason). + +When you’re typesetting a large document, it’s usually a good idea to +structure your main file as a sequence of `\input` commands that refer +to the subsidiary parts of the document. That way you can process the +individual parts easily as you’re working on drafts. It’s also a good +practice to put all of your macro definitions into a separate file and +summon that file with an `\input` command as the first action in your +main file. + +TeX uses different rules for scanning file names than it does for +scanning tokens in general). If your implementation expects file names +to have extensions (usually indicated by a preceding dot), then +TeX provides a default extension of `.tex`. +]], + inputlineno = [[ +This command yields a number (not a string) giving the line number of +the current line, defined to be the number that would appear in an error +message if an error occurred at this point. +]], + insert = [[ +This primitive command provides the underlying mechanism for +constructing insertions, but it is hardly ever used outside of a macro +definition. The definitions of the `\footnote`, `\vfootnote`, +`\topinsert`, `\midinsert`, and `\pageinsert` commands are all built +around `\insert`. + +When you design insertions for a document, you should assign a different +integer code[1] $n$ to each kind of insertion, using the `\newinsert` +command to obtain the integer codes. The `\insert` command itself +appends the `vertical mode material` to the current horizontal or +vertical list. Your output routine is responsible for moving the +inserted material from where it resides in `\box`$\,n$ to an output +page. + +TeX groups together all insertions having the same code number. Each +insertion code $n$ has four registers associated with it: + +- `\box`$\,n$ is where TeX accumulates the material for insertions + with code $n$. When TeX breaks a page, it puts into `\box`$\,n$ as + much insertion $n$ material as will fit on the page. Your output + routine should then move this material to the actual page. You can + use `\ifvoid` to test if there is any material in `\box`$\,n$. If + not all the material fits, TeX saves the leftovers for the next + page. + +- `\count`$\,n$ is a magnification factor $f.$ When TeX is computing + the vertical space occupied on the page by insertion $n$ material, + it multiplies the vertical extent of this material by $f/1000$. Thus + you would ordinarily set $f$ to 500 for a double-column insertion + and to 0 for a marginal note. + +- `\dimen`$\,n$ specifies the maximum amount of insertion $n$ material + that TeX will put on a single page. + +- `\skip`$\,n$ specifies extra space that TeX allocates on the page if + the page contains any insertion $n$ material. This space is in + addition to the space occupied by the insertion itself. For example, + it would account for the space on a page above the footnotes (if + there are any). + +TeX sets `\box`$\,n$, and you should set the other three registers so +that TeX can correctly compute the vertical space required by the +insertion. See pages 122–125 of *The TeXbook* for further details of how +TeX processes this command and of how insertions interact with page +breaking. + +[1] *The TeXbook* uses the term “class” for a code. We use a different +term to avoid confusion with the other meaning of “class”. +]], + insertpenalties = [[ +This parameter contains the sum of certain penalties that +TeX accumulates as it is placing insertions onto the current page. These +penalties are incurred when TeX is processing an `\insert` command and +discovers that a previous insertion of the same kind on this page has +been split, leaving part of it for subsequent pages. See pages 123–125 +of *The TeXbook* for the details of this calculation. + +`\insertpenalties` has an entirely different meaning during an + +output routine—it’s the number of insertions that have been seen but +that don’t fit on the current page (see page 125 of *The TeXbook*). +]], + interlinepenalty = [[ +This parameter specifies the penalty for breaking a page between the +lines of a paragraph. By setting it to 10000 you can force all page +breaks to occur between paragraphs, provided that the pages have enough +stretch so that TeX can still compose them decently. Plain TeX leaves +`\interlinepenalty` at 0. +]], + item = [[ +`\itemitem`, `\item` + +These commands are useful for creating itemized lists. The entire +paragraph following `argument` is indented by `\parindent` + +(for `\item`) or by `2\parindent` (for `\itemitem`). (See in “TeX for +the Impatient” for an explanation of `\parindent`.) Then `argument`, +followed by an en space, is placed just to the left of the text of the +first line of the paragraph so that it falls within the paragraph +indentation as specified by `\parindent`. + +If you want to include more than one paragraph in an item, put `\item{}` +in front of the additional paragraphs. +]], + itfam = [[ +`\bffam`, `\itfam`, `\slfam`, `\ttfam` + +These commands define type families for use in math mode. Their +principal use is in defining the `\it`, `\bf`, `\sl`, and `\tt` commands +so that they work in math mode. +]], + jobname = [[ +This command produces the base name of the file with which TeX was +invoked. For example, if your main input file is `hatter.tex`, +`\jobname` will expand to `hatter`. `\jobname` is most useful when +you’re creating an auxiliary file to be associated with a document. +]], + jot = [[ +This parameter defines a distance that is equal to three points (unless +you change it). The `\jot` is a convenient unit of measure for opening +up math displays. +]], + kern = [[ +The effect of this command depends on the mode that TeX is in when it +encounters it: + +- In a horizontal mode, TeX moves its position to the right (for a + positive kern) or to the left (for a negative kern). + +- In a vertical mode, TeX moves its position down the page (for a + positive kern) or up the page (for a negative kern). + +Thus a positive kern produces empty space while a negative kern causes +TeX to back up over something that it’s already produced. This notion of +a kern is different from the notion of a kern in some computerized +typesetting systems—in TeX, positive kerns push two letters *apart* +instead of bringing them closer together. + +A kern is similar to glue, except that (a) a kern can neither stretch +nor shrink, and (b) TeX will only break a line or a page at a kern if +the kern is followed by glue and is not part of a math formula. If +TeX finds a kern at the end of a line or a page, it discards the kern. +If you want to get the effect of a kern that never disappears, use +`\hglue` or `\vglue`. + +You can use `\kern` in math mode, but you can’t use `mu` units for +`dimen`. If you want `mu` units, use `\mkern` instead. +]], + language = [[ +Different languages have different sets of hyphenation rules. This +parameter determines the set of hyphenation rules that TeX uses. By +changing `\language` you can get TeX to hyphenate portions of text or +entire documents according to the hyphenation rules appropriate to a +particular language. + +Your local information about TeX will tell you if any additional sets of +hyphenation rules are available (besides the ones for English) and what +the appropriate values of `\language` are. The default value of +`\language` is 0. + +TeX sets the current language to 0 at the start of every paragraph, +and compares `\language` to the current language whenever it adds a +character to the current paragraph. If they are not the same, TeX adds a +whatsit indicating the language change. This whatsit is the clue in +later processing that the language rules should change. +]], + lastkern = [[ +`\lastbox`, `\lastkern`, `\lastpenalty`, `\lastskip` + +These control sequences yield the value of the last item on the current +list. They aren’t true commands because they can only appear as part of +an argument. If the last item on the list isn’t of the indicated type, +they yield a zero value (or an empty box, in the case of `\lastbox`). +For example, if the last item on the current list is a kern, `\lastkern` +yields the dimension of that kern; if it isn’t a kern, it yields a +dimension of 0. + +Using `\lastbox` has the additional effect of removing the last box from +the list. If you want the original `\lastbox` to remain on the list, you +have to add a copy of it to the list. `\lastbox` is not permitted in a +math list or in the main vertical list. + +These control sequences are most useful after macro calls that might +have inserted entities of the indicated kinds. +]], + lbrace = [[ +`\langle` (⟨), `\lbrace`, `\lbrack`, `\lceil` (⌈), `\lfloor` (⌊), +`\rangle` (⟩), `\rbrace`, `\rbrack`, `\rceil` (⌉), `\rfloor` (⌋) + +These commands produce left and right delimiters. Mathematicians use +delimiters to indicate the boundaries between parts of a formula. Left +delimiters are also called “openings”, and right delimiters are also +called “closings”. Openings and closings are two of TeX’s classes of +math symbols. TeX puts different amounts of space around different +classes of math symbols. You might expect the space that TeX puts around +openings and closings to be symmetrical, but in fact it isn’t. + +Some left and right delimiters have more than one command that you can +use to produce them: + +- ‘$\{$’ (`\lbrace` and `\{`) + +- ‘$\}$’ (`\rbrace` and `\}`) + +- ‘$[$’ (`\lbrack` and ‘`[`’) + +- ‘$]$’ (`\rbrack` and ‘`]`’) + +You can also use the left and right bracket characters (in either form) +outside of math mode. + +In addition to these commands, TeX treats ‘`(`’ as a left delimiter and +‘`)`’ as a right delimiter. + +You can have TeX choose the size for a delimiter by using `\left` and +`\right`. Alternatively, you can get a delimiter of a specific size by +using one of the `\big`$x$ commands). +]], + lccode = [[ +`\lccode`, `\uccode` + +The `\lccode` and `\uccode` values for the 256 possible input +characters specify the correspondence between the lowercase and +uppercase forms of letters. These values are used by the `\lowercase` +and `\uppercase` commands respectively and by TeX’s hyphenation +algorithm. + +TeX initializes the values of `\lccode` and `\uccode` as follows: + +- The `\lccode` of a lowercase letter is the ASCII code for that + letter. + +- The `\lccode` of an uppercase letter is the ASCII code for the + corresponding lowercase letter. + +- The `\uccode` of an uppercase letter is the ASCII code for that + letter. + +- The `\uccode` of a lowercase letter is the ASCII code for the + corresponding uppercase letter. + +- The `\lccode` and `\uccode` of a nonletter are both zero. + +Most of the time there’s no reason to change these values, but you might +want to change them if you’re using a language that has more letters +than English. +]], + ldots = [[ +`\cdots` (⋯), `\ldots` (…) + +These commands produce three dots in a row. For `\ldots`, the dots are +on the baseline; for `\cdots`, the dots are centered with respect to the +axis). +]], + leaders = [[ +`\cleaders`, `\leaders`, `\xleaders` + +These commands produce leaders, i.e., they fill a horizontal or vertical +space with copies of a pattern . The `box` or `rule` specifies a leader, +i.e., a single copy of the pattern, while the `skip command` specifies a +window to be filled with a row or a column of the leaders. The pattern +is repeated as many times as will fit into the window. If `skip command` +is a horizontal skip, the window contains a row of leaders and TeX must +be in a horizontal mode; if `skip command` is a vertical skip, the +window contains a column of leaders and TeX must be in a vertical mode. + +The commands differ in how they arrange the repeated pattern in the +space and where they put any leftover space: + +- For `\leaders`, TeX aligns a row of leaders with the left end of the + innermost box $B$ that is to contain the result of the `\leaders` + command. It aligns a column of leaders with the top of $B$. Those + leaders that fall entirely within the window are retained. Any + leftover space at the top and bottom of the window is left empty. + +- For `\cleaders`, the leaders are centered within the window. + +- For `\xleaders` the pattern is uniformly distributed throughout the + window. If the leftover space is $l$ and the leader is repeated $n$ + times, TeX puts space of width or height $l/(n+1)$ between adjacent + leaders and at the two ends (left and right or top and bottom) of + the leaders. +]], + left = [[ +`\left`, `\right` + +These commands must be used together in the pattern: + +This construct causes TeX to produce `subformula`, enclosed in the +delimiters `delim_1` and `delim_2`. The vertical size of the delimiter +is adjusted to fit the vertical size (height plus depth) of +`subformula`. `delim_1` and `delim_2` need not correspond. For instance, +you could use ‘`]`’ as a left delimiter and ‘`(`’ as a right delimiter +in a single use of `\left` and `\right`. + +`\left` and `\right` have the important property that they define a +group, i.e., they act like left and right braces. This grouping property +is particularly useful when you put `\over` or a related command between +`\left` and `\right`, since you don’t need to put braces around the +fraction constructed by `\over`. + +If you want a left delimiter but not a right delimiter, you can use +‘`.`’ in place of the delimiter you don’t want and it will turn into +empty space (of width `\nulldelimiterspace`). +]], + leftarrow = [[ +`\Downarrow` (⇓), `\Leftarrow` (⇐), `\Leftrightarrow` (⇔), +`\Longleftarrow` (⇐), `\Longleftrightarrow` (⇔), `\Longrightarrow` (⇒), +`\Rightarrow` (⇒), `\Uparrow` (⇑), `\Updownarrow` (⇕), `\downarrow` (↓), +`\gets` (←), `\hookleftarrow` (↩), `\hookrightarrow` (↪), `\leftarrow` +(←), `\leftharpoondown` (↽), `\leftharpoonup` (↼), `\leftrightarrow` +(↔), `\longleftarrow` (←), `\longleftrightarrow` (↔), `\longmapsto` (↦), +`\longrightarrow` (→), `\mapsto` (↦), `\nearrow` (↗), `\nwarrow` (↖), +`\rightarrow` (→), `\rightharpoondown` (⇁), `\rightharpoonup` (⇀), +`\rightleftharpoons` (⇌), `\searrow` (↘), `\swarrow` (↙), `\to` (→), +`\uparrow` (↑), `\updownarrow` (↕) + +These commands provide arrows of different kinds. They are classified as +relations. The vertical arrows in the list are also delimiters, so you +can make them larger by using `\big` et al. + +The command `\iff` differs from `\Longleftrightarrow` in that it +produces extra space to the left and right of the arrow. + +You can place symbols or other legends on top of a left or right arrow +with `\buildrel`. +]], + leftarrowfill = [[ +`\leftarrowfill`, `\rightarrowfill` + +These commands fill the enclosing horizontal space with left-pointing or +right-pointing arrows. +]], + lefthyphenmin = [[ +`\lefthyphenmin`, `\righthyphenmin` + +These parameters specify the smallest word fragments that TeX allows at +the left and at the right end of a hyphenated word. Plain TeX defaults +them to 2 and 3 respectively; these are the recommended values for +English. +]], + leftskip = [[ +`\leftskip`, `\rightskip` + +These parameters tell TeX how much glue to place at the left and at the +right end of each line of the current paragraph. We’ll just explain how +`\leftskip` works since `\rightskip` is analogous. + +You can increase the left margin by setting `\leftskip` to a fixed +nonzero dimension. If you give `\leftskip` some stretch, you can produce +ragged left text, i.e., text that has an uneven left margin. + +Ordinarily, you should enclose any assignment to `\leftskip` in a group +together with the affected text in order to keep its effect from +continuing to the end of your document. However, it’s pointless to +change `\leftskip`’s value inside a group that is in turn contained +within a paragraph—the value of `\leftskip` at the *end* of a paragraph +is what determines how TeX breaks the paragraph into lines. +]], + let = [[ +This command causes `control sequence` to acquire the current meaning of +`token`. Even if you redefine `token` later, the meaning of +`control sequence` will not change. Although `token` is most commonly a +control sequence, it can also be a character token. +]], + lgroup = [[ +`\lgroup`, `\rgroup` + +These commands produce large left and right parentheses that are defined +as opening and closing delimiters. The smallest available size for these +delimiters is `\Big`. If you use smaller sizes, you’ll get weird +characters. +]], + limits = [[ +In text style, TeX normally places limits after a large operator. This +command tells TeX to place limits above and below a large operator +rather than after it. + +If you specify more than one of `\limits`, `\nolimits`, and +`\displaylimits`, the last command rules. +]], + line = [[ +This command produces an hbox containing `argument`. The hbox is exactly +as wide as the current line, i.e., it extends from the right margin to +the left margin. +]], + linepenalty = [[ +This parameter specifies the penalty that TeX assesses for each line +break when it is breaking a paragraph into lines. The penalty is +independent of where the line break occurs. Increasing the value of this +parameter causes TeX to try harder to set a paragraph with a minimum +number of lines, even at the cost of other aesthetic considerations such +as avoiding overly tight interword spacing. Demerits are in units of +badness squared, so you need to assign a rather large value to this +parameter (in the thousands) for it to have any effect. Plain TeX sets +`\linepenalty` to 10. +]], + llap = [[ +`\llap`, `\rlap` + +These commands enable you to produce text that overlaps whatever happens +to be to the left or to the right of the current position. `\llap` +backspaces by the width of `argument` and then typesets `argument`. +`\rlap` is similar, except that it typesets `argument` first and then +backspaces. `\llap` and `\rlap` are useful for placing text outside of +the current margins. Both `\llap` and `\rlap` do their work by creating +a box of zero width. + +You can also use `\llap` or `\rlap` to construct special characters by +overprinting, but don’t try it unless you’re sure that the characters +you’re using have the same width (which is the case for a monospaced +font such as `cmtt10`, the Computer Modern 10-point typewriter font). +]], + long = [[ +This command is used as a prefix to a macro definition. It tells +TeX that the arguments to the macro are permitted to include `\par` +tokens, which normally indicate the end of a paragraph. + +If TeX tries to expand a macro defined without `\long` and any of the +macro’s arguments include a `\par` token, TeX will complain about a +runaway argument. The purpose of this behavior is to provide you with +some protection against unterminated macro arguments. `\long` gives you +a way of bypassing the protection. +]], + loop = [[ +`\loop`, `\repeat` + +These commands provide a looping construct for TeX. Here $\alpha$ and +$\beta$ are arbitrary sequences of commands and is any of the +conditional tests described in “TeX for the Impatient”, Conditional +tests,conds. The `\repeat` replaces the `\fi` corresponding to the test, +so you must not write an explicit `\fi` to terminate the test. Nor, +unfortunately, can you associate an `\else` with the test. If you want +to use the test in the opposite sense, you need to rearrange the test or +define an auxiliary test with `\newif` (see above) and use that test in +the sense you want (see the second example below). + +TeX expands `\loop` as follows: + +1. $\alpha$ is expanded. + +2. is performed. If the result is false, the loop is terminated. + +3. $\beta$ is expanded. + +4. The cycle is repeated. +]], + looseness = [[ +This parameter gives you a way to change the total number of lines in a +paragraph from what they optimally would be. `\looseness` is so named +because it’s a measure of how loose the paragraph is, i.e., how much +extra space there is in it. + +Normally, `\looseness` is 0 and TeX chooses line breaks in its usual +way. But if `\looseness` is, say, 3, TeX does the following: + +1. It chooses line breaks normally, resulting in a paragraph of $n$ + lines. + +2. It discards these line breaks and tries to find a new set of line + breaks that gives the paragraph $n+3$ lines. (Without the previous + step, TeX wouldn’t know the value of $n$.) + +3. If the previous attempt results in lines whose badness exceeds + `\tolerance`, + + it tries to get $n+2$ lines—and if that also fails, $n+1$ lines, and + finally $n$ lines again. + +Similarly, if looseness is $-n$, TeX attempts to set the paragraph with +$n$ fewer lines than normal. The easiest way for TeX to make a paragraph +one line longer is to put a single word on the excess line. You can +prevent this by putting a tie between the last two words of the +paragraph. + +Setting `\looseness` is the best way to force a paragraph to occupy a +given number of lines. Setting it to a negative value is useful when +you’re trying to increase the amount of text you can fit on a page. +Similarly, setting it to a positive value is useful when you’re trying +to decrease the amount of text on a page. + +TeX sets `\looseness` to 0 when it ends a paragraph, after breaking +the paragraph into lines. If you want to change the looseness of several +paragraphs, you must do it individually for each one or put the change +into `\everypar` . +]], + lower = [[ +`\lower`, `\raise` + +These commands move `box` up or down by `dimen` (which can be negative). +You can only apply `\raise` and `\lower` to a box that’s in a horizontal +list. +]], + lowercase = [[ +`\lowercase`, `\uppercase` + +These commands convert the letters in `token list`, i.e., those tokens +with category code 11, to their lowercase and uppercase forms. The +conversion of a letter is defined by its `\lccode` (for lowercase) or +`\uccode` (for uppercase) table value. Tokens in the list that are not +letters are not affected—even if the tokens are macro calls or other +commands that expand into letters. +]], + lq = [[ +`\P` (¶), `\S` (§), `\copyright` (©), `\dag`, `\ddag`, `\lbrack`, `\lq` +(‘), `\rbrack`, `\rq` (’) + +These commands produce various special characters and marks. The first +five commands are necessary because TeX by default attaches special +meanings to the characters (`#`, `$`, `%`, `&`, `_`). You needn’t be in +math mode to use these commands. + +You can use the dollar sign in the Computer Modern italic fonts to get +the pound sterling symbol, as shown in the example below. +]], + magnification = [[ +`\magnification`, `\mag` + +An assignment to `\magnification` establishes the “scale factor” $f$ +that determines the magnification ratio of your document . The +assignment to `\magnification` must occur before the first page of your +document has been shipped out. + +The assignment sets $f$ to `number` and also sets `\hsize` and `\vsize` + +respectively to `6.5true in` and `8.9true in`, the values appropriate +for an $8 \frac1/2$- by-11-inch page. $f$ must be between 0 and +32768. The magnification ratio of the document is $f/1000$. A scale +factor of 1000 provides unit magnification, i.e., it leaves the size +of your document unchanged. It’s customary to use powers of $1.2$ as +scale factors, and most libraries of fonts are based on such factors. +You can use the `\magstep` and `\magstephalf` commands to specify +magnifications by these factors. + +`\magnification` is not a parameter. You can’t use it to *retrieve* the +scale factor. If you write something like `\dimen0 = \magnification`, +TeX will complain about it. + +The `\mag` parameter contains the scale factor. Changing the value of +`\mag` rescales the page dimensions, which is not usually what you want. +Therefore it’s usually better to change the magnification by assigning +to `\magnification` rather than to `\mag`. +]], + magstep = [[ +This command expands to the magnification ratio needed to magnify +everything in your document (other than `true` dimensions) by $1.2^r$, +where $r$ is the value of `number`. `number` must be between 0 and +5. +]], + magstephalf = [[ +This command expands to the magnification ratio needed to magnify +everything in your document (other than `true` dimensions) by +$\sqrt{1.2}$, i.e., halfway between 1 and $1.2$. +]], + mark = [[ +This command causes TeX to append a mark containing `mark text` to +whatever list it is currently constructing. Generally you shouldn’t use +`\mark` within an “inner” construct such as a math formula or a box +you’ve built with an `\hbox`, `\vbox`, or `\vtop` command, because +TeX won’t see the mark when it’s constructing the main box of the page. +But if you use `\mark` in ordinary horizontal mode or directly in an +hbox that’s part of the main vertical list, the mark migrates out to the +main vertical list. See pages 259–260 of *The TeXbook* for examples +showing how `\mark` can be used. +]], + mathaccent = [[ +This command tells TeX to typeset a math accent whose family and +character code are given by `mathcode`. (TeX ignores the class of the +mathcode.) See Appendix G of *The TeXbook* for the details of how +TeX positions such an accent. The usual way to use `\mathaccent` is to +put it in a macro definition that gives a name to a math accent. +]], + mathchar = [[ +This command produces the math character whose class, family, and font +position are given by `mathcode`. It is only legal in math mode. +]], + mathchardef = [[ +This command defines `control sequence` as a math character with the +given `mathcode`. The control sequence will only be legal in math mode. +]], + mathchoice = [[ +This command tells TeX to typeset one of the subformulas `math_1`, +`math_2`, `math_3`, or `math_4`, making its choice according to the +current style. That is, if TeX is in display style it sets the +`\mathchoice` as `math_1`; in text style it sets it as `math_2`; in +script style it sets it as `math_3`; and in scriptscript style it sets +it as `math_4`. +]], + mathcode = [[ +This table entry contains the mathcode of the character whose ASCII code +is `charcode` . The mathcode specifies that character’s interpretation +in math mode. +]], + mathinner = [[ +This command tells TeX to treat the construct that follows as an “inner +formula”, e.g., a fraction, for spacing purposes. It resembles the class +commands given just above. +]], + mathord = [[ +`\mathbin`, `\mathclose`, `\mathopen`, `\mathop`, `\mathord`, +`\mathpunct`, `\mathrel` + +These commands tell TeX to treat the construct that follows as belonging +to a particular class (see page 154 of *The TeXbook* for the definition +of the classes). They are listed here in the order of the class numbers, +from 0 to 6. Their primary effect is to adjust the spacing around +the construct to be whatever it is for the specified class. +]], + mathpalette = [[ +This command provides a convenient way of producing a math construct +that works in all four styles. To use it, you’ll normally need to define +an additional macro, which we’ll call `\build`. The call on +`\mathpalette` should then have the form `\mathpalette`||`argument`. + +`\build` tests what style TeX is in and typesets `argument` accordingly. +It should be defined to have two parameters. When you call +`\mathpalette`, it will in turn call `\build`, with `#1` being a command +that selects the current style and `#2` being `argument`. Thus, within +the definition of `\build` you can typeset something in the current +style by preceding it with ‘`#1`’. See page 360 of *The TeXbook* for +examples of using `\mathpalette` and page 151 of *The TeXbook* for a +further explanation of how it works. +]], + mathstrut = [[ +This command produces a phantom formula whose width is zero and whose +height and depth are the same as those of a left parenthesis. +`\mathstrut` is in fact defined as ‘`\vphantom(`’. Its main use is for +getting radicals, underbars, and overbars to line up with other +radicals, underbars, and overbars in a formula. It is much like +`\strut`, except that it adjusts itself to the different styles that can +occur in math formulas. +]], + mathsurround = [[ +This parameter specifies the amount of space that TeX inserts before and +after a math formula in text mode (i.e., a formula surrounded by single +`$`’s). See page 162 of *The TeXbook* for further details about its +behavior. Plain TeX leaves `\mathsurround` at `0pt`. +]], + maxdeadcycles = [[ +If the value of `\deadcycles` exceeds the value of `\maxdeadcycles`, +TeX assumes that the output routine has gotten into a loop. TeX then +complains and runs its own simple output routine, equivalent to +`\shipout!allowbreak\box255`, that is likely to break the loop. Plain +TeX sets `\maxdeadcycles` to 25. +]], + maxdepth = [[ +This parameter specifies the maximum depth of the bottom box on a page. +It is related to `\boxmaxdepth`. If the depth of the bottom box on a +page exceeds `\maxdepth`, TeX moves the box’s reference point down so +that it’s `\maxdepth` from the bottom of that box. Without this +adjustment, the bottom box on a page could extend well into the bottom +margin or even off the page entirely. Plain TeX sets `\maxdepth` to +`4pt`. +]], + maxdimen = [[ +This control sequence yields a `dimen` that is the largest dimension +acceptable to TeX (nearly 18 feet). It is not a true command because it +can only appear as part of an argument to another command. +]], + meaning = [[ +This command produces the meaning of `token`. It is useful for +diagnostic output. You can use the `\the` command in a similar way to +get information about the values of registers and other TeX entities. +]], + message = [[ +`\errmessage`, `\message` + +These commands display the message given by `token list` on your +terminal and also enter it into the log. Any macros in the message are +expanded, but no commands are executed. This is the same rule that +TeX uses for `\edef`. + +For `\errmessage`, TeX pauses in the same way that it does for one of +its own error messages and displays the `\errhelp` tokens if you ask for +help. + +You can generate multiline messages by using the `\newlinechar` +character. +]], + mkern = [[ +This command produces a kern, i.e., blank space, of width `mudimen`. The +kern is measured in mathematical units, which vary according to the +style. Aside from its unit of measurement, this command behaves just +like `\kern` does in horizontal mode. +]], + month = [[ +TeX sets this parameter to the current month. It is a number between 1 +and 12. `\month` is set at the beginning of your run (see the comments +on `\time` above). +]], + moveleft = [[ +`\moveleft`, `\moveright` + +These commands move `box` left or right by `dimen` (which can be +negative). You can only apply `\moveleft` and `\moveright` to a box +that’s in a vertical list. +]], + mskip = [[ +This command produces horizontal glue that has natural width +`mudimen_1`, stretch `mudimen_2`, and shrink `mudimen_3`. The glue is +measured in mathematical units, which vary according to the style. Aside +from its units of measurement, this command behaves just like `\hskip`. +]], + multiply = [[ +`\divide`, `\multiply` + +These commands multiply and divide the value in `register` by `number` +(which can be negative). The register can be a `\count`, `\dimen`, +`\skip`, or `\muskip` register. For a `\skip` or `\muskip` register, all +three components of the glue in the register are modified. You can omit +the word `by` in these commands—TeX will understand them anyway. + +You can also obtain a multiple of a `dimen` by preceding it by a +`number` + +or decimal constant, e.g., `-2.5\dimen2`. You can also use this notation +for `glue`, but watch out—the result is a `dimen`, not `glue`. Thus +`2\baselineskip` yields a `dimen` that is twice the natural size of +`\baselineskip`, with no stretch or shrink. +]], + multispan = [[ +This command tells TeX that the following `number` columns in a row of a +horizontal alignment, or `number` rows in a column of a vertical +alignment, should be combined into a single column or row (as with +`\span`) and that their templates should be omitted (as with `\omit`). +]], + narrower = [[ +This command makes paragraphs narrower, increasing the left and right +margins by `\parindent`, the current paragraph indentation. It achieves +this by increasing both `\leftskip` and `\rightskip` by `\parindent`. +Normally you place `\narrower` at the beginning of a group containing +the paragraphs that you want to make narrower. If you forget to enclose +`\narrower` within a group, you’ll find that all the rest of your +document will have narrow paragraphs. + +`\narrower` affects just those paragraphs that end after you invoke it. +If you end a `\narrower` group before you’ve ended a paragraph, +TeX won’t make that paragraph narrower. +]], + negthinspace = [[ +This command produces a negative kern whose width is one-sixth of an em +, i.e., it causes TeX to move its position left by that amount. It is +useful for bringing together characters that are a little too far apart. +TeX won’t break a line at a `\negthinspace`. +]], + newif = [[ +This command names a trio of control sequences with names `\alphatrue`, +`\alphafalse`, and `\ifalpha`, where `alpha` is `test name`. You can use +them to define your own tests by creating a logical variable that +records true/false information: + +- `\alphatrue` sets the logical variable `alpha` true. + +- `\alphafalse` sets the logical variable `alpha` false + +- `\ifalpha` is a conditional test that is true if the logical + variable `alpha` is true and false otherwise. + +The logical variable `alpha` doesn’t really exist, but TeX behaves as +though it did. After `\newif\ifalpha`, the logical variable is initially +false. + +`\newif` is an outer command, so you can’t use it inside a macro +definition. +]], + newlinechar = [[ +This parameter contains a character that indicates a new line on output. +When TeX encounters this character while reading the argument of a +`\write`, `\message`, or `\errmessage` command, it starts a new line. If +`\newlinechar` is not in the range 0–255, there is no character that +indicates a new line on output. Plain TeX sets `\newlinechar` to $-1$. +]], + noalign = [[ +This command inserts `vertical mode material` after the current row of a +horizontal alignment or `horizontal mode material` after the current +column of a vertical alignment. The material can be text, glue, a rule, +or anything else. + +The most common use of `\noalign` is to put extra space after a row or +column. If you want to put extra space after *every* row of a horizontal +alignment, use `\openup`. +]], + noboundary = [[ +You can defeat a ligature or kern that TeX applies to the first or last +character of a word by putting `\noboundary` just before or just after +the word. Certain fonts intended for languages other than English +contain a special boundary character that TeX puts at the beginning and +end of each word. The boundary character occupies no space and is +invisible when printed. It enables TeX to provide different +typographical treatment to characters at the beginning or end of a word, +since the boundary character can be part of a sequence of characters to +be kerned or replaced by a ligature. (None of the standard TeX fonts +contain this boundary character.) The effect of `\noboundary` is to +delete the boundary character if it’s there, thus preventing TeX from +recognizing the ligature or kern. +]], + nobreak = [[ +This command prevents a page break where it otherwise might occur. +`\nobreak` can also be used in horizontal mode. +]], + noexpand = [[ +This command tells TeX to suppress expansion of `token` if `token` is a +control sequence that can be expanded. If `token` can’t be expanded, +e.g., it’s a letter, TeX acts as though the `\noexpand` wasn’t there and +processes `token` normally. In other words the expansion of +‘`\noexpand``token`’ is simply `token` no matter what `token` happens to +be. +]], + noindent = [[ +If TeX is in vertical mode, as it is after ending a paragraph, this +command inserts the `\parskip` interparagraph glue, puts TeX into +horizontal mode, and starts an unindented paragraph. It has no effect in +horizontal mode, i.e., within a paragraph. Starting a paragraph with +`\noindent` thus cancels the indentation by `\parindent` that would +normally occur there. + +A common use of `\noindent` is to cancel the indentation of the first +line of a paragraph when the paragraph follows some displayed material. +]], + nointerlineskip = [[ +This command tells TeX not to insert interline glue in front of the next +line. It has no effect on subsequent lines. +]], + nolimits = [[ +In display style, TeX normally places limits above and below a large +operator. This command tells TeX to place limits after a large operator +rather than above and below it. + +The integral operators `\int` and `\oint` are exceptions—TeX places +limits after them in all cases, unless overridden, as in `\int\limits`. +(plain TeX defines `\int` and `\oint` as macros that specify the +operator symbol followed by `\nolimits`—this is what causes them to +behave differently by default.) + +If you specify more than one of `\limits`, `\nolimits`, and +`\displaylimits`, the last command rules. +]], + nonscript = [[ +When TeX is currently typesetting in script or scriptscript style and +encounters this command immediately in front of glue or a kern, it +cancels the glue or kern. `\nonscript` has no effect in the other +styles. + +This command provides a way of “tightening up” the spacing in script and +scriptscript styles, which generally are set in smaller type. It is of +little use outside of macro definitions. +]], + nonstopmode = [[ +This command tells TeX not to stop for errors, even those pertaining to +files that it can’t find, but to continue displaying the error messages +on your terminal. Typing ‘`R`’ or ‘`r`’ in response to an error message +puts you into nonstop mode. +]], + nopagenumbers = [[ +By default, plain TeX produces a footer containing a centered page +number. This command tells TeX to produce a blank footer instead. +]], + normalbaselineskip = [[ +`\normalbaselineskip`, `\normalbaselines`, `\normallineskiplimit`, +`\normallineskip` + +The three parameters contain values for `\baselineskip`, `\lineskip`, +and `\lineskiplimit` respectively. + +The `\normalbaselines` command sets `\baselineskip`, `\lineskip`, and +`\lineskiplimit` to the values contained in the three parameters. +]], + null = [[ +This command produces an empty hbox. +]], + nulldelimiterspace = [[ +This parameter specifies the width of the space produced by a null +delimiter. Plain TeX sets `\nulldelimiterspace` to `1.2pt`. +]], + nullfont = [[ +This command selects a font, built into TeX, that has no characters in +it. TeX uses it as a replacement for an undefined font in a family of +math fonts. +]], + number = [[ +This command produces the representation of a number as a sequence of +character tokens. The number can be either an explicit integer, a +`number` parameter, or a `number` register. +]], + obeylines = [[ +TeX normally treats an end of line as a space. `\obeylines` instructs +TeX to treat each end of line as an end of paragraph, thus forcing a +line break. `\obeylines` is often useful when you’re typesetting verse +or computer programs. + +If any of your lines are longer than the effective line length (`\hsize` +- `\parindent`), however, you may get an extra line break within those +lines. + +Because TeX inserts the `\parskip` glue between lines controlled by +`\obeylines` (since it thinks each line is a paragraph), you should +normally set `\parskip` to zero when you’re using `\obeylines`. + +You can use the `\obeyspaces` command to get TeX to take spaces within a +line literally. `\obeylines` and `\obeyspaces` are often used together. +]], + obeyspaces = [[ +TeX normally condenses a sequence of several spaces to a single space. +`\obeyspaces` instructs TeX to produce a space in the output for each +space in the input. `\obeyspaces` does not cause spaces at the beginning +of a line to show up, however; for that we recommend the +`\obeywhitespace` command defined in `eplain.tex` . + +`\obeyspaces` is often useful when you’re typesetting something, +computer input for example, in a monospaced font (one in which each +character takes up the same amount of space) and you want to show +exactly what each line of input looks like. + +You can use the `\obeylines` command to get TeX to follow the line +boundaries of your input. `\obeylines` is often used in combination with +`\obeyspaces`. +]], + offinterlineskip = [[ +This command tells TeX to stop inserting interline glue from now on. +Unless you want it to be in effect for the rest of the document (which +you probably don’t), you should enclose it in a group together with the +text you want it to affect. Its main purpose is to let you do interline +spacing yourself, e.g., using struts, without interference from TeX’s +normal interline glue. `\offinterlineskip` is often useful when you’re +constructing a horizontal alignment. +]], + omit = [[ +This command tells TeX to ignore a template in a horizontal or vertical +alignment while processing a particular column or row entry +respectively. `\omit` must appear as the first item in a column or row +entry; in effect, it overrides the template from the preamble with the +simple template ‘`#`’. +]], + openin = [[ +This command tells TeX to open the file named `filename` and make it +available for reading via the input stream designated by `number`. + +`number` must be between 0 and 15. Once you’ve opened a file and +connected it to an input stream, you can read from the file using the +`\read` command with the input stream’s number. + +You can associate more than one input stream with the same file. You can +then read from several different positions within the file, one for each +input stream. + +You should allocate stream numbers for `\openin` using `\newread`. +]], + openout = [[ +This command tells TeX to open the file named `filename` and make it +available for writing via the output stream designated by `number`. +`number` must be between 0 and 15. Once you’ve opened a file and +connected it to an output stream, you can write to the file using the +`\write` command with the output stream’s number. + +An `\openout` generates a whatsit that becomes part of a box. The +`\openout` does not take effect until TeX ships out that box to the .dvi +file, unless you’ve preceded the `\openout` with `\immediate`. + +TeX won’t complain if you associate more than one output stream with the +same file, but you’ll get garbage in the file if you try it! + +You should allocate stream numbers for `\openout` using `\newwrite`. +]], + openup = [[ +This command increases `\baselineskip` by `dimen`. An `\openup` command +before the end of a paragraph affects the entire paragraph, so you +shouldn’t use `\openup` to change `\baselineskip` within a paragraph. +`\openup` is most useful for typesetting tables and math displays—a +little extra space between rows often makes them more readable. +]], + outer = [[ +This command is used as a prefix to a macro definition. It tells +TeX that the macro is outer and cannot be used in certain contexts. If +the macro is used in a forbidden context, TeX will complain. +]], + output = [[ +This parameter contains the current output routine, i.e., the token list +that TeX expands when it finds a page break. TeX puts the page into +`\box255`, so `\output` is responsible for doing something with +`\box255`—either shipping it out or putting it somewhere else. The +output routine is also responsible for attaching things such as headers +and footers. +]], + outputpenalty = [[ +TeX sets this parameter when it breaks a page. If the breakpoint was at +a penalty item, TeX removes the penalty item and sets `\outputpenalty` +to the penalty value at the breakpoint; otherwise it sets +`\outputpenalty` to 0. + +Suppose that you are undoing a page break in order to break the page at +a different place than the one that TeX has just chosen. In order to +reconstruct the page, you need to recreate the penalty at TeX’s chosen +breakpoint. You can accomplish this with the command +`\penalty!allowbreak\outputpenalty`. +]], + over = [[ +`\above`, `\atop`, `\brace`, `\brack`, `\choose`, `\over` + +These commands stack one subformula on top of another one. We will +explain how `\over` works, and then relate the other commands to it. + +`\over` is the command that you’d normally use to produce a fraction. + +If you write something in one of the following forms: + + $$⟨formula1⟩\over⟨formula2⟩$$ + $⟨formula1⟩\over⟨formula2⟩$ + \left!<delim>⟨formula1⟩\over⟨formula2⟩\right!<delim> + {⟨formula1⟩\over⟨formula2⟩} + +you’ll get a fraction with numerator `formula_1` and denominator +`formula_2`, i.e., `formula_1` over `formula_2`. In the first three of +these forms the `\over` is not implicitly contained in a group; it +absorbs everything to its left and to its right until it comes to a +boundary, namely, the beginning or end of a group. + +You can’t use `\over` or any of the other commands in this group more +than once in a formula. Thus a formula such as: + + $$a \over n \choose k$$ + +isn’t legal. This is not a severe restriction because you can always +enclose one of the commands in braces. The reason for the restriction is +that if you had two of these commands in a single formula, TeX wouldn’t +know how to group them. + +The other commands are similar to `\over`, with the following +exceptions: + +- `\atop` leaves out the fraction bar. + +- `\above` provides a fraction bar of thickness `dimen`. + +- `\choose` leaves out the fraction bar and encloses the construct in + parentheses. (It’s called “choose” because $n \choose k$ is the + notation for the number of ways of choosing $k$ things out of $n$ + things.) + +- `\brace` leaves out the fraction bar and encloses the construct in + braces. + +- `\brack` leaves out the fraction bar and encloses the construct in + brackets. +]], + overfullrule = [[ +This parameter specifies the width of the rule that TeX appends to an +overfull hbox. Plain TeX sets it to `5pt`. +]], + overwithdelims = [[ +`\abovewithdelims`, `\atopwithdelims`, `\overwithdelims` + +Each of these commands stacks one subformula on top of another one and +surrounds the entire construct with `delim_1` on the left and `delim_2` +on the right. These commands follow the same rules as `\over`, `\atop`, +and `\above`. The `dimen` in `\abovewithdelims` specifies the thickness +of the fraction bar. +]], + pagedepth = [[ +This parameter specifies the depth of the current page. TeX updates +`\pagedepth` as it adds items to the main vertical list. +]], + pagegoal = [[ +This parameter specifies the desired height for the current page. +TeX sets `\pagegoal` to the current value of `\vsize` when it first puts +a box or an insertion on the current page. You can shorten a page while +TeX is working on it by changing the value of `\pagegoal`—even if the +new value is less than the height of the material already on that page. +TeX will just put the extra material on the next page. But +remember—`\pagegoal` is reset to `\vsize` again when TeX starts the next +page. +]], + pageno = [[ +This parameter contains the current page number as an integer. The page +number is normally negative for front-matter pages that are numbered +with small roman numerals instead of arabic numerals. If you change the +page number within a page, the changed number will be used in any +headers or footers that appear on that page. The actual printing of page +numbers is handled by TeX’s output routine, which you can modify. + +Plain TeX keeps the page number in the register `\count0`. (`\pageno` +is, in fact, a synonym for `\count0`.) Whenever it ships out a page to +the .dvi file, + +TeX displays the current value of `\count0` on your terminal so that you +can tell which page it is working on. It’s possible to use registers +`\count1`–`\count9` for nested levels of page numbers (you must program +this yourself). If any of these registers are nonzero, TeX displays them +on your terminal also.[1] + +[1] More precisely, it displays all registers in sequence from `\count0` +to `\count9`, but omits trailing zero registers. For instance, if the +values of `\count0`–`\count3` are $(17, 0 , 0, 7)$ and the others are +0, TeX displays the page number as \[17.0.0.7\]. +]], + pageshrink = [[ +This parameter specifies the amount of shrink in the accumulated glue on +the current page. TeX updates `\pageshrink` as it adds items to the main +vertical list. +]], + pagestretch = [[ +`\pagefilllstretch`, `\pagefillstretch`, `\pagefilstretch`, +`\pagestretch` + +These four parameters together specify the amount of stretch in the glue +on the current page. The amount of stretch has the form +$n_0 + n_1fil + n_2fill + n_3filll$, with the four parameters giving the +values of the four $n_i$. TeX updates these parameters as it adds items +to the main vertical list. +]], + pagetotal = [[ +This parameter specifies the accumulated natural height of the current +page. TeX updates `\pagetotal` as it adds items to the main vertical +list. +]], + parfillskip = [[ +This parameter specifies the horizontal glue that TeX inserts at the end +of a paragraph. The default value of `\parfillskip` is `0pt plus 1fil`, +which causes the last line of a paragraph to be filled out with blank +space. A value of `0pt` forces TeX to end the last line of a paragraph +at the right margin. +]], + parindent = [[ +This parameter specifies the amount by which the first line of each +paragraph is to be indented. As the example below shows, it’s a bad idea +to set both `\parindent` and `\parskip` to zero since then the paragraph +breaks are no longer apparent. +]], + parshape = [[ +This command specifies the shape of the first $n$ lines of a paragraph— +the next paragraph if you’re in vertical mode and the current paragraph +if you’re in horizontal mode. The $i$’s and $l$’s are all dimensions. +The first line is indented by $i_1$ and has length $l_1$, the second +line is indented by $i_2$ and has length $l_2$, and so forth. If the +paragraph has more than $n$ lines, the last indentation/ length pair is +used for the extra lines. To achieve special effects such as the one +shown here, you usually have to experiment a lot, insert kerns here and +there, and choose your words to fit the shape. + +`\parshape`, like `\hangafter` and `\hangindent`, is effective only for +one paragraph. If you specify `\hangafter` and `\hangindent` as well as +`\parshape`, TeX ignores the `\hangafter` and `\hangindent`. +]], + parskip = [[ +This parameter specifies the “paragraph skip”, i.e., the vertical glue +that TeX inserts at the start of a paragraph. + +See `\par` for more information about what happens when TeX starts a +paragraph. Plain TeX sets `\parskip` to `0pt plus 0.1pt`. +]], + pausing = [[ +If this parameter is greater than zero, TeX will pause at each line of +input to give you an opportunity to replace it with a different line. If +you type in a replacement, TeX will use that line instead of the +original one; if you respond with ⟨return⟩, TeX will use the original +line. + +Setting `\pausing` to 1 can be useful as a way of patching a document +as TeX is processing it. For example, you can use this facility to +insert `\show` commands (see below). +]], + penalty = [[ +This command produces a penalty item. The penalty item makes TeX more or +less willing to break a page at the point where that item occurs. A +negative penalty, i.e., a bonus, encourages a page break; a positive +penalty discourages a page break. A penalty of 10000 or more prevents +a break altogether, while a penalty of $-10000$ or less forces a break. +`\penalty` can also be used in horizontal mode. +]], + phantom = [[ +This command produces an empty box having the same size and placement +that `argument` would have were it typeset. One use of `\phantom` is for +reserving space for a symbol that for some reason needs to be drawn in +by hand. +]], + plainoutput = [[ +This command invokes plain TeX’s output routine. + +Plain TeX defines `\output` as a token list containing the single token +`\plainoutput`. +]], + pmod = [[ +This command provides a notation for indicating a modulus in parentheses +at the end of a formula. +]], + postdisplaypenalty = [[ +This parameter specifies the penalty for breaking a page just after a +math display. Plain TeX leaves `\postdisplaypenalty` at 0. +]], + predisplaypenalty = [[ +This parameter specifies the penalty for breaking a page just before a +math display. Plain TeX sets `\predisplaypenalty` to 10000. +]], + predisplaysize = [[ +TeX sets this parameter to the width of the line preceding a math +display. TeX uses `\predisplaysize` to determine whether or not the +display starts to the left of where the previous line ends, i.e., +whether or not it visually overlaps the previous line. If there is +overlap, it uses the `\abovedisplayskip` and `\belowdisplayskip` glue in +setting the display; otherwise it uses the `\abovedisplayshortskip` and +`\belowdisplayshortskip` glue. See pages 188–189 of *The TeXbook* for a +more detailed explanation of this parameter. +]], + pretolerance = [[ +`\pretolerance`, `\tolerance` + +These parameters determine the badness that TeX will tolerate on each +line when it is choosing line breaks for a paragraph. The badness is a +measure of how far the interword spacing deviates from the ideal. +`\pretolerance` specifies the tolerable badness for line breaks without +hyphenation; `\tolerance` specifies the tolerable badness for line +breaks with hyphenation. The tolerable badness can be exceeded in either +of two ways: a line is too tight (the interword spaces are too small) or +it is too loose (the interword spaces are too big). + +- If TeX must set a line too loosely, it complains about an “underfull + hbox”. + +- If TeX must set a line too rightly, it lets the line run past the + right margin and complains about an “overfull hbox”. + +TeX chooses line breaks in the following steps: + +1. It attempts to choose line breaks without hyphenating. If none of + the resulting lines have a badness exceeding `\pretolerance`, the + line breaks are acceptable and the paragraph can now be set. + +2. Otherwise, it tries another set of line breaks, this time allowing + hyphenation. If none of the resulting lines have a badness exceeding + `\tolerance`, the new set of line breaks is acceptable and the + paragraph can now be set. + +3. Otherwise, it adds `\emergencystretch` (see below) to the stretch of + each line and tries again. + +4. If none of these attempts have produced an acceptable set of line + breaks, it sets the paragraph with one or more overfull hboxes and + complains about them. + +Plain TeX sets `\tolerance` to 200 and `\pretolerance` to 100. If +you set `\tolerance` to 10000, TeX becomes infinitely tolerant and +accepts any spacing, no matter how bad (unless it encounters a word that +won’t fit on a line, even with hyphenation). Thus by changing +`\tolerance` you can avoid overfull and underfull hboxes, but at the +cost of making the spacing worse. By making `\pretolerance` larger you +can get TeX to avoid hyphenation (and also run faster), again at the +cost of possibly worse spacing. If you set `\pretolerance` to $-1$, +TeX will not even try to set the paragraph without hyphenation. + +The `\hbadness` parameter determines the level of badness that TeX will +tolerate before it complains, but `\hbadness` does not affect the way +that TeX typesets your document. The `\hfuzz` parameter determines the +amount that an hbox can exceed its specified width before TeX considers +it to be erroneous. +]], + prevdepth = [[ +When TeX adds a box to a vertical list, it sets `\prevdepth` to the +depth of that box. TeX sets `\prevdepth` to $-1000$pt at the start of a +vertical list, indicating that the usual interline glue should be +suppressed. +]], + prevgraf = [[ +In horizontal mode, this parameter specifies the number of lines in the +paragraph so far; in vertical mode, it specifies the number of lines in +the previous paragraph. TeX only sets `\prevgraf` after it has finished +breaking some text into lines, i.e., at a math display or at the end of +a paragraph. See page 103 of *The TeXbook* for more details about it. +]], + proclaim = [[ +This command “proclaims” a theorem, lemma, hypothesis, etc. It sets +`argument` in boldface type and the following paragraph in italics. +`argument` must be followed by a period and a space token, which serve +to set off `argument` from `general text`. `general text` consists of +the text up to the next paragraph boundary. You can include multiple +paragraphs by using `\endgraf` instead of a blank line or `\par`. +]], + radical = [[ +This command produces a radical sign whose characteristics are given by +`number`. It uses the same representation as the delimiter code + +in the `\delcode` command. +]], + raggedbottom = [[ +`\normalbottom`, `\raggedbottom` + +Normally TeX tries hard to ensure that all pages have the same depth, +i.e., that their bottom margins are equal. The `\raggedbottom` command +tells TeX to allow some variability among the bottom margins on +different pages. It’s often appropriate to use `\raggedbottom` when you +have material that contains large blocks of material that should not be +split across pages. The `\normalbottom` command cancels the effect of +`\raggedbottom`. +]], + raggedright = [[ +`\raggedright`, `\ttraggedright` + +These commands cause TeX to typeset your document “ragged right”. +Interword spaces all have their natural size, i.e., they all have the +same width and don’t stretch or shrink. Consequently the right margin is +generally not even. The alternative, which is TeX’s default, is to +typeset your document justified, + +i.e., with uniform left and right margins. In justified text, interword +spaces are stretched in order to make the right margin even. Some +typographers prefer ragged right because it avoids distracting “rivers” +of white space on the printed page. + +You should use the `\ttraggedright` command when typesetting text in a +monospaced font and the `\raggedright` command when typesetting text in +any other font. + +Most of the time you’ll want to apply these commands to an entire +document, but you can limit their effects by enclosing them in a group. +]], + relax = [[ +This command tells TeX to do nothing. It’s useful in a context where you +need to provide a command but there’s nothing that you want TeX to do. +]], + relpenalty = [[ +This parameter specifies the penalty for breaking a math formula after a +relation when the formula appears in a paragraph. Plain TeX sets +`\relpenalty` to 500. +]], + romannumeral = [[ +This command produces the roman numeral representation of a number as a +sequence of character tokens. The number can be either an explicit +integer, a `number` parameter, or a `number` register. If the number is +zero or negative, `\romannumeral` produces no tokens. +]], + root = [[ +This command produces the notation for a root of `argument_2`, where the +root is given by `argument_1`. +]], + sb = [[ +`\sb`, `\sp` + +The commands in each column are equivalent. The commands in the first +column typeset `argument` as a subscript, and those in the second column +typeset `argument` as a superscript. The `\sb` and `\sp` commands are +mainly useful if you’re working on a terminal that lacks an underscore +or caret, or if you’ve redefined ‘`_`’ or ‘`\verb`’ and need access to +the original definition. These commands are also used for setting lower +and upper limits on summations and integrals. + +If a subscript or superscript is not a single token, you need to enclose +it in a group. TeX does not prioritize subscripts or superscripts, so it +will reject formulas such as `a_i_j`, `a^i^j`, or `a^i_j`. + +Subscripts and superscripts are normally typeset in script style, or in +scriptscript style if they are second-order, e.g., a subscript on a +subscript or a superscript on a a subscript. You can set *any* text in a +math formula in a script or scriptscript style with the `\scriptstyle` +and `\scriptscriptstyle` commands. + +You can apply a subscript or superscript to any of the commands that +produce named mathematical functions in roman type). In certain cases +(again, see ) the subscript or superscript appears directly above or +under the function name as shown in the examples of `\lim` and `\det` +below. +]], + scriptspace = [[ +This parameter specifies the amount of space that TeX inserts before and +after a subscript or superscript. The `\nonscript` command after a +subscript or superscript cancels this space. Plain TeX sets +`\scriptspace` to `0.5pt`. +]], + scrollmode = [[ +This command tells TeX not to stop for most errors, but to continue +displaying the error messages on your terminal. Typing ‘`S`’ or ‘`s`’ in +response to an error message puts you into scroll mode. +]], + setbox = [[ +`\box`, `\setbox` + +These commands respectively set and retrieve the contents of the box +register whose number is `register`. Note that you set a box register a +little differently than you set the other kinds of registers: you use +`\setbox`$\,n$ `=` rather than `\box`$\,n$ `=`. + +*Retrieving the contents of a box register with these commands has the +side effect of emptying it, so that the box register become void.* If +you don’t want that to happen, you can use `\copy` (see below) to +retrieve the contents. You should use `\box` in preference to `\copy` +when you don’t care about what’s in a box register after you’ve used it, +so as not to exhaust TeX’s memory by filling it with obsolete boxes. +]], + setlanguage = [[ +This command sets the current language to `number` by inserting the same +whatsit that you’d get by changing `\language`. However, it does not +change the value of `\language`. +]], + settabs = [[ +The first form of this command defines a set of tab stops for a tabbing +alignment. It tells TeX to set the tab stops so as to divide each line +into `number` equal parts. TeX takes the length of a line to be +`\hsize`, as usual. You can make the alignment narrower by decreasing +`\hsize`. +]], + shipout = [[ +This command instructs TeX to send `box` to the .dvi file. + +TeX expands any `\write` command in `box` as part of `\shipout`. + +The principal use of `\shipout` is in the output routine, but you can +use it anywhere. +]], + show = [[ +`\showbox`, `\showlists`, `\showthe`, `\show` + +These commands record information in the log of your TeX run: + +- `\show` records the meaning of `token`. + +- `\showthe` records whatever tokens would be produced by `\the` + `argument`). + +- `\showbox` records the contents of the box register numbered + `number`. The number of leading dots in the log indicates the number + of levels of nesting of inner boxes. + +- `\showlists` records the contents of each list that TeX is currently + constructing. (These lists are nested one within another.) See + pages 88–89 of *The TeXbook* for further information about + interpreting the output of `\showlists`. + +For `\show` and `\showthe`, TeX also displays the information at your +terminal. For `\showbox` and `\showlists`, TeX displays the information +at your terminal only if `\tracingonline` is greater than zero; if +`\tracingonline` is zero or less (the default case), the information is +not displayed. + +Whenever TeX encounters a `\show`-type command it stops for interaction. +The request for interaction does *not* indicate an error, but it does +give you an opportunity to ask TeX to show you something else. If you +don’t want to see anything else, just press ⟨return⟩. + +You can control the amount of output produced by `\showbox` by setting +`\showboxbreadth` and `\showboxdepth`. + +These parameters respectively have default values of 5 and 3, which +is why just five items appear for each box described in the log output +below. (The ‘`..etc.`’ indicates additional items within the boxes that +aren’t displayed.) +]], + showboxbreadth = [[ +This parameter specifies the maximum number of list items that +TeX displays for one level of one box when it is producing the output +for `\showbox` or `\tracingoutput`. Plain TeX sets `\showboxbreadth` to +5. +]], + showboxdepth = [[ +This parameter specifies the level of the deepest list that TeX displays +when it is producing the output for `\showbox` or `\showlists`. Plain +TeX sets `\showboxdepth` is 3. +]], + skew = [[ +This command shifts the accent `argument_1` by `number` mathematical +units to the right of its normal position with respect to `argument_2`. +The most common use of this command is for modifying the position of an +accent that’s over another accent. +]], + skewchar = [[ +The `\skewchar` of a font is the character in the font whose kerns, as +defined in the font’s metrics file, determine the positions of math +accents. That is, suppose that TeX is applying a math accent to the +character ‘`x`’. TeX checks if the character pair ‘`x\skewchar`’ has a +kern; if so, it moves the accent by the amount of that kern. The +complete algorithm that TeX uses to position math accents (which +involves many more things) is in Appendix G of *The TeXbook*. + +If the value of `\skewchar` is not in the range 0–255, TeX takes the +kern value to be zero. + +Note that `font` is a control sequence that names a font, not a +`fontname` that names font files. Beware: an assignment to `\skewchar` +is *not* undone at the end of a group. If you want to change `\skewchar` +locally, you’ll need to save and restore its original value explicitly. +]], + slash = [[ +This command produces a solidus (/) and also tells TeX that it can break +the line after the solidus, if necessary. +]], + smallbreak = [[ +`\bigbreak`, `\medbreak`, `\smallbreak` + +These commands indicate increasingly desirable places for TeX to break a +page. They also cause TeX to insert a `\smallskip`, `\medskip`, or +`\bigskip` if the page break doesn’t actually happen. TeX suppresses +this skip if it occurs just after an equal or larger skip. +]], + smallskip = [[ +`\bigskip`, `\medskip`, `\smallskip` + +These commands produce successively larger amounts of vertical space: + +`\smallskip` skips by 3 points and can stretch or shrink by 1 point. +`\medskip` is equivalent to two `\smallskip`s and `\bigskip` is +equivalent to two `\medskip`s. + +These commands end a paragraph since they are inherently vertical. The +skips that they produce are in addition to the normal interparagraph +skip. +]], + smallskipamount = [[ +`\bigskipamount`, `\medskipamount`, `\smallskipamount` + +These parameters specify the amounts of glue produced by the +`\smallskip`, `\medskip`, and `\bigskip` commands. By changing these +parameters you change the effect of the commands. The default values +(for plain TeX) correspond to a quarter of a linespace, half a +linespace, and a full linespace. We recommend that you maintain this +ratio by changing these values whenever you change `\baselineskip`. +]], + smash = [[ +This command typesets `argument`, but forces the height and depth of its +containing box to be zero. You can use `\smash` and `\vphantom` in +combination to give a subformula any height and depth that you wish. +]], + space = [[ +This command is equivalent to an input space character. It differs from +`\ ` in that its width *can* be affected by preceding punctuation. +]], + spacefactor = [[ +`\sfcode`, `\spacefactor`, `\spaceskip`, `\xspaceskip` + +These primitive parameters affect how much space TeX puts between two +adjacent words, i.e., the interword spacing. The normal interword +spacing is supplied by the current font. As TeX is processing a +horizontal list, it keeps track of the space factor $f$ in +`\spacefactor`. As it processes each input character $c$, it updates $f$ +according to the value of $f_c$, the space factor code of $c$ (see +below). For most characters, $f_c$ is 1000 and TeX sets $f$ to 1000. +(The initial value of $f$ is also 1000.) When TeX sees an interword +space, it adjusts the size of that space by multiplying the stretch and +shrink of that space by $f/1000$ and $1000/f$ respectively. Thus: + +1. If $f=1000$, the interword space keeps its normal value. + +2. If $f<1000$, the interword space gets less stretch and more shrink. + +3. If $f>1000$, the interword space gets more stretch and less shrink. + +In addition, if $f\ge2000$ the interword space is further increased by +the “extra space” parameter associated with the current font. + +Each input character $c$ has an entry in the `\sfcode` (space factor +code) table. The `\sfcode` table entry is independent of the font. +Usually TeX just sets $f$ to $f_c$ after it processes $c$. However: + +- If $f_c$ is zero, TeX leaves $f$ unchanged. Thus a character such as + ‘`)`’ in plain TeX, for which $f_c$ is zero, is essentially + transparent to the interword space calculation. + +- If $f<1000<f_c$, TeX sets $f$ to 1000 rather than to $f_c$, i.e., + it refuses to raise $f$ very rapidly. + +The `\sfcode` value for a period is normally 3000, which is why +TeX usually puts extra space after a period (see the rule above for the +case $f\ge2000$). Noncharacter items in a horizontal list, e.g., +vertical rules, generally act like characters with a space factor of +1000. + +You can change the space factor explicitly by assigning a different +numerical value to `\spacefactor`. You can also override the normal +interword spacing by assigning a different numerical value to +`\xspaceskip` or to `\spaceskip`: + +- `\xspaceskip` specifies the glue to be used when $f\ge2000$; in the + case where `\xspaceskip` is zero, the normal rules apply. + +- `\spaceskip` specifies the glue to be used when $f<2000$ or when + `\xspaceskip` is zero; if `\spaceskip` is zero, the normal rules + apply. The stretch and shrink of the `\spaceskip` glue, like that of + the ordinary interword glue, is modified according to the value of + $f$. + +See page 76 of *The TeXbook* for the precise rules that TeX uses in +calculating interword glue, and pages 285–287 of *The TeXbook* for the +adjustments made to `\spacefactor` after various items in a horizontal +list. +]], + span = [[ +The meaning of this command depends on whether it appears in a preamble +or in an alignment entry. + +- Normally, TeX does not expand tokens in the preamble when it reads + them. Putting `\span` in front of a token in the preamble causes + that token to be expanded immediately according to TeX’s usual rules + of macro expansion. + +- Putting `\span` instead of ‘`&`’ between two column or row entries + causes those columns or rows to be combined. For a horizontal + alignment, the width of the combined column is the sum of the widths + of the component columns. For a vertical alignment, the height of + the combined row is the sum of the heights of the component rows. + The template of the combined column or combined row forms a single + group, so font-setting commands preceding a `\span` affect + everything up to the next ‘`&`’. + +`\span` is rarely useful by itself outside of a template, but it +provides the basic mechanism for defining `\multispan`. +]], + special = [[ +This command tells TeX to write `token list` directly to the .dvi +file when it next ships out a page. A typical use of `\special` would be +to tell the device driver to incorporate the contents of a named +graphics file into the output page. + +The `\special` command produces a whatsit that associates `token list` +with a particular position on the page, namely, the position that a +zero-size box would have had if such a box had appeared instead of the +`\special` command. Any use you might make of `\special` depends +strictly on the device drivers that you have available. +]], + splitfirstmark = [[ +`\splitbotmark`, `\splitfirstmark` + +These commands expand to the mark text generated by an earlier `\mark` +command that produced an item in the item list of a vbox $V$. The mark +text has the form of a token list. When TeX splits $V$ in response to a +`\vsplit` command, it sets the values of these commands as follows: + +- `\splitfirstmark` contains the tokens of the first mark in the item + list of $V$. + +- `\splitbotmark` contains the tokens of the last mark in the item + list of $V$. + +These commands produce no tokens if there was no preceding `\vsplit`, or +if the most recent preceding `\vsplit` didn’t contain any marks. +]], + splitmaxdepth = [[ +This parameter specifies the maximum allowable depth of a box resulting +from a `\vsplit`. `\splitmaxdepth` plays the same role that `\maxdepth` +plays for a page. +]], + splittopskip = [[ +This parameter specifies the glue that TeX inserts at the top of a box +resulting from a `\vsplit`. `\splittopskip` plays the same role that +`\topskip` plays for a page. +]], + sqrt = [[ +This command produces the notation for the square root of `argument`. +]], + string = [[ +This command produces the characters that form the name of +`control sequence`, including the escape character. The escape character +is represented by the current value of `\escapechar`. + +TeX gives the characters in the list a category code of 12 (other). + +You can perform the reverse operation with the `\csname` command, which +turns a string into a control sequence. +]], + strut = [[ +This command produces a box whose width is zero and whose height +(`8.5pt`) and depth (`3.5pt`) are those of a more or less typical line +of type in `cmr10`, the default plain TeX font. Its main use is in +forcing lines to have the same height when you’ve disabled TeX’s +interline glue with `\offinterlineskip` or a similar command, e.g., when +you’re constructing an alignment. If the natural height of a line is too +short, you can bring it up to standard by including a `\strut` in the +line. The strut will force the height and depth of the line to be +larger, but it won’t print anything or consume any horizontal space. + +If you’re setting type in a font that’s bigger or smaller than `cmr10`, +you should redefine `\strut` for that context. +]], + tabskip = [[ +This parameter specifies the amount of horizontal or vertical glue that +TeX puts between the columns of a horizontal alignment or between the +rows of a vertical alignment. TeX also puts the `\tabskip` glue to the +left of the first column and to the right of the last column of a +horizontal alignment, and above the first row and below the last row of +a vertical alignment. You can change `\tabskip` within a template— the +change will affect the glue associated with all the following `&`’s as +well as the glue after the last row or column. +]], + textfont = [[ +`\scriptfont`, `\scriptscriptfont`, `\textfont` + +Each of these parameters specifies the font that TeX is to use for +typesetting the indicated style in the indicated family. These choices +have no effect outside of math mode. +]], + textindent = [[ +This command tells TeX to start a paragraph and indent it by +`\parindent`, as usual. TeX then right-justifies `argument` within the +indentation and follows it with an en space (half an em). Plain TeX uses +this command to typeset footnotes + +and items in lists). +]], + textstyle = [[ +`\displaystyle`, `\scriptscriptstyle`, `\scriptstyle`, `\textstyle` + +These commands override the normal style and hence the font that +TeX uses in setting a formula. Like font-setting commands such as `\it`, +they are in effect until the end of the group containing them. They are +useful when TeX’s choice of style is inappropriate for the formula you +happen to be setting. +]], + the = [[ +This command generally expands to a list of character tokens that +represents `token`. `token` can be any of the following: + +- a TeX parameter, e.g., `\parindent` or `\deadcycles` + +- a register, e.g., `\count0` + +- a code associated with an input character, e.g., `` \catcode`( `` + +- a font parameter, e.g., `\fontdimen3\sevenbf` + +- the `\hyphenchar` or `\skewchar` of a font, e.g., `\skewchar\teni` + +- `\lastpenalty`, `\lastskip`, or `\lastkern` (values derived from the + last item on the current horizontal or vertical list) + +- a control sequence defined by `\chardef` or `\mathchardef` + +In addition, `\the` can expand to noncharacter tokens in the following +two cases: + +- `\the` `font`, which expands to the most recently defined control + sequence that selects the same font as the control sequence `font` + +- `\the` `token variable`, which expands to a copy of the value of the + variable, e.g., `\the\everypar` + +See pages 214–215 of *The TeXbook* for a more detailed description of +what `\the` does in various cases. +]], + thinmuskip = [[ +`\medmuskip`, `\thickmuskip`, `\thinmuskip` + +These parameters define thin, medium, and thick spaces in math mode. +]], + thinspace = [[ +This command produces a positive kern whose width is one-sixth of an em + +i.e., it causes TeX to move its position right by that amount. It is +useful when you have a nested quotation, for example, and you want to +separate the levels of quotes. TeX won’t break a line at a `\thinspace`. +]], + time = [[ +TeX sets this parameter to the number of minutes that have elapsed since +midnight (of the current day). At noon, for instance, `\time` is 720. +This command and the next three make use of the time and date as +recorded in your computer. TeX retrieves them just once, at the +beginning of your run, so `\time` at the end of the run always has the +same value as `\time` at the beginning of the run (unless you’ve +explicitly changed it). +]], + topglue = [[ +This command[1] causes the space from the top of the page to the top of +the first box on the page to be `glue` precisely. The top of the page is +considered to be at the baseline of an imaginary line of text just above +the top line of the page. More precisely, it’s a distance `\topskip` +above the origin as given by `\hoffset` and `\voffset`. + +This command is useful because TeX ordinarily adjusts the glue produced +by `\topskip` in a complex way. By using `\topglue` you can control the +position of the first box on the page without worrying about those +adjustments. + +[1] `\topglue` was added to TeX in version 3.0, later than the other +enhancements introduced by new TeX . It is first described in the +*eighteenth* edition of *The TeXbook*. +]], + topinsert = [[ +`\midinsert`, `\pageinsert`, `\topinsert` + +These commands produce different forms of insertions that instruct (or +allow) TeX to relocate the `vertical mode material`: + +- `\topinsert` attempts to put the material at the top of the current + page. If it won’t fit there, `\topinsert` will move the material to + the next available top of page. + +- `\midinsert` attempts to put the material at the current position. + If it won’t fit there, `\midinsert` will move the material to the + next available top of page. + +- `\pageinsert` puts the material by itself on the next page. To avoid + an underfull page, be sure to end the inserted material with `\vfil` + or fill out the excess space some other way. + +The `vertical mode material` is said to be “floating” because TeX can +move it from one place to another. Insertions are very useful for +material such as figures and tables because you can position such +material where you want it without knowing where the page breaks will +fall. + +Each of these commands implicitly ends the current paragraph, so you +should use them only between paragraphs. You should not use them within +a box or within another insertion. If you have several insertions +competing for the same space, TeX will retain their relative order. +]], + topskip = [[ +TeX inserts glue at the top of each page in order to ensure that the +baseline of the first box on the page always is the same distance $d$ +from the top of the page. `\topskip` determines the amount of that glue, +called the “`\topskip` glue”, by specifying what $d$ should be (provided +that the first box on the page isn’t too tall). $d$ is given by the +natural size of the `\topskip` glue. If the height of the first box on +the page exceeds $d$, so that the glue would be negative, TeX simply +inserts no `\topskip` glue at all on that page. + +To understand better the effect of these rules, assume that `\topskip` +has no stretch or shrink and that the first item on the page is indeed a +box. Then if the height of that box is no greater than `\topskip`, its +baseline will be `\topskip` from the top of the page independently of +its height. On the other hand, if the height of the box is $e$ greater +than `\topskip`, its baseline will be `\topskip` + $e$ from the top of +the page. See pages 113–114 of *The TeXbook* for the remaining details +of how `\topskip` works. Plain TeX sets `\topskip` to `10pt`. +]], + tracingall = [[ +This command tells TeX to turn on every available form of tracing. It +also sets `\tracingonline` to 1 so that the trace output will appear +at your terminal. +]], + tracingcommands = [[ +If this parameter is 1 or greater, TeX will record in the log file +most commands that it executes. If `\tracingonline` is greater than +zero, this information will also appear at your terminal. Typesetting +the first character of a word counts as a command, but (for the purposes +of the trace only) the actions of typesetting the subsequent characters +and any punctuation following them do not count as commands. If +`\tracingcommands` is 2 or greater, TeX will also record commands that +are expanded rather than executed, e.g., conditional tests and their +outcomes. +]], + tracinglostchars = [[ +If this parameter is greater than zero, TeX will record an indication in +the log file of each time that it drops an output character because that +character does not exist in the current font. If `\tracingonline` is +greater than zero, this information will also appear at your terminal. +Plain TeX defaults it to 1 (unlike the others). +]], + tracingmacros = [[ +If this parameter is 1 or greater, TeX will record in the log file the +expansion and arguments of every macro that it executes. + +If `\tracingmacros` is 2 or greater, TeX will record, in addition, +every expansion of a token list such as `\output` or `\everycr`. If +`\tracingonline` is greater than zero, this information will also appear +at your terminal. +]], + tracingonline = [[ +If this parameter is greater than zero, TeX will display the results of +tracing (including `\showbox` and `\showlists`) at your terminal in +addition to recording them in the log file. +]], + tracingoutput = [[ +If this parameter is greater than zero, TeX will record in the log file +the contents of every box that it sends to the .dvi file. + +If `\tracingonline` is greater than zero, this information will also +appear at your terminal. The number of leading dots in each line of the +trace output indicates the nesting level of the box at that line. You +can control the amount of tracing by setting `\showboxbreadth` and +`\showboxdepth`. + +Setting `\tracingoutput` to 1 can be particularly helpful when you’re +trying to determine why you’ve gotten extra space on a page. +]], + tracingpages = [[ +If this parameter is greater than zero, TeX will record in the log file +its calculations of the cost of various page breaks that it tries. + +If `\tracingonline` is greater than zero, this information will also +appear at your terminal. TeX produces a line of this output whenever it +first places a box or insertion on the current page list, and also +whenever it processes a potential break point for the page. Examining +this output can be helpful when you’re trying to determine the cause of +a bad page break. See pages 112–114 of *The TeXbook* for an illustration +and explanation of this output. + +Some production forms of TeX ignore the value of `\tracingpages` so that +they can run faster. If you need to use this parameter, be sure to use a +form that responds to it. +]], + tracingparagraphs = [[ +If this parameter is greater than zero, TeX will record in the log file +its calculations of the cost of various line breaks that it tries. + +If `\tracingonline` is greater than zero, this information will also +appear at your terminal. TeX produces this output when it reaches the +end of each paragraph. See pages 98–99 of *The TeXbook* for an +illustration and explanation of this output. + +Some production forms of TeX ignore the value of `\tracingparagraphs` so +that they can run faster. If you need to use this parameter, be sure to +use a form that responds to it. +]], + tracingrestores = [[ +If this parameter is greater than zero, TeX will record in the log file +the values that it restores when it encounters the end of a group. If +`\tracingonline` is greater than zero, this information will also appear +at your terminal. + +Some production forms of TeX ignore the value of `\tracingrestores` so +that they can run faster. If you need to use this parameter, be sure to +use a form that responds to it. +]], + tracingstats = [[ +If this parameter is 1 or greater, TeX will include a report on the +resources that it used to run your job (see page 300 of *The TeXbook* +for a list and explanation of these resources). Moreover, if +`\tracingstats` is 2 or greater, TeX will report on its memory usage +whenever it does a `\shipout` for a page. The report appears at the end +of the log file. + +If `\tracingonline` is greater than zero, the information will also +appear at your terminal. If you’re having trouble with TeX exceeding one +of its capacities, the information provided by `\tracingstats` may help +you pinpoint the cause of the difficulty. + +Some production forms of TeX ignore the value of `\tracingstats` so that +they can run faster. If you need to use this parameter, be sure to use a +form that responds to it. + +The following example shows a sample of the tracing output you’d get on +one implementation of TeX. It may be different on other implementations. +]], + uchyph = [[ +A positive value of `\uchyph` (uppercase hyphenation) permits +hyphenation of words, such as proper names, that start with a capital +letter. A zero or negative value inhibits such hyphenation. Plain +TeX sets `\uchyph` to 1, so TeX normally tries to hyphenate words that +start with a capital letter. +]], + underbar = [[ +This command puts `argument` into an hbox and underlines it without +regard to anything that protrudes below the baseline of the box. +]], + underbrace = [[ +`\overbrace`, `\overleftarrow`, `\overline`, `\overrightarrow`, +`\underbrace`, `\underline` + +These commands place extensible braces, lines, or arrows over or under +the subformula given by `argument`. TeX will make these constructs as +wide as they need to be for the context. When TeX produces the extended +braces, lines, or arrows, it considers only the dimensions of the box +containing `argument`. If you use more than one of these commands in a +single formula, the braces, lines, or arrows they produce may not line +up properly with each other. You can use the `\mathstrut` command to +overcome this difficulty. +]], + unhbox = [[ +`\unhbox`, `\unvbox` + +These commands produce the list contained in box register `register` and +make that box register void. `\unhbox` applies to box registers +containing hboxes and `\unvbox` applies to box registers containing +vboxes. You should use these commands in preference to `\unhcopy` and +`\unvcopy` (see below) when you don’t care about what’s in the box +register after you’ve used it, so as not to exhaust TeX’s memory by +filling it with obsolete boxes. +]], + unhcopy = [[ +`\unhcopy`, `\unvcopy` + +These commands produce the list contained in box register `register` and +leave the contents of the register undisturbed. `\unhcopy` applies to +box registers containing hboxes and `\unvcopy` applies to box registers +containing vboxes. +]], + unkern = [[ +`\unkern`, `\unpenalty`, `\unskip` + +If the last item on the current list is of type kern, glue, or penalty +respectively, these commands remove it from that list. If the item isn’t +of the right type, these commands have no effect. Like `\lastbox`, you +can’t apply them to lists in math mode or to the main vertical list. +These commands are most useful after a macro call that is known to have +inserted a specific item that you don’t want there. TeX doesn’t provide +an `\unbox` command because `\lastbox` produces nearly the same effect. +]], + vadjust = [[ +This command inserts the specified `vertical mode material` just after +the output line containing the position where the command occurs. + +You can use it, for instance, to cause a page eject or to insert extra +space after a certain line. +]], + valign = [[ +This command produces a vertical alignment consisting of a sequence of +columns, where each column in turn contains a sequence of row entries. +TeX adjusts the heights of the row entries to accommodate the tallest +one in each row. + +A vertical alignment can only appear when TeX is in a horizontal mode. +Because vertical alignments are (a) conceptually somewhat difficult and +(b) not often used, we recommend that you learn about alignments in +general and the `\halign` command (see above) before you attempt to use +the `\valign` command. + +An alignment consists of a preamble followed by the text to be aligned. +The preamble, which describes the layout of the columns that follow, +consists of a sequence of row templates, separated by ‘`&`’ and ended by +`\cr`. Each column consists of a sequence of row entries, also separated +by ‘`&`’ and ended by `\cr`. Within a template, ‘`#`’ indicates where +TeX should insert the corresponding text of a row entry. + +TeX typesets each row entry in internal vertical mode, i.e., as the +contents of a vbox, and implicitly encloses the entry in a group. It +always gives the vbox zero depth. Any text or other horizontal mode +material in a row entry then puts TeX into ordinary horizontal mode. +(This is just an application of the general rules for TeX’s behavior in +internal vertical mode.) The usual paragraphing parameters apply in this +case: the row entry has an initial indentation of `\parindent` and its +lines have the `\leftskip` and `\rightskip` glue appended to them. + +Note in particular that a row entry containing text has a width of +`\hsize`. Unless you reset `\hsize` to the row width that you want, +you’re likely to encounter overfull hboxes, or find that the first +column takes up the width of the entire page, or both. + +Normally, you need to include a strut + +in each template so that the rows don’t come out crooked as a result of +the varying heights of the entries in the alignment. You can produce a +strut with the `\strut` command. + +The `to` form of this command instructs TeX to make the vertical extent +of the alignment be `dimen`, adjusting the space between rows as +necessary. The `spread` form of this command instructs TeX to make the +alignment taller by `dimen` than its natural height. These forms are +like the corresponding forms of `\vbox` . +]], + vcenter = [[ +Every math formula has an invisible “axis” that TeX treats as a kind of +horizontal centering line for that formula. For instance, the axis of a +formula consisting of a fraction is at the center of the fraction bar. +The `\vcenter` command tells TeX to place the `vertical mode material` +in a vbox and to center the vbox with respect to the axis of the formula +it is currently constructing. + +The first form of the command centers the material as given. The second +and third forms expand or shrink the material vertically as in the +`\vbox` command . +]], + vdots = [[ +This command produces three vertical dots. +]], + vee = [[ +`\amalg` (∐), `\ast`, `\bigcirc` (○), `\bigtriangledown` (▽), +`\bigtriangleup` (△), `\bullet` (•), `\cap` (∩), `\cdot` (⋅), `\circ` +(∘), `\cup` (∪), `\dagger` (†), `\ddagger` (‡), `\diamond` (⋄), `\div` +(÷), `\land` (∧), `\lor` (∨), `\mp` (∓), `\odot` (⊙), `\ominus` (⊖), +`\oplus` (⊕), `\oslash` (⊘), `\otimes` (⊗), `\pm` (±), `\setminus`, +`\sqcap` (⊓), `\sqcup` (⊔), `\star` (⋆), `\times` (×), `\triangleleft` +(⊲), `\triangleright` (⊳), `\uplus` (⊎), `\vee` (∨), `\wedge` (∧), `\wr` +(≀) + +These commands produce the symbols for various binary operations. Binary +operations are one of TeX’s classes of math symbols. TeX puts different +amounts of space around different classes of math symbols. When +TeX needs to break a line of text within a math formula, it will +consider placing the break after a binary operation—but only if the +operation is at the outermost level of the formula, i.e., not enclosed +in a group. + +In addition to these commands, TeX also treats ‘`+`’ and ‘`-`’ as binary +operations. It considers ‘`/`’ to be an ordinary symbol, despite the +fact that mathematically it is a binary operation, because it looks +better with less space around it. +]], + vsize = [[ +This parameter specifies the current vertical extent of a page. +TeX examines it only when it is starting a page. Thus if you change +`\vsize` in the middle of a page, your change won’t affect anything +until the following page. If you want to change the vertical extent of a +page when you’re in the middle of it, you should assign the new height +to `\pagegoal` instead. (If you want the change to affect the following +pages too, you should change *both* `\vsize` and `\pagegoal`.) Plain +TeX sets `\vsize` to `8.9in`. +]], + vsplit = [[ +This command causes TeX to split the box numbered `number`, which we’ll +call $B_2$, into two parts. It uses the same algorithm that it would use +if $B_2$ was a page and it was breaking that page; the division point +then corresponds to the page break that it would find. The box $B_2$ +must be a vbox, not an hbox. TeX puts the material preceding the +division point into another box $B_1$ and leaves the material after the +division point in $B_2$. The `\vsplit` command then produces $B_1$. +Normally you’d assign $B_1$ to a different box register, as in the +example below. If the division point is at the end of $B_2$, $B_2$ will +be empty after the `\vsplit`. + +TeX employs its usual page-breaking algorithm + +for the split. It uses `dimen` for `\pagegoal`, the desired height of +$B_1$. The vertical extent of $B_1$ may not be exactly `dimen` because +TeX may not be able to achieve its page goal perfectly. TeX does not +consider insertions in calculating the split, so insertions in the +original vertical list of $B_2$ will be retained but won’t affect the +split point. +]], + vtop = [[ +`\vbox`, `\vtop` + +These commands produce a vbox (vertical box) containing +`vertical mode material`. The braces around `vertical mode material` +define a group. TeX is in internal vertical mode when it’s assembling +the box. TeX won’t change the size of the box once it’s been produced. + +The difference between `\vtop` and `\vbox` lies in where TeX puts the +reference point of the constructed vbox. Ordinarily, the reference point +gotten from `\vtop` tends to be at or near the top of the constructed +vbox, while the reference point gotten from `\vbox` tends to be at or +near the bottom of the constructed vbox. Thus a row of vboxes all +constructed with `\vtop` will tend to have their tops nearly in a line, +while a row of vboxes all constructed with `\vbox` will tend to have +their bottoms nearly in a line. + +`\vtop` and `\vbox` are often useful when you want to keep some text +together on a single page. (For this purpose, it usually doesn’t matter +which command you use.) If your use of these commands prevents TeX from +breaking pages in an acceptable way, TeX will complain that it’s found +an overfull or underfull vbox while `\output` is active. + +The height of a vbox depends on the arguments to `\vtop` or `\vbox`. For +`\vbox`, TeX determines the height as follows: + +- If you specify only `vertical mode material`, the vbox will have its + natural height. + +- If you specify `to` `dimen`, the height of the vbox will be `dimen`. + +- If you specify `spread` `dimen`, the height of the vbox will be its + natural height plus `dimen`, i.e., the height of the vbox will be + stretched vertically by `dimen`. + +For `\vtop`, TeX constructs the box using its rules for `\vbox` and then +apportions the vertical extent between the height and the depth as +described below. + +Ordinarily, the width of a constructed vbox is the width of the widest +item inside it.[1] The rules for apportioning the vertical extent +between the height and the depth are more complicated: + +- For `\vtop`, the height is the height of its first item, if that + item is a box or rule. Otherwise the height is zero. The depth is + whatever vertical extent remains after the height is subtracted. + +- For `\vbox`, the depth is the depth of its last item, if that item + is a box or rule. Otherwise the depth is zero. The height is + whatever vertical extent remains after the depth is subtracted. [2] + +The `\vfil` command is useful for filling out a vbox + +with empty space when the material in the box isn’t as tall as the +vertical extent of the box. + +[1] More precisely, it’s the distance from the reference point to the +rightmost edge of the constructed vbox. Therefore, if you move any of +the items right using `\moveright` or `\moveleft` (with a negative +distance), the constructed vbox might be wider. + +[2] In fact, there’s a further complication. Suppose that after the +depth has been determined using the two rules just given, the depth +turns out to be greater than `\boxmaxdepth`. Then the depth is reduced +to `\boxmaxdepth` and the height is adjusted accordingly. +]], + widowpenalty = [[ +This parameter specifies the penalty for breaking a page just before the +last line of a paragraph. A line by itself at the top of a page is +called a “widow line”. Plain TeX sets `\widowpenalty` to 150. +]], + wlog = [[ +This command writes `token list` on the log file. + +TeX expands `token list` according to the same rules that it uses for +`\edef`. +]], + write = [[ +This command tells TeX to write `token list` to the file associated with +the output stream designated by `number`. It generates a whatsit that +becomes part of a box. The actual writing does not take place until +TeX ships out that box to the .dvi file, unless you’ve preceded the +`\write` with `\immediate`. + +For a `\write` that is not immediate, TeX does not expand macros in +`token list` until the token list is actually written to the file. The +macro expansions follow the same rules as `\edef`. In particular, any +control sequence that is not the name of a macro is written as +`\escapechar` followed by the control sequence name and a space. Any +‘`#`’ tokens in `token list` are doubled, i.e., written as ‘`##`’. + +If `number` is not in the range from 0 to 15, TeX writes +`token list` to the log file. + +If `number` is greater than 15 or isn’t associated with an output +stream, TeX also writes `token list` to the terminal. +]], + xdef = [[ +This command is equivalent to `\global\edef`. +]], + year = [[ +TeX sets this parameter to the current year (A.D.). It is a number such +as 1991. `\year` is set at the beginning of your run (see the comments +on `\time` above). +]] +} |