summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/latex2e-help-texinfo/latex2e.texi
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-10-25 22:35:59 +0000
committerKarl Berry <karl@freefriends.org>2015-10-25 22:35:59 +0000
commitf68a915f164bf116f1bb31ab3e1d9f5b94824e29 (patch)
tree54152ae2daf301e13c0f592129a46d03ee92370f /Master/texmf-dist/doc/latex/latex2e-help-texinfo/latex2e.texi
parentc4586dcabf84bccd9caaff8f5b8dcb7cffe324a2 (diff)
latex2e-help-texinfo (25oct15)
git-svn-id: svn://tug.org/texlive/trunk@38709 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/latex2e-help-texinfo/latex2e.texi')
-rw-r--r--Master/texmf-dist/doc/latex/latex2e-help-texinfo/latex2e.texi5077
1 files changed, 3741 insertions, 1336 deletions
diff --git a/Master/texmf-dist/doc/latex/latex2e-help-texinfo/latex2e.texi b/Master/texmf-dist/doc/latex/latex2e-help-texinfo/latex2e.texi
index 7ce2d93da39..d4c8da471e9 100644
--- a/Master/texmf-dist/doc/latex/latex2e-help-texinfo/latex2e.texi
+++ b/Master/texmf-dist/doc/latex/latex2e-help-texinfo/latex2e.texi
@@ -1,8 +1,8 @@
\input texinfo
-@c $Id: latex2e.texi 333 2015-05-12 17:12:37Z karl $
+@c $Id: latex2e.texi 459 2015-10-12 11:33:10Z jhefferon $
@comment %**start of header (This is for running Texinfo on a region.)
@setfilename latex2e.info
-@set UPDATED May 2015
+@set UPDATED October 2015
@settitle @LaTeX{}2e unofficial reference manual (@value{UPDATED})
@comment %**end of header (This is for running Texinfo on a region.)
@@ -18,6 +18,8 @@
@c xx merge http://mirror.ctan.org/latex2e-reference.tar.gz
@c xx merge permuted-index
@c xx merge latex-manual from savannah
+@c xx merge display style math
+@c xx vertical mode, horizontal mode
@c
@c xx The typeset source2e has an index with all kernel
@c xx commands, though some are internal and shouldn't be included.
@@ -86,6 +88,24 @@ into another language, under the above conditions for modified versions.
@shortcontents
@contents
+@c Best Effort Symbol
+@iftex
+@macro BES {utf8,math}
+@math{\math\}
+@end macro
+@macro BESU {utf8,math}
+@code{@backslashchar{}\math\}
+@end macro
+@end iftex
+@ifnottex
+@macro BES {utf8,math}
+@U{\utf8\}
+@end macro
+@macro BESU {utf8,math}
+@U{\utf8\}
+@end macro
+@end ifnottex
+
@node Top
@top @LaTeX{}2e: An unofficial reference manual
@@ -204,7 +224,7 @@ should be formatted. It is implemented as a set of related commands
that interface with Donald@tie{}E. Knuth's @TeX{} typesetting program
(the technical term is that @LaTeX{} is a @dfn{macro package} for the
@TeX{} engine). The user produces the output document by giving that
-file to the @TeX{} engine.
+input file to the @TeX{} engine.
The term @LaTeX{} is also sometimes used to mean the language in which
the document is marked up, that is, to mean the set of commands
@@ -220,7 +240,7 @@ sensible, such as in plain text, write it as @samp{LaTeX}.
@menu
* Starting and ending:: The standard beginning and end of a document.
* Output files:: Files produced.
-* @TeX{} engines:: Programs that implementation @LaTeX{}.
+* @TeX{} engines:: Programs that can compile @TeX{} and @LaTeX{}.
* @LaTeX{} command syntax:: General syntax of @LaTeX{} commands.
@end menu
@@ -229,12 +249,12 @@ sensible, such as in plain text, write it as @samp{LaTeX}.
@section Starting and ending
@anchor{Starting & ending}@c old name
-@cindex starting & ending
-@cindex ending & starting
+@cindex starting and ending
+@cindex ending and starting
@cindex hello, world
-@LaTeX{} files have a simple global structure, with a standard
-starting and ending. Here is a ``hello, world'' example:
+@LaTeX{} files have a simple global structure, with a standard beginning
+and ending. Here is a ``hello, world'' example:
@example
\documentclass@{article@}
@@ -256,9 +276,10 @@ You can include other @LaTeX{} commands between the
This area is called the @dfn{preamble}.
The @code{\begin@{document@} ... \end@{document@}} is a so-called
+@cindex environment
@dfn{environment}; the @samp{document} environment (and no others) is
-required in all @LaTeX{} documents. @LaTeX{} provides many
-environments itself, and many more are defined separately.
+required in all @LaTeX{} documents (@pxref{document}). @LaTeX{}
+provides many environments itself, and many more are defined separately.
@xref{Environments}.
The following sections discuss how to produce PDF or other output from
@@ -363,7 +384,7 @@ overview of the main programs.
@cindex pdf@TeX{} engine
@findex etex @r{command}
@cindex e-@TeX{}
-In @TeX{} Live (@url{http://tug.org/texlive}, if @LaTeX{} is invoked
+In @TeX{} Live (@url{http://tug.org/texlive}), if @LaTeX{} is invoked
via either the system command @command{latex} or @command{pdflatex},
then the pdf@TeX{} engine is run (@url{http://ctan.org/pkg/pdftex}).
When invoked as @command{latex}, the main output is a @file{.dvi}
@@ -372,9 +393,9 @@ file; as @command{pdflatex}, the main output is a @file{.pdf} file.
pdf@TeX{} incorporates the e-@TeX{} extensions to Knuth's original
program (@url{http://ctan.org/pkg/etex}), including additional
programming features and bi-directional typesetting, and has plenty of
-extensions of its own. e-@TeX{} is available on its own as the
+extensions of its own. e-@TeX{} is available on its own as the system
command @command{etex}, but this is plain @TeX{} (and produces
-@file{.dvi}).
+@file{.dvi}).
In other @TeX{} distributions, @command{latex} may invoke e-@TeX{}
rather than pdf@TeX{}. In any case, the e-@TeX{} extensions can be
@@ -395,12 +416,19 @@ but this is rarely used.
@item xelatex
@findex xelatex @r{command}
@cindex Xe@TeX{}
+@findex .xdv @r{file}
+@findex xdvipdfmx
If @LaTeX{} is invoked with the system command @command{xelatex}, the
Xe@TeX{} engine is run (@url{http://tug.org/xetex}). Like Lua@TeX{},
-Xe@TeX{} also natively supports UTF-8 Unicode and TrueType and
-OpenType fonts, though the implementation is completely different,
-mainly using external libraries instead of internal code. Xe@TeX{}
-produces a @file{.pdf} file as output; it does not support DVI output.
+Xe@TeX{} natively supports UTF-8 Unicode and TrueType and OpenType
+fonts, though the implementation is completely different, mainly using
+external libraries instead of internal code. Xe@TeX{} produces a
+@file{.pdf} file as output; it does not support DVI output.
+
+Internally, Xe@TeX{} creates an @code{.xdv} file, a variant of DVI,
+and translates that to PDF using the (@code{x})@code{dvipdfmx}
+program, but this process is automatic. The @code{.xdv} file is only
+useful for debugging.
@end table
@@ -416,27 +444,86 @@ additional support for Japanese and other languages ([u]p@TeX{},
@findex \ @r{character starting commands}
@findex [...] @r{for optional arguments}
@findex @{...@} @r{for required arguments}
-In the @LaTeX{} input file, a command name starts with a @code{\}; the
-name itself then consists of either (a)@tie{}a string of letters or
-(b)@tie{}a single non-letter.
+In the @LaTeX{} input file, a command name starts with a backslash
+character, @code{\}. The name itself then consists of either
+(a)@tie{}a string of letters or (b)@tie{}a single non-letter.
+
+@LaTeX{} commands names are case sensitive so that @code{\pagebreak}
+differs from @code{\Pagebreak} (the latter is not a standard command).
+Most commands are lowercase, but in any event you must enter all
+commands in the same case as they are defined.
+
+A command may be followed by zero, one, or more arguments. These
+arguments may be either required or optional. Required arguments are
+contained in curly braces, @code{@{...@}}. Optional arguments are
+contained in square brackets, @code{[...]}. Generally, but not
+universally, if the command accepts an optional argument, it comes
+first, before any required arguments.
+
+Inside of an optional argument, to use the character close square
+bracket@tie{}(@code{]}) hide it inside curly braces, as
+in@tie{}@code{\item[closing bracket @{]@}]}. Similarly, if an optional
+argument comes last, with no required argument after it, then to make
+the first character of the following text be an open square bracket,
+hide it inside curly braces.
+
+@LaTeX{} has the convention that some commands have a @code{*} form that
+is related to the form without a @code{*}, such as @code{\chapter} and
+@code{\chapter*}. The exact difference in behavior varies from command
+to command.
+
+This manual describes all accepted options and @code{*}-forms for the
+commands it covers (barring unintentional omissions, a.k.a.@: bugs).
-A command may be followed by zero, one, or more arguments, either
-required or optional. Required arguments are contained in curly
-braces, @code{@{...@}}. Optional arguments are contained in square
-brackets, @code{[...]}. Generally, but not universally, if the
-command accepts an optional argument, it comes first, before any
-required arguments.
+@menu
+* Environment:: Area of the source with distinct behavior.
+* Declaration:: Change the value or meaning of a command.
+@end menu
-Some commands have a @code{*} form that is related to the form without
-a @code{*}, such as @code{\chapter} and @code{\chapter*}.
-@LaTeX{} commands are case sensitive; neither @code{\Begin@{document@}}
-nor @code{\begin@{Document@}} will work. Most commands are lowercase,
-but in any event you must enter all commands in the same case as they
-are defined.
+@node Environment
-This manual describes all accepted options and @code{*}-forms for the
-commands it covers (barring unintentional omissions, a.k.a.@: bugs).
+Synopsis:
+
+@example
+\begin@{@var{environment name}@}
+ ..
+\end@{@var{environment name}@}
+@end example
+
+An area of @LaTeX{} source, inside of which there is a distinct
+behavior. For instance, for poetry in @LaTeX{} put the lines between
+@code{\begin@{verse@}} and @code{\end@{verse@}}.
+
+@example
+\begin@{verse@}
+ There once was a man from Nantucket \\
+ ..
+\end@{verse@}
+@end example
+
+The @var{environment name} at the beginning must exactly match that at
+the end. This includes the case where @var{environment name} ends in a
+star@tie{}(@code{*}); both the @code{\begin} and @code{\end} texts must
+include the star.
+
+Environments may have arguments, including optional arguments. This
+example produces a table. The first argument is optional (and causes
+the table to be aligned on its top row) while the second argument is
+required (it specifies the formatting of columns).
+
+@example
+\begin@{tabular@}[t]@{r|l@}
+ .. rows of table ..
+\end@{tabular@}
+@end example
+
+
+@node Declaration
+
+A command that changes the value, or changes the meaning, of some other
+command or parameter. For instance, the @code{\mainmatter} command
+changes the setting of page numbers from roman numerals to arabic.
@node Document classes
@@ -471,6 +558,10 @@ Full-length books, including chapters and possibly including front
matter, such as a preface, and back matter, such as an appendix
(@pxref{Front/back matter}).
+@item letter
+Mail, optionally including mailing labels
+(@pxref{Letters}).
+
@item report
For documents of length between an @code{article} and a @code{book},
such as technical reports or theses, which may contain several chapters.
@@ -524,11 +615,35 @@ options for selecting the typeface size (default is @code{10pt}):
@findex legalpaper @r{option}
@findex letterpaper @r{option}
All of the standard classes accept these options for selecting the paper
-size (default is @code{letterpaper}):
+size (these show height by width):
+
+@table @code
+@item a4paper
+210 by 297 mm (about 8.25 by 11.75 inches)
+
+@item b5paper
+176 by 250 mm (about 7 by 9.875 inches)
+
+@item executivepaper
+7.25 by 10.5 inches
+
+@item legalpaper
+8.5 by 14 inches
+
+@item letterpaper
+8.5 by 11 inches (the default)
+@end table
-@example
-a4paper a5paper b5paper executivepaper legalpaper letterpaper
-@end example
+@findex \pdfpagewidth
+@findex \pdfpageheight
+@cindex @code{geometry} package
+When using one of the engines pdf@LaTeX{}, Lua@LaTeX{}, or Xe@LaTeX{}
+(@pxref{@TeX{} engines}), options other than @code{letterpaper} set
+the print area but you must also set the physical paper size. One way
+to do that is to put @code{\pdfpagewidth=\paperwidth} and
+@code{\pdfpageheight=\paperheight} in your document's preamble. The
+@code{geometry} package provides flexible ways of setting the print
+area and physical page size.
@findex draft @r{option}
@findex final @r{option}
@@ -653,16 +768,17 @@ and a style. The @LaTeX{} commands for doing this are described here.
@section Font styles
@cindex font styles
-@cindex typeface styles
+@cindex type styles
@cindex styles of text
The following type style commands are supported by @LaTeX{}.
This first group of commands is typically used with an argument, as in
-@code{\textit@{italic text@}}. In the table below, the corresponding
+@code{\textit@{@var{text}@}}. In the table below, the corresponding
command in parenthesis is the ``declaration form'', which takes no
-arguments. The scope of the declaration form lasts until the next type
-style command or the end of the current group.
+arguments, as in @code{@{\itshape @var{text}@}}. The scope of the
+declaration form lasts until the next type style command or the end of
+the current group.
These commands, in both the argument form and the declaration form,
are cumulative; e.g., you can say either @code{\sffamily\bfseries} or
@@ -693,11 +809,6 @@ Roman.
@findex \itshape
Italics.
-@item \emph
-@findex \emph
-@cindex emphasis
-Emphasis (switches between @code{\textit} and @code{\textrm}).
-
@item \textmd (\mdseries)
@findex \textmd
@findex \mdseries
@@ -711,7 +822,7 @@ Boldface.
@item \textup (\upshape)
@findex \textup
@findex \upshape
-Upright (default). The opposite of slanted.
+Upright (default).
@item \textsl (\slshape)
@findex \textsl
@@ -738,78 +849,33 @@ Typewriter.
@findex \normalfont
Main document font.
-@item \mathrm
-@findex \mathrm
-Roman, for use in math mode.
-
-@item \mathbf
-@findex \mathbf
-Boldface, for use in math mode.
-
-@item \mathsf
-@findex \mathsf
-Sans serif, for use in math mode.
-
-@item \mathtt
-@findex \mathtt
-Typewriter, for use in math mode.
-
-@item \mathit
-@itemx (\mit)
-Italics, for use in math mode.
-
-@item \mathnormal
-@findex \mathnormal
-For use in math mode, e.g. inside another type style declaration.
-
-@item \mathcal
-@findex \mathcal
-`Calligraphic' letters, for use in math mode.
-
@end table
-@findex \mathversion
-@cindex math, bold
-@cindex bold math
-In addition, the command @code{\mathversion@{bold@}} can be used for
-switching to bold letters and symbols in
-formulas. @code{\mathversion@{normal@}} restores the default.
-
-@findex \oldstylenums
-@cindex numerals, old-style
-@cindex old-style numerals
-@cindex lining numerals
-@cindex @code{textcomp} package
-Finally, the command @code{\oldstylenums@{@var{numerals}@}} will
-typeset so-called ``old-style'' numerals, which have differing heights
-and depths (and sometimes widths) from the standard ``lining''
-numerals. @LaTeX{}'s default fonts support this, and will respect
-@code{\textbf} (but not other styles; there are no italic old-style
-numerals in Computer Modern). Many other fonts have old-style
-numerals also; sometimes the @code{textcomp} package must be loaded,
-and sometimes package options are provided to make them the default.
-FAQ entry: @url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=osf}.
+@cindex emphasis
+@findex \emph
+Although it also changes fonts, the @code{\emph@{@var{text}@}} command
+is semantic, for text to be emphasized, and should not be used as a
+substitute for @code{\textit}. For example, @code{\emph@{@var{start
+text} \emph@{@var{middle text}@} @var{end text}@}} will result in the
+@var{start text} and @var{end text} in italics, but @var{middle text}
+will be in roman.
@LaTeX{} also provides the following commands, which unconditionally
switch to the given style, that is, are @emph{not} cumulative. Also,
-they are used differently than the above commands: @code{@{\@var{cmd}
-...@}} instead of @code{\@var{cmd}@{...@}}. These are two unrelated
-constructs.
+they are used differently than the above commands:
+@code{@{\@var{cmd}...@}} instead of @code{\@var{cmd}@{...@}}. These
+are two unrelated constructs.
@ftable @code
@item \bf
@cindex bold font
-Switch to @b{bold face}.
+Switch to bold face.
@item \cal
@cindex script letters for math
@cindex calligraphic letters for math
Switch to calligraphic letters for math.
-@item \em
-@cindex emphasis
-Emphasis (italics within roman, roman within italics).
-
@item \it
@cindex italic font
Italics.
@@ -839,17 +905,79 @@ Typewriter (monospace, fixed-width).
@end ftable
-Some people consider the unconditional font-switching commands, such
-as @code{\tt}, obsolete and @emph{only} the cumulative commands
-(@code{\texttt}) should be used. I (Karl) do not agree. There are
-perfectly reasonable situations when an unconditional font switch is
-precisely what you need to get the desired output; for one example,
-@pxref{description,,@code{description}}. Both sets of commands have
-their place.
+The @code{\em} command is the unconditional version of @code{\emph}.
+
+(Some people consider the unconditional font-switching commands, such
+as @code{\tt}, obsolete and that only the cumulative commands
+(@code{\texttt}) should be used. Others think that both sets of
+commands have their place and sometimes an unconditional font switch
+is precisely what you want; for one example,
+@pxref{description,,@code{description}}.)
+
+The following commands are for use in math mode. They are not
+cumulative, so @code{\mathbf@{\mathit@{@var{symbol}@}@}} does not
+create a boldface and italic @var{symbol}; instead, it will just be in
+italics. This is because typically math symbols need consistent
+typographic treatment, regardless of the surrounding environment.
+
+@table @code
+@item \mathrm
+@findex \mathrm
+Roman, for use in math mode.
+
+@item \mathbf
+@findex \mathbf
+Boldface, for use in math mode.
+
+@item \mathsf
+@findex \mathsf
+Sans serif, for use in math mode.
+
+@item \mathtt
+@findex \mathtt
+Typewriter, for use in math mode.
+
+@item \mathit
+@itemx (\mit)
+Italics, for use in math mode.
+
+@item \mathnormal
+@findex \mathnormal
+For use in math mode, e.g., inside another type style declaration.
+
+@item \mathcal
+@findex \mathcal
+Calligraphic letters, for use in math mode.
+
+@end table
+
+@findex \mathversion
+@cindex math, bold
+@cindex bold math
+In addition, the command @code{\mathversion@{bold@}} can be used for
+switching to bold letters and symbols in
+formulas. @code{\mathversion@{normal@}} restores the default.
+
+@findex \oldstylenums
+@cindex numerals, old-style
+@cindex old-style numerals
+@cindex lining numerals
+@cindex @code{textcomp} package
+Finally, the command @code{\oldstylenums@{@var{numerals}@}} will typeset
+so-called ``old-style'' numerals, which have differing heights and
+depths (and sometimes widths) from the standard ``lining'' numerals,
+which all have the same height as upper-case letters. @LaTeX{}'s
+default fonts support this, and will respect @code{\textbf} (but not
+other styles; there are no italic old-style numerals in Computer
+Modern). Many other fonts have old-style numerals also; sometimes the
+@code{textcomp} package must be loaded, and sometimes package options
+are provided to make them the default. FAQ entry:
+@url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=osf}.
@node Font sizes
@section Font sizes
+
@cindex font sizes
@cindex typeface sizes
@cindex sizes of text
@@ -903,50 +1031,119 @@ these commands; for instance, @code{\begin@{tiny@}...\end@{tiny@}}.
@node Low-level font commands
@section Low-level font commands
+
@cindex low-level font commands
@cindex font commands, low-level
These commands are primarily intended for writers of macros and
packages. The commands listed here are only a subset of the available
ones.
+@c xx but it should be complete
+@c xx something about ultimately reading ENCFAM.fd?
@table @code
-@item \fontencoding@{enc@}
+@item \fontencoding@{@var{encoding}@}
@findex \fontencoding
-Select font encoding. Valid encodings include @code{OT1} and @code{T1}.
-
-@item \fontfamily@{family@}
+Select the font encoding, the encoding of the output font. There are a
+large number of valid encodings. The most common are @code{OT1},
+Knuth's original encoding for Computer Modern (the default), and
+@code{T1}, also known as the Cork encoding, which has support for the
+accented characters used by the most widespread European languages
+(German, French, Italian, Polish and others), which allows @TeX{} to
+hyphenate words containing accented letters.
+
+@item \fontfamily@{@var{family}@}
@findex \fontfamily
-Select font family. Valid families include:
-
-@itemize @bullet
-@item @code{cmr} for Computer Modern Roman
-@item @code{cmss} for Computer Modern Sans Serif
-@item @code{cmtt} for Computer Modern Typewriter
+@cindex families, of fonts
+@cindex font catalogue
+Select the font family. The web page
+@url{http://www.tug.dk/FontCatalogue/} provides one way to browse
+through many of the fonts easily used with @LaTeX{}. Here are
+examples of some common families:
+
+@c Sorry about the ugly @t{@ }. The idea is to make the lists line up
+@c in Info. Since the items are so short, it seems nice to have them
+@c on the same line instead of using @table.
+
+@itemize @w{}
+@item @code{pag}@t{@ } Avant Garde
+@item @code{fvs}@t{@ } Bitstream Vera Sans
+@item @code{pbk}@t{@ } Bookman
+@item @code{bch}@t{@ } Charter
+@item @code{ccr}@t{@ } Computer Concrete
+@item @code{cmr}@t{@ } Computer Modern
+@item @code{pcr}@t{@ } Courier
+@item @code{phv}@t{@ } Helvetica
+@item @code{fi4}@t{@ } Inconsolata
+@item @code{lmr}@t{@ } Latin Modern
+@item @code{lmss} Latin Modern Sans
+@item @code{lmtt} Latin Modern Typewriter
+@item @code{pnc}@t{@ } New Century Schoolbook
+@item @code{ppl}@t{@ } Palatino
+@item @code{ptm}@t{@ } Times
+@item @code{uncl} Uncial
+@item @code{put}@t{@ } Utopia
+@item @code{pzc}@t{@ } Zapf Chancery
@end itemize
-and numerous others.
-
-@item \fontseries@{series@}
+@item \fontseries@{@var{series}@}
@findex \fontseries
-Select font series. Valid series include:
-
-@itemize @bullet
-@item @code{m} Medium (normal)
-@item @code{b} Bold
-@item @code{c} Condensed
+@cindex series, of fonts
+Select the font series. A @dfn{series} combines a @dfn{weight} and a
+@dfn{width}. Typically, a font supports only a few of the possible
+combinations. Some common combined series values include:
+
+@itemize @w{}
+@item @code{m}@t{@ } Medium (normal)
+@item @code{b}@t{@ } Bold
+@item @code{c}@t{@ } Condensed
@item @code{bc} Bold condensed
@item @code{bx} Bold extended
@end itemize
-and various other combinations.
+@cindex weights, of fonts
+The possible values for weight, individually, are:
+
+@itemize @w{}
+@item @code{ul} Ultra light
+@item @code{el} Extra light
+@item @code{l}@t{@ } Light
+@item @code{sl} Semi light
+@item @code{m}@t{@ } Medium (normal)
+@item @code{sb} Semi bold
+@item @code{b}@t{@ } Bold
+@item @code{eb} Extra bold
+@item @code{ub} Ultra bold
+@end itemize
+
+@cindex widths, of fonts
+The possible values for width, individually, are (the percentages
+are just guides and are not followed precisely by all fonts):
+
+@itemize @w{}
+@item @code{uc} Ultra condensed, 50%
+@item @code{ec} Extra condensed, 62.5%
+@item @code{c}@t{@ } Condensed, 75%
+@item @code{sc} Semi condensed, 87.5%
+@item @code{m}@t{@ } Medium, 100%
+@item @code{sx} Semi expanded, 112.5%
+@item @code{x}@t{@ } Expanded, 125%
+@item @code{ex} Extra expanded, 150%
+@item @code{ux} Ultra expanded, 200%
+@end itemize
-@item \fontshape@{shape@}
+When forming the @var{series} string from the weight and width, drop the
+@code{m} that stands for medium weight or medium width, unless both
+weight and width are @code{m}, in which case use just one
+(@samp{@code{m}}).
+
+@item \fontshape@{@var{shape}@}
@findex \fontshape
+@cindex shapes, of fonts
Select font shape. Valid shapes are:
-@itemize @bullet
-@item @code{n} Upright (normal)
+@itemize @w{}
+@item @code{n}@t{@ } Upright (normal)
@item @code{it} Italic
@item @code{sl} Slanted (oblique)
@item @code{sc} Small caps
@@ -954,53 +1151,73 @@ Select font shape. Valid shapes are:
@item @code{ol} Outline
@end itemize
-The two last shapes are not available for most font families.
+The two last shapes are not available for most font families, and
+small caps are often missing as well.
-@item \fontsize@{size@}@{skip@}
+@item \fontsize@{@var{size}@}@{@var{skip}@}
@findex \fontsize
+@cindex font size
@findex \baselineskip
-Set font size. The first parameter is the font size to switch to and
-the second is the line spacing to use; this is stored in a parameter
-named @code{\baselineskip}. The unit of both parameters defaults to
-pt. The default @code{\baselineskip} for the Computer Modern typeface
-is 1.2 times the @code{\fontsize}.
-
+Set the font size and the line spacing. The unit of both parameters
+defaults to points (@code{pt}). The line spacing is the nominal
+vertical space between lines, baseline to baseline. It is stored in the
+parameter @code{\baselineskip}. The default @code{\baselineskip} for
+the Computer Modern typeface is 1.2 times the @code{\fontsize}.
+Changing @code{\baselineskip} directly is inadvisable since its value is
+reset every time a size change happens; see @code{\baselinestretch}, next.
+
+@item \baselinestretch
@findex \baselinestretch
+@LaTeX{} multiplies the line spacing by the value of the
+@code{\baselinestretch} parameter; the default factor is 1. A change
+takes effect when @code{\selectfont} (see below) is called. You can
+make line skip changes happen for the entire document by doing
+@code{\renewcommand@{\baselinestretch@}@{2.0@}} in the preamble.
+
@cindex @code{setspace} package
@cindex double spacing
-The line spacing is also multiplied by the value of the
-@code{\baselinestretch} parameter when the type size changes; the
-default is 1. However, the best way to ``double space'' a document,
-if you should be unlucky enough to have to produce such, is to use the
-@code{setspace} package; see
-@url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=linespace}.
+However, the best way to double-space a document is to use the
+@file{setspace} package. In addition to offering a number of spacing
+options, this package keeps the line spacing single-spaced in places
+where that is typically desirable, such as footnotes and figure
+captions. See the package documentation.
-@findex \linespread
@item \linespread@{@var{factor}@}
+@findex \linespread
Equivalent to
@code{\renewcommand@{\baselinestretch@}@{@var{factor}@}}, and
therefore must be followed by @code{\selectfont} to have any effect.
Best specified in the preamble, or use the @code{setspace} package, as
-described just above.
+just described.
+@item \selectfont
@findex \selectfont
-The changes made by calling the font commands described above do
-not come into effect until @code{\selectfont} is called.
-
-@item \usefont@{enc@}@{family@}@{series@}@{shape@}
+The effects of the font commands described above do not happen until
+@code{\selectfont} is called, as in
+@code{\fontfamily@{@var{familyname}@}\selectfont}. It is often useful
+to put this in a macro:@*
+@code{\newcommand*@{\myfont@}@{\fontfamily@{@var{familyname}@}\selectfont@}}@*
+(@pxref{\newcommand & \renewcommand}).
+
+@item \usefont@{@var{enc}@}@{@var{family}@}@{@var{series}@}@{@var{shape}@}
@findex \usefont
The same as invoking @code{\fontencoding}, @code{\fontfamily},
@code{\fontseries} and @code{\fontshape} with the given parameters,
-followed by @code{\selectfont}.
+followed by @code{\selectfont}. For example:
+
+@example
+\usefont@{ot1@}@{cmr@}@{m@}@{n@}
+@end example
@end table
@node Layout
@chapter Layout
+
@cindex layout commands
-Miscellaneous commands for controlling the general layout of the page.
+Commands for controlling the general page layout.
@menu
* \onecolumn:: Use one-column layout.
@@ -1008,20 +1225,27 @@ Miscellaneous commands for controlling the general layout of the page.
* \flushbottom:: Make all text pages the same height.
* \raggedbottom:: Allow text pages of differing height.
* Page layout parameters:: @code{\headheight} @code{\footskip}.
+* Floats:: Figures, tables, etc.
@end menu
@node \onecolumn
@section @code{\onecolumn}
+
@findex \onecolumn
@cindex one-column output
The @code{\onecolumn} declaration starts a new page and produces
-single-column output. This is the default.
+single-column output. If the document is given the class option
+@code{onecolumn} then this is the default behavior (@pxref{Document
+class options}).
+
+This command is fragile (@pxref{\protect}).
@node \twocolumn
@section @code{\twocolumn}
+
@findex \twocolumn
@cindex multicolumn text
@cindex two-column output
@@ -1029,74 +1253,162 @@ single-column output. This is the default.
Synopsis:
@example
-\twocolumn[@var{text1col}]
+\twocolumn[@var{prelim one column text}]
@end example
The @code{\twocolumn} declaration starts a new page and produces
-two-column output. If the optional @var{text1col} argument is present,
-it is typeset in one-column mode before the two-column typesetting
-starts.
+two-column output. If the document is given the class option
+@code{twocolumn} then this is the default (@pxref{Document class
+options}).
+
+If the optional @var{prelim one column text} argument
+is present, it is typeset in one-column mode before the two-column
+typesetting starts.
+
+This command is fragile (@pxref{\protect}).
These parameters control typesetting in two-column output:
@ftable @code
@item \columnsep
-The distance between columns (35pt by default).
+The distance between columns. The default is 35pt. Change it with a
+command such as @code{\setlength@{\columnsep@}@{40pt@}} You must change
+it before the two column environment starts; in the preamble is a good
+place.
@item \columnseprule
-The width of the rule between columns; the default is 0pt, so there is no rule.
+The width of the rule between columns. The rule appears halfway between
+the two columns. The default is 0pt, meaning that there is no rule.
+Change it with a command such as
+@code{\setlength@{\columnseprule@}@{0.4pt@}}, before the two-column
+environment starts.
@item \columnwidth
-The width of the current column; this is equal to @code{\textwidth} in
-single-column text.
+The width of a single column. In one-column mode this is equal to
+@code{\textwidth}. In two-column mode by default @LaTeX{} sets the
+width of each of the two columns to be half of @code{\textwidth} minus
+@code{\columnsep}.
@end ftable
-These parameters control float behavior in two-column output:
+In a two-column document, the starred environments @code{table*} and
+@code{figure*} are two columns wide, whereas the unstarred environments
+@code{table} and @code{figure} take up only one column (@pxref{figure}
+and @pxref{table}). @LaTeX{} places starred floats at the top of a page.
+The following parameters control float behavior of two-column output.
@ftable @code
@item \dbltopfraction
-Maximum fraction at the top of a two-column page that may be occupied
-by floats. Default @samp{.7}, can be usefully redefined to (say)
-@samp{.9} to avoid going to float pages so soon.
+The maximum fraction at the top of a two-column page that may be
+occupied by two-column wide floats. The default is 0.7, meaning that
+the height of a @code{table*} or @code{figure*} environment must not
+exceed @code{0.7\textheight} . If the height of your starred float
+environment exceeeds this then you can take one of the following actions
+to prevent it from floating all the way to the back of the document:
+
+@itemize @bullet
+@item
+Use the @code{[tp]} location specifier to tell LaTeX to try to put
+the bulky float on a page by itself, as well as at the top of a page.
+
+@item
+Use the @code{[t!]} location specifier to override the effect of
+@code{\dbltopfraction} for this particular float.
+
+@item
+Increase the value of @code{\dbltopfraction} to a suitably large number,
+to avoid going to float pages so soon.
+@end itemize
+
+You can redefine it, for instance with
+@code{\renewcommand@{\dbltopfraction@}@{0.9@}}.
@item \dblfloatpagefraction
-The minimum fraction of a float page that must be occupied by floats,
-for a two-column float page. Default @samp{.5}.
+For a float page of two-column wide floats, this is the minimum fraction
+that must be occupied by floats, limiting the amount of blank space.
+@LaTeX{}'s default is @code{0.5}. Change it with @code{\renewcommand}.
@item \dblfloatsep
-Distance between floats at the top or bottom of a two-column float
-page. Default @samp{12pt plus2pt minus2pt} for @samp{10pt} and
-@samp{11pt} documents, @samp{14pt plus2pt minus4pt} for @samp{12pt}.
+On a float page of two-column wide floats, this length is the distance
+between floats, at both the top and bottom of the page. The default is
+@code{12pt plus2pt minus2pt} for a document set at @code{10pt} or
+@code{11pt}, and @code{14pt plus2pt minus4pt} for a document set at
+@code{12pt}.
@item \dbltextfloatsep
-Distance between a multi-column float at the top or bottom of a page
-and the main text. Default @samp{20pt plus2pt minus4pt}.
+This length is the distance between a multi-column float at the top or
+bottom of a page and the main text. The default is @code{20pt plus2pt
+minus4pt}.
+
+@item \dbltopnumber
+On a float page of two-column wide floats, this counter gives the
+maximum number of floats allowed at the top of the page. The @LaTeX{}
+default is @code{2}.
@end ftable
+@c From egreg at http://tex.stackexchange.com/a/142232/339
+This example shows the use of the optional argument of @code{\twocolumn}
+to create a title that spans the two-column article:
+
+@example
+\documentclass[twocolumn]@{article@}
+\newcommand@{\authormark@}[1]@{\textsuperscript@{#1@}@}
+\begin@{document@}
+\twocolumn[@{% inside this optional argument goes one-column text
+ \centering
+ \LARGE The Title \\[1.5em]
+ \large Author One\authormark@{1@},
+ Author Two\authormark@{2@},
+ Author Three\authormark@{1@} \\[1em]
+ \normalsize
+ \begin@{tabular@}@{p@{.2\textwidth@}@@@{\hspace@{2em@}@}p@{.2\textwidth@}@}
+ \authormark@{1@}Department one &\authormark@{2@}Department two \\
+ School one &School two
+ \end@{tabular@}\\[3em] % space below title part
+@}]
+
+Two column text here.
+@end example
+
@node \flushbottom
@section @code{\flushbottom}
@findex \flushbottom
-The @code{\flushbottom} declaration makes all text pages the same
-height, adding extra vertical space where necessary to fill out the
-page.
+The @code{\flushbottom} command can go at any point in the document
+body. It makes all later pages the same height, stretching the vertical
+space where necessary to fill out the page.
+
+If @TeX{} cannot satisfactorily stretch the vertical space in a page
+then you get a message like @samp{Underfull \vbox (badness 10000) has
+occurred while \output is active}. You can change to
+@code{\raggedbottom} (see below). Alternatively, you can try to adjust
+the @code{textheight} to be compatible, or you can add some vertical
+stretch glue between lines or between paragraphs, as in
+@code{\setlength@{\parskip@}@{0ex plus0.1ex@}}. In a final editing
+stage you can adjust the height of individual pages
+(@pxref{\enlargethispage}).
-This is the default if @code{twocolumn} mode is selected
-(@pxref{Document class options}).
+This is the default only if you select the @code{twoside} document class
+option (@pxref{Document class options}).
@node \raggedbottom
@section @code{\raggedbottom}
+
@findex \raggedbottom
@cindex stretch, omitting vertical
-The @code{\raggedbottom} declaration makes all pages the natural
-height of the material on that page. No rubber lengths will be
-stretched.
+The @code{\raggedbottom} command can go at any point in the document
+body. It makes all later pages the natural height of the material on
+that page; no rubber lengths will be stretched. Thus, in a two-sided
+document the facing pages may be different heights. See also
+@code{\flushbottom} above.
+
+This is the default unless you select the @code{twoside} document class
+option (@pxref{Document class options}).
@node Page layout parameters
@@ -1110,45 +1422,125 @@ stretched.
@cindex running header and footer
@ftable @code
+@item \columnsep
+@itemx \columnseprule
+@itemx \columnwidth
+@findex \columnsep
+@findex \columnseprule
+@findex \columnwidth
+The distance between the two columns, the width of a rule between the
+columns, and the width of the columns, when the document class option
+@code{twocolumn} is in effect (@pxref{Document class options}).
+@xref{\twocolumn}.
+
@item \headheight
-Height of the box that contains the running head. Default is
-@samp{30pt}, except in the @code{book} class, where it varies with the
-type size.
+@findex \headheight
+Height of the box that contains the running head. The default in the
+@code{article}, @code{report}, and @code{book} classes is @samp{12pt},
+at all type sizes.
@item \headsep
+@findex \headsep
Vertical distance between the bottom of the header line and the top of
-the main text. Default is @samp{25pt}, except in the @code{book}
-class, where it varies with the type size.
+the main text. The default in the @code{article} and @code{report}
+classes is @samp{25pt}. In the @code{book} class the default is: if the
+document is set at 10pt then it is @samp{0.25in}, and at 11pt and 12pt
+it is @samp{0.275in}.
@item \footskip
+@findex \footskip
Distance from the baseline of the last line of text to the baseline of
-the page footer. Default is @samp{30pt}, except in the @code{book}
-class, where it varies with the type size.
+the page footer. The default in the @code{article} and @code{report}
+classes is @samp{30pt}. In the @code{book} class the default is: when
+the type size is 10pt the default is @samp{0.35in}, while at 11pt it is
+@samp{0.38in}, and at 12pt it is @samp{30pt}.
@item \linewidth
+@findex \linewidth
Width of the current line, decreased for each nested @code{list}
-(@pxref{list}). Specifically, it is smaller than @code{\textwidth} by
-the sum of @code{\leftmargin} and @code{\rightmargin}
-(@pxref{itemize}). The default varies with the font size, paper
-width, two-column mode, etc. For an @code{article} document in
-@samp{10pt}, it's set to @samp{345pt}; in two-column mode, that
-becomes @samp{229.5pt}.
+(@pxref{list}). That is, the nominal value for @code{\linewidth} is to
+equal @code{\textwidth} but for each nested list the @code{\linewidth}
+is decreased by the sum of that list's @code{\leftmargin} and
+@code{\rightmargin} (@pxref{itemize}).
+@c The default varies with the font size, paper width, two-column mode,
+@c etc. For an @code{article} document set in 10pt, the default is
+@c @samp{345pt}, while in two-column mode that becomes @samp{229.5pt}.
+
+@item \marginparpush
+@itemx \marginsep
+@itemx \marginparwidth
+@findex \marginparpush
+@findex \marginsep
+@findex \marginparwidth
+The minimum vertical space between two marginal notes, the horizontal
+space between the text body and the marginal notes, and the horizontal
+width of the notes.
+
+Normally marginal notes appear on the outside of the page, but the
+declaration @code{\reversemarginpar} changes that (and
+@code{\normalmarginpar} changes it back).
+
+The defaults for @code{\marginparpush} in both @code{book} and
+@code{article} classes are: @samp{7pt} if the document is set at 12pt,
+and @samp{5pt} if the document is set at 11pt or 10pt.
+
+For @code{\marginsep}, in @code{article} class the default is
+@samp{10pt} except if the document is set at 10pt and in two-column mode
+where the default is @samp{11pt}.
+
+For @code{\marginsep} in @code{book} class the default is @samp{10pt} in
+two-column mode and @samp{7pt} in one-column mode.
+
+For @code{\marginparwidth} in both @code{book} and @code{article}
+classes, in two-column mode the default is 60% of @code{\paperwidth
+@minus{} \textwidth}, while in one-column mode it is 50% of that
+distance.
+
+@item \oddsidemargin
+@itemx \evensidemargin
+@findex \oddsidemargin
+@findex \evensidemargin
+The @code{\oddsidemargin} is the extra distance between the left side of
+the page and the text's left margin, on odd-numbered pages when the
+document class option @code{twoside} is chosen and on all pages when
+@code{oneside} is in effect. When @code{twoside} is in effect, on
+even-numbered pages the extra distance on the left is
+@code{evensidemargin}.
+
+@LaTeX{}'s default is that @code{\oddsidemargin} is 40% of the
+difference between @code{\paperwidth} and @code{\textwidth}, and
+@code{\evensidemargin} is the remainder.
+
+@item \paperheight
+@findex \paperheight
+The height of the paper, as distinct from the height of the print area.
+It is normally set with a document class option, as in
+@code{\documentclass[a4paper]@{article@}} (@pxref{Document class
+options}).
+
+@item \paperwidth
+@findex \paperwidth
+The width of the paper, as distinct from the width of the print area.
+It is normally set with a document class option, as in
+@code{\documentclass[a4paper]@{article@}} (@pxref{Document class
+options}).
@item \textheight
-The normal vertical height of the page body; the default varies with
-the font size, document class, etc. For an @code{article} or
-@code{report} document in @samp{10pt}, it's set to
-@samp{43\baselineskip}; for @code{book}, it's @samp{41\baselineskip}.
-For @samp{11pt}, it's @samp{38\baselineskip} and for @samp{12pt},
-@samp{36\baselineskip}.
+@findex \textheight
+The normal vertical height of the page body. If the document is set at
+a nominal type size of 10pt then for an @code{article} or @code{report}
+the default is @samp{43\baselineskip}, while for a @code{book} it is
+@samp{41\baselineskip}. At a type size of 11pt the default is
+@samp{38\baselineskip} for all document classes. At 12pt it is
+@samp{36\baselineskip} for all classes.
@item \textwidth
-The full horizontal width of the entire page body; the default varies
-as usual. For an @code{article} or @code{report} document, it's
-@samp{345pt} at @samp{10pt}, @samp{360pt} at @samp{11pt}, and
-@samp{390pt} at @samp{12pt}. For a @code{book} document, it's
-@samp{4.5in} at @samp{10pt}, and @samp{5in} at @samp{11pt} or
-@samp{12pt}.
+@findex \textwidth
+The full horizontal width of the entire page body. For an
+@code{article} or @code{report} document, the default is @samp{345pt}
+when the chosen type size is 10pt, the default is @samp{360pt} at 11pt,
+and it is @samp{390pt} at 12pt. For a @code{book} document, the default
+is @samp{4.5in} at a type size of 10pt, and @samp{5in} at 11pt or 12pt.
In multi-column output, @code{\textwidth} remains the width of the
entire page body, while @code{\columnwidth} is the width of one column
@@ -1164,28 +1556,211 @@ specified width, and revert to their normal values at the end of the
@code{minipage} or @code{\parbox}.
@findex \hsize
-For completeness: @code{\hsize} is the @TeX{} primitive parameter used
-when text is broken into lines. It should not be used in normal
-@LaTeX{} documents.
+@findex \hsize
+This entry is included for completeness: @code{\hsize} is the @TeX{}
+primitive parameter used when text is broken into lines. It should not
+be used in normal @LaTeX{} documents.
@item \topmargin
+@findex topmargin
Space between the top of the @TeX{} page (one inch from the top of the
-paper, by default) and the top of the header. The default is computed
+paper, by default) and the top of the header. The value is computed
based on many other parameters: @code{\paperheight @minus{} 2in @minus{}
-\headheight @minus{} \headsep @minus{} \textheight @minus{} \footskip}, and
-then divided by two.
+\headheight @minus{} \headsep @minus{} \textheight @minus{} \footskip},
+and then divided by two.
@item \topskip
+@findex \topskip
Minimum distance between the top of the page body and the baseline of
the first line of text. For the standard classes, the default is the
-same as the font size, e.g., @samp{10pt} at @samp{10pt}.
+same as the font size, e.g., @samp{10pt} at a type size of 10pt.
@end ftable
+@node Floats
+@section Floats
+
+Some typographic elements, such as figures and tables, cannot be broken
+across pages. They must be typeset outside of the normal flow of text,
+for instance floating to the top of a later page.
+
+@LaTeX{} can have a number of different classes of floating material.
+The default is the two classes, @code{figure} (@pxref{figure}) and
+@code{table} (@pxref{table}), but you can create a new class with the
+package @file{float}.
+
+Within any one float class @LaTeX{} always respects the order, so that
+the first figure in a document source must be typeset before the second
+figure. However, @LaTeX{} may mix the classes, so it can happen that
+while the first table appears in the source before the first figure, it
+appears in the output after it.
+
+The placement of floats is subject to parameters, given below, that
+limit the number of floats that can appear at the top of a page, and the
+bottom, etc. If so many floats are queued up that the limits prevent
+them all from fitting on a page then @LaTeX{} places what it can and
+defers the rest to the next page. In this way, floats may be typset far
+from their place in the source. In particular, a float that is big can
+migrate to the end of the document. But then because all floats in a
+class must appear in sequential order, every subsequent float in that
+class also appears at the end.
+
+@cindex placement of floats
+@cindex specifier, float placement
+In addition to changing the parameters, for each float you can tweak
+where the float placement algorithm tries to place it by using its
+@var{placement} argument. The possible values are a sequence of the
+letters below. The default for both @code{figure} and @code{table}, in
+both @code{article} and @code{book} classes, is @code{tbp}.
+
+@table @code
+@item t
+(Top)---at the top of a text page.
+
+@item b
+(Bottom)---at the bottom of a text page. (However, @code{b} is not
+allowed for full-width floats (@code{figure*}) with double-column
+output. To ameliorate this, use the @file{stfloats} or
+@file{dblfloatfix} package, but see the discussion at caveats in the
+FAQ: @url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=2colfloat}.
+
+@item h
+(Here)---at the position in the text where the @code{figure} environment
+appears. However, @code{h} is not allowed by itself; @code{t} is
+automatically added.
+
+@cindex here, putting floats
+@cindex @code{float} package
+To absolutely force a float to appear ``here'', you can
+@code{\usepackage@{float@}} and use the @code{H} specifier which it
+defines. For further discussion, see the FAQ entry at
+@url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=figurehere}.
+
+@item p
+@cindex float page
+(Page of floats)---on a separate @dfn{float page}, which is a page
+containing no text, only floats.
+
+@item !
+Used in addition to one of the above; for this float only, @LaTeX{}
+ignores the restrictions on both the number of floats that can appear
+and the relative amounts of float and non-float text on the page.
+The @code{!} specifier does @emph{not} mean ``put the float here'';
+see above.
+
+@end table
+
+Note: the order in which letters appear in the @var{placement} argument
+does not change the order in which @LaTeX{} tries to place the float;
+for instance, @code{btp} has the same effect as @code{tbp}. All that
+@var{placement} does is that if a letter is not present then the
+algorithm does not try that location. Thus, @LaTeX{}'s default of
+@code{tbp} is to try every location except placing the float where it
+occurs in the source.
+
+To prevent @LaTeX{} from moving floats to the end of the document or a
+chapter you can use a @code{\clearpage} command to start a new page and
+insert all pending floats. If a pagebreak is undesirable then you can
+use the @file{afterpage} package and issue
+@code{\afterpage@{\clearpage@}}. This will wait until the current page
+is finished and then flush all outstanding floats.
+
+@LaTeX{} can typeset a float before where it appears in the source
+(although on the same output page) if there is a @code{t} specifier in the
+@var{placement} paramater. If this is not desired, and deleting the
+@code{t} is not acceptable as it keeps the float from being placed at
+the top of the next page, then you can prevent it by either using the
+@file{flafter} package or using the command
+@findex \suppressfloats
+@code{\suppressfloats[t]}, which causes floats for the top position on
+this page to moved to the next page.
+
+Parameters relating to fractions of pages occupied by float and
+non-float text (change them with
+@code{\renewcommand@{@var{parameter}@}@{@var{decimal between 0 and 1}@}}):
+
+@ftable @code
+@item \bottomfraction
+@findex \bottomfraction
+The maximum fraction of the page allowed to be occupied by floats at
+the bottom; default @samp{.3}.
+
+@item \floatpagefraction
+@findex \floatpagefraction
+The minimum fraction of a float page that must be occupied by floats;
+default @samp{.5}.
+
+@item \textfraction
+@findex \textfraction
+Minimum fraction of a page that must be text; if floats take up too
+much space to preserve this much text, floats will be moved to a
+different page. The default is @samp{.2}.
+
+@item \topfraction
+@findex \topfraction
+Maximum fraction at the top of a page that may be occupied before
+floats; default @samp{.7}.
+@end ftable
+
+Parameters relating to vertical space around floats (change them with
+@code{\setlength@{@var{parameter}@}@{@var{length expression}@}}):
+
+@ftable @code
+@item \floatsep
+@findex \floatsep
+Space between floats at the top or bottom of a page; default
+@samp{12pt plus2pt minus2pt}.
+
+@item \intextsep
+@findex \intextsep
+Space above and below a float in the middle of the main text; default
+@samp{12pt plus2pt minus2pt} for 10 point and 11 point documents,
+and @samp{14pt plus4pt minus4pt} for 12 point documents.
+
+@item \textfloatsep
+@findex \textfloatsep
+Space between the last (first) float at the top (bottom) of a page;
+default @samp{20pt plus2pt minus4pt}.
+@end ftable
+
+Counters relating to the number of floats on a page (change them with
+@code{\setcounter@{@var{ctrname}@}@{@var{natural number}@}}):
+
+@ftable @code
+@item bottomnumber
+@findex bottomnumber
+Maximum number of floats that can appear at the bottom of a text page;
+default 1.
+
+@item dbltopnumber
+@findex dbltopnumber
+Maximum number of full-sized floats that can appear at the top of a
+two-column page; default 2.
+
+@item topnumber
+@findex topnumber
+Maximum number of floats that can appear at the top of a text page;
+default 2.
+
+@item totalnumber
+@findex totalnumber
+Maximum number of floats that can appear on a text page; default 3.
+@end ftable
+
+The principal @TeX{}@tie{}FAQ entry relating to floats
+@url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=floats} contains
+suggestions for relaxing @LaTeX{}'s default parameters to reduce the
+problem of floats being pushed to the end. A full explaination of the
+float placement algorithm is Frank Mittelbach's article ``How to
+infuence the position of float environments like figure and table in
+@LaTeX{}?'' @url{http://latex-project.org/papers/tb111mitt-float.pdf}.
+
+
@node Sectioning
@chapter Sectioning
-@cindex sectioning
+
+@cindex sectioning commands
Sectioning commands provide the means to structure your text into units:
@@ -1221,7 +1796,7 @@ To handle this, the sectioning commands have an optional argument
@var{toctitle} that, when given, specifies the text for these other
places.
-@cindex *-form of sectioning commands
+@cindex @code{*}-form of sectioning commands
Also, all sectioning commands have @code{*}-forms that print
@var{title} as usual, but do not include a number and do not make an
entry in the table of contents. For instance:
@@ -1260,6 +1835,7 @@ suppresses heading numbers at any depth @math{> @var{level}}, where
@node Cross references
@chapter Cross references
+
@cindex cross references
One reason for numbering things like figures and equations is to refer
@@ -1274,6 +1850,7 @@ the reader to them, as in ``See Figure 3 for more details.''
@node \label
@section @code{\label}
+
@findex \label
Synopsis:
@@ -1284,15 +1861,35 @@ Synopsis:
A @code{\label} command appearing in ordinary text assigns to
@var{key} the number of the current sectional unit; one appearing
-inside a numbered environment assigns that number to @var{key}.
+inside a numbered environment assigns that number to @var{key}. The
+assigned number can be retrieved with the @code{\ref@{@var{key}@}}
+command (@pxref{\ref}).
+
+Thus, in the example below the key @code{sec:test} holds the number of
+the current section and the key @code{fig:test} that of the figure.
+(Incidentally, labels must appear after captions in figures and
+tables.)
-A @var{key} name can consist of any sequence of letters, digits, or
+@example
+\section@{section name@}
+\label@{sec:test@}
+This is Section~\ref@{sec:test@}.
+\begin@{figure@}
+ ...
+ \caption@{caption text@}
+ \label@{fig:test@}
+\end@{figure@}
+See Figure~\ref@{fig:test@}.
+@end example
+
+A key name can consist of any sequence of letters, digits, or common
punctuation characters. Upper and lowercase letters are
distinguished, as usual.
-To avoid accidentally creating two labels with the same name, it is
-common to use labels consisting of a prefix and a suffix separated by
-a colon or period. Some conventionally-used prefixes:
+Although the name can be more or less anything, a common convention is
+to use labels consisting of a prefix and a suffix separated by a colon
+or period. This helps to avoid accidentally creating two labels with
+the same name. Some commonly-used prefixes:
@table @code
@item ch
@@ -1307,12 +1904,13 @@ for tables
for equations
@end table
-Thus, a label for a figure would look like @code{fig:snark} or
-@code{fig.snark}.
+Thus, a label for a figure would look like @code{fig:test} or
+@code{fig.test}.
@node \pageref
@section @code{\pageref@{@var{key}@}}
+
@findex \pageref
@cindex cross referencing with page number
@cindex page number, cross referencing
@@ -1330,6 +1928,7 @@ the place in the text where the corresponding
@node \ref
@section @code{\ref@{@var{key}@}}
+
@findex \ref
@cindex cross referencing, symbolic
@cindex section number, cross referencing
@@ -1351,8 +1950,8 @@ such as the word `Section' or `Figure', just the bare number itself.
@node Environments
@chapter Environments
-@cindex environments
+@cindex environments
@findex \begin
@findex \end
@@ -1366,35 +1965,34 @@ Each environment begins and ends in the same manner:
@end example
@menu
-* abstract:: Produce an abstract.
-* array:: Math arrays.
-* center:: Centered lines.
-* description:: Labelled lists.
-* displaymath:: Formulas that appear on their own line.
-* document:: Enclose the whole document.
-* enumerate:: Numbered lists.
-* eqnarray:: Sequences of aligned equations.
-* equation:: Displayed equation.
-* figure:: Floating figures.
-* filecontents:: Writing multiple files from the source.
-* flushleft:: Flushed left lines.
-* flushright:: Flushed right lines.
-* itemize:: Bulleted lists.
-* letter:: Letters.
-* list:: Generic list environment.
-* math:: In-line math.
-* minipage:: Miniature page.
-* picture:: Picture with text, arrows, lines and circles.
-* quotation:: Indented environment with paragraph indentation.
-* quote:: Indented environment with no paragraph indentation.
-* tabbing:: Align text arbitrarily.
-* table:: Floating tables.
-* tabular:: Align text in columns.
-* thebibliography:: Bibliography or reference list.
-* theorem:: Theorems, lemmas, etc.
-* titlepage:: For hand crafted title pages.
-* verbatim:: Simulating typed input.
-* verse:: For poetry and other things.
+* abstract:: Produce an abstract.
+* array:: Math arrays.
+* center:: Centered lines.
+* description:: Labelled lists.
+* displaymath:: Formulas that appear on their own line.
+* document:: Enclose the whole document.
+* enumerate:: Numbered lists.
+* eqnarray:: Sequences of aligned equations.
+* equation:: Displayed equation.
+* figure:: Floating figures.
+* filecontents:: Writing multiple files from the source.
+* flushleft:: Flushed left lines.
+* flushright:: Flushed right lines.
+* itemize:: Bulleted lists.
+* letter:: Letters.
+* list:: Generic list environment.
+* math:: In-line math.
+* minipage:: Miniature page.
+* picture:: Picture with text, arrows, lines and circles.
+* quotation and quote:: Include a quotation.
+* tabbing:: Align text arbitrarily.
+* table:: Floating tables.
+* tabular:: Align text in columns.
+* thebibliography:: Bibliography or reference list.
+* theorem:: Theorems, lemmas, etc.
+* titlepage:: For hand crafted title pages.
+* verbatim:: Simulating typed input.
+* verse:: For poetry and other things.
@end menu
@@ -1405,6 +2003,7 @@ Each environment begins and ends in the same manner:
@cindex abstracts
Synopsis:
+
@example
\begin@{abstract@}
...
@@ -1416,62 +2015,71 @@ Environment for producing an abstract, possibly of multiple paragraphs.
@node array
@section @code{array}
+
@findex array @r{environment}
@cindex arrays, math
Synopsis:
@example
-\begin@{array@}@{@var{template}@}
-@var{col1 text}&@var{col1 text}&@var{coln}@}\\
+\begin@{array@}@{@var{cols}@}
+@var{column 1 entry} &@var{column 2 entry} ... &@var{column n entry} \\
...
\end@{array@}
@end example
-Math arrays are produced with the @code{array} environment, normally
-within an @code{equation} environment (@pxref{equation}). It has a
-single mandatory @var{template} argument describing the number of
-columns and the alignment within them. Each column @var{col} is
-specified by a single letter that tells how items in each row of that
-column should be formatted, as follows:
+or
-@table @code
-@item c
-centered
-@item l
-flush left
-@item r
-flush right
-@end table
+@example
+\begin@{array@}[@var{pos}]@{@var{cols}@}
+@var{column 1 entry} &@var{column 2 entry} ... &@var{column n entry} \\
+...
+\end@{array@}
+@end example
-@findex \\ @r{(for @code{array})}
-Column entries are separated by @code{&}. Column entries may include
-other @LaTeX{} commands. Each row of the array is terminated with
-@code{\\}.
+Produce a mathematical array. This environment can only be used in math
+mode, and normally appears within a displayed mathematics environment
+such as @code{equation} (@pxref{equation}). Column entries are
+separated by an ampersand@tie{}(@code{&}). Rows are terminated with
+double-backslashes@tie{}(@code{\\}) (@pxref{\\}).
+
+The required argument @var{cols} describes the number of columns, their
+alignment, and the formatting of the intercolumn regions. See
+@ref{tabular} for the complete description of @var{cols}, and of the
+other common features of the two environments, including the optional
+@var{pos} argument.
+
+There are two ways that @code{array} diverges from @code{tabular}. The
+first is that @code{array} entries are typeset in mathematics mode, in
+textstyle (except if the @var{cols} definition specifies the column with
+@code{@@p@{..@}}, which causes the entry to be typeset in text mode).
+The second is that, instead of @code{tabular}'s parameter
+@code{\tabcolsep}, @LaTeX{}'s intercolumn space in an array is governed
+by
+@findex \arraycolsep
+@code{\arraycolsep} which gives half the width between columns. The
+default for this is @samp{5pt}.
-@findex @@@{...@}
-In the template, the construct @code{@@@{@var{text}@}} puts @var{text}
-between columns in each row.
+To obtain arrays with braces the standard is to use the @file{amsmath}
+package. It comes with environments @code{pmatrix} for an array
+surrounded by parentheses@tie{}@code{(..)}, @code{bmatrix} for an array
+surrounded by square brackets@tie{}@code{[..]}, @code{Bmatrix} for an
+array surrounded by curly braces@tie{}@code{@{..@}}, @code{vmatrix} for
+an array surrounded by vertical bars@tie{}@code{|..|}, and
+@code{Vmatrix} for an array surrounded by double vertical
+bars@tie{}@code{||..||}, along with a number of other array constructs.
-Here's an example:
+Here is an example of an array:
@example
\begin@{equation@}
- \begin@{array@}@{lrc@}
- left1 & right1 & centered1 \\
- left2 & right2 & centered2 \\
+ \begin@{array@}@{cr@}
+ \sqrt@{y@} &12.3 \\
+ x^2 &3.4
\end@{array@}
\end@{equation@}
@end example
-@findex \arraycolsep
-The @code{\arraycolsep} parameter defines half the width of the space
-separating columns; the default is @samp{5pt}. @xref{tabular}, for other
-parameters which affect formatting in @code{array} environments,
-namely @code{\arrayrulewidth} and @code{\arraystretch}.
-
-The @code{array} environment can only be used in math mode.
-
@node center
@section @code{center}
@@ -1483,16 +2091,35 @@ Synopsis:
@example
\begin@{center@}
-@var{line1} \\
-@var{line2} \\
+ .. text ..
\end@{center@}
@end example
+Environment to create a sequence of lines that are centered within the
+left and right margins on the current page. If the text in the
+environment body is too long to fit on a line, @LaTeX{} will insert line
+breaks that avoid hyphenation and avoid stretching or shrinking any
+interword space. To force a line break at a particular spot use
+double-backslash@tie{}@code{\\} (@pxref{\\}).
@findex \\ @r{(for @code{center})}
-The @code{center} environment allows you to create a paragraph
-consisting of lines that are centered within the left and right
-margins on the current page. Each line is terminated with the
-string @code{\\}.
+
+This environment inserts space above and below the text body. See
+@ref{\centering} to avoid such space, for example inside a @code{figure}
+environment.
+
+In this example, depending on the line width, @LaTeX{} may choose a break
+for the part before the double backslash, will center the line or two,
+then will break at the double backslash, and will center the ending.
+
+@example
+\begin@{center@}
+ My father considered that anyone who went to chapel and didn't drink
+ alcohol was not to be tolerated.\\
+ I grew up in that belief. --Richard Burton
+\end@{center@}
+@end example
+
+A double backslash after the final line is optional.
@menu
* \centering:: Declaration form of the @code{center} environment.
@@ -1505,28 +2132,38 @@ string @code{\\}.
@findex \centering
@cindex centering text, declaration for
-The @code{\centering} declaration corresponds to the @code{center}
-environment. This declaration can be used inside an environment such
-as @code{quote} or in a @code{parbox}. Thus, the text of a figure or
-table can be centered on the page by putting a @code{\centering}
-command at the beginning of the figure or table environment.
+Declaration that causes material in its scope to be centered. It is
+most often used inside an environment such as @code{figure}, or in a
+@code{parbox}.
-Unlike the @code{center} environment, the @code{\centering} command
-does not start a new paragraph; it simply changes how @LaTeX{} formats
-paragraph units. To affect a paragraph unit's format, the scope of
-the declaration must contain the blank line or @code{\end} command (of
-an environment such as quote) that ends the paragraph unit.
+Unlike the @code{center} environment, the @code{\centering} command does
+not add vertical space above and below the text.
-Here's an example:
+It also does not start a new paragraph; it simply changes how @LaTeX{}
+formats paragraph units. If @code{ww @{\centering xx \\ yy@} zz} is
+surrounded by blank lines then @LaTeX{} will create a paragraph whose
+first line @samp{ww xx} is centered and whose second line, not centered,
+contains @samp{yy zz}. Usually what is desired is for the scope of the
+declaration to contain a blank line or the @code{\end} command of an
+environment such as @code{figure} or @code{table} that ends the
+paragraph unit. Thus, if @code{@{\centering xx \\ yy\par@} zz} is
+surrounded by blank lines then it makes a new paragraph with two
+centered lines @samp{xx} and @samp{yy}, followed by a new paragraph with
+@samp{zz} that is formatted as usual. See also the following example.
+
+This example's @code{\centering} causes the graphic to be horizontally
+centered.
@example
-\begin@{quote@}
-\centering
-first line \\
-second line \\
-\end@{quote@}
+\begin@{figure@}
+ \centering
+ \includegraphics[width=0.6\textwidth]@{ctan_lion.png@}
+ \caption@{CTAN Lion@} \label@{fig:CTANLion@}
+\end@{figure@}
@end example
+The scope of the @code{\centering} ends with the @code{\end@{figure@}}.
+
@node description
@section @code{description}
@@ -1539,31 +2176,50 @@ Synopsis:
@example
\begin@{description@}
-\item [@var{label1}] @var{item1}
-\item [@var{label2}] @var{item2}
-...
+\item [@var{first label}] text of first item
+\item [@var{second label}] text of second item
+ ...
\end@{description@}
@end example
@findex \item
-The @code{description} environment is used to make labelled lists. Each
-@var{label} is typeset in bold, flush right. The @var{item} text may
-contain multiple paragraphs.
+Environment to make a labelled list of items. Each item's @var{label}
+is typeset in bold, flush-left. Each item's text may contain multiple
+paragraphs. Although the labels on the items are optional there is no
+sensible default, so all items should have labels.
+
+@findex \item
+The list consists of at least one item; see@tie{}@ref{\item} (having no
+items causes the @LaTeX{} error @samp{Something's wrong--perhaps a
+missing \item}). Each item is produced with an @code{\item} command.
@cindex bold typewriter, avoiding
@cindex typewriter labels in lists
-Another variation: since the bold style is applied to the labels, if
-you typeset a label in typewriter using @code{\texttt}, you'll get
-bold typewriter: @code{\item[\texttt@{bold and typewriter@}]}. This
-may be too bold, among other issues. To get just typewriter, use
-@code{\tt}, which resets all other style variations: @code{\item[@{\tt
-plain typewriter@}]}.
+Since the labels are in bold style, if the label text calls for a font
+change given in argument style (see @ref{Font styles}) then it will come
+out bold. For instance, if the label text calls for typewriter with
+@code{\item[\texttt@{label text@}]} then it will appear in bold
+typewriter, if that is available. The simplest way to get non-bolded
+typewriter is to use declaritive style @code{\item[@{\tt label text@}]}.
+Similarly, get normal text use @code{\item[@{\rm label text@}]}.
+
+For other major @LaTeX{} labelled list environments, see @ref{itemize}
+and @ref{enumerate}. For information about customizing list layout, see
+@ref{list}; also, the package @file{enumitem} is useful for this.
-For details about list spacing, see @ref{itemize}.
+This example shows the environment used for a sequence of definitions.
+
+@example
+\begin@{definition@}
+ \item[lama] A priest.
+ \item[llama] A beast.
+\end@{definition@}
+@end example
@node displaymath
@section @code{displaymath}
+@c http://tex.stackexchange.com/questions/40492/what-are-the-differences-between-align-equation-and-displaymath
@findex displaymath @r{environment}
@@ -1571,23 +2227,46 @@ Synopsis:
@example
\begin@{displaymath@}
-@var{math}
+ .. math text ..
\end@{displaymath@}
@end example
-@noindent or
-
+Environment to typeset the math text on its own line, in display style
+and centered. To make the text be flush-left use the global option
+@code{fleqn}; see @ref{Document class options}.
+
+@LaTeX{} will not break the math text across lines.
+
+In the @code{displaymath} environment no equation number is added to the
+math text. One way to get an equation number is to use the
+@code{equation} environment (@pxref{equation}).
+
+Note that the @file{amsmath} package has extensive displayed equation
+facilities. Those facilities are the best approach for such output in
+new documents. For example, there are a number of options in that
+package for having math text broken across lines.
+
+The construct @code{\[..math text..\]} is essentially a synonym for
+@code{\begin@{displaymath@}..math text..\end@{displaymath@}} but the
+latter is easier to work with in the source file; for instance,
+searching for a square bracket may get false positives but the word
+@code{displaymath} will likely be unique. (The construct @code{$$..math
+text..$$} from Plain@tie{}@TeX{} is sometimes mistakenly used as a
+synonym for @code{displaymath}. It is not a synonym, because the
+@code{displaymath} environment checks that it isn't started in math mode
+and that it ends in math mode begun by the matching environment start,
+because the @code{displaymath} environment has different vertical
+spacing, and because the @code{displaymath} environment honors the
+@code{fleqn} option.)
+
+The output from this example is centered and alone on its line.
@example
-\[@var{math}\]
+\begin@{displaymath@}
+ \int_1^2 x^2\,dx=7/3
+\end@{displaymath@}
@end example
-
-The @code{displaymath} environment (@code{\[...\]} is a synonym)
-typesets the @var{math} text on its own line, centered by default.
-The global @code{fleqn} option makes equations flush left; see
-@ref{Document class options}.
-
-No equation number is added to @code{displaymath} text; to get an
-equation number, use the @code{equation} environment (@pxref{equation}).
+Also, the integral sign is larger than the inline version
+@code{\( \int_1^2 x^2\,dx=7/3 \)} produces.
@node document
@@ -1595,9 +2274,57 @@ equation number, use the @code{equation} environment (@pxref{equation}).
@findex document @r{environment}
-The @code{document} environment encloses the body of a document.
+The @code{document} environment encloses the entire body of a document.
It is required in every @LaTeX{} document. @xref{Starting and ending}.
+@menu
+* \AtBeginDocument:: Hook for commands at the start of the document.
+* \AtEndDocument:: Hook for commands at the end of the document.
+@end menu
+
+
+@node \AtBeginDocument
+
+@findex \AtBeginDocument
+@cindex beginning of document hook
+
+Synopsis:
+
+@example
+\AtBeginDocument@{@var{code}@}
+@end example
+
+Save @var{code} and execute it when @code{\begin@{document@}} is
+executed, at the very end of the preamble. The code is executed after
+the font selection tables have been set up, so the normal font for the
+document is the current font. However, the code is executed as part of
+the preamble so you cannot do any typesetting with it.
+
+You can issue this command more than once; the successive code lines
+will be executed in the order that you gave them.
+
+
+@node \AtEndDocument
+
+@findex \AtEndDocument
+@cindex end of document hook
+
+Synopsis:
+
+@example
+\AtEndDocument@{@var{code}@}
+@end example
+
+Save @var{code} and execute it near the end of the document.
+Specifically, it is executed when @code{\end@{document@}} is executed,
+before the final page is finished and before any leftover floating
+environments are processed. If you want some of the code to be executed
+after these two processes then include a @code{\clearpage} at the
+appropriate point in @var{code}.
+
+You can issue this command more than once; the successive code lines
+will be executed in the order that you gave them.
+
@node enumerate
@section @code{enumerate}
@@ -1609,55 +2336,79 @@ Synopsis:
@example
\begin@{enumerate@}
-\item @var{item1}
-\item @var{item2}
+\item [@var{first label}] text of first item
+\item [@var{second label}] text of second item
...
\end@{enumerate@}
@end example
-The @code{enumerate} environment produces a numbered list. Enumerations
-can be nested within one another, up to four levels deep. They can also
-be nested within other paragraph-making environments, such as
-@code{itemize} (@pxref{itemize}) and @code{description}
-(@pxref{description}).
+Environment to produce a numbered list of items. The format of the
+label numbering depends on whether this environment is nested within
+another; see below.
@findex \item
-Each item of an enumerated list begins with an @code{\item} command.
-There must be at least one @code{\item} command within the environment.
+The list consists of at least one item. Having no items causes the
+@LaTeX{} error @samp{Something's wrong--perhaps a missing \item}. Each
+item is produced with an @code{\item} command.
+
+This example lists the top two finishers in the 1908 Olympic marathon.
+
+@example
+\begin@{enumerate@}
+ \item Johnny Hayes (USA)
+ \item Charles Hefferon (RSA)
+\end@{enumerate@}
+@end example
-By default, the numbering at each level is done like this:
+Enumerations may be nested within a paragraph-making environment,
+including @code{itemize} (@pxref{itemize}), @code{description}
+(@pxref{description}) and @code{enumeration}, up to four levels deep.
+The format of the label produced depends on the place in the nesting.
+This gives @LaTeX{}'s default for the format at each nesting level
+(where 1 is the outermost level):
@enumerate
-@item 1., 2., @dots{}
-@item (a), (b), @dots{}
-@item i., ii., @dots{}
-@item A., B., @dots{}
+@item arabic number followed by a period: @samp{1.}, @samp{2.},@tie{}@dots{}
+@item lower case letter inside parentheses: @samp{(a)}, @samp{(b)}@tie{}@dots{}
+@item lower case roman numeral followed by a period: @samp{i.}, @samp{ii.},@tie{}@dots{}
+@item upper case letter followed by a period: @samp{A.}, @samp{B.},@tie{}@dots{}
@end enumerate
@findex \enumi
@findex \enumii
@findex \enumiii
@findex \enumiv
-The @code{enumerate} environment uses the counters @code{\enumi}
-through @code{\enumiv} counters (@pxref{Counters}). If the optional
-argument to @code{\item} is given, the counter is not incremented for
-that item.
+The @code{enumerate} environment uses the counters @code{\enumi} through
+@code{\enumiv} counters (@pxref{Counters}). If you use the optional
+argument to @code{\item} then the counter is not incremented for that
+item (@pxref{\item}).
@findex \labelenumi
@findex \labelenumii
@findex \labelenumiii
@findex \labelenumiv
-The @code{enumerate} environment uses the commands @code{\labelenumi}
-through @code{\labelenumiv} to produce the default label. So, you can
-use @code{\renewcommand} to change the labels (@pxref{\newcommand &
-\renewcommand}). For instance, to have the first level use uppercase
-letters:
+To change the format of the label use @code{\renewcommand}
+(@pxref{\newcommand & \renewcommand}) on the commands @code{\labelenumi}
+through @code{\labelenumiv}. For instance, this first level list will be
+labelled with uppercase letters, in boldface, and without a trailing
+period:
@findex \Alph @r{example}
@example
-\renewcommand@{\labelenumi@}@{\Alph@{enumi@}@}
+\renewcommand@{\labelenumi@}@{\textbf@{\Alph@{enumi@}@}@}
+\begin@{enumerate@}
+ \item eI
+ \item bi:
+ \item si:
+\end@{enumerate@}
@end example
+For a list of counter-labelling commands like @code{\Alph} see
+@ref{\alph \Alph \arabic \roman \Roman \fnsymbol}.
+
+For more on customizing the layout see @ref{list}. Also, the package
+@file{enumitem} is useful for this.
+
@node eqnarray
@@ -1670,46 +2421,69 @@ letters:
@cindex align @r{environment, from @code{amsmath}}
@cindex amsmath @r{package, replacing @code{eqnarray}}
@cindex Madsen, Lars
-First, a caveat: the @code{eqnarray} environment has some infelicities
-which cannot be overcome; the article ``Avoid eqnarray!''@: by Lars
-Madsen describes them in detail
-(@url{http://tug.org/TUGboat/tb33-1/tb103madsen.pdf}). The bottom
-line is that it is better to use the @code{align} environment (and
-others) from the @code{amsmath} package.
+First, a caveat: the @code{eqnarray} environment is depreciated. It has
+infelicities that cannot be overcome, including spacing that is
+inconsistent with other mathematics elements (see the article ``Avoid
+eqnarray!''@: by Lars Madsen
+@url{http://tug.org/TUGboat/tb33-1/tb103madsen.pdf}). New documents
+should include the @file{amsmath} package and use the displayed
+mathematics environments provided there, such as the @code{align}
+environment.
-Nevertheless, here is a description of @code{eqnarray}:
+Nevertheless, for completeness and for a reference when working with old
+documents, a synopsis:
@example
-\begin@{eqnarray@} @r{(or @code{eqnarray*})}
-@var{formula1} \\
-@var{formula2} \\
-...
+\begin@{eqnarray@}
+ @var{first formula left} &@var{first formula middle} &@var{first formula right} \\
+ ...
\end@{eqnarray@}
@end example
+or
+
+@example
+\begin@{eqnarray*@}
+ @var{first formula left} &@var{first formula middle} &@var{first formula right} \\
+ ...
+\end@{eqnarray*@}
+@end example
+
@findex \\ @r{(for @code{eqnarray})}
-The @code{eqnarray} environment is used to display a sequence of
-equations or inequalities. It is similar to a three-column
-@code{array} environment, with consecutive rows separated by @code{\\}
-and consecutive items within a row separated by an @code{&}.
+Display a sequence of equations or inequalities. The left and right
+sides are typeset in display mode, while the middle is typeset in text
+mode.
+It is similar to a three-column @code{array} environment, with items
+within a row separated by an ampersand@tie{}(@code{&}), and with rows
+separated by double backslash@tie{} @code{\\}).
@findex \\* @r{(for @code{eqnarray})}
-@code{\\*} can also be used to separate equations, with its normal
-meaning of not allowing a page break at that line.
+The starred form of line break (@code{\\*}) can also be used to separate
+equations, and will disallow a page break there (@pxref{\\}).
@findex \nonumber
@cindex equation numbers, omitting
-An equation number is placed on every line unless that line has a
-@code{\nonumber} command. Alternatively, The @code{*}-form of the
-environment (@code{\begin@{eqnarray*@} ... \end@{eqnarray*@}}) will
-omit equation numbering entirely, while otherwise being the same as
-@code{eqnarray}.
+The unstarred form @code{eqnarray} places an equation number on every
+line (using the @code{equation} counter), unless that line contains a
+@code{\nonumber} command. The starred form @code{eqnarray*} omits
+equation numbering, while otherwise being the same.
@findex \lefteqn
The command @code{\lefteqn} is used for splitting long formulas across
lines. It typesets its argument in display style flush left in a box of
zero width.
+This example shows three lines. The first two lines make an inequality,
+while the third line has not entry on the left side.
+
+@example
+\begin@{eqnarray*@}
+ \lefteqn@{x_1+x_2+\cdots+x_n@} \\
+ &\leq &y_1+y_2+\cdots+y_n \\
+ &= &z+y_3+\cdots+y_n
+\end@{eqnarray*@}
+@end example
+
@node equation
@section @code{equation}
@@ -1722,211 +2496,153 @@ Synopsis:
@example
\begin@{equation@}
-@var{math}
+ math text
\end@{equation@}
@end example
-The @code{equation} environment starts a @code{displaymath}
-environment (@pxref{displaymath}), e.g., centering the @var{math} text
-on the page, and also places an equation number in the right margin.
+Make a @code{displaymath} environment (@pxref{displaymath}) with an
+equation number in the right margin.
+
+The equation number is generated using the @code{equation} counter.
+
+Note that the @file{amsmath} package has extensive displayed equation
+facilities. Those facilities are the best approach for such output in
+new documents.
@node figure
@section @code{figure}
+
@findex figure
@cindex inserting figures
@cindex figures, inserting
+Synopsis:
+
@example
-\begin@{figure[*]@}[@var{placement}]
-@var{figbody}
+\begin@{figure@}[@var{placement}]
+ figure body
+\caption[@var{loftitle}]@{@var{title}@}
\label@{@var{label@}}
-\caption[@var{loftitle}]@{@var{text}@}
\end@{figure@}
@end example
-Figures are objects that are not part of the normal text, and are
-instead ``floated'' to a convenient place, such as the top of a page.
-Figures will not be split between two pages.
-
-When typesetting in double-columns, the starred form produces a
-full-width figure (across both columns).
-
-@cindex placement of floats
-@cindex specifier, float placement
-The optional argument @code{[placement]} determines where @LaTeX{} will try
-to place your figure. There are four places where @LaTeX{} can possibly
-put a float:
-
-@table @code
-@item t
-(Top)---at the top of a text page.
-
-@item b
-(Bottom)---at the bottom of a text page. However, @code{b} is not
-allowed for full-width floats (@code{figure*}) with double-column
-output. To ameliorate this, use the @code{stfloats} or
-@code{dblfloatfix} package, but see the discussion at caveats in the
-FAQ: @url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=2colfloat}.
-
-@item h
-(Here)---at the position in the text where the @code{figure} environment
-appears. However, @code{t} is not allowed by itself; @code{t} is
-automatically added.
-
-@cindex here, putting floats
-@cindex @code{float} package
-To absolutely force a figure to appear ``here'', you can
-@code{\usepackage@{float@}} and use the @code{H} specifier which it
-defines. For further discussion, see the FAQ entry at
-@url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=figurehere}.
+or
-@item p
-(Page of floats)---on a separate float page, which is a page
-containing no text, only floats.
+@example
+\begin@{figure*@}[@var{placement}]
+ figure body
+\caption[@var{loftitle}]@{@var{title}@}
+\label@{@var{label@}}
+\end@{figure*@}
+@end example
-@item !
-Used in addition to one of the above; for this float only, @LaTeX{}
-ignores the restrictions on both the number of floats that can appear
-and the relative amounts of float and non-float text on the page.
-The @code{!} specifier does @emph{not} mean ``put the float here'';
-see above.
+A class of floats (@pxref{Floats}). Because they cannot be split across
+pages, they are not typeset in sequence with the normal text but instead
+are ``floated'' to a convenient place, such as the top of a following
+page.
-@end table
+For the possible values of @var{placement} and their effect on the
+float placement algorithm, see @ref{Floats}.
-The standard @code{report} and @code{article} classes use the default placement
-@code{tbp}.
+The starred form @code{figure*} is used when a document is in
+double-column mode (@pxref{\twocolumn}). It produces a figure that
+spans both columns, at the top of the page. To add the possibility of
+placing at a page bottom see the discussion of @var{placement} @code{b}
+in @ref{Floats}.
-The body of the figure is made up of whatever text, @LaTeX{} commands,
-etc.@: you wish.
+The figure body is typeset in a @code{parbox} of width @code{\textwidth}
+and so it can contain text, commands, etc.
+The label is optional; it is used for cross-references (@pxref{Cross
+references}).
@findex \caption
-The @code{\caption} command specifies caption @var{text} for the
-figure. The caption is numbered by default. If @var{loftitle} is
-present, it is used in the list of figures instead of @var{text}
-(@pxref{Tables of contents}).
+The optional @code{\caption} command specifies caption text for the
+figure. By default it is numbered. If @var{loftitle} is present, it is
+used in the list of figures instead of @var{title} (@pxref{Tables of
+contents}).
-Parameters relating to fractions of pages occupied by float and
-non-float text:
-
-@ftable @code
-@findex \bottomfraction
-The maximum fraction of the page allowed to be occupied by floats at
-the bottom; default @samp{.3}.
-
-@item \floatpagefraction
-The minimum fraction of a float page that must be occupied by floats;
-default @samp{.5}.
-
-@item \textfraction
-Minimum fraction of a page that must be text; if floats take up too
-much space to preserve this much text, floats will be moved to a
-different page. The default is @samp{.2}.
-
-@item \topfraction
-Maximum fraction at the top of a page that may be occupied before
-floats; default @samp{.7}.
-@end ftable
-
-Parameters relating to vertical space around floats:
-
-@ftable @code
-@item \floatsep
-Space between floats at the top or bottom of a page; default
-@samp{12pt plus2pt minus2pt}.
-
-@item \intextsep
-Space above and below a float in the middle of the main text; default
-@samp{12pt plus2pt minus2pt} for @samp{10pt} and @samp{11pt} styles,
-@samp{14pt plus4pt minus4pt} for @samp{12pt}.
-
-@item \textfloatsep
-Space between the last (first) float at the top (bottom) of a page;
-default @samp{20pt plus2pt minus4pt}.
-@end ftable
-
-Counters relating to the number of floats on a page:
+This example makes a figure out of a graphic. It requires one of the
+packages @file{graphics} or @file{graphicx}. The graphic, with its
+caption, will be placed at the top of a page or, if it is pushed to the
+end of the document, on a page of floats.
-@ftable @code
-@item bottomnumber
-Maximum number of floats that can appear at the bottom of a text page;
-default 1.
-
-@item dbltopnumber
-Maximum number of full-sized floats that can appear at the top of a
-two-column page; default 2.
-
-@item topnumber
-Maximum number of floats that can appear at the top of a text page;
-default 2.
-
-@item totalnumber
-Maximum number of floats that can appear on a text page; default 3.
-@end ftable
-
-The principal @TeX{} FAQ entry relating to floats:
-@url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=floats}.
+@example
+\begin@{figure@}[t]
+ \centering
+ \includegraphics[width=0.5\textwidth]@{CTANlion.png@}
+ \caption@{The CTAN lion, by Duane Bibby@}
+\end@{figure@}
+@end example
@node filecontents
-@section @code{filecontents}: Create external files
+@section @code{filecontents}: Write an external file
+
@findex filecontents
-@cindex external files, creating
+@cindex external files, writing
@cindex writing external files
Synopsis:
@example
\begin@{filecontents@}@{@var{filename}@}
-@var{contents-of-file}
+ @var{text}
\end@{filecontents@}
-...
-\documentclass@{@var{my-document-class}@}
@end example
-@cindex initial command
-@findex \documentclass, commands before
-The @code{filecontents} environment is an @dfn{initial command},
-meaning that it can be used only before the @code{\documentclass}
-command, as in the synopsis above.
+or
-@LaTeX{} will create a file named @var{filename} with the content
-@var{contents-of-file} preceded by a header comment indicating how and
-when the file was generated. If the file already exists then nothing will
-happen.
+@example
+\begin@{filecontents*@}@{@var{filename}@}
+ @var{text}
+\end@{filecontents*@}
+@end example
-You can also use the @code{filecontents} package, which has the
-following advantages:
+Create a file named @var{filename} and fill it with @var{text}. The
+unstarred version of the environment @code{filecontents} prefixes the
+content of the created file with a header; see the example below. The
+starred version @code{filecontents*} does not include the header.
-@itemize
-@item
-If the file already exists, then it will be overwritten.
+This environment can be used anywhere in the preamble, although it often
+appears before the @code{\documentclass} command. It is typically used
+when a source file requires a nonstandard style or class file. The
+environment will write that file to the directory containing the source
+and thus make the source file self-contained. Another use is to include
+@code{bib} references in the file, again to make it self-contained.
-@item
-You can use the @code{filecontents} environment at any point after the
-declaration @code{\usepackage@{filecontents@}}, not just before
-@code{\documentclass}.
+The environment checks whether a file of that name already exists and if
+so, does not do anything. There is a @file{filecontents} package that
+redefines the @code{filecontents} environment so that instead of doing
+nothing in that case, it will overwrite the existing file.
-@item
-The @code{filecontents} package also provides a @code{filecontents*}
-environment which is used in the same way as the @code{filecontents}
-environment except that it won't insert any leading comment, so it is
-better suited to create files which aren't in @LaTeX{} format.
+For example, this document
-@end itemize
+@example
+\documentclass@{article@}
+\begin@{filecontents@}@{JH.sty@}
+\newcommand@{\myname@}@{Jim Hef@{@}feron@}
+\end@{filecontents@}
+\usepackage@{JH@}
+\begin@{document@}
+Article by \myname.
+\end@{document@}
+@end example
-The @code{filecontents} environment only creates the file, and is
-unrelated to using the created file. So you need to use, for
-instance, @code{\input} or @code{\usepackage} or @code{\bibliography}
-or whatever is applicable, to use the created file.
+produces this file @file{JH.sty}.
-This environment is also useful to make a document in a self-contained
-file, for example, for a bug report, or to keep the content of a
-@file{.bib} file in the same file as the main document.
+@example
+%% LaTeX2e file `JH.sty'
+%% generated by the `filecontents' environment
+%% from source `test' on 2015/10/12.
+%%
+\newcommand@{\myname@}@{Jim Hef@{@}feron@}
+@end example
@node flushleft
@section @code{flushleft}
+
@findex flushleft @r{environment}
@cindex left-justifying text, environment for
@cindex ragged right text, environment for
@@ -1942,7 +2658,7 @@ file, for example, for a bug report, or to keep the content of a
@findex \\ @r{for @code{flushleft}}
The @code{flushleft} environment allows you to create a paragraph
consisting of lines that are flush to the left-hand margin and ragged
-right Each line must be terminated with the string @code{\\}.
+right. Each line must be terminated with the string @code{\\}.
@menu
* \raggedright:: Declaration form of the @code{flushleft} environment.
@@ -1951,6 +2667,7 @@ right Each line must be terminated with the string @code{\\}.
@node \raggedright
@subsection @code{\raggedright}
+
@findex \raggedright
@cindex ragged right text
@cindex left-justifying text
@@ -1969,6 +2686,7 @@ command that ends the paragraph unit.
@node flushright
@section @code{flushright}
+
@findex flushright @r{environment}
@cindex ragged left text, environment for
@cindex right-justifying text, environment for
@@ -1984,7 +2702,7 @@ command that ends the paragraph unit.
@findex \\ (for @code{flushright})
The @code{flushright} environment allows you to create a paragraph
consisting of lines that are flush to the right-hand margin and ragged
-left. Each line must be terminated with the string @code{\\}.
+left. Each line must be terminated with the control sequence @code{\\}.
@menu
* \raggedleft:: Declaration form of the @code{flushright} environment.
@@ -1993,6 +2711,7 @@ left. Each line must be terminated with the string @code{\\}.
@node \raggedleft
@subsection @code{\raggedleft}
+
@findex \raggedleft
@cindex ragged left text
@cindex justification, ragged left
@@ -2011,6 +2730,7 @@ command that ends the paragraph unit.
@node itemize
@section @code{itemize}
+
@findex itemize @r{environment}
@findex \item
@cindex lists of items
@@ -2155,13 +2875,15 @@ within a single item (@code{\parskip} is not list-specific,
@node letter
@section @code{letter} environment: writing letters
-@findex letter
+
+@findex letter @r{environment}
This environment is used for creating letters. @xref{Letters}.
@node list
@section @code{list}
+
@findex list
@cindex lists of items, generic
@@ -2189,6 +2911,51 @@ empty, i.e., @code{@{@}}, which leaves the default spacing.
The width used for typesetting the list items is specified by
@code{\linewidth} (@pxref{Page layout parameters}).
+@menu
+* \item:: An entry in a list.
+@end menu
+
+
+@node \item
+
+Synopsis:
+
+@example
+\item text of item
+@end example
+
+or
+@example
+\item[@var{optional label}] text of item
+@end example
+
+An entry in a list. The entries are prefixed by a label, whose default
+depends on the list type.
+
+Because the optional argument @var{optional label} is surrounded by
+square brackets@tie{}(@code{[} and @code{]}), to use square brackets
+inside the optional argument you must hide them inside curly braces, as
+in @code{\item[Close square bracket, @{]@}]}. Similarly, to use an open
+square bracket as first character in the text of the item, also hide it
+inside curly braces. @xref{@LaTeX{} command syntax}.
+
+In this example the @code{enumerate} list has two items that use the
+default label and one that uses the optional label.
+
+@example
+\begin@{enumerate@}
+ \item Moe
+ \item[sometimes] Shemp
+ \item Larry
+\end@{enumerate@}
+@end example
+
+The first item is labelled @samp{1.}, the second item is labelled
+@samp{sometimes}, and the third item is labelled @samp{2.} (note that,
+because of the optional label in the second item, the third item does
+not get a @samp{3.}).
+
+
@node math
@section @code{math}
@@ -2205,7 +2972,7 @@ Synopsis:
@end example
The @code{math} environment inserts the given @var{math} within the
-running text. @code{\(...\))} and @code{$...$} are synonyms.
+running text. @code{\(...\)} and @code{$...$} are synonyms.
@xref{Math formulas}.
@@ -2257,7 +3024,7 @@ footnotes; they may wind up at the bottom of the wrong minipage.
@cindex pictures, creating
@example
-\begin@{picture@}(width,height)(x offset,y offset)
+\begin@{picture@}(@var{width},@var{height})(@var{xoffset},@var{yoffset})
@dots{} @var{picture commands} @dots{}
\end@{picture@}
@end example
@@ -2277,22 +3044,23 @@ You should only change the value of @code{\unitlength}, using the
@code{\setlength} command, outside of a @code{picture} environment.
The default value is @code{1pt}.
-A position is a pair of coordinates, such as @code{(2.4,-5)}, specifying
+@cindex position, in picture
+A @dfn{position} is a pair of coordinates, such as @code{(2.4,-5)}, specifying
the point with x-coordinate @code{2.4} and y-coordinate @code{-5}.
Coordinates are specified in the usual way with respect to an origin,
which is normally at the lower-left corner of the picture. Note that
when a position appears as an argument, it is not enclosed in braces;
the parentheses serve to delimit the argument.
-The @code{picture} environment has one mandatory argument, which is a
-@code{position}. It specifies the size of the picture. The environment
-produces a rectangular box with width and height determined by this
-argument's x- and y-coordinates.
+The @code{picture} environment has one mandatory argument which is a
+position (@var{width},@var{height}), which specifies the size of the
+picture. The environment produces a rectangular box with these
+@var{width} and @var{height}.
-The @code{picture} environment also has an optional @code{position}
-argument, following the @code{size} argument, that can change the
-origin. (Unlike ordinary optional arguments, this argument is not
-contained in square brackets.) The optional argument gives the
+The @code{picture} environment also has an optional position argument
+(@var{xoffset},@var{yoffset}), following the size argument, that can
+change the origin. (Unlike ordinary optional arguments, this argument
+is not contained in square brackets.) The optional argument gives the
coordinates of the point at the lower-left corner of the picture
(thereby determining the origin). For example, if @code{\unitlength}
has been set to @code{1mm}, the command
@@ -2354,9 +3122,11 @@ The @code{picture} commands are described in the following sections.
@node \circle
@subsection @code{\circle}
+
@findex \circle
Synopsis:
+
@example
\circle[*]@{@var{diameter}@}
@end example
@@ -2370,9 +3140,11 @@ Circles up to 40@dmn{pt} can be drawn.
@node \makebox (picture)
@subsection @code{\makebox}
+
@findex \makebox @r{(for @code{picture})}
Synopsis:
+
@example
\makebox(@var{width},@var{height})[@var{position}]@{@var{text}@}
@end example
@@ -2404,6 +3176,7 @@ Moves the item to the right.
@node \framebox (picture)
@subsection @code{\framebox}
+
@findex \framebox
Synopsis:
@@ -2445,6 +3218,7 @@ multiples of the @var{dlen}.
@node \frame
@subsection @code{\frame}
+
@findex \frame
Synopsis:
@@ -2460,6 +3234,7 @@ space is put between the frame and the object.
@node \line
@subsection @code{\line}
+
@findex \line
Synopsis:
@@ -2481,6 +3256,7 @@ see @code{pict2e} and many other packages on CTAN.
@node \linethickness
@subsection @code{\linethickness}
+
@findex \linethickness
The @code{\linethickness@{@var{dim}@}} command declares the thickness
@@ -2493,6 +3269,7 @@ circles, or the quarter circles drawn by @code{\oval}.
@node \thicklines
@subsection @code{\thicklines}
+
@findex \thicklines
The @code{\thicklines} command is an alternate line thickness for
@@ -2502,6 +3279,7 @@ cf.@tie{}@ref{\linethickness} and @ref{\thinlines}.
@node \thinlines
@subsection @code{\thinlines}
+
@findex \thinlines
The @code{\thinlines} command is the default line thickness for
@@ -2511,9 +3289,11 @@ cf.@tie{}@ref{\linethickness} and @ref{\thicklines}.
@node \multiput
@subsection @code{\multiput}
+
@findex \multiput
Synopsis:
+
@example
\multiput(@var{x},@var{y})(@var{delta_x},@var{delta_y})@{@var{n}@}@{@var{obj}@}
@end example
@@ -2526,6 +3306,7 @@ pattern across a picture. @var{obj} is first placed at position
@node \oval
@subsection @code{\oval}
+
@findex \oval
Synopsis:
@@ -2534,21 +3315,24 @@ Synopsis:
\oval(@var{width},@var{height})[@var{portion}]
@end example
-The @code{\oval} command produces a rectangle with rounded corners.
-The optional argument @var{portion} allows you to select part of the
+The @code{\oval} command produces a rectangle with rounded corners. The
+optional argument @var{portion} allows you to produce only half of the
oval via the following:
@table @code
@item t
-selects the top portion;
+selects the top half;
@item b
-selects the bottom portion;
+selects the bottom half;
@item r
-selects the right portion;
+selects the right half;
@item l
-selects the left portion.
+selects the left half.
@end table
+It is also possible to produce only one quarter of the oval by setting
+@var{portion} to @code{tr}, @code{br}, @code{bl}, or @code{tl}.
+
The ``corners'' of the oval are made with quarter circles with a
maximum radius of 20@dmn{pt}, so large ``ovals'' will look more like
boxes with rounded corners.
@@ -2556,6 +3340,7 @@ boxes with rounded corners.
@node \put
@subsection @code{\put}
+
@findex \put
Synopsis:
@@ -2571,6 +3356,7 @@ The @code{\put} command places the material specified by the
@node \shortstack
@subsection @code{\shortstack}
+
@findex \shortstack
Synopsis:
@@ -2597,6 +3383,7 @@ Objects are separated with @code{\\}.
@node \vector
@subsection @code{\vector}
+
@findex \vector
Synopsis:
@@ -2610,13 +3397,17 @@ length and slope. The @math{@var{xslope}} and @math{@var{yslope}}
values must lie between @minus{}4 and +4, inclusive.
-@node quotation
-@section @code{quotation}
+@node quotation and quote
+@section @code{quotation} and @code{quote}
@findex quotation
@cindex quoted text with paragraph indentation, displaying
@cindex displaying quoted text with paragraph indentation
@cindex paragraph indentations in quoted text
+@findex quote
+@cindex quoted text without paragraph indentation, displaying
+@cindex displaying quoted text without paragraph indentation
+@cindex paragraph indentations in quoted text, omitting
Synopsis:
@@ -2626,23 +3417,7 @@ Synopsis:
\end@{quotation@}
@end example
-The margins of the @code{quotation} environment are indented on both
-the left and the right. The text is justified at both margins.
-Leaving a blank line between text produces a new paragraph.
-
-Unlike the @code{quote} environment, each paragraph is indented
-normally.
-
-
-@node quote
-@section @code{quote}
-
-@findex quote
-@cindex quoted text without paragraph indentation, displaying
-@cindex displaying quoted text without paragraph indentation
-@cindex paragraph indentations in quoted text, omitting
-
-Synopsis:
+or
@example
\begin@{quote@}
@@ -2650,11 +3425,29 @@ Synopsis:
\end@{quote@}
@end example
-The margins of the @code{quote} environment are indented on both the
-left and the right. The text is justified at both margins. Leaving a
-blank line between text produces a new paragraph.
+Include a quotation.
+
+In both environments, margins are indented on both sides by
+@code{\leftmargin} and the text is justified at both. As with the main
+text, leaving a blank line produces a new paragraph.
+
+To compare the two: in the @code{quotation} environment, paragraphs are
+indented by 1.5@dmn{em} and the space between paragraphs is small,
+@code{0pt plus 1pt}. In the @code{quote} environment, paragraphs are
+not indented and there is vertical space between paragraphs (it is the
+rubber length @code{\parsep}). Thus, the @code{quotation} environment
+may be more suitable for documents where new paragraphs are marked by an
+indent rather than by a vertical separation. In addition, @code{quote}
+may be more suitable for a short quotation or a sequence of short
+quotations.
-Unlike the @code{quotation} environment, paragraphs are not indented.
+@example
+\begin@{quotation@}
+\it Four score and seven years ago
+ .. shall not perish from the earth.
+\hspace@{1em plus 1fill@}---Abraham Lincoln
+\end@{quotation@}
+@end example
@node tabbing
@@ -2712,7 +3505,7 @@ necessary.
@item \' @r{(tabbing)}
Moves everything that you have typed so far in the
-current column, i.e. everything from the most recent @code{\>},
+current column, i.e., everything from the most recent @code{\>},
@code{\<}, @code{\'}, @code{\\}, or @code{\kill} command, to the right
of the previous column, flush against the current column's tab stop.
@@ -2777,32 +3570,52 @@ function \= fact(n : integer) : integer;\\
Synopsis:
@example
- \begin@{table@}[placement]
+\begin@{table@}[@var{placement}]
+ table body
+\caption[@var{loftitle}]@{@var{title}@}
+\label@{@var{label@}}
+\end@{table@}
+@end example
- body of the table
+A class of floats (@pxref{Floats}). Because they cannot be split across
+pages, they are not typeset in sequence with the normal text but instead
+are ``floated'' to a convenient place, such as the top of a following
+page.
- \caption@{table title@}
- \end@{table@}
-@end example
+For the possible values of @var{placement} and their effect on the
+float placement algorithm, see @ref{Floats}.
-Tables are objects that are not part of the normal text, and are
-usually ``floated'' to a convenient place, like the top of a page.
-Tables will not be split between two pages.
+The table body is typeset in a @code{parbox} of width @code{\textwidth}
+and so it can contain text, commands, etc.
-The optional argument @code{[placement]} determines where @LaTeX{} will try
-to place your table. There are four places where @LaTeX{} can possibly put
-a float; these are the same as that used with the @code{figure}
-environment, and described there (@pxref{figure}).
+The label is optional; it is used for cross-references (@pxref{Cross
+references}).
+@findex \caption
+The optional @code{\caption} command specifies caption text for the
+table. By default it is numbered. If @var{lottitle} is present, it is
+used in the list of tables instead of @var{title} (@pxref{Tables of
+contents}).
-The standard @code{report} and @code{article} classes use the default
-placement @code{[tbp]}.
+In this example the table and caption will float to the bottom of a page,
+unless it is pushed to a float page at the end.
-The body of the table is made up of whatever text, @LaTeX{} commands, etc.,
-you wish. The @code{\caption} command allows you to title your table.
+@example
+\begin@{table@}[b]
+ \centering
+ \begin@{tabular@}@{r|p@{2in@}@} \hline
+ One &The loneliest number \\
+ Two &Can be as sad as one.
+ It's the loneliest number since the number one.
+ \end@{tabular@}
+ \caption@{Cardinal virtues@}
+ \label@{tab:CardinalVirtues@}
+\end@{table@}
+@end example
@node tabular
@section @code{tabular}
+
@findex tabular @r{environment}
@cindex lines in tables
@cindex lining text up in tables
@@ -2810,9 +3623,9 @@ you wish. The @code{\caption} command allows you to title your table.
Synopsis:
@example
-\begin@{tabular@}[pos]@{cols@}
-column 1 entry & column 2 entry ... & column n entry \\
-...
+\begin@{tabular@}[@var{pos}]@{@var{cols}@}
+column 1 entry &column 2 entry ... &column n entry \\
+ ...
\end@{tabular@}
@end example
@@ -2820,44 +3633,61 @@ column 1 entry & column 2 entry ... & column n entry \\
or
@example
-\begin@{tabular*@}@{width@}[pos]@{cols@}
-column 1 entry & column 2 entry ... & column n entry \\
-...
+\begin@{tabular*@}@{@var{width}@}[@var{pos}]@{@var{cols}@}
+column 1 entry &column 2 entry ... &column n entry \\
+ ...
\end@{tabular*@}
@end example
-These environments produce a box consisting of a sequence of rows of
-items, aligned vertically in columns.
+These environments produce a table, a box consisting of a sequence of
+horizontal rows. Each row consists of items that are aligned vertically
+in columns. This illustrates many of the features.
+@example
+\begin@{tabular@}@{l|l@}
+ \textit@{Player name@} &\textit@{Career home runs@} \\
+ \hline
+ Hank Aaron &755 \\
+ Babe Ruth &714
+\end@{tabular@}
+@end example
+
+The vertical format of two left-aligned columns, with a vertical bar
+between them, is specified in @code{tabular}'s argument @code{@{l|l@}}.
+@findex &
+Columns are separated with an ampersand @code{&}. A horizontal rule
+between two rows is created with @code{\hline}.
@findex \\ @r{for @code{tabular}}
-@code{\\} must be used to specify the end of each row of the table,
-except for the last, where it is optional---unless an @code{\hline}
-command (to put a rule below the table) follows.
+The end of each row is marked with a double backslash@tie{}@code{\\}.
+This @code{\\} is optional after the last row unless an @code{\hline}
+command follows, to put a rule below the table.
-The mandatory and optional arguments consist of:
+The required and optional arguments to @code{tabular} consist of:
-@table @code
+@table @var
@item width
-Specifies the width of the @code{tabular*} environment. There must be
-rubber space between columns that can stretch to fill out the specified
-width.
+Required for @code{tabular*}, not allowed for @code{tabular}. Specifies
+the width of the @code{tabular*} environment. The space between columns
+should be rubber, as with @code{@@@{\extracolsep@{\fill@}@}}, to allow
+the table to stretch or shrink to make the specified width, or else you
+are likely to get the @code{Underfull \hbox (badness 10000) in alignment
+..} warning.
@item pos
-Specifies the vertical position; default is alignment on the centre of
-the environment.
+Optional. Specifies the table's vertical position. The default is to
+align the table so its vertical center matches the baseline of the
+surrounding text. There are two other possible alignments: @code{t}
+aligns the table so its top row matches the baseline of the surrounding
+text, and @code{b} aligns on the bottom row.
-@table @code
-@item t
-align on top row
-
-@item b
-align on bottom row
-@end table
+This only has an effect if there is other text. In the common case of a
+@code{tabular} alone in a @code{center} environment this option makes
+no difference.
@item cols
-Specifies the column formatting. It consists of a sequence of the
-following specifiers, corresponding to the sequence of columns and
-intercolumn material.
+Required. Specifies the formatting of columns. It consists of a
+sequence of the following specifiers, corresponding to the types of
+column and intercolumn material.
@table @code
@item l
@@ -2872,46 +3702,88 @@ A column of centered items.
@item |
A vertical line the full height and depth of the environment.
-@item @@@{@var{text}@}
-This inserts @var{text} in every row. An @@-expression suppresses the
-intercolumn space normally inserted between columns; any desired space
-before the adjacent item must be included in @var{text}.
+@item @@@{@var{text or space}@}
+This inserts @var{text or space} at this location in every row. The
+@var{text or space} material is typeset in LR mode. This text is
+fragile (@pxref{\protect}).
-To insert commands that are automatically executed before a given
-column, you have to load the @code{array} package and use the
-@code{>@{...@}} specifier.
-@c xx should fully explain array, tabularx, and all other base packages...
+This specifier is optional: unless you put in your own @@-expression
+then @LaTeX{}'s book, article, and report classes will put on either
+side of each column a space of length @code{\tabcolsep}, which by
+default is @samp{6pt}. That is, by default adjacent columns are
+separated by 12pt (so @code{\tabcolsep} is misleadingly-named since it
+is not the separation between tabular columns). Also by default a space
+of 6pt comes before the first column as well as after the final column,
+unless you put a @code{@@@{..@}} or @code{|} there.
+
+If you override the default and use an @@-expression then you must
+insert any desired space yourself, as in @code{@@@{\hspace@{1em@}@}}.
+
+An empty expression @code{@@@{@}} will eliminate the space, including
+the space at the start or end, as in the example below where the tabular
+lines need to lie on the left margin.
+
+@example
+\begin@{flushleft@}
+ \begin@{tabular@}@{@@@{@}l@}
+ ..
+ \end@{tabular@}
+\end@{flushleft@}
+@end example
+
+This example shows text, a decimal point, between the columns, arranged
+so the numbers in the table are aligned on that decimal point.
+
+@example
+\begin@{tabular@}@{r@@@{$.$@}l@}
+ $3$ &$14$ \\
+ $9$ &$80665$
+\end@{tabular@}
+@end example
@findex \extracolsep
-An @code{\extracolsep@{wd@}} command in an @@-expression causes an
-extra space of width @code{wd} to appear to the left of all subsequent
+An @code{\extracolsep@{@var{wd}@}} command in an @@-expression causes an
+extra space of width @var{wd} to appear to the left of all subsequent
columns, until countermanded by another @code{\extracolsep} command.
-Unlike ordinary intercolumn space, this extra space is not suppressed
-by an @@-expression. An @code{\extracolsep} command can be used only
-in an @@-expression in the @code{cols} argument.
+Unlike ordinary intercolumn space, this extra space is not suppressed by
+an @@-expression. An @code{\extracolsep} command can be used only in an
+@@-expression in the @code{cols} argument. Below, @LaTeX{} inserts the
+right amount of intercolumn space to make the entire table 4 inches
+wide.
+
+@example
+\begin@{center@}
+ \begin@{tabular*@}@{4in@}@{l@@@{\ \ldots\extracolsep@{\fill@}@}l@}
+ Seven times down, eight times up
+ &such is life!
+ \end@{tabular*@}
+\end@{center@}
+@end example
+
+To insert commands that are automatically executed before a given
+column, load the @code{array} package and use the @code{>@{...@}}
+specifier.
+@c xx should fully explain array, tabularx, and all other base packages...
@item p@{@var{wd}@}
-Produces a column with each item typeset in a parbox of width
-@var{wd}, as if it were the argument of a
-@code{\parbox[t]@{@var{wd}@}} command. However, a @code{\\} may not
-appear in the item, except in the following situations:
+Each item in the column is typeset in a parbox of width @var{wd}.
-@enumerate
-@item
-inside an environment like @code{minipage}, @code{array}, or @code{tabular}.
-@item
-inside an explicit @code{\parbox}.
-@item
-in the scope of a @code{\centering}, @code{\raggedright}, or @code{\raggedleft}
-declaration. The latter declarations must appear inside braces or an
-environment when used in a @code{p}-column element.
-@end enumerate
+Note that a line break double backslash @code{\\} may not appear in the
+item, except inside an environment like @code{minipage}, @code{array},
+or @code{tabular}, or inside an explicit @code{\parbox}, or in the scope
+of a @code{\centering}, @code{\raggedright}, or @code{\raggedleft}
+declaration (when used in a @code{p}-column element these declarations
+must appear inside braces, as with @code{@{\centering .. \\
+..@}}). Otherwise @LaTeX{} will misinterpret the double backslash as
+ending the row.
@item *@{@var{num}@}@{@var{cols}@}
Equivalent to @var{num} copies of @var{cols}, where @var{num} is a
-positive integer and @var{cols} is any list of column-specifiers,
-which may contain another @code{*-expression}.
-
+positive integer and @var{cols} is a list of specifiers. Thus
+@code{\begin@{tabular@}@{|*@{3@}@{l|r@}|@}} is equivalent to
+@code{\begin@{tabular@}@{|l|rl|rl|r|@}}. Note that @var{cols} may
+contain another @code{*-expression}.
+
@end table
@end table
@@ -2920,65 +3792,168 @@ Parameters that control formatting:
@ftable @code
@item \arrayrulewidth
-Thickness of the rule created by @code{|}, @code{\hline}, and
-@code{\vline} in the @code{tabular} and @code{array} environments; the
-default is @samp{.4pt}.
+A length that is the thickness of the rule created by @code{|},
+@code{\hline}, and @code{\vline} in the @code{tabular} and @code{array}
+environments. The default is @samp{.4pt}. Change it as in
+@code{\setlength@{\arrayrulewidth@}@{0.8pt@}}.
@item \arraystretch
-Scaling of spacing between rows in the @code{tabular} and @code{array}
-environments; default is @samp{1}, for no scaling.
+A factor by which the spacing between rows in the @code{tabular} and
+@code{array} environments is multiplied. The default is @samp{1}, for
+no scaling. Change it as @code{\renewcommand@{\arraystretch@}@{1.2@}}.
@item \doublerulesep
-Horizontal distance between the vertical rules produced by @code{||}
-in the @code{tabular} and @code{array} environments; default is @samp{2pt}.
+A length that is the distance between the vertical rules produced by the
+@code{||} specifier. The default is @samp{2pt}.
@item \tabcolsep
-Half the width of the space between columns; default is @samp{6pt}.
+A length that is half of the space between columns. The default is
+@samp{6pt}. Change it with @code{\setlength}.
@end ftable
-The following commands can be used inside a @code{tabular}
-environment:
+The following commands can be used inside the body of a @code{tabular}
+environment, the first two inside an entry and the second two between
+lines:
@menu
* \multicolumn:: Make an item spanning several columns.
+* \vline:: Draw a vertical line.
* \cline:: Draw a horizontal line spanning some columns.
* \hline:: Draw a horizontal line spanning all columns.
-* \vline:: Draw a vertical line.
@end menu
@node \multicolumn
@subsection @code{\multicolumn}
+
@findex \multicolumn
Synopsis:
+
@example
-\multicolumn@{@var{cols}@}@{@var{pos}@}@{@var{text}@}
+\multicolumn@{@var{numcols}@}@{@var{cols}@}@{@var{text}@}
@end example
-The @code{\multicolumn} command makes an entry that spans several
-columns. The first mandatory argument, @var{cols}, specifies the
-number of columns to span. The second mandatory argument, @var{pos},
-specifies the formatting of the entry; @code{c} for centered, @code{l}
-for flushleft, @code{r} for flushright. The third mandatory argument,
-@var{text}, specifies what text to put in the entry.
+Make an @code{array} or @code{tabular} entry that spans several columns.
+The first argument @var{numcols} gives the number of columns to span.
+The second argument @var{cols} specifies the formatting of the entry,
+with @code{c} for centered, @code{l} for flush left, or @code{r} for
+flush right. The third argument @var{text} gives the contents of that
+entry.
-Here's an example showing two columns separated by an en-dash;
-@code{\multicolumn} is used for the heading:
+In this example, in the first row, the second and third columns are
+spanned by the single heading @samp{Name}.
@example
-\begin@{tabular@}@{r@@@{--@}l@}
-\multicolumn@{2@}@{c@}@{\bf Unicode@}\cr
- 0x80&0x7FF \cr
- 0x800&0xFFFF \cr
-0x10000&0x1FFFF \cr
+\begin@{tabular@}@{lccl@}
+ \textit@{ID@} &\multicolumn@{2@}@{c@}@{\textit@{Name@}@} &\textit@{Age@} \\ \hline % row one
+ 978-0-393-03701-2 &O'Brian &Patrick &55 \\ % row two
+ ..
+\end@{tabular@}
+@end example
+
+What counts as a column is:@tie{}the column format specifier for the
+@code{array} or @code{tabular} environment is broken into parts, where
+each part (except the first) begins with @code{l}, @code{c}, @code{r},
+or@tie{}@code{p}. So from @code{\begin@{tabular@}@{|r|ccp@{1.5in@}|@}}
+the parts are @code{|r|}, @code{c}, @code{c},
+and@tie{}@code{p@{1.5in@}|}.
+
+The @var{cols} argument overrides the @code{array} or @code{tabular}
+environment's intercolumn area default adjoining this multicolumn
+entry. To affect that area, this argument can contain vertical bars
+@code{|} indicating the placement of vertical rules, and @code{@@@{..@}}
+expressions. Thus if @var{cols} is @samp{|c|} then this multicolumn
+entry will be centered and a vertical rule will come in the intercolumn
+area before it and after it. This table details the exact behavior.
+
+@example
+\begin@{tabular@}@{|cc|c|c|@}
+ \multicolumn@{1@}@{r@}@{w@} % entry one
+ &\multicolumn@{1@}@{|r|@}@{x@} % entry two
+ &\multicolumn@{1@}@{|r@}@{y@} % entry three
+ &z % entry four
+\end@{tabular@}
+@end example
+Before the first entry the output will not have a vertical rule because
+the @code{\multicolumn} has the @var{cols} specifier @samp{r} with no
+initial vertical bar. Between entry one and entry two there will be a
+vertical rule; although the first @var{cols} does not have an ending
+vertical bar, the second @var{cols} does have a starting one. Between
+entry two and entry three there is a single vertical rule; despite that
+the @var{cols} in both of the surrounding @code{multicolumn}'s call for
+a vertical rule, you only get one rule. Between entry three and entry
+four there is no vertical rule; the default calls for one but the
+@var{cols} in the entry three @code{\multicolumn} leaves it out, and
+that takes precedence. Finally, following entry four there is a
+vertical rule because of the default.
+
+The number of spanned columns @var{numcols} can be 1. Besides giving
+the ability to change the horizontal alignment, this also is useful to
+override for one row the @code{tabular} definition's default intercolumn
+area specification, including the placement of vertical rules.
+
+In the example below, in the @code{tabular} definition the first column
+is specified to default to left justified but in the first row the entry
+is centered with @code{\multicolumn@{1@}@{c@}@{\textsc@{Period@}@}}.
+Also in the first row, the second and third columns are spanned by a
+single entry with @code{\multicolumn@{2@}@{c@}@{\textsc@{Span@}@}},
+overriding the specification to center those two columns on the page
+range en-dash.
+
+@example
+\begin@{tabular@}@{l|r@@@{--@}l@}
+ \multicolumn@{1@}@{c@}@{\textsc@{Period@}@}
+ &multicolumn@{2@}@{c@}@{\textsc@{Span@}@} \\ \hline
+ Baroque &1600 &1760 \\
+ Classical &1730 &1820 \\
+ Romantic &1780 &1910 \\
+ Impressionistic &1875 &1925
+\end@{tabular@}
+@end example
+
+Note that although the @code{tabular} specification by default puts a
+vertical rule between the first and second columns, because there is no
+vertical bar in the @var{cols} of either of the first row's
+@code{\multicolumn} commands, no rule appears in the first row.
+
+
+@node \vline
+@subsection @code{\vline}
+
+@findex \vline
+
+Draw a vertical line in a @code{tabular} or @code{array} environment
+extending the full height and depth of an entry's row. Can also be used
+in an @@-expression, although its synonym vertical bar@tie{}@code{|} is
+more common. This command is rarely used; typically a table's vertical
+lines are specified in @code{tabular}'s @var{cols} argument and
+overriden as needed with @code{\multicolumn}.
+
+This example illustrates some pitfalls. In the first line's second
+entry the @code{\hfill} moves the @code{\vline} to the left edge of the
+cell. But that is different than putting it halfway between the two
+columns, so in that row between the first and second columns there are
+two vertical rules, with the one from the @code{@{c|cc@}} specifier
+coming before the one produced by the @code{\vline\hfill}. In contrast,
+the first line's third entry shows the usual way to put a vertical bar
+between two columns. In the second line, the @code{ghi} is the widest
+entry in its column so in the @code{\vline\hfill} the @code{\hfill} has
+no effect and the vertical line in that entry appears immediately next
+to the @code{g}, with no whitespace.
+
+@example
+\begin@{tabular@}@{c|cc@}
+ x &\vline\hfill y &\multicolumn@{1@}@{|r@}@{z@} \\
+ abc &def &\vline\hfill ghi
\end@{tabular@}
@end example
@node \cline
@subsection @code{\cline}
+
@findex \cline
Synopsis:
@@ -2987,35 +3962,51 @@ Synopsis:
\cline@{@var{i}-@var{j}@}
@end example
-The @code{\cline} command draws horizontal lines across the columns
-specified, beginning in column @var{i} and ending in column @var{j},
-which are specified in the mandatory argument.
+Draw a horizontal rule in an @code{array} or @code{tabular} environment
+beginning in column @var{i} and ending in column @var{j}. The
+dash@tie{}@code{-} must appear in the mandatory argument. To span a
+single column use the number twice.
+
+This example puts two horizontal lines between the first and second
+rows, one line in the first column only, and the other spanning the
+third and fourth columns. The two lines are side-by-side, at the same
+height.
+
+@example
+\begin@{tabular@}@{llrr@}
+ a &b &c &d \\ \cline@{1-1@} \cline@{3-4@}
+ e &f &g &h
+\end@{tabular@}
+@end example
@node \hline
@subsection @code{\hline}
-@findex \hline
-The @code{\hline} command draws a horizontal line the width of the
-enclosing @code{tabular} or @code{array} environment. It's most
-commonly used to draw a line at the top, bottom, and between the rows
-of a table.
+@findex \hline
+Draws a horizontal line the width of the enclosing @code{tabular} or
+@code{array} environment. It's most commonly used to draw a line at the
+top, bottom, and between the rows of a table.
-@node \vline
-@subsection @code{\vline}
-@findex \vline
+In this example the top of the table has two horizontal rules, one above
+the other, that span both columns. The bottom of the table has a single
+rule spanning both columns. Because of the @code{\hline}, the
+@code{tabular} second row's line ending double backslash@tie{}@code{\\}
+is required.
-The @code{\vline} command will draw a vertical line extending the full
-height and depth of its row. An @code{\hfill} command can be used to
-move the line to the edge of the column. It can also be used in an
-@@-expression.
+@example
+\begin@{tabular@}@{ll@} \hline\hline
+ Baseball &Red Sox \\
+ Basketball &Celtics \\ \hline
+\end@{tabular@}
+@end example
@node thebibliography
@section @code{thebibliography}
-@findex thebibliography
+@findex thebibliography @r{environment}
@cindex bibliography, creating (manually)
Synopsis:
@@ -3059,6 +4050,7 @@ less than 10 references, @code{99} for ones with less than 100, etc.
@findex \bibitem
Synopsis:
+
@example
\bibitem[@var{label}]@{@var{cite_key}@}
@end example
@@ -3085,7 +4077,7 @@ associated label.
Synopsis:
@example
-\cite[@var{subcite}]@{@var{keys}
+\cite[@var{subcite}]@{@var{keys}@}
@end example
The @var{keys} argument is a list of one or more citation keys,
@@ -3100,12 +4092,13 @@ citation. For example, @code{\cite[p.~314]@{knuth@}} might produce
@node \nocite
@subsection @code{\nocite}
+
@findex \nocite
-@code{\nocite@{key_list@}}
+@code{\nocite@{@var{keys}@}}
-The @code{\nocite} command produces no text, but writes @code{key_list},
-which is a list of one or more citation keys, on the @file{.aux} file.
+The @code{\nocite} command produces no text, but writes @var{keys},
+which is a list of one or more citation keys, to the @file{.aux} file.
@node Using BibTeX
@@ -3287,6 +4280,7 @@ stanzas.
@node Line breaking
@chapter Line breaking
+
@cindex line breaking
@cindex breaking lines
@@ -3295,9 +4289,8 @@ translate your input file into a sequence of glyphs and spaces. To
produce a printed document, this sequence must be broken into lines
(and these lines must be broken into pages).
-@LaTeX{} usually does the line (and page) breaking for you, but in
-some environments, you do the line breaking yourself with the
-@code{\\} command, and you can always manually force breaks.
+@LaTeX{} usually does the line (and page) breaking in the text body for
+you but in some environments you manually force line breaks.
@menu
* \\:: Start a new line.
@@ -3312,22 +4305,51 @@ some environments, you do the line breaking yourself with the
@node \\
-@section @code{\\}[*][@var{morespace}]
+@section @code{\\}
+
@findex \\ @r{force line break}
@cindex new line, starting
@cindex line break, forcing
-The @code{\\} command tells @LaTeX{} to start a new line. It has an
-optional argument, @var{morespace}, that specifies how much extra
-vertical space is to be inserted before the next line. This can be a
-negative amount.
+Synopsis:
-The @code{\\*} command is the same as the ordinary @code{\\} command
-except that it tells @LaTeX{} not to start a new page after the line.
+@example
+\\[@var{morespace}]
+@end example
+
+or
+
+@example
+\\*[@var{morespace}]
+@end example
+
+Start a new line. The optional argument @var{morespace} specifies extra
+vertical space to be insert before the next line. This can be a
+negative length. The text before the break is set at its normal length,
+that is, it is not stretched to fill out the line width.
+
+Explicit line breaks in the text body are unusual in @LaTeX{}. In
+particular, to start a new paragraph instead leave a blank line. This
+command is mostly used outside of the main flow of text such as in
+a @code{tabular} or @code{array} environment.
+
+Under ordinary circumstances (e.g., outside of a @code{p@{..@}} column
+in a @code{tabular} environment) the @code{\newline} command is a synonym for
+@code{\\} (@pxref{\newline}).
+
+In addition to starting a new line, the starred form @code{\\*} tells
+@LaTeX{} not to start a new page between the two lines, by issuing a
+@code{\nobreak}.
+
+@example
+\title@{My story: \\[0.25in]
+ a tale of woe@}
+@end example
@node \obeycr & \restorecr
@section @code{\obeycr} & @code{\restorecr}
+
@findex \obeycr
@findex \restorecr
@cindex new line, output as input
@@ -3342,16 +4364,34 @@ in the output.
@node \newline
@section @code{\newline}
+
@findex \newline
@cindex new line, starting (paragraph mode)
-The @code{\newline} command breaks the line at the present point, with
-no stretching of the text before it. It can only be used in paragraph
-mode.
+In ordinary text this is equivalent to double-backslash (@pxref{\\}); it
+breaks a line, with no stretching of the text before it.
+
+Inside a @code{tabular} or @code{array} environment, in a column with a
+specifier producing a paragraph box, like typically @code{p@{..@}},
+@code{\newline} will insert a line break inside of the column, that is,
+it does not break the entire row. To break the entire row use @code{\\}
+or its equivalent @code{\tabularnewline}.
+
+This will print @samp{Name:} and @samp{Address:} as two lines in a
+single cell of the table.
+
+@example
+\begin@{tabular@}@{p@{1in@}@{\hspace@{2in@}@}p@{1in@}@}
+ Name: \newline Address: &Date: \\ \hline
+\end@{tabular@}
+@end example
+
+The @samp{Date:} will be baseline-aligned with @samp{Name:}.
@node \- (hyphenation)
@section @code{\-} (discretionary hyphen)
+
@findex \- @r{(hyphenation)}
@cindex hyphenation, forcing
@@ -3366,9 +4406,9 @@ hyphenated at those points and not at any of the hyphenation points
that @LaTeX{} might otherwise have chosen.
-
@node \fussy
@section @code{\fussy}
+
@findex \fussy
The declaration @code{\fussy} (which is the default) makes @TeX{}
@@ -3382,6 +4422,8 @@ This command cancels the effect of a previous @code{\sloppy} command
@node \sloppy
@section @code{\sloppy}
+@findex \sloppy
+
The declaration @code{\sloppy} makes @TeX{} less fussy about line
breaking. This will avoid overfull boxes, at the cost of loose
interword spacing.
@@ -3391,6 +4433,7 @@ Lasts until a @code{\fussy} command is issued (@pxref{\fussy}).
@node \hyphenation
@section @code{\hyphenation}
+
@findex \hyphenation
@cindex hyphenation, defining
@@ -3414,6 +4457,7 @@ misses the hyphenations in these words):
@node \linebreak & \nolinebreak
@section @code{\linebreak} & @code{\nolinebreak}
+
@findex \linebreak
@findex \nolinebreak
@cindex line breaks, forcing
@@ -3438,6 +4482,7 @@ from a demand to a request. The @var{priority} must be a number from
@node Page breaking
@chapter Page breaking
+
@cindex page breaking
@cindex breaking pages
@@ -3461,33 +4506,38 @@ but sometimes you may want to influence the breaks.
@cindex starting on a right-hand page
The @code{\cleardoublepage} command ends the current page and causes all
-figures and tables that have so far appeared in the input to be printed.
-In a two-sided printing style, it also makes the next page a right-hand
-(odd-numbered) page, producing a blank page if necessary.
+the pending floating figures and tables that have so far appeared in the
+input to be printed. In a two-sided printing style, it also makes the
+next page a right-hand (odd-numbered) page, producing a blank page if
+necessary.
@node \clearpage
@section @code{\clearpage}
+
@findex \clearpage
@cindex flushing floats and starting a page
@cindex starting a new page and clearing floats
-The @code{\clearpage} command ends the current page and causes all
-figures and tables that have so far appeared in the input to be printed.
+The @code{\clearpage} command ends the current page and causes all the
+pending floating figures and tables that have so far appeared in the
+input to be printed.
@node \newpage
@section @code{\newpage}
+
@findex \newpage
@cindex new page, starting
@cindex starting a new page
The @code{\newpage} command ends the current page, but does not clear
-floats (see @code{\clearpage} above).
+floats (@pxref{\clearpage}).
@node \enlargethispage
@section @code{\enlargethispage}
+
@findex \enlargethispage
@cindex enlarge current page
@@ -3496,7 +4546,7 @@ floats (see @code{\clearpage} above).
@code{\enlargethispage*@{size@}}
Enlarge the @code{\textheight} for the current page by the specified
-amount; e.g. @code{\enlargethispage@{\baselineskip@}} will allow one
+amount; e.g., @code{\enlargethispage@{\baselineskip@}} will allow one
additional line.
The starred form tries to squeeze the material together on the page as
@@ -3506,6 +4556,7 @@ much as possible. This is normally used together with an explicit
@node \pagebreak & \nopagebreak
@section @code{\pagebreak} & @code{\nopagebreak}
+
@findex \pagebreak
@findex \nopagebreak
@cindex page break, forcing
@@ -3531,24 +4582,42 @@ insistent the request is.
@node Footnotes
@chapter Footnotes
+
@cindex footnotes, creating
-Footnotes can be produced in one of two ways. They can be produced
-with one command, the @code{\footnote} command. They can also be
-produced with two commands, the @code{\footnotemark} and the
-@code{\footnotetext} commands.
+Place a numbered footnote at the bottom of the current page, as here.
+
+@example
+No@"{e}l Coward quipped that having to read a footnote is like having
+to go downstairs to answer the door, while in the midst of making
+love.\footnote@{I wouldn't know, I don't read footnotes.@}
+@end example
+
+You can place multiple footnotes on a page. If the text becomes too long
+it will flow to the next page.
+
+You can also produce footnotes by combining the @code{\footnotemark} and
+the @code{\footnotetext} commands, which is useful in special
+circumstances.
+
+To make bibliographic references come out as footnotes you need to
+include a bibliographic style with that behavior.
@menu
-* \footnote:: Insert a footnote.
-* \footnotemark:: Insert footnote mark only.
-* \footnotetext:: Insert footnote text only.
-* Symbolic footnotes:: Using symbols instead of numbers for footnotes.
-* Footnote parameters:: Parameters for footnote formatting.
+* \footnote:: Insert a footnote.
+* \footnotemark:: Insert footnote mark only.
+* \footnotetext:: Insert footnote text only.
+* Footnotes in a table:: Table footnotes.
+* Footnotes in section headings:: Chapter or section titles.
+* Footnotes of footnotes:: Multiple classes of footnotes.
+* Multiple reference to footnotes:: Referring to a footnote more than once.
+* Footnote parameters:: Parameters for footnote formatting.
@end menu
@node \footnote
@section @code{\footnote}
+
@findex \footnote
Synopsis:
@@ -3557,71 +4626,230 @@ Synopsis:
\footnote[@var{number}]@{@var{text}@}
@end example
-The @code{\footnote} command places the numbered footnote @var{text}
-at the bottom of the current page. The optional argument @var{number}
-changes the default footnote number.
+Place a numbered footnote @var{text} at the bottom of the current page.
+
+@example
+There are over a thousand footnotes in Gibbon's
+\textit@{Decline and Fall of the Roman Empire@}.\footnote@{After
+reading an early version with endnotes David Hume complained,
+``One is also plagued with his Notes, according to the present Method
+of printing the Book'' and suggested that they ``only to be printed
+at the Margin or the Bottom of the Page.''@}
+@end example
+
+The optional argument @var{number} allows you to specify the footnote
+number. If you use this option then the footnote number counter is not
+incremented, and if you do not use it then the counter is incremented.
-This command can only be used in outer paragraph mode; i.e., you
-cannot use it in sectioning commands like @code{\chapter}, in figures,
-tables or in a @code{tabular} environment. (See following sections.)
+@cindex footnotes, symbols instead of numbers
+@findex \fnsymbol@r{, and footnotes}
+@findex \@@fnsymbol
+Change how @LaTeX{} shows the footnote counter with something like
+@code{\renewcommand@{\thefootnote@}@{\fnsymbol@{footnote@}@}}, which
+uses a sequence of symbols (@pxref{\alph \Alph \arabic \roman \Roman
+\fnsymbol}). To make this change global put that in the preamble. If
+you make the change local then you may want to reset the counter with
+@code{\setcounter@{footnote@}@{0@}}. By default @LaTeX{} uses arabic
+numbers.
+
+@LaTeX{}'s default puts many restrictions on where you can use a
+@code{\footnote}; for instance, you cannot use it in an argument to a
+sectioning command such as @code{\chapter} (it can only be used in outer
+paragraph mode). There are some workarounds; see following sections.
@c xx mention packages that fix this
+@cindex Footnotes, in a minipage
+@cindex mpfootnote counter
+In a @code{minipage} environment the @code{\footnote}
+command uses the @code{mpfootnote} counter instead of the
+@code{footnote} counter, so they are numbered independently. They are
+shown at the bottom of the environment, not at the bottom of the page.
+And by default they are shown alphabetically. @xref{minipage}.
+
@node \footnotemark
@section @code{\footnotemark}
-@findex \footnotemark
-With no optional argument, the @code{\footnotemark} command puts the
-current footnote number in the text. This command can be used in
-inner paragraph mode. You give the text of the footnote separately,
-with the @code{\footnotetext} command.
+@findex \footnotemark
-This command can be used to produce several consecutive footnote
-markers referring to the same footnote with
+Synopsis, one of:
@example
-\footnotemark[\value@{footnote@}]
+\footnotemark
+\footnotemark[@var{number}]
@end example
-@noindent
-after the first @code{\footnote} command.
+Put the current footnote number in the
+text. (See@tie{}@ref{\footnotetext} for giving the text of the footnote
+separately.) The version with the optional argument @var{number} uses
+that number to determine the mark printed. This command can be used in
+inner paragraph mode.
+
+This example gives the same institutional affiliation to both the first
+and third authors (@code{\thanks} is a version of @code{footnote}).
+
+@example
+\title@{A Treatise on the Binomial Theorem@}
+\author@{J Moriarty\thanks@{University of Leeds@}
+ \and A C Doyle\thanks@{Durham University@}
+ \and S Holmes\footnotemark[1]@}
+\begin@{document@}
+\maketitle
+@end example
+
+If you use @code{\footnotemark} without the optional argument then it
+increments the footnote counter but if you use the optional @var{number}
+then it does not. This produces several consecutive footnote markers
+referring to the same footnote.
+
+@example
+The first theorem\footnote@{Due to Gauss.@}
+and the second theorem\footnotemark[\value@{footnote@}]
+and the third theorem.\footnotemark[\value@{footnote@}]
+@end example
@node \footnotetext
@section @code{\footnotetext}
+
@findex \footnotetext
-Synopsis:
+Synopsis, one of:
@example
+\footnotetext@{@var{text}@}
\footnotetext[@var{number}]@{@var{text}@}
@end example
-The @code{\footnotetext} command places @var{text} at the bottom of
-the page as a footnote. This command can come anywhere after the
-@code{\footnotemark} command. The @code{\footnotetext} command must
-appear in outer paragraph mode.
+Place @var{text} at the bottom of the page as a footnote. This command
+can come anywhere after the @code{\footnotemark} command. The optional
+argument @var{number} changes the displayed footnote number. The
+@code{\footnotetext} command must appear in outer paragraph mode.
-The optional argument @var{number} changes the default footnote number.
+@node Footnotes in a table
+@section Footnotes in a table
-@node Symbolic footnotes
-@section Symbolic footnotes
+@cindex Footnotes, in a table
-@cindex footnotes, symbolic instead of numbered
-If you want to use symbols for footnotes, rather than increasing
-numbers, redefine @code{\thefootnote} like this:
+Inside a @code{table} environment the @code{\footnote} command does not
+work. For instance, if the code below appears on its own then the
+footnote simply disappears; there is a footnote mark in the table cell
+but nothing is set at the bottom of the page.
@example
-\renewcommand@{\thefootnote@}@{\fnsymbol@{footnote@}@}
+\begin@{center@}
+ \begin@{tabular@}@{l|l@}
+ \textsc@{Ship@} &\textsc@{Book@} \\ \hline
+ \textit@{HMS Sophie@} &Master and Commander \\
+ \textit@{HMS Polychrest@} &Post Captain \\
+ \textit@{HMS Lively@} &Post Captain \\
+ \textit@{HMS Surprise@} &A number of books\footnote@{Starting with HMS Surprise.@}
+ \end@{tabular@}
+\end@{center@}
@end example
-@findex \fnsymbol@r{, and footnotes}
-@findex \@@fnsymbol
-The @code{\fnsymbol} command produces a predefined series of symbols
-(@pxref{\alph \Alph \arabic \roman \Roman \fnsymbol}). If you want to
-use a different symbol as your footnote mark, you'll need to also
-redefine @code{\@@fnsymbol}.
+The solution is to surround the @code{tabular} environment with a
+@code{minipage} environment, as here (@pxref{minipage}).
+
+@example
+\begin@{center@}
+ \begin@{minipage@}@{.5\textwidth@}
+ .. tabular material ..
+ \end@{minipage@}
+\end@{center@}
+@end example
+
+The same technique will work inside a floating @code{table} environment
+(@pxref{table}). To get the footnote at the bottom of the page use the
+@file{tablefootnote} package, as illustrated in this example. If you
+put @code{\usepackage@{tablefootnote@}} in the preamble and use the code
+shown then the footnote appears at the bottom and is numbered in
+sequence with other footnotes.
+
+@example
+\begin@{table@}
+ \centering
+ \begin@{tabular@}@{l|l@}
+ \textsc@{Date@} &\textsc@{Campaign@} \\ \hline
+ 1862 &Fort Donelson \\
+ 1863 &Vicksburg \\
+ 1865 &Army of Northern Virginia\footnote@{Ending the war.@}
+ \end@{tabular@}
+ \caption@{Forces captured by US Grant@}
+\end@{table@}
+@end example
+
+
+@node Footnotes in section headings
+@section Footnotes in section headings
+
+Putting a footnote in a section heading
+
+@example
+\section@{Full sets\protect\footnote@{This material is due to R~Jones.@}@}
+@end example
+
+causes the footnote to appear both at the bottom of the page where the
+section starts and at the bottom of the table of contents page. To have
+it not appear on the table of contents use the package @file{footmisc}
+with the @code{stable} option.
+
+@example
+\usepackage[stable]@{footmisc@}
+ ..
+\begin@{document@}
+ ..
+\section@{Full sets\footnote@{This material is due to R~Jones.@}@}
+@end example
+
+Note that the @code{\protect} is gone; putting it in causes the
+footnote to reappear on the table of contents.
+
+
+@node Footnotes of footnotes
+@section Footnotes of footnotes
+
+Particularly in the humanities, authors can have multiple classes of
+footnotes, including having footnotes of footnotes. The package
+@file{bigfoot} extends @LaTeX{}'s default footnote mechanism in many
+ways, including allow these two, as in this example.
+
+@example
+\usepackage@{bigfoot@}
+\DeclareNewFootnote@{Default@}
+\DeclareNewFootnote@{from@}[alph] % create class \footnotefrom@{@}
+ ..
+\begin@{document@}
+ ..
+The third theorem is a partial converse of the
+second.\footnotefrom@{First noted in Wilson.\footnote@{Second edition only.@}@}
+ ..
+@end example
+
+
+@node Multiple reference to footnotes
+@section Multiple references to footnotes
+
+You can refer to a single footnote more than once. This example
+uses the package @file{cleverref}.
+
+@c from SE user Jake http://tex.stackexchange.com/a/10116/339
+@example
+\usepackage@{cleveref@}[2012/02/15] % this version of package or later
+\crefformat@{footnote@}@{#2\footnotemark[#1]#3@}
+ ..
+\begin@{document@}
+ ..
+The theorem is from Evers.\footnote@{\label@{fn:TE@}Tinker and Evers, 1994.@}
+The corollary is from Chance.\footnote@{Evers and Chance, 1990.@}
+But the key lemma is from Tinker.\cref@{fn:TE@}
+ ..
+@end example
+
+This solution will work with the package @file{hyperref}.
+See@tie{}@ref{\footnotemark} for a simpler solution in the common case
+of multiple authors with the same affiliation.
@node Footnote parameters
@@ -3649,6 +4877,7 @@ footnotes. This is @samp{6.65pt} for @samp{10pt}, @samp{7.7pt} for
@node Definitions
@chapter Definitions
+
@cindex definitions
@LaTeX{} has support for making new commands of many different kinds.
@@ -3656,21 +4885,24 @@ footnotes. This is @samp{6.65pt} for @samp{10pt}, @samp{7.7pt} for
@c xx everything in this chapter needs examples.
@menu
-* \newcommand & \renewcommand:: (Re)define a new command.
-* \newcounter:: Define a new counter.
-* \newlength:: Define a new length.
-* \newsavebox:: Define a new box.
-* \newenvironment & \renewenvironment:: Define a new environment.
-* \newtheorem:: Define a new @code{theorem}-like environment.
-* \newfont:: Define a new font name.
-* \protect:: Using tricky commands.
+* \newcommand & \renewcommand:: (Re)define a new command.
+* \providecommand:: Define a new command, if name not used.
+* \newcounter:: Define a new counter.
+* \newlength:: Define a new length.
+* \newsavebox:: Define a new box.
+* \newenvironment & \renewenvironment:: Define a new environment.
+* \newtheorem:: Define a new theorem-like environment.
+* \newfont:: Define a new font name.
+* \protect:: Using tricky commands.
@end menu
@node \newcommand & \renewcommand
@section @code{\newcommand} & @code{\renewcommand}
+
@findex \newcommand
@cindex commands, defining new ones
+@cindex commands, redefining
@cindex defining a new command
@cindex new commands, defining
@@ -3678,34 +4910,47 @@ footnotes. This is @samp{6.65pt} for @samp{10pt}, @samp{7.7pt} for
command, respectively. Synopses:
@example
- \newcommand[*]@{@var{cmd}@}[@var{nargs}][@var{optargval}]@{@var{defn}@}
-\renewcommand[*]@{@var{cmd}@}[@var{nargs}][@var{optargval}]@{@var{defn}@}
+ \newcommand@{@var{cmd}@}[@var{nargs}][@var{optargdefault}]@{@var{defn}@}
+ \newcommand*@{@var{cmd}@}[@var{nargs}][@var{optargdefault}]@{@var{defn}@}
+\renewcommand@{@var{cmd}@}[@var{nargs}][@var{optargdefault}]@{@var{defn}@}
+\renewcommand*@{@var{cmd}@}[@var{nargs}][@var{optargdefault}]@{@var{defn}@}
@end example
-@table @var
-@item @code{*}
-@cindex *-form of defining new commands
-The *-form of these commands requires that the arguments not contain
-multiple paragraphs of text (not @code{\long}, in plain @TeX{} terms).
+The @code{*}-form of these two commands requires that the arguments
+not contain multiple paragraphs of text (not @code{\long}, in plain
+@TeX{} terms).
+@table @var
@item cmd
-The command name, beginning with @code{\}. For @code{\newcommand}, it
-must not be already defined and must not begin with @code{\end}; for
-@code{\renewcommand}, it must already be defined.
+Required; the command name. It must begin with @code{\}. For
+@code{\newcommand}, it must not be already defined and must not begin
+with @code{\end}. For @code{\renewcommand}, it must already be
+defined.
@item nargs
-An optional integer from 1 to 9 specifying the number of arguments
-that the command will take. The default is for the command to have no
-arguments.
-
-@item optargval
-If this optional parameter is present, it means that the first
-argument of command @var{cmd} is optional and its default value (i.e.,
-if it is not specified in the call) is @var{optarg}. In otherwise,
-when calling the macro, if no @code{[@var{value}]} is given after
-@code{@var{cmd}}---which is different from having @code{[]} for an
-empty @var{value}---then string @samp{@var{optargval}} becomes the
-value of @code{#1} within @var{defn} when the macro is expanded.
+Optional; an integer from 0 to 9, specifying the number of arguments
+that the command will take. If this argument is not present, the
+default is for the command to have no arguments. When redefining a
+command, the new version can have a different number of arguments than
+the old version.
+
+@item optargdefault
+Optional; if this argument is present then the first argument of defined
+command @var{\cmd} is optional, with default value @var{optargdefault}
+(which may be the empty string). If this argument is not present then
+@var{\cmd} does not take an optional argument.
+
+That is, if @var{\cmd} is used with square brackets following, as in
+@code{\@var{cmd}[@var{myval}]}, then within @var{defn} @code{#1} expands
+@var{myval}. While if @var{\cmd} is called without square brackets
+following, then within @var{defn} the @code{#1} expands to the default
+@var{optargdefault}. In either case, any required arguments will be
+referred to starting with @code{#2}.
+
+Omitting @code{[@var{myval}]} in the call is different from having the
+square brackets with no contents, as in @code{[]}. The former results
+in @code{#1} expanding to @var{optargdefault}; the latter results in
+@code{#1} expanding to the empty string.
@item defn
The text to be substituted for every occurrence of @code{cmd}; a
@@ -3714,10 +4959,79 @@ text of the @var{n}th argument.
@end table
-@c xx \providecommand, * form (non-\long)
+A command with no arguments that is followed in the source by a space
+will swallow that space. The solution is to type @code{@{@}} after the
+command and before the space.
+
+A simple example of defining a new command:
+@code{\newcommand@{\JH@}@{Jim Hef@{@}feron@}} causes the abbreviation
+@code{\JH} to be replaced by the longer text.
+
+Redefining a command is basically the same:
+@code{\renewcommand@{\qedsymbol@}@{@{\small QED@}@}}.
+
+Here's a command definition that uses arguments:
+
+@example
+\newcommand@{\defreference@}[1]@{Definition~\ref@{#1@}@}
+@end example
+
+@noindent Then, @code{\defreference@{def:basis@}} will expand to
+something like @samp{Definition~3.14}.
+
+An example with two arguments:
+@code{\newcommand@{\nbym@}[2]@{#1\!\times\!#2@}} is invoked as
+@code{\nbym@{2@}@{k@}}.
+
+An example with optional arguments:
+
+@example
+\newcommand@{\salutation@}[1][Sir or Madam]@{Dear #1:@}
+@end example
+
+@noindent Then, @code{\salutation} gives @samp{Dear Sir or Madam:} while
+@code{\salutation[John]} gives @samp{Dear John:}. And
+@code{\salutation[]} gives @samp{Dear :}.
+
+The braces around @var{defn} do not delimit the scope of the result of
+expanding @var{defn}. So @code{\newcommand@{\shipname@}[1]@{\it #1@}}
+is wrong since in the sentence
+
+@example
+The \shipname@{Monitor@} met the \shipname@{Virginia@}.
+@end example
+
+@noindent the words @samp{met the} will incorrectly be in italics. An
+extra pair of braces @code{\newcommand@{\shipname@}[1]@{@{\it #1@}@}}
+fixes it.
+
+
+@node \providecommand
+@section @code{\providecommand}
+
+@findex \providecommand
+@cindex commands, defining new ones
+@cindex defining a new command
+@cindex new commands, defining
+
+Defines a command, as long as no command of this name already exists.
+Synopses:
+
+@example
+\providecommand@{@var{cmd}@}[@var{nargs}][@var{optargdefault}]@{@var{defn}@}
+\providecommand*@{@var{cmd}@}[@var{nargs}][@var{optargdefault}]@{@var{defn}@}
+@end example
+
+If no command of this name already exists then this has the same effect
+as @code{\newcommand} (@pxref{\newcommand & \renewcommand}). If a
+command of this name already exists then this definition does nothing.
+This is particularly useful in a style file, or other file that may be
+loaded more than once.
+
@node \newcounter
-@section @code{\newcounter}
+@section @code{\newcounter}: Allocating a counter
+
@findex \newcounter
@cindex counters, defining new
@@ -3727,198 +5041,454 @@ Synopsis:
\newcounter@{@var{countername}@}[@var{supercounter}]
@end example
-The @code{\newcounter} command defines a new counter named @var{countername}.
-The new counter is initialized to zero.
+The @code{\newcounter} command globally defines a new counter named
+@var{countername}. The name consists of letters only and does not begin
+with a backslash (@samp{\}). The name must not already be used by
+another counter. The new counter is initialized to zero.
-Given the optional argument @code{[@var{super}]}, @var{countername}
-will be reset whenever the counter named @var{supercounter} is incremented.
+If the optional argument @code{[@var{supercounter}]} appears, then
+@var{countername} will be numbered within, or subsidiary to, the
+existing counter @var{supercounter}. For example, ordinarily
+@code{subsection} is numbered within @code{section}. Any time
+@var{supercounter} is incremented with @code{\stepcounter}
+(@pxref{\stepcounter}) or @code{\refstepcounter}
+(@pxref{\refstepcounter}) then @var{countername} is reset to zero.
@xref{Counters}, for more information about counters.
@node \newlength
-@section @code{\newlength}
+@section @code{\newlength}: Allocating a length
+
@findex \newlength
-@cindex lengths, defining new
+@cindex lengths, allocating new
+@cindex rubber lengths, defining new
+@cindex skip register, plain @TeX{}
+@cindex glue register, plain @TeX{}
-Synopsis:
+Allocate a new @dfn{length} register. Synopsis:
@example
\newlength@{\@var{arg}@}
@end example
-The @code{\newlength} command defines the mandatory argument as a
-@dfn{length} command with a value of zero. The argument must
-be a control sequence, as in @code{\newlength@{\foo@}}. An error
-occurs if @code{\foo} is already defined.
+This command takes one required argument, which must begin with a
+backslash (@samp{\}). It creates a new length register named
+@code{\@var{arg}}, which is a place to hold (rubber) lengths such as
+@code{1in plus.2in minus.1in} (what plain @TeX{} calls a @code{skip}
+register). The register gets an initial value of zero. The control
+sequence @code{\@var{arg}} must not already be defined.
-@xref{Lengths}, for how to set the new length to a nonzero value, and
-for more information about lengths in general.
+@xref{Lengths}, for more about lengths.
@node \newsavebox
-@section @code{\newsavebox}
+@section @code{\newsavebox}: Allocating a box
+
@findex \newsavebox
+@cindex box, allocating new
-Synopsis:
+Allocate a ``bin'' for holding a box. Synopsis:
@example
-\newsavebox@{@var{cmd}@}
+\newsavebox@{\@var{cmd}@}
@end example
-Defines @code{\@var{cmd}}, which must be a command name not already
-defined, to refer to a new bin for storing boxes.
+Defines @code{\@var{cmd}} to refer to a new bin for storing boxes.
+Such a box is for holding typeset material, to use multiple times
+(@pxref{Boxes}) or to measure or manipulate. The name
+@code{\@var{cmd}} must start with a backslash (@samp{\}), and must not
+be already defined.
+
+The allocation of a box is global. This command is fragile
+(@pxref{\protect}).
@node \newenvironment & \renewenvironment
@section @code{\newenvironment} & @code{\renewenvironment}
+
@findex \newenvironment
@findex \renewenvironment
@cindex environments, defining
@cindex defining new environments
@cindex redefining environments
-Synopses:
+These commands define or redefine an environment @var{env}, that is,
+@code{\begin@{@var{env}@} @dots{} \end@{@var{env}@}}. Synopses:
@example
- \newenvironment[*]@{@var{env}@}[@var{nargs}][@var{default}]@{@var{begdef}@}@{@var{enddef}@}
-\renewenvironment[*]@{@var{env}@}[@var{nargs}]@{@var{begdef}@}@{@var{enddef}@}
+ \newenvironment@{@var{env}@}[@var{nargs}][@var{optargdefault}]@{@var{begdefn}@}@{@var{enddefn}@}
+ \newenvironment*@{@var{env}@}[@var{nargs}][@var{optargdefault}]@{@var{begdefn}@}@{@var{enddefn}@}
+\renewenvironment@{@var{env}@}[@var{nargs}][@var{optargdefault}]@{@var{begdefn}@}@{@var{enddefn}@}
+\renewenvironment*@{@var{env}@}[@var{nargs}][@var{optargdefault}]@{@var{begdefn}@}@{@var{enddefn}@}
@end example
-These commands define or redefine an environment @var{env}, that is,
-@code{\begin@{@var{env}@} @dots{} \end@{@var{env}@}}.
+Unlike @code{\newcommand} and @code{\renewcommand}, the @code{*}-forms
+@code{\newenvironment*} and @code{\renewcommand*} have the same effect
+as the forms with no @code{*}.
@table @var
-@item @code{*}
-@cindex *-form of environment commands
-The *-form of these commands requires that the arguments (not the
-contents of the environment) not contain multiple paragraphs of text.
-
@item env
-The name of the environment. For @code{\newenvironment}, @var{env}
-must not be an existing environment, and the command @code{\@var{env}}
-must be undefined. For @code{\renewenvironment}, @var{env} must be
-the name of an existing environment.
+Required; the environment name. It does not begin with backslash
+(@code{\}). It must not begin with the string @code{end}. For
+@code{\newenvironment}, the name @var{env} must not be the name of an
+already existing environment, and also the command @code{\@var{env}}
+must be undefined. For @code{\renewenvironment}, @var{env} must be the
+name of an existing environment.
@item nargs
-An integer from 1 to 9 denoting the number of arguments of
-the newly-defined environment. The default is no arguments.
+Optional; an integer from 0 to 9 denoting the number of arguments of
+that the environment will take. These arguments appear after the
+@code{\begin}, as in
+@code{\begin@{@var{env}@}@{@var{arg1}@}@dots{}@{@var{argn}@}}. If this
+argument is not present then the default is for the environment to have
+no arguments. When redefining an environment, the new version can have
+a different number of arguments than the old version.
+
+@item optargdefault
+Optional; if this argument is present then the first argument of the
+defined environment is optional, with default value @var{optargdefault}
+(which may be the empty string). If this argument is not present then
+the environment does not take an optional argument.
+
+That is, when @code{[@var{optargdefault}]} is present in the environment
+definition, if @code{\begin@{@var{env}@}} is used with square brackets
+following, as in @code{\begin@{@var{env}@}[@var{myval}]}, then within
+the environment @code{#1} expands @var{myval}. If
+@code{\begin@{@var{env}@}} is called without square brackets following,
+then within the environment the @code{#1} expands to the default
+@var{optargdefault}. In either case, any required arguments will be
+referred to starting with @code{#2}.
+
+
+Omitting @code{[@var{myval}]} in the call is different from having the
+square brackets with no contents, as in @code{[]}. The former results
+in @code{#1} expanding to @var{optargdefault}; the latter results in
+@code{#1} expanding to the empty string.
+
+@item begdefn
+Required; the text expanded at every occurrence of
+@code{\begin@{@var{env}@}}; a construct of the form @code{#@var{n}} in
+@var{begdef} is replaced by the text of the @var{n}th argument.
+
+@item enddefn
+Required; the text expanded at every occurrence of
+@code{\end@{@var{env}@}}. Note that it may not contain any argument
+parameters, so @code{#@var{n}} cannot be used here.
-@item default
-If this is specified, the first argument is optional, and @var{default}
-gives the default value for that argument.
+@end table
-@item begdef
-The text expanded at every occurrence of @code{\begin@{@var{env}@}}; a
-construct of the form @code{#@var{n}} in @var{begdef} is replaced by
-the text of the @var{n}th argument.
+The environment @var{env} delimits the scope of the result of expanding
+@var{begdefn} and @var{enddefn}. Thus, in the first example below, the
+effect of the @code{\small} is limited to the quote and does not extend
+to material following the environment.
-@item enddef
-The text expanded at every occurrence of @code{\end@{@var{env}@}}. It
-may not contain any argument parameters.
+This example gives an environment like @LaTeX{}'s @code{quotation} except that
+it will be set in smaller type.
-@end table
+@example
+\newenvironment@{smallquote@}@{%
+ \small\begin@{quotation@}
+@}@{%
+ \end@{quotation@}
+@}
+@end example
+
+This shows the use of arguments; it gives a quotation environment that
+cites the author.
+
+@example
+\newenvironment@{citequote@}[1][Shakespeare]@{%
+ \begin@{quotation@}
+ \noindent\textit@{#1@}:
+@}@{%
+ \end@{quotation@}
+@}
+@end example
+
+@noindent The author's name is optional, and defaults to Shakespeare.
+In the document, use the environment as here:
+
+@example
+\begin@{citequote@}[Lincoln]
+ ..
+\end@{citequote@}
+@end example
+
+The final example shows how to save the value of an argument to use in
+@var{enddefn}.
+
+@example
+\newsavebox@{\quoteauthor@}
+\newenvironment@{citequote@}[1][Shakespeare]@{%
+ \sbox\quoteauthor@{#1@}%
+ \begin@{quotation@}
+@}@{%
+ \hspace@{1em plus 1fill@}---\usebox@{\quoteauthor@}
+ \end@{quotation@}
+@}
+@end example
@node \newtheorem
@section @code{\newtheorem}
+
@findex \newtheorem
@cindex theorems, defining
@cindex defining new theorems
+@cindex theorem-like environment
+@cindex environment, theorem-like
+Define a new @dfn{theorem-like environment}. Synopses:
+
+@example
+\newtheorem@{@var{name}@}@{@var{title}@}[@var{numbered_within}]
+\newtheorem@{@var{name}@}[@var{numbered_like}]@{@var{title}@}
+@end example
+
+Both create a theorem-like environment @var{name}. Using the first
+form,
+
@example
-\newtheorem@{@var{newenv}@}@{@var{label}@}[@var{within}]
-\newtheorem@{@var{newenv}@}[@var{numbered_like}]@{@var{label}@}
+\newtheorem@{@var{name}@}@{@var{title}@}[@var{numbered_within}]
@end example
-This command defines a theorem-like environment. Arguments:
+@noindent with the optional argument after the second required argument,
+creates an environment whose counter is subordinate to the existing
+counter @var{numbered_within}: it will be reset when
+@var{numbered_within} is reset).
+
+Using the second form,
+
+@example
+\newtheorem@{@var{name}@}[@var{numbered_like}]@{@var{title}@}
+@end example
+
+@noindent with the optional argument between the two required
+arguments, will create an environment whose counter will share the
+previously defined counter @var{numbered_like}.
+
+You can specify one of @var{numbered_within} and @var{numbered_like},
+or neither, but not both.
+
+This command creates a counter named @var{name}. In addition, unless
+the optional argument @var{numbered_like} is used, the current
+@code{\ref} value will be that of @code{\the@var{numbered_within}}
+(@pxref{\ref}).
+
+This declaration is global. It is fragile (@pxref{\protect}).
+
+Arguments:
@table @var
-@item newenv
-The name of the environment to be defined; must not be the name of an
-existing environment or otherwise defined.
+@item name
+The name of the environment. It must not begin with a backslash
+(@samp{\}). It must not be the name of an existing environment; indeed,
+the command name @code{\@var{name}} must not already be defined as anything.
-@item label
+@item title
The text printed at the beginning of the environment, before the
number. For example, @samp{Theorem}.
-@item numbered_like
-(Optional.) The name of an already defined theorem-like environment;
-the new environment will be numbered just like @var{numbered_like}.
+@item numbered_within
+Optional; the name of an already defined counter, usually a sectional
+unit such as @code{chapter} or @code{section}. When the
+@var{numbered_within} counter is reset then the @var{name} environment's
+counter will also be reset.
+
+If this optional argument is not used then the command
+@code{\the@var{name}} is set to @code{\arabic@{@var{name}@}}.
-@item within
-(Optional.) The name of an already defined counter, a sectional unit.
-The new theorem counter will be reset at the same time as the
-@var{within} counter.
+@item numbered_like
+Optional; the name of an already defined theorem-like environment. The
+new environment will be numbered in sequence with @var{numbered_like}.
@end table
-At most one of @var{numbered_like} and @var{within} can be specified,
-not both.
+Without any optional arguments the environments are numbered
+sequentially. This example has a declaration in the preamble that
+results in @samp{Definition@tie{}1} and @samp{Definition@tie{}2} in the output.
+
+@example
+\newtheorem@{defn@}@{Definition@}
+\begin@{document@}
+\section@{...@}
+\begin@{defn@}
+ First def
+\end@{defn@}
+
+\section@{...@}
+\begin@{defn@}
+ Second def
+\end@{defn@}
+@end example
+
+Because this example specifies the optional argument
+@var{numbered_within} to @code{\newtheorem} as @code{section}, the
+example, with the same document body, gives @samp{Definition@tie{}1.1}
+and @samp{Definition@tie{}2.1}.
+
+@example
+\newtheorem@{defn@}@{Definition@}[section]
+\begin@{document@}
+\section@{...@}
+\begin@{defn@}
+ First def
+\end@{defn@}
+
+\section@{...@}
+\begin@{defn@}
+ Second def
+\end@{defn@}
+@end example
+
+In this example there are two declarations in the preamble, the second
+of which calls for the new @code{thm} environment to use the same
+counter as @code{defn}. It gives @samp{Definition@tie{}1.1}, followed
+by @samp{Theorem@tie{}2.1} and @samp{Definition@tie{}2.2}.
+
+@example
+\newtheorem@{defn@}@{Definition@}[section]
+\newtheorem@{thm@}[defn]@{Theorem@}
+\begin@{document@}
+\section@{...@}
+\begin@{defn@}
+ First def
+\end@{defn@}
+
+\section@{...@}
+\begin@{thm@}
+ First thm
+\end@{thm@}
+
+\begin@{defn@}
+ Second def
+\end@{defn@}
+@end example
@node \newfont
-@section @code{\newfont}
+@section @code{\newfont}: Define a new font (obsolete)
+
@findex \newfont
@cindex fonts, new commands for
@cindex defining new fonts
+@code{\newfont}, now obsolete, defines a command that will switch fonts.
Synopsis:
@example
-\newfont@{@var{cmd}@}@{@var{fontname}@}
+\newfont@{\@var{cmd}@}@{@var{font description}@}
@end example
-Defines a control sequence @code{\@var{cmd}}, which must not already
-be defined, to make @var{fontname} be the current font. The file
-looked for on the system is named @file{@var{fontname}.tfm}.
+This defines a control sequence @code{\@var{cmd}} that will change the
+current font. @LaTeX{} will look on your system for a file named
+@file{@var{fontname}.tfm}. The control sequence must must not already
+be defined. It must begin with a backslash (@samp{\}).
+
+@findex .fd @r{file}
+This command is obsolete. It is a low-level command for setting up an
+individual font. Today fonts are almost always defined in families
+(which allows you to, for example, associate a boldface with a roman)
+through the so-called ``New Font Selection Scheme'', either by using
+@file{.fd} files or through the use of an engine that can access
+system fonts such as Xe@LaTeX{} (@pxref{@TeX{} engines}).
+@c xx explain nfss somewhere
+
+@cindex at clause, in font definitions
+@cindex design size, in font definitions
+But since it is part of @LaTeX{}, here is an explanation: the
+@var{font description} consists of a @var{fontname} and an optional
+@dfn{at clause}; this can have the form either @code{at @var{dimen}}
+or @code{scaled @var{factor}}, where a @var{factor} of @samp{1000}
+means no scaling. For @LaTeX{}'s purposes, all this does is scale all
+the character and other font dimensions relative to the font's design
+size, which is a value defined in the @file{.tfm} file.
+
+This example defines two equivalent fonts and typesets a few
+characters in each:
-This is a low-level command for setting up to use an individual font.
-More commonly, fonts are defined in families through @file{.fd} files.
+@example
+\newfont@{\testfontat@}@{cmb10 at 11pt@}
+\newfont@{\testfontscaled@}@{cmb10 scaled 11pt@}
+\testfontat abc
+\testfontscaled abc
+@end example
@node \protect
@section @code{\protect}
-@findex \protect
+@findex \protect
@cindex fragile commands
+@cindex robust commands
@cindex moving arguments
-Footnotes, line breaks, any command that has an optional argument, and
-many more are so-called @dfn{fragile} commands. When a fragile
-command is used in certain contexts, called @dfn{moving arguments}, it
-must be preceded by @code{\protect}. In addition, any fragile
-commands within the arguments must have their own @code{\protect}.
-Some examples of moving arguments are @code{\caption}
-(@pxref{figure}), @code{\thanks} (@pxref{\maketitle}), and
-@-expressions in @code{tabular} and @code{array} environments
-(@pxref{tabular}).
-
-@cindex robust commands
-Commands which are not fragile are called @dfn{robust}. They must not
-be preceded by @code{\protect}.
+All @LaTeX{} commands are either @dfn{fragile} or @dfn{robust}.
+Footnotes, line breaks, any command that has an optional argument, and
+many more, are fragile. A fragile command can break when it is used in
+the argument to certain commands. To prevent such commands from
+breaking they must be preceded by the command @code{\protect}.
+
+For example, when @LaTeX{} runs the @code{\section@{@var{section
+name}@}} command it writes the @var{section name} text to the
+@file{.aux} auxiliary file, moving it there for use elsewhere in the
+document such as in the table of contents. Any argument that is
+internally expanded by @LaTeX{} without typesetting it directly is
+referred to as a @dfn{moving argument}. A command is fragile if it can
+expand during this process into invalid @TeX{} code. Some examples of
+moving arguments are those that appear in the @code{\caption@{..@}}
+command (@pxref{figure}), in the @code{\thanks@{..@}} command
+(@pxref{\maketitle}), and in @@-expressions in the @code{tabular} and
+@code{array} environments (@pxref{tabular}).
+
+If you get strange errors from commands used in moving arguments, try
+preceding it with @code{\protect}. Every fragile commands must be
+protected with their own @code{\protect}.
+
+Although usually a @code{\protect} command doesn't hurt, length
+commands are robust and should not be preceded by a @code{\protect}
+command. Nor can a @code{\protect} command be used in the argument to
+@code{\addtocounter} or @code{\setcounter} command.
+
+In this example the @code{caption} command gives a mysterious error
+about an extra curly brace. Fix the problem by preceding each
+@code{\raisebox} command with @code{\protect}.
-See also:
+@example
+\begin@{figure@}
+ ..
+ \caption@{Company headquarters of A\raisebox@{1pt@}@{B@}\raisebox@{-1pt@}@{C@}@}
+\end@{figure@}
+@end example
-@smallexample
-@exdent @url{http://www-h.eng.cam.ac.uk/help/tpl/textprocessing/teTeX/latex/latex2e-html/fragile.html}
-@exdent @url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=protect}
-@end smallexample
+In the next example the @code{\tableofcontents} command gives an error
+because the @code{\(..\)} in the section title expands to illegal @TeX{}
+in the @file{.toc} file. You can solve this by changing @code{\(..\)}
+to @code{\protect\(..\protect\)}.
-@c xx really need examples.
+@example
+\begin@{document@}
+\tableofcontents
+ ..
+\section@{Einstein's \( e=mc^2 \)@}
+ ..
+@end example
@node Counters
@chapter Counters
+
@cindex counters, a list of
@cindex variables, a list of
Everything @LaTeX{} numbers for you has a counter associated with
-it. The name of the counter is the same as the name of the environment
-or command that produces the number, except with no @code{\}.
-(@code{enumi}--@code{enumiv} are used for the nested enumerate
-environment.) Below is a list of the counters used in @LaTeX{}'s
-standard document classes to control numbering.
+it. The name of the counter is often the same as the name of the
+environment or command associated with the number, except with no
+backslash (@code{\}). Thus the @code{\chapter} command starts a
+chapter and the @code{chapter} counter keeps track of the chapter
+number. Below is a list of the counters used in @LaTeX{}'s standard
+document classes to control numbering.
@example
part paragraph figure enumi
@@ -3928,6 +5498,16 @@ subsection equation mpfootnote enumiv
subsubsection
@end example
+The @code{mpfootnote} counter is used by the @code{\footnote} command
+inside of a minipage (@pxref{minipage}).
+
+The @code{enumi} through @code{enumiv} counters are used in the
+@code{enumerate} environment, for up to four nested levels
+(@pxref{enumerate}).
+
+New counters are created with @code{\newcounter}. @xref{\newcounter}.
+
+
@menu
* \alph \Alph \arabic \roman \Roman \fnsymbol:: Print value of a counter.
* \usecounter:: Use a specified counter in a list environment.
@@ -3943,8 +5523,11 @@ subsubsection
@node \alph \Alph \arabic \roman \Roman \fnsymbol
@section @code{\alph \Alph \arabic \roman \Roman \fnsymbol}: Printing counters
+@cindex counters, printing
+
All of these commands take a single counter as an argument, for
-instance, @code{\alph@{enumi@}}.
+instance, @code{\alph@{enumi@}}. Note that the counter name does not
+start with a backslash.
@ftable @code
@item \alph
@@ -3972,7 +5555,7 @@ Here are the symbols (as Unicode code points in ASCII output):
@display
asterisk(*) dagger(@U{2021}) ddagger(@U{2021})
section-sign(@U{00A7}) paragraph-sign(@U{00B6}) parallel(@U{2225})
-double-asterisk(**) double-dagger(@U{2021}@U{2021}) double-ddagger(@U{2021}@U{2021})
+double-asterisk(**) double-dagger(@U{2020}@U{2020}) double-ddagger(@U{2021}@U{2021})
@end display
@end ftable
@@ -3980,6 +5563,7 @@ double-asterisk(**) double-dagger(@U{2021}@U{2021}) double-ddagger(@U{2021}@U{20
@node \usecounter
@section @code{\usecounter@{@var{counter}@}}
+
@findex \usecounter
@cindex list items, specifying counter
@cindex numbered items, specifying counter
@@ -3990,13 +5574,31 @@ Synopsis:
\usecounter@{@var{counter}@}
@end example
-The @code{\usecounter} command is used in the second argument of the
-@code{list} environment to specify @var{counter} to be used to number
-the list items.
+In the @code{list} environment, when used in the second argument, this
+command sets up @var{counter} to number the list items. It initializes
+@var{counter} to zero, and arranges that when @code{\item} is called
+without its optional argument then @var{counter} is incremented by
+@code{\refstepcounter}, making its value be the current @code{ref}
+value. This command is fragile (@pxref{\protect}).
+
+Put in the preamble, this makes a new list environment enumerated with
+@var{testcounter}:
+
+@example
+\newcounter@{testcounter@}
+\newenvironment@{test@}@{%
+ \begin@{list@}@{@}@{%
+ \usecounter@{testcounter@}
+ @}
+@}@{%
+ \end@{list@}
+@}
+@end example
@node \value
@section @code{\value@{@var{counter}@}}
+
@findex \value
@cindex counters, getting value of
@@ -4006,18 +5608,37 @@ Synopsis:
\value@{@var{counter}@}
@end example
-The @code{\value} command produces the value of @var{counter}. It can
-be used anywhere @LaTeX{} expects a number, for example:
+This command expands to the value of @var{counter}. It is often used
+in @code{\setcounter} or @code{\addtocounter}, but @code{\value} can
+be used anywhere that @LaTeX{} expects a number. It must not be
+preceded by @code{\protect} (@pxref{\protect}).
+
+The @code{\value} command is not used for typesetting the value of the
+counter. @xref{\alph \Alph \arabic \roman \Roman \fnsymbol}.
+
+This example outputs @samp{Test counter is@tie{}6. Other counter
+is@tie{}5.}.
+
+@example
+\newcounter@{test@} \setcounter@{test@}@{5@}
+\newcounter@{other@} \setcounter@{other@}@{\value@{test@}@}
+\addtocounter@{test@}@{1@}
+
+Test counter is \arabic@{test@}.
+Other counter is \arabic@{other@}.
+@end example
+
+This example inserts @code{\hspace@{4\parindent@}}.
@example
-\setcounter@{myctr@}@{3@}
-\addtocounter@{myctr@}@{1@}
+\setcounter@{myctr@}@{3@} \addtocounter@{myctr@}@{1@}
\hspace@{\value@{myctr@}\parindent@}
@end example
@node \setcounter
@section @code{\setcounter@{@var{counter}@}@{@var{value}@}}
+
@findex \setcounter
@cindex counters, setting
@cindex setting counters
@@ -4028,37 +5649,51 @@ Synopsis:
\setcounter@{@var{counter}@}@{@var{value}@}
@end example
-The @code{\setcounter} command sets the value of @var{counter} to the
-@var{value} argument.
+The @code{\setcounter} command globally sets the value of @var{counter}
+to the @var{value} argument. Note that the counter name does not start
+with a backslash.
@node \addtocounter
@section @code{\addtocounter@{@var{counter}@}@{@var{value}@}}
+
@findex \addtocounter
-The @code{\addtocounter} command increments @var{counter} by the
-amount specified by the @var{value} argument, which may be negative.
+The @code{\addtocounter} command globally increments @var{counter} by
+the amount specified by the @var{value} argument, which may be negative.
@node \refstepcounter
@section @code{\refstepcounter@{@var{counter}@}}
+
@findex \refstepcounter
The @code{\refstepcounter} command works in the same way as
-@code{\stepcounter} @xref{\stepcounter}, except it also defines the
-current @code{\ref} value to be the result of @code{\thecounter}.
+@code{\stepcounter} (@pxref{\stepcounter}): it globally increments the
+value of @var{counter} by one and resets the value of any counter
+numbered within it. (For the definition of ``counters numbered
+within'', @pxref{\newcounter}.)
+
+In addition, this command also defines the current @code{\ref} value
+to be the result of @code{\thecounter}.
+
+While the counter value is set globally, the @code{\ref} value is set
+locally, i.e., inside the current group.
@node \stepcounter
@section @code{\stepcounter@{@var{counter}@}}
+
@findex \stepcounter
-The @code{\stepcounter} command adds one to @var{counter} and
-resets all subsidiary counters.
+The @code{\stepcounter} command globally adds one to @var{counter} and
+resets all counters numbered within it. (For the definition of
+``counters numbered within'', @pxref{\newcounter}.)
@node \day \month \year
@section @code{\day \month \year}: Predefined counters
+
@findex \day
@findex \month
@findex \year
@@ -4075,12 +5710,38 @@ current day (@pxref{\today}).
@node Lengths
@chapter Lengths
+
@cindex lengths, defining and using
-A @code{length} is a measure of distance. Many @LaTeX{} commands take a
+A @dfn{length} is a measure of distance. Many @LaTeX{} commands take a
length as an argument.
+Lengths come in two types. A @dfn{rigid length} (what Plain @TeX{}
+calls a @dfn{dimen}) such as @code{10pt} cannot contain a @code{plus} or
+@code{minus} component. A @dfn{rubber length} (what Plain @TeX{} calls
+a @dfn{skip}) can contain those, as with @code{1cm plus0.05cm
+minus0.01cm}. These give the ability to stretch or shrink; the length
+in the prior sentence could appear in the output as long as 1.05@tie{}cm
+or as short as 0.99@tie{}cm, depending on what @TeX{}'s typesetting
+algorithm finds optimum.
+
+The @code{plus} or @code{minus} component of a rubber length can contain
+a @dfn{fill} component, as in @code{1in plus2fill}. This gives the
+length infinite stretchability or shrinkability, so that the length in
+the prior sentence can be set by @TeX{} to any distance greater than or
+equal to 1@tie{}inch. @TeX{} actually provides three infinite glue
+components @code{fil}, @code{fill}, and @code{filll}, such that the
+later ones overcome the earlier ones, but only the middle value is
+ordinarily used. @xref{\hfill}, @xref{\vfill}.
+
+Multiplying an entire rubber length by a number turns it into a rigid
+length, so that after @code{\setlength@{\ylength@}@{1in plus 0.2in@}}
+and @code{\setlength@{\zlength@}@{3\ylength@}} then the value of
+@code{\zlength} is @code{3in}.
+
+
@menu
+* Units of length:: The units that @LaTeX{} knows.
* \setlength:: Set the value of a length.
* \addtolength:: Add a quantity to a length.
* \settodepth:: Set a length to the depth of something.
@@ -4090,8 +5751,92 @@ length as an argument.
@end menu
+@node Units of length
+@section Units of length
+
+@cindex units, of length
+
+@TeX{} and @LaTeX{} know about these units both inside and outside of
+math mode.
+
+@table @code
+@item pt
+@findex pt
+@cindex Point
+Point 1/72.27 inch. The conversion to metric units, to two decimal
+places, is 1@dmn{point} = 2.85@dmn{mm} = 28.45@dmn{cm}.
+
+@item pc
+@cindex pica
+@findex pc
+Pica, 12 pt
+
+@item in
+@findex in
+@findex inch
+Inch, 72.27 pt
+
+@item bp
+@findex bp
+@cindex Big point
+Big point, 1/72 inch. This length is the definition of a point in
+PostScript and many desktop publishing systems.
+
+@item cm
+@cindex Centimeter
+@findex cm
+Centimeter
+
+@item mm
+@cindex Millimeter
+@findex mm
+Millimeter
+
+@item dd
+@cindex Didot point
+@findex dd
+Didot point, 1.07 pt
+
+@item cc
+@cindex Cicero
+@findex cc
+Cicero, 12 dd
+
+@item sp
+@cindex Scaled point
+@findex sp
+Scaled point, 1/65536 pt
+
+@end table
+
+@cindex ex
+@cindex x-height
+@findex ex
+@cindex m-width
+@cindex em
+@findex em
+Two other lengths that are often used are values set by the designer of
+the font. The x-height of the current font @dfn{ex}, traditionally the
+height of the lower case letter x, is often used for vertical
+lengths. Similarly @dfn{em}, traditionally the width of the capital
+letter M, is often used for horizontal lengths (there is also
+@code{\enspace}, which is @code{0.5em}). Use of these can help make a
+definition work better across font changes. For example, a definition
+of the vertical space between list items given as
+@code{\setlength@{\itemsep@}@{1ex plus 0.05ex minus 0.01ex@}} is more
+likely to still be reasonable if the font is changed than a definition
+given in points.
+
+@cindex mu, math unit
+@findex mu
+In math mode, many definitions are expressed in terms of the math unit
+@dfn{mu} given by 1 em = 18 mu, where the em is taken from the current
+math symbols family. @xref{Spacing in math mode}.
+
+
@node \setlength
@section @code{\setlength@{\@var{len}@}@{@var{value}@}}
+
@findex \setlength
@cindex lengths, setting
@@ -4102,7 +5847,8 @@ understands, i.e., inches (@code{in}), millimeters (@code{mm}), points
@node \addtolength
-@section \addtolength@{@var{\len}@}@{@var{amount}@}
+@section @code{\addtolength@{@var{\len}@}@{@var{amount}@}}
+
@findex \addtolength
@cindex lengths, adding to
@@ -4113,6 +5859,7 @@ may be negative.
@node \settodepth
@section @code{\settodepth}
+
@findex \settodepth
@code{\settodepth@{\gnat@}@{text@}}
@@ -4123,6 +5870,7 @@ equal to the depth of the @code{text} argument.
@node \settoheight
@section @code{\settoheight}
+
@findex \settoheight
@code{\settoheight@{\gnat@}@{text@}}
@@ -4134,6 +5882,7 @@ equal to the height of the @code{text} argument.
@node \settowidth
@section @code{\settowidth@{\@var{len}@}@{@var{text}@}}
+
@findex \settowidth
The @code{\settowidth} command sets the value of the command @var{\len}
@@ -4142,6 +5891,7 @@ to the width of the @var{text} argument.
@node Predefined lengths
@section Predefined lengths
+
@cindex lengths, predefined
@cindex predefined lengths
@@ -4168,6 +5918,7 @@ natural size, e.g., say
@node Making paragraphs
@chapter Making paragraphs
+
@cindex making paragraphs
@cindex paragraphs
@@ -4186,14 +5937,14 @@ a sectioning command.
@node \indent
@section @code{\indent}
+
@findex \indent
@findex \parindent
@cindex indent, forcing
-@code{\indent} produces a horizontal space whose width equals the
-width of the @code{\parindent} length, the normal paragraph
-indentation. It is used to add paragraph indentation where it would
-otherwise be suppressed.
+@code{\indent} produces a horizontal space whose width equals to the
+@code{\parindent} length, the normal paragraph indentation. It is used
+to add paragraph indentation where it would otherwise be suppressed.
The default value for @code{\parindent} is @code{1em} in two-column
mode, otherwise @code{15pt} for @code{10pt} documents, @code{17pt} for
@@ -4202,16 +5953,28 @@ mode, otherwise @code{15pt} for @code{10pt} documents, @code{17pt} for
@node \noindent
@section @code{\noindent}
+
@findex \noindent
@cindex indent, suppressing
-When used at the beginning of the paragraph, @code{\noindent}
-suppresses any paragraph indentation. It has no effect when used in
-the middle of a paragraph.
+When used at the beginning of the paragraph, this command suppresses any
+paragraph indentation, as in this example.
+
+@example
+.. end of the prior paragraph.
+
+\noindent This paragraph is not indented.
+@end example
+
+It has no effect when used in the middle of a paragraph.
+
+To eliminate paragraph indentation in an entire document, put
+@code{\setlength@{\parindent@}@{0pt@}} in the preamble.
@node \parskip
@section @code{\parskip}
+
@findex \parskip
@cindex vertical space before paragraphs
@@ -4221,6 +5984,7 @@ before each paragraph. The default is @code{0pt plus1pt}.
@node Marginal notes
@section Marginal notes
+
@cindex marginal notes
@cindex notes in the margin
@cindex remarks in the margin
@@ -4241,11 +6005,11 @@ will be placed
@itemize @bullet
@item
-in the right margin for one-sided layout;
+in the right margin for one-sided layout (option @code{oneside}, see @ref{Document class options});
@item
-in the outside margin for two-sided layout;
+in the outside margin for two-sided layout (option @code{twoside}, see @ref{Document class options});
@item
-in the nearest margin for two-column layout.
+in the nearest margin for two-column layout (option @code{twocolumn}, see @ref{Document class options}).
@end itemize
@findex \reversemarginpar
@@ -4288,13 +6052,14 @@ notes from falling off the bottom of the page.
@node Math formulas
@chapter Math formulas
+
@cindex math formulas
@cindex formulas, math
@cindex math mode, entering
-
@findex math @r{environment}
@findex displaymath @r{environment}
@findex equation @r{environment}
+
There are three environments that put @LaTeX{} in math mode:
@table @code
@@ -4340,7 +6105,8 @@ it too is used @emph{outside} of math mode.
@findex \displaystyle
The @code{\displaystyle} declaration forces the size and style of the
formula to be that of @code{displaymath}, e.g., with limits above and
-below summations. For example
+below summations. For example:
+
@example
$\displaystyle \sum_@{n=0@}^\infty x_n $
@end example
@@ -4359,668 +6125,929 @@ $\displaystyle \sum_@{n=0@}^\infty x_n $
@node Subscripts & superscripts
@section Subscripts & superscripts
+
@cindex superscript
@cindex subscript
@cindex exponent
@findex _
@findex ^
-To get an expression @i{exp} to appear as a subscript, you just type
-@code{_@{}@i{exp}@code{@}}. To get @i{exp} to appear as a
-superscript, you type @code{^@{}@i{exp}@code{@}}. @LaTeX{} handles
-superscripted superscripts and all of that stuff in the natural way.
-It even does the right thing when something has both a subscript and a
-superscript.
+In math mode, use the caret character@tie{}@code{^} to make the
+@var{exp} appear as a superscript, ie.@: type @code{^@{@var{exp}@}}.
+Similarly, in math mode, underscore@tie{}@code{_@{@var{exp}@}} makes a
+subscript out of @var{exp}.
+
+In this example the @code{0} and @code{1} appear as subscripts while the
+@code{2} is a superscript.
+
+@example
+\( (x_0+x_1)^2 \)
+@end example
+
+To have more than one character in @var{exp} use curly braces as in
+@code{e^@{-2x@}}.
+
+@LaTeX{} handles superscripts on superscripts, and all of that stuff, in
+the natural way, so expressions such as @code{e^@{x^2@}} and
+@code{x_@{a_0@}} will look right. It also does the right thing when
+something has both a subscript and a superscript. In this example the
+@code{0} appears at the bottom of the integral sign while the @code{10}
+appears at the top.
+
+@example
+\int_0^@{10@} x^2 \,dx
+@end example
+
+You can put a superscript or subscript before a symbol with a construct
+such as @code{@{@}_t K^2} in math mode (the initial @code{@{@}} prevents
+the prefixed subscript from being attached to any prior symbols in the
+expression).
+
+Outside of math mode, a construct like @code{A
+test$_\textnormal@{subscript@}$} will produce a subscript typeset in
+text mode, not math mode. Note that there are packages specialized for
+writing Chemical formulas such as @file{mhchem}.
+@c xx display mode
@node Math symbols
@section Math symbols
+
@cindex math symbols
@cindex symbols, math
@cindex greek letters
-@LaTeX{} provides almost any mathematical symbol you're likely to
-need. The commands for generating them can be used only in math mode.
+@LaTeX{} provides almost any mathematical symbol you're likely to need.
For example, if you include @code{$\pi$} in your source, you will get
-the pi symbol (@math{\pi}) in your output.
+the pi symbol @BES{03C0,\pi}.
+
+Below is a list of commonly-available symbols. It is by no means an
+exhaustive list. Each symbol here is described with a short phrase, and
+its symbol class (which determines the spacing around it) is given in
+parenthesis. The commands for these symbols can be used only in math
+mode.
+
+@c xx Add Negation: @code{} for negations of relevant symbols
+@c Useful: http://www.w3.org/TR/WD-math-970515/section6.html
@ftable @code
@item \|
-@math{\|}
+@BES{2225,\|} Parallel (relation). Synonym:@tie{}@code{\parallel}.
@item \aleph
-@math{\aleph}
+@BES{2135,\aleph} Aleph, transfinite cardinal (ordinary).
@item \alpha
-@math{\alpha}
+@BES{03B1,\alpha} Lower case Greek letter alpha (ordinary).
@item \amalg
-@math{\amalg} (binary operation)
+@BES{2A3F,\amalg} Disjoint union (binary)
@item \angle
-@math{\angle}
+@BES{2220,\angle} Geometric angle (ordinary). Similar: less-than
+sign@tie{}@code{<} and angle bracket@tie{}@code{\langle}.
@item \approx
-@math{\approx} (relation)
+@BES{2248,\approx} Almost equal to (relation).
@item \ast
-@math{\ast} (binary operation)
+@BES{2217,\ast} Asterisk operator, convolution, six-pointed
+(binary). Synonym:@tie{}@code{*}, which is often a superscript or
+subscript, as in the Kleene star. Similar:@tie{}@code{\star}, which is
+five-pointed, and is sometimes used as a general binary operation, and
+sometimes reserved for cross-correlation.
@item \asymp
-@math{\asymp} (relation)
+@BES{224D,\asymp} Asymptomatically equivalent (relation).
@item \backslash
-\ (delimiter)
+\ Backslash (ordinary). Similar: set minus@tie{}@code{\setminus}, and
+@code{\textbackslash} for backslash outside of math mode.
@item \beta
-@math{\beta}
+@BES{03B2,\beta} Lower case Greek letter beta (ordinary).
@item \bigcap
-@math{\bigcap}
+@BES{22C2,\bigcap} Variable-sized, or n-ary, intersection (operator). Similar:
+binary intersection@tie{}@code{\cap}.
@item \bigcirc
-@math{\bigcirc} (binary operation)
+@BES{26AA,\bigcirc} Circle, larger (binary). Similar: function
+composition@tie{}@code{\circ}.
+@c bb Best unicode symbol for this?
@item \bigcup
-@math{\bigcup}
+@BES{22C3,\bigcup} Variable-sized, or n-ary, union (operator). Similar: binary
+union@tie{}@code{\cup}.
@item \bigodot
-@math{\bigodot}
+@BES{2A00,\bigodot} Variable-sized, or n-ary, circled dot operator (operator).
@item \bigoplus
-@math{\bigoplus}
+@BES{2A01,\bigoplus} Variable-sized, or n-ary, circled plus operator (operator).
@item \bigotimes
-@math{\bigotimes}
+@BES{2A02,\bigotimes} Variable-sized, or n-ary, circled times operator (operator).
@item \bigtriangledown
-@math{\bigtriangledown} (binary operation)
+@BES{25BD,\bigtriangledown} Variable-sized, or n-ary, open triangle pointing down
+(operator).
@item \bigtriangleup
-@math{\bigtriangleup} (binary operation)
+@BES{25B3,\bigtriangleup} Variable-sized, or n-ary, open triangle pointing up (operator).
@item \bigsqcup
-@math{\bigsqcup}
+@BES{2A06,\bigsqcup} Variable-sized, or n-ary, square union (operator).
@item \biguplus
-@math{\biguplus}
+@BES{2A04,\biguplus} Variable-sized, or n-ary, union operator with a plus
+(operator). (Note that the name has only one p.)
-@item \bigcap
-@math{\bigvee}
+@item \bigvee
+@BES{22C1,\bigvee} Variable-sized, or n-ary, logical-and (operator).
@item \bigwedge
-@math{\bigwedge}
+@BES{22C0,\bigwedge} Variable-sized, or n-ary, logical-or (operator).
@item \bot
-@math{\bot}
+@BESU{22A5,bot} Up tack, bottom, least element of a poset, or a contradiction
+(ordinary). See also@tie{}@code{\top}.
@item \bowtie
-@math{\bowtie} (relation)
+@BES{22C8,\bowtie} Natural join of two relations (relation).
@item \Box
-(square open box symbol) @c xx not in plain
+@BESU{25A1,Box} Modal operator for necessity; square open box (ordinary). This
+is not available in Plain @TeX{}. In @LaTeX{} you need to load the
+@file{amssymb} package.
+@c bb Best Unicode equivalent?
@item \bullet
@cindex bullet symbol
-@math{\bullet} (binary operation)
+@BES{2022,\bullet} Bullet (binary). Similar: multiplication
+dot@tie{}@code{\cdot}.
@item \cap
-@math{\cap} (binary operation)
+@BES{2229,\cap} Intersection of two sets (binary). Similar: variable-sized
+operator@tie{}@code{\bigcap}.
@item \cdot
-@math{\cdot} (binary operation)
+@BES{22C5,\cdot} Multiplication (binary). Similar: Bullet
+dot@tie{}@code{\bullet}.
@item \chi
-@math{\chi}
+@BES{03C7,\chi} Lower case Greek chi (ordinary).
@item \circ
-@math{\circ} (binary operation)
+@BES{2218,\circ} Function composition, ring operator (binary). Similar:
+variable-sized operator@tie{}@code{\bigcirc}.
@item \clubsuit
-@math{\clubsuit}
+@BES{2663,\clubsuit} Club card suit (ordinary).
+
+@item \complement
+@BESU{2201,complement} Set complement, used as a superscript as in
+@code{$S^\complement$} (ordinary). This is not available in Plain
+@TeX{}. In @LaTeX{} you should load the @file{amssymb} package. Also
+used: @code{$S^@{\mathsf@{c@}@}$} or@tie{}@code{$\bar@{S@}$}.
@item \cong
-@math{\cong} (relation)
+@BES{2245,\cong} Congruent (relation).
@item \coprod
-@math{\coprod}
+@BES{2210,\coprod} Coproduct (operator).
@item \cup
-@math{\cup} (binary operation)
+@BES{222A,\cup} Union of two sets (binary). Similar: variable-sized
+operator@tie{}@code{\bigcup}.
@item \dagger
-@math{\dagger} (binary operation)
+@BES{2020,\dagger} Dagger relation (binary).
@item \dashv
-@math{\dashv} (relation)
+@BES{22A3,\dashv} Dash with vertical, reversed turnstile (relation). Similar:
+turnstile@tie{}@code{\vdash}.
@item \ddagger
-@math{\dagger} (binary operation)
+@BES{2021,\ddagger} Double dagger relation (binary).
@item \Delta
-@math{\Delta}
+@BES{0394,\Delta} Greek upper case delta, used for increment (ordinary).
@item \delta
-@math{\delta}
+@BES{03B4,\delta} Greek lower case delta (ordinary).
@item \Diamond
-bigger @math{\diamond} @c xx not in plain
+@BESU{25C7,Diamond} Large diamond operator (ordinary). This is not available in
+Plain @TeX{}. In @LaTeX{} you must load the @file{amssymb} package.
+@c bb Best Unicode equivalent?
@item \diamond
-@math{\diamond} (binary operation)
+@BES{22C4,\diamond} Diamond operator, or diamond bullet (binary). Similar: large
+diamond@tie{}@code{\Diamond}, circle bullet@tie{}@code{\bullet}.
@item \diamondsuit
-@math{\diamondsuit}
+@BES{2662,\diamondsuit} Diamond card suit (ordinary).
@item \div
-@math{\div} (binary operation)
+@BES{00F7,\div} Division sign (binary).
@item \doteq
-@math{\doteq} (relation)
+@BES{2250,\doteq} Approaches the limit (relation). Similar: geometrically equal
+to@tie{}@code{\Doteq}.
@item \downarrow
-@math{\downarrow} (delimiter)
+@BES{2193,\downarrow} Down arrow, converges (relation). Similar: double line down
+arrow@tie{}@code{\Downarrow}.
@item \Downarrow
-@math{\Downarrow} (delimiter)
+@BES{21D3,\Downarrow} Double line down arrow (relation). Similar: single line down
+arrow@tie{}@code{\downarrow}.
@item \ell
-@math{\ell}
+@BES{2113,\ell} Lower-case cursive letter l (ordinary).
@item \emptyset
-@math{\emptyset}
+@BES{2205,\emptyset} Empty set symbol (ordinary). Similar: reversed empty
+set@tie{}@code{\varnothing}.
+@c bb Why Unicode has \revemptyset but no \emptyset?
@item \epsilon
-@math{\epsilon}
+@BES{03F5,\epsilon} Lower case Greek-text letter (ordinary). More widely used in
+mathematics is the curly epsilon
+@code{\varepsilon}@tie{}@BES{03B5,\varepsilon}. Related: the set membership relation
+@code{\in}@tie{}@BES{2208,\in}.
+@c src: David Carlisle http://tex.stackexchange.com/a/98018/339 and
+@c Unicode referenced there asserts varepsilon is much more widely used.
@item \equiv
-@math{\equiv} (relation)
+@BES{2261,\equiv} Equivalence (relation).
@item \eta
-@math{\eta}
+@BES{03B7,\eta} Lower case Greek letter (ordinary).
@item \exists
-@math{\exists}
+@BES{2203,\exists} Existential quantifier (ordinary).
@item \flat
-@math{\flat}
+@BES{266D,\flat} Musical flat (ordinary).
@item \forall
-@math{\forall}
+@BES{2200,\forall} Universal quantifier (ordinary).
@item \frown
-@math{\frown} (relation)
+@BES{2322,\frown} Downward curving arc (ordinary).
@item \Gamma
-@math{\Gamma}
+@BES{0393,\Gamma} Upper case Greek letter (ordinary).
@item \gamma
-@math{\gamma}
+@BES{03B3,\gamma} Lower case Greek letter (ordinary).
@item \ge
-@math{\ge}
+@BES{2265,\ge} Greater than or equal to (relation). This is a synonym
+for@tie{}@code{\geq}.
@item \geq
-@math{\geq} (relation)
+@BES{2265,\geq} Greater than or equal to (relation). This is a synonym
+for@tie{}@code{\ge}.
@item \gets
-@math{\gets}
+@BES{2190,\gets} Is assigned the value (relation).
+Synonym:@tie{}@code{\leftarrow}.
@item \gg
-@math{\gg} (relation)
+@BES{226B,\gg} Much greater than (relation). Similar: much less
+than@tie{}@code{\ll}.
@item \hbar
-@math{\hbar}
+@BES{210F,\hbar} Planck constant over two pi (ordinary).
@item \heartsuit
-@math{\heartsuit}
+@BES{2661,\heartsuit} Heart card suit (ordinary).
@item \hookleftarrow
-@math{\hookleftarrow}
+@BES{21A9,\hookleftarrow} Hooked left arrow (relation).
@item \hookrightarrow
-@math{\hookrightarrow}
+@BES{21AA,\hookrightarrow} Hooked right arrow (relation).
@item \iff
-@math{\iff}
+@BES{27F7,\iff} If and only if (relation). It is @code{\Longleftrightarrow}
+with a @code{\thickmuskip} on either side.
@item \Im
-@math{\Im}
+@BES{2111,\Im} Imaginary part (ordinary). See: real part@tie{}@code{\Re}.
@item \in
-@math{\in} (relation)
+@BES{2208,\in} Set element (relation). See also: lower case Greek letter
+epsilon@tie{}@code{\epsilon}@BES{03F5,\epsilon} and rounded small
+epsilon@tie{}@code{\varepsilon}.
@item \infty
-@math{\infty}
+@BES{221E,\infty} Infinity (ordinary).
@item \int
-@math{\int}
+@BES{222B,\int} Integral (operator).
@item \iota
-@math{\iota}
+@BES{03B9,\iota} Lower case Greek letter (ordinary).
@item \Join
-condensed bowtie symbol (relation) @c xx not in plain
+@BESU{2A1D,Join} Condensed bowtie symbol (relation). Not available in Plain
+@TeX{}.
@item \kappa
-@math{\kappa}
+@BES{03BA,\kappa} Lower case Greek letter (ordinary).
@item \Lambda
-@math{\Lambda}
+@BES{039B,\Lambda} Upper case Greek letter (ordinary).
@item \lambda
-@math{\lambda}
+@BES{03BB,\lambda} Lower case Greek letter (ordinary).
@item \land
-@math{\land}
+@BES{2227,\land} Logical and (binary). This is a synonym for @code{\wedge}.
+See also logical or@tie{}@code{\lor}.
@item \langle
-@math{\langle} (delimiter)
+@BES{27E8,\langle} Left angle, or sequence, bracket (opening). Similar:
+less-than@tie{}@code{<}. Matches@tie{}@code{\rangle}.
@item \lbrace
-@math{\lbrace} (delimiter)
+@BES{007B,\lbrace} Left curly brace
+(opening). Synonym:@tie{}@code{\@{}. Matches@tie{}@code{\rbrace}.
@item \lbrack
-@math{\lbrack} (delimiter)
+@BES{005B,\lbrack} Left square bracket (opening).
+Synonym:@tie{}@code{[}. Matches@tie{}@code{\rbrack}.
@item \lceil
-@math{\lceil} (delimiter)
+@BES{2308,\lceil} Left ceiling bracket, like a square bracket but with the bottom
+shaved off (opening). Matches@tie{}@code{\rceil}.
@item \le
-@math{\le}
+@BES{2264,\le} Less than or equal to (relation). This is a synonym
+for@tie{}@code{\leq}.
@item \leadsto
-@c xx missing from plain
+@BESU{21DD,leadsto} Squiggly right arrow (relation). This is not available in
+Plain @TeX{}. In @LaTeX{} you should load the @file{amssymb} package.
+To get this symbol outside of math mode you can put
+@code{\newcommand*@{\Leadsto@}@{\ensuremath@{\leadsto@}@}} in the
+preamble and then use @code{\Leadsto} instead.
+@c bb Best Unicode equivalent?
@item \Leftarrow
-@math{\Leftarrow}
+@BES{21D0,\Leftarrow} Is implied by, double-line left arrow (relation). Similar:
+single-line left arrow@tie{}@code{\leftarrow}.
@item \leftarrow
-@math{\leftarrow}
+@BES{2190,\leftarrow} Single-line left arrow (relation).
+Synonym:@tie{}@code{\gets}. Similar: double-line left
+arrow@tie{}@code{\Leftarrow}.
@item \leftharpoondown
-@math{\leftharpoondown}
+@BES{21BD,\leftharpoondown} Single-line left harpoon, barb under bar (relation).
@item \leftharpoonup
-@math{\leftharpoonup}
+@BES{21BC,\leftharpoonup} Single-line left harpoon, barb over bar (relation).
@item \Leftrightarrow
-@math{\Leftrightarrow}
+@BES{21D4,\Leftrightarrow} Bi-implication; double-line double-headed arrow (relation).
+Similar: single-line double headed arrow@tie{}@code{\leftrightarrow}.
@item \leftrightarrow
-@math{\leftrightarrow}
+@BES{2194,\leftrightarrow} Single-line double-headed arrow (relation). Similar:
+double-line double headed arrow@tie{}@code{\Leftrightarrow}.
@item \leq
-@math{\leq} (relation)
+@BES{2264,\leq} Less than or equal to (relation). This is a synonym
+for@tie{}@code{\le}.
@item \lfloor
-@math{\lfloor} (delimiter)
+@BES{230A,\lfloor} Left floor bracket (opening).
@item \lhd
-(left-pointing arrow head) @c xx not in plain
+@BESU{25C1,lhd} Arrowhead, that is, triangle, pointing left (binary). This is
+not available in Plain @TeX{}. In @LaTeX{} you should load the
+@file{amssymb} package. For the normal subgroup symbol you should load
+@file{amssymb} and use@tie{}@code{\vartriangleleft} (which is a relation
+and so gives better spacing).
@item \ll
-@math{\ll} (relation)
+@BES{226A,\ll} Much less than (relation). Similar: much greater
+than@tie{}@code{\gg}.
@item \lnot
-@math{\lnot}
+@BES{00AC,\lnot} Logical negation (ordinary). Synonym:@tie{}@code{\neg}.
@item \longleftarrow
-@math{\longleftarrow}
+@BES{27F5,\longleftarrow} Long single-line left arrow (relation). Similar: long
+double-line left arrow@tie{}@code{\Longleftarrow}.
@item \longleftrightarrow
-@math{\longleftrightarrow}
+@BES{27F7,\longleftrightarrow} Long single-line double-headed arrow (relation). Similar: long
+double-line double-headed arrow@tie{}@code{\Longleftrightarrow}.
@item \longmapsto
-@math{\longmapsto}
+@BES{27FC,\longmapsto} Long single-line left arrow starting with vertical bar
+(relation). Similar: shorter version@tie{}@code{\mapsto}.
@item \longrightarrow
-@math{\longrightarrow}
+@BES{27F6,\longrightarrow} Long single-line right arrow (relation). Similar: long
+double-line right arrow@tie{}@code{\Longrightarrow}.
@item \lor
-@math{\lor}
+@BES{2228,\lor} Logical or (binary). Synonym: wedge@tie{}@code{\wedge}.
@item \mapsto
-@math{\mapsto}
+@BES{21A6,\mapsto} Single-line left arrow starting with vertical bar (relation).
+Similar: longer version@tie{}@code{\longmapsto}.
@item \mho
-@c xx not in plain
+@BESU{2127,mho} Conductance, half-circle rotated capital omega (ordinary).
+This is not available in Plain @TeX{}. In @LaTeX{} you should load the
+@file{amssymb} package.
@item \mid
-@math{\mid} (relation)
+@BES{2223,\mid} Single-line vertical bar (relation). A typical use of
+@code{\mid} is for a set @code{\@{\, x \mid x\geq 5 \,\@}}.
+
+Similar: @code{\vert} and@tie{}@code{|} produce the same single-line
+vertical bar symbol but without any spacing (they fall in class
+ordinary) and you should not use them as relations but instead only as
+ordinals, i.e., footnote symbols. For absolute value, see the entry
+for@tie{}@code{\vert} and for norm see the entry for@tie{}@code{\Vert}.
@item \models
-@math{\models} (relation)
+@BES{22A8,\models} Entails, or satisfies; double turnstile, short double dash
+(relation). Similar: long double dash@tie{}@code{\vDash}.
@item \mp
-@math{\mp} (binary operation)
+@BES{2213,\mp} Minus or plus (relation).
@item \mu
-@math{\mu}
+@BES{03BC,\mu} Lower case Greek letter (ordinary).
@item \nabla
-@math{\nabla}
+@BES{2207,\nabla} Hamilton's del, or differential, operator (ordinary).
@item \natural
-@math{\natural}
+@BES{266E,\natural} Musical natural notation (ordinary).
@item \ne
-@math{\ne}
+@BES{2260,\ne} Not equal (relation). Synonym:@tie{}@code{\neq}.
@item \nearrow
-@math{\nearrow}
+@BES{2197,\nearrow} North-east arrow (relation).
@item \neg
-@math{\neg}
+@BES{00AC,\neg} Logical negation (ordinary).
+Synonym:@tie{}@code{\lnot}. Sometimes instead used for
+negation:@tie{}@code{\sim}.
@item \neq
-@math{\neq} (relation)
+@BES{2260,\neq} Not equal (relation). Synonym:@tie{}@code{\ne}.
@item \ni
-@math{\ni} (relation)
+@BES{220B,\ni} Reflected membership epsilon; has the member
+(relation). Synonym:@tie{}@code{\owns}. Similar: is a member
+of@tie{}@code{\in}.
@item \not
-Overstrike a following operator with a /, as in @math{\not=}.
+@BES{0020,\not}@BES{00A0,}@BES{0338,} Long solidus, or slash, used to overstrike a
+following operator (relation).
+@c Need blank space for it to overstrike
+
+Many negated operators that don't require @code{\not} are available,
+particularly with the @file{amssymb} package. For example, @code{\notin}
+is probably typographically preferable to @code{\not\in}.
@item \notin
-@math{\ni}
+@BES{2209,\notin} Not an element of (relation). Similar: not subset
+of@tie{}@code{\nsubseteq}.
@item \nu
-@math{\nu}
+@BES{03BD,\nu} Lower case Greek letter (ordinary).
@item \nwarrow
-@math{\nwarrow}
+@BES{2196,\nwarrow} North-west arrow (relation).
@item \odot
-@math{\odot} (binary operation)
+@BES{2299,\odot} Dot inside a circle (binary). Similar: variable-sized
+operator@tie{}@code{\bigodot}.
@item \oint
-@math{\oint}
+@BES{222E,\oint} Contour integral, integral with circle in the middle (operator).
@item \Omega
-@math{\Omega}
+@BES{03A9,\Omega} Upper case Greek letter (ordinary).
@item \omega
-@math{\omega}
+@BES{03C9,\omega} Lower case Greek letter (ordinary).
@item \ominus
-@math{\ominus} (binary operation)
+@BES{2296,\ominus} Minus sign, or dash, inside a circle (binary).
@item \oplus
-@math{\oplus} (binary operation)
+@BES{2295,\oplus} Plus sign inside a circle (binary). Similar: variable-sized
+operator@tie{}@code{\bigoplus}.
@item \oslash
-@math{\oslash} (binary operation)
+@BES{2298,\oslash} Solidus, or slash, inside a circle (binary).
@item \otimes
-@math{\otimes} (binary operation)
+@BES{2297,\otimes} Times sign, or cross, inside a circle (binary). Similar:
+variable-sized operator@tie{}@code{\bigotimes}.
@item \owns
-@math{\owns}
+@BES{220B,\owns} Reflected membership epsilon; has the member
+(relation). Synonym:@tie{}@code{\ni}. Similar: is a member
+of@tie{}@code{\in}.
@item \parallel
-@math{\parallel} (relation)
+@BES{2225,\parallel} Parallel (relation). Synonym:@tie{}@code{\|}.
@item \partial
-@math{\partial}
+@BES{2202,\partial} Partial differential (ordinary).
@item \perp
-@math{\perp} (relation)
+@BES{27C2,\perp} Perpendicular (relation). Similar:@tie{}@code{\bot} uses the
+same glyph but the spacing is different because it is in the class
+ordinary.
@item \phi
-@math{\phi}
+@BES{03D5,\phi} Lower case Greek letter (ordinary). The variant form is
+@code{\varphi}@tie{}@BES{03C6,\varphi}.
@item \Pi
-@math{\Pi}
+@BES{03A0,\Pi} Upper case Greek letter (ordinary).
@item \pi
-@math{\pi}
+@BES{03C0,\pi} Lower case Greek letter (ordinary). The variant form is
+@code{\varpi}@tie{}@BES{03D6,\varpi}.
@item \pm
-@math{\pm} (binary operation)
+@BES{00B1,\pm} Plus or minus (binary).
@item \prec
-@math{\prec} (relation)
+@BES{227A,\prec} Preceeds (relation). Similar: less than@tie{}@code{<}.
@item \preceq
-@math{\preceq} (relation)
+@BES{2AAF,\preceq} Preceeds or equals (relation). Similar: less than or
+equals@tie{}@code{\leq}.
@item \prime
-@math{\prime}
+@BES{2032,\prime} Prime, or minute in a time expression (ordinary). Typically
+used as a superscript @code{$A^\prime$}. Note that @code{$f^\prime$}
+and @code{$f'$} produce the same result. An advantage of the second is
+that @code{$f'''$} produces the the desired symbol, that is, the same
+result as @code{$f^@{\prime\prime\prime@}$}, but uses somewhat less
+typing. Note that you can only use @code{\prime} in math mode but you
+can type right single quote@tie{}@code{'} in text mode also, although it
+resuts in a different look than in math mode.
@item \prod
-@math{\prod}
+@BES{220F,\prod} Product (operator).
@item \propto
-@math{\propto} (relation)
+@BES{221D,\propto} Is proportional to (relation)
@item \Psi
-@math{\Psi}
+@BES{03A8,\Psi} Upper case Greek letter (ordinary).
@item \psi
-@math{\psi}
+@BES{03C8,\psi} Lower case Greek letter (ordinary).
@item \rangle
-@math{\rangle} (delimiter)
+@BES{27B9,\rangle} Right angle, or sequence, bracket (closing). Similar: greater
+than@tie{}@code{>}. Matches:@code{\langle}.
@item \rbrace
-@math{\rbrace} (delimiter)
+@BES{007D,\rbrace} Right curly brace
+(closing). Synonym:@tie{}@code{\@}}. Matches@tie{}@code{\lbrace}.
@item \rbrack
-@math{\rbrack} (delimiter)
+@BES{005D,\rbrack} Right square bracket
+(closing). Synonym:@tie{}@code{]}. Matches@tie{}@code{\lbrack}.
@item \rceil
-@math{\rceil} (delimiter)
+@BES{2309,\rceil} Right ceiling bracket (closing). Matches@tie{}@code{\lceil}.
@item \Re
-@math{\Re}
+@BES{211C,\Re} Real part, real numbers, cursive capital R (ordinary). Related:
+double-line, or blackboard bold, R@tie{}@code{\mathbb@{R@}}; to access
+this, load the @file{amsfonts} package.
+
+@item \restriction
+@BESU{21BE,restriction} Restriction of a function
+(relation). Synonym:@tie{}@code{\upharpoonright}. Not available in
+Plain @TeX{}. In @LaTeX{} you should load the @file{amssymb} package.
@item \rfloor
-@math{\rfloor}
+@BES{230B,\rfloor} Right floor bracket, a right square bracket with the top cut
+off (closing). Matches@tie{}@code{\lfloor}.
@item \rhd
-(binary operation) @c xx not in plain @math{\rhd}
+@BESU{25C1,rhd} Arrowhead, that is, triangle, pointing right (binary). This is
+not available in Plain @TeX{}. In @LaTeX{} you should load the
+@file{amssymb} package. For the normal subgroup symbol you should
+instead load @file{amssymb} and use@tie{}@code{\vartriangleright} (which
+is a relation and so gives better spacing).
@item \rho
-@math{\rho}
+@BES{03C1,\rho} Lower case Greek letter (ordinary). The variant form is
+@code{\varrho}@tie{}@BES{03F1,\varrho}.
@item \Rightarrow
-@math{\Rightarrow}
+@BES{21D2,\Rightarrow} Implies, right-pointing double line arrow (relation). Similar:
+right single-line arrow@tie{}@code{\rightarrow}.
@item \rightarrow
-@math{\rightarrow}
+@BES{2192,\rightarrow} Right-pointing single line arrow (relation). Synonym:@tie{}@code{\to}. Similar: right double line arrow@tie{}@code{\Rightarrow}.
@item \rightharpoondown
-@math{\rightharpoondown}
+@BES{21C1,\rightharpoondown} Right-pointing harpoon with barb below the line (relation).
@item \rightharpoonup
-@math{\rightharpoonup}
+@BES{21C0,\rightharpoonup} Right-pointing harpoon with barb above the line (relation).
@item \rightleftharpoons
-@math{\rightleftharpoons}
+@BES{21CC,\rightleftharpoons} Right harpoon up above left harpoon down (relation).
@item \searrow
-@math{\searrow}
+@BES{2198,\searrow} Arrow pointing southeast (relation).
@item \setminus
-@math{\setminus} (binary operation)
+@BES{29F5,\setminus} Set difference, reverse solidus or slash, like \
+(binary). Similar: backslash@tie{}@code{\backslash} and also
+@code{\textbackslash} outside of math mode.
@item \sharp
-@math{\sharp}
+@BES{266F,\sharp} Musical sharp (ordinary).
@item \Sigma
-@math{\Sigma}
+@BES{03A3,\Sigma} Upper case Greek letter (ordinary).
@item \sigma
-@math{\sigma}
+@BES{03C3,\sigma} Lower case Greek letter (ordinary). The variant form is
+@code{\varsigma}@tie{}@BES{03C2,\varsigma}.
@item \sim
-@math{\sim} (relation)
+@BES{223C,\sim} Similar, in a relation (relation).
@item \simeq
-@math{\simeq} (relation)
+@BES{2243,\simeq} Similar or equal to, in a relation (relation).
@item \smallint
-@math{\smallint}
+@BES{222B,\smallint} Integral sign that does not change to a larger size in a
+display (operator).
@item \smile
-@math{\smile} (relation)
+@BES{2323,\smile} Upward curving arc (ordinary).
@item \spadesuit
-@math{\spadesuit}
+@BES{2660,\spadesuit} Spade card suit (ordinary).
@item \sqcap
-@math{\sqcap} (binary operation)
+@BES{2293,\sqcap} Square intersection symbol (binary). Similar:
+intersection@tie{}@code{cap}.
@item \sqcup
-@math{\sqcup} (binary operation)
+@BES{2294,\sqcup} Square union symbol (binary). Similar:
+union@tie{}@code{cup}. Related: variable-sized
+operator@tie{}@code{\bigsqcup}.
@item \sqsubset
-(relation) @c not in plain (@math{\sqsubset})
+@BESU{228F,sqsubset} Square subset symbol (relation). Similar:
+subset@tie{}@code{\subset}. This is not available in Plain @TeX{}. In
+@LaTeX{} you should load the @file{amssymb} package.
@item \sqsubseteq
-@math{\sqsubseteq} (relation)
+@BES{2291,\sqsubseteq} Square subset or equal symbol (binary). Similar: subset or
+equal to@tie{}@code{\subseteq}.
@item \sqsupset
-(relation) @c not in plain (@math{\sqsupset})
+@BESU{2290,sqsupset} Square superset symbol (relation). Similar:
+superset@tie{}@code{\supset}. This is not available in Plain @TeX{}. In
+@LaTeX{} you should load the @file{amssymb} package.
@item \sqsupseteq
-@math{\sqsupseteq} (relation)
+@BES{2292,\sqsupseteq} Square superset or equal symbol (binary). Similar: superset or
+equal@tie{}@code{\supseteq}.
@item \star
-@math{\star} (binary operation)
+@BES{22C6,\star} Five-pointed star, sometimes used as a general binary operation
+but sometimes reserved for cross-correlation (binary). Similar: the
+synonyms asterisk@tie{}@code{*} and @code{\ast}, which are six-pointed,
+and more often appear as a superscript or subscript, as with the Kleene
+star.
@item \subset
-@math{\subset} (relation)
+@BES{2282,\subset} Subset (occasionally, is implied by) (relation).
@item \subseteq
-@math{\subseteq} (relation)
+@BES{2286,\subseteq} Subset or equal to (relation).
@item \succ
-@math{\succ} (relation)
+@BES{227B,\succ} Comes after, succeeds (relation). Similar: is less
+than@tie{}@code{>}.
@item \succeq
-@math{\succeq} (relation)
+@BES{2AB0,\succeq} Succeeds or is equal to (relation). Similar: less
+than or equal to@tie{}@code{\leq}.
@item \sum
-@math{\sum}
+@BES{2211,\sum} Summation (operator). Similar: Greek capital
+sigma@tie{}@code{\Sigma}.
@item \supset
-@math{\supset} (relation)
+@BES{2283,\supset} Superset (relation).
@item \supseteq
-@math{\supseteq} (relation)
+@BES{2287,\supseteq} Superset or equal to (relation).
@item \surd
-@math{\surd}
+@BES{221A,\surd} Radical symbol (ordinary). The @LaTeX{} command
+@code{\sqrt@{..@}} typesets the square root of the argument, with a bar
+that extends to cover the argument.
@item \swarrow
-@math{\swarrow}
+@BES{2199,\swarrow} Southwest-pointing arrow (relation).
@item \tau
-@math{\tau}
+@BES{03C4,\tau} Lower case Greek letter (ordinary).
@item \theta
-@math{\theta}
+@BES{03B8,\theta} Lower case Greek letter (ordinary). The variant form is
+@code{\vartheta}@tie{}@BES{03D1,\vartheta}.
@item \times
-@math{\times} (binary operation)
+@BES{00D7,\times} Primary school multiplication sign (binary). See
+also@tie{}@code{\cdot}.
@item \to
-@math{\to}
+@BES{2192,\to} Right-pointing single line arrow (relation).
+Synonym:@tie{}@code{\rightarrow}.
@item \top
-@math{\top}
+@BESU{22A4,top} Top, greatest element of a poset (ordinary). See
+also@tie{}@code{\bot}.
@item \triangle
-@math{\triangle}
+@BES{25B3,\triangle} Triangle (ordinary).
@item \triangleleft
-@math{\triangleleft} (binary operation)
+@BES{25C1,\triangleleft} Not-filled triangle pointing left
+(binary). Similar:@tie{}@code{\lhd}. For the normal subgroup symbol you
+should load @file{amssymb} and use@tie{}@code{\vartriangleleft} (which
+is a relation and so gives better spacing).
@item \triangleright
-@math{\triangleright} (binary operation)
+@BES{25B7,\triangleright} Not-filled triangle pointing right (binary). For the normal
+subgroup symbol you should instead load @file{amssymb} and
+use@tie{}@code{\vartriangleright} (which is a relation and so gives
+better spacing).
@item \unlhd
-left-pointing arrowhead with line under (binary operation) @c not in plain
+@BESU{22B4,unlhd} Left-pointing not-filled arrowhead, that is, triangle, with a
+line under (binary). This is not available in Plain @TeX{}. In @LaTeX{}
+you should load the @file{amssymb} package. For the normal subgroup
+symbol load @file{amssymb} and use@tie{}@code{\vartrianglelefteq} (which
+is a relation and so gives better spacing).
@item \unrhd
-right-pointing arrowhead with line under (binary operation) @c not in plain
+@BESU{22B5,unrhd} Right-pointing not-filled arrowhead, that is, triangle, with a
+line under (binary). This is not available in Plain @TeX{}. In @LaTeX{}
+you should load the @file{amssymb} package. For the normal subgroup
+symbol load @file{amssymb} and use@tie{}@code{\vartrianglerighteq}
+(which is a relation and so gives better spacing).
@item \Uparrow
-@math{\Uparrow} (delimiter)
+@BES{21D1,\Uparrow} Double-line upward-pointing arrow (relation). Similar:
+single-line up-pointing arrow@tie{}@code{\uparrow}.
@item \uparrow
-@math{\uparrow} (delimiter)
+@BES{2191,\uparrow} Single-line upward-pointing arrow, diverges (relation). Similar:
+double-line up-pointing arrow@tie{}@code{\Uparrow}.
@item \Updownarrow
-@math{\Updownarrow} (delimiter)
+@BES{21D5,\Updownarrow} Double-line upward-and-downward-pointing arrow (relation). Similar:
+single-line upward-and-downward-pointing arrow@tie{}@code{\updownarrow}.
@item \updownarrow
-@math{\updownarrow} (delimiter)
+@BES{2195,\updownarrow} Single-line upward-and-downward-pointing arrow (relation). Similar:
+double-line upward-and-downward-pointing arrow@tie{}@code{\Updownarrow}.
+
+@item \upharpoonright
+@BESU{21BE,upharpoonright} Up harpoon, with barb on right side
+(relation). Synonym:@tie{}@code{@backslashchar{}restriction}. Not available in Plain
+@TeX{}. In @LaTeX{} you should load the @file{amssymb} package.
@item \uplus
-@math{\uplus} (binary operation)
+@BES{228E,\uplus} Multiset union, a union symbol with a plus symbol in the middle
+(binary). Similar: union@tie{}@code{\cup}. Related: variable-sized
+operator@tie{}@code{\biguplus}.
@item \Upsilon
-@math{\Upsilon}
+@BES{03A5,\Upsilon} Upper case Greek letter (ordinary).
@item \upsilon
-@math{\upsilon}
+@BES{03C5,\upsilon} Lower case Greek letter (ordinary).
@item \varepsilon
-@math{\varepsilon}
+@BES{03B5,\varepsilon} Rounded small epsilon (ordinary). This is more widely used in
+mathematics than the non-variant lower case Greek-text letter form
+@code{\epsilon}@tie{}@BES{03F5,\epsilon}. Related: set membership@tie{}@code{\in}.
@item \varphi
-@math{\varphi}
+@BES{03C6,\varphi} Variant on the lower case Greek letter (ordinary). The
+non-variant form is @code{\phi}@tie{}@BES{03D5,\phi}.
@item \varpi
-@math{\varpi}
+@BES{03D6,\varpi} Variant on the lower case Greek letter (ordinary). The
+non-variant form is @code{\pi}@tie{}@BES{03C0,\pi}.
@item \varrho
-@math{\varrho}
+@BES{03F1,\varrho} Variant on the lower case Greek letter (ordinary). The
+non-variant form is @code{\rho}@tie{}@BES{03C1,\rho}.
@item \varsigma
-@math{\varsigma}
+@BES{03C2,\varsigma} Variant on the lower case Greek letter (ordinary). The
+non-variant form is @code{\sigma}@tie{}@BES{03C3,\sigma}.
@item \vartheta
-@math{\vartheta}
+@BES{03D1,\vartheta} Variant on the lower case Greek letter (ordinary). The
+non-variant form is @code{\theta}@tie{}@BES{03B8,\theta}.
@item \vdash
-@math{\vdash} (relation)
+@BES{22A2,\vdash} Provable; turnstile, vertical and a dash (relation). Similar:
+turnstile rotated a half-circle@tie{}@code{\dashv}.
@item \vee
-@math{\vee} (binary operation)
+@BES{2228,\vee} Logical or; a downwards v shape (binary). Related: logical
+and@tie{}@code{\wedge}. Similar: variable-sized
+operator@tie{}@code{\bigvee}.
@item \Vert
-@math{\Vert} (delimiter)
+@BES{2016,\Vert} Vertical double bar (ordinary). Similar: vertical single
+bar@tie{}@code{\vert}.
+
+For a norm you can use the @file{mathtools} package and add
+@code{\DeclarePairedDelimiter\norm@{\lVert@}@{\rVert@}} to your
+preamble. This gives you three command variants for double-line vertical
+bars that are correctly horizontally spaced: if in the document body you
+write the starred version @code{$\norm*@{M^\perp@}$} then the height of
+the vertical bars will match the height of the argument, whereas with
+@code{\norm@{M^\perp@}} the bars do not grow with the height of the
+argument but instead are the default height, and @code{\norm[@var{size
+command}]@{M^\perp@}} also gives bars that do not grow but are set to
+the size given in the @var{size command}, e.g., @code{\Bigg}.
@item \vert
-@math{\vert} (delimiter)
+@BES{007C,\vert} Single line vertical bar (ordinary). Similar: double-line
+vertical bar@tie{}@code{\Vert}. For such that, as in the definition of a
+set, use@tie{}@code{\mid} because it is a relation.
+
+For absolute value you can use the @file{mathtools} package and add
+@code{\DeclarePairedDelimiter\abs@{\lvert@}@{\rvert@}} to your
+preamble. This gives you three command variants for single-line vertical
+bars that are correctly horizontally spaced: if in the document body you
+write the starred version @code{$\abs*@{\frac@{22@}@{7@}@}$} then the
+height of the vertical bars will match the height of the argument,
+whereas with @code{\abs@{\frac@{22@}@{7@}@}} the bars do not grow with
+the height of the argument but instead are the default height, and
+@code{\abs[@var{size command}]@{\frac@{22@}@{7@}@}} also gives bars
+that do not grow but are set to the size given in the @var{size
+command}, e.g., @code{\Bigg}.
@item \wedge
-@math{\wedge} (binary operation)
+@BES{2227,\wedge} Logical and (binary). Synonym:@tie{}@code{\land}. See also
+logical or @code{\vee}. Similar: variable-sized
+operator@tie{}@code{\bigwedge}.
@item \wp
-@math{\wp}
+@BES{2118,\wp} Weierstrass p (ordinary).
@item \wr
-@math{\wr} (binary operation)
+@BES{2240,\wr} Wreath product (binary).
@item \Xi
-@math{\Xi}
+@BES{039E,\Xi} Upper case Greek letter (ordinary).
@item \xi
-@math{\xi}
+@BES{03BE,\xi} Lower case Greek letter (ordinary).
@item \zeta
-@math{\zeta}
+@BES{03B6,\zeta} Lower case Greek letter (ordinary).
@end ftable
@node Math functions
@section Math functions
+
@cindex math functions
@cindex functions, math
@@ -5050,10 +7077,10 @@ Binary modulo operator (@math{x \bmod y})
@math{\cosh}
@item \cot
-@math{\cos}
+@math{\cot}
@item \coth
-@math{\cosh}
+@math{\coth}
@item \csc
@math{\csc}
@@ -5062,7 +7089,7 @@ Binary modulo operator (@math{x \bmod y})
@math{\deg}
@item \det
-@math{\deg}
+@math{\det}
@item \dim
@math{\dim}
@@ -5138,6 +7165,7 @@ sup
@node Math accents
@section Math accents
+
@cindex math accents
@cindex accents, mathematical
@@ -5206,8 +7234,8 @@ Math vector symbol: @math{\vec{x}}.
@cindex wide hat accent, math
Math wide hat accent: @math{\widehat{x+y}}.
-@item \widehat
-@cindex wide tile accent, math
+@item \widetilde
+@cindex wide tilde accent, math
Math wide tilde accent: @math{\widetilde{x+y}}.
@end ftable
@@ -5215,37 +7243,72 @@ Math wide tilde accent: @math{\widetilde{x+y}}.
@node Spacing in math mode
@section Spacing in math mode
+
@cindex spacing within math mode
@cindex math mode, spacing
-In a @code{math} environment, @LaTeX{} ignores the spaces you type and
-puts in the spacing according to the normal rules for mathematics
-texts. If you want different spacing, @LaTeX{} provides the following
-commands for use in math mode:
+In a @code{math} environment, @LaTeX{} ignores the spaces that you use
+in the source, and instead puts in the spacing according to the normal
+rules for mathematics texts.
+
+Many math mode spacing definitions are expressed in terms of the math unit
+@dfn{mu} given by 1 em = 18 mu, where the em is taken from the current
+math symbols family (@pxref{Units of length}).
+@LaTeX{} provides the following commands for use in math mode:
@table @code
@item \;
@findex \;
-A thick space (@math{5\over18\,}quad).
+@findex \thickspace
+Normally @code{5.0mu plus 5.0mu}. The longer name is
+@code{\thickspace}. Math mode only.
+
@item \:
@itemx \>
@findex \:
@findex \>
-Both of these produce a medium space (@math{2\over9\,}quad).
+@findex \medspace
+Normally @code{4.0mu plus 2.0mu minus 4.0mu}. The longer name is
+@code{\medspace}. Math mode only.
+
@item \,
@findex \,
-A thin space (@math{1\over6\,}quad); not restricted to math mode.
+@findex \thinspace
+Normally @code{3mu}. The longer name is @code{\thinspace}. This can
+be used in both math mode and text mode.
+
@item \!
-A negative thin space (@math{-{1\over6}\,}quad).
+@findex \!
+A negative thin space. Normally @code{-3mu}. Math mode only.
+
+@item \quad
+@cindex quad
+@findex \quad
+This is 18@dmn{mu}, that is, 1@dmn{em}. This is often used for space
+surrounding equations or expressions, for instance for the space between
+two equations inside a @code{displaymath} environment. It is available
+in both text and math mode.
+
+@item \qquad
+@findex \qquad
+A length of 2 quads, that is, 36@dmn{mu} = 2@dmn{em}. It is available in
+both text and math mode.
@end table
+In this example a thinspace separates the function from the
+infinitesimal.
+
+@example
+\int_0^1 f(x)\,dx
+@end example
+
@node Math miscellany
@section Math miscellany
+
@cindex math miscellany
@ftable @code
-
@item \*
@cindex discretionary multiplication
@cindex multiplication symbol, discretionary line break
@@ -5334,6 +7397,7 @@ $\vdots$.
@node Modes
@chapter Modes
+
@cindex modes
@cindex paragraph mode
@cindex math mode
@@ -5385,6 +7449,7 @@ mode, which it starts out in, is called ``outer paragraph mode''.
@node Page styles
@chapter Page styles
+
@cindex styles, page
@cindex page styles
@@ -5401,6 +7466,7 @@ the page's head and foot. The page style determines what goes in them.
@node \maketitle
@section @code{\maketitle}
+
@cindex titles, making
@findex \maketitle
@@ -5442,6 +7508,7 @@ document. Use @code{\\} to force a line break, as usual.
@node \pagenumbering
@section @code{\pagenumbering}
+
@findex \pagenumbering
@cindex page numbering style
@@ -5475,6 +7542,7 @@ uppercase letters
@node \pagestyle
@section @code{\pagestyle}
+
@findex \pagestyle
@cindex header style
@cindex footer style
@@ -5525,6 +7593,7 @@ Sets the right heading, leaving the left heading unchanged.
@node \thispagestyle
@section @code{\thispagestyle@{@var{style}@}}
+
@findex \thispagestyle
The @code{\thispagestyle} command works in the same manner as the
@@ -5534,24 +7603,22 @@ changes to @var{style} for the current page only.
@node Spaces
@chapter Spaces
+
@cindex spaces
+@cindex white space
@LaTeX{} has many ways to produce white (or filled) space.
-Another space-producing command is @code{\,} to produce a ``thin''
-space (usually 1/6@dmn{quad}). It can be used in text mode, but is
-more often useful in math mode (@pxref{Spacing in math mode}).
-
@menu
-Horizontal space
-* \hspace:: Fixed horizontal space.
-* \hfill:: Stretchable horizontal space.
-* \SPACE:: Normal interword space.
-* \@@:: Ending a sentence.
-* \thinspace:: One-sixth of an em.
-* \/:: Insert italic correction.
-* \hrulefill:: Stretchable horizontal rule.
-* \dotfill:: Stretchable horizontal dots.
+Horizontal space
+* \hspace:: Fixed horizontal space.
+* \hfill:: Stretchable horizontal space.
+* \(SPACE) and \@@:: Space after a period.
+* \(SPACE) after CS:: Controlling space gobbling after a control sequence.
+* \frenchspacing:: Make interword and intersentence space equal.
+* \thinspace:: One-sixth of an em.
+* \/:: Insert italic correction.
+* \hrulefill \dotfill:: Stretchable horizontal rule or dots.
Vertical space
* \addvspace:: Add arbitrary vertical space if needed.
@@ -5563,83 +7630,163 @@ Vertical space
@node \hspace
@section @code{\hspace}
+
@findex \hspace
Synopsis:
@example
-\hspace[*]@{@var{length}@}
+\hspace@{@var{length}@}
+\hspace*@{@var{length}@}
@end example
-The @code{\hspace} command adds horizontal space. The @var{length}
-argument can be expressed in any terms that @LaTeX{} understands:
-points, inches, etc. It is a rubber length. You can add both
-negative and positive space with an @code{\hspace} command; adding
-negative space is like backspacing.
+Add the horizontal space given by @var{length}. The @var{length} is a
+rubber length, that is, it may contain a @code{plus} or @code{minus}
+component, in any unit that @LaTeX{} understands (@pxref{Lengths}).
-@LaTeX{} normally removes horizontal space that comes at the beginning
-or end of a line. To preserve this space, use the optional @code{*}
-form.
+This command can add both positive and negative space; adding negative
+space is like backspacing.
+
+Normally when @TeX{} breaks a paragraph into lines it discards white
+space (glues and kerns) that would come at the start of a line, so you
+get an inter-word space or a line break between words but not both. This
+command's starred version @code{\hspace*@{..@}} puts a non-discardable
+invisible item in front of the space, so the space appears in the
+output.
+
+This example make a one-line paragraph that puts @samp{Name:} an inch
+from the right margin.
+
+@example
+\noindent\makebox[\linewidth]@{\hspace@{\fill@}Name:\hspace@{1in@}@}
+@end example
@node \hfill
@section @code{\hfill}
+
@findex \hfill
@cindex stretch, infinite horizontal
@cindex infinite horizontal stretch
-The @code{\hfill} fill command produces a ``rubber length'' which has
-no natural space but can stretch or shrink horizontally as far as
-needed.
+Produce a rubber length which has
+no natural space but can stretch horizontally as far as
+needed (@pxref{Lengths}).
@findex \fill
-The @code{\fill} parameter is the rubber length itself (technically,
-the glue value @samp{0pt plus1fill}); thus, @code{\hspace\fill} is
-equivalent to @code{\hfill}.
+The command @code{\hfill} is equivalent to @code{\hspace@{\fill@}}. For
+space that does not disappear at line breaks use
+@code{\hspace*@{\fill@}} instead (@pxref{\hspace}).
-@node \SPACE
-@section @code{\SPACE}: Normal interword space
-@findex \SPACE
+@node \(SPACE) and \@@
+@section @code{\(SPACE)} and \@@
+
+@findex \(SPACE)
@findex \TAB
@findex \NEWLINE
+@findex \@@
+@anchor{\AT}@c old name
-The @code{\ } (space) command produces a normal interword space. It's
-useful after punctuation which shouldn't end a sentence. For example,
-@code{the article in Proc.\ Amer.\ Math\. Soc.\ is fundamental}. It
-is also often used after control sequences, as in @code{\TeX\ is a
-nice system.}
-
-In normal circumstances, @code{\}@key{tab} and @code{\}@key{newline}
-are equivalent to @code{\ }.
+Mark a punctuation character, typically a period, as either ending a
+sentence or as ending an abbreviation.
+
+By default, in justifying a line @LaTeX{} adjusts the space after a
+sentence-ending period (or a question mark, exclamation point, comma, or
+colon) more than the space between words
+(@pxref{\frenchspacing}). @LaTeX{} assumes that the period ends a
+sentence unless it is preceded by a capital letter, in which case it
+takes that period for part of an abbreviation. Note that if a
+sentence-ending period is immediately followed by a right parenthesis or
+bracket, or right single or double quote, then the intersentence space
+follows that parenthesis or quote.
+
+If you have a period ending an abbreviation whose last letter is not a
+capital letter, and that abbreviation is not the last word in the
+sentence, then follow that period with a backslash-space (@code{\ }) or
+a tie (@code{~}). Examples are @code{Nat.\ Acad.\ Science}, and
+@code{Mr.~Bean}, and @code{(manure, etc.)\ for sale}.
+
+For other use of @code{\ }, see also @ref{\(SPACE) after CS}.
+
+In the opposite situation, if you have a capital letter followed by a
+period that ends the sentence, then put @code{\@@} on the left of that
+period. For example, @code{book by the MAA\@@.} will have intersentence
+spacing after the period.
+
+In contrast, putting @code{\@@} on the right of a period tells @TeX{}
+that the period does not end the sentence. In the example
+@code{reserved words (if, then, etc.\@@) are different}, @TeX{} will put
+interword space after the closing parenthesis (note that @code{\@@} is
+before the parenthesis).
+
+@node \(SPACE) after CS
+@section @code{\ } after a control sequence
+
+The @code{\ } command is often used after control sequences to keep them
+from gobbling the space that follows, as in @code{\TeX\ is a nice
+system.} And, under normal circumstances @code{\}@key{tab} and
+@code{\}@key{newline} are equivalent to @code{\ }. For other use of
+@code{\ }, see also @ref{\(SPACE) and \@@}.
+
+Some people prefer to use @code{@{@}} for the same purpose, as in
+@code{\TeX@{@} is a nice system.} This has the advantage that you can
+always write it the same way, like @code{\TeX@{@}}, whether it is
+followed by a space or by a punctuation mark. Please compare:
+@example
+\TeX\ is a nice system. \TeX, a nice system.@*
+\TeX@{@} is a nice system. \TeX@{@}, a nice system.
+@end example
-@node \@@
-@section @code{\@@}: Force sentence-ending punctuation
-@findex \@@
-@anchor{\AT}@c old name
-The @code{\@@} command makes the following punctuation character end a
-sentence even if it normally would not. This is typically used after
-a capital letter. Here are side-by-side examples with and without
-@code{\@@}:
+When you define user commands (@pxref{\newcommand & \renewcommand}) you
+can prevent the space gobbling after the command by using the package
+@code{xspace} and inserting @code{\xspace} at the end of the definition
+For instance:
+@example
+\documentclass@{minimal@}
+\usepackage@{xspace@}
+\newcommand*@{\Loup@}@{Grand Cric\xspace@}
+\begin@{document@}
+Que le \Loup me croque !
+\end@{document@}
+@end example
+A quick hack to use @code{\xspace} for existing command is as follows:
@example
-@dots{} in C\@@. Pascal, though @dots{}
-@dots{} in C. Pascal, though @dots{}
+\documentclass@{minimal@}
+\usepackage@{xspace@}
+\newcommand*@{\SansXspaceTeX@}@{@}
+\let\SansXspaceTeX\TeX
+\renewcommand@{\TeX@}@{\SansXspaceTeX\xspace@}
+\begin@{document@}
+\TeX is a nice system.
+\end@{document@}
@end example
-@noindent produces
-@c Texinfo has different commands, but the result is the same.
-@quotation
-@dots{} in C@. Pascal, though @dots{}@*
-@dots{} in C. Pascal, though @dots{}
-@end quotation
+@node \frenchspacing
+@section @code{\frenchspacing}
+
+@findex \frenchspacing
+@findex \nonfrenchspacing
+@cindex spacing, intersentence
+
+This declaration (from Plain @TeX{}) causes @LaTeX{} to treat
+intersentence spacing in the same way as interword spacing.
+
+In justifying the text in a line, some typographic traditions, including
+English, prefer to adjust the space between sentences (or after other
+punctuation marks) more than the space between words. Following this
+declaration, all spaces are instead treated equally.
+
+Revert to the default behavior by declaring @code{\nonfrenchspacing}.
@node \thinspace
@section @code{\thinspace}: Insert 1/6@dmn{em}
+
@findex \thinspace
@code{\thinspace} produces an unbreakable and unstretchable space that
@@ -5649,6 +7796,7 @@ quotes, as in '@dmn{}''.@c Abuse @dmn, which is a thin space in Texinfo.
@node \/
@section @code{\/}: Insert italic correction
+
@findex \/
@cindex italic correction
@@ -5688,38 +7836,62 @@ There is no concept of italic correction in math mode; spacing is done
in a different way.
-@node \hrulefill
-@section @code{\hrulefill}
+@node \hrulefill \dotfill
+@section @code{\hrulefill \dotfill}
+
@findex \hrulefill
+@findex \dotfill
-The @code{\hrulefill} fill command produces a ``rubber length'' which can
-stretch or shrink horizontally. It will be filled with a horizontal
-rule.
+Produce an infinite rubber length (@pxref{Lengths}) filled with a
+horizontal rule (that is, a line) or with dots, instead of just white
+space.
+When placed between blank lines this example creates a paragraph that is
+left and right justified, where the space in the middle is filled with
+evenly spaced dots.
-@node \dotfill
-@section @code{\dotfill}
+@example
+\noindent Jack Aubrey\dotfill Melbury Lodge
+@end example
-@findex \dotfill
+To make the rule or dots go to the line's end use @code{\null} at the
+start or end.
-The @code{\dotfill} command produces a ``rubber length'' that fills
-with dots instead of just white space.
+To change the rule's thickness, copy the definition and adjust it, as
+with @code{\renewcommand@{\hrulefill@}@{\leavevmode\leaders\hrule height
+1pt\hfill\kern\z@@@}}, which changes the default thickness of
+0.4@dmn{pt} to 1@dmn{pt}. Similarly, adjust the dot spacing as with
+@code{\renewcommand@{\dotfill@}@{\leavevmode\cleaders\hb@@xt@@
+1.00em@{\hss .\hss @}\hfill\kern\z@@@}}, which changes the default
+length of 0.33@dmn{em} to 1.00@dmn{em}.
-@c xx undone
@node \addvspace
@section @code{\addvspace}
+
@findex \addvspace
@cindex vertical space
@cindex space, inserting vertical
-@code{\addvspace@{length@}}
+@code{\addvspace@{@var{length}@}}
+
+Add a vertical space of height @var{length}, which is a rubber length
+(@pxref{Lengths}). However, if vertical space has already been added to
+the same point in the output by a previous @code{\addvspace} command
+then this command will not add more space than what is needed to make
+the natural length of the total vertical space equal to @var{length}.
+
+Use this command to adjust the vertical space above or below an
+environment that starts a new paragraph. (For instance, a Theorem
+environment is defined to begin and end in @code{\addvspace@{..@}} so
+that two consecutive Theorem's are separated by one vertical space, not
+two.)
-The @code{\addvspace} command normally adds a vertical space of height
-length. However, if vertical space has already been added to the same
-point in the output by a previous @code{\addvspace} command, then this
-command will not add more space than is needed to make the natural
-length of the total vertical space equal to @code{length}.
+This command is fragile (@pxref{\protect}).
+
+The error @samp{Something's wrong--perhaps a missing \item} means that
+you were not in vertical mode when you invoked this command; one way to
+change that is to precede this command with a @code{\par} command.
@node \bigskip \medskip \smallskip
@@ -5756,32 +7928,70 @@ quarter of a line space, with stretch and shrink (the default for the
@node \vfill
@section @code{\vfill}
+
@findex \vfill
@cindex stretch, infinite vertical
@cindex infinite vertical stretch
-The @code{\vfill} fill command produces a rubber length (glue) which
-can stretch or shrink vertically as far as needed. It's equivalent to
-@code{\vspace@{\fill@}} (@pxref{\hfill}).
+End the current paragraph and insert a vertical rubber length
+(@pxref{Lengths}) that is infinite, so it can stretch or shrink as far
+as needed.
+
+It is often used in the same way as @code{\vspace@{\fill@}}, except that
+@code{\vfill} ends the current paragraph, whereas
+@code{\vspace@{\fill@}} adds the infinite vertical space below its line
+irrespective of the paragraph structure. In both cases that space will
+disappear at a page boundary; to circumvent this see@tie{}@ref{\vspace}.
+
+In this example the page is filled, so the top and bottom lines contain
+the text @samp{Lost Dog!} and the third @samp{Lost Dog!} is exactly
+halfway between them.
+
+@example
+\begin@{document@}
+Lost Dog!
+\vfill
+Lost Dog!
+\vfill
+Lost Dog!
+\end@{document@}
+@end example
@node \vspace
-@section @code{\vspace[*]@{@var{length}@}}
+@section @code{\vspace@{@var{length}@}}
+
@findex \vspace
+@cindex vertical space
+@cindex space, vertical
-Synopsis:
+Synopsis, one of these two:
@example
-\vspace[*]@{@var{length}@}
+\vspace@{@var{length}@}
+\vspace*@{@var{length}@}
@end example
-The @code{\vspace} command adds the vertical space @var{length}, i.e.,
-a rubber length. @var{length} can be negative or positive.
+Add the vertical space @var{length}. This can be negative or positive,
+and is a rubber length (@pxref{Lengths}).
+
+@LaTeX{} removes the vertical space from @code{\vfill} at a page break,
+that is, at the top or bottom of a page. The starred version
+@code{\vspace*@{..@}} causes the space to stay.
-Ordinarily, @LaTeX{} removes vertical space added by @code{\vspace} at
-the top or bottom of a page. With the optional @code{*} argument, the
-space is not removed.
+In this example the two questions will be evenly spaced vertically on
+the page, with at least one inch of space below each.
+
+@example
+\begin@{document@}
+1) Who put the bomp in the bomp bah bomp bah bomp?
+\vspace@{1in plus 1fill@}
+
+2) Who put the ram in the rama lama ding dong?
+\vspace@{1in plus 1fill@}
+\end@{document@}
+@end example
@node Boxes
@@ -5807,6 +8017,7 @@ used in the arguments of the box-making commands.
@node \mbox
@section @code{\mbox@{@var{text@}}}
+
@findex \mbox
@cindex hyphenation, preventing
@@ -5848,6 +8059,7 @@ Both commands produce a rule of thickness @code{\fboxrule} (default
@node lrbox
@section @code{lrbox}
+
@findex lrbox
@code{\begin@{lrbox@}@{cmd@} text \end@{lrbox@}}
@@ -5860,6 +8072,7 @@ must have been declared with @code{\newsavebox}.
@node \makebox
@section @code{\makebox}
+
@findex \makebox
Synopsis:
@@ -5869,7 +8082,7 @@ Synopsis:
@end example
The @code{\makebox} command creates a box just wide enough to contain
-the @var{text} specified. The width of the box is specified by the
+the @var{text} specified. The width of the box can be overridden by the
optional @var{width} argument. The position of the text within the box
is determined by the optional @var{position} argument, which may take
the following values:
@@ -5886,12 +8099,13 @@ Stretch (justify) across entire @var{width}; @var{text} must contain
stretchable space for this to work.
@end table
-@code{\makebox} is also used within the picture environment
+@code{\makebox} is also used within the @code{picture} environment
@pxref{\makebox (picture)}.
@node \parbox
@section @code{\parbox}
+
@findex \parbox
Synopsis:
@@ -5941,6 +8155,7 @@ for this to work.
@node \raisebox
@section @code{\raisebox}
+
@findex \raisebox
Synopsis:
@@ -5962,6 +8177,7 @@ ignoring its natural height and depth.
@node \savebox
@section @code{\savebox}
+
@findex \savebox
Synopsis:
@@ -5978,6 +8194,7 @@ declared with @code{\newsavebox} (@pxref{\newsavebox}).
@node \sbox
@section @code{\sbox@{@var{\boxcmd}@}@{@var{text}@}}
+
@findex \sbox
Synopsis:
@@ -5995,6 +8212,7 @@ included in the normal output, it is saved in the box labeled
@node \usebox
@section @code{\usebox@{@var{\boxcmd}@}}
+
@findex \usebox
Synopsis:
@@ -6010,6 +8228,9 @@ Synopsis:
@node Special insertions
@chapter Special insertions
+@cindex special insertions
+@cindex insertions of special characters
+
@LaTeX{} provides commands for inserting characters that have a
special meaning do not correspond to simple characters you can type.
@@ -6025,6 +8246,7 @@ special meaning do not correspond to simple characters you can type.
@node Reserved characters
@section Reserved characters
+
@cindex reserved characters
@cindex characters, reserved
@@ -6077,13 +8299,14 @@ with @code{"}, so the previous example could also be written as
@section Text symbols
@cindex text symbols
+@cindex symbols, text
+
@findex textcomp @r{package}
@LaTeX{} provides commands to generate a number of non-letter symbols
in running text. Some of these, especially the more obscure ones, are
not available in OT1; you may need to load the @code{textcomp} package.
@ftable @code
-
@item \copyright
@itemx \textcopyright
@cindex copyright symbol
@@ -6251,7 +8474,7 @@ Em-dash: --- (for punctuation).
@item \textendash @r{(or @code{--})}
@cindex e-dash
-En-dash: --- (for ranges).
+En-dash: -- (for ranges).
@item \texteuro
@cindex euro symbol
@@ -6431,7 +8654,8 @@ Produces a tilde accent over the following, as in @~{n}.
@item \b
@findex \b @r{(bar-under accent)}
@cindex bar-under accent
-Produces a bar accent under the following, as in @ubaraccent{o}.
+Produces a bar accent under the following, as in @ubaraccent{o}. See
+also @code{\underbar} hereinafter.
@item \c
@itemx \capitalcedilla
@@ -6505,6 +8729,7 @@ Not exactly an accent, this produces a bar under the argument text.
The argument is always processed in horizontal mode. The bar is
always a fixed position under the baseline, thus crossing through
descenders. See also @code{\underline} in @ref{Math miscellany}.
+See also @code{\b} above.
@item \v
@itemx \capitalcaron
@@ -6530,7 +8755,6 @@ Here are the basic @LaTeX{} commands for inserting characters commonly
used in languages other than English.
@table @code
-
@item \aa
@itemx \AA
@findex \aa (@aa{})
@@ -6614,6 +8838,7 @@ Icelandic letter thorn: @th{} and @TH{}.
@node \rule
@section @code{\rule}
+
@findex \rule
Synopsis:
@@ -6639,7 +8864,9 @@ The thickness of the rule (mandatory).
@node \today
@section @code{\today}
+
@findex \today
+@cindex date, today's
The @code{\today} command produces today's date, in the format
@samp{@var{month} @var{dd}, @var{yyyy}}; for example, `July 4, 1976'.
@@ -6654,6 +8881,7 @@ of other date formats.
@node Splitting the input
@chapter Splitting the input
+
@cindex splitting the input file
@cindex input file
@@ -6675,6 +8903,7 @@ external file to be created with the main document.
@node \include
@section @code{\include}
+
@findex \include
Synopsis:
@@ -6699,6 +8928,7 @@ read by another @code{\include} command.
@node \includeonly
@section \@code{includeonly}
+
@findex \includeonly
Synopsis:
@@ -6717,7 +8947,8 @@ This command can only appear in the preamble.
@node \input
-@section \input
+@section @code{\input}
+
@findex \input
Synopsis:
@@ -6735,6 +8966,7 @@ If @var{file} does not end in @samp{.tex} (e.g., @samp{foo} or
or @samp{foo.bar.tex}). If that is not found, the original @var{file}
is tried (@samp{foo} or @samp{foo.bar}).
+
@node Front/back matter
@chapter Front/back matter
@@ -6782,7 +9014,8 @@ The command @code{\nofiles} overrides these commands, and
@node \addcontentsline
-@subsection \addcontentsline
+@subsection @code{\addcontentsline}
+
@findex \addcontentsline@{@var{ext}@}@{@var{unit}@}@{@var{text}@}
@cindex table of contents entry, manually adding
@@ -6821,7 +9054,8 @@ command @code{\contentsline@{@var{unit}@}@{@var{name}@}}.
@node \addtocontents
-@subsection \addtocontents
+@subsection @code{\addtocontents}
+
@findex \addtocontents@{@var{ext}@}@{@var{text}@}
The @code{\addtocontents}@{@var{ext}@}@{@var{text}@} command adds text
@@ -6841,6 +9075,7 @@ The text to be written.
@node Glossaries
@section Glossaries
+
@cindex glossaries
@findex \makeglossary
@@ -6863,6 +9098,7 @@ glossaries.
@node Indexes
@section Indexes
+
@cindex indexes
@findex \makeindex
@@ -6925,77 +9161,142 @@ The @code{multind} package supports multiple indexes. See also the
@node Letters
@chapter Letters
-@cindex letters
-@cindex creating letters
-You can use @LaTeX{} to typeset letters, both personal and business. The
-@code{letter} document class is designed to make a number of letters at
-once, although you can make just one if you so desire.
+@cindex letters, writing
+@cindex writing letters
-Your @file{.tex} source file has the same minimum commands as the other
-document classes, i.e., you must have the following commands as a
-minimum:
+Synopsis:
@example
- \documentclass@{letter@}
- \begin@{document@}
- ... letters ...
- \end@{document@}
+\documentclass@{letter@}
+\address@{@var{sender address}@}
+\signature@{@var{sender name}@}
+\begin@{document@}
+\begin@{letter@}@{@var{recipient address}@}
+\opening@{@var{salutation}@}
+ @var{letter body}
+\closing@{@var{closing text}@}
+\end@{letter@}
+ ... more letters ...
+\end@{document@}
@end example
-Each letter is a @code{letter} environment, whose argument is the name
-and address of the recipient. For example, you might have:
+Produce one or more letters.
+
+Each letter is in a separate @code{letter} environment, whose argument
+@var{recipient address} often contains multiple lines separated with a
+double backslash@tie{}(@code{\\}). For example, you might have:
@example
- \begin@{letter@}@{Mr. Joe Smith\\ 2345 Princess St.
- \\ Edinburgh, EH1 1AA@}
+ \begin@{letter@}@{Mr. Joe Smith \\
+ 2345 Princess St. \\
+ Edinburgh, EH1 1AA@}
...
\end@{letter@}
@end example
-The letter itself begins with the @code{\opening} command. The text of
-the letter follows. It is typed as ordinary @LaTeX{} input. Commands that
-make no sense in a letter, like @code{\chapter}, do not work. The letter
-closes with a @code{\closing} command.
+The start of the @code{letter} environment resets the page number to 1,
+and the footnote number to 1 also.
+
+The @var{sender address} and @var{sender name} are common to all of the
+letters, whether there is one or more, so these are best put in the
+preamble. As with the recipient address, often @var{sender address}
+contains multiple lines separated by a double
+backslash@tie{}(@code{\\}). @LaTeX{} will put the @var{sender name}
+under the closing, after a vertical space for the traditional
+hand-written signature; it also can contain multiple lines.
+
+Each letter environment begins with a required @code{\opening} command
+such as @code{\opening@{Dear Madam or Sir:@}}. The @var{letter body}
+text is ordinary @LaTeX{} so it can contain everything from from
+enumerated lists to displayed math, except that commands such as
+@code{\chapter} that make no sense in a letter are turned off. Each
+letter environment typically ends with a @code{\closing} command such as
+@code{\closing@{Yours,@}}.
@findex \\ @r{for letters}
-After the @code{closing}, you can have additional material. The
-@code{\cc} command produces the usual ``cc: @dots{}''. There's also a
-similar @code{\encl} command for a list of enclosures. With both these
-commands, use @code{\\} to separate the items.
+Additional material may come after the @code{\closing}. You can say who
+is receiving a copy of the letter with a command like @code{\cc@{the
+Boss \\ the Boss's Boss@}}. There's a similar @code{\encl} command for
+a list of enclosures. And, you can add a postscript with @code{\ps}.
+
+@LaTeX{}'s default is to indent the signature and the @code{\closing}
+above it by a length of @code{\longindentation}. By default this is
+@code{0.5\textwidth}. To make them flush left, put
+@code{\setlength@{\longindentation@}@{0em@}} in your preamble.
+
+To set a fixed date use something like
+@code{\renewcommand@{\today@}@{2015-Oct-12@}}. If put in your preamble
+then it will apply to all the letters.
+
+This example shows only one @code{letter} environment. The three lines
+marked as optional are typically omitted.
+
+@example
+\documentclass@{letter@}
+\address@{Sender's street \\ Sender's town@}
+\signature@{Sender's name \\ Sender's title@}
+% optional: \location@{Mailbox 13@}
+% optional: \telephone@{(102) 555-0101@}
+\begin@{document@}
+\begin@{letter@}@{Recipient's name \\ Recipient's address@}
+\opening@{Sir:@}
+% optional: \thispagestyle@{firstpage@}
+I am not interested in entering a business arrangement with you.
+\closing@{Your most humble, etc.,@}
+\end@{letter@}
+\end@{document@}
+@end example
These commands are used with the @code{letter} class.
@menu
-* \address:: Your return address.
-* \cc:: Cc list.
-* \closing:: Saying goodbye.
-* \encl:: List of enclosed material.
-* \location:: Your organization's address.
-* \makelabels:: Making address labels.
-* \name:: Your name, for the return address.
-* \opening:: Saying hello.
-* \ps:: Adding a postscript.
-* \signature:: Your signature.
-* \startbreaks:: Allow page breaks.
-* \stopbreaks:: Disallow page breaks.
-* \telephone:: Your phone number.
+* \address:: Sender's return address.
+* \cc:: Carbon copy list.
+* \closing:: Saying goodbye.
+* \encl:: List of enclosed material.
+* \location:: Sender's organizational location.
+* \makelabels:: Make address labels.
+* \name:: Sender's name, for the return address.
+* \opening:: Saying hello.
+* \ps:: Adding a postscript.
+* \signature:: Sender's signature.
+@c ?Not user-level? * \stopbreaks and \startbreaks:: Disallow and allow page breaks.
+* \telephone:: Sender's phone number.
@end menu
@node \address
-@section \address@{@var{return-address@}}
+@section @code{\address}
+
@findex \address
-The @code{\address} specifies the return address of a letter, as it
-should appear on the letter and the envelope. Separate lines of the
-address should be separated by @code{\\} commands.
+Synopsis:
+
+@example
+\address@{@var{senders address}@}
+@end example
+
+Specifies the return address as it appears on the letter and on the
+envelope. Separate multiple lines in @var{senders address} with a
+double backslash@tie{}@code{\\}.
+
+Because it can apply to multiple letters this declaration is often put
+in the preamble. However, it can go anywhere, including inside an
+individual @code{letter} environment.
-If you do not make an @code{\address} declaration, then the letter
-will be formatted for copying onto your organization's standard
-letterhead. (@xref{Overview}, for details on your local
-implementation). If you give an @code{\address} declaration, then the
-letter will be formatted as a personal letter.
+This command is optional: without the @code{\address} declaration the
+letter is formatted with some blank space on top, for copying onto
+pre-printed letterhead paper. (@xref{Overview}, for details on your
+local implementation.) With the @code{\address} declaration, it is
+formatted as a personal letter.
+
+Here is an example.
+
+@example
+\address@{Stephen Maturin \\
+ The Grapes of the Savoy@}
+@end example
@node \cc
@@ -7007,11 +9308,19 @@ letter will be formatted as a personal letter.
Synopsis:
@example
-\cc@{@var{name1}\\@var{name2}@}
+\cc@{@var{first name} \\
+ .. @}
@end example
-Produce a list of @var{name}s the letter was copied to. Each name is
-printed on a separate line.
+Produce a list of names to which copies of the letter were sent. This
+command is optional. If it appears then typically it comes after
+@code{\closing}. Separate multiple lines with a double
+backslash@tie{}@code{\\}.
+
+@example
+\cc@{President \\
+ Vice President@}
+@end example
@node \closing
@@ -7027,9 +9336,11 @@ Synopsis:
\closing@{text@}
@end example
-A letter closes with a @code{\closing} command, for example,
+Usually at the end of a letter, above the handwritten signature, there
+is a @code{\closing} (although this command is optional). For example,
+
@example
-\closing@{Best Regards,@}
+\closing@{Regards,@}
@end example
@@ -7042,45 +9353,80 @@ A letter closes with a @code{\closing} command, for example,
Synopsis:
@example
-\encl@{@var{line1}\\@var{line2}@}
+\encl@{@var{first enclosed object} \\
+ .. @}
@end example
-Declare a list of one more enclosures.
+Produce a list of things included with the letter. This command is
+optional; when it is used, it typically is put after @code{\closing}.
+Separate multiple lines with a double backslash@tie{}@code{\\}.
+
+@example
+\encl@{License \\
+ Passport @}
+@end example
@node \location
@section @code{\location}
+
@findex \location
-@code{\location@{address@}}
+Synopsis:
-This modifies your organization's standard address. This only appears
-if the @code{firstpage} pagestyle is selected.
+@example
+\location@{@var{text}@}
+@end example
+
+The @var{text} appears centered at the bottom of the each page. It only
+appears if the page style is @code{firstpage}.
@node \makelabels
@section @code{\makelabels}
-@findex \makelabels
-@code{\makelabels@{number@}}
+@findex \makelabels
-If you issue this command in the preamble, @LaTeX{} will create a sheet of
-address labels. This sheet will be output before the letters.
+Synopsis:
+@example
+\makelabels
+@end example
+Create a sheet of address labels from the recipient addresses, one for
+each letter. This sheet will be output before the letters, with the idea
+that you can copy it to a sheet of peel-off labels. This command goes
+in the preamble.
+
+Customize the labels by redefining the commands @code{\startlabels},
+@code{\mlabel}, and @code{\returnaddress} in the preamble. The command
+@code{\startlabels} sets the width, height, number of columns, etc., of
+the page onto which the labels are printed. The command
+@code{\mlabel@{@var{sender address}@}@{@var{recipient address}@}}
+produces the two labels (or one, if you choose to ignore the @var{sender
+address}). The @var{sender address} is the value returned by the macro
+@code{\returnaddress} while @var{recipient address} is the value passed
+in the argument to the @code{letter} environment. By default
+@code{\mlabel} ignores the first argument, the @var{sender address}.
@node \name
@section @code{\name}
+
@findex \name
-@code{\name@{June Davenport@}}
+Synopsis:
-Your name, used for printing on the envelope together with the return
-address.
+@example
+\name@{@var{name}@}
+@end example
+
+Sender's name, used for printing on the envelope together with the
+return address.
@node \opening
-@section @code{\opening@{@var{text}@}}
+@section @code{\opening}
+
@findex \opening
@cindex letters, starting
@@ -7090,12 +9436,12 @@ Synopsis:
\opening@{@var{text}@}
@end example
-A letter begins with the @code{\opening} command. The mandatory
-argument, @var{text}, is whatever text you wish to start your letter.
-For instance:
+This command is required. It starts a letter, following the
+@code{\begin@{letter@}@{..@}}. The mandatory argument @var{text} is the
+text that starts your letter. For instance:
@example
-\opening@{Dear Joe,@}
+\opening@{Dear John:@}
@end example
@@ -7104,50 +9450,98 @@ For instance:
@findex \ps
@cindex postscript, in letters
-Use the @code{\ps} command to start a postscript in a letter, after
+Synopsis:
+
+@example
+\ps@{@var{text}@}
+@end example
+
+Add a postscript. This command is optional and usually is used after
@code{\closing}.
+@example
+\ps@{P.S. After you have read this letter, burn it. Or eat it.@}
+@end example
+
@node \signature
-@section @code{\signature@{@var{text}@}}
+@section @code{\signature}
+
+Synopsis:
+
+@example
+\signature@{@var{first line} \\
+ .. @}
+@end example
+
@findex \signature
-Your name, as it should appear at the end of the letter underneath the
-space for your signature. @code{\\} starts a new line within
-@var{text} as usual.
+The sender's name. This command is optional, although its inclusion is
+usual.
+The argument text appears at the end of the letter, after the closing
+and after a vertical space for the traditional hand-written
+signature. Separate multiple lines with a double
+backslash@tie{}@code{\\}. For example:
-@node \startbreaks
-@section @code{\startbreaks}
-@findex \startbreaks
+@example
+\signature@{J Fred Muggs \\
+ White House@}
+@end example
-@code{\startbreaks}
+@LaTeX{}'s default for the vertical space from the @code{\closing} text
+down to the @code{\signature} text is @code{6\medskipamount}, which is
+six times 0.7@dmn{em}.
-Used after a @code{\stopbreaks} command to allow page breaks again.
+This command is usually in the preamble, to apply to all the letters in
+the document. To have it apply to one letter only, put it inside a
+@code{letter} environment and before the @code{\closing}.
+You can include a graphic in the signature, for instance with
+@code{\signature@{\vspace@{-6\medskipamount@}\includegraphics@{sig.png@}\\
+My name@}} (this requires writing @code{\usepackage@{graphicx@}} in the
+preamble).
-@node \stopbreaks
-@section @code{\stopbreaks}
-@findex \stopbreaks
-@code{\stopbreaks}
+@c I think this is not a user-level command; it is used to keep from breaking
+@c the page between the closing and the signature
+@c @node \stopbreaks and \startbreaks
+@c @section @code{\stopbreaks} and @code{\startbreaks}
-Inhibit page breaks until a @code{\startbreaks} command occurs.
+@c @findex \startbreak
+@c @findex \stopbreaks
+@c @example
+@c @code{\stopbreaks}
+@c text
+@c @code{\startbreaks}
+@c @end example
+@c The @code{\stopbreaks} inhibits page breaking. The @code{\startbreaks} resumes
+@c normal page breaking.
+@c
+@c
@node \telephone
@section @code{\telephone}
+
@findex \telephone
-@code{\telephone@{number@}}
+Synopsis:
-This is your telephone number. This only appears if the
-@code{firstpage} pagestyle is selected.
+@example
+\telephone@{@var{number}@}
+@end example
+
+The sender's telephone number. This is typically in the preamble, where
+it applies to all letters. This only appears if the @code{firstpage}
+pagestyle is selected. If so, it appears on the lower right of the
+page.
@node Terminal input/output
@chapter Terminal input/output
-@cindex input/output
+
+@cindex input/output, to terminal
@cindex terminal input/output
@menu
@@ -7158,6 +9552,7 @@ This is your telephone number. This only appears if the
@node \typein
@section @code{\typein[@var{cmd}]@{@var{msg}@}}
+
@findex \typein
Synopsis:
@@ -7177,6 +9572,7 @@ redefined to be the typed input.
@node \typeout
@section @code{\typeout@{@var{msg}@}}
+
@findex \typeout
Synopsis:
@@ -7199,6 +9595,7 @@ printed, independent of surrounding spaces. A @code{^^J} in
@node Command line
@chapter Command line
+
@cindex command line
@findex .tex, @r{default extension}
@@ -7230,7 +9627,9 @@ If @LaTeX{} stops in the middle of the document and gives you a
@node Document templates
@appendix Document templates
+
@cindex document templates
+@cindex templates, document
Although not reference material, perhaps these document templates will
be useful. Additional template resources are listed at
@@ -7247,6 +9646,8 @@ be useful. Additional template resources are listed at
@section @code{beamer} template
@cindex @code{beamer} template and class
+@cindex template, @code{beamer}
+
The @code{beamer} class creates presentation slides. It has a vast
array of features, but here is a basic template:
@@ -7281,6 +9682,8 @@ One web resource for this:
@node book template
@section @code{book} template
+@cindex template, @code{book}
+
@verbatim
\documentclass{book}
\title{Book Class Template}
@@ -7304,6 +9707,7 @@ The end.
@node tugboat template
@section @code{tugboat} template
+@cindex template, TUGboat
@cindex TUGboat template
@cindex @code{ltugboat} class
@@ -7420,4 +9824,5 @@ Email \verb|tugboat@tug.org| if problems or questions.
@c Local Variables:
@c ispell-dictionary: "english"
+@c coding: latin-1-unix
@c End: