From f68a915f164bf116f1bb31ab3e1d9f5b94824e29 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 25 Oct 2015 22:35:59 +0000 Subject: latex2e-help-texinfo (25oct15) git-svn-id: svn://tug.org/texlive/trunk@38709 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/latex/latex2e-help-texinfo/latex2e.texi | 5183 ++++++++++++++------ 1 file changed, 3794 insertions(+), 1389 deletions(-) (limited to 'Master/texmf-dist/doc/latex/latex2e-help-texinfo/latex2e.texi') 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. -This is the default if @code{twocolumn} mode is selected -(@pxref{Document class options}). +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 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,92 +1556,275 @@ 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 Sectioning -@chapter Sectioning -@cindex sectioning +@node Floats +@section Floats -Sectioning commands provide the means to structure your text into units: +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. -@ftable @code -@item \part -@item \chapter -(@code{report} and @code{book} class only) -@item \section -@item \subsection -@item \subsubsection -@item \paragraph -@item \subparagraph -@end ftable +@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}. -All sectioning commands take the same general form, e.g., +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. -@example -\chapter[@var{toctitle}]@{@var{title}@} -@end example +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. -In addition to providing the heading @var{title} in the main text, the -section title can appear in two other places: +@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}. -@enumerate -@item -The table of contents. -@item -The running head at the top of the page. -@end enumerate +@table @code +@item t +(Top)---at the top of a text page. -You may not want the same text in these places as in the main text. -To handle this, the sectioning commands have an optional argument -@var{toctitle} that, when given, specifies the text for these other -places. +@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}. -@cindex *-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: +@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. -@example -\section*@{Preamble@} -@end example +@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}. -@findex \appendix -@cindex appendix, creating -The @code{\appendix} command changes the way following sectional units -are numbered. The @code{\appendix} command itself generates no text -and does not affect the numbering of parts. The normal use of this -command is something like +@item p +@cindex float page +(Page of floats)---on a separate @dfn{float page}, which is a page +containing no text, only floats. -@example -\chapter@{A Chapter@} -@dots{} -\appendix -\chapter@{The First Appendix@} -@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. -@findex secnumdepth @r{counter} -@cindex section numbers, printing -The @code{secnumdepth} counter controls printing of section numbers. -The setting +@end table -@example +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 commands + +Sectioning commands provide the means to structure your text into units: + +@ftable @code +@item \part +@item \chapter +(@code{report} and @code{book} class only) +@item \section +@item \subsection +@item \subsubsection +@item \paragraph +@item \subparagraph +@end ftable + +All sectioning commands take the same general form, e.g., + +@example +\chapter[@var{toctitle}]@{@var{title}@} +@end example + +In addition to providing the heading @var{title} in the main text, the +section title can appear in two other places: + +@enumerate +@item +The table of contents. +@item +The running head at the top of the page. +@end enumerate + +You may not want the same text in these places as in the main text. +To handle this, the sectioning commands have an optional argument +@var{toctitle} that, when given, specifies the text for these other +places. + +@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: + +@example +\section*@{Preamble@} +@end example + +@findex \appendix +@cindex appendix, creating +The @code{\appendix} command changes the way following sectional units +are numbered. The @code{\appendix} command itself generates no text +and does not affect the numbering of parts. The normal use of this +command is something like + +@example +\chapter@{A Chapter@} +@dots{} +\appendix +\chapter@{The First Appendix@} +@end example + +@findex secnumdepth @r{counter} +@cindex section numbers, printing +The @code{secnumdepth} counter controls printing of section numbers. +The setting + +@example \setcounter@{secnumdepth@}@{@var{level}@} @end example @@ -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}). - -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}. +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}). -@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}. +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. -@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: - -@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. -Unlike the @code{quotation} environment, paragraphs are not indented. +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. + +@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. - -@table @code -@item t -align on top row +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. -@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. -@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: +@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 -@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 +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}@} +Each item in the column is typeset in a parbox of width @var{wd}. + +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{numcols}@}@{@var{cols}@}@{@var{text}@} +@end example + +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. + +In this example, in the first row, the second and third columns are +spanned by the single heading @samp{Name}. + +@example +\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 -\multicolumn@{@var{cols}@}@{@var{pos}@}@{@var{text}@} +\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 -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. +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 -Here's an example showing two columns separated by an en-dash; -@code{\multicolumn} is used for the heading: +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@}@{r@@@{--@}l@} -\multicolumn@{2@}@{c@}@{\bf Unicode@}\cr - 0x80&0x7FF \cr - 0x800&0xFFFF \cr -0x10000&0x1FFFF \cr +\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: + +@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. -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. +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 +@cindex Footnotes, in a table -@node Symbolic footnotes -@section Symbolic footnotes +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. -@cindex footnotes, symbolic instead of numbered -If you want to use symbols for footnotes, rather than increasing -numbers, redefine @code{\thefootnote} like this: +@example +\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 + +The solution is to surround the @code{tabular} environment with a +@code{minipage} environment, as here (@pxref{minipage}). @example -\renewcommand@{\thefootnote@}@{\fnsymbol@{footnote@}@} +\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 -@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}. + +@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{name}@}@{@var{title}@}[@var{numbered_within}] +@end example + +@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{newenv}@}@{@var{label}@}[@var{within}] -\newtheorem@{@var{newenv}@}[@var{numbered_like}]@{@var{label}@} +\newtheorem@{@var{name}@}[@var{numbered_like}]@{@var{title}@} @end example -This command defines a theorem-like environment. Arguments: +@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}). + +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. -@LaTeX{} normally removes horizontal space that comes at the beginning -or end of a line. To preserve this space, use the optional @code{*} -form. +@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) and \@@ +@section @code{\(SPACE)} and \@@ -@node \SPACE -@section @code{\SPACE}: Normal interword space -@findex \SPACE +@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. + +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. -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. +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: + +@example +\location@{@var{text}@} +@end example -This modifies your organization's standard address. This only appears -if the @code{firstpage} pagestyle is selected. +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: + +@example +\name@{@var{name}@} +@end example -Your name, used for printing on the envelope together with the return -address. +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: + +@example +\telephone@{@var{number}@} +@end example -This is your telephone number. This only appears if the -@code{firstpage} pagestyle is selected. +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: -- cgit v1.2.3