From a683c3d7e9fac38ec713f23fb6b9d2c7143aea82 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 23 May 2009 00:23:51 +0000 Subject: move english latex doc out of texmf-doc git-svn-id: svn://tug.org/texlive/trunk@13412 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/latex/latex2e-help-texinfo/latex2e.texi | 6474 ++++++++++++++++++++ 1 file changed, 6474 insertions(+) create mode 100644 Master/texmf-dist/doc/latex/latex2e-help-texinfo/latex2e.texi (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 new file mode 100644 index 00000000000..f9c7070c6a7 --- /dev/null +++ b/Master/texmf-dist/doc/latex/latex2e-help-texinfo/latex2e.texi @@ -0,0 +1,6474 @@ +\input texinfo +@c $Id: latex2e.texi 234 2008-06-10 18:27:54Z karl $ +@comment %**start of header (This is for running Texinfo on a region.) +@setfilename latex2e.info +@set UPDATED June 2008 +@set VERSION 2.0 +@settitle @LaTeX{}2e reference manual @value{VERSION} +@comment %**end of header (This is for running Texinfo on a region.) + +@c xx merge http://ctan.org/tex-archive/info/latex-info/ +@c xx latex 2.09 should be pretty much complete now, but +@c new stuff in latex2e is surely missing. + +@copying +This document is version @value{VERSION} (@value{UPDATED}) of an +unofficial reference manual for @LaTeX{}, a document preparation +system. @LaTeX{} is a macro package for @TeX{}. + +This was originally translated from @file{LATEX.HLP} v1.0a in the VMS +Help Library. The pre-translation version was written by +George@tie{}D. Greenwade of Sam Houston State University. The +@LaTeX{}@tie{}2.09 version was written by Stephen Gilmore. The +@LaTeX{}2e version was adapted from this by Torsten Martinsen. Karl +Berry made further updates and additions, and gratefully acknowledges +using @cite{Hypertext Help with @LaTeX{}}, by Sheldon Green, and the +@cite{@LaTeX{} Command Summary} (for @LaTeX{} 2.09) by L.@tie{}Botway +and C.@tie{}Biemesderfer (published by the @TeX{} Users Group as +@cite{@TeX{}niques} number 10), as reference material (text was not +directly copied). + +Copyright @copyright{} 2007, 2008 Karl Berry.@* +Copyright @copyright{} 1988, 1994, 2007 Stephen Gilmore.@* +Copyright @copyright{} 1994, 1995, 1996 Torsten Martinsen. + +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. + +@ignore +Permission is granted to process this file through TeX and print the +results, provided the printed document carries copying permission +notice identical to this one except for the removal of this paragraph +(this paragraph not being relevant to the printed manual). +@end ignore + +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided that the entire +resulting derived work is distributed under the terms of a permission +notice identical to this one. + +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions. +@end copying + +@dircategory TeX +@direntry +* LaTeX2e: (latex2e). Unofficial LaTeX reference manual. +@end direntry + +@tex +\global\hbadness=4444 % don't complain much +@end tex + +@titlepage +@title @LaTeX{}: Structured documents for @TeX{} +@subtitle unofficial @LaTeX{} reference manual +@subtitle version @value{VERSION}, @value{UPDATED} +@author +@page +@vskip 0pt plus 1filll +@insertcopying +@end titlepage + +@shortcontents +@contents + +@node Top +@top @LaTeX{}2e + +This document is version @value{VERSION} (@value{UPDATED}) of an +unofficial reference manual for @LaTeX{}, a document preparation +system. It is intended to cover @LaTeX{}2e, which has been the +standard version of @LaTeX{} for many years. + +@cindex Knuth, Donald E. +@cindex Lamport, Leslie +@cindex @LaTeX{} Project team +@LaTeX{} is implemented as a macro package for Donald@tie{}E. Knuth's +@TeX{} typesetting program. @LaTeX{} was originally created by Leslie +Lamport; it is now maintained by a group of volunteers +(@url{http://latex-project.org}). The official documentation written +by the @LaTeX{} project is available there. Again, the present +document is unofficial and has not been reviewed by the @LaTeX{} +maintainers. + +@menu +* Overview:: What is @LaTeX{}? +* Starting & ending:: The standard beginning and end of a document. +* Document classes:: Some of the various classes available. +* Typefaces:: And fonts, such as bold, italics etc. +* Layout:: Controlling the page layout. +* Sectioning:: How to section properly. +* Cross references:: Automatic referencing. +* Environments:: Such as enumerate & itemize. +* Line breaking:: Influencing line breaks. +* Page breaking:: Influencing page breaks. +* Footnotes:: How to produce footnotes. +* Definitions:: Define your own commands etc. +* Counters:: Internal counters used by @LaTeX{}. +* Lengths:: The length commands. +* Making paragraphs:: Paragraph commands. +* Math formulas:: How to create mathematical formulas. +* Modes:: Paragraph, Math or LR modes. +* Page Styles:: Various styles of page layout. +* Spaces:: Horizontal and vertical space. +* Boxes:: Making boxes. +* Special insertions:: Inserting reserved and special characters. +* Splitting the input:: Dealing with big files by splitting. +* Front/back matter:: Tables of contents, glossaries, indexes. +* Letters:: The letter class. +* Terminal Input/Output:: User interaction. +* Command Line:: System-independent command-line behavior. +* Document templates:: Starter templates for various document classes. +* Command Index:: Alphabetical list of @LaTeX{} commands. +* Concept Index:: General index. +@end menu + + +@node Overview +@chapter Overview of @LaTeX{} + +@cindex overview of @LaTeX{} +@cindex @LaTeX{} overview + +The @LaTeX{} command typesets a file of text using the @TeX{} program +and the @LaTeX{} ``macro package'' for @TeX{}. To be more specific, +it processes an input file containing the text of a document with +interspersed commands that describe how the text should be formatted. +It produces at least three files as output: + +@enumerate +@item +A main output file, which is one of: + +@enumerate +@item +If invoked as @command{latex}, a ``Device Independent'' (@file{.dvi}) +file. This contains commands that can be translated into commands for +a variety of output devices. You can view such @file{.dvi} output of +@LaTeX{} by using a program such as @command{xdvi} (display directly) +or @command{dvips} (convert to PostScript). + +@item +If invoked as @command{pdflatex}, a ``Portable Document Format'' +(@file{.pdf}) file. Typically, this is a self-contained file, with +all fonts and images embedded. This can be very useful, but it does +make the output much larger than the @file{.dvi} produced from the +same document. +@end enumerate + +There are other less-common variants of @LaTeX{} (and @TeX{}) as well, +which can produce HTML, XML, and other things. + +@item +A ``transcript'' or @file{.log} file that contains summary information and +diagnostic messages for any errors discovered in the input file. + +@item +An ``auxiliary'' or @file{.aux} file. This is used by @LaTeX{} itself, for +things such as sectioning. +@end enumerate + +A @LaTeX{} command begins with the command name, which consists of a +@code{\} followed by either (a)@tie{}a string of letters or (b)@tie{}a +single non-letter. Arguments contained in square brackets, @code{[]}, +are optional while arguments contained in braces, @code{@{@}}, are +required. + +@LaTeX{} is case sensitive. Enter all commands in lower case unless +explicitly directed to do otherwise. + + +@node Starting & ending +@chapter Starting & ending + +@cindex starting & ending +@cindex ending & starting + +A minimal input file looks like the following: + +@example +\documentclass@{@var{class}@} +\begin@{document@} +@var{your text} +\end@{document@} +@end example + +@noindent +where the @var{class} is a valid document class for @LaTeX{}. +@xref{Document classes}, for details of the various document classes +available locally. + +@cindex preamble, defined +You may include other @LaTeX{} commands between the @code{\documentclass} +and the @code{\begin@{document@}} commands (this area is called the +@dfn{preamble}). + + +@node Document classes +@chapter Document classes + +@cindex document classes +@cindex classes of documents +@findex \documentclass + +The class of a given document is defined with the command: + +@example +\documentclass[@var{options}]@{@var{class}@} +@end example + +@noindent +The @code{\documentclass} command must be the first command in a +@LaTeX{} source file. + +@findex article @r{class} +@findex report @r{class} +@findex book @r{class} +@findex letter @r{class} +@findex slides @r{class} +Built-in @LaTeX{} document @var{class} names are (many other document +classes are available as add-ons; @pxref{Overview}): + +@example +article report book letter slides +@end example + +@c xx briefly describe each one + +Standard @var{options} are described below. + +@menu +* Document class options:: Global options. +@end menu + + +@node Document class options +@section Document class options + +@cindex document class options +@cindex options, document class +@cindex class options +@cindex global options + +You can specify so-called @dfn{global options} or @dfn{class options} +to the @code{\documentclass} command by enclosing them in square +brackets as usual. To specify more than one @var{option}, separate +them with a comma: + +@example +\documentclass[@var{option1},@var{option2},...]@{@var{class}@} +@end example + +Here is the list of the standard class options. + +@findex 10pt @r{option} +@findex 11pt @r{option} +@findex 12pt @r{option} +All of the standard classes except @code{slides} accept the following +options for selecting the typeface size (default is @code{10pt}): + +@example +10pt 11pt 12pt +@end example + +@findex a4paper @r{option} +@findex a5paper @r{option} +@findex b5paper @r{option} +@findex executivepaper @r{option} +@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}): + +@example +a4paper a5paper b5paper executivepaper legalpaper letterpaper +@end example + +@findex draft @r{option} +@findex final @r{option} +@findex fleqn @r{option} +@findex landscape @r{option} +@findex leqno @r{option} +@findex openbib @r{option} +@findex titlepage @r{option} +@findex notitlepage @r{option} +Miscellaneous other options: + +@table @code +@item draft, final +@cindex black boxes, omitting +mark/do not mark overfull boxes with a big black box; default is @code{final}. +@item fleqn +Put displayed formulas flush left; default is centered. +@item landscape +Selects landscape format; default is portrait. +@item leqno +Put equation numbers on the left side of equations; default is the right side. +@item openbib +Use ``open'' bibliography format. +@item titlepage, notitlepage +Specifies whether the title page is separate; default depends on the class. +@end table + +These options are not available with the slides class: + +@findex onecolumn @r{option} +@findex twocolumn @r{option} +@findex oneside @r{option} +@findex twoside @r{option} +@findex openright @r{option} +@findex openany @r{option} +@table @code +@item onecolumn +@itemx twocolumn +Typeset in one or two columns; default is @code{onecolumn}. + +@item oneside +@itemx twoside +@findex \evensidemargin +@findex \oddsidemargin +Selects one- or two-sided layout; default is @code{oneside}, except +for the @code{book} class. + +The @code{\evensidemargin} (@code{\oddsidemargin} parameter determines +the distance on even (odd) numbered pages between the left side of the +page and the text's left margin. The defaults vary with the paper +size and whether one- or two-side layout is selected. For one-sided +printing the text is centered, for two-sided, @code{\oddsidemargin} is +40% of the difference between @code{\paperwidth} and @code{\textwidth} +with @code{\evensidemargin} the remainder. + +@item openright +@itemx openany +Determines if a chapter should start on a +right-hand page; default is @code{openright} for book. +@end table + +The @code{slides} class offers the option @code{clock} for printing +the time at the bottom of each note. + + +@cindex packages, loading +@cindex loading additional packages +@findex \usepackage +Additional packages are loaded like this: + +@example +\usepackage[@var{options}]@{@var{pkg}@} +@end example + +To specify more than one @var{pkg}, you can separate them with a +comma, or use multiple @code{\usepackage} commands. + +@cindex global options +@cindex options, global +Any options given in the @code{\documentclass} command that are unknown +by the selected document class are passed on to the packages loaded with +@code{\usepackage}. + + +@node Typefaces +@chapter Typefaces + +@cindex typefaces +@cindex fonts + +Two important aspects of selecting a @dfn{font} are specifying a size +and a style. The @LaTeX{} commands for doing this are described here. + +@menu +* Font styles:: Select roman, italics etc. +* Font sizes:: Select point size. +* Low-level font commands:: Select encoding, family, series, shape. +@end menu + + +@node Font styles +@section Font styles + +@cindex font styles +@cindex typeface styles +@cindex styles of text + +The following type style commands are supported by @LaTeX{}. + +These commands are used like @code{\textit@{italic text@}}. 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. + +The declaration forms are cumulative; i.e., you can say either +@code{\sffamily\bfseries} or @code{\bfseries\sffamily} to get bold +sans serif. + +You can also use the environment form of the declaration forms; for instance, +@code{\begin@{ttfamily@}...\end@{ttfamily@}}. + +@table @code +@item \textrm (\rmfamily) +@findex \textrm +@findex \rmfamily +Roman. + +@item \textit (\itshape) +@findex \textit +@findex \itshape +Italics. + +@item \emph +@findex \emph +@cindex emphasis +Emphasis (switches between @code{\textit} and @code{\textrm}). + +@item \textmd (\mdseries) +@findex \textmd +@findex \mdseries +Medium weight (default). + +@item \textbf (\bfseries) +@findex \textbf +@findex \bfseries +Boldface. +@item \textup (\upshape) +@findex \textup +@findex \upshape +Upright (default). The opposite of slanted. +@item \textsl (\slshape) +@findex \textsl +@findex \slshape +Slanted. +@item \textsf (\sffamily) +@findex \textsf +@findex \sffamily +Sans serif. +@item \textsc (\scshape) +@findex \textsc +@findex \scshape +Small caps. +@item \texttt (\ttfamily) +@findex \texttt +@findex \ttfamily +Typewriter. +@item \textnormal (\normalfont) +@findex \textnormal +@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 + +In addition, the command +@code{\mathversion@{bold@}} +@findex \mathversion +can be used for switching to bold letters and symbols in +formulas. @code{\mathversion@{normal@}} restores the default. + +@LaTeX{} also provides these commands, which unconditionally switch to +the given style, that is, are @emph{not} cumulative. They are used +differently than the above commands, too: @code{@{\@var{cmd} ...@}} +instead of @code{\@var{cmd}@{...@}}. These are two very different +things. + +@ftable @code +@item \bf +@cindex bold font +Switch to @b{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. + +@item \rm +@cindex roman font +Roman. + +@item \sc +@cindex small caps font +Small caps. + +@item \sf +@cindex sans serif font +Sans serif. + +@item \sl +@cindex slanted font +@cindex oblique font +Slanted (oblique). + +@item \tt +@cindex typewriter font +@cindex monospace font +@cindex fixed-width font +Typewriter (monospace, fixed-width). + +@end ftable + + +@node Font sizes +@section Font sizes +@cindex font sizes +@cindex typeface sizes +@cindex sizes of text + +The following standard type size commands are supported by @LaTeX{}. +The table shows the command name and the corresponding actual font +size used (in points) with the @samp{10pt}, @samp{11pt}, and +@samp{12pt} document size options, respectively (@pxref{Document class +options}). + +@findex \tiny +@findex \scriptsize +@findex \footnotesize +@findex \small +@findex \normalsize +@findex \large +@findex \Large +@findex \LARGE +@findex \huge +@findex \Huge + +@multitable {@code{\normalsize} (default)} {24.88} {24.88} {24.88} +@headitem Command @tab @code{10pt} @tab @code{11pt} @tab @code{12pt} +@item @code{\tiny} +@tab 5 @tab 6 @tab 6 +@item @code{\scriptsize} +@tab 7 @tab 8 @tab 8 +@item @code{\footnotesize} +@tab 8 @tab 9 @tab 10 +@item @code{\small} +@tab 9 @tab 10 @tab 10.95 +@item @code{\normalsize} (default) +@tab 10 @tab 10.95 @tab 12 +@item @code{\large} +@tab 12 @tab 12 @tab 14.4 +@item @code{\Large} +@tab 14.4 @tab 14.4 @tab 17.28 +@item @code{\LARGE} +@tab 17.28 @tab 17.28 @tab 20.74 +@item @code{\huge} +@tab 20.74 @tab 20.74 @tab 24.88 +@item @code{\Huge} +@tab 24.88 @tab 24.88 @tab 24.88 +@end multitable + +The commands as listed here are ``declaration forms''. The scope of +the declaration form lasts until the next type style command or the +end of the current group. You can also use the environment form of +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. + +@table @code +@item \fontencoding@{enc@} +@findex \fontencoding +Select font encoding. Valid encodings include @code{OT1} and @code{T1}. + +@item \fontfamily@{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 +@end itemize + +and numerous others. + +@item \fontseries@{series@} +@findex \fontseries +Select font series. Valid series include: + +@itemize @bullet +@item @code{m} Medium (normal) +@item @code{b} Bold +@item @code{c} Condensed +@item @code{bc} Bold condensed +@item @code{bx} Bold extended +@end itemize + +and various other combinations. + +@item \fontshape@{shape@} +@findex \fontshape +Select font shape. Valid shapes are: + +@itemize @bullet +@item @code{n} Upright (normal) +@item @code{it} Italic +@item @code{sl} Slanted (oblique) +@item @code{sc} Small caps +@item @code{ui} Upright italics +@item @code{ol} Outline +@end itemize + +The two last shapes are not available for most font families. + +@item \fontsize@{size@}@{skip@} +@findex \fontsize +@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}. + +@findex \baselinestretch +@cindex @code{setspace} package +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}. + +@item \selectfont +@findex \selectfont +The changes made by calling the four font commands described above do +not come into effect until @code{\selectfont} is called. + +@item \usefont@{enc@}@{family@}@{series@}@{shape@} +@findex \usefont +The same as invoking @code{\fontencoding}, @code{\fontfamily}, +@code{\fontseries} and @code{\fontshape} with the given parameters, +followed by @code{\selectfont}. +@end table + + +@node Layout +@chapter Layout +@cindex layout commands + +Miscellaneous commands for controlling the general layout of the page. + +@menu +* \onecolumn:: Use one-column layout. +* \twocolumn:: Use two-column layout. +* \flushbottom:: Make all text pages the same height. +* \raggedbottom:: Allow text pages of differing height. +* Page layout parameters:: \headheight \footskip. +@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. + + +@node \twocolumn +@section @code{\twocolumn} +@findex \twocolumn +@cindex multicolumn text +@cindex two-column output + +Synopsis: + +@example +\twocolumn[@var{text1col}] +@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. + +These parameters control typesetting in two-column output: + +@ftable @code +@item \columnsep +The distance between columns (35pt by default). + +@item \columnseprule +The width of the rule between columns; the default is 0pt, so there is no rule. + +@item \columnwidth +The width of the current column; this is equal to @code{\textwidth} in +single-column text. + +@end ftable + +These parameters control float behavior in 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. + +@item \dblfloatpagefraction +The minimum fraction of a float page that must be occupied by floats, +for a two-column float page. Default @samp{.5}. + +@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}. + +@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}. + +@end ftable + + +@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. + +This is the default if @code{twocolumn} mode is selected +(@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. + + +@node Page layout parameters +@section Page layout parameters + +@cindex page layout parameters +@cindex parameters, page layout +@cindex layout, page parameters for +@cindex header, parameters for +@cindex footer, parameters for +@cindex running header and footer + +@ftable @code +@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. + +@item \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. + +@item \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. + +@item \linewidth +Width of the current line; 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}. + +@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}. + +@item \textwidth +The normal horizontal width of the 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}. + +@item \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 +based on many other parameters: @code{\paperheight @minus{} 2in @minus{} +\headheight @minus{} \headsep @minus{} \textheight @minus{} \footskip}, and +then divided by two. + +@item \topskip +Minimum distance between the top of the page body and the baseline of +the first line of text. For the standard clases, the default is the +same as the font size, e.g., @samp{10pt} at @samp{10pt}. + +@end ftable + + +@node Sectioning +@chapter Sectioning +@cindex sectioning + +Sectioning commands provide the means to structure your text into units: + +@ftable @code +@item \part +@item \chapter +(report and 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 *-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 + + +@node Cross references +@chapter Cross references +@cindex cross references + +One reason for numbering things like figures and equations is to refer +the reader to them, as in ``See Figure 3 for more details.'' + +@menu +* \label:: Assign a symbolic name to a piece of text. +* \pageref:: Refer to a page number. +* \ref:: Refer to a section, figure or similar. +@end menu + + +@node \label +@section @code{\label} +@findex \label + +Synopsis: + +@example +\label@{@var{key}@} +@end example + +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}. + +A @var{key} name can consist of any sequence of letters, digits, or +punctuation characters. Upper and lowercase letters are distinguished. + +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: + +@table @code +@item ch +for chapters +@item sec +for lower-level sectioning commands +@item fig +for figures +@item tab +for tables +@item eq +for equations +@end table + +Thus, a label for a figure would look like @code{fig:snark} or +@code{fig.snark}. + + +@node \pageref +@section @code{\pageref@{@var{key}@}} +@findex \pageref +@cindex cross referencing with page number +@cindex page number, cross referencing + +Synopsis: + +@example +\pageref@{@var{key}@} +@end example + +The @code{\pageref}@{@var{key}@} command produces the page number of +the place in the text where the corresponding +@code{\label}@{@var{key}@} command appears. + + +@node \ref +@section @code{\ref@{@var{key}@}} +@findex \ref +@cindex cross referencing, symbolic +@cindex section number, cross referencing +@cindex equation number, cross referencing +@cindex figure number, cross referencing +@cindex footnote number, cross referencing + +Synopsis: + +@example +\ref@{@var{key}@} +@end example + +The @code{\ref} command produces the number of the sectional unit, +equation, footnote, figure, @dots{}, of the corresponding +@code{\label} command (@pxref{\label}). It does not produce any text, +such as the word `Section' or `Figure', just the bare number itself. + + +@node Environments +@chapter Environments +@cindex environments + +@findex \begin +@findex \end + +@LaTeX{} provides many environments for marking off certain text. +Each environment begins and ends in the same manner: + +@example +\begin@{@var{envname}@} +... +\end@{@var{envname}@} +@end example + +@menu +* abstract:: Produce an abstract. +* array:: Math arrays. +* center:: Centred 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. +* 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. +@end menu + + +@node abstract +@section @code{abstract} + +@findex abstract @r{environment} +@cindex abstracts + +Synopsis: +@example +\begin@{abstract@} +... +\end@{abstract@} +@end example + +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}@}\\ +... +\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 that row should +be formatted, as follows: + +@table @code +@item c +centered +@item l +flush left +@item r +flush right +@end table + +@findex \\ (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{\\}. + +@findex @@@{...@} +In the template, the construct @code{@@@{@var{text}@}} puts @var{text} +between columns in each row. + +Here's an example: + +@example +\begin@{equation@} + \begin@{array@}@{lrc@} + left1 & right1 & centered1 \\ + left2 & right2 & centered2 \\ + \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} + +@findex center @r{environment} +@cindex centering text, environment for + +Synopsis: + +@example +\begin@{center@} +@var{line1} \\ +@var{line2} \\ +\end@{center@} +@end example + +@findex \\ (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{\\}. + +@menu +* \centering:: Declaration form of the @code{center} environment. +@end menu + + +@node \centering +@subsection @code{\centering} + +@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. + +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. + +Here's an example: + +@example +\begin@{quote@} +\centering +first line \\ +second line \\ +\end@{quote@} +@end example + + +@node description +@section @code{description} + +@findex description @r{environment} +@cindex labelled lists, creating +@cindex description lists, creating + +Synopsis: + +@example +\begin@{description@} +\item [@var{label1}] @var{item1} +\item [@var{label2}] @var{item2} +... +\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. + +@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@}]}. + +For details about list spacing, see @ref{itemize}. + + +@node displaymath +@section @code{displaymath} + +@findex displaymath @r{environment} + +Synopsis: +@example +\begin@{displaymath@} +@var{math} +\end@{displaymath@} +@end example + +@noindent or + +@example +\[@var{math}\] +@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}). + + +@node document +@section @code{document} + +@findex document @r{environment} + +The @code{document} environment encloses the body of a document. +It is required in every @LaTeX{} document. @xref{Starting & ending}. + + +@node enumerate +@section @code{enumerate} + +@findex enumerate @r{environment} +@cindex lists of items, numbered + +Synopsis: + +@example +\begin@{enumerate@} +\item @var{item1} +\item @var{item2} +... +\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}). + +@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. + +By default, the numbering at each level is done like this: + +@enumerate +@item 1., 2., @dots{} +@item (a), (b), @dots{} +@item i., ii., @dots{} +@item A., B., @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. + +@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: + +@findex \Alph @r{example} +@example +\renewcommand@{\labelenumi@}@{\Alph@{enumi@}@} +@end example + + + +@node eqnarray +@section @code{eqnarray} + +@findex eqnarray @r{environment} +@cindex equations, aligning +@cindex aligning Equations + +@example +\begin@{eqnarray@} @r{(or @code{eqnarray*})} +@var{formula1} \\ +@var{formula2} \\ +... +\end@{eqnarray@} +@end example + +@findex \\ (for @code{eqnarray}) +The @code{eqnarray} environment is used to display a sequence of +equations or inequalities. It is very much like a three-column +@code{array} environment, with consecutive rows separated by @code{\\} +and consecutive items within a row separated by an @code{&}. + +@findex \\* (for @code{eqnarray}) +@code{\\*} can also be used to separate equations, with its normal +meaning of not allowing a page break at that line. + +@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}. + +@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. + + +@node equation +@section @code{equation} + +@findex equation @r{environment} +@cindex equations, environment for +@cindex formulas, environment for + +Synopsis: + +@example +\begin@{equation@} +@var{math} +\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. + + +@node figure +@section @code{figure} +@findex figure +@cindex inserting figures +@cindex figures, inserting + +@example +\begin@{figure@}[@var{placement}] +@var{figbody} +\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. + +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: + +@enumerate +@item +@code{h} (Here) - at the position in the text where the figure +environment appears. +@item +@code{t} (Top) - at the top of a text page. +@item +@code{b} (Bottom) - at the bottom of a text page. +@item +@code{p} (Page of floats) - on a separate float page, which is a page +containing no text, only floats. +@end enumerate + +The standard report and article classes use the default placement +@code{tbp}. + +The body of the figure is made up of whatever text, @LaTeX{} commands, etc. +you wish. + +@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}). + +@c xx float-placement, float-caption sections? +@ftable @code +@findex \bottomfraction +The maximum fraction of the page allowed to be occuped by floats at +the bottom; default @samp{.3}. + +@item \floatpagefraction +The minimum fraction of a float page that must be occupied by floats; +default @samp{.5}. + +@item \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}. + +@item \textfraction +Minimum fraction of a page that must be text; if floats take up too +much space to preserve this much text, floats will be moved to a +different page. The default is @samp{.2}. + +@item \topfraction +Maximum fraction at the top of a page that may be occupied before +floats; default is @samp{.7}. + +@end ftable + + +@node flushleft +@section @code{flushleft} +@findex flushleft @r{environment} +@cindex left-justifying text, environment for +@cindex ragged right text, environment for + +@example +\begin@{flushleft@} +@var{line1} \\ +@var{line2} \\ +... +\end@{flushleft@} +@end example + +@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{\\}. + +@menu +* \raggedright:: Declaration form of the @code{flushleft} environment. +@end menu + + +@node \raggedright +@subsection @code{\raggedright} +@findex \raggedright +@cindex ragged right text +@cindex left-justifying text +@cindex justification, ragged right + +The @code{\raggedright} declaration corresponds to the +@code{flushleft} environment. This declaration can be used inside an +environment such as @code{quote} or in a @code{parbox}. + +Unlike the @code{flushleft} environment, the @code{\raggedright} +command does not start a new paragraph; it only 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 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 + +@example +\begin@{flushright@} +@var{line1} \\ +@var{line2} \\ +... +\end@{flushright@} +@end example + +@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{\\}. + +@menu +* \raggedleft:: Declaration form of the @code{flushright} environment. +@end menu + + +@node \raggedleft +@subsection @code{\raggedleft} +@findex \raggedleft +@cindex ragged left text +@cindex justification, ragged left +@cindex right-justifying text + +The @code{\raggedleft} declaration corresponds to the +@code{flushright} environment. This declaration can be used inside an +environment such as @code{quote} or in a @code{parbox}. + +Unlike the @code{flushright} environment, the @code{\raggedleft} +command does not start a new paragraph; it only 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 that ends the paragraph unit. + + +@node itemize +@section @code{itemize} +@findex itemize @r{environment} +@findex \item +@cindex lists of items +@cindex unordered lists +@cindex bulleted lists + +Synopsis: + +@example +\begin@{itemize@} +\item @var{item1} +\item @var{item2} +... +\end@{itemize@} +@end example + +The @code{itemize} environment produces an ``unordered'', ``bulleted'' +list. Itemizations can be nested within one another, up to four +levels deep. They can also be nested within other paragraph-making +environments, such as @code{enumerate} (@pxref{enumerate}). + +Each item of an @code{itemize} list begins with an @code{\item} command. +There must be at least one @code{\item} command within the environment. + +By default, the marks at each level look like this: + +@enumerate +@item @bullet{} +@item @b{-@w{-}} (bold en-dash) +@item * +@iftex +@item @math{\cdot} (centered dot) +@end iftex +@ifnottex +@item . (centered dot, rendered here as a period) +@end ifnottex +@end enumerate + +@findex \labelitemi +@findex \labelitemii +@findex \labelitemiii +@findex \labelitemiv +The @code{itemize} environment uses the commands @code{\labelitemi} +through @code{\labelitemiv} to produce the default label. So, you can +use @code{\renewcommand} to change the labels. For instance, to have +the first level use diamonds: + +@example +\renewcommand@{\labelitemi@}@{$\diamond$@} +@end example + +@findex \leftmargin +@findex \leftmargini +@findex \leftmarginii +@findex \leftmarginiii +@findex \leftmarginiv +@findex \leftmarginv +@findex \leftmarginvi +The @code{\leftmargini} through @code{\leftmarginvi} parameters define +the distance between the left margin of the enclosing environment and +the left margin of the list. By convention, @code{\leftmargin} is set +to the appropriate @code{\leftmargin@var{N}} when a new level of +nesting is entered. + +The defaults vary from @samp{.5em} (highest levels of nesting) to +@samp{2.5em} (first level), and are a bit reduced in two-column mode. +This example greatly reduces the margin space for outermost lists: + +@example +\setlength@{\leftmargini@}@{1.25em@} % default 2.5em +@end example + +@c xx should be in its own generic section +Some parameters that affect list formatting: + +@ftable @code +@item \itemindent +Extra indentation before each item in a list; default zero. + +@item \labelsep +Space between the label and text of an item; default @samp{.5em}. + +@item \labelwidth +Width of the label; default @samp{2em}, or @samp{1.5em} in two-column mode. + +@item \listparindent +Extra indentation added to second and subsequent paragraphs within a +list item; default @samp{0pt}. + +@item \rightmargin +Horizontal distance between the right margin of the list and the +enclosing environment; default @samp{0pt}, except in the @code{quote}, +@code{quotation}, and @code{verse} environments, where it is set equal +to @code{\leftmargin}. + +@end ftable + +Parameters affecting vertical spacing between list items (rather +loose, by default). + +@ftable @code +@item \itemsep +Vertical space between items. The default is @code{2pt plus1pt +minus1pt} for @code{10pt} documents, @code{3pt plus2pt minus1pt} for +@code{11pt}, and @code{4.5pt plus2pt minus1pt} for @code{12pt}. + +@item \parsep +Extra vertical space between paragraphs within a list item. Defaults +are the same as @code{\itemsep}. + +@item \topsep +Vertical space between the first item and the preceding paragraph. +The default is @code{4pt plus2pt minus2pt} for @code{10pt} documents, +@code{6pt plus2pt minus2pt} for @code{11pt}, and @code{9pt plus3pt +minus5pt} for @code{12pt}. + +@item \partopsep +Extra space added to @code{\topsep} when the list environment starts a +paragraph. The default is @code{2pt plus1pt minus1pt} for @code{10pt} +documents, @code{3pt plus1pt minus1pt} for @code{11pt}, and @code{3pt +plus2pt minus2pt} for @code{12pt}. + +@item \topsep +Extra vertical space added before an initial and after a final list +item. Its value is changed with list level and font size changes; for +instance, within a first-level list at @samp{10pt}, it is @samp{4pt +plus2pt minus2pt}. + +@end ftable + +@findex \parskip @r{example} +Especially for lists with short items, it may be desirable to elide +space between items. Here is an example defining an @code{itemize*} +environment with no extra spacing between items, or between paragraphs +within a single item (@code{\parskip} is not list-specific, +@pxref{\parskip}): + +@example +\newenvironment@{itemize*@}% + @{\begin@{itemize@}% + \setlength@{\itemsep@}@{0pt@}% + \setlength@{\parsep@}@{0pt@}@}% + \setlength@{\parskip@}@{0pt@}@}% + @{\end@{itemize@}@} +@end example + + +@node letter +@section @code{letter} environment: writing letters +@findex letter + +This environment is used for creating letters. @xref{Letters}. + + +@node list +@section @code{list} +@findex list +@cindex lists of items, generic + +The @code{list} environment is a generic environment which is used for +defining many of the more specific environments. It is seldom used in +documents, but often in macros. + +@example +\begin@{list@}@{@var{labeling}@}@{@var{spacing}@} +\item @var{item1} +\item @var{item2} +... +\end@{list@} +@end example + +The mandatory @var{labeling} argument specifies how items should be +labelled (unless the optional argument is supplied to @code{\item}). +This argument is a piece of text that is inserted in a box to form the +label. It can and usually does contain other @LaTeX{} commands. + +The mandatory @var{spacing} argument contains commands to change the +spacing parameters for the list. This argument will most often be +empty, i.e., @code{@{@}}, which leaves the default spacing. + + +@node math +@section @code{math} + +@findex math @r{environment} +@cindex in-line formulas + +Synopsis: + +@example +\begin@{math@} +@var{math} +\end@{math@} +@end example + +The @code{math} environment inserts the given @var{math} within the +running text. @code{\(...\))} and @code{$...$} are synonyms. +@xref{Math formulas}. + + +@node minipage +@section @code{minipage} + +@findex minipage @r{environment} +@cindex minipage, creating a + +@example +\begin@{minipage@}[@var{position}]@{@var{width}@} +@var{text} +\end@{minipage@} +@end example + +The @code{minipage} environment typesets its body @var{text} in a +block that will not be broken across pages (similar to the +@code{\parbox} command, @pxref{\parbox}). You may use other +paragraph-making environments inside a minipage (unlike @code{\parbox}). + +@c (xxref positions) +It takes an optional @var{position} argument for placing @var{text}, +and a mandatory @var{width} argument for specifying the line width. + +@cindex indentation of paragraphs, in minipage +@cindex paragraph indentation, in minipage +@findex \parindent +By default, paragraphs are not indented in the @code{minipage} +environment. You can restore indentation with a command such as +@code{\setlength@{\parindent@}@{1pc@}} command. + +@cindex footnotes in figures +@cindex figures, footnotes in +Footnotes in a @code{minipage} environment are handled in a way that is +particularly useful for putting footnotes in figures or tables. A +@code{\footnote} or @code{\footnotetext} command puts the footnote at +the bottom of the minipage instead of at the bottom of the page, and it +uses the @code{\mpfootnote} counter instead of the ordinary +@code{footnote} counter (@pxref{Counters}). + +However, don't put one minipage inside another if you are using +footnotes; they may wind up at the bottom of the wrong minipage. + + +@node picture +@section @code{picture} + +@findex picture +@cindex creating pictures +@cindex pictures, creating + +@example +\begin@{picture@}(width,height)(x offset,y offset) +@dots{} @var{picture commands} @dots{} +\end@{picture@} +@end example + +@findex \unitlength +The @code{picture} environment allows you to create just about any +kind of picture you want containing text, lines, arrows and circles. +You tell @LaTeX{} where to put things in the picture by specifying +their coordinates. A coordinate is a number that may have a decimal +point and a minus sign---a number like @code{5}, @code{0.3} or +@code{-3.1416}. A coordinate specifies a length in multiples of the +unit length @code{\unitlength}, so if @code{\unitlength} has been set +to @code{1cm}, then the coordinate 2.54 specifies a length of 2.54 +centimeters. You should only change the value of @code{\unitlength}, +using the @code{\setlength} command, outside of a @code{picture} +environment. + +A 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 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 +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 +@example + \begin@{picture@}(100,200)(10,20) +@end example +produces a picture of width 100 millimeters and height 200 +millimeters, whose lower-left corner is the point (10,20) and whose +upper-right corner is therefore the point (110,220). When you first +draw a picture, you will omit the optional argument, leaving the origin +at the lower-left corner. If you then want to modify your picture by +shifting everything, you just add the appropriate optional argument. + +The environment's mandatory argument determines the nominal size of the +picture. This need bear no relation to how large the picture really is; +@LaTeX{} will happily allow you to put things outside the picture, or even +off the page. The picture's nominal size is used by @LaTeX{} in determining +how much room to leave for it. + +Everything that appears in a picture is drawn by the @code{\put} +command. The command + +@example +\put (11.3,-.3)@{...@} +@end example + +@noindent puts the object specified by @code{...} in the +picture, with its reference point at coordinates @math{(11.3,-.3)}. +The reference points for various objects will be described below. + +@findex lR box +The @code{\put} command creates an @dfn{LR box}. You can put anything +that can go in an @code{\mbox} (@pxref{\mbox}) in the text argument of +the @code{\put} command. When you do this, the reference point will +be the lower left corner of the box. + +The @code{picture} commands are described in the following sections. + +@menu +* \circle:: Draw a circle. +* \makebox (picture):: Draw a box of the specified size. +* \framebox (picture):: Draw a box with a frame around it. +* \dashbox:: Draw a dashed box. +* \frame:: Draw a frame around an object. +* \line:: Draw a straight line. +* \linethickness:: Set the line thickness. +* \thicklines:: A heavier line thickness. +* \thinlines:: The default line thickness. +* \multiput:: Draw multiple instances of an object. +* \oval:: Draw an ellipse. +* \put:: Place an object at a specified place. +* \shortstack:: Make a pile of objects. +* \vector:: Draw a line with an arrow. +@end menu + + +@node \circle +@subsection @code{\circle} +@findex \circle + +@example +\circle[*]@{@var{diameter}@} +@end example + +The @code{\circle} command produces a circle with a diameter as close +to the specified one as possible. The @code{*}-form of the command +draws a solid circle. + +Circles up to 40 pt can be drawn. + + +@node \makebox (picture) +@subsection @code{\makebox} +@findex \makebox (picture) + +@code{\makebox(width,height)[position]@{...@}} + +The @code{\makebox} command for the picture environment is similar to +the normal @code{\makebox} command except that you must specify a +@code{width} and @code{height} in multiples of @code{\unitlength}. + +The optional argument, @code{[position]}, specifies the quadrant that +your text appears in. You may select up to two of the following: + +@itemize @bullet +@item +@code{t} - Moves the item to the top of the rectangle +@item +@code{b} - Moves the item to the bottom +@item +@code{l} - Moves the item to the left +@item +@code{r} - Moves the item to the right +@end itemize + +@xref{\makebox}. + + +@node \framebox (picture) +@subsection @code{\framebox} +@findex \framebox + +Synopsis: + +@example +\framebox(@var{width},@var{height})[@var{pos}]@{...@} +@end example + +The @code{\framebox} command is like @code{\makebox} (see previous +section), except that it puts a frame around the outside of the box +that it creates. + +@findex \fboxrule +@findex \fboxsep +The @code{\framebox} command produces a rule of thickness +@code{\fboxrule}, and leaves a space @code{\fboxsep} between the rule +and the contents of the box. + + +@node \dashbox +@subsection @code{\dashbox} + +@findex \dashbox + +Draws a box with a dashed line. Synopsis: + +@example +\dashbox@{@var{dlen}@}(@var{rwidth},@var{rheight})[@var{pos}]@{@var{text}@} +@end example + +@code{\dashbox} creates a dashed rectangle around @var{text} in a +@code{picture} environment. Dashes are @var{dlen} units long, and the +rectangle has overall width @var{rwidth} and height @var{rheight}. +The @var{text} is positioned at optional @var{pos}. @c xxref positions. + +A dashed box looks best when the @code{rwidth} and @code{rheight} are +multiples of the @code{dlen}. + + +@node \frame +@subsection @code{\frame} +@findex \frame + +Synopsis: + +@example +\frame@{@var{text}@} +@end example + +The @code{\frame} command puts a rectangular frame around @var{text}. +The reference point is the bottom left corner of the frame. No extra +space is put between the frame and the object. + + +@node \line +@subsection @code{\line} +@findex \line + +Synopsis: + +@example +\line(@var{xslope},@var{yslope})@{@var{length}@} +@end example + +The @code{\line} command draws a line with the given @var{length} and +slope @var{xslope}/@var{yslope}. + +Standard @LaTeX{} can only draw lines with @math{@var{slope} = x/y}, +where @math{x} and @math{y} have integer values from @minus{}6 +through@tie{}6. For lines of any slope, not to mention other shapes, +see the @code{curve2e} and many many other packages on CTAN. + + +@node \linethickness +@subsection @code{\linethickness} +@findex \linethickness + +The @code{\linethickness@{@var{dim}@}} command declares the thickness +of horizontal and vertical lines in a picture environment to be +@var{dim}, which must be a positive length. + +@code{\linethickness} does not affect the thickness of slanted lines, +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 +horizontal and vertical lines in a picture environment; +cf.@tie{}@ref{\linethickness} and @ref{\thinlines}. + + +@node \thinlines +@subsection @code{\thinlines} +@findex \thinlines + +The @code{\thinlines} command is the default line thickness for +horizontal and vertical lines in a picture environment; +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 + +The @code{\multiput} command copies the object @var{obj} in a regular +pattern across a picture. @var{obj} is first placed at position +@math{(x,y)}, then at @math{(x+\delta x,y+\delta y)}, and so on, +@var{n} times. + + +@node \oval +@subsection @code{\oval} +@findex \oval + +Synopsis: + +@example +\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 +oval via the following: + +@table @code +@item t +selects the top portion; +@item b +selects the bottom portion; +@item r +selects the right portion; +@item l +selects the left portion. +@end table + +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. + + +@node \put +@subsection @code{\put} + +@findex \put + +@code{\put(x coord,y coord)@{ ... @}} + +The @code{\put} command places the item specified by the mandatory +argument at the given coordinates. + + +@node \shortstack +@subsection @code{\shortstack} +@findex \shortstack + +Synopsis: + +@example +\shortstack[@var{position}]@{...\\...\\...@} +@end example + +The @code{\shortstack} command produces a stack of objects. The valid +positions are: + +@table @code +@item r +Move the objects to the right of the stack. +@item l +Move the objects to the left of the stack +@item c +Move the objects to the centre of the stack (default) +@end table + +@findex \\ @r{(for @code{\shortstack} objects)} +Objects are separated with @code{\\}. + + +@node \vector +@subsection @code{\vector} +@findex \vector + +Synopsis: + +@example +\vector(@var{x-slope},@var{y-slope})@{@var{length}@} +@end example + +The @code{\vector} command draws a line with an arrow of the specified +length and slope. The @math{x} and @math{y} values must lie between +@minus{}4 and +4, inclusive. + + +@node quotation +@section @code{quotation} + +@findex quotation +@cindex quoted text with paragraph indentation, displaying +@cindex displaying quoted text with paragraph indentation +@cindex paragraph indentations in quoted text + +Synopsis: + +@example +\begin@{quotation@} +@var{text} +\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 + +Snyopsis: + +@example +\begin@{quote@} +@var{text} +\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. + +Unlike the @code{quotation} environment, paragraphs are not indented. + + +@node tabbing +@section @code{tabbing} + +@findex tabbing @r{environment} +@cindex tab stops, using +@cindex lining text up in columns using tab stops +@cindex alignment via tabbing + +Synopsis: + +@example +\begin@{tabbing@} +@var{row1col1} \= @var{row1col2} \= @var{row1col3} \= @var{row1col4} \\ +@var{row2col1} \> \> @var{row2col3} \\ +... +\end@{tabbing@} +@end example + +The @code{tabbing} environment provides a way to align text in +columns. It works by setting tab stops and tabbing to them much as +was done on an ordinary typewriter. It is best suited for cases where +the width of each column is constant and known in advance. + +This environment can be broken across pages, unlike the @code{tabular} +environment. + +The following commands can be used inside a @code{tabbing} enviroment: + +@ftable @code +@item \\ @r{tabbing} +End a line. + +@item \= @r{(tabbing)} +Sets a tab stop at the current position. + +@item \> @r{(tabbing)} +@findex \> +Advances to the next tab stop. + +@item \< +Put following text to the left of the local margin (without changing +the margin). Can only be used at the start of the line. + +@item \+ +Moves the left margin of the next and all the +following commands one tab stop to the right, beginning tabbed line if +necessary. + +@item \- +Moves the left margin of the next and all the +following commands one tab stop to the left, beginning tabbed line if +necessary. + +@item \' @r{(tabbing)} +Moves everything that you have typed so far in the +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. + +@item \` @r{(tabbing)} +Allows you to put text flush right against any tab stop, including tab +stop@tie{}0. However, it can't move text to the right of the last column +because there's no tab stop there. The @code{\`} command moves all the +text that follows it, up to the @code{\\} or @code{\end@{tabbing@}} +command that ends the line, to the right margin of the tabbing +environment. There must be no @code{\>} or @code{\'} command between +the @code{\`} and the command that ends the line. + +@item \a @r{(tabbing)} +@findex \a' @r{(acute accent in tabbing)} +@findex \a` @r{(grave accent in tabbing)} +@findex \a= @r{(macron accent in tabbing)} +In a @code{tabbing} environment, the commands @code{\=}, @code{\'} and +@code{\`} do not produce accents as usual (@pxref{Accents}). Instead, +the commands @code{\a=}, @code{\a'} and @code{\a`} are used. + +@item \kill +Sets tab stops without producing text. Works just like @code{\\} +except that it throws away the current line instead of producing +output for it. The effect of any @code{\=}, @code{\+} or @code{\-} +commands in that line remain in effect. + +@item \poptabs +@findex \poptabs +Restores the tab stop positions saved by the last @code{\pushtabs}. + +@item \pushtabs +Saves all current tab stop positions. Useful for temporarily changing +tab stop positions in the middle of a @code{tabbing} environment. + +@item \tabbingsep +Distance to left of tab stop moved by @code{\'}. + +@end ftable + +This example typesets a Pascal function in a traditional format: + +@example +\begin@{tabbing@} +function \= fact(n : integer) : integer;\\ + \> begin \= \+ \\ + \> if \= n $>$ 1 then \+ \\ + fact := n * fact(n-1) \- \\ + else \+ \\ + fact := 1; \-\- \\ + end;\\ +\end@{tabbing@} +@end example + + +@node table +@section @code{table} + +@findex table +@cindex tables, creating +@cindex creating tables + +Synopsis: + +@example + \begin@{table@}[placement] + + body of the table + + \caption@{table title@} + \end@{table@} +@end example + +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 optional argument @code{[placement]} determines where @LaTeX{} will try +to place your table. There are four places where @LaTeX{} can possibly put +a float: + +@itemize @bullet +@item +@code{h}: Here - at the position in the text where the table +environment appears. +@item +@code{t}: Top - at the top of a text page. +@item +@code{b}: Bottom - at the bottom of a text page. +@item +@code{p}: Page of floats - on a separate float page, which is a page +containing no text, only floats. +@end itemize + +The standard @code{report} and @code{article} classes use the default +placement @code{[tbp]}. + +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. + + +@node tabular +@section @code{tabular} +@findex tabular @r{environment} +@cindex lines in tables +@cindex lining text up in tables + +Synopsis: + +@example +\begin@{tabular@}[pos]@{cols@} +column 1 entry & column 2 entry ... & column n entry \\ +... +\end@{tabular@} +@end example + + or + +@example +\begin@{tabular*@}@{width@}[pos]@{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. + +@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 mandatory and optional arguments consist of: + +@table @code +@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. +@item pos +Specifies the vertical position; default is alignment on the centre of +the environment. + +@itemize @bullet +@item +@code{t} - align on top row +@item +@code{b} - align on bottom row +@end itemize + +@item cols +Specifies the column formatting. It consists of a sequence of the +following specifiers, corresponding to the sequence of columns and +intercolumn material. + +@itemize @bullet + +@item +@code{l} - A column of left-aligned items. +@item +@code{r} - A column of right-aligned items. +@item +@code{c} - A column of centred items. +@item +@code{|} - A vertical line the full height and depth of the environment. +@item +@code{@@@{text@}} - This inserts @code{text} in every row. An @@-expression +suppresses the intercolumn space normally inserted between columns; any +desired space between the inserted text and the adjacent items must be +included in text. An @code{\extracolsep@{wd@}} command in an +@@-expression causes an extra space of width @code{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. +@item +@code{p@{wd@}} - Produces a column with each item typeset in a parbox of +width @code{wd}, as if it were the argument of a @code{\parbox[t]@{wd@}} +command. However, a @code{\\} may not appear in the item, except in the +following situations: +@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 +@item +@code{*@{num@}@{cols@}} - Equivalent to @code{num} copies of +@code{cols}, where @code{num} is any positive integer and @code{cols} is +any list of column-specifiers, which may contain another +@code{*-expression}. + +@end itemize + +@end table + +Parameters that control formatting: +@c xx defaults, own node (xref from array)? + +@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}. + +@item \arraystretch +Scaling of spacing between rows in the @code{tabular} and @code{array} +environments; default is @samp{1},for no scaling. + +@item \doublerulesep +Horizontal distance between the vertical rules produced by @code{||} +in the @code{tabular} and @code{array} environments; default is @samp{2pt}. + +@item \tabcolsep +Half the width of the space between columns; default is @samp{6pt}. + +@end ftable + +These commands can be used inside a @code{tabular} environment: + +@menu +* \multicolumn:: Make an item spanning several columns. +* \cline:: Draw a horizontal line spanning some columns. +* \hline:: Draw a horizontal line spanning all columns. +* \vline:: Draw a vertical line. +@end menu + + +@node \multicolumn +@subsection @code{\multicolumn} +@findex \multicolumn + +Synopsis: +@example +\multicolumn@{@var{cols}@}@{@var{pos}@}@{@var{text}@} +@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. + +Here's an example showing two columns separated by an en-dash; +@code{\multicolumn} is used for the heading: + +@example +\begin@{tabular@}@{r@@@{--@}l@} +\multicolumn@{2@}@{c@}@{\bf Unicode@}\cr + 0x80&0x7FF \cr + 0x800&0xFFFF \cr +0x10000&0x1FFFF \cr +\end@{tabular@} +@end example + + +@node \cline +@subsection @code{\cline} +@findex \cline + +Synopsis: + +@example +\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. + + +@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. + + +@node \vline +@subsection @code{\vline} +@findex \vline + +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. + + +@node thebibliography +@section @code{thebibliography} + +@findex thebibliography +@cindex bibliography, creating (manually) + +Synopsis: + +@example +\begin@{thebibliography@}@{@var{widest-label}@} +\bibitem[@var{label}]@{@var{cite_key@}} +... +\end@{thebibliography@} +@end example + +The @code{thebibliography} environment produces a bibliography or +reference list. + +In the @code{article} class, this reference list is labelled +``References''; in the @code{report} class, it is labelled +``Bibliography''. You can change the label (in the standard classes) +by redefining the command @code{\refname}. For instance, this +eliminates it entirely: + +@example +\renewcommand@{\refname@}@{@} +@end example + +The mandatory @var{widest-label} argument is text that, when typeset, +is as wide as the widest item label produced by the @code{\bibitem} +commands. It is typically given as @code{9} for bibliographies with +less than 10 references, @code{99} for ones with less than 100, etc. + +@menu +* \bibitem:: Specify a bibliography item. +* \cite:: Refer to a bibliography item. +* \nocite:: Include an item in the bibliography. +* Using BibTeX:: Automatic generation of bibliographies. +@end menu + + +@node \bibitem +@subsection @code{\bibitem} + +@findex \bibitem + +Synopsis: +@example +\bibitem[@var{label}]@{@var{cite_key}@} +@end example + +The @code{\bibitem} command generates an entry labelled by +@var{label}. If the @var{label} argument is missing, a number is +automatically generated using the @code{enumi} counter. The +@var{cite_key} is any sequence of letters, numbers, and punctuation +symbols not containing a comma. + +This command writes an entry to the @file{.aux} file containing the +item's @var{cite_key} and label. When the @file{.aux} file is read by +the @code{\begin@{document@}} command, the item's @code{label} is +associated with @code{cite_key}, causing references to @var{cite_key} +with a @code{\cite} command (see next section) to produce the +associated label. + + +@node \cite +@subsection @code{\cite} + +@findex \cite + +Synopsis: + +@example +\cite[@var{subcite}]@{@var{keys} +@end example + +The @var{keys} argument is a list of one or more citation keys, +separated by commas. This command generates an in-text citation to +the references associated with @var{keys} by entries in the +@file{.aux} file. + +The text of the optional @var{subcite} argument appears after the +citation. For example, @code{\cite[p.~314]@{knuth@}} might produce +`[Knuth, p.@tie{}314]'. + + +@node \nocite +@subsection @code{\nocite} +@findex \nocite + +@code{\nocite@{key_list@}} + +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. + + +@node Using BibTeX +@subsection Using Bib@TeX{} + +@cindex using Bib@TeX{} +@cindex bib@TeX{}, using +@cindex bibliography, creating (automatically) +@findex \bibliographystyle +@findex \bibliography + +If you use the Bib@TeX{} program by Oren Patashnik (highly +recommended if you need a bibliography of more than a couple of +titles) to maintain your bibliography, you don't use the +@code{thebibliography} environment (@pxref{thebibliography}). Instead, +you include the lines + +@example +\bibliographystyle@{@var{bibstyle}@} +\bibliography@{@var{bibfile1},@var{bibfile2}@} +@end example + +The @code{\bibliographystyle} command does not produce any output of +its own. Rather, it defines the style in which the bibliography will +be produced: @var{bibstyle} refers to a file +@var{bibstyle}@file{.bst}, which defines how your citations will look. +The standard @var{style} names distributed with Bib@TeX{} are: + +@table @code +@item alpha +Sorted alphabetically. Labels are formed from name of author and year of +publication. +@item plain +Sorted alphabetically. Labels are numeric. +@item unsrt +Like @code{plain}, but entries are in order of citation. +@item abbrv +Like @code{plain}, but more compact labels. +@end table + +In addition, numerous other Bib@TeX{} style files exist tailored to +the demands of various publications. See +@url{http://www.ctan.org/tex-archive/biblio/bibtex/contrib}. + +The @code{\bibliography} command is what actually produces the +bibliography. The argument to @code{\bibliography} refers to files +named @file{@var{bibfile}.bib}, which should contain your database in +Bib@TeX{} format. Only the entries referred to via @code{\cite} and +@code{\nocite} will be listed in the bibliography. + + +@node theorem +@section @code{theorem} + +@findex theorem @r{environment} +@cindex theorems, typesetting + +Synopsis: + +@example +\begin@{theorem@} +@var{theorem-text} +\end@{theorem@} +@end example + +The @code{theorem} environment produces ``Theorem @var{n}'' in +boldface followed by @var{theorem-text}, where the numbering +possibilities for @var{n} are described under @code{\newtheorem} +(@pxref{\newtheorem}). + + +@node titlepage +@section @code{titlepage} + +@findex titlepage @r{environment} +@cindex making a title page +@cindex title pages, creating + +Synopsis: + +@example +\begin@{titlepage@} +@var{text} +\end@{titlepage@} +@end example + +The @code{titlepage} environment creates a title page, i.e., a page +with no printed page number or heading. It also causes the following +page to be numbered page one. Formatting the title page is left to +you. The @code{\today} command may be useful on title pages +(@pxref{\today}). + +You can use the @code{\maketitle} command (@pxref{\maketitle}) to +produce a standard title page without a @code{titlepage} environment. + + +@node verbatim +@section @code{verbatim} + +@findex verbatim @r{environment} +@cindex verbatim text +@cindex simulating typed text +@cindex typed text, simulating +@cindex code, typesetting +@cindex computer programs, typesetting + +Synopsis: + +@example +\begin@{verbatim@} +@var{literal-text} +\end@{verbatim@} +@end example + +The @code{verbatim} environment is a paragraph-making environment in +which @LaTeX{} produces exactly what you type in; for instance the +@code{\} character produces a printed @samp{\}. It turns @LaTeX{} +into a typewriter with carriage returns and blanks having the same +effect that they would on a typewriter. + +The @code{verbatim} uses a monospaced typewriter-like font (@code{\tt}). + +@menu +* \verb:: The macro form of the @code{verbatim} environment. +@end menu + +@node \verb +@subsection @code{\verb} + +@findex \verb +@cindex verbatim text, inline + +Synopsis: + +@example +\verb@var{char}@var{literal-text}@var{char} +\verb*@var{char}@var{literal-text}@var{char} +@end example + +The @code{\verb} command typesets @var{literal-text} as it is input, +including special characters and spaces, using the typewriter +(@code{\tt}) font. No spaces are allowed between @code{\verb} or +@code{\verb*} and the delimiter @var{char}, which begins and ends the +verbatim text. The delimiter must not appear in @var{literal-text}. + +@cindex visible space +The @code{*}-form differs only in that spaces are printed with a +``visible space'' character. +@tex +(Namely, {\tt\char`\ }.) +@end tex + + +@node verse +@section @code{verse} + +@findex verse @r{environment} +@cindex poetry, an environment for + +Synopsis: + +@example +\begin@{verse@} +@var{line1} \\ +@var{line2} \\ +... +\end@{verse@} +@end example + +The @code{verse} environment is designed for poetry, though you may find +other uses for it. + +@findex \\ @r{for @code{verse}} +The margins are indented on the left and the right, paragraphs are not +indented, and the text is not justified. Separate the lines of each +stanza with @code{\\}, and use one or more blank lines to separate the +stanzas. + + +@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. + +@menu +* \footnote:: Insert a footnote. +* \footnotemark:: Insert footnote mark only. +* \footnotetext:: Insert footnote text only. +* Footnote parameters:: Parameters for footnote formatting. +@end menu + + +@node \footnote +@section @code{\footnote} +@findex \footnote + +Synopsis: + +@example +\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. + +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.) +@c xx mention packages that fix this + + +@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. + +This command can be used to produce several consecutive footnote +markers referring to the same footnote with + +@example +\footnotemark[\value@{footnote@}] +@end example + +after the first @code{\footnote} command. + + +@node \footnotetext +@section @code{\footnotetext} +@findex \footnotetext + +Synopsis: + +@example +\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. + +The optional argument @var{number} changes the default footnote number. + + +@node Footnote parameters +@section Footnote parameters + +@cindex footnote parameters + +@ftable @code +@item \footnoterule +Produces the rule separating the main text on a page from the page's +footnotes. Default dimensions: @code{0.4pt} thick (or wide), and +@code{0.4\columnwidth} long in the standard document classes (except +slides, where it does not appear). + +@item \footnotesep +The height of the strut placed at the beginning of the footnote. By +default, this is set to the normal strut for @code{\footnotesize} +fonts (@pxref{Font sizes}), therefore there is no extra space between +footnotes. This is @samp{6.65pt} for @samp{10pt}, @samp{7.7pt} for +@samp{11pt}, and @samp{8.4pt} for @samp{12pt}. + +@end ftable + + +@node Definitions +@chapter Definitions +@cindex definitions + +@LaTeX{} has support for making new commands of many different kinds. + +@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 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 defining a new command +@cindex new commands, defining + +@code{\newcommand} and @code{\renewcommand} define and redefine a +command, respectively. Synopses: + +@example + \newcommand@{@var{cmd}@}[@var{nargs}]@{@var{defn}@} +\renewcommand@{@var{cmd}@}[@var{nargs}]@{@var{defn}@} + \newcommand@{@var{cmd}@}[@var{nargs}][@var{default}]@{@var{defn}@} +\renewcommand@{@var{cmd}@}[@var{nargs}][@var{default}]@{@var{defn}@} +@end example + + +@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. + +@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 default +If this optional parameter is present, it means that the command's +first argument is optional. When the new command is called, the +default value of the optional argument (i.e., if it is not specified +in the call) is the string @samp{def}. + +@item defn +The text to be substituted for every occurrence of @code{cmd}; a +construct of the form @code{#@var{n}} in @var{defn} is replaced by the +text of the @var{n}th argument. + +@end table + + +@node \newcounter +@section @code{\newcounter} +@findex \newcounter +@cindex counters, defining new + +Synopsis: + +@example +\newcounter@{@var{cnt}@}[@var{countername}] +@end example + +The @code{\newcounter} command defines a new counter named @var{cnt}. +The new counter is initialized to zero. + +Given the optional argument @code{[@var{countername}]}, @var{cnt} +will be reset whenever @var{countername} is incremented. + +@xref{Counters}, for more information about counters. + + +@node \newlength +@section @code{\newlength} +@findex \newlength +@cindex lengths, defining new + +Synopsis: + +@example +\newlength@{\@var{arg}@} +@end example + +The @code{\newlength} command defines the mandatory argument as a +@code{length} command with a value of @code{0in}. The argument must +be a control sequence, as in @code{\newlength@{\foo@}}. An error +occurs if @code{\foo} is already defined. + +@xref{Lengths}, for how to set the new length to a nonzero value, and +for more information about lengths in general. + + +@node \newsavebox +@section @code{\newsavebox} +@findex \newsavebox + +Synopsis: + +@example +\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. + + +@node \newenvironment & \renewenvironment +@section @code{\newenvironment} & @code{\renewenvironment} +@findex \newenvironment +@findex \renewenvironment +@cindex environments, defining +@cindex defining new environments +@cindex redefining environments + +Synopses: + +@example + \newenvironment@{@var{env}@}[@var{nargs}]@{@var{begdef}@}@{@var{enddef}@} + \newenvironment@{@var{env}@}[@var{nargs}][@var{default}]@{@var{begdef}@}@{@var{enddef}@} +\renewenvironment@{@var{env}@}[@var{nargs}]@{@var{begdef}@}@{@var{enddef}@} +@end example + +These commands define or redefine an environment @var{env}, that is, +@code{\begin@{@var{env}@} @dots{} \end@{@var{env}@}}. + +@table @var +@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. + +@item nargs +An integer from 1 to 9 denoting the number of arguments of +the newly-defined environment. The default is no arguments. + +@item default +If this is specified, the first argument is optional, and @var{default} +gives the default value for that argument. + +@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. + +@item enddef +The text expanded at every occurrence of @code{\end@{@var{env}@}}. It +may not contain any argument parameters. + +@end table + + +@node \newtheorem +@section @code{\newtheorem} +@findex \newtheorem +@cindex theorems, defining +@cindex defining new theorems + +@example +\newtheorem@{@var{newenv}@}@{@var{label}@}[@var{within}] +\newtheorem@{@var{newenv}@}[@var{numbered_like}]@{@var{label}@} +@end example + +This command defines a theorem-like environment. 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 label +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 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. + +@end table + +At most one of @var{numbered_like} and @var{within} can be specified, +not both. + + +@node \newfont +@section @code{\newfont} +@findex \newfont +@cindex fonts, new commands for +@cindex defining new fonts + +Synopsis: + +@example +\newfont@{@var{cmd}@}@{@var{fontname}@} +@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 is a low-level command for setting up to use an individual font. +More commonly, fonts are defined in families through @file{.fd} files. + + +@node \protect +@section @code{\protect} +@findex \protect + +@cindex fragile 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}. + +See also: + +@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 + +@c xx really need examples. + + +@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. + +@example +part paragraph figure enumi +chapter subparagraph table enumii +section page footnote enumiii +subsection equation mpfootnote enumiv +subsubsection +@end example + +@menu +* \alph \Alph \arabic \roman \Roman \fnsymbol:: Print value of a counter. +* \usecounter:: Use a specified counter in a list environment. +* \value:: Use the value of a counter in an expression. +* \setcounter:: Set the value of a counter. +* \addtocounter:: Add a quantity to a counter. +* \refstepcounter:: Add to counter, resetting subsidiary counters. +* \stepcounter:: Add to counter, resetting subsidiary counters. +* \day \month \year:: Numeric date values. +@end menu + + +@node \alph \Alph \arabic \roman \Roman \fnsymbol +@section @code{\alph \Alph \arabic \roman \Roman \fnsymbol}: Printing counters + +All of these commands take a single counter as an argument, for +instance, @code{\alph@{enumi@}}. + +@ftable @code +@item \alph +prints @var{counter} using lowercase letters: `a', `b', @enddots{} + +@item \Alph +uses uppercase letters: `A', `B', @enddots{} + +@item \arabic +uses Arabic numbers: `1', `2', @enddots{} + +@item \roman +uses lowercase roman numerals: `i', `ii', @enddots{} + +@item \roman +uses uppercase roman numerals: `I', `II', @enddots{} + +@item \fnsymbol +prints the value of @var{counter} in a specific sequence of nine +symbols (conventionally used for labeling footnotes). The value of +@var{counter} must be between@tie{}1 and@tie{}9, inclusive. + +@tex +Here are the symbols: +$\ast$ $\dagger$ $\ddagger$ $\S$ $\P$ $\parallel$ +$\ast\ast$ $\dagger\dagger$ $\ddagger\ddagger$ +@end tex +@ifnottex +The symbols mostly aren't supported in Info, but here are the names: +@display +asterix(*) dagger ddagger section-sign paragraph-sign parallel +double-asterix(**) double-dagger double-ddagger +@end display +@end ifnottex + +@end ftable + + +@node \usecounter +@section @code{\usecounter@{@var{counter}@}} +@findex \usecounter +@cindex list items, specifying counter +@cindex numbered items, specifying counter + +Synopsis: + +@example +\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. + + +@node \value +@section @code{\value@{@var{counter}@}} +@findex \value +@cindex counters, getting value of + +Synopsis: + +@example +\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: + +@example +\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 + +Synopsis: + +@example +\setcounter@{@var{\counter}@}@{@var{value}@} +@end example + +The @code{\setcounter} command sets the value of @var{\counter} to the +@var{value} argument. + + +@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. + + +@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}. + + +@node \stepcounter +@section @code{\stepcounter@{@var{counter}@}} +@findex \stepcounter + +The @code{\stepcounter} command adds one to @var{counter} and +resets all subsidiary counters. + + +@node \day \month \year +@section @code{\day \month \year}: Predefined counters +@findex \day +@findex \month +@findex \year + +@LaTeX{} defines counters for the day of the month (@code{\day}, +1--31), month of the year (@code{\month}, 1--12), and year +(@code{\year}, Common Era). When @TeX{} starts up, they are +set to the current values on the system where @TeX{} is running. They +are not updated as the job progresses. + +The related command @code{\today} produces a string representing the +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 +length as an argument. + +@menu +* \setlength:: Set the value of a length. +* \addtolength:: Add a quantity to a length. +* \settodepth:: Set a length to the depth of something. +* \settoheight:: Set a length to the height of something. +* \settowidth:: Set a length to the width of something. +* Predefined lengths:: Lengths that are, like, predefined. +@end menu + + +@node \setlength +@section @code{\setlength@{\@var{len}@}@{@var{value}@}} +@findex \setlength +@cindex lengths, setting + +The @code{\setlength} sets the value of @var{\len} to the @var{value} +argument, which can be expressed in any units that @LaTeX{} +understands, i.e., inches (@code{in}), millimeters (@code{mm}), points +(@code{pt}), big points (@code{bp}, etc. + + +@node \addtolength +@section \addtolength@{@var{\len}@}@{@var{amount}@} +@findex \addtolength +@cindex lengths, adding to + +The @code{\addtolength} command increments a ``length command'' +@var{\len} by the amount specified in the @var{amount} argument, which +may be negative. + + +@node \settodepth +@section @code{\settodepth} +@findex \settodepth + +@code{\settodepth@{\gnat@}@{text@}} + +The @code{\settodepth} command sets the value of a @code{length} command +equal to the depth of the @code{text} argument. + + +@node \settoheight +@section @code{\settoheight} +@findex \settoheight + +@code{\settoheight@{\gnat@}@{text@}} + +The @code{\settoheight} command sets the value of a @code{length} command +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} +to the width of the @var{text} argument. + + + +@node Predefined lengths +@section Predefined lengths +@cindex lengths, predefined +@cindex predefined lengths + +@code{\width} +@findex \width + +@code{\height} +@findex \height + +@code{\depth} +@findex \depth + +@code{\totalheight} +@findex \totalheight + +These length parameters can be used in the arguments of the box-making +commands (@pxref{Boxes}). They specify the natural width etc. of the +text in the box. @code{\totalheight} equals @code{\height} + +@code{\depth}. To make a box with the text stretched to double the +natural size, e.g., say + +@code{\makebox[2\width]@{Get a stretcher@}} + + +@node Line breaking +@chapter Line breaking +@cindex line breaking +@cindex breaking lines + +The first thing @LaTeX{} does when processing ordinary text is to +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. + +@menu +* \\:: Start a new line. +* \obeycr & \restorecr:: Make each input line start a new output line. +* \newline:: Break the line +* \- (hyphenation):: Insert explicit hyphenation. +* \fussy:: Be fussy about line breaking. +* \hyphenation:: Tell @LaTeX{} how to hyphenate a word. +* \linebreak & \nolinebreak:: Forcing & avoiding line breaks. +* \sloppy:: Be sloppy about line breaking. +@end menu + + +@node \\ +@section @code{\\}[*][@var{morespace}] +@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. + +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. + + +@node \obeycr & \restorecr +@section @code{\obeycr} & @code{\restorecr} +@findex \obeycr +@findex \restorecr +@cindex new line, output as input + +The @code{\obeycr} command makes a return in the input file +(@samp{^^M}, internally) the same as @code{\\} (followed by +@code{\relax}). So each new line in the input will also be a new line +in the output. + +@code{\restorecr} restores normal line-breaking behavior. + + +@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. + + +@node \- (hyphenation) +@section @code{\-} (discretionary hyphen) +@findex \- @r{(hyphenation)} +@cindex hyphenation, forcing + +The @code{\-} command tells @LaTeX{} that it may hyphenate the word at +that point. @LaTeX{} is very good at hyphenating, and it will usually +find most of the correct hyphenation points, and almost never use an +incorrect one. The @code{\-} command is used for the exceptional +cases. + +When you insert @code{\-} commands in a word, the word will only be +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{} +picky about line breaking. This usually avoids too much space between +words, at the cost of an occasional overfull box. + +This command cancels the effect of a previous @code{\sloppy} command +(@pxref{\sloppy}. + + +@node \sloppy +@section @code{\sloppy} + +The declaration @code{\sloppy} makes @TeX{} less fussy about line +breaking. This will avoid overfull boxes, at the cost of loose +interword spacing. + +Lasts until a @code{\fussy} command is issued (@pxref{\fussy}). + + +@node \hyphenation +@section @code{\hyphenation} +@findex \hyphenation +@cindex hyphenation, defining + +Synopsis: + +@example +\hyphenation@{@var{word-one} @var{word-two}@} +@end example + +The @code{\hyphenation} command declares allowed hyphenation points +with a @code{-} character in the given words. The words are separated +by spaces. @TeX{} will only hyphenate if the word matches exactly, no +inflections are tried. Multiple @code{\hyphenation} commands +accumulate. Some examples (the default @TeX{} hyphenation patterns +misses the hyphenations in these words): + +@example +\hyphenation@{ap-pen-dix col-umns data-base data-bases@} +@end example + + +@node \linebreak & \nolinebreak +@section @code{\linebreak} & @code{\nolinebreak} +@findex \linebreak +@findex \nolinebreak +@cindex line breaks, forcing +@cindex line breaks, preventing + +Synopses: + +@example +\linebreak[@var{priority}] +\nolinebreak[@var{priority}] +@end example + +By default, the @code{\linebreak} (@code{\nolinebreak}) command forces +(prevents) a line break at the current position. For +@code{\linebreak}, the spaces in the line are stretched out so that it +extends to the right margin as usual. + +With the optional argument @var{priority}, you can convert the command +from a demand to a request. The @var{priority} must be a number from +0 to@tie{}4. The higher the number, the more insistent the request. + + +@node Page breaking +@chapter Page breaking +@cindex page breaking +@cindex breaking pages + +@LaTeX{} starts new pages asynchronously, when enough material has +accumulated to fill up a page. Usually this happens automatically, +but sometimes you may want to influence the breaks. + +@menu +* \cleardoublepage:: Start a new right-hand page. +* \clearpage:: Start a new page. +* \newpage:: Start a new page. +* \enlargethispage:: Enlarge the current page a bit. +* \pagebreak & \nopagebreak:: Forcing & avoiding page breaks. +@end menu + + +@node \cleardoublepage +@section @code{\cleardoublepage} + +@findex \cleardoublepage +@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. + + +@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. + + +@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). + + +@node \enlargethispage +@section @code{\enlargethispage} +@findex \enlargethispage +@cindex enlarge current page + +@code{\enlargethispage@{size@}} + +@code{\enlargethispage*@{size@}} + +Enlarge the @code{\textheight} for the current page by the specified +amount; e.g. @code{\enlargethispage@{\baselineskip@}} will allow one +additional line. + +The starred form tries to squeeze the material together on the page as +much as possible. This is normally used together with an explicit +@code{\pagebreak}. + + +@node \pagebreak & \nopagebreak +@section @code{\pagebreak} & @code{\nopagebreak} +@findex \pagebreak +@findex \nopagebreak +@cindex page break, forcing +@cindex page break, preventing + +Synopses: + +@example +\pagebreak[@var{priority}] +\nopagebreak[@var{priority}] +@end example + +By default, the @code{\pagebreak} (@code{\nopagebreak}) command forces +(prevents) a page break at the current position. For +@code{\linebreak}, the vertical space on the page is stretched out +where possible so that it extends to the normal bottom margin. + +With the optional argument @var{priority}, you can convert the +@code{\pagebreak} command from a demand to a request. The number must +be a number from 0 to@tie{}4. The higher the number, the more +insistent the request is. + + +@node Making paragraphs +@chapter Making paragraphs +@cindex making paragraphs +@cindex paragraphs + +A paragraph is ended by one or more completely blank lines---lines not +containing even a @code{%}. A blank line should not appear where a new +paragraph cannot be started, such as in math mode or in the argument of +a sectioning command. + +@menu +* \indent:: Indent this paragraph. +* \noindent:: Do not indent this paragraph. +* \parskip:: Space added before paragraphs. +* Marginal notes:: Putting remarks in the margin. +@end menu + + +@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. + +The default value for @code{\parindent} is @code{1em} in two-column +mode, otherwise @code{15pt} for @code{10pt} documents, @code{17pt} for +@code{11pt}, and @code{1.5em} for @code{12pt}. + + +@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. + + +@node \parskip +@section @code{\parskip} +@findex \parskip +@cindex vertical space before paragraphs + +@code{\parskip} is a rubber length defining extra vertical space added +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 +@findex \marginpar + +Synopsis: + +@example +\marginpar[@var{left}]@{@var{right}@} +@end example + +The @code{\marginpar} command creates a note in the margin. The first +line of the note will have the same baseline as the line in the text +where the @code{\marginpar} occurs. + +When you only specify the mandatory argument @var{right}, the text +will be placed + +@itemize @bullet +@item +in the right margin for one-sided layout; +@item +in the outside margin for two-sided layout; +@item +in the nearest margin for two-column layout. +@end itemize + +@findex \reversemarginpar +@findex \normalmarginpar +The command @code{\reversemarginpar} places subsequent marginal notes +in the opposite (inside) margin. @code{\normalmarginpar} places them +in the default position. + +When you specify both arguments, @var{left} is used for the left +margin, and @var{right} is used for the right margin. + +The first word will normally not be hyphenated; you can enable +hyphenation there by beginning the node with @code{\hspace@{0pt@}}. + +These parameters affect the formatting of the note: + +@ftable @code +@item \marginparpush +Minimum vertical space between notes; default @samp{7pt} for +@samp{12pt} documents, @samp{5pt} else. + +@item \marginparsep +Horizontal space between the main text and the note; default +@samp{11pt} for @samp{10pt} documents, @samp{10pt} else. + +@item \marginparwidth +Width of the note itself; default for a one-sided @samp{10pt} document +is @samp{90pt}, @samp{83pt} for @samp{11pt}, and @samp{68pt} for +@samp{12pt}; @samp{17pt} more in each case for a two-sided document. +In two column mode, the default is @samp{48pt}. + +@end ftable + + +@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 +@item math +For formulas that appear right in the text. +@item displaymath +For formulas that appear on their own line. +@item equation +The same as the displaymath environment except that it adds an equation +number in the right margin. +@end table + +@findex \( +@findex \) +@findex \[ +@findex \] +The @code{math} environment can be used in both paragraph and LR mode, +but the @code{displaymath} and @code{equation} environments can be used +only in paragraph mode. The @code{math} and @code{displaymath} +environments are used so often that they have the following short forms: + +@example +\(...\) @r{instead of} \begin@{math@}...\end@{math@} +\[...\] @r{instead of} \begin@{displaymath@}...\end@{displaymath@} +@end example + +@findex $ +In fact, the @code{math} environment is so common that it has an even +shorter form: + +@example +$ ... $ @r{instead of} \(...\) +@end example + +@findex \boldmath +@findex \unboldmath +The @code{\boldmath} command changes math letters and symbols to be in +a bold font. It is used @emph{outside} of math mode. Conversely, the +@code{\unboldmath} command changes math glyphs to be in a normal font; +it too is used @emph{outside} of math mode. + +@c xx own section? Math fonts? +@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 +@example +$\displaystyle \sum_@{n=0@}^\infty x_n $ +@end example + +@c xx see also \cal, \mathcal + +@menu +* Subscripts & Superscripts:: Also known as exponent or index. +* Math symbols:: Various mathematical squiggles. +* Math functions:: Math function names like sin and exp. +* Math accents:: Accents in math. +* Spacing in math mode:: Thick, medium, thin and negative spaces. +* Math Miscellany:: Stuff that doesn't fit anywhere else. +@end menu + + +@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. + + +@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. +For example, if you include @code{$\pi$} in your source, you will get +the pi symbol (@math{\pi}) in your output. + +@ftable @code +@item \| +@math{\|} + +@item \aleph +@math{\aleph} + +@item \alpha +@math{\alpha} + +@item \amalg +@math{\amalg} (binary operation) + +@item \angle +@math{\angle} + +@item \approx +@math{\approx} (relation) + +@item \ast +@math{\ast} (binary operation) + +@item \asymp +@math{\asymp} (relation) + +@item \backslash +\ (delimiter) + +@item \beta +@math{\beta} + +@item \bigcap +@math{\bigcap} + +@item \bigcirc +@math{\bigcirc} (binary operation) + +@item \bigcup +@math{\bigcup} + +@item \bigodot +@math{\bigodot} + +@item \bigoplus +@math{\bigoplus} + +@item \bigotimes +@math{\bigotimes} + +@item \bigtriangledown +@math{\bigtriangledown} (binary operation) + +@item \bigtriangleup +@math{\bigtriangleup} (binary operation) + +@item \bigsqcup +@math{\bigsqcup} + +@item \biguplus +@math{\biguplus} + +@item \bigcap +@math{\bigvee} + +@item \bigwedge +@math{\bigwedge} + +@item \bot +@math{\bot} + +@item \bowtie +@math{\bowtie} (relation) + +@item \Box +(square open box symbol) @c xx not in plain + +@item \bullet +@cindex bullet symbol +@math{\bullet} (binary operation) + +@item \cap +@math{\cap} (binary operation) + +@item \cdot +@math{\cdot} (binary operation) + +@item \chi +@math{\chi} + +@item \circ +@math{\circ} (binary operation) + +@item \clubsuit +@math{\clubsuit} + +@item \cong +@math{\cong} (relation) + +@item \coprod +@math{\coprod} + +@item \cup +@math{\cup} (binary operation) + +@item \dagger +@math{\dagger} (binary operation) + +@item \dashv +@math{\dashv} (relation) + +@item \ddagger +@math{\dagger} (binary operation) + +@item \Delta +@math{\Delta} + +@item \delta +@math{\delta} + +@item \Diamond +bigger @math{\diamond} @c xx not in plain + +@item \diamond +@math{\diamond} (binary operation) + +@item \diamondsuit +@math{\diamondsuit} + +@item \div +@math{\div} (binary operation) + +@item \doteq +@math{\doteq} (relation) + +@item \downarrow +@math{\downarrow} (delimiter) + +@item \Downarrow +@math{\Downarrow} (delimiter) + +@item \ell +@math{\ell} + +@item \emptyset +@math{\emptyset} + +@item \epsilon +@math{\epsilon} + +@item \equiv +@math{\equiv} (relation) + +@item \eta +@math{\eta} + +@item \exists +@math{\exists} + +@item \flat +@math{\flat} + +@item \forall +@math{\forall} + +@item \frown +@math{\frown} (relation) + +@item \Gamma +@math{\Gamma} + +@item \gamma +@math{\gamma} + +@item \ge +@math{\ge} + +@item \geq +@math{\geq} (relation) + +@item \gets +@math{\gets} + +@item \gg +@math{\gg} (relation) + +@item \hbar +@math{\hbar} + +@item \heartsuit +@math{\heartsuit} + +@item \hookleftarrow +@math{\hookleftarrow} + +@item \hookrightarrow +@math{\hookrightarrow} + +@item \iff +@math{\iff} + +@item \Im +@math{\Im} + +@item \in +@math{\in} (relation) + +@item \infty +@math{\infty} + +@item \int +@math{\int} + +@item \iota +@math{\iota} + +@item \Join +condensed bowtie symbol (relation) @c xx not in plain + +@item \kappa +@math{\kappa} + +@item \Lambda +@math{\Lambda} + +@item \lambda +@math{\lambda} + +@item \land +@math{\land} + +@item \langle +@math{\langle} (delimiter) + +@item \lbrace +@math{\lbrace} (delimiter) + +@item \lbrack +@math{\lbrack} (delimiter) + +@item \lceil +@math{\lceil} (delimiter) + +@item \le +@math{\le} + +@item \leadsto +@c xx missing from plain + +@item \Leftarrow +@math{\Leftarrow} + +@item \leftarrow +@math{\leftarrow} + +@item \leftharpoondown +@math{\leftharpoondown} + +@item \leftharpoonup +@math{\leftharpoonup} + +@item \Leftrightarrow +@math{\Leftrightarrow} + +@item \leftrightarrow +@math{\leftrightarrow} + +@item \leq +@math{\leq} (relation) + +@item \lfloor +@math{\lfloor} (delimiter) + +@item \lhd +(left-pointing arrow head) @c xx not in plain + +@item \ll +@math{\ll} (relation) + +@item \lnot +@math{\lnot} + +@item \longleftarrow +@math{\longleftarrow} + +@item \longleftrightarrow +@math{\longleftrightarrow} + +@item \longmapsto +@math{\longmapsto} + +@item \longrightarrow +@math{\longrightarrow} + +@item \lor +@math{\lor} + +@item \mapsto +@math{\mapsto} + +@item \mho +@c xx not in plain + +@item \mid +@math{\mid} (relation) + +@item \models +@math{\models} (relation) + +@item \mp +@math{\mp} (binary operation) + +@item \mu +@math{\mu} + +@item \nabla +@math{\nabla} + +@item \natural +@math{\natural} + +@item \ne +@math{\ne} + +@item \nearrow +@math{\nearrow} + +@item \neg +@math{\neg} + +@item \neq +@math{\neq} (relation) + +@item \ni +@math{\ni} (relation) + +@item \not +Overstrike a following operator with a /, as in @math{\not=}. + +@item \notin +@math{\ni} + +@item \nu +@math{\nu} + +@item \nwarrow +@math{\nwarrow} + +@item \odot +@math{\odot} (binary operation) + +@item \oint +@math{\oint} + +@item \Omega +@math{\Omega} + +@item \omega +@math{\omega} + +@item \ominus +@math{\ominus} (binary operation) + +@item \oplus +@math{\oplus} (binary operation) + +@item \oslash +@math{\oslash} (binary operation) + +@item \otimes +@math{\otimes} (binary operation) + +@item \owns +@math{\owns} + +@item \parallel +@math{\parallel} (relation) + +@item \partial +@math{\partial} + +@item \perp +@math{\perp} (relation) + +@item \phi +@math{\phi} + +@item \Pi +@math{\Pi} + +@item \pi +@math{\pi} + +@item \pm +@math{\pm} (binary operation) + +@item \prec +@math{\prec} (relation) + +@item \preceq +@math{\preceq} (relation) + +@item \prime +@math{\prime} + +@item \prod +@math{\prod} + +@item \propto +@math{\propto} (relation) + +@item \Psi +@math{\Psi} + +@item \psi +@math{\psi} + +@item \rangle +@math{\rangle} (delimiter) + +@item \rbrace +@math{\rbrace} (delimiter) + +@item \rbrack +@math{\rbrack} (delimiter) + +@item \rceil +@math{\rceil} (delimiter) + +@item \Re +@math{\Re} + +@item \rfloor +@math{\rfloor} + +@item \rhd +(binary operation) @c xx not in plain @math{\rhd} + +@item \rho +@math{\rho} + +@item \Rightarrow +@math{\Rightarrow} + +@item \rightarrow +@math{\rightarrow} + +@item \rightharpoondown +@math{\rightharpoondown} + +@item \rightharpoonup +@math{\rightharpoonup} + +@item \rightleftharpoons +@math{\rightleftharpoons} + +@item \searrow +@math{\searrow} + +@item \setminus +@math{\setminus} (binary operation) + +@item \sharp +@math{\sharp} + +@item \Sigma +@math{\Sigma} + +@item \sigma +@math{\sigma} + +@item \sim +@math{\sim} (relation) + +@item \simeq +@math{\simeq} (relation) + +@item \smallint +@math{\smallint} + +@item \smile +@math{\smile} (relation) + +@item \spadesuit +@math{\spadesuit} + +@item \sqcap +@math{\sqcap} (binary operation) + +@item \sqcup +@math{\sqcup} (binary operation) + +@item \sqsubset +(relation) @c not in plain (@math{\sqsubset}) + +@item \sqsubseteq +@math{\sqsubseteq} (relation) + +@item \sqsupset +(relation) @c not in plain (@math{\sqsupset}) + +@item \sqsupseteq +@math{\sqsupseteq} (relation) + +@item \star +@math{\star} (binary operation) + +@item \subset +@math{\subset} (relation) + +@item \subseteq +@math{\subseteq} (relation) + +@item \succ +@math{\succ} (relation) + +@item \succeq +@math{\succeq} (relation) + +@item \sum +@math{\sum} + +@item \supset +@math{\supset} (relation) + +@item \supseteq +@math{\supseteq} (relation) + +@item \surd +@math{\surd} + +@item \swarrow +@math{\swarrow} + +@item \tau +@math{\tau} + +@item \theta +@math{\theta} + +@item \times +@math{\times} (binary operation) + +@item \to +@math{\to} + +@item \top +@math{\top} + +@item \triangle +@math{\triangle} + +@item \triangleleft +@math{\triangleleft} (binary operation) + +@item \triangleright +@math{\triangleright} (binary operation) + +@item \unlhd +left-pointing arrowhead with line under (binary operation) @c not in plain + +@item \unrhd +right-pointing arrowhead with line under (binary operation) @c not in plain + +@item \Uparrow +@math{\Uparrow} (delimiter) + +@item \uparrow +@math{\uparrow} (delimiter) + +@item \Updownarrow +@math{\Updownarrow} (delimiter) + +@item \updownarrow +@math{\updownarrow} (delimiter) + +@item \uplus +@math{\uplus} (binary operation) + +@item \Upsilon +@math{\Upsilon} + +@item \upsilon +@math{\upsilon} + +@item \varepsilon +@math{\varepsilon} + +@item \varphi +@math{\varphi} + +@item \varpi +@math{\varpi} + +@item \varrho +@math{\varrho} + +@item \varsigma +@math{\varsigma} + +@item \vartheta +@math{\vartheta} + +@item \vdash +@math{\vdash} (relation) + +@item \vee +@math{\vee} (binary operation) + +@item \Vert +@math{\Vert} (delimiter) + +@item \vert +@math{\vert} (delimiter) + +@item \wedge +@math{\wedge} (binary operation) + +@item \wp +@math{\wp} + +@item \wr +@math{\wr} (binary operation) + +@item \Xi +@math{\Xi} + +@item \xi +@math{\xi} + +@item \zeta +@math{\zeta} + +@end ftable + + +@node Math functions +@section Math functions +@cindex math functions +@cindex functions, math + +These commands produce roman function names in math mode with proper +spacing. + +@ftable @code +@item \arccos +@math{\arccos} + +@item \arcsin +@math{\arcsin} + +@item \arctan +@math{\arctan} + +@item \arg +@math{\arg} + +@item \bmod +Binary modulo operator (@math{x \bmod y}) + +@item \cos +@math{\cos} + +@item \cosh +@math{\cosh} + +@item \cot +@math{\cos} + +@item \coth +@math{\cosh} + +@item \csc +@math{\csc} + +@item \deg +@math{\deg} + +@item \det +@math{\deg} + +@item \dim +@math{\dim} + +@item \exp +@math{\exp} + +@item \gcd +@math{\gcd} + +@item \hom +@math{\hom} + +@item \inf +@math{\inf} + +@item \ker +@math{\ker} + +@item \lg +@math{\lg} + +@item \lim +@math{\lim} + +@item \liminf +@math{\liminf} + +@item \limsup +@math{\limsup} + +@item \ln +@math{\ln} + +@item \log +@math{\log} + +@item \max +@math{\max} + +@item \min +@math{\min} + +@item \pmod +parenthesized modulus, as in (@math{\pmod 2^n - 1}) + +@item \Pr +@math{\Pr} + +@item \sec +@math{\sec} + +@item \sin +@math{\sin} + +@item \sinh +@math{\sinh} + +@item \sup +@math{\sup} + +@item \tan +@math{\tan} + +@item \tanh +@math{\tanh} + +@end ftable + + +@node Math accents +@section Math accents +@cindex math accents +@cindex accents, mathematical + +@LaTeX{} provides a variety of commands for producing accented letters +in math. These are different from accents in normal text +(@pxref{Accents}). + +@ftable @code +@item \acute +@cindex acute accent, math +Math acute accent: @math{\acute{x}}. + +@item \breve +@cindex breve accent, math +Math breve accent: @math{\breve{x}}. + +@item \check +@cindex check accent, math +@cindex h@'a@v{c}ek accent, math +Math h@'a@v{c}ek (check) accent: @math{\check{x}}. + +@item \ddot +@cindex double dot accent, math +Math dieresis accent: @math{\ddot{x}}. + +@item \dot +@cindex overdot accent, math +@cindex dot over accent, math +Math dot accent: @math{\dot{x}}. + +@item \grave +@cindex grave accent, math +Math grave accent: @math{\grave{x}}. + +@item \hat +@cindex hat accent, math +@cindex circumflex accent, math +Math hat (circumflex) accent: @math{\hat{x}}. + +@item \imath +@cindex dotless i, math +Math dotless i. + +@item \jmath +@cindex dotless j, math +Math dotless j. + +@item \tilde +@cindex tilde accent, math +Math tilde accent: @math{\tilde{x}}. + +@item \vec +@cindex vector symbol, math +Math vector symbol: @math{\vec{x}}. + +@item \widehat +@cindex wide hat accent, math +Math wide hat accent: @math{\widehat{x+y}}. + +@item \widehat +@cindex wide tile accent, math +Math wide tilde accent: @math{\widetilde{x+y}}. + +@end ftable + + +@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: + +@table @code +@item \; +@findex \; +A thick space (@math{5\over18\,}quad). +@item \: +@itemx \> +@findex \: +@findex \> +Both of these produce a medium space (@math{2\over9\,}quad). +@item \, +@findex \, +A thin space (@math{1\over6\,}quad); not restricted to math mode. +@item \! +A negative thin space (@math{-{1\over6}\,}quad). +@end table + + +@node Math Miscellany +@section Math Miscellany +@cindex math Miscellany + +@ftable @code + +@item \* +@cindex discretionary multiplication +@cindex multiplication symbol, discretionary line break +A ``discretionary'' multiplication symbol, at which a line break is +allowed. + +@item \cdots +A horizontal ellipsis with the dots raised to the center of the line. +@tex +As in: `$\cdots$'. +@end tex + +@item \ddots +A diagonal ellipsis: @math{\ddots}. + +@item \frac@{num@}@{den@} +@findex \frac +Produces the fraction @code{num} divided by @code{den}. + +@iftex +eg. +@tex +${1}\over{4}$ +@end tex +@end iftex + +@item \left @var{delim1} ... \right @var{delim2} +@findex \right +@cindex null delimiter +The two delimiters need not match; @samp{.} acts as a null delimiter, +producing no output. The delimiters are sized according to the math +in between. Example: @code{\left( \sum_i=1^10 a_i \right]}. + +@item \overbrace@{@var{text}@} +Generates a brace over @var{text}. +For example, @math{\overbrace{x+\cdots+x}^{k \rm\;times}}. + +@item \overline@{@var{text}@} +Generates a horizontal line over @var{tex}. +For exampe, @math{\overline{x+y}}. + +@item \sqrt[@var{root}]@{arg@} +Produces the representation of the square root of @var{arg}. The +optional argument @var{root} determines what root to produce. For +example, the cube root of @code{x+y} would be typed as +@code{$\sqrt[3]@{x+y@}$}. +@tex +In @TeX{}, the result looks like this: +$\root 3 \of x+y$. +@end tex + +@item \stackrel@{@var{text}@}@{@var{relation}@} +Puts @var{text} above @var{relation}. For example, +@code{\stackrel@{f@}@{\longrightarrow@}}. +@tex +In @TeX{}, the result looks like this: +$\buildrel f \over \longrightarrow$. +@end tex + +@item \underbrace@{math@} +Generates @var{math} with a brace underneath. +@tex +In @TeX{}, the result looks like this: +$\underbrace{x+y+z}_{>\,0}$. +@end tex + +@item \underline@{text@} +Causes @var{text}, which may be either math mode or not, to be +underlined. +@tex +In @TeX{}, the result looks like this: +$\underline{z}$ +@end tex + +@item \vdots +@findex \vdots +Produces a vertical ellipsis. +@tex +In @TeX{}, the result looks like this: +$\vdots$. +@end tex + +@end ftable + + +@node Modes +@chapter Modes +@cindex modes +@cindex paragraph mode +@cindex math mode +@cindex left-to-right mode +@cindex lR mode + + +When @LaTeX{} is processing your input text, it is always in one of three +modes: + +@itemize @bullet +@item +Paragraph mode +@item +Math mode +@item +Left-to-right mode, called LR mode for short +@end itemize + +@LaTeX{} changes mode only when it goes up or down a staircase to a +different level, though not all level changes produce mode changes. +Mode changes occur only when entering or leaving an environment, or when +@LaTeX{} is processing the argument of certain text-producing commands. + +``Paragraph mode'' is the most common; it's the one @LaTeX{} is in +when processing ordinary text. In that mode, @LaTeX{} breaks your +text into lines and breaks the lines into pages. @LaTeX{} is in +``math mode'' when it's generating a mathematical formula. In ``LR +mode'', as in paragraph mode, @LaTeX{} considers the output that it +produces to be a string of words with spaces between them. However, +unlike paragraph mode, @LaTeX{} keeps going from left to right; it +never starts a new line in LR mode. Even if you put a hundred words +into an @code{\mbox}, @LaTeX{} would keep typesetting them from left +to right inside a single box, and then complain because the resulting +box was too wide to fit on the line. + +@LaTeX{} is in LR mode when it starts making a box with an @code{\mbox} +command. You can get it to enter a different mode inside the box - for +example, you can make it enter math mode to put a formula in the box. +There are also several text-producing commands and environments for +making a box that put @LaTeX{} in paragraph mode. The box make by one of +these commands or environments will be called a @code{parbox}. When +@LaTeX{} is in paragraph mode while making a box, it is said to be in +``inner paragraph mode''. Its normal paragraph mode, which it starts out +in, is called ``outer paragraph mode''. + + +@node Page Styles +@chapter Page Styles +@cindex styles, page +@cindex page styles + +The @code{\documentclass} command determines the size and position of +the page's head and foot. The page style determines what goes in them. + +@menu +* \maketitle:: Generate a title page. +* \pagenumbering:: Set the style used for page numbers. +* \pagestyle:: Change the headings/footings style. +* \thispagestyle:: Change the headings/footings style for this page. +@end menu + + +@node \maketitle +@section @code{\maketitle} +@cindex titles, making +@findex \maketitle + +The @code{\maketitle} command generates a title on a separate title +page---except in the @code{article} class, where the title is placed +at the top of the first page. Information used to produce the title +is obtained from the following declarations: + +@ftable @code +@item \author@{@var{name} \and @var{name2}@} +@cindex author, for titlepage +@findex \\ @r{for @code{\author}} +@findex \and @r{for @code{\author}} +The @code{\author} command declares the document author(s), where the +argument is a list of authors separated by @code{\and} commands. Use +@code{\\} to separate lines within a single author's entry---for +example, to give the author's institution or address. + +@item \date@{@var{text}@} +@cindex date, for titlepage +The @code{\date} command declares @var{text} to be the document's +date. With no @code{\date} command, the current date (@pxref{\today}) +is used. + +@item \thanks@{@var{text}@} +@cindex thanks, for titlepage +@cindex credit footnote +The @code{\thanks} command produces a @code{\footnote} to the title, +usually used for credit acknowledgements. + +@item \title@{@var{text}@} +@cindex title, for titlepage +@findex \\ @r{for @code{\title}} +The @code{\title} command declares @var{text} to be the title of the +document. Use @code{\\} to force a line break, as usual. + +@end ftable + + +@node \pagenumbering +@section @code{\pagenumbering} +@findex \pagenumbering +@cindex page numbering style + +Synopsis: + +@example +\pagenumbering@{@var{style}@} +@end example + +Specifies the style of page numbers, according to @var{style}: + +@table @code +@item arabic +arabic numerals +@item roman +lowercase Roman numerals +@item Roman +uppercase Roman numerals +@item alph +lowercase letters +@item Alph +uppercase letters +@end table + + +@node \pagestyle +@section @code{\pagestyle} +@findex \pagestyle +@cindex header style +@cindex footer style +@cindex running header and footer style + +Synopsis: + +@example +\pagestyle@{@var{style}@} +@end example + +The @code{\pagestyle} command specifies how the headers and footers +are typeset from the current page onwards. Values for @var{style}: + +@table @code +@item plain +Just a plain page number. + +@item empty +Empty headers and footers, e.g., no page numbers. + +@item headings +Put running headers on each page. The document style specifies what +goes in the headers. + +@item myheadings +Custom headers, specified via the @code{\markboth} or the +@code{\markright} commands. + +@end table + +Here are the descriptions of @code{\markboth} and @code{\markright}: + +@ftable @code +@item \markboth@{@var{left}@}@{@var{right}@} +Sets both the left and the right heading. A ``left-hand heading'' +(@var{left}) is generated by the last @code{\markboth} command before +the end of the page, while a ``right-hand heading'' (@var{right} is +generated by the first @code{\markboth} or @code{\markright} that +comes on the page if there is one, otherwise by the last one before +the page. + +@item \markright@{@var{right}@} +Sets the right heading, leaving the left heading unchanged. + +@end ftable + + +@node \thispagestyle +@section @code{\thispagestyle@{@var{style}@}} +@findex \thispagestyle + +The @code{\thispagestyle} command works in the same manner as the +@code{\pagestyle} command (see previous section) except that it +changes to @var{style} for the current page only. + + +@node Spaces +@chapter Spaces +@cindex spaces + +@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. +* \SPACE:: Normal interword space. +* \AT:: Ending a sentence. +* \thinspace:: One-sixth of an em. +* \/:: Per-character italic correction. +* \hfill:: Stretchable horizontal space. +* \hrulefill:: Stretchable horizontal rule. +* \dotfill:: Stretchable horizontal dots. + +Vertical space +* \addvspace:: Add arbitrary vertical space if needed. +* \bigskip \medskip \smallskip:: Fixed vertical spaces. +* \vfill:: Infinitely stretchable vertical space. +* \vspace:: Add arbitrary vertical space. +@end menu + + +@node \hspace +@section @code{\hspace} +@findex \hspace + +Synopsis: + +@example +\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. + +@LaTeX{} normally removes horizontal space that comes at the beginning +or end of a line. To preserve this space, use the optional @code{*} +form. + + +@node \hfill +@section @code{\hfill} + +@findex \hfill +The @code{\hfill} fill command produces a ``rubber length'' which has +no natural space but can stretch or shrink horizontally as far as +needed. + +@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}. + + +@node \SPACE +@section @code{\SPACE} +@findex \SPACE +@findex \TAB +@findex \NEWLINE + +The @code{\ } (space) command produces a normal interword space. It's +useful after punctuation which shouldn't end a sentence. For example +@code{Knuth's 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{\ }. + + +@node \AT +@section @code{\@@} +@findex \@@ + +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{\@@}: + +@example +@dots{} in C\@@. Pascal, though @dots{} +@dots{} in C. Pascal, though @dots{} +@end example + +@noindent produces + +@c Texinfo does it differently, but the result is the same. +@quotation +@dots{} in C@. Pascal, though @dots{} +@dots{} in C. Pascal, though @dots{} +@end quotation + + +@node \thinspace +@section @code{\thinspace} +@findex \thinspace + +@code{\thinspace} produces an unbreakable and unstretchable space that +is 1/6 of an em. This is the proper space to use in nested quotes, as +in '@dmn{''}. + + +@node \/ +@section @code{\/} +@findex \/ + +The @code{\/} command produces an @dfn{italic correction}. This is a +small space defined by the font designer for a given character, +to avoid the character colliding with whatever follows. The italic +@i{f} character typically has a large italic correction value. + +If the following character is a period or comma, it's not necessary to +insert an italic correction, since those punctuation symbols have a +very small height. However, with semicolons or colons, as well as +normal letters, it can help. Compare +@tex +{\it f\/: f\/;} +@end tex +@ifnottex +@i{f: f;} (in the @TeX{} output, the `f's are nicely separated) +@end ifnottex +with @i{f: f;}. + +Despite the name, roman characters can also have an italic +correction. Compare +@tex +pdf\/\TeX{} +@end tex +@ifnottex +pdf@TeX{} (in the @TeX{} output, there is a small space after the `f') +@end ifnottex +with pdf@TeX{}. + + +@node \hrulefill +@section @code{\hrulefill} +@findex \hrulefill + +The @code{\hrulefill} fill command produces a ``rubber length'' which can +stretch or shrink horizontally. It will be filled with a horizontal +rule. + + +@node \dotfill +@section @code{\dotfill} + +@findex \dotfill + +The @code{\dotfill} command produces a ``rubber length'' that fills +with dots instead of just white space. + + +@c xx undone +@node \addvspace +@section @code{\addvspace} +@findex \addvspace +@cindex vertical space +@cindex space, inserting vertical + +@code{\addvspace@{length@}} + +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 needed to make the natural length +of the total vertical space equal to @code{length}. + + +@node \bigskip \medskip \smallskip +@section @code{\bigskip \medskip \smallskip} + +These commands produce a given amount of space. + +@table @code +@item \bigskip +@findex \bigskip +@findex \bigskipamount +The same as @code{\vspace@{bigskipamount@}}, ordinarily about one line +space (with stretch and shrink). + +@item \medskip +@findex \medskip +@findex \medskipamount +The same as @code{\vspace@{medskipamount@}}, ordinarily +about half of a line space (with stretch and shrink). + +@item \smallskip +@findex \smallskip +@findex \smallskipamount +The same as @code{\vspace@{smallskipamount@}}, ordinarily about a +quarter of a line space (with stretch and shrink). + +@end table + +The @code{\...amount} parameters are determined by the document class. + + +@node \vfill +@section @code{\vfill} +@findex \vfill + +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}). + + +@node \vspace +@section @code{\vspace[*]@{@var{length}@}} +@findex \vspace + +Synopsis: + +@example +\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. + +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. + + +@node Boxes +@chapter Boxes + +@cindex boxes + +All the predefined length parameters (@pxref{Predefined lengths}) can be +used in the arguments of the box-making commands. + +@menu +* \mbox:: Horizontal boxes. +* \fbox and \framebox:: Put a frame around a box. +* lrbox:: An environment like \sbox. +* \makebox:: Box, adjustable position. +* \parbox:: Box with text in paragraph mode. +* \raisebox:: Raise or lower text. +* \savebox:: Like \makebox, but save the text for later use. +* \sbox:: Like \mbox, but save the text for later use. +* \usebox:: Print saved text. +@end menu + + +@node \mbox +@section @code{\mbox@{@var{text@}}} +@findex \mbox + +@cindex hyphenation, preventing +The @code{\mbox} command creates a box just wide enough to hold the +text created by its argument. The @var{text} is not broken into +lines, so it can be used to prevent hyphenation. + + +@node \fbox and \framebox +@section @code{\fbox} and @code{\framebox} + +@findex \fbox +@findex \framebox + +Synopses: + +@example +\fbox@{@var{text}@} +\framebox[@var{width}][@var{position}]@{@var{text}@} +@end example + +The @code{\fbox} and @code{\framebox} commands are like @code{\mbox}, +except that they put a frame around the outside of the box being created. + +In addition, the @code{\framebox} command allows for explicit +specification of the box width with the optional @var{width} argument +(a dimension), and positioning with the optional @var{position} +argument. @c xxref + +@findex \fboxrule +@findex \fboxsep +Both commands produce a rule of thickness @code{\fboxrule} (default +@samp{.4pt}), and leave a space of @code{\fboxsep} (default +@samp{3pt}) between the rule and the contents of the box. + +@xref{\framebox (picture)}, for the @code{\framebox} command in the +@code{picture} environment. + + +@node lrbox +@section @code{lrbox} +@findex lrbox + +@code{\begin@{lrbox@}@{cmd@} text \end@{lrbox@}} + +This is the environment form of @code{\sbox}. + +The text inside the environment is saved in the box @code{cmd}, which +must have been declared with @code{\newsavebox}. + + + +@node \makebox +@section @code{\makebox} +@findex \makebox + +Synopsis: + +@example +\makebox[@var{width}][@var{position}]@{@var{text}@} +@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 +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: + +@table @code +@item c +Centered (default). +@item l +Flush left. +@item r +Flush right. +@item s +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 +@pxref{\makebox (picture)}. + + +@node \parbox +@section @code{\parbox} +@findex \parbox + +Synopsis: + +@example +\parbox[@var{position}][@var{height}][@var{inner-pos}]@{@var{width}@}@{@var{text}@} +@end example + +The @code{\parbox} command produces a box whose contents are created +in @code{paragraph} mode. It should be used to make a box small +pieces of text, with nothing fancy inside. In particular, you +shouldn't use any paragraph-making environments inside a +@code{\parbox} argument. For larger pieces of text, including ones +containing a paragraph-making environment, you should use a +@code{minipage} environment (@pxref{minipage}). + +@code{\parbox} has two mandatory arguments: + +@table @var +@item width +the width of the parbox; +@item text +the text that goes inside the parbox. +@end table + +The optional @var{position} argument allows you to align either the +top or bottom line in the parbox with the baseline of the surrounding +text (default is top). + +The optional @var{height} argument overrides the natural height of the box. + +The @var{inner-pos} argument controls the placement of the text inside +the box, as follows; if it is not specified, @var{position} is used. + +@table @code +@item t +text is placed at the top of the box. +@item c +text is centered in the box. +@item b +text is placed at the bottom of the box. +@item s +stretch vertically; the text must contain vertically stretchable space +for this to work. +@end table + + +@node \raisebox +@section @code{\raisebox} +@findex \raisebox + +Synopsis: + +@example +\raisebox@{distance@}[@var{height}][@var{depth}]@{text@} +@end example + +The @code{\raisebox} command raises or lowers @var{text}. The first +mandatory argument specifies how high @var{text} is to be raised (or +lowered if it is a negative amount). @var{text} itself is processed +in LR mode. + +The optional arguments @var{height} and @var{depth} are dimensions. +If they are specified, @LaTeX{} treats @var{text} as extending a +certain distance above the baseline (height) or below (depth), +ignoring its natural height and depth. + + +@node \savebox +@section @code{\savebox} +@findex \savebox + +Synopsis: + +@example +\savebox@{@var{\boxcmd}@}[@var{width}][@var{pos}]@{@var{text}@} +@end example + +This command typeset @var{text} in a box just as with @code{\makebox} +(@pxref{\makebox}), except that instead of printing the resulting box, +it saves it in the box labeled @var{\boxcmd}, which must have been +declared with @code{\newsavebox} (@pxref{\newsavebox}). + + +@node \sbox +@section @code{\sbox@{@var{\boxcmd}@}@{@var{text}@}} +@findex \sbox + +Synopsis: + +@example +\sbox@{@var{\boxcmd}@}@{@var{text}@} +@end example + +@code{\sbox} types @var{text} in a box just as with @code{\mbox} +(@pxref{\mbox}) except that instead of the resulting box being +included in the normal output, it is saved in the box labeled +@var{\boxcmd}. @var{\boxcmd} must have been previously declared with +@code{\newsavebox} (@pxref{\newsavebox}). + + +@node \usebox +@section @code{\usebox@{@var{\boxcmd}} +@findex \usebox + +Synopsis: + +@example +\usebox@{@var{\boxcmd}@} +@end example + +@code{\usebox} producesthe box most recently saved in the bin +@var{\boxcmd} by a @code{\savebox} command (@pxref{\savebox}). + + +@node Special insertions +@chapter Special insertions + +@LaTeX{} provides commands for inserting characters that have a +special meaning do not correspond to simple characters you can type. + +@menu +* Reserved characters:: Inserting # $ % & ~ _ ^ \ @{ @} +* Text symbols:: Inserting other non-letter symbols in text. +* Accents:: Inserting accents. +* Non-English characters:: Inserting other non-English characters. +* \rule:: Inserting lines and rectangles. +* \today:: Inserting today's date. +@end menu + + +@node Reserved characters +@section Reserved characters +@cindex reserved characters +@cindex characters, reserved + +The following characters play a special role in @LaTeX{} and are called +``reserved characters'' or ``special characters''. + +@example +# $ % & ~ _ ^ \ @{ @} +@end example + +@findex \# +@findex \$ +@findex \% +@findex \& +@findex \_ +@findex \@{ +@findex \@} +Whenever you write one of these characters into your file, @LaTeX{} +will do something special. If you simply want the character to be +printed as itself, include a @code{\} in front of the character. For +example, @code{\$} will produce @code{$} in your output. + +@findex \backslash +One exception to this rule is @code{\} itself, because @code{\\} has +its own special (context-dependent) meaning. A roman \ is produced by +typing @code{$\backslash$} in your file, and a typewriter @code{\} is +produced by using @samp{\} in a verbatim command (@pxref{verbatim}). + +@findex \~ +@findex \^ +Also, @code{\~} and @code{\^} place tilde and circumflex accents over +the following letter, as in @~{o} and @^{o} (@pxref{Accents}); to get +a standalone @code{~} or @code{^}, you can again use a verbatim +command. + +@findex \symbol +@cindex accessing any character of a font + +Finally, you can access any character of the current font once you +know its number by using the @code{\symbol} command. For example, the +visible space character used in the @code{\verb*} command has the code +decimal 32, so it can be typed as @code{\symbol@{32@}}. + +You can also specify octal numbers with @code{'} or hexadecimal numbers +with @code{"}, so the previous example could also be written as +@code{\symbol@{'40@}} or @code{\symbol@{"20@}}. + + +@node Text symbols +@section Text symbols + +@cindex text symbols +@LaTeX{} provides commands to generate a number of non-letter symbols +in running text. + +@ftable @code + +@item \copyright +@cindex copyright symbol +The copyright symbol, @copyright{}. + +@item \dag +@cindex dagger, in text +The dagger symbol (in text). + +@item \ddag +@cindex double dagger, in text +The double dagger symbol (in text). + +@item \LaTeX +@cindex @LaTeX{} logo +@cindex logo, @LaTeX{} +The @LaTeX{} logo. + +@item \ldots +@cindex ellipsis +An ellipsis (three dots at the baseline): `@dots{}'. This +command also works in math mode. + +@item \lq +@cindex left quote +@cindex opening quote +Left (opening) quote: `. + +@item \P +@cindex paragraph sign +@cindex pilcrow +Paragraph sign (pilcrow). + +@item \pounds +@cindex pounds symbol +@cindex sterling symbol +English pounds sterling. + +@item \rq +@cindex right quote +@cindex closing quote +Right (closing) quote: '. + +@item \S +@cindex section symbol +Section symbol. + +@item \TeX +@cindex @TeX{} logo +@cindex logo, @TeX{} +The @TeX{} logo. + +@end ftable + + +@node Accents +@section Accents + +@cindex accents +@cindex characters, accented +@cindex letters, accented + +@LaTeX{} has wide support for many of the world's scripts and +languages, through the @code{babel} package and related support. This +section does not attempt to cover all that support. It merely the +core @LaTeX{} commands for creating accented characters. + +@table @code +@item \" +@findex \" @r{(umlaut accent)} +@cindex umlaut accent +Produces an umlaut, as in @"{o}. + +@item \' +@findex \' @r{(acute accent)} +@cindex acute accent +Produces an acute accent, as in @'{o}. In the @code{tabbing} +environment, pushes current column to the right of the previous column +(@pxref{tabbing}). + +@item \. +@findex \. @r{(dot-over accent)} +@cindex dot accent +@cindex dot-over accent +Produces a dot accent over the following, as in @dotaccent{o}. + +@item \= +@findex \= @r{(macron accent)} +@cindex macron accent +@cindex overbar accent +@cindex bar-over accent +Produces a macron (overbar) accent over the following, as in @={o}. + +@item \^ +@findex \^ @r{(circumflex accent)} +@cindex circumflex accent +@cindex hat accent +Produces a circumflex (hat) accent over the following, as in @^{o}. + +@item \` +@findex \` @r{(grave accent)} +@cindex grave accent +Produces a grave accent over the following, as in @`{o}. In the +@code{tabbing} environment, move following text to the right margin +(@pxref{tabbing}). + +@item \~ +@findex \~ @r{(tilde accent)} +@cindex tilde accent +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}. + +@item \bar +@findex \bar @r{(macron, bar-over accent)} +@cindex bar-over accent +@cindex macron accent +Produces a macron accent over the following, as in @={o}. + +@item \c +@findex \c @r{(cedilla accent)} +@cindex cedilla accent +Produces a cedilla accent under the following, as in @c{c}. + +@item \d +@findex \d @r{(dot-under accent)} +@cindex dot-under accent +Produces a dot accent under the following, as in @udotaccent{o}. + +@item \H +@findex \H @r{(Hungarian umlaut accent)} +@cindex hungarian umlaut accent +Produces a long Hungarian umlaut accent over the following, as in @H{o}. + +@item \i +@findex \i @r{(dotless i)} +@cindex dotless i +Produces a dotless i, as in `@dotless{i}'. + +@item \j +@findex \j @r{(dotless j)} +@cindex dotless j +Produces a dotless j, as in `@dotless{j}'. + +@item \t +@findex \t @r{(tie-after accent)} +@cindex tie-after accent +Produces a tie-after accent, as in `@tieaccent{oo}'. + +@item \u +@findex \u @r{(breve accent)} +@cindex breve accent +Produces a breve accent, as in `@u{o}'. + +@item \v +@findex \v @r{(breve accent)} +@cindex hacek accent +@cindex check accent +Produces a h@'a@v{c}ek (check) accent, as in `@v{o}'. + +@end table + + +@node Non-English characters +@section Non-English characters + +@cindex special characters +@cindex non-English characters +@cindex characters, non-English +@cindex letters, non-English + +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{}) +@findex \AA (@AA{}) +@cindex aring +@aa{} and @AA{}. + +@item \ae +@itemx \AE +@findex \ae (@ae{}) +@findex \AE (@AE{}) +@cindex ae ligature +@ae{} and @AE{}. + +@item \l +@itemx \L +@findex \l (@l{}) +@findex \L (@L{}) +@cindex polish l +@l{} and @L{}. + +@item \o +@itemx \O +@findex \o (@o{}) +@findex \O (@O{}) +@cindex oslash +@o{} and @O{}. + +@item \oe +@itemx \OE +@findex \oe (@oe{}) +@findex \OE (@OE{}) +@cindex oe ligature +@oe{} and @OE{}. + +@item \ss +@findex \ss (@ss{}) +@cindex es-zet German letter +@cindex sharp S letters +@ss{}. + +@end table + + +@node \rule +@section @code{\rule} +@findex \rule + +Synopsis: + +@example +\rule[@var{raise}]@{@var{width}@}@{@var{thickness}@} +@end example + +The @code{\rule} command produces @dfn{rules}, that is, lines or +rectangles. The arguments are: + +@table @var +@item raise +How high to raise the rule (optional). + +@item width +The length of the rule (mandatory). + +@item thickness +The thickness of the rule (mandatory). +@end table + + +@node \today +@section @code{\today} +@findex \today + +The @code{\today} command produces today's date, in the format +@samp{@var{month} @var{dd}, @var{yyyy}}; for example, `July 4, 1976'. +It uses the predefined counters @code{\day}, @code{\month}, and +@code{\year} (@pxref{\day \month \year}) to do this. It is not +updated as the program runs. + +@cindex @code{datetime} package +The @code{datetime} package, among others, can produce a wide variety +of other date formats. + + +@node Splitting the input +@chapter Splitting the input +@cindex splitting the input file +@cindex input file + +A large document requires a lot of input. Rather than putting the whole +input in a single large file, it's more efficient to split it into +several smaller ones. Regardless of how many separate files you use, +there is one that is the root file; it is the one whose name you type +when you run @LaTeX{}. + +@menu +* \include:: Conditionally include a file. +* \includeonly:: Determine which files are included. +* \input:: Unconditionally include a file. +@end menu + + +@node \include +@section @code{\include} +@findex \include + +Synopsis: + +@example +\include@{@var{file}@} +@end example + +If no @code{\includeonly} command is present, the @code{\include} +command executes @code{\clearpage} to start a new page +(@pxref{\clearpage}), then reads @var{file}, then does another +@code{\clearpage}. + +Given an @code{\includeonly} command, the @code{\include} actions are +only run if @var{file} is listed as an argument to +@code{\includeonly}. See the next section. + +@cindex nested @code{\include}, not allowed +The @code{\include} command may not appear in the preamble or in a file +read by another @code{\include} command. + + +@node \includeonly +@section \@code{includeonly} +@findex \includeonly + +Synopsis: + +@example +\includeonly@{@var{file1},@var{file2},...@} +@end example + +The @code{\includeonly} command controls which files will be read by +subsequent @code{\include} commands. The list of filenames is +comma-separated. Each @var{file} must exactly match a filename +specified in a @code{\include} command for the selection to be +effective. + +This command can only appear in the preamble. + + +@node \input +@section \input +@findex \input + +Synopsis: + +@example +\input@{@var{file}@} +@end example + +The @code{\input} command causes the specified @var{file} to be read +and processed, as if its contents had been inserted in the current +file at that point. + +If @var{file} does not end in @samp{.tex} (e.g., @samp{foo} or +@samp{foo.bar}), it is first tried with that extension (@samp{foo.tex} +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 + +@menu +* Tables of contents:: +* Glossaries:: +* Indexes:: +@end menu + + +@node Tables of contents +@section Tables of contents + +@cindex table of contents, creating + +@findex \tableofcontents +A table of contents is produced with the @code{\tableofcontents} +command. You put the command right where you want the table of +contents to go; @LaTeX{} does the rest for you. A previous run must +have generated a @file{.toc} file. + +The @code{\tableofcontents} command produces a heading, but it does +not automatically start a new page. If you want a new page after the +table of contents, write a @code{\newpage} command after the +@code{\tableofcontents} command. + +@findex \listoffigures +@findex \listoftables +The analagous commands @code{\listoffigures} and @code{\listoftables} +produce a list of figures and a list of tables, respectively. +Everything works exactly the same as for the table of contents. + +@findex \nofiles +The command @code{\nofiles} overrides these commands, and +@emph{prevents} any of these lists from being generated. + +@menu +* \addcontentsline:: Add an entry to table of contents etc. +* \addtocontents:: Add text directly to table of contents file etc. +@end menu + + +@node \addcontentsline +@subsection \addcontentsline +@findex \addcontentsline@{@var{ext}@}@{@var{unit}@}@{@var{text}@} +@cindex table of contents entry, manually adding + +The @code{\addcontentsline} command adds an entry to the specified list +or table where: + +@table @var +@item ext +The extension of the file on which information is to be written, +typically one of: @code{toc} (table of contents), @code{lof} (list of +figures), or @code{lot} (list of tables). + +@item unit +The name of the sectional unit being added, typically one of the +following, matching the value of the @var{ext} argument: + +@table @code +@item toc +The name of the sectional unit: @code{part}, @code{chapter}, +@code{section}, @code{subsection}, @code{subsubsection}. +@item lof +For the list of figures. +@item lot +For the list of tables. +@end table + +@item entry +The actual text of the entry. +@end table + +@findex \contentsline +What is written to the @file{.@var{ext}} file is the +command @code{\contentsline@{@var{unit}@}@{@var{name}@}}. + +@c ?? how hardwired are these values? other unit names? + + +@node \addtocontents +@subsection \addtocontents +@findex \addtocontents@{@var{ext}@}@{@var{text}@} + +The @code{\addtocontents} command adds text (or formatting commands) +directly to the @file{.}@var{ext} file that generates the table of +contents or lists of figures or tables. + +@table @var +@item ext +The extension of the file on which information is to be written: +@file{toc} (table of contents), @file{lof} (list of figures), or +@file{lot} (list of tables). + +@item text +The text to be written. +@end table + + +@node Glossaries +@section Glossaries +@cindex glossaries + +@findex \makeglossary +The command @code{\makeglossary} enables creating glossaries. + +@findex \glossary +@cindex @file{.glo} file +The command @code{\glossary@{@var{text}@}} writes a glossary entry for +@var{text} to an auxiliary file with the @file{.glo} extension. + +@findex \glossaryentry +Specifically, what gets written is the command +@code{\glossaryentry@{@var{text}@}@{@var{pageno}@}}, where +@var{pageno} is the current @code{\thepage} value. + +The @code{glossary} package on CTAN provides support for fancier +glossaries. + + +@node Indexes +@section Indexes +@cindex indexes + +@findex \makeindex +The command @code{\makeindex} enables creating indexes. + +@findex \index +@cindex @file{.idx} file +The command @code{\index@{@var{text}@}} writes a glossary entry for +@var{text} to an auxiliary file with the @file{.idx} extension. + +@findex \indexentry +Specifically, what gets written is the command +@code{\indexentry@{@var{text}@}@{@var{pageno}@}}, where @var{pageno} +is the current @code{\thepage} value. + +The rubber length @code{\indexspace} is inserted before each new +letter in the index; its default value is @samp{10pt plus5pt +minus3pt}. + +@cindex @command{makeindex} program +@cindex @command{xindy} program +@cindex @file{.ind} file + +The @file{.idx} file can then be sorted with an external command, +typically @command{makeindex} or @command{xindy}, resulting in a +@file{.ind} file, which can then be used to typeset the index. + + +@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. + +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: + +@example + \documentclass@{letter@} + \begin@{document@} + ... 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: + +@example + \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. + +@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. + +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 organisation'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. +@end menu + + +@node \address +@section \address@{@var{return-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. + +If you do not make an @code{\address} declaration, then the letter +will be formatted for copying onto your organisation'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. + + +@node \cc +@section @code{\cc} + +@findex \cc +@cindex cc list, in letters + +Synopsis: + +@example +\cc@{@var{name1}\\@var{name2}@} +@end example + +Produce a list of @var{name}s the letter was copied to. Each name is +printed on a separate line. + + +@node \closing +@section @code{\closing} + +@findex \closing +@cindex letters, ending +@cindex closing letters + +Synopsis: + +@example +\closing@{text@} +@end example + +A letter closes with a @code{\closing} command, for example, +@example +\closing@{Best Regards,@} +@end example + + +@node \encl +@section @code{\encl} + +@findex \encl +@cindex enclosure list + +Synopsis: + +@example +\encl@{@var{line1}\\@var{line2}@} +@end example + +Declare a list of one more enclosures. + + +@node \location +@section @code{\location} +@findex \location + +@code{\location@{address@}} + +This modifies your organisation's standard address. This only appears +if the @code{firstpage} pagestyle is selected. + + +@node \makelabels +@section @code{\makelabels} +@findex \makelabels + +@code{\makelabels@{number@}} + +If you issue this command in the preamble, @LaTeX{} will create a sheet of +address labels. This sheet will be output before the letters. + + + +@node \name +@section @code{\name} +@findex \name + +@code{\name@{June Davenport@}} + +Your name, used for printing on the envelope together with the return +address. + + +@node \opening +@section @code{\opening@{@var{text}@}} +@findex \opening +@cindex letters, starting + +Synopsis: + +@example +\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: + +@example +\opening@{Dear Joe,@} +@end example + + +@node \ps +@section @code{\ps} +@findex \ps +@cindex postscript, in letters + +Use the @code{\ps} command to start a postscript in a letter, after +@code{\closing}. + + +@node \signature +@section @code{\signature@{@var{text}@}} +@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. + + +@node \startbreaks +@section @code{\startbreaks} +@findex \startbreaks + +@code{\startbreaks} + +Used after a @code{\stopbreaks} command to allow page breaks again. + + + +@node \stopbreaks +@section @code{\stopbreaks} +@findex \stopbreaks + +@code{\stopbreaks} + +Inhibit page breaks until a @code{\startbreaks} command occurs. + + + +@node \telephone +@section @code{\telephone} +@findex \telephone + +@code{\telephone@{number@}} + +This is your telephone number. This only appears if the +@code{firstpage} pagestyle is selected. + + +@node Terminal Input/Output +@chapter Terminal Input/Output +@cindex input/Output +@cindex terminal Input/Output + +@menu +* \typein:: Read text from the terminal. +* \typeout:: Write text to the terminal. +@end menu + + +@node \typein +@section @code{\typein[@var{cmd}]@{@var{msg}@}} +@findex \typein + +Synopsis: + +@example +\typein[@var{\cmd}]@{@var{msg}@} +@end example + +@code{\typein} prints @var{msg} on the terminal and causes @LaTeX{} to +stop and wait for you to type a line of input, ending with return. If +the optional @var{\cmd} argument is omitted, the typed input is +processed as if it had been included in the input file in place of the +@code{\typein} command. If the @var{\cmd} argument is present, it +must be a command name. This command name is then defined or +redefined to be the typed input. + + +@node \typeout +@section @code{\typeout@{@var{msg}@}} +@findex \typeout + +Synopsis: + +@example +\typeout@{@var{msg}@} +@end example + +Prints @code{msg} on the terminal and in the @code{log} file. +Commands in @code{msg} that are defined with @code{\newcommand} or +@code{\renewcommand} (among others) are replaced by their definitions +before being printed. + +@LaTeX{}'s usual rules for treating multiple spaces as a single space +and ignoring spaces after a command name apply to @code{msg}. A +@code{\space} command in @code{msg} causes a single space to be +printed, independent of surrounding spaces. A @code{^^J} in +@code{msg} prints a newline. + + +@node Command Line +@chapter Command Line +@cindex command Line + +The input file specification indicates the file to be formatted; +@TeX{} uses @file{.tex} as a default file extension. If you omit the +input file entirely, @TeX{} accepts input from the terminal. You +specify command options by supplying a string as a parameter to the +command; e.g. + +@example +latex '\nonstopmode\input foo.tex' +@end example + +@noindent +will process @file{foo.tex} without pausing after every error. + +@cindex @samp{*} prompt +@cindex prompt, @samp{*} +@findex \stop +If @LaTeX{} stops in the middle of the document and gives you a +@samp{*} prompt, it is waiting for input. You can type @code{\stop} +(and return) and it will prematurely end the document. + + + +@node Document templates +@appendix Document templates +@cindex document templates + +Although not reference material, perhaps these document templates will +be useful. + +@menu +* book template:: +* beamer template:: +* tugboat template:: +@end menu + + +@node book template +@section @code{book} template + +@verbatim +\documentclass{book} +\title{Book Class Template} +\author{Alex Author} + +\begin{document} +\maketitle + +\chapter{First} +Some text. + +\chapter{Second} +Some other text. + +\section{A subtopic} +The end. +\end{document} +@end verbatim + + +@node beamer template +@section @code{beamer} template + +The @code{beamer} class creates slides presentations. + +@verbatim +\documentclass{beamer} + +\title{Beamer Class template} +\author{Alex Author} +\date{July 31, 2007} + +\begin{document} + +\maketitle + +% without [fragile], any {verbatim} code gets mysterious errors. +\begin{frame}[fragile] + \frametitle{First Slide} + +\begin{verbatim} + This is \verbatim! +\end{verbatim} + +\end{frame} + +\end{document} + +@end verbatim + + +@node tugboat template +@section @code{tugboat} template + +@cite{TUGboat} is the journal of the @TeX{} Users Group, +@url{http://tug.org/TUGboat}. + +@verbatim +\documentclass{ltugboat} % ltugproc for proceedings + +\usepackage{graphicx} +\usepackage{ifpdf} +\ifpdf + \usepackage[breaklinks,colorlinks,linkcolor=black,citecolor=black, + urlcolor=black]{hyperref} +\else + \usepackage{url} +\fi + +\begin{document} + +\title{Example \TUB\ Regular Article} + +% repeat info for each author. +\author{First Last} +\address{Street Address \\ Town, Postal \\ Country} +\netaddress{user (at) example dot org} +\personalURL{http://example.org/~user/} + +\maketitle + +% The abstract comes after \maketitle in ltugboat. +\begin{abstract} +This is an example article for a regular \TUB{} issue. +\end{abstract} + +\section{Introduction} + +This is an example article for \TUB, from +\url{http://tug.org/TUGboat/location.html}. + +We recommend the graphicx package for image inclusions, and the hyperref +package for active url's (in the \acro{PDF} output). \TUB\ is produced +using \acro{PDF} files exclusively, nowadays. + +The \texttt{ltug*} classes provide these abbreviations, among many others: + +{\small +\begin{verbatim} +\AllTeX \AMS \AmS \AmSLaTeX \AmSTeX \aw \AW +\BibTeX \CandT \CTAN \DTD \DVItoVDU \HTML +\ISBN \ISSN \JTeX \JoT \LAMSTeX \LaTeXe +\Mc \mf \MFB \mtex \pcMF \PCTeX \pcTeX \Pas +\PiC \PiCTeX \plain \POBox \PS +\SC \SGML \SliTeX \TANGLE \TB \TP \TUB \TUG +\tug \UG \UNIX \VAX \VorTeX \XeT \WEB \WEAVE + +\Dash \dash \vellipsis \bull \cents \Dag +\careof \thinskip + +\acro{FRED} -> {\sc fred} % please use! +\cs{fred} -> \fred +\env{fred} -> \begin{fred} +\meta{fred} -> +\nth{n} -> 1st, 2nd, ... +\sfrac{3/4} -> 3/4 +\booktitle{Book of Fred} +\end{verbatim} +} + +For more information, see the ltubguid document at: +\url{http://mirror.ctan.org/macros/latex/contrib/tugboat} + +Email \verb|tugboat@tug.org| if problems or questions. + + +\bibliographystyle{plain} % we recommend the plain bibliography style +\nocite{book-minimal} % just making the bibliography non-empty +\bibliography{xampl} % xampl.bib comes with BibTeX + + +\makesignature % not in ltugproc +\end{document} +@end verbatim + + +@node Concept Index +@unnumbered Concept Index + +@printindex cp + +@c The name of the `Command Index' node must NOT be altered for ltx-help.el. +@node Command Index +@unnumbered Command Index + +@printindex fn + +@bye -- cgit v1.2.3